diff --git a/docs/constants/navigation.js b/docs/constants/navigation.js
index 5028bcce49eee5..6a05553c7adcec 100644
--- a/docs/constants/navigation.js
+++ b/docs/constants/navigation.js
@@ -753,6 +753,7 @@ const preview = [
makePage('preview/eas-simulator/introduction.mdx'),
makePage('preview/eas-simulator/get-started.mdx'),
makePage('preview/eas-simulator/run-and-control.mdx'),
+ makePage('preview/eas-simulator/create-session-links.mdx'),
makePage('preview/eas-simulator/cli-reference.mdx'),
makePage('preview/eas-simulator/rest-api.mdx'),
makePage('preview/eas-simulator/troubleshooting.mdx'),
diff --git a/docs/pages/get-started/create-a-project.mdx b/docs/pages/get-started/create-a-project.mdx
index 3d4bacb71ef67c..7930a6445dc775 100644
--- a/docs/pages/get-started/create-a-project.mdx
+++ b/docs/pages/get-started/create-a-project.mdx
@@ -6,6 +6,7 @@ hideTOC: true
import { RelatedSkills } from '~/ui/components/RelatedSkills';
import { Terminal } from '~/ui/components/Snippet';
+import { Tabs, Tab } from '~/ui/components/Tabs';
Expo is a React Native framework that makes developing Android and iOS apps easier. Our framework provides file-based routing, a standard library of native modules, and much more. Expo is open source with an active community on [GitHub](https://github.com/expo/expo) and [Discord](https://chat.expo.dev).
@@ -63,12 +64,38 @@ To create a known example directly, pass its name:
> **info** The rest of the guides in this **"Get started"** section follows the default project. An example app may be organized differently but the concepts are the same.
-## Expo Skills for AI agents
+## Set up an AI agent
-If you use an AI agent, install [Expo Skills](/skills/) to teach it where files live in a new Expo project:
+A new project includes the project context files that AI agents read: **AGENTS.md**, **CLAUDE.md**, and **.claude/settings.json**. Claude Code and Codex also have an official Expo plugin. Using one command, you can install [Expo Skills](/skills/) and register the [Expo Model Context Protocol (MCP) Server](/mcp/):
+
+
+
+
+
+
+
+Then run `/mcp` inside your Claude Code session to sign in to your Expo account.
+
+
+
+
+
+
+
+Then sign in to your Expo account:
+
+
+
+
+
+
+
+The plugin also installs the skill that teaches an agent where files live in a new Expo project:
+For Cursor and other agents, install [Expo Skills](/skills/) and the [Expo MCP Server](/mcp/) separately. The [AI agents and Expo](/agents/) overview covers setup for each agent.
+
## Next step
You have a project. Now it's time to set up your development environment so that you can start developing.
diff --git a/docs/pages/preview/eas-simulator/create-session-links.mdx b/docs/pages/preview/eas-simulator/create-session-links.mdx
new file mode 100644
index 00000000000000..a88c29f07b3625
--- /dev/null
+++ b/docs/pages/preview/eas-simulator/create-session-links.mdx
@@ -0,0 +1,113 @@
+---
+title: Start an EAS Simulator session from a link
+sidebar_title: Create session links
+description: Construct an authenticated expo.dev URL that creates and opens an EAS Simulator session from an EAS Build, build fingerprint, or application archive.
+---
+
+> **important** **EAS Simulator is a limited-access preview.** It is not included with paid or free plans and is currently available only to select partners. [Join the waitlist](https://expo.dev/services/simulators) if you are interested in trying it.
+
+A create session link starts an iOS Simulator session from an EAS Build, build fingerprint, or application archive and opens its session page on expo.dev. Use one to add an EAS Simulator action to a pull request, CI result, or an internal tool without integrating the [REST API](/preview/eas-simulator/rest-api/).
+
+Create session links start browser-preview-only sessions. They do not provision agent-device, Appium, or Argent. Use [EAS CLI](/preview/eas-simulator/cli-reference/) or the [REST API](/preview/eas-simulator/rest-api/) when you need a controller, an Android Emulator, a blank device, Expo Go, or custom duration and idle limits.
+
+> **warning** Opening a create session link starts a new session without a confirmation step. The link is not idempotent: opening it again can create another session that consumes EAS Simulator usage. Share the resulting session page URL when you want someone to view an existing session instead of starting a new one.
+
+## Construct the URL
+
+Use the Expo account name and project slug in the URL:
+
+```text
+https://expo.dev/accounts//projects//simulator-sessions/create?
+```
+
+The person opening the link must sign in to an Expo account that can access the project. If they are signed out, expo.dev preserves the complete URL during authentication and starts the session after they sign in.
+
+### Choose an application source
+
+Every create session link requires exactly one application source:
+
+| Parameter | Description |
+| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| `buildId` | ID of a finished, unexpired EAS Build for the iOS Simulator. The build determines the platform. |
+| `buildFingerprint` | Fingerprint hash of an EAS Build. Requires `platform`. EAS resolves it to the most recent installable build with this fingerprint on the requested platform. |
+| `applicationArchiveUrl` | URL of a downloadable iOS application archive. Encode this URL because it is nested inside the create session URL. Supported extensions are **.tar.gz**, **.tgz**, **.app**, and **.app.zip**. |
+
+Do not include more than one application source. A link without an application source cannot create a session.
+
+EAS treats an empty application source value, such as `buildId=`, as absent.
+
+### Add other parameters
+
+| Parameter | Description |
+| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `platform` | Platform for `buildFingerprint` or `applicationArchiveUrl`. Create session links currently support `ios`. It is required with `buildFingerprint` and can be omitted when an archive URL has a supported iOS extension. It is ignored when the application source is `buildId` because the build determines its platform. |
+| `launchArgs` | Argument passed to the application when it launches. Repeat this parameter to pass multiple arguments. Their order is preserved. |
+| `openUrl` | Expo, development-client, or application deep link to open after the application launches. |
+| `deviceIdentifier` | iOS Simulator name or unique device identifier (UDID), such as `iPhone 16 Pro`. The runner chooses the default device when this parameter is omitted. |
+| `name` | Descriptive session name with a maximum of 255 characters. |
+
+URL-encode parameter values, especially nested URLs and values that contain spaces. Most programming languages provide a URL builder that handles this encoding. For example:
+
+```js
+const url = new URL('https://expo.dev/accounts/acme/projects/my-app/simulator-sessions/create');
+
+url.searchParams.set('buildFingerprint', 'FINGERPRINT_HASH');
+url.searchParams.set('platform', 'ios');
+url.searchParams.set('name', 'PR preview');
+url.searchParams.set('deviceIdentifier', 'iPhone 16 Pro');
+url.searchParams.append('launchArgs', '-UITestMode');
+url.searchParams.append('launchArgs', '1');
+url.searchParams.set('openUrl', 'myapp://profile/42');
+
+console.log(url.toString());
+```
+
+## Examples
+
+### Start a session from an EAS Build
+
+```text
+https://expo.dev/accounts/acme/projects/my-app/simulator-sessions/create?buildId=BUILD_UUID
+```
+
+The build must be finished, its artifact must not be expired, and it must target the iOS Simulator instead of a physical iOS device.
+
+### Start the most recent installable build with a fingerprint
+
+```text
+https://expo.dev/accounts/acme/projects/my-app/simulator-sessions/create?buildFingerprint=FINGERPRINT_HASH&platform=ios
+```
+
+EAS resolves the fingerprint to the most recent installable iOS Simulator build. If no installable build with this fingerprint exists, the link shows a validation error. Use `buildId` instead when you need to select one specific build.
+
+### Name the session and choose a device
+
+```text
+https://expo.dev/accounts/acme/projects/my-app/simulator-sessions/create?buildId=BUILD_UUID&name=PR%20preview&deviceIdentifier=iPhone%2016%20Pro
+```
+
+### Start a session from an application archive
+
+```text
+https://expo.dev/accounts/acme/projects/my-app/simulator-sessions/create?applicationArchiveUrl=https%3A%2F%2Fcdn.example.com%2FMyApp.app.zip&platform=ios
+```
+
+### Pass launch arguments and open a deep link
+
+```text
+https://expo.dev/accounts/acme/projects/my-app/simulator-sessions/create?buildId=BUILD_UUID&launchArgs=-UITestMode&launchArgs=1&openUrl=myapp%3A%2F%2Fprofile%2F42
+```
+
+## What happens when the link opens
+
+After authentication, expo.dev validates the parameters and build, creates the session, and redirects to its session page:
+
+```text
+https://expo.dev/accounts//projects//simulator-sessions/
+```
+
+The session page shows its startup progress and the browser preview when it becomes available. Keep this resulting URL to return to or share the same session.
+
+Closing the page or navigating away does not cancel a session creation that the service already accepted, and it does not stop a running session. Stop the session when you finish so that it does not continue consuming usage.
+
+If the parameters or build are invalid, expo.dev shows a **Cannot start simulator session** error instead. Common causes include an unfinished or expired build, an iOS device build, a fingerprint without `platform`, no installable build for a fingerprint, an unsupported archive URL, or more than one application source.
diff --git a/docs/pages/preview/eas-simulator/get-started.mdx b/docs/pages/preview/eas-simulator/get-started.mdx
index 88a5c4bcbe9f25..befc67e4cf5d08 100644
--- a/docs/pages/preview/eas-simulator/get-started.mdx
+++ b/docs/pages/preview/eas-simulator/get-started.mdx
@@ -36,7 +36,7 @@ If you use an AI agent, install [Expo Skills](/skills/) and ask it to use the EA
## Start a session manually
-The steps below use EAS CLI. To manage sessions directly from your own HTTP client, see the [REST API reference](/preview/eas-simulator/rest-api/).
+The steps below use EAS CLI. To manage sessions directly from your own HTTP client, see the [REST API reference](/preview/eas-simulator/rest-api/). To start a browser-preview-only session when someone opens an authenticated expo.dev URL, see [Create session links](/preview/eas-simulator/create-session-links/).
diff --git a/docs/pages/preview/eas-simulator/introduction.mdx b/docs/pages/preview/eas-simulator/introduction.mdx
index 7655eaaae569d0..294d24dd15d193 100644
--- a/docs/pages/preview/eas-simulator/introduction.mdx
+++ b/docs/pages/preview/eas-simulator/introduction.mdx
@@ -49,7 +49,7 @@ A common setup is a [Cursor cloud agent](https://cursor.com/cloud) or another ba
An EAS Simulator workflow has four stages:
-1. **Start a session** with EAS CLI or the [REST API](/preview/eas-simulator/rest-api/). Give the session a descriptive name, choose a remote device and session type, and optionally set automatic duration or idle limits.
+1. **Start a session** with EAS CLI, the [REST API](/preview/eas-simulator/rest-api/), or an authenticated [create session link](/preview/eas-simulator/create-session-links/). Give the session a descriptive name, choose a remote device and session type, and optionally set automatic duration or idle limits.
2. **Install your app.** Pass an EAS Build, application archive URL, or Expo Go to the start command, or install a local build through the controller after the session starts. A session without an application source starts with a blank device.
3. **Drive the device.** Use [agent-device](/agents/agent-device/), [Argent](/agents/argent/), or [Appium](https://appium.io/docs/en/) for programmatic control. Supported iOS sessions also include a web preview.
4. **Stop the session.** Stop it explicitly when you finish. An unattended non-interactive session continues consuming usage until it stops or reaches a configured limit.
@@ -88,6 +88,13 @@ Use [EAS Build](/build/introduction/) to create installable builds, and use loca
Icon={Cloud01Icon}
/>
+
+
```tsx
diff --git a/docs/pages/versions/v56.0.0/sdk/location.mdx b/docs/pages/versions/v56.0.0/sdk/location.mdx
index 0b2b25e6e51a1b..8c04cd97a1ea53 100644
--- a/docs/pages/versions/v56.0.0/sdk/location.mdx
+++ b/docs/pages/versions/v56.0.0/sdk/location.mdx
@@ -73,6 +73,13 @@ You can configure `expo-location` using its built-in [config plugin](/config-plu
'A string to set the [`NSLocationWhenInUseUsageDescription`](#permission-nslocationwheninuseusagedescription) permission message.',
default: '"Allow $(PRODUCT_NAME) to use your location"',
},
+ {
+ name: 'motionUsagePermission',
+ platform: 'ios',
+ description:
+ 'A string to set the `NSMotionUsageDescription` permission message shown when `getMotionActivityAsync` or `watchMotionActivityAsync` is called for the first time.',
+ default: '"Allow $(PRODUCT_NAME) to detect your current motion activity"',
+ },
{
name: 'isIosBackgroundLocationEnabled',
platform: 'ios',
diff --git a/docs/pages/versions/v57.0.0/sdk/location.mdx b/docs/pages/versions/v57.0.0/sdk/location.mdx
index d984b01e81c0f8..0d400e45bafc30 100644
--- a/docs/pages/versions/v57.0.0/sdk/location.mdx
+++ b/docs/pages/versions/v57.0.0/sdk/location.mdx
@@ -73,6 +73,13 @@ You can configure `expo-location` using its built-in [config plugin](/config-plu
'A string to set the [`NSLocationWhenInUseUsageDescription`](#permission-nslocationwheninuseusagedescription) permission message.',
default: '"Allow $(PRODUCT_NAME) to use your location"',
},
+ {
+ name: 'motionUsagePermission',
+ platform: 'ios',
+ description:
+ 'A string to set the `NSMotionUsageDescription` permission message shown when `getMotionActivityAsync` or `watchMotionActivityAsync` is called for the first time.',
+ default: '"Allow $(PRODUCT_NAME) to detect your current motion activity"',
+ },
{
name: 'isIosBackgroundLocationEnabled',
platform: 'ios',
diff --git a/docs/pages/versions/v57.0.0/sdk/ui/jetpack-compose/dropdownmenu.mdx b/docs/pages/versions/v57.0.0/sdk/ui/jetpack-compose/dropdownmenu.mdx
index 5cc6cae0d2545b..56ccec4358758d 100644
--- a/docs/pages/versions/v57.0.0/sdk/ui/jetpack-compose/dropdownmenu.mdx
+++ b/docs/pages/versions/v57.0.0/sdk/ui/jetpack-compose/dropdownmenu.mdx
@@ -217,6 +217,8 @@ Use `cornerRadius` to override the default Material3 menu shape with a custom co
```tsx
diff --git a/docs/public/static/data/unversioned/expo-router.json b/docs/public/static/data/unversioned/expo-router.json
index b847d3382d2473..d4627d6c4d6f97 100644
--- a/docs/public/static/data/unversioned/expo-router.json
+++ b/docs/public/static/data/unversioned/expo-router.json
@@ -1 +1 @@
-{"schemaVersion":"2.0","name":"expo-router","variant":"project","kind":1,"children":[{"name":"ActionDispatchedEvent","variant":"declaration","kind":256,"children":[{"name":"actionType","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The action type from the dispatched NavigationAction (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"payload","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"ReactNavigationState"},"name":"ReactNavigationState","package":"expo-router"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"actionDispatched"}}]},{"name":"AnalyticsEvent","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reference","name":"PagePreloadedEvent","package":"expo-router"},{"type":"reference","name":"PageFocusedEvent","package":"expo-router"},{"type":"reference","name":"PageBlurredEvent","package":"expo-router"},{"type":"reference","name":"PageRemoved","package":"expo-router"},{"type":"reference","name":"ActionDispatchedEvent","package":"expo-router"}]}},{"name":"Badge","variant":"declaration","kind":64,"signatures":[{"name":"Badge","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"BadgeProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"BadgeProps","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/common/elements.tsx","qualifiedName":"NativeTabsTriggerBadgeProps"},"name":"NativeTabsTriggerBadgeProps","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/toolbar/toolbar-primitives.tsx","qualifiedName":"StackToolbarBadgeProps"},"name":"StackToolbarBadgeProps","package":"expo-router"}]}},{"name":"DarkTheme","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reference","name":"Theme","package":"expo-router"},"defaultValue":"..."},{"name":"DefaultTheme","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reference","name":"Theme","package":"expo-router"},"defaultValue":"..."},{"name":"EffectCallback","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Memoized callback containing the effect, should optionally return a cleanup function."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"union","types":[{"type":"intrinsic","name":"undefined"},{"type":"intrinsic","name":"void"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}]}}]}}},{"name":"ErrorBoundary","variant":"declaration","kind":64,"signatures":[{"name":"ErrorBoundary","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"ErrorBoundaryProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"ErrorBoundaryProps","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Props passed to a page's "},{"kind":"code","text":"`ErrorBoundary`"},{"kind":"text","text":" export."}]},"children":[{"name":"error","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The error that was thrown."}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Error"},"name":"Error","package":"typescript"}},{"name":"retry","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"A function that will re-render the route component by clearing the "},{"kind":"code","text":"`error`"},{"kind":"text","text":" state."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"intrinsic","name":"void"}],"name":"Promise","package":"typescript"}}]}}}]},{"name":"ExperimentalStack","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Renders the new "},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":" native stack.\n\nSibling to "},{"kind":"code","text":"`Stack`"},{"kind":"text","text":". Native-only — on web it falls back to the standard "},{"kind":"code","text":"`Stack`"},{"kind":"text","text":".\nOpt-in per navigator: replace "},{"kind":"code","text":"``"},{"kind":"text","text":" with "},{"kind":"code","text":"``"},{"kind":"text","text":" in the\nspecific layout you want to migrate."}],"modifierTags":["@experimental"]},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/experimental-stack/types.ts","qualifiedName":"ExperimentalStackNavigatorProps"},"name":"ExperimentalStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"UNSTABLE_router"},{"type":"literal","value":"UNSTABLE_routeNamesChangeBehavior"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: StackNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; ... 4 more ...; UNSTABLE_routeNamesChangeBehavior?: \"firstMatch\" | ... 1 more ... | undefined; ..."}]},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/experimental-stack/types.ts","qualifiedName":"ExperimentalStackNavigatorProps"},"name":"ExperimentalStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"UNSTABLE_router"},{"type":"literal","value":"UNSTABLE_routeNamesChangeBehavior"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: StackNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; ... 4 more ...; UNSTABLE_routeNamesChangeBehavior?: \"firstMatch\" | ... 1 more ... | undefined; ..."}]},{"type":"literal","value":"children"}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/StackScreen.tsx","qualifiedName":"StackScreenProps"},"name":"StackScreenProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"BackButton","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to configure the back button.\n\nCan be used inside Stack.Screen in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Back\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n >\n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/screen/StackScreenBackButton.tsx","qualifiedName":"StackScreenBackButtonProps"},"name":"StackScreenBackButtonProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackScreenBackButton"},{"name":"Title","variant":"declaration","kind":1024,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`Stack.Title`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to set the screen title.\n\nCan be used inside "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"text","text":"String title in a layout:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Home\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"String title inside a screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n My Page\n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"Custom component as the title using "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":":\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/StackTitle.tsx","qualifiedName":"StackTitleProps"},"name":"StackTitleProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackTitle"}]}}]},"defaultValue":"StackScreen"}]}}]},"defaultValue":"..."},{"name":"ExperimentalStackNavigationEventMap","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Navigator-level events emitted by "},{"kind":"code","text":"`ExperimentalStack`"},{"kind":"text","text":". Mirrors the subset of\n"},{"kind":"code","text":"`NativeStackNavigationEventMap`"},{"kind":"text","text":" that the gamma "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" lifecycle\ncallbacks can drive."}],"modifierTags":["@experimental"]},"children":[{"name":"gestureCancel","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}},{"name":"transitionEnd","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}},{"name":"transitionStart","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}}]},{"name":"ExperimentalStackNavigationOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options accepted by "},{"kind":"code","text":"`ExperimentalStack`"},{"kind":"text","text":" screens. Mirrors the narrow option\nsurface of the gamma "},{"kind":"code","text":"``"},{"kind":"text","text":" component from\n"},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":". Anything outside this shape is dropped\nwith a "},{"kind":"code","text":"`__DEV__`"},{"kind":"text","text":" warning at runtime."}],"modifierTags":["@experimental"]},"children":[{"name":"headerBackVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerShown","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerTransparent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}}]},{"name":"ExperimentalStackNavigationProp","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true},{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationOptions","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationEventMap","package":"expo-router"}],"name":"NavigationProp","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackActionHelpers"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackActionHelpers","package":"expo-router"}]}},{"name":"ExperimentalStackScreenProps","variant":"declaration","kind":2097152,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true}],"name":"ExperimentalStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}],"name":"RouteProp","package":"expo-router"}}],"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}]},{"name":"ExternalPathString","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"templateLiteral","head":"","tail":[[{"type":"intrinsic","name":"string"},":"],[{"type":"intrinsic","name":"string"},""]]},{"type":"templateLiteral","head":"//","tail":[[{"type":"intrinsic","name":"string"},""]]}]}},{"name":"Href","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"The main routing type for Expo Router. It includes all available routes with strongly\ntyped parameters. It can either be:\n- **string**: A full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":".\n- **object**: An object with a "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" and optional "},{"kind":"code","text":"`params`"},{"kind":"text","text":". The "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" can be\na full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":".\nThe params can be an object of key-value pairs.\n\nAn Href can either be a string or an object."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"ExpoRouter.__routes","package":"expo-router"},"default":{"type":"reference","name":"ExpoRouter.__routes","package":"expo-router"}}],"type":{"type":"conditional","checkType":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"href","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}}]}},"trueType":{"type":"indexedAccess","indexType":{"type":"literal","value":"href"},"objectType":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}},"falseType":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","name":"HrefObject","package":"expo-router"}]}}},{"name":"HrefObject","variant":"declaration","kind":2097152,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional parameters for the route."}]},"type":{"type":"reference","name":"UnknownInputParams","package":"expo-router"}},{"name":"pathname","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The path of the route."}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"Icon","variant":"declaration","kind":64,"signatures":[{"name":"Icon","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"IconProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"IconProps","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/common/elements.tsx","qualifiedName":"NativeTabsTriggerIconProps"},"name":"NativeTabsTriggerIconProps","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/toolbar/toolbar-primitives.tsx","qualifiedName":"StackToolbarIconProps"},"name":"StackToolbarIconProps","package":"expo-router"}]}},{"name":"ImperativeRouter","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Returns "},{"kind":"code","text":"`router`"},{"kind":"text","text":" object for imperative navigation API."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { router } from 'expo-router';\nimport { Text } from 'react-native';\n\nexport default function Route() {\n\n return (\n router.push('/home')}>Go Home\n );\n}\n```"}]}]},"children":[{"name":"back","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Goes back in the navigation history."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"canDismiss","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Checks if it is possible to dismiss the current screen. Returns "},{"kind":"code","text":"`true`"},{"kind":"text","text":" if the\nrouter is within the stack with more than one screen in stack's history."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"boolean"}}]}}},{"name":"canGoBack","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to a route in the navigator's history if it supports invoking the "},{"kind":"code","text":"`back`"},{"kind":"text","text":" function."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"boolean"}}]}}},{"name":"dismiss","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to a stack lower than the current screen using the provided count if possible, otherwise 1.\n\nIf the current screen is the only route, it will dismiss the entire stack."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"count","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"dismissAll","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Returns to the first screen of the closest stack — equivalent to a stack\n"},{"kind":"code","text":"`popToTop`"},{"kind":"text","text":" action."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"React Navigation's ["},{"kind":"code","text":"`popToTop`"},{"kind":"text","text":"](https://reactnavigation.org/docs/stack-actions/#poptotop)\nstack action for the underlying behavior."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"dismissTo","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Dismisses screens until the provided href is reached. If the href is not found, it will instead replace the current screen with the provided "},{"kind":"code","text":"`href`"},{"kind":"text","text":"."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"NavigationOptions"},"name":"NavigationOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"navigate","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to the provided ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#hreft)."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"NavigationOptions"},"name":"NavigationOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"prefetch","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Prefetch a screen in the background before navigating to it"}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"name","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"push","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to the provided ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#hreft) using a push operation if possible."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"NavigationOptions"},"name":"NavigationOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"replace","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to route without appending to the history. Can be used with\n["},{"kind":"code","text":"`useFocusEffect`"},{"kind":"text","text":"](#usefocuseffecteffect-do_not_pass_a_second_prop)\nto redirect imperatively to a new screen."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Using "},{"kind":"code","text":"`useRouter()`"},{"kind":"text","text":" hook](/router/reference/redirects/) to redirect."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"NavigationOptions"},"name":"NavigationOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"setParams","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Updates the current route's query params."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"RoutePath","package":"expo-router"}}],"parameters":[{"name":"params","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}],"name":"RouteInputParams","package":"expo-router"}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}}}]},{"name":"IntegrateWithRouterOptions","variant":"declaration","kind":2097152,"typeParameters":[{"name":"State","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}},{"name":"CreateProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"CreatePropsOption"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"CreatePropsOption","package":"expo-router"}},{"name":"Label","variant":"declaration","kind":64,"signatures":[{"name":"Label","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LabelProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"LabelProps","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/common/elements.tsx","qualifiedName":"NativeTabsTriggerLabelProps"},"name":"NativeTabsTriggerLabelProps","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/toolbar/toolbar-primitives.tsx","qualifiedName":"StackToolbarLabelProps"},"name":"StackToolbarLabelProps","package":"expo-router"}]}},{"name":"NativeIntent","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Created by using a special file called "},{"kind":"code","text":"`+native-intent.tsx`"},{"kind":"text","text":" at the top-level of your\nproject's **app** directory. It exports "},{"kind":"code","text":"`redirectSystemPath`"},{"kind":"text","text":" or "},{"kind":"code","text":"`legacy_subscribe`"},{"kind":"text","text":" functions,\nboth methods designed to handle URL/path processing.\n\nUseful for re-writing URLs to correctly target a route when unique/referred URLs\nare incoming from third-party providers or stale URLs from previous versions."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"For more information on how to use "},{"kind":"code","text":"`NativeIntent`"},{"kind":"text","text":", see [Customizing links](/router/advanced/native-intent/)."}]}]},"children":[{"name":"legacy_subscribe","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"> **warning** Experimentally available in SDK 52.\n\nUseful as an alternative API when a third-party provider doesn't support Expo Router\nbut has support for React Navigation via "},{"kind":"code","text":"`Linking.subscribe()`"},{"kind":"text","text":" for existing projects.\n\nUsing this API is not recommended for newer projects or integrations since it is\nincompatible with Server Side Routing and\n[Static Rendering](/router/web/static-rendering/), and can become challenging to manage while offline or in a low network environment."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"listener","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"url","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"intrinsic","name":"void"}}]}}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"undefined"},{"type":"intrinsic","name":"void"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}]}}]}}},{"name":"redirectSystemPath","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A special method used to process URLs in native apps. When invoked, it receives an\n"},{"kind":"code","text":"`options`"},{"kind":"text","text":" object with the following properties:\n- **path**: represents the URL or path undergoing processing.\n- **initial**: a boolean indicating whether the path is the app's initial URL.\n\nIts return value should be a "},{"kind":"code","text":"`string`"},{"kind":"text","text":", a "},{"kind":"code","text":"`Promise`"},{"kind":"text","text":", or "},{"kind":"code","text":"`null`"},{"kind":"text","text":". When a falsy value\nis returned (for example, "},{"kind":"code","text":"`null`"},{"kind":"text","text":"), no redirection occurs and the app stays on the current path.\n\nNote that throwing errors within this method may result in app crashes. It's recommended to\nwrap your code inside a "},{"kind":"code","text":"`try/catch`"},{"kind":"text","text":" block and utilize "},{"kind":"code","text":"`.catch()`"},{"kind":"text","text":" when appropriate."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"For usage information, see [Redirecting system paths](/router/advanced/native-intent/#using-redirectsystempath)."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"event","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"initial","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"path","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"literal","value":null}]}],"name":"Promise","package":"typescript"},{"type":"intrinsic","name":"string"},{"type":"literal","value":null}]}}]}}}]},{"name":"NativeStackHeaderBackProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"href","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The "},{"kind":"code","text":"`href`"},{"kind":"text","text":" to use for the anchor tag on web"}]},"type":{"type":"intrinsic","name":"string"}},{"name":"label","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Label text for the button. Usually the title of the previous screen.\nBy default, this is only shown on iOS 18."}]},"type":{"type":"intrinsic","name":"string"}}]}}]}},{"name":"NativeStackHeaderItem","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"An item that can be displayed in the header.\nIt can be a button, a menu, spacing, or a custom element.\n\nOn iOS 26, when showing items on the right side of the header,\nif the items don't fit the available space, they will be collapsed into a menu automatically.\nItems with "},{"kind":"code","text":"`type: 'custom'`"},{"kind":"text","text":" will not be included in this automatic collapsing behavior."}]},"type":{"type":"union","types":[{"type":"reference","name":"NativeStackHeaderItemButton","package":"expo-router"},{"type":"reference","name":"NativeStackHeaderItemMenu","package":"expo-router"},{"type":"reference","name":"NativeStackHeaderItemSpacing","package":"expo-router"},{"type":"reference","name":"NativeStackHeaderItemCustom","package":"expo-router"}]}},{"name":"NativeStackHeaderItemButton","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"A button item in the header."}]},"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"SharedHeaderItem"},"name":"SharedHeaderItem","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"onPress","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Function to call when the item is pressed."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"selected","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the item is in a selected state.\n\nRead more: https://developer.apple.com/documentation/uikit/uibarbuttonitem/isselected"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the item."}]},"type":{"type":"literal","value":"button"}}]}}]}},{"name":"NativeStackHeaderItemCustom","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"A custom item to display any React Element in the header."}]},"children":[{"name":"element","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"A React Element to display as the item."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"name":"React.ReactElement","package":"@types/react"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the background this item may share with other items in the bar should be hidden.\nOnly available from iOS 26.0 and later.\n\nRead more: https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"custom"}}]},{"name":"NativeStackHeaderItemMenu","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"An item that shows a menu when pressed."}]},"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"SharedHeaderItem"},"name":"SharedHeaderItem","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"changesSelectionAsPrimaryAction","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the menu is a selection menu.\nTapping an item in a selection menu will add a checkmark to the selected item.\n\nRead more: https://developer.apple.com/documentation/uikit/uibarbuttonitem/changesselectionasprimaryaction"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"menu","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Menu for the item."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"items","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Array of menu items (actions or submenus)."}]},"type":{"type":"array","elementType":{"type":"union","types":[{"type":"reference","name":"NativeStackHeaderItemMenuAction","package":"expo-router"},{"type":"reference","name":"NativeStackHeaderItemMenuSubmenu","package":"expo-router"}]}}},{"name":"layout","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How the submenu items are displayed.\n- "},{"kind":"code","text":"`default`"},{"kind":"text","text":": menu items are displayed normally.\n- "},{"kind":"code","text":"`palette`"},{"kind":"text","text":": menu items are displayed in a horizontal row.\n\nDefaults to "},{"kind":"code","text":"`default`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayaspalette"}]},"type":{"type":"union","types":[{"type":"literal","value":"default"},{"type":"literal","value":"palette"}]}},{"name":"multiselectable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether multiple items in the submenu can be selected, i.e. in \"on\" state.\n\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/singleselection"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional title to show on top of the menu."}]},"type":{"type":"intrinsic","name":"string"}}]}}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"menu"}}]}}]}},{"name":"NativeStackHeaderItemMenuAction","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"An action item in a menu."}]},"children":[{"name":"description","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The secondary text displayed alongside the label of the menu item."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to apply destructive style to the item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to apply disabled style to the item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/disabled"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"discoverabilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An elaborated title that explains the purpose of the action.\n\nOn iOS, the system displays this title in the discoverability heads-up display (HUD).\nIf this is not set, the HUD displays the title property.\n\nRead more: https://developer.apple.com/documentation/uikit/uiaction/discoverabilitytitle"}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to apply hidden style to the item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/hidden"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon for the menu item."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"PlatformIconIOS"},"name":"PlatformIconIOS","package":"expo-router"}},{"name":"keepsMenuPresented","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to keep the menu presented after firing the element’s action.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/keepsmenupresented"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"label","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Label for the menu item."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"onPress","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Function to call when the menu item is pressed."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"state","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The state of an action- or command-based menu item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/state"}]},"type":{"type":"union","types":[{"type":"literal","value":"on"},{"type":"literal","value":"off"},{"type":"literal","value":"mixed"}]}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"action"}}]},{"name":"NativeStackHeaderItemMenuSubmenu","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"A submenu item that contains other menu items."}]},"children":[{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to apply destructive style to the menu item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon for the submenu item."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"PlatformIconIOS"},"name":"PlatformIconIOS","package":"expo-router"}},{"name":"inline","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the menu is displayed inline with the parent menu.\nBy default, submenus are displayed after expanding the parent menu item.\nInline menus are displayed as part of the parent menu as a section.\n\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayinline"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"items","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Array of menu items (actions or submenus)."}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"items"},"objectType":{"type":"indexedAccess","indexType":{"type":"literal","value":"menu"},"objectType":{"type":"reference","name":"NativeStackHeaderItemMenu","package":"expo-router"}}}},{"name":"label","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Label for the submenu item."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"layout","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How the submenu items are displayed.\n- "},{"kind":"code","text":"`default`"},{"kind":"text","text":": menu items are displayed normally.\n- "},{"kind":"code","text":"`palette`"},{"kind":"text","text":": menu items are displayed in a horizontal row.\n\nDefaults to "},{"kind":"code","text":"`default`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayaspalette"}]},"type":{"type":"union","types":[{"type":"literal","value":"default"},{"type":"literal","value":"palette"}]}},{"name":"multiselectable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether multiple items in the submenu can be selected, i.e. in \"on\" state.\n\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/singleselection"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"submenu"}}]},{"name":"NativeStackHeaderItemProps","variant":"declaration","kind":2097152,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Header background color"}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"canGoBack","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether it's possible to navigate back in stack."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Tint color for the header."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"NativeStackHeaderItemSpacing","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"An item to add spacing between other items in the header."}]},"children":[{"name":"spacing","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The amount of spacing to add."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"spacing"}}]},{"name":"NativeStackHeaderLeftProps","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`NativeStackHeaderBackProps`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reference","name":"NativeStackHeaderBackProps","package":"expo-router"}},{"name":"NativeStackHeaderNativeProps","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenStackHeaderConfigProps"},"name":"ScreenStackHeaderConfigProps","package":"react-native-screens"}],"name":"Partial","package":"typescript"}},{"name":"NativeStackHeaderProps","variant":"declaration","kind":2097152,"children":[{"name":"back","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Options for the back button."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"href","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The "},{"kind":"code","text":"`href`"},{"kind":"text","text":" to use for the anchor tag on web"}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}},{"name":"title","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Title of the previous screen."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]}}},{"name":"navigation","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigation prop for the header."}]},"type":{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"NativeStackNavigationProp","package":"expo-router"}},{"name":"options","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Options for the current screen."}]},"type":{"type":"reference","name":"NativeStackNavigationOptions","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Route object for the current screen."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Route"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"Route","package":"expo-router"}}]},{"name":"NativeStackHeaderRightProps","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`NativeStackHeaderItemProps`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"}},{"name":"NativeStackNativeProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","name":"NativeStackScreenNativeProps","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"headerConfig","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"NativeStackHeaderNativeProps","package":"expo-router"}}]}}]}},{"name":"NativeStackNavigationEventMap","variant":"declaration","kind":2097152,"children":[{"name":"gestureCancel","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a swipe back is canceled on iOS."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}},{"name":"sheetDetentChange","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when screen is in sheet presentation & it's detent changes.\n\nIn payload it carries two fields:\n\n* "},{"kind":"code","text":"`index`"},{"kind":"text","text":" - current detent index in the "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array,\n* "},{"kind":"code","text":"`stable`"},{"kind":"text","text":" - on Android "},{"kind":"code","text":"`false`"},{"kind":"text","text":" value means that the user is dragging the sheet or it is settling; on iOS it is always "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"index","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}},{"name":"stable","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}},{"name":"transitionEnd","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation ends."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}},{"name":"transitionStart","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation starts."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}}]},{"name":"NativeStackNavigationOptions","variant":"declaration","kind":2097152,"children":[{"name":"animation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How the screen should animate when pushed or popped.\n\nSupported values:\n- \"default\": use the platform default animation\n- \"fade\": fade screen in or out\n- \"fade_from_bottom\" – performs a fade from bottom animation\n- \"flip\": flip the screen, requires presentation: \"modal\" (iOS only)\n- \"simple_push\": use the platform default animation, but without shadow and native header transition (iOS only)\n- \"slide_from_bottom\": slide in the new screen from bottom\n- \"slide_from_right\": slide in the new screen from right (Android only, uses default animation on iOS)\n- \"slide_from_left\": slide in the new screen from left (Android only, uses default animation on iOS)\n- \"ios_from_right\" - iOS like slide in animation. pushes in the new screen from right to left (Android only, resolves to default transition on iOS)\n- \"ios_from_left\" - iOS like slide in animation. pushes in the new screen from left to right (Android only, resolves to default transition on iOS)\n- \"none\": don't animate the screen\n\nOnly supported on iOS and Android."}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"stackAnimation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"animationDuration","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Duration (in milliseconds) for the following transition animations on iOS:\n- "},{"kind":"code","text":"`slide_from_bottom`"},{"kind":"text","text":"\n- "},{"kind":"code","text":"`fade_from_bottom`"},{"kind":"text","text":"\n- "},{"kind":"code","text":"`fade`"},{"kind":"text","text":"\n- "},{"kind":"code","text":"`simple_push`"},{"kind":"text","text":"\n\nDefaults to "},{"kind":"code","text":"`500`"},{"kind":"text","text":".\n\nThe duration is not customizable for:\n- Screens with "},{"kind":"code","text":"`default`"},{"kind":"text","text":" and "},{"kind":"code","text":"`flip`"},{"kind":"text","text":" animations\n- Screens with "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" set to "},{"kind":"code","text":"`modal`"},{"kind":"text","text":", "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":", "},{"kind":"code","text":"`pageSheet`"},{"kind":"text","text":" (regardless of animation)"}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"animationMatchesGesture","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the gesture to dismiss should use animation provided to "},{"kind":"code","text":"`animation`"},{"kind":"text","text":" prop. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\n\nDoesn't affect the behavior of screens presented modally."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"animationTypeForReplace","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The type of animation to use when this screen replaces another screen. Defaults to "},{"kind":"code","text":"`pop`"},{"kind":"text","text":".\n\nSupported values:\n- \"push\": the new screen will perform push animation.\n- \"pop\": the new screen will perform pop animation.\n\nOnly supported on iOS and Android."}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"replaceAnimation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"autoHideHomeIndicator","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the home indicator should prefer to stay hidden on this screen. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"contentStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for the scene content."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}},{"name":"freezeOnBlur","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether inactive screens should be suspended from re-rendering. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\nDefaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":" when "},{"kind":"code","text":"`enableFreeze()`"},{"kind":"text","text":" is run at the top of the application.\nRequires "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":" version >=3.16.0.\n\nOnly supported on iOS and Android."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"fullScreenGestureEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the gesture to dismiss should work on the whole screen. The behavior depends on iOS version.\n\nOn iOS 18 and below:\n"},{"kind":"code","text":"`false`"},{"kind":"text","text":" by default. If enabled, swipe gesture will use "},{"kind":"code","text":"`simple_push`"},{"kind":"text","text":" transition animation by default. It can be changed\nwith "},{"kind":"code","text":"`animation`"},{"kind":"text","text":" & "},{"kind":"code","text":"`animationMatchesGesture`"},{"kind":"text","text":" props, but default iOS swipe animation is not achievable.\n\nOn iOS 26 and up:\n"},{"kind":"code","text":"`true`"},{"kind":"text","text":" by default to match new native behavior. You can still customize it with "},{"kind":"code","text":"`animation`"},{"kind":"text","text":" & "},{"kind":"code","text":"`animationMatchesGesture`"},{"kind":"text","text":" props.\n\nDoesn't affect the behavior of screens presented modally."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"fullScreenGestureShadowEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"iOS 18 and below. Controls whether the full screen dismiss gesture has shadow under view during transition.\nThe gesture uses custom transition and thus doesn't have a shadow by default. When enabled, a custom shadow view\nis added during the transition which tries to mimic the default iOS shadow. Defaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":".\n\nThis does not affect the behavior of transitions that don't use gestures, enabled by "},{"kind":"code","text":"`fullScreenGestureEnabled`"},{"kind":"text","text":" prop."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"since iOS 26."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"gestureDirection","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the direction in which you should swipe to dismiss the screen.\nWhen using "},{"kind":"code","text":"`vertical`"},{"kind":"text","text":" option, options "},{"kind":"code","text":"`fullScreenGestureEnabled: true`"},{"kind":"text","text":", "},{"kind":"code","text":"`animationMatchesGesture: true`"},{"kind":"text","text":" and "},{"kind":"code","text":"`animation: 'slide_from_bottom'`"},{"kind":"text","text":" are set by default.\n\nSupported values:\n- "},{"kind":"code","text":"`vertical`"},{"kind":"text","text":" – dismiss screen vertically\n- "},{"kind":"code","text":"`horizontal`"},{"kind":"text","text":" – dismiss screen horizontally (default)"}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"swipeDirection"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"gestureEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether you can use gestures to dismiss this screen. Defaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":".\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"gestureResponseDistance","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Use it to restrict the distance from the edges of screen in which the gesture should be recognized. To be used alongside "},{"kind":"code","text":"`fullScreenGestureEnabled`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"gestureResponseDistance"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"header","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function that given "},{"kind":"code","text":"`HeaderProps`"},{"kind":"text","text":" returns a React Element to display as a header."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}},{"name":"headerBackButtonDisplayMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How the back button displays icon and title.\n\nSupported values:\n- \"default\" - Displays one of the following depending on the available space: previous screen's title, generic title (e.g. 'Back') or no title (only icon).\n- \"generic\" – Displays one of the following depending on the available space: generic title (e.g. 'Back') or no title (only icon).\n- \"minimal\" – Always displays only the icon without a title.\n\nThe space-aware behavior is disabled when:\n- The iOS version is 13 or lower\n- Custom font family or size is set (e.g. with "},{"kind":"code","text":"`headerBackTitleStyle`"},{"kind":"text","text":")\n- Back button menu is disabled (e.g. with "},{"kind":"code","text":"`headerBackButtonMenuEnabled`"},{"kind":"text","text":")\n\nIn such cases, a static title and icon are always displayed.\n\nDefaults to \"default\" on iOS, and \"minimal\" on other platforms.\n\nOnly supported on iOS and Web."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios, web"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"backButtonDisplayMode"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenStackHeaderConfigProps"},"name":"ScreenStackHeaderConfigProps","package":"react-native-screens"}}},{"name":"headerBackButtonMenuEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Boolean indicating whether to show the menu on longPress of iOS >= 14 back button. Defaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":".\nRequires "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":" version >=3.3.0.\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns a React Element to render as the background of the header.\nThis is useful for using backgrounds such as an image, a gradient, blur effect etc.\nYou can use this with "},{"kind":"code","text":"`headerTransparent`"},{"kind":"text","text":" to render content underneath a translucent header."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}},{"name":"headerBackIcon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon to display in the header as the icon in the back button.\n\nDefaults to back icon image for the platform\n- A chevron on iOS\n- An arrow on Android"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```js\nheaderBackIcon: {\n type: 'image',\n source: require('./back-icon.png'),\n}\n```"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"source","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"image"}}]}}},{"name":"headerBackImageSource","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Image to display in the header as the icon in the back button."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`headerBackIcon`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"}},{"name":"headerBackTitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Title string used by the back button on iOS.\nDefaults to the previous scene's title.\nOn iOS the text might be shortened to \"Back\" or arrow icon depending on the available space, following native iOS behaviour.\nSee "},{"kind":"code","text":"`headerBackButtonDisplayMode`"},{"kind":"text","text":" to read about limitations and interactions with other props.\nUse "},{"kind":"code","text":"`headerBackButtonDisplayMode: \"minimal\"`"},{"kind":"text","text":" to hide it.\n\nOnly supported on iOS and Web."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios, web"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"headerBackTitleStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for header back title. Supported properties:\n- fontFamily\n- fontSize\n\nOnly supported on iOS and Web."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios, web"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"headerBackVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the back button is visible in the header.\nYou can use it to show a back button alongside "},{"kind":"code","text":"`headerLeft`"},{"kind":"text","text":" if you have specified it.\n\nThis will have no effect on the first screen in the stack."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerBlurEffect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Blur effect for the translucent header.\nThe "},{"kind":"code","text":"`headerTransparent`"},{"kind":"text","text":" option needs to be set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":" for this to work.\n\n**Note:** Using both "},{"kind":"code","text":"`headerBlurEffect`"},{"kind":"text","text":" and "},{"kind":"code","text":"`scrollEdgeEffects`"},{"kind":"text","text":" (>= iOS 26) simultaneously may cause overlapping effects.\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"blurEffect"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenStackHeaderConfigProps"},"name":"ScreenStackHeaderConfigProps","package":"react-native-screens"}}},{"name":"headerLargeStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style of the header when a large title is shown.\nThe large title is shown if "},{"kind":"code","text":"`headerLargeTitle`"},{"kind":"text","text":" is "},{"kind":"code","text":"`true`"},{"kind":"text","text":" and\nthe edge of any scrollable content reaches the matching edge of the header.\n\nSupported properties:\n- backgroundColor\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"headerLargeTitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to enable header with large title which collapses to regular header on scroll."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`headerLargeTitleEnabled`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerLargeTitleEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to enable header with large title which collapses to regular header on scroll.\n\nFor large title to collapse on scroll, the content of the screen should be wrapped in a scrollable view such as "},{"kind":"code","text":"`ScrollView`"},{"kind":"text","text":" or "},{"kind":"code","text":"`FlatList`"},{"kind":"text","text":".\nIf the scrollable area doesn't fill the screen, the large title won't collapse on scroll.\nYou also need to specify "},{"kind":"code","text":"`contentInsetAdjustmentBehavior=\"automatic\"`"},{"kind":"text","text":" in your "},{"kind":"code","text":"`ScrollView`"},{"kind":"text","text":", "},{"kind":"code","text":"`FlatList`"},{"kind":"text","text":" etc.\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerLargeTitleShadowVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether drop shadow of header is visible when a large title is shown.\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerLargeTitleStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for large title in header. Supported properties:\n- fontFamily\n- fontSize\n- fontWeight\n- color\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}},{"name":"fontWeight","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"headerLeft","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns a React Element to display on the left side of the header.\nThis replaces the back button. See "},{"kind":"code","text":"`headerBackVisible`"},{"kind":"text","text":" to show the back button along side left element.\nWill be overriden by "},{"kind":"code","text":"`headerLeftItems`"},{"kind":"text","text":" on iOS."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderBackProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}},{"name":"headerRight","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns a React Element to display on the right side of the header.\nWill be overriden by "},{"kind":"code","text":"`headerRightItems`"},{"kind":"text","text":" on iOS."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}},{"name":"headerSearchBarOptions","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Options to render a native search bar.\nYou also need to specify "},{"kind":"code","text":"`contentInsetAdjustmentBehavior=\"automatic\"`"},{"kind":"text","text":" in your "},{"kind":"code","text":"`ScrollView`"},{"kind":"text","text":", "},{"kind":"code","text":"`FlatList`"},{"kind":"text","text":" etc.\nIf you don't have a "},{"kind":"code","text":"`ScrollView`"},{"kind":"text","text":", specify "},{"kind":"code","text":"`headerTransparent: false`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"SearchBarProps"},"name":"SearchBarProps","package":"react-native-screens"}},{"name":"headerShadowVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the elevation shadow (Android) or the bottom border (iOS) on the header."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerShown","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to show the header. The header is shown by default.\nSetting this to "},{"kind":"code","text":"`false`"},{"kind":"text","text":" hides the header."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for header. Supported properties:\n- backgroundColor"}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"headerTintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Tint color for the header. Changes the color of back button and title."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"headerTitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"String or a function that returns a React Element to be used by the header.\nDefaults to screen "},{"kind":"code","text":"`title`"},{"kind":"text","text":" or route name.\n\nWhen a function is passed, it receives "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" and"},{"kind":"code","text":"`children`"},{"kind":"text","text":" in the options object as an argument.\nThe title string is passed in "},{"kind":"code","text":"`children`"},{"kind":"text","text":".\n\nNote that if you render a custom element by passing a function, animations for the title won't work."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The title text of the header."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Tint color for the header."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}]}},{"name":"headerTitleAlign","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How to align the header title.\nDefaults to "},{"kind":"code","text":"`left`"},{"kind":"text","text":" on platforms other than iOS.\n\nNot supported on iOS. It's always "},{"kind":"code","text":"`center`"},{"kind":"text","text":" on iOS and cannot be changed."}]},"type":{"type":"union","types":[{"type":"literal","value":"left"},{"type":"literal","value":"center"}]}},{"name":"headerTitleStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for header title. Supported properties:\n- fontFamily\n- fontSize\n- fontWeight\n- color"}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"},{"type":"union","types":[{"type":"literal","value":"fontFamily"},{"type":"literal","value":"fontSize"},{"type":"literal","value":"fontWeight"}]}],"name":"Pick","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}}]}],"name":"StyleProp","package":"react-native"}},{"name":"headerTransparent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Boolean indicating whether the navigation bar is translucent.\nSetting this to "},{"kind":"code","text":"`true`"},{"kind":"text","text":" makes the header absolutely positioned,\nand changes the background color to "},{"kind":"code","text":"`transparent`"},{"kind":"text","text":" unless specified in "},{"kind":"code","text":"`headerStyle`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"keyboardHandlingEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the keyboard should hide when swiping to the previous screen. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"navigationBarColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the navigation bar color. Defaults to initial navigation bar color."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"For all apps targeting Android SDK 35 or above edge-to-edge is enabled by default.\n This prop is subject to removal in the future.\n See: https://developer.android.com/about/versions/15/behavior-changes-15#ux."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"navigationBarHidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the visibility of the navigation bar. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"navigationBarTranslucent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Boolean indicating whether the content should be visible behind the navigation bar. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"For all apps targeting Android SDK 35 or above edge-to-edge is enabled by default.\n This prop is subject to removal in the future.\n See: https://developer.android.com/about/versions/15/behavior-changes-15#ux."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"orientation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The display orientation to use for the screen.\n\nSupported values:\n- \"default\" - resolves to \"all\" without \"portrait_down\" on iOS. On Android, this lets the system decide the best orientation.\n- \"all\": all orientations are permitted.\n- \"portrait\": portrait orientations are permitted.\n- \"portrait_up\": right-side portrait orientation is permitted.\n- \"portrait_down\": upside-down portrait orientation is permitted.\n- \"landscape\": landscape orientations are permitted.\n- \"landscape_left\": landscape-left orientation is permitted.\n- \"landscape_right\": landscape-right orientation is permitted.\n\nOnly supported on iOS and Android."}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"screenOrientation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"presentation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How should the screen be presented.\n\nSupported values:\n- \"card\": the new screen will be pushed onto a stack, which means the default animation will be slide from the side on iOS, the animation on Android will vary depending on the OS version and theme.\n- \"modal\": the new screen will be presented modally. this also allows for a nested stack to be rendered inside the screen.\n- \"transparentModal\": the new screen will be presented modally, but in addition, the previous screen will stay so that the content below can still be seen if the screen has translucent background.\n- \"containedModal\": will use \"UIModalPresentationCurrentContext\" modal style on iOS and will fallback to \"modal\" on Android.\n- \"containedTransparentModal\": will use \"UIModalPresentationOverCurrentContext\" modal style on iOS and will fallback to \"transparentModal\" on Android.\n- \"fullScreenModal\": will use \"UIModalPresentationFullScreen\" modal style on iOS and will fallback to \"modal\" on Android.\n- \"formSheet\": will use \"UIModalPresentationFormSheet\" modal style on iOS and will fallback to \"modal\" on Android.\n- \"pageSheet\": will use \"UIModalPresentationPageSheet\" modal style on iOS and will fallback to \"modal\" on Android.\n\nOnly supported on iOS and Android."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Exclude"},"typeArguments":[{"type":"indexedAccess","indexType":{"type":"literal","value":"stackPresentation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}},{"type":"literal","value":"push"}],"name":"Exclude","package":"typescript"},{"type":"literal","value":"card"}]}},{"name":"scrollEdgeEffects","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Configures the scroll edge effect for the _content ScrollView_ (the ScrollView that is present in first descendants chain of the Screen).\nDepending on values set, it will blur the scrolling content below certain UI elements (header items, search bar)\nfor the specified edge of the ScrollView.\n\nWhen set in nested containers, i.e. Native Stack inside Native Bottom Tabs, or the other way around,\nthe ScrollView will use only the innermost one's config.\n\n**Note:** Using both "},{"kind":"code","text":"`headerBlurEffect`"},{"kind":"text","text":" and "},{"kind":"code","text":"`scrollEdgeEffects`"},{"kind":"text","text":" (>= iOS 26) simultaneously may cause overlapping effects.\n\nEdge effects can be configured for each edge separately. The following values are currently supported:\n\n- "},{"kind":"code","text":"`automatic`"},{"kind":"text","text":" - the automatic scroll edge effect style,\n- "},{"kind":"code","text":"`hard`"},{"kind":"text","text":" - a scroll edge effect with a hard cutoff and dividing line,\n- "},{"kind":"code","text":"`soft`"},{"kind":"text","text":" - a soft-edged scroll edge effect,\n- "},{"kind":"code","text":"`hidden`"},{"kind":"text","text":" - no scroll edge effect.\n\nDefaults to "},{"kind":"code","text":"`automatic`"},{"kind":"text","text":" for each edge."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]},{"tag":"@supported","content":[{"kind":"text","text":"iOS 26 or higher"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"bottom","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"ScrollEdgeEffect"},"name":"ScrollEdgeEffect","package":"react-native-screens"}},{"name":"left","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"ScrollEdgeEffect"},"name":"ScrollEdgeEffect","package":"react-native-screens"}},{"name":"right","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"ScrollEdgeEffect"},"name":"ScrollEdgeEffect","package":"react-native-screens"}},{"name":"top","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"ScrollEdgeEffect"},"name":"ScrollEdgeEffect","package":"react-native-screens"}}]}}},{"name":"sheetAllowedDetents","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Describes heights where a sheet can rest.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\n\nHeights should be described as fraction (a number from "},{"kind":"code","text":"`[0, 1]`"},{"kind":"text","text":" interval) of screen height / maximum detent height.\nYou can pass an array of ascending values each defining allowed sheet detent. iOS accepts any number of detents,\nwhile **Android is limited to three**.\n\nThere is also possibility to specify "},{"kind":"code","text":"`fitToContents`"},{"kind":"text","text":" literal, which intents to set the sheet height\nto the height of its contents.\n\nNote that the array **must** be sorted in ascending order. This invariant is verified only in development mode,\nwhere violation results in error.\n\n**Android is limited to up 3 values in the array** -- any surplus values, beside first three are ignored.\n\nDefaults to "},{"kind":"code","text":"`[1.0]`"},{"kind":"text","text":"."}]},"type":{"type":"union","types":[{"type":"array","elementType":{"type":"intrinsic","name":"number"}},{"type":"literal","value":"fitToContents"}]}},{"name":"sheetCornerRadius","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The corner radius that the sheet will try to render with.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\n\nIf set to non-negative value it will try to render sheet with provided radius, else it will apply system default.\n\nIf left unset system default is used."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"sheetElevation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Integer value describing elevation of the sheet, impacting shadow on the top edge of the sheet.\n\nNot dynamic - changing it after the component is rendered won't have an effect.\n\nDefaults to "},{"kind":"code","text":"`24`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"Android"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"sheetExpandsWhenScrolledToEdge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the sheet should expand to larger detent when scrolling.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\nDefaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"sheetGrabberVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Boolean indicating whether the sheet shows a grabber at the top.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"sheetInitialDetentIndex","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Index of the detent the sheet should expand to after being opened.\nWorks only when "},{"kind":"code","text":"`stackPresentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\n\nIf the specified index is out of bounds of "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array, in dev environment an error will be thrown,\nin production the value will be reset to default value.\n\nAdditionally there is "},{"kind":"code","text":"`last`"},{"kind":"text","text":" value available, when set the sheet will expand initially to last (largest) detent.\n\nDefaults to "},{"kind":"code","text":"`0`"},{"kind":"text","text":" - which represents first detent in the detents array."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"number"},{"type":"literal","value":"last"}]}},{"name":"sheetLargestUndimmedDetentIndex","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The largest sheet detent for which a view underneath won't be dimmed.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\n\nThis prop can be set to a number, which indicates index of detent in "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array for which\nthere won't be a dimming view beneath the sheet.\n\nAdditionally there are following options available:\n\n* "},{"kind":"code","text":"`none`"},{"kind":"text","text":" - there will be dimming view for all detents levels,\n* "},{"kind":"code","text":"`last`"},{"kind":"text","text":" - there won't be a dimming view for any detent level."}],"blockTags":[{"tag":"@remark","content":[{"kind":"text","text":"On iOS, the native implementation might resize the sheet w/o explicitly changing the detent level, e.g. in case of keyboard appearance.\nIn case after such resize the sheet exceeds height for which in regular scenario a dimming view would be applied - it will be applied,\neven if the detent has not effectively been changed.\n\nDefaults to "},{"kind":"code","text":"`none`"},{"kind":"text","text":", indicating that the dimming view should be always present."}]}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"number"},{"type":"literal","value":"none"},{"type":"literal","value":"last"}]}},{"name":"sheetResizeAnimationEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the default native animation should be used when the sheet's with\n"},{"kind":"code","text":"`fitToContents`"},{"kind":"text","text":" content size changes.\n\nWhen set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the sheet uses internal logic to synchronize size updates and\ntranslation animations during entry, exit, or content updates. This ensures a smooth\ntransition for standard, static content mounting/unmounting.\n\nWhen set to "},{"kind":"code","text":"`false`"},{"kind":"text","text":", the internal animation and translation logic is ignored. This\nallows the sheet to adjust its size dynamically based on the current dimensions of\nthe content provided by the developer, allowing implementing custom resizing animations.\n\nDefaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"sheetShouldOverflowTopInset","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the sheet content should be rendered behind the Status Bar or display cutouts.\n\nWhen set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the sheet will extend to the physical edges of the stack,\nallowing content to be visible behind the status bar or display cutouts.\nDetent ratios in sheetAllowedDetents will be measured relative to the full stack height.\n\nWhen set to "},{"kind":"code","text":"`false`"},{"kind":"text","text":", the sheet's layout will be constrained by the inset from the top\nand the detent ratios will then be measured relative to the adjusted height (excluding the top inset).\nThis means that sheetAllowedDetents will result in different sheet heights depending on this prop.\n\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"statusBarAnimation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the status bar animation (similar to the "},{"kind":"code","text":"`StatusBar`"},{"kind":"text","text":" component).\nOn Android, setting either "},{"kind":"code","text":"`fade`"},{"kind":"text","text":" or "},{"kind":"code","text":"`slide`"},{"kind":"text","text":" will set the transition of status bar color. On iOS, this option applies to appereance animation of the status bar.\nRequires setting "},{"kind":"code","text":"`View controller-based status bar appearance -> YES`"},{"kind":"text","text":" (or removing the config) in your "},{"kind":"code","text":"`Info.plist`"},{"kind":"text","text":" file.\n\nDefaults to "},{"kind":"code","text":"`fade`"},{"kind":"text","text":" on iOS and "},{"kind":"code","text":"`none`"},{"kind":"text","text":" on Android.\n\nOnly supported on Android and iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android, ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"statusBarAnimation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"statusBarBackgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the status bar color (similar to the "},{"kind":"code","text":"`StatusBar`"},{"kind":"text","text":" component). Defaults to initial status bar color."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"For all apps targeting Android SDK 35 or above edge-to-edge is enabled by default.\n This prop is subject to removal in the future.\n See: https://developer.android.com/about/versions/15/behavior-changes-15#ux."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"statusBarHidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the status bar should be hidden on this screen.\nRequires setting "},{"kind":"code","text":"`View controller-based status bar appearance -> YES`"},{"kind":"text","text":" in your Info.plist file.\n\nOnly supported on Android and iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android, ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"statusBarStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the status bar color (similar to the "},{"kind":"code","text":"`StatusBar`"},{"kind":"text","text":" component).\nRequires setting "},{"kind":"code","text":"`View controller-based status bar appearance -> YES`"},{"kind":"text","text":" (or removing the config) in your "},{"kind":"code","text":"`Info.plist`"},{"kind":"text","text":" file.\n"},{"kind":"code","text":"`auto`"},{"kind":"text","text":" and "},{"kind":"code","text":"`inverted`"},{"kind":"text","text":" are supported only on iOS. On Android, they will fallback to "},{"kind":"code","text":"`light`"},{"kind":"text","text":".\n\nDefaults to "},{"kind":"code","text":"`auto`"},{"kind":"text","text":" on iOS and "},{"kind":"code","text":"`light`"},{"kind":"text","text":" on Android.\n\nOnly supported on Android and iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android, ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"statusBarStyle"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"statusBarTranslucent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the translucency of the status bar. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"For all apps targeting Android SDK 35 or above edge-to-edge is enabled by default.\n This prop is subject to removal in the future.\n See: https://developer.android.com/about/versions/15/behavior-changes-15#ux."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"String that can be displayed in the header as a fallback for "},{"kind":"code","text":"`headerTitle`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"unstable_headerLeftItems","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns an array of items to display as on the left side of the header.\nOverrides "},{"kind":"code","text":"`headerLeft`"},{"kind":"text","text":".\n\nThis is an unstable API and might change in the future."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"}}],"type":{"type":"array","elementType":{"type":"reference","name":"NativeStackHeaderItem","package":"expo-router"}}}]}}},{"name":"unstable_headerRightItems","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns an array of items to display as on the right side of the header.\nOverrides "},{"kind":"code","text":"`headerRight`"},{"kind":"text","text":".\n\nThis is an unstable API and might change in the future."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"}}],"type":{"type":"array","elementType":{"type":"reference","name":"NativeStackHeaderItem","package":"expo-router"}}}]}}},{"name":"unstable_nativeProps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Props passed to the underlying native stack implementation in "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":".\nUse this to configure props that are not directly exposed by Expo Router.\n\n> **Note**: This will override any other props set by Expo Router and may lead to unexpected behavior.\n\n> **Note**: This is an unstable API and may change or be removed in minor versions."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","name":"NativeStackNativeProps","package":"expo-router"}},{"name":"unstable_sheetFooter","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Footer component that can be used alongside formSheet stack presentation style.\n\nThis option is provided, because due to implementation details it might be problematic\nto implement such layout with JS-only code.\n\nNote that this prop is marked as unstable and might be subject of breaking changes,\nincluding removal, in particular when we find solution that will make implementing it with JS\nstraightforward."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}}]},{"name":"NativeStackNavigationProp","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true},{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reference","name":"NativeStackNavigationEventMap","package":"expo-router"}],"name":"NavigationProp","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackActionHelpers"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackActionHelpers","package":"expo-router"}]}},{"name":"NativeStackNavigatorProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DefaultNavigatorOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reference","name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"NativeStackNavigationProp","package":"expo-router"}],"name":"DefaultNavigatorOptions","package":"expo-router"},{"type":"reference","name":"StackRouterOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationConfig"},"name":"NativeStackNavigationConfig","package":"expo-router"}]}},{"name":"NativeStackOptionsArgs","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intersection","types":[{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true}],"name":"NativeStackScreenProps","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"theme","variant":"declaration","kind":1024,"type":{"type":"reference","name":"Theme","package":"expo-router"}}]}}]}},{"name":"NativeStackScreenNativeProps","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"screenId"},{"type":"literal","value":"activityState"}]}],"name":"Omit","package":"typescript"}],"name":"Partial","package":"typescript"}},{"name":"NativeStackScreenProps","variant":"declaration","kind":2097152,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true}],"name":"NativeStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}],"name":"RouteProp","package":"expo-router"}}],"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}]},{"name":"NavigatorContentProps","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Props for a standard navigator's "},{"kind":"code","text":"`NavigatorContent`"},{"kind":"text","text":" component. Annotate your content component\nwith this type to declare the events it emits, so "},{"kind":"code","text":"`unstable_createStandardRouterNavigator`"},{"kind":"text","text":" can\ntype "},{"kind":"code","text":"`emitter.emit`"},{"kind":"text","text":" for you."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n// No events:\ntype TabsContentProps = NavigatorContentProps<{ title?: string }>;\n\n// Typed events:\ntype TabsContentProps = NavigatorContentProps<\n { title?: string },\n { tabPress: { data: undefined; canPreventDefault: true } },\n { tintColor?: string },\n { activeRouteKey: string }\n>;\n```"}]}]},"typeParameters":[{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"EventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"StandardNavigatorEventMapBase","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}},{"name":"NavigatorProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}},{"name":"CreateProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"StandardNavigatorContentProps"},"typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"intersection","types":[{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}]}],"name":"StandardNavigatorContentProps","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"NavigatorContentInferenceCarrier"},"typeArguments":[{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"NavigatorContentInferenceCarrier","package":"expo-router"}]}},{"name":"PageBlurredEvent","variant":"declaration","kind":256,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.params"}},{"name":"pathname","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.pathname"}},{"name":"screenId","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.screenId"}},{"name":"segments","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}},"inheritedFrom":{"type":"reference","name":"BasePageEvent.segments"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"pageBlurred"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/types.ts","qualifiedName":"BasePageEvent"},"name":"BasePageEvent","package":"expo-router"}]},{"name":"PageFocusedEvent","variant":"declaration","kind":256,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.params"}},{"name":"pathname","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.pathname"}},{"name":"screenId","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.screenId"}},{"name":"segments","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}},"inheritedFrom":{"type":"reference","name":"BasePageEvent.segments"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"pageFocused"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/types.ts","qualifiedName":"BasePageEvent"},"name":"BasePageEvent","package":"expo-router"}]},{"name":"PagePreloadedEvent","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"The page rendered as part of a preload (e.g. "},{"kind":"code","text":"`router.prefetch()`"},{"kind":"text","text":") and is not\ncurrently focused. If the user later navigates to this route, the matching\n"},{"kind":"code","text":"`pageFocused`"},{"kind":"text","text":" will fire then; the preload may also be invalidated or the\nroute unmounted ("},{"kind":"code","text":"`pageRemoved`"},{"kind":"text","text":") without a focus."}]},"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.params"}},{"name":"pathname","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.pathname"}},{"name":"screenId","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.screenId"}},{"name":"segments","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}},"inheritedFrom":{"type":"reference","name":"BasePageEvent.segments"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"pagePreloaded"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/types.ts","qualifiedName":"BasePageEvent"},"name":"BasePageEvent","package":"expo-router"}]},{"name":"PageRemoved","variant":"declaration","kind":256,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.params"}},{"name":"pathname","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.pathname"}},{"name":"screenId","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.screenId"}},{"name":"segments","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}},"inheritedFrom":{"type":"reference","name":"BasePageEvent.segments"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"pageRemoved"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/types.ts","qualifiedName":"BasePageEvent"},"name":"BasePageEvent","package":"expo-router"}]},{"name":"PickPartial","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"The list of input keys will become optional, everything else will remain the same."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072},{"name":"K","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"K","package":"expo-router","refersToTypeParameter":true}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"K","package":"expo-router","refersToTypeParameter":true}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"}]}},{"name":"RedirectConfig","variant":"declaration","kind":2097152,"children":[{"name":"destination","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"destinationContextKey","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"external","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"methods","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"permanent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"source","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]},{"name":"RelativePathString","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"templateLiteral","head":"./","tail":[[{"type":"intrinsic","name":"string"},""]]},{"type":"templateLiteral","head":"../","tail":[[{"type":"intrinsic","name":"string"},""]]},{"type":"literal","value":".."}]}},{"name":"ResultState","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"PartialState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}],"name":"PartialState","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"state","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"ResultState","package":"expo-router"}}]}}]}},{"name":"RoutePath","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Exclude"},"typeArguments":[{"type":"indexedAccess","indexType":{"type":"literal","value":"pathname"},"objectType":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Extract"},"typeArguments":[{"type":"reference","name":"Href","package":"expo-router"},{"type":"intrinsic","name":"object"}],"name":"Extract","package":"typescript"}},{"type":"union","types":[{"type":"reference","name":"RelativePathString","package":"expo-router"},{"type":"reference","name":"ExternalPathString","package":"expo-router"}]}],"name":"Exclude","package":"typescript"}},{"name":"RouteSource","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Whether a screen was declared in the layout ("},{"kind":"code","text":"``"},{"kind":"text","text":"/"},{"kind":"code","text":"``"},{"kind":"text","text":")\nor inferred from the filesystem."}]},"type":{"type":"union","types":[{"type":"literal","value":"layout"},{"type":"literal","value":"filesystem"}]}},{"name":"ScreenProps","variant":"declaration","kind":2097152,"children":[{"name":"dangerouslySingular","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"SingularOptions","package":"expo-router"}},{"name":"getId","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"{ params }","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}}]}}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]}}},{"name":"initialParams","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}},{"name":"listeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"name","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Name is required when used inside a Layout component."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"options","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"reference","name":"TOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","name":"TOptions","package":"expo-router","refersToTypeParameter":true}}]}}]}},{"name":"redirect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Redirect to the nearest sibling route.\nIf all children are "},{"kind":"code","text":"`redirect={true}`"},{"kind":"text","text":", the layout will render "},{"kind":"code","text":"`null`"},{"kind":"text","text":" as there are no children to render."}]},"type":{"type":"intrinsic","name":"boolean"}}],"typeParameters":[{"name":"TOptions","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"},"default":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}},{"name":"TState","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}},{"name":"TEventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapBase"},"name":"EventMapBase","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapBase"},"name":"EventMapBase","package":"expo-router"}}]},{"name":"ScrollViewStyleReset","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Root style-reset for full-screen React Native web apps with a root "},{"kind":"code","text":"``"},{"kind":"text","text":" should use the following styles to ensure native parity. See [React Native for Web's root element setup](https://necolas.github.io/react-native-web/docs/setup/#root-element)."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"name":"React.FC","package":"@types/react"},"defaultValue":"..."},{"name":"SearchOrHash","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"templateLiteral","head":"?","tail":[[{"type":"intrinsic","name":"string"},""]]},{"type":"templateLiteral","head":"#","tail":[[{"type":"intrinsic","name":"string"},""]]}]}},{"name":"SingularOptions","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"intrinsic","name":"boolean"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"name","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"string"}},{"name":"params","variant":"param","kind":32768,"type":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]}}]}},{"name":"Sitemap","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"name":"React.FC","package":"@types/react"},"defaultValue":"..."},{"name":"SitemapType","variant":"declaration","kind":2097152,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"array","elementType":{"type":"reference","name":"SitemapType","package":"expo-router"}}},{"name":"contextKey","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"filename","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"href","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","name":"Href","package":"expo-router"}]}},{"name":"isGenerated","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"isInitial","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"isInternal","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"Slot","variant":"declaration","kind":64,"signatures":[{"name":"Slot","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Renders the currently selected content.\n\nThere are actually two different implementations of "},{"kind":"code","text":"``"},{"kind":"text","text":":\n - Used inside a "},{"kind":"code","text":"`_layout`"},{"kind":"text","text":" as the "},{"kind":"code","text":"`Navigator`"},{"kind":"text","text":"\n - Used inside a "},{"kind":"code","text":"`Navigator`"},{"kind":"text","text":" as the content\n\nSince a custom "},{"kind":"code","text":"`Navigator`"},{"kind":"text","text":" will set the "},{"kind":"code","text":"`NavigatorContext.contextKey`"},{"kind":"text","text":" to\nthe current "},{"kind":"code","text":"`_layout`"},{"kind":"text","text":", you can use this to determine if you are inside\na custom navigator or not."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Navigator.tsx","qualifiedName":"NavigatorProps"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"NavigatorProps","package":"expo-router"},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"StackNavigationState","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"NavigationState","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"preloadedRoutes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of routes, which are supposed to be preloaded before navigating to."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the router, in this case, it's stack."}]},"type":{"type":"literal","value":"stack"}}]}}]}},{"name":"StackRouter","variant":"declaration","kind":64,"signatures":[{"name":"StackRouter","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"StackRouter is considered an internal implementation and its behavior may change without a notice between expo-router's version"}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"StackRouterOptions","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Router"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"},{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/CommonActions.tsx","qualifiedName":"Action"},"name":"Action","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackActionType"},"name":"StackActionType","package":"expo-router"}]}],"name":"Router","package":"expo-router"}}]},{"name":"StackRouterOptions","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"name":"DefaultRouterOptions","package":"expo-router"}},{"name":"StandardNavigatorDescriptor","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"A standard-navigation descriptor extended with Expo Router route information."}]},"children":[{"name":"routeSource","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Indicates whether Expo Router received the route from a layout declaration or inferred it\nfrom the filesystem."}]},"type":{"type":"reference","name":"RouteSource","package":"expo-router"}}],"typeParameters":[{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"standard-navigation","packagePath":"lib/src/index.d.ts","qualifiedName":"NavigatorDescriptor"},"typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","qualifiedName":"StandardNavigatorDescriptor.NavigatorOptions","refersToTypeParameter":true}],"name":"NavigatorDescriptor","package":"standard-navigation"}]},{"name":"StandardNavigatorEventMapBase","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"canPreventDefault","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"data","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}}]}}],"name":"Record","package":"typescript"}},{"name":"StandardUseNavigationBuilderOptions","variant":"declaration","kind":2097152,"typeParameters":[{"name":"State","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}},{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"EventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"StandardNavigatorEventMapBase","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DefaultNavigatorOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"intrinsic","name":"any"}],"name":"DefaultNavigatorOptions","package":"expo-router"}},{"name":"SuspenseFallback","variant":"declaration","kind":64,"signatures":[{"name":"SuspenseFallback","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"SuspenseFallbackProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null}]}}]},{"name":"SuspenseFallbackProps","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Props passed to a route's "},{"kind":"code","text":"`SuspenseFallback`"},{"kind":"text","text":" export."}]},"children":[{"name":"params","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The route's URL parameters."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```\n{ id: \"123\" } // For a route `./profile/[id].tsx` navigated to as `/profile/123`\n```"}]}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"}},{"name":"route","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The route module's "},{"kind":"code","text":"`contextKey`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"`./index.tsx`"},{"kind":"text","text":"\n"},{"kind":"code","text":"`./profile/[id].tsx`"}]}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"TabNavigationState","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"NavigationState","package":"expo-router"},{"type":"literal","value":"history"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of previously visited route keys."}]},"type":{"type":"array","elementType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"key","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"object"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"route"}}]}}}},{"name":"preloadedRouteKeys","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of routes' key, which are supposed to be preloaded before navigating to."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the router, in this case, it's tab."}]},"type":{"type":"literal","value":"tab"}}]}}]}},{"name":"TabRouter","variant":"declaration","kind":64,"signatures":[{"name":"TabRouter","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"TabRouter is considered an internal implementation and its behavior may change without a notice between expo-router's version"}]},"parameters":[{"name":"args","variant":"param","kind":32768,"type":{"type":"reference","name":"TabRouterOptions","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Router"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/CommonActions.tsx","qualifiedName":"Action"},"name":"Action","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionType"},"name":"TabActionType","package":"expo-router"}]}],"name":"Router","package":"expo-router"}}]},{"name":"TabRouterOptions","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"name":"DefaultRouterOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Control how going back should behave\n- "},{"kind":"code","text":"`firstRoute`"},{"kind":"text","text":" - return to the first defined route\n- "},{"kind":"code","text":"`initialRoute`"},{"kind":"text","text":" - return to the route from "},{"kind":"code","text":"`initialRouteName`"},{"kind":"text","text":"\n- "},{"kind":"code","text":"`order`"},{"kind":"text","text":" - return to the route defined before the focused route\n- "},{"kind":"code","text":"`history`"},{"kind":"text","text":" - return to last visited route; if the same route is visited multiple times, the older entries are dropped from the history\n- "},{"kind":"code","text":"`fullHistory`"},{"kind":"text","text":" - return to last visited route; doesn't drop duplicate entries unlike "},{"kind":"code","text":"`history`"},{"kind":"text","text":" - matches behavior of web pages\n- "},{"kind":"code","text":"`none`"},{"kind":"text","text":" - do not handle going back"}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"BackBehavior"},"name":"BackBehavior","package":"expo-router"}}]}}]}},{"name":"Tabs","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Renders a tabs navigator."}],"blockTags":[{"tag":"@hideType","content":[]}]},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigatorProps"},"name":"BottomTabNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"UNSTABLE_router"},{"type":"literal","value":"UNSTABLE_routeNamesChangeBehavior"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: TabNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; ... 4 more ...; UNSTABLE_routeNamesChangeBehavior?: \"firstMatch\" | ... 1 more ... | undefined; } ..."}]},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigatorProps"},"name":"BottomTabNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"UNSTABLE_router"},{"type":"literal","value":"UNSTABLE_routeNamesChangeBehavior"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: TabNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; ... 4 more ...; UNSTABLE_routeNamesChangeBehavior?: \"firstMatch\" | ... 1 more ... | undefined; } ..."}]},{"type":"literal","value":"children"}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/TabsClient.tsx","qualifiedName":"TabsProps"},"name":"TabsProps","package":"expo-router"},{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigationEventMap"},"name":"BottomTabNavigationEventMap","package":"expo-router"}],"name":"ScreenProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"ExpoTabs.Screen"}]}}]},"defaultValue":"..."},{"name":"Theme","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native/types.tsx","qualifiedName":"NativeTheme"},"name":"NativeTheme","package":"expo-router"}},{"name":"ThemeProvider","variant":"declaration","kind":64,"signatures":[{"name":"ThemeProvider","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/theming/ThemeProvider.tsx","qualifiedName":"Props"},"name":"Props","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"unstable_createStandardRouterNavigator","variant":"declaration","kind":64,"signatures":[{"name":"unstable_createStandardRouterNavigator","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"> **warning** This API is unstable and may change between minor releases.\n\nCreates a ["},{"kind":"code","text":"`standard-navigation`"},{"kind":"text","text":"](https://www.npmjs.com/package/standard-navigation) navigator and\nwires it into Expo Router in one step. Use "},{"kind":"code","text":"`unstable_integrateWithRouter`"},{"kind":"text","text":" instead if you already\nhave a navigator from "},{"kind":"code","text":"`createStandardNavigator`"},{"kind":"text","text":".\nProps declared in both "},{"kind":"code","text":"`NavigatorProps`"},{"kind":"text","text":" and "},{"kind":"code","text":"`CreateProps`"},{"kind":"text","text":" are intersected, so incompatible types\nproduce "},{"kind":"code","text":"`never`"},{"kind":"text","text":" rather than a type error at this call."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { unstable_createStandardRouterNavigator, TabRouter } from 'expo-router';\n\nexport const Tabs = unstable_createStandardRouterNavigator(MyTabsContent, TabRouter);\n```"}]}]},"typeParameters":[{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"State","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}},{"name":"EventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"StandardNavigatorEventMapBase","package":"expo-router"}},{"name":"NavigatorProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"RouterOptions","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"name":"DefaultRouterOptions","package":"expo-router"}},{"name":"CreateProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}}],"parameters":[{"name":"NavigatorContent","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Renders the navigator UI; receives the standard-navigation "},{"kind":"code","text":"`state`"},{"kind":"text","text":",\n"},{"kind":"code","text":"`descriptors`"},{"kind":"text","text":", "},{"kind":"code","text":"`actions`"},{"kind":"text","text":", and "},{"kind":"code","text":"`emitter`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"NavigatorContentProps","package":"expo-router"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}},{"name":"router","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"The router factory to use. For example, "},{"kind":"code","text":"`StackRouter`"},{"kind":"text","text":" or "},{"kind":"code","text":"`TabRouter`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"RouterFactory"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"payload","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Additional data for the action"}]},"type":{"type":"intrinsic","name":"object"}},{"name":"source","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the route which dispatched this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the navigator which should handle this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the action (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")"}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reference","name":"RouterOptions","package":"expo-router","refersToTypeParameter":true}],"name":"RouterFactory","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isRest":true},"comment":{"summary":[{"kind":"text","text":"See "},{"kind":"code","text":"`IntegrateWithRouterOptions`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/index.tsx","qualifiedName":"IntegrateWithRouterOptionsTuple"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"NoInfer"},"typeArguments":[{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"NoInfer","package":"typescript"}],"name":"IntegrateWithRouterOptionsTuple","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ForwardRefExoticComponent"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithoutRef"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"StandardRouterNavigatorProps"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouterOptions","package":"expo-router","refersToTypeParameter":true}],"name":"StandardRouterNavigatorProps","package":"expo-router"},{"type":"literal","value":"children"}],"name":"PickPartial","package":"expo-router"}],"name":"PropsWithoutRef","package":"@types/react","qualifiedName":"React.PropsWithoutRef"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}],"name":"ForwardRefExoticComponent","package":"@types/react","qualifiedName":"React.ForwardRefExoticComponent"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}}}]}}]}}]},{"name":"unstable_integrateWithRouter","variant":"declaration","kind":64,"signatures":[{"name":"unstable_integrateWithRouter","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"> **warning** This API is unstable and may change between minor releases.\n\nWires an existing ["},{"kind":"code","text":"`standard-navigation`"},{"kind":"text","text":"](https://www.npmjs.com/package/standard-navigation)\nnavigator into Expo Router, returning a navigator component (with a "},{"kind":"code","text":"`.Screen`"},{"kind":"text","text":" child) usable as a\nlayout. Use "},{"kind":"code","text":"`unstable_createStandardRouterNavigator`"},{"kind":"text","text":" to create and integrate in one step."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { createStandardNavigator } from 'standard-navigation';\nimport { unstable_integrateWithRouter, TabRouter } from 'expo-router';\n\nconst navigator = createStandardNavigator(MyTabsContent);\nexport const Tabs = unstable_integrateWithRouter(navigator, TabRouter);\n```"}]}]},"typeParameters":[{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"State","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}},{"name":"EventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"StandardNavigatorEventMapBase","package":"expo-router"}},{"name":"NavigatorProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"RouterOptions","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"name":"DefaultRouterOptions","package":"expo-router"}},{"name":"CreateProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}}],"parameters":[{"name":"navigator","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"The object returned by "},{"kind":"code","text":"`createStandardNavigator(...)`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"StandardNavigator"},"typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"intersection","types":[{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}]}],"name":"StandardNavigator","package":"expo-router"}},{"name":"router","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"The router factory to use. For example, "},{"kind":"code","text":"`StackRouter`"},{"kind":"text","text":" or "},{"kind":"code","text":"`TabRouter`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"RouterFactory"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"payload","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Additional data for the action"}]},"type":{"type":"intrinsic","name":"object"}},{"name":"source","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the route which dispatched this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the navigator which should handle this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the action (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")"}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reference","name":"RouterOptions","package":"expo-router","refersToTypeParameter":true}],"name":"RouterFactory","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isRest":true},"comment":{"summary":[{"kind":"text","text":"See "},{"kind":"code","text":"`IntegrateWithRouterOptions`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/index.tsx","qualifiedName":"IntegrateWithRouterOptionsTuple"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"NoInfer"},"typeArguments":[{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"NoInfer","package":"typescript"}],"name":"IntegrateWithRouterOptionsTuple","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ForwardRefExoticComponent"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithoutRef"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"StandardRouterNavigatorProps"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouterOptions","package":"expo-router","refersToTypeParameter":true}],"name":"StandardRouterNavigatorProps","package":"expo-router"},{"type":"literal","value":"children"}],"name":"PickPartial","package":"expo-router"}],"name":"PropsWithoutRef","package":"@types/react","qualifiedName":"React.PropsWithoutRef"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}],"name":"ForwardRefExoticComponent","package":"@types/react","qualifiedName":"React.ForwardRefExoticComponent"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}}}]}}]}}]},{"name":"unstable_navigationEvents","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"addListener","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"typeParameters":[{"name":"EventType","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"literal","value":"pagePreloaded"},{"type":"literal","value":"pageFocused"},{"type":"literal","value":"pageBlurred"},{"type":"literal","value":"pageRemoved"},{"type":"literal","value":"actionDispatched"}]}}],"parameters":[{"name":"eventType","variant":"param","kind":32768,"type":{"type":"reference","name":"EventType","package":"expo-router","refersToTypeParameter":true}},{"name":"callback","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"event","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/index.ts","qualifiedName":"Payload"},"typeArguments":[{"type":"reference","name":"EventType","package":"expo-router","refersToTypeParameter":true}],"name":"Payload","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}}],"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}}]}}},{"name":"emit","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"typeParameters":[{"name":"EventType","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"literal","value":"pagePreloaded"},{"type":"literal","value":"pageFocused"},{"type":"literal","value":"pageBlurred"},{"type":"literal","value":"pageRemoved"},{"type":"literal","value":"actionDispatched"}]}}],"parameters":[{"name":"type","variant":"param","kind":32768,"type":{"type":"reference","name":"EventType","package":"expo-router","refersToTypeParameter":true}},{"name":"event","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/index.ts","qualifiedName":"Payload"},"typeArguments":[{"type":"reference","name":"EventType","package":"expo-router","refersToTypeParameter":true}],"name":"Payload","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"enable","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}},"defaultValue":"..."},{"name":"isEnabled","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"boolean"}}]}},"defaultValue":"..."}]}},"defaultValue":"..."},{"name":"useCurrentRouteInfo","variant":"declaration","kind":64,"signatures":[{"name":"useCurrentRouteInfo","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns route info for a screen it is called from."}],"modifierTags":["@experimental"]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/getRouteInfoFromState.ts","qualifiedName":"UrlObject"},"name":"UrlObject","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}]},{"name":"useFocusEffect","variant":"declaration","kind":64,"signatures":[{"name":"useFocusEffect","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to run an effect whenever a route is **focused**. Similar to\n["},{"kind":"code","text":"`React.useEffect`"},{"kind":"text","text":"](https://react.dev/reference/react/useEffect), but the effect re-runs\neach time the screen comes into focus, and the optional cleanup function runs when the\nscreen loses focus — not on unmount. This makes it the right primitive for refetching\ndata, restarting subscriptions, or resetting transient screen state every time a user\nreturns to the route.\n\nThe passed callback should be wrapped in ["},{"kind":"code","text":"`React.useCallback`"},{"kind":"text","text":"](https://react.dev/reference/react/useCallback)\nto avoid running the effect too often."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useFocusEffect } from 'expo-router';\nimport { useCallback } from 'react';\n\nexport default function Route() {\n useFocusEffect(\n // Callback should be wrapped in `React.useCallback` to avoid running the effect too often.\n useCallback(() => {\n // Invoked whenever the route is focused.\n console.log(\"Hello, I'm focused!\");\n\n // Return function is invoked whenever the route gets out of focus.\n return () => {\n console.log('This route is now unfocused.');\n };\n }, []),\n );\n\n return >;\n}\n```"}]}]},"parameters":[{"name":"effect","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Memoized callback containing the effect, should optionally return a cleanup function."}]},"type":{"type":"reference","name":"EffectCallback","package":"expo-router"}},{"name":"do_not_pass_a_second_prop","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"useGlobalSearchParams","variant":"declaration","kind":64,"signatures":[{"name":"useGlobalSearchParams","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns URL parameters for globally selected route, including dynamic path segments.\nThis function updates even when the route is not focused. Useful for analytics or\nother background operations that don't draw to the screen.\n\nRoute URL example: "},{"kind":"code","text":"`acme://profile/baconbrix?extra=info`"},{"kind":"text","text":".\n\nWhen querying search params in a stack, opt-towards using\n["},{"kind":"code","text":"`useLocalSearchParams`"},{"kind":"text","text":"](#uselocalsearchparams) because it will only update when the route is focused.\n\n> **Note:** For usage information, see\n[Local versus global search parameters](/router/reference/url-parameters/#local-versus-global-url-parameters)."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { useGlobalSearchParams } from 'expo-router';\n\nexport default function Route() {\n // user=baconbrix & extra=info\n const { user, extra } = useGlobalSearchParams();\n\n return User: {user};\n}\n```"}]}]},"typeParameters":[{"name":"TRoute","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}},{"name":"TParams","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"},"default":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","typeArguments":[{"type":"reference","name":"TRoute","package":"expo-router","refersToTypeParameter":true}],"name":"RouteOutputParams","package":"expo-router"},{"type":"reference","name":"TParams","package":"expo-router","refersToTypeParameter":true}]}}]},{"name":"useIsFocused","variant":"declaration","kind":64,"signatures":[{"name":"useIsFocused","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to get the current focus state of the screen. Returns a "},{"kind":"code","text":"`true`"},{"kind":"text","text":" if screen is focused, otherwise "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\nThis can be used if a component needs to render something based on the focus state."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"useLoaderData","variant":"declaration","kind":64,"signatures":[{"name":"useLoaderData","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the result of the "},{"kind":"code","text":"`loader`"},{"kind":"text","text":" function for the calling route."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { useLoaderData } from 'expo-router';\n\nexport function loader() {\n return Promise.resolve({ foo: 'bar' }};\n}\n\nexport default function Route() {\n const data = useLoaderData(); // { foo: 'bar' }\n\n return Data: {JSON.stringify(data)};\n}"}]}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-server","packagePath":"src/types.ts","qualifiedName":"LoaderFunction"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"LoaderFunction","package":"expo-server"},"default":{"type":"intrinsic","name":"any"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/hooks/useLoaderData.ts","qualifiedName":"LoaderFunctionResult"},"typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}],"name":"LoaderFunctionResult","package":"expo-router"}}]},{"name":"useLocalSearchParams","variant":"declaration","kind":64,"signatures":[{"name":"useLocalSearchParams","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the URL parameters for the contextually focused route. Useful for stacks where you may push a new screen\nthat changes the query parameters. For dynamic routes, both the route parameters and the search parameters are returned.\n\nRoute URL example: "},{"kind":"code","text":"`acme://profile/baconbrix?extra=info`"},{"kind":"text","text":".\n\nTo observe updates even when the invoking route is not focused, use ["},{"kind":"code","text":"`useGlobalSearchParams`"},{"kind":"text","text":"](#useglobalsearchparams).\n\n> **Note:** For usage information, see\n[Local versus global search parameters](/router/reference/url-parameters/#local-versus-global-url-parameters)."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { useLocalSearchParams } from 'expo-router';\n\nexport default function Route() {\n // user=baconbrix & extra=info\n const { user, extra } = useLocalSearchParams();\n\n return User: {user};\n}"}]}]},"typeParameters":[{"name":"TRoute","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}},{"name":"TParams","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"},"default":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","typeArguments":[{"type":"reference","name":"TRoute","package":"expo-router","refersToTypeParameter":true}],"name":"RouteOutputParams","package":"expo-router"},{"type":"reference","name":"TParams","package":"expo-router","refersToTypeParameter":true}]}}]},{"name":"useNavigation","variant":"declaration","kind":64,"signatures":[{"name":"useNavigation","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation object for the current route. Mirrors the React Navigation\n["},{"kind":"code","text":"`navigation`"},{"kind":"text","text":" object](https://reactnavigation.org/docs/navigation-object). Use it to\nimperatively access layout-specific functionality like "},{"kind":"code","text":"`navigation.openDrawer()`"},{"kind":"text","text":" in a\n[Drawer](/router/advanced/drawer/) layout."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/index.tsx\nimport { useNavigation } from 'expo-router';\n\nexport default function Route() {\n // Access the current navigation object for the current route.\n const navigation = useNavigation();\n\n return (\n \n {\n // Open the drawer view.\n navigation.openDrawer();\n }}>\n Open Drawer\n \n \n );\n}\n```"},{"kind":"text","text":"\n\nWhen using nested layouts, you can access higher-order layouts by passing a secondary argument denoting the layout route.\nFor example, "},{"kind":"code","text":"`/menu/_layout.tsx`"},{"kind":"text","text":" is nested inside "},{"kind":"code","text":"`/app/orders/`"},{"kind":"text","text":", you can use "},{"kind":"code","text":"`useNavigation('/orders/menu/')`"},{"kind":"text","text":"."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx app/orders/menu/index.tsx\nimport { useNavigation } from 'expo-router';\n\nexport default function MenuRoute() {\n const rootLayout = useNavigation('/');\n const ordersLayout = useNavigation('/orders');\n\n // Same as the default results of `useNavigation()` when invoked in this route.\n const parentLayout = useNavigation('/orders/menu');\n}\n```"},{"kind":"text","text":"\n\nIf you attempt to access a layout that doesn't exist, an error such as\n"},{"kind":"code","text":"`Could not find parent navigation with route \"/non-existent\"`"},{"kind":"text","text":" is thrown."}]},{"tag":"@returns","content":[{"kind":"text","text":"The navigation object for the current route."}]},{"tag":"@see","content":[{"kind":"text","text":"The full navigation API is available directly from "},{"kind":"code","text":"`expo-router`"},{"kind":"text","text":" — no\n"},{"kind":"code","text":"`@react-navigation/*`"},{"kind":"text","text":" install required. For the navigator-dependent functions reference,\nsee [navigation dependent functions](https://reactnavigation.org/docs/navigation-object/#navigator-dependent-functions)."}]}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"__global.ReactNavigation.RootParamList"},"name":"RootParamList","package":"expo-router","qualifiedName":"__global.ReactNavigation.RootParamList"}],"name":"NavigationProp","package":"expo-router"},{"type":"literal","value":"getState"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getState","variant":"declaration","kind":2048,"signatures":[{"name":"getState","variant":"signature","kind":4096,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"intrinsic","name":"undefined"}]}}]}]}}]}}],"parameters":[{"name":"parent","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Provide an absolute path such as "},{"kind":"code","text":"`/(root)`"},{"kind":"text","text":" to the parent route or a relative path like "},{"kind":"code","text":"`../../`"},{"kind":"text","text":" to the parent route."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","name":"HrefObject","package":"expo-router"}]}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"useNavigationContainerRef","variant":"declaration","kind":64,"signatures":[{"name":"useNavigationContainerRef","variant":"signature","kind":4096,"comment":{"summary":[],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"The root "},{"kind":"code","text":"``"},{"kind":"text","text":" ref for the app. The "},{"kind":"code","text":"`ref.current`"},{"kind":"text","text":" may be "},{"kind":"code","text":"`null`"},{"kind":"text","text":"\nif the "},{"kind":"code","text":"``"},{"kind":"text","text":" hasn't mounted yet."}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationContainerRefWithCurrent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"__global.ReactNavigation.RootParamList"},"name":"RootParamList","package":"expo-router","qualifiedName":"__global.ReactNavigation.RootParamList"}],"name":"NavigationContainerRefWithCurrent","package":"expo-router"}}]},{"name":"usePathname","variant":"declaration","kind":64,"signatures":[{"name":"usePathname","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the currently selected route location without search parameters. For example, "},{"kind":"code","text":"`/acme?foo=bar`"},{"kind":"text","text":" returns "},{"kind":"code","text":"`/acme`"},{"kind":"text","text":".\nSegments will be normalized. For example, "},{"kind":"code","text":"`/[id]?id=normal`"},{"kind":"text","text":" becomes "},{"kind":"code","text":"`/normal`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { usePathname } from 'expo-router';\n\nexport default function Route() {\n // pathname = \"/profile/baconbrix\"\n const pathname = usePathname();\n\n return Pathname: {pathname};\n}\n```"}]}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"useRootNavigation","variant":"declaration","kind":64,"signatures":[{"name":"useRootNavigation","variant":"signature","kind":4096,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use ["},{"kind":"code","text":"`useNavigationContainerRef`"},{"kind":"text","text":"](#usenavigationcontainerref) instead,\nwhich returns a React "},{"kind":"code","text":"`ref`"},{"kind":"text","text":"."}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationContainerRef"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"__global.ReactNavigation.RootParamList"},"name":"RootParamList","package":"expo-router","qualifiedName":"__global.ReactNavigation.RootParamList"}],"name":"NavigationContainerRef","package":"expo-router"},{"type":"literal","value":null}]}}]},{"name":"useRootNavigationState","variant":"declaration","kind":64,"signatures":[{"name":"useRootNavigationState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation state of the root navigator — the top-level navigator that\ncontains the current screen."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useRootNavigationState } from 'expo-router';\n\nexport default function Route() {\n const { routes } = useRootNavigationState();\n\n return {routes[0].name};\n}\n```"}]},{"tag":"@returns","content":[{"kind":"text","text":"The current "},{"kind":"code","text":"`NavigationState`"},{"kind":"text","text":" of the root navigator."}]},{"tag":"@see","content":[{"kind":"text","text":"React Navigation's [navigation state](https://reactnavigation.org/docs/navigation-state/)\nreference for the shape of the returned object."}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}}]},{"name":"useRoute","variant":"declaration","kind":64,"signatures":[{"name":"useRoute","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to access the route prop of the parent screen anywhere."}],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"Route prop of the parent screen."}]}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"useRoutePath","variant":"declaration","kind":64,"signatures":[{"name":"useRoutePath","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to get the path for the current route based on linking options."}],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"Path for the current route."}]}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]},{"name":"useRouter","variant":"declaration","kind":64,"signatures":[{"name":"useRouter","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the [Router](#imperativerouter) object for imperative navigation."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useRouter } from 'expo-router';\nimport { Text } from 'react-native';\n\nexport default function Route() {\n const router = useRouter();\n\n return (\n router.push('/home')}>Go Home\n );\n}\n```"}]}]},"type":{"type":"reference","name":"ImperativeRouter","package":"expo-router"}}]},{"name":"useScrollToTop","variant":"declaration","kind":64,"signatures":[{"name":"useScrollToTop","variant":"signature","kind":4096,"parameters":[{"name":"ref","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefObject"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native/useScrollToTop.tsx","qualifiedName":"ScrollableWrapper"},"name":"ScrollableWrapper","package":"expo-router"}],"name":"RefObject","package":"@types/react","qualifiedName":"React.RefObject"}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"useSegments","variant":"declaration","kind":64,"signatures":[{"name":"useSegments","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns a list of selected file segments for the currently selected route. Segments are not normalized,\nso they will be the same as the file path. For example, "},{"kind":"code","text":"`/[id]?id=normal`"},{"kind":"text","text":" becomes "},{"kind":"code","text":"`[\"[id]\"]`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { useSegments } from 'expo-router';\n\nexport default function Route() {\n // segments = [\"profile\", \"[user]\"]\n const segments = useSegments();\n\n return Hello;\n}\n```"},{"kind":"text","text":"\n\n\n"},{"kind":"code","text":"`useSegments`"},{"kind":"text","text":" can be typed using an abstract. Consider the following file structure:\n\n"},{"kind":"code","text":"```md\n- app\n - [user]\n - index.tsx\n - followers.tsx\n - settings.tsx\n```"},{"kind":"text","text":"\n\n\nThis can be strictly typed using the following abstract with "},{"kind":"code","text":"`useSegments`"},{"kind":"text","text":" hook:\n\n"},{"kind":"code","text":"```tsx\nconst [first, second] = useSegments<['settings'] | ['[user]'] | ['[user]', 'followers']>()\n```"}]}]},"typeParameters":[{"name":"TSegments","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"},"default":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","typeArguments":[{"type":"reference","name":"TSegments","package":"expo-router","refersToTypeParameter":true}],"name":"RouteSegments","package":"expo-router"}}]},{"name":"useServerDocumentContext","variant":"declaration","kind":64,"signatures":[{"name":"useServerDocumentContext","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the server document data for server-side rendering, including "},{"kind":"code","text":"``"},{"kind":"text","text":"/"},{"kind":"code","text":"``"},{"kind":"text","text":"\nattributes and additional nodes to add to "},{"kind":"code","text":"``"},{"kind":"text","text":"/"},{"kind":"code","text":"``"},{"kind":"text","text":" for metadata and assets."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useServerDocumentContext } from 'expo-router/html';\n\nexport default function Root({ children }) {\n const { htmlAttributes, bodyAttributes, headNodes, bodyNodes } = useServerDocumentContext();\n return (\n \n {headNodes}\n \n {children}\n {bodyNodes}\n \n \n );\n}\n```"}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/server/ServerDocument.tsx","qualifiedName":"ServerDocumentData"},"name":"ServerDocumentData","package":"expo-router"}}]},{"name":"useSitemap","variant":"declaration","kind":64,"signatures":[{"name":"useSitemap","variant":"signature","kind":4096,"type":{"type":"union","types":[{"type":"reference","name":"SitemapType","package":"expo-router"},{"type":"literal","value":null}]}}]},{"name":"useTheme","variant":"declaration","kind":64,"signatures":[{"name":"useTheme","variant":"signature","kind":4096,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"__global.ReactNavigation.Theme"},"name":"Theme","package":"expo-router","qualifiedName":"__global.ReactNavigation.Theme"}}]},{"name":"VectorIcon","variant":"declaration","kind":64,"signatures":[{"name":"VectorIcon","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Helper component for loading vector icons.\n\nPrefer using the "},{"kind":"code","text":"`md`"},{"kind":"text","text":" and "},{"kind":"code","text":"`sf`"},{"kind":"text","text":" props on "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" rather than using this component directly.\nOnly use this component when you need to load a specific icon from a vector icon family."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Icon, VectorIcon } from 'expo-router';\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\n\n} />\n```"}]}]},"typeParameters":[{"name":"NameT","variant":"typeParam","kind":131072,"flags":{"isConst":true},"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"NameT","package":"expo-router","refersToTypeParameter":true}],"name":"VectorIconProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"VectorIconProps","variant":"declaration","kind":256,"children":[{"name":"family","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The family of the vector icon."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\n```"}]},{"tag":"@hideType","content":[]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getImageSource","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"name","variant":"param","kind":32768,"type":{"type":"reference","name":"NameT","package":"expo-router","qualifiedName":"VectorIconProps.NameT","refersToTypeParameter":true}},{"name":"size","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}},{"name":"color","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}],"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"literal","value":null}]}],"name":"Promise","package":"typescript"}}]}}}]}}},{"name":"name","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The name of the vector icon."}]},"type":{"type":"reference","name":"NameT","package":"expo-router","qualifiedName":"VectorIconProps.NameT","refersToTypeParameter":true}}],"typeParameters":[{"name":"NameT","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}]},{"name":"withLayoutContext","variant":"declaration","kind":64,"signatures":[{"name":"withLayoutContext","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns a navigator that automatically injects matched routes and renders nothing when there are no children.\nReturn type with "},{"kind":"code","text":"`children`"},{"kind":"text","text":" prop optional.\n\nEnables use of other built-in React Navigation navigators and other navigators built with the React Navigation custom navigator API."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/_layout.tsx\nimport { ParamListBase, TabNavigationState } from \"@react-navigation/native\";\nimport {\n createMaterialTopTabNavigator,\n MaterialTopTabNavigationOptions,\n MaterialTopTabNavigationEventMap,\n} from \"@react-navigation/material-top-tabs\";\nimport { withLayoutContext } from \"expo-router\";\n\nconst MaterialTopTabs = createMaterialTopTabNavigator();\n\nconst ExpoRouterMaterialTopTabs = withLayoutContext<\n MaterialTopTabNavigationOptions,\n typeof MaterialTopTabs.Navigator,\n TabNavigationState,\n MaterialTopTabNavigationEventMap\n>(MaterialTopTabs.Navigator);\n\nexport default function TabLayout() {\n return ;\n}\n```"}]}]},"typeParameters":[{"name":"TOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}},{"name":"TState","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}},{"name":"TEventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapBase"},"name":"EventMapBase","package":"expo-router"}}],"parameters":[{"name":"Nav","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"The navigator component to wrap."}]},"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}},{"name":"processor","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A function that processes the screens before passing them to the navigator."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"array","elementType":{"type":"reference","name":"ScreenProps","package":"expo-router"}}}],"type":{"type":"array","elementType":{"type":"reference","name":"ScreenProps","package":"expo-router"}}}]}}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ForwardRefExoticComponent"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithoutRef"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentProps"},"typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}],"name":"ComponentProps","package":"@types/react","qualifiedName":"React.ComponentProps"},{"type":"literal","value":"children"}],"name":"PickPartial","package":"expo-router"}],"name":"PropsWithoutRef","package":"@types/react","qualifiedName":"React.PropsWithoutRef"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}],"name":"ForwardRefExoticComponent","package":"@types/react","qualifiedName":"React.ForwardRefExoticComponent"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"TOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}}}]}}]}}]}],"packageName":"expo-router"}
\ No newline at end of file
+{"schemaVersion":"2.0","name":"expo-router","variant":"project","kind":1,"children":[{"name":"ActionDispatchedEvent","variant":"declaration","kind":256,"children":[{"name":"actionType","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The action type from the dispatched NavigationAction (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"payload","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"ReactNavigationState"},"name":"ReactNavigationState","package":"expo-router"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"actionDispatched"}}]},{"name":"AnalyticsEvent","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reference","name":"PagePreloadedEvent","package":"expo-router"},{"type":"reference","name":"PageFocusedEvent","package":"expo-router"},{"type":"reference","name":"PageBlurredEvent","package":"expo-router"},{"type":"reference","name":"PageRemoved","package":"expo-router"},{"type":"reference","name":"ActionDispatchedEvent","package":"expo-router"}]}},{"name":"Badge","variant":"declaration","kind":64,"signatures":[{"name":"Badge","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"BadgeProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"BadgeProps","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/common/elements.tsx","qualifiedName":"NativeTabsTriggerBadgeProps"},"name":"NativeTabsTriggerBadgeProps","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/toolbar/toolbar-primitives.tsx","qualifiedName":"StackToolbarBadgeProps"},"name":"StackToolbarBadgeProps","package":"expo-router"}]}},{"name":"DarkTheme","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reference","name":"Theme","package":"expo-router"},"defaultValue":"..."},{"name":"DefaultTheme","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reference","name":"Theme","package":"expo-router"},"defaultValue":"..."},{"name":"EffectCallback","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Memoized callback containing the effect, should optionally return a cleanup function."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"union","types":[{"type":"intrinsic","name":"undefined"},{"type":"intrinsic","name":"void"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}]}}]}}},{"name":"ErrorBoundary","variant":"declaration","kind":64,"signatures":[{"name":"ErrorBoundary","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"ErrorBoundaryProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"ErrorBoundaryProps","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Props passed to a page's "},{"kind":"code","text":"`ErrorBoundary`"},{"kind":"text","text":" export."}]},"children":[{"name":"error","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The error that was thrown."}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Error"},"name":"Error","package":"typescript"}},{"name":"retry","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"A function that will re-render the route component by clearing the "},{"kind":"code","text":"`error`"},{"kind":"text","text":" state."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"intrinsic","name":"void"}],"name":"Promise","package":"typescript"}}]}}}]},{"name":"ExperimentalStack","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Renders the new "},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":" native stack.\n\nSibling to "},{"kind":"code","text":"`Stack`"},{"kind":"text","text":". Native-only — on web it falls back to the standard "},{"kind":"code","text":"`Stack`"},{"kind":"text","text":".\nOpt-in per navigator: replace "},{"kind":"code","text":"``"},{"kind":"text","text":" with "},{"kind":"code","text":"``"},{"kind":"text","text":" in the\nspecific layout you want to migrate."}],"modifierTags":["@experimental"]},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/experimental-stack/types.ts","qualifiedName":"ExperimentalStackNavigatorProps"},"name":"ExperimentalStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"UNSTABLE_router"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: StackNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; screenListeners?: Partial<...> | ... 1 more ... | undefined; screenOptions?: ExperimentalStackN..."}]},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/experimental-stack/types.ts","qualifiedName":"ExperimentalStackNavigatorProps"},"name":"ExperimentalStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"UNSTABLE_router"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: StackNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; screenListeners?: Partial<...> | ... 1 more ... | undefined; screenOptions?: ExperimentalStackN..."}]},{"type":"literal","value":"children"}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/StackScreen.tsx","qualifiedName":"StackScreenProps"},"name":"StackScreenProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"BackButton","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to configure the back button.\n\nCan be used inside Stack.Screen in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Back\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n >\n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/screen/StackScreenBackButton.tsx","qualifiedName":"StackScreenBackButtonProps"},"name":"StackScreenBackButtonProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackScreenBackButton"},{"name":"Title","variant":"declaration","kind":1024,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`Stack.Title`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to set the screen title.\n\nCan be used inside "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"text","text":"String title in a layout:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Home\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"String title inside a screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n My Page\n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"Custom component as the title using "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":":\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/StackTitle.tsx","qualifiedName":"StackTitleProps"},"name":"StackTitleProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackTitle"}]}}]},"defaultValue":"StackScreen"}]}}]},"defaultValue":"..."},{"name":"ExperimentalStackNavigationEventMap","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Navigator-level events emitted by "},{"kind":"code","text":"`ExperimentalStack`"},{"kind":"text","text":". Mirrors the subset of\n"},{"kind":"code","text":"`NativeStackNavigationEventMap`"},{"kind":"text","text":" that the gamma "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" lifecycle\ncallbacks can drive."}],"modifierTags":["@experimental"]},"children":[{"name":"gestureCancel","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}},{"name":"removePrevented","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"action","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}}]}}}]}}},{"name":"transitionEnd","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}},{"name":"transitionStart","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}}]},{"name":"ExperimentalStackNavigationOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options accepted by "},{"kind":"code","text":"`ExperimentalStack`"},{"kind":"text","text":" screens. Mirrors the narrow option\nsurface of the gamma "},{"kind":"code","text":"``"},{"kind":"text","text":" component from\n"},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":". Anything outside this shape is dropped\nwith a "},{"kind":"code","text":"`__DEV__`"},{"kind":"text","text":" warning at runtime."}],"modifierTags":["@experimental"]},"children":[{"name":"headerBackVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerShown","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerTransparent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}}]},{"name":"ExperimentalStackNavigationProp","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true},{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationOptions","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationEventMap","package":"expo-router"}],"name":"NavigationProp","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackActionHelpers"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackActionHelpers","package":"expo-router"}]}},{"name":"ExperimentalStackScreenProps","variant":"declaration","kind":2097152,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true}],"name":"ExperimentalStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}],"name":"RouteProp","package":"expo-router"}}],"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}]},{"name":"ExternalPathString","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"templateLiteral","head":"","tail":[[{"type":"intrinsic","name":"string"},":"],[{"type":"intrinsic","name":"string"},""]]},{"type":"templateLiteral","head":"//","tail":[[{"type":"intrinsic","name":"string"},""]]}]}},{"name":"Href","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"The main routing type for Expo Router. It includes all available routes with strongly\ntyped parameters. It can either be:\n- **string**: A full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":".\n- **object**: An object with a "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" and optional "},{"kind":"code","text":"`params`"},{"kind":"text","text":". The "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" can be\na full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":".\nThe params can be an object of key-value pairs.\n\nAn Href can either be a string or an object."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"ExpoRouter.__routes","package":"expo-router"},"default":{"type":"reference","name":"ExpoRouter.__routes","package":"expo-router"}}],"type":{"type":"conditional","checkType":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"href","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}}]}},"trueType":{"type":"indexedAccess","indexType":{"type":"literal","value":"href"},"objectType":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}},"falseType":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","name":"HrefObject","package":"expo-router"}]}}},{"name":"HrefObject","variant":"declaration","kind":2097152,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional parameters for the route."}]},"type":{"type":"reference","name":"UnknownInputParams","package":"expo-router"}},{"name":"pathname","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The path of the route."}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"Icon","variant":"declaration","kind":64,"signatures":[{"name":"Icon","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"IconProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"IconProps","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/common/elements.tsx","qualifiedName":"NativeTabsTriggerIconProps"},"name":"NativeTabsTriggerIconProps","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/toolbar/toolbar-primitives.tsx","qualifiedName":"StackToolbarIconProps"},"name":"StackToolbarIconProps","package":"expo-router"}]}},{"name":"ImperativeRouter","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Returns "},{"kind":"code","text":"`router`"},{"kind":"text","text":" object for imperative navigation API."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { router } from 'expo-router';\nimport { Text } from 'react-native';\n\nexport default function Route() {\n\n return (\n router.push('/home')}>Go Home\n );\n}\n```"}]}]},"children":[{"name":"back","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Goes back in the navigation history."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"canDismiss","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Checks if it is possible to dismiss the current screen. Returns "},{"kind":"code","text":"`true`"},{"kind":"text","text":" if the\nrouter is within the stack with more than one screen in stack's history."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"boolean"}}]}}},{"name":"canGoBack","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to a route in the navigator's history if it supports invoking the "},{"kind":"code","text":"`back`"},{"kind":"text","text":" function."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"boolean"}}]}}},{"name":"dismiss","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to a stack lower than the current screen using the provided count if possible, otherwise 1.\n\nIf the current screen is the only route, it will dismiss the entire stack."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"count","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"dismissAll","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Returns to the first screen of the closest stack — equivalent to a stack\n"},{"kind":"code","text":"`popToTop`"},{"kind":"text","text":" action."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"React Navigation's ["},{"kind":"code","text":"`popToTop`"},{"kind":"text","text":"](https://reactnavigation.org/docs/stack-actions/#poptotop)\nstack action for the underlying behavior."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"dismissTo","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Dismisses screens until the provided href is reached. If the href is not found, it will instead replace the current screen with the provided "},{"kind":"code","text":"`href`"},{"kind":"text","text":"."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"NavigationOptions"},"name":"NavigationOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"navigate","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to the provided ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#hreft)."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"NavigationOptions"},"name":"NavigationOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"prefetch","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Prefetch a screen in the background before navigating to it"}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"NavigationOptions"},"name":"NavigationOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"push","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to the provided ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#hreft) using a push operation if possible."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"NavigationOptions"},"name":"NavigationOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"replace","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigates to route without appending to the history. Can be used with\n["},{"kind":"code","text":"`useFocusEffect`"},{"kind":"text","text":"](#usefocuseffecteffect-do_not_pass_a_second_prop)\nto redirect imperatively to a new screen."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Using "},{"kind":"code","text":"`useRouter()`"},{"kind":"text","text":" hook](/router/reference/redirects/) to redirect."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"reference","name":"Href","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/types.ts","qualifiedName":"NavigationOptions"},"name":"NavigationOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"setParams","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Updates the current route's query params."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"RoutePath","package":"expo-router"}}],"parameters":[{"name":"params","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}],"name":"RouteInputParams","package":"expo-router"}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}}}]},{"name":"IntegrateWithRouterOptions","variant":"declaration","kind":2097152,"typeParameters":[{"name":"State","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}},{"name":"CreateProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}},{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}},{"name":"EventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapBase"},"name":"EventMapBase","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapBase"},"name":"EventMapBase","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"CreatePropsOption"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"CreatePropsOption","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"processDescriptors","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Creates additional descriptors before "},{"kind":"code","text":"`processState`"},{"kind":"text","text":" and navigator rendering."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"descriptors","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"PlaceholderDescriptorMap"},"name":"PlaceholderDescriptorMap","package":"expo-router"}},{"name":"state","variant":"param","kind":32768,"type":{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true}},{"name":"describe","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"DescribePlaceholderRoute"},"name":"DescribePlaceholderRoute","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"PlaceholderDescriptorMap"},"name":"PlaceholderDescriptorMap","package":"expo-router"}}]}}},{"name":"processScreens","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Transforms the screens declared as children of the navigator before they are rendered."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nprocessScreens: (screens) =>\n screens.map((screen) => ({ ...screen, options: { ...screen.options, title: screen.name } })),\n```"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"screens","variant":"param","kind":32768,"type":{"type":"array","elementType":{"type":"intersection","types":[{"type":"reference","typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"name","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}}}],"type":{"type":"array","elementType":{"type":"intersection","types":[{"type":"reference","typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"name","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}}}]}}},{"name":"processState","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Pre-processes the builder state before it is converted to standard-navigation state."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nprocessState: (state) => ({\n ...state,\n routes: state.routes.filter((route) => route.params?.hidden !== true),\n})\n```"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"state","variant":"param","kind":32768,"type":{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true}},{"name":"descriptors","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"PlaceholderDescriptorMap"},"name":"PlaceholderDescriptorMap","package":"expo-router"}},{"name":"describe","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"DescribePlaceholderRoute"},"name":"DescribePlaceholderRoute","package":"expo-router"}}],"type":{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true}}]}}}]}}]}},{"name":"Label","variant":"declaration","kind":64,"signatures":[{"name":"Label","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LabelProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"LabelProps","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/common/elements.tsx","qualifiedName":"NativeTabsTriggerLabelProps"},"name":"NativeTabsTriggerLabelProps","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/toolbar/toolbar-primitives.tsx","qualifiedName":"StackToolbarLabelProps"},"name":"StackToolbarLabelProps","package":"expo-router"}]}},{"name":"NativeIntent","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Created by using a special file called "},{"kind":"code","text":"`+native-intent.tsx`"},{"kind":"text","text":" at the top-level of your\nproject's **app** directory. It exports "},{"kind":"code","text":"`redirectSystemPath`"},{"kind":"text","text":" or "},{"kind":"code","text":"`legacy_subscribe`"},{"kind":"text","text":" functions,\nboth methods designed to handle URL/path processing.\n\nUseful for re-writing URLs to correctly target a route when unique/referred URLs\nare incoming from third-party providers or stale URLs from previous versions."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"For more information on how to use "},{"kind":"code","text":"`NativeIntent`"},{"kind":"text","text":", see [Customizing links](/router/advanced/native-intent/)."}]}]},"children":[{"name":"legacy_subscribe","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"> **warning** Experimentally available in SDK 52.\n\nUseful as an alternative API when a third-party provider doesn't support Expo Router\nbut has support for React Navigation via "},{"kind":"code","text":"`Linking.subscribe()`"},{"kind":"text","text":" for existing projects.\n\nUsing this API is not recommended for newer projects or integrations since it is\nincompatible with Server Side Routing and\n[Static Rendering](/router/web/static-rendering/), and can become challenging to manage while offline or in a low network environment."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"listener","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"url","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"intrinsic","name":"void"}}]}}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"undefined"},{"type":"intrinsic","name":"void"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}]}}]}}},{"name":"redirectSystemPath","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A special method used to process URLs in native apps. When invoked, it receives an\n"},{"kind":"code","text":"`options`"},{"kind":"text","text":" object with the following properties:\n- **path**: represents the URL or path undergoing processing.\n- **initial**: a boolean indicating whether the path is the app's initial URL.\n\nIts return value should be a "},{"kind":"code","text":"`string`"},{"kind":"text","text":", a "},{"kind":"code","text":"`Promise`"},{"kind":"text","text":", or "},{"kind":"code","text":"`null`"},{"kind":"text","text":". When a falsy value\nis returned (for example, "},{"kind":"code","text":"`null`"},{"kind":"text","text":"), no redirection occurs and the app stays on the current path.\n\nNote that throwing errors within this method may result in app crashes. It's recommended to\nwrap your code inside a "},{"kind":"code","text":"`try/catch`"},{"kind":"text","text":" block and utilize "},{"kind":"code","text":"`.catch()`"},{"kind":"text","text":" when appropriate."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"For usage information, see [Redirecting system paths](/router/advanced/native-intent/#using-redirectsystempath)."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"event","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"initial","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"path","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"literal","value":null}]}],"name":"Promise","package":"typescript"},{"type":"intrinsic","name":"string"},{"type":"literal","value":null}]}}]}}}]},{"name":"NativeStackDescriptorMap","variant":"declaration","kind":2097152,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"indexSignatures":[{"name":"__index","variant":"signature","kind":8192,"parameters":[{"name":"key","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackDescriptor"},"name":"NativeStackDescriptor","package":"expo-router"}}]}}},{"name":"NativeStackHeaderBackProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"href","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The "},{"kind":"code","text":"`href`"},{"kind":"text","text":" to use for the anchor tag on web"}]},"type":{"type":"intrinsic","name":"string"}},{"name":"label","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Label text for the button. Usually the title of the previous screen.\nBy default, this is only shown on iOS 18."}]},"type":{"type":"intrinsic","name":"string"}}]}}]}},{"name":"NativeStackHeaderItem","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"An item that can be displayed in the header.\nIt can be a button, a menu, spacing, or a custom element.\n\nOn iOS 26, when showing items on the right side of the header,\nif the items don't fit the available space, they will be collapsed into a menu automatically.\nItems with "},{"kind":"code","text":"`type: 'custom'`"},{"kind":"text","text":" will not be included in this automatic collapsing behavior."}]},"type":{"type":"union","types":[{"type":"reference","name":"NativeStackHeaderItemButton","package":"expo-router"},{"type":"reference","name":"NativeStackHeaderItemMenu","package":"expo-router"},{"type":"reference","name":"NativeStackHeaderItemSpacing","package":"expo-router"},{"type":"reference","name":"NativeStackHeaderItemCustom","package":"expo-router"}]}},{"name":"NativeStackHeaderItemButton","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"A button item in the header."}]},"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"SharedHeaderItem"},"name":"SharedHeaderItem","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"onPress","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Function to call when the item is pressed."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"selected","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the item is in a selected state.\n\nRead more: https://developer.apple.com/documentation/uikit/uibarbuttonitem/isselected"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the item."}]},"type":{"type":"literal","value":"button"}}]}}]}},{"name":"NativeStackHeaderItemCustom","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"A custom item to display any React Element in the header."}]},"children":[{"name":"element","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"A React Element to display as the item."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"name":"React.ReactElement","package":"@types/react"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the background this item may share with other items in the bar should be hidden.\nOnly available from iOS 26.0 and later.\n\nRead more: https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"custom"}}]},{"name":"NativeStackHeaderItemMenu","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"An item that shows a menu when pressed."}]},"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"SharedHeaderItem"},"name":"SharedHeaderItem","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"changesSelectionAsPrimaryAction","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the menu is a selection menu.\nTapping an item in a selection menu will add a checkmark to the selected item.\n\nRead more: https://developer.apple.com/documentation/uikit/uibarbuttonitem/changesselectionasprimaryaction"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"menu","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Menu for the item."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"items","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Array of menu items (actions or submenus)."}]},"type":{"type":"array","elementType":{"type":"union","types":[{"type":"reference","name":"NativeStackHeaderItemMenuAction","package":"expo-router"},{"type":"reference","name":"NativeStackHeaderItemMenuSubmenu","package":"expo-router"}]}}},{"name":"layout","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How the submenu items are displayed.\n- "},{"kind":"code","text":"`default`"},{"kind":"text","text":": menu items are displayed normally.\n- "},{"kind":"code","text":"`palette`"},{"kind":"text","text":": menu items are displayed in a horizontal row.\n\nDefaults to "},{"kind":"code","text":"`default`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayaspalette"}]},"type":{"type":"union","types":[{"type":"literal","value":"default"},{"type":"literal","value":"palette"}]}},{"name":"multiselectable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether multiple items in the submenu can be selected, i.e. in \"on\" state.\n\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/singleselection"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional title to show on top of the menu."}]},"type":{"type":"intrinsic","name":"string"}}]}}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"menu"}}]}}]}},{"name":"NativeStackHeaderItemMenuAction","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"An action item in a menu."}]},"children":[{"name":"description","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The secondary text displayed alongside the label of the menu item."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to apply destructive style to the item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to apply disabled style to the item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/disabled"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"discoverabilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An elaborated title that explains the purpose of the action.\n\nOn iOS, the system displays this title in the discoverability heads-up display (HUD).\nIf this is not set, the HUD displays the title property.\n\nRead more: https://developer.apple.com/documentation/uikit/uiaction/discoverabilitytitle"}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to apply hidden style to the item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/hidden"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon for the menu item."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"PlatformIconIOS"},"name":"PlatformIconIOS","package":"expo-router"}},{"name":"keepsMenuPresented","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to keep the menu presented after firing the element’s action.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/keepsmenupresented"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"label","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Label for the menu item."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"onPress","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Function to call when the menu item is pressed."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"state","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The state of an action- or command-based menu item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/state"}]},"type":{"type":"union","types":[{"type":"literal","value":"on"},{"type":"literal","value":"off"},{"type":"literal","value":"mixed"}]}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"action"}}]},{"name":"NativeStackHeaderItemMenuSubmenu","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"A submenu item that contains other menu items."}]},"children":[{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to apply destructive style to the menu item.\n\nRead more: https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon for the submenu item."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"PlatformIconIOS"},"name":"PlatformIconIOS","package":"expo-router"}},{"name":"inline","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the menu is displayed inline with the parent menu.\nBy default, submenus are displayed after expanding the parent menu item.\nInline menus are displayed as part of the parent menu as a section.\n\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayinline"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"items","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Array of menu items (actions or submenus)."}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"items"},"objectType":{"type":"indexedAccess","indexType":{"type":"literal","value":"menu"},"objectType":{"type":"reference","name":"NativeStackHeaderItemMenu","package":"expo-router"}}}},{"name":"label","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Label for the submenu item."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"layout","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How the submenu items are displayed.\n- "},{"kind":"code","text":"`default`"},{"kind":"text","text":": menu items are displayed normally.\n- "},{"kind":"code","text":"`palette`"},{"kind":"text","text":": menu items are displayed in a horizontal row.\n\nDefaults to "},{"kind":"code","text":"`default`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayaspalette"}]},"type":{"type":"union","types":[{"type":"literal","value":"default"},{"type":"literal","value":"palette"}]}},{"name":"multiselectable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether multiple items in the submenu can be selected, i.e. in \"on\" state.\n\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\n\nRead more: https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/singleselection"}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"submenu"}}]},{"name":"NativeStackHeaderItemProps","variant":"declaration","kind":2097152,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Header background color"}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"canGoBack","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether it's possible to navigate back in stack."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Tint color for the header."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"NativeStackHeaderItemSpacing","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"An item to add spacing between other items in the header."}]},"children":[{"name":"spacing","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The amount of spacing to add."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"spacing"}}]},{"name":"NativeStackHeaderLeftProps","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`NativeStackHeaderBackProps`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reference","name":"NativeStackHeaderBackProps","package":"expo-router"}},{"name":"NativeStackHeaderNativeProps","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenStackHeaderConfigProps"},"name":"ScreenStackHeaderConfigProps","package":"react-native-screens"}],"name":"Partial","package":"typescript"}},{"name":"NativeStackHeaderProps","variant":"declaration","kind":2097152,"children":[{"name":"back","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Options for the back button."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"href","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The "},{"kind":"code","text":"`href`"},{"kind":"text","text":" to use for the anchor tag on web"}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}},{"name":"title","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Title of the previous screen."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]}}},{"name":"navigation","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Navigation prop for the header."}]},"type":{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"NativeStackNavigationProp","package":"expo-router"}},{"name":"options","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Options for the current screen."}]},"type":{"type":"reference","name":"NativeStackNavigationOptions","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Route object for the current screen."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Route"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"Route","package":"expo-router"}}]},{"name":"NativeStackHeaderRightProps","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`NativeStackHeaderItemProps`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"}},{"name":"NativeStackNativeProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","name":"NativeStackScreenNativeProps","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"headerConfig","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"NativeStackHeaderNativeProps","package":"expo-router"}}]}}]}},{"name":"NativeStackNavigationEventMap","variant":"declaration","kind":2097152,"children":[{"name":"gestureCancel","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a swipe back is canceled on iOS."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}},{"name":"sheetDetentChange","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when screen is in sheet presentation & it's detent changes.\n\nIn payload it carries two fields:\n\n* "},{"kind":"code","text":"`index`"},{"kind":"text","text":" - current detent index in the "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array,\n* "},{"kind":"code","text":"`stable`"},{"kind":"text","text":" - on Android "},{"kind":"code","text":"`false`"},{"kind":"text","text":" value means that the user is dragging the sheet or it is settling; on iOS it is always "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"index","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}},{"name":"stable","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}},{"name":"transitionEnd","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation ends."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}},{"name":"transitionStart","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation starts."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}}]},{"name":"NativeStackNavigationOptions","variant":"declaration","kind":2097152,"children":[{"name":"animation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How the screen should animate when pushed or popped.\n\nSupported values:\n- \"default\": use the platform default animation\n- \"fade\": fade screen in or out\n- \"fade_from_bottom\" – performs a fade from bottom animation\n- \"flip\": flip the screen, requires presentation: \"modal\" (iOS only)\n- \"simple_push\": use the platform default animation, but without shadow and native header transition (iOS only)\n- \"slide_from_bottom\": slide in the new screen from bottom\n- \"slide_from_right\": slide in the new screen from right (Android only, uses default animation on iOS)\n- \"slide_from_left\": slide in the new screen from left (Android only, uses default animation on iOS)\n- \"ios_from_right\" - iOS like slide in animation. pushes in the new screen from right to left (Android only, resolves to default transition on iOS)\n- \"ios_from_left\" - iOS like slide in animation. pushes in the new screen from left to right (Android only, resolves to default transition on iOS)\n- \"none\": don't animate the screen\n\nOnly supported on iOS and Android."}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"stackAnimation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"animationDuration","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Duration (in milliseconds) for the following transition animations on iOS:\n- "},{"kind":"code","text":"`slide_from_bottom`"},{"kind":"text","text":"\n- "},{"kind":"code","text":"`fade_from_bottom`"},{"kind":"text","text":"\n- "},{"kind":"code","text":"`fade`"},{"kind":"text","text":"\n- "},{"kind":"code","text":"`simple_push`"},{"kind":"text","text":"\n\nDefaults to "},{"kind":"code","text":"`500`"},{"kind":"text","text":".\n\nThe duration is not customizable for:\n- Screens with "},{"kind":"code","text":"`default`"},{"kind":"text","text":" and "},{"kind":"code","text":"`flip`"},{"kind":"text","text":" animations\n- Screens with "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" set to "},{"kind":"code","text":"`modal`"},{"kind":"text","text":", "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":", "},{"kind":"code","text":"`pageSheet`"},{"kind":"text","text":" (regardless of animation)"}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"animationMatchesGesture","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the gesture to dismiss should use animation provided to "},{"kind":"code","text":"`animation`"},{"kind":"text","text":" prop. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\n\nDoesn't affect the behavior of screens presented modally."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"animationTypeForReplace","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The type of animation to use when this screen replaces another screen. Defaults to "},{"kind":"code","text":"`pop`"},{"kind":"text","text":".\n\nSupported values:\n- \"push\": the new screen will perform push animation.\n- \"pop\": the new screen will perform pop animation.\n\nOnly supported on iOS and Android."}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"replaceAnimation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"autoHideHomeIndicator","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the home indicator should prefer to stay hidden on this screen. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"contentStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for the scene content."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}},{"name":"freezeOnBlur","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"This option has no effect in Expo Router."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"fullScreenGestureEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the gesture to dismiss should work on the whole screen. The behavior depends on iOS version.\n\nOn iOS 18 and below:\n"},{"kind":"code","text":"`false`"},{"kind":"text","text":" by default. If enabled, swipe gesture will use "},{"kind":"code","text":"`simple_push`"},{"kind":"text","text":" transition animation by default. It can be changed\nwith "},{"kind":"code","text":"`animation`"},{"kind":"text","text":" & "},{"kind":"code","text":"`animationMatchesGesture`"},{"kind":"text","text":" props, but default iOS swipe animation is not achievable.\n\nOn iOS 26 and up:\n"},{"kind":"code","text":"`true`"},{"kind":"text","text":" by default to match new native behavior. You can still customize it with "},{"kind":"code","text":"`animation`"},{"kind":"text","text":" & "},{"kind":"code","text":"`animationMatchesGesture`"},{"kind":"text","text":" props.\n\nDoesn't affect the behavior of screens presented modally."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"fullScreenGestureShadowEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"iOS 18 and below. Controls whether the full screen dismiss gesture has shadow under view during transition.\nThe gesture uses custom transition and thus doesn't have a shadow by default. When enabled, a custom shadow view\nis added during the transition which tries to mimic the default iOS shadow. Defaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":".\n\nThis does not affect the behavior of transitions that don't use gestures, enabled by "},{"kind":"code","text":"`fullScreenGestureEnabled`"},{"kind":"text","text":" prop."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"since iOS 26."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"gestureDirection","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the direction in which you should swipe to dismiss the screen.\nWhen using "},{"kind":"code","text":"`vertical`"},{"kind":"text","text":" option, options "},{"kind":"code","text":"`fullScreenGestureEnabled: true`"},{"kind":"text","text":", "},{"kind":"code","text":"`animationMatchesGesture: true`"},{"kind":"text","text":" and "},{"kind":"code","text":"`animation: 'slide_from_bottom'`"},{"kind":"text","text":" are set by default.\n\nSupported values:\n- "},{"kind":"code","text":"`vertical`"},{"kind":"text","text":" – dismiss screen vertically\n- "},{"kind":"code","text":"`horizontal`"},{"kind":"text","text":" – dismiss screen horizontally (default)"}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"swipeDirection"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"gestureEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether you can use gestures to dismiss this screen. Defaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":".\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"gestureResponseDistance","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Use it to restrict the distance from the edges of screen in which the gesture should be recognized. To be used alongside "},{"kind":"code","text":"`fullScreenGestureEnabled`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"gestureResponseDistance"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"header","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function that given "},{"kind":"code","text":"`HeaderProps`"},{"kind":"text","text":" returns a React Element to display as a header."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}},{"name":"headerBackButtonDisplayMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How the back button displays icon and title.\n\nSupported values:\n- \"default\" - Displays one of the following depending on the available space: previous screen's title, generic title (e.g. 'Back') or no title (only icon).\n- \"generic\" – Displays one of the following depending on the available space: generic title (e.g. 'Back') or no title (only icon).\n- \"minimal\" – Always displays only the icon without a title.\n\nThe space-aware behavior is disabled when:\n- The iOS version is 13 or lower\n- Custom font family or size is set (e.g. with "},{"kind":"code","text":"`headerBackTitleStyle`"},{"kind":"text","text":")\n- Back button menu is disabled (e.g. with "},{"kind":"code","text":"`headerBackButtonMenuEnabled`"},{"kind":"text","text":")\n\nIn such cases, a static title and icon are always displayed.\n\nDefaults to \"default\" on iOS, and \"minimal\" on other platforms.\n\nOnly supported on iOS and Web."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios, web"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"backButtonDisplayMode"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenStackHeaderConfigProps"},"name":"ScreenStackHeaderConfigProps","package":"react-native-screens"}}},{"name":"headerBackButtonMenuEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Boolean indicating whether to show the menu on longPress of iOS >= 14 back button. Defaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":".\nRequires "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":" version >=3.3.0.\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns a React Element to render as the background of the header.\nThis is useful for using backgrounds such as an image, a gradient, blur effect etc.\nYou can use this with "},{"kind":"code","text":"`headerTransparent`"},{"kind":"text","text":" to render content underneath a translucent header."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}},{"name":"headerBackIcon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon to display in the header as the icon in the back button.\n\nDefaults to back icon image for the platform\n- A chevron on iOS\n- An arrow on Android"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```js\nheaderBackIcon: {\n type: 'image',\n source: require('./back-icon.png'),\n}\n```"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"source","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"image"}}]}}},{"name":"headerBackImageSource","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Image to display in the header as the icon in the back button."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`headerBackIcon`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"}},{"name":"headerBackTitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Title string used by the back button on iOS.\nDefaults to the previous scene's title.\nOn iOS the text might be shortened to \"Back\" or arrow icon depending on the available space, following native iOS behaviour.\nSee "},{"kind":"code","text":"`headerBackButtonDisplayMode`"},{"kind":"text","text":" to read about limitations and interactions with other props.\nUse "},{"kind":"code","text":"`headerBackButtonDisplayMode: \"minimal\"`"},{"kind":"text","text":" to hide it.\n\nOnly supported on iOS and Web."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios, web"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"headerBackTitleStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for header back title. Supported properties:\n- fontFamily\n- fontSize\n\nOnly supported on iOS and Web."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios, web"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"headerBackVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the back button is visible in the header.\nYou can use it to show a back button alongside "},{"kind":"code","text":"`headerLeft`"},{"kind":"text","text":" if you have specified it.\n\nThis will have no effect on the first screen in the stack."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerBlurEffect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Blur effect for the translucent header.\nThe "},{"kind":"code","text":"`headerTransparent`"},{"kind":"text","text":" option needs to be set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":" for this to work.\n\n**Note:** Using both "},{"kind":"code","text":"`headerBlurEffect`"},{"kind":"text","text":" and "},{"kind":"code","text":"`scrollEdgeEffects`"},{"kind":"text","text":" (>= iOS 26) simultaneously may cause overlapping effects.\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"blurEffect"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenStackHeaderConfigProps"},"name":"ScreenStackHeaderConfigProps","package":"react-native-screens"}}},{"name":"headerLargeStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style of the header when a large title is shown.\nThe large title is shown if "},{"kind":"code","text":"`headerLargeTitle`"},{"kind":"text","text":" is "},{"kind":"code","text":"`true`"},{"kind":"text","text":" and\nthe edge of any scrollable content reaches the matching edge of the header.\n\nSupported properties:\n- backgroundColor\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"headerLargeTitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to enable header with large title which collapses to regular header on scroll."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`headerLargeTitleEnabled`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerLargeTitleEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to enable header with large title which collapses to regular header on scroll.\n\nFor large title to collapse on scroll, the content of the screen should be wrapped in a scrollable view such as "},{"kind":"code","text":"`ScrollView`"},{"kind":"text","text":" or "},{"kind":"code","text":"`FlatList`"},{"kind":"text","text":".\nIf the scrollable area doesn't fill the screen, the large title won't collapse on scroll.\nYou also need to specify "},{"kind":"code","text":"`contentInsetAdjustmentBehavior=\"automatic\"`"},{"kind":"text","text":" in your "},{"kind":"code","text":"`ScrollView`"},{"kind":"text","text":", "},{"kind":"code","text":"`FlatList`"},{"kind":"text","text":" etc.\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerLargeTitleShadowVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether drop shadow of header is visible when a large title is shown.\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerLargeTitleStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for large title in header. Supported properties:\n- fontFamily\n- fontSize\n- fontWeight\n- color\n\nOnly supported on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}},{"name":"fontWeight","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"headerLeft","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns a React Element to display on the left side of the header.\nThis replaces the back button. See "},{"kind":"code","text":"`headerBackVisible`"},{"kind":"text","text":" to show the back button along side left element.\nWill be overriden by "},{"kind":"code","text":"`headerLeftItems`"},{"kind":"text","text":" on iOS."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderBackProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}},{"name":"headerRight","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns a React Element to display on the right side of the header.\nWill be overriden by "},{"kind":"code","text":"`headerRightItems`"},{"kind":"text","text":" on iOS."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}},{"name":"headerSearchBarOptions","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Options to render a native search bar.\nYou also need to specify "},{"kind":"code","text":"`contentInsetAdjustmentBehavior=\"automatic\"`"},{"kind":"text","text":" in your "},{"kind":"code","text":"`ScrollView`"},{"kind":"text","text":", "},{"kind":"code","text":"`FlatList`"},{"kind":"text","text":" etc.\nIf you don't have a "},{"kind":"code","text":"`ScrollView`"},{"kind":"text","text":", specify "},{"kind":"code","text":"`headerTransparent: false`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"SearchBarProps"},"name":"SearchBarProps","package":"react-native-screens"}},{"name":"headerShadowVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the elevation shadow (Android) or the bottom border (iOS) on the header."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerShown","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to show the header. The header is shown by default.\nSetting this to "},{"kind":"code","text":"`false`"},{"kind":"text","text":" hides the header."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for header. Supported properties:\n- backgroundColor"}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"headerTintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Tint color for the header. Changes the color of back button and title."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"headerTitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"String or a function that returns a React Element to be used by the header.\nDefaults to screen "},{"kind":"code","text":"`title`"},{"kind":"text","text":" or route name.\n\nWhen a function is passed, it receives "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" and"},{"kind":"code","text":"`children`"},{"kind":"text","text":" in the options object as an argument.\nThe title string is passed in "},{"kind":"code","text":"`children`"},{"kind":"text","text":".\n\nNote that if you render a custom element by passing a function, animations for the title won't work."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The title text of the header."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Tint color for the header."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}]}},{"name":"headerTitleAlign","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How to align the header title.\nDefaults to "},{"kind":"code","text":"`left`"},{"kind":"text","text":" on platforms other than iOS.\n\nNot supported on iOS. It's always "},{"kind":"code","text":"`center`"},{"kind":"text","text":" on iOS and cannot be changed."}]},"type":{"type":"union","types":[{"type":"literal","value":"left"},{"type":"literal","value":"center"}]}},{"name":"headerTitleStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style object for header title. Supported properties:\n- fontFamily\n- fontSize\n- fontWeight\n- color"}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"},{"type":"union","types":[{"type":"literal","value":"fontFamily"},{"type":"literal","value":"fontSize"},{"type":"literal","value":"fontWeight"}]}],"name":"Pick","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}}]}],"name":"StyleProp","package":"react-native"}},{"name":"headerTransparent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Boolean indicating whether the navigation bar is translucent.\nSetting this to "},{"kind":"code","text":"`true`"},{"kind":"text","text":" makes the header absolutely positioned,\nand changes the background color to "},{"kind":"code","text":"`transparent`"},{"kind":"text","text":" unless specified in "},{"kind":"code","text":"`headerStyle`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"keyboardHandlingEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the keyboard should hide when swiping to the previous screen. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"navigationBarColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the navigation bar color. Defaults to initial navigation bar color."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"For all apps targeting Android SDK 35 or above edge-to-edge is enabled by default.\n This prop is subject to removal in the future.\n See: https://developer.android.com/about/versions/15/behavior-changes-15#ux."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"navigationBarHidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the visibility of the navigation bar. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"navigationBarTranslucent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Boolean indicating whether the content should be visible behind the navigation bar. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"For all apps targeting Android SDK 35 or above edge-to-edge is enabled by default.\n This prop is subject to removal in the future.\n See: https://developer.android.com/about/versions/15/behavior-changes-15#ux."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"orientation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The display orientation to use for the screen.\n\nSupported values:\n- \"default\" - resolves to \"all\" without \"portrait_down\" on iOS. On Android, this lets the system decide the best orientation.\n- \"all\": all orientations are permitted.\n- \"portrait\": portrait orientations are permitted.\n- \"portrait_up\": right-side portrait orientation is permitted.\n- \"portrait_down\": upside-down portrait orientation is permitted.\n- \"landscape\": landscape orientations are permitted.\n- \"landscape_left\": landscape-left orientation is permitted.\n- \"landscape_right\": landscape-right orientation is permitted.\n\nOnly supported on iOS and Android."}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"screenOrientation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"presentation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"How should the screen be presented.\n\nSupported values:\n- \"card\": the new screen will be pushed onto a stack, which means the default animation will be slide from the side on iOS, the animation on Android will vary depending on the OS version and theme.\n- \"modal\": the new screen will be presented modally. this also allows for a nested stack to be rendered inside the screen.\n- \"transparentModal\": the new screen will be presented modally, but in addition, the previous screen will stay so that the content below can still be seen if the screen has translucent background.\n- \"containedModal\": will use \"UIModalPresentationCurrentContext\" modal style on iOS and will fallback to \"modal\" on Android.\n- \"containedTransparentModal\": will use \"UIModalPresentationOverCurrentContext\" modal style on iOS and will fallback to \"transparentModal\" on Android.\n- \"fullScreenModal\": will use \"UIModalPresentationFullScreen\" modal style on iOS and will fallback to \"modal\" on Android.\n- \"formSheet\": will use \"UIModalPresentationFormSheet\" modal style on iOS and will fallback to \"modal\" on Android.\n- \"pageSheet\": will use \"UIModalPresentationPageSheet\" modal style on iOS and will fallback to \"modal\" on Android.\n\nOnly supported on iOS and Android."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Exclude"},"typeArguments":[{"type":"indexedAccess","indexType":{"type":"literal","value":"stackPresentation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}},{"type":"literal","value":"push"}],"name":"Exclude","package":"typescript"},{"type":"literal","value":"card"}]}},{"name":"scrollEdgeEffects","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Configures the scroll edge effect for the _content ScrollView_ (the ScrollView that is present in first descendants chain of the Screen).\nDepending on values set, it will blur the scrolling content below certain UI elements (header items, search bar)\nfor the specified edge of the ScrollView.\n\nWhen set in nested containers, i.e. Native Stack inside Native Bottom Tabs, or the other way around,\nthe ScrollView will use only the innermost one's config.\n\n**Note:** Using both "},{"kind":"code","text":"`headerBlurEffect`"},{"kind":"text","text":" and "},{"kind":"code","text":"`scrollEdgeEffects`"},{"kind":"text","text":" (>= iOS 26) simultaneously may cause overlapping effects.\n\nEdge effects can be configured for each edge separately. The following values are currently supported:\n\n- "},{"kind":"code","text":"`automatic`"},{"kind":"text","text":" - the automatic scroll edge effect style,\n- "},{"kind":"code","text":"`hard`"},{"kind":"text","text":" - a scroll edge effect with a hard cutoff and dividing line,\n- "},{"kind":"code","text":"`soft`"},{"kind":"text","text":" - a soft-edged scroll edge effect,\n- "},{"kind":"code","text":"`hidden`"},{"kind":"text","text":" - no scroll edge effect.\n\nDefaults to "},{"kind":"code","text":"`automatic`"},{"kind":"text","text":" for each edge."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]},{"tag":"@supported","content":[{"kind":"text","text":"iOS 26 or higher"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"bottom","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"ScrollEdgeEffect"},"name":"ScrollEdgeEffect","package":"react-native-screens"}},{"name":"left","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"ScrollEdgeEffect"},"name":"ScrollEdgeEffect","package":"react-native-screens"}},{"name":"right","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"ScrollEdgeEffect"},"name":"ScrollEdgeEffect","package":"react-native-screens"}},{"name":"top","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"ScrollEdgeEffect"},"name":"ScrollEdgeEffect","package":"react-native-screens"}}]}}},{"name":"sheetAllowedDetents","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Describes heights where a sheet can rest.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\n\nHeights should be described as fraction (a number from "},{"kind":"code","text":"`[0, 1]`"},{"kind":"text","text":" interval) of screen height / maximum detent height.\nYou can pass an array of ascending values each defining allowed sheet detent. iOS accepts any number of detents,\nwhile **Android is limited to three**.\n\nThere is also possibility to specify "},{"kind":"code","text":"`fitToContents`"},{"kind":"text","text":" literal, which intents to set the sheet height\nto the height of its contents.\n\nNote that the array **must** be sorted in ascending order. This invariant is verified only in development mode,\nwhere violation results in error.\n\n**Android is limited to up 3 values in the array** -- any surplus values, beside first three are ignored.\n\nDefaults to "},{"kind":"code","text":"`[1.0]`"},{"kind":"text","text":"."}]},"type":{"type":"union","types":[{"type":"array","elementType":{"type":"intrinsic","name":"number"}},{"type":"literal","value":"fitToContents"}]}},{"name":"sheetCornerRadius","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The corner radius that the sheet will try to render with.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\n\nIf set to non-negative value it will try to render sheet with provided radius, else it will apply system default.\n\nIf left unset system default is used."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"sheetElevation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Integer value describing elevation of the sheet, impacting shadow on the top edge of the sheet.\n\nNot dynamic - changing it after the component is rendered won't have an effect.\n\nDefaults to "},{"kind":"code","text":"`24`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"Android"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"sheetExpandsWhenScrolledToEdge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the sheet should expand to larger detent when scrolling.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\nDefaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"sheetGrabberVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Boolean indicating whether the sheet shows a grabber at the top.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"sheetInitialDetentIndex","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Index of the detent the sheet should expand to after being opened.\nWorks only when "},{"kind":"code","text":"`stackPresentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\n\nIf the specified index is out of bounds of "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array, in dev environment an error will be thrown,\nin production the value will be reset to default value.\n\nAdditionally there is "},{"kind":"code","text":"`last`"},{"kind":"text","text":" value available, when set the sheet will expand initially to last (largest) detent.\n\nDefaults to "},{"kind":"code","text":"`0`"},{"kind":"text","text":" - which represents first detent in the detents array."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"number"},{"type":"literal","value":"last"}]}},{"name":"sheetLargestUndimmedDetentIndex","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The largest sheet detent for which a view underneath won't be dimmed.\nWorks only when "},{"kind":"code","text":"`presentation`"},{"kind":"text","text":" is set to "},{"kind":"code","text":"`formSheet`"},{"kind":"text","text":".\n\nThis prop can be set to a number, which indicates index of detent in "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array for which\nthere won't be a dimming view beneath the sheet.\n\nAdditionally there are following options available:\n\n* "},{"kind":"code","text":"`none`"},{"kind":"text","text":" - there will be dimming view for all detents levels,\n* "},{"kind":"code","text":"`last`"},{"kind":"text","text":" - there won't be a dimming view for any detent level."}],"blockTags":[{"tag":"@remark","content":[{"kind":"text","text":"On iOS, the native implementation might resize the sheet w/o explicitly changing the detent level, e.g. in case of keyboard appearance.\nIn case after such resize the sheet exceeds height for which in regular scenario a dimming view would be applied - it will be applied,\neven if the detent has not effectively been changed.\n\nDefaults to "},{"kind":"code","text":"`none`"},{"kind":"text","text":", indicating that the dimming view should be always present."}]}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"number"},{"type":"literal","value":"none"},{"type":"literal","value":"last"}]}},{"name":"sheetResizeAnimationEnabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the default native animation should be used when the sheet's with\n"},{"kind":"code","text":"`fitToContents`"},{"kind":"text","text":" content size changes.\n\nWhen set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the sheet uses internal logic to synchronize size updates and\ntranslation animations during entry, exit, or content updates. This ensures a smooth\ntransition for standard, static content mounting/unmounting.\n\nWhen set to "},{"kind":"code","text":"`false`"},{"kind":"text","text":", the internal animation and translation logic is ignored. This\nallows the sheet to adjust its size dynamically based on the current dimensions of\nthe content provided by the developer, allowing implementing custom resizing animations.\n\nDefaults to "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"sheetShouldOverflowTopInset","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the sheet content should be rendered behind the Status Bar or display cutouts.\n\nWhen set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the sheet will extend to the physical edges of the stack,\nallowing content to be visible behind the status bar or display cutouts.\nDetent ratios in sheetAllowedDetents will be measured relative to the full stack height.\n\nWhen set to "},{"kind":"code","text":"`false`"},{"kind":"text","text":", the sheet's layout will be constrained by the inset from the top\nand the detent ratios will then be measured relative to the adjusted height (excluding the top inset).\nThis means that sheetAllowedDetents will result in different sheet heights depending on this prop.\n\nDefaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"statusBarAnimation","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the status bar animation (similar to the "},{"kind":"code","text":"`StatusBar`"},{"kind":"text","text":" component).\nOn Android, setting either "},{"kind":"code","text":"`fade`"},{"kind":"text","text":" or "},{"kind":"code","text":"`slide`"},{"kind":"text","text":" will set the transition of status bar color. On iOS, this option applies to appereance animation of the status bar.\nRequires setting "},{"kind":"code","text":"`View controller-based status bar appearance -> YES`"},{"kind":"text","text":" (or removing the config) in your "},{"kind":"code","text":"`Info.plist`"},{"kind":"text","text":" file.\n\nDefaults to "},{"kind":"code","text":"`fade`"},{"kind":"text","text":" on iOS and "},{"kind":"code","text":"`none`"},{"kind":"text","text":" on Android.\n\nOnly supported on Android and iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android, ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"statusBarAnimation"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"statusBarBackgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the status bar color (similar to the "},{"kind":"code","text":"`StatusBar`"},{"kind":"text","text":" component). Defaults to initial status bar color."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"For all apps targeting Android SDK 35 or above edge-to-edge is enabled by default.\n This prop is subject to removal in the future.\n See: https://developer.android.com/about/versions/15/behavior-changes-15#ux."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"statusBarHidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the status bar should be hidden on this screen.\nRequires setting "},{"kind":"code","text":"`View controller-based status bar appearance -> YES`"},{"kind":"text","text":" in your Info.plist file.\n\nOnly supported on Android and iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android, ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"statusBarStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the status bar color (similar to the "},{"kind":"code","text":"`StatusBar`"},{"kind":"text","text":" component).\nRequires setting "},{"kind":"code","text":"`View controller-based status bar appearance -> YES`"},{"kind":"text","text":" (or removing the config) in your "},{"kind":"code","text":"`Info.plist`"},{"kind":"text","text":" file.\n"},{"kind":"code","text":"`auto`"},{"kind":"text","text":" and "},{"kind":"code","text":"`inverted`"},{"kind":"text","text":" are supported only on iOS. On Android, they will fallback to "},{"kind":"code","text":"`light`"},{"kind":"text","text":".\n\nDefaults to "},{"kind":"code","text":"`auto`"},{"kind":"text","text":" on iOS and "},{"kind":"code","text":"`light`"},{"kind":"text","text":" on Android.\n\nOnly supported on Android and iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android, ios"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"statusBarStyle"},"objectType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"}}},{"name":"statusBarTranslucent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Sets the translucency of the status bar. Defaults to "},{"kind":"code","text":"`false`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"For all apps targeting Android SDK 35 or above edge-to-edge is enabled by default.\n This prop is subject to removal in the future.\n See: https://developer.android.com/about/versions/15/behavior-changes-15#ux."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"String that can be displayed in the header as a fallback for "},{"kind":"code","text":"`headerTitle`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"unstable_headerLeftItems","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns an array of items to display as on the left side of the header.\nOverrides "},{"kind":"code","text":"`headerLeft`"},{"kind":"text","text":".\n\nThis is an unstable API and might change in the future."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"}}],"type":{"type":"array","elementType":{"type":"reference","name":"NativeStackHeaderItem","package":"expo-router"}}}]}}},{"name":"unstable_headerRightItems","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function which returns an array of items to display as on the right side of the header.\nOverrides "},{"kind":"code","text":"`headerRight`"},{"kind":"text","text":".\n\nThis is an unstable API and might change in the future."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeStackHeaderItemProps","package":"expo-router"}}],"type":{"type":"array","elementType":{"type":"reference","name":"NativeStackHeaderItem","package":"expo-router"}}}]}}},{"name":"unstable_nativeProps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Props passed to the underlying native stack implementation in "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":".\nUse this to configure props that are not directly exposed by Expo Router.\n\n> **Note**: This will override any other props set by Expo Router and may lead to unexpected behavior.\n\n> **Note**: This is an unstable API and may change or be removed in minor versions."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","name":"NativeStackNativeProps","package":"expo-router"}},{"name":"unstable_sheetFooter","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Footer component that can be used alongside formSheet stack presentation style.\n\nThis option is provided, because due to implementation details it might be problematic\nto implement such layout with JS-only code.\n\nNote that this prop is marked as unstable and might be subject of breaking changes,\nincluding removal, in particular when we find solution that will make implementing it with JS\nstraightforward."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"React.ReactNode","package":"@types/react"}}]}}}]},{"name":"NativeStackNavigationProp","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true},{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reference","name":"NativeStackNavigationEventMap","package":"expo-router"}],"name":"NavigationProp","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackActionHelpers"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackActionHelpers","package":"expo-router"}]}},{"name":"NativeStackNavigatorProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DefaultNavigatorOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reference","name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"NativeStackNavigationProp","package":"expo-router"}],"name":"DefaultNavigatorOptions","package":"expo-router"},{"type":"reference","name":"StackRouterOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationConfig"},"name":"NativeStackNavigationConfig","package":"expo-router"}]}},{"name":"NativeStackOptionsArgs","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true}],"name":"NativeStackScreenProps","package":"expo-router"},{"type":"literal","value":"route"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DescriptorRouteProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}],"name":"DescriptorRouteProp","package":"expo-router"}},{"name":"theme","variant":"declaration","kind":1024,"type":{"type":"reference","name":"Theme","package":"expo-router"}}]}}]}},{"name":"NativeStackScreenNativeProps","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"ScreenProps"},"name":"ScreenProps","package":"react-native-screens"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"screenId"},{"type":"literal","value":"activityState"}]}],"name":"Omit","package":"typescript"}],"name":"Partial","package":"typescript"}},{"name":"NativeStackScreenProps","variant":"declaration","kind":2097152,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true}],"name":"NativeStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}],"name":"RouteProp","package":"expo-router"}}],"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}]},{"name":"NativeStackView","variant":"declaration","kind":64,"signatures":[{"name":"NativeStackView","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/views/NativeStackView.tsx","qualifiedName":"Props"},"name":"Props","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"NativeStackViewState","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"The navigator-level state consumed by "},{"kind":"code","text":"`NativeStackView`"},{"kind":"text","text":".\n\nRoutes after "},{"kind":"code","text":"`index`"},{"kind":"text","text":" are preloaded and rendered natively-detached."}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"index"},{"type":"literal","value":"routes"}]}],"name":"Pick","package":"typescript"}},{"name":"NavigationAwareActivity","variant":"declaration","kind":64,"signatures":[{"name":"NavigationAwareActivity","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Wraps the screen contents in a React "},{"kind":"code","text":"`Activity`"},{"kind":"text","text":" that hides once the screen is buried deep enough\nin the stack. Hiding runs effect cleanups and releases resources, but keeps React state, so the\nscreen looks unchanged when the user navigates back to it.\n\nMust be rendered inside a screen component."}]},"parameters":[{"name":"hideWhenNestedAtLevel","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"How many screens must sit above this one before it hides. "},{"kind":"code","text":"`1`"},{"kind":"text","text":" hides\nthe screen as soon as it loses focus, which also works in tabs and drawers. Defaults to "},{"kind":"code","text":"`2`"},{"kind":"text","text":".\n\n> **Note:** This API is unstable and may change or be removed in any release."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"hideWhenNestedAtLevel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"},"defaultValue":"2"}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"NavigatorContentProps","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Props for a standard navigator's "},{"kind":"code","text":"`NavigatorContent`"},{"kind":"text","text":" component. Annotate your content component\nwith this type to declare the events it emits, so "},{"kind":"code","text":"`unstable_createStandardRouterNavigator`"},{"kind":"text","text":" can\ntype "},{"kind":"code","text":"`emitter.emit`"},{"kind":"text","text":" for you."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n// No events:\ntype TabsContentProps = NavigatorContentProps<{ title?: string }>;\n\n// Typed events:\ntype TabsContentProps = NavigatorContentProps<\n { title?: string },\n { tabPress: { data: undefined; canPreventDefault: true } },\n { tintColor?: string },\n { activeRouteKey: string }\n>;\n```"}]}]},"typeParameters":[{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"EventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"StandardNavigatorEventMapBase","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}},{"name":"NavigatorProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}},{"name":"CreateProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"StandardNavigatorContentProps"},"typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"intersection","types":[{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}]}],"name":"StandardNavigatorContentProps","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"NavigatorContentInferenceCarrier"},"typeArguments":[{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"NavigatorContentInferenceCarrier","package":"expo-router"}]}},{"name":"PageBlurredEvent","variant":"declaration","kind":256,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.params"}},{"name":"pathname","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.pathname"}},{"name":"screenId","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.screenId"}},{"name":"segments","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}},"inheritedFrom":{"type":"reference","name":"BasePageEvent.segments"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"pageBlurred"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/types.ts","qualifiedName":"BasePageEvent"},"name":"BasePageEvent","package":"expo-router"}]},{"name":"PageFocusedEvent","variant":"declaration","kind":256,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.params"}},{"name":"pathname","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.pathname"}},{"name":"screenId","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.screenId"}},{"name":"segments","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}},"inheritedFrom":{"type":"reference","name":"BasePageEvent.segments"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"pageFocused"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/types.ts","qualifiedName":"BasePageEvent"},"name":"BasePageEvent","package":"expo-router"}]},{"name":"PagePreloadedEvent","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"The page rendered as part of a preload (e.g. "},{"kind":"code","text":"`router.prefetch()`"},{"kind":"text","text":") and is not\ncurrently focused. If the user later navigates to this route, the matching\n"},{"kind":"code","text":"`pageFocused`"},{"kind":"text","text":" will fire then; the preload may also be invalidated or the\nroute unmounted ("},{"kind":"code","text":"`pageRemoved`"},{"kind":"text","text":") without a focus."}]},"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.params"}},{"name":"pathname","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.pathname"}},{"name":"screenId","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.screenId"}},{"name":"segments","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}},"inheritedFrom":{"type":"reference","name":"BasePageEvent.segments"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"pagePreloaded"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/types.ts","qualifiedName":"BasePageEvent"},"name":"BasePageEvent","package":"expo-router"}]},{"name":"PageRemoved","variant":"declaration","kind":256,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.params"}},{"name":"pathname","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.pathname"}},{"name":"screenId","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"BasePageEvent.screenId"}},{"name":"segments","variant":"declaration","kind":1024,"flags":{"isInherited":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}},"inheritedFrom":{"type":"reference","name":"BasePageEvent.segments"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"pageRemoved"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/types.ts","qualifiedName":"BasePageEvent"},"name":"BasePageEvent","package":"expo-router"}]},{"name":"PickPartial","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"The list of input keys will become optional, everything else will remain the same."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072},{"name":"K","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"K","package":"expo-router","refersToTypeParameter":true}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"K","package":"expo-router","refersToTypeParameter":true}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"}]}},{"name":"RedirectConfig","variant":"declaration","kind":2097152,"children":[{"name":"destination","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"destinationContextKey","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"external","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"methods","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"permanent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"source","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]},{"name":"RelativePathString","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"templateLiteral","head":"./","tail":[[{"type":"intrinsic","name":"string"},""]]},{"type":"templateLiteral","head":"../","tail":[[{"type":"intrinsic","name":"string"},""]]},{"type":"literal","value":".."}]}},{"name":"ResultState","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"PartialState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}],"name":"PartialState","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"state","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"ResultState","package":"expo-router"}}]}}]}},{"name":"RoutePath","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Exclude"},"typeArguments":[{"type":"indexedAccess","indexType":{"type":"literal","value":"pathname"},"objectType":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Extract"},"typeArguments":[{"type":"reference","name":"Href","package":"expo-router"},{"type":"intrinsic","name":"object"}],"name":"Extract","package":"typescript"}},{"type":"union","types":[{"type":"reference","name":"RelativePathString","package":"expo-router"},{"type":"reference","name":"ExternalPathString","package":"expo-router"}]}],"name":"Exclude","package":"typescript"}},{"name":"router","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reference","name":"ImperativeRouter","package":"expo-router"},"defaultValue":"internalRouter"},{"name":"RouteSource","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Whether a screen was declared in the layout ("},{"kind":"code","text":"``"},{"kind":"text","text":"/"},{"kind":"code","text":"``"},{"kind":"text","text":")\nor inferred from the filesystem."}]},"type":{"type":"union","types":[{"type":"literal","value":"layout"},{"type":"literal","value":"filesystem"}]}},{"name":"ScreenProps","variant":"declaration","kind":2097152,"children":[{"name":"dangerouslySingular","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"SingularOptions","package":"expo-router"}},{"name":"getId","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"{ params }","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}}]}}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]}}},{"name":"listeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"name","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Name is required when used inside a Layout component."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"options","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"reference","name":"TOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DescriptorRouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"DescriptorRouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","name":"TOptions","package":"expo-router","refersToTypeParameter":true}}]}}]}}],"typeParameters":[{"name":"TOptions","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"},"default":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}},{"name":"TState","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}},{"name":"TEventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapBase"},"name":"EventMapBase","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapBase"},"name":"EventMapBase","package":"expo-router"}}]},{"name":"ScrollViewStyleReset","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Root style-reset for full-screen React Native web apps with a root "},{"kind":"code","text":"``"},{"kind":"text","text":" should use the following styles to ensure native parity. See [React Native for Web's root element setup](https://necolas.github.io/react-native-web/docs/setup/#root-element)."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"name":"React.FC","package":"@types/react"},"defaultValue":"..."},{"name":"SearchOrHash","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"templateLiteral","head":"?","tail":[[{"type":"intrinsic","name":"string"},""]]},{"type":"templateLiteral","head":"#","tail":[[{"type":"intrinsic","name":"string"},""]]}]}},{"name":"SingularOptions","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"intrinsic","name":"boolean"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"name","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"string"}},{"name":"params","variant":"param","kind":32768,"type":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]}}]}},{"name":"Sitemap","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"name":"React.FC","package":"@types/react"},"defaultValue":"..."},{"name":"SitemapType","variant":"declaration","kind":2097152,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"array","elementType":{"type":"reference","name":"SitemapType","package":"expo-router"}}},{"name":"contextKey","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"filename","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"href","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","name":"Href","package":"expo-router"}]}},{"name":"isGenerated","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"isInitial","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"isInternal","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"Slot","variant":"declaration","kind":64,"signatures":[{"name":"Slot","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Renders the currently selected content.\n\nThere are actually two different implementations of "},{"kind":"code","text":"``"},{"kind":"text","text":":\n - Used inside a "},{"kind":"code","text":"`_layout`"},{"kind":"text","text":" as the "},{"kind":"code","text":"`Navigator`"},{"kind":"text","text":"\n - Used inside a "},{"kind":"code","text":"`Navigator`"},{"kind":"text","text":" as the content\n\nSince a custom "},{"kind":"code","text":"`Navigator`"},{"kind":"text","text":" will set the "},{"kind":"code","text":"`NavigatorContext.contextKey`"},{"kind":"text","text":" to\nthe current "},{"kind":"code","text":"`_layout`"},{"kind":"text","text":", you can use this to determine if you are inside\na custom navigator or not."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Navigator.tsx","qualifiedName":"NavigatorProps"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"NavigatorProps","package":"expo-router"},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"StackNavigationState","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"NavigationState","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Type of the router, in this case, it's stack."}]},"type":{"type":"literal","value":"stack"}}]}}]}},{"name":"StackRouter","variant":"declaration","kind":64,"signatures":[{"name":"StackRouter","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"StackRouter is considered an internal implementation and its behavior may change without a notice between expo-router's version"}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"StackRouterOptions","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Router"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"},{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"CommonNavigationAction"},"name":"CommonNavigationAction","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackActionType"},"name":"StackActionType","package":"expo-router"}]}],"name":"Router","package":"expo-router"}}]},{"name":"StackRouterOptions","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"name":"DefaultRouterOptions","package":"expo-router"}},{"name":"StandardNavigatorDescriptor","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"A standard-navigation descriptor extended with Expo Router route information."}]},"children":[{"name":"routeSource","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Indicates whether Expo Router received the route from a layout declaration or inferred it\nfrom the filesystem."}]},"type":{"type":"reference","name":"RouteSource","package":"expo-router"}}],"typeParameters":[{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"standard-navigation","packagePath":"lib/src/index.d.ts","qualifiedName":"NavigatorDescriptor"},"typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","qualifiedName":"StandardNavigatorDescriptor.NavigatorOptions","refersToTypeParameter":true}],"name":"NavigatorDescriptor","package":"standard-navigation"}]},{"name":"StandardNavigatorEventMapBase","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"canPreventDefault","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"data","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}}]}}],"name":"Record","package":"typescript"}},{"name":"StandardUseNavigationBuilderOptions","variant":"declaration","kind":2097152,"typeParameters":[{"name":"State","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}},{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"EventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"StandardNavigatorEventMapBase","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DefaultNavigatorOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"intrinsic","name":"any"}],"name":"DefaultNavigatorOptions","package":"expo-router"}},{"name":"SuspenseFallback","variant":"declaration","kind":64,"signatures":[{"name":"SuspenseFallback","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"SuspenseFallbackProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null}]}}]},{"name":"SuspenseFallbackProps","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Props passed to a route's "},{"kind":"code","text":"`SuspenseFallback`"},{"kind":"text","text":" export."}]},"children":[{"name":"params","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The route's URL parameters."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```\n{ id: \"123\" } // For a route `./profile/[id].tsx` navigated to as `/profile/123`\n```"}]}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}],"name":"Record","package":"typescript"}},{"name":"route","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The route module's "},{"kind":"code","text":"`contextKey`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"`./index.tsx`"},{"kind":"text","text":"\n"},{"kind":"code","text":"`./profile/[id].tsx`"}]}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"TabNavigationState","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"NavigationState","package":"expo-router"},{"type":"literal","value":"history"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"List of previously visited route keys."}]},"type":{"type":"array","elementType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"key","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"object"}},{"name":"type","variant":"declaration","kind":1024,"type":{"type":"literal","value":"route"}}]}}}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Type of the router, in this case, it's tab."}]},"type":{"type":"literal","value":"tab"}}]}}]}},{"name":"TabRouter","variant":"declaration","kind":64,"signatures":[{"name":"TabRouter","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"TabRouter is considered an internal implementation and its behavior may change without a notice between expo-router's version"}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"TabRouterOptions","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Router"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"CommonNavigationAction"},"name":"CommonNavigationAction","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionType"},"name":"TabActionType","package":"expo-router"}]}],"name":"Router","package":"expo-router"}}]},{"name":"TabRouterOptions","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"name":"DefaultRouterOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Control how going back should behave\n- "},{"kind":"code","text":"`firstRoute`"},{"kind":"text","text":" - return to the first defined route\n- "},{"kind":"code","text":"`initialRoute`"},{"kind":"text","text":" - return to the route from "},{"kind":"code","text":"`initialRouteName`"},{"kind":"text","text":"\n- "},{"kind":"code","text":"`order`"},{"kind":"text","text":" - return to the route defined before the focused route\n- "},{"kind":"code","text":"`history`"},{"kind":"text","text":" - return to last visited route; if the same route is visited multiple times, the older entries are dropped from the history\n- "},{"kind":"code","text":"`fullHistory`"},{"kind":"text","text":" - return to last visited route; doesn't drop duplicate entries unlike "},{"kind":"code","text":"`history`"},{"kind":"text","text":" - matches behavior of web pages\n- "},{"kind":"code","text":"`none`"},{"kind":"text","text":" - do not handle going back"}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"BackBehavior"},"name":"BackBehavior","package":"expo-router"}}]}}]}},{"name":"Tabs","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Renders a tabs navigator."}],"blockTags":[{"tag":"@hideType","content":[]}]},"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ForwardRefExoticComponent"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/TabsClient.tsx","qualifiedName":"TabsScreenOptions"},"name":"TabsScreenOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigationEventMap"},"name":"BottomTabNavigationEventMap","package":"expo-router"}],"name":"StandardUseNavigationBuilderOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigationConfig"},"name":"BottomTabNavigationConfig","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","name":"TabRouterOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"unstable_screenErrorBoundary","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A component to render when an individual screen in this navigator throws an error."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"reference","name":"ErrorBoundaryProps","package":"expo-router"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}}]}}]},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/TabsClient.tsx","qualifiedName":"TabsScreenOptions"},"name":"TabsScreenOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigationEventMap"},"name":"BottomTabNavigationEventMap","package":"expo-router"}],"name":"StandardUseNavigationBuilderOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigationConfig"},"name":"BottomTabNavigationConfig","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","name":"TabRouterOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"unstable_screenErrorBoundary","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A component to render when an individual screen in this navigator throws an error."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"reference","name":"ErrorBoundaryProps","package":"expo-router"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}}]}}]},{"type":"literal","value":"children"}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}],"name":"ForwardRefExoticComponent","package":"@types/react","qualifiedName":"React.ForwardRefExoticComponent"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/TabsClient.tsx","qualifiedName":"TabsScreenOptions"},"name":"TabsScreenOptions","package":"expo-router"},{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigationEventMap"},"name":"BottomTabNavigationEventMap","package":"expo-router"}],"name":"ScreenProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}}}]}}]},"defaultValue":"..."},{"name":"Theme","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native/types.tsx","qualifiedName":"NativeTheme"},"name":"NativeTheme","package":"expo-router"}},{"name":"ThemeProvider","variant":"declaration","kind":64,"signatures":[{"name":"ThemeProvider","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/theming/ThemeProvider.tsx","qualifiedName":"Props"},"name":"Props","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"unstable_createStandardRouterNavigator","variant":"declaration","kind":64,"signatures":[{"name":"unstable_createStandardRouterNavigator","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"> **warning** This API is unstable and may change between minor releases.\n\nCreates a ["},{"kind":"code","text":"`standard-navigation`"},{"kind":"text","text":"](https://www.npmjs.com/package/standard-navigation) navigator and\nwires it into Expo Router in one step. Use "},{"kind":"code","text":"`unstable_integrateWithRouter`"},{"kind":"text","text":" instead if you already\nhave a navigator from "},{"kind":"code","text":"`createStandardNavigator`"},{"kind":"text","text":".\nProps declared in both "},{"kind":"code","text":"`NavigatorProps`"},{"kind":"text","text":" and "},{"kind":"code","text":"`CreateProps`"},{"kind":"text","text":" are intersected, so incompatible types\nproduce "},{"kind":"code","text":"`never`"},{"kind":"text","text":" rather than a type error at this call."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { unstable_createStandardRouterNavigator, TabRouter } from 'expo-router';\n\nexport const Tabs = unstable_createStandardRouterNavigator(MyTabsContent, TabRouter);\n```"}]}]},"typeParameters":[{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"State","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}},{"name":"EventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"StandardNavigatorEventMapBase","package":"expo-router"}},{"name":"NavigatorProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"RouterOptions","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"name":"DefaultRouterOptions","package":"expo-router"}},{"name":"CreateProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}}],"parameters":[{"name":"NavigatorContent","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Renders the navigator UI; receives the standard-navigation "},{"kind":"code","text":"`state`"},{"kind":"text","text":",\n"},{"kind":"code","text":"`descriptors`"},{"kind":"text","text":", "},{"kind":"code","text":"`actions`"},{"kind":"text","text":", and "},{"kind":"code","text":"`emitter`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"NavigatorContentProps","package":"expo-router"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}},{"name":"router","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"The router factory to use. For example, "},{"kind":"code","text":"`StackRouter`"},{"kind":"text","text":" or "},{"kind":"code","text":"`TabRouter`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"RouterFactory"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"payload","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Additional data for the action"}]},"type":{"type":"intrinsic","name":"object"}},{"name":"source","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the route which dispatched this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the navigator which should handle this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the action (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")"}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reference","name":"RouterOptions","package":"expo-router","refersToTypeParameter":true}],"name":"RouterFactory","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isRest":true},"comment":{"summary":[{"kind":"text","text":"See "},{"kind":"code","text":"`IntegrateWithRouterOptions`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/index.tsx","qualifiedName":"IntegrateWithRouterOptionsTuple"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"NoInfer"},"typeArguments":[{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"NoInfer","package":"typescript"},{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"IntegrateWithRouterOptionsTuple","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ForwardRefExoticComponent"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithoutRef"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"StandardUseNavigationBuilderOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","name":"RouterOptions","package":"expo-router","refersToTypeParameter":true},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"unstable_screenErrorBoundary","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A component to render when an individual screen in this navigator throws an error."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"reference","name":"ErrorBoundaryProps","package":"expo-router"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}}]}}]},{"type":"literal","value":"children"}],"name":"PickPartial","package":"expo-router"}],"name":"PropsWithoutRef","package":"@types/react","qualifiedName":"React.PropsWithoutRef"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}],"name":"ForwardRefExoticComponent","package":"@types/react","qualifiedName":"React.ForwardRefExoticComponent"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}}}]}}]}}]},{"name":"unstable_integrateWithRouter","variant":"declaration","kind":64,"signatures":[{"name":"unstable_integrateWithRouter","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"> **warning** This API is unstable and may change between minor releases.\n\nWires an existing ["},{"kind":"code","text":"`standard-navigation`"},{"kind":"text","text":"](https://www.npmjs.com/package/standard-navigation)\nnavigator into Expo Router, returning a navigator component (with a "},{"kind":"code","text":"`.Screen`"},{"kind":"text","text":" child) usable as a\nlayout. Use "},{"kind":"code","text":"`unstable_createStandardRouterNavigator`"},{"kind":"text","text":" to create and integrate in one step."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { createStandardNavigator } from 'standard-navigation';\nimport { unstable_integrateWithRouter, TabRouter } from 'expo-router';\n\nconst navigator = createStandardNavigator(MyTabsContent);\nexport const Tabs = unstable_integrateWithRouter(navigator, TabRouter);\n```"}]}]},"typeParameters":[{"name":"NavigatorOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"State","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}},{"name":"EventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"StandardNavigatorEventMapBase","package":"expo-router"}},{"name":"NavigatorProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"}},{"name":"RouterOptions","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"name":"DefaultRouterOptions","package":"expo-router"}},{"name":"CreateProps","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"intrinsic","name":"object"}}],"parameters":[{"name":"navigator","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"The object returned by "},{"kind":"code","text":"`createStandardNavigator(...)`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"StandardNavigator"},"typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true},{"type":"intersection","types":[{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}]}],"name":"StandardNavigator","package":"expo-router"}},{"name":"router","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"The router factory to use. For example, "},{"kind":"code","text":"`StackRouter`"},{"kind":"text","text":" or "},{"kind":"code","text":"`TabRouter`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"RouterFactory"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"payload","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Additional data for the action"}]},"type":{"type":"intrinsic","name":"object"}},{"name":"source","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the route which dispatched this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the navigator which should handle this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the action (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")"}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reference","name":"RouterOptions","package":"expo-router","refersToTypeParameter":true}],"name":"RouterFactory","package":"expo-router"}},{"name":"options","variant":"param","kind":32768,"flags":{"isRest":true},"comment":{"summary":[{"kind":"text","text":"See "},{"kind":"code","text":"`IntegrateWithRouterOptions`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/index.tsx","qualifiedName":"IntegrateWithRouterOptionsTuple"},"typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"NoInfer"},"typeArguments":[{"type":"reference","name":"CreateProps","package":"expo-router","refersToTypeParameter":true}],"name":"NoInfer","package":"typescript"},{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"IntegrateWithRouterOptionsTuple","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ForwardRefExoticComponent"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithoutRef"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"StandardUseNavigationBuilderOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","name":"NavigatorProps","package":"expo-router","refersToTypeParameter":true},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","name":"RouterOptions","package":"expo-router","refersToTypeParameter":true},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"unstable_screenErrorBoundary","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A component to render when an individual screen in this navigator throws an error."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"reference","name":"ErrorBoundaryProps","package":"expo-router"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}}]}}]},{"type":"literal","value":"children"}],"name":"PickPartial","package":"expo-router"}],"name":"PropsWithoutRef","package":"@types/react","qualifiedName":"React.PropsWithoutRef"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}],"name":"ForwardRefExoticComponent","package":"@types/react","qualifiedName":"React.ForwardRefExoticComponent"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"NavigatorOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}}}]}}]}}]},{"name":"unstable_navigationEvents","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"addListener","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"typeParameters":[{"name":"EventType","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"literal","value":"pagePreloaded"},{"type":"literal","value":"pageFocused"},{"type":"literal","value":"pageBlurred"},{"type":"literal","value":"pageRemoved"},{"type":"literal","value":"actionDispatched"}]}}],"parameters":[{"name":"eventType","variant":"param","kind":32768,"type":{"type":"reference","name":"EventType","package":"expo-router","refersToTypeParameter":true}},{"name":"callback","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"event","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/index.ts","qualifiedName":"Payload"},"typeArguments":[{"type":"reference","name":"EventType","package":"expo-router","refersToTypeParameter":true}],"name":"Payload","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}}],"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}}]}}},{"name":"emit","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"typeParameters":[{"name":"EventType","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"literal","value":"pagePreloaded"},{"type":"literal","value":"pageFocused"},{"type":"literal","value":"pageBlurred"},{"type":"literal","value":"pageRemoved"},{"type":"literal","value":"actionDispatched"}]}}],"parameters":[{"name":"type","variant":"param","kind":32768,"type":{"type":"reference","name":"EventType","package":"expo-router","refersToTypeParameter":true}},{"name":"event","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/navigationEvents/index.ts","qualifiedName":"Payload"},"typeArguments":[{"type":"reference","name":"EventType","package":"expo-router","refersToTypeParameter":true}],"name":"Payload","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"enable","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}},"defaultValue":"..."},{"name":"isEnabled","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"boolean"}}]}},"defaultValue":"..."}]}},"defaultValue":"..."},{"name":"unstable_useIsNavigating","variant":"declaration","kind":64,"signatures":[{"name":"unstable_useIsNavigating","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns whether a navigation is queued or its state update is pending.\n\nThe current screen can remain visible while this returns "},{"kind":"code","text":"`true`"},{"kind":"text","text":" if the destination suspends.\n"},{"kind":"code","text":"`navigation.dispatchSync`"},{"kind":"text","text":" bypasses the queue, and native back gestures never enter it, so this\nhook does not report navigation triggered by either one.\nReturns "},{"kind":"code","text":"`false`"},{"kind":"text","text":" when called outside an Expo Router root."}],"modifierTags":["@experimental"]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"useCurrentRouteInfo","variant":"declaration","kind":64,"signatures":[{"name":"useCurrentRouteInfo","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns route info for a screen it is called from."}],"modifierTags":["@experimental"]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/global-state/getRouteInfoFromState.ts","qualifiedName":"UrlObject"},"name":"UrlObject","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}]},{"name":"useFocusEffect","variant":"declaration","kind":64,"signatures":[{"name":"useFocusEffect","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to run an effect whenever a route is **focused**. Similar to\n["},{"kind":"code","text":"`React.useEffect`"},{"kind":"text","text":"](https://react.dev/reference/react/useEffect), but the effect re-runs\neach time the screen comes into focus, and the optional cleanup function runs when the\nscreen loses focus — not on unmount. This makes it the right primitive for refetching\ndata, restarting subscriptions, or resetting transient screen state every time a user\nreturns to the route.\n\nThe passed callback should be wrapped in ["},{"kind":"code","text":"`React.useCallback`"},{"kind":"text","text":"](https://react.dev/reference/react/useCallback)\nto avoid running the effect too often."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useFocusEffect } from 'expo-router';\nimport { useCallback } from 'react';\n\nexport default function Route() {\n useFocusEffect(\n // Callback should be wrapped in `React.useCallback` to avoid running the effect too often.\n useCallback(() => {\n // Invoked whenever the route is focused.\n console.log(\"Hello, I'm focused!\");\n\n // Return function is invoked whenever the route gets out of focus.\n return () => {\n console.log('This route is now unfocused.');\n };\n }, []),\n );\n\n return >;\n}\n```"}]}]},"parameters":[{"name":"effect","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Memoized callback containing the effect, should optionally return a cleanup function."}]},"type":{"type":"reference","name":"EffectCallback","package":"expo-router"}},{"name":"do_not_pass_a_second_prop","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"useGlobalSearchParams","variant":"declaration","kind":64,"signatures":[{"name":"useGlobalSearchParams","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns URL parameters for globally selected route, including dynamic path segments.\nThis function updates even when the route is not focused. Useful for analytics or\nother background operations that don't draw to the screen.\n\nRoute URL example: "},{"kind":"code","text":"`acme://profile/baconbrix?extra=info`"},{"kind":"text","text":".\n\nWhen querying search params in a stack, opt-towards using\n["},{"kind":"code","text":"`useLocalSearchParams`"},{"kind":"text","text":"](#uselocalsearchparams) because it will only update when the route is focused.\n\n> **Note:** For usage information, see\n[Local versus global search parameters](/router/reference/url-parameters/#local-versus-global-url-parameters)."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { useGlobalSearchParams } from 'expo-router';\n\nexport default function Route() {\n // user=baconbrix & extra=info\n const { user, extra } = useGlobalSearchParams();\n\n return User: {user};\n}\n```"}]}]},"typeParameters":[{"name":"TRoute","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}},{"name":"TParams","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"},"default":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","typeArguments":[{"type":"reference","name":"TRoute","package":"expo-router","refersToTypeParameter":true}],"name":"RouteOutputParams","package":"expo-router"},{"type":"reference","name":"TParams","package":"expo-router","refersToTypeParameter":true}]}}]},{"name":"useIsFocused","variant":"declaration","kind":64,"signatures":[{"name":"useIsFocused","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to get the current focus state of the screen. Returns a "},{"kind":"code","text":"`true`"},{"kind":"text","text":" if screen is focused, otherwise "},{"kind":"code","text":"`false`"},{"kind":"text","text":".\nThis can be used if a component needs to render something based on the focus state."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"useLoaderData","variant":"declaration","kind":64,"signatures":[{"name":"useLoaderData","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the result of the "},{"kind":"code","text":"`loader`"},{"kind":"text","text":" function for the calling route."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { useLoaderData } from 'expo-router';\n\nexport function loader() {\n return Promise.resolve({ foo: 'bar' }};\n}\n\nexport default function Route() {\n const data = useLoaderData(); // { foo: 'bar' }\n\n return Data: {JSON.stringify(data)};\n}"}]}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-server","packagePath":"src/types.ts","qualifiedName":"LoaderFunction"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"LoaderFunction","package":"expo-server"},"default":{"type":"intrinsic","name":"any"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/hooks/useLoaderData.ts","qualifiedName":"LoaderFunctionResult"},"typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}],"name":"LoaderFunctionResult","package":"expo-router"}}]},{"name":"useLocalSearchParams","variant":"declaration","kind":64,"signatures":[{"name":"useLocalSearchParams","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the URL parameters for the contextually focused route. Useful for stacks where you may push a new screen\nthat changes the query parameters. For dynamic routes, both the route parameters and the search parameters are returned.\n\nRoute URL example: "},{"kind":"code","text":"`acme://profile/baconbrix?extra=info`"},{"kind":"text","text":".\n\nTo observe updates even when the invoking route is not focused, use ["},{"kind":"code","text":"`useGlobalSearchParams`"},{"kind":"text","text":"](#useglobalsearchparams).\n\n> **Note:** For usage information, see\n[Local versus global search parameters](/router/reference/url-parameters/#local-versus-global-url-parameters)."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { useLocalSearchParams } from 'expo-router';\n\nexport default function Route() {\n // user=baconbrix & extra=info\n const { user, extra } = useLocalSearchParams();\n\n return User: {user};\n}"}]}]},"typeParameters":[{"name":"TRoute","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}},{"name":"TParams","variant":"typeParam","kind":131072,"type":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"},"default":{"type":"reference","name":"UnknownOutputParams","package":"expo-router"}}],"type":{"type":"intersection","types":[{"type":"reference","typeArguments":[{"type":"reference","name":"TRoute","package":"expo-router","refersToTypeParameter":true}],"name":"RouteOutputParams","package":"expo-router"},{"type":"reference","name":"TParams","package":"expo-router","refersToTypeParameter":true}]}}]},{"name":"useNavigation","variant":"declaration","kind":64,"signatures":[{"name":"useNavigation","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation object for the current route. Mirrors the React Navigation\n["},{"kind":"code","text":"`navigation`"},{"kind":"text","text":" object](https://reactnavigation.org/docs/navigation-object). Use it to\nimperatively access layout-specific functionality like "},{"kind":"code","text":"`navigation.openDrawer()`"},{"kind":"text","text":" in a\n[Drawer](/router/advanced/drawer/) layout."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/index.tsx\nimport { useNavigation } from 'expo-router';\n\nexport default function Route() {\n // Access the current navigation object for the current route.\n const navigation = useNavigation();\n\n return (\n \n {\n // Open the drawer view.\n navigation.openDrawer();\n }}>\n Open Drawer\n \n \n );\n}\n```"},{"kind":"text","text":"\n\nWhen using nested layouts, you can access higher-order layouts by passing a secondary argument denoting the layout route.\nFor example, "},{"kind":"code","text":"`/menu/_layout.tsx`"},{"kind":"text","text":" is nested inside "},{"kind":"code","text":"`/app/orders/`"},{"kind":"text","text":", you can use "},{"kind":"code","text":"`useNavigation('/orders/menu/')`"},{"kind":"text","text":"."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx app/orders/menu/index.tsx\nimport { useNavigation } from 'expo-router';\n\nexport default function MenuRoute() {\n const rootLayout = useNavigation('/');\n const ordersLayout = useNavigation('/orders');\n\n // Same as the default results of `useNavigation()` when invoked in this route.\n const parentLayout = useNavigation('/orders/menu');\n}\n```"},{"kind":"text","text":"\n\nIf you attempt to access a layout that doesn't exist, an error such as\n"},{"kind":"code","text":"`Could not find parent navigation with route \"/non-existent\"`"},{"kind":"text","text":" is thrown."}]},{"tag":"@returns","content":[{"kind":"text","text":"The navigation object for the current route."}]},{"tag":"@see","content":[{"kind":"text","text":"The full navigation API is available directly from "},{"kind":"code","text":"`expo-router`"},{"kind":"text","text":" — no\n"},{"kind":"code","text":"`@react-navigation/*`"},{"kind":"text","text":" install required. For the navigator-dependent functions reference,\nsee [navigation dependent functions](https://reactnavigation.org/docs/navigation-object/#navigator-dependent-functions)."}]}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"__global.ReactNavigation.RootParamList"},"name":"RootParamList","package":"expo-router","qualifiedName":"__global.ReactNavigation.RootParamList"}],"name":"NavigationProp","package":"expo-router"},{"type":"literal","value":"getState"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getState","variant":"declaration","kind":2048,"signatures":[{"name":"getState","variant":"signature","kind":4096,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"intrinsic","name":"undefined"}]}}]}]}}]}}],"parameters":[{"name":"parent","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Provide an absolute path such as "},{"kind":"code","text":"`/(root)`"},{"kind":"text","text":" to the parent route or a relative path like "},{"kind":"code","text":"`../../`"},{"kind":"text","text":" to the parent route."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","name":"HrefObject","package":"expo-router"}]}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"useNavigationContainerRef","variant":"declaration","kind":64,"signatures":[{"name":"useNavigationContainerRef","variant":"signature","kind":4096,"comment":{"summary":[],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"The root "},{"kind":"code","text":"``"},{"kind":"text","text":" ref for the app. The "},{"kind":"code","text":"`ref.current`"},{"kind":"text","text":" may be "},{"kind":"code","text":"`null`"},{"kind":"text","text":"\nif the "},{"kind":"code","text":"``"},{"kind":"text","text":" hasn't mounted yet."}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationContainerRefWithCurrent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"__global.ReactNavigation.RootParamList"},"name":"RootParamList","package":"expo-router","qualifiedName":"__global.ReactNavigation.RootParamList"}],"name":"NavigationContainerRefWithCurrent","package":"expo-router"}}]},{"name":"usePathname","variant":"declaration","kind":64,"signatures":[{"name":"usePathname","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the currently selected route location without search parameters. For example, "},{"kind":"code","text":"`/acme?foo=bar`"},{"kind":"text","text":" returns "},{"kind":"code","text":"`/acme`"},{"kind":"text","text":".\nSegments will be normalized. For example, "},{"kind":"code","text":"`/[id]?id=normal`"},{"kind":"text","text":" becomes "},{"kind":"code","text":"`/normal`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { usePathname } from 'expo-router';\n\nexport default function Route() {\n // pathname = \"/profile/baconbrix\"\n const pathname = usePathname();\n\n return Pathname: {pathname};\n}\n```"}]}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"useRootNavigation","variant":"declaration","kind":64,"signatures":[{"name":"useRootNavigation","variant":"signature","kind":4096,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use ["},{"kind":"code","text":"`useNavigationContainerRef`"},{"kind":"text","text":"](#usenavigationcontainerref) instead,\nwhich returns a React "},{"kind":"code","text":"`ref`"},{"kind":"text","text":"."}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationContainerRef"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"NavigationContainerRef","package":"expo-router"},{"type":"literal","value":null}]}}]},{"name":"useRootNavigationState","variant":"declaration","kind":64,"signatures":[{"name":"useRootNavigationState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation state of the root navigator — the top-level navigator that\ncontains the current screen."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useRootNavigationState } from 'expo-router';\n\nexport default function Route() {\n const { routes } = useRootNavigationState();\n\n return {routes[0].name};\n}\n```"}]},{"tag":"@returns","content":[{"kind":"text","text":"The current "},{"kind":"code","text":"`NavigationState`"},{"kind":"text","text":" of the root navigator."}]},{"tag":"@see","content":[{"kind":"text","text":"React Navigation's [navigation state](https://reactnavigation.org/docs/navigation-state/)\nreference for the shape of the returned object."}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationState"},"name":"NavigationState","package":"expo-router"}}]},{"name":"useRoute","variant":"declaration","kind":64,"signatures":[{"name":"useRoute","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to access the route prop of the parent screen anywhere."}],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"Route prop of the parent screen."}]}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"useRoutePath","variant":"declaration","kind":64,"signatures":[{"name":"useRoutePath","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to get the path for the current route based on linking options."}],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"Path for the current route."}]}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"useRouter","variant":"declaration","kind":64,"signatures":[{"name":"useRouter","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the [Router](#imperativerouter) object for imperative navigation."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useRouter } from 'expo-router';\nimport { Text } from 'react-native';\n\nexport default function Route() {\n const router = useRouter();\n\n return (\n router.push('/home')}>Go Home\n );\n}\n```"}]}]},"type":{"type":"reference","name":"ImperativeRouter","package":"expo-router"}}]},{"name":"useScrollToTop","variant":"declaration","kind":64,"signatures":[{"name":"useScrollToTop","variant":"signature","kind":4096,"parameters":[{"name":"ref","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefObject"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native/useScrollToTop.tsx","qualifiedName":"ScrollableWrapper"},"name":"ScrollableWrapper","package":"expo-router"}],"name":"RefObject","package":"@types/react","qualifiedName":"React.RefObject"}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"useSegments","variant":"declaration","kind":64,"signatures":[{"name":"useSegments","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns a list of selected file segments for the currently selected route. Segments are not normalized,\nso they will be the same as the file path. For example, "},{"kind":"code","text":"`/[id]?id=normal`"},{"kind":"text","text":" becomes "},{"kind":"code","text":"`[\"[id]\"]`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/profile/[user].tsx\nimport { Text } from 'react-native';\nimport { useSegments } from 'expo-router';\n\nexport default function Route() {\n // segments = [\"profile\", \"[user]\"]\n const segments = useSegments();\n\n return Hello;\n}\n```"},{"kind":"text","text":"\n\n\n"},{"kind":"code","text":"`useSegments`"},{"kind":"text","text":" can be typed using an abstract. Consider the following file structure:\n\n"},{"kind":"code","text":"```md\n- app\n - [user]\n - index.tsx\n - followers.tsx\n - settings.tsx\n```"},{"kind":"text","text":"\n\n\nThis can be strictly typed using the following abstract with "},{"kind":"code","text":"`useSegments`"},{"kind":"text","text":" hook:\n\n"},{"kind":"code","text":"```tsx\nconst [first, second] = useSegments<['settings'] | ['[user]'] | ['[user]', 'followers']>()\n```"}]}]},"typeParameters":[{"name":"TSegments","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"},"default":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","typeArguments":[{"type":"reference","name":"TSegments","package":"expo-router","refersToTypeParameter":true}],"name":"RouteSegments","package":"expo-router"}}]},{"name":"useServerDocumentContext","variant":"declaration","kind":64,"signatures":[{"name":"useServerDocumentContext","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the server document data for server-side rendering, including "},{"kind":"code","text":"``"},{"kind":"text","text":"/"},{"kind":"code","text":"``"},{"kind":"text","text":"\nattributes and additional nodes to add to "},{"kind":"code","text":"``"},{"kind":"text","text":"/"},{"kind":"code","text":"``"},{"kind":"text","text":" for metadata and assets."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useServerDocumentContext } from 'expo-router/html';\n\nexport default function Root({ children }) {\n const { htmlAttributes, bodyAttributes, headNodes, bodyNodes } = useServerDocumentContext();\n return (\n \n {headNodes}\n \n {children}\n {bodyNodes}\n \n \n );\n}\n```"}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/server/ServerDocument.tsx","qualifiedName":"ServerDocumentData"},"name":"ServerDocumentData","package":"expo-router"}}]},{"name":"useSitemap","variant":"declaration","kind":64,"signatures":[{"name":"useSitemap","variant":"signature","kind":4096,"type":{"type":"union","types":[{"type":"reference","name":"SitemapType","package":"expo-router"},{"type":"literal","value":null}]}}]},{"name":"useTheme","variant":"declaration","kind":64,"signatures":[{"name":"useTheme","variant":"signature","kind":4096,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"__global.ReactNavigation.Theme"},"name":"Theme","package":"expo-router","qualifiedName":"__global.ReactNavigation.Theme"}}]},{"name":"VectorIcon","variant":"declaration","kind":64,"signatures":[{"name":"VectorIcon","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Helper component for loading vector icons.\n\nPrefer using the "},{"kind":"code","text":"`md`"},{"kind":"text","text":" and "},{"kind":"code","text":"`sf`"},{"kind":"text","text":" props on "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" rather than using this component directly.\nOnly use this component when you need to load a specific icon from a vector icon family."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Icon, VectorIcon } from 'expo-router';\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\n\n} />\n```"}]}]},"typeParameters":[{"name":"NameT","variant":"typeParam","kind":131072,"flags":{"isConst":true},"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"NameT","package":"expo-router","refersToTypeParameter":true}],"name":"VectorIconProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"VectorIconProps","variant":"declaration","kind":256,"children":[{"name":"family","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The family of the vector icon."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\n```"}]},{"tag":"@hideType","content":[]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getImageSource","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"name","variant":"param","kind":32768,"type":{"type":"reference","name":"NameT","package":"expo-router","qualifiedName":"VectorIconProps.NameT","refersToTypeParameter":true}},{"name":"size","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"number"}},{"name":"color","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}],"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"literal","value":null}]}],"name":"Promise","package":"typescript"}}]}}}]}}},{"name":"name","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The name of the vector icon."}]},"type":{"type":"reference","name":"NameT","package":"expo-router","qualifiedName":"VectorIconProps.NameT","refersToTypeParameter":true}}],"typeParameters":[{"name":"NameT","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}]},{"name":"withLayoutContext","variant":"declaration","kind":64,"signatures":[{"name":"withLayoutContext","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns a navigator that automatically injects matched routes and renders nothing when there are no children.\nReturn type with "},{"kind":"code","text":"`children`"},{"kind":"text","text":" prop optional.\n\nEnables use of other built-in React Navigation navigators and other navigators built with the React Navigation custom navigator API."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/_layout.tsx\nimport { ParamListBase, TabNavigationState } from \"@react-navigation/native\";\nimport {\n createMaterialTopTabNavigator,\n MaterialTopTabNavigationOptions,\n MaterialTopTabNavigationEventMap,\n} from \"@react-navigation/material-top-tabs\";\nimport { withLayoutContext } from \"expo-router\";\n\nconst MaterialTopTabs = createMaterialTopTabNavigator();\n\nconst ExpoRouterMaterialTopTabs = withLayoutContext<\n MaterialTopTabNavigationOptions,\n typeof MaterialTopTabs.Navigator,\n TabNavigationState,\n MaterialTopTabNavigationEventMap\n>(MaterialTopTabs.Navigator);\n\nexport default function TabLayout() {\n return ;\n}\n```"}]}]},"typeParameters":[{"name":"TOptions","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"object"},"default":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}},{"name":"T","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"},"default":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}},{"name":"TState","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},"default":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}},{"name":"TEventMap","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapBase"},"name":"EventMapBase","package":"expo-router"},"default":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapBase"},"name":"EventMapBase","package":"expo-router"}}],"parameters":[{"name":"Nav","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"The navigator component to wrap."}]},"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}},{"name":"processScreens","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A function that processes the screens before passing them to the navigator.\nIt must preserve every screen name exactly once because guards are associated with the original\nscreen names."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"screens","variant":"param","kind":32768,"type":{"type":"array","elementType":{"type":"intersection","types":[{"type":"reference","typeArguments":[{"type":"reference","name":"TOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"name","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}}}],"type":{"type":"array","elementType":{"type":"intersection","types":[{"type":"reference","typeArguments":[{"type":"reference","name":"TOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"name","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}}}]}}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ForwardRefExoticComponent"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithoutRef"},"typeArguments":[{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentProps"},"typeArguments":[{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}],"name":"ComponentProps","package":"@types/react","qualifiedName":"React.ComponentProps"},{"type":"literal","value":"children"}],"name":"PickPartial","package":"expo-router"}],"name":"PropsWithoutRef","package":"@types/react","qualifiedName":"React.PropsWithoutRef"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}],"name":"ForwardRefExoticComponent","package":"@types/react","qualifiedName":"React.ForwardRefExoticComponent"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"TOptions","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}}}]}}]}}]}],"packageName":"expo-router"}
\ No newline at end of file
diff --git a/docs/public/static/data/unversioned/expo-router/experimental-stack.json b/docs/public/static/data/unversioned/expo-router/experimental-stack.json
index 3ae5685ade82b3..8006a1fca34cbd 100644
--- a/docs/public/static/data/unversioned/expo-router/experimental-stack.json
+++ b/docs/public/static/data/unversioned/expo-router/experimental-stack.json
@@ -1 +1 @@
-{"schemaVersion":"2.0","name":"expo-router/experimental-stack","variant":"project","kind":1,"children":[{"name":"ExperimentalStackNavigationEventMap","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Navigator-level events emitted by "},{"kind":"code","text":"`ExperimentalStack`"},{"kind":"text","text":". Mirrors the subset of\n"},{"kind":"code","text":"`NativeStackNavigationEventMap`"},{"kind":"text","text":" that the gamma "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" lifecycle\ncallbacks can drive."}],"modifierTags":["@experimental"]},"children":[{"name":"gestureCancel","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}},{"name":"transitionEnd","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}},{"name":"transitionStart","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}}]},{"name":"ExperimentalStackNavigationHelpers","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationEventMap","package":"expo-router"}],"name":"NavigationHelpers","package":"expo-router"}},{"name":"ExperimentalStackNavigationOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options accepted by "},{"kind":"code","text":"`ExperimentalStack`"},{"kind":"text","text":" screens. Mirrors the narrow option\nsurface of the gamma "},{"kind":"code","text":"``"},{"kind":"text","text":" component from\n"},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":". Anything outside this shape is dropped\nwith a "},{"kind":"code","text":"`__DEV__`"},{"kind":"text","text":" warning at runtime."}],"modifierTags":["@experimental"]},"children":[{"name":"headerBackVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerShown","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerTransparent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}}]},{"name":"ExperimentalStackNavigationProp","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationOptions","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationEventMap","package":"expo-router"}],"name":"NavigationProp","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackActionHelpers"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackActionHelpers","package":"expo-router"}]}},{"name":"ExperimentalStackScreenProps","variant":"declaration","kind":2097152,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true}],"name":"ExperimentalStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}],"name":"RouteProp","package":"expo-router"}}],"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}]},{"name":"ExperimentalStack","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Renders the new "},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":" native stack.\n\nSibling to "},{"kind":"code","text":"`Stack`"},{"kind":"text","text":". Native-only — on web it falls back to the standard "},{"kind":"code","text":"`Stack`"},{"kind":"text","text":".\nOpt-in per navigator: replace "},{"kind":"code","text":"``"},{"kind":"text","text":" with "},{"kind":"code","text":"``"},{"kind":"text","text":" in the\nspecific layout you want to migrate."}],"modifierTags":["@experimental"]},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/experimental-stack/types.ts","qualifiedName":"ExperimentalStackNavigatorProps"},"name":"ExperimentalStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"UNSTABLE_router"},{"type":"literal","value":"UNSTABLE_routeNamesChangeBehavior"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: StackNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; ... 4 more ...; UNSTABLE_routeNamesChangeBehavior?: \"firstMatch\" | ... 1 more ... | undefined; ..."}]},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/experimental-stack/types.ts","qualifiedName":"ExperimentalStackNavigatorProps"},"name":"ExperimentalStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"UNSTABLE_router"},{"type":"literal","value":"UNSTABLE_routeNamesChangeBehavior"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: StackNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; ... 4 more ...; UNSTABLE_routeNamesChangeBehavior?: \"firstMatch\" | ... 1 more ... | undefined; ..."}]},{"type":"literal","value":"children"}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/StackScreen.tsx","qualifiedName":"StackScreenProps"},"name":"StackScreenProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"BackButton","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to configure the back button.\n\nCan be used inside Stack.Screen in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Back\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n >\n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/screen/StackScreenBackButton.tsx","qualifiedName":"StackScreenBackButtonProps"},"name":"StackScreenBackButtonProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackScreenBackButton"},{"name":"Title","variant":"declaration","kind":1024,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`Stack.Title`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to set the screen title.\n\nCan be used inside "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"text","text":"String title in a layout:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Home\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"String title inside a screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n My Page\n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"Custom component as the title using "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":":\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/StackTitle.tsx","qualifiedName":"StackTitleProps"},"name":"StackTitleProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackTitle"}]}}]},"defaultValue":"StackScreen"}]}}]},"defaultValue":"..."},{"name":"default","variant":"reference","kind":4194304}],"packageName":"expo-router"}
\ No newline at end of file
+{"schemaVersion":"2.0","name":"expo-router/experimental-stack","variant":"project","kind":1,"children":[{"name":"ExperimentalStackNavigationEventMap","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Navigator-level events emitted by "},{"kind":"code","text":"`ExperimentalStack`"},{"kind":"text","text":". Mirrors the subset of\n"},{"kind":"code","text":"`NativeStackNavigationEventMap`"},{"kind":"text","text":" that the gamma "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" lifecycle\ncallbacks can drive."}],"modifierTags":["@experimental"]},"children":[{"name":"gestureCancel","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}},{"name":"removePrevented","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"action","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}}]}}}]}}},{"name":"transitionEnd","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}},{"name":"transitionStart","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"closing","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}}]}}}]}}}]},{"name":"ExperimentalStackNavigationHelpers","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationEventMap","package":"expo-router"}],"name":"NavigationHelpers","package":"expo-router"}},{"name":"ExperimentalStackNavigationOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options accepted by "},{"kind":"code","text":"`ExperimentalStack`"},{"kind":"text","text":" screens. Mirrors the narrow option\nsurface of the gamma "},{"kind":"code","text":"``"},{"kind":"text","text":" component from\n"},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":". Anything outside this shape is dropped\nwith a "},{"kind":"code","text":"`__DEV__`"},{"kind":"text","text":" warning at runtime."}],"modifierTags":["@experimental"]},"children":[{"name":"headerBackVisible","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerShown","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"headerTransparent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}}]},{"name":"ExperimentalStackNavigationProp","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationOptions","package":"expo-router"},{"type":"reference","name":"ExperimentalStackNavigationEventMap","package":"expo-router"}],"name":"NavigationProp","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackActionHelpers"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}],"name":"StackActionHelpers","package":"expo-router"}]}},{"name":"ExperimentalStackScreenProps","variant":"declaration","kind":2097152,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true}],"name":"ExperimentalStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}],"name":"RouteProp","package":"expo-router"}}],"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"intrinsic","name":"string"}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}]},{"name":"ExperimentalStack","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Renders the new "},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":" native stack.\n\nSibling to "},{"kind":"code","text":"`Stack`"},{"kind":"text","text":". Native-only — on web it falls back to the standard "},{"kind":"code","text":"`Stack`"},{"kind":"text","text":".\nOpt-in per navigator: replace "},{"kind":"code","text":"``"},{"kind":"text","text":" with "},{"kind":"code","text":"``"},{"kind":"text","text":" in the\nspecific layout you want to migrate."}],"modifierTags":["@experimental"]},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/experimental-stack/types.ts","qualifiedName":"ExperimentalStackNavigatorProps"},"name":"ExperimentalStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"UNSTABLE_router"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: StackNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; screenListeners?: Partial<...> | ... 1 more ... | undefined; screenOptions?: ExperimentalStackN..."}]},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/experimental-stack/types.ts","qualifiedName":"ExperimentalStackNavigatorProps"},"name":"ExperimentalStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"UNSTABLE_router"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"unknown","name":"{ children: ReactNode; layout?: ((props: { state: StackNavigationState; navigation: NavigationHelpers; descriptors: Record<...>; children: ReactNode; }) => ReactElement<...>) | undefined; screenListeners?: Partial<...> | ... 1 more ... | undefined; screenOptions?: ExperimentalStackN..."}]},{"type":"literal","value":"children"}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/StackScreen.tsx","qualifiedName":"StackScreenProps"},"name":"StackScreenProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"BackButton","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to configure the back button.\n\nCan be used inside Stack.Screen in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Back\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n >\n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/screen/StackScreenBackButton.tsx","qualifiedName":"StackScreenBackButtonProps"},"name":"StackScreenBackButtonProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackScreenBackButton"},{"name":"Title","variant":"declaration","kind":1024,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`Stack.Title`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to set the screen title.\n\nCan be used inside "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"text","text":"String title in a layout:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Home\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"String title inside a screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n My Page\n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"Custom component as the title using "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":":\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/StackTitle.tsx","qualifiedName":"StackTitleProps"},"name":"StackTitleProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackTitle"}]}}]},"defaultValue":"StackScreen"}]}}]},"defaultValue":"..."},{"name":"default","variant":"reference","kind":4194304}],"packageName":"expo-router"}
\ No newline at end of file
diff --git a/docs/public/static/data/unversioned/expo-router/link.json b/docs/public/static/data/unversioned/expo-router/link.json
index 2c1b2bc1cde9b6..825ee3c3699be1 100644
--- a/docs/public/static/data/unversioned/expo-router/link.json
+++ b/docs/public/static/data/unversioned/expo-router/link.json
@@ -1 +1 @@
-{"schemaVersion":"2.0","name":"expo-router/link","variant":"project","kind":1,"children":[{"name":"DismissalBoundsRect","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"Defines the screen bounds where interactive dismissal gestures are allowed for zoom transitions."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"children":[{"name":"maxX","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Maximum X coordinate (right edge) where dismissal gestures are allowed."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"maxY","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Maximum Y coordinate (bottom edge) where dismissal gestures are allowed."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"minX","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Minimum X coordinate (left edge) where dismissal gestures are allowed."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"minY","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Minimum Y coordinate (top edge) where dismissal gestures are allowed."}]},"type":{"type":"intrinsic","name":"number"}}]},{"name":"LinkAppleZoomProps","variant":"declaration","kind":256,"children":[{"name":"alignmentRect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Defines the rectangle used for the zoom transition's alignment. This rectangle is specified in the zoomed screen's coordinate space."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios 18+"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"height","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}},{"name":"width","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}},{"name":"x","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}},{"name":"y","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}}]}}}],"extendedTypes":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}]},{"name":"LinkMenuActionProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title of the menu item."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as destructive."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be disabled and not selectable."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/disabled) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"discoverabilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An elaborated title that explains the purpose of the action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the menu element should be hidden."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/hidden) for more information."}]},{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"SF Symbol displayed alongside the menu item."}]},"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom image loaded using "},{"kind":"code","text":"`useImage()`"},{"kind":"text","text":" hook from "},{"kind":"code","text":"`expo-image`"},{"kind":"text","text":".\nTakes priority over "},{"kind":"code","text":"`icon`"},{"kind":"text","text":" (SF Symbol) when both are provided."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useImage } from 'expo-image';\nimport { Link } from 'expo-router';\n\nconst customIcon = useImage('https://simpleicons.org/icons/expo.svg', {\n maxWidth: 24,\n maxHeight: 24,\n});\n\n\n {}} />\n\n```"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"imageRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered on iOS.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": iOS applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": Preserves original icon colors"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"isOn","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as selected."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"onPress","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"subtitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An optional subtitle for the menu item."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/subtitle) for more information."}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title of the menu item."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`children`"},{"kind":"text","text":" prop instead."}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"unstable_keepPresented","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be kept presented after the action is selected.\n\nThis is marked as unstable, because when action is selected it will recreate the menu,\nwhich will close all opened submenus and reset the scroll position."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/keepsmenupresented) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"LinkMenuProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as destructive."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/destructive) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"displayAsPalette","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`palette`"},{"kind":"text","text":" prop instead."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"displayInline","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`inline`"},{"kind":"text","text":" prop instead."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"elementSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The preferred size of the menu elements.\n"},{"kind":"code","text":"`elementSize`"},{"kind":"text","text":" property is ignored when "},{"kind":"code","text":"`palette`"},{"kind":"text","text":" is used."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/preferredelementsize) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 16.0+"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"small"},{"type":"literal","value":"auto"},{"type":"literal","value":"medium"},{"type":"literal","value":"large"}]}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional SF Symbol displayed alongside the menu item."}]},"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom image loaded using "},{"kind":"code","text":"`useImage()`"},{"kind":"text","text":" hook from "},{"kind":"code","text":"`expo-image`"},{"kind":"text","text":".\nTakes priority over "},{"kind":"code","text":"`icon`"},{"kind":"text","text":" (SF Symbol) when both are provided."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useImage } from 'expo-image';\nimport { Link } from 'expo-router';\n\nconst customIcon = useImage('https://simpleicons.org/icons/expo.svg', {\n maxWidth: 24,\n maxHeight: 24,\n});\n\n\n {}} />\n\n```"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"inline","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be displayed inline.\nThis means that the menu will not be collapsed"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayinline) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"palette","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be displayed as a palette.\nThis means that the menu will be displayed as one row.\nThe "},{"kind":"code","text":"`elementSize`"},{"kind":"text","text":" property is ignored when palette is used, all items will be "},{"kind":"code","text":"`elementSize=\"small\"`"},{"kind":"text","text":". Use "},{"kind":"code","text":"`elementSize=\"medium\"`"},{"kind":"text","text":" instead of "},{"kind":"code","text":"`palette`"},{"kind":"text","text":" to display actions with titles horizontally.\n\n> **Note**: Palette menus are only supported in submenus."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayaspalette) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"subtitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An optional subtitle for the submenu. Does not appear on "},{"kind":"code","text":"`inline`"},{"kind":"text","text":" menus."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/subtitle) for more information."}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title of the menu item"}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"LinkPreviewProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom styles for the preview container.\n\nNote that some styles may not work, as they are limited or reset by the native view"}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/link/elements.tsx","qualifiedName":"LinkPreviewStyle"},"name":"LinkPreviewStyle","package":"expo-router"}}]},{"name":"LinkProps","variant":"declaration","kind":256,"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Used to customize the "},{"kind":"code","text":"`Link`"},{"kind":"text","text":" component. It will forward all props to the\nfirst child of the "},{"kind":"code","text":"`Link`"},{"kind":"text","text":". Note that the child component must accept\n"},{"kind":"code","text":"`onPress`"},{"kind":"text","text":" or "},{"kind":"code","text":"`onClick`"},{"kind":"text","text":" props. The "},{"kind":"code","text":"`href`"},{"kind":"text","text":" and "},{"kind":"code","text":"`role`"},{"kind":"text","text":" are also\npassed to the child."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { Pressable, Text } from 'react-native';\n\nexport default function Route() {\n return (\n \n \n \n Home\n \n \n \n );\n}\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"className","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"On native, this can be used with CSS interop tools like Nativewind.\nOn web, this sets the HTML "},{"kind":"code","text":"`class`"},{"kind":"text","text":" directly."}]},"type":{"type":"intrinsic","name":"string"},"overwrites":{"type":"reference","name":"Omit.className","package":"expo"}},{"name":"dangerouslySingular","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When navigating in a Stack, if the target is valid then screens in the history that matches\nthe uniqueness constraint will be removed.\n\nIf used with "},{"kind":"code","text":"`push`"},{"kind":"text","text":", the history will be filtered even if no navigation occurs."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"SingularOptions"},"name":"SingularOptions","package":"expo-router"}},{"name":"dismissTo","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"While in a stack, this will dismiss screens until the provided "},{"kind":"code","text":"`href`"},{"kind":"text","text":" is reached. If the href is not found,\nit will instead replace the current screen with the provided "},{"kind":"code","text":"`href`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n Close modal\n \n );\n}\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"download","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[{"kind":"text","text":"Specifies that the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) should be downloaded when the user clicks on the\nlink, instead of navigating to it. It is typically used for links that point to\nfiles that the user should download, such as PDFs, images, documents, and more.\n\nThe value of the "},{"kind":"code","text":"`download`"},{"kind":"text","text":" property, which represents the filename for the\ndownloaded file. This property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```jsx\nDownload image\n```"}]}]},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"WebAnchorProps.download"}},{"name":"href","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The path of the route to navigate to. It can either be:\n- **string**: A full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":".\n- **object**: An object with a "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" and optional "},{"kind":"code","text":"`params`"},{"kind":"text","text":". The "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" can be\na full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":". The\nparams can be an object of key-value pairs."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx Dynamic\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n About\n \n View user\n \n \n );\n}\n```"}]}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"HrefObject"},"name":"HrefObject","package":"expo-router"}]}},{"name":"lang","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"Omit.lang","package":"expo"}},{"name":"onPress","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"This function is called on press.\nText intrinsically supports press handling with a default highlight state (which can be disabled with suppressHighlighting)."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"event","variant":"param","kind":32768,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.MouseEvent"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.dom.d.ts","qualifiedName":"HTMLAnchorElement"},"name":"HTMLAnchorElement","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.dom.d.ts","qualifiedName":"MouseEvent"},"name":"MouseEvent","package":"typescript"}],"name":"MouseEvent","package":"@types/react","qualifiedName":"React.MouseEvent"},{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Types/CoreEventTypes.d.ts","qualifiedName":"GestureResponderEvent"},"name":"GestureResponderEvent","package":"react-native"}]}}],"type":{"type":"intrinsic","name":"void"}}]}},"overwrites":{"type":"reference","name":"Omit.onPress","package":"react-native"}},{"name":"prefetch","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Prefetches the route when the component is rendered on a focused screen."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"push","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Always pushes a new route, and never pops or replaces to existing route.\nYou can push the current route multiple times or with new parameters."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n Login\n \n );\n}\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"ref","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.Ref"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Text/Text.d.ts","qualifiedName":"Text"},"name":"Text","package":"react-native"}],"name":"Ref","package":"@types/react","qualifiedName":"React.Ref"}},{"name":"rel","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[{"kind":"text","text":"Specifies the relationship between the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) and the current route.\n\nCommon values:\n- **nofollow**: Indicates to search engines that they should not follow the "},{"kind":"code","text":"`href`"},{"kind":"text","text":".\nThis is often used for user-generated content or links that should not influence\nsearch engine rankings.\n- **noopener**: Suggests that the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" should not have access to the opening\nwindow's "},{"kind":"code","text":"`window.opener`"},{"kind":"text","text":" object, which is a security measure to prevent potentially\nharmful behavior in cases of links that open new tabs or windows.\n- **noreferrer**: Requests that the browser does not send the "},{"kind":"code","text":"`Referer`"},{"kind":"text","text":" HTTP header\nwhen navigating to the "},{"kind":"code","text":"`href`"},{"kind":"text","text":". This can enhance user privacy.\n\nThe "},{"kind":"code","text":"`rel`"},{"kind":"text","text":" property is primarily used for informational and instructive purposes, helping browsers and web\ncrawlers make better decisions about how to handle and interpret the links on a web\npage. It is important to use appropriate "},{"kind":"code","text":"`rel`"},{"kind":"text","text":" values to ensure that links behave as intended and adhere\nto best practices for web development and SEO (Search Engine Optimization).\n\nThis property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```jsx\nGo to Expo\n```"}]}]},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"WebAnchorProps.rel"}},{"name":"relativeToDirectory","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Relative URL references are either relative to the directory or the document.\nBy default, relative paths are relative to the document."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Resolving relative references in Mozilla's documentation](https://developer.mozilla.org/en-US/docs/Web/API/URL_API/Resolving_relative_references)."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"replace","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Removes the current route from the history and replace it with the\nspecified URL. This is useful for [redirects](/router/reference/redirects/)."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n Login\n \n );\n}\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"https://reactnative.dev/docs/text#style"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"},"inheritedFrom":{"type":"reference","name":"Omit.style","package":"react-native"}},{"name":"tabIndex","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"type":{"type":"intrinsic","name":"number"},"inheritedFrom":{"type":"reference","name":"Omit.tabIndex","package":"expo"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[{"kind":"text","text":"Specifies where to open the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href).\n\n- **_self**: the current tab.\n- **_blank**: opens in a new tab or window.\n- **_parent**: opens in the parent browsing context. If no parent, defaults to **_self**.\n- **_top**: opens in the highest browsing context ancestor. If no ancestors,\ndefaults to **_self**.\n\nThis property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'_self'"}]},{"tag":"@example","content":[{"kind":"code","text":"```jsx\nGo to Expo in new tab\n```"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"_self"},{"type":"literal","value":"_blank"},{"type":"literal","value":"_parent"},{"type":"literal","value":"_top"}]},"inheritedFrom":{"type":"reference","name":"WebAnchorProps.target"}},{"name":"withAnchor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Replaces the initial screen with the current route."}]},"type":{"type":"intrinsic","name":"boolean"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Text/Text.d.ts","qualifiedName":"TextProps"},"name":"TextProps","package":"react-native"},{"type":"literal","value":"href"}],"name":"Omit","package":"typescript"},{"type":"reference","name":"WebAnchorProps","package":"expo-router"}]},{"name":"LinkTriggerProps","variant":"declaration","kind":256,"children":[{"name":"withAppleZoom","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A shorthand for enabling the Apple Zoom Transition on this link trigger.\n\nWhen set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the trigger will be wrapped with "},{"kind":"code","text":"`Link.AppleZoom`"},{"kind":"text","text":".\nIf another "},{"kind":"code","text":"`Link.AppleZoom`"},{"kind":"text","text":" is already used inside "},{"kind":"code","text":"`Link.Trigger`"},{"kind":"text","text":", an error\nwill be thrown."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios 18+"}]}]},"type":{"type":"intrinsic","name":"boolean"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}]},{"name":"UsePreventZoomTransitionDismissalOptions","variant":"declaration","kind":256,"children":[{"name":"unstable_dismissalBoundsRect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Defines the screen bounds where interactive dismissal gestures are allowed.\n\nEach coordinate is optional. Undefined coordinates place no restriction on that dimension.\nFor example, if only "},{"kind":"code","text":"`minY`"},{"kind":"text","text":" and "},{"kind":"code","text":"`maxY`"},{"kind":"text","text":" are defined, horizontal gestures are unrestricted\nwhile vertical gestures must stay within the Y bounds."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiviewcontroller/transition/zoomoptions/interactivedismissshouldbegin) for more information."}]}]},"type":{"type":"reference","name":"DismissalBoundsRect","package":"expo-router"}}]},{"name":"LinkComponent","variant":"declaration","kind":2097152,"type":{"type":"query","queryType":{"type":"reference","name":"Link","package":"expo-router"}}},{"name":"RedirectProps","variant":"declaration","kind":2097152,"children":[{"name":"href","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The path of the route to navigate to. It can either be:\n- **string**: A full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":".\n- **object**: An object with a "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" and optional "},{"kind":"code","text":"`params`"},{"kind":"text","text":". The "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" can be\na full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":". The\nparams can be an object of key-value pairs."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx Dynamic\nimport { Redirect } from 'expo-router';\n\nexport default function RedirectToAbout() {\n return (\n \n );\n}\n```"}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"Href"},"name":"Href","package":"expo-router"}},{"name":"relativeToDirectory","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Relative URL references are either relative to the directory or the document.\nBy default, relative paths are relative to the document."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Resolving relative references in Mozilla's documentation](https://developer.mozilla.org/en-US/docs/Web/API/URL_API/Resolving_relative_references)."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"withAnchor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Replaces the initial screen with the current route."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"WebAnchorProps","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"children":[{"name":"download","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Specifies that the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) should be downloaded when the user clicks on the\nlink, instead of navigating to it. It is typically used for links that point to\nfiles that the user should download, such as PDFs, images, documents, and more.\n\nThe value of the "},{"kind":"code","text":"`download`"},{"kind":"text","text":" property, which represents the filename for the\ndownloaded file. This property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```jsx\nDownload image\n```"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"rel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Specifies the relationship between the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) and the current route.\n\nCommon values:\n- **nofollow**: Indicates to search engines that they should not follow the "},{"kind":"code","text":"`href`"},{"kind":"text","text":".\nThis is often used for user-generated content or links that should not influence\nsearch engine rankings.\n- **noopener**: Suggests that the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" should not have access to the opening\nwindow's "},{"kind":"code","text":"`window.opener`"},{"kind":"text","text":" object, which is a security measure to prevent potentially\nharmful behavior in cases of links that open new tabs or windows.\n- **noreferrer**: Requests that the browser does not send the "},{"kind":"code","text":"`Referer`"},{"kind":"text","text":" HTTP header\nwhen navigating to the "},{"kind":"code","text":"`href`"},{"kind":"text","text":". This can enhance user privacy.\n\nThe "},{"kind":"code","text":"`rel`"},{"kind":"text","text":" property is primarily used for informational and instructive purposes, helping browsers and web\ncrawlers make better decisions about how to handle and interpret the links on a web\npage. It is important to use appropriate "},{"kind":"code","text":"`rel`"},{"kind":"text","text":" values to ensure that links behave as intended and adhere\nto best practices for web development and SEO (Search Engine Optimization).\n\nThis property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```jsx\nGo to Expo\n```"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Specifies where to open the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href).\n\n- **_self**: the current tab.\n- **_blank**: opens in a new tab or window.\n- **_parent**: opens in the parent browsing context. If no parent, defaults to **_self**.\n- **_top**: opens in the highest browsing context ancestor. If no ancestors,\ndefaults to **_self**.\n\nThis property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'_self'"}]},{"tag":"@example","content":[{"kind":"code","text":"```jsx\nGo to Expo in new tab\n```"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"_self"},{"type":"literal","value":"_blank"},{"type":"literal","value":"_parent"},{"type":"literal","value":"_top"},{"type":"intersection","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"object"}]}]}}],"extendedBy":[{"type":"reference","name":"LinkProps"}]},{"name":"Link","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component that renders a link using ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) to another route.\nBy default, it accepts children and wraps them in a "},{"kind":"code","text":"``"},{"kind":"text","text":" component.\n\nUses an anchor tag ("},{"kind":"code","text":"``"},{"kind":"text","text":") on web and performs a client-side navigation to preserve\nthe state of the website and navigate faster. The web-only attributes such as "},{"kind":"code","text":"`target`"},{"kind":"text","text":",\n"},{"kind":"code","text":"`rel`"},{"kind":"text","text":", and "},{"kind":"code","text":"`download`"},{"kind":"text","text":" are supported and passed to the anchor tag on web. See\n["},{"kind":"code","text":"`WebAnchorProps`"},{"kind":"text","text":"](#webanchorprops) for more details.\n\n> **Note**: Client-side navigation works with both single-page apps,\nand [static-rendering](/router/web/static-rendering/)."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n About\n \n );\n}\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"AppleZoom","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"When this component is used inside a Link, [zoom transition](https://developer.apple.com/documentation/uikit/enhancing-your-app-with-fluid-transitions?language=objc)\nwill be used when navigating to the link's href."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios 18+"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkAppleZoomProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},"defaultValue":"LinkAppleZoom"},{"name":"AppleZoomTarget","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Defines the target for an Apple zoom transition."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\n\nexport default function Screen() {\n return (\n \n \n \n \n \n );\n}\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios 18+"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"number"},{"type":"intrinsic","name":"bigint"},{"type":"intrinsic","name":"boolean"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es2015.iterable.d.ts","qualifiedName":"Iterable"},"typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"},{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"}],"name":"Iterable","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"AwaitedReactNode"},"name":"AwaitedReactNode","package":"@types/react"}],"name":"Promise","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null},{"type":"intrinsic","name":"undefined"}]}}]}},"defaultValue":"LinkAppleZoomTarget"},{"name":"Menu","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Groups context menu actions for a link.\n\nIf multiple "},{"kind":"code","text":"`Link.Menu`"},{"kind":"text","text":" components are used within a single "},{"kind":"code","text":"`Link`"},{"kind":"text","text":", only the first will be rendered.\nOnly "},{"kind":"code","text":"`Link.MenuAction`"},{"kind":"text","text":" and "},{"kind":"code","text":"`Link.Menu`"},{"kind":"text","text":" components are allowed as children."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n {}} />\n {}} />\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkMenuProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null}]}}]}},"defaultValue":"LinkMenu"},{"name":"MenuAction","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"This component renders a context menu action for a link.\nIt should only be used as a child of "},{"kind":"code","text":"`Link.Menu`"},{"kind":"text","text":" or "},{"kind":"code","text":"`LinkMenu`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkMenuActionProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null}]}}]}},"defaultValue":"LinkMenuAction"},{"name":"Preview","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A component used to render and customize the link preview.\n\nIf "},{"kind":"code","text":"`Link.Preview`"},{"kind":"text","text":" is used without any props, it will render a preview of the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" passed to the "},{"kind":"code","text":"`Link`"},{"kind":"text","text":".\n\nIf multiple "},{"kind":"code","text":"`Link.Preview`"},{"kind":"text","text":" components are used within a single "},{"kind":"code","text":"`Link`"},{"kind":"text","text":", only the first one will be rendered.\n\nTo customize the preview, you can pass custom content as children."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n Custom Preview Content\n \n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkPreviewProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null}]}}]}},"defaultValue":"LinkPreview"},{"name":"resolveHref","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Resolve an href object into a fully qualified, relative href."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"HrefObject"},"name":"HrefObject","package":"expo-router"}]}}],"type":{"type":"intrinsic","name":"string"}}]}}},{"name":"Trigger","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Serves as the trigger for a link.\nThe content inside this component will be rendered as part of the base link.\n\nIf multiple "},{"kind":"code","text":"`Link.Trigger`"},{"kind":"text","text":" components are used within a single "},{"kind":"code","text":"`Link`"},{"kind":"text","text":", only the first will be rendered."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n Trigger\n \n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkTriggerProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"number"},{"type":"intrinsic","name":"bigint"},{"type":"intrinsic","name":"boolean"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es2015.iterable.d.ts","qualifiedName":"Iterable"},"typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"},{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"}],"name":"Iterable","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"AwaitedReactNode"},"name":"AwaitedReactNode","package":"@types/react"}],"name":"Promise","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null},{"type":"intrinsic","name":"undefined"}]}}]}},"defaultValue":"LinkTrigger"}]}}]},"defaultValue":"..."},{"name":"Redirect","variant":"declaration","kind":64,"signatures":[{"name":"Redirect","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Redirects to the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" as soon as the component is mounted."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { View, Text } from 'react-native';\nimport { Redirect } from 'expo-router';\n\nexport default function Page() {\n const { user } = useAuth();\n\n if (!user) {\n return ;\n }\n\n return (\n \n Welcome Back!\n \n );\n}\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"RedirectProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"useIsPreview","variant":"declaration","kind":64,"signatures":[{"name":"useIsPreview","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to determine if the current route is rendered inside a preview."}],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"- True if the current route is rendered inside a preview, false otherwise."}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"usePreventZoomTransitionDismissal","variant":"declaration","kind":64,"signatures":[{"name":"usePreventZoomTransitionDismissal","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Limits the screen area where interactive dismissal gestures are allowed for zoom transitions.\n\nThis hook must be called from the destination screen of a zoom transition (the screen you navigate to, not the source).\nIt restricts where app users can start swipe gestures to dismiss the screen and return to the previous screen.\n\nWhen a dismissal gesture starts inside the bounds, the screen can be dismissed. When a dismissal gesture starts outside\nthe bounds, dismissal is blocked completely. Undefined coordinates place no restriction on that dimension.\n\n> **Note**: Only one instance of this hook should be used per screen. If multiple instances exist, the last one to render will take effect."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n// In your destination screen (e.g., app/image.tsx)\nimport { usePreventZoomTransitionDismissal } from 'expo-router';\nimport { useWindowDimensions } from 'react-native';\nimport { Image } from 'expo-image';\n\nexport default function ImageScreen() {\n const dimensions = useWindowDimensions();\n // Only allow dismissal from the bottom 200px of the screen\n usePreventZoomTransitionDismissal({\n unstable_dismissalBoundsRect: {\n minY: dimensions.height - 200\n }\n });\n\n return ;\n}\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"_options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","name":"UsePreventZoomTransitionDismissalOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}],"packageName":"expo-router"}
\ No newline at end of file
+{"schemaVersion":"2.0","name":"expo-router/link","variant":"project","kind":1,"children":[{"name":"DismissalBoundsRect","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"Defines the screen bounds where interactive dismissal gestures are allowed for zoom transitions."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"children":[{"name":"maxX","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Maximum X coordinate (right edge) where dismissal gestures are allowed."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"maxY","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Maximum Y coordinate (bottom edge) where dismissal gestures are allowed."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"minX","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Minimum X coordinate (left edge) where dismissal gestures are allowed."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"minY","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Minimum Y coordinate (top edge) where dismissal gestures are allowed."}]},"type":{"type":"intrinsic","name":"number"}}]},{"name":"LinkAppleZoomProps","variant":"declaration","kind":256,"children":[{"name":"alignmentRect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Defines the rectangle used for the zoom transition's alignment. This rectangle is specified in the zoomed screen's coordinate space."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios 18+"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"height","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}},{"name":"width","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}},{"name":"x","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}},{"name":"y","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"number"}}]}}}],"extendedTypes":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}]},{"name":"LinkMenuActionProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title of the menu item."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as destructive."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be disabled and not selectable."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/disabled) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"discoverabilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An elaborated title that explains the purpose of the action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the menu element should be hidden."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/hidden) for more information."}]},{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"SF Symbol displayed alongside the menu item."}]},"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom image loaded using "},{"kind":"code","text":"`useImage()`"},{"kind":"text","text":" hook from "},{"kind":"code","text":"`expo-image`"},{"kind":"text","text":".\nTakes priority over "},{"kind":"code","text":"`icon`"},{"kind":"text","text":" (SF Symbol) when both are provided."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useImage } from 'expo-image';\nimport { Link } from 'expo-router';\n\nconst customIcon = useImage('https://simpleicons.org/icons/expo.svg', {\n maxWidth: 24,\n maxHeight: 24,\n});\n\n\n {}} />\n\n```"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"imageRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered on iOS.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": iOS applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": Preserves original icon colors"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"isOn","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as selected."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"onPress","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"subtitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An optional subtitle for the menu item."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/subtitle) for more information."}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title of the menu item."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`children`"},{"kind":"text","text":" prop instead."}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"unstable_keepPresented","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be kept presented after the action is selected.\n\nThis is marked as unstable, because when action is selected it will recreate the menu,\nwhich will close all opened submenus and reset the scroll position."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/keepsmenupresented) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"LinkMenuProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as destructive."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/destructive) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"displayAsPalette","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`palette`"},{"kind":"text","text":" prop instead."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"displayInline","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`inline`"},{"kind":"text","text":" prop instead."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"elementSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The preferred size of the menu elements.\n"},{"kind":"code","text":"`elementSize`"},{"kind":"text","text":" property is ignored when "},{"kind":"code","text":"`palette`"},{"kind":"text","text":" is used."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/preferredelementsize) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 16.0+"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"auto"},{"type":"literal","value":"small"},{"type":"literal","value":"medium"},{"type":"literal","value":"large"}]}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional SF Symbol displayed alongside the menu item."}]},"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom image loaded using "},{"kind":"code","text":"`useImage()`"},{"kind":"text","text":" hook from "},{"kind":"code","text":"`expo-image`"},{"kind":"text","text":".\nTakes priority over "},{"kind":"code","text":"`icon`"},{"kind":"text","text":" (SF Symbol) when both are provided."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { useImage } from 'expo-image';\nimport { Link } from 'expo-router';\n\nconst customIcon = useImage('https://simpleicons.org/icons/expo.svg', {\n maxWidth: 24,\n maxHeight: 24,\n});\n\n\n {}} />\n\n```"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"inline","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be displayed inline.\nThis means that the menu will not be collapsed"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayinline) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"palette","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be displayed as a palette.\nThis means that the menu will be displayed as one row.\nThe "},{"kind":"code","text":"`elementSize`"},{"kind":"text","text":" property is ignored when palette is used, all items will be "},{"kind":"code","text":"`elementSize=\"small\"`"},{"kind":"text","text":". Use "},{"kind":"code","text":"`elementSize=\"medium\"`"},{"kind":"text","text":" instead of "},{"kind":"code","text":"`palette`"},{"kind":"text","text":" to display actions with titles horizontally.\n\n> **Note**: Palette menus are only supported in submenus."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayaspalette) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"subtitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An optional subtitle for the submenu. Does not appear on "},{"kind":"code","text":"`inline`"},{"kind":"text","text":" menus."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/subtitle) for more information."}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title of the menu item"}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"LinkPreviewProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom styles for the preview container.\n\nNote that some styles may not work, as they are limited or reset by the native view"}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/link/elements.tsx","qualifiedName":"LinkPreviewStyle"},"name":"LinkPreviewStyle","package":"expo-router"}}]},{"name":"LinkProps","variant":"declaration","kind":256,"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Used to customize the "},{"kind":"code","text":"`Link`"},{"kind":"text","text":" component. It will forward all props to the\nfirst child of the "},{"kind":"code","text":"`Link`"},{"kind":"text","text":". Note that the child component must accept\n"},{"kind":"code","text":"`onPress`"},{"kind":"text","text":" or "},{"kind":"code","text":"`onClick`"},{"kind":"text","text":" props. The "},{"kind":"code","text":"`href`"},{"kind":"text","text":" and "},{"kind":"code","text":"`role`"},{"kind":"text","text":" are also\npassed to the child."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { Pressable, Text } from 'react-native';\n\nexport default function Route() {\n return (\n \n \n \n Home\n \n \n \n );\n}\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"className","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"On native, this can be used with CSS interop tools like Nativewind.\nOn web, this sets the HTML "},{"kind":"code","text":"`class`"},{"kind":"text","text":" directly."}]},"type":{"type":"intrinsic","name":"string"},"overwrites":{"type":"reference","name":"Omit.className","package":"expo"}},{"name":"dangerouslySingular","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When navigating in a Stack, if the target is valid then screens in the history that matches\nthe uniqueness constraint will be removed.\n\nIf used with "},{"kind":"code","text":"`push`"},{"kind":"text","text":", the history will be filtered even if no navigation occurs."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"SingularOptions"},"name":"SingularOptions","package":"expo-router"}},{"name":"dismissTo","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"While in a stack, this will dismiss screens until the provided "},{"kind":"code","text":"`href`"},{"kind":"text","text":" is reached. If the href is not found,\nit will instead replace the current screen with the provided "},{"kind":"code","text":"`href`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n Close modal\n \n );\n}\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"download","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[{"kind":"text","text":"Specifies that the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) should be downloaded when the user clicks on the\nlink, instead of navigating to it. It is typically used for links that point to\nfiles that the user should download, such as PDFs, images, documents, and more.\n\nThe value of the "},{"kind":"code","text":"`download`"},{"kind":"text","text":" property, which represents the filename for the\ndownloaded file. This property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```jsx\nDownload image\n```"}]}]},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"WebAnchorProps.download"}},{"name":"href","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The path of the route to navigate to. It can either be:\n- **string**: A full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":".\n- **object**: An object with a "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" and optional "},{"kind":"code","text":"`params`"},{"kind":"text","text":". The "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" can be\na full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":". The\nparams can be an object of key-value pairs."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx Dynamic\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n About\n \n View user\n \n \n );\n}\n```"}]}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"HrefObject"},"name":"HrefObject","package":"expo-router"}]}},{"name":"lang","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"Omit.lang","package":"expo"}},{"name":"onPress","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"This function is called on press.\nText intrinsically supports press handling with a default highlight state (which can be disabled with suppressHighlighting)."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"event","variant":"param","kind":32768,"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.MouseEvent"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.dom.d.ts","qualifiedName":"HTMLAnchorElement"},"name":"HTMLAnchorElement","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.dom.d.ts","qualifiedName":"MouseEvent"},"name":"MouseEvent","package":"typescript"}],"name":"MouseEvent","package":"@types/react","qualifiedName":"React.MouseEvent"},{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Types/CoreEventTypes.d.ts","qualifiedName":"GestureResponderEvent"},"name":"GestureResponderEvent","package":"react-native"}]}}],"type":{"type":"intrinsic","name":"void"}}]}},"overwrites":{"type":"reference","name":"Omit.onPress","package":"react-native"}},{"name":"prefetch","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Prefetches the route when the component is rendered on a focused screen."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"push","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Always pushes a new route, and never pops or replaces to existing route.\nYou can push the current route multiple times or with new parameters."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n Login\n \n );\n}\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"ref","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.Ref"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Text/Text.d.ts","qualifiedName":"Text"},"name":"Text","package":"react-native"}],"name":"Ref","package":"@types/react","qualifiedName":"React.Ref"}},{"name":"rel","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[{"kind":"text","text":"Specifies the relationship between the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) and the current route.\n\nCommon values:\n- **nofollow**: Indicates to search engines that they should not follow the "},{"kind":"code","text":"`href`"},{"kind":"text","text":".\nThis is often used for user-generated content or links that should not influence\nsearch engine rankings.\n- **noopener**: Suggests that the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" should not have access to the opening\nwindow's "},{"kind":"code","text":"`window.opener`"},{"kind":"text","text":" object, which is a security measure to prevent potentially\nharmful behavior in cases of links that open new tabs or windows.\n- **noreferrer**: Requests that the browser does not send the "},{"kind":"code","text":"`Referer`"},{"kind":"text","text":" HTTP header\nwhen navigating to the "},{"kind":"code","text":"`href`"},{"kind":"text","text":". This can enhance user privacy.\n\nThe "},{"kind":"code","text":"`rel`"},{"kind":"text","text":" property is primarily used for informational and instructive purposes, helping browsers and web\ncrawlers make better decisions about how to handle and interpret the links on a web\npage. It is important to use appropriate "},{"kind":"code","text":"`rel`"},{"kind":"text","text":" values to ensure that links behave as intended and adhere\nto best practices for web development and SEO (Search Engine Optimization).\n\nThis property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```jsx\nGo to Expo\n```"}]}]},"type":{"type":"intrinsic","name":"string"},"inheritedFrom":{"type":"reference","name":"WebAnchorProps.rel"}},{"name":"relativeToDirectory","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Relative URL references are either relative to the directory or the document.\nBy default, relative paths are relative to the document."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Resolving relative references in Mozilla's documentation](https://developer.mozilla.org/en-US/docs/Web/API/URL_API/Resolving_relative_references)."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"replace","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Removes the current route from the history and replace it with the\nspecified URL. This is useful for [redirects](/router/reference/redirects/)."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n Login\n \n );\n}\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"https://reactnative.dev/docs/text#style"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"},"inheritedFrom":{"type":"reference","name":"Omit.style","package":"react-native"}},{"name":"tabIndex","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"type":{"type":"intrinsic","name":"number"},"inheritedFrom":{"type":"reference","name":"Omit.tabIndex","package":"expo"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true,"isInherited":true},"comment":{"summary":[{"kind":"text","text":"Specifies where to open the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href).\n\n- **_self**: the current tab.\n- **_blank**: opens in a new tab or window.\n- **_parent**: opens in the parent browsing context. If no parent, defaults to **_self**.\n- **_top**: opens in the highest browsing context ancestor. If no ancestors,\ndefaults to **_self**.\n\nThis property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'_self'"}]},{"tag":"@example","content":[{"kind":"code","text":"```jsx\nGo to Expo in new tab\n```"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"_self"},{"type":"literal","value":"_blank"},{"type":"literal","value":"_parent"},{"type":"literal","value":"_top"}]},"inheritedFrom":{"type":"reference","name":"WebAnchorProps.target"}},{"name":"withAnchor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Replaces the initial screen with the current route."}]},"type":{"type":"intrinsic","name":"boolean"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Text/Text.d.ts","qualifiedName":"TextProps"},"name":"TextProps","package":"react-native"},{"type":"literal","value":"href"}],"name":"Omit","package":"typescript"},{"type":"reference","name":"WebAnchorProps","package":"expo-router"}]},{"name":"LinkTriggerProps","variant":"declaration","kind":256,"children":[{"name":"withAppleZoom","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A shorthand for enabling the Apple Zoom Transition on this link trigger.\n\nWhen set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the trigger will be wrapped with "},{"kind":"code","text":"`Link.AppleZoom`"},{"kind":"text","text":".\nIf another "},{"kind":"code","text":"`Link.AppleZoom`"},{"kind":"text","text":" is already used inside "},{"kind":"code","text":"`Link.Trigger`"},{"kind":"text","text":", an error\nwill be thrown."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios 18+"}]}]},"type":{"type":"intrinsic","name":"boolean"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}]},{"name":"UsePreventZoomTransitionDismissalOptions","variant":"declaration","kind":256,"children":[{"name":"unstable_dismissalBoundsRect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Defines the screen bounds where interactive dismissal gestures are allowed.\n\nEach coordinate is optional. Undefined coordinates place no restriction on that dimension.\nFor example, if only "},{"kind":"code","text":"`minY`"},{"kind":"text","text":" and "},{"kind":"code","text":"`maxY`"},{"kind":"text","text":" are defined, horizontal gestures are unrestricted\nwhile vertical gestures must stay within the Y bounds."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiviewcontroller/transition/zoomoptions/interactivedismissshouldbegin) for more information."}]}]},"type":{"type":"reference","name":"DismissalBoundsRect","package":"expo-router"}}]},{"name":"LinkComponent","variant":"declaration","kind":2097152,"type":{"type":"query","queryType":{"type":"reference","name":"Link","package":"expo-router"}}},{"name":"RedirectProps","variant":"declaration","kind":2097152,"children":[{"name":"href","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The path of the route to navigate to. It can either be:\n- **string**: A full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":".\n- **object**: An object with a "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" and optional "},{"kind":"code","text":"`params`"},{"kind":"text","text":". The "},{"kind":"code","text":"`pathname`"},{"kind":"text","text":" can be\na full path like "},{"kind":"code","text":"`/profile/settings`"},{"kind":"text","text":" or a relative path like "},{"kind":"code","text":"`../settings`"},{"kind":"text","text":". The\nparams can be an object of key-value pairs."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx Dynamic\nimport { Redirect } from 'expo-router';\n\nexport default function RedirectToAbout() {\n return (\n \n );\n}\n```"}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"Href"},"name":"Href","package":"expo-router"}},{"name":"relativeToDirectory","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Relative URL references are either relative to the directory or the document.\nBy default, relative paths are relative to the document."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Resolving relative references in Mozilla's documentation](https://developer.mozilla.org/en-US/docs/Web/API/URL_API/Resolving_relative_references)."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"withAnchor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Replaces the initial screen with the current route."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"WebAnchorProps","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"children":[{"name":"download","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Specifies that the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) should be downloaded when the user clicks on the\nlink, instead of navigating to it. It is typically used for links that point to\nfiles that the user should download, such as PDFs, images, documents, and more.\n\nThe value of the "},{"kind":"code","text":"`download`"},{"kind":"text","text":" property, which represents the filename for the\ndownloaded file. This property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```jsx\nDownload image\n```"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"rel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Specifies the relationship between the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) and the current route.\n\nCommon values:\n- **nofollow**: Indicates to search engines that they should not follow the "},{"kind":"code","text":"`href`"},{"kind":"text","text":".\nThis is often used for user-generated content or links that should not influence\nsearch engine rankings.\n- **noopener**: Suggests that the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" should not have access to the opening\nwindow's "},{"kind":"code","text":"`window.opener`"},{"kind":"text","text":" object, which is a security measure to prevent potentially\nharmful behavior in cases of links that open new tabs or windows.\n- **noreferrer**: Requests that the browser does not send the "},{"kind":"code","text":"`Referer`"},{"kind":"text","text":" HTTP header\nwhen navigating to the "},{"kind":"code","text":"`href`"},{"kind":"text","text":". This can enhance user privacy.\n\nThe "},{"kind":"code","text":"`rel`"},{"kind":"text","text":" property is primarily used for informational and instructive purposes, helping browsers and web\ncrawlers make better decisions about how to handle and interpret the links on a web\npage. It is important to use appropriate "},{"kind":"code","text":"`rel`"},{"kind":"text","text":" values to ensure that links behave as intended and adhere\nto best practices for web development and SEO (Search Engine Optimization).\n\nThis property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```jsx\nGo to Expo\n```"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Specifies where to open the ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href).\n\n- **_self**: the current tab.\n- **_blank**: opens in a new tab or window.\n- **_parent**: opens in the parent browsing context. If no parent, defaults to **_self**.\n- **_top**: opens in the highest browsing context ancestor. If no ancestors,\ndefaults to **_self**.\n\nThis property is passed to the underlying anchor ("},{"kind":"code","text":"``"},{"kind":"text","text":") tag."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'_self'"}]},{"tag":"@example","content":[{"kind":"code","text":"```jsx\nGo to Expo in new tab\n```"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"_self"},{"type":"literal","value":"_blank"},{"type":"literal","value":"_parent"},{"type":"literal","value":"_top"},{"type":"intersection","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"object"}]}]}}],"extendedBy":[{"type":"reference","name":"LinkProps"}]},{"name":"Link","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component that renders a link using ["},{"kind":"code","text":"`href`"},{"kind":"text","text":"](#href) to another route.\nBy default, it accepts children and wraps them in a "},{"kind":"code","text":"``"},{"kind":"text","text":" component.\n\nUses an anchor tag ("},{"kind":"code","text":"``"},{"kind":"text","text":") on web and performs a client-side navigation to preserve\nthe state of the website and navigate faster. The web-only attributes such as "},{"kind":"code","text":"`target`"},{"kind":"text","text":",\n"},{"kind":"code","text":"`rel`"},{"kind":"text","text":", and "},{"kind":"code","text":"`download`"},{"kind":"text","text":" are supported and passed to the anchor tag on web. See\n["},{"kind":"code","text":"`WebAnchorProps`"},{"kind":"text","text":"](#webanchorprops) for more details.\n\n> **Note**: Client-side navigation works with both single-page apps,\nand [static-rendering](/router/web/static-rendering/)."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\nimport { View } from 'react-native';\n\nexport default function Route() {\n return (\n \n About\n \n );\n}\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"AppleZoom","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"When this component is used inside a Link, [zoom transition](https://developer.apple.com/documentation/uikit/enhancing-your-app-with-fluid-transitions?language=objc)\nwill be used when navigating to the link's href."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios 18+"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkAppleZoomProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},"defaultValue":"LinkAppleZoom"},{"name":"AppleZoomTarget","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Defines the target for an Apple zoom transition."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Link } from 'expo-router';\n\nexport default function Screen() {\n return (\n \n \n \n \n \n );\n}\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios 18+"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"number"},{"type":"intrinsic","name":"bigint"},{"type":"intrinsic","name":"boolean"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es2015.iterable.d.ts","qualifiedName":"Iterable"},"typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"},{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"}],"name":"Iterable","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"AwaitedReactNode"},"name":"AwaitedReactNode","package":"@types/react"}],"name":"Promise","package":"typescript"},{"type":"literal","value":null},{"type":"intrinsic","name":"undefined"}]}}]}},"defaultValue":"LinkAppleZoomTarget"},{"name":"Menu","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Groups context menu actions for a link.\n\nIf multiple "},{"kind":"code","text":"`Link.Menu`"},{"kind":"text","text":" components are used within a single "},{"kind":"code","text":"`Link`"},{"kind":"text","text":", only the first will be rendered.\nOnly "},{"kind":"code","text":"`Link.MenuAction`"},{"kind":"text","text":" and "},{"kind":"code","text":"`Link.Menu`"},{"kind":"text","text":" components are allowed as children."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n {}} />\n {}} />\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkMenuProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null}]}}]}},"defaultValue":"LinkMenu"},{"name":"MenuAction","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"This component renders a context menu action for a link.\nIt should only be used as a child of "},{"kind":"code","text":"`Link.Menu`"},{"kind":"text","text":" or "},{"kind":"code","text":"`LinkMenu`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkMenuActionProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null}]}}]}},"defaultValue":"LinkMenuAction"},{"name":"Preview","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A component used to render and customize the link preview.\n\nIf "},{"kind":"code","text":"`Link.Preview`"},{"kind":"text","text":" is used without any props, it will render a preview of the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" passed to the "},{"kind":"code","text":"`Link`"},{"kind":"text","text":".\n\nIf multiple "},{"kind":"code","text":"`Link.Preview`"},{"kind":"text","text":" components are used within a single "},{"kind":"code","text":"`Link`"},{"kind":"text","text":", only the first one will be rendered.\n\nTo customize the preview, you can pass custom content as children."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n Custom Preview Content\n \n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkPreviewProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null}]}}]}},"defaultValue":"LinkPreview"},{"name":"resolveHref","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Resolve an href object into a fully qualified, relative href."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"href","variant":"param","kind":32768,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"HrefObject"},"name":"HrefObject","package":"expo-router"}]}}],"type":{"type":"intrinsic","name":"string"}}]}}},{"name":"Trigger","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Serves as the trigger for a link.\nThe content inside this component will be rendered as part of the base link.\n\nIf multiple "},{"kind":"code","text":"`Link.Trigger`"},{"kind":"text","text":" components are used within a single "},{"kind":"code","text":"`Link`"},{"kind":"text","text":", only the first will be rendered."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n Trigger\n \n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"LinkTriggerProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"number"},{"type":"intrinsic","name":"bigint"},{"type":"intrinsic","name":"boolean"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es2015.iterable.d.ts","qualifiedName":"Iterable"},"typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"},{"type":"intrinsic","name":"any"},{"type":"intrinsic","name":"any"}],"name":"Iterable","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"AwaitedReactNode"},"name":"AwaitedReactNode","package":"@types/react"}],"name":"Promise","package":"typescript"},{"type":"literal","value":null},{"type":"intrinsic","name":"undefined"}]}}]}},"defaultValue":"LinkTrigger"}]}}]},"defaultValue":"..."},{"name":"Redirect","variant":"declaration","kind":64,"signatures":[{"name":"Redirect","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Redirects to the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" as soon as the component is mounted."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { View, Text } from 'react-native';\nimport { Redirect } from 'expo-router';\n\nexport default function Page() {\n const { user } = useAuth();\n\n if (!user) {\n return ;\n }\n\n return (\n \n Welcome Back!\n \n );\n}\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"RedirectProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]},{"name":"useIsPreview","variant":"declaration","kind":64,"signatures":[{"name":"useIsPreview","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook to determine if the current route is rendered inside a preview."}],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"- True if the current route is rendered inside a preview, false otherwise."}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"usePreventZoomTransitionDismissal","variant":"declaration","kind":64,"signatures":[{"name":"usePreventZoomTransitionDismissal","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Limits the screen area where interactive dismissal gestures are allowed for zoom transitions.\n\nThis hook must be called from the destination screen of a zoom transition (the screen you navigate to, not the source).\nIt restricts where app users can start swipe gestures to dismiss the screen and return to the previous screen.\n\nWhen a dismissal gesture starts inside the bounds, the screen can be dismissed. When a dismissal gesture starts outside\nthe bounds, dismissal is blocked completely. Undefined coordinates place no restriction on that dimension.\n\n> **Note**: Only one instance of this hook should be used per screen. If multiple instances exist, the last one to render will take effect."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n// In your destination screen (e.g., app/image.tsx)\nimport { usePreventZoomTransitionDismissal } from 'expo-router';\nimport { useWindowDimensions } from 'react-native';\nimport { Image } from 'expo-image';\n\nexport default function ImageScreen() {\n const dimensions = useWindowDimensions();\n // Only allow dismissal from the bottom 200px of the screen\n usePreventZoomTransitionDismissal({\n unstable_dismissalBoundsRect: {\n minY: dimensions.height - 200\n }\n });\n\n return ;\n}\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"parameters":[{"name":"_options","variant":"param","kind":32768,"flags":{"isOptional":true},"type":{"type":"reference","name":"UsePreventZoomTransitionDismissalOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}],"packageName":"expo-router"}
\ No newline at end of file
diff --git a/docs/public/static/data/unversioned/expo-router/native-tabs.json b/docs/public/static/data/unversioned/expo-router/native-tabs.json
index 195be62299391c..54922c5a057b65 100644
--- a/docs/public/static/data/unversioned/expo-router/native-tabs.json
+++ b/docs/public/static/data/unversioned/expo-router/native-tabs.json
@@ -1 +1 @@
-{"schemaVersion":"2.0","name":"expo-router/native-tabs","variant":"project","kind":1,"children":[{"name":"DrawableIcon","variant":"declaration","kind":256,"children":[{"name":"drawable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the drawable resource to use as an icon.\n\nThe value can be provided in two ways:\n- As a string with the drawable resource name\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}}]},{"name":"MaterialIcon","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"Material icon name for Android native tabs."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"children":[{"name":"md","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Material icon glyph name. See the [Material icons for the complete catalog](https://fonts.google.com/icons).\n\nThe value can be provided in two ways:\n- As a string with the Material icon name\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"function"},{"type":"literal","value":"join"},{"type":"literal","value":"shift"},{"type":"literal","value":"sort"},{"type":"literal","value":"map"},{"type":"literal","value":"filter"},{"type":"literal","value":"source"},{"type":"literal","value":"style"},{"type":"literal","value":"accessible"},{"type":"literal","value":"search"},{"type":"literal","value":"repeat"},{"type":"literal","value":"anchor"},{"type":"literal","value":"link"},{"type":"literal","value":"key"},{"type":"literal","value":"history"},{"type":"literal","value":"target"},{"type":"literal","value":"tab"},{"type":"literal","value":"route"},{"type":"literal","value":"stack"},{"type":"literal","value":"merge"},{"type":"literal","value":"navigation"},{"type":"literal","value":"article"},{"type":"literal","value":"code"},{"type":"literal","value":"details"},{"type":"literal","value":"html"},{"type":"literal","value":"iframe"},{"type":"literal","value":"input"},{"type":"literal","value":"label"},{"type":"literal","value":"menu"},{"type":"literal","value":"output"},{"type":"literal","value":"script"},{"type":"literal","value":"select"},{"type":"literal","value":"table"},{"type":"literal","value":"title"},{"type":"literal","value":"circle"},{"type":"literal","value":"image"},{"type":"literal","value":"pattern"},{"type":"literal","value":"polyline"},{"type":"literal","value":"stop"},{"type":"literal","value":"switch"},{"type":"literal","value":"event"},{"type":"literal","value":"create"},{"type":"literal","value":"segment"},{"type":"literal","value":"groups"},{"type":"literal","value":"delete"},{"type":"literal","value":"mode"},{"type":"literal","value":"report"},{"type":"literal","value":"error"},{"type":"literal","value":"opacity"},{"type":"literal","value":"elevation"},{"type":"literal","value":"visibility"},{"type":"literal","value":"height"},{"type":"literal","value":"margin"},{"type":"literal","value":"padding"},{"type":"literal","value":"start"},{"type":"literal","value":"transform"},{"type":"literal","value":"done"},{"type":"literal","value":"difference"},{"type":"literal","value":"scale"},{"type":"literal","value":"colors"},{"type":"literal","value":"description"},{"type":"literal","value":"contrast"},{"type":"literal","value":"radio"},{"type":"literal","value":"timer"},{"type":"literal","value":"list"},{"type":"literal","value":"toolbar"},{"type":"literal","value":"feed"},{"type":"literal","value":"group"},{"type":"literal","value":"note"},{"type":"literal","value":"tooltip"},{"type":"literal","value":"light"},{"type":"literal","value":"uppercase"},{"type":"literal","value":"lowercase"},{"type":"literal","value":"ios"},{"type":"literal","value":"android"},{"type":"literal","value":"web"},{"type":"literal","value":"email"},{"type":"literal","value":"clear"},{"type":"literal","value":"resize"},{"type":"literal","value":"translate"},{"type":"literal","value":"animation"},{"type":"literal","value":"phone"},{"type":"literal","value":"send"},{"type":"literal","value":"flip"},{"type":"literal","value":"expand"},{"type":"literal","value":"window"},{"type":"literal","value":"speed"},{"type":"literal","value":"badge"},{"type":"literal","value":"message"},{"type":"literal","value":"close"},{"type":"literal","value":"print"},{"type":"literal","value":"cancel"},{"type":"literal","value":"pause"},{"type":"literal","value":"storage"},{"type":"literal","value":"refresh"},{"type":"literal","value":"info"},{"type":"literal","value":"http"},{"type":"literal","value":"enable"},{"type":"literal","value":"update"},{"type":"literal","value":"remove"},{"type":"literal","value":"fingerprint"},{"type":"literal","value":"portrait"},{"type":"literal","value":"landscape"},{"type":"literal","value":"fullscreen"},{"type":"literal","value":"dangerous"},{"type":"literal","value":"metro"},{"type":"literal","value":"flag"},{"type":"literal","value":"signature"},{"type":"literal","value":"package"},{"type":"literal","value":"category"},{"type":"literal","value":"build"},{"type":"literal","value":"settings"},{"type":"literal","value":"comment"},{"type":"literal","value":"tag"},{"type":"literal","value":"host"},{"type":"literal","value":"add"},{"type":"literal","value":"share"},{"type":"literal","value":"policy"},{"type":"literal","value":"public"},{"type":"literal","value":"try"},{"type":"literal","value":"class"},{"type":"literal","value":"tablet"},{"type":"literal","value":"tv"},{"type":"literal","value":"api"},{"type":"literal","value":"alarm"},{"type":"literal","value":"barcode"},{"type":"literal","value":"bolt"},{"type":"literal","value":"book"},{"type":"literal","value":"bookmark"},{"type":"literal","value":"camera"},{"type":"literal","value":"cloud"},{"type":"literal","value":"crop"},{"type":"literal","value":"eject"},{"type":"literal","value":"equal"},{"type":"literal","value":"eyeglasses"},{"type":"literal","value":"flowchart"},{"type":"literal","value":"folder"},{"type":"literal","value":"forward"},{"type":"literal","value":"globe"},{"type":"literal","value":"headphones"},{"type":"literal","value":"hexagon"},{"type":"literal","value":"hourglass"},{"type":"literal","value":"house"},{"type":"literal","value":"keyboard"},{"type":"literal","value":"lightbulb"},{"type":"literal","value":"lock"},{"type":"literal","value":"mic"},{"type":"literal","value":"percent"},{"type":"literal","value":"person"},{"type":"literal","value":"photo"},{"type":"literal","value":"pin"},{"type":"literal","value":"power"},{"type":"literal","value":"rectangle"},{"type":"literal","value":"shield"},{"type":"literal","value":"shuffle"},{"type":"literal","value":"speaker"},{"type":"literal","value":"square"},{"type":"literal","value":"star"},{"type":"literal","value":"thermometer"},{"type":"literal","value":"timelapse"},{"type":"literal","value":"tornado"},{"type":"literal","value":"umbrella"},{"type":"literal","value":"wifi"},{"type":"literal","value":"abc"},{"type":"literal","value":"crown"},{"type":"literal","value":"diamond"},{"type":"literal","value":"loupe"},{"type":"literal","value":"mail"},{"type":"literal","value":"newspaper"},{"type":"literal","value":"pip"},{"type":"literal","value":"scanner"},{"type":"literal","value":"shadow"},{"type":"literal","value":"stethoscope"},{"type":"literal","value":"terminal"},{"type":"literal","value":"tram"},{"type":"literal","value":"asterisk"},{"type":"literal","value":"checklist"},{"type":"literal","value":"earbuds"},{"type":"literal","value":"pentagon"},{"type":"literal","value":"scooter"},{"type":"literal","value":"backpack"},{"type":"literal","value":"bathtub"},{"type":"literal","value":"chair"},{"type":"literal","value":"dishwasher"},{"type":"literal","value":"fireplace"},{"type":"literal","value":"microwave"},{"type":"literal","value":"oven"},{"type":"literal","value":"pill"},{"type":"literal","value":"shower"},{"type":"literal","value":"sprinkler"},{"type":"literal","value":"stairs"},{"type":"literal","value":"syringe"},{"type":"literal","value":"trophy"},{"type":"literal","value":"sos"},{"type":"literal","value":"stroller"},{"type":"literal","value":"accessibility"},{"type":"literal","value":"bubble"},{"type":"literal","value":"smartphone"},{"type":"literal","value":"storefront"},{"type":"literal","value":"drone"},{"type":"literal","value":"headset"},{"type":"literal","value":"moped"},{"type":"literal","value":"motorcycle"},{"type":"literal","value":"numbers"},{"type":"literal","value":"receipt"},{"type":"literal","value":"palette"},{"type":"literal","value":"router"},{"type":"literal","value":"123"},{"type":"literal","value":"360"},{"type":"literal","value":"10k"},{"type":"literal","value":"10mp"},{"type":"literal","value":"11mp"},{"type":"literal","value":"12mp"},{"type":"literal","value":"13mp"},{"type":"literal","value":"14mp"},{"type":"literal","value":"15mp"},{"type":"literal","value":"16mp"},{"type":"literal","value":"17mp"},{"type":"literal","value":"18_up_rating"},{"type":"literal","value":"18mp"},{"type":"literal","value":"19mp"},{"type":"literal","value":"1k"},{"type":"literal","value":"1k_plus"},{"type":"literal","value":"1x_mobiledata"},{"type":"literal","value":"1x_mobiledata_badge"},{"type":"literal","value":"20mp"},{"type":"literal","value":"21mp"},{"type":"literal","value":"22mp"},{"type":"literal","value":"23mp"},{"type":"literal","value":"24fps_select"},{"type":"literal","value":"24mp"},{"type":"literal","value":"2d"},{"type":"literal","value":"2k"},{"type":"literal","value":"2k_plus"},{"type":"literal","value":"2mp"},{"type":"literal","value":"30fps"},{"type":"literal","value":"30fps_select"},{"type":"literal","value":"3d"},{"type":"literal","value":"3d_rotation"},{"type":"literal","value":"3g_mobiledata"},{"type":"literal","value":"3g_mobiledata_badge"},{"type":"literal","value":"3k"},{"type":"literal","value":"3k_plus"},{"type":"literal","value":"3mp"},{"type":"literal","value":"3p"},{"type":"literal","value":"4g_mobiledata"},{"type":"literal","value":"4g_mobiledata_badge"},{"type":"literal","value":"4g_plus_mobiledata"},{"type":"literal","value":"4k"},{"type":"literal","value":"4k_plus"},{"type":"literal","value":"4mp"},{"type":"literal","value":"50mp"},{"type":"literal","value":"5g"},{"type":"literal","value":"5g_mobiledata_badge"},{"type":"literal","value":"5k"},{"type":"literal","value":"5k_plus"},{"type":"literal","value":"5mp"},{"type":"literal","value":"60fps"},{"type":"literal","value":"60fps_select"},{"type":"literal","value":"6_ft_apart"},{"type":"literal","value":"6k"},{"type":"literal","value":"6k_plus"},{"type":"literal","value":"6mp"},{"type":"literal","value":"7k"},{"type":"literal","value":"7k_plus"},{"type":"literal","value":"7mp"},{"type":"literal","value":"8k"},{"type":"literal","value":"8k_plus"},{"type":"literal","value":"8mp"},{"type":"literal","value":"9k"},{"type":"literal","value":"9k_plus"},{"type":"literal","value":"9mp"},{"type":"literal","value":"ac_unit"},{"type":"literal","value":"access_alarm"},{"type":"literal","value":"access_alarms"},{"type":"literal","value":"access_time"},{"type":"literal","value":"access_time_filled"},{"type":"literal","value":"accessibility_new"},{"type":"literal","value":"accessible_forward"},{"type":"literal","value":"accessible_menu"},{"type":"literal","value":"account_balance"},{"type":"literal","value":"account_balance_wallet"},{"type":"literal","value":"account_box"},{"type":"literal","value":"account_child"},{"type":"literal","value":"account_child_invert"},{"type":"literal","value":"account_circle"},{"type":"literal","value":"account_circle_off"},{"type":"literal","value":"account_tree"},{"type":"literal","value":"action_key"},{"type":"literal","value":"activity_zone"},{"type":"literal","value":"acupuncture"},{"type":"literal","value":"acute"},{"type":"literal","value":"ad"},{"type":"literal","value":"ad_group"},{"type":"literal","value":"ad_group_off"},{"type":"literal","value":"ad_off"},{"type":"literal","value":"ad_units"},{"type":"literal","value":"adaptive_audio_mic"},{"type":"literal","value":"adaptive_audio_mic_off"},{"type":"literal","value":"adb"},{"type":"literal","value":"add_2"},{"type":"literal","value":"add_a_photo"},{"type":"literal","value":"add_ad"},{"type":"literal","value":"add_alarm"},{"type":"literal","value":"add_alert"},{"type":"literal","value":"add_box"},{"type":"literal","value":"add_business"},{"type":"literal","value":"add_call"},{"type":"literal","value":"add_card"},{"type":"literal","value":"add_chart"},{"type":"literal","value":"add_circle"},{"type":"literal","value":"add_circle_outline"},{"type":"literal","value":"add_column_left"},{"type":"literal","value":"add_column_right"},{"type":"literal","value":"add_comment"},{"type":"literal","value":"add_diamond"},{"type":"literal","value":"add_home"},{"type":"literal","value":"add_home_work"},{"type":"literal","value":"add_ic_call"},{"type":"literal","value":"add_link"},{"type":"literal","value":"add_location"},{"type":"literal","value":"add_location_alt"},{"type":"literal","value":"add_moderator"},{"type":"literal","value":"add_notes"},{"type":"literal","value":"add_photo_alternate"},{"type":"literal","value":"add_reaction"},{"type":"literal","value":"add_road"},{"type":"literal","value":"add_row_above"},{"type":"literal","value":"add_row_below"},{"type":"literal","value":"add_shopping_cart"},{"type":"literal","value":"add_task"},{"type":"literal","value":"add_to_drive"},{"type":"literal","value":"add_to_home_screen"},{"type":"literal","value":"add_to_photos"},{"type":"literal","value":"add_to_queue"},{"type":"literal","value":"add_triangle"},{"type":"literal","value":"addchart"},{"type":"literal","value":"adf_scanner"},{"type":"literal","value":"adjust"},{"type":"literal","value":"admin_meds"},{"type":"literal","value":"admin_panel_settings"},{"type":"literal","value":"ads_click"},{"type":"literal","value":"agender"},{"type":"literal","value":"agriculture"},{"type":"literal","value":"air"},{"type":"literal","value":"air_freshener"},{"type":"literal","value":"air_purifier"},{"type":"literal","value":"air_purifier_gen"},{"type":"literal","value":"airline_seat_flat"},{"type":"literal","value":"airline_seat_flat_angled"},{"type":"literal","value":"airline_seat_individual_suite"},{"type":"literal","value":"airline_seat_legroom_extra"},{"type":"literal","value":"airline_seat_legroom_normal"},{"type":"literal","value":"airline_seat_legroom_reduced"},{"type":"literal","value":"airline_seat_recline_extra"},{"type":"literal","value":"airline_seat_recline_normal"},{"type":"literal","value":"airline_stops"},{"type":"literal","value":"airlines"},{"type":"literal","value":"airplane_ticket"},{"type":"literal","value":"airplanemode_active"},{"type":"literal","value":"airplanemode_inactive"},{"type":"literal","value":"airplay"},{"type":"literal","value":"airport_shuttle"},{"type":"literal","value":"airwave"},{"type":"literal","value":"alarm_add"},{"type":"literal","value":"alarm_off"},{"type":"literal","value":"alarm_on"},{"type":"literal","value":"alarm_pause"},{"type":"literal","value":"alarm_smart_wake"},{"type":"literal","value":"album"},{"type":"literal","value":"align_center"},{"type":"literal","value":"align_end"},{"type":"literal","value":"align_flex_center"},{"type":"literal","value":"align_flex_end"},{"type":"literal","value":"align_flex_start"},{"type":"literal","value":"align_horizontal_center"},{"type":"literal","value":"align_horizontal_left"},{"type":"literal","value":"align_horizontal_right"},{"type":"literal","value":"align_items_stretch"},{"type":"literal","value":"align_justify_center"},{"type":"literal","value":"align_justify_flex_end"},{"type":"literal","value":"align_justify_flex_start"},{"type":"literal","value":"align_justify_space_around"},{"type":"literal","value":"align_justify_space_between"},{"type":"literal","value":"align_justify_space_even"},{"type":"literal","value":"align_justify_stretch"},{"type":"literal","value":"align_self_stretch"},{"type":"literal","value":"align_space_around"},{"type":"literal","value":"align_space_between"},{"type":"literal","value":"align_space_even"},{"type":"literal","value":"align_start"},{"type":"literal","value":"align_stretch"},{"type":"literal","value":"align_vertical_bottom"},{"type":"literal","value":"align_vertical_center"},{"type":"literal","value":"align_vertical_top"},{"type":"literal","value":"all_inbox"},{"type":"literal","value":"all_inclusive"},{"type":"literal","value":"all_match"},{"type":"literal","value":"all_out"},{"type":"literal","value":"allergies"},{"type":"literal","value":"allergy"},{"type":"literal","value":"alt_route"},{"type":"literal","value":"alternate_email"},{"type":"literal","value":"altitude"},{"type":"literal","value":"ambulance"},{"type":"literal","value":"amend"},{"type":"literal","value":"amp_stories"},{"type":"literal","value":"analytics"},{"type":"literal","value":"android_cell_4_bar"},{"type":"literal","value":"android_cell_4_bar_alert"},{"type":"literal","value":"android_cell_4_bar_off"},{"type":"literal","value":"android_cell_4_bar_plus"},{"type":"literal","value":"android_cell_5_bar"},{"type":"literal","value":"android_cell_5_bar_alert"},{"type":"literal","value":"android_cell_5_bar_off"},{"type":"literal","value":"android_cell_5_bar_plus"},{"type":"literal","value":"android_cell_dual_4_bar"},{"type":"literal","value":"android_cell_dual_4_bar_alert"},{"type":"literal","value":"android_cell_dual_4_bar_plus"},{"type":"literal","value":"android_cell_dual_5_bar"},{"type":"literal","value":"android_cell_dual_5_bar_alert"},{"type":"literal","value":"android_cell_dual_5_bar_plus"},{"type":"literal","value":"android_wifi_3_bar"},{"type":"literal","value":"android_wifi_3_bar_alert"},{"type":"literal","value":"android_wifi_3_bar_lock"},{"type":"literal","value":"android_wifi_3_bar_off"},{"type":"literal","value":"android_wifi_3_bar_plus"},{"type":"literal","value":"android_wifi_3_bar_question"},{"type":"literal","value":"android_wifi_4_bar"},{"type":"literal","value":"android_wifi_4_bar_alert"},{"type":"literal","value":"android_wifi_4_bar_lock"},{"type":"literal","value":"android_wifi_4_bar_off"},{"type":"literal","value":"android_wifi_4_bar_plus"},{"type":"literal","value":"android_wifi_4_bar_question"},{"type":"literal","value":"animated_images"},{"type":"literal","value":"announcement"},{"type":"literal","value":"aod"},{"type":"literal","value":"aod_tablet"},{"type":"literal","value":"aod_watch"},{"type":"literal","value":"apartment"},{"type":"literal","value":"apk_document"},{"type":"literal","value":"apk_install"},{"type":"literal","value":"app_badging"},{"type":"literal","value":"app_blocking"},{"type":"literal","value":"app_registration"},{"type":"literal","value":"app_settings_alt"},{"type":"literal","value":"app_shortcut"},{"type":"literal","value":"apparel"},{"type":"literal","value":"approval"},{"type":"literal","value":"approval_delegation"},{"type":"literal","value":"approval_delegation_off"},{"type":"literal","value":"apps"},{"type":"literal","value":"apps_outage"},{"type":"literal","value":"aq"},{"type":"literal","value":"aq_indoor"},{"type":"literal","value":"ar_on_you"},{"type":"literal","value":"ar_stickers"},{"type":"literal","value":"architecture"},{"type":"literal","value":"archive"},{"type":"literal","value":"area_chart"},{"type":"literal","value":"arming_countdown"},{"type":"literal","value":"arrow_and_edge"},{"type":"literal","value":"arrow_back"},{"type":"literal","value":"arrow_back_2"},{"type":"literal","value":"arrow_back_ios"},{"type":"literal","value":"arrow_back_ios_new"},{"type":"literal","value":"arrow_circle_down"},{"type":"literal","value":"arrow_circle_left"},{"type":"literal","value":"arrow_circle_right"},{"type":"literal","value":"arrow_circle_up"},{"type":"literal","value":"arrow_cool_down"},{"type":"literal","value":"arrow_downward"},{"type":"literal","value":"arrow_downward_alt"},{"type":"literal","value":"arrow_drop_down"},{"type":"literal","value":"arrow_drop_down_circle"},{"type":"literal","value":"arrow_drop_up"},{"type":"literal","value":"arrow_forward"},{"type":"literal","value":"arrow_forward_ios"},{"type":"literal","value":"arrow_insert"},{"type":"literal","value":"arrow_left"},{"type":"literal","value":"arrow_left_alt"},{"type":"literal","value":"arrow_menu_close"},{"type":"literal","value":"arrow_menu_open"},{"type":"literal","value":"arrow_or_edge"},{"type":"literal","value":"arrow_outward"},{"type":"literal","value":"arrow_range"},{"type":"literal","value":"arrow_right"},{"type":"literal","value":"arrow_right_alt"},{"type":"literal","value":"arrow_selector_tool"},{"type":"literal","value":"arrow_shape_up"},{"type":"literal","value":"arrow_shape_up_stack"},{"type":"literal","value":"arrow_shape_up_stack_2"},{"type":"literal","value":"arrow_split"},{"type":"literal","value":"arrow_top_left"},{"type":"literal","value":"arrow_top_right"},{"type":"literal","value":"arrow_upload_progress"},{"type":"literal","value":"arrow_upload_ready"},{"type":"literal","value":"arrow_upward"},{"type":"literal","value":"arrow_upward_alt"},{"type":"literal","value":"arrow_warm_up"},{"type":"literal","value":"arrows_input"},{"type":"literal","value":"arrows_more_down"},{"type":"literal","value":"arrows_more_up"},{"type":"literal","value":"arrows_output"},{"type":"literal","value":"arrows_outward"},{"type":"literal","value":"art_track"},{"type":"literal","value":"article_person"},{"type":"literal","value":"article_shortcut"},{"type":"literal","value":"artist"},{"type":"literal","value":"aspect_ratio"},{"type":"literal","value":"assessment"},{"type":"literal","value":"assignment"},{"type":"literal","value":"assignment_add"},{"type":"literal","value":"assignment_ind"},{"type":"literal","value":"assignment_late"},{"type":"literal","value":"assignment_return"},{"type":"literal","value":"assignment_returned"},{"type":"literal","value":"assignment_turned_in"},{"type":"literal","value":"assist_walker"},{"type":"literal","value":"assistant"},{"type":"literal","value":"assistant_device"},{"type":"literal","value":"assistant_direction"},{"type":"literal","value":"assistant_navigation"},{"type":"literal","value":"assistant_on_hub"},{"type":"literal","value":"assistant_photo"},{"type":"literal","value":"assured_workload"},{"type":"literal","value":"atm"},{"type":"literal","value":"atr"},{"type":"literal","value":"attach_email"},{"type":"literal","value":"attach_file"},{"type":"literal","value":"attach_file_add"},{"type":"literal","value":"attach_file_off"},{"type":"literal","value":"attach_money"},{"type":"literal","value":"attachment"},{"type":"literal","value":"attractions"},{"type":"literal","value":"attribution"},{"type":"literal","value":"audio_description"},{"type":"literal","value":"audio_file"},{"type":"literal","value":"audio_video_receiver"},{"type":"literal","value":"audiotrack"},{"type":"literal","value":"auto_awesome"},{"type":"literal","value":"auto_awesome_mosaic"},{"type":"literal","value":"auto_awesome_motion"},{"type":"literal","value":"auto_delete"},{"type":"literal","value":"auto_fix_high"},{"type":"literal","value":"auto_fix_normal"},{"type":"literal","value":"auto_fix_off"},{"type":"literal","value":"auto_graph"},{"type":"literal","value":"auto_mode"},{"type":"literal","value":"auto_read_pause"},{"type":"literal","value":"auto_read_play"},{"type":"literal","value":"auto_stories"},{"type":"literal","value":"auto_stories_off"},{"type":"literal","value":"auto_towing"},{"type":"literal","value":"auto_transmission"},{"type":"literal","value":"autofps_select"},{"type":"literal","value":"automation"},{"type":"literal","value":"autopause"},{"type":"literal","value":"autoplay"},{"type":"literal","value":"autorenew"},{"type":"literal","value":"autostop"},{"type":"literal","value":"av1"},{"type":"literal","value":"av_timer"},{"type":"literal","value":"avc"},{"type":"literal","value":"avg_pace"},{"type":"literal","value":"avg_time"},{"type":"literal","value":"award_meal"},{"type":"literal","value":"award_star"},{"type":"literal","value":"azm"},{"type":"literal","value":"baby_changing_station"},{"type":"literal","value":"back_hand"},{"type":"literal","value":"back_to_tab"},{"type":"literal","value":"background_dot_large"},{"type":"literal","value":"background_dot_small"},{"type":"literal","value":"background_grid_small"},{"type":"literal","value":"background_replace"},{"type":"literal","value":"backlight_high"},{"type":"literal","value":"backlight_high_off"},{"type":"literal","value":"backlight_low"},{"type":"literal","value":"backspace"},{"type":"literal","value":"backup"},{"type":"literal","value":"backup_table"},{"type":"literal","value":"badge_critical_battery"},{"type":"literal","value":"badminton"},{"type":"literal","value":"bakery_dining"},{"type":"literal","value":"balance"},{"type":"literal","value":"balcony"},{"type":"literal","value":"ballot"},{"type":"literal","value":"bar_chart"},{"type":"literal","value":"bar_chart_4_bars"},{"type":"literal","value":"bar_chart_off"},{"type":"literal","value":"barcode_reader"},{"type":"literal","value":"barcode_scanner"},{"type":"literal","value":"barefoot"},{"type":"literal","value":"batch_prediction"},{"type":"literal","value":"bath_bedrock"},{"type":"literal","value":"bath_outdoor"},{"type":"literal","value":"bath_private"},{"type":"literal","value":"bath_public_large"},{"type":"literal","value":"bath_soak"},{"type":"literal","value":"bathroom"},{"type":"literal","value":"battery_0_bar"},{"type":"literal","value":"battery_1_bar"},{"type":"literal","value":"battery_20"},{"type":"literal","value":"battery_2_bar"},{"type":"literal","value":"battery_30"},{"type":"literal","value":"battery_3_bar"},{"type":"literal","value":"battery_4_bar"},{"type":"literal","value":"battery_50"},{"type":"literal","value":"battery_5_bar"},{"type":"literal","value":"battery_60"},{"type":"literal","value":"battery_6_bar"},{"type":"literal","value":"battery_80"},{"type":"literal","value":"battery_90"},{"type":"literal","value":"battery_alert"},{"type":"literal","value":"battery_android_0"},{"type":"literal","value":"battery_android_1"},{"type":"literal","value":"battery_android_2"},{"type":"literal","value":"battery_android_3"},{"type":"literal","value":"battery_android_4"},{"type":"literal","value":"battery_android_5"},{"type":"literal","value":"battery_android_6"},{"type":"literal","value":"battery_android_alert"},{"type":"literal","value":"battery_android_bolt"},{"type":"literal","value":"battery_android_frame_1"},{"type":"literal","value":"battery_android_frame_2"},{"type":"literal","value":"battery_android_frame_3"},{"type":"literal","value":"battery_android_frame_4"},{"type":"literal","value":"battery_android_frame_5"},{"type":"literal","value":"battery_android_frame_6"},{"type":"literal","value":"battery_android_frame_alert"},{"type":"literal","value":"battery_android_frame_bolt"},{"type":"literal","value":"battery_android_frame_full"},{"type":"literal","value":"battery_android_frame_plus"},{"type":"literal","value":"battery_android_frame_question"},{"type":"literal","value":"battery_android_frame_share"},{"type":"literal","value":"battery_android_frame_shield"},{"type":"literal","value":"battery_android_full"},{"type":"literal","value":"battery_android_plus"},{"type":"literal","value":"battery_android_question"},{"type":"literal","value":"battery_android_share"},{"type":"literal","value":"battery_android_shield"},{"type":"literal","value":"battery_change"},{"type":"literal","value":"battery_charging_20"},{"type":"literal","value":"battery_charging_30"},{"type":"literal","value":"battery_charging_50"},{"type":"literal","value":"battery_charging_60"},{"type":"literal","value":"battery_charging_80"},{"type":"literal","value":"battery_charging_90"},{"type":"literal","value":"battery_charging_full"},{"type":"literal","value":"battery_error"},{"type":"literal","value":"battery_full"},{"type":"literal","value":"battery_full_alt"},{"type":"literal","value":"battery_horiz_000"},{"type":"literal","value":"battery_horiz_050"},{"type":"literal","value":"battery_horiz_075"},{"type":"literal","value":"battery_low"},{"type":"literal","value":"battery_plus"},{"type":"literal","value":"battery_profile"},{"type":"literal","value":"battery_saver"},{"type":"literal","value":"battery_share"},{"type":"literal","value":"battery_status_good"},{"type":"literal","value":"battery_std"},{"type":"literal","value":"battery_unknown"},{"type":"literal","value":"battery_very_low"},{"type":"literal","value":"beach_access"},{"type":"literal","value":"bed"},{"type":"literal","value":"bedroom_baby"},{"type":"literal","value":"bedroom_child"},{"type":"literal","value":"bedroom_parent"},{"type":"literal","value":"bedtime"},{"type":"literal","value":"bedtime_off"},{"type":"literal","value":"beenhere"},{"type":"literal","value":"beer_meal"},{"type":"literal","value":"bento"},{"type":"literal","value":"bia"},{"type":"literal","value":"bid_landscape"},{"type":"literal","value":"bid_landscape_disabled"},{"type":"literal","value":"bigtop_updates"},{"type":"literal","value":"bike_dock"},{"type":"literal","value":"bike_lane"},{"type":"literal","value":"bike_scooter"},{"type":"literal","value":"biotech"},{"type":"literal","value":"blanket"},{"type":"literal","value":"blender"},{"type":"literal","value":"blind"},{"type":"literal","value":"blinds"},{"type":"literal","value":"blinds_closed"},{"type":"literal","value":"block"},{"type":"literal","value":"block_flipped"},{"type":"literal","value":"blood_pressure"},{"type":"literal","value":"bloodtype"},{"type":"literal","value":"bluetooth"},{"type":"literal","value":"bluetooth_audio"},{"type":"literal","value":"bluetooth_connected"},{"type":"literal","value":"bluetooth_disabled"},{"type":"literal","value":"bluetooth_drive"},{"type":"literal","value":"bluetooth_searching"},{"type":"literal","value":"blur_circular"},{"type":"literal","value":"blur_linear"},{"type":"literal","value":"blur_medium"},{"type":"literal","value":"blur_off"},{"type":"literal","value":"blur_on"},{"type":"literal","value":"blur_short"},{"type":"literal","value":"boat_bus"},{"type":"literal","value":"boat_railway"},{"type":"literal","value":"body_fat"},{"type":"literal","value":"body_system"},{"type":"literal","value":"bomb"},{"type":"literal","value":"book_2"},{"type":"literal","value":"book_3"},{"type":"literal","value":"book_4"},{"type":"literal","value":"book_5"},{"type":"literal","value":"book_6"},{"type":"literal","value":"book_online"},{"type":"literal","value":"book_ribbon"},{"type":"literal","value":"bookmark_add"},{"type":"literal","value":"bookmark_added"},{"type":"literal","value":"bookmark_bag"},{"type":"literal","value":"bookmark_border"},{"type":"literal","value":"bookmark_check"},{"type":"literal","value":"bookmark_flag"},{"type":"literal","value":"bookmark_heart"},{"type":"literal","value":"bookmark_manager"},{"type":"literal","value":"bookmark_remove"},{"type":"literal","value":"bookmark_star"},{"type":"literal","value":"bookmarks"},{"type":"literal","value":"books_movies_and_music"},{"type":"literal","value":"border_all"},{"type":"literal","value":"border_bottom"},{"type":"literal","value":"border_clear"},{"type":"literal","value":"border_color"},{"type":"literal","value":"border_horizontal"},{"type":"literal","value":"border_inner"},{"type":"literal","value":"border_left"},{"type":"literal","value":"border_outer"},{"type":"literal","value":"border_right"},{"type":"literal","value":"border_style"},{"type":"literal","value":"border_top"},{"type":"literal","value":"border_vertical"},{"type":"literal","value":"borg"},{"type":"literal","value":"bottom_app_bar"},{"type":"literal","value":"bottom_drawer"},{"type":"literal","value":"bottom_navigation"},{"type":"literal","value":"bottom_panel_close"},{"type":"literal","value":"bottom_panel_open"},{"type":"literal","value":"bottom_right_click"},{"type":"literal","value":"bottom_sheets"},{"type":"literal","value":"box"},{"type":"literal","value":"box_add"},{"type":"literal","value":"box_edit"},{"type":"literal","value":"boy"},{"type":"literal","value":"brand_awareness"},{"type":"literal","value":"brand_family"},{"type":"literal","value":"branding_watermark"},{"type":"literal","value":"breakfast_dining"},{"type":"literal","value":"breaking_news"},{"type":"literal","value":"breaking_news_alt_1"},{"type":"literal","value":"breastfeeding"},{"type":"literal","value":"brick"},{"type":"literal","value":"briefcase_meal"},{"type":"literal","value":"brightness_1"},{"type":"literal","value":"brightness_2"},{"type":"literal","value":"brightness_3"},{"type":"literal","value":"brightness_4"},{"type":"literal","value":"brightness_5"},{"type":"literal","value":"brightness_6"},{"type":"literal","value":"brightness_7"},{"type":"literal","value":"brightness_alert"},{"type":"literal","value":"brightness_auto"},{"type":"literal","value":"brightness_empty"},{"type":"literal","value":"brightness_high"},{"type":"literal","value":"brightness_low"},{"type":"literal","value":"brightness_medium"},{"type":"literal","value":"bring_your_own_ip"},{"type":"literal","value":"broadcast_on_home"},{"type":"literal","value":"broadcast_on_personal"},{"type":"literal","value":"broken_image"},{"type":"literal","value":"browse"},{"type":"literal","value":"browse_activity"},{"type":"literal","value":"browse_gallery"},{"type":"literal","value":"browser_not_supported"},{"type":"literal","value":"browser_updated"},{"type":"literal","value":"brunch_dining"},{"type":"literal","value":"brush"},{"type":"literal","value":"bubble_chart"},{"type":"literal","value":"bubbles"},{"type":"literal","value":"bucket_check"},{"type":"literal","value":"bug_report"},{"type":"literal","value":"build_circle"},{"type":"literal","value":"bungalow"},{"type":"literal","value":"burst_mode"},{"type":"literal","value":"bus_alert"},{"type":"literal","value":"bus_railway"},{"type":"literal","value":"business"},{"type":"literal","value":"business_center"},{"type":"literal","value":"business_chip"},{"type":"literal","value":"business_messages"},{"type":"literal","value":"buttons_alt"},{"type":"literal","value":"cabin"},{"type":"literal","value":"cable"},{"type":"literal","value":"cable_car"},{"type":"literal","value":"cached"},{"type":"literal","value":"cadence"},{"type":"literal","value":"cake"},{"type":"literal","value":"cake_add"},{"type":"literal","value":"calculate"},{"type":"literal","value":"calendar_add_on"},{"type":"literal","value":"calendar_apps_script"},{"type":"literal","value":"calendar_check"},{"type":"literal","value":"calendar_clock"},{"type":"literal","value":"calendar_lock"},{"type":"literal","value":"calendar_meal"},{"type":"literal","value":"calendar_meal_2"},{"type":"literal","value":"calendar_month"},{"type":"literal","value":"calendar_today"},{"type":"literal","value":"calendar_view_day"},{"type":"literal","value":"calendar_view_month"},{"type":"literal","value":"calendar_view_week"},{"type":"literal","value":"call"},{"type":"literal","value":"call_end"},{"type":"literal","value":"call_log"},{"type":"literal","value":"call_made"},{"type":"literal","value":"call_merge"},{"type":"literal","value":"call_missed"},{"type":"literal","value":"call_missed_outgoing"},{"type":"literal","value":"call_quality"},{"type":"literal","value":"call_received"},{"type":"literal","value":"call_split"},{"type":"literal","value":"call_to_action"},{"type":"literal","value":"camera_alt"},{"type":"literal","value":"camera_enhance"},{"type":"literal","value":"camera_front"},{"type":"literal","value":"camera_indoor"},{"type":"literal","value":"camera_outdoor"},{"type":"literal","value":"camera_rear"},{"type":"literal","value":"camera_roll"},{"type":"literal","value":"camera_video"},{"type":"literal","value":"cameraswitch"},{"type":"literal","value":"campaign"},{"type":"literal","value":"camping"},{"type":"literal","value":"cancel_presentation"},{"type":"literal","value":"cancel_schedule_send"},{"type":"literal","value":"candle"},{"type":"literal","value":"candlestick_chart"},{"type":"literal","value":"cannabis"},{"type":"literal","value":"captive_portal"},{"type":"literal","value":"capture"},{"type":"literal","value":"car_crash"},{"type":"literal","value":"car_defrost_left"},{"type":"literal","value":"car_defrost_low_left"},{"type":"literal","value":"car_defrost_low_right"},{"type":"literal","value":"car_defrost_mid_left"},{"type":"literal","value":"car_defrost_mid_low_left"},{"type":"literal","value":"car_defrost_mid_low_right"},{"type":"literal","value":"car_defrost_mid_right"},{"type":"literal","value":"car_defrost_right"},{"type":"literal","value":"car_fan_low_left"},{"type":"literal","value":"car_fan_low_mid_left"},{"type":"literal","value":"car_fan_low_right"},{"type":"literal","value":"car_fan_mid_left"},{"type":"literal","value":"car_fan_mid_low_right"},{"type":"literal","value":"car_fan_mid_right"},{"type":"literal","value":"car_fan_recirculate"},{"type":"literal","value":"car_gear"},{"type":"literal","value":"car_lock"},{"type":"literal","value":"car_mirror_heat"},{"type":"literal","value":"car_rental"},{"type":"literal","value":"car_repair"},{"type":"literal","value":"car_tag"},{"type":"literal","value":"card_giftcard"},{"type":"literal","value":"card_membership"},{"type":"literal","value":"card_travel"},{"type":"literal","value":"cardio_load"},{"type":"literal","value":"cardiology"},{"type":"literal","value":"cards"},{"type":"literal","value":"cards_star"},{"type":"literal","value":"carpenter"},{"type":"literal","value":"carry_on_bag"},{"type":"literal","value":"carry_on_bag_checked"},{"type":"literal","value":"carry_on_bag_inactive"},{"type":"literal","value":"carry_on_bag_question"},{"type":"literal","value":"cases"},{"type":"literal","value":"casino"},{"type":"literal","value":"cast"},{"type":"literal","value":"cast_connected"},{"type":"literal","value":"cast_for_education"},{"type":"literal","value":"cast_pause"},{"type":"literal","value":"cast_warning"},{"type":"literal","value":"castle"},{"type":"literal","value":"catching_pokemon"},{"type":"literal","value":"category_search"},{"type":"literal","value":"celebration"},{"type":"literal","value":"cell_merge"},{"type":"literal","value":"cell_tower"},{"type":"literal","value":"cell_wifi"},{"type":"literal","value":"center_focus_strong"},{"type":"literal","value":"center_focus_weak"},{"type":"literal","value":"chair_alt"},{"type":"literal","value":"chair_counter"},{"type":"literal","value":"chair_fireplace"},{"type":"literal","value":"chair_umbrella"},{"type":"literal","value":"chalet"},{"type":"literal","value":"change_circle"},{"type":"literal","value":"change_history"},{"type":"literal","value":"charger"},{"type":"literal","value":"charging_station"},{"type":"literal","value":"chart_data"},{"type":"literal","value":"chat"},{"type":"literal","value":"chat_add_on"},{"type":"literal","value":"chat_apps_script"},{"type":"literal","value":"chat_bubble"},{"type":"literal","value":"chat_bubble_outline"},{"type":"literal","value":"chat_error"},{"type":"literal","value":"chat_info"},{"type":"literal","value":"chat_paste_go"},{"type":"literal","value":"chat_paste_go_2"},{"type":"literal","value":"check"},{"type":"literal","value":"check_box"},{"type":"literal","value":"check_box_outline_blank"},{"type":"literal","value":"check_circle"},{"type":"literal","value":"check_circle_outline"},{"type":"literal","value":"check_circle_unread"},{"type":"literal","value":"check_in_out"},{"type":"literal","value":"check_indeterminate_small"},{"type":"literal","value":"check_small"},{"type":"literal","value":"checkbook"},{"type":"literal","value":"checked_bag"},{"type":"literal","value":"checked_bag_question"},{"type":"literal","value":"checklist_rtl"},{"type":"literal","value":"checkroom"},{"type":"literal","value":"cheer"},{"type":"literal","value":"chef_hat"},{"type":"literal","value":"chess"},{"type":"literal","value":"chess_bishop"},{"type":"literal","value":"chess_bishop_2"},{"type":"literal","value":"chess_king"},{"type":"literal","value":"chess_king_2"},{"type":"literal","value":"chess_knight"},{"type":"literal","value":"chess_pawn"},{"type":"literal","value":"chess_pawn_2"},{"type":"literal","value":"chess_queen"},{"type":"literal","value":"chess_rook"},{"type":"literal","value":"chevron_backward"},{"type":"literal","value":"chevron_forward"},{"type":"literal","value":"chevron_left"},{"type":"literal","value":"chevron_right"},{"type":"literal","value":"child_care"},{"type":"literal","value":"child_friendly"},{"type":"literal","value":"child_hat"},{"type":"literal","value":"chip_extraction"},{"type":"literal","value":"chips"},{"type":"literal","value":"chrome_reader_mode"},{"type":"literal","value":"chromecast_2"},{"type":"literal","value":"chromecast_device"},{"type":"literal","value":"chronic"},{"type":"literal","value":"church"},{"type":"literal","value":"cinematic_blur"},{"type":"literal","value":"circle_notifications"},{"type":"literal","value":"circles"},{"type":"literal","value":"circles_ext"},{"type":"literal","value":"clarify"},{"type":"literal","value":"clean_hands"},{"type":"literal","value":"cleaning"},{"type":"literal","value":"cleaning_bucket"},{"type":"literal","value":"cleaning_services"},{"type":"literal","value":"clear_all"},{"type":"literal","value":"clear_day"},{"type":"literal","value":"climate_mini_split"},{"type":"literal","value":"clinical_notes"},{"type":"literal","value":"clock_arrow_down"},{"type":"literal","value":"clock_arrow_up"},{"type":"literal","value":"clock_loader_10"},{"type":"literal","value":"clock_loader_20"},{"type":"literal","value":"clock_loader_40"},{"type":"literal","value":"clock_loader_60"},{"type":"literal","value":"clock_loader_80"},{"type":"literal","value":"clock_loader_90"},{"type":"literal","value":"close_fullscreen"},{"type":"literal","value":"close_small"},{"type":"literal","value":"closed_caption"},{"type":"literal","value":"closed_caption_add"},{"type":"literal","value":"closed_caption_disabled"},{"type":"literal","value":"closed_caption_off"},{"type":"literal","value":"cloud_alert"},{"type":"literal","value":"cloud_circle"},{"type":"literal","value":"cloud_done"},{"type":"literal","value":"cloud_download"},{"type":"literal","value":"cloud_lock"},{"type":"literal","value":"cloud_off"},{"type":"literal","value":"cloud_queue"},{"type":"literal","value":"cloud_sync"},{"type":"literal","value":"cloud_upload"},{"type":"literal","value":"cloudy_snowing"},{"type":"literal","value":"co2"},{"type":"literal","value":"co_present"},{"type":"literal","value":"code_blocks"},{"type":"literal","value":"code_off"},{"type":"literal","value":"coffee"},{"type":"literal","value":"coffee_maker"},{"type":"literal","value":"cognition"},{"type":"literal","value":"cognition_2"},{"type":"literal","value":"collapse_all"},{"type":"literal","value":"collapse_content"},{"type":"literal","value":"collections"},{"type":"literal","value":"collections_bookmark"},{"type":"literal","value":"color_lens"},{"type":"literal","value":"colorize"},{"type":"literal","value":"combine_columns"},{"type":"literal","value":"comedy_mask"},{"type":"literal","value":"comic_bubble"},{"type":"literal","value":"comment_bank"},{"type":"literal","value":"comments_disabled"},{"type":"literal","value":"commit"},{"type":"literal","value":"communication"},{"type":"literal","value":"communities"},{"type":"literal","value":"commute"},{"type":"literal","value":"compare"},{"type":"literal","value":"compare_arrows"},{"type":"literal","value":"compass_calibration"},{"type":"literal","value":"component_exchange"},{"type":"literal","value":"compost"},{"type":"literal","value":"compress"},{"type":"literal","value":"computer"},{"type":"literal","value":"computer_arrow_up"},{"type":"literal","value":"computer_cancel"},{"type":"literal","value":"concierge"},{"type":"literal","value":"conditions"},{"type":"literal","value":"confirmation_number"},{"type":"literal","value":"congenital"},{"type":"literal","value":"connect_without_contact"},{"type":"literal","value":"connected_tv"},{"type":"literal","value":"connecting_airports"},{"type":"literal","value":"construction"},{"type":"literal","value":"contact_emergency"},{"type":"literal","value":"contact_mail"},{"type":"literal","value":"contact_page"},{"type":"literal","value":"contact_phone"},{"type":"literal","value":"contact_support"},{"type":"literal","value":"contactless"},{"type":"literal","value":"contactless_off"},{"type":"literal","value":"contacts"},{"type":"literal","value":"contacts_product"},{"type":"literal","value":"content_copy"},{"type":"literal","value":"content_cut"},{"type":"literal","value":"content_paste"},{"type":"literal","value":"content_paste_go"},{"type":"literal","value":"content_paste_off"},{"type":"literal","value":"content_paste_search"},{"type":"literal","value":"contextual_token"},{"type":"literal","value":"contextual_token_add"},{"type":"literal","value":"contract"},{"type":"literal","value":"contract_delete"},{"type":"literal","value":"contract_edit"},{"type":"literal","value":"contrast_circle"},{"type":"literal","value":"contrast_rtl_off"},{"type":"literal","value":"contrast_square"},{"type":"literal","value":"control_camera"},{"type":"literal","value":"control_point"},{"type":"literal","value":"control_point_duplicate"},{"type":"literal","value":"controller_gen"},{"type":"literal","value":"conversation"},{"type":"literal","value":"conversion_path"},{"type":"literal","value":"conversion_path_off"},{"type":"literal","value":"convert_to_text"},{"type":"literal","value":"conveyor_belt"},{"type":"literal","value":"cookie"},{"type":"literal","value":"cookie_off"},{"type":"literal","value":"cooking"},{"type":"literal","value":"cool_to_dry"},{"type":"literal","value":"copy_all"},{"type":"literal","value":"copyright"},{"type":"literal","value":"coronavirus"},{"type":"literal","value":"corporate_fare"},{"type":"literal","value":"cottage"},{"type":"literal","value":"counter_0"},{"type":"literal","value":"counter_1"},{"type":"literal","value":"counter_2"},{"type":"literal","value":"counter_3"},{"type":"literal","value":"counter_4"},{"type":"literal","value":"counter_5"},{"type":"literal","value":"counter_6"},{"type":"literal","value":"counter_7"},{"type":"literal","value":"counter_8"},{"type":"literal","value":"counter_9"},{"type":"literal","value":"countertops"},{"type":"literal","value":"create_new_folder"},{"type":"literal","value":"credit_card"},{"type":"literal","value":"credit_card_clock"},{"type":"literal","value":"credit_card_gear"},{"type":"literal","value":"credit_card_heart"},{"type":"literal","value":"credit_card_off"},{"type":"literal","value":"credit_score"},{"type":"literal","value":"crib"},{"type":"literal","value":"crisis_alert"},{"type":"literal","value":"crop_16_9"},{"type":"literal","value":"crop_3_2"},{"type":"literal","value":"crop_5_4"},{"type":"literal","value":"crop_7_5"},{"type":"literal","value":"crop_9_16"},{"type":"literal","value":"crop_din"},{"type":"literal","value":"crop_free"},{"type":"literal","value":"crop_landscape"},{"type":"literal","value":"crop_original"},{"type":"literal","value":"crop_portrait"},{"type":"literal","value":"crop_rotate"},{"type":"literal","value":"crop_square"},{"type":"literal","value":"crossword"},{"type":"literal","value":"crowdsource"},{"type":"literal","value":"cruelty_free"},{"type":"literal","value":"css"},{"type":"literal","value":"csv"},{"type":"literal","value":"currency_bitcoin"},{"type":"literal","value":"currency_exchange"},{"type":"literal","value":"currency_franc"},{"type":"literal","value":"currency_lira"},{"type":"literal","value":"currency_pound"},{"type":"literal","value":"currency_ruble"},{"type":"literal","value":"currency_rupee"},{"type":"literal","value":"currency_rupee_circle"},{"type":"literal","value":"currency_yen"},{"type":"literal","value":"currency_yuan"},{"type":"literal","value":"curtains"},{"type":"literal","value":"curtains_closed"},{"type":"literal","value":"custom_typography"},{"type":"literal","value":"cycle"},{"type":"literal","value":"cyclone"},{"type":"literal","value":"dark_mode"},{"type":"literal","value":"dashboard"},{"type":"literal","value":"dashboard_2"},{"type":"literal","value":"dashboard_customize"},{"type":"literal","value":"data_alert"},{"type":"literal","value":"data_array"},{"type":"literal","value":"data_check"},{"type":"literal","value":"data_exploration"},{"type":"literal","value":"data_info_alert"},{"type":"literal","value":"data_loss_prevention"},{"type":"literal","value":"data_object"},{"type":"literal","value":"data_saver_off"},{"type":"literal","value":"data_saver_on"},{"type":"literal","value":"data_table"},{"type":"literal","value":"data_thresholding"},{"type":"literal","value":"data_usage"},{"type":"literal","value":"database"},{"type":"literal","value":"database_off"},{"type":"literal","value":"database_search"},{"type":"literal","value":"database_upload"},{"type":"literal","value":"dataset"},{"type":"literal","value":"dataset_linked"},{"type":"literal","value":"date_range"},{"type":"literal","value":"deblur"},{"type":"literal","value":"deceased"},{"type":"literal","value":"decimal_decrease"},{"type":"literal","value":"decimal_increase"},{"type":"literal","value":"deck"},{"type":"literal","value":"dehaze"},{"type":"literal","value":"delete_forever"},{"type":"literal","value":"delete_history"},{"type":"literal","value":"delete_outline"},{"type":"literal","value":"delete_sweep"},{"type":"literal","value":"delivery_dining"},{"type":"literal","value":"delivery_truck_bolt"},{"type":"literal","value":"delivery_truck_speed"},{"type":"literal","value":"demography"},{"type":"literal","value":"density_large"},{"type":"literal","value":"density_medium"},{"type":"literal","value":"density_small"},{"type":"literal","value":"dentistry"},{"type":"literal","value":"departure_board"},{"type":"literal","value":"deployed_code"},{"type":"literal","value":"deployed_code_account"},{"type":"literal","value":"deployed_code_alert"},{"type":"literal","value":"deployed_code_history"},{"type":"literal","value":"deployed_code_update"},{"type":"literal","value":"dermatology"},{"type":"literal","value":"deselect"},{"type":"literal","value":"design_services"},{"type":"literal","value":"desk"},{"type":"literal","value":"deskphone"},{"type":"literal","value":"desktop_access_disabled"},{"type":"literal","value":"desktop_cloud"},{"type":"literal","value":"desktop_cloud_stack"},{"type":"literal","value":"desktop_landscape"},{"type":"literal","value":"desktop_landscape_add"},{"type":"literal","value":"desktop_mac"},{"type":"literal","value":"desktop_portrait"},{"type":"literal","value":"desktop_windows"},{"type":"literal","value":"destruction"},{"type":"literal","value":"detection_and_zone"},{"type":"literal","value":"detector"},{"type":"literal","value":"detector_alarm"},{"type":"literal","value":"detector_battery"},{"type":"literal","value":"detector_co"},{"type":"literal","value":"detector_offline"},{"type":"literal","value":"detector_smoke"},{"type":"literal","value":"detector_status"},{"type":"literal","value":"developer_board"},{"type":"literal","value":"developer_board_off"},{"type":"literal","value":"developer_guide"},{"type":"literal","value":"developer_mode"},{"type":"literal","value":"developer_mode_tv"},{"type":"literal","value":"device_band"},{"type":"literal","value":"device_hub"},{"type":"literal","value":"device_thermostat"},{"type":"literal","value":"device_unknown"},{"type":"literal","value":"devices"},{"type":"literal","value":"devices_fold"},{"type":"literal","value":"devices_fold_2"},{"type":"literal","value":"devices_off"},{"type":"literal","value":"devices_other"},{"type":"literal","value":"devices_wearables"},{"type":"literal","value":"dew_point"},{"type":"literal","value":"diagnosis"},{"type":"literal","value":"diagonal_line"},{"type":"literal","value":"dialer_sip"},{"type":"literal","value":"dialogs"},{"type":"literal","value":"dialpad"},{"type":"literal","value":"diamond_shine"},{"type":"literal","value":"dictionary"},{"type":"literal","value":"digital_out_of_home"},{"type":"literal","value":"digital_wellbeing"},{"type":"literal","value":"dine_heart"},{"type":"literal","value":"dine_in"},{"type":"literal","value":"dine_lamp"},{"type":"literal","value":"dining"},{"type":"literal","value":"dinner_dining"},{"type":"literal","value":"directions"},{"type":"literal","value":"directions_alt"},{"type":"literal","value":"directions_alt_off"},{"type":"literal","value":"directions_bike"},{"type":"literal","value":"directions_boat"},{"type":"literal","value":"directions_boat_filled"},{"type":"literal","value":"directions_bus"},{"type":"literal","value":"directions_bus_filled"},{"type":"literal","value":"directions_car"},{"type":"literal","value":"directions_car_filled"},{"type":"literal","value":"directions_off"},{"type":"literal","value":"directions_railway"},{"type":"literal","value":"directions_railway_2"},{"type":"literal","value":"directions_railway_filled"},{"type":"literal","value":"directions_run"},{"type":"literal","value":"directions_subway"},{"type":"literal","value":"directions_subway_filled"},{"type":"literal","value":"directions_transit"},{"type":"literal","value":"directions_transit_filled"},{"type":"literal","value":"directions_walk"},{"type":"literal","value":"directory_sync"},{"type":"literal","value":"dirty_lens"},{"type":"literal","value":"disabled_by_default"},{"type":"literal","value":"disabled_visible"},{"type":"literal","value":"disc_full"},{"type":"literal","value":"discount"},{"type":"literal","value":"discover_tune"},{"type":"literal","value":"dishwasher_gen"},{"type":"literal","value":"display_external_input"},{"type":"literal","value":"display_settings"},{"type":"literal","value":"distance"},{"type":"literal","value":"diversity_1"},{"type":"literal","value":"diversity_2"},{"type":"literal","value":"diversity_3"},{"type":"literal","value":"diversity_4"},{"type":"literal","value":"dns"},{"type":"literal","value":"do_disturb"},{"type":"literal","value":"do_disturb_alt"},{"type":"literal","value":"do_disturb_off"},{"type":"literal","value":"do_disturb_on"},{"type":"literal","value":"do_not_disturb"},{"type":"literal","value":"do_not_disturb_alt"},{"type":"literal","value":"do_not_disturb_off"},{"type":"literal","value":"do_not_disturb_on"},{"type":"literal","value":"do_not_disturb_on_total_silence"},{"type":"literal","value":"do_not_step"},{"type":"literal","value":"do_not_touch"},{"type":"literal","value":"dock"},{"type":"literal","value":"dock_to_bottom"},{"type":"literal","value":"dock_to_left"},{"type":"literal","value":"dock_to_right"},{"type":"literal","value":"docs"},{"type":"literal","value":"docs_add_on"},{"type":"literal","value":"docs_apps_script"},{"type":"literal","value":"document_scanner"},{"type":"literal","value":"document_search"},{"type":"literal","value":"domain"},{"type":"literal","value":"domain_add"},{"type":"literal","value":"domain_disabled"},{"type":"literal","value":"domain_verification"},{"type":"literal","value":"domain_verification_off"},{"type":"literal","value":"domino_mask"},{"type":"literal","value":"done_all"},{"type":"literal","value":"done_outline"},{"type":"literal","value":"donut_large"},{"type":"literal","value":"donut_small"},{"type":"literal","value":"door_back"},{"type":"literal","value":"door_front"},{"type":"literal","value":"door_open"},{"type":"literal","value":"door_sensor"},{"type":"literal","value":"door_sliding"},{"type":"literal","value":"doorbell"},{"type":"literal","value":"doorbell_3p"},{"type":"literal","value":"doorbell_chime"},{"type":"literal","value":"double_arrow"},{"type":"literal","value":"downhill_skiing"},{"type":"literal","value":"download"},{"type":"literal","value":"download_2"},{"type":"literal","value":"download_done"},{"type":"literal","value":"download_for_offline"},{"type":"literal","value":"downloading"},{"type":"literal","value":"draft"},{"type":"literal","value":"draft_orders"},{"type":"literal","value":"drafts"},{"type":"literal","value":"drag_click"},{"type":"literal","value":"drag_handle"},{"type":"literal","value":"drag_indicator"},{"type":"literal","value":"drag_pan"},{"type":"literal","value":"draw"},{"type":"literal","value":"draw_abstract"},{"type":"literal","value":"draw_collage"},{"type":"literal","value":"dresser"},{"type":"literal","value":"drive_eta"},{"type":"literal","value":"drive_export"},{"type":"literal","value":"drive_file_move"},{"type":"literal","value":"drive_file_move_outline"},{"type":"literal","value":"drive_file_move_rtl"},{"type":"literal","value":"drive_file_rename_outline"},{"type":"literal","value":"drive_folder_upload"},{"type":"literal","value":"drone_2"},{"type":"literal","value":"dropdown"},{"type":"literal","value":"dropper_eye"},{"type":"literal","value":"dry"},{"type":"literal","value":"dry_cleaning"},{"type":"literal","value":"dual_screen"},{"type":"literal","value":"duo"},{"type":"literal","value":"dvr"},{"type":"literal","value":"dynamic_feed"},{"type":"literal","value":"dynamic_form"},{"type":"literal","value":"e911_avatar"},{"type":"literal","value":"e911_emergency"},{"type":"literal","value":"e_mobiledata"},{"type":"literal","value":"e_mobiledata_badge"},{"type":"literal","value":"ear_sound"},{"type":"literal","value":"earbud_case"},{"type":"literal","value":"earbud_left"},{"type":"literal","value":"earbud_right"},{"type":"literal","value":"earbuds_2"},{"type":"literal","value":"earbuds_battery"},{"type":"literal","value":"early_on"},{"type":"literal","value":"earthquake"},{"type":"literal","value":"east"},{"type":"literal","value":"ecg"},{"type":"literal","value":"ecg_heart"},{"type":"literal","value":"eco"},{"type":"literal","value":"eda"},{"type":"literal","value":"edgesensor_high"},{"type":"literal","value":"edgesensor_low"},{"type":"literal","value":"edit"},{"type":"literal","value":"edit_arrow_down"},{"type":"literal","value":"edit_arrow_up"},{"type":"literal","value":"edit_attributes"},{"type":"literal","value":"edit_audio"},{"type":"literal","value":"edit_calendar"},{"type":"literal","value":"edit_document"},{"type":"literal","value":"edit_location"},{"type":"literal","value":"edit_location_alt"},{"type":"literal","value":"edit_note"},{"type":"literal","value":"edit_notifications"},{"type":"literal","value":"edit_off"},{"type":"literal","value":"edit_road"},{"type":"literal","value":"edit_square"},{"type":"literal","value":"editor_choice"},{"type":"literal","value":"egg"},{"type":"literal","value":"egg_alt"},{"type":"literal","value":"elderly"},{"type":"literal","value":"elderly_woman"},{"type":"literal","value":"electric_bike"},{"type":"literal","value":"electric_bolt"},{"type":"literal","value":"electric_car"},{"type":"literal","value":"electric_meter"},{"type":"literal","value":"electric_moped"},{"type":"literal","value":"electric_rickshaw"},{"type":"literal","value":"electric_scooter"},{"type":"literal","value":"electrical_services"},{"type":"literal","value":"elevator"},{"type":"literal","value":"emergency"},{"type":"literal","value":"emergency_heat"},{"type":"literal","value":"emergency_heat_2"},{"type":"literal","value":"emergency_home"},{"type":"literal","value":"emergency_recording"},{"type":"literal","value":"emergency_share"},{"type":"literal","value":"emergency_share_off"},{"type":"literal","value":"emoji_emotions"},{"type":"literal","value":"emoji_events"},{"type":"literal","value":"emoji_food_beverage"},{"type":"literal","value":"emoji_language"},{"type":"literal","value":"emoji_nature"},{"type":"literal","value":"emoji_objects"},{"type":"literal","value":"emoji_people"},{"type":"literal","value":"emoji_symbols"},{"type":"literal","value":"emoji_transportation"},{"type":"literal","value":"emoticon"},{"type":"literal","value":"empty_dashboard"},{"type":"literal","value":"encrypted"},{"type":"literal","value":"encrypted_add"},{"type":"literal","value":"encrypted_add_circle"},{"type":"literal","value":"encrypted_minus_circle"},{"type":"literal","value":"encrypted_off"},{"type":"literal","value":"endocrinology"},{"type":"literal","value":"energy"},{"type":"literal","value":"energy_program_saving"},{"type":"literal","value":"energy_program_time_used"},{"type":"literal","value":"energy_savings_leaf"},{"type":"literal","value":"engineering"},{"type":"literal","value":"enhanced_encryption"},{"type":"literal","value":"ent"},{"type":"literal","value":"enterprise"},{"type":"literal","value":"enterprise_off"},{"type":"literal","value":"equalizer"},{"type":"literal","value":"eraser_size_1"},{"type":"literal","value":"eraser_size_2"},{"type":"literal","value":"eraser_size_3"},{"type":"literal","value":"eraser_size_4"},{"type":"literal","value":"eraser_size_5"},{"type":"literal","value":"error_med"},{"type":"literal","value":"error_outline"},{"type":"literal","value":"escalator"},{"type":"literal","value":"escalator_warning"},{"type":"literal","value":"euro"},{"type":"literal","value":"euro_symbol"},{"type":"literal","value":"ev_mobiledata_badge"},{"type":"literal","value":"ev_shadow"},{"type":"literal","value":"ev_shadow_add"},{"type":"literal","value":"ev_shadow_minus"},{"type":"literal","value":"ev_station"},{"type":"literal","value":"event_available"},{"type":"literal","value":"event_busy"},{"type":"literal","value":"event_list"},{"type":"literal","value":"event_note"},{"type":"literal","value":"event_repeat"},{"type":"literal","value":"event_seat"},{"type":"literal","value":"event_upcoming"},{"type":"literal","value":"exclamation"},{"type":"literal","value":"exercise"},{"type":"literal","value":"exit_to_app"},{"type":"literal","value":"expand_all"},{"type":"literal","value":"expand_circle_down"},{"type":"literal","value":"expand_circle_right"},{"type":"literal","value":"expand_circle_up"},{"type":"literal","value":"expand_content"},{"type":"literal","value":"expand_less"},{"type":"literal","value":"expand_more"},{"type":"literal","value":"expansion_panels"},{"type":"literal","value":"experiment"},{"type":"literal","value":"explicit"},{"type":"literal","value":"explore"},{"type":"literal","value":"explore_nearby"},{"type":"literal","value":"explore_off"},{"type":"literal","value":"explosion"},{"type":"literal","value":"export_notes"},{"type":"literal","value":"exposure"},{"type":"literal","value":"exposure_neg_1"},{"type":"literal","value":"exposure_neg_2"},{"type":"literal","value":"exposure_plus_1"},{"type":"literal","value":"exposure_plus_2"},{"type":"literal","value":"exposure_zero"},{"type":"literal","value":"extension"},{"type":"literal","value":"extension_off"},{"type":"literal","value":"eye_tracking"},{"type":"literal","value":"eyeglasses_2"},{"type":"literal","value":"eyeglasses_2_sound"},{"type":"literal","value":"face"},{"type":"literal","value":"face_2"},{"type":"literal","value":"face_3"},{"type":"literal","value":"face_4"},{"type":"literal","value":"face_5"},{"type":"literal","value":"face_6"},{"type":"literal","value":"face_down"},{"type":"literal","value":"face_left"},{"type":"literal","value":"face_nod"},{"type":"literal","value":"face_retouching_natural"},{"type":"literal","value":"face_retouching_off"},{"type":"literal","value":"face_right"},{"type":"literal","value":"face_shake"},{"type":"literal","value":"face_unlock"},{"type":"literal","value":"face_up"},{"type":"literal","value":"fact_check"},{"type":"literal","value":"factory"},{"type":"literal","value":"falling"},{"type":"literal","value":"familiar_face_and_zone"},{"type":"literal","value":"family_group"},{"type":"literal","value":"family_history"},{"type":"literal","value":"family_home"},{"type":"literal","value":"family_link"},{"type":"literal","value":"family_restroom"},{"type":"literal","value":"family_star"},{"type":"literal","value":"fan_focus"},{"type":"literal","value":"fan_indirect"},{"type":"literal","value":"farsight_digital"},{"type":"literal","value":"fast_forward"},{"type":"literal","value":"fast_rewind"},{"type":"literal","value":"fastfood"},{"type":"literal","value":"faucet"},{"type":"literal","value":"favorite"},{"type":"literal","value":"favorite_border"},{"type":"literal","value":"fax"},{"type":"literal","value":"feature_search"},{"type":"literal","value":"featured_play_list"},{"type":"literal","value":"featured_seasonal_and_gifts"},{"type":"literal","value":"featured_video"},{"type":"literal","value":"feedback"},{"type":"literal","value":"female"},{"type":"literal","value":"femur"},{"type":"literal","value":"femur_alt"},{"type":"literal","value":"fence"},{"type":"literal","value":"fertile"},{"type":"literal","value":"festival"},{"type":"literal","value":"fiber_dvr"},{"type":"literal","value":"fiber_manual_record"},{"type":"literal","value":"fiber_new"},{"type":"literal","value":"fiber_pin"},{"type":"literal","value":"fiber_smart_record"},{"type":"literal","value":"file_copy"},{"type":"literal","value":"file_copy_off"},{"type":"literal","value":"file_download"},{"type":"literal","value":"file_download_done"},{"type":"literal","value":"file_download_off"},{"type":"literal","value":"file_export"},{"type":"literal","value":"file_json"},{"type":"literal","value":"file_map"},{"type":"literal","value":"file_map_stack"},{"type":"literal","value":"file_open"},{"type":"literal","value":"file_png"},{"type":"literal","value":"file_present"},{"type":"literal","value":"file_save"},{"type":"literal","value":"file_save_off"},{"type":"literal","value":"file_upload"},{"type":"literal","value":"file_upload_off"},{"type":"literal","value":"files"},{"type":"literal","value":"filter_1"},{"type":"literal","value":"filter_2"},{"type":"literal","value":"filter_3"},{"type":"literal","value":"filter_4"},{"type":"literal","value":"filter_5"},{"type":"literal","value":"filter_6"},{"type":"literal","value":"filter_7"},{"type":"literal","value":"filter_8"},{"type":"literal","value":"filter_9"},{"type":"literal","value":"filter_9_plus"},{"type":"literal","value":"filter_alt"},{"type":"literal","value":"filter_alt_off"},{"type":"literal","value":"filter_arrow_right"},{"type":"literal","value":"filter_b_and_w"},{"type":"literal","value":"filter_center_focus"},{"type":"literal","value":"filter_drama"},{"type":"literal","value":"filter_frames"},{"type":"literal","value":"filter_hdr"},{"type":"literal","value":"filter_list"},{"type":"literal","value":"filter_list_alt"},{"type":"literal","value":"filter_list_off"},{"type":"literal","value":"filter_none"},{"type":"literal","value":"filter_retrolux"},{"type":"literal","value":"filter_tilt_shift"},{"type":"literal","value":"filter_vintage"},{"type":"literal","value":"finance"},{"type":"literal","value":"finance_chip"},{"type":"literal","value":"finance_mode"},{"type":"literal","value":"find_in_page"},{"type":"literal","value":"find_replace"},{"type":"literal","value":"fingerprint_off"},{"type":"literal","value":"fire_extinguisher"},{"type":"literal","value":"fire_hydrant"},{"type":"literal","value":"fire_hydrant_alt"},{"type":"literal","value":"fire_truck"},{"type":"literal","value":"first_page"},{"type":"literal","value":"fit_page"},{"type":"literal","value":"fit_page_height"},{"type":"literal","value":"fit_page_width"},{"type":"literal","value":"fit_screen"},{"type":"literal","value":"fit_width"},{"type":"literal","value":"fitbit"},{"type":"literal","value":"fitness_center"},{"type":"literal","value":"fitness_tracker"},{"type":"literal","value":"fitness_trackers"},{"type":"literal","value":"flag_2"},{"type":"literal","value":"flag_check"},{"type":"literal","value":"flag_circle"},{"type":"literal","value":"flaky"},{"type":"literal","value":"flare"},{"type":"literal","value":"flash_auto"},{"type":"literal","value":"flash_off"},{"type":"literal","value":"flash_on"},{"type":"literal","value":"flashlight_off"},{"type":"literal","value":"flashlight_on"},{"type":"literal","value":"flatware"},{"type":"literal","value":"flex_direction"},{"type":"literal","value":"flex_no_wrap"},{"type":"literal","value":"flex_wrap"},{"type":"literal","value":"flight"},{"type":"literal","value":"flight_class"},{"type":"literal","value":"flight_land"},{"type":"literal","value":"flight_takeoff"},{"type":"literal","value":"flights_and_hotels"},{"type":"literal","value":"flip_camera_android"},{"type":"literal","value":"flip_camera_ios"},{"type":"literal","value":"flip_to_back"},{"type":"literal","value":"flip_to_front"},{"type":"literal","value":"float_landscape_2"},{"type":"literal","value":"float_portrait_2"},{"type":"literal","value":"flood"},{"type":"literal","value":"floor"},{"type":"literal","value":"floor_lamp"},{"type":"literal","value":"flowsheet"},{"type":"literal","value":"fluid"},{"type":"literal","value":"fluid_balance"},{"type":"literal","value":"fluid_med"},{"type":"literal","value":"fluorescent"},{"type":"literal","value":"flutter"},{"type":"literal","value":"flutter_dash"},{"type":"literal","value":"flyover"},{"type":"literal","value":"fmd_bad"},{"type":"literal","value":"fmd_good"},{"type":"literal","value":"foggy"},{"type":"literal","value":"folded_hands"},{"type":"literal","value":"folder_check"},{"type":"literal","value":"folder_check_2"},{"type":"literal","value":"folder_code"},{"type":"literal","value":"folder_copy"},{"type":"literal","value":"folder_data"},{"type":"literal","value":"folder_delete"},{"type":"literal","value":"folder_eye"},{"type":"literal","value":"folder_info"},{"type":"literal","value":"folder_limited"},{"type":"literal","value":"folder_managed"},{"type":"literal","value":"folder_match"},{"type":"literal","value":"folder_off"},{"type":"literal","value":"folder_open"},{"type":"literal","value":"folder_shared"},{"type":"literal","value":"folder_special"},{"type":"literal","value":"folder_supervised"},{"type":"literal","value":"folder_zip"},{"type":"literal","value":"follow_the_signs"},{"type":"literal","value":"font_download"},{"type":"literal","value":"font_download_off"},{"type":"literal","value":"food_bank"},{"type":"literal","value":"foot_bones"},{"type":"literal","value":"footprint"},{"type":"literal","value":"for_you"},{"type":"literal","value":"forest"},{"type":"literal","value":"fork_left"},{"type":"literal","value":"fork_right"},{"type":"literal","value":"fork_spoon"},{"type":"literal","value":"forklift"},{"type":"literal","value":"format_align_center"},{"type":"literal","value":"format_align_justify"},{"type":"literal","value":"format_align_left"},{"type":"literal","value":"format_align_right"},{"type":"literal","value":"format_bold"},{"type":"literal","value":"format_clear"},{"type":"literal","value":"format_color_fill"},{"type":"literal","value":"format_color_reset"},{"type":"literal","value":"format_color_text"},{"type":"literal","value":"format_h1"},{"type":"literal","value":"format_h2"},{"type":"literal","value":"format_h3"},{"type":"literal","value":"format_h4"},{"type":"literal","value":"format_h5"},{"type":"literal","value":"format_h6"},{"type":"literal","value":"format_image_left"},{"type":"literal","value":"format_image_right"},{"type":"literal","value":"format_indent_decrease"},{"type":"literal","value":"format_indent_increase"},{"type":"literal","value":"format_ink_highlighter"},{"type":"literal","value":"format_italic"},{"type":"literal","value":"format_letter_spacing"},{"type":"literal","value":"format_letter_spacing_2"},{"type":"literal","value":"format_letter_spacing_standard"},{"type":"literal","value":"format_letter_spacing_wide"},{"type":"literal","value":"format_letter_spacing_wider"},{"type":"literal","value":"format_line_spacing"},{"type":"literal","value":"format_list_bulleted"},{"type":"literal","value":"format_list_bulleted_add"},{"type":"literal","value":"format_list_numbered"},{"type":"literal","value":"format_list_numbered_rtl"},{"type":"literal","value":"format_overline"},{"type":"literal","value":"format_paint"},{"type":"literal","value":"format_paragraph"},{"type":"literal","value":"format_quote"},{"type":"literal","value":"format_quote_off"},{"type":"literal","value":"format_shapes"},{"type":"literal","value":"format_size"},{"type":"literal","value":"format_strikethrough"},{"type":"literal","value":"format_text_clip"},{"type":"literal","value":"format_text_overflow"},{"type":"literal","value":"format_text_wrap"},{"type":"literal","value":"format_textdirection_l_to_r"},{"type":"literal","value":"format_textdirection_r_to_l"},{"type":"literal","value":"format_textdirection_vertical"},{"type":"literal","value":"format_underlined"},{"type":"literal","value":"format_underlined_squiggle"},{"type":"literal","value":"forms_add_on"},{"type":"literal","value":"forms_apps_script"},{"type":"literal","value":"fort"},{"type":"literal","value":"forum"},{"type":"literal","value":"forward_10"},{"type":"literal","value":"forward_30"},{"type":"literal","value":"forward_5"},{"type":"literal","value":"forward_circle"},{"type":"literal","value":"forward_media"},{"type":"literal","value":"forward_to_inbox"},{"type":"literal","value":"foundation"},{"type":"literal","value":"fragrance"},{"type":"literal","value":"frame_inspect"},{"type":"literal","value":"frame_person"},{"type":"literal","value":"frame_person_mic"},{"type":"literal","value":"frame_person_off"},{"type":"literal","value":"frame_reload"},{"type":"literal","value":"frame_source"},{"type":"literal","value":"free_breakfast"},{"type":"literal","value":"free_cancellation"},{"type":"literal","value":"front_hand"},{"type":"literal","value":"front_loader"},{"type":"literal","value":"full_coverage"},{"type":"literal","value":"full_hd"},{"type":"literal","value":"full_stacked_bar_chart"},{"type":"literal","value":"fullscreen_exit"},{"type":"literal","value":"fullscreen_portrait"},{"type":"literal","value":"functions"},{"type":"literal","value":"funicular"},{"type":"literal","value":"g_mobiledata"},{"type":"literal","value":"g_mobiledata_badge"},{"type":"literal","value":"g_translate"},{"type":"literal","value":"gallery_thumbnail"},{"type":"literal","value":"gamepad"},{"type":"literal","value":"games"},{"type":"literal","value":"garage"},{"type":"literal","value":"garage_check"},{"type":"literal","value":"garage_door"},{"type":"literal","value":"garage_home"},{"type":"literal","value":"garage_money"},{"type":"literal","value":"garden_cart"},{"type":"literal","value":"gas_meter"},{"type":"literal","value":"gastroenterology"},{"type":"literal","value":"gate"},{"type":"literal","value":"gavel"},{"type":"literal","value":"general_device"},{"type":"literal","value":"generating_tokens"},{"type":"literal","value":"genetics"},{"type":"literal","value":"genres"},{"type":"literal","value":"gesture"},{"type":"literal","value":"gesture_select"},{"type":"literal","value":"get_app"},{"type":"literal","value":"gif"},{"type":"literal","value":"gif_2"},{"type":"literal","value":"gif_box"},{"type":"literal","value":"girl"},{"type":"literal","value":"gite"},{"type":"literal","value":"glass_cup"},{"type":"literal","value":"globe_asia"},{"type":"literal","value":"globe_book"},{"type":"literal","value":"globe_location_pin"},{"type":"literal","value":"globe_uk"},{"type":"literal","value":"glucose"},{"type":"literal","value":"glyphs"},{"type":"literal","value":"go_to_line"},{"type":"literal","value":"golf_course"},{"type":"literal","value":"gondola_lift"},{"type":"literal","value":"google_home_devices"},{"type":"literal","value":"google_tv_remote"},{"type":"literal","value":"google_wifi"},{"type":"literal","value":"gpp_bad"},{"type":"literal","value":"gpp_good"},{"type":"literal","value":"gpp_maybe"},{"type":"literal","value":"gps_fixed"},{"type":"literal","value":"gps_not_fixed"},{"type":"literal","value":"gps_off"},{"type":"literal","value":"grade"},{"type":"literal","value":"gradient"},{"type":"literal","value":"grading"},{"type":"literal","value":"grain"},{"type":"literal","value":"graph_1"},{"type":"literal","value":"graph_2"},{"type":"literal","value":"graph_3"},{"type":"literal","value":"graph_4"},{"type":"literal","value":"graph_5"},{"type":"literal","value":"graph_6"},{"type":"literal","value":"graph_7"},{"type":"literal","value":"graphic_eq"},{"type":"literal","value":"grass"},{"type":"literal","value":"grid_3x3"},{"type":"literal","value":"grid_3x3_off"},{"type":"literal","value":"grid_4x4"},{"type":"literal","value":"grid_goldenratio"},{"type":"literal","value":"grid_guides"},{"type":"literal","value":"grid_off"},{"type":"literal","value":"grid_on"},{"type":"literal","value":"grid_view"},{"type":"literal","value":"grocery"},{"type":"literal","value":"group_add"},{"type":"literal","value":"group_off"},{"type":"literal","value":"group_remove"},{"type":"literal","value":"group_search"},{"type":"literal","value":"group_work"},{"type":"literal","value":"grouped_bar_chart"},{"type":"literal","value":"groups_2"},{"type":"literal","value":"groups_3"},{"type":"literal","value":"guardian"},{"type":"literal","value":"gynecology"},{"type":"literal","value":"h_mobiledata"},{"type":"literal","value":"h_mobiledata_badge"},{"type":"literal","value":"h_plus_mobiledata"},{"type":"literal","value":"h_plus_mobiledata_badge"},{"type":"literal","value":"hail"},{"type":"literal","value":"hallway"},{"type":"literal","value":"hanami_dango"},{"type":"literal","value":"hand_bones"},{"type":"literal","value":"hand_gesture"},{"type":"literal","value":"hand_gesture_off"},{"type":"literal","value":"hand_meal"},{"type":"literal","value":"hand_package"},{"type":"literal","value":"handheld_controller"},{"type":"literal","value":"handshake"},{"type":"literal","value":"handyman"},{"type":"literal","value":"hangout_video"},{"type":"literal","value":"hangout_video_off"},{"type":"literal","value":"hard_disk"},{"type":"literal","value":"hard_drive"},{"type":"literal","value":"hard_drive_2"},{"type":"literal","value":"hardware"},{"type":"literal","value":"hd"},{"type":"literal","value":"hdr_auto"},{"type":"literal","value":"hdr_auto_select"},{"type":"literal","value":"hdr_enhanced_select"},{"type":"literal","value":"hdr_off"},{"type":"literal","value":"hdr_off_select"},{"type":"literal","value":"hdr_on"},{"type":"literal","value":"hdr_on_select"},{"type":"literal","value":"hdr_plus"},{"type":"literal","value":"hdr_plus_off"},{"type":"literal","value":"hdr_strong"},{"type":"literal","value":"hdr_weak"},{"type":"literal","value":"head_mounted_device"},{"type":"literal","value":"headphones_battery"},{"type":"literal","value":"headset_mic"},{"type":"literal","value":"headset_off"},{"type":"literal","value":"healing"},{"type":"literal","value":"health_and_beauty"},{"type":"literal","value":"health_and_safety"},{"type":"literal","value":"health_cross"},{"type":"literal","value":"health_metrics"},{"type":"literal","value":"heap_snapshot_large"},{"type":"literal","value":"heap_snapshot_multiple"},{"type":"literal","value":"heap_snapshot_thumbnail"},{"type":"literal","value":"hearing"},{"type":"literal","value":"hearing_aid"},{"type":"literal","value":"hearing_aid_disabled"},{"type":"literal","value":"hearing_aid_disabled_left"},{"type":"literal","value":"hearing_aid_left"},{"type":"literal","value":"hearing_disabled"},{"type":"literal","value":"heart_broken"},{"type":"literal","value":"heart_check"},{"type":"literal","value":"heart_minus"},{"type":"literal","value":"heart_plus"},{"type":"literal","value":"heart_smile"},{"type":"literal","value":"heat"},{"type":"literal","value":"heat_pump"},{"type":"literal","value":"heat_pump_balance"},{"type":"literal","value":"helicopter"},{"type":"literal","value":"help"},{"type":"literal","value":"help_center"},{"type":"literal","value":"help_clinic"},{"type":"literal","value":"help_outline"},{"type":"literal","value":"hematology"},{"type":"literal","value":"hevc"},{"type":"literal","value":"hide"},{"type":"literal","value":"hide_image"},{"type":"literal","value":"hide_source"},{"type":"literal","value":"high_chair"},{"type":"literal","value":"high_density"},{"type":"literal","value":"high_quality"},{"type":"literal","value":"high_res"},{"type":"literal","value":"highlight"},{"type":"literal","value":"highlight_alt"},{"type":"literal","value":"highlight_keyboard_focus"},{"type":"literal","value":"highlight_mouse_cursor"},{"type":"literal","value":"highlight_off"},{"type":"literal","value":"highlight_text_cursor"},{"type":"literal","value":"highlighter_size_1"},{"type":"literal","value":"highlighter_size_2"},{"type":"literal","value":"highlighter_size_3"},{"type":"literal","value":"highlighter_size_4"},{"type":"literal","value":"highlighter_size_5"},{"type":"literal","value":"hiking"},{"type":"literal","value":"history_2"},{"type":"literal","value":"history_edu"},{"type":"literal","value":"history_off"},{"type":"literal","value":"history_toggle_off"},{"type":"literal","value":"hive"},{"type":"literal","value":"hls"},{"type":"literal","value":"hls_off"},{"type":"literal","value":"holiday_village"},{"type":"literal","value":"home"},{"type":"literal","value":"home_and_garden"},{"type":"literal","value":"home_app_logo"},{"type":"literal","value":"home_filled"},{"type":"literal","value":"home_health"},{"type":"literal","value":"home_improvement_and_tools"},{"type":"literal","value":"home_iot_device"},{"type":"literal","value":"home_max"},{"type":"literal","value":"home_max_dots"},{"type":"literal","value":"home_mini"},{"type":"literal","value":"home_pin"},{"type":"literal","value":"home_repair_service"},{"type":"literal","value":"home_speaker"},{"type":"literal","value":"home_storage"},{"type":"literal","value":"home_work"},{"type":"literal","value":"horizontal_distribute"},{"type":"literal","value":"horizontal_rule"},{"type":"literal","value":"horizontal_split"},{"type":"literal","value":"hot_tub"},{"type":"literal","value":"hotel"},{"type":"literal","value":"hotel_class"},{"type":"literal","value":"hourglass_arrow_down"},{"type":"literal","value":"hourglass_arrow_up"},{"type":"literal","value":"hourglass_bottom"},{"type":"literal","value":"hourglass_disabled"},{"type":"literal","value":"hourglass_empty"},{"type":"literal","value":"hourglass_full"},{"type":"literal","value":"hourglass_pause"},{"type":"literal","value":"hourglass_top"},{"type":"literal","value":"house_siding"},{"type":"literal","value":"house_with_shield"},{"type":"literal","value":"houseboat"},{"type":"literal","value":"household_supplies"},{"type":"literal","value":"hov"},{"type":"literal","value":"how_to_reg"},{"type":"literal","value":"how_to_vote"},{"type":"literal","value":"hr_resting"},{"type":"literal","value":"https"},{"type":"literal","value":"hub"},{"type":"literal","value":"humerus"},{"type":"literal","value":"humerus_alt"},{"type":"literal","value":"humidity_high"},{"type":"literal","value":"humidity_indoor"},{"type":"literal","value":"humidity_low"},{"type":"literal","value":"humidity_mid"},{"type":"literal","value":"humidity_percentage"},{"type":"literal","value":"hvac"},{"type":"literal","value":"hvac_max_defrost"},{"type":"literal","value":"ice_skating"},{"type":"literal","value":"icecream"},{"type":"literal","value":"id_card"},{"type":"literal","value":"identity_aware_proxy"},{"type":"literal","value":"identity_platform"},{"type":"literal","value":"ifl"},{"type":"literal","value":"iframe_off"},{"type":"literal","value":"image_arrow_up"},{"type":"literal","value":"image_aspect_ratio"},{"type":"literal","value":"image_inset"},{"type":"literal","value":"image_not_supported"},{"type":"literal","value":"image_search"},{"type":"literal","value":"imagesearch_roller"},{"type":"literal","value":"imagesmode"},{"type":"literal","value":"immunology"},{"type":"literal","value":"import_contacts"},{"type":"literal","value":"import_export"},{"type":"literal","value":"important_devices"},{"type":"literal","value":"in_home_mode"},{"type":"literal","value":"inactive_order"},{"type":"literal","value":"inbox"},{"type":"literal","value":"inbox_customize"},{"type":"literal","value":"inbox_text"},{"type":"literal","value":"inbox_text_asterisk"},{"type":"literal","value":"inbox_text_person"},{"type":"literal","value":"inbox_text_share"},{"type":"literal","value":"incomplete_circle"},{"type":"literal","value":"indeterminate_check_box"},{"type":"literal","value":"indeterminate_question_box"},{"type":"literal","value":"info_i"},{"type":"literal","value":"info_outline"},{"type":"literal","value":"infrared"},{"type":"literal","value":"ink_eraser"},{"type":"literal","value":"ink_eraser_off"},{"type":"literal","value":"ink_highlighter"},{"type":"literal","value":"ink_highlighter_move"},{"type":"literal","value":"ink_marker"},{"type":"literal","value":"ink_pen"},{"type":"literal","value":"ink_selection"},{"type":"literal","value":"inpatient"},{"type":"literal","value":"input_circle"},{"type":"literal","value":"insert_chart"},{"type":"literal","value":"insert_chart_outlined"},{"type":"literal","value":"insert_comment"},{"type":"literal","value":"insert_drive_file"},{"type":"literal","value":"insert_emoticon"},{"type":"literal","value":"insert_invitation"},{"type":"literal","value":"insert_link"},{"type":"literal","value":"insert_page_break"},{"type":"literal","value":"insert_photo"},{"type":"literal","value":"insert_text"},{"type":"literal","value":"insights"},{"type":"literal","value":"install_desktop"},{"type":"literal","value":"install_mobile"},{"type":"literal","value":"instant_mix"},{"type":"literal","value":"integration_instructions"},{"type":"literal","value":"interactive_space"},{"type":"literal","value":"interests"},{"type":"literal","value":"interpreter_mode"},{"type":"literal","value":"inventory"},{"type":"literal","value":"inventory_2"},{"type":"literal","value":"invert_colors"},{"type":"literal","value":"invert_colors_off"},{"type":"literal","value":"ios_share"},{"type":"literal","value":"iron"},{"type":"literal","value":"iso"},{"type":"literal","value":"jamboard_kiosk"},{"type":"literal","value":"japanese_curry"},{"type":"literal","value":"japanese_flag"},{"type":"literal","value":"javascript"},{"type":"literal","value":"join_full"},{"type":"literal","value":"join_inner"},{"type":"literal","value":"join_left"},{"type":"literal","value":"join_right"},{"type":"literal","value":"joystick"},{"type":"literal","value":"jump_to_element"},{"type":"literal","value":"kanji_alcohol"},{"type":"literal","value":"kayaking"},{"type":"literal","value":"kebab_dining"},{"type":"literal","value":"keep"},{"type":"literal","value":"keep_off"},{"type":"literal","value":"keep_public"},{"type":"literal","value":"kettle"},{"type":"literal","value":"key_off"},{"type":"literal","value":"key_vertical"},{"type":"literal","value":"key_visualizer"},{"type":"literal","value":"keyboard_alt"},{"type":"literal","value":"keyboard_arrow_down"},{"type":"literal","value":"keyboard_arrow_left"},{"type":"literal","value":"keyboard_arrow_right"},{"type":"literal","value":"keyboard_arrow_up"},{"type":"literal","value":"keyboard_backspace"},{"type":"literal","value":"keyboard_capslock"},{"type":"literal","value":"keyboard_capslock_badge"},{"type":"literal","value":"keyboard_command_key"},{"type":"literal","value":"keyboard_control_key"},{"type":"literal","value":"keyboard_double_arrow_down"},{"type":"literal","value":"keyboard_double_arrow_left"},{"type":"literal","value":"keyboard_double_arrow_right"},{"type":"literal","value":"keyboard_double_arrow_up"},{"type":"literal","value":"keyboard_external_input"},{"type":"literal","value":"keyboard_full"},{"type":"literal","value":"keyboard_hide"},{"type":"literal","value":"keyboard_keys"},{"type":"literal","value":"keyboard_lock"},{"type":"literal","value":"keyboard_lock_off"},{"type":"literal","value":"keyboard_off"},{"type":"literal","value":"keyboard_onscreen"},{"type":"literal","value":"keyboard_option_key"},{"type":"literal","value":"keyboard_previous_language"},{"type":"literal","value":"keyboard_return"},{"type":"literal","value":"keyboard_tab"},{"type":"literal","value":"keyboard_tab_rtl"},{"type":"literal","value":"keyboard_voice"},{"type":"literal","value":"kid_star"},{"type":"literal","value":"king_bed"},{"type":"literal","value":"kitchen"},{"type":"literal","value":"kitesurfing"},{"type":"literal","value":"lab_panel"},{"type":"literal","value":"lab_profile"},{"type":"literal","value":"lab_research"},{"type":"literal","value":"label_important"},{"type":"literal","value":"label_important_outline"},{"type":"literal","value":"label_off"},{"type":"literal","value":"labs"},{"type":"literal","value":"lan"},{"type":"literal","value":"landscape_2"},{"type":"literal","value":"landscape_2_edit"},{"type":"literal","value":"landscape_2_off"},{"type":"literal","value":"landslide"},{"type":"literal","value":"language"},{"type":"literal","value":"language_chinese_array"},{"type":"literal","value":"language_chinese_cangjie"},{"type":"literal","value":"language_chinese_dayi"},{"type":"literal","value":"language_chinese_pinyin"},{"type":"literal","value":"language_chinese_quick"},{"type":"literal","value":"language_chinese_wubi"},{"type":"literal","value":"language_french"},{"type":"literal","value":"language_gb_english"},{"type":"literal","value":"language_international"},{"type":"literal","value":"language_japanese_kana"},{"type":"literal","value":"language_korean_latin"},{"type":"literal","value":"language_pinyin"},{"type":"literal","value":"language_spanish"},{"type":"literal","value":"language_us"},{"type":"literal","value":"language_us_colemak"},{"type":"literal","value":"language_us_dvorak"},{"type":"literal","value":"laps"},{"type":"literal","value":"laptop"},{"type":"literal","value":"laptop_car"},{"type":"literal","value":"laptop_chromebook"},{"type":"literal","value":"laptop_mac"},{"type":"literal","value":"laptop_windows"},{"type":"literal","value":"lasso_select"},{"type":"literal","value":"last_page"},{"type":"literal","value":"launch"},{"type":"literal","value":"laundry"},{"type":"literal","value":"layers"},{"type":"literal","value":"layers_clear"},{"type":"literal","value":"lda"},{"type":"literal","value":"leaderboard"},{"type":"literal","value":"leak_add"},{"type":"literal","value":"leak_remove"},{"type":"literal","value":"left_click"},{"type":"literal","value":"left_panel_close"},{"type":"literal","value":"left_panel_open"},{"type":"literal","value":"legend_toggle"},{"type":"literal","value":"lens"},{"type":"literal","value":"lens_blur"},{"type":"literal","value":"letter_switch"},{"type":"literal","value":"library_add"},{"type":"literal","value":"library_add_check"},{"type":"literal","value":"library_books"},{"type":"literal","value":"library_music"},{"type":"literal","value":"license"},{"type":"literal","value":"lift_to_talk"},{"type":"literal","value":"light_group"},{"type":"literal","value":"light_mode"},{"type":"literal","value":"light_off"},{"type":"literal","value":"lightbulb_2"},{"type":"literal","value":"lightbulb_circle"},{"type":"literal","value":"lightbulb_outline"},{"type":"literal","value":"lightning_stand"},{"type":"literal","value":"line_axis"},{"type":"literal","value":"line_curve"},{"type":"literal","value":"line_end"},{"type":"literal","value":"line_end_arrow"},{"type":"literal","value":"line_end_arrow_notch"},{"type":"literal","value":"line_end_circle"},{"type":"literal","value":"line_end_diamond"},{"type":"literal","value":"line_end_square"},{"type":"literal","value":"line_start"},{"type":"literal","value":"line_start_arrow"},{"type":"literal","value":"line_start_arrow_notch"},{"type":"literal","value":"line_start_circle"},{"type":"literal","value":"line_start_diamond"},{"type":"literal","value":"line_start_square"},{"type":"literal","value":"line_style"},{"type":"literal","value":"line_weight"},{"type":"literal","value":"linear_scale"},{"type":"literal","value":"link_off"},{"type":"literal","value":"linked_camera"},{"type":"literal","value":"linked_services"},{"type":"literal","value":"liquor"},{"type":"literal","value":"list_alt"},{"type":"literal","value":"list_alt_add"},{"type":"literal","value":"list_alt_check"},{"type":"literal","value":"lists"},{"type":"literal","value":"live_help"},{"type":"literal","value":"live_tv"},{"type":"literal","value":"living"},{"type":"literal","value":"local_activity"},{"type":"literal","value":"local_airport"},{"type":"literal","value":"local_atm"},{"type":"literal","value":"local_bar"},{"type":"literal","value":"local_cafe"},{"type":"literal","value":"local_car_wash"},{"type":"literal","value":"local_convenience_store"},{"type":"literal","value":"local_dining"},{"type":"literal","value":"local_drink"},{"type":"literal","value":"local_fire_department"},{"type":"literal","value":"local_florist"},{"type":"literal","value":"local_gas_station"},{"type":"literal","value":"local_grocery_store"},{"type":"literal","value":"local_hospital"},{"type":"literal","value":"local_hotel"},{"type":"literal","value":"local_laundry_service"},{"type":"literal","value":"local_library"},{"type":"literal","value":"local_mall"},{"type":"literal","value":"local_movies"},{"type":"literal","value":"local_offer"},{"type":"literal","value":"local_parking"},{"type":"literal","value":"local_pharmacy"},{"type":"literal","value":"local_phone"},{"type":"literal","value":"local_pizza"},{"type":"literal","value":"local_play"},{"type":"literal","value":"local_police"},{"type":"literal","value":"local_post_office"},{"type":"literal","value":"local_printshop"},{"type":"literal","value":"local_see"},{"type":"literal","value":"local_shipping"},{"type":"literal","value":"local_taxi"},{"type":"literal","value":"location_away"},{"type":"literal","value":"location_chip"},{"type":"literal","value":"location_city"},{"type":"literal","value":"location_disabled"},{"type":"literal","value":"location_home"},{"type":"literal","value":"location_off"},{"type":"literal","value":"location_on"},{"type":"literal","value":"location_pin"},{"type":"literal","value":"location_searching"},{"type":"literal","value":"lock_clock"},{"type":"literal","value":"lock_open"},{"type":"literal","value":"lock_open_circle"},{"type":"literal","value":"lock_open_right"},{"type":"literal","value":"lock_outline"},{"type":"literal","value":"lock_person"},{"type":"literal","value":"lock_reset"},{"type":"literal","value":"login"},{"type":"literal","value":"logo_dev"},{"type":"literal","value":"logout"},{"type":"literal","value":"looks"},{"type":"literal","value":"looks_3"},{"type":"literal","value":"looks_4"},{"type":"literal","value":"looks_5"},{"type":"literal","value":"looks_6"},{"type":"literal","value":"looks_one"},{"type":"literal","value":"looks_two"},{"type":"literal","value":"loop"},{"type":"literal","value":"low_density"},{"type":"literal","value":"low_priority"},{"type":"literal","value":"loyalty"},{"type":"literal","value":"lte_mobiledata"},{"type":"literal","value":"lte_mobiledata_badge"},{"type":"literal","value":"lte_plus_mobiledata"},{"type":"literal","value":"lte_plus_mobiledata_badge"},{"type":"literal","value":"luggage"},{"type":"literal","value":"lunch_dining"},{"type":"literal","value":"lyrics"},{"type":"literal","value":"macro_auto"},{"type":"literal","value":"macro_off"},{"type":"literal","value":"magnification_large"},{"type":"literal","value":"magnification_small"},{"type":"literal","value":"magnify_docked"},{"type":"literal","value":"magnify_fullscreen"},{"type":"literal","value":"mail_asterisk"},{"type":"literal","value":"mail_lock"},{"type":"literal","value":"mail_off"},{"type":"literal","value":"mail_outline"},{"type":"literal","value":"mail_shield"},{"type":"literal","value":"male"},{"type":"literal","value":"man"},{"type":"literal","value":"man_2"},{"type":"literal","value":"man_3"},{"type":"literal","value":"man_4"},{"type":"literal","value":"manage_accounts"},{"type":"literal","value":"manage_history"},{"type":"literal","value":"manage_search"},{"type":"literal","value":"manga"},{"type":"literal","value":"manufacturing"},{"type":"literal","value":"map_pin_heart"},{"type":"literal","value":"map_pin_review"},{"type":"literal","value":"map_search"},{"type":"literal","value":"maps_home_work"},{"type":"literal","value":"maps_ugc"},{"type":"literal","value":"mark_as_unread"},{"type":"literal","value":"mark_chat_read"},{"type":"literal","value":"mark_chat_unread"},{"type":"literal","value":"mark_email_read"},{"type":"literal","value":"mark_email_unread"},{"type":"literal","value":"mark_unread_chat_alt"},{"type":"literal","value":"markdown"},{"type":"literal","value":"markdown_copy"},{"type":"literal","value":"markdown_paste"},{"type":"literal","value":"markunread"},{"type":"literal","value":"markunread_mailbox"},{"type":"literal","value":"masked_transitions"},{"type":"literal","value":"masked_transitions_add"},{"type":"literal","value":"masks"},{"type":"literal","value":"massage"},{"type":"literal","value":"match_case"},{"type":"literal","value":"match_case_off"},{"type":"literal","value":"match_word"},{"type":"literal","value":"matter"},{"type":"literal","value":"maximize"},{"type":"literal","value":"meal_dinner"},{"type":"literal","value":"meal_lunch"},{"type":"literal","value":"measuring_tape"},{"type":"literal","value":"media_bluetooth_off"},{"type":"literal","value":"media_bluetooth_on"},{"type":"literal","value":"media_link"},{"type":"literal","value":"media_output"},{"type":"literal","value":"media_output_off"},{"type":"literal","value":"mediation"},{"type":"literal","value":"medical_information"},{"type":"literal","value":"medical_mask"},{"type":"literal","value":"medical_services"},{"type":"literal","value":"medication"},{"type":"literal","value":"medication_liquid"},{"type":"literal","value":"meeting_room"},{"type":"literal","value":"memory"},{"type":"literal","value":"memory_alt"},{"type":"literal","value":"menstrual_health"},{"type":"literal","value":"menu_book"},{"type":"literal","value":"menu_book_2"},{"type":"literal","value":"menu_open"},{"type":"literal","value":"merge_type"},{"type":"literal","value":"metabolism"},{"type":"literal","value":"mfg_nest_yale_lock"},{"type":"literal","value":"mic_alert"},{"type":"literal","value":"mic_double"},{"type":"literal","value":"mic_external_off"},{"type":"literal","value":"mic_external_on"},{"type":"literal","value":"mic_none"},{"type":"literal","value":"mic_off"},{"type":"literal","value":"microbiology"},{"type":"literal","value":"microwave_gen"},{"type":"literal","value":"military_tech"},{"type":"literal","value":"mimo"},{"type":"literal","value":"mimo_disconnect"},{"type":"literal","value":"mindfulness"},{"type":"literal","value":"minimize"},{"type":"literal","value":"minor_crash"},{"type":"literal","value":"mintmark"},{"type":"literal","value":"miscellaneous_services"},{"type":"literal","value":"missed_video_call"},{"type":"literal","value":"missing_controller"},{"type":"literal","value":"mist"},{"type":"literal","value":"mitre"},{"type":"literal","value":"mixture_med"},{"type":"literal","value":"mms"},{"type":"literal","value":"mobile"},{"type":"literal","value":"mobile_2"},{"type":"literal","value":"mobile_3"},{"type":"literal","value":"mobile_alert"},{"type":"literal","value":"mobile_arrow_down"},{"type":"literal","value":"mobile_arrow_right"},{"type":"literal","value":"mobile_arrow_up_right"},{"type":"literal","value":"mobile_block"},{"type":"literal","value":"mobile_camera"},{"type":"literal","value":"mobile_camera_front"},{"type":"literal","value":"mobile_camera_rear"},{"type":"literal","value":"mobile_cancel"},{"type":"literal","value":"mobile_cast"},{"type":"literal","value":"mobile_charge"},{"type":"literal","value":"mobile_chat"},{"type":"literal","value":"mobile_check"},{"type":"literal","value":"mobile_code"},{"type":"literal","value":"mobile_dots"},{"type":"literal","value":"mobile_friendly"},{"type":"literal","value":"mobile_gear"},{"type":"literal","value":"mobile_hand"},{"type":"literal","value":"mobile_hand_left"},{"type":"literal","value":"mobile_hand_left_off"},{"type":"literal","value":"mobile_hand_off"},{"type":"literal","value":"mobile_info"},{"type":"literal","value":"mobile_landscape"},{"type":"literal","value":"mobile_layout"},{"type":"literal","value":"mobile_lock_landscape"},{"type":"literal","value":"mobile_lock_portrait"},{"type":"literal","value":"mobile_loupe"},{"type":"literal","value":"mobile_menu"},{"type":"literal","value":"mobile_off"},{"type":"literal","value":"mobile_question"},{"type":"literal","value":"mobile_rotate"},{"type":"literal","value":"mobile_rotate_lock"},{"type":"literal","value":"mobile_screen_share"},{"type":"literal","value":"mobile_screensaver"},{"type":"literal","value":"mobile_sensor_hi"},{"type":"literal","value":"mobile_sensor_lo"},{"type":"literal","value":"mobile_share"},{"type":"literal","value":"mobile_share_stack"},{"type":"literal","value":"mobile_sound"},{"type":"literal","value":"mobile_sound_2"},{"type":"literal","value":"mobile_sound_off"},{"type":"literal","value":"mobile_speaker"},{"type":"literal","value":"mobile_text"},{"type":"literal","value":"mobile_text_2"},{"type":"literal","value":"mobile_theft"},{"type":"literal","value":"mobile_ticket"},{"type":"literal","value":"mobile_vibrate"},{"type":"literal","value":"mobile_wrench"},{"type":"literal","value":"mobiledata_off"},{"type":"literal","value":"mode_comment"},{"type":"literal","value":"mode_cool"},{"type":"literal","value":"mode_cool_off"},{"type":"literal","value":"mode_dual"},{"type":"literal","value":"mode_edit"},{"type":"literal","value":"mode_edit_outline"},{"type":"literal","value":"mode_fan"},{"type":"literal","value":"mode_fan_off"},{"type":"literal","value":"mode_heat"},{"type":"literal","value":"mode_heat_cool"},{"type":"literal","value":"mode_heat_off"},{"type":"literal","value":"mode_night"},{"type":"literal","value":"mode_of_travel"},{"type":"literal","value":"mode_off_on"},{"type":"literal","value":"mode_standby"},{"type":"literal","value":"model_training"},{"type":"literal","value":"modeling"},{"type":"literal","value":"monetization_on"},{"type":"literal","value":"money"},{"type":"literal","value":"money_bag"},{"type":"literal","value":"money_off"},{"type":"literal","value":"money_off_csred"},{"type":"literal","value":"money_range"},{"type":"literal","value":"monitor"},{"type":"literal","value":"monitor_heart"},{"type":"literal","value":"monitor_weight"},{"type":"literal","value":"monitor_weight_gain"},{"type":"literal","value":"monitor_weight_loss"},{"type":"literal","value":"monitoring"},{"type":"literal","value":"monochrome_photos"},{"type":"literal","value":"monorail"},{"type":"literal","value":"mood"},{"type":"literal","value":"mood_bad"},{"type":"literal","value":"moon_stars"},{"type":"literal","value":"mop"},{"type":"literal","value":"moped_package"},{"type":"literal","value":"more"},{"type":"literal","value":"more_down"},{"type":"literal","value":"more_horiz"},{"type":"literal","value":"more_time"},{"type":"literal","value":"more_up"},{"type":"literal","value":"more_vert"},{"type":"literal","value":"mosque"},{"type":"literal","value":"motion_blur"},{"type":"literal","value":"motion_mode"},{"type":"literal","value":"motion_photos_auto"},{"type":"literal","value":"motion_photos_off"},{"type":"literal","value":"motion_photos_on"},{"type":"literal","value":"motion_photos_pause"},{"type":"literal","value":"motion_photos_paused"},{"type":"literal","value":"motion_play"},{"type":"literal","value":"motion_sensor_active"},{"type":"literal","value":"motion_sensor_alert"},{"type":"literal","value":"motion_sensor_idle"},{"type":"literal","value":"motion_sensor_urgent"},{"type":"literal","value":"mountain_flag"},{"type":"literal","value":"mountain_steam"},{"type":"literal","value":"mouse"},{"type":"literal","value":"mouse_lock"},{"type":"literal","value":"mouse_lock_off"},{"type":"literal","value":"move"},{"type":"literal","value":"move_down"},{"type":"literal","value":"move_group"},{"type":"literal","value":"move_item"},{"type":"literal","value":"move_location"},{"type":"literal","value":"move_selection_down"},{"type":"literal","value":"move_selection_left"},{"type":"literal","value":"move_selection_right"},{"type":"literal","value":"move_selection_up"},{"type":"literal","value":"move_to_inbox"},{"type":"literal","value":"move_up"},{"type":"literal","value":"moved_location"},{"type":"literal","value":"movie"},{"type":"literal","value":"movie_creation"},{"type":"literal","value":"movie_edit"},{"type":"literal","value":"movie_filter"},{"type":"literal","value":"movie_info"},{"type":"literal","value":"movie_off"},{"type":"literal","value":"movie_speaker"},{"type":"literal","value":"moving"},{"type":"literal","value":"moving_beds"},{"type":"literal","value":"moving_ministry"},{"type":"literal","value":"mp"},{"type":"literal","value":"multicooker"},{"type":"literal","value":"multiline_chart"},{"type":"literal","value":"multimodal_hand_eye"},{"type":"literal","value":"multiple_airports"},{"type":"literal","value":"multiple_stop"},{"type":"literal","value":"museum"},{"type":"literal","value":"music_cast"},{"type":"literal","value":"music_history"},{"type":"literal","value":"music_note"},{"type":"literal","value":"music_note_add"},{"type":"literal","value":"music_off"},{"type":"literal","value":"music_video"},{"type":"literal","value":"my_location"},{"type":"literal","value":"mystery"},{"type":"literal","value":"nat"},{"type":"literal","value":"nature"},{"type":"literal","value":"nature_people"},{"type":"literal","value":"navigate_before"},{"type":"literal","value":"navigate_next"},{"type":"literal","value":"near_me"},{"type":"literal","value":"near_me_disabled"},{"type":"literal","value":"nearby"},{"type":"literal","value":"nearby_error"},{"type":"literal","value":"nearby_off"},{"type":"literal","value":"nephrology"},{"type":"literal","value":"nest_audio"},{"type":"literal","value":"nest_cam_floodlight"},{"type":"literal","value":"nest_cam_indoor"},{"type":"literal","value":"nest_cam_iq"},{"type":"literal","value":"nest_cam_iq_outdoor"},{"type":"literal","value":"nest_cam_magnet_mount"},{"type":"literal","value":"nest_cam_outdoor"},{"type":"literal","value":"nest_cam_stand"},{"type":"literal","value":"nest_cam_wall_mount"},{"type":"literal","value":"nest_cam_wired_stand"},{"type":"literal","value":"nest_clock_farsight_analog"},{"type":"literal","value":"nest_clock_farsight_digital"},{"type":"literal","value":"nest_connect"},{"type":"literal","value":"nest_detect"},{"type":"literal","value":"nest_display"},{"type":"literal","value":"nest_display_max"},{"type":"literal","value":"nest_doorbell_visitor"},{"type":"literal","value":"nest_eco_leaf"},{"type":"literal","value":"nest_farsight_cool"},{"type":"literal","value":"nest_farsight_dual"},{"type":"literal","value":"nest_farsight_eco"},{"type":"literal","value":"nest_farsight_heat"},{"type":"literal","value":"nest_farsight_seasonal"},{"type":"literal","value":"nest_farsight_weather"},{"type":"literal","value":"nest_found_savings"},{"type":"literal","value":"nest_heat_link_e"},{"type":"literal","value":"nest_heat_link_gen_3"},{"type":"literal","value":"nest_hello_doorbell"},{"type":"literal","value":"nest_mini"},{"type":"literal","value":"nest_multi_room"},{"type":"literal","value":"nest_protect"},{"type":"literal","value":"nest_remote_comfort_sensor"},{"type":"literal","value":"nest_secure_alarm"},{"type":"literal","value":"nest_sunblock"},{"type":"literal","value":"nest_tag"},{"type":"literal","value":"nest_thermostat"},{"type":"literal","value":"nest_thermostat_e_eu"},{"type":"literal","value":"nest_thermostat_gen_3"},{"type":"literal","value":"nest_thermostat_sensor"},{"type":"literal","value":"nest_thermostat_sensor_eu"},{"type":"literal","value":"nest_thermostat_zirconium_eu"},{"type":"literal","value":"nest_true_radiant"},{"type":"literal","value":"nest_wake_on_approach"},{"type":"literal","value":"nest_wake_on_press"},{"type":"literal","value":"nest_wifi_point"},{"type":"literal","value":"nest_wifi_pro"},{"type":"literal","value":"nest_wifi_pro_2"},{"type":"literal","value":"nest_wifi_router"},{"type":"literal","value":"network_cell"},{"type":"literal","value":"network_check"},{"type":"literal","value":"network_intel_node"},{"type":"literal","value":"network_intelligence"},{"type":"literal","value":"network_intelligence_history"},{"type":"literal","value":"network_intelligence_update"},{"type":"literal","value":"network_locked"},{"type":"literal","value":"network_manage"},{"type":"literal","value":"network_node"},{"type":"literal","value":"network_ping"},{"type":"literal","value":"network_wifi"},{"type":"literal","value":"network_wifi_1_bar"},{"type":"literal","value":"network_wifi_1_bar_locked"},{"type":"literal","value":"network_wifi_2_bar"},{"type":"literal","value":"network_wifi_2_bar_locked"},{"type":"literal","value":"network_wifi_3_bar"},{"type":"literal","value":"network_wifi_3_bar_locked"},{"type":"literal","value":"network_wifi_locked"},{"type":"literal","value":"neurology"},{"type":"literal","value":"new_label"},{"type":"literal","value":"new_releases"},{"type":"literal","value":"new_window"},{"type":"literal","value":"news"},{"type":"literal","value":"newsmode"},{"type":"literal","value":"newsstand"},{"type":"literal","value":"next_plan"},{"type":"literal","value":"next_week"},{"type":"literal","value":"nfc"},{"type":"literal","value":"nfc_off"},{"type":"literal","value":"night_shelter"},{"type":"literal","value":"night_sight_auto"},{"type":"literal","value":"night_sight_auto_off"},{"type":"literal","value":"night_sight_max"},{"type":"literal","value":"nightlife"},{"type":"literal","value":"nightlight"},{"type":"literal","value":"nightlight_round"},{"type":"literal","value":"nights_stay"},{"type":"literal","value":"no_accounts"},{"type":"literal","value":"no_adult_content"},{"type":"literal","value":"no_backpack"},{"type":"literal","value":"no_cell"},{"type":"literal","value":"no_crash"},{"type":"literal","value":"no_drinks"},{"type":"literal","value":"no_encryption"},{"type":"literal","value":"no_encryption_gmailerrorred"},{"type":"literal","value":"no_flash"},{"type":"literal","value":"no_food"},{"type":"literal","value":"no_luggage"},{"type":"literal","value":"no_meals"},{"type":"literal","value":"no_meals_ouline"},{"type":"literal","value":"no_meeting_room"},{"type":"literal","value":"no_photography"},{"type":"literal","value":"no_sim"},{"type":"literal","value":"no_sound"},{"type":"literal","value":"no_stroller"},{"type":"literal","value":"no_transfer"},{"type":"literal","value":"noise_aware"},{"type":"literal","value":"noise_control_off"},{"type":"literal","value":"noise_control_on"},{"type":"literal","value":"nordic_walking"},{"type":"literal","value":"north"},{"type":"literal","value":"north_east"},{"type":"literal","value":"north_west"},{"type":"literal","value":"not_accessible"},{"type":"literal","value":"not_accessible_forward"},{"type":"literal","value":"not_interested"},{"type":"literal","value":"not_listed_location"},{"type":"literal","value":"not_started"},{"type":"literal","value":"note_add"},{"type":"literal","value":"note_alt"},{"type":"literal","value":"note_stack"},{"type":"literal","value":"note_stack_add"},{"type":"literal","value":"notes"},{"type":"literal","value":"notification_add"},{"type":"literal","value":"notification_important"},{"type":"literal","value":"notification_multiple"},{"type":"literal","value":"notification_settings"},{"type":"literal","value":"notification_sound"},{"type":"literal","value":"notifications"},{"type":"literal","value":"notifications_active"},{"type":"literal","value":"notifications_none"},{"type":"literal","value":"notifications_off"},{"type":"literal","value":"notifications_paused"},{"type":"literal","value":"notifications_unread"},{"type":"literal","value":"nutrition"},{"type":"literal","value":"ods"},{"type":"literal","value":"odt"},{"type":"literal","value":"offline_bolt"},{"type":"literal","value":"offline_pin"},{"type":"literal","value":"offline_pin_off"},{"type":"literal","value":"offline_share"},{"type":"literal","value":"oil_barrel"},{"type":"literal","value":"okonomiyaki"},{"type":"literal","value":"on_device_training"},{"type":"literal","value":"on_hub_device"},{"type":"literal","value":"oncology"},{"type":"literal","value":"ondemand_video"},{"type":"literal","value":"online_prediction"},{"type":"literal","value":"onsen"},{"type":"literal","value":"open_in_browser"},{"type":"literal","value":"open_in_full"},{"type":"literal","value":"open_in_new"},{"type":"literal","value":"open_in_new_down"},{"type":"literal","value":"open_in_new_off"},{"type":"literal","value":"open_jam"},{"type":"literal","value":"open_run"},{"type":"literal","value":"open_with"},{"type":"literal","value":"ophthalmology"},{"type":"literal","value":"oral_disease"},{"type":"literal","value":"orbit"},{"type":"literal","value":"order_approve"},{"type":"literal","value":"order_play"},{"type":"literal","value":"orders"},{"type":"literal","value":"orthopedics"},{"type":"literal","value":"other_admission"},{"type":"literal","value":"other_houses"},{"type":"literal","value":"outbound"},{"type":"literal","value":"outbox"},{"type":"literal","value":"outbox_alt"},{"type":"literal","value":"outdoor_garden"},{"type":"literal","value":"outdoor_grill"},{"type":"literal","value":"outgoing_mail"},{"type":"literal","value":"outlet"},{"type":"literal","value":"outlined_flag"},{"type":"literal","value":"outpatient"},{"type":"literal","value":"outpatient_med"},{"type":"literal","value":"output_circle"},{"type":"literal","value":"oven_gen"},{"type":"literal","value":"overview"},{"type":"literal","value":"overview_key"},{"type":"literal","value":"owl"},{"type":"literal","value":"oxygen_saturation"},{"type":"literal","value":"p2p"},{"type":"literal","value":"pace"},{"type":"literal","value":"pacemaker"},{"type":"literal","value":"package_2"},{"type":"literal","value":"padel"},{"type":"literal","value":"page_control"},{"type":"literal","value":"page_footer"},{"type":"literal","value":"page_header"},{"type":"literal","value":"page_info"},{"type":"literal","value":"page_menu_ios"},{"type":"literal","value":"pageless"},{"type":"literal","value":"pages"},{"type":"literal","value":"pageview"},{"type":"literal","value":"paid"},{"type":"literal","value":"pallet"},{"type":"literal","value":"pan_tool"},{"type":"literal","value":"pan_tool_alt"},{"type":"literal","value":"pan_zoom"},{"type":"literal","value":"panorama"},{"type":"literal","value":"panorama_fish_eye"},{"type":"literal","value":"panorama_horizontal"},{"type":"literal","value":"panorama_horizontal_select"},{"type":"literal","value":"panorama_photosphere"},{"type":"literal","value":"panorama_photosphere_select"},{"type":"literal","value":"panorama_vertical"},{"type":"literal","value":"panorama_vertical_select"},{"type":"literal","value":"panorama_wide_angle"},{"type":"literal","value":"panorama_wide_angle_select"},{"type":"literal","value":"paragliding"},{"type":"literal","value":"parent_child_dining"},{"type":"literal","value":"park"},{"type":"literal","value":"parking_meter"},{"type":"literal","value":"parking_sign"},{"type":"literal","value":"parking_valet"},{"type":"literal","value":"partly_cloudy_day"},{"type":"literal","value":"partly_cloudy_night"},{"type":"literal","value":"partner_exchange"},{"type":"literal","value":"partner_heart"},{"type":"literal","value":"partner_reports"},{"type":"literal","value":"party_mode"},{"type":"literal","value":"passkey"},{"type":"literal","value":"password"},{"type":"literal","value":"password_2"},{"type":"literal","value":"password_2_off"},{"type":"literal","value":"patient_list"},{"type":"literal","value":"pause_circle"},{"type":"literal","value":"pause_circle_filled"},{"type":"literal","value":"pause_circle_outline"},{"type":"literal","value":"pause_presentation"},{"type":"literal","value":"payment"},{"type":"literal","value":"payment_arrow_down"},{"type":"literal","value":"payment_card"},{"type":"literal","value":"payments"},{"type":"literal","value":"pedal_bike"},{"type":"literal","value":"pediatrics"},{"type":"literal","value":"pen_size_1"},{"type":"literal","value":"pen_size_2"},{"type":"literal","value":"pen_size_3"},{"type":"literal","value":"pen_size_4"},{"type":"literal","value":"pen_size_5"},{"type":"literal","value":"pending"},{"type":"literal","value":"pending_actions"},{"type":"literal","value":"people"},{"type":"literal","value":"people_alt"},{"type":"literal","value":"people_outline"},{"type":"literal","value":"percent_discount"},{"type":"literal","value":"pergola"},{"type":"literal","value":"perm_camera_mic"},{"type":"literal","value":"perm_contact_calendar"},{"type":"literal","value":"perm_data_setting"},{"type":"literal","value":"perm_device_information"},{"type":"literal","value":"perm_identity"},{"type":"literal","value":"perm_media"},{"type":"literal","value":"perm_phone_msg"},{"type":"literal","value":"perm_scan_wifi"},{"type":"literal","value":"person_2"},{"type":"literal","value":"person_3"},{"type":"literal","value":"person_4"},{"type":"literal","value":"person_add"},{"type":"literal","value":"person_add_alt"},{"type":"literal","value":"person_add_alt_1"},{"type":"literal","value":"person_add_disabled"},{"type":"literal","value":"person_alert"},{"type":"literal","value":"person_apron"},{"type":"literal","value":"person_book"},{"type":"literal","value":"person_cancel"},{"type":"literal","value":"person_celebrate"},{"type":"literal","value":"person_check"},{"type":"literal","value":"person_edit"},{"type":"literal","value":"person_heart"},{"type":"literal","value":"person_off"},{"type":"literal","value":"person_outline"},{"type":"literal","value":"person_pin"},{"type":"literal","value":"person_pin_circle"},{"type":"literal","value":"person_play"},{"type":"literal","value":"person_raised_hand"},{"type":"literal","value":"person_remove"},{"type":"literal","value":"person_remove_alt_1"},{"type":"literal","value":"person_search"},{"type":"literal","value":"person_shield"},{"type":"literal","value":"personal_bag"},{"type":"literal","value":"personal_bag_off"},{"type":"literal","value":"personal_bag_question"},{"type":"literal","value":"personal_injury"},{"type":"literal","value":"personal_places"},{"type":"literal","value":"personal_video"},{"type":"literal","value":"pest_control"},{"type":"literal","value":"pest_control_rodent"},{"type":"literal","value":"pet_supplies"},{"type":"literal","value":"pets"},{"type":"literal","value":"phishing"},{"type":"literal","value":"phone_android"},{"type":"literal","value":"phone_bluetooth_speaker"},{"type":"literal","value":"phone_callback"},{"type":"literal","value":"phone_disabled"},{"type":"literal","value":"phone_enabled"},{"type":"literal","value":"phone_forwarded"},{"type":"literal","value":"phone_in_talk"},{"type":"literal","value":"phone_iphone"},{"type":"literal","value":"phone_locked"},{"type":"literal","value":"phone_missed"},{"type":"literal","value":"phone_paused"},{"type":"literal","value":"phonelink"},{"type":"literal","value":"phonelink_erase"},{"type":"literal","value":"phonelink_lock"},{"type":"literal","value":"phonelink_off"},{"type":"literal","value":"phonelink_ring"},{"type":"literal","value":"phonelink_setup"},{"type":"literal","value":"photo_album"},{"type":"literal","value":"photo_auto_merge"},{"type":"literal","value":"photo_camera"},{"type":"literal","value":"photo_camera_back"},{"type":"literal","value":"photo_camera_front"},{"type":"literal","value":"photo_filter"},{"type":"literal","value":"photo_frame"},{"type":"literal","value":"photo_library"},{"type":"literal","value":"photo_prints"},{"type":"literal","value":"photo_size_select_actual"},{"type":"literal","value":"photo_size_select_large"},{"type":"literal","value":"photo_size_select_small"},{"type":"literal","value":"php"},{"type":"literal","value":"physical_therapy"},{"type":"literal","value":"piano"},{"type":"literal","value":"piano_off"},{"type":"literal","value":"pickleball"},{"type":"literal","value":"picture_as_pdf"},{"type":"literal","value":"picture_in_picture"},{"type":"literal","value":"picture_in_picture_alt"},{"type":"literal","value":"picture_in_picture_center"},{"type":"literal","value":"picture_in_picture_large"},{"type":"literal","value":"picture_in_picture_medium"},{"type":"literal","value":"picture_in_picture_mobile"},{"type":"literal","value":"picture_in_picture_off"},{"type":"literal","value":"picture_in_picture_small"},{"type":"literal","value":"pie_chart"},{"type":"literal","value":"pie_chart_outline"},{"type":"literal","value":"pie_chart_outlined"},{"type":"literal","value":"pill_off"},{"type":"literal","value":"pin_drop"},{"type":"literal","value":"pin_end"},{"type":"literal","value":"pin_invoke"},{"type":"literal","value":"pinboard"},{"type":"literal","value":"pinboard_unread"},{"type":"literal","value":"pinch"},{"type":"literal","value":"pinch_zoom_in"},{"type":"literal","value":"pinch_zoom_out"},{"type":"literal","value":"pip_exit"},{"type":"literal","value":"pivot_table_chart"},{"type":"literal","value":"pix"},{"type":"literal","value":"place"},{"type":"literal","value":"place_item"},{"type":"literal","value":"plagiarism"},{"type":"literal","value":"plane_contrails"},{"type":"literal","value":"planet"},{"type":"literal","value":"planner_banner_ad_pt"},{"type":"literal","value":"planner_review"},{"type":"literal","value":"play_arrow"},{"type":"literal","value":"play_circle"},{"type":"literal","value":"play_circle_filled"},{"type":"literal","value":"play_circle_outline"},{"type":"literal","value":"play_disabled"},{"type":"literal","value":"play_for_work"},{"type":"literal","value":"play_lesson"},{"type":"literal","value":"play_pause"},{"type":"literal","value":"playground"},{"type":"literal","value":"playground_2"},{"type":"literal","value":"playing_cards"},{"type":"literal","value":"playlist_add"},{"type":"literal","value":"playlist_add_check"},{"type":"literal","value":"playlist_add_check_circle"},{"type":"literal","value":"playlist_add_circle"},{"type":"literal","value":"playlist_play"},{"type":"literal","value":"playlist_remove"},{"type":"literal","value":"plug_connect"},{"type":"literal","value":"plumbing"},{"type":"literal","value":"plus_one"},{"type":"literal","value":"podcasts"},{"type":"literal","value":"podiatry"},{"type":"literal","value":"podium"},{"type":"literal","value":"point_of_sale"},{"type":"literal","value":"point_scan"},{"type":"literal","value":"poker_chip"},{"type":"literal","value":"policy_alert"},{"type":"literal","value":"poll"},{"type":"literal","value":"polymer"},{"type":"literal","value":"pool"},{"type":"literal","value":"portable_wifi_off"},{"type":"literal","value":"position_bottom_left"},{"type":"literal","value":"position_bottom_right"},{"type":"literal","value":"position_top_right"},{"type":"literal","value":"post"},{"type":"literal","value":"post_add"},{"type":"literal","value":"potted_plant"},{"type":"literal","value":"power_input"},{"type":"literal","value":"power_off"},{"type":"literal","value":"power_settings_circle"},{"type":"literal","value":"power_settings_new"},{"type":"literal","value":"prayer_times"},{"type":"literal","value":"precision_manufacturing"},{"type":"literal","value":"pregnancy"},{"type":"literal","value":"pregnant_woman"},{"type":"literal","value":"preliminary"},{"type":"literal","value":"prescriptions"},{"type":"literal","value":"present_to_all"},{"type":"literal","value":"preview"},{"type":"literal","value":"preview_off"},{"type":"literal","value":"price_change"},{"type":"literal","value":"price_check"},{"type":"literal","value":"print_add"},{"type":"literal","value":"print_connect"},{"type":"literal","value":"print_disabled"},{"type":"literal","value":"print_error"},{"type":"literal","value":"print_lock"},{"type":"literal","value":"priority"},{"type":"literal","value":"priority_high"},{"type":"literal","value":"privacy"},{"type":"literal","value":"privacy_tip"},{"type":"literal","value":"private_connectivity"},{"type":"literal","value":"problem"},{"type":"literal","value":"procedure"},{"type":"literal","value":"process_chart"},{"type":"literal","value":"production_quantity_limits"},{"type":"literal","value":"productivity"},{"type":"literal","value":"progress_activity"},{"type":"literal","value":"prompt_suggestion"},{"type":"literal","value":"propane"},{"type":"literal","value":"propane_tank"},{"type":"literal","value":"psychiatry"},{"type":"literal","value":"psychology"},{"type":"literal","value":"psychology_alt"},{"type":"literal","value":"public_off"},{"type":"literal","value":"publish"},{"type":"literal","value":"published_with_changes"},{"type":"literal","value":"pulmonology"},{"type":"literal","value":"pulse_alert"},{"type":"literal","value":"punch_clock"},{"type":"literal","value":"push_pin"},{"type":"literal","value":"qr_code"},{"type":"literal","value":"qr_code_2"},{"type":"literal","value":"qr_code_2_add"},{"type":"literal","value":"qr_code_scanner"},{"type":"literal","value":"query_builder"},{"type":"literal","value":"query_stats"},{"type":"literal","value":"question_answer"},{"type":"literal","value":"question_exchange"},{"type":"literal","value":"question_mark"},{"type":"literal","value":"queue"},{"type":"literal","value":"queue_music"},{"type":"literal","value":"queue_play_next"},{"type":"literal","value":"quick_phrases"},{"type":"literal","value":"quick_reference"},{"type":"literal","value":"quick_reference_all"},{"type":"literal","value":"quick_reorder"},{"type":"literal","value":"quickreply"},{"type":"literal","value":"quiz"},{"type":"literal","value":"r_mobiledata"},{"type":"literal","value":"radar"},{"type":"literal","value":"radio_button_checked"},{"type":"literal","value":"radio_button_partial"},{"type":"literal","value":"radio_button_unchecked"},{"type":"literal","value":"radiology"},{"type":"literal","value":"railway_alert"},{"type":"literal","value":"railway_alert_2"},{"type":"literal","value":"rainy"},{"type":"literal","value":"rainy_heavy"},{"type":"literal","value":"rainy_light"},{"type":"literal","value":"rainy_snow"},{"type":"literal","value":"ramen_dining"},{"type":"literal","value":"ramp_left"},{"type":"literal","value":"ramp_right"},{"type":"literal","value":"range_hood"},{"type":"literal","value":"rate_review"},{"type":"literal","value":"raven"},{"type":"literal","value":"raw_off"},{"type":"literal","value":"raw_on"},{"type":"literal","value":"read_more"},{"type":"literal","value":"readiness_score"},{"type":"literal","value":"real_estate_agent"},{"type":"literal","value":"rear_camera"},{"type":"literal","value":"rebase"},{"type":"literal","value":"rebase_edit"},{"type":"literal","value":"receipt_long"},{"type":"literal","value":"receipt_long_off"},{"type":"literal","value":"recent_actors"},{"type":"literal","value":"recent_patient"},{"type":"literal","value":"recenter"},{"type":"literal","value":"recommend"},{"type":"literal","value":"record_voice_over"},{"type":"literal","value":"recycling"},{"type":"literal","value":"redeem"},{"type":"literal","value":"redo"},{"type":"literal","value":"reduce_capacity"},{"type":"literal","value":"regular_expression"},{"type":"literal","value":"relax"},{"type":"literal","value":"release_alert"},{"type":"literal","value":"remember_me"},{"type":"literal","value":"reminder"},{"type":"literal","value":"remote_gen"},{"type":"literal","value":"remove_circle"},{"type":"literal","value":"remove_circle_outline"},{"type":"literal","value":"remove_done"},{"type":"literal","value":"remove_from_queue"},{"type":"literal","value":"remove_moderator"},{"type":"literal","value":"remove_red_eye"},{"type":"literal","value":"remove_road"},{"type":"literal","value":"remove_selection"},{"type":"literal","value":"remove_shopping_cart"},{"type":"literal","value":"reopen_window"},{"type":"literal","value":"reorder"},{"type":"literal","value":"repartition"},{"type":"literal","value":"repeat_on"},{"type":"literal","value":"repeat_one"},{"type":"literal","value":"repeat_one_on"},{"type":"literal","value":"replace_audio"},{"type":"literal","value":"replace_image"},{"type":"literal","value":"replace_video"},{"type":"literal","value":"replay"},{"type":"literal","value":"replay_10"},{"type":"literal","value":"replay_30"},{"type":"literal","value":"replay_5"},{"type":"literal","value":"replay_circle_filled"},{"type":"literal","value":"reply"},{"type":"literal","value":"reply_all"},{"type":"literal","value":"report_gmailerrorred"},{"type":"literal","value":"report_off"},{"type":"literal","value":"report_problem"},{"type":"literal","value":"request_page"},{"type":"literal","value":"request_quote"},{"type":"literal","value":"reset_brightness"},{"type":"literal","value":"reset_exposure"},{"type":"literal","value":"reset_focus"},{"type":"literal","value":"reset_image"},{"type":"literal","value":"reset_iso"},{"type":"literal","value":"reset_settings"},{"type":"literal","value":"reset_shadow"},{"type":"literal","value":"reset_shutter_speed"},{"type":"literal","value":"reset_tv"},{"type":"literal","value":"reset_white_balance"},{"type":"literal","value":"reset_wrench"},{"type":"literal","value":"respiratory_rate"},{"type":"literal","value":"responsive_layout"},{"type":"literal","value":"rest_area"},{"type":"literal","value":"restart_alt"},{"type":"literal","value":"restaurant"},{"type":"literal","value":"restaurant_menu"},{"type":"literal","value":"restore"},{"type":"literal","value":"restore_from_trash"},{"type":"literal","value":"restore_page"},{"type":"literal","value":"resume"},{"type":"literal","value":"reviews"},{"type":"literal","value":"rewarded_ads"},{"type":"literal","value":"rheumatology"},{"type":"literal","value":"rib_cage"},{"type":"literal","value":"rice_bowl"},{"type":"literal","value":"right_click"},{"type":"literal","value":"right_panel_close"},{"type":"literal","value":"right_panel_open"},{"type":"literal","value":"ring_volume"},{"type":"literal","value":"ripples"},{"type":"literal","value":"road"},{"type":"literal","value":"robot"},{"type":"literal","value":"robot_2"},{"type":"literal","value":"rocket"},{"type":"literal","value":"rocket_launch"},{"type":"literal","value":"roller_shades"},{"type":"literal","value":"roller_shades_closed"},{"type":"literal","value":"roller_skating"},{"type":"literal","value":"roofing"},{"type":"literal","value":"room"},{"type":"literal","value":"room_preferences"},{"type":"literal","value":"room_service"},{"type":"literal","value":"rotate_90_degrees_ccw"},{"type":"literal","value":"rotate_90_degrees_cw"},{"type":"literal","value":"rotate_auto"},{"type":"literal","value":"rotate_left"},{"type":"literal","value":"rotate_right"},{"type":"literal","value":"roundabout_left"},{"type":"literal","value":"roundabout_right"},{"type":"literal","value":"rounded_corner"},{"type":"literal","value":"router_off"},{"type":"literal","value":"routine"},{"type":"literal","value":"rowing"},{"type":"literal","value":"rss_feed"},{"type":"literal","value":"rsvp"},{"type":"literal","value":"rtt"},{"type":"literal","value":"rubric"},{"type":"literal","value":"rule"},{"type":"literal","value":"rule_folder"},{"type":"literal","value":"rule_settings"},{"type":"literal","value":"run_circle"},{"type":"literal","value":"running_with_errors"},{"type":"literal","value":"rv_hookup"},{"type":"literal","value":"safety_check"},{"type":"literal","value":"safety_check_off"},{"type":"literal","value":"safety_divider"},{"type":"literal","value":"sailing"},{"type":"literal","value":"salinity"},{"type":"literal","value":"sanitizer"},{"type":"literal","value":"satellite"},{"type":"literal","value":"satellite_alt"},{"type":"literal","value":"sauna"},{"type":"literal","value":"save"},{"type":"literal","value":"save_alt"},{"type":"literal","value":"save_as"},{"type":"literal","value":"save_clock"},{"type":"literal","value":"saved_search"},{"type":"literal","value":"savings"},{"type":"literal","value":"scan"},{"type":"literal","value":"scan_delete"},{"type":"literal","value":"scatter_plot"},{"type":"literal","value":"scene"},{"type":"literal","value":"schedule"},{"type":"literal","value":"schedule_send"},{"type":"literal","value":"schema"},{"type":"literal","value":"school"},{"type":"literal","value":"science"},{"type":"literal","value":"science_off"},{"type":"literal","value":"score"},{"type":"literal","value":"scoreboard"},{"type":"literal","value":"screen_lock_landscape"},{"type":"literal","value":"screen_lock_portrait"},{"type":"literal","value":"screen_lock_rotation"},{"type":"literal","value":"screen_record"},{"type":"literal","value":"screen_rotation"},{"type":"literal","value":"screen_rotation_alt"},{"type":"literal","value":"screen_rotation_up"},{"type":"literal","value":"screen_search_desktop"},{"type":"literal","value":"screen_share"},{"type":"literal","value":"screenshot"},{"type":"literal","value":"screenshot_frame"},{"type":"literal","value":"screenshot_frame_2"},{"type":"literal","value":"screenshot_keyboard"},{"type":"literal","value":"screenshot_monitor"},{"type":"literal","value":"screenshot_region"},{"type":"literal","value":"screenshot_tablet"},{"type":"literal","value":"scrollable_header"},{"type":"literal","value":"scuba_diving"},{"type":"literal","value":"sd"},{"type":"literal","value":"sd_card"},{"type":"literal","value":"sd_card_alert"},{"type":"literal","value":"sd_storage"},{"type":"literal","value":"sdk"},{"type":"literal","value":"search_activity"},{"type":"literal","value":"search_check"},{"type":"literal","value":"search_check_2"},{"type":"literal","value":"search_gear"},{"type":"literal","value":"search_hands_free"},{"type":"literal","value":"search_insights"},{"type":"literal","value":"search_off"},{"type":"literal","value":"seat_cool_left"},{"type":"literal","value":"seat_cool_right"},{"type":"literal","value":"seat_heat_left"},{"type":"literal","value":"seat_heat_right"},{"type":"literal","value":"seat_vent_left"},{"type":"literal","value":"seat_vent_right"},{"type":"literal","value":"security"},{"type":"literal","value":"security_key"},{"type":"literal","value":"security_update"},{"type":"literal","value":"security_update_good"},{"type":"literal","value":"security_update_warning"},{"type":"literal","value":"select_all"},{"type":"literal","value":"select_check_box"},{"type":"literal","value":"select_to_speak"},{"type":"literal","value":"select_window"},{"type":"literal","value":"select_window_2"},{"type":"literal","value":"select_window_off"},{"type":"literal","value":"self_care"},{"type":"literal","value":"self_improvement"},{"type":"literal","value":"sell"},{"type":"literal","value":"send_and_archive"},{"type":"literal","value":"send_money"},{"type":"literal","value":"send_time_extension"},{"type":"literal","value":"send_to_mobile"},{"type":"literal","value":"sensor_door"},{"type":"literal","value":"sensor_occupied"},{"type":"literal","value":"sensor_window"},{"type":"literal","value":"sensors"},{"type":"literal","value":"sensors_krx"},{"type":"literal","value":"sensors_krx_off"},{"type":"literal","value":"sensors_off"},{"type":"literal","value":"sentiment_calm"},{"type":"literal","value":"sentiment_content"},{"type":"literal","value":"sentiment_dissatisfied"},{"type":"literal","value":"sentiment_excited"},{"type":"literal","value":"sentiment_extremely_dissatisfied"},{"type":"literal","value":"sentiment_frustrated"},{"type":"literal","value":"sentiment_neutral"},{"type":"literal","value":"sentiment_sad"},{"type":"literal","value":"sentiment_satisfied"},{"type":"literal","value":"sentiment_satisfied_alt"},{"type":"literal","value":"sentiment_stressed"},{"type":"literal","value":"sentiment_very_dissatisfied"},{"type":"literal","value":"sentiment_very_satisfied"},{"type":"literal","value":"sentiment_worried"},{"type":"literal","value":"serif"},{"type":"literal","value":"server_person"},{"type":"literal","value":"service_toolbox"},{"type":"literal","value":"set_meal"},{"type":"literal","value":"settings_accessibility"},{"type":"literal","value":"settings_account_box"},{"type":"literal","value":"settings_alert"},{"type":"literal","value":"settings_applications"},{"type":"literal","value":"settings_b_roll"},{"type":"literal","value":"settings_backup_restore"},{"type":"literal","value":"settings_bluetooth"},{"type":"literal","value":"settings_brightness"},{"type":"literal","value":"settings_cell"},{"type":"literal","value":"settings_cinematic_blur"},{"type":"literal","value":"settings_ethernet"},{"type":"literal","value":"settings_heart"},{"type":"literal","value":"settings_input_antenna"},{"type":"literal","value":"settings_input_component"},{"type":"literal","value":"settings_input_composite"},{"type":"literal","value":"settings_input_hdmi"},{"type":"literal","value":"settings_input_svideo"},{"type":"literal","value":"settings_motion_mode"},{"type":"literal","value":"settings_night_sight"},{"type":"literal","value":"settings_overscan"},{"type":"literal","value":"settings_panorama"},{"type":"literal","value":"settings_phone"},{"type":"literal","value":"settings_photo_camera"},{"type":"literal","value":"settings_power"},{"type":"literal","value":"settings_remote"},{"type":"literal","value":"settings_seating"},{"type":"literal","value":"settings_slow_motion"},{"type":"literal","value":"settings_suggest"},{"type":"literal","value":"settings_system_daydream"},{"type":"literal","value":"settings_timelapse"},{"type":"literal","value":"settings_video_camera"},{"type":"literal","value":"settings_voice"},{"type":"literal","value":"settop_component"},{"type":"literal","value":"severe_cold"},{"type":"literal","value":"shadow_add"},{"type":"literal","value":"shadow_minus"},{"type":"literal","value":"shape_line"},{"type":"literal","value":"shapes"},{"type":"literal","value":"share_eta"},{"type":"literal","value":"share_location"},{"type":"literal","value":"share_off"},{"type":"literal","value":"share_reviews"},{"type":"literal","value":"share_windows"},{"type":"literal","value":"shaved_ice"},{"type":"literal","value":"sheets_rtl"},{"type":"literal","value":"shelf_auto_hide"},{"type":"literal","value":"shelf_position"},{"type":"literal","value":"shelves"},{"type":"literal","value":"shield_lock"},{"type":"literal","value":"shield_locked"},{"type":"literal","value":"shield_moon"},{"type":"literal","value":"shield_person"},{"type":"literal","value":"shield_question"},{"type":"literal","value":"shield_toggle"},{"type":"literal","value":"shield_watch"},{"type":"literal","value":"shield_with_heart"},{"type":"literal","value":"shield_with_house"},{"type":"literal","value":"shift_lock"},{"type":"literal","value":"shift_lock_off"},{"type":"literal","value":"shop"},{"type":"literal","value":"shop_2"},{"type":"literal","value":"shop_two"},{"type":"literal","value":"shopping_bag"},{"type":"literal","value":"shopping_bag_speed"},{"type":"literal","value":"shopping_basket"},{"type":"literal","value":"shopping_cart"},{"type":"literal","value":"shopping_cart_checkout"},{"type":"literal","value":"shopping_cart_off"},{"type":"literal","value":"shoppingmode"},{"type":"literal","value":"short_stay"},{"type":"literal","value":"short_text"},{"type":"literal","value":"shortcut"},{"type":"literal","value":"show_chart"},{"type":"literal","value":"shuffle_on"},{"type":"literal","value":"shutter_speed"},{"type":"literal","value":"shutter_speed_add"},{"type":"literal","value":"shutter_speed_minus"},{"type":"literal","value":"sick"},{"type":"literal","value":"side_navigation"},{"type":"literal","value":"sign_language"},{"type":"literal","value":"signal_cellular_0_bar"},{"type":"literal","value":"signal_cellular_1_bar"},{"type":"literal","value":"signal_cellular_2_bar"},{"type":"literal","value":"signal_cellular_3_bar"},{"type":"literal","value":"signal_cellular_4_bar"},{"type":"literal","value":"signal_cellular_add"},{"type":"literal","value":"signal_cellular_alt"},{"type":"literal","value":"signal_cellular_alt_1_bar"},{"type":"literal","value":"signal_cellular_alt_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_0_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_1_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_3_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_4_bar"},{"type":"literal","value":"signal_cellular_no_sim"},{"type":"literal","value":"signal_cellular_nodata"},{"type":"literal","value":"signal_cellular_null"},{"type":"literal","value":"signal_cellular_off"},{"type":"literal","value":"signal_cellular_pause"},{"type":"literal","value":"signal_disconnected"},{"type":"literal","value":"signal_wifi_0_bar"},{"type":"literal","value":"signal_wifi_1_bar"},{"type":"literal","value":"signal_wifi_1_bar_lock"},{"type":"literal","value":"signal_wifi_2_bar"},{"type":"literal","value":"signal_wifi_2_bar_lock"},{"type":"literal","value":"signal_wifi_3_bar"},{"type":"literal","value":"signal_wifi_3_bar_lock"},{"type":"literal","value":"signal_wifi_4_bar"},{"type":"literal","value":"signal_wifi_4_bar_lock"},{"type":"literal","value":"signal_wifi_bad"},{"type":"literal","value":"signal_wifi_connected_no_internet_0"},{"type":"literal","value":"signal_wifi_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_off"},{"type":"literal","value":"signal_wifi_statusbar_1_bar"},{"type":"literal","value":"signal_wifi_statusbar_2_bar"},{"type":"literal","value":"signal_wifi_statusbar_3_bar"},{"type":"literal","value":"signal_wifi_statusbar_4_bar"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_statusbar_not_connected"},{"type":"literal","value":"signal_wifi_statusbar_null"},{"type":"literal","value":"signpost"},{"type":"literal","value":"sim_card"},{"type":"literal","value":"sim_card_alert"},{"type":"literal","value":"sim_card_download"},{"type":"literal","value":"simulation"},{"type":"literal","value":"single_bed"},{"type":"literal","value":"sip"},{"type":"literal","value":"siren"},{"type":"literal","value":"siren_check"},{"type":"literal","value":"siren_open"},{"type":"literal","value":"siren_question"},{"type":"literal","value":"skateboarding"},{"type":"literal","value":"skeleton"},{"type":"literal","value":"skillet"},{"type":"literal","value":"skillet_cooktop"},{"type":"literal","value":"skip_next"},{"type":"literal","value":"skip_previous"},{"type":"literal","value":"skull"},{"type":"literal","value":"skull_list"},{"type":"literal","value":"slab_serif"},{"type":"literal","value":"sledding"},{"type":"literal","value":"sleep_score"},{"type":"literal","value":"slide_library"},{"type":"literal","value":"sliders"},{"type":"literal","value":"slideshow"},{"type":"literal","value":"slow_motion_video"},{"type":"literal","value":"smart_button"},{"type":"literal","value":"smart_card_reader"},{"type":"literal","value":"smart_card_reader_off"},{"type":"literal","value":"smart_display"},{"type":"literal","value":"smart_outlet"},{"type":"literal","value":"smart_screen"},{"type":"literal","value":"smart_toy"},{"type":"literal","value":"smb_share"},{"type":"literal","value":"smoke_free"},{"type":"literal","value":"smoking_rooms"},{"type":"literal","value":"sms"},{"type":"literal","value":"sms_failed"},{"type":"literal","value":"snippet_folder"},{"type":"literal","value":"snooze"},{"type":"literal","value":"snowboarding"},{"type":"literal","value":"snowing"},{"type":"literal","value":"snowing_heavy"},{"type":"literal","value":"snowmobile"},{"type":"literal","value":"snowshoeing"},{"type":"literal","value":"soap"},{"type":"literal","value":"soba"},{"type":"literal","value":"social_distance"},{"type":"literal","value":"social_leaderboard"},{"type":"literal","value":"solar_power"},{"type":"literal","value":"solo_dining"},{"type":"literal","value":"sort_by_alpha"},{"type":"literal","value":"sound_detection_dog_barking"},{"type":"literal","value":"sound_detection_glass_break"},{"type":"literal","value":"sound_detection_loud_sound"},{"type":"literal","value":"sound_sampler"},{"type":"literal","value":"soup_kitchen"},{"type":"literal","value":"source_environment"},{"type":"literal","value":"source_notes"},{"type":"literal","value":"south"},{"type":"literal","value":"south_america"},{"type":"literal","value":"south_east"},{"type":"literal","value":"south_west"},{"type":"literal","value":"spa"},{"type":"literal","value":"space_bar"},{"type":"literal","value":"space_dashboard"},{"type":"literal","value":"spatial_audio"},{"type":"literal","value":"spatial_audio_off"},{"type":"literal","value":"spatial_speaker"},{"type":"literal","value":"spatial_tracking"},{"type":"literal","value":"speaker_group"},{"type":"literal","value":"speaker_notes"},{"type":"literal","value":"speaker_notes_off"},{"type":"literal","value":"speaker_phone"},{"type":"literal","value":"special_character"},{"type":"literal","value":"specific_gravity"},{"type":"literal","value":"speech_to_text"},{"type":"literal","value":"speed_0_25"},{"type":"literal","value":"speed_0_2x"},{"type":"literal","value":"speed_0_5"},{"type":"literal","value":"speed_0_5x"},{"type":"literal","value":"speed_0_75"},{"type":"literal","value":"speed_0_7x"},{"type":"literal","value":"speed_1_2"},{"type":"literal","value":"speed_1_25"},{"type":"literal","value":"speed_1_2x"},{"type":"literal","value":"speed_1_5"},{"type":"literal","value":"speed_1_5x"},{"type":"literal","value":"speed_1_75"},{"type":"literal","value":"speed_1_7x"},{"type":"literal","value":"speed_2x"},{"type":"literal","value":"speed_camera"},{"type":"literal","value":"spellcheck"},{"type":"literal","value":"split_scene"},{"type":"literal","value":"split_scene_down"},{"type":"literal","value":"split_scene_left"},{"type":"literal","value":"split_scene_right"},{"type":"literal","value":"split_scene_up"},{"type":"literal","value":"splitscreen"},{"type":"literal","value":"splitscreen_add"},{"type":"literal","value":"splitscreen_bottom"},{"type":"literal","value":"splitscreen_landscape"},{"type":"literal","value":"splitscreen_left"},{"type":"literal","value":"splitscreen_portrait"},{"type":"literal","value":"splitscreen_right"},{"type":"literal","value":"splitscreen_top"},{"type":"literal","value":"splitscreen_vertical_add"},{"type":"literal","value":"spo2"},{"type":"literal","value":"spoke"},{"type":"literal","value":"sports"},{"type":"literal","value":"sports_and_outdoors"},{"type":"literal","value":"sports_bar"},{"type":"literal","value":"sports_baseball"},{"type":"literal","value":"sports_basketball"},{"type":"literal","value":"sports_cricket"},{"type":"literal","value":"sports_esports"},{"type":"literal","value":"sports_football"},{"type":"literal","value":"sports_golf"},{"type":"literal","value":"sports_gymnastics"},{"type":"literal","value":"sports_handball"},{"type":"literal","value":"sports_hockey"},{"type":"literal","value":"sports_kabaddi"},{"type":"literal","value":"sports_martial_arts"},{"type":"literal","value":"sports_mma"},{"type":"literal","value":"sports_motorsports"},{"type":"literal","value":"sports_rugby"},{"type":"literal","value":"sports_score"},{"type":"literal","value":"sports_soccer"},{"type":"literal","value":"sports_tennis"},{"type":"literal","value":"sports_volleyball"},{"type":"literal","value":"sprint"},{"type":"literal","value":"square_dot"},{"type":"literal","value":"square_foot"},{"type":"literal","value":"ssid_chart"},{"type":"literal","value":"stack_group"},{"type":"literal","value":"stack_hexagon"},{"type":"literal","value":"stack_off"},{"type":"literal","value":"stack_star"},{"type":"literal","value":"stacked_bar_chart"},{"type":"literal","value":"stacked_email"},{"type":"literal","value":"stacked_inbox"},{"type":"literal","value":"stacked_line_chart"},{"type":"literal","value":"stacks"},{"type":"literal","value":"stadia_controller"},{"type":"literal","value":"stadium"},{"type":"literal","value":"stairs_2"},{"type":"literal","value":"star_border"},{"type":"literal","value":"star_border_purple500"},{"type":"literal","value":"star_half"},{"type":"literal","value":"star_outline"},{"type":"literal","value":"star_purple500"},{"type":"literal","value":"star_rate"},{"type":"literal","value":"star_rate_half"},{"type":"literal","value":"star_shine"},{"type":"literal","value":"stars"},{"type":"literal","value":"stars_2"},{"type":"literal","value":"stat_0"},{"type":"literal","value":"stat_1"},{"type":"literal","value":"stat_2"},{"type":"literal","value":"stat_3"},{"type":"literal","value":"stat_minus_1"},{"type":"literal","value":"stat_minus_2"},{"type":"literal","value":"stat_minus_3"},{"type":"literal","value":"stay_current_landscape"},{"type":"literal","value":"stay_current_portrait"},{"type":"literal","value":"stay_primary_landscape"},{"type":"literal","value":"stay_primary_portrait"},{"type":"literal","value":"steering_wheel_heat"},{"type":"literal","value":"step"},{"type":"literal","value":"step_into"},{"type":"literal","value":"step_out"},{"type":"literal","value":"step_over"},{"type":"literal","value":"steppers"},{"type":"literal","value":"steps"},{"type":"literal","value":"stethoscope_arrow"},{"type":"literal","value":"stethoscope_check"},{"type":"literal","value":"sticky_note"},{"type":"literal","value":"sticky_note_2"},{"type":"literal","value":"stock_media"},{"type":"literal","value":"stockpot"},{"type":"literal","value":"stop_circle"},{"type":"literal","value":"stop_screen_share"},{"type":"literal","value":"store"},{"type":"literal","value":"store_mall_directory"},{"type":"literal","value":"storm"},{"type":"literal","value":"straight"},{"type":"literal","value":"straighten"},{"type":"literal","value":"strategy"},{"type":"literal","value":"stream"},{"type":"literal","value":"streetview"},{"type":"literal","value":"stress_management"},{"type":"literal","value":"strikethrough_s"},{"type":"literal","value":"stroke_full"},{"type":"literal","value":"stroke_partial"},{"type":"literal","value":"styler"},{"type":"literal","value":"stylus"},{"type":"literal","value":"stylus_brush"},{"type":"literal","value":"stylus_fountain_pen"},{"type":"literal","value":"stylus_highlighter"},{"type":"literal","value":"stylus_laser_pointer"},{"type":"literal","value":"stylus_note"},{"type":"literal","value":"stylus_pen"},{"type":"literal","value":"stylus_pencil"},{"type":"literal","value":"subdirectory_arrow_left"},{"type":"literal","value":"subdirectory_arrow_right"},{"type":"literal","value":"subheader"},{"type":"literal","value":"subject"},{"type":"literal","value":"subscript"},{"type":"literal","value":"subscriptions"},{"type":"literal","value":"subtitles"},{"type":"literal","value":"subtitles_gear"},{"type":"literal","value":"subtitles_off"},{"type":"literal","value":"subway"},{"type":"literal","value":"subway_walk"},{"type":"literal","value":"summarize"},{"type":"literal","value":"sunny"},{"type":"literal","value":"sunny_snowing"},{"type":"literal","value":"superscript"},{"type":"literal","value":"supervised_user_circle"},{"type":"literal","value":"supervised_user_circle_off"},{"type":"literal","value":"supervisor_account"},{"type":"literal","value":"support"},{"type":"literal","value":"support_agent"},{"type":"literal","value":"surfing"},{"type":"literal","value":"surgical"},{"type":"literal","value":"surround_sound"},{"type":"literal","value":"swap_calls"},{"type":"literal","value":"swap_driving_apps"},{"type":"literal","value":"swap_driving_apps_wheel"},{"type":"literal","value":"swap_horiz"},{"type":"literal","value":"swap_horizontal_circle"},{"type":"literal","value":"swap_vert"},{"type":"literal","value":"swap_vertical_circle"},{"type":"literal","value":"sweep"},{"type":"literal","value":"swipe"},{"type":"literal","value":"swipe_down"},{"type":"literal","value":"swipe_down_alt"},{"type":"literal","value":"swipe_left"},{"type":"literal","value":"swipe_left_alt"},{"type":"literal","value":"swipe_right"},{"type":"literal","value":"swipe_right_alt"},{"type":"literal","value":"swipe_up"},{"type":"literal","value":"swipe_up_alt"},{"type":"literal","value":"swipe_vertical"},{"type":"literal","value":"switch_access"},{"type":"literal","value":"switch_access_2"},{"type":"literal","value":"switch_access_3"},{"type":"literal","value":"switch_access_shortcut"},{"type":"literal","value":"switch_access_shortcut_add"},{"type":"literal","value":"switch_account"},{"type":"literal","value":"switch_camera"},{"type":"literal","value":"switch_left"},{"type":"literal","value":"switch_right"},{"type":"literal","value":"switch_video"},{"type":"literal","value":"switches"},{"type":"literal","value":"sword_rose"},{"type":"literal","value":"swords"},{"type":"literal","value":"symptoms"},{"type":"literal","value":"synagogue"},{"type":"literal","value":"sync"},{"type":"literal","value":"sync_alt"},{"type":"literal","value":"sync_arrow_down"},{"type":"literal","value":"sync_arrow_up"},{"type":"literal","value":"sync_desktop"},{"type":"literal","value":"sync_disabled"},{"type":"literal","value":"sync_lock"},{"type":"literal","value":"sync_problem"},{"type":"literal","value":"sync_saved_locally"},{"type":"literal","value":"sync_saved_locally_off"},{"type":"literal","value":"system_security_update"},{"type":"literal","value":"system_security_update_good"},{"type":"literal","value":"system_security_update_warning"},{"type":"literal","value":"system_update"},{"type":"literal","value":"system_update_alt"},{"type":"literal","value":"tab_close"},{"type":"literal","value":"tab_close_inactive"},{"type":"literal","value":"tab_close_right"},{"type":"literal","value":"tab_duplicate"},{"type":"literal","value":"tab_group"},{"type":"literal","value":"tab_inactive"},{"type":"literal","value":"tab_move"},{"type":"literal","value":"tab_new_right"},{"type":"literal","value":"tab_recent"},{"type":"literal","value":"tab_search"},{"type":"literal","value":"tab_unselected"},{"type":"literal","value":"table_bar"},{"type":"literal","value":"table_chart"},{"type":"literal","value":"table_chart_view"},{"type":"literal","value":"table_convert"},{"type":"literal","value":"table_edit"},{"type":"literal","value":"table_eye"},{"type":"literal","value":"table_lamp"},{"type":"literal","value":"table_large"},{"type":"literal","value":"table_restaurant"},{"type":"literal","value":"table_rows"},{"type":"literal","value":"table_rows_narrow"},{"type":"literal","value":"table_sign"},{"type":"literal","value":"table_view"},{"type":"literal","value":"tablet_android"},{"type":"literal","value":"tablet_camera"},{"type":"literal","value":"tablet_mac"},{"type":"literal","value":"tabs"},{"type":"literal","value":"tactic"},{"type":"literal","value":"tag_faces"},{"type":"literal","value":"takeout_dining"},{"type":"literal","value":"takeout_dining_2"},{"type":"literal","value":"tamper_detection_off"},{"type":"literal","value":"tamper_detection_on"},{"type":"literal","value":"tap_and_play"},{"type":"literal","value":"tapas"},{"type":"literal","value":"task"},{"type":"literal","value":"task_alt"},{"type":"literal","value":"tatami_seat"},{"type":"literal","value":"taunt"},{"type":"literal","value":"taxi_alert"},{"type":"literal","value":"team_dashboard"},{"type":"literal","value":"temp_preferences_eco"},{"type":"literal","value":"temple_buddhist"},{"type":"literal","value":"temple_hindu"},{"type":"literal","value":"tenancy"},{"type":"literal","value":"terrain"},{"type":"literal","value":"text_ad"},{"type":"literal","value":"text_compare"},{"type":"literal","value":"text_decrease"},{"type":"literal","value":"text_fields"},{"type":"literal","value":"text_fields_alt"},{"type":"literal","value":"text_format"},{"type":"literal","value":"text_increase"},{"type":"literal","value":"text_rotate_up"},{"type":"literal","value":"text_rotate_vertical"},{"type":"literal","value":"text_rotation_angledown"},{"type":"literal","value":"text_rotation_angleup"},{"type":"literal","value":"text_rotation_down"},{"type":"literal","value":"text_rotation_none"},{"type":"literal","value":"text_select_end"},{"type":"literal","value":"text_select_jump_to_beginning"},{"type":"literal","value":"text_select_jump_to_end"},{"type":"literal","value":"text_select_move_back_character"},{"type":"literal","value":"text_select_move_back_word"},{"type":"literal","value":"text_select_move_down"},{"type":"literal","value":"text_select_move_forward_character"},{"type":"literal","value":"text_select_move_forward_word"},{"type":"literal","value":"text_select_move_up"},{"type":"literal","value":"text_select_start"},{"type":"literal","value":"text_snippet"},{"type":"literal","value":"text_to_speech"},{"type":"literal","value":"text_up"},{"type":"literal","value":"textsms"},{"type":"literal","value":"texture"},{"type":"literal","value":"texture_add"},{"type":"literal","value":"texture_minus"},{"type":"literal","value":"theater_comedy"},{"type":"literal","value":"theaters"},{"type":"literal","value":"thermometer_add"},{"type":"literal","value":"thermometer_gain"},{"type":"literal","value":"thermometer_loss"},{"type":"literal","value":"thermometer_minus"},{"type":"literal","value":"thermostat"},{"type":"literal","value":"thermostat_arrow_down"},{"type":"literal","value":"thermostat_arrow_up"},{"type":"literal","value":"thermostat_auto"},{"type":"literal","value":"thermostat_carbon"},{"type":"literal","value":"things_to_do"},{"type":"literal","value":"thread_unread"},{"type":"literal","value":"threat_intelligence"},{"type":"literal","value":"thumb_down"},{"type":"literal","value":"thumb_down_alt"},{"type":"literal","value":"thumb_down_off_alt"},{"type":"literal","value":"thumb_up"},{"type":"literal","value":"thumb_up_alt"},{"type":"literal","value":"thumb_up_off_alt"},{"type":"literal","value":"thumbnail_bar"},{"type":"literal","value":"thumbs_up_double"},{"type":"literal","value":"thumbs_up_down"},{"type":"literal","value":"thunderstorm"},{"type":"literal","value":"tibia"},{"type":"literal","value":"tibia_alt"},{"type":"literal","value":"tile_large"},{"type":"literal","value":"tile_medium"},{"type":"literal","value":"tile_small"},{"type":"literal","value":"time_auto"},{"type":"literal","value":"time_to_leave"},{"type":"literal","value":"timeline"},{"type":"literal","value":"timer_1"},{"type":"literal","value":"timer_10"},{"type":"literal","value":"timer_10_alt_1"},{"type":"literal","value":"timer_10_select"},{"type":"literal","value":"timer_2"},{"type":"literal","value":"timer_3"},{"type":"literal","value":"timer_3_alt_1"},{"type":"literal","value":"timer_3_select"},{"type":"literal","value":"timer_5"},{"type":"literal","value":"timer_5_shutter"},{"type":"literal","value":"timer_arrow_down"},{"type":"literal","value":"timer_arrow_up"},{"type":"literal","value":"timer_off"},{"type":"literal","value":"timer_pause"},{"type":"literal","value":"timer_play"},{"type":"literal","value":"tips_and_updates"},{"type":"literal","value":"tire_repair"},{"type":"literal","value":"titlecase"},{"type":"literal","value":"toast"},{"type":"literal","value":"toc"},{"type":"literal","value":"today"},{"type":"literal","value":"toggle_off"},{"type":"literal","value":"toggle_on"},{"type":"literal","value":"token"},{"type":"literal","value":"toll"},{"type":"literal","value":"tonality"},{"type":"literal","value":"tonality_2"},{"type":"literal","value":"tools_flat_head"},{"type":"literal","value":"tools_installation_kit"},{"type":"literal","value":"tools_ladder"},{"type":"literal","value":"tools_level"},{"type":"literal","value":"tools_phillips"},{"type":"literal","value":"tools_pliers_wire_stripper"},{"type":"literal","value":"tools_power_drill"},{"type":"literal","value":"tooltip_2"},{"type":"literal","value":"top_panel_close"},{"type":"literal","value":"top_panel_open"},{"type":"literal","value":"topic"},{"type":"literal","value":"total_dissolved_solids"},{"type":"literal","value":"touch_app"},{"type":"literal","value":"touch_double"},{"type":"literal","value":"touch_long"},{"type":"literal","value":"touch_triple"},{"type":"literal","value":"touchpad_mouse"},{"type":"literal","value":"touchpad_mouse_off"},{"type":"literal","value":"tour"},{"type":"literal","value":"toys"},{"type":"literal","value":"toys_and_games"},{"type":"literal","value":"toys_fan"},{"type":"literal","value":"track_changes"},{"type":"literal","value":"trackpad_input"},{"type":"literal","value":"trackpad_input_2"},{"type":"literal","value":"trackpad_input_3"},{"type":"literal","value":"traffic"},{"type":"literal","value":"traffic_jam"},{"type":"literal","value":"trail_length"},{"type":"literal","value":"trail_length_medium"},{"type":"literal","value":"trail_length_short"},{"type":"literal","value":"train"},{"type":"literal","value":"transcribe"},{"type":"literal","value":"transfer_within_a_station"},{"type":"literal","value":"transgender"},{"type":"literal","value":"transit_enterexit"},{"type":"literal","value":"transit_ticket"},{"type":"literal","value":"transition_chop"},{"type":"literal","value":"transition_dissolve"},{"type":"literal","value":"transition_fade"},{"type":"literal","value":"transition_push"},{"type":"literal","value":"transition_slide"},{"type":"literal","value":"translate_indic"},{"type":"literal","value":"transportation"},{"type":"literal","value":"travel"},{"type":"literal","value":"travel_explore"},{"type":"literal","value":"travel_luggage_and_bags"},{"type":"literal","value":"trending_down"},{"type":"literal","value":"trending_flat"},{"type":"literal","value":"trending_up"},{"type":"literal","value":"trip"},{"type":"literal","value":"trip_origin"},{"type":"literal","value":"trolley"},{"type":"literal","value":"trolley_cable_car"},{"type":"literal","value":"troubleshoot"},{"type":"literal","value":"tsunami"},{"type":"literal","value":"tsv"},{"type":"literal","value":"tty"},{"type":"literal","value":"tune"},{"type":"literal","value":"tungsten"},{"type":"literal","value":"turn_left"},{"type":"literal","value":"turn_right"},{"type":"literal","value":"turn_sharp_left"},{"type":"literal","value":"turn_sharp_right"},{"type":"literal","value":"turn_slight_left"},{"type":"literal","value":"turn_slight_right"},{"type":"literal","value":"turned_in"},{"type":"literal","value":"turned_in_not"},{"type":"literal","value":"tv_displays"},{"type":"literal","value":"tv_gen"},{"type":"literal","value":"tv_guide"},{"type":"literal","value":"tv_next"},{"type":"literal","value":"tv_off"},{"type":"literal","value":"tv_options_edit_channels"},{"type":"literal","value":"tv_options_input_settings"},{"type":"literal","value":"tv_remote"},{"type":"literal","value":"tv_signin"},{"type":"literal","value":"tv_with_assistant"},{"type":"literal","value":"two_pager"},{"type":"literal","value":"two_pager_store"},{"type":"literal","value":"two_wheeler"},{"type":"literal","value":"type_specimen"},{"type":"literal","value":"u_turn_left"},{"type":"literal","value":"u_turn_right"},{"type":"literal","value":"udon"},{"type":"literal","value":"ulna_radius"},{"type":"literal","value":"ulna_radius_alt"},{"type":"literal","value":"unarchive"},{"type":"literal","value":"undo"},{"type":"literal","value":"unfold_less"},{"type":"literal","value":"unfold_less_double"},{"type":"literal","value":"unfold_more"},{"type":"literal","value":"unfold_more_double"},{"type":"literal","value":"ungroup"},{"type":"literal","value":"universal_currency"},{"type":"literal","value":"universal_currency_alt"},{"type":"literal","value":"universal_local"},{"type":"literal","value":"unknown_2"},{"type":"literal","value":"unknown_5"},{"type":"literal","value":"unknown_7"},{"type":"literal","value":"unknown_document"},{"type":"literal","value":"unknown_med"},{"type":"literal","value":"unlicense"},{"type":"literal","value":"unpaved_road"},{"type":"literal","value":"unpublished"},{"type":"literal","value":"unsubscribe"},{"type":"literal","value":"upcoming"},{"type":"literal","value":"update_disabled"},{"type":"literal","value":"upgrade"},{"type":"literal","value":"upi_pay"},{"type":"literal","value":"upload"},{"type":"literal","value":"upload_2"},{"type":"literal","value":"upload_file"},{"type":"literal","value":"urology"},{"type":"literal","value":"usb"},{"type":"literal","value":"usb_off"},{"type":"literal","value":"user_attributes"},{"type":"literal","value":"vaccines"},{"type":"literal","value":"vacuum"},{"type":"literal","value":"valve"},{"type":"literal","value":"vape_free"},{"type":"literal","value":"vaping_rooms"},{"type":"literal","value":"variable_add"},{"type":"literal","value":"variable_insert"},{"type":"literal","value":"variable_remove"},{"type":"literal","value":"variables"},{"type":"literal","value":"ventilator"},{"type":"literal","value":"verified"},{"type":"literal","value":"verified_off"},{"type":"literal","value":"verified_user"},{"type":"literal","value":"vertical_align_bottom"},{"type":"literal","value":"vertical_align_center"},{"type":"literal","value":"vertical_align_top"},{"type":"literal","value":"vertical_distribute"},{"type":"literal","value":"vertical_shades"},{"type":"literal","value":"vertical_shades_closed"},{"type":"literal","value":"vertical_split"},{"type":"literal","value":"vibration"},{"type":"literal","value":"video_call"},{"type":"literal","value":"video_camera_back"},{"type":"literal","value":"video_camera_back_add"},{"type":"literal","value":"video_camera_front"},{"type":"literal","value":"video_camera_front_off"},{"type":"literal","value":"video_chat"},{"type":"literal","value":"video_file"},{"type":"literal","value":"video_label"},{"type":"literal","value":"video_library"},{"type":"literal","value":"video_search"},{"type":"literal","value":"video_settings"},{"type":"literal","value":"video_stable"},{"type":"literal","value":"videocam"},{"type":"literal","value":"videocam_alert"},{"type":"literal","value":"videocam_off"},{"type":"literal","value":"videogame_asset"},{"type":"literal","value":"videogame_asset_off"},{"type":"literal","value":"view_agenda"},{"type":"literal","value":"view_apps"},{"type":"literal","value":"view_array"},{"type":"literal","value":"view_carousel"},{"type":"literal","value":"view_column"},{"type":"literal","value":"view_column_2"},{"type":"literal","value":"view_comfy"},{"type":"literal","value":"view_comfy_alt"},{"type":"literal","value":"view_compact"},{"type":"literal","value":"view_compact_alt"},{"type":"literal","value":"view_cozy"},{"type":"literal","value":"view_day"},{"type":"literal","value":"view_headline"},{"type":"literal","value":"view_in_ar"},{"type":"literal","value":"view_in_ar_off"},{"type":"literal","value":"view_kanban"},{"type":"literal","value":"view_list"},{"type":"literal","value":"view_module"},{"type":"literal","value":"view_object_track"},{"type":"literal","value":"view_quilt"},{"type":"literal","value":"view_real_size"},{"type":"literal","value":"view_sidebar"},{"type":"literal","value":"view_stream"},{"type":"literal","value":"view_timeline"},{"type":"literal","value":"view_week"},{"type":"literal","value":"vignette"},{"type":"literal","value":"vignette_2"},{"type":"literal","value":"villa"},{"type":"literal","value":"visibility_lock"},{"type":"literal","value":"visibility_off"},{"type":"literal","value":"vital_signs"},{"type":"literal","value":"vo2_max"},{"type":"literal","value":"voice_chat"},{"type":"literal","value":"voice_over_off"},{"type":"literal","value":"voice_selection"},{"type":"literal","value":"voice_selection_off"},{"type":"literal","value":"voicemail"},{"type":"literal","value":"voicemail_2"},{"type":"literal","value":"volcano"},{"type":"literal","value":"volume_down"},{"type":"literal","value":"volume_down_alt"},{"type":"literal","value":"volume_mute"},{"type":"literal","value":"volume_off"},{"type":"literal","value":"volume_up"},{"type":"literal","value":"volunteer_activism"},{"type":"literal","value":"voting_chip"},{"type":"literal","value":"vpn_key"},{"type":"literal","value":"vpn_key_alert"},{"type":"literal","value":"vpn_key_off"},{"type":"literal","value":"vpn_lock"},{"type":"literal","value":"vpn_lock_2"},{"type":"literal","value":"vr180_create2d"},{"type":"literal","value":"vr180_create2d_off"},{"type":"literal","value":"vrpano"},{"type":"literal","value":"wall_art"},{"type":"literal","value":"wall_lamp"},{"type":"literal","value":"wallet"},{"type":"literal","value":"wallpaper"},{"type":"literal","value":"wallpaper_slideshow"},{"type":"literal","value":"wand_shine"},{"type":"literal","value":"wand_stars"},{"type":"literal","value":"ward"},{"type":"literal","value":"warehouse"},{"type":"literal","value":"warning"},{"type":"literal","value":"warning_amber"},{"type":"literal","value":"warning_off"},{"type":"literal","value":"wash"},{"type":"literal","value":"washoku"},{"type":"literal","value":"watch"},{"type":"literal","value":"watch_arrow"},{"type":"literal","value":"watch_button_press"},{"type":"literal","value":"watch_check"},{"type":"literal","value":"watch_later"},{"type":"literal","value":"watch_off"},{"type":"literal","value":"watch_screentime"},{"type":"literal","value":"watch_vibration"},{"type":"literal","value":"watch_wake"},{"type":"literal","value":"water"},{"type":"literal","value":"water_bottle"},{"type":"literal","value":"water_bottle_large"},{"type":"literal","value":"water_damage"},{"type":"literal","value":"water_do"},{"type":"literal","value":"water_drop"},{"type":"literal","value":"water_ec"},{"type":"literal","value":"water_full"},{"type":"literal","value":"water_heater"},{"type":"literal","value":"water_lock"},{"type":"literal","value":"water_loss"},{"type":"literal","value":"water_lux"},{"type":"literal","value":"water_medium"},{"type":"literal","value":"water_orp"},{"type":"literal","value":"water_ph"},{"type":"literal","value":"water_pump"},{"type":"literal","value":"water_voc"},{"type":"literal","value":"waterfall_chart"},{"type":"literal","value":"waves"},{"type":"literal","value":"waving_hand"},{"type":"literal","value":"wb_auto"},{"type":"literal","value":"wb_cloudy"},{"type":"literal","value":"wb_incandescent"},{"type":"literal","value":"wb_iridescent"},{"type":"literal","value":"wb_shade"},{"type":"literal","value":"wb_sunny"},{"type":"literal","value":"wb_twighlight"},{"type":"literal","value":"wb_twilight"},{"type":"literal","value":"wc"},{"type":"literal","value":"weather_hail"},{"type":"literal","value":"weather_mix"},{"type":"literal","value":"weather_snowy"},{"type":"literal","value":"web_asset"},{"type":"literal","value":"web_asset_off"},{"type":"literal","value":"web_stories"},{"type":"literal","value":"web_traffic"},{"type":"literal","value":"webhook"},{"type":"literal","value":"weekend"},{"type":"literal","value":"weight"},{"type":"literal","value":"west"},{"type":"literal","value":"whatshot"},{"type":"literal","value":"wheelchair_pickup"},{"type":"literal","value":"where_to_vote"},{"type":"literal","value":"widget_medium"},{"type":"literal","value":"widget_small"},{"type":"literal","value":"widget_width"},{"type":"literal","value":"widgets"},{"type":"literal","value":"width_full"},{"type":"literal","value":"width_normal"},{"type":"literal","value":"width_wide"},{"type":"literal","value":"wifi_1_bar"},{"type":"literal","value":"wifi_2_bar"},{"type":"literal","value":"wifi_add"},{"type":"literal","value":"wifi_calling"},{"type":"literal","value":"wifi_calling_1"},{"type":"literal","value":"wifi_calling_2"},{"type":"literal","value":"wifi_calling_3"},{"type":"literal","value":"wifi_calling_bar_1"},{"type":"literal","value":"wifi_calling_bar_2"},{"type":"literal","value":"wifi_calling_bar_3"},{"type":"literal","value":"wifi_channel"},{"type":"literal","value":"wifi_find"},{"type":"literal","value":"wifi_home"},{"type":"literal","value":"wifi_lock"},{"type":"literal","value":"wifi_notification"},{"type":"literal","value":"wifi_off"},{"type":"literal","value":"wifi_password"},{"type":"literal","value":"wifi_protected_setup"},{"type":"literal","value":"wifi_proxy"},{"type":"literal","value":"wifi_tethering"},{"type":"literal","value":"wifi_tethering_error"},{"type":"literal","value":"wifi_tethering_off"},{"type":"literal","value":"wind_power"},{"type":"literal","value":"window_closed"},{"type":"literal","value":"window_open"},{"type":"literal","value":"window_sensor"},{"type":"literal","value":"windshield_defrost_auto"},{"type":"literal","value":"windshield_defrost_front"},{"type":"literal","value":"windshield_defrost_rear"},{"type":"literal","value":"windshield_heat_front"},{"type":"literal","value":"wine_bar"},{"type":"literal","value":"woman"},{"type":"literal","value":"woman_2"},{"type":"literal","value":"work"},{"type":"literal","value":"work_alert"},{"type":"literal","value":"work_history"},{"type":"literal","value":"work_off"},{"type":"literal","value":"work_outline"},{"type":"literal","value":"work_update"},{"type":"literal","value":"workspace_premium"},{"type":"literal","value":"workspaces"},{"type":"literal","value":"workspaces_filled"},{"type":"literal","value":"workspaces_outline"},{"type":"literal","value":"wounds_injuries"},{"type":"literal","value":"wrap_text"},{"type":"literal","value":"wrist"},{"type":"literal","value":"wrong_location"},{"type":"literal","value":"wysiwyg"},{"type":"literal","value":"yakitori"},{"type":"literal","value":"yard"},{"type":"literal","value":"yoshoku"},{"type":"literal","value":"your_trips"},{"type":"literal","value":"youtube_activity"},{"type":"literal","value":"youtube_searched_for"},{"type":"literal","value":"zone_person_alert"},{"type":"literal","value":"zone_person_idle"},{"type":"literal","value":"zone_person_urgent"},{"type":"literal","value":"zoom_in"},{"type":"literal","value":"zoom_in_map"},{"type":"literal","value":"zoom_out"},{"type":"literal","value":"zoom_out_map"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"literal","value":"function"},{"type":"literal","value":"join"},{"type":"literal","value":"shift"},{"type":"literal","value":"sort"},{"type":"literal","value":"map"},{"type":"literal","value":"filter"},{"type":"literal","value":"source"},{"type":"literal","value":"style"},{"type":"literal","value":"accessible"},{"type":"literal","value":"search"},{"type":"literal","value":"repeat"},{"type":"literal","value":"anchor"},{"type":"literal","value":"link"},{"type":"literal","value":"key"},{"type":"literal","value":"history"},{"type":"literal","value":"target"},{"type":"literal","value":"tab"},{"type":"literal","value":"route"},{"type":"literal","value":"stack"},{"type":"literal","value":"merge"},{"type":"literal","value":"navigation"},{"type":"literal","value":"article"},{"type":"literal","value":"code"},{"type":"literal","value":"details"},{"type":"literal","value":"html"},{"type":"literal","value":"iframe"},{"type":"literal","value":"input"},{"type":"literal","value":"label"},{"type":"literal","value":"menu"},{"type":"literal","value":"output"},{"type":"literal","value":"script"},{"type":"literal","value":"select"},{"type":"literal","value":"table"},{"type":"literal","value":"title"},{"type":"literal","value":"circle"},{"type":"literal","value":"image"},{"type":"literal","value":"pattern"},{"type":"literal","value":"polyline"},{"type":"literal","value":"stop"},{"type":"literal","value":"switch"},{"type":"literal","value":"event"},{"type":"literal","value":"create"},{"type":"literal","value":"segment"},{"type":"literal","value":"groups"},{"type":"literal","value":"delete"},{"type":"literal","value":"mode"},{"type":"literal","value":"report"},{"type":"literal","value":"error"},{"type":"literal","value":"opacity"},{"type":"literal","value":"elevation"},{"type":"literal","value":"visibility"},{"type":"literal","value":"height"},{"type":"literal","value":"margin"},{"type":"literal","value":"padding"},{"type":"literal","value":"start"},{"type":"literal","value":"transform"},{"type":"literal","value":"done"},{"type":"literal","value":"difference"},{"type":"literal","value":"scale"},{"type":"literal","value":"colors"},{"type":"literal","value":"description"},{"type":"literal","value":"contrast"},{"type":"literal","value":"radio"},{"type":"literal","value":"timer"},{"type":"literal","value":"list"},{"type":"literal","value":"toolbar"},{"type":"literal","value":"feed"},{"type":"literal","value":"group"},{"type":"literal","value":"note"},{"type":"literal","value":"tooltip"},{"type":"literal","value":"light"},{"type":"literal","value":"uppercase"},{"type":"literal","value":"lowercase"},{"type":"literal","value":"ios"},{"type":"literal","value":"android"},{"type":"literal","value":"web"},{"type":"literal","value":"email"},{"type":"literal","value":"clear"},{"type":"literal","value":"resize"},{"type":"literal","value":"translate"},{"type":"literal","value":"animation"},{"type":"literal","value":"phone"},{"type":"literal","value":"send"},{"type":"literal","value":"flip"},{"type":"literal","value":"expand"},{"type":"literal","value":"window"},{"type":"literal","value":"speed"},{"type":"literal","value":"badge"},{"type":"literal","value":"message"},{"type":"literal","value":"close"},{"type":"literal","value":"print"},{"type":"literal","value":"cancel"},{"type":"literal","value":"pause"},{"type":"literal","value":"storage"},{"type":"literal","value":"refresh"},{"type":"literal","value":"info"},{"type":"literal","value":"http"},{"type":"literal","value":"enable"},{"type":"literal","value":"update"},{"type":"literal","value":"remove"},{"type":"literal","value":"fingerprint"},{"type":"literal","value":"portrait"},{"type":"literal","value":"landscape"},{"type":"literal","value":"fullscreen"},{"type":"literal","value":"dangerous"},{"type":"literal","value":"metro"},{"type":"literal","value":"flag"},{"type":"literal","value":"signature"},{"type":"literal","value":"package"},{"type":"literal","value":"category"},{"type":"literal","value":"build"},{"type":"literal","value":"settings"},{"type":"literal","value":"comment"},{"type":"literal","value":"tag"},{"type":"literal","value":"host"},{"type":"literal","value":"add"},{"type":"literal","value":"share"},{"type":"literal","value":"policy"},{"type":"literal","value":"public"},{"type":"literal","value":"try"},{"type":"literal","value":"class"},{"type":"literal","value":"tablet"},{"type":"literal","value":"tv"},{"type":"literal","value":"api"},{"type":"literal","value":"alarm"},{"type":"literal","value":"barcode"},{"type":"literal","value":"bolt"},{"type":"literal","value":"book"},{"type":"literal","value":"bookmark"},{"type":"literal","value":"camera"},{"type":"literal","value":"cloud"},{"type":"literal","value":"crop"},{"type":"literal","value":"eject"},{"type":"literal","value":"equal"},{"type":"literal","value":"eyeglasses"},{"type":"literal","value":"flowchart"},{"type":"literal","value":"folder"},{"type":"literal","value":"forward"},{"type":"literal","value":"globe"},{"type":"literal","value":"headphones"},{"type":"literal","value":"hexagon"},{"type":"literal","value":"hourglass"},{"type":"literal","value":"house"},{"type":"literal","value":"keyboard"},{"type":"literal","value":"lightbulb"},{"type":"literal","value":"lock"},{"type":"literal","value":"mic"},{"type":"literal","value":"percent"},{"type":"literal","value":"person"},{"type":"literal","value":"photo"},{"type":"literal","value":"pin"},{"type":"literal","value":"power"},{"type":"literal","value":"rectangle"},{"type":"literal","value":"shield"},{"type":"literal","value":"shuffle"},{"type":"literal","value":"speaker"},{"type":"literal","value":"square"},{"type":"literal","value":"star"},{"type":"literal","value":"thermometer"},{"type":"literal","value":"timelapse"},{"type":"literal","value":"tornado"},{"type":"literal","value":"umbrella"},{"type":"literal","value":"wifi"},{"type":"literal","value":"abc"},{"type":"literal","value":"crown"},{"type":"literal","value":"diamond"},{"type":"literal","value":"loupe"},{"type":"literal","value":"mail"},{"type":"literal","value":"newspaper"},{"type":"literal","value":"pip"},{"type":"literal","value":"scanner"},{"type":"literal","value":"shadow"},{"type":"literal","value":"stethoscope"},{"type":"literal","value":"terminal"},{"type":"literal","value":"tram"},{"type":"literal","value":"asterisk"},{"type":"literal","value":"checklist"},{"type":"literal","value":"earbuds"},{"type":"literal","value":"pentagon"},{"type":"literal","value":"scooter"},{"type":"literal","value":"backpack"},{"type":"literal","value":"bathtub"},{"type":"literal","value":"chair"},{"type":"literal","value":"dishwasher"},{"type":"literal","value":"fireplace"},{"type":"literal","value":"microwave"},{"type":"literal","value":"oven"},{"type":"literal","value":"pill"},{"type":"literal","value":"shower"},{"type":"literal","value":"sprinkler"},{"type":"literal","value":"stairs"},{"type":"literal","value":"syringe"},{"type":"literal","value":"trophy"},{"type":"literal","value":"sos"},{"type":"literal","value":"stroller"},{"type":"literal","value":"accessibility"},{"type":"literal","value":"bubble"},{"type":"literal","value":"smartphone"},{"type":"literal","value":"storefront"},{"type":"literal","value":"drone"},{"type":"literal","value":"headset"},{"type":"literal","value":"moped"},{"type":"literal","value":"motorcycle"},{"type":"literal","value":"numbers"},{"type":"literal","value":"receipt"},{"type":"literal","value":"palette"},{"type":"literal","value":"router"},{"type":"literal","value":"123"},{"type":"literal","value":"360"},{"type":"literal","value":"10k"},{"type":"literal","value":"10mp"},{"type":"literal","value":"11mp"},{"type":"literal","value":"12mp"},{"type":"literal","value":"13mp"},{"type":"literal","value":"14mp"},{"type":"literal","value":"15mp"},{"type":"literal","value":"16mp"},{"type":"literal","value":"17mp"},{"type":"literal","value":"18_up_rating"},{"type":"literal","value":"18mp"},{"type":"literal","value":"19mp"},{"type":"literal","value":"1k"},{"type":"literal","value":"1k_plus"},{"type":"literal","value":"1x_mobiledata"},{"type":"literal","value":"1x_mobiledata_badge"},{"type":"literal","value":"20mp"},{"type":"literal","value":"21mp"},{"type":"literal","value":"22mp"},{"type":"literal","value":"23mp"},{"type":"literal","value":"24fps_select"},{"type":"literal","value":"24mp"},{"type":"literal","value":"2d"},{"type":"literal","value":"2k"},{"type":"literal","value":"2k_plus"},{"type":"literal","value":"2mp"},{"type":"literal","value":"30fps"},{"type":"literal","value":"30fps_select"},{"type":"literal","value":"3d"},{"type":"literal","value":"3d_rotation"},{"type":"literal","value":"3g_mobiledata"},{"type":"literal","value":"3g_mobiledata_badge"},{"type":"literal","value":"3k"},{"type":"literal","value":"3k_plus"},{"type":"literal","value":"3mp"},{"type":"literal","value":"3p"},{"type":"literal","value":"4g_mobiledata"},{"type":"literal","value":"4g_mobiledata_badge"},{"type":"literal","value":"4g_plus_mobiledata"},{"type":"literal","value":"4k"},{"type":"literal","value":"4k_plus"},{"type":"literal","value":"4mp"},{"type":"literal","value":"50mp"},{"type":"literal","value":"5g"},{"type":"literal","value":"5g_mobiledata_badge"},{"type":"literal","value":"5k"},{"type":"literal","value":"5k_plus"},{"type":"literal","value":"5mp"},{"type":"literal","value":"60fps"},{"type":"literal","value":"60fps_select"},{"type":"literal","value":"6_ft_apart"},{"type":"literal","value":"6k"},{"type":"literal","value":"6k_plus"},{"type":"literal","value":"6mp"},{"type":"literal","value":"7k"},{"type":"literal","value":"7k_plus"},{"type":"literal","value":"7mp"},{"type":"literal","value":"8k"},{"type":"literal","value":"8k_plus"},{"type":"literal","value":"8mp"},{"type":"literal","value":"9k"},{"type":"literal","value":"9k_plus"},{"type":"literal","value":"9mp"},{"type":"literal","value":"ac_unit"},{"type":"literal","value":"access_alarm"},{"type":"literal","value":"access_alarms"},{"type":"literal","value":"access_time"},{"type":"literal","value":"access_time_filled"},{"type":"literal","value":"accessibility_new"},{"type":"literal","value":"accessible_forward"},{"type":"literal","value":"accessible_menu"},{"type":"literal","value":"account_balance"},{"type":"literal","value":"account_balance_wallet"},{"type":"literal","value":"account_box"},{"type":"literal","value":"account_child"},{"type":"literal","value":"account_child_invert"},{"type":"literal","value":"account_circle"},{"type":"literal","value":"account_circle_off"},{"type":"literal","value":"account_tree"},{"type":"literal","value":"action_key"},{"type":"literal","value":"activity_zone"},{"type":"literal","value":"acupuncture"},{"type":"literal","value":"acute"},{"type":"literal","value":"ad"},{"type":"literal","value":"ad_group"},{"type":"literal","value":"ad_group_off"},{"type":"literal","value":"ad_off"},{"type":"literal","value":"ad_units"},{"type":"literal","value":"adaptive_audio_mic"},{"type":"literal","value":"adaptive_audio_mic_off"},{"type":"literal","value":"adb"},{"type":"literal","value":"add_2"},{"type":"literal","value":"add_a_photo"},{"type":"literal","value":"add_ad"},{"type":"literal","value":"add_alarm"},{"type":"literal","value":"add_alert"},{"type":"literal","value":"add_box"},{"type":"literal","value":"add_business"},{"type":"literal","value":"add_call"},{"type":"literal","value":"add_card"},{"type":"literal","value":"add_chart"},{"type":"literal","value":"add_circle"},{"type":"literal","value":"add_circle_outline"},{"type":"literal","value":"add_column_left"},{"type":"literal","value":"add_column_right"},{"type":"literal","value":"add_comment"},{"type":"literal","value":"add_diamond"},{"type":"literal","value":"add_home"},{"type":"literal","value":"add_home_work"},{"type":"literal","value":"add_ic_call"},{"type":"literal","value":"add_link"},{"type":"literal","value":"add_location"},{"type":"literal","value":"add_location_alt"},{"type":"literal","value":"add_moderator"},{"type":"literal","value":"add_notes"},{"type":"literal","value":"add_photo_alternate"},{"type":"literal","value":"add_reaction"},{"type":"literal","value":"add_road"},{"type":"literal","value":"add_row_above"},{"type":"literal","value":"add_row_below"},{"type":"literal","value":"add_shopping_cart"},{"type":"literal","value":"add_task"},{"type":"literal","value":"add_to_drive"},{"type":"literal","value":"add_to_home_screen"},{"type":"literal","value":"add_to_photos"},{"type":"literal","value":"add_to_queue"},{"type":"literal","value":"add_triangle"},{"type":"literal","value":"addchart"},{"type":"literal","value":"adf_scanner"},{"type":"literal","value":"adjust"},{"type":"literal","value":"admin_meds"},{"type":"literal","value":"admin_panel_settings"},{"type":"literal","value":"ads_click"},{"type":"literal","value":"agender"},{"type":"literal","value":"agriculture"},{"type":"literal","value":"air"},{"type":"literal","value":"air_freshener"},{"type":"literal","value":"air_purifier"},{"type":"literal","value":"air_purifier_gen"},{"type":"literal","value":"airline_seat_flat"},{"type":"literal","value":"airline_seat_flat_angled"},{"type":"literal","value":"airline_seat_individual_suite"},{"type":"literal","value":"airline_seat_legroom_extra"},{"type":"literal","value":"airline_seat_legroom_normal"},{"type":"literal","value":"airline_seat_legroom_reduced"},{"type":"literal","value":"airline_seat_recline_extra"},{"type":"literal","value":"airline_seat_recline_normal"},{"type":"literal","value":"airline_stops"},{"type":"literal","value":"airlines"},{"type":"literal","value":"airplane_ticket"},{"type":"literal","value":"airplanemode_active"},{"type":"literal","value":"airplanemode_inactive"},{"type":"literal","value":"airplay"},{"type":"literal","value":"airport_shuttle"},{"type":"literal","value":"airwave"},{"type":"literal","value":"alarm_add"},{"type":"literal","value":"alarm_off"},{"type":"literal","value":"alarm_on"},{"type":"literal","value":"alarm_pause"},{"type":"literal","value":"alarm_smart_wake"},{"type":"literal","value":"album"},{"type":"literal","value":"align_center"},{"type":"literal","value":"align_end"},{"type":"literal","value":"align_flex_center"},{"type":"literal","value":"align_flex_end"},{"type":"literal","value":"align_flex_start"},{"type":"literal","value":"align_horizontal_center"},{"type":"literal","value":"align_horizontal_left"},{"type":"literal","value":"align_horizontal_right"},{"type":"literal","value":"align_items_stretch"},{"type":"literal","value":"align_justify_center"},{"type":"literal","value":"align_justify_flex_end"},{"type":"literal","value":"align_justify_flex_start"},{"type":"literal","value":"align_justify_space_around"},{"type":"literal","value":"align_justify_space_between"},{"type":"literal","value":"align_justify_space_even"},{"type":"literal","value":"align_justify_stretch"},{"type":"literal","value":"align_self_stretch"},{"type":"literal","value":"align_space_around"},{"type":"literal","value":"align_space_between"},{"type":"literal","value":"align_space_even"},{"type":"literal","value":"align_start"},{"type":"literal","value":"align_stretch"},{"type":"literal","value":"align_vertical_bottom"},{"type":"literal","value":"align_vertical_center"},{"type":"literal","value":"align_vertical_top"},{"type":"literal","value":"all_inbox"},{"type":"literal","value":"all_inclusive"},{"type":"literal","value":"all_match"},{"type":"literal","value":"all_out"},{"type":"literal","value":"allergies"},{"type":"literal","value":"allergy"},{"type":"literal","value":"alt_route"},{"type":"literal","value":"alternate_email"},{"type":"literal","value":"altitude"},{"type":"literal","value":"ambulance"},{"type":"literal","value":"amend"},{"type":"literal","value":"amp_stories"},{"type":"literal","value":"analytics"},{"type":"literal","value":"android_cell_4_bar"},{"type":"literal","value":"android_cell_4_bar_alert"},{"type":"literal","value":"android_cell_4_bar_off"},{"type":"literal","value":"android_cell_4_bar_plus"},{"type":"literal","value":"android_cell_5_bar"},{"type":"literal","value":"android_cell_5_bar_alert"},{"type":"literal","value":"android_cell_5_bar_off"},{"type":"literal","value":"android_cell_5_bar_plus"},{"type":"literal","value":"android_cell_dual_4_bar"},{"type":"literal","value":"android_cell_dual_4_bar_alert"},{"type":"literal","value":"android_cell_dual_4_bar_plus"},{"type":"literal","value":"android_cell_dual_5_bar"},{"type":"literal","value":"android_cell_dual_5_bar_alert"},{"type":"literal","value":"android_cell_dual_5_bar_plus"},{"type":"literal","value":"android_wifi_3_bar"},{"type":"literal","value":"android_wifi_3_bar_alert"},{"type":"literal","value":"android_wifi_3_bar_lock"},{"type":"literal","value":"android_wifi_3_bar_off"},{"type":"literal","value":"android_wifi_3_bar_plus"},{"type":"literal","value":"android_wifi_3_bar_question"},{"type":"literal","value":"android_wifi_4_bar"},{"type":"literal","value":"android_wifi_4_bar_alert"},{"type":"literal","value":"android_wifi_4_bar_lock"},{"type":"literal","value":"android_wifi_4_bar_off"},{"type":"literal","value":"android_wifi_4_bar_plus"},{"type":"literal","value":"android_wifi_4_bar_question"},{"type":"literal","value":"animated_images"},{"type":"literal","value":"announcement"},{"type":"literal","value":"aod"},{"type":"literal","value":"aod_tablet"},{"type":"literal","value":"aod_watch"},{"type":"literal","value":"apartment"},{"type":"literal","value":"apk_document"},{"type":"literal","value":"apk_install"},{"type":"literal","value":"app_badging"},{"type":"literal","value":"app_blocking"},{"type":"literal","value":"app_registration"},{"type":"literal","value":"app_settings_alt"},{"type":"literal","value":"app_shortcut"},{"type":"literal","value":"apparel"},{"type":"literal","value":"approval"},{"type":"literal","value":"approval_delegation"},{"type":"literal","value":"approval_delegation_off"},{"type":"literal","value":"apps"},{"type":"literal","value":"apps_outage"},{"type":"literal","value":"aq"},{"type":"literal","value":"aq_indoor"},{"type":"literal","value":"ar_on_you"},{"type":"literal","value":"ar_stickers"},{"type":"literal","value":"architecture"},{"type":"literal","value":"archive"},{"type":"literal","value":"area_chart"},{"type":"literal","value":"arming_countdown"},{"type":"literal","value":"arrow_and_edge"},{"type":"literal","value":"arrow_back"},{"type":"literal","value":"arrow_back_2"},{"type":"literal","value":"arrow_back_ios"},{"type":"literal","value":"arrow_back_ios_new"},{"type":"literal","value":"arrow_circle_down"},{"type":"literal","value":"arrow_circle_left"},{"type":"literal","value":"arrow_circle_right"},{"type":"literal","value":"arrow_circle_up"},{"type":"literal","value":"arrow_cool_down"},{"type":"literal","value":"arrow_downward"},{"type":"literal","value":"arrow_downward_alt"},{"type":"literal","value":"arrow_drop_down"},{"type":"literal","value":"arrow_drop_down_circle"},{"type":"literal","value":"arrow_drop_up"},{"type":"literal","value":"arrow_forward"},{"type":"literal","value":"arrow_forward_ios"},{"type":"literal","value":"arrow_insert"},{"type":"literal","value":"arrow_left"},{"type":"literal","value":"arrow_left_alt"},{"type":"literal","value":"arrow_menu_close"},{"type":"literal","value":"arrow_menu_open"},{"type":"literal","value":"arrow_or_edge"},{"type":"literal","value":"arrow_outward"},{"type":"literal","value":"arrow_range"},{"type":"literal","value":"arrow_right"},{"type":"literal","value":"arrow_right_alt"},{"type":"literal","value":"arrow_selector_tool"},{"type":"literal","value":"arrow_shape_up"},{"type":"literal","value":"arrow_shape_up_stack"},{"type":"literal","value":"arrow_shape_up_stack_2"},{"type":"literal","value":"arrow_split"},{"type":"literal","value":"arrow_top_left"},{"type":"literal","value":"arrow_top_right"},{"type":"literal","value":"arrow_upload_progress"},{"type":"literal","value":"arrow_upload_ready"},{"type":"literal","value":"arrow_upward"},{"type":"literal","value":"arrow_upward_alt"},{"type":"literal","value":"arrow_warm_up"},{"type":"literal","value":"arrows_input"},{"type":"literal","value":"arrows_more_down"},{"type":"literal","value":"arrows_more_up"},{"type":"literal","value":"arrows_output"},{"type":"literal","value":"arrows_outward"},{"type":"literal","value":"art_track"},{"type":"literal","value":"article_person"},{"type":"literal","value":"article_shortcut"},{"type":"literal","value":"artist"},{"type":"literal","value":"aspect_ratio"},{"type":"literal","value":"assessment"},{"type":"literal","value":"assignment"},{"type":"literal","value":"assignment_add"},{"type":"literal","value":"assignment_ind"},{"type":"literal","value":"assignment_late"},{"type":"literal","value":"assignment_return"},{"type":"literal","value":"assignment_returned"},{"type":"literal","value":"assignment_turned_in"},{"type":"literal","value":"assist_walker"},{"type":"literal","value":"assistant"},{"type":"literal","value":"assistant_device"},{"type":"literal","value":"assistant_direction"},{"type":"literal","value":"assistant_navigation"},{"type":"literal","value":"assistant_on_hub"},{"type":"literal","value":"assistant_photo"},{"type":"literal","value":"assured_workload"},{"type":"literal","value":"atm"},{"type":"literal","value":"atr"},{"type":"literal","value":"attach_email"},{"type":"literal","value":"attach_file"},{"type":"literal","value":"attach_file_add"},{"type":"literal","value":"attach_file_off"},{"type":"literal","value":"attach_money"},{"type":"literal","value":"attachment"},{"type":"literal","value":"attractions"},{"type":"literal","value":"attribution"},{"type":"literal","value":"audio_description"},{"type":"literal","value":"audio_file"},{"type":"literal","value":"audio_video_receiver"},{"type":"literal","value":"audiotrack"},{"type":"literal","value":"auto_awesome"},{"type":"literal","value":"auto_awesome_mosaic"},{"type":"literal","value":"auto_awesome_motion"},{"type":"literal","value":"auto_delete"},{"type":"literal","value":"auto_fix_high"},{"type":"literal","value":"auto_fix_normal"},{"type":"literal","value":"auto_fix_off"},{"type":"literal","value":"auto_graph"},{"type":"literal","value":"auto_mode"},{"type":"literal","value":"auto_read_pause"},{"type":"literal","value":"auto_read_play"},{"type":"literal","value":"auto_stories"},{"type":"literal","value":"auto_stories_off"},{"type":"literal","value":"auto_towing"},{"type":"literal","value":"auto_transmission"},{"type":"literal","value":"autofps_select"},{"type":"literal","value":"automation"},{"type":"literal","value":"autopause"},{"type":"literal","value":"autoplay"},{"type":"literal","value":"autorenew"},{"type":"literal","value":"autostop"},{"type":"literal","value":"av1"},{"type":"literal","value":"av_timer"},{"type":"literal","value":"avc"},{"type":"literal","value":"avg_pace"},{"type":"literal","value":"avg_time"},{"type":"literal","value":"award_meal"},{"type":"literal","value":"award_star"},{"type":"literal","value":"azm"},{"type":"literal","value":"baby_changing_station"},{"type":"literal","value":"back_hand"},{"type":"literal","value":"back_to_tab"},{"type":"literal","value":"background_dot_large"},{"type":"literal","value":"background_dot_small"},{"type":"literal","value":"background_grid_small"},{"type":"literal","value":"background_replace"},{"type":"literal","value":"backlight_high"},{"type":"literal","value":"backlight_high_off"},{"type":"literal","value":"backlight_low"},{"type":"literal","value":"backspace"},{"type":"literal","value":"backup"},{"type":"literal","value":"backup_table"},{"type":"literal","value":"badge_critical_battery"},{"type":"literal","value":"badminton"},{"type":"literal","value":"bakery_dining"},{"type":"literal","value":"balance"},{"type":"literal","value":"balcony"},{"type":"literal","value":"ballot"},{"type":"literal","value":"bar_chart"},{"type":"literal","value":"bar_chart_4_bars"},{"type":"literal","value":"bar_chart_off"},{"type":"literal","value":"barcode_reader"},{"type":"literal","value":"barcode_scanner"},{"type":"literal","value":"barefoot"},{"type":"literal","value":"batch_prediction"},{"type":"literal","value":"bath_bedrock"},{"type":"literal","value":"bath_outdoor"},{"type":"literal","value":"bath_private"},{"type":"literal","value":"bath_public_large"},{"type":"literal","value":"bath_soak"},{"type":"literal","value":"bathroom"},{"type":"literal","value":"battery_0_bar"},{"type":"literal","value":"battery_1_bar"},{"type":"literal","value":"battery_20"},{"type":"literal","value":"battery_2_bar"},{"type":"literal","value":"battery_30"},{"type":"literal","value":"battery_3_bar"},{"type":"literal","value":"battery_4_bar"},{"type":"literal","value":"battery_50"},{"type":"literal","value":"battery_5_bar"},{"type":"literal","value":"battery_60"},{"type":"literal","value":"battery_6_bar"},{"type":"literal","value":"battery_80"},{"type":"literal","value":"battery_90"},{"type":"literal","value":"battery_alert"},{"type":"literal","value":"battery_android_0"},{"type":"literal","value":"battery_android_1"},{"type":"literal","value":"battery_android_2"},{"type":"literal","value":"battery_android_3"},{"type":"literal","value":"battery_android_4"},{"type":"literal","value":"battery_android_5"},{"type":"literal","value":"battery_android_6"},{"type":"literal","value":"battery_android_alert"},{"type":"literal","value":"battery_android_bolt"},{"type":"literal","value":"battery_android_frame_1"},{"type":"literal","value":"battery_android_frame_2"},{"type":"literal","value":"battery_android_frame_3"},{"type":"literal","value":"battery_android_frame_4"},{"type":"literal","value":"battery_android_frame_5"},{"type":"literal","value":"battery_android_frame_6"},{"type":"literal","value":"battery_android_frame_alert"},{"type":"literal","value":"battery_android_frame_bolt"},{"type":"literal","value":"battery_android_frame_full"},{"type":"literal","value":"battery_android_frame_plus"},{"type":"literal","value":"battery_android_frame_question"},{"type":"literal","value":"battery_android_frame_share"},{"type":"literal","value":"battery_android_frame_shield"},{"type":"literal","value":"battery_android_full"},{"type":"literal","value":"battery_android_plus"},{"type":"literal","value":"battery_android_question"},{"type":"literal","value":"battery_android_share"},{"type":"literal","value":"battery_android_shield"},{"type":"literal","value":"battery_change"},{"type":"literal","value":"battery_charging_20"},{"type":"literal","value":"battery_charging_30"},{"type":"literal","value":"battery_charging_50"},{"type":"literal","value":"battery_charging_60"},{"type":"literal","value":"battery_charging_80"},{"type":"literal","value":"battery_charging_90"},{"type":"literal","value":"battery_charging_full"},{"type":"literal","value":"battery_error"},{"type":"literal","value":"battery_full"},{"type":"literal","value":"battery_full_alt"},{"type":"literal","value":"battery_horiz_000"},{"type":"literal","value":"battery_horiz_050"},{"type":"literal","value":"battery_horiz_075"},{"type":"literal","value":"battery_low"},{"type":"literal","value":"battery_plus"},{"type":"literal","value":"battery_profile"},{"type":"literal","value":"battery_saver"},{"type":"literal","value":"battery_share"},{"type":"literal","value":"battery_status_good"},{"type":"literal","value":"battery_std"},{"type":"literal","value":"battery_unknown"},{"type":"literal","value":"battery_very_low"},{"type":"literal","value":"beach_access"},{"type":"literal","value":"bed"},{"type":"literal","value":"bedroom_baby"},{"type":"literal","value":"bedroom_child"},{"type":"literal","value":"bedroom_parent"},{"type":"literal","value":"bedtime"},{"type":"literal","value":"bedtime_off"},{"type":"literal","value":"beenhere"},{"type":"literal","value":"beer_meal"},{"type":"literal","value":"bento"},{"type":"literal","value":"bia"},{"type":"literal","value":"bid_landscape"},{"type":"literal","value":"bid_landscape_disabled"},{"type":"literal","value":"bigtop_updates"},{"type":"literal","value":"bike_dock"},{"type":"literal","value":"bike_lane"},{"type":"literal","value":"bike_scooter"},{"type":"literal","value":"biotech"},{"type":"literal","value":"blanket"},{"type":"literal","value":"blender"},{"type":"literal","value":"blind"},{"type":"literal","value":"blinds"},{"type":"literal","value":"blinds_closed"},{"type":"literal","value":"block"},{"type":"literal","value":"block_flipped"},{"type":"literal","value":"blood_pressure"},{"type":"literal","value":"bloodtype"},{"type":"literal","value":"bluetooth"},{"type":"literal","value":"bluetooth_audio"},{"type":"literal","value":"bluetooth_connected"},{"type":"literal","value":"bluetooth_disabled"},{"type":"literal","value":"bluetooth_drive"},{"type":"literal","value":"bluetooth_searching"},{"type":"literal","value":"blur_circular"},{"type":"literal","value":"blur_linear"},{"type":"literal","value":"blur_medium"},{"type":"literal","value":"blur_off"},{"type":"literal","value":"blur_on"},{"type":"literal","value":"blur_short"},{"type":"literal","value":"boat_bus"},{"type":"literal","value":"boat_railway"},{"type":"literal","value":"body_fat"},{"type":"literal","value":"body_system"},{"type":"literal","value":"bomb"},{"type":"literal","value":"book_2"},{"type":"literal","value":"book_3"},{"type":"literal","value":"book_4"},{"type":"literal","value":"book_5"},{"type":"literal","value":"book_6"},{"type":"literal","value":"book_online"},{"type":"literal","value":"book_ribbon"},{"type":"literal","value":"bookmark_add"},{"type":"literal","value":"bookmark_added"},{"type":"literal","value":"bookmark_bag"},{"type":"literal","value":"bookmark_border"},{"type":"literal","value":"bookmark_check"},{"type":"literal","value":"bookmark_flag"},{"type":"literal","value":"bookmark_heart"},{"type":"literal","value":"bookmark_manager"},{"type":"literal","value":"bookmark_remove"},{"type":"literal","value":"bookmark_star"},{"type":"literal","value":"bookmarks"},{"type":"literal","value":"books_movies_and_music"},{"type":"literal","value":"border_all"},{"type":"literal","value":"border_bottom"},{"type":"literal","value":"border_clear"},{"type":"literal","value":"border_color"},{"type":"literal","value":"border_horizontal"},{"type":"literal","value":"border_inner"},{"type":"literal","value":"border_left"},{"type":"literal","value":"border_outer"},{"type":"literal","value":"border_right"},{"type":"literal","value":"border_style"},{"type":"literal","value":"border_top"},{"type":"literal","value":"border_vertical"},{"type":"literal","value":"borg"},{"type":"literal","value":"bottom_app_bar"},{"type":"literal","value":"bottom_drawer"},{"type":"literal","value":"bottom_navigation"},{"type":"literal","value":"bottom_panel_close"},{"type":"literal","value":"bottom_panel_open"},{"type":"literal","value":"bottom_right_click"},{"type":"literal","value":"bottom_sheets"},{"type":"literal","value":"box"},{"type":"literal","value":"box_add"},{"type":"literal","value":"box_edit"},{"type":"literal","value":"boy"},{"type":"literal","value":"brand_awareness"},{"type":"literal","value":"brand_family"},{"type":"literal","value":"branding_watermark"},{"type":"literal","value":"breakfast_dining"},{"type":"literal","value":"breaking_news"},{"type":"literal","value":"breaking_news_alt_1"},{"type":"literal","value":"breastfeeding"},{"type":"literal","value":"brick"},{"type":"literal","value":"briefcase_meal"},{"type":"literal","value":"brightness_1"},{"type":"literal","value":"brightness_2"},{"type":"literal","value":"brightness_3"},{"type":"literal","value":"brightness_4"},{"type":"literal","value":"brightness_5"},{"type":"literal","value":"brightness_6"},{"type":"literal","value":"brightness_7"},{"type":"literal","value":"brightness_alert"},{"type":"literal","value":"brightness_auto"},{"type":"literal","value":"brightness_empty"},{"type":"literal","value":"brightness_high"},{"type":"literal","value":"brightness_low"},{"type":"literal","value":"brightness_medium"},{"type":"literal","value":"bring_your_own_ip"},{"type":"literal","value":"broadcast_on_home"},{"type":"literal","value":"broadcast_on_personal"},{"type":"literal","value":"broken_image"},{"type":"literal","value":"browse"},{"type":"literal","value":"browse_activity"},{"type":"literal","value":"browse_gallery"},{"type":"literal","value":"browser_not_supported"},{"type":"literal","value":"browser_updated"},{"type":"literal","value":"brunch_dining"},{"type":"literal","value":"brush"},{"type":"literal","value":"bubble_chart"},{"type":"literal","value":"bubbles"},{"type":"literal","value":"bucket_check"},{"type":"literal","value":"bug_report"},{"type":"literal","value":"build_circle"},{"type":"literal","value":"bungalow"},{"type":"literal","value":"burst_mode"},{"type":"literal","value":"bus_alert"},{"type":"literal","value":"bus_railway"},{"type":"literal","value":"business"},{"type":"literal","value":"business_center"},{"type":"literal","value":"business_chip"},{"type":"literal","value":"business_messages"},{"type":"literal","value":"buttons_alt"},{"type":"literal","value":"cabin"},{"type":"literal","value":"cable"},{"type":"literal","value":"cable_car"},{"type":"literal","value":"cached"},{"type":"literal","value":"cadence"},{"type":"literal","value":"cake"},{"type":"literal","value":"cake_add"},{"type":"literal","value":"calculate"},{"type":"literal","value":"calendar_add_on"},{"type":"literal","value":"calendar_apps_script"},{"type":"literal","value":"calendar_check"},{"type":"literal","value":"calendar_clock"},{"type":"literal","value":"calendar_lock"},{"type":"literal","value":"calendar_meal"},{"type":"literal","value":"calendar_meal_2"},{"type":"literal","value":"calendar_month"},{"type":"literal","value":"calendar_today"},{"type":"literal","value":"calendar_view_day"},{"type":"literal","value":"calendar_view_month"},{"type":"literal","value":"calendar_view_week"},{"type":"literal","value":"call"},{"type":"literal","value":"call_end"},{"type":"literal","value":"call_log"},{"type":"literal","value":"call_made"},{"type":"literal","value":"call_merge"},{"type":"literal","value":"call_missed"},{"type":"literal","value":"call_missed_outgoing"},{"type":"literal","value":"call_quality"},{"type":"literal","value":"call_received"},{"type":"literal","value":"call_split"},{"type":"literal","value":"call_to_action"},{"type":"literal","value":"camera_alt"},{"type":"literal","value":"camera_enhance"},{"type":"literal","value":"camera_front"},{"type":"literal","value":"camera_indoor"},{"type":"literal","value":"camera_outdoor"},{"type":"literal","value":"camera_rear"},{"type":"literal","value":"camera_roll"},{"type":"literal","value":"camera_video"},{"type":"literal","value":"cameraswitch"},{"type":"literal","value":"campaign"},{"type":"literal","value":"camping"},{"type":"literal","value":"cancel_presentation"},{"type":"literal","value":"cancel_schedule_send"},{"type":"literal","value":"candle"},{"type":"literal","value":"candlestick_chart"},{"type":"literal","value":"cannabis"},{"type":"literal","value":"captive_portal"},{"type":"literal","value":"capture"},{"type":"literal","value":"car_crash"},{"type":"literal","value":"car_defrost_left"},{"type":"literal","value":"car_defrost_low_left"},{"type":"literal","value":"car_defrost_low_right"},{"type":"literal","value":"car_defrost_mid_left"},{"type":"literal","value":"car_defrost_mid_low_left"},{"type":"literal","value":"car_defrost_mid_low_right"},{"type":"literal","value":"car_defrost_mid_right"},{"type":"literal","value":"car_defrost_right"},{"type":"literal","value":"car_fan_low_left"},{"type":"literal","value":"car_fan_low_mid_left"},{"type":"literal","value":"car_fan_low_right"},{"type":"literal","value":"car_fan_mid_left"},{"type":"literal","value":"car_fan_mid_low_right"},{"type":"literal","value":"car_fan_mid_right"},{"type":"literal","value":"car_fan_recirculate"},{"type":"literal","value":"car_gear"},{"type":"literal","value":"car_lock"},{"type":"literal","value":"car_mirror_heat"},{"type":"literal","value":"car_rental"},{"type":"literal","value":"car_repair"},{"type":"literal","value":"car_tag"},{"type":"literal","value":"card_giftcard"},{"type":"literal","value":"card_membership"},{"type":"literal","value":"card_travel"},{"type":"literal","value":"cardio_load"},{"type":"literal","value":"cardiology"},{"type":"literal","value":"cards"},{"type":"literal","value":"cards_star"},{"type":"literal","value":"carpenter"},{"type":"literal","value":"carry_on_bag"},{"type":"literal","value":"carry_on_bag_checked"},{"type":"literal","value":"carry_on_bag_inactive"},{"type":"literal","value":"carry_on_bag_question"},{"type":"literal","value":"cases"},{"type":"literal","value":"casino"},{"type":"literal","value":"cast"},{"type":"literal","value":"cast_connected"},{"type":"literal","value":"cast_for_education"},{"type":"literal","value":"cast_pause"},{"type":"literal","value":"cast_warning"},{"type":"literal","value":"castle"},{"type":"literal","value":"catching_pokemon"},{"type":"literal","value":"category_search"},{"type":"literal","value":"celebration"},{"type":"literal","value":"cell_merge"},{"type":"literal","value":"cell_tower"},{"type":"literal","value":"cell_wifi"},{"type":"literal","value":"center_focus_strong"},{"type":"literal","value":"center_focus_weak"},{"type":"literal","value":"chair_alt"},{"type":"literal","value":"chair_counter"},{"type":"literal","value":"chair_fireplace"},{"type":"literal","value":"chair_umbrella"},{"type":"literal","value":"chalet"},{"type":"literal","value":"change_circle"},{"type":"literal","value":"change_history"},{"type":"literal","value":"charger"},{"type":"literal","value":"charging_station"},{"type":"literal","value":"chart_data"},{"type":"literal","value":"chat"},{"type":"literal","value":"chat_add_on"},{"type":"literal","value":"chat_apps_script"},{"type":"literal","value":"chat_bubble"},{"type":"literal","value":"chat_bubble_outline"},{"type":"literal","value":"chat_error"},{"type":"literal","value":"chat_info"},{"type":"literal","value":"chat_paste_go"},{"type":"literal","value":"chat_paste_go_2"},{"type":"literal","value":"check"},{"type":"literal","value":"check_box"},{"type":"literal","value":"check_box_outline_blank"},{"type":"literal","value":"check_circle"},{"type":"literal","value":"check_circle_outline"},{"type":"literal","value":"check_circle_unread"},{"type":"literal","value":"check_in_out"},{"type":"literal","value":"check_indeterminate_small"},{"type":"literal","value":"check_small"},{"type":"literal","value":"checkbook"},{"type":"literal","value":"checked_bag"},{"type":"literal","value":"checked_bag_question"},{"type":"literal","value":"checklist_rtl"},{"type":"literal","value":"checkroom"},{"type":"literal","value":"cheer"},{"type":"literal","value":"chef_hat"},{"type":"literal","value":"chess"},{"type":"literal","value":"chess_bishop"},{"type":"literal","value":"chess_bishop_2"},{"type":"literal","value":"chess_king"},{"type":"literal","value":"chess_king_2"},{"type":"literal","value":"chess_knight"},{"type":"literal","value":"chess_pawn"},{"type":"literal","value":"chess_pawn_2"},{"type":"literal","value":"chess_queen"},{"type":"literal","value":"chess_rook"},{"type":"literal","value":"chevron_backward"},{"type":"literal","value":"chevron_forward"},{"type":"literal","value":"chevron_left"},{"type":"literal","value":"chevron_right"},{"type":"literal","value":"child_care"},{"type":"literal","value":"child_friendly"},{"type":"literal","value":"child_hat"},{"type":"literal","value":"chip_extraction"},{"type":"literal","value":"chips"},{"type":"literal","value":"chrome_reader_mode"},{"type":"literal","value":"chromecast_2"},{"type":"literal","value":"chromecast_device"},{"type":"literal","value":"chronic"},{"type":"literal","value":"church"},{"type":"literal","value":"cinematic_blur"},{"type":"literal","value":"circle_notifications"},{"type":"literal","value":"circles"},{"type":"literal","value":"circles_ext"},{"type":"literal","value":"clarify"},{"type":"literal","value":"clean_hands"},{"type":"literal","value":"cleaning"},{"type":"literal","value":"cleaning_bucket"},{"type":"literal","value":"cleaning_services"},{"type":"literal","value":"clear_all"},{"type":"literal","value":"clear_day"},{"type":"literal","value":"climate_mini_split"},{"type":"literal","value":"clinical_notes"},{"type":"literal","value":"clock_arrow_down"},{"type":"literal","value":"clock_arrow_up"},{"type":"literal","value":"clock_loader_10"},{"type":"literal","value":"clock_loader_20"},{"type":"literal","value":"clock_loader_40"},{"type":"literal","value":"clock_loader_60"},{"type":"literal","value":"clock_loader_80"},{"type":"literal","value":"clock_loader_90"},{"type":"literal","value":"close_fullscreen"},{"type":"literal","value":"close_small"},{"type":"literal","value":"closed_caption"},{"type":"literal","value":"closed_caption_add"},{"type":"literal","value":"closed_caption_disabled"},{"type":"literal","value":"closed_caption_off"},{"type":"literal","value":"cloud_alert"},{"type":"literal","value":"cloud_circle"},{"type":"literal","value":"cloud_done"},{"type":"literal","value":"cloud_download"},{"type":"literal","value":"cloud_lock"},{"type":"literal","value":"cloud_off"},{"type":"literal","value":"cloud_queue"},{"type":"literal","value":"cloud_sync"},{"type":"literal","value":"cloud_upload"},{"type":"literal","value":"cloudy_snowing"},{"type":"literal","value":"co2"},{"type":"literal","value":"co_present"},{"type":"literal","value":"code_blocks"},{"type":"literal","value":"code_off"},{"type":"literal","value":"coffee"},{"type":"literal","value":"coffee_maker"},{"type":"literal","value":"cognition"},{"type":"literal","value":"cognition_2"},{"type":"literal","value":"collapse_all"},{"type":"literal","value":"collapse_content"},{"type":"literal","value":"collections"},{"type":"literal","value":"collections_bookmark"},{"type":"literal","value":"color_lens"},{"type":"literal","value":"colorize"},{"type":"literal","value":"combine_columns"},{"type":"literal","value":"comedy_mask"},{"type":"literal","value":"comic_bubble"},{"type":"literal","value":"comment_bank"},{"type":"literal","value":"comments_disabled"},{"type":"literal","value":"commit"},{"type":"literal","value":"communication"},{"type":"literal","value":"communities"},{"type":"literal","value":"commute"},{"type":"literal","value":"compare"},{"type":"literal","value":"compare_arrows"},{"type":"literal","value":"compass_calibration"},{"type":"literal","value":"component_exchange"},{"type":"literal","value":"compost"},{"type":"literal","value":"compress"},{"type":"literal","value":"computer"},{"type":"literal","value":"computer_arrow_up"},{"type":"literal","value":"computer_cancel"},{"type":"literal","value":"concierge"},{"type":"literal","value":"conditions"},{"type":"literal","value":"confirmation_number"},{"type":"literal","value":"congenital"},{"type":"literal","value":"connect_without_contact"},{"type":"literal","value":"connected_tv"},{"type":"literal","value":"connecting_airports"},{"type":"literal","value":"construction"},{"type":"literal","value":"contact_emergency"},{"type":"literal","value":"contact_mail"},{"type":"literal","value":"contact_page"},{"type":"literal","value":"contact_phone"},{"type":"literal","value":"contact_support"},{"type":"literal","value":"contactless"},{"type":"literal","value":"contactless_off"},{"type":"literal","value":"contacts"},{"type":"literal","value":"contacts_product"},{"type":"literal","value":"content_copy"},{"type":"literal","value":"content_cut"},{"type":"literal","value":"content_paste"},{"type":"literal","value":"content_paste_go"},{"type":"literal","value":"content_paste_off"},{"type":"literal","value":"content_paste_search"},{"type":"literal","value":"contextual_token"},{"type":"literal","value":"contextual_token_add"},{"type":"literal","value":"contract"},{"type":"literal","value":"contract_delete"},{"type":"literal","value":"contract_edit"},{"type":"literal","value":"contrast_circle"},{"type":"literal","value":"contrast_rtl_off"},{"type":"literal","value":"contrast_square"},{"type":"literal","value":"control_camera"},{"type":"literal","value":"control_point"},{"type":"literal","value":"control_point_duplicate"},{"type":"literal","value":"controller_gen"},{"type":"literal","value":"conversation"},{"type":"literal","value":"conversion_path"},{"type":"literal","value":"conversion_path_off"},{"type":"literal","value":"convert_to_text"},{"type":"literal","value":"conveyor_belt"},{"type":"literal","value":"cookie"},{"type":"literal","value":"cookie_off"},{"type":"literal","value":"cooking"},{"type":"literal","value":"cool_to_dry"},{"type":"literal","value":"copy_all"},{"type":"literal","value":"copyright"},{"type":"literal","value":"coronavirus"},{"type":"literal","value":"corporate_fare"},{"type":"literal","value":"cottage"},{"type":"literal","value":"counter_0"},{"type":"literal","value":"counter_1"},{"type":"literal","value":"counter_2"},{"type":"literal","value":"counter_3"},{"type":"literal","value":"counter_4"},{"type":"literal","value":"counter_5"},{"type":"literal","value":"counter_6"},{"type":"literal","value":"counter_7"},{"type":"literal","value":"counter_8"},{"type":"literal","value":"counter_9"},{"type":"literal","value":"countertops"},{"type":"literal","value":"create_new_folder"},{"type":"literal","value":"credit_card"},{"type":"literal","value":"credit_card_clock"},{"type":"literal","value":"credit_card_gear"},{"type":"literal","value":"credit_card_heart"},{"type":"literal","value":"credit_card_off"},{"type":"literal","value":"credit_score"},{"type":"literal","value":"crib"},{"type":"literal","value":"crisis_alert"},{"type":"literal","value":"crop_16_9"},{"type":"literal","value":"crop_3_2"},{"type":"literal","value":"crop_5_4"},{"type":"literal","value":"crop_7_5"},{"type":"literal","value":"crop_9_16"},{"type":"literal","value":"crop_din"},{"type":"literal","value":"crop_free"},{"type":"literal","value":"crop_landscape"},{"type":"literal","value":"crop_original"},{"type":"literal","value":"crop_portrait"},{"type":"literal","value":"crop_rotate"},{"type":"literal","value":"crop_square"},{"type":"literal","value":"crossword"},{"type":"literal","value":"crowdsource"},{"type":"literal","value":"cruelty_free"},{"type":"literal","value":"css"},{"type":"literal","value":"csv"},{"type":"literal","value":"currency_bitcoin"},{"type":"literal","value":"currency_exchange"},{"type":"literal","value":"currency_franc"},{"type":"literal","value":"currency_lira"},{"type":"literal","value":"currency_pound"},{"type":"literal","value":"currency_ruble"},{"type":"literal","value":"currency_rupee"},{"type":"literal","value":"currency_rupee_circle"},{"type":"literal","value":"currency_yen"},{"type":"literal","value":"currency_yuan"},{"type":"literal","value":"curtains"},{"type":"literal","value":"curtains_closed"},{"type":"literal","value":"custom_typography"},{"type":"literal","value":"cycle"},{"type":"literal","value":"cyclone"},{"type":"literal","value":"dark_mode"},{"type":"literal","value":"dashboard"},{"type":"literal","value":"dashboard_2"},{"type":"literal","value":"dashboard_customize"},{"type":"literal","value":"data_alert"},{"type":"literal","value":"data_array"},{"type":"literal","value":"data_check"},{"type":"literal","value":"data_exploration"},{"type":"literal","value":"data_info_alert"},{"type":"literal","value":"data_loss_prevention"},{"type":"literal","value":"data_object"},{"type":"literal","value":"data_saver_off"},{"type":"literal","value":"data_saver_on"},{"type":"literal","value":"data_table"},{"type":"literal","value":"data_thresholding"},{"type":"literal","value":"data_usage"},{"type":"literal","value":"database"},{"type":"literal","value":"database_off"},{"type":"literal","value":"database_search"},{"type":"literal","value":"database_upload"},{"type":"literal","value":"dataset"},{"type":"literal","value":"dataset_linked"},{"type":"literal","value":"date_range"},{"type":"literal","value":"deblur"},{"type":"literal","value":"deceased"},{"type":"literal","value":"decimal_decrease"},{"type":"literal","value":"decimal_increase"},{"type":"literal","value":"deck"},{"type":"literal","value":"dehaze"},{"type":"literal","value":"delete_forever"},{"type":"literal","value":"delete_history"},{"type":"literal","value":"delete_outline"},{"type":"literal","value":"delete_sweep"},{"type":"literal","value":"delivery_dining"},{"type":"literal","value":"delivery_truck_bolt"},{"type":"literal","value":"delivery_truck_speed"},{"type":"literal","value":"demography"},{"type":"literal","value":"density_large"},{"type":"literal","value":"density_medium"},{"type":"literal","value":"density_small"},{"type":"literal","value":"dentistry"},{"type":"literal","value":"departure_board"},{"type":"literal","value":"deployed_code"},{"type":"literal","value":"deployed_code_account"},{"type":"literal","value":"deployed_code_alert"},{"type":"literal","value":"deployed_code_history"},{"type":"literal","value":"deployed_code_update"},{"type":"literal","value":"dermatology"},{"type":"literal","value":"deselect"},{"type":"literal","value":"design_services"},{"type":"literal","value":"desk"},{"type":"literal","value":"deskphone"},{"type":"literal","value":"desktop_access_disabled"},{"type":"literal","value":"desktop_cloud"},{"type":"literal","value":"desktop_cloud_stack"},{"type":"literal","value":"desktop_landscape"},{"type":"literal","value":"desktop_landscape_add"},{"type":"literal","value":"desktop_mac"},{"type":"literal","value":"desktop_portrait"},{"type":"literal","value":"desktop_windows"},{"type":"literal","value":"destruction"},{"type":"literal","value":"detection_and_zone"},{"type":"literal","value":"detector"},{"type":"literal","value":"detector_alarm"},{"type":"literal","value":"detector_battery"},{"type":"literal","value":"detector_co"},{"type":"literal","value":"detector_offline"},{"type":"literal","value":"detector_smoke"},{"type":"literal","value":"detector_status"},{"type":"literal","value":"developer_board"},{"type":"literal","value":"developer_board_off"},{"type":"literal","value":"developer_guide"},{"type":"literal","value":"developer_mode"},{"type":"literal","value":"developer_mode_tv"},{"type":"literal","value":"device_band"},{"type":"literal","value":"device_hub"},{"type":"literal","value":"device_thermostat"},{"type":"literal","value":"device_unknown"},{"type":"literal","value":"devices"},{"type":"literal","value":"devices_fold"},{"type":"literal","value":"devices_fold_2"},{"type":"literal","value":"devices_off"},{"type":"literal","value":"devices_other"},{"type":"literal","value":"devices_wearables"},{"type":"literal","value":"dew_point"},{"type":"literal","value":"diagnosis"},{"type":"literal","value":"diagonal_line"},{"type":"literal","value":"dialer_sip"},{"type":"literal","value":"dialogs"},{"type":"literal","value":"dialpad"},{"type":"literal","value":"diamond_shine"},{"type":"literal","value":"dictionary"},{"type":"literal","value":"digital_out_of_home"},{"type":"literal","value":"digital_wellbeing"},{"type":"literal","value":"dine_heart"},{"type":"literal","value":"dine_in"},{"type":"literal","value":"dine_lamp"},{"type":"literal","value":"dining"},{"type":"literal","value":"dinner_dining"},{"type":"literal","value":"directions"},{"type":"literal","value":"directions_alt"},{"type":"literal","value":"directions_alt_off"},{"type":"literal","value":"directions_bike"},{"type":"literal","value":"directions_boat"},{"type":"literal","value":"directions_boat_filled"},{"type":"literal","value":"directions_bus"},{"type":"literal","value":"directions_bus_filled"},{"type":"literal","value":"directions_car"},{"type":"literal","value":"directions_car_filled"},{"type":"literal","value":"directions_off"},{"type":"literal","value":"directions_railway"},{"type":"literal","value":"directions_railway_2"},{"type":"literal","value":"directions_railway_filled"},{"type":"literal","value":"directions_run"},{"type":"literal","value":"directions_subway"},{"type":"literal","value":"directions_subway_filled"},{"type":"literal","value":"directions_transit"},{"type":"literal","value":"directions_transit_filled"},{"type":"literal","value":"directions_walk"},{"type":"literal","value":"directory_sync"},{"type":"literal","value":"dirty_lens"},{"type":"literal","value":"disabled_by_default"},{"type":"literal","value":"disabled_visible"},{"type":"literal","value":"disc_full"},{"type":"literal","value":"discount"},{"type":"literal","value":"discover_tune"},{"type":"literal","value":"dishwasher_gen"},{"type":"literal","value":"display_external_input"},{"type":"literal","value":"display_settings"},{"type":"literal","value":"distance"},{"type":"literal","value":"diversity_1"},{"type":"literal","value":"diversity_2"},{"type":"literal","value":"diversity_3"},{"type":"literal","value":"diversity_4"},{"type":"literal","value":"dns"},{"type":"literal","value":"do_disturb"},{"type":"literal","value":"do_disturb_alt"},{"type":"literal","value":"do_disturb_off"},{"type":"literal","value":"do_disturb_on"},{"type":"literal","value":"do_not_disturb"},{"type":"literal","value":"do_not_disturb_alt"},{"type":"literal","value":"do_not_disturb_off"},{"type":"literal","value":"do_not_disturb_on"},{"type":"literal","value":"do_not_disturb_on_total_silence"},{"type":"literal","value":"do_not_step"},{"type":"literal","value":"do_not_touch"},{"type":"literal","value":"dock"},{"type":"literal","value":"dock_to_bottom"},{"type":"literal","value":"dock_to_left"},{"type":"literal","value":"dock_to_right"},{"type":"literal","value":"docs"},{"type":"literal","value":"docs_add_on"},{"type":"literal","value":"docs_apps_script"},{"type":"literal","value":"document_scanner"},{"type":"literal","value":"document_search"},{"type":"literal","value":"domain"},{"type":"literal","value":"domain_add"},{"type":"literal","value":"domain_disabled"},{"type":"literal","value":"domain_verification"},{"type":"literal","value":"domain_verification_off"},{"type":"literal","value":"domino_mask"},{"type":"literal","value":"done_all"},{"type":"literal","value":"done_outline"},{"type":"literal","value":"donut_large"},{"type":"literal","value":"donut_small"},{"type":"literal","value":"door_back"},{"type":"literal","value":"door_front"},{"type":"literal","value":"door_open"},{"type":"literal","value":"door_sensor"},{"type":"literal","value":"door_sliding"},{"type":"literal","value":"doorbell"},{"type":"literal","value":"doorbell_3p"},{"type":"literal","value":"doorbell_chime"},{"type":"literal","value":"double_arrow"},{"type":"literal","value":"downhill_skiing"},{"type":"literal","value":"download"},{"type":"literal","value":"download_2"},{"type":"literal","value":"download_done"},{"type":"literal","value":"download_for_offline"},{"type":"literal","value":"downloading"},{"type":"literal","value":"draft"},{"type":"literal","value":"draft_orders"},{"type":"literal","value":"drafts"},{"type":"literal","value":"drag_click"},{"type":"literal","value":"drag_handle"},{"type":"literal","value":"drag_indicator"},{"type":"literal","value":"drag_pan"},{"type":"literal","value":"draw"},{"type":"literal","value":"draw_abstract"},{"type":"literal","value":"draw_collage"},{"type":"literal","value":"dresser"},{"type":"literal","value":"drive_eta"},{"type":"literal","value":"drive_export"},{"type":"literal","value":"drive_file_move"},{"type":"literal","value":"drive_file_move_outline"},{"type":"literal","value":"drive_file_move_rtl"},{"type":"literal","value":"drive_file_rename_outline"},{"type":"literal","value":"drive_folder_upload"},{"type":"literal","value":"drone_2"},{"type":"literal","value":"dropdown"},{"type":"literal","value":"dropper_eye"},{"type":"literal","value":"dry"},{"type":"literal","value":"dry_cleaning"},{"type":"literal","value":"dual_screen"},{"type":"literal","value":"duo"},{"type":"literal","value":"dvr"},{"type":"literal","value":"dynamic_feed"},{"type":"literal","value":"dynamic_form"},{"type":"literal","value":"e911_avatar"},{"type":"literal","value":"e911_emergency"},{"type":"literal","value":"e_mobiledata"},{"type":"literal","value":"e_mobiledata_badge"},{"type":"literal","value":"ear_sound"},{"type":"literal","value":"earbud_case"},{"type":"literal","value":"earbud_left"},{"type":"literal","value":"earbud_right"},{"type":"literal","value":"earbuds_2"},{"type":"literal","value":"earbuds_battery"},{"type":"literal","value":"early_on"},{"type":"literal","value":"earthquake"},{"type":"literal","value":"east"},{"type":"literal","value":"ecg"},{"type":"literal","value":"ecg_heart"},{"type":"literal","value":"eco"},{"type":"literal","value":"eda"},{"type":"literal","value":"edgesensor_high"},{"type":"literal","value":"edgesensor_low"},{"type":"literal","value":"edit"},{"type":"literal","value":"edit_arrow_down"},{"type":"literal","value":"edit_arrow_up"},{"type":"literal","value":"edit_attributes"},{"type":"literal","value":"edit_audio"},{"type":"literal","value":"edit_calendar"},{"type":"literal","value":"edit_document"},{"type":"literal","value":"edit_location"},{"type":"literal","value":"edit_location_alt"},{"type":"literal","value":"edit_note"},{"type":"literal","value":"edit_notifications"},{"type":"literal","value":"edit_off"},{"type":"literal","value":"edit_road"},{"type":"literal","value":"edit_square"},{"type":"literal","value":"editor_choice"},{"type":"literal","value":"egg"},{"type":"literal","value":"egg_alt"},{"type":"literal","value":"elderly"},{"type":"literal","value":"elderly_woman"},{"type":"literal","value":"electric_bike"},{"type":"literal","value":"electric_bolt"},{"type":"literal","value":"electric_car"},{"type":"literal","value":"electric_meter"},{"type":"literal","value":"electric_moped"},{"type":"literal","value":"electric_rickshaw"},{"type":"literal","value":"electric_scooter"},{"type":"literal","value":"electrical_services"},{"type":"literal","value":"elevator"},{"type":"literal","value":"emergency"},{"type":"literal","value":"emergency_heat"},{"type":"literal","value":"emergency_heat_2"},{"type":"literal","value":"emergency_home"},{"type":"literal","value":"emergency_recording"},{"type":"literal","value":"emergency_share"},{"type":"literal","value":"emergency_share_off"},{"type":"literal","value":"emoji_emotions"},{"type":"literal","value":"emoji_events"},{"type":"literal","value":"emoji_food_beverage"},{"type":"literal","value":"emoji_language"},{"type":"literal","value":"emoji_nature"},{"type":"literal","value":"emoji_objects"},{"type":"literal","value":"emoji_people"},{"type":"literal","value":"emoji_symbols"},{"type":"literal","value":"emoji_transportation"},{"type":"literal","value":"emoticon"},{"type":"literal","value":"empty_dashboard"},{"type":"literal","value":"encrypted"},{"type":"literal","value":"encrypted_add"},{"type":"literal","value":"encrypted_add_circle"},{"type":"literal","value":"encrypted_minus_circle"},{"type":"literal","value":"encrypted_off"},{"type":"literal","value":"endocrinology"},{"type":"literal","value":"energy"},{"type":"literal","value":"energy_program_saving"},{"type":"literal","value":"energy_program_time_used"},{"type":"literal","value":"energy_savings_leaf"},{"type":"literal","value":"engineering"},{"type":"literal","value":"enhanced_encryption"},{"type":"literal","value":"ent"},{"type":"literal","value":"enterprise"},{"type":"literal","value":"enterprise_off"},{"type":"literal","value":"equalizer"},{"type":"literal","value":"eraser_size_1"},{"type":"literal","value":"eraser_size_2"},{"type":"literal","value":"eraser_size_3"},{"type":"literal","value":"eraser_size_4"},{"type":"literal","value":"eraser_size_5"},{"type":"literal","value":"error_med"},{"type":"literal","value":"error_outline"},{"type":"literal","value":"escalator"},{"type":"literal","value":"escalator_warning"},{"type":"literal","value":"euro"},{"type":"literal","value":"euro_symbol"},{"type":"literal","value":"ev_mobiledata_badge"},{"type":"literal","value":"ev_shadow"},{"type":"literal","value":"ev_shadow_add"},{"type":"literal","value":"ev_shadow_minus"},{"type":"literal","value":"ev_station"},{"type":"literal","value":"event_available"},{"type":"literal","value":"event_busy"},{"type":"literal","value":"event_list"},{"type":"literal","value":"event_note"},{"type":"literal","value":"event_repeat"},{"type":"literal","value":"event_seat"},{"type":"literal","value":"event_upcoming"},{"type":"literal","value":"exclamation"},{"type":"literal","value":"exercise"},{"type":"literal","value":"exit_to_app"},{"type":"literal","value":"expand_all"},{"type":"literal","value":"expand_circle_down"},{"type":"literal","value":"expand_circle_right"},{"type":"literal","value":"expand_circle_up"},{"type":"literal","value":"expand_content"},{"type":"literal","value":"expand_less"},{"type":"literal","value":"expand_more"},{"type":"literal","value":"expansion_panels"},{"type":"literal","value":"experiment"},{"type":"literal","value":"explicit"},{"type":"literal","value":"explore"},{"type":"literal","value":"explore_nearby"},{"type":"literal","value":"explore_off"},{"type":"literal","value":"explosion"},{"type":"literal","value":"export_notes"},{"type":"literal","value":"exposure"},{"type":"literal","value":"exposure_neg_1"},{"type":"literal","value":"exposure_neg_2"},{"type":"literal","value":"exposure_plus_1"},{"type":"literal","value":"exposure_plus_2"},{"type":"literal","value":"exposure_zero"},{"type":"literal","value":"extension"},{"type":"literal","value":"extension_off"},{"type":"literal","value":"eye_tracking"},{"type":"literal","value":"eyeglasses_2"},{"type":"literal","value":"eyeglasses_2_sound"},{"type":"literal","value":"face"},{"type":"literal","value":"face_2"},{"type":"literal","value":"face_3"},{"type":"literal","value":"face_4"},{"type":"literal","value":"face_5"},{"type":"literal","value":"face_6"},{"type":"literal","value":"face_down"},{"type":"literal","value":"face_left"},{"type":"literal","value":"face_nod"},{"type":"literal","value":"face_retouching_natural"},{"type":"literal","value":"face_retouching_off"},{"type":"literal","value":"face_right"},{"type":"literal","value":"face_shake"},{"type":"literal","value":"face_unlock"},{"type":"literal","value":"face_up"},{"type":"literal","value":"fact_check"},{"type":"literal","value":"factory"},{"type":"literal","value":"falling"},{"type":"literal","value":"familiar_face_and_zone"},{"type":"literal","value":"family_group"},{"type":"literal","value":"family_history"},{"type":"literal","value":"family_home"},{"type":"literal","value":"family_link"},{"type":"literal","value":"family_restroom"},{"type":"literal","value":"family_star"},{"type":"literal","value":"fan_focus"},{"type":"literal","value":"fan_indirect"},{"type":"literal","value":"farsight_digital"},{"type":"literal","value":"fast_forward"},{"type":"literal","value":"fast_rewind"},{"type":"literal","value":"fastfood"},{"type":"literal","value":"faucet"},{"type":"literal","value":"favorite"},{"type":"literal","value":"favorite_border"},{"type":"literal","value":"fax"},{"type":"literal","value":"feature_search"},{"type":"literal","value":"featured_play_list"},{"type":"literal","value":"featured_seasonal_and_gifts"},{"type":"literal","value":"featured_video"},{"type":"literal","value":"feedback"},{"type":"literal","value":"female"},{"type":"literal","value":"femur"},{"type":"literal","value":"femur_alt"},{"type":"literal","value":"fence"},{"type":"literal","value":"fertile"},{"type":"literal","value":"festival"},{"type":"literal","value":"fiber_dvr"},{"type":"literal","value":"fiber_manual_record"},{"type":"literal","value":"fiber_new"},{"type":"literal","value":"fiber_pin"},{"type":"literal","value":"fiber_smart_record"},{"type":"literal","value":"file_copy"},{"type":"literal","value":"file_copy_off"},{"type":"literal","value":"file_download"},{"type":"literal","value":"file_download_done"},{"type":"literal","value":"file_download_off"},{"type":"literal","value":"file_export"},{"type":"literal","value":"file_json"},{"type":"literal","value":"file_map"},{"type":"literal","value":"file_map_stack"},{"type":"literal","value":"file_open"},{"type":"literal","value":"file_png"},{"type":"literal","value":"file_present"},{"type":"literal","value":"file_save"},{"type":"literal","value":"file_save_off"},{"type":"literal","value":"file_upload"},{"type":"literal","value":"file_upload_off"},{"type":"literal","value":"files"},{"type":"literal","value":"filter_1"},{"type":"literal","value":"filter_2"},{"type":"literal","value":"filter_3"},{"type":"literal","value":"filter_4"},{"type":"literal","value":"filter_5"},{"type":"literal","value":"filter_6"},{"type":"literal","value":"filter_7"},{"type":"literal","value":"filter_8"},{"type":"literal","value":"filter_9"},{"type":"literal","value":"filter_9_plus"},{"type":"literal","value":"filter_alt"},{"type":"literal","value":"filter_alt_off"},{"type":"literal","value":"filter_arrow_right"},{"type":"literal","value":"filter_b_and_w"},{"type":"literal","value":"filter_center_focus"},{"type":"literal","value":"filter_drama"},{"type":"literal","value":"filter_frames"},{"type":"literal","value":"filter_hdr"},{"type":"literal","value":"filter_list"},{"type":"literal","value":"filter_list_alt"},{"type":"literal","value":"filter_list_off"},{"type":"literal","value":"filter_none"},{"type":"literal","value":"filter_retrolux"},{"type":"literal","value":"filter_tilt_shift"},{"type":"literal","value":"filter_vintage"},{"type":"literal","value":"finance"},{"type":"literal","value":"finance_chip"},{"type":"literal","value":"finance_mode"},{"type":"literal","value":"find_in_page"},{"type":"literal","value":"find_replace"},{"type":"literal","value":"fingerprint_off"},{"type":"literal","value":"fire_extinguisher"},{"type":"literal","value":"fire_hydrant"},{"type":"literal","value":"fire_hydrant_alt"},{"type":"literal","value":"fire_truck"},{"type":"literal","value":"first_page"},{"type":"literal","value":"fit_page"},{"type":"literal","value":"fit_page_height"},{"type":"literal","value":"fit_page_width"},{"type":"literal","value":"fit_screen"},{"type":"literal","value":"fit_width"},{"type":"literal","value":"fitbit"},{"type":"literal","value":"fitness_center"},{"type":"literal","value":"fitness_tracker"},{"type":"literal","value":"fitness_trackers"},{"type":"literal","value":"flag_2"},{"type":"literal","value":"flag_check"},{"type":"literal","value":"flag_circle"},{"type":"literal","value":"flaky"},{"type":"literal","value":"flare"},{"type":"literal","value":"flash_auto"},{"type":"literal","value":"flash_off"},{"type":"literal","value":"flash_on"},{"type":"literal","value":"flashlight_off"},{"type":"literal","value":"flashlight_on"},{"type":"literal","value":"flatware"},{"type":"literal","value":"flex_direction"},{"type":"literal","value":"flex_no_wrap"},{"type":"literal","value":"flex_wrap"},{"type":"literal","value":"flight"},{"type":"literal","value":"flight_class"},{"type":"literal","value":"flight_land"},{"type":"literal","value":"flight_takeoff"},{"type":"literal","value":"flights_and_hotels"},{"type":"literal","value":"flip_camera_android"},{"type":"literal","value":"flip_camera_ios"},{"type":"literal","value":"flip_to_back"},{"type":"literal","value":"flip_to_front"},{"type":"literal","value":"float_landscape_2"},{"type":"literal","value":"float_portrait_2"},{"type":"literal","value":"flood"},{"type":"literal","value":"floor"},{"type":"literal","value":"floor_lamp"},{"type":"literal","value":"flowsheet"},{"type":"literal","value":"fluid"},{"type":"literal","value":"fluid_balance"},{"type":"literal","value":"fluid_med"},{"type":"literal","value":"fluorescent"},{"type":"literal","value":"flutter"},{"type":"literal","value":"flutter_dash"},{"type":"literal","value":"flyover"},{"type":"literal","value":"fmd_bad"},{"type":"literal","value":"fmd_good"},{"type":"literal","value":"foggy"},{"type":"literal","value":"folded_hands"},{"type":"literal","value":"folder_check"},{"type":"literal","value":"folder_check_2"},{"type":"literal","value":"folder_code"},{"type":"literal","value":"folder_copy"},{"type":"literal","value":"folder_data"},{"type":"literal","value":"folder_delete"},{"type":"literal","value":"folder_eye"},{"type":"literal","value":"folder_info"},{"type":"literal","value":"folder_limited"},{"type":"literal","value":"folder_managed"},{"type":"literal","value":"folder_match"},{"type":"literal","value":"folder_off"},{"type":"literal","value":"folder_open"},{"type":"literal","value":"folder_shared"},{"type":"literal","value":"folder_special"},{"type":"literal","value":"folder_supervised"},{"type":"literal","value":"folder_zip"},{"type":"literal","value":"follow_the_signs"},{"type":"literal","value":"font_download"},{"type":"literal","value":"font_download_off"},{"type":"literal","value":"food_bank"},{"type":"literal","value":"foot_bones"},{"type":"literal","value":"footprint"},{"type":"literal","value":"for_you"},{"type":"literal","value":"forest"},{"type":"literal","value":"fork_left"},{"type":"literal","value":"fork_right"},{"type":"literal","value":"fork_spoon"},{"type":"literal","value":"forklift"},{"type":"literal","value":"format_align_center"},{"type":"literal","value":"format_align_justify"},{"type":"literal","value":"format_align_left"},{"type":"literal","value":"format_align_right"},{"type":"literal","value":"format_bold"},{"type":"literal","value":"format_clear"},{"type":"literal","value":"format_color_fill"},{"type":"literal","value":"format_color_reset"},{"type":"literal","value":"format_color_text"},{"type":"literal","value":"format_h1"},{"type":"literal","value":"format_h2"},{"type":"literal","value":"format_h3"},{"type":"literal","value":"format_h4"},{"type":"literal","value":"format_h5"},{"type":"literal","value":"format_h6"},{"type":"literal","value":"format_image_left"},{"type":"literal","value":"format_image_right"},{"type":"literal","value":"format_indent_decrease"},{"type":"literal","value":"format_indent_increase"},{"type":"literal","value":"format_ink_highlighter"},{"type":"literal","value":"format_italic"},{"type":"literal","value":"format_letter_spacing"},{"type":"literal","value":"format_letter_spacing_2"},{"type":"literal","value":"format_letter_spacing_standard"},{"type":"literal","value":"format_letter_spacing_wide"},{"type":"literal","value":"format_letter_spacing_wider"},{"type":"literal","value":"format_line_spacing"},{"type":"literal","value":"format_list_bulleted"},{"type":"literal","value":"format_list_bulleted_add"},{"type":"literal","value":"format_list_numbered"},{"type":"literal","value":"format_list_numbered_rtl"},{"type":"literal","value":"format_overline"},{"type":"literal","value":"format_paint"},{"type":"literal","value":"format_paragraph"},{"type":"literal","value":"format_quote"},{"type":"literal","value":"format_quote_off"},{"type":"literal","value":"format_shapes"},{"type":"literal","value":"format_size"},{"type":"literal","value":"format_strikethrough"},{"type":"literal","value":"format_text_clip"},{"type":"literal","value":"format_text_overflow"},{"type":"literal","value":"format_text_wrap"},{"type":"literal","value":"format_textdirection_l_to_r"},{"type":"literal","value":"format_textdirection_r_to_l"},{"type":"literal","value":"format_textdirection_vertical"},{"type":"literal","value":"format_underlined"},{"type":"literal","value":"format_underlined_squiggle"},{"type":"literal","value":"forms_add_on"},{"type":"literal","value":"forms_apps_script"},{"type":"literal","value":"fort"},{"type":"literal","value":"forum"},{"type":"literal","value":"forward_10"},{"type":"literal","value":"forward_30"},{"type":"literal","value":"forward_5"},{"type":"literal","value":"forward_circle"},{"type":"literal","value":"forward_media"},{"type":"literal","value":"forward_to_inbox"},{"type":"literal","value":"foundation"},{"type":"literal","value":"fragrance"},{"type":"literal","value":"frame_inspect"},{"type":"literal","value":"frame_person"},{"type":"literal","value":"frame_person_mic"},{"type":"literal","value":"frame_person_off"},{"type":"literal","value":"frame_reload"},{"type":"literal","value":"frame_source"},{"type":"literal","value":"free_breakfast"},{"type":"literal","value":"free_cancellation"},{"type":"literal","value":"front_hand"},{"type":"literal","value":"front_loader"},{"type":"literal","value":"full_coverage"},{"type":"literal","value":"full_hd"},{"type":"literal","value":"full_stacked_bar_chart"},{"type":"literal","value":"fullscreen_exit"},{"type":"literal","value":"fullscreen_portrait"},{"type":"literal","value":"functions"},{"type":"literal","value":"funicular"},{"type":"literal","value":"g_mobiledata"},{"type":"literal","value":"g_mobiledata_badge"},{"type":"literal","value":"g_translate"},{"type":"literal","value":"gallery_thumbnail"},{"type":"literal","value":"gamepad"},{"type":"literal","value":"games"},{"type":"literal","value":"garage"},{"type":"literal","value":"garage_check"},{"type":"literal","value":"garage_door"},{"type":"literal","value":"garage_home"},{"type":"literal","value":"garage_money"},{"type":"literal","value":"garden_cart"},{"type":"literal","value":"gas_meter"},{"type":"literal","value":"gastroenterology"},{"type":"literal","value":"gate"},{"type":"literal","value":"gavel"},{"type":"literal","value":"general_device"},{"type":"literal","value":"generating_tokens"},{"type":"literal","value":"genetics"},{"type":"literal","value":"genres"},{"type":"literal","value":"gesture"},{"type":"literal","value":"gesture_select"},{"type":"literal","value":"get_app"},{"type":"literal","value":"gif"},{"type":"literal","value":"gif_2"},{"type":"literal","value":"gif_box"},{"type":"literal","value":"girl"},{"type":"literal","value":"gite"},{"type":"literal","value":"glass_cup"},{"type":"literal","value":"globe_asia"},{"type":"literal","value":"globe_book"},{"type":"literal","value":"globe_location_pin"},{"type":"literal","value":"globe_uk"},{"type":"literal","value":"glucose"},{"type":"literal","value":"glyphs"},{"type":"literal","value":"go_to_line"},{"type":"literal","value":"golf_course"},{"type":"literal","value":"gondola_lift"},{"type":"literal","value":"google_home_devices"},{"type":"literal","value":"google_tv_remote"},{"type":"literal","value":"google_wifi"},{"type":"literal","value":"gpp_bad"},{"type":"literal","value":"gpp_good"},{"type":"literal","value":"gpp_maybe"},{"type":"literal","value":"gps_fixed"},{"type":"literal","value":"gps_not_fixed"},{"type":"literal","value":"gps_off"},{"type":"literal","value":"grade"},{"type":"literal","value":"gradient"},{"type":"literal","value":"grading"},{"type":"literal","value":"grain"},{"type":"literal","value":"graph_1"},{"type":"literal","value":"graph_2"},{"type":"literal","value":"graph_3"},{"type":"literal","value":"graph_4"},{"type":"literal","value":"graph_5"},{"type":"literal","value":"graph_6"},{"type":"literal","value":"graph_7"},{"type":"literal","value":"graphic_eq"},{"type":"literal","value":"grass"},{"type":"literal","value":"grid_3x3"},{"type":"literal","value":"grid_3x3_off"},{"type":"literal","value":"grid_4x4"},{"type":"literal","value":"grid_goldenratio"},{"type":"literal","value":"grid_guides"},{"type":"literal","value":"grid_off"},{"type":"literal","value":"grid_on"},{"type":"literal","value":"grid_view"},{"type":"literal","value":"grocery"},{"type":"literal","value":"group_add"},{"type":"literal","value":"group_off"},{"type":"literal","value":"group_remove"},{"type":"literal","value":"group_search"},{"type":"literal","value":"group_work"},{"type":"literal","value":"grouped_bar_chart"},{"type":"literal","value":"groups_2"},{"type":"literal","value":"groups_3"},{"type":"literal","value":"guardian"},{"type":"literal","value":"gynecology"},{"type":"literal","value":"h_mobiledata"},{"type":"literal","value":"h_mobiledata_badge"},{"type":"literal","value":"h_plus_mobiledata"},{"type":"literal","value":"h_plus_mobiledata_badge"},{"type":"literal","value":"hail"},{"type":"literal","value":"hallway"},{"type":"literal","value":"hanami_dango"},{"type":"literal","value":"hand_bones"},{"type":"literal","value":"hand_gesture"},{"type":"literal","value":"hand_gesture_off"},{"type":"literal","value":"hand_meal"},{"type":"literal","value":"hand_package"},{"type":"literal","value":"handheld_controller"},{"type":"literal","value":"handshake"},{"type":"literal","value":"handyman"},{"type":"literal","value":"hangout_video"},{"type":"literal","value":"hangout_video_off"},{"type":"literal","value":"hard_disk"},{"type":"literal","value":"hard_drive"},{"type":"literal","value":"hard_drive_2"},{"type":"literal","value":"hardware"},{"type":"literal","value":"hd"},{"type":"literal","value":"hdr_auto"},{"type":"literal","value":"hdr_auto_select"},{"type":"literal","value":"hdr_enhanced_select"},{"type":"literal","value":"hdr_off"},{"type":"literal","value":"hdr_off_select"},{"type":"literal","value":"hdr_on"},{"type":"literal","value":"hdr_on_select"},{"type":"literal","value":"hdr_plus"},{"type":"literal","value":"hdr_plus_off"},{"type":"literal","value":"hdr_strong"},{"type":"literal","value":"hdr_weak"},{"type":"literal","value":"head_mounted_device"},{"type":"literal","value":"headphones_battery"},{"type":"literal","value":"headset_mic"},{"type":"literal","value":"headset_off"},{"type":"literal","value":"healing"},{"type":"literal","value":"health_and_beauty"},{"type":"literal","value":"health_and_safety"},{"type":"literal","value":"health_cross"},{"type":"literal","value":"health_metrics"},{"type":"literal","value":"heap_snapshot_large"},{"type":"literal","value":"heap_snapshot_multiple"},{"type":"literal","value":"heap_snapshot_thumbnail"},{"type":"literal","value":"hearing"},{"type":"literal","value":"hearing_aid"},{"type":"literal","value":"hearing_aid_disabled"},{"type":"literal","value":"hearing_aid_disabled_left"},{"type":"literal","value":"hearing_aid_left"},{"type":"literal","value":"hearing_disabled"},{"type":"literal","value":"heart_broken"},{"type":"literal","value":"heart_check"},{"type":"literal","value":"heart_minus"},{"type":"literal","value":"heart_plus"},{"type":"literal","value":"heart_smile"},{"type":"literal","value":"heat"},{"type":"literal","value":"heat_pump"},{"type":"literal","value":"heat_pump_balance"},{"type":"literal","value":"helicopter"},{"type":"literal","value":"help"},{"type":"literal","value":"help_center"},{"type":"literal","value":"help_clinic"},{"type":"literal","value":"help_outline"},{"type":"literal","value":"hematology"},{"type":"literal","value":"hevc"},{"type":"literal","value":"hide"},{"type":"literal","value":"hide_image"},{"type":"literal","value":"hide_source"},{"type":"literal","value":"high_chair"},{"type":"literal","value":"high_density"},{"type":"literal","value":"high_quality"},{"type":"literal","value":"high_res"},{"type":"literal","value":"highlight"},{"type":"literal","value":"highlight_alt"},{"type":"literal","value":"highlight_keyboard_focus"},{"type":"literal","value":"highlight_mouse_cursor"},{"type":"literal","value":"highlight_off"},{"type":"literal","value":"highlight_text_cursor"},{"type":"literal","value":"highlighter_size_1"},{"type":"literal","value":"highlighter_size_2"},{"type":"literal","value":"highlighter_size_3"},{"type":"literal","value":"highlighter_size_4"},{"type":"literal","value":"highlighter_size_5"},{"type":"literal","value":"hiking"},{"type":"literal","value":"history_2"},{"type":"literal","value":"history_edu"},{"type":"literal","value":"history_off"},{"type":"literal","value":"history_toggle_off"},{"type":"literal","value":"hive"},{"type":"literal","value":"hls"},{"type":"literal","value":"hls_off"},{"type":"literal","value":"holiday_village"},{"type":"literal","value":"home"},{"type":"literal","value":"home_and_garden"},{"type":"literal","value":"home_app_logo"},{"type":"literal","value":"home_filled"},{"type":"literal","value":"home_health"},{"type":"literal","value":"home_improvement_and_tools"},{"type":"literal","value":"home_iot_device"},{"type":"literal","value":"home_max"},{"type":"literal","value":"home_max_dots"},{"type":"literal","value":"home_mini"},{"type":"literal","value":"home_pin"},{"type":"literal","value":"home_repair_service"},{"type":"literal","value":"home_speaker"},{"type":"literal","value":"home_storage"},{"type":"literal","value":"home_work"},{"type":"literal","value":"horizontal_distribute"},{"type":"literal","value":"horizontal_rule"},{"type":"literal","value":"horizontal_split"},{"type":"literal","value":"hot_tub"},{"type":"literal","value":"hotel"},{"type":"literal","value":"hotel_class"},{"type":"literal","value":"hourglass_arrow_down"},{"type":"literal","value":"hourglass_arrow_up"},{"type":"literal","value":"hourglass_bottom"},{"type":"literal","value":"hourglass_disabled"},{"type":"literal","value":"hourglass_empty"},{"type":"literal","value":"hourglass_full"},{"type":"literal","value":"hourglass_pause"},{"type":"literal","value":"hourglass_top"},{"type":"literal","value":"house_siding"},{"type":"literal","value":"house_with_shield"},{"type":"literal","value":"houseboat"},{"type":"literal","value":"household_supplies"},{"type":"literal","value":"hov"},{"type":"literal","value":"how_to_reg"},{"type":"literal","value":"how_to_vote"},{"type":"literal","value":"hr_resting"},{"type":"literal","value":"https"},{"type":"literal","value":"hub"},{"type":"literal","value":"humerus"},{"type":"literal","value":"humerus_alt"},{"type":"literal","value":"humidity_high"},{"type":"literal","value":"humidity_indoor"},{"type":"literal","value":"humidity_low"},{"type":"literal","value":"humidity_mid"},{"type":"literal","value":"humidity_percentage"},{"type":"literal","value":"hvac"},{"type":"literal","value":"hvac_max_defrost"},{"type":"literal","value":"ice_skating"},{"type":"literal","value":"icecream"},{"type":"literal","value":"id_card"},{"type":"literal","value":"identity_aware_proxy"},{"type":"literal","value":"identity_platform"},{"type":"literal","value":"ifl"},{"type":"literal","value":"iframe_off"},{"type":"literal","value":"image_arrow_up"},{"type":"literal","value":"image_aspect_ratio"},{"type":"literal","value":"image_inset"},{"type":"literal","value":"image_not_supported"},{"type":"literal","value":"image_search"},{"type":"literal","value":"imagesearch_roller"},{"type":"literal","value":"imagesmode"},{"type":"literal","value":"immunology"},{"type":"literal","value":"import_contacts"},{"type":"literal","value":"import_export"},{"type":"literal","value":"important_devices"},{"type":"literal","value":"in_home_mode"},{"type":"literal","value":"inactive_order"},{"type":"literal","value":"inbox"},{"type":"literal","value":"inbox_customize"},{"type":"literal","value":"inbox_text"},{"type":"literal","value":"inbox_text_asterisk"},{"type":"literal","value":"inbox_text_person"},{"type":"literal","value":"inbox_text_share"},{"type":"literal","value":"incomplete_circle"},{"type":"literal","value":"indeterminate_check_box"},{"type":"literal","value":"indeterminate_question_box"},{"type":"literal","value":"info_i"},{"type":"literal","value":"info_outline"},{"type":"literal","value":"infrared"},{"type":"literal","value":"ink_eraser"},{"type":"literal","value":"ink_eraser_off"},{"type":"literal","value":"ink_highlighter"},{"type":"literal","value":"ink_highlighter_move"},{"type":"literal","value":"ink_marker"},{"type":"literal","value":"ink_pen"},{"type":"literal","value":"ink_selection"},{"type":"literal","value":"inpatient"},{"type":"literal","value":"input_circle"},{"type":"literal","value":"insert_chart"},{"type":"literal","value":"insert_chart_outlined"},{"type":"literal","value":"insert_comment"},{"type":"literal","value":"insert_drive_file"},{"type":"literal","value":"insert_emoticon"},{"type":"literal","value":"insert_invitation"},{"type":"literal","value":"insert_link"},{"type":"literal","value":"insert_page_break"},{"type":"literal","value":"insert_photo"},{"type":"literal","value":"insert_text"},{"type":"literal","value":"insights"},{"type":"literal","value":"install_desktop"},{"type":"literal","value":"install_mobile"},{"type":"literal","value":"instant_mix"},{"type":"literal","value":"integration_instructions"},{"type":"literal","value":"interactive_space"},{"type":"literal","value":"interests"},{"type":"literal","value":"interpreter_mode"},{"type":"literal","value":"inventory"},{"type":"literal","value":"inventory_2"},{"type":"literal","value":"invert_colors"},{"type":"literal","value":"invert_colors_off"},{"type":"literal","value":"ios_share"},{"type":"literal","value":"iron"},{"type":"literal","value":"iso"},{"type":"literal","value":"jamboard_kiosk"},{"type":"literal","value":"japanese_curry"},{"type":"literal","value":"japanese_flag"},{"type":"literal","value":"javascript"},{"type":"literal","value":"join_full"},{"type":"literal","value":"join_inner"},{"type":"literal","value":"join_left"},{"type":"literal","value":"join_right"},{"type":"literal","value":"joystick"},{"type":"literal","value":"jump_to_element"},{"type":"literal","value":"kanji_alcohol"},{"type":"literal","value":"kayaking"},{"type":"literal","value":"kebab_dining"},{"type":"literal","value":"keep"},{"type":"literal","value":"keep_off"},{"type":"literal","value":"keep_public"},{"type":"literal","value":"kettle"},{"type":"literal","value":"key_off"},{"type":"literal","value":"key_vertical"},{"type":"literal","value":"key_visualizer"},{"type":"literal","value":"keyboard_alt"},{"type":"literal","value":"keyboard_arrow_down"},{"type":"literal","value":"keyboard_arrow_left"},{"type":"literal","value":"keyboard_arrow_right"},{"type":"literal","value":"keyboard_arrow_up"},{"type":"literal","value":"keyboard_backspace"},{"type":"literal","value":"keyboard_capslock"},{"type":"literal","value":"keyboard_capslock_badge"},{"type":"literal","value":"keyboard_command_key"},{"type":"literal","value":"keyboard_control_key"},{"type":"literal","value":"keyboard_double_arrow_down"},{"type":"literal","value":"keyboard_double_arrow_left"},{"type":"literal","value":"keyboard_double_arrow_right"},{"type":"literal","value":"keyboard_double_arrow_up"},{"type":"literal","value":"keyboard_external_input"},{"type":"literal","value":"keyboard_full"},{"type":"literal","value":"keyboard_hide"},{"type":"literal","value":"keyboard_keys"},{"type":"literal","value":"keyboard_lock"},{"type":"literal","value":"keyboard_lock_off"},{"type":"literal","value":"keyboard_off"},{"type":"literal","value":"keyboard_onscreen"},{"type":"literal","value":"keyboard_option_key"},{"type":"literal","value":"keyboard_previous_language"},{"type":"literal","value":"keyboard_return"},{"type":"literal","value":"keyboard_tab"},{"type":"literal","value":"keyboard_tab_rtl"},{"type":"literal","value":"keyboard_voice"},{"type":"literal","value":"kid_star"},{"type":"literal","value":"king_bed"},{"type":"literal","value":"kitchen"},{"type":"literal","value":"kitesurfing"},{"type":"literal","value":"lab_panel"},{"type":"literal","value":"lab_profile"},{"type":"literal","value":"lab_research"},{"type":"literal","value":"label_important"},{"type":"literal","value":"label_important_outline"},{"type":"literal","value":"label_off"},{"type":"literal","value":"labs"},{"type":"literal","value":"lan"},{"type":"literal","value":"landscape_2"},{"type":"literal","value":"landscape_2_edit"},{"type":"literal","value":"landscape_2_off"},{"type":"literal","value":"landslide"},{"type":"literal","value":"language"},{"type":"literal","value":"language_chinese_array"},{"type":"literal","value":"language_chinese_cangjie"},{"type":"literal","value":"language_chinese_dayi"},{"type":"literal","value":"language_chinese_pinyin"},{"type":"literal","value":"language_chinese_quick"},{"type":"literal","value":"language_chinese_wubi"},{"type":"literal","value":"language_french"},{"type":"literal","value":"language_gb_english"},{"type":"literal","value":"language_international"},{"type":"literal","value":"language_japanese_kana"},{"type":"literal","value":"language_korean_latin"},{"type":"literal","value":"language_pinyin"},{"type":"literal","value":"language_spanish"},{"type":"literal","value":"language_us"},{"type":"literal","value":"language_us_colemak"},{"type":"literal","value":"language_us_dvorak"},{"type":"literal","value":"laps"},{"type":"literal","value":"laptop"},{"type":"literal","value":"laptop_car"},{"type":"literal","value":"laptop_chromebook"},{"type":"literal","value":"laptop_mac"},{"type":"literal","value":"laptop_windows"},{"type":"literal","value":"lasso_select"},{"type":"literal","value":"last_page"},{"type":"literal","value":"launch"},{"type":"literal","value":"laundry"},{"type":"literal","value":"layers"},{"type":"literal","value":"layers_clear"},{"type":"literal","value":"lda"},{"type":"literal","value":"leaderboard"},{"type":"literal","value":"leak_add"},{"type":"literal","value":"leak_remove"},{"type":"literal","value":"left_click"},{"type":"literal","value":"left_panel_close"},{"type":"literal","value":"left_panel_open"},{"type":"literal","value":"legend_toggle"},{"type":"literal","value":"lens"},{"type":"literal","value":"lens_blur"},{"type":"literal","value":"letter_switch"},{"type":"literal","value":"library_add"},{"type":"literal","value":"library_add_check"},{"type":"literal","value":"library_books"},{"type":"literal","value":"library_music"},{"type":"literal","value":"license"},{"type":"literal","value":"lift_to_talk"},{"type":"literal","value":"light_group"},{"type":"literal","value":"light_mode"},{"type":"literal","value":"light_off"},{"type":"literal","value":"lightbulb_2"},{"type":"literal","value":"lightbulb_circle"},{"type":"literal","value":"lightbulb_outline"},{"type":"literal","value":"lightning_stand"},{"type":"literal","value":"line_axis"},{"type":"literal","value":"line_curve"},{"type":"literal","value":"line_end"},{"type":"literal","value":"line_end_arrow"},{"type":"literal","value":"line_end_arrow_notch"},{"type":"literal","value":"line_end_circle"},{"type":"literal","value":"line_end_diamond"},{"type":"literal","value":"line_end_square"},{"type":"literal","value":"line_start"},{"type":"literal","value":"line_start_arrow"},{"type":"literal","value":"line_start_arrow_notch"},{"type":"literal","value":"line_start_circle"},{"type":"literal","value":"line_start_diamond"},{"type":"literal","value":"line_start_square"},{"type":"literal","value":"line_style"},{"type":"literal","value":"line_weight"},{"type":"literal","value":"linear_scale"},{"type":"literal","value":"link_off"},{"type":"literal","value":"linked_camera"},{"type":"literal","value":"linked_services"},{"type":"literal","value":"liquor"},{"type":"literal","value":"list_alt"},{"type":"literal","value":"list_alt_add"},{"type":"literal","value":"list_alt_check"},{"type":"literal","value":"lists"},{"type":"literal","value":"live_help"},{"type":"literal","value":"live_tv"},{"type":"literal","value":"living"},{"type":"literal","value":"local_activity"},{"type":"literal","value":"local_airport"},{"type":"literal","value":"local_atm"},{"type":"literal","value":"local_bar"},{"type":"literal","value":"local_cafe"},{"type":"literal","value":"local_car_wash"},{"type":"literal","value":"local_convenience_store"},{"type":"literal","value":"local_dining"},{"type":"literal","value":"local_drink"},{"type":"literal","value":"local_fire_department"},{"type":"literal","value":"local_florist"},{"type":"literal","value":"local_gas_station"},{"type":"literal","value":"local_grocery_store"},{"type":"literal","value":"local_hospital"},{"type":"literal","value":"local_hotel"},{"type":"literal","value":"local_laundry_service"},{"type":"literal","value":"local_library"},{"type":"literal","value":"local_mall"},{"type":"literal","value":"local_movies"},{"type":"literal","value":"local_offer"},{"type":"literal","value":"local_parking"},{"type":"literal","value":"local_pharmacy"},{"type":"literal","value":"local_phone"},{"type":"literal","value":"local_pizza"},{"type":"literal","value":"local_play"},{"type":"literal","value":"local_police"},{"type":"literal","value":"local_post_office"},{"type":"literal","value":"local_printshop"},{"type":"literal","value":"local_see"},{"type":"literal","value":"local_shipping"},{"type":"literal","value":"local_taxi"},{"type":"literal","value":"location_away"},{"type":"literal","value":"location_chip"},{"type":"literal","value":"location_city"},{"type":"literal","value":"location_disabled"},{"type":"literal","value":"location_home"},{"type":"literal","value":"location_off"},{"type":"literal","value":"location_on"},{"type":"literal","value":"location_pin"},{"type":"literal","value":"location_searching"},{"type":"literal","value":"lock_clock"},{"type":"literal","value":"lock_open"},{"type":"literal","value":"lock_open_circle"},{"type":"literal","value":"lock_open_right"},{"type":"literal","value":"lock_outline"},{"type":"literal","value":"lock_person"},{"type":"literal","value":"lock_reset"},{"type":"literal","value":"login"},{"type":"literal","value":"logo_dev"},{"type":"literal","value":"logout"},{"type":"literal","value":"looks"},{"type":"literal","value":"looks_3"},{"type":"literal","value":"looks_4"},{"type":"literal","value":"looks_5"},{"type":"literal","value":"looks_6"},{"type":"literal","value":"looks_one"},{"type":"literal","value":"looks_two"},{"type":"literal","value":"loop"},{"type":"literal","value":"low_density"},{"type":"literal","value":"low_priority"},{"type":"literal","value":"loyalty"},{"type":"literal","value":"lte_mobiledata"},{"type":"literal","value":"lte_mobiledata_badge"},{"type":"literal","value":"lte_plus_mobiledata"},{"type":"literal","value":"lte_plus_mobiledata_badge"},{"type":"literal","value":"luggage"},{"type":"literal","value":"lunch_dining"},{"type":"literal","value":"lyrics"},{"type":"literal","value":"macro_auto"},{"type":"literal","value":"macro_off"},{"type":"literal","value":"magnification_large"},{"type":"literal","value":"magnification_small"},{"type":"literal","value":"magnify_docked"},{"type":"literal","value":"magnify_fullscreen"},{"type":"literal","value":"mail_asterisk"},{"type":"literal","value":"mail_lock"},{"type":"literal","value":"mail_off"},{"type":"literal","value":"mail_outline"},{"type":"literal","value":"mail_shield"},{"type":"literal","value":"male"},{"type":"literal","value":"man"},{"type":"literal","value":"man_2"},{"type":"literal","value":"man_3"},{"type":"literal","value":"man_4"},{"type":"literal","value":"manage_accounts"},{"type":"literal","value":"manage_history"},{"type":"literal","value":"manage_search"},{"type":"literal","value":"manga"},{"type":"literal","value":"manufacturing"},{"type":"literal","value":"map_pin_heart"},{"type":"literal","value":"map_pin_review"},{"type":"literal","value":"map_search"},{"type":"literal","value":"maps_home_work"},{"type":"literal","value":"maps_ugc"},{"type":"literal","value":"mark_as_unread"},{"type":"literal","value":"mark_chat_read"},{"type":"literal","value":"mark_chat_unread"},{"type":"literal","value":"mark_email_read"},{"type":"literal","value":"mark_email_unread"},{"type":"literal","value":"mark_unread_chat_alt"},{"type":"literal","value":"markdown"},{"type":"literal","value":"markdown_copy"},{"type":"literal","value":"markdown_paste"},{"type":"literal","value":"markunread"},{"type":"literal","value":"markunread_mailbox"},{"type":"literal","value":"masked_transitions"},{"type":"literal","value":"masked_transitions_add"},{"type":"literal","value":"masks"},{"type":"literal","value":"massage"},{"type":"literal","value":"match_case"},{"type":"literal","value":"match_case_off"},{"type":"literal","value":"match_word"},{"type":"literal","value":"matter"},{"type":"literal","value":"maximize"},{"type":"literal","value":"meal_dinner"},{"type":"literal","value":"meal_lunch"},{"type":"literal","value":"measuring_tape"},{"type":"literal","value":"media_bluetooth_off"},{"type":"literal","value":"media_bluetooth_on"},{"type":"literal","value":"media_link"},{"type":"literal","value":"media_output"},{"type":"literal","value":"media_output_off"},{"type":"literal","value":"mediation"},{"type":"literal","value":"medical_information"},{"type":"literal","value":"medical_mask"},{"type":"literal","value":"medical_services"},{"type":"literal","value":"medication"},{"type":"literal","value":"medication_liquid"},{"type":"literal","value":"meeting_room"},{"type":"literal","value":"memory"},{"type":"literal","value":"memory_alt"},{"type":"literal","value":"menstrual_health"},{"type":"literal","value":"menu_book"},{"type":"literal","value":"menu_book_2"},{"type":"literal","value":"menu_open"},{"type":"literal","value":"merge_type"},{"type":"literal","value":"metabolism"},{"type":"literal","value":"mfg_nest_yale_lock"},{"type":"literal","value":"mic_alert"},{"type":"literal","value":"mic_double"},{"type":"literal","value":"mic_external_off"},{"type":"literal","value":"mic_external_on"},{"type":"literal","value":"mic_none"},{"type":"literal","value":"mic_off"},{"type":"literal","value":"microbiology"},{"type":"literal","value":"microwave_gen"},{"type":"literal","value":"military_tech"},{"type":"literal","value":"mimo"},{"type":"literal","value":"mimo_disconnect"},{"type":"literal","value":"mindfulness"},{"type":"literal","value":"minimize"},{"type":"literal","value":"minor_crash"},{"type":"literal","value":"mintmark"},{"type":"literal","value":"miscellaneous_services"},{"type":"literal","value":"missed_video_call"},{"type":"literal","value":"missing_controller"},{"type":"literal","value":"mist"},{"type":"literal","value":"mitre"},{"type":"literal","value":"mixture_med"},{"type":"literal","value":"mms"},{"type":"literal","value":"mobile"},{"type":"literal","value":"mobile_2"},{"type":"literal","value":"mobile_3"},{"type":"literal","value":"mobile_alert"},{"type":"literal","value":"mobile_arrow_down"},{"type":"literal","value":"mobile_arrow_right"},{"type":"literal","value":"mobile_arrow_up_right"},{"type":"literal","value":"mobile_block"},{"type":"literal","value":"mobile_camera"},{"type":"literal","value":"mobile_camera_front"},{"type":"literal","value":"mobile_camera_rear"},{"type":"literal","value":"mobile_cancel"},{"type":"literal","value":"mobile_cast"},{"type":"literal","value":"mobile_charge"},{"type":"literal","value":"mobile_chat"},{"type":"literal","value":"mobile_check"},{"type":"literal","value":"mobile_code"},{"type":"literal","value":"mobile_dots"},{"type":"literal","value":"mobile_friendly"},{"type":"literal","value":"mobile_gear"},{"type":"literal","value":"mobile_hand"},{"type":"literal","value":"mobile_hand_left"},{"type":"literal","value":"mobile_hand_left_off"},{"type":"literal","value":"mobile_hand_off"},{"type":"literal","value":"mobile_info"},{"type":"literal","value":"mobile_landscape"},{"type":"literal","value":"mobile_layout"},{"type":"literal","value":"mobile_lock_landscape"},{"type":"literal","value":"mobile_lock_portrait"},{"type":"literal","value":"mobile_loupe"},{"type":"literal","value":"mobile_menu"},{"type":"literal","value":"mobile_off"},{"type":"literal","value":"mobile_question"},{"type":"literal","value":"mobile_rotate"},{"type":"literal","value":"mobile_rotate_lock"},{"type":"literal","value":"mobile_screen_share"},{"type":"literal","value":"mobile_screensaver"},{"type":"literal","value":"mobile_sensor_hi"},{"type":"literal","value":"mobile_sensor_lo"},{"type":"literal","value":"mobile_share"},{"type":"literal","value":"mobile_share_stack"},{"type":"literal","value":"mobile_sound"},{"type":"literal","value":"mobile_sound_2"},{"type":"literal","value":"mobile_sound_off"},{"type":"literal","value":"mobile_speaker"},{"type":"literal","value":"mobile_text"},{"type":"literal","value":"mobile_text_2"},{"type":"literal","value":"mobile_theft"},{"type":"literal","value":"mobile_ticket"},{"type":"literal","value":"mobile_vibrate"},{"type":"literal","value":"mobile_wrench"},{"type":"literal","value":"mobiledata_off"},{"type":"literal","value":"mode_comment"},{"type":"literal","value":"mode_cool"},{"type":"literal","value":"mode_cool_off"},{"type":"literal","value":"mode_dual"},{"type":"literal","value":"mode_edit"},{"type":"literal","value":"mode_edit_outline"},{"type":"literal","value":"mode_fan"},{"type":"literal","value":"mode_fan_off"},{"type":"literal","value":"mode_heat"},{"type":"literal","value":"mode_heat_cool"},{"type":"literal","value":"mode_heat_off"},{"type":"literal","value":"mode_night"},{"type":"literal","value":"mode_of_travel"},{"type":"literal","value":"mode_off_on"},{"type":"literal","value":"mode_standby"},{"type":"literal","value":"model_training"},{"type":"literal","value":"modeling"},{"type":"literal","value":"monetization_on"},{"type":"literal","value":"money"},{"type":"literal","value":"money_bag"},{"type":"literal","value":"money_off"},{"type":"literal","value":"money_off_csred"},{"type":"literal","value":"money_range"},{"type":"literal","value":"monitor"},{"type":"literal","value":"monitor_heart"},{"type":"literal","value":"monitor_weight"},{"type":"literal","value":"monitor_weight_gain"},{"type":"literal","value":"monitor_weight_loss"},{"type":"literal","value":"monitoring"},{"type":"literal","value":"monochrome_photos"},{"type":"literal","value":"monorail"},{"type":"literal","value":"mood"},{"type":"literal","value":"mood_bad"},{"type":"literal","value":"moon_stars"},{"type":"literal","value":"mop"},{"type":"literal","value":"moped_package"},{"type":"literal","value":"more"},{"type":"literal","value":"more_down"},{"type":"literal","value":"more_horiz"},{"type":"literal","value":"more_time"},{"type":"literal","value":"more_up"},{"type":"literal","value":"more_vert"},{"type":"literal","value":"mosque"},{"type":"literal","value":"motion_blur"},{"type":"literal","value":"motion_mode"},{"type":"literal","value":"motion_photos_auto"},{"type":"literal","value":"motion_photos_off"},{"type":"literal","value":"motion_photos_on"},{"type":"literal","value":"motion_photos_pause"},{"type":"literal","value":"motion_photos_paused"},{"type":"literal","value":"motion_play"},{"type":"literal","value":"motion_sensor_active"},{"type":"literal","value":"motion_sensor_alert"},{"type":"literal","value":"motion_sensor_idle"},{"type":"literal","value":"motion_sensor_urgent"},{"type":"literal","value":"mountain_flag"},{"type":"literal","value":"mountain_steam"},{"type":"literal","value":"mouse"},{"type":"literal","value":"mouse_lock"},{"type":"literal","value":"mouse_lock_off"},{"type":"literal","value":"move"},{"type":"literal","value":"move_down"},{"type":"literal","value":"move_group"},{"type":"literal","value":"move_item"},{"type":"literal","value":"move_location"},{"type":"literal","value":"move_selection_down"},{"type":"literal","value":"move_selection_left"},{"type":"literal","value":"move_selection_right"},{"type":"literal","value":"move_selection_up"},{"type":"literal","value":"move_to_inbox"},{"type":"literal","value":"move_up"},{"type":"literal","value":"moved_location"},{"type":"literal","value":"movie"},{"type":"literal","value":"movie_creation"},{"type":"literal","value":"movie_edit"},{"type":"literal","value":"movie_filter"},{"type":"literal","value":"movie_info"},{"type":"literal","value":"movie_off"},{"type":"literal","value":"movie_speaker"},{"type":"literal","value":"moving"},{"type":"literal","value":"moving_beds"},{"type":"literal","value":"moving_ministry"},{"type":"literal","value":"mp"},{"type":"literal","value":"multicooker"},{"type":"literal","value":"multiline_chart"},{"type":"literal","value":"multimodal_hand_eye"},{"type":"literal","value":"multiple_airports"},{"type":"literal","value":"multiple_stop"},{"type":"literal","value":"museum"},{"type":"literal","value":"music_cast"},{"type":"literal","value":"music_history"},{"type":"literal","value":"music_note"},{"type":"literal","value":"music_note_add"},{"type":"literal","value":"music_off"},{"type":"literal","value":"music_video"},{"type":"literal","value":"my_location"},{"type":"literal","value":"mystery"},{"type":"literal","value":"nat"},{"type":"literal","value":"nature"},{"type":"literal","value":"nature_people"},{"type":"literal","value":"navigate_before"},{"type":"literal","value":"navigate_next"},{"type":"literal","value":"near_me"},{"type":"literal","value":"near_me_disabled"},{"type":"literal","value":"nearby"},{"type":"literal","value":"nearby_error"},{"type":"literal","value":"nearby_off"},{"type":"literal","value":"nephrology"},{"type":"literal","value":"nest_audio"},{"type":"literal","value":"nest_cam_floodlight"},{"type":"literal","value":"nest_cam_indoor"},{"type":"literal","value":"nest_cam_iq"},{"type":"literal","value":"nest_cam_iq_outdoor"},{"type":"literal","value":"nest_cam_magnet_mount"},{"type":"literal","value":"nest_cam_outdoor"},{"type":"literal","value":"nest_cam_stand"},{"type":"literal","value":"nest_cam_wall_mount"},{"type":"literal","value":"nest_cam_wired_stand"},{"type":"literal","value":"nest_clock_farsight_analog"},{"type":"literal","value":"nest_clock_farsight_digital"},{"type":"literal","value":"nest_connect"},{"type":"literal","value":"nest_detect"},{"type":"literal","value":"nest_display"},{"type":"literal","value":"nest_display_max"},{"type":"literal","value":"nest_doorbell_visitor"},{"type":"literal","value":"nest_eco_leaf"},{"type":"literal","value":"nest_farsight_cool"},{"type":"literal","value":"nest_farsight_dual"},{"type":"literal","value":"nest_farsight_eco"},{"type":"literal","value":"nest_farsight_heat"},{"type":"literal","value":"nest_farsight_seasonal"},{"type":"literal","value":"nest_farsight_weather"},{"type":"literal","value":"nest_found_savings"},{"type":"literal","value":"nest_heat_link_e"},{"type":"literal","value":"nest_heat_link_gen_3"},{"type":"literal","value":"nest_hello_doorbell"},{"type":"literal","value":"nest_mini"},{"type":"literal","value":"nest_multi_room"},{"type":"literal","value":"nest_protect"},{"type":"literal","value":"nest_remote_comfort_sensor"},{"type":"literal","value":"nest_secure_alarm"},{"type":"literal","value":"nest_sunblock"},{"type":"literal","value":"nest_tag"},{"type":"literal","value":"nest_thermostat"},{"type":"literal","value":"nest_thermostat_e_eu"},{"type":"literal","value":"nest_thermostat_gen_3"},{"type":"literal","value":"nest_thermostat_sensor"},{"type":"literal","value":"nest_thermostat_sensor_eu"},{"type":"literal","value":"nest_thermostat_zirconium_eu"},{"type":"literal","value":"nest_true_radiant"},{"type":"literal","value":"nest_wake_on_approach"},{"type":"literal","value":"nest_wake_on_press"},{"type":"literal","value":"nest_wifi_point"},{"type":"literal","value":"nest_wifi_pro"},{"type":"literal","value":"nest_wifi_pro_2"},{"type":"literal","value":"nest_wifi_router"},{"type":"literal","value":"network_cell"},{"type":"literal","value":"network_check"},{"type":"literal","value":"network_intel_node"},{"type":"literal","value":"network_intelligence"},{"type":"literal","value":"network_intelligence_history"},{"type":"literal","value":"network_intelligence_update"},{"type":"literal","value":"network_locked"},{"type":"literal","value":"network_manage"},{"type":"literal","value":"network_node"},{"type":"literal","value":"network_ping"},{"type":"literal","value":"network_wifi"},{"type":"literal","value":"network_wifi_1_bar"},{"type":"literal","value":"network_wifi_1_bar_locked"},{"type":"literal","value":"network_wifi_2_bar"},{"type":"literal","value":"network_wifi_2_bar_locked"},{"type":"literal","value":"network_wifi_3_bar"},{"type":"literal","value":"network_wifi_3_bar_locked"},{"type":"literal","value":"network_wifi_locked"},{"type":"literal","value":"neurology"},{"type":"literal","value":"new_label"},{"type":"literal","value":"new_releases"},{"type":"literal","value":"new_window"},{"type":"literal","value":"news"},{"type":"literal","value":"newsmode"},{"type":"literal","value":"newsstand"},{"type":"literal","value":"next_plan"},{"type":"literal","value":"next_week"},{"type":"literal","value":"nfc"},{"type":"literal","value":"nfc_off"},{"type":"literal","value":"night_shelter"},{"type":"literal","value":"night_sight_auto"},{"type":"literal","value":"night_sight_auto_off"},{"type":"literal","value":"night_sight_max"},{"type":"literal","value":"nightlife"},{"type":"literal","value":"nightlight"},{"type":"literal","value":"nightlight_round"},{"type":"literal","value":"nights_stay"},{"type":"literal","value":"no_accounts"},{"type":"literal","value":"no_adult_content"},{"type":"literal","value":"no_backpack"},{"type":"literal","value":"no_cell"},{"type":"literal","value":"no_crash"},{"type":"literal","value":"no_drinks"},{"type":"literal","value":"no_encryption"},{"type":"literal","value":"no_encryption_gmailerrorred"},{"type":"literal","value":"no_flash"},{"type":"literal","value":"no_food"},{"type":"literal","value":"no_luggage"},{"type":"literal","value":"no_meals"},{"type":"literal","value":"no_meals_ouline"},{"type":"literal","value":"no_meeting_room"},{"type":"literal","value":"no_photography"},{"type":"literal","value":"no_sim"},{"type":"literal","value":"no_sound"},{"type":"literal","value":"no_stroller"},{"type":"literal","value":"no_transfer"},{"type":"literal","value":"noise_aware"},{"type":"literal","value":"noise_control_off"},{"type":"literal","value":"noise_control_on"},{"type":"literal","value":"nordic_walking"},{"type":"literal","value":"north"},{"type":"literal","value":"north_east"},{"type":"literal","value":"north_west"},{"type":"literal","value":"not_accessible"},{"type":"literal","value":"not_accessible_forward"},{"type":"literal","value":"not_interested"},{"type":"literal","value":"not_listed_location"},{"type":"literal","value":"not_started"},{"type":"literal","value":"note_add"},{"type":"literal","value":"note_alt"},{"type":"literal","value":"note_stack"},{"type":"literal","value":"note_stack_add"},{"type":"literal","value":"notes"},{"type":"literal","value":"notification_add"},{"type":"literal","value":"notification_important"},{"type":"literal","value":"notification_multiple"},{"type":"literal","value":"notification_settings"},{"type":"literal","value":"notification_sound"},{"type":"literal","value":"notifications"},{"type":"literal","value":"notifications_active"},{"type":"literal","value":"notifications_none"},{"type":"literal","value":"notifications_off"},{"type":"literal","value":"notifications_paused"},{"type":"literal","value":"notifications_unread"},{"type":"literal","value":"nutrition"},{"type":"literal","value":"ods"},{"type":"literal","value":"odt"},{"type":"literal","value":"offline_bolt"},{"type":"literal","value":"offline_pin"},{"type":"literal","value":"offline_pin_off"},{"type":"literal","value":"offline_share"},{"type":"literal","value":"oil_barrel"},{"type":"literal","value":"okonomiyaki"},{"type":"literal","value":"on_device_training"},{"type":"literal","value":"on_hub_device"},{"type":"literal","value":"oncology"},{"type":"literal","value":"ondemand_video"},{"type":"literal","value":"online_prediction"},{"type":"literal","value":"onsen"},{"type":"literal","value":"open_in_browser"},{"type":"literal","value":"open_in_full"},{"type":"literal","value":"open_in_new"},{"type":"literal","value":"open_in_new_down"},{"type":"literal","value":"open_in_new_off"},{"type":"literal","value":"open_jam"},{"type":"literal","value":"open_run"},{"type":"literal","value":"open_with"},{"type":"literal","value":"ophthalmology"},{"type":"literal","value":"oral_disease"},{"type":"literal","value":"orbit"},{"type":"literal","value":"order_approve"},{"type":"literal","value":"order_play"},{"type":"literal","value":"orders"},{"type":"literal","value":"orthopedics"},{"type":"literal","value":"other_admission"},{"type":"literal","value":"other_houses"},{"type":"literal","value":"outbound"},{"type":"literal","value":"outbox"},{"type":"literal","value":"outbox_alt"},{"type":"literal","value":"outdoor_garden"},{"type":"literal","value":"outdoor_grill"},{"type":"literal","value":"outgoing_mail"},{"type":"literal","value":"outlet"},{"type":"literal","value":"outlined_flag"},{"type":"literal","value":"outpatient"},{"type":"literal","value":"outpatient_med"},{"type":"literal","value":"output_circle"},{"type":"literal","value":"oven_gen"},{"type":"literal","value":"overview"},{"type":"literal","value":"overview_key"},{"type":"literal","value":"owl"},{"type":"literal","value":"oxygen_saturation"},{"type":"literal","value":"p2p"},{"type":"literal","value":"pace"},{"type":"literal","value":"pacemaker"},{"type":"literal","value":"package_2"},{"type":"literal","value":"padel"},{"type":"literal","value":"page_control"},{"type":"literal","value":"page_footer"},{"type":"literal","value":"page_header"},{"type":"literal","value":"page_info"},{"type":"literal","value":"page_menu_ios"},{"type":"literal","value":"pageless"},{"type":"literal","value":"pages"},{"type":"literal","value":"pageview"},{"type":"literal","value":"paid"},{"type":"literal","value":"pallet"},{"type":"literal","value":"pan_tool"},{"type":"literal","value":"pan_tool_alt"},{"type":"literal","value":"pan_zoom"},{"type":"literal","value":"panorama"},{"type":"literal","value":"panorama_fish_eye"},{"type":"literal","value":"panorama_horizontal"},{"type":"literal","value":"panorama_horizontal_select"},{"type":"literal","value":"panorama_photosphere"},{"type":"literal","value":"panorama_photosphere_select"},{"type":"literal","value":"panorama_vertical"},{"type":"literal","value":"panorama_vertical_select"},{"type":"literal","value":"panorama_wide_angle"},{"type":"literal","value":"panorama_wide_angle_select"},{"type":"literal","value":"paragliding"},{"type":"literal","value":"parent_child_dining"},{"type":"literal","value":"park"},{"type":"literal","value":"parking_meter"},{"type":"literal","value":"parking_sign"},{"type":"literal","value":"parking_valet"},{"type":"literal","value":"partly_cloudy_day"},{"type":"literal","value":"partly_cloudy_night"},{"type":"literal","value":"partner_exchange"},{"type":"literal","value":"partner_heart"},{"type":"literal","value":"partner_reports"},{"type":"literal","value":"party_mode"},{"type":"literal","value":"passkey"},{"type":"literal","value":"password"},{"type":"literal","value":"password_2"},{"type":"literal","value":"password_2_off"},{"type":"literal","value":"patient_list"},{"type":"literal","value":"pause_circle"},{"type":"literal","value":"pause_circle_filled"},{"type":"literal","value":"pause_circle_outline"},{"type":"literal","value":"pause_presentation"},{"type":"literal","value":"payment"},{"type":"literal","value":"payment_arrow_down"},{"type":"literal","value":"payment_card"},{"type":"literal","value":"payments"},{"type":"literal","value":"pedal_bike"},{"type":"literal","value":"pediatrics"},{"type":"literal","value":"pen_size_1"},{"type":"literal","value":"pen_size_2"},{"type":"literal","value":"pen_size_3"},{"type":"literal","value":"pen_size_4"},{"type":"literal","value":"pen_size_5"},{"type":"literal","value":"pending"},{"type":"literal","value":"pending_actions"},{"type":"literal","value":"people"},{"type":"literal","value":"people_alt"},{"type":"literal","value":"people_outline"},{"type":"literal","value":"percent_discount"},{"type":"literal","value":"pergola"},{"type":"literal","value":"perm_camera_mic"},{"type":"literal","value":"perm_contact_calendar"},{"type":"literal","value":"perm_data_setting"},{"type":"literal","value":"perm_device_information"},{"type":"literal","value":"perm_identity"},{"type":"literal","value":"perm_media"},{"type":"literal","value":"perm_phone_msg"},{"type":"literal","value":"perm_scan_wifi"},{"type":"literal","value":"person_2"},{"type":"literal","value":"person_3"},{"type":"literal","value":"person_4"},{"type":"literal","value":"person_add"},{"type":"literal","value":"person_add_alt"},{"type":"literal","value":"person_add_alt_1"},{"type":"literal","value":"person_add_disabled"},{"type":"literal","value":"person_alert"},{"type":"literal","value":"person_apron"},{"type":"literal","value":"person_book"},{"type":"literal","value":"person_cancel"},{"type":"literal","value":"person_celebrate"},{"type":"literal","value":"person_check"},{"type":"literal","value":"person_edit"},{"type":"literal","value":"person_heart"},{"type":"literal","value":"person_off"},{"type":"literal","value":"person_outline"},{"type":"literal","value":"person_pin"},{"type":"literal","value":"person_pin_circle"},{"type":"literal","value":"person_play"},{"type":"literal","value":"person_raised_hand"},{"type":"literal","value":"person_remove"},{"type":"literal","value":"person_remove_alt_1"},{"type":"literal","value":"person_search"},{"type":"literal","value":"person_shield"},{"type":"literal","value":"personal_bag"},{"type":"literal","value":"personal_bag_off"},{"type":"literal","value":"personal_bag_question"},{"type":"literal","value":"personal_injury"},{"type":"literal","value":"personal_places"},{"type":"literal","value":"personal_video"},{"type":"literal","value":"pest_control"},{"type":"literal","value":"pest_control_rodent"},{"type":"literal","value":"pet_supplies"},{"type":"literal","value":"pets"},{"type":"literal","value":"phishing"},{"type":"literal","value":"phone_android"},{"type":"literal","value":"phone_bluetooth_speaker"},{"type":"literal","value":"phone_callback"},{"type":"literal","value":"phone_disabled"},{"type":"literal","value":"phone_enabled"},{"type":"literal","value":"phone_forwarded"},{"type":"literal","value":"phone_in_talk"},{"type":"literal","value":"phone_iphone"},{"type":"literal","value":"phone_locked"},{"type":"literal","value":"phone_missed"},{"type":"literal","value":"phone_paused"},{"type":"literal","value":"phonelink"},{"type":"literal","value":"phonelink_erase"},{"type":"literal","value":"phonelink_lock"},{"type":"literal","value":"phonelink_off"},{"type":"literal","value":"phonelink_ring"},{"type":"literal","value":"phonelink_setup"},{"type":"literal","value":"photo_album"},{"type":"literal","value":"photo_auto_merge"},{"type":"literal","value":"photo_camera"},{"type":"literal","value":"photo_camera_back"},{"type":"literal","value":"photo_camera_front"},{"type":"literal","value":"photo_filter"},{"type":"literal","value":"photo_frame"},{"type":"literal","value":"photo_library"},{"type":"literal","value":"photo_prints"},{"type":"literal","value":"photo_size_select_actual"},{"type":"literal","value":"photo_size_select_large"},{"type":"literal","value":"photo_size_select_small"},{"type":"literal","value":"php"},{"type":"literal","value":"physical_therapy"},{"type":"literal","value":"piano"},{"type":"literal","value":"piano_off"},{"type":"literal","value":"pickleball"},{"type":"literal","value":"picture_as_pdf"},{"type":"literal","value":"picture_in_picture"},{"type":"literal","value":"picture_in_picture_alt"},{"type":"literal","value":"picture_in_picture_center"},{"type":"literal","value":"picture_in_picture_large"},{"type":"literal","value":"picture_in_picture_medium"},{"type":"literal","value":"picture_in_picture_mobile"},{"type":"literal","value":"picture_in_picture_off"},{"type":"literal","value":"picture_in_picture_small"},{"type":"literal","value":"pie_chart"},{"type":"literal","value":"pie_chart_outline"},{"type":"literal","value":"pie_chart_outlined"},{"type":"literal","value":"pill_off"},{"type":"literal","value":"pin_drop"},{"type":"literal","value":"pin_end"},{"type":"literal","value":"pin_invoke"},{"type":"literal","value":"pinboard"},{"type":"literal","value":"pinboard_unread"},{"type":"literal","value":"pinch"},{"type":"literal","value":"pinch_zoom_in"},{"type":"literal","value":"pinch_zoom_out"},{"type":"literal","value":"pip_exit"},{"type":"literal","value":"pivot_table_chart"},{"type":"literal","value":"pix"},{"type":"literal","value":"place"},{"type":"literal","value":"place_item"},{"type":"literal","value":"plagiarism"},{"type":"literal","value":"plane_contrails"},{"type":"literal","value":"planet"},{"type":"literal","value":"planner_banner_ad_pt"},{"type":"literal","value":"planner_review"},{"type":"literal","value":"play_arrow"},{"type":"literal","value":"play_circle"},{"type":"literal","value":"play_circle_filled"},{"type":"literal","value":"play_circle_outline"},{"type":"literal","value":"play_disabled"},{"type":"literal","value":"play_for_work"},{"type":"literal","value":"play_lesson"},{"type":"literal","value":"play_pause"},{"type":"literal","value":"playground"},{"type":"literal","value":"playground_2"},{"type":"literal","value":"playing_cards"},{"type":"literal","value":"playlist_add"},{"type":"literal","value":"playlist_add_check"},{"type":"literal","value":"playlist_add_check_circle"},{"type":"literal","value":"playlist_add_circle"},{"type":"literal","value":"playlist_play"},{"type":"literal","value":"playlist_remove"},{"type":"literal","value":"plug_connect"},{"type":"literal","value":"plumbing"},{"type":"literal","value":"plus_one"},{"type":"literal","value":"podcasts"},{"type":"literal","value":"podiatry"},{"type":"literal","value":"podium"},{"type":"literal","value":"point_of_sale"},{"type":"literal","value":"point_scan"},{"type":"literal","value":"poker_chip"},{"type":"literal","value":"policy_alert"},{"type":"literal","value":"poll"},{"type":"literal","value":"polymer"},{"type":"literal","value":"pool"},{"type":"literal","value":"portable_wifi_off"},{"type":"literal","value":"position_bottom_left"},{"type":"literal","value":"position_bottom_right"},{"type":"literal","value":"position_top_right"},{"type":"literal","value":"post"},{"type":"literal","value":"post_add"},{"type":"literal","value":"potted_plant"},{"type":"literal","value":"power_input"},{"type":"literal","value":"power_off"},{"type":"literal","value":"power_settings_circle"},{"type":"literal","value":"power_settings_new"},{"type":"literal","value":"prayer_times"},{"type":"literal","value":"precision_manufacturing"},{"type":"literal","value":"pregnancy"},{"type":"literal","value":"pregnant_woman"},{"type":"literal","value":"preliminary"},{"type":"literal","value":"prescriptions"},{"type":"literal","value":"present_to_all"},{"type":"literal","value":"preview"},{"type":"literal","value":"preview_off"},{"type":"literal","value":"price_change"},{"type":"literal","value":"price_check"},{"type":"literal","value":"print_add"},{"type":"literal","value":"print_connect"},{"type":"literal","value":"print_disabled"},{"type":"literal","value":"print_error"},{"type":"literal","value":"print_lock"},{"type":"literal","value":"priority"},{"type":"literal","value":"priority_high"},{"type":"literal","value":"privacy"},{"type":"literal","value":"privacy_tip"},{"type":"literal","value":"private_connectivity"},{"type":"literal","value":"problem"},{"type":"literal","value":"procedure"},{"type":"literal","value":"process_chart"},{"type":"literal","value":"production_quantity_limits"},{"type":"literal","value":"productivity"},{"type":"literal","value":"progress_activity"},{"type":"literal","value":"prompt_suggestion"},{"type":"literal","value":"propane"},{"type":"literal","value":"propane_tank"},{"type":"literal","value":"psychiatry"},{"type":"literal","value":"psychology"},{"type":"literal","value":"psychology_alt"},{"type":"literal","value":"public_off"},{"type":"literal","value":"publish"},{"type":"literal","value":"published_with_changes"},{"type":"literal","value":"pulmonology"},{"type":"literal","value":"pulse_alert"},{"type":"literal","value":"punch_clock"},{"type":"literal","value":"push_pin"},{"type":"literal","value":"qr_code"},{"type":"literal","value":"qr_code_2"},{"type":"literal","value":"qr_code_2_add"},{"type":"literal","value":"qr_code_scanner"},{"type":"literal","value":"query_builder"},{"type":"literal","value":"query_stats"},{"type":"literal","value":"question_answer"},{"type":"literal","value":"question_exchange"},{"type":"literal","value":"question_mark"},{"type":"literal","value":"queue"},{"type":"literal","value":"queue_music"},{"type":"literal","value":"queue_play_next"},{"type":"literal","value":"quick_phrases"},{"type":"literal","value":"quick_reference"},{"type":"literal","value":"quick_reference_all"},{"type":"literal","value":"quick_reorder"},{"type":"literal","value":"quickreply"},{"type":"literal","value":"quiz"},{"type":"literal","value":"r_mobiledata"},{"type":"literal","value":"radar"},{"type":"literal","value":"radio_button_checked"},{"type":"literal","value":"radio_button_partial"},{"type":"literal","value":"radio_button_unchecked"},{"type":"literal","value":"radiology"},{"type":"literal","value":"railway_alert"},{"type":"literal","value":"railway_alert_2"},{"type":"literal","value":"rainy"},{"type":"literal","value":"rainy_heavy"},{"type":"literal","value":"rainy_light"},{"type":"literal","value":"rainy_snow"},{"type":"literal","value":"ramen_dining"},{"type":"literal","value":"ramp_left"},{"type":"literal","value":"ramp_right"},{"type":"literal","value":"range_hood"},{"type":"literal","value":"rate_review"},{"type":"literal","value":"raven"},{"type":"literal","value":"raw_off"},{"type":"literal","value":"raw_on"},{"type":"literal","value":"read_more"},{"type":"literal","value":"readiness_score"},{"type":"literal","value":"real_estate_agent"},{"type":"literal","value":"rear_camera"},{"type":"literal","value":"rebase"},{"type":"literal","value":"rebase_edit"},{"type":"literal","value":"receipt_long"},{"type":"literal","value":"receipt_long_off"},{"type":"literal","value":"recent_actors"},{"type":"literal","value":"recent_patient"},{"type":"literal","value":"recenter"},{"type":"literal","value":"recommend"},{"type":"literal","value":"record_voice_over"},{"type":"literal","value":"recycling"},{"type":"literal","value":"redeem"},{"type":"literal","value":"redo"},{"type":"literal","value":"reduce_capacity"},{"type":"literal","value":"regular_expression"},{"type":"literal","value":"relax"},{"type":"literal","value":"release_alert"},{"type":"literal","value":"remember_me"},{"type":"literal","value":"reminder"},{"type":"literal","value":"remote_gen"},{"type":"literal","value":"remove_circle"},{"type":"literal","value":"remove_circle_outline"},{"type":"literal","value":"remove_done"},{"type":"literal","value":"remove_from_queue"},{"type":"literal","value":"remove_moderator"},{"type":"literal","value":"remove_red_eye"},{"type":"literal","value":"remove_road"},{"type":"literal","value":"remove_selection"},{"type":"literal","value":"remove_shopping_cart"},{"type":"literal","value":"reopen_window"},{"type":"literal","value":"reorder"},{"type":"literal","value":"repartition"},{"type":"literal","value":"repeat_on"},{"type":"literal","value":"repeat_one"},{"type":"literal","value":"repeat_one_on"},{"type":"literal","value":"replace_audio"},{"type":"literal","value":"replace_image"},{"type":"literal","value":"replace_video"},{"type":"literal","value":"replay"},{"type":"literal","value":"replay_10"},{"type":"literal","value":"replay_30"},{"type":"literal","value":"replay_5"},{"type":"literal","value":"replay_circle_filled"},{"type":"literal","value":"reply"},{"type":"literal","value":"reply_all"},{"type":"literal","value":"report_gmailerrorred"},{"type":"literal","value":"report_off"},{"type":"literal","value":"report_problem"},{"type":"literal","value":"request_page"},{"type":"literal","value":"request_quote"},{"type":"literal","value":"reset_brightness"},{"type":"literal","value":"reset_exposure"},{"type":"literal","value":"reset_focus"},{"type":"literal","value":"reset_image"},{"type":"literal","value":"reset_iso"},{"type":"literal","value":"reset_settings"},{"type":"literal","value":"reset_shadow"},{"type":"literal","value":"reset_shutter_speed"},{"type":"literal","value":"reset_tv"},{"type":"literal","value":"reset_white_balance"},{"type":"literal","value":"reset_wrench"},{"type":"literal","value":"respiratory_rate"},{"type":"literal","value":"responsive_layout"},{"type":"literal","value":"rest_area"},{"type":"literal","value":"restart_alt"},{"type":"literal","value":"restaurant"},{"type":"literal","value":"restaurant_menu"},{"type":"literal","value":"restore"},{"type":"literal","value":"restore_from_trash"},{"type":"literal","value":"restore_page"},{"type":"literal","value":"resume"},{"type":"literal","value":"reviews"},{"type":"literal","value":"rewarded_ads"},{"type":"literal","value":"rheumatology"},{"type":"literal","value":"rib_cage"},{"type":"literal","value":"rice_bowl"},{"type":"literal","value":"right_click"},{"type":"literal","value":"right_panel_close"},{"type":"literal","value":"right_panel_open"},{"type":"literal","value":"ring_volume"},{"type":"literal","value":"ripples"},{"type":"literal","value":"road"},{"type":"literal","value":"robot"},{"type":"literal","value":"robot_2"},{"type":"literal","value":"rocket"},{"type":"literal","value":"rocket_launch"},{"type":"literal","value":"roller_shades"},{"type":"literal","value":"roller_shades_closed"},{"type":"literal","value":"roller_skating"},{"type":"literal","value":"roofing"},{"type":"literal","value":"room"},{"type":"literal","value":"room_preferences"},{"type":"literal","value":"room_service"},{"type":"literal","value":"rotate_90_degrees_ccw"},{"type":"literal","value":"rotate_90_degrees_cw"},{"type":"literal","value":"rotate_auto"},{"type":"literal","value":"rotate_left"},{"type":"literal","value":"rotate_right"},{"type":"literal","value":"roundabout_left"},{"type":"literal","value":"roundabout_right"},{"type":"literal","value":"rounded_corner"},{"type":"literal","value":"router_off"},{"type":"literal","value":"routine"},{"type":"literal","value":"rowing"},{"type":"literal","value":"rss_feed"},{"type":"literal","value":"rsvp"},{"type":"literal","value":"rtt"},{"type":"literal","value":"rubric"},{"type":"literal","value":"rule"},{"type":"literal","value":"rule_folder"},{"type":"literal","value":"rule_settings"},{"type":"literal","value":"run_circle"},{"type":"literal","value":"running_with_errors"},{"type":"literal","value":"rv_hookup"},{"type":"literal","value":"safety_check"},{"type":"literal","value":"safety_check_off"},{"type":"literal","value":"safety_divider"},{"type":"literal","value":"sailing"},{"type":"literal","value":"salinity"},{"type":"literal","value":"sanitizer"},{"type":"literal","value":"satellite"},{"type":"literal","value":"satellite_alt"},{"type":"literal","value":"sauna"},{"type":"literal","value":"save"},{"type":"literal","value":"save_alt"},{"type":"literal","value":"save_as"},{"type":"literal","value":"save_clock"},{"type":"literal","value":"saved_search"},{"type":"literal","value":"savings"},{"type":"literal","value":"scan"},{"type":"literal","value":"scan_delete"},{"type":"literal","value":"scatter_plot"},{"type":"literal","value":"scene"},{"type":"literal","value":"schedule"},{"type":"literal","value":"schedule_send"},{"type":"literal","value":"schema"},{"type":"literal","value":"school"},{"type":"literal","value":"science"},{"type":"literal","value":"science_off"},{"type":"literal","value":"score"},{"type":"literal","value":"scoreboard"},{"type":"literal","value":"screen_lock_landscape"},{"type":"literal","value":"screen_lock_portrait"},{"type":"literal","value":"screen_lock_rotation"},{"type":"literal","value":"screen_record"},{"type":"literal","value":"screen_rotation"},{"type":"literal","value":"screen_rotation_alt"},{"type":"literal","value":"screen_rotation_up"},{"type":"literal","value":"screen_search_desktop"},{"type":"literal","value":"screen_share"},{"type":"literal","value":"screenshot"},{"type":"literal","value":"screenshot_frame"},{"type":"literal","value":"screenshot_frame_2"},{"type":"literal","value":"screenshot_keyboard"},{"type":"literal","value":"screenshot_monitor"},{"type":"literal","value":"screenshot_region"},{"type":"literal","value":"screenshot_tablet"},{"type":"literal","value":"scrollable_header"},{"type":"literal","value":"scuba_diving"},{"type":"literal","value":"sd"},{"type":"literal","value":"sd_card"},{"type":"literal","value":"sd_card_alert"},{"type":"literal","value":"sd_storage"},{"type":"literal","value":"sdk"},{"type":"literal","value":"search_activity"},{"type":"literal","value":"search_check"},{"type":"literal","value":"search_check_2"},{"type":"literal","value":"search_gear"},{"type":"literal","value":"search_hands_free"},{"type":"literal","value":"search_insights"},{"type":"literal","value":"search_off"},{"type":"literal","value":"seat_cool_left"},{"type":"literal","value":"seat_cool_right"},{"type":"literal","value":"seat_heat_left"},{"type":"literal","value":"seat_heat_right"},{"type":"literal","value":"seat_vent_left"},{"type":"literal","value":"seat_vent_right"},{"type":"literal","value":"security"},{"type":"literal","value":"security_key"},{"type":"literal","value":"security_update"},{"type":"literal","value":"security_update_good"},{"type":"literal","value":"security_update_warning"},{"type":"literal","value":"select_all"},{"type":"literal","value":"select_check_box"},{"type":"literal","value":"select_to_speak"},{"type":"literal","value":"select_window"},{"type":"literal","value":"select_window_2"},{"type":"literal","value":"select_window_off"},{"type":"literal","value":"self_care"},{"type":"literal","value":"self_improvement"},{"type":"literal","value":"sell"},{"type":"literal","value":"send_and_archive"},{"type":"literal","value":"send_money"},{"type":"literal","value":"send_time_extension"},{"type":"literal","value":"send_to_mobile"},{"type":"literal","value":"sensor_door"},{"type":"literal","value":"sensor_occupied"},{"type":"literal","value":"sensor_window"},{"type":"literal","value":"sensors"},{"type":"literal","value":"sensors_krx"},{"type":"literal","value":"sensors_krx_off"},{"type":"literal","value":"sensors_off"},{"type":"literal","value":"sentiment_calm"},{"type":"literal","value":"sentiment_content"},{"type":"literal","value":"sentiment_dissatisfied"},{"type":"literal","value":"sentiment_excited"},{"type":"literal","value":"sentiment_extremely_dissatisfied"},{"type":"literal","value":"sentiment_frustrated"},{"type":"literal","value":"sentiment_neutral"},{"type":"literal","value":"sentiment_sad"},{"type":"literal","value":"sentiment_satisfied"},{"type":"literal","value":"sentiment_satisfied_alt"},{"type":"literal","value":"sentiment_stressed"},{"type":"literal","value":"sentiment_very_dissatisfied"},{"type":"literal","value":"sentiment_very_satisfied"},{"type":"literal","value":"sentiment_worried"},{"type":"literal","value":"serif"},{"type":"literal","value":"server_person"},{"type":"literal","value":"service_toolbox"},{"type":"literal","value":"set_meal"},{"type":"literal","value":"settings_accessibility"},{"type":"literal","value":"settings_account_box"},{"type":"literal","value":"settings_alert"},{"type":"literal","value":"settings_applications"},{"type":"literal","value":"settings_b_roll"},{"type":"literal","value":"settings_backup_restore"},{"type":"literal","value":"settings_bluetooth"},{"type":"literal","value":"settings_brightness"},{"type":"literal","value":"settings_cell"},{"type":"literal","value":"settings_cinematic_blur"},{"type":"literal","value":"settings_ethernet"},{"type":"literal","value":"settings_heart"},{"type":"literal","value":"settings_input_antenna"},{"type":"literal","value":"settings_input_component"},{"type":"literal","value":"settings_input_composite"},{"type":"literal","value":"settings_input_hdmi"},{"type":"literal","value":"settings_input_svideo"},{"type":"literal","value":"settings_motion_mode"},{"type":"literal","value":"settings_night_sight"},{"type":"literal","value":"settings_overscan"},{"type":"literal","value":"settings_panorama"},{"type":"literal","value":"settings_phone"},{"type":"literal","value":"settings_photo_camera"},{"type":"literal","value":"settings_power"},{"type":"literal","value":"settings_remote"},{"type":"literal","value":"settings_seating"},{"type":"literal","value":"settings_slow_motion"},{"type":"literal","value":"settings_suggest"},{"type":"literal","value":"settings_system_daydream"},{"type":"literal","value":"settings_timelapse"},{"type":"literal","value":"settings_video_camera"},{"type":"literal","value":"settings_voice"},{"type":"literal","value":"settop_component"},{"type":"literal","value":"severe_cold"},{"type":"literal","value":"shadow_add"},{"type":"literal","value":"shadow_minus"},{"type":"literal","value":"shape_line"},{"type":"literal","value":"shapes"},{"type":"literal","value":"share_eta"},{"type":"literal","value":"share_location"},{"type":"literal","value":"share_off"},{"type":"literal","value":"share_reviews"},{"type":"literal","value":"share_windows"},{"type":"literal","value":"shaved_ice"},{"type":"literal","value":"sheets_rtl"},{"type":"literal","value":"shelf_auto_hide"},{"type":"literal","value":"shelf_position"},{"type":"literal","value":"shelves"},{"type":"literal","value":"shield_lock"},{"type":"literal","value":"shield_locked"},{"type":"literal","value":"shield_moon"},{"type":"literal","value":"shield_person"},{"type":"literal","value":"shield_question"},{"type":"literal","value":"shield_toggle"},{"type":"literal","value":"shield_watch"},{"type":"literal","value":"shield_with_heart"},{"type":"literal","value":"shield_with_house"},{"type":"literal","value":"shift_lock"},{"type":"literal","value":"shift_lock_off"},{"type":"literal","value":"shop"},{"type":"literal","value":"shop_2"},{"type":"literal","value":"shop_two"},{"type":"literal","value":"shopping_bag"},{"type":"literal","value":"shopping_bag_speed"},{"type":"literal","value":"shopping_basket"},{"type":"literal","value":"shopping_cart"},{"type":"literal","value":"shopping_cart_checkout"},{"type":"literal","value":"shopping_cart_off"},{"type":"literal","value":"shoppingmode"},{"type":"literal","value":"short_stay"},{"type":"literal","value":"short_text"},{"type":"literal","value":"shortcut"},{"type":"literal","value":"show_chart"},{"type":"literal","value":"shuffle_on"},{"type":"literal","value":"shutter_speed"},{"type":"literal","value":"shutter_speed_add"},{"type":"literal","value":"shutter_speed_minus"},{"type":"literal","value":"sick"},{"type":"literal","value":"side_navigation"},{"type":"literal","value":"sign_language"},{"type":"literal","value":"signal_cellular_0_bar"},{"type":"literal","value":"signal_cellular_1_bar"},{"type":"literal","value":"signal_cellular_2_bar"},{"type":"literal","value":"signal_cellular_3_bar"},{"type":"literal","value":"signal_cellular_4_bar"},{"type":"literal","value":"signal_cellular_add"},{"type":"literal","value":"signal_cellular_alt"},{"type":"literal","value":"signal_cellular_alt_1_bar"},{"type":"literal","value":"signal_cellular_alt_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_0_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_1_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_3_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_4_bar"},{"type":"literal","value":"signal_cellular_no_sim"},{"type":"literal","value":"signal_cellular_nodata"},{"type":"literal","value":"signal_cellular_null"},{"type":"literal","value":"signal_cellular_off"},{"type":"literal","value":"signal_cellular_pause"},{"type":"literal","value":"signal_disconnected"},{"type":"literal","value":"signal_wifi_0_bar"},{"type":"literal","value":"signal_wifi_1_bar"},{"type":"literal","value":"signal_wifi_1_bar_lock"},{"type":"literal","value":"signal_wifi_2_bar"},{"type":"literal","value":"signal_wifi_2_bar_lock"},{"type":"literal","value":"signal_wifi_3_bar"},{"type":"literal","value":"signal_wifi_3_bar_lock"},{"type":"literal","value":"signal_wifi_4_bar"},{"type":"literal","value":"signal_wifi_4_bar_lock"},{"type":"literal","value":"signal_wifi_bad"},{"type":"literal","value":"signal_wifi_connected_no_internet_0"},{"type":"literal","value":"signal_wifi_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_off"},{"type":"literal","value":"signal_wifi_statusbar_1_bar"},{"type":"literal","value":"signal_wifi_statusbar_2_bar"},{"type":"literal","value":"signal_wifi_statusbar_3_bar"},{"type":"literal","value":"signal_wifi_statusbar_4_bar"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_statusbar_not_connected"},{"type":"literal","value":"signal_wifi_statusbar_null"},{"type":"literal","value":"signpost"},{"type":"literal","value":"sim_card"},{"type":"literal","value":"sim_card_alert"},{"type":"literal","value":"sim_card_download"},{"type":"literal","value":"simulation"},{"type":"literal","value":"single_bed"},{"type":"literal","value":"sip"},{"type":"literal","value":"siren"},{"type":"literal","value":"siren_check"},{"type":"literal","value":"siren_open"},{"type":"literal","value":"siren_question"},{"type":"literal","value":"skateboarding"},{"type":"literal","value":"skeleton"},{"type":"literal","value":"skillet"},{"type":"literal","value":"skillet_cooktop"},{"type":"literal","value":"skip_next"},{"type":"literal","value":"skip_previous"},{"type":"literal","value":"skull"},{"type":"literal","value":"skull_list"},{"type":"literal","value":"slab_serif"},{"type":"literal","value":"sledding"},{"type":"literal","value":"sleep_score"},{"type":"literal","value":"slide_library"},{"type":"literal","value":"sliders"},{"type":"literal","value":"slideshow"},{"type":"literal","value":"slow_motion_video"},{"type":"literal","value":"smart_button"},{"type":"literal","value":"smart_card_reader"},{"type":"literal","value":"smart_card_reader_off"},{"type":"literal","value":"smart_display"},{"type":"literal","value":"smart_outlet"},{"type":"literal","value":"smart_screen"},{"type":"literal","value":"smart_toy"},{"type":"literal","value":"smb_share"},{"type":"literal","value":"smoke_free"},{"type":"literal","value":"smoking_rooms"},{"type":"literal","value":"sms"},{"type":"literal","value":"sms_failed"},{"type":"literal","value":"snippet_folder"},{"type":"literal","value":"snooze"},{"type":"literal","value":"snowboarding"},{"type":"literal","value":"snowing"},{"type":"literal","value":"snowing_heavy"},{"type":"literal","value":"snowmobile"},{"type":"literal","value":"snowshoeing"},{"type":"literal","value":"soap"},{"type":"literal","value":"soba"},{"type":"literal","value":"social_distance"},{"type":"literal","value":"social_leaderboard"},{"type":"literal","value":"solar_power"},{"type":"literal","value":"solo_dining"},{"type":"literal","value":"sort_by_alpha"},{"type":"literal","value":"sound_detection_dog_barking"},{"type":"literal","value":"sound_detection_glass_break"},{"type":"literal","value":"sound_detection_loud_sound"},{"type":"literal","value":"sound_sampler"},{"type":"literal","value":"soup_kitchen"},{"type":"literal","value":"source_environment"},{"type":"literal","value":"source_notes"},{"type":"literal","value":"south"},{"type":"literal","value":"south_america"},{"type":"literal","value":"south_east"},{"type":"literal","value":"south_west"},{"type":"literal","value":"spa"},{"type":"literal","value":"space_bar"},{"type":"literal","value":"space_dashboard"},{"type":"literal","value":"spatial_audio"},{"type":"literal","value":"spatial_audio_off"},{"type":"literal","value":"spatial_speaker"},{"type":"literal","value":"spatial_tracking"},{"type":"literal","value":"speaker_group"},{"type":"literal","value":"speaker_notes"},{"type":"literal","value":"speaker_notes_off"},{"type":"literal","value":"speaker_phone"},{"type":"literal","value":"special_character"},{"type":"literal","value":"specific_gravity"},{"type":"literal","value":"speech_to_text"},{"type":"literal","value":"speed_0_25"},{"type":"literal","value":"speed_0_2x"},{"type":"literal","value":"speed_0_5"},{"type":"literal","value":"speed_0_5x"},{"type":"literal","value":"speed_0_75"},{"type":"literal","value":"speed_0_7x"},{"type":"literal","value":"speed_1_2"},{"type":"literal","value":"speed_1_25"},{"type":"literal","value":"speed_1_2x"},{"type":"literal","value":"speed_1_5"},{"type":"literal","value":"speed_1_5x"},{"type":"literal","value":"speed_1_75"},{"type":"literal","value":"speed_1_7x"},{"type":"literal","value":"speed_2x"},{"type":"literal","value":"speed_camera"},{"type":"literal","value":"spellcheck"},{"type":"literal","value":"split_scene"},{"type":"literal","value":"split_scene_down"},{"type":"literal","value":"split_scene_left"},{"type":"literal","value":"split_scene_right"},{"type":"literal","value":"split_scene_up"},{"type":"literal","value":"splitscreen"},{"type":"literal","value":"splitscreen_add"},{"type":"literal","value":"splitscreen_bottom"},{"type":"literal","value":"splitscreen_landscape"},{"type":"literal","value":"splitscreen_left"},{"type":"literal","value":"splitscreen_portrait"},{"type":"literal","value":"splitscreen_right"},{"type":"literal","value":"splitscreen_top"},{"type":"literal","value":"splitscreen_vertical_add"},{"type":"literal","value":"spo2"},{"type":"literal","value":"spoke"},{"type":"literal","value":"sports"},{"type":"literal","value":"sports_and_outdoors"},{"type":"literal","value":"sports_bar"},{"type":"literal","value":"sports_baseball"},{"type":"literal","value":"sports_basketball"},{"type":"literal","value":"sports_cricket"},{"type":"literal","value":"sports_esports"},{"type":"literal","value":"sports_football"},{"type":"literal","value":"sports_golf"},{"type":"literal","value":"sports_gymnastics"},{"type":"literal","value":"sports_handball"},{"type":"literal","value":"sports_hockey"},{"type":"literal","value":"sports_kabaddi"},{"type":"literal","value":"sports_martial_arts"},{"type":"literal","value":"sports_mma"},{"type":"literal","value":"sports_motorsports"},{"type":"literal","value":"sports_rugby"},{"type":"literal","value":"sports_score"},{"type":"literal","value":"sports_soccer"},{"type":"literal","value":"sports_tennis"},{"type":"literal","value":"sports_volleyball"},{"type":"literal","value":"sprint"},{"type":"literal","value":"square_dot"},{"type":"literal","value":"square_foot"},{"type":"literal","value":"ssid_chart"},{"type":"literal","value":"stack_group"},{"type":"literal","value":"stack_hexagon"},{"type":"literal","value":"stack_off"},{"type":"literal","value":"stack_star"},{"type":"literal","value":"stacked_bar_chart"},{"type":"literal","value":"stacked_email"},{"type":"literal","value":"stacked_inbox"},{"type":"literal","value":"stacked_line_chart"},{"type":"literal","value":"stacks"},{"type":"literal","value":"stadia_controller"},{"type":"literal","value":"stadium"},{"type":"literal","value":"stairs_2"},{"type":"literal","value":"star_border"},{"type":"literal","value":"star_border_purple500"},{"type":"literal","value":"star_half"},{"type":"literal","value":"star_outline"},{"type":"literal","value":"star_purple500"},{"type":"literal","value":"star_rate"},{"type":"literal","value":"star_rate_half"},{"type":"literal","value":"star_shine"},{"type":"literal","value":"stars"},{"type":"literal","value":"stars_2"},{"type":"literal","value":"stat_0"},{"type":"literal","value":"stat_1"},{"type":"literal","value":"stat_2"},{"type":"literal","value":"stat_3"},{"type":"literal","value":"stat_minus_1"},{"type":"literal","value":"stat_minus_2"},{"type":"literal","value":"stat_minus_3"},{"type":"literal","value":"stay_current_landscape"},{"type":"literal","value":"stay_current_portrait"},{"type":"literal","value":"stay_primary_landscape"},{"type":"literal","value":"stay_primary_portrait"},{"type":"literal","value":"steering_wheel_heat"},{"type":"literal","value":"step"},{"type":"literal","value":"step_into"},{"type":"literal","value":"step_out"},{"type":"literal","value":"step_over"},{"type":"literal","value":"steppers"},{"type":"literal","value":"steps"},{"type":"literal","value":"stethoscope_arrow"},{"type":"literal","value":"stethoscope_check"},{"type":"literal","value":"sticky_note"},{"type":"literal","value":"sticky_note_2"},{"type":"literal","value":"stock_media"},{"type":"literal","value":"stockpot"},{"type":"literal","value":"stop_circle"},{"type":"literal","value":"stop_screen_share"},{"type":"literal","value":"store"},{"type":"literal","value":"store_mall_directory"},{"type":"literal","value":"storm"},{"type":"literal","value":"straight"},{"type":"literal","value":"straighten"},{"type":"literal","value":"strategy"},{"type":"literal","value":"stream"},{"type":"literal","value":"streetview"},{"type":"literal","value":"stress_management"},{"type":"literal","value":"strikethrough_s"},{"type":"literal","value":"stroke_full"},{"type":"literal","value":"stroke_partial"},{"type":"literal","value":"styler"},{"type":"literal","value":"stylus"},{"type":"literal","value":"stylus_brush"},{"type":"literal","value":"stylus_fountain_pen"},{"type":"literal","value":"stylus_highlighter"},{"type":"literal","value":"stylus_laser_pointer"},{"type":"literal","value":"stylus_note"},{"type":"literal","value":"stylus_pen"},{"type":"literal","value":"stylus_pencil"},{"type":"literal","value":"subdirectory_arrow_left"},{"type":"literal","value":"subdirectory_arrow_right"},{"type":"literal","value":"subheader"},{"type":"literal","value":"subject"},{"type":"literal","value":"subscript"},{"type":"literal","value":"subscriptions"},{"type":"literal","value":"subtitles"},{"type":"literal","value":"subtitles_gear"},{"type":"literal","value":"subtitles_off"},{"type":"literal","value":"subway"},{"type":"literal","value":"subway_walk"},{"type":"literal","value":"summarize"},{"type":"literal","value":"sunny"},{"type":"literal","value":"sunny_snowing"},{"type":"literal","value":"superscript"},{"type":"literal","value":"supervised_user_circle"},{"type":"literal","value":"supervised_user_circle_off"},{"type":"literal","value":"supervisor_account"},{"type":"literal","value":"support"},{"type":"literal","value":"support_agent"},{"type":"literal","value":"surfing"},{"type":"literal","value":"surgical"},{"type":"literal","value":"surround_sound"},{"type":"literal","value":"swap_calls"},{"type":"literal","value":"swap_driving_apps"},{"type":"literal","value":"swap_driving_apps_wheel"},{"type":"literal","value":"swap_horiz"},{"type":"literal","value":"swap_horizontal_circle"},{"type":"literal","value":"swap_vert"},{"type":"literal","value":"swap_vertical_circle"},{"type":"literal","value":"sweep"},{"type":"literal","value":"swipe"},{"type":"literal","value":"swipe_down"},{"type":"literal","value":"swipe_down_alt"},{"type":"literal","value":"swipe_left"},{"type":"literal","value":"swipe_left_alt"},{"type":"literal","value":"swipe_right"},{"type":"literal","value":"swipe_right_alt"},{"type":"literal","value":"swipe_up"},{"type":"literal","value":"swipe_up_alt"},{"type":"literal","value":"swipe_vertical"},{"type":"literal","value":"switch_access"},{"type":"literal","value":"switch_access_2"},{"type":"literal","value":"switch_access_3"},{"type":"literal","value":"switch_access_shortcut"},{"type":"literal","value":"switch_access_shortcut_add"},{"type":"literal","value":"switch_account"},{"type":"literal","value":"switch_camera"},{"type":"literal","value":"switch_left"},{"type":"literal","value":"switch_right"},{"type":"literal","value":"switch_video"},{"type":"literal","value":"switches"},{"type":"literal","value":"sword_rose"},{"type":"literal","value":"swords"},{"type":"literal","value":"symptoms"},{"type":"literal","value":"synagogue"},{"type":"literal","value":"sync"},{"type":"literal","value":"sync_alt"},{"type":"literal","value":"sync_arrow_down"},{"type":"literal","value":"sync_arrow_up"},{"type":"literal","value":"sync_desktop"},{"type":"literal","value":"sync_disabled"},{"type":"literal","value":"sync_lock"},{"type":"literal","value":"sync_problem"},{"type":"literal","value":"sync_saved_locally"},{"type":"literal","value":"sync_saved_locally_off"},{"type":"literal","value":"system_security_update"},{"type":"literal","value":"system_security_update_good"},{"type":"literal","value":"system_security_update_warning"},{"type":"literal","value":"system_update"},{"type":"literal","value":"system_update_alt"},{"type":"literal","value":"tab_close"},{"type":"literal","value":"tab_close_inactive"},{"type":"literal","value":"tab_close_right"},{"type":"literal","value":"tab_duplicate"},{"type":"literal","value":"tab_group"},{"type":"literal","value":"tab_inactive"},{"type":"literal","value":"tab_move"},{"type":"literal","value":"tab_new_right"},{"type":"literal","value":"tab_recent"},{"type":"literal","value":"tab_search"},{"type":"literal","value":"tab_unselected"},{"type":"literal","value":"table_bar"},{"type":"literal","value":"table_chart"},{"type":"literal","value":"table_chart_view"},{"type":"literal","value":"table_convert"},{"type":"literal","value":"table_edit"},{"type":"literal","value":"table_eye"},{"type":"literal","value":"table_lamp"},{"type":"literal","value":"table_large"},{"type":"literal","value":"table_restaurant"},{"type":"literal","value":"table_rows"},{"type":"literal","value":"table_rows_narrow"},{"type":"literal","value":"table_sign"},{"type":"literal","value":"table_view"},{"type":"literal","value":"tablet_android"},{"type":"literal","value":"tablet_camera"},{"type":"literal","value":"tablet_mac"},{"type":"literal","value":"tabs"},{"type":"literal","value":"tactic"},{"type":"literal","value":"tag_faces"},{"type":"literal","value":"takeout_dining"},{"type":"literal","value":"takeout_dining_2"},{"type":"literal","value":"tamper_detection_off"},{"type":"literal","value":"tamper_detection_on"},{"type":"literal","value":"tap_and_play"},{"type":"literal","value":"tapas"},{"type":"literal","value":"task"},{"type":"literal","value":"task_alt"},{"type":"literal","value":"tatami_seat"},{"type":"literal","value":"taunt"},{"type":"literal","value":"taxi_alert"},{"type":"literal","value":"team_dashboard"},{"type":"literal","value":"temp_preferences_eco"},{"type":"literal","value":"temple_buddhist"},{"type":"literal","value":"temple_hindu"},{"type":"literal","value":"tenancy"},{"type":"literal","value":"terrain"},{"type":"literal","value":"text_ad"},{"type":"literal","value":"text_compare"},{"type":"literal","value":"text_decrease"},{"type":"literal","value":"text_fields"},{"type":"literal","value":"text_fields_alt"},{"type":"literal","value":"text_format"},{"type":"literal","value":"text_increase"},{"type":"literal","value":"text_rotate_up"},{"type":"literal","value":"text_rotate_vertical"},{"type":"literal","value":"text_rotation_angledown"},{"type":"literal","value":"text_rotation_angleup"},{"type":"literal","value":"text_rotation_down"},{"type":"literal","value":"text_rotation_none"},{"type":"literal","value":"text_select_end"},{"type":"literal","value":"text_select_jump_to_beginning"},{"type":"literal","value":"text_select_jump_to_end"},{"type":"literal","value":"text_select_move_back_character"},{"type":"literal","value":"text_select_move_back_word"},{"type":"literal","value":"text_select_move_down"},{"type":"literal","value":"text_select_move_forward_character"},{"type":"literal","value":"text_select_move_forward_word"},{"type":"literal","value":"text_select_move_up"},{"type":"literal","value":"text_select_start"},{"type":"literal","value":"text_snippet"},{"type":"literal","value":"text_to_speech"},{"type":"literal","value":"text_up"},{"type":"literal","value":"textsms"},{"type":"literal","value":"texture"},{"type":"literal","value":"texture_add"},{"type":"literal","value":"texture_minus"},{"type":"literal","value":"theater_comedy"},{"type":"literal","value":"theaters"},{"type":"literal","value":"thermometer_add"},{"type":"literal","value":"thermometer_gain"},{"type":"literal","value":"thermometer_loss"},{"type":"literal","value":"thermometer_minus"},{"type":"literal","value":"thermostat"},{"type":"literal","value":"thermostat_arrow_down"},{"type":"literal","value":"thermostat_arrow_up"},{"type":"literal","value":"thermostat_auto"},{"type":"literal","value":"thermostat_carbon"},{"type":"literal","value":"things_to_do"},{"type":"literal","value":"thread_unread"},{"type":"literal","value":"threat_intelligence"},{"type":"literal","value":"thumb_down"},{"type":"literal","value":"thumb_down_alt"},{"type":"literal","value":"thumb_down_off_alt"},{"type":"literal","value":"thumb_up"},{"type":"literal","value":"thumb_up_alt"},{"type":"literal","value":"thumb_up_off_alt"},{"type":"literal","value":"thumbnail_bar"},{"type":"literal","value":"thumbs_up_double"},{"type":"literal","value":"thumbs_up_down"},{"type":"literal","value":"thunderstorm"},{"type":"literal","value":"tibia"},{"type":"literal","value":"tibia_alt"},{"type":"literal","value":"tile_large"},{"type":"literal","value":"tile_medium"},{"type":"literal","value":"tile_small"},{"type":"literal","value":"time_auto"},{"type":"literal","value":"time_to_leave"},{"type":"literal","value":"timeline"},{"type":"literal","value":"timer_1"},{"type":"literal","value":"timer_10"},{"type":"literal","value":"timer_10_alt_1"},{"type":"literal","value":"timer_10_select"},{"type":"literal","value":"timer_2"},{"type":"literal","value":"timer_3"},{"type":"literal","value":"timer_3_alt_1"},{"type":"literal","value":"timer_3_select"},{"type":"literal","value":"timer_5"},{"type":"literal","value":"timer_5_shutter"},{"type":"literal","value":"timer_arrow_down"},{"type":"literal","value":"timer_arrow_up"},{"type":"literal","value":"timer_off"},{"type":"literal","value":"timer_pause"},{"type":"literal","value":"timer_play"},{"type":"literal","value":"tips_and_updates"},{"type":"literal","value":"tire_repair"},{"type":"literal","value":"titlecase"},{"type":"literal","value":"toast"},{"type":"literal","value":"toc"},{"type":"literal","value":"today"},{"type":"literal","value":"toggle_off"},{"type":"literal","value":"toggle_on"},{"type":"literal","value":"token"},{"type":"literal","value":"toll"},{"type":"literal","value":"tonality"},{"type":"literal","value":"tonality_2"},{"type":"literal","value":"tools_flat_head"},{"type":"literal","value":"tools_installation_kit"},{"type":"literal","value":"tools_ladder"},{"type":"literal","value":"tools_level"},{"type":"literal","value":"tools_phillips"},{"type":"literal","value":"tools_pliers_wire_stripper"},{"type":"literal","value":"tools_power_drill"},{"type":"literal","value":"tooltip_2"},{"type":"literal","value":"top_panel_close"},{"type":"literal","value":"top_panel_open"},{"type":"literal","value":"topic"},{"type":"literal","value":"total_dissolved_solids"},{"type":"literal","value":"touch_app"},{"type":"literal","value":"touch_double"},{"type":"literal","value":"touch_long"},{"type":"literal","value":"touch_triple"},{"type":"literal","value":"touchpad_mouse"},{"type":"literal","value":"touchpad_mouse_off"},{"type":"literal","value":"tour"},{"type":"literal","value":"toys"},{"type":"literal","value":"toys_and_games"},{"type":"literal","value":"toys_fan"},{"type":"literal","value":"track_changes"},{"type":"literal","value":"trackpad_input"},{"type":"literal","value":"trackpad_input_2"},{"type":"literal","value":"trackpad_input_3"},{"type":"literal","value":"traffic"},{"type":"literal","value":"traffic_jam"},{"type":"literal","value":"trail_length"},{"type":"literal","value":"trail_length_medium"},{"type":"literal","value":"trail_length_short"},{"type":"literal","value":"train"},{"type":"literal","value":"transcribe"},{"type":"literal","value":"transfer_within_a_station"},{"type":"literal","value":"transgender"},{"type":"literal","value":"transit_enterexit"},{"type":"literal","value":"transit_ticket"},{"type":"literal","value":"transition_chop"},{"type":"literal","value":"transition_dissolve"},{"type":"literal","value":"transition_fade"},{"type":"literal","value":"transition_push"},{"type":"literal","value":"transition_slide"},{"type":"literal","value":"translate_indic"},{"type":"literal","value":"transportation"},{"type":"literal","value":"travel"},{"type":"literal","value":"travel_explore"},{"type":"literal","value":"travel_luggage_and_bags"},{"type":"literal","value":"trending_down"},{"type":"literal","value":"trending_flat"},{"type":"literal","value":"trending_up"},{"type":"literal","value":"trip"},{"type":"literal","value":"trip_origin"},{"type":"literal","value":"trolley"},{"type":"literal","value":"trolley_cable_car"},{"type":"literal","value":"troubleshoot"},{"type":"literal","value":"tsunami"},{"type":"literal","value":"tsv"},{"type":"literal","value":"tty"},{"type":"literal","value":"tune"},{"type":"literal","value":"tungsten"},{"type":"literal","value":"turn_left"},{"type":"literal","value":"turn_right"},{"type":"literal","value":"turn_sharp_left"},{"type":"literal","value":"turn_sharp_right"},{"type":"literal","value":"turn_slight_left"},{"type":"literal","value":"turn_slight_right"},{"type":"literal","value":"turned_in"},{"type":"literal","value":"turned_in_not"},{"type":"literal","value":"tv_displays"},{"type":"literal","value":"tv_gen"},{"type":"literal","value":"tv_guide"},{"type":"literal","value":"tv_next"},{"type":"literal","value":"tv_off"},{"type":"literal","value":"tv_options_edit_channels"},{"type":"literal","value":"tv_options_input_settings"},{"type":"literal","value":"tv_remote"},{"type":"literal","value":"tv_signin"},{"type":"literal","value":"tv_with_assistant"},{"type":"literal","value":"two_pager"},{"type":"literal","value":"two_pager_store"},{"type":"literal","value":"two_wheeler"},{"type":"literal","value":"type_specimen"},{"type":"literal","value":"u_turn_left"},{"type":"literal","value":"u_turn_right"},{"type":"literal","value":"udon"},{"type":"literal","value":"ulna_radius"},{"type":"literal","value":"ulna_radius_alt"},{"type":"literal","value":"unarchive"},{"type":"literal","value":"undo"},{"type":"literal","value":"unfold_less"},{"type":"literal","value":"unfold_less_double"},{"type":"literal","value":"unfold_more"},{"type":"literal","value":"unfold_more_double"},{"type":"literal","value":"ungroup"},{"type":"literal","value":"universal_currency"},{"type":"literal","value":"universal_currency_alt"},{"type":"literal","value":"universal_local"},{"type":"literal","value":"unknown_2"},{"type":"literal","value":"unknown_5"},{"type":"literal","value":"unknown_7"},{"type":"literal","value":"unknown_document"},{"type":"literal","value":"unknown_med"},{"type":"literal","value":"unlicense"},{"type":"literal","value":"unpaved_road"},{"type":"literal","value":"unpublished"},{"type":"literal","value":"unsubscribe"},{"type":"literal","value":"upcoming"},{"type":"literal","value":"update_disabled"},{"type":"literal","value":"upgrade"},{"type":"literal","value":"upi_pay"},{"type":"literal","value":"upload"},{"type":"literal","value":"upload_2"},{"type":"literal","value":"upload_file"},{"type":"literal","value":"urology"},{"type":"literal","value":"usb"},{"type":"literal","value":"usb_off"},{"type":"literal","value":"user_attributes"},{"type":"literal","value":"vaccines"},{"type":"literal","value":"vacuum"},{"type":"literal","value":"valve"},{"type":"literal","value":"vape_free"},{"type":"literal","value":"vaping_rooms"},{"type":"literal","value":"variable_add"},{"type":"literal","value":"variable_insert"},{"type":"literal","value":"variable_remove"},{"type":"literal","value":"variables"},{"type":"literal","value":"ventilator"},{"type":"literal","value":"verified"},{"type":"literal","value":"verified_off"},{"type":"literal","value":"verified_user"},{"type":"literal","value":"vertical_align_bottom"},{"type":"literal","value":"vertical_align_center"},{"type":"literal","value":"vertical_align_top"},{"type":"literal","value":"vertical_distribute"},{"type":"literal","value":"vertical_shades"},{"type":"literal","value":"vertical_shades_closed"},{"type":"literal","value":"vertical_split"},{"type":"literal","value":"vibration"},{"type":"literal","value":"video_call"},{"type":"literal","value":"video_camera_back"},{"type":"literal","value":"video_camera_back_add"},{"type":"literal","value":"video_camera_front"},{"type":"literal","value":"video_camera_front_off"},{"type":"literal","value":"video_chat"},{"type":"literal","value":"video_file"},{"type":"literal","value":"video_label"},{"type":"literal","value":"video_library"},{"type":"literal","value":"video_search"},{"type":"literal","value":"video_settings"},{"type":"literal","value":"video_stable"},{"type":"literal","value":"videocam"},{"type":"literal","value":"videocam_alert"},{"type":"literal","value":"videocam_off"},{"type":"literal","value":"videogame_asset"},{"type":"literal","value":"videogame_asset_off"},{"type":"literal","value":"view_agenda"},{"type":"literal","value":"view_apps"},{"type":"literal","value":"view_array"},{"type":"literal","value":"view_carousel"},{"type":"literal","value":"view_column"},{"type":"literal","value":"view_column_2"},{"type":"literal","value":"view_comfy"},{"type":"literal","value":"view_comfy_alt"},{"type":"literal","value":"view_compact"},{"type":"literal","value":"view_compact_alt"},{"type":"literal","value":"view_cozy"},{"type":"literal","value":"view_day"},{"type":"literal","value":"view_headline"},{"type":"literal","value":"view_in_ar"},{"type":"literal","value":"view_in_ar_off"},{"type":"literal","value":"view_kanban"},{"type":"literal","value":"view_list"},{"type":"literal","value":"view_module"},{"type":"literal","value":"view_object_track"},{"type":"literal","value":"view_quilt"},{"type":"literal","value":"view_real_size"},{"type":"literal","value":"view_sidebar"},{"type":"literal","value":"view_stream"},{"type":"literal","value":"view_timeline"},{"type":"literal","value":"view_week"},{"type":"literal","value":"vignette"},{"type":"literal","value":"vignette_2"},{"type":"literal","value":"villa"},{"type":"literal","value":"visibility_lock"},{"type":"literal","value":"visibility_off"},{"type":"literal","value":"vital_signs"},{"type":"literal","value":"vo2_max"},{"type":"literal","value":"voice_chat"},{"type":"literal","value":"voice_over_off"},{"type":"literal","value":"voice_selection"},{"type":"literal","value":"voice_selection_off"},{"type":"literal","value":"voicemail"},{"type":"literal","value":"voicemail_2"},{"type":"literal","value":"volcano"},{"type":"literal","value":"volume_down"},{"type":"literal","value":"volume_down_alt"},{"type":"literal","value":"volume_mute"},{"type":"literal","value":"volume_off"},{"type":"literal","value":"volume_up"},{"type":"literal","value":"volunteer_activism"},{"type":"literal","value":"voting_chip"},{"type":"literal","value":"vpn_key"},{"type":"literal","value":"vpn_key_alert"},{"type":"literal","value":"vpn_key_off"},{"type":"literal","value":"vpn_lock"},{"type":"literal","value":"vpn_lock_2"},{"type":"literal","value":"vr180_create2d"},{"type":"literal","value":"vr180_create2d_off"},{"type":"literal","value":"vrpano"},{"type":"literal","value":"wall_art"},{"type":"literal","value":"wall_lamp"},{"type":"literal","value":"wallet"},{"type":"literal","value":"wallpaper"},{"type":"literal","value":"wallpaper_slideshow"},{"type":"literal","value":"wand_shine"},{"type":"literal","value":"wand_stars"},{"type":"literal","value":"ward"},{"type":"literal","value":"warehouse"},{"type":"literal","value":"warning"},{"type":"literal","value":"warning_amber"},{"type":"literal","value":"warning_off"},{"type":"literal","value":"wash"},{"type":"literal","value":"washoku"},{"type":"literal","value":"watch"},{"type":"literal","value":"watch_arrow"},{"type":"literal","value":"watch_button_press"},{"type":"literal","value":"watch_check"},{"type":"literal","value":"watch_later"},{"type":"literal","value":"watch_off"},{"type":"literal","value":"watch_screentime"},{"type":"literal","value":"watch_vibration"},{"type":"literal","value":"watch_wake"},{"type":"literal","value":"water"},{"type":"literal","value":"water_bottle"},{"type":"literal","value":"water_bottle_large"},{"type":"literal","value":"water_damage"},{"type":"literal","value":"water_do"},{"type":"literal","value":"water_drop"},{"type":"literal","value":"water_ec"},{"type":"literal","value":"water_full"},{"type":"literal","value":"water_heater"},{"type":"literal","value":"water_lock"},{"type":"literal","value":"water_loss"},{"type":"literal","value":"water_lux"},{"type":"literal","value":"water_medium"},{"type":"literal","value":"water_orp"},{"type":"literal","value":"water_ph"},{"type":"literal","value":"water_pump"},{"type":"literal","value":"water_voc"},{"type":"literal","value":"waterfall_chart"},{"type":"literal","value":"waves"},{"type":"literal","value":"waving_hand"},{"type":"literal","value":"wb_auto"},{"type":"literal","value":"wb_cloudy"},{"type":"literal","value":"wb_incandescent"},{"type":"literal","value":"wb_iridescent"},{"type":"literal","value":"wb_shade"},{"type":"literal","value":"wb_sunny"},{"type":"literal","value":"wb_twighlight"},{"type":"literal","value":"wb_twilight"},{"type":"literal","value":"wc"},{"type":"literal","value":"weather_hail"},{"type":"literal","value":"weather_mix"},{"type":"literal","value":"weather_snowy"},{"type":"literal","value":"web_asset"},{"type":"literal","value":"web_asset_off"},{"type":"literal","value":"web_stories"},{"type":"literal","value":"web_traffic"},{"type":"literal","value":"webhook"},{"type":"literal","value":"weekend"},{"type":"literal","value":"weight"},{"type":"literal","value":"west"},{"type":"literal","value":"whatshot"},{"type":"literal","value":"wheelchair_pickup"},{"type":"literal","value":"where_to_vote"},{"type":"literal","value":"widget_medium"},{"type":"literal","value":"widget_small"},{"type":"literal","value":"widget_width"},{"type":"literal","value":"widgets"},{"type":"literal","value":"width_full"},{"type":"literal","value":"width_normal"},{"type":"literal","value":"width_wide"},{"type":"literal","value":"wifi_1_bar"},{"type":"literal","value":"wifi_2_bar"},{"type":"literal","value":"wifi_add"},{"type":"literal","value":"wifi_calling"},{"type":"literal","value":"wifi_calling_1"},{"type":"literal","value":"wifi_calling_2"},{"type":"literal","value":"wifi_calling_3"},{"type":"literal","value":"wifi_calling_bar_1"},{"type":"literal","value":"wifi_calling_bar_2"},{"type":"literal","value":"wifi_calling_bar_3"},{"type":"literal","value":"wifi_channel"},{"type":"literal","value":"wifi_find"},{"type":"literal","value":"wifi_home"},{"type":"literal","value":"wifi_lock"},{"type":"literal","value":"wifi_notification"},{"type":"literal","value":"wifi_off"},{"type":"literal","value":"wifi_password"},{"type":"literal","value":"wifi_protected_setup"},{"type":"literal","value":"wifi_proxy"},{"type":"literal","value":"wifi_tethering"},{"type":"literal","value":"wifi_tethering_error"},{"type":"literal","value":"wifi_tethering_off"},{"type":"literal","value":"wind_power"},{"type":"literal","value":"window_closed"},{"type":"literal","value":"window_open"},{"type":"literal","value":"window_sensor"},{"type":"literal","value":"windshield_defrost_auto"},{"type":"literal","value":"windshield_defrost_front"},{"type":"literal","value":"windshield_defrost_rear"},{"type":"literal","value":"windshield_heat_front"},{"type":"literal","value":"wine_bar"},{"type":"literal","value":"woman"},{"type":"literal","value":"woman_2"},{"type":"literal","value":"work"},{"type":"literal","value":"work_alert"},{"type":"literal","value":"work_history"},{"type":"literal","value":"work_off"},{"type":"literal","value":"work_outline"},{"type":"literal","value":"work_update"},{"type":"literal","value":"workspace_premium"},{"type":"literal","value":"workspaces"},{"type":"literal","value":"workspaces_filled"},{"type":"literal","value":"workspaces_outline"},{"type":"literal","value":"wounds_injuries"},{"type":"literal","value":"wrap_text"},{"type":"literal","value":"wrist"},{"type":"literal","value":"wrong_location"},{"type":"literal","value":"wysiwyg"},{"type":"literal","value":"yakitori"},{"type":"literal","value":"yard"},{"type":"literal","value":"yoshoku"},{"type":"literal","value":"your_trips"},{"type":"literal","value":"youtube_activity"},{"type":"literal","value":"youtube_searched_for"},{"type":"literal","value":"zone_person_alert"},{"type":"literal","value":"zone_person_idle"},{"type":"literal","value":"zone_person_urgent"},{"type":"literal","value":"zoom_in"},{"type":"literal","value":"zoom_in_map"},{"type":"literal","value":"zoom_out"},{"type":"literal","value":"zoom_out_map"}]}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"literal","value":"function"},{"type":"literal","value":"join"},{"type":"literal","value":"shift"},{"type":"literal","value":"sort"},{"type":"literal","value":"map"},{"type":"literal","value":"filter"},{"type":"literal","value":"source"},{"type":"literal","value":"style"},{"type":"literal","value":"accessible"},{"type":"literal","value":"search"},{"type":"literal","value":"repeat"},{"type":"literal","value":"anchor"},{"type":"literal","value":"link"},{"type":"literal","value":"key"},{"type":"literal","value":"history"},{"type":"literal","value":"target"},{"type":"literal","value":"tab"},{"type":"literal","value":"route"},{"type":"literal","value":"stack"},{"type":"literal","value":"merge"},{"type":"literal","value":"navigation"},{"type":"literal","value":"article"},{"type":"literal","value":"code"},{"type":"literal","value":"details"},{"type":"literal","value":"html"},{"type":"literal","value":"iframe"},{"type":"literal","value":"input"},{"type":"literal","value":"label"},{"type":"literal","value":"menu"},{"type":"literal","value":"output"},{"type":"literal","value":"script"},{"type":"literal","value":"select"},{"type":"literal","value":"table"},{"type":"literal","value":"title"},{"type":"literal","value":"circle"},{"type":"literal","value":"image"},{"type":"literal","value":"pattern"},{"type":"literal","value":"polyline"},{"type":"literal","value":"stop"},{"type":"literal","value":"switch"},{"type":"literal","value":"event"},{"type":"literal","value":"create"},{"type":"literal","value":"segment"},{"type":"literal","value":"groups"},{"type":"literal","value":"delete"},{"type":"literal","value":"mode"},{"type":"literal","value":"report"},{"type":"literal","value":"error"},{"type":"literal","value":"opacity"},{"type":"literal","value":"elevation"},{"type":"literal","value":"visibility"},{"type":"literal","value":"height"},{"type":"literal","value":"margin"},{"type":"literal","value":"padding"},{"type":"literal","value":"start"},{"type":"literal","value":"transform"},{"type":"literal","value":"done"},{"type":"literal","value":"difference"},{"type":"literal","value":"scale"},{"type":"literal","value":"colors"},{"type":"literal","value":"description"},{"type":"literal","value":"contrast"},{"type":"literal","value":"radio"},{"type":"literal","value":"timer"},{"type":"literal","value":"list"},{"type":"literal","value":"toolbar"},{"type":"literal","value":"feed"},{"type":"literal","value":"group"},{"type":"literal","value":"note"},{"type":"literal","value":"tooltip"},{"type":"literal","value":"light"},{"type":"literal","value":"uppercase"},{"type":"literal","value":"lowercase"},{"type":"literal","value":"ios"},{"type":"literal","value":"android"},{"type":"literal","value":"web"},{"type":"literal","value":"email"},{"type":"literal","value":"clear"},{"type":"literal","value":"resize"},{"type":"literal","value":"translate"},{"type":"literal","value":"animation"},{"type":"literal","value":"phone"},{"type":"literal","value":"send"},{"type":"literal","value":"flip"},{"type":"literal","value":"expand"},{"type":"literal","value":"window"},{"type":"literal","value":"speed"},{"type":"literal","value":"badge"},{"type":"literal","value":"message"},{"type":"literal","value":"close"},{"type":"literal","value":"print"},{"type":"literal","value":"cancel"},{"type":"literal","value":"pause"},{"type":"literal","value":"storage"},{"type":"literal","value":"refresh"},{"type":"literal","value":"info"},{"type":"literal","value":"http"},{"type":"literal","value":"enable"},{"type":"literal","value":"update"},{"type":"literal","value":"remove"},{"type":"literal","value":"fingerprint"},{"type":"literal","value":"portrait"},{"type":"literal","value":"landscape"},{"type":"literal","value":"fullscreen"},{"type":"literal","value":"dangerous"},{"type":"literal","value":"metro"},{"type":"literal","value":"flag"},{"type":"literal","value":"signature"},{"type":"literal","value":"package"},{"type":"literal","value":"category"},{"type":"literal","value":"build"},{"type":"literal","value":"settings"},{"type":"literal","value":"comment"},{"type":"literal","value":"tag"},{"type":"literal","value":"host"},{"type":"literal","value":"add"},{"type":"literal","value":"share"},{"type":"literal","value":"policy"},{"type":"literal","value":"public"},{"type":"literal","value":"try"},{"type":"literal","value":"class"},{"type":"literal","value":"tablet"},{"type":"literal","value":"tv"},{"type":"literal","value":"api"},{"type":"literal","value":"alarm"},{"type":"literal","value":"barcode"},{"type":"literal","value":"bolt"},{"type":"literal","value":"book"},{"type":"literal","value":"bookmark"},{"type":"literal","value":"camera"},{"type":"literal","value":"cloud"},{"type":"literal","value":"crop"},{"type":"literal","value":"eject"},{"type":"literal","value":"equal"},{"type":"literal","value":"eyeglasses"},{"type":"literal","value":"flowchart"},{"type":"literal","value":"folder"},{"type":"literal","value":"forward"},{"type":"literal","value":"globe"},{"type":"literal","value":"headphones"},{"type":"literal","value":"hexagon"},{"type":"literal","value":"hourglass"},{"type":"literal","value":"house"},{"type":"literal","value":"keyboard"},{"type":"literal","value":"lightbulb"},{"type":"literal","value":"lock"},{"type":"literal","value":"mic"},{"type":"literal","value":"percent"},{"type":"literal","value":"person"},{"type":"literal","value":"photo"},{"type":"literal","value":"pin"},{"type":"literal","value":"power"},{"type":"literal","value":"rectangle"},{"type":"literal","value":"shield"},{"type":"literal","value":"shuffle"},{"type":"literal","value":"speaker"},{"type":"literal","value":"square"},{"type":"literal","value":"star"},{"type":"literal","value":"thermometer"},{"type":"literal","value":"timelapse"},{"type":"literal","value":"tornado"},{"type":"literal","value":"umbrella"},{"type":"literal","value":"wifi"},{"type":"literal","value":"abc"},{"type":"literal","value":"crown"},{"type":"literal","value":"diamond"},{"type":"literal","value":"loupe"},{"type":"literal","value":"mail"},{"type":"literal","value":"newspaper"},{"type":"literal","value":"pip"},{"type":"literal","value":"scanner"},{"type":"literal","value":"shadow"},{"type":"literal","value":"stethoscope"},{"type":"literal","value":"terminal"},{"type":"literal","value":"tram"},{"type":"literal","value":"asterisk"},{"type":"literal","value":"checklist"},{"type":"literal","value":"earbuds"},{"type":"literal","value":"pentagon"},{"type":"literal","value":"scooter"},{"type":"literal","value":"backpack"},{"type":"literal","value":"bathtub"},{"type":"literal","value":"chair"},{"type":"literal","value":"dishwasher"},{"type":"literal","value":"fireplace"},{"type":"literal","value":"microwave"},{"type":"literal","value":"oven"},{"type":"literal","value":"pill"},{"type":"literal","value":"shower"},{"type":"literal","value":"sprinkler"},{"type":"literal","value":"stairs"},{"type":"literal","value":"syringe"},{"type":"literal","value":"trophy"},{"type":"literal","value":"sos"},{"type":"literal","value":"stroller"},{"type":"literal","value":"accessibility"},{"type":"literal","value":"bubble"},{"type":"literal","value":"smartphone"},{"type":"literal","value":"storefront"},{"type":"literal","value":"drone"},{"type":"literal","value":"headset"},{"type":"literal","value":"moped"},{"type":"literal","value":"motorcycle"},{"type":"literal","value":"numbers"},{"type":"literal","value":"receipt"},{"type":"literal","value":"palette"},{"type":"literal","value":"router"},{"type":"literal","value":"123"},{"type":"literal","value":"360"},{"type":"literal","value":"10k"},{"type":"literal","value":"10mp"},{"type":"literal","value":"11mp"},{"type":"literal","value":"12mp"},{"type":"literal","value":"13mp"},{"type":"literal","value":"14mp"},{"type":"literal","value":"15mp"},{"type":"literal","value":"16mp"},{"type":"literal","value":"17mp"},{"type":"literal","value":"18_up_rating"},{"type":"literal","value":"18mp"},{"type":"literal","value":"19mp"},{"type":"literal","value":"1k"},{"type":"literal","value":"1k_plus"},{"type":"literal","value":"1x_mobiledata"},{"type":"literal","value":"1x_mobiledata_badge"},{"type":"literal","value":"20mp"},{"type":"literal","value":"21mp"},{"type":"literal","value":"22mp"},{"type":"literal","value":"23mp"},{"type":"literal","value":"24fps_select"},{"type":"literal","value":"24mp"},{"type":"literal","value":"2d"},{"type":"literal","value":"2k"},{"type":"literal","value":"2k_plus"},{"type":"literal","value":"2mp"},{"type":"literal","value":"30fps"},{"type":"literal","value":"30fps_select"},{"type":"literal","value":"3d"},{"type":"literal","value":"3d_rotation"},{"type":"literal","value":"3g_mobiledata"},{"type":"literal","value":"3g_mobiledata_badge"},{"type":"literal","value":"3k"},{"type":"literal","value":"3k_plus"},{"type":"literal","value":"3mp"},{"type":"literal","value":"3p"},{"type":"literal","value":"4g_mobiledata"},{"type":"literal","value":"4g_mobiledata_badge"},{"type":"literal","value":"4g_plus_mobiledata"},{"type":"literal","value":"4k"},{"type":"literal","value":"4k_plus"},{"type":"literal","value":"4mp"},{"type":"literal","value":"50mp"},{"type":"literal","value":"5g"},{"type":"literal","value":"5g_mobiledata_badge"},{"type":"literal","value":"5k"},{"type":"literal","value":"5k_plus"},{"type":"literal","value":"5mp"},{"type":"literal","value":"60fps"},{"type":"literal","value":"60fps_select"},{"type":"literal","value":"6_ft_apart"},{"type":"literal","value":"6k"},{"type":"literal","value":"6k_plus"},{"type":"literal","value":"6mp"},{"type":"literal","value":"7k"},{"type":"literal","value":"7k_plus"},{"type":"literal","value":"7mp"},{"type":"literal","value":"8k"},{"type":"literal","value":"8k_plus"},{"type":"literal","value":"8mp"},{"type":"literal","value":"9k"},{"type":"literal","value":"9k_plus"},{"type":"literal","value":"9mp"},{"type":"literal","value":"ac_unit"},{"type":"literal","value":"access_alarm"},{"type":"literal","value":"access_alarms"},{"type":"literal","value":"access_time"},{"type":"literal","value":"access_time_filled"},{"type":"literal","value":"accessibility_new"},{"type":"literal","value":"accessible_forward"},{"type":"literal","value":"accessible_menu"},{"type":"literal","value":"account_balance"},{"type":"literal","value":"account_balance_wallet"},{"type":"literal","value":"account_box"},{"type":"literal","value":"account_child"},{"type":"literal","value":"account_child_invert"},{"type":"literal","value":"account_circle"},{"type":"literal","value":"account_circle_off"},{"type":"literal","value":"account_tree"},{"type":"literal","value":"action_key"},{"type":"literal","value":"activity_zone"},{"type":"literal","value":"acupuncture"},{"type":"literal","value":"acute"},{"type":"literal","value":"ad"},{"type":"literal","value":"ad_group"},{"type":"literal","value":"ad_group_off"},{"type":"literal","value":"ad_off"},{"type":"literal","value":"ad_units"},{"type":"literal","value":"adaptive_audio_mic"},{"type":"literal","value":"adaptive_audio_mic_off"},{"type":"literal","value":"adb"},{"type":"literal","value":"add_2"},{"type":"literal","value":"add_a_photo"},{"type":"literal","value":"add_ad"},{"type":"literal","value":"add_alarm"},{"type":"literal","value":"add_alert"},{"type":"literal","value":"add_box"},{"type":"literal","value":"add_business"},{"type":"literal","value":"add_call"},{"type":"literal","value":"add_card"},{"type":"literal","value":"add_chart"},{"type":"literal","value":"add_circle"},{"type":"literal","value":"add_circle_outline"},{"type":"literal","value":"add_column_left"},{"type":"literal","value":"add_column_right"},{"type":"literal","value":"add_comment"},{"type":"literal","value":"add_diamond"},{"type":"literal","value":"add_home"},{"type":"literal","value":"add_home_work"},{"type":"literal","value":"add_ic_call"},{"type":"literal","value":"add_link"},{"type":"literal","value":"add_location"},{"type":"literal","value":"add_location_alt"},{"type":"literal","value":"add_moderator"},{"type":"literal","value":"add_notes"},{"type":"literal","value":"add_photo_alternate"},{"type":"literal","value":"add_reaction"},{"type":"literal","value":"add_road"},{"type":"literal","value":"add_row_above"},{"type":"literal","value":"add_row_below"},{"type":"literal","value":"add_shopping_cart"},{"type":"literal","value":"add_task"},{"type":"literal","value":"add_to_drive"},{"type":"literal","value":"add_to_home_screen"},{"type":"literal","value":"add_to_photos"},{"type":"literal","value":"add_to_queue"},{"type":"literal","value":"add_triangle"},{"type":"literal","value":"addchart"},{"type":"literal","value":"adf_scanner"},{"type":"literal","value":"adjust"},{"type":"literal","value":"admin_meds"},{"type":"literal","value":"admin_panel_settings"},{"type":"literal","value":"ads_click"},{"type":"literal","value":"agender"},{"type":"literal","value":"agriculture"},{"type":"literal","value":"air"},{"type":"literal","value":"air_freshener"},{"type":"literal","value":"air_purifier"},{"type":"literal","value":"air_purifier_gen"},{"type":"literal","value":"airline_seat_flat"},{"type":"literal","value":"airline_seat_flat_angled"},{"type":"literal","value":"airline_seat_individual_suite"},{"type":"literal","value":"airline_seat_legroom_extra"},{"type":"literal","value":"airline_seat_legroom_normal"},{"type":"literal","value":"airline_seat_legroom_reduced"},{"type":"literal","value":"airline_seat_recline_extra"},{"type":"literal","value":"airline_seat_recline_normal"},{"type":"literal","value":"airline_stops"},{"type":"literal","value":"airlines"},{"type":"literal","value":"airplane_ticket"},{"type":"literal","value":"airplanemode_active"},{"type":"literal","value":"airplanemode_inactive"},{"type":"literal","value":"airplay"},{"type":"literal","value":"airport_shuttle"},{"type":"literal","value":"airwave"},{"type":"literal","value":"alarm_add"},{"type":"literal","value":"alarm_off"},{"type":"literal","value":"alarm_on"},{"type":"literal","value":"alarm_pause"},{"type":"literal","value":"alarm_smart_wake"},{"type":"literal","value":"album"},{"type":"literal","value":"align_center"},{"type":"literal","value":"align_end"},{"type":"literal","value":"align_flex_center"},{"type":"literal","value":"align_flex_end"},{"type":"literal","value":"align_flex_start"},{"type":"literal","value":"align_horizontal_center"},{"type":"literal","value":"align_horizontal_left"},{"type":"literal","value":"align_horizontal_right"},{"type":"literal","value":"align_items_stretch"},{"type":"literal","value":"align_justify_center"},{"type":"literal","value":"align_justify_flex_end"},{"type":"literal","value":"align_justify_flex_start"},{"type":"literal","value":"align_justify_space_around"},{"type":"literal","value":"align_justify_space_between"},{"type":"literal","value":"align_justify_space_even"},{"type":"literal","value":"align_justify_stretch"},{"type":"literal","value":"align_self_stretch"},{"type":"literal","value":"align_space_around"},{"type":"literal","value":"align_space_between"},{"type":"literal","value":"align_space_even"},{"type":"literal","value":"align_start"},{"type":"literal","value":"align_stretch"},{"type":"literal","value":"align_vertical_bottom"},{"type":"literal","value":"align_vertical_center"},{"type":"literal","value":"align_vertical_top"},{"type":"literal","value":"all_inbox"},{"type":"literal","value":"all_inclusive"},{"type":"literal","value":"all_match"},{"type":"literal","value":"all_out"},{"type":"literal","value":"allergies"},{"type":"literal","value":"allergy"},{"type":"literal","value":"alt_route"},{"type":"literal","value":"alternate_email"},{"type":"literal","value":"altitude"},{"type":"literal","value":"ambulance"},{"type":"literal","value":"amend"},{"type":"literal","value":"amp_stories"},{"type":"literal","value":"analytics"},{"type":"literal","value":"android_cell_4_bar"},{"type":"literal","value":"android_cell_4_bar_alert"},{"type":"literal","value":"android_cell_4_bar_off"},{"type":"literal","value":"android_cell_4_bar_plus"},{"type":"literal","value":"android_cell_5_bar"},{"type":"literal","value":"android_cell_5_bar_alert"},{"type":"literal","value":"android_cell_5_bar_off"},{"type":"literal","value":"android_cell_5_bar_plus"},{"type":"literal","value":"android_cell_dual_4_bar"},{"type":"literal","value":"android_cell_dual_4_bar_alert"},{"type":"literal","value":"android_cell_dual_4_bar_plus"},{"type":"literal","value":"android_cell_dual_5_bar"},{"type":"literal","value":"android_cell_dual_5_bar_alert"},{"type":"literal","value":"android_cell_dual_5_bar_plus"},{"type":"literal","value":"android_wifi_3_bar"},{"type":"literal","value":"android_wifi_3_bar_alert"},{"type":"literal","value":"android_wifi_3_bar_lock"},{"type":"literal","value":"android_wifi_3_bar_off"},{"type":"literal","value":"android_wifi_3_bar_plus"},{"type":"literal","value":"android_wifi_3_bar_question"},{"type":"literal","value":"android_wifi_4_bar"},{"type":"literal","value":"android_wifi_4_bar_alert"},{"type":"literal","value":"android_wifi_4_bar_lock"},{"type":"literal","value":"android_wifi_4_bar_off"},{"type":"literal","value":"android_wifi_4_bar_plus"},{"type":"literal","value":"android_wifi_4_bar_question"},{"type":"literal","value":"animated_images"},{"type":"literal","value":"announcement"},{"type":"literal","value":"aod"},{"type":"literal","value":"aod_tablet"},{"type":"literal","value":"aod_watch"},{"type":"literal","value":"apartment"},{"type":"literal","value":"apk_document"},{"type":"literal","value":"apk_install"},{"type":"literal","value":"app_badging"},{"type":"literal","value":"app_blocking"},{"type":"literal","value":"app_registration"},{"type":"literal","value":"app_settings_alt"},{"type":"literal","value":"app_shortcut"},{"type":"literal","value":"apparel"},{"type":"literal","value":"approval"},{"type":"literal","value":"approval_delegation"},{"type":"literal","value":"approval_delegation_off"},{"type":"literal","value":"apps"},{"type":"literal","value":"apps_outage"},{"type":"literal","value":"aq"},{"type":"literal","value":"aq_indoor"},{"type":"literal","value":"ar_on_you"},{"type":"literal","value":"ar_stickers"},{"type":"literal","value":"architecture"},{"type":"literal","value":"archive"},{"type":"literal","value":"area_chart"},{"type":"literal","value":"arming_countdown"},{"type":"literal","value":"arrow_and_edge"},{"type":"literal","value":"arrow_back"},{"type":"literal","value":"arrow_back_2"},{"type":"literal","value":"arrow_back_ios"},{"type":"literal","value":"arrow_back_ios_new"},{"type":"literal","value":"arrow_circle_down"},{"type":"literal","value":"arrow_circle_left"},{"type":"literal","value":"arrow_circle_right"},{"type":"literal","value":"arrow_circle_up"},{"type":"literal","value":"arrow_cool_down"},{"type":"literal","value":"arrow_downward"},{"type":"literal","value":"arrow_downward_alt"},{"type":"literal","value":"arrow_drop_down"},{"type":"literal","value":"arrow_drop_down_circle"},{"type":"literal","value":"arrow_drop_up"},{"type":"literal","value":"arrow_forward"},{"type":"literal","value":"arrow_forward_ios"},{"type":"literal","value":"arrow_insert"},{"type":"literal","value":"arrow_left"},{"type":"literal","value":"arrow_left_alt"},{"type":"literal","value":"arrow_menu_close"},{"type":"literal","value":"arrow_menu_open"},{"type":"literal","value":"arrow_or_edge"},{"type":"literal","value":"arrow_outward"},{"type":"literal","value":"arrow_range"},{"type":"literal","value":"arrow_right"},{"type":"literal","value":"arrow_right_alt"},{"type":"literal","value":"arrow_selector_tool"},{"type":"literal","value":"arrow_shape_up"},{"type":"literal","value":"arrow_shape_up_stack"},{"type":"literal","value":"arrow_shape_up_stack_2"},{"type":"literal","value":"arrow_split"},{"type":"literal","value":"arrow_top_left"},{"type":"literal","value":"arrow_top_right"},{"type":"literal","value":"arrow_upload_progress"},{"type":"literal","value":"arrow_upload_ready"},{"type":"literal","value":"arrow_upward"},{"type":"literal","value":"arrow_upward_alt"},{"type":"literal","value":"arrow_warm_up"},{"type":"literal","value":"arrows_input"},{"type":"literal","value":"arrows_more_down"},{"type":"literal","value":"arrows_more_up"},{"type":"literal","value":"arrows_output"},{"type":"literal","value":"arrows_outward"},{"type":"literal","value":"art_track"},{"type":"literal","value":"article_person"},{"type":"literal","value":"article_shortcut"},{"type":"literal","value":"artist"},{"type":"literal","value":"aspect_ratio"},{"type":"literal","value":"assessment"},{"type":"literal","value":"assignment"},{"type":"literal","value":"assignment_add"},{"type":"literal","value":"assignment_ind"},{"type":"literal","value":"assignment_late"},{"type":"literal","value":"assignment_return"},{"type":"literal","value":"assignment_returned"},{"type":"literal","value":"assignment_turned_in"},{"type":"literal","value":"assist_walker"},{"type":"literal","value":"assistant"},{"type":"literal","value":"assistant_device"},{"type":"literal","value":"assistant_direction"},{"type":"literal","value":"assistant_navigation"},{"type":"literal","value":"assistant_on_hub"},{"type":"literal","value":"assistant_photo"},{"type":"literal","value":"assured_workload"},{"type":"literal","value":"atm"},{"type":"literal","value":"atr"},{"type":"literal","value":"attach_email"},{"type":"literal","value":"attach_file"},{"type":"literal","value":"attach_file_add"},{"type":"literal","value":"attach_file_off"},{"type":"literal","value":"attach_money"},{"type":"literal","value":"attachment"},{"type":"literal","value":"attractions"},{"type":"literal","value":"attribution"},{"type":"literal","value":"audio_description"},{"type":"literal","value":"audio_file"},{"type":"literal","value":"audio_video_receiver"},{"type":"literal","value":"audiotrack"},{"type":"literal","value":"auto_awesome"},{"type":"literal","value":"auto_awesome_mosaic"},{"type":"literal","value":"auto_awesome_motion"},{"type":"literal","value":"auto_delete"},{"type":"literal","value":"auto_fix_high"},{"type":"literal","value":"auto_fix_normal"},{"type":"literal","value":"auto_fix_off"},{"type":"literal","value":"auto_graph"},{"type":"literal","value":"auto_mode"},{"type":"literal","value":"auto_read_pause"},{"type":"literal","value":"auto_read_play"},{"type":"literal","value":"auto_stories"},{"type":"literal","value":"auto_stories_off"},{"type":"literal","value":"auto_towing"},{"type":"literal","value":"auto_transmission"},{"type":"literal","value":"autofps_select"},{"type":"literal","value":"automation"},{"type":"literal","value":"autopause"},{"type":"literal","value":"autoplay"},{"type":"literal","value":"autorenew"},{"type":"literal","value":"autostop"},{"type":"literal","value":"av1"},{"type":"literal","value":"av_timer"},{"type":"literal","value":"avc"},{"type":"literal","value":"avg_pace"},{"type":"literal","value":"avg_time"},{"type":"literal","value":"award_meal"},{"type":"literal","value":"award_star"},{"type":"literal","value":"azm"},{"type":"literal","value":"baby_changing_station"},{"type":"literal","value":"back_hand"},{"type":"literal","value":"back_to_tab"},{"type":"literal","value":"background_dot_large"},{"type":"literal","value":"background_dot_small"},{"type":"literal","value":"background_grid_small"},{"type":"literal","value":"background_replace"},{"type":"literal","value":"backlight_high"},{"type":"literal","value":"backlight_high_off"},{"type":"literal","value":"backlight_low"},{"type":"literal","value":"backspace"},{"type":"literal","value":"backup"},{"type":"literal","value":"backup_table"},{"type":"literal","value":"badge_critical_battery"},{"type":"literal","value":"badminton"},{"type":"literal","value":"bakery_dining"},{"type":"literal","value":"balance"},{"type":"literal","value":"balcony"},{"type":"literal","value":"ballot"},{"type":"literal","value":"bar_chart"},{"type":"literal","value":"bar_chart_4_bars"},{"type":"literal","value":"bar_chart_off"},{"type":"literal","value":"barcode_reader"},{"type":"literal","value":"barcode_scanner"},{"type":"literal","value":"barefoot"},{"type":"literal","value":"batch_prediction"},{"type":"literal","value":"bath_bedrock"},{"type":"literal","value":"bath_outdoor"},{"type":"literal","value":"bath_private"},{"type":"literal","value":"bath_public_large"},{"type":"literal","value":"bath_soak"},{"type":"literal","value":"bathroom"},{"type":"literal","value":"battery_0_bar"},{"type":"literal","value":"battery_1_bar"},{"type":"literal","value":"battery_20"},{"type":"literal","value":"battery_2_bar"},{"type":"literal","value":"battery_30"},{"type":"literal","value":"battery_3_bar"},{"type":"literal","value":"battery_4_bar"},{"type":"literal","value":"battery_50"},{"type":"literal","value":"battery_5_bar"},{"type":"literal","value":"battery_60"},{"type":"literal","value":"battery_6_bar"},{"type":"literal","value":"battery_80"},{"type":"literal","value":"battery_90"},{"type":"literal","value":"battery_alert"},{"type":"literal","value":"battery_android_0"},{"type":"literal","value":"battery_android_1"},{"type":"literal","value":"battery_android_2"},{"type":"literal","value":"battery_android_3"},{"type":"literal","value":"battery_android_4"},{"type":"literal","value":"battery_android_5"},{"type":"literal","value":"battery_android_6"},{"type":"literal","value":"battery_android_alert"},{"type":"literal","value":"battery_android_bolt"},{"type":"literal","value":"battery_android_frame_1"},{"type":"literal","value":"battery_android_frame_2"},{"type":"literal","value":"battery_android_frame_3"},{"type":"literal","value":"battery_android_frame_4"},{"type":"literal","value":"battery_android_frame_5"},{"type":"literal","value":"battery_android_frame_6"},{"type":"literal","value":"battery_android_frame_alert"},{"type":"literal","value":"battery_android_frame_bolt"},{"type":"literal","value":"battery_android_frame_full"},{"type":"literal","value":"battery_android_frame_plus"},{"type":"literal","value":"battery_android_frame_question"},{"type":"literal","value":"battery_android_frame_share"},{"type":"literal","value":"battery_android_frame_shield"},{"type":"literal","value":"battery_android_full"},{"type":"literal","value":"battery_android_plus"},{"type":"literal","value":"battery_android_question"},{"type":"literal","value":"battery_android_share"},{"type":"literal","value":"battery_android_shield"},{"type":"literal","value":"battery_change"},{"type":"literal","value":"battery_charging_20"},{"type":"literal","value":"battery_charging_30"},{"type":"literal","value":"battery_charging_50"},{"type":"literal","value":"battery_charging_60"},{"type":"literal","value":"battery_charging_80"},{"type":"literal","value":"battery_charging_90"},{"type":"literal","value":"battery_charging_full"},{"type":"literal","value":"battery_error"},{"type":"literal","value":"battery_full"},{"type":"literal","value":"battery_full_alt"},{"type":"literal","value":"battery_horiz_000"},{"type":"literal","value":"battery_horiz_050"},{"type":"literal","value":"battery_horiz_075"},{"type":"literal","value":"battery_low"},{"type":"literal","value":"battery_plus"},{"type":"literal","value":"battery_profile"},{"type":"literal","value":"battery_saver"},{"type":"literal","value":"battery_share"},{"type":"literal","value":"battery_status_good"},{"type":"literal","value":"battery_std"},{"type":"literal","value":"battery_unknown"},{"type":"literal","value":"battery_very_low"},{"type":"literal","value":"beach_access"},{"type":"literal","value":"bed"},{"type":"literal","value":"bedroom_baby"},{"type":"literal","value":"bedroom_child"},{"type":"literal","value":"bedroom_parent"},{"type":"literal","value":"bedtime"},{"type":"literal","value":"bedtime_off"},{"type":"literal","value":"beenhere"},{"type":"literal","value":"beer_meal"},{"type":"literal","value":"bento"},{"type":"literal","value":"bia"},{"type":"literal","value":"bid_landscape"},{"type":"literal","value":"bid_landscape_disabled"},{"type":"literal","value":"bigtop_updates"},{"type":"literal","value":"bike_dock"},{"type":"literal","value":"bike_lane"},{"type":"literal","value":"bike_scooter"},{"type":"literal","value":"biotech"},{"type":"literal","value":"blanket"},{"type":"literal","value":"blender"},{"type":"literal","value":"blind"},{"type":"literal","value":"blinds"},{"type":"literal","value":"blinds_closed"},{"type":"literal","value":"block"},{"type":"literal","value":"block_flipped"},{"type":"literal","value":"blood_pressure"},{"type":"literal","value":"bloodtype"},{"type":"literal","value":"bluetooth"},{"type":"literal","value":"bluetooth_audio"},{"type":"literal","value":"bluetooth_connected"},{"type":"literal","value":"bluetooth_disabled"},{"type":"literal","value":"bluetooth_drive"},{"type":"literal","value":"bluetooth_searching"},{"type":"literal","value":"blur_circular"},{"type":"literal","value":"blur_linear"},{"type":"literal","value":"blur_medium"},{"type":"literal","value":"blur_off"},{"type":"literal","value":"blur_on"},{"type":"literal","value":"blur_short"},{"type":"literal","value":"boat_bus"},{"type":"literal","value":"boat_railway"},{"type":"literal","value":"body_fat"},{"type":"literal","value":"body_system"},{"type":"literal","value":"bomb"},{"type":"literal","value":"book_2"},{"type":"literal","value":"book_3"},{"type":"literal","value":"book_4"},{"type":"literal","value":"book_5"},{"type":"literal","value":"book_6"},{"type":"literal","value":"book_online"},{"type":"literal","value":"book_ribbon"},{"type":"literal","value":"bookmark_add"},{"type":"literal","value":"bookmark_added"},{"type":"literal","value":"bookmark_bag"},{"type":"literal","value":"bookmark_border"},{"type":"literal","value":"bookmark_check"},{"type":"literal","value":"bookmark_flag"},{"type":"literal","value":"bookmark_heart"},{"type":"literal","value":"bookmark_manager"},{"type":"literal","value":"bookmark_remove"},{"type":"literal","value":"bookmark_star"},{"type":"literal","value":"bookmarks"},{"type":"literal","value":"books_movies_and_music"},{"type":"literal","value":"border_all"},{"type":"literal","value":"border_bottom"},{"type":"literal","value":"border_clear"},{"type":"literal","value":"border_color"},{"type":"literal","value":"border_horizontal"},{"type":"literal","value":"border_inner"},{"type":"literal","value":"border_left"},{"type":"literal","value":"border_outer"},{"type":"literal","value":"border_right"},{"type":"literal","value":"border_style"},{"type":"literal","value":"border_top"},{"type":"literal","value":"border_vertical"},{"type":"literal","value":"borg"},{"type":"literal","value":"bottom_app_bar"},{"type":"literal","value":"bottom_drawer"},{"type":"literal","value":"bottom_navigation"},{"type":"literal","value":"bottom_panel_close"},{"type":"literal","value":"bottom_panel_open"},{"type":"literal","value":"bottom_right_click"},{"type":"literal","value":"bottom_sheets"},{"type":"literal","value":"box"},{"type":"literal","value":"box_add"},{"type":"literal","value":"box_edit"},{"type":"literal","value":"boy"},{"type":"literal","value":"brand_awareness"},{"type":"literal","value":"brand_family"},{"type":"literal","value":"branding_watermark"},{"type":"literal","value":"breakfast_dining"},{"type":"literal","value":"breaking_news"},{"type":"literal","value":"breaking_news_alt_1"},{"type":"literal","value":"breastfeeding"},{"type":"literal","value":"brick"},{"type":"literal","value":"briefcase_meal"},{"type":"literal","value":"brightness_1"},{"type":"literal","value":"brightness_2"},{"type":"literal","value":"brightness_3"},{"type":"literal","value":"brightness_4"},{"type":"literal","value":"brightness_5"},{"type":"literal","value":"brightness_6"},{"type":"literal","value":"brightness_7"},{"type":"literal","value":"brightness_alert"},{"type":"literal","value":"brightness_auto"},{"type":"literal","value":"brightness_empty"},{"type":"literal","value":"brightness_high"},{"type":"literal","value":"brightness_low"},{"type":"literal","value":"brightness_medium"},{"type":"literal","value":"bring_your_own_ip"},{"type":"literal","value":"broadcast_on_home"},{"type":"literal","value":"broadcast_on_personal"},{"type":"literal","value":"broken_image"},{"type":"literal","value":"browse"},{"type":"literal","value":"browse_activity"},{"type":"literal","value":"browse_gallery"},{"type":"literal","value":"browser_not_supported"},{"type":"literal","value":"browser_updated"},{"type":"literal","value":"brunch_dining"},{"type":"literal","value":"brush"},{"type":"literal","value":"bubble_chart"},{"type":"literal","value":"bubbles"},{"type":"literal","value":"bucket_check"},{"type":"literal","value":"bug_report"},{"type":"literal","value":"build_circle"},{"type":"literal","value":"bungalow"},{"type":"literal","value":"burst_mode"},{"type":"literal","value":"bus_alert"},{"type":"literal","value":"bus_railway"},{"type":"literal","value":"business"},{"type":"literal","value":"business_center"},{"type":"literal","value":"business_chip"},{"type":"literal","value":"business_messages"},{"type":"literal","value":"buttons_alt"},{"type":"literal","value":"cabin"},{"type":"literal","value":"cable"},{"type":"literal","value":"cable_car"},{"type":"literal","value":"cached"},{"type":"literal","value":"cadence"},{"type":"literal","value":"cake"},{"type":"literal","value":"cake_add"},{"type":"literal","value":"calculate"},{"type":"literal","value":"calendar_add_on"},{"type":"literal","value":"calendar_apps_script"},{"type":"literal","value":"calendar_check"},{"type":"literal","value":"calendar_clock"},{"type":"literal","value":"calendar_lock"},{"type":"literal","value":"calendar_meal"},{"type":"literal","value":"calendar_meal_2"},{"type":"literal","value":"calendar_month"},{"type":"literal","value":"calendar_today"},{"type":"literal","value":"calendar_view_day"},{"type":"literal","value":"calendar_view_month"},{"type":"literal","value":"calendar_view_week"},{"type":"literal","value":"call"},{"type":"literal","value":"call_end"},{"type":"literal","value":"call_log"},{"type":"literal","value":"call_made"},{"type":"literal","value":"call_merge"},{"type":"literal","value":"call_missed"},{"type":"literal","value":"call_missed_outgoing"},{"type":"literal","value":"call_quality"},{"type":"literal","value":"call_received"},{"type":"literal","value":"call_split"},{"type":"literal","value":"call_to_action"},{"type":"literal","value":"camera_alt"},{"type":"literal","value":"camera_enhance"},{"type":"literal","value":"camera_front"},{"type":"literal","value":"camera_indoor"},{"type":"literal","value":"camera_outdoor"},{"type":"literal","value":"camera_rear"},{"type":"literal","value":"camera_roll"},{"type":"literal","value":"camera_video"},{"type":"literal","value":"cameraswitch"},{"type":"literal","value":"campaign"},{"type":"literal","value":"camping"},{"type":"literal","value":"cancel_presentation"},{"type":"literal","value":"cancel_schedule_send"},{"type":"literal","value":"candle"},{"type":"literal","value":"candlestick_chart"},{"type":"literal","value":"cannabis"},{"type":"literal","value":"captive_portal"},{"type":"literal","value":"capture"},{"type":"literal","value":"car_crash"},{"type":"literal","value":"car_defrost_left"},{"type":"literal","value":"car_defrost_low_left"},{"type":"literal","value":"car_defrost_low_right"},{"type":"literal","value":"car_defrost_mid_left"},{"type":"literal","value":"car_defrost_mid_low_left"},{"type":"literal","value":"car_defrost_mid_low_right"},{"type":"literal","value":"car_defrost_mid_right"},{"type":"literal","value":"car_defrost_right"},{"type":"literal","value":"car_fan_low_left"},{"type":"literal","value":"car_fan_low_mid_left"},{"type":"literal","value":"car_fan_low_right"},{"type":"literal","value":"car_fan_mid_left"},{"type":"literal","value":"car_fan_mid_low_right"},{"type":"literal","value":"car_fan_mid_right"},{"type":"literal","value":"car_fan_recirculate"},{"type":"literal","value":"car_gear"},{"type":"literal","value":"car_lock"},{"type":"literal","value":"car_mirror_heat"},{"type":"literal","value":"car_rental"},{"type":"literal","value":"car_repair"},{"type":"literal","value":"car_tag"},{"type":"literal","value":"card_giftcard"},{"type":"literal","value":"card_membership"},{"type":"literal","value":"card_travel"},{"type":"literal","value":"cardio_load"},{"type":"literal","value":"cardiology"},{"type":"literal","value":"cards"},{"type":"literal","value":"cards_star"},{"type":"literal","value":"carpenter"},{"type":"literal","value":"carry_on_bag"},{"type":"literal","value":"carry_on_bag_checked"},{"type":"literal","value":"carry_on_bag_inactive"},{"type":"literal","value":"carry_on_bag_question"},{"type":"literal","value":"cases"},{"type":"literal","value":"casino"},{"type":"literal","value":"cast"},{"type":"literal","value":"cast_connected"},{"type":"literal","value":"cast_for_education"},{"type":"literal","value":"cast_pause"},{"type":"literal","value":"cast_warning"},{"type":"literal","value":"castle"},{"type":"literal","value":"catching_pokemon"},{"type":"literal","value":"category_search"},{"type":"literal","value":"celebration"},{"type":"literal","value":"cell_merge"},{"type":"literal","value":"cell_tower"},{"type":"literal","value":"cell_wifi"},{"type":"literal","value":"center_focus_strong"},{"type":"literal","value":"center_focus_weak"},{"type":"literal","value":"chair_alt"},{"type":"literal","value":"chair_counter"},{"type":"literal","value":"chair_fireplace"},{"type":"literal","value":"chair_umbrella"},{"type":"literal","value":"chalet"},{"type":"literal","value":"change_circle"},{"type":"literal","value":"change_history"},{"type":"literal","value":"charger"},{"type":"literal","value":"charging_station"},{"type":"literal","value":"chart_data"},{"type":"literal","value":"chat"},{"type":"literal","value":"chat_add_on"},{"type":"literal","value":"chat_apps_script"},{"type":"literal","value":"chat_bubble"},{"type":"literal","value":"chat_bubble_outline"},{"type":"literal","value":"chat_error"},{"type":"literal","value":"chat_info"},{"type":"literal","value":"chat_paste_go"},{"type":"literal","value":"chat_paste_go_2"},{"type":"literal","value":"check"},{"type":"literal","value":"check_box"},{"type":"literal","value":"check_box_outline_blank"},{"type":"literal","value":"check_circle"},{"type":"literal","value":"check_circle_outline"},{"type":"literal","value":"check_circle_unread"},{"type":"literal","value":"check_in_out"},{"type":"literal","value":"check_indeterminate_small"},{"type":"literal","value":"check_small"},{"type":"literal","value":"checkbook"},{"type":"literal","value":"checked_bag"},{"type":"literal","value":"checked_bag_question"},{"type":"literal","value":"checklist_rtl"},{"type":"literal","value":"checkroom"},{"type":"literal","value":"cheer"},{"type":"literal","value":"chef_hat"},{"type":"literal","value":"chess"},{"type":"literal","value":"chess_bishop"},{"type":"literal","value":"chess_bishop_2"},{"type":"literal","value":"chess_king"},{"type":"literal","value":"chess_king_2"},{"type":"literal","value":"chess_knight"},{"type":"literal","value":"chess_pawn"},{"type":"literal","value":"chess_pawn_2"},{"type":"literal","value":"chess_queen"},{"type":"literal","value":"chess_rook"},{"type":"literal","value":"chevron_backward"},{"type":"literal","value":"chevron_forward"},{"type":"literal","value":"chevron_left"},{"type":"literal","value":"chevron_right"},{"type":"literal","value":"child_care"},{"type":"literal","value":"child_friendly"},{"type":"literal","value":"child_hat"},{"type":"literal","value":"chip_extraction"},{"type":"literal","value":"chips"},{"type":"literal","value":"chrome_reader_mode"},{"type":"literal","value":"chromecast_2"},{"type":"literal","value":"chromecast_device"},{"type":"literal","value":"chronic"},{"type":"literal","value":"church"},{"type":"literal","value":"cinematic_blur"},{"type":"literal","value":"circle_notifications"},{"type":"literal","value":"circles"},{"type":"literal","value":"circles_ext"},{"type":"literal","value":"clarify"},{"type":"literal","value":"clean_hands"},{"type":"literal","value":"cleaning"},{"type":"literal","value":"cleaning_bucket"},{"type":"literal","value":"cleaning_services"},{"type":"literal","value":"clear_all"},{"type":"literal","value":"clear_day"},{"type":"literal","value":"climate_mini_split"},{"type":"literal","value":"clinical_notes"},{"type":"literal","value":"clock_arrow_down"},{"type":"literal","value":"clock_arrow_up"},{"type":"literal","value":"clock_loader_10"},{"type":"literal","value":"clock_loader_20"},{"type":"literal","value":"clock_loader_40"},{"type":"literal","value":"clock_loader_60"},{"type":"literal","value":"clock_loader_80"},{"type":"literal","value":"clock_loader_90"},{"type":"literal","value":"close_fullscreen"},{"type":"literal","value":"close_small"},{"type":"literal","value":"closed_caption"},{"type":"literal","value":"closed_caption_add"},{"type":"literal","value":"closed_caption_disabled"},{"type":"literal","value":"closed_caption_off"},{"type":"literal","value":"cloud_alert"},{"type":"literal","value":"cloud_circle"},{"type":"literal","value":"cloud_done"},{"type":"literal","value":"cloud_download"},{"type":"literal","value":"cloud_lock"},{"type":"literal","value":"cloud_off"},{"type":"literal","value":"cloud_queue"},{"type":"literal","value":"cloud_sync"},{"type":"literal","value":"cloud_upload"},{"type":"literal","value":"cloudy_snowing"},{"type":"literal","value":"co2"},{"type":"literal","value":"co_present"},{"type":"literal","value":"code_blocks"},{"type":"literal","value":"code_off"},{"type":"literal","value":"coffee"},{"type":"literal","value":"coffee_maker"},{"type":"literal","value":"cognition"},{"type":"literal","value":"cognition_2"},{"type":"literal","value":"collapse_all"},{"type":"literal","value":"collapse_content"},{"type":"literal","value":"collections"},{"type":"literal","value":"collections_bookmark"},{"type":"literal","value":"color_lens"},{"type":"literal","value":"colorize"},{"type":"literal","value":"combine_columns"},{"type":"literal","value":"comedy_mask"},{"type":"literal","value":"comic_bubble"},{"type":"literal","value":"comment_bank"},{"type":"literal","value":"comments_disabled"},{"type":"literal","value":"commit"},{"type":"literal","value":"communication"},{"type":"literal","value":"communities"},{"type":"literal","value":"commute"},{"type":"literal","value":"compare"},{"type":"literal","value":"compare_arrows"},{"type":"literal","value":"compass_calibration"},{"type":"literal","value":"component_exchange"},{"type":"literal","value":"compost"},{"type":"literal","value":"compress"},{"type":"literal","value":"computer"},{"type":"literal","value":"computer_arrow_up"},{"type":"literal","value":"computer_cancel"},{"type":"literal","value":"concierge"},{"type":"literal","value":"conditions"},{"type":"literal","value":"confirmation_number"},{"type":"literal","value":"congenital"},{"type":"literal","value":"connect_without_contact"},{"type":"literal","value":"connected_tv"},{"type":"literal","value":"connecting_airports"},{"type":"literal","value":"construction"},{"type":"literal","value":"contact_emergency"},{"type":"literal","value":"contact_mail"},{"type":"literal","value":"contact_page"},{"type":"literal","value":"contact_phone"},{"type":"literal","value":"contact_support"},{"type":"literal","value":"contactless"},{"type":"literal","value":"contactless_off"},{"type":"literal","value":"contacts"},{"type":"literal","value":"contacts_product"},{"type":"literal","value":"content_copy"},{"type":"literal","value":"content_cut"},{"type":"literal","value":"content_paste"},{"type":"literal","value":"content_paste_go"},{"type":"literal","value":"content_paste_off"},{"type":"literal","value":"content_paste_search"},{"type":"literal","value":"contextual_token"},{"type":"literal","value":"contextual_token_add"},{"type":"literal","value":"contract"},{"type":"literal","value":"contract_delete"},{"type":"literal","value":"contract_edit"},{"type":"literal","value":"contrast_circle"},{"type":"literal","value":"contrast_rtl_off"},{"type":"literal","value":"contrast_square"},{"type":"literal","value":"control_camera"},{"type":"literal","value":"control_point"},{"type":"literal","value":"control_point_duplicate"},{"type":"literal","value":"controller_gen"},{"type":"literal","value":"conversation"},{"type":"literal","value":"conversion_path"},{"type":"literal","value":"conversion_path_off"},{"type":"literal","value":"convert_to_text"},{"type":"literal","value":"conveyor_belt"},{"type":"literal","value":"cookie"},{"type":"literal","value":"cookie_off"},{"type":"literal","value":"cooking"},{"type":"literal","value":"cool_to_dry"},{"type":"literal","value":"copy_all"},{"type":"literal","value":"copyright"},{"type":"literal","value":"coronavirus"},{"type":"literal","value":"corporate_fare"},{"type":"literal","value":"cottage"},{"type":"literal","value":"counter_0"},{"type":"literal","value":"counter_1"},{"type":"literal","value":"counter_2"},{"type":"literal","value":"counter_3"},{"type":"literal","value":"counter_4"},{"type":"literal","value":"counter_5"},{"type":"literal","value":"counter_6"},{"type":"literal","value":"counter_7"},{"type":"literal","value":"counter_8"},{"type":"literal","value":"counter_9"},{"type":"literal","value":"countertops"},{"type":"literal","value":"create_new_folder"},{"type":"literal","value":"credit_card"},{"type":"literal","value":"credit_card_clock"},{"type":"literal","value":"credit_card_gear"},{"type":"literal","value":"credit_card_heart"},{"type":"literal","value":"credit_card_off"},{"type":"literal","value":"credit_score"},{"type":"literal","value":"crib"},{"type":"literal","value":"crisis_alert"},{"type":"literal","value":"crop_16_9"},{"type":"literal","value":"crop_3_2"},{"type":"literal","value":"crop_5_4"},{"type":"literal","value":"crop_7_5"},{"type":"literal","value":"crop_9_16"},{"type":"literal","value":"crop_din"},{"type":"literal","value":"crop_free"},{"type":"literal","value":"crop_landscape"},{"type":"literal","value":"crop_original"},{"type":"literal","value":"crop_portrait"},{"type":"literal","value":"crop_rotate"},{"type":"literal","value":"crop_square"},{"type":"literal","value":"crossword"},{"type":"literal","value":"crowdsource"},{"type":"literal","value":"cruelty_free"},{"type":"literal","value":"css"},{"type":"literal","value":"csv"},{"type":"literal","value":"currency_bitcoin"},{"type":"literal","value":"currency_exchange"},{"type":"literal","value":"currency_franc"},{"type":"literal","value":"currency_lira"},{"type":"literal","value":"currency_pound"},{"type":"literal","value":"currency_ruble"},{"type":"literal","value":"currency_rupee"},{"type":"literal","value":"currency_rupee_circle"},{"type":"literal","value":"currency_yen"},{"type":"literal","value":"currency_yuan"},{"type":"literal","value":"curtains"},{"type":"literal","value":"curtains_closed"},{"type":"literal","value":"custom_typography"},{"type":"literal","value":"cycle"},{"type":"literal","value":"cyclone"},{"type":"literal","value":"dark_mode"},{"type":"literal","value":"dashboard"},{"type":"literal","value":"dashboard_2"},{"type":"literal","value":"dashboard_customize"},{"type":"literal","value":"data_alert"},{"type":"literal","value":"data_array"},{"type":"literal","value":"data_check"},{"type":"literal","value":"data_exploration"},{"type":"literal","value":"data_info_alert"},{"type":"literal","value":"data_loss_prevention"},{"type":"literal","value":"data_object"},{"type":"literal","value":"data_saver_off"},{"type":"literal","value":"data_saver_on"},{"type":"literal","value":"data_table"},{"type":"literal","value":"data_thresholding"},{"type":"literal","value":"data_usage"},{"type":"literal","value":"database"},{"type":"literal","value":"database_off"},{"type":"literal","value":"database_search"},{"type":"literal","value":"database_upload"},{"type":"literal","value":"dataset"},{"type":"literal","value":"dataset_linked"},{"type":"literal","value":"date_range"},{"type":"literal","value":"deblur"},{"type":"literal","value":"deceased"},{"type":"literal","value":"decimal_decrease"},{"type":"literal","value":"decimal_increase"},{"type":"literal","value":"deck"},{"type":"literal","value":"dehaze"},{"type":"literal","value":"delete_forever"},{"type":"literal","value":"delete_history"},{"type":"literal","value":"delete_outline"},{"type":"literal","value":"delete_sweep"},{"type":"literal","value":"delivery_dining"},{"type":"literal","value":"delivery_truck_bolt"},{"type":"literal","value":"delivery_truck_speed"},{"type":"literal","value":"demography"},{"type":"literal","value":"density_large"},{"type":"literal","value":"density_medium"},{"type":"literal","value":"density_small"},{"type":"literal","value":"dentistry"},{"type":"literal","value":"departure_board"},{"type":"literal","value":"deployed_code"},{"type":"literal","value":"deployed_code_account"},{"type":"literal","value":"deployed_code_alert"},{"type":"literal","value":"deployed_code_history"},{"type":"literal","value":"deployed_code_update"},{"type":"literal","value":"dermatology"},{"type":"literal","value":"deselect"},{"type":"literal","value":"design_services"},{"type":"literal","value":"desk"},{"type":"literal","value":"deskphone"},{"type":"literal","value":"desktop_access_disabled"},{"type":"literal","value":"desktop_cloud"},{"type":"literal","value":"desktop_cloud_stack"},{"type":"literal","value":"desktop_landscape"},{"type":"literal","value":"desktop_landscape_add"},{"type":"literal","value":"desktop_mac"},{"type":"literal","value":"desktop_portrait"},{"type":"literal","value":"desktop_windows"},{"type":"literal","value":"destruction"},{"type":"literal","value":"detection_and_zone"},{"type":"literal","value":"detector"},{"type":"literal","value":"detector_alarm"},{"type":"literal","value":"detector_battery"},{"type":"literal","value":"detector_co"},{"type":"literal","value":"detector_offline"},{"type":"literal","value":"detector_smoke"},{"type":"literal","value":"detector_status"},{"type":"literal","value":"developer_board"},{"type":"literal","value":"developer_board_off"},{"type":"literal","value":"developer_guide"},{"type":"literal","value":"developer_mode"},{"type":"literal","value":"developer_mode_tv"},{"type":"literal","value":"device_band"},{"type":"literal","value":"device_hub"},{"type":"literal","value":"device_thermostat"},{"type":"literal","value":"device_unknown"},{"type":"literal","value":"devices"},{"type":"literal","value":"devices_fold"},{"type":"literal","value":"devices_fold_2"},{"type":"literal","value":"devices_off"},{"type":"literal","value":"devices_other"},{"type":"literal","value":"devices_wearables"},{"type":"literal","value":"dew_point"},{"type":"literal","value":"diagnosis"},{"type":"literal","value":"diagonal_line"},{"type":"literal","value":"dialer_sip"},{"type":"literal","value":"dialogs"},{"type":"literal","value":"dialpad"},{"type":"literal","value":"diamond_shine"},{"type":"literal","value":"dictionary"},{"type":"literal","value":"digital_out_of_home"},{"type":"literal","value":"digital_wellbeing"},{"type":"literal","value":"dine_heart"},{"type":"literal","value":"dine_in"},{"type":"literal","value":"dine_lamp"},{"type":"literal","value":"dining"},{"type":"literal","value":"dinner_dining"},{"type":"literal","value":"directions"},{"type":"literal","value":"directions_alt"},{"type":"literal","value":"directions_alt_off"},{"type":"literal","value":"directions_bike"},{"type":"literal","value":"directions_boat"},{"type":"literal","value":"directions_boat_filled"},{"type":"literal","value":"directions_bus"},{"type":"literal","value":"directions_bus_filled"},{"type":"literal","value":"directions_car"},{"type":"literal","value":"directions_car_filled"},{"type":"literal","value":"directions_off"},{"type":"literal","value":"directions_railway"},{"type":"literal","value":"directions_railway_2"},{"type":"literal","value":"directions_railway_filled"},{"type":"literal","value":"directions_run"},{"type":"literal","value":"directions_subway"},{"type":"literal","value":"directions_subway_filled"},{"type":"literal","value":"directions_transit"},{"type":"literal","value":"directions_transit_filled"},{"type":"literal","value":"directions_walk"},{"type":"literal","value":"directory_sync"},{"type":"literal","value":"dirty_lens"},{"type":"literal","value":"disabled_by_default"},{"type":"literal","value":"disabled_visible"},{"type":"literal","value":"disc_full"},{"type":"literal","value":"discount"},{"type":"literal","value":"discover_tune"},{"type":"literal","value":"dishwasher_gen"},{"type":"literal","value":"display_external_input"},{"type":"literal","value":"display_settings"},{"type":"literal","value":"distance"},{"type":"literal","value":"diversity_1"},{"type":"literal","value":"diversity_2"},{"type":"literal","value":"diversity_3"},{"type":"literal","value":"diversity_4"},{"type":"literal","value":"dns"},{"type":"literal","value":"do_disturb"},{"type":"literal","value":"do_disturb_alt"},{"type":"literal","value":"do_disturb_off"},{"type":"literal","value":"do_disturb_on"},{"type":"literal","value":"do_not_disturb"},{"type":"literal","value":"do_not_disturb_alt"},{"type":"literal","value":"do_not_disturb_off"},{"type":"literal","value":"do_not_disturb_on"},{"type":"literal","value":"do_not_disturb_on_total_silence"},{"type":"literal","value":"do_not_step"},{"type":"literal","value":"do_not_touch"},{"type":"literal","value":"dock"},{"type":"literal","value":"dock_to_bottom"},{"type":"literal","value":"dock_to_left"},{"type":"literal","value":"dock_to_right"},{"type":"literal","value":"docs"},{"type":"literal","value":"docs_add_on"},{"type":"literal","value":"docs_apps_script"},{"type":"literal","value":"document_scanner"},{"type":"literal","value":"document_search"},{"type":"literal","value":"domain"},{"type":"literal","value":"domain_add"},{"type":"literal","value":"domain_disabled"},{"type":"literal","value":"domain_verification"},{"type":"literal","value":"domain_verification_off"},{"type":"literal","value":"domino_mask"},{"type":"literal","value":"done_all"},{"type":"literal","value":"done_outline"},{"type":"literal","value":"donut_large"},{"type":"literal","value":"donut_small"},{"type":"literal","value":"door_back"},{"type":"literal","value":"door_front"},{"type":"literal","value":"door_open"},{"type":"literal","value":"door_sensor"},{"type":"literal","value":"door_sliding"},{"type":"literal","value":"doorbell"},{"type":"literal","value":"doorbell_3p"},{"type":"literal","value":"doorbell_chime"},{"type":"literal","value":"double_arrow"},{"type":"literal","value":"downhill_skiing"},{"type":"literal","value":"download"},{"type":"literal","value":"download_2"},{"type":"literal","value":"download_done"},{"type":"literal","value":"download_for_offline"},{"type":"literal","value":"downloading"},{"type":"literal","value":"draft"},{"type":"literal","value":"draft_orders"},{"type":"literal","value":"drafts"},{"type":"literal","value":"drag_click"},{"type":"literal","value":"drag_handle"},{"type":"literal","value":"drag_indicator"},{"type":"literal","value":"drag_pan"},{"type":"literal","value":"draw"},{"type":"literal","value":"draw_abstract"},{"type":"literal","value":"draw_collage"},{"type":"literal","value":"dresser"},{"type":"literal","value":"drive_eta"},{"type":"literal","value":"drive_export"},{"type":"literal","value":"drive_file_move"},{"type":"literal","value":"drive_file_move_outline"},{"type":"literal","value":"drive_file_move_rtl"},{"type":"literal","value":"drive_file_rename_outline"},{"type":"literal","value":"drive_folder_upload"},{"type":"literal","value":"drone_2"},{"type":"literal","value":"dropdown"},{"type":"literal","value":"dropper_eye"},{"type":"literal","value":"dry"},{"type":"literal","value":"dry_cleaning"},{"type":"literal","value":"dual_screen"},{"type":"literal","value":"duo"},{"type":"literal","value":"dvr"},{"type":"literal","value":"dynamic_feed"},{"type":"literal","value":"dynamic_form"},{"type":"literal","value":"e911_avatar"},{"type":"literal","value":"e911_emergency"},{"type":"literal","value":"e_mobiledata"},{"type":"literal","value":"e_mobiledata_badge"},{"type":"literal","value":"ear_sound"},{"type":"literal","value":"earbud_case"},{"type":"literal","value":"earbud_left"},{"type":"literal","value":"earbud_right"},{"type":"literal","value":"earbuds_2"},{"type":"literal","value":"earbuds_battery"},{"type":"literal","value":"early_on"},{"type":"literal","value":"earthquake"},{"type":"literal","value":"east"},{"type":"literal","value":"ecg"},{"type":"literal","value":"ecg_heart"},{"type":"literal","value":"eco"},{"type":"literal","value":"eda"},{"type":"literal","value":"edgesensor_high"},{"type":"literal","value":"edgesensor_low"},{"type":"literal","value":"edit"},{"type":"literal","value":"edit_arrow_down"},{"type":"literal","value":"edit_arrow_up"},{"type":"literal","value":"edit_attributes"},{"type":"literal","value":"edit_audio"},{"type":"literal","value":"edit_calendar"},{"type":"literal","value":"edit_document"},{"type":"literal","value":"edit_location"},{"type":"literal","value":"edit_location_alt"},{"type":"literal","value":"edit_note"},{"type":"literal","value":"edit_notifications"},{"type":"literal","value":"edit_off"},{"type":"literal","value":"edit_road"},{"type":"literal","value":"edit_square"},{"type":"literal","value":"editor_choice"},{"type":"literal","value":"egg"},{"type":"literal","value":"egg_alt"},{"type":"literal","value":"elderly"},{"type":"literal","value":"elderly_woman"},{"type":"literal","value":"electric_bike"},{"type":"literal","value":"electric_bolt"},{"type":"literal","value":"electric_car"},{"type":"literal","value":"electric_meter"},{"type":"literal","value":"electric_moped"},{"type":"literal","value":"electric_rickshaw"},{"type":"literal","value":"electric_scooter"},{"type":"literal","value":"electrical_services"},{"type":"literal","value":"elevator"},{"type":"literal","value":"emergency"},{"type":"literal","value":"emergency_heat"},{"type":"literal","value":"emergency_heat_2"},{"type":"literal","value":"emergency_home"},{"type":"literal","value":"emergency_recording"},{"type":"literal","value":"emergency_share"},{"type":"literal","value":"emergency_share_off"},{"type":"literal","value":"emoji_emotions"},{"type":"literal","value":"emoji_events"},{"type":"literal","value":"emoji_food_beverage"},{"type":"literal","value":"emoji_language"},{"type":"literal","value":"emoji_nature"},{"type":"literal","value":"emoji_objects"},{"type":"literal","value":"emoji_people"},{"type":"literal","value":"emoji_symbols"},{"type":"literal","value":"emoji_transportation"},{"type":"literal","value":"emoticon"},{"type":"literal","value":"empty_dashboard"},{"type":"literal","value":"encrypted"},{"type":"literal","value":"encrypted_add"},{"type":"literal","value":"encrypted_add_circle"},{"type":"literal","value":"encrypted_minus_circle"},{"type":"literal","value":"encrypted_off"},{"type":"literal","value":"endocrinology"},{"type":"literal","value":"energy"},{"type":"literal","value":"energy_program_saving"},{"type":"literal","value":"energy_program_time_used"},{"type":"literal","value":"energy_savings_leaf"},{"type":"literal","value":"engineering"},{"type":"literal","value":"enhanced_encryption"},{"type":"literal","value":"ent"},{"type":"literal","value":"enterprise"},{"type":"literal","value":"enterprise_off"},{"type":"literal","value":"equalizer"},{"type":"literal","value":"eraser_size_1"},{"type":"literal","value":"eraser_size_2"},{"type":"literal","value":"eraser_size_3"},{"type":"literal","value":"eraser_size_4"},{"type":"literal","value":"eraser_size_5"},{"type":"literal","value":"error_med"},{"type":"literal","value":"error_outline"},{"type":"literal","value":"escalator"},{"type":"literal","value":"escalator_warning"},{"type":"literal","value":"euro"},{"type":"literal","value":"euro_symbol"},{"type":"literal","value":"ev_mobiledata_badge"},{"type":"literal","value":"ev_shadow"},{"type":"literal","value":"ev_shadow_add"},{"type":"literal","value":"ev_shadow_minus"},{"type":"literal","value":"ev_station"},{"type":"literal","value":"event_available"},{"type":"literal","value":"event_busy"},{"type":"literal","value":"event_list"},{"type":"literal","value":"event_note"},{"type":"literal","value":"event_repeat"},{"type":"literal","value":"event_seat"},{"type":"literal","value":"event_upcoming"},{"type":"literal","value":"exclamation"},{"type":"literal","value":"exercise"},{"type":"literal","value":"exit_to_app"},{"type":"literal","value":"expand_all"},{"type":"literal","value":"expand_circle_down"},{"type":"literal","value":"expand_circle_right"},{"type":"literal","value":"expand_circle_up"},{"type":"literal","value":"expand_content"},{"type":"literal","value":"expand_less"},{"type":"literal","value":"expand_more"},{"type":"literal","value":"expansion_panels"},{"type":"literal","value":"experiment"},{"type":"literal","value":"explicit"},{"type":"literal","value":"explore"},{"type":"literal","value":"explore_nearby"},{"type":"literal","value":"explore_off"},{"type":"literal","value":"explosion"},{"type":"literal","value":"export_notes"},{"type":"literal","value":"exposure"},{"type":"literal","value":"exposure_neg_1"},{"type":"literal","value":"exposure_neg_2"},{"type":"literal","value":"exposure_plus_1"},{"type":"literal","value":"exposure_plus_2"},{"type":"literal","value":"exposure_zero"},{"type":"literal","value":"extension"},{"type":"literal","value":"extension_off"},{"type":"literal","value":"eye_tracking"},{"type":"literal","value":"eyeglasses_2"},{"type":"literal","value":"eyeglasses_2_sound"},{"type":"literal","value":"face"},{"type":"literal","value":"face_2"},{"type":"literal","value":"face_3"},{"type":"literal","value":"face_4"},{"type":"literal","value":"face_5"},{"type":"literal","value":"face_6"},{"type":"literal","value":"face_down"},{"type":"literal","value":"face_left"},{"type":"literal","value":"face_nod"},{"type":"literal","value":"face_retouching_natural"},{"type":"literal","value":"face_retouching_off"},{"type":"literal","value":"face_right"},{"type":"literal","value":"face_shake"},{"type":"literal","value":"face_unlock"},{"type":"literal","value":"face_up"},{"type":"literal","value":"fact_check"},{"type":"literal","value":"factory"},{"type":"literal","value":"falling"},{"type":"literal","value":"familiar_face_and_zone"},{"type":"literal","value":"family_group"},{"type":"literal","value":"family_history"},{"type":"literal","value":"family_home"},{"type":"literal","value":"family_link"},{"type":"literal","value":"family_restroom"},{"type":"literal","value":"family_star"},{"type":"literal","value":"fan_focus"},{"type":"literal","value":"fan_indirect"},{"type":"literal","value":"farsight_digital"},{"type":"literal","value":"fast_forward"},{"type":"literal","value":"fast_rewind"},{"type":"literal","value":"fastfood"},{"type":"literal","value":"faucet"},{"type":"literal","value":"favorite"},{"type":"literal","value":"favorite_border"},{"type":"literal","value":"fax"},{"type":"literal","value":"feature_search"},{"type":"literal","value":"featured_play_list"},{"type":"literal","value":"featured_seasonal_and_gifts"},{"type":"literal","value":"featured_video"},{"type":"literal","value":"feedback"},{"type":"literal","value":"female"},{"type":"literal","value":"femur"},{"type":"literal","value":"femur_alt"},{"type":"literal","value":"fence"},{"type":"literal","value":"fertile"},{"type":"literal","value":"festival"},{"type":"literal","value":"fiber_dvr"},{"type":"literal","value":"fiber_manual_record"},{"type":"literal","value":"fiber_new"},{"type":"literal","value":"fiber_pin"},{"type":"literal","value":"fiber_smart_record"},{"type":"literal","value":"file_copy"},{"type":"literal","value":"file_copy_off"},{"type":"literal","value":"file_download"},{"type":"literal","value":"file_download_done"},{"type":"literal","value":"file_download_off"},{"type":"literal","value":"file_export"},{"type":"literal","value":"file_json"},{"type":"literal","value":"file_map"},{"type":"literal","value":"file_map_stack"},{"type":"literal","value":"file_open"},{"type":"literal","value":"file_png"},{"type":"literal","value":"file_present"},{"type":"literal","value":"file_save"},{"type":"literal","value":"file_save_off"},{"type":"literal","value":"file_upload"},{"type":"literal","value":"file_upload_off"},{"type":"literal","value":"files"},{"type":"literal","value":"filter_1"},{"type":"literal","value":"filter_2"},{"type":"literal","value":"filter_3"},{"type":"literal","value":"filter_4"},{"type":"literal","value":"filter_5"},{"type":"literal","value":"filter_6"},{"type":"literal","value":"filter_7"},{"type":"literal","value":"filter_8"},{"type":"literal","value":"filter_9"},{"type":"literal","value":"filter_9_plus"},{"type":"literal","value":"filter_alt"},{"type":"literal","value":"filter_alt_off"},{"type":"literal","value":"filter_arrow_right"},{"type":"literal","value":"filter_b_and_w"},{"type":"literal","value":"filter_center_focus"},{"type":"literal","value":"filter_drama"},{"type":"literal","value":"filter_frames"},{"type":"literal","value":"filter_hdr"},{"type":"literal","value":"filter_list"},{"type":"literal","value":"filter_list_alt"},{"type":"literal","value":"filter_list_off"},{"type":"literal","value":"filter_none"},{"type":"literal","value":"filter_retrolux"},{"type":"literal","value":"filter_tilt_shift"},{"type":"literal","value":"filter_vintage"},{"type":"literal","value":"finance"},{"type":"literal","value":"finance_chip"},{"type":"literal","value":"finance_mode"},{"type":"literal","value":"find_in_page"},{"type":"literal","value":"find_replace"},{"type":"literal","value":"fingerprint_off"},{"type":"literal","value":"fire_extinguisher"},{"type":"literal","value":"fire_hydrant"},{"type":"literal","value":"fire_hydrant_alt"},{"type":"literal","value":"fire_truck"},{"type":"literal","value":"first_page"},{"type":"literal","value":"fit_page"},{"type":"literal","value":"fit_page_height"},{"type":"literal","value":"fit_page_width"},{"type":"literal","value":"fit_screen"},{"type":"literal","value":"fit_width"},{"type":"literal","value":"fitbit"},{"type":"literal","value":"fitness_center"},{"type":"literal","value":"fitness_tracker"},{"type":"literal","value":"fitness_trackers"},{"type":"literal","value":"flag_2"},{"type":"literal","value":"flag_check"},{"type":"literal","value":"flag_circle"},{"type":"literal","value":"flaky"},{"type":"literal","value":"flare"},{"type":"literal","value":"flash_auto"},{"type":"literal","value":"flash_off"},{"type":"literal","value":"flash_on"},{"type":"literal","value":"flashlight_off"},{"type":"literal","value":"flashlight_on"},{"type":"literal","value":"flatware"},{"type":"literal","value":"flex_direction"},{"type":"literal","value":"flex_no_wrap"},{"type":"literal","value":"flex_wrap"},{"type":"literal","value":"flight"},{"type":"literal","value":"flight_class"},{"type":"literal","value":"flight_land"},{"type":"literal","value":"flight_takeoff"},{"type":"literal","value":"flights_and_hotels"},{"type":"literal","value":"flip_camera_android"},{"type":"literal","value":"flip_camera_ios"},{"type":"literal","value":"flip_to_back"},{"type":"literal","value":"flip_to_front"},{"type":"literal","value":"float_landscape_2"},{"type":"literal","value":"float_portrait_2"},{"type":"literal","value":"flood"},{"type":"literal","value":"floor"},{"type":"literal","value":"floor_lamp"},{"type":"literal","value":"flowsheet"},{"type":"literal","value":"fluid"},{"type":"literal","value":"fluid_balance"},{"type":"literal","value":"fluid_med"},{"type":"literal","value":"fluorescent"},{"type":"literal","value":"flutter"},{"type":"literal","value":"flutter_dash"},{"type":"literal","value":"flyover"},{"type":"literal","value":"fmd_bad"},{"type":"literal","value":"fmd_good"},{"type":"literal","value":"foggy"},{"type":"literal","value":"folded_hands"},{"type":"literal","value":"folder_check"},{"type":"literal","value":"folder_check_2"},{"type":"literal","value":"folder_code"},{"type":"literal","value":"folder_copy"},{"type":"literal","value":"folder_data"},{"type":"literal","value":"folder_delete"},{"type":"literal","value":"folder_eye"},{"type":"literal","value":"folder_info"},{"type":"literal","value":"folder_limited"},{"type":"literal","value":"folder_managed"},{"type":"literal","value":"folder_match"},{"type":"literal","value":"folder_off"},{"type":"literal","value":"folder_open"},{"type":"literal","value":"folder_shared"},{"type":"literal","value":"folder_special"},{"type":"literal","value":"folder_supervised"},{"type":"literal","value":"folder_zip"},{"type":"literal","value":"follow_the_signs"},{"type":"literal","value":"font_download"},{"type":"literal","value":"font_download_off"},{"type":"literal","value":"food_bank"},{"type":"literal","value":"foot_bones"},{"type":"literal","value":"footprint"},{"type":"literal","value":"for_you"},{"type":"literal","value":"forest"},{"type":"literal","value":"fork_left"},{"type":"literal","value":"fork_right"},{"type":"literal","value":"fork_spoon"},{"type":"literal","value":"forklift"},{"type":"literal","value":"format_align_center"},{"type":"literal","value":"format_align_justify"},{"type":"literal","value":"format_align_left"},{"type":"literal","value":"format_align_right"},{"type":"literal","value":"format_bold"},{"type":"literal","value":"format_clear"},{"type":"literal","value":"format_color_fill"},{"type":"literal","value":"format_color_reset"},{"type":"literal","value":"format_color_text"},{"type":"literal","value":"format_h1"},{"type":"literal","value":"format_h2"},{"type":"literal","value":"format_h3"},{"type":"literal","value":"format_h4"},{"type":"literal","value":"format_h5"},{"type":"literal","value":"format_h6"},{"type":"literal","value":"format_image_left"},{"type":"literal","value":"format_image_right"},{"type":"literal","value":"format_indent_decrease"},{"type":"literal","value":"format_indent_increase"},{"type":"literal","value":"format_ink_highlighter"},{"type":"literal","value":"format_italic"},{"type":"literal","value":"format_letter_spacing"},{"type":"literal","value":"format_letter_spacing_2"},{"type":"literal","value":"format_letter_spacing_standard"},{"type":"literal","value":"format_letter_spacing_wide"},{"type":"literal","value":"format_letter_spacing_wider"},{"type":"literal","value":"format_line_spacing"},{"type":"literal","value":"format_list_bulleted"},{"type":"literal","value":"format_list_bulleted_add"},{"type":"literal","value":"format_list_numbered"},{"type":"literal","value":"format_list_numbered_rtl"},{"type":"literal","value":"format_overline"},{"type":"literal","value":"format_paint"},{"type":"literal","value":"format_paragraph"},{"type":"literal","value":"format_quote"},{"type":"literal","value":"format_quote_off"},{"type":"literal","value":"format_shapes"},{"type":"literal","value":"format_size"},{"type":"literal","value":"format_strikethrough"},{"type":"literal","value":"format_text_clip"},{"type":"literal","value":"format_text_overflow"},{"type":"literal","value":"format_text_wrap"},{"type":"literal","value":"format_textdirection_l_to_r"},{"type":"literal","value":"format_textdirection_r_to_l"},{"type":"literal","value":"format_textdirection_vertical"},{"type":"literal","value":"format_underlined"},{"type":"literal","value":"format_underlined_squiggle"},{"type":"literal","value":"forms_add_on"},{"type":"literal","value":"forms_apps_script"},{"type":"literal","value":"fort"},{"type":"literal","value":"forum"},{"type":"literal","value":"forward_10"},{"type":"literal","value":"forward_30"},{"type":"literal","value":"forward_5"},{"type":"literal","value":"forward_circle"},{"type":"literal","value":"forward_media"},{"type":"literal","value":"forward_to_inbox"},{"type":"literal","value":"foundation"},{"type":"literal","value":"fragrance"},{"type":"literal","value":"frame_inspect"},{"type":"literal","value":"frame_person"},{"type":"literal","value":"frame_person_mic"},{"type":"literal","value":"frame_person_off"},{"type":"literal","value":"frame_reload"},{"type":"literal","value":"frame_source"},{"type":"literal","value":"free_breakfast"},{"type":"literal","value":"free_cancellation"},{"type":"literal","value":"front_hand"},{"type":"literal","value":"front_loader"},{"type":"literal","value":"full_coverage"},{"type":"literal","value":"full_hd"},{"type":"literal","value":"full_stacked_bar_chart"},{"type":"literal","value":"fullscreen_exit"},{"type":"literal","value":"fullscreen_portrait"},{"type":"literal","value":"functions"},{"type":"literal","value":"funicular"},{"type":"literal","value":"g_mobiledata"},{"type":"literal","value":"g_mobiledata_badge"},{"type":"literal","value":"g_translate"},{"type":"literal","value":"gallery_thumbnail"},{"type":"literal","value":"gamepad"},{"type":"literal","value":"games"},{"type":"literal","value":"garage"},{"type":"literal","value":"garage_check"},{"type":"literal","value":"garage_door"},{"type":"literal","value":"garage_home"},{"type":"literal","value":"garage_money"},{"type":"literal","value":"garden_cart"},{"type":"literal","value":"gas_meter"},{"type":"literal","value":"gastroenterology"},{"type":"literal","value":"gate"},{"type":"literal","value":"gavel"},{"type":"literal","value":"general_device"},{"type":"literal","value":"generating_tokens"},{"type":"literal","value":"genetics"},{"type":"literal","value":"genres"},{"type":"literal","value":"gesture"},{"type":"literal","value":"gesture_select"},{"type":"literal","value":"get_app"},{"type":"literal","value":"gif"},{"type":"literal","value":"gif_2"},{"type":"literal","value":"gif_box"},{"type":"literal","value":"girl"},{"type":"literal","value":"gite"},{"type":"literal","value":"glass_cup"},{"type":"literal","value":"globe_asia"},{"type":"literal","value":"globe_book"},{"type":"literal","value":"globe_location_pin"},{"type":"literal","value":"globe_uk"},{"type":"literal","value":"glucose"},{"type":"literal","value":"glyphs"},{"type":"literal","value":"go_to_line"},{"type":"literal","value":"golf_course"},{"type":"literal","value":"gondola_lift"},{"type":"literal","value":"google_home_devices"},{"type":"literal","value":"google_tv_remote"},{"type":"literal","value":"google_wifi"},{"type":"literal","value":"gpp_bad"},{"type":"literal","value":"gpp_good"},{"type":"literal","value":"gpp_maybe"},{"type":"literal","value":"gps_fixed"},{"type":"literal","value":"gps_not_fixed"},{"type":"literal","value":"gps_off"},{"type":"literal","value":"grade"},{"type":"literal","value":"gradient"},{"type":"literal","value":"grading"},{"type":"literal","value":"grain"},{"type":"literal","value":"graph_1"},{"type":"literal","value":"graph_2"},{"type":"literal","value":"graph_3"},{"type":"literal","value":"graph_4"},{"type":"literal","value":"graph_5"},{"type":"literal","value":"graph_6"},{"type":"literal","value":"graph_7"},{"type":"literal","value":"graphic_eq"},{"type":"literal","value":"grass"},{"type":"literal","value":"grid_3x3"},{"type":"literal","value":"grid_3x3_off"},{"type":"literal","value":"grid_4x4"},{"type":"literal","value":"grid_goldenratio"},{"type":"literal","value":"grid_guides"},{"type":"literal","value":"grid_off"},{"type":"literal","value":"grid_on"},{"type":"literal","value":"grid_view"},{"type":"literal","value":"grocery"},{"type":"literal","value":"group_add"},{"type":"literal","value":"group_off"},{"type":"literal","value":"group_remove"},{"type":"literal","value":"group_search"},{"type":"literal","value":"group_work"},{"type":"literal","value":"grouped_bar_chart"},{"type":"literal","value":"groups_2"},{"type":"literal","value":"groups_3"},{"type":"literal","value":"guardian"},{"type":"literal","value":"gynecology"},{"type":"literal","value":"h_mobiledata"},{"type":"literal","value":"h_mobiledata_badge"},{"type":"literal","value":"h_plus_mobiledata"},{"type":"literal","value":"h_plus_mobiledata_badge"},{"type":"literal","value":"hail"},{"type":"literal","value":"hallway"},{"type":"literal","value":"hanami_dango"},{"type":"literal","value":"hand_bones"},{"type":"literal","value":"hand_gesture"},{"type":"literal","value":"hand_gesture_off"},{"type":"literal","value":"hand_meal"},{"type":"literal","value":"hand_package"},{"type":"literal","value":"handheld_controller"},{"type":"literal","value":"handshake"},{"type":"literal","value":"handyman"},{"type":"literal","value":"hangout_video"},{"type":"literal","value":"hangout_video_off"},{"type":"literal","value":"hard_disk"},{"type":"literal","value":"hard_drive"},{"type":"literal","value":"hard_drive_2"},{"type":"literal","value":"hardware"},{"type":"literal","value":"hd"},{"type":"literal","value":"hdr_auto"},{"type":"literal","value":"hdr_auto_select"},{"type":"literal","value":"hdr_enhanced_select"},{"type":"literal","value":"hdr_off"},{"type":"literal","value":"hdr_off_select"},{"type":"literal","value":"hdr_on"},{"type":"literal","value":"hdr_on_select"},{"type":"literal","value":"hdr_plus"},{"type":"literal","value":"hdr_plus_off"},{"type":"literal","value":"hdr_strong"},{"type":"literal","value":"hdr_weak"},{"type":"literal","value":"head_mounted_device"},{"type":"literal","value":"headphones_battery"},{"type":"literal","value":"headset_mic"},{"type":"literal","value":"headset_off"},{"type":"literal","value":"healing"},{"type":"literal","value":"health_and_beauty"},{"type":"literal","value":"health_and_safety"},{"type":"literal","value":"health_cross"},{"type":"literal","value":"health_metrics"},{"type":"literal","value":"heap_snapshot_large"},{"type":"literal","value":"heap_snapshot_multiple"},{"type":"literal","value":"heap_snapshot_thumbnail"},{"type":"literal","value":"hearing"},{"type":"literal","value":"hearing_aid"},{"type":"literal","value":"hearing_aid_disabled"},{"type":"literal","value":"hearing_aid_disabled_left"},{"type":"literal","value":"hearing_aid_left"},{"type":"literal","value":"hearing_disabled"},{"type":"literal","value":"heart_broken"},{"type":"literal","value":"heart_check"},{"type":"literal","value":"heart_minus"},{"type":"literal","value":"heart_plus"},{"type":"literal","value":"heart_smile"},{"type":"literal","value":"heat"},{"type":"literal","value":"heat_pump"},{"type":"literal","value":"heat_pump_balance"},{"type":"literal","value":"helicopter"},{"type":"literal","value":"help"},{"type":"literal","value":"help_center"},{"type":"literal","value":"help_clinic"},{"type":"literal","value":"help_outline"},{"type":"literal","value":"hematology"},{"type":"literal","value":"hevc"},{"type":"literal","value":"hide"},{"type":"literal","value":"hide_image"},{"type":"literal","value":"hide_source"},{"type":"literal","value":"high_chair"},{"type":"literal","value":"high_density"},{"type":"literal","value":"high_quality"},{"type":"literal","value":"high_res"},{"type":"literal","value":"highlight"},{"type":"literal","value":"highlight_alt"},{"type":"literal","value":"highlight_keyboard_focus"},{"type":"literal","value":"highlight_mouse_cursor"},{"type":"literal","value":"highlight_off"},{"type":"literal","value":"highlight_text_cursor"},{"type":"literal","value":"highlighter_size_1"},{"type":"literal","value":"highlighter_size_2"},{"type":"literal","value":"highlighter_size_3"},{"type":"literal","value":"highlighter_size_4"},{"type":"literal","value":"highlighter_size_5"},{"type":"literal","value":"hiking"},{"type":"literal","value":"history_2"},{"type":"literal","value":"history_edu"},{"type":"literal","value":"history_off"},{"type":"literal","value":"history_toggle_off"},{"type":"literal","value":"hive"},{"type":"literal","value":"hls"},{"type":"literal","value":"hls_off"},{"type":"literal","value":"holiday_village"},{"type":"literal","value":"home"},{"type":"literal","value":"home_and_garden"},{"type":"literal","value":"home_app_logo"},{"type":"literal","value":"home_filled"},{"type":"literal","value":"home_health"},{"type":"literal","value":"home_improvement_and_tools"},{"type":"literal","value":"home_iot_device"},{"type":"literal","value":"home_max"},{"type":"literal","value":"home_max_dots"},{"type":"literal","value":"home_mini"},{"type":"literal","value":"home_pin"},{"type":"literal","value":"home_repair_service"},{"type":"literal","value":"home_speaker"},{"type":"literal","value":"home_storage"},{"type":"literal","value":"home_work"},{"type":"literal","value":"horizontal_distribute"},{"type":"literal","value":"horizontal_rule"},{"type":"literal","value":"horizontal_split"},{"type":"literal","value":"hot_tub"},{"type":"literal","value":"hotel"},{"type":"literal","value":"hotel_class"},{"type":"literal","value":"hourglass_arrow_down"},{"type":"literal","value":"hourglass_arrow_up"},{"type":"literal","value":"hourglass_bottom"},{"type":"literal","value":"hourglass_disabled"},{"type":"literal","value":"hourglass_empty"},{"type":"literal","value":"hourglass_full"},{"type":"literal","value":"hourglass_pause"},{"type":"literal","value":"hourglass_top"},{"type":"literal","value":"house_siding"},{"type":"literal","value":"house_with_shield"},{"type":"literal","value":"houseboat"},{"type":"literal","value":"household_supplies"},{"type":"literal","value":"hov"},{"type":"literal","value":"how_to_reg"},{"type":"literal","value":"how_to_vote"},{"type":"literal","value":"hr_resting"},{"type":"literal","value":"https"},{"type":"literal","value":"hub"},{"type":"literal","value":"humerus"},{"type":"literal","value":"humerus_alt"},{"type":"literal","value":"humidity_high"},{"type":"literal","value":"humidity_indoor"},{"type":"literal","value":"humidity_low"},{"type":"literal","value":"humidity_mid"},{"type":"literal","value":"humidity_percentage"},{"type":"literal","value":"hvac"},{"type":"literal","value":"hvac_max_defrost"},{"type":"literal","value":"ice_skating"},{"type":"literal","value":"icecream"},{"type":"literal","value":"id_card"},{"type":"literal","value":"identity_aware_proxy"},{"type":"literal","value":"identity_platform"},{"type":"literal","value":"ifl"},{"type":"literal","value":"iframe_off"},{"type":"literal","value":"image_arrow_up"},{"type":"literal","value":"image_aspect_ratio"},{"type":"literal","value":"image_inset"},{"type":"literal","value":"image_not_supported"},{"type":"literal","value":"image_search"},{"type":"literal","value":"imagesearch_roller"},{"type":"literal","value":"imagesmode"},{"type":"literal","value":"immunology"},{"type":"literal","value":"import_contacts"},{"type":"literal","value":"import_export"},{"type":"literal","value":"important_devices"},{"type":"literal","value":"in_home_mode"},{"type":"literal","value":"inactive_order"},{"type":"literal","value":"inbox"},{"type":"literal","value":"inbox_customize"},{"type":"literal","value":"inbox_text"},{"type":"literal","value":"inbox_text_asterisk"},{"type":"literal","value":"inbox_text_person"},{"type":"literal","value":"inbox_text_share"},{"type":"literal","value":"incomplete_circle"},{"type":"literal","value":"indeterminate_check_box"},{"type":"literal","value":"indeterminate_question_box"},{"type":"literal","value":"info_i"},{"type":"literal","value":"info_outline"},{"type":"literal","value":"infrared"},{"type":"literal","value":"ink_eraser"},{"type":"literal","value":"ink_eraser_off"},{"type":"literal","value":"ink_highlighter"},{"type":"literal","value":"ink_highlighter_move"},{"type":"literal","value":"ink_marker"},{"type":"literal","value":"ink_pen"},{"type":"literal","value":"ink_selection"},{"type":"literal","value":"inpatient"},{"type":"literal","value":"input_circle"},{"type":"literal","value":"insert_chart"},{"type":"literal","value":"insert_chart_outlined"},{"type":"literal","value":"insert_comment"},{"type":"literal","value":"insert_drive_file"},{"type":"literal","value":"insert_emoticon"},{"type":"literal","value":"insert_invitation"},{"type":"literal","value":"insert_link"},{"type":"literal","value":"insert_page_break"},{"type":"literal","value":"insert_photo"},{"type":"literal","value":"insert_text"},{"type":"literal","value":"insights"},{"type":"literal","value":"install_desktop"},{"type":"literal","value":"install_mobile"},{"type":"literal","value":"instant_mix"},{"type":"literal","value":"integration_instructions"},{"type":"literal","value":"interactive_space"},{"type":"literal","value":"interests"},{"type":"literal","value":"interpreter_mode"},{"type":"literal","value":"inventory"},{"type":"literal","value":"inventory_2"},{"type":"literal","value":"invert_colors"},{"type":"literal","value":"invert_colors_off"},{"type":"literal","value":"ios_share"},{"type":"literal","value":"iron"},{"type":"literal","value":"iso"},{"type":"literal","value":"jamboard_kiosk"},{"type":"literal","value":"japanese_curry"},{"type":"literal","value":"japanese_flag"},{"type":"literal","value":"javascript"},{"type":"literal","value":"join_full"},{"type":"literal","value":"join_inner"},{"type":"literal","value":"join_left"},{"type":"literal","value":"join_right"},{"type":"literal","value":"joystick"},{"type":"literal","value":"jump_to_element"},{"type":"literal","value":"kanji_alcohol"},{"type":"literal","value":"kayaking"},{"type":"literal","value":"kebab_dining"},{"type":"literal","value":"keep"},{"type":"literal","value":"keep_off"},{"type":"literal","value":"keep_public"},{"type":"literal","value":"kettle"},{"type":"literal","value":"key_off"},{"type":"literal","value":"key_vertical"},{"type":"literal","value":"key_visualizer"},{"type":"literal","value":"keyboard_alt"},{"type":"literal","value":"keyboard_arrow_down"},{"type":"literal","value":"keyboard_arrow_left"},{"type":"literal","value":"keyboard_arrow_right"},{"type":"literal","value":"keyboard_arrow_up"},{"type":"literal","value":"keyboard_backspace"},{"type":"literal","value":"keyboard_capslock"},{"type":"literal","value":"keyboard_capslock_badge"},{"type":"literal","value":"keyboard_command_key"},{"type":"literal","value":"keyboard_control_key"},{"type":"literal","value":"keyboard_double_arrow_down"},{"type":"literal","value":"keyboard_double_arrow_left"},{"type":"literal","value":"keyboard_double_arrow_right"},{"type":"literal","value":"keyboard_double_arrow_up"},{"type":"literal","value":"keyboard_external_input"},{"type":"literal","value":"keyboard_full"},{"type":"literal","value":"keyboard_hide"},{"type":"literal","value":"keyboard_keys"},{"type":"literal","value":"keyboard_lock"},{"type":"literal","value":"keyboard_lock_off"},{"type":"literal","value":"keyboard_off"},{"type":"literal","value":"keyboard_onscreen"},{"type":"literal","value":"keyboard_option_key"},{"type":"literal","value":"keyboard_previous_language"},{"type":"literal","value":"keyboard_return"},{"type":"literal","value":"keyboard_tab"},{"type":"literal","value":"keyboard_tab_rtl"},{"type":"literal","value":"keyboard_voice"},{"type":"literal","value":"kid_star"},{"type":"literal","value":"king_bed"},{"type":"literal","value":"kitchen"},{"type":"literal","value":"kitesurfing"},{"type":"literal","value":"lab_panel"},{"type":"literal","value":"lab_profile"},{"type":"literal","value":"lab_research"},{"type":"literal","value":"label_important"},{"type":"literal","value":"label_important_outline"},{"type":"literal","value":"label_off"},{"type":"literal","value":"labs"},{"type":"literal","value":"lan"},{"type":"literal","value":"landscape_2"},{"type":"literal","value":"landscape_2_edit"},{"type":"literal","value":"landscape_2_off"},{"type":"literal","value":"landslide"},{"type":"literal","value":"language"},{"type":"literal","value":"language_chinese_array"},{"type":"literal","value":"language_chinese_cangjie"},{"type":"literal","value":"language_chinese_dayi"},{"type":"literal","value":"language_chinese_pinyin"},{"type":"literal","value":"language_chinese_quick"},{"type":"literal","value":"language_chinese_wubi"},{"type":"literal","value":"language_french"},{"type":"literal","value":"language_gb_english"},{"type":"literal","value":"language_international"},{"type":"literal","value":"language_japanese_kana"},{"type":"literal","value":"language_korean_latin"},{"type":"literal","value":"language_pinyin"},{"type":"literal","value":"language_spanish"},{"type":"literal","value":"language_us"},{"type":"literal","value":"language_us_colemak"},{"type":"literal","value":"language_us_dvorak"},{"type":"literal","value":"laps"},{"type":"literal","value":"laptop"},{"type":"literal","value":"laptop_car"},{"type":"literal","value":"laptop_chromebook"},{"type":"literal","value":"laptop_mac"},{"type":"literal","value":"laptop_windows"},{"type":"literal","value":"lasso_select"},{"type":"literal","value":"last_page"},{"type":"literal","value":"launch"},{"type":"literal","value":"laundry"},{"type":"literal","value":"layers"},{"type":"literal","value":"layers_clear"},{"type":"literal","value":"lda"},{"type":"literal","value":"leaderboard"},{"type":"literal","value":"leak_add"},{"type":"literal","value":"leak_remove"},{"type":"literal","value":"left_click"},{"type":"literal","value":"left_panel_close"},{"type":"literal","value":"left_panel_open"},{"type":"literal","value":"legend_toggle"},{"type":"literal","value":"lens"},{"type":"literal","value":"lens_blur"},{"type":"literal","value":"letter_switch"},{"type":"literal","value":"library_add"},{"type":"literal","value":"library_add_check"},{"type":"literal","value":"library_books"},{"type":"literal","value":"library_music"},{"type":"literal","value":"license"},{"type":"literal","value":"lift_to_talk"},{"type":"literal","value":"light_group"},{"type":"literal","value":"light_mode"},{"type":"literal","value":"light_off"},{"type":"literal","value":"lightbulb_2"},{"type":"literal","value":"lightbulb_circle"},{"type":"literal","value":"lightbulb_outline"},{"type":"literal","value":"lightning_stand"},{"type":"literal","value":"line_axis"},{"type":"literal","value":"line_curve"},{"type":"literal","value":"line_end"},{"type":"literal","value":"line_end_arrow"},{"type":"literal","value":"line_end_arrow_notch"},{"type":"literal","value":"line_end_circle"},{"type":"literal","value":"line_end_diamond"},{"type":"literal","value":"line_end_square"},{"type":"literal","value":"line_start"},{"type":"literal","value":"line_start_arrow"},{"type":"literal","value":"line_start_arrow_notch"},{"type":"literal","value":"line_start_circle"},{"type":"literal","value":"line_start_diamond"},{"type":"literal","value":"line_start_square"},{"type":"literal","value":"line_style"},{"type":"literal","value":"line_weight"},{"type":"literal","value":"linear_scale"},{"type":"literal","value":"link_off"},{"type":"literal","value":"linked_camera"},{"type":"literal","value":"linked_services"},{"type":"literal","value":"liquor"},{"type":"literal","value":"list_alt"},{"type":"literal","value":"list_alt_add"},{"type":"literal","value":"list_alt_check"},{"type":"literal","value":"lists"},{"type":"literal","value":"live_help"},{"type":"literal","value":"live_tv"},{"type":"literal","value":"living"},{"type":"literal","value":"local_activity"},{"type":"literal","value":"local_airport"},{"type":"literal","value":"local_atm"},{"type":"literal","value":"local_bar"},{"type":"literal","value":"local_cafe"},{"type":"literal","value":"local_car_wash"},{"type":"literal","value":"local_convenience_store"},{"type":"literal","value":"local_dining"},{"type":"literal","value":"local_drink"},{"type":"literal","value":"local_fire_department"},{"type":"literal","value":"local_florist"},{"type":"literal","value":"local_gas_station"},{"type":"literal","value":"local_grocery_store"},{"type":"literal","value":"local_hospital"},{"type":"literal","value":"local_hotel"},{"type":"literal","value":"local_laundry_service"},{"type":"literal","value":"local_library"},{"type":"literal","value":"local_mall"},{"type":"literal","value":"local_movies"},{"type":"literal","value":"local_offer"},{"type":"literal","value":"local_parking"},{"type":"literal","value":"local_pharmacy"},{"type":"literal","value":"local_phone"},{"type":"literal","value":"local_pizza"},{"type":"literal","value":"local_play"},{"type":"literal","value":"local_police"},{"type":"literal","value":"local_post_office"},{"type":"literal","value":"local_printshop"},{"type":"literal","value":"local_see"},{"type":"literal","value":"local_shipping"},{"type":"literal","value":"local_taxi"},{"type":"literal","value":"location_away"},{"type":"literal","value":"location_chip"},{"type":"literal","value":"location_city"},{"type":"literal","value":"location_disabled"},{"type":"literal","value":"location_home"},{"type":"literal","value":"location_off"},{"type":"literal","value":"location_on"},{"type":"literal","value":"location_pin"},{"type":"literal","value":"location_searching"},{"type":"literal","value":"lock_clock"},{"type":"literal","value":"lock_open"},{"type":"literal","value":"lock_open_circle"},{"type":"literal","value":"lock_open_right"},{"type":"literal","value":"lock_outline"},{"type":"literal","value":"lock_person"},{"type":"literal","value":"lock_reset"},{"type":"literal","value":"login"},{"type":"literal","value":"logo_dev"},{"type":"literal","value":"logout"},{"type":"literal","value":"looks"},{"type":"literal","value":"looks_3"},{"type":"literal","value":"looks_4"},{"type":"literal","value":"looks_5"},{"type":"literal","value":"looks_6"},{"type":"literal","value":"looks_one"},{"type":"literal","value":"looks_two"},{"type":"literal","value":"loop"},{"type":"literal","value":"low_density"},{"type":"literal","value":"low_priority"},{"type":"literal","value":"loyalty"},{"type":"literal","value":"lte_mobiledata"},{"type":"literal","value":"lte_mobiledata_badge"},{"type":"literal","value":"lte_plus_mobiledata"},{"type":"literal","value":"lte_plus_mobiledata_badge"},{"type":"literal","value":"luggage"},{"type":"literal","value":"lunch_dining"},{"type":"literal","value":"lyrics"},{"type":"literal","value":"macro_auto"},{"type":"literal","value":"macro_off"},{"type":"literal","value":"magnification_large"},{"type":"literal","value":"magnification_small"},{"type":"literal","value":"magnify_docked"},{"type":"literal","value":"magnify_fullscreen"},{"type":"literal","value":"mail_asterisk"},{"type":"literal","value":"mail_lock"},{"type":"literal","value":"mail_off"},{"type":"literal","value":"mail_outline"},{"type":"literal","value":"mail_shield"},{"type":"literal","value":"male"},{"type":"literal","value":"man"},{"type":"literal","value":"man_2"},{"type":"literal","value":"man_3"},{"type":"literal","value":"man_4"},{"type":"literal","value":"manage_accounts"},{"type":"literal","value":"manage_history"},{"type":"literal","value":"manage_search"},{"type":"literal","value":"manga"},{"type":"literal","value":"manufacturing"},{"type":"literal","value":"map_pin_heart"},{"type":"literal","value":"map_pin_review"},{"type":"literal","value":"map_search"},{"type":"literal","value":"maps_home_work"},{"type":"literal","value":"maps_ugc"},{"type":"literal","value":"mark_as_unread"},{"type":"literal","value":"mark_chat_read"},{"type":"literal","value":"mark_chat_unread"},{"type":"literal","value":"mark_email_read"},{"type":"literal","value":"mark_email_unread"},{"type":"literal","value":"mark_unread_chat_alt"},{"type":"literal","value":"markdown"},{"type":"literal","value":"markdown_copy"},{"type":"literal","value":"markdown_paste"},{"type":"literal","value":"markunread"},{"type":"literal","value":"markunread_mailbox"},{"type":"literal","value":"masked_transitions"},{"type":"literal","value":"masked_transitions_add"},{"type":"literal","value":"masks"},{"type":"literal","value":"massage"},{"type":"literal","value":"match_case"},{"type":"literal","value":"match_case_off"},{"type":"literal","value":"match_word"},{"type":"literal","value":"matter"},{"type":"literal","value":"maximize"},{"type":"literal","value":"meal_dinner"},{"type":"literal","value":"meal_lunch"},{"type":"literal","value":"measuring_tape"},{"type":"literal","value":"media_bluetooth_off"},{"type":"literal","value":"media_bluetooth_on"},{"type":"literal","value":"media_link"},{"type":"literal","value":"media_output"},{"type":"literal","value":"media_output_off"},{"type":"literal","value":"mediation"},{"type":"literal","value":"medical_information"},{"type":"literal","value":"medical_mask"},{"type":"literal","value":"medical_services"},{"type":"literal","value":"medication"},{"type":"literal","value":"medication_liquid"},{"type":"literal","value":"meeting_room"},{"type":"literal","value":"memory"},{"type":"literal","value":"memory_alt"},{"type":"literal","value":"menstrual_health"},{"type":"literal","value":"menu_book"},{"type":"literal","value":"menu_book_2"},{"type":"literal","value":"menu_open"},{"type":"literal","value":"merge_type"},{"type":"literal","value":"metabolism"},{"type":"literal","value":"mfg_nest_yale_lock"},{"type":"literal","value":"mic_alert"},{"type":"literal","value":"mic_double"},{"type":"literal","value":"mic_external_off"},{"type":"literal","value":"mic_external_on"},{"type":"literal","value":"mic_none"},{"type":"literal","value":"mic_off"},{"type":"literal","value":"microbiology"},{"type":"literal","value":"microwave_gen"},{"type":"literal","value":"military_tech"},{"type":"literal","value":"mimo"},{"type":"literal","value":"mimo_disconnect"},{"type":"literal","value":"mindfulness"},{"type":"literal","value":"minimize"},{"type":"literal","value":"minor_crash"},{"type":"literal","value":"mintmark"},{"type":"literal","value":"miscellaneous_services"},{"type":"literal","value":"missed_video_call"},{"type":"literal","value":"missing_controller"},{"type":"literal","value":"mist"},{"type":"literal","value":"mitre"},{"type":"literal","value":"mixture_med"},{"type":"literal","value":"mms"},{"type":"literal","value":"mobile"},{"type":"literal","value":"mobile_2"},{"type":"literal","value":"mobile_3"},{"type":"literal","value":"mobile_alert"},{"type":"literal","value":"mobile_arrow_down"},{"type":"literal","value":"mobile_arrow_right"},{"type":"literal","value":"mobile_arrow_up_right"},{"type":"literal","value":"mobile_block"},{"type":"literal","value":"mobile_camera"},{"type":"literal","value":"mobile_camera_front"},{"type":"literal","value":"mobile_camera_rear"},{"type":"literal","value":"mobile_cancel"},{"type":"literal","value":"mobile_cast"},{"type":"literal","value":"mobile_charge"},{"type":"literal","value":"mobile_chat"},{"type":"literal","value":"mobile_check"},{"type":"literal","value":"mobile_code"},{"type":"literal","value":"mobile_dots"},{"type":"literal","value":"mobile_friendly"},{"type":"literal","value":"mobile_gear"},{"type":"literal","value":"mobile_hand"},{"type":"literal","value":"mobile_hand_left"},{"type":"literal","value":"mobile_hand_left_off"},{"type":"literal","value":"mobile_hand_off"},{"type":"literal","value":"mobile_info"},{"type":"literal","value":"mobile_landscape"},{"type":"literal","value":"mobile_layout"},{"type":"literal","value":"mobile_lock_landscape"},{"type":"literal","value":"mobile_lock_portrait"},{"type":"literal","value":"mobile_loupe"},{"type":"literal","value":"mobile_menu"},{"type":"literal","value":"mobile_off"},{"type":"literal","value":"mobile_question"},{"type":"literal","value":"mobile_rotate"},{"type":"literal","value":"mobile_rotate_lock"},{"type":"literal","value":"mobile_screen_share"},{"type":"literal","value":"mobile_screensaver"},{"type":"literal","value":"mobile_sensor_hi"},{"type":"literal","value":"mobile_sensor_lo"},{"type":"literal","value":"mobile_share"},{"type":"literal","value":"mobile_share_stack"},{"type":"literal","value":"mobile_sound"},{"type":"literal","value":"mobile_sound_2"},{"type":"literal","value":"mobile_sound_off"},{"type":"literal","value":"mobile_speaker"},{"type":"literal","value":"mobile_text"},{"type":"literal","value":"mobile_text_2"},{"type":"literal","value":"mobile_theft"},{"type":"literal","value":"mobile_ticket"},{"type":"literal","value":"mobile_vibrate"},{"type":"literal","value":"mobile_wrench"},{"type":"literal","value":"mobiledata_off"},{"type":"literal","value":"mode_comment"},{"type":"literal","value":"mode_cool"},{"type":"literal","value":"mode_cool_off"},{"type":"literal","value":"mode_dual"},{"type":"literal","value":"mode_edit"},{"type":"literal","value":"mode_edit_outline"},{"type":"literal","value":"mode_fan"},{"type":"literal","value":"mode_fan_off"},{"type":"literal","value":"mode_heat"},{"type":"literal","value":"mode_heat_cool"},{"type":"literal","value":"mode_heat_off"},{"type":"literal","value":"mode_night"},{"type":"literal","value":"mode_of_travel"},{"type":"literal","value":"mode_off_on"},{"type":"literal","value":"mode_standby"},{"type":"literal","value":"model_training"},{"type":"literal","value":"modeling"},{"type":"literal","value":"monetization_on"},{"type":"literal","value":"money"},{"type":"literal","value":"money_bag"},{"type":"literal","value":"money_off"},{"type":"literal","value":"money_off_csred"},{"type":"literal","value":"money_range"},{"type":"literal","value":"monitor"},{"type":"literal","value":"monitor_heart"},{"type":"literal","value":"monitor_weight"},{"type":"literal","value":"monitor_weight_gain"},{"type":"literal","value":"monitor_weight_loss"},{"type":"literal","value":"monitoring"},{"type":"literal","value":"monochrome_photos"},{"type":"literal","value":"monorail"},{"type":"literal","value":"mood"},{"type":"literal","value":"mood_bad"},{"type":"literal","value":"moon_stars"},{"type":"literal","value":"mop"},{"type":"literal","value":"moped_package"},{"type":"literal","value":"more"},{"type":"literal","value":"more_down"},{"type":"literal","value":"more_horiz"},{"type":"literal","value":"more_time"},{"type":"literal","value":"more_up"},{"type":"literal","value":"more_vert"},{"type":"literal","value":"mosque"},{"type":"literal","value":"motion_blur"},{"type":"literal","value":"motion_mode"},{"type":"literal","value":"motion_photos_auto"},{"type":"literal","value":"motion_photos_off"},{"type":"literal","value":"motion_photos_on"},{"type":"literal","value":"motion_photos_pause"},{"type":"literal","value":"motion_photos_paused"},{"type":"literal","value":"motion_play"},{"type":"literal","value":"motion_sensor_active"},{"type":"literal","value":"motion_sensor_alert"},{"type":"literal","value":"motion_sensor_idle"},{"type":"literal","value":"motion_sensor_urgent"},{"type":"literal","value":"mountain_flag"},{"type":"literal","value":"mountain_steam"},{"type":"literal","value":"mouse"},{"type":"literal","value":"mouse_lock"},{"type":"literal","value":"mouse_lock_off"},{"type":"literal","value":"move"},{"type":"literal","value":"move_down"},{"type":"literal","value":"move_group"},{"type":"literal","value":"move_item"},{"type":"literal","value":"move_location"},{"type":"literal","value":"move_selection_down"},{"type":"literal","value":"move_selection_left"},{"type":"literal","value":"move_selection_right"},{"type":"literal","value":"move_selection_up"},{"type":"literal","value":"move_to_inbox"},{"type":"literal","value":"move_up"},{"type":"literal","value":"moved_location"},{"type":"literal","value":"movie"},{"type":"literal","value":"movie_creation"},{"type":"literal","value":"movie_edit"},{"type":"literal","value":"movie_filter"},{"type":"literal","value":"movie_info"},{"type":"literal","value":"movie_off"},{"type":"literal","value":"movie_speaker"},{"type":"literal","value":"moving"},{"type":"literal","value":"moving_beds"},{"type":"literal","value":"moving_ministry"},{"type":"literal","value":"mp"},{"type":"literal","value":"multicooker"},{"type":"literal","value":"multiline_chart"},{"type":"literal","value":"multimodal_hand_eye"},{"type":"literal","value":"multiple_airports"},{"type":"literal","value":"multiple_stop"},{"type":"literal","value":"museum"},{"type":"literal","value":"music_cast"},{"type":"literal","value":"music_history"},{"type":"literal","value":"music_note"},{"type":"literal","value":"music_note_add"},{"type":"literal","value":"music_off"},{"type":"literal","value":"music_video"},{"type":"literal","value":"my_location"},{"type":"literal","value":"mystery"},{"type":"literal","value":"nat"},{"type":"literal","value":"nature"},{"type":"literal","value":"nature_people"},{"type":"literal","value":"navigate_before"},{"type":"literal","value":"navigate_next"},{"type":"literal","value":"near_me"},{"type":"literal","value":"near_me_disabled"},{"type":"literal","value":"nearby"},{"type":"literal","value":"nearby_error"},{"type":"literal","value":"nearby_off"},{"type":"literal","value":"nephrology"},{"type":"literal","value":"nest_audio"},{"type":"literal","value":"nest_cam_floodlight"},{"type":"literal","value":"nest_cam_indoor"},{"type":"literal","value":"nest_cam_iq"},{"type":"literal","value":"nest_cam_iq_outdoor"},{"type":"literal","value":"nest_cam_magnet_mount"},{"type":"literal","value":"nest_cam_outdoor"},{"type":"literal","value":"nest_cam_stand"},{"type":"literal","value":"nest_cam_wall_mount"},{"type":"literal","value":"nest_cam_wired_stand"},{"type":"literal","value":"nest_clock_farsight_analog"},{"type":"literal","value":"nest_clock_farsight_digital"},{"type":"literal","value":"nest_connect"},{"type":"literal","value":"nest_detect"},{"type":"literal","value":"nest_display"},{"type":"literal","value":"nest_display_max"},{"type":"literal","value":"nest_doorbell_visitor"},{"type":"literal","value":"nest_eco_leaf"},{"type":"literal","value":"nest_farsight_cool"},{"type":"literal","value":"nest_farsight_dual"},{"type":"literal","value":"nest_farsight_eco"},{"type":"literal","value":"nest_farsight_heat"},{"type":"literal","value":"nest_farsight_seasonal"},{"type":"literal","value":"nest_farsight_weather"},{"type":"literal","value":"nest_found_savings"},{"type":"literal","value":"nest_heat_link_e"},{"type":"literal","value":"nest_heat_link_gen_3"},{"type":"literal","value":"nest_hello_doorbell"},{"type":"literal","value":"nest_mini"},{"type":"literal","value":"nest_multi_room"},{"type":"literal","value":"nest_protect"},{"type":"literal","value":"nest_remote_comfort_sensor"},{"type":"literal","value":"nest_secure_alarm"},{"type":"literal","value":"nest_sunblock"},{"type":"literal","value":"nest_tag"},{"type":"literal","value":"nest_thermostat"},{"type":"literal","value":"nest_thermostat_e_eu"},{"type":"literal","value":"nest_thermostat_gen_3"},{"type":"literal","value":"nest_thermostat_sensor"},{"type":"literal","value":"nest_thermostat_sensor_eu"},{"type":"literal","value":"nest_thermostat_zirconium_eu"},{"type":"literal","value":"nest_true_radiant"},{"type":"literal","value":"nest_wake_on_approach"},{"type":"literal","value":"nest_wake_on_press"},{"type":"literal","value":"nest_wifi_point"},{"type":"literal","value":"nest_wifi_pro"},{"type":"literal","value":"nest_wifi_pro_2"},{"type":"literal","value":"nest_wifi_router"},{"type":"literal","value":"network_cell"},{"type":"literal","value":"network_check"},{"type":"literal","value":"network_intel_node"},{"type":"literal","value":"network_intelligence"},{"type":"literal","value":"network_intelligence_history"},{"type":"literal","value":"network_intelligence_update"},{"type":"literal","value":"network_locked"},{"type":"literal","value":"network_manage"},{"type":"literal","value":"network_node"},{"type":"literal","value":"network_ping"},{"type":"literal","value":"network_wifi"},{"type":"literal","value":"network_wifi_1_bar"},{"type":"literal","value":"network_wifi_1_bar_locked"},{"type":"literal","value":"network_wifi_2_bar"},{"type":"literal","value":"network_wifi_2_bar_locked"},{"type":"literal","value":"network_wifi_3_bar"},{"type":"literal","value":"network_wifi_3_bar_locked"},{"type":"literal","value":"network_wifi_locked"},{"type":"literal","value":"neurology"},{"type":"literal","value":"new_label"},{"type":"literal","value":"new_releases"},{"type":"literal","value":"new_window"},{"type":"literal","value":"news"},{"type":"literal","value":"newsmode"},{"type":"literal","value":"newsstand"},{"type":"literal","value":"next_plan"},{"type":"literal","value":"next_week"},{"type":"literal","value":"nfc"},{"type":"literal","value":"nfc_off"},{"type":"literal","value":"night_shelter"},{"type":"literal","value":"night_sight_auto"},{"type":"literal","value":"night_sight_auto_off"},{"type":"literal","value":"night_sight_max"},{"type":"literal","value":"nightlife"},{"type":"literal","value":"nightlight"},{"type":"literal","value":"nightlight_round"},{"type":"literal","value":"nights_stay"},{"type":"literal","value":"no_accounts"},{"type":"literal","value":"no_adult_content"},{"type":"literal","value":"no_backpack"},{"type":"literal","value":"no_cell"},{"type":"literal","value":"no_crash"},{"type":"literal","value":"no_drinks"},{"type":"literal","value":"no_encryption"},{"type":"literal","value":"no_encryption_gmailerrorred"},{"type":"literal","value":"no_flash"},{"type":"literal","value":"no_food"},{"type":"literal","value":"no_luggage"},{"type":"literal","value":"no_meals"},{"type":"literal","value":"no_meals_ouline"},{"type":"literal","value":"no_meeting_room"},{"type":"literal","value":"no_photography"},{"type":"literal","value":"no_sim"},{"type":"literal","value":"no_sound"},{"type":"literal","value":"no_stroller"},{"type":"literal","value":"no_transfer"},{"type":"literal","value":"noise_aware"},{"type":"literal","value":"noise_control_off"},{"type":"literal","value":"noise_control_on"},{"type":"literal","value":"nordic_walking"},{"type":"literal","value":"north"},{"type":"literal","value":"north_east"},{"type":"literal","value":"north_west"},{"type":"literal","value":"not_accessible"},{"type":"literal","value":"not_accessible_forward"},{"type":"literal","value":"not_interested"},{"type":"literal","value":"not_listed_location"},{"type":"literal","value":"not_started"},{"type":"literal","value":"note_add"},{"type":"literal","value":"note_alt"},{"type":"literal","value":"note_stack"},{"type":"literal","value":"note_stack_add"},{"type":"literal","value":"notes"},{"type":"literal","value":"notification_add"},{"type":"literal","value":"notification_important"},{"type":"literal","value":"notification_multiple"},{"type":"literal","value":"notification_settings"},{"type":"literal","value":"notification_sound"},{"type":"literal","value":"notifications"},{"type":"literal","value":"notifications_active"},{"type":"literal","value":"notifications_none"},{"type":"literal","value":"notifications_off"},{"type":"literal","value":"notifications_paused"},{"type":"literal","value":"notifications_unread"},{"type":"literal","value":"nutrition"},{"type":"literal","value":"ods"},{"type":"literal","value":"odt"},{"type":"literal","value":"offline_bolt"},{"type":"literal","value":"offline_pin"},{"type":"literal","value":"offline_pin_off"},{"type":"literal","value":"offline_share"},{"type":"literal","value":"oil_barrel"},{"type":"literal","value":"okonomiyaki"},{"type":"literal","value":"on_device_training"},{"type":"literal","value":"on_hub_device"},{"type":"literal","value":"oncology"},{"type":"literal","value":"ondemand_video"},{"type":"literal","value":"online_prediction"},{"type":"literal","value":"onsen"},{"type":"literal","value":"open_in_browser"},{"type":"literal","value":"open_in_full"},{"type":"literal","value":"open_in_new"},{"type":"literal","value":"open_in_new_down"},{"type":"literal","value":"open_in_new_off"},{"type":"literal","value":"open_jam"},{"type":"literal","value":"open_run"},{"type":"literal","value":"open_with"},{"type":"literal","value":"ophthalmology"},{"type":"literal","value":"oral_disease"},{"type":"literal","value":"orbit"},{"type":"literal","value":"order_approve"},{"type":"literal","value":"order_play"},{"type":"literal","value":"orders"},{"type":"literal","value":"orthopedics"},{"type":"literal","value":"other_admission"},{"type":"literal","value":"other_houses"},{"type":"literal","value":"outbound"},{"type":"literal","value":"outbox"},{"type":"literal","value":"outbox_alt"},{"type":"literal","value":"outdoor_garden"},{"type":"literal","value":"outdoor_grill"},{"type":"literal","value":"outgoing_mail"},{"type":"literal","value":"outlet"},{"type":"literal","value":"outlined_flag"},{"type":"literal","value":"outpatient"},{"type":"literal","value":"outpatient_med"},{"type":"literal","value":"output_circle"},{"type":"literal","value":"oven_gen"},{"type":"literal","value":"overview"},{"type":"literal","value":"overview_key"},{"type":"literal","value":"owl"},{"type":"literal","value":"oxygen_saturation"},{"type":"literal","value":"p2p"},{"type":"literal","value":"pace"},{"type":"literal","value":"pacemaker"},{"type":"literal","value":"package_2"},{"type":"literal","value":"padel"},{"type":"literal","value":"page_control"},{"type":"literal","value":"page_footer"},{"type":"literal","value":"page_header"},{"type":"literal","value":"page_info"},{"type":"literal","value":"page_menu_ios"},{"type":"literal","value":"pageless"},{"type":"literal","value":"pages"},{"type":"literal","value":"pageview"},{"type":"literal","value":"paid"},{"type":"literal","value":"pallet"},{"type":"literal","value":"pan_tool"},{"type":"literal","value":"pan_tool_alt"},{"type":"literal","value":"pan_zoom"},{"type":"literal","value":"panorama"},{"type":"literal","value":"panorama_fish_eye"},{"type":"literal","value":"panorama_horizontal"},{"type":"literal","value":"panorama_horizontal_select"},{"type":"literal","value":"panorama_photosphere"},{"type":"literal","value":"panorama_photosphere_select"},{"type":"literal","value":"panorama_vertical"},{"type":"literal","value":"panorama_vertical_select"},{"type":"literal","value":"panorama_wide_angle"},{"type":"literal","value":"panorama_wide_angle_select"},{"type":"literal","value":"paragliding"},{"type":"literal","value":"parent_child_dining"},{"type":"literal","value":"park"},{"type":"literal","value":"parking_meter"},{"type":"literal","value":"parking_sign"},{"type":"literal","value":"parking_valet"},{"type":"literal","value":"partly_cloudy_day"},{"type":"literal","value":"partly_cloudy_night"},{"type":"literal","value":"partner_exchange"},{"type":"literal","value":"partner_heart"},{"type":"literal","value":"partner_reports"},{"type":"literal","value":"party_mode"},{"type":"literal","value":"passkey"},{"type":"literal","value":"password"},{"type":"literal","value":"password_2"},{"type":"literal","value":"password_2_off"},{"type":"literal","value":"patient_list"},{"type":"literal","value":"pause_circle"},{"type":"literal","value":"pause_circle_filled"},{"type":"literal","value":"pause_circle_outline"},{"type":"literal","value":"pause_presentation"},{"type":"literal","value":"payment"},{"type":"literal","value":"payment_arrow_down"},{"type":"literal","value":"payment_card"},{"type":"literal","value":"payments"},{"type":"literal","value":"pedal_bike"},{"type":"literal","value":"pediatrics"},{"type":"literal","value":"pen_size_1"},{"type":"literal","value":"pen_size_2"},{"type":"literal","value":"pen_size_3"},{"type":"literal","value":"pen_size_4"},{"type":"literal","value":"pen_size_5"},{"type":"literal","value":"pending"},{"type":"literal","value":"pending_actions"},{"type":"literal","value":"people"},{"type":"literal","value":"people_alt"},{"type":"literal","value":"people_outline"},{"type":"literal","value":"percent_discount"},{"type":"literal","value":"pergola"},{"type":"literal","value":"perm_camera_mic"},{"type":"literal","value":"perm_contact_calendar"},{"type":"literal","value":"perm_data_setting"},{"type":"literal","value":"perm_device_information"},{"type":"literal","value":"perm_identity"},{"type":"literal","value":"perm_media"},{"type":"literal","value":"perm_phone_msg"},{"type":"literal","value":"perm_scan_wifi"},{"type":"literal","value":"person_2"},{"type":"literal","value":"person_3"},{"type":"literal","value":"person_4"},{"type":"literal","value":"person_add"},{"type":"literal","value":"person_add_alt"},{"type":"literal","value":"person_add_alt_1"},{"type":"literal","value":"person_add_disabled"},{"type":"literal","value":"person_alert"},{"type":"literal","value":"person_apron"},{"type":"literal","value":"person_book"},{"type":"literal","value":"person_cancel"},{"type":"literal","value":"person_celebrate"},{"type":"literal","value":"person_check"},{"type":"literal","value":"person_edit"},{"type":"literal","value":"person_heart"},{"type":"literal","value":"person_off"},{"type":"literal","value":"person_outline"},{"type":"literal","value":"person_pin"},{"type":"literal","value":"person_pin_circle"},{"type":"literal","value":"person_play"},{"type":"literal","value":"person_raised_hand"},{"type":"literal","value":"person_remove"},{"type":"literal","value":"person_remove_alt_1"},{"type":"literal","value":"person_search"},{"type":"literal","value":"person_shield"},{"type":"literal","value":"personal_bag"},{"type":"literal","value":"personal_bag_off"},{"type":"literal","value":"personal_bag_question"},{"type":"literal","value":"personal_injury"},{"type":"literal","value":"personal_places"},{"type":"literal","value":"personal_video"},{"type":"literal","value":"pest_control"},{"type":"literal","value":"pest_control_rodent"},{"type":"literal","value":"pet_supplies"},{"type":"literal","value":"pets"},{"type":"literal","value":"phishing"},{"type":"literal","value":"phone_android"},{"type":"literal","value":"phone_bluetooth_speaker"},{"type":"literal","value":"phone_callback"},{"type":"literal","value":"phone_disabled"},{"type":"literal","value":"phone_enabled"},{"type":"literal","value":"phone_forwarded"},{"type":"literal","value":"phone_in_talk"},{"type":"literal","value":"phone_iphone"},{"type":"literal","value":"phone_locked"},{"type":"literal","value":"phone_missed"},{"type":"literal","value":"phone_paused"},{"type":"literal","value":"phonelink"},{"type":"literal","value":"phonelink_erase"},{"type":"literal","value":"phonelink_lock"},{"type":"literal","value":"phonelink_off"},{"type":"literal","value":"phonelink_ring"},{"type":"literal","value":"phonelink_setup"},{"type":"literal","value":"photo_album"},{"type":"literal","value":"photo_auto_merge"},{"type":"literal","value":"photo_camera"},{"type":"literal","value":"photo_camera_back"},{"type":"literal","value":"photo_camera_front"},{"type":"literal","value":"photo_filter"},{"type":"literal","value":"photo_frame"},{"type":"literal","value":"photo_library"},{"type":"literal","value":"photo_prints"},{"type":"literal","value":"photo_size_select_actual"},{"type":"literal","value":"photo_size_select_large"},{"type":"literal","value":"photo_size_select_small"},{"type":"literal","value":"php"},{"type":"literal","value":"physical_therapy"},{"type":"literal","value":"piano"},{"type":"literal","value":"piano_off"},{"type":"literal","value":"pickleball"},{"type":"literal","value":"picture_as_pdf"},{"type":"literal","value":"picture_in_picture"},{"type":"literal","value":"picture_in_picture_alt"},{"type":"literal","value":"picture_in_picture_center"},{"type":"literal","value":"picture_in_picture_large"},{"type":"literal","value":"picture_in_picture_medium"},{"type":"literal","value":"picture_in_picture_mobile"},{"type":"literal","value":"picture_in_picture_off"},{"type":"literal","value":"picture_in_picture_small"},{"type":"literal","value":"pie_chart"},{"type":"literal","value":"pie_chart_outline"},{"type":"literal","value":"pie_chart_outlined"},{"type":"literal","value":"pill_off"},{"type":"literal","value":"pin_drop"},{"type":"literal","value":"pin_end"},{"type":"literal","value":"pin_invoke"},{"type":"literal","value":"pinboard"},{"type":"literal","value":"pinboard_unread"},{"type":"literal","value":"pinch"},{"type":"literal","value":"pinch_zoom_in"},{"type":"literal","value":"pinch_zoom_out"},{"type":"literal","value":"pip_exit"},{"type":"literal","value":"pivot_table_chart"},{"type":"literal","value":"pix"},{"type":"literal","value":"place"},{"type":"literal","value":"place_item"},{"type":"literal","value":"plagiarism"},{"type":"literal","value":"plane_contrails"},{"type":"literal","value":"planet"},{"type":"literal","value":"planner_banner_ad_pt"},{"type":"literal","value":"planner_review"},{"type":"literal","value":"play_arrow"},{"type":"literal","value":"play_circle"},{"type":"literal","value":"play_circle_filled"},{"type":"literal","value":"play_circle_outline"},{"type":"literal","value":"play_disabled"},{"type":"literal","value":"play_for_work"},{"type":"literal","value":"play_lesson"},{"type":"literal","value":"play_pause"},{"type":"literal","value":"playground"},{"type":"literal","value":"playground_2"},{"type":"literal","value":"playing_cards"},{"type":"literal","value":"playlist_add"},{"type":"literal","value":"playlist_add_check"},{"type":"literal","value":"playlist_add_check_circle"},{"type":"literal","value":"playlist_add_circle"},{"type":"literal","value":"playlist_play"},{"type":"literal","value":"playlist_remove"},{"type":"literal","value":"plug_connect"},{"type":"literal","value":"plumbing"},{"type":"literal","value":"plus_one"},{"type":"literal","value":"podcasts"},{"type":"literal","value":"podiatry"},{"type":"literal","value":"podium"},{"type":"literal","value":"point_of_sale"},{"type":"literal","value":"point_scan"},{"type":"literal","value":"poker_chip"},{"type":"literal","value":"policy_alert"},{"type":"literal","value":"poll"},{"type":"literal","value":"polymer"},{"type":"literal","value":"pool"},{"type":"literal","value":"portable_wifi_off"},{"type":"literal","value":"position_bottom_left"},{"type":"literal","value":"position_bottom_right"},{"type":"literal","value":"position_top_right"},{"type":"literal","value":"post"},{"type":"literal","value":"post_add"},{"type":"literal","value":"potted_plant"},{"type":"literal","value":"power_input"},{"type":"literal","value":"power_off"},{"type":"literal","value":"power_settings_circle"},{"type":"literal","value":"power_settings_new"},{"type":"literal","value":"prayer_times"},{"type":"literal","value":"precision_manufacturing"},{"type":"literal","value":"pregnancy"},{"type":"literal","value":"pregnant_woman"},{"type":"literal","value":"preliminary"},{"type":"literal","value":"prescriptions"},{"type":"literal","value":"present_to_all"},{"type":"literal","value":"preview"},{"type":"literal","value":"preview_off"},{"type":"literal","value":"price_change"},{"type":"literal","value":"price_check"},{"type":"literal","value":"print_add"},{"type":"literal","value":"print_connect"},{"type":"literal","value":"print_disabled"},{"type":"literal","value":"print_error"},{"type":"literal","value":"print_lock"},{"type":"literal","value":"priority"},{"type":"literal","value":"priority_high"},{"type":"literal","value":"privacy"},{"type":"literal","value":"privacy_tip"},{"type":"literal","value":"private_connectivity"},{"type":"literal","value":"problem"},{"type":"literal","value":"procedure"},{"type":"literal","value":"process_chart"},{"type":"literal","value":"production_quantity_limits"},{"type":"literal","value":"productivity"},{"type":"literal","value":"progress_activity"},{"type":"literal","value":"prompt_suggestion"},{"type":"literal","value":"propane"},{"type":"literal","value":"propane_tank"},{"type":"literal","value":"psychiatry"},{"type":"literal","value":"psychology"},{"type":"literal","value":"psychology_alt"},{"type":"literal","value":"public_off"},{"type":"literal","value":"publish"},{"type":"literal","value":"published_with_changes"},{"type":"literal","value":"pulmonology"},{"type":"literal","value":"pulse_alert"},{"type":"literal","value":"punch_clock"},{"type":"literal","value":"push_pin"},{"type":"literal","value":"qr_code"},{"type":"literal","value":"qr_code_2"},{"type":"literal","value":"qr_code_2_add"},{"type":"literal","value":"qr_code_scanner"},{"type":"literal","value":"query_builder"},{"type":"literal","value":"query_stats"},{"type":"literal","value":"question_answer"},{"type":"literal","value":"question_exchange"},{"type":"literal","value":"question_mark"},{"type":"literal","value":"queue"},{"type":"literal","value":"queue_music"},{"type":"literal","value":"queue_play_next"},{"type":"literal","value":"quick_phrases"},{"type":"literal","value":"quick_reference"},{"type":"literal","value":"quick_reference_all"},{"type":"literal","value":"quick_reorder"},{"type":"literal","value":"quickreply"},{"type":"literal","value":"quiz"},{"type":"literal","value":"r_mobiledata"},{"type":"literal","value":"radar"},{"type":"literal","value":"radio_button_checked"},{"type":"literal","value":"radio_button_partial"},{"type":"literal","value":"radio_button_unchecked"},{"type":"literal","value":"radiology"},{"type":"literal","value":"railway_alert"},{"type":"literal","value":"railway_alert_2"},{"type":"literal","value":"rainy"},{"type":"literal","value":"rainy_heavy"},{"type":"literal","value":"rainy_light"},{"type":"literal","value":"rainy_snow"},{"type":"literal","value":"ramen_dining"},{"type":"literal","value":"ramp_left"},{"type":"literal","value":"ramp_right"},{"type":"literal","value":"range_hood"},{"type":"literal","value":"rate_review"},{"type":"literal","value":"raven"},{"type":"literal","value":"raw_off"},{"type":"literal","value":"raw_on"},{"type":"literal","value":"read_more"},{"type":"literal","value":"readiness_score"},{"type":"literal","value":"real_estate_agent"},{"type":"literal","value":"rear_camera"},{"type":"literal","value":"rebase"},{"type":"literal","value":"rebase_edit"},{"type":"literal","value":"receipt_long"},{"type":"literal","value":"receipt_long_off"},{"type":"literal","value":"recent_actors"},{"type":"literal","value":"recent_patient"},{"type":"literal","value":"recenter"},{"type":"literal","value":"recommend"},{"type":"literal","value":"record_voice_over"},{"type":"literal","value":"recycling"},{"type":"literal","value":"redeem"},{"type":"literal","value":"redo"},{"type":"literal","value":"reduce_capacity"},{"type":"literal","value":"regular_expression"},{"type":"literal","value":"relax"},{"type":"literal","value":"release_alert"},{"type":"literal","value":"remember_me"},{"type":"literal","value":"reminder"},{"type":"literal","value":"remote_gen"},{"type":"literal","value":"remove_circle"},{"type":"literal","value":"remove_circle_outline"},{"type":"literal","value":"remove_done"},{"type":"literal","value":"remove_from_queue"},{"type":"literal","value":"remove_moderator"},{"type":"literal","value":"remove_red_eye"},{"type":"literal","value":"remove_road"},{"type":"literal","value":"remove_selection"},{"type":"literal","value":"remove_shopping_cart"},{"type":"literal","value":"reopen_window"},{"type":"literal","value":"reorder"},{"type":"literal","value":"repartition"},{"type":"literal","value":"repeat_on"},{"type":"literal","value":"repeat_one"},{"type":"literal","value":"repeat_one_on"},{"type":"literal","value":"replace_audio"},{"type":"literal","value":"replace_image"},{"type":"literal","value":"replace_video"},{"type":"literal","value":"replay"},{"type":"literal","value":"replay_10"},{"type":"literal","value":"replay_30"},{"type":"literal","value":"replay_5"},{"type":"literal","value":"replay_circle_filled"},{"type":"literal","value":"reply"},{"type":"literal","value":"reply_all"},{"type":"literal","value":"report_gmailerrorred"},{"type":"literal","value":"report_off"},{"type":"literal","value":"report_problem"},{"type":"literal","value":"request_page"},{"type":"literal","value":"request_quote"},{"type":"literal","value":"reset_brightness"},{"type":"literal","value":"reset_exposure"},{"type":"literal","value":"reset_focus"},{"type":"literal","value":"reset_image"},{"type":"literal","value":"reset_iso"},{"type":"literal","value":"reset_settings"},{"type":"literal","value":"reset_shadow"},{"type":"literal","value":"reset_shutter_speed"},{"type":"literal","value":"reset_tv"},{"type":"literal","value":"reset_white_balance"},{"type":"literal","value":"reset_wrench"},{"type":"literal","value":"respiratory_rate"},{"type":"literal","value":"responsive_layout"},{"type":"literal","value":"rest_area"},{"type":"literal","value":"restart_alt"},{"type":"literal","value":"restaurant"},{"type":"literal","value":"restaurant_menu"},{"type":"literal","value":"restore"},{"type":"literal","value":"restore_from_trash"},{"type":"literal","value":"restore_page"},{"type":"literal","value":"resume"},{"type":"literal","value":"reviews"},{"type":"literal","value":"rewarded_ads"},{"type":"literal","value":"rheumatology"},{"type":"literal","value":"rib_cage"},{"type":"literal","value":"rice_bowl"},{"type":"literal","value":"right_click"},{"type":"literal","value":"right_panel_close"},{"type":"literal","value":"right_panel_open"},{"type":"literal","value":"ring_volume"},{"type":"literal","value":"ripples"},{"type":"literal","value":"road"},{"type":"literal","value":"robot"},{"type":"literal","value":"robot_2"},{"type":"literal","value":"rocket"},{"type":"literal","value":"rocket_launch"},{"type":"literal","value":"roller_shades"},{"type":"literal","value":"roller_shades_closed"},{"type":"literal","value":"roller_skating"},{"type":"literal","value":"roofing"},{"type":"literal","value":"room"},{"type":"literal","value":"room_preferences"},{"type":"literal","value":"room_service"},{"type":"literal","value":"rotate_90_degrees_ccw"},{"type":"literal","value":"rotate_90_degrees_cw"},{"type":"literal","value":"rotate_auto"},{"type":"literal","value":"rotate_left"},{"type":"literal","value":"rotate_right"},{"type":"literal","value":"roundabout_left"},{"type":"literal","value":"roundabout_right"},{"type":"literal","value":"rounded_corner"},{"type":"literal","value":"router_off"},{"type":"literal","value":"routine"},{"type":"literal","value":"rowing"},{"type":"literal","value":"rss_feed"},{"type":"literal","value":"rsvp"},{"type":"literal","value":"rtt"},{"type":"literal","value":"rubric"},{"type":"literal","value":"rule"},{"type":"literal","value":"rule_folder"},{"type":"literal","value":"rule_settings"},{"type":"literal","value":"run_circle"},{"type":"literal","value":"running_with_errors"},{"type":"literal","value":"rv_hookup"},{"type":"literal","value":"safety_check"},{"type":"literal","value":"safety_check_off"},{"type":"literal","value":"safety_divider"},{"type":"literal","value":"sailing"},{"type":"literal","value":"salinity"},{"type":"literal","value":"sanitizer"},{"type":"literal","value":"satellite"},{"type":"literal","value":"satellite_alt"},{"type":"literal","value":"sauna"},{"type":"literal","value":"save"},{"type":"literal","value":"save_alt"},{"type":"literal","value":"save_as"},{"type":"literal","value":"save_clock"},{"type":"literal","value":"saved_search"},{"type":"literal","value":"savings"},{"type":"literal","value":"scan"},{"type":"literal","value":"scan_delete"},{"type":"literal","value":"scatter_plot"},{"type":"literal","value":"scene"},{"type":"literal","value":"schedule"},{"type":"literal","value":"schedule_send"},{"type":"literal","value":"schema"},{"type":"literal","value":"school"},{"type":"literal","value":"science"},{"type":"literal","value":"science_off"},{"type":"literal","value":"score"},{"type":"literal","value":"scoreboard"},{"type":"literal","value":"screen_lock_landscape"},{"type":"literal","value":"screen_lock_portrait"},{"type":"literal","value":"screen_lock_rotation"},{"type":"literal","value":"screen_record"},{"type":"literal","value":"screen_rotation"},{"type":"literal","value":"screen_rotation_alt"},{"type":"literal","value":"screen_rotation_up"},{"type":"literal","value":"screen_search_desktop"},{"type":"literal","value":"screen_share"},{"type":"literal","value":"screenshot"},{"type":"literal","value":"screenshot_frame"},{"type":"literal","value":"screenshot_frame_2"},{"type":"literal","value":"screenshot_keyboard"},{"type":"literal","value":"screenshot_monitor"},{"type":"literal","value":"screenshot_region"},{"type":"literal","value":"screenshot_tablet"},{"type":"literal","value":"scrollable_header"},{"type":"literal","value":"scuba_diving"},{"type":"literal","value":"sd"},{"type":"literal","value":"sd_card"},{"type":"literal","value":"sd_card_alert"},{"type":"literal","value":"sd_storage"},{"type":"literal","value":"sdk"},{"type":"literal","value":"search_activity"},{"type":"literal","value":"search_check"},{"type":"literal","value":"search_check_2"},{"type":"literal","value":"search_gear"},{"type":"literal","value":"search_hands_free"},{"type":"literal","value":"search_insights"},{"type":"literal","value":"search_off"},{"type":"literal","value":"seat_cool_left"},{"type":"literal","value":"seat_cool_right"},{"type":"literal","value":"seat_heat_left"},{"type":"literal","value":"seat_heat_right"},{"type":"literal","value":"seat_vent_left"},{"type":"literal","value":"seat_vent_right"},{"type":"literal","value":"security"},{"type":"literal","value":"security_key"},{"type":"literal","value":"security_update"},{"type":"literal","value":"security_update_good"},{"type":"literal","value":"security_update_warning"},{"type":"literal","value":"select_all"},{"type":"literal","value":"select_check_box"},{"type":"literal","value":"select_to_speak"},{"type":"literal","value":"select_window"},{"type":"literal","value":"select_window_2"},{"type":"literal","value":"select_window_off"},{"type":"literal","value":"self_care"},{"type":"literal","value":"self_improvement"},{"type":"literal","value":"sell"},{"type":"literal","value":"send_and_archive"},{"type":"literal","value":"send_money"},{"type":"literal","value":"send_time_extension"},{"type":"literal","value":"send_to_mobile"},{"type":"literal","value":"sensor_door"},{"type":"literal","value":"sensor_occupied"},{"type":"literal","value":"sensor_window"},{"type":"literal","value":"sensors"},{"type":"literal","value":"sensors_krx"},{"type":"literal","value":"sensors_krx_off"},{"type":"literal","value":"sensors_off"},{"type":"literal","value":"sentiment_calm"},{"type":"literal","value":"sentiment_content"},{"type":"literal","value":"sentiment_dissatisfied"},{"type":"literal","value":"sentiment_excited"},{"type":"literal","value":"sentiment_extremely_dissatisfied"},{"type":"literal","value":"sentiment_frustrated"},{"type":"literal","value":"sentiment_neutral"},{"type":"literal","value":"sentiment_sad"},{"type":"literal","value":"sentiment_satisfied"},{"type":"literal","value":"sentiment_satisfied_alt"},{"type":"literal","value":"sentiment_stressed"},{"type":"literal","value":"sentiment_very_dissatisfied"},{"type":"literal","value":"sentiment_very_satisfied"},{"type":"literal","value":"sentiment_worried"},{"type":"literal","value":"serif"},{"type":"literal","value":"server_person"},{"type":"literal","value":"service_toolbox"},{"type":"literal","value":"set_meal"},{"type":"literal","value":"settings_accessibility"},{"type":"literal","value":"settings_account_box"},{"type":"literal","value":"settings_alert"},{"type":"literal","value":"settings_applications"},{"type":"literal","value":"settings_b_roll"},{"type":"literal","value":"settings_backup_restore"},{"type":"literal","value":"settings_bluetooth"},{"type":"literal","value":"settings_brightness"},{"type":"literal","value":"settings_cell"},{"type":"literal","value":"settings_cinematic_blur"},{"type":"literal","value":"settings_ethernet"},{"type":"literal","value":"settings_heart"},{"type":"literal","value":"settings_input_antenna"},{"type":"literal","value":"settings_input_component"},{"type":"literal","value":"settings_input_composite"},{"type":"literal","value":"settings_input_hdmi"},{"type":"literal","value":"settings_input_svideo"},{"type":"literal","value":"settings_motion_mode"},{"type":"literal","value":"settings_night_sight"},{"type":"literal","value":"settings_overscan"},{"type":"literal","value":"settings_panorama"},{"type":"literal","value":"settings_phone"},{"type":"literal","value":"settings_photo_camera"},{"type":"literal","value":"settings_power"},{"type":"literal","value":"settings_remote"},{"type":"literal","value":"settings_seating"},{"type":"literal","value":"settings_slow_motion"},{"type":"literal","value":"settings_suggest"},{"type":"literal","value":"settings_system_daydream"},{"type":"literal","value":"settings_timelapse"},{"type":"literal","value":"settings_video_camera"},{"type":"literal","value":"settings_voice"},{"type":"literal","value":"settop_component"},{"type":"literal","value":"severe_cold"},{"type":"literal","value":"shadow_add"},{"type":"literal","value":"shadow_minus"},{"type":"literal","value":"shape_line"},{"type":"literal","value":"shapes"},{"type":"literal","value":"share_eta"},{"type":"literal","value":"share_location"},{"type":"literal","value":"share_off"},{"type":"literal","value":"share_reviews"},{"type":"literal","value":"share_windows"},{"type":"literal","value":"shaved_ice"},{"type":"literal","value":"sheets_rtl"},{"type":"literal","value":"shelf_auto_hide"},{"type":"literal","value":"shelf_position"},{"type":"literal","value":"shelves"},{"type":"literal","value":"shield_lock"},{"type":"literal","value":"shield_locked"},{"type":"literal","value":"shield_moon"},{"type":"literal","value":"shield_person"},{"type":"literal","value":"shield_question"},{"type":"literal","value":"shield_toggle"},{"type":"literal","value":"shield_watch"},{"type":"literal","value":"shield_with_heart"},{"type":"literal","value":"shield_with_house"},{"type":"literal","value":"shift_lock"},{"type":"literal","value":"shift_lock_off"},{"type":"literal","value":"shop"},{"type":"literal","value":"shop_2"},{"type":"literal","value":"shop_two"},{"type":"literal","value":"shopping_bag"},{"type":"literal","value":"shopping_bag_speed"},{"type":"literal","value":"shopping_basket"},{"type":"literal","value":"shopping_cart"},{"type":"literal","value":"shopping_cart_checkout"},{"type":"literal","value":"shopping_cart_off"},{"type":"literal","value":"shoppingmode"},{"type":"literal","value":"short_stay"},{"type":"literal","value":"short_text"},{"type":"literal","value":"shortcut"},{"type":"literal","value":"show_chart"},{"type":"literal","value":"shuffle_on"},{"type":"literal","value":"shutter_speed"},{"type":"literal","value":"shutter_speed_add"},{"type":"literal","value":"shutter_speed_minus"},{"type":"literal","value":"sick"},{"type":"literal","value":"side_navigation"},{"type":"literal","value":"sign_language"},{"type":"literal","value":"signal_cellular_0_bar"},{"type":"literal","value":"signal_cellular_1_bar"},{"type":"literal","value":"signal_cellular_2_bar"},{"type":"literal","value":"signal_cellular_3_bar"},{"type":"literal","value":"signal_cellular_4_bar"},{"type":"literal","value":"signal_cellular_add"},{"type":"literal","value":"signal_cellular_alt"},{"type":"literal","value":"signal_cellular_alt_1_bar"},{"type":"literal","value":"signal_cellular_alt_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_0_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_1_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_3_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_4_bar"},{"type":"literal","value":"signal_cellular_no_sim"},{"type":"literal","value":"signal_cellular_nodata"},{"type":"literal","value":"signal_cellular_null"},{"type":"literal","value":"signal_cellular_off"},{"type":"literal","value":"signal_cellular_pause"},{"type":"literal","value":"signal_disconnected"},{"type":"literal","value":"signal_wifi_0_bar"},{"type":"literal","value":"signal_wifi_1_bar"},{"type":"literal","value":"signal_wifi_1_bar_lock"},{"type":"literal","value":"signal_wifi_2_bar"},{"type":"literal","value":"signal_wifi_2_bar_lock"},{"type":"literal","value":"signal_wifi_3_bar"},{"type":"literal","value":"signal_wifi_3_bar_lock"},{"type":"literal","value":"signal_wifi_4_bar"},{"type":"literal","value":"signal_wifi_4_bar_lock"},{"type":"literal","value":"signal_wifi_bad"},{"type":"literal","value":"signal_wifi_connected_no_internet_0"},{"type":"literal","value":"signal_wifi_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_off"},{"type":"literal","value":"signal_wifi_statusbar_1_bar"},{"type":"literal","value":"signal_wifi_statusbar_2_bar"},{"type":"literal","value":"signal_wifi_statusbar_3_bar"},{"type":"literal","value":"signal_wifi_statusbar_4_bar"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_statusbar_not_connected"},{"type":"literal","value":"signal_wifi_statusbar_null"},{"type":"literal","value":"signpost"},{"type":"literal","value":"sim_card"},{"type":"literal","value":"sim_card_alert"},{"type":"literal","value":"sim_card_download"},{"type":"literal","value":"simulation"},{"type":"literal","value":"single_bed"},{"type":"literal","value":"sip"},{"type":"literal","value":"siren"},{"type":"literal","value":"siren_check"},{"type":"literal","value":"siren_open"},{"type":"literal","value":"siren_question"},{"type":"literal","value":"skateboarding"},{"type":"literal","value":"skeleton"},{"type":"literal","value":"skillet"},{"type":"literal","value":"skillet_cooktop"},{"type":"literal","value":"skip_next"},{"type":"literal","value":"skip_previous"},{"type":"literal","value":"skull"},{"type":"literal","value":"skull_list"},{"type":"literal","value":"slab_serif"},{"type":"literal","value":"sledding"},{"type":"literal","value":"sleep_score"},{"type":"literal","value":"slide_library"},{"type":"literal","value":"sliders"},{"type":"literal","value":"slideshow"},{"type":"literal","value":"slow_motion_video"},{"type":"literal","value":"smart_button"},{"type":"literal","value":"smart_card_reader"},{"type":"literal","value":"smart_card_reader_off"},{"type":"literal","value":"smart_display"},{"type":"literal","value":"smart_outlet"},{"type":"literal","value":"smart_screen"},{"type":"literal","value":"smart_toy"},{"type":"literal","value":"smb_share"},{"type":"literal","value":"smoke_free"},{"type":"literal","value":"smoking_rooms"},{"type":"literal","value":"sms"},{"type":"literal","value":"sms_failed"},{"type":"literal","value":"snippet_folder"},{"type":"literal","value":"snooze"},{"type":"literal","value":"snowboarding"},{"type":"literal","value":"snowing"},{"type":"literal","value":"snowing_heavy"},{"type":"literal","value":"snowmobile"},{"type":"literal","value":"snowshoeing"},{"type":"literal","value":"soap"},{"type":"literal","value":"soba"},{"type":"literal","value":"social_distance"},{"type":"literal","value":"social_leaderboard"},{"type":"literal","value":"solar_power"},{"type":"literal","value":"solo_dining"},{"type":"literal","value":"sort_by_alpha"},{"type":"literal","value":"sound_detection_dog_barking"},{"type":"literal","value":"sound_detection_glass_break"},{"type":"literal","value":"sound_detection_loud_sound"},{"type":"literal","value":"sound_sampler"},{"type":"literal","value":"soup_kitchen"},{"type":"literal","value":"source_environment"},{"type":"literal","value":"source_notes"},{"type":"literal","value":"south"},{"type":"literal","value":"south_america"},{"type":"literal","value":"south_east"},{"type":"literal","value":"south_west"},{"type":"literal","value":"spa"},{"type":"literal","value":"space_bar"},{"type":"literal","value":"space_dashboard"},{"type":"literal","value":"spatial_audio"},{"type":"literal","value":"spatial_audio_off"},{"type":"literal","value":"spatial_speaker"},{"type":"literal","value":"spatial_tracking"},{"type":"literal","value":"speaker_group"},{"type":"literal","value":"speaker_notes"},{"type":"literal","value":"speaker_notes_off"},{"type":"literal","value":"speaker_phone"},{"type":"literal","value":"special_character"},{"type":"literal","value":"specific_gravity"},{"type":"literal","value":"speech_to_text"},{"type":"literal","value":"speed_0_25"},{"type":"literal","value":"speed_0_2x"},{"type":"literal","value":"speed_0_5"},{"type":"literal","value":"speed_0_5x"},{"type":"literal","value":"speed_0_75"},{"type":"literal","value":"speed_0_7x"},{"type":"literal","value":"speed_1_2"},{"type":"literal","value":"speed_1_25"},{"type":"literal","value":"speed_1_2x"},{"type":"literal","value":"speed_1_5"},{"type":"literal","value":"speed_1_5x"},{"type":"literal","value":"speed_1_75"},{"type":"literal","value":"speed_1_7x"},{"type":"literal","value":"speed_2x"},{"type":"literal","value":"speed_camera"},{"type":"literal","value":"spellcheck"},{"type":"literal","value":"split_scene"},{"type":"literal","value":"split_scene_down"},{"type":"literal","value":"split_scene_left"},{"type":"literal","value":"split_scene_right"},{"type":"literal","value":"split_scene_up"},{"type":"literal","value":"splitscreen"},{"type":"literal","value":"splitscreen_add"},{"type":"literal","value":"splitscreen_bottom"},{"type":"literal","value":"splitscreen_landscape"},{"type":"literal","value":"splitscreen_left"},{"type":"literal","value":"splitscreen_portrait"},{"type":"literal","value":"splitscreen_right"},{"type":"literal","value":"splitscreen_top"},{"type":"literal","value":"splitscreen_vertical_add"},{"type":"literal","value":"spo2"},{"type":"literal","value":"spoke"},{"type":"literal","value":"sports"},{"type":"literal","value":"sports_and_outdoors"},{"type":"literal","value":"sports_bar"},{"type":"literal","value":"sports_baseball"},{"type":"literal","value":"sports_basketball"},{"type":"literal","value":"sports_cricket"},{"type":"literal","value":"sports_esports"},{"type":"literal","value":"sports_football"},{"type":"literal","value":"sports_golf"},{"type":"literal","value":"sports_gymnastics"},{"type":"literal","value":"sports_handball"},{"type":"literal","value":"sports_hockey"},{"type":"literal","value":"sports_kabaddi"},{"type":"literal","value":"sports_martial_arts"},{"type":"literal","value":"sports_mma"},{"type":"literal","value":"sports_motorsports"},{"type":"literal","value":"sports_rugby"},{"type":"literal","value":"sports_score"},{"type":"literal","value":"sports_soccer"},{"type":"literal","value":"sports_tennis"},{"type":"literal","value":"sports_volleyball"},{"type":"literal","value":"sprint"},{"type":"literal","value":"square_dot"},{"type":"literal","value":"square_foot"},{"type":"literal","value":"ssid_chart"},{"type":"literal","value":"stack_group"},{"type":"literal","value":"stack_hexagon"},{"type":"literal","value":"stack_off"},{"type":"literal","value":"stack_star"},{"type":"literal","value":"stacked_bar_chart"},{"type":"literal","value":"stacked_email"},{"type":"literal","value":"stacked_inbox"},{"type":"literal","value":"stacked_line_chart"},{"type":"literal","value":"stacks"},{"type":"literal","value":"stadia_controller"},{"type":"literal","value":"stadium"},{"type":"literal","value":"stairs_2"},{"type":"literal","value":"star_border"},{"type":"literal","value":"star_border_purple500"},{"type":"literal","value":"star_half"},{"type":"literal","value":"star_outline"},{"type":"literal","value":"star_purple500"},{"type":"literal","value":"star_rate"},{"type":"literal","value":"star_rate_half"},{"type":"literal","value":"star_shine"},{"type":"literal","value":"stars"},{"type":"literal","value":"stars_2"},{"type":"literal","value":"stat_0"},{"type":"literal","value":"stat_1"},{"type":"literal","value":"stat_2"},{"type":"literal","value":"stat_3"},{"type":"literal","value":"stat_minus_1"},{"type":"literal","value":"stat_minus_2"},{"type":"literal","value":"stat_minus_3"},{"type":"literal","value":"stay_current_landscape"},{"type":"literal","value":"stay_current_portrait"},{"type":"literal","value":"stay_primary_landscape"},{"type":"literal","value":"stay_primary_portrait"},{"type":"literal","value":"steering_wheel_heat"},{"type":"literal","value":"step"},{"type":"literal","value":"step_into"},{"type":"literal","value":"step_out"},{"type":"literal","value":"step_over"},{"type":"literal","value":"steppers"},{"type":"literal","value":"steps"},{"type":"literal","value":"stethoscope_arrow"},{"type":"literal","value":"stethoscope_check"},{"type":"literal","value":"sticky_note"},{"type":"literal","value":"sticky_note_2"},{"type":"literal","value":"stock_media"},{"type":"literal","value":"stockpot"},{"type":"literal","value":"stop_circle"},{"type":"literal","value":"stop_screen_share"},{"type":"literal","value":"store"},{"type":"literal","value":"store_mall_directory"},{"type":"literal","value":"storm"},{"type":"literal","value":"straight"},{"type":"literal","value":"straighten"},{"type":"literal","value":"strategy"},{"type":"literal","value":"stream"},{"type":"literal","value":"streetview"},{"type":"literal","value":"stress_management"},{"type":"literal","value":"strikethrough_s"},{"type":"literal","value":"stroke_full"},{"type":"literal","value":"stroke_partial"},{"type":"literal","value":"styler"},{"type":"literal","value":"stylus"},{"type":"literal","value":"stylus_brush"},{"type":"literal","value":"stylus_fountain_pen"},{"type":"literal","value":"stylus_highlighter"},{"type":"literal","value":"stylus_laser_pointer"},{"type":"literal","value":"stylus_note"},{"type":"literal","value":"stylus_pen"},{"type":"literal","value":"stylus_pencil"},{"type":"literal","value":"subdirectory_arrow_left"},{"type":"literal","value":"subdirectory_arrow_right"},{"type":"literal","value":"subheader"},{"type":"literal","value":"subject"},{"type":"literal","value":"subscript"},{"type":"literal","value":"subscriptions"},{"type":"literal","value":"subtitles"},{"type":"literal","value":"subtitles_gear"},{"type":"literal","value":"subtitles_off"},{"type":"literal","value":"subway"},{"type":"literal","value":"subway_walk"},{"type":"literal","value":"summarize"},{"type":"literal","value":"sunny"},{"type":"literal","value":"sunny_snowing"},{"type":"literal","value":"superscript"},{"type":"literal","value":"supervised_user_circle"},{"type":"literal","value":"supervised_user_circle_off"},{"type":"literal","value":"supervisor_account"},{"type":"literal","value":"support"},{"type":"literal","value":"support_agent"},{"type":"literal","value":"surfing"},{"type":"literal","value":"surgical"},{"type":"literal","value":"surround_sound"},{"type":"literal","value":"swap_calls"},{"type":"literal","value":"swap_driving_apps"},{"type":"literal","value":"swap_driving_apps_wheel"},{"type":"literal","value":"swap_horiz"},{"type":"literal","value":"swap_horizontal_circle"},{"type":"literal","value":"swap_vert"},{"type":"literal","value":"swap_vertical_circle"},{"type":"literal","value":"sweep"},{"type":"literal","value":"swipe"},{"type":"literal","value":"swipe_down"},{"type":"literal","value":"swipe_down_alt"},{"type":"literal","value":"swipe_left"},{"type":"literal","value":"swipe_left_alt"},{"type":"literal","value":"swipe_right"},{"type":"literal","value":"swipe_right_alt"},{"type":"literal","value":"swipe_up"},{"type":"literal","value":"swipe_up_alt"},{"type":"literal","value":"swipe_vertical"},{"type":"literal","value":"switch_access"},{"type":"literal","value":"switch_access_2"},{"type":"literal","value":"switch_access_3"},{"type":"literal","value":"switch_access_shortcut"},{"type":"literal","value":"switch_access_shortcut_add"},{"type":"literal","value":"switch_account"},{"type":"literal","value":"switch_camera"},{"type":"literal","value":"switch_left"},{"type":"literal","value":"switch_right"},{"type":"literal","value":"switch_video"},{"type":"literal","value":"switches"},{"type":"literal","value":"sword_rose"},{"type":"literal","value":"swords"},{"type":"literal","value":"symptoms"},{"type":"literal","value":"synagogue"},{"type":"literal","value":"sync"},{"type":"literal","value":"sync_alt"},{"type":"literal","value":"sync_arrow_down"},{"type":"literal","value":"sync_arrow_up"},{"type":"literal","value":"sync_desktop"},{"type":"literal","value":"sync_disabled"},{"type":"literal","value":"sync_lock"},{"type":"literal","value":"sync_problem"},{"type":"literal","value":"sync_saved_locally"},{"type":"literal","value":"sync_saved_locally_off"},{"type":"literal","value":"system_security_update"},{"type":"literal","value":"system_security_update_good"},{"type":"literal","value":"system_security_update_warning"},{"type":"literal","value":"system_update"},{"type":"literal","value":"system_update_alt"},{"type":"literal","value":"tab_close"},{"type":"literal","value":"tab_close_inactive"},{"type":"literal","value":"tab_close_right"},{"type":"literal","value":"tab_duplicate"},{"type":"literal","value":"tab_group"},{"type":"literal","value":"tab_inactive"},{"type":"literal","value":"tab_move"},{"type":"literal","value":"tab_new_right"},{"type":"literal","value":"tab_recent"},{"type":"literal","value":"tab_search"},{"type":"literal","value":"tab_unselected"},{"type":"literal","value":"table_bar"},{"type":"literal","value":"table_chart"},{"type":"literal","value":"table_chart_view"},{"type":"literal","value":"table_convert"},{"type":"literal","value":"table_edit"},{"type":"literal","value":"table_eye"},{"type":"literal","value":"table_lamp"},{"type":"literal","value":"table_large"},{"type":"literal","value":"table_restaurant"},{"type":"literal","value":"table_rows"},{"type":"literal","value":"table_rows_narrow"},{"type":"literal","value":"table_sign"},{"type":"literal","value":"table_view"},{"type":"literal","value":"tablet_android"},{"type":"literal","value":"tablet_camera"},{"type":"literal","value":"tablet_mac"},{"type":"literal","value":"tabs"},{"type":"literal","value":"tactic"},{"type":"literal","value":"tag_faces"},{"type":"literal","value":"takeout_dining"},{"type":"literal","value":"takeout_dining_2"},{"type":"literal","value":"tamper_detection_off"},{"type":"literal","value":"tamper_detection_on"},{"type":"literal","value":"tap_and_play"},{"type":"literal","value":"tapas"},{"type":"literal","value":"task"},{"type":"literal","value":"task_alt"},{"type":"literal","value":"tatami_seat"},{"type":"literal","value":"taunt"},{"type":"literal","value":"taxi_alert"},{"type":"literal","value":"team_dashboard"},{"type":"literal","value":"temp_preferences_eco"},{"type":"literal","value":"temple_buddhist"},{"type":"literal","value":"temple_hindu"},{"type":"literal","value":"tenancy"},{"type":"literal","value":"terrain"},{"type":"literal","value":"text_ad"},{"type":"literal","value":"text_compare"},{"type":"literal","value":"text_decrease"},{"type":"literal","value":"text_fields"},{"type":"literal","value":"text_fields_alt"},{"type":"literal","value":"text_format"},{"type":"literal","value":"text_increase"},{"type":"literal","value":"text_rotate_up"},{"type":"literal","value":"text_rotate_vertical"},{"type":"literal","value":"text_rotation_angledown"},{"type":"literal","value":"text_rotation_angleup"},{"type":"literal","value":"text_rotation_down"},{"type":"literal","value":"text_rotation_none"},{"type":"literal","value":"text_select_end"},{"type":"literal","value":"text_select_jump_to_beginning"},{"type":"literal","value":"text_select_jump_to_end"},{"type":"literal","value":"text_select_move_back_character"},{"type":"literal","value":"text_select_move_back_word"},{"type":"literal","value":"text_select_move_down"},{"type":"literal","value":"text_select_move_forward_character"},{"type":"literal","value":"text_select_move_forward_word"},{"type":"literal","value":"text_select_move_up"},{"type":"literal","value":"text_select_start"},{"type":"literal","value":"text_snippet"},{"type":"literal","value":"text_to_speech"},{"type":"literal","value":"text_up"},{"type":"literal","value":"textsms"},{"type":"literal","value":"texture"},{"type":"literal","value":"texture_add"},{"type":"literal","value":"texture_minus"},{"type":"literal","value":"theater_comedy"},{"type":"literal","value":"theaters"},{"type":"literal","value":"thermometer_add"},{"type":"literal","value":"thermometer_gain"},{"type":"literal","value":"thermometer_loss"},{"type":"literal","value":"thermometer_minus"},{"type":"literal","value":"thermostat"},{"type":"literal","value":"thermostat_arrow_down"},{"type":"literal","value":"thermostat_arrow_up"},{"type":"literal","value":"thermostat_auto"},{"type":"literal","value":"thermostat_carbon"},{"type":"literal","value":"things_to_do"},{"type":"literal","value":"thread_unread"},{"type":"literal","value":"threat_intelligence"},{"type":"literal","value":"thumb_down"},{"type":"literal","value":"thumb_down_alt"},{"type":"literal","value":"thumb_down_off_alt"},{"type":"literal","value":"thumb_up"},{"type":"literal","value":"thumb_up_alt"},{"type":"literal","value":"thumb_up_off_alt"},{"type":"literal","value":"thumbnail_bar"},{"type":"literal","value":"thumbs_up_double"},{"type":"literal","value":"thumbs_up_down"},{"type":"literal","value":"thunderstorm"},{"type":"literal","value":"tibia"},{"type":"literal","value":"tibia_alt"},{"type":"literal","value":"tile_large"},{"type":"literal","value":"tile_medium"},{"type":"literal","value":"tile_small"},{"type":"literal","value":"time_auto"},{"type":"literal","value":"time_to_leave"},{"type":"literal","value":"timeline"},{"type":"literal","value":"timer_1"},{"type":"literal","value":"timer_10"},{"type":"literal","value":"timer_10_alt_1"},{"type":"literal","value":"timer_10_select"},{"type":"literal","value":"timer_2"},{"type":"literal","value":"timer_3"},{"type":"literal","value":"timer_3_alt_1"},{"type":"literal","value":"timer_3_select"},{"type":"literal","value":"timer_5"},{"type":"literal","value":"timer_5_shutter"},{"type":"literal","value":"timer_arrow_down"},{"type":"literal","value":"timer_arrow_up"},{"type":"literal","value":"timer_off"},{"type":"literal","value":"timer_pause"},{"type":"literal","value":"timer_play"},{"type":"literal","value":"tips_and_updates"},{"type":"literal","value":"tire_repair"},{"type":"literal","value":"titlecase"},{"type":"literal","value":"toast"},{"type":"literal","value":"toc"},{"type":"literal","value":"today"},{"type":"literal","value":"toggle_off"},{"type":"literal","value":"toggle_on"},{"type":"literal","value":"token"},{"type":"literal","value":"toll"},{"type":"literal","value":"tonality"},{"type":"literal","value":"tonality_2"},{"type":"literal","value":"tools_flat_head"},{"type":"literal","value":"tools_installation_kit"},{"type":"literal","value":"tools_ladder"},{"type":"literal","value":"tools_level"},{"type":"literal","value":"tools_phillips"},{"type":"literal","value":"tools_pliers_wire_stripper"},{"type":"literal","value":"tools_power_drill"},{"type":"literal","value":"tooltip_2"},{"type":"literal","value":"top_panel_close"},{"type":"literal","value":"top_panel_open"},{"type":"literal","value":"topic"},{"type":"literal","value":"total_dissolved_solids"},{"type":"literal","value":"touch_app"},{"type":"literal","value":"touch_double"},{"type":"literal","value":"touch_long"},{"type":"literal","value":"touch_triple"},{"type":"literal","value":"touchpad_mouse"},{"type":"literal","value":"touchpad_mouse_off"},{"type":"literal","value":"tour"},{"type":"literal","value":"toys"},{"type":"literal","value":"toys_and_games"},{"type":"literal","value":"toys_fan"},{"type":"literal","value":"track_changes"},{"type":"literal","value":"trackpad_input"},{"type":"literal","value":"trackpad_input_2"},{"type":"literal","value":"trackpad_input_3"},{"type":"literal","value":"traffic"},{"type":"literal","value":"traffic_jam"},{"type":"literal","value":"trail_length"},{"type":"literal","value":"trail_length_medium"},{"type":"literal","value":"trail_length_short"},{"type":"literal","value":"train"},{"type":"literal","value":"transcribe"},{"type":"literal","value":"transfer_within_a_station"},{"type":"literal","value":"transgender"},{"type":"literal","value":"transit_enterexit"},{"type":"literal","value":"transit_ticket"},{"type":"literal","value":"transition_chop"},{"type":"literal","value":"transition_dissolve"},{"type":"literal","value":"transition_fade"},{"type":"literal","value":"transition_push"},{"type":"literal","value":"transition_slide"},{"type":"literal","value":"translate_indic"},{"type":"literal","value":"transportation"},{"type":"literal","value":"travel"},{"type":"literal","value":"travel_explore"},{"type":"literal","value":"travel_luggage_and_bags"},{"type":"literal","value":"trending_down"},{"type":"literal","value":"trending_flat"},{"type":"literal","value":"trending_up"},{"type":"literal","value":"trip"},{"type":"literal","value":"trip_origin"},{"type":"literal","value":"trolley"},{"type":"literal","value":"trolley_cable_car"},{"type":"literal","value":"troubleshoot"},{"type":"literal","value":"tsunami"},{"type":"literal","value":"tsv"},{"type":"literal","value":"tty"},{"type":"literal","value":"tune"},{"type":"literal","value":"tungsten"},{"type":"literal","value":"turn_left"},{"type":"literal","value":"turn_right"},{"type":"literal","value":"turn_sharp_left"},{"type":"literal","value":"turn_sharp_right"},{"type":"literal","value":"turn_slight_left"},{"type":"literal","value":"turn_slight_right"},{"type":"literal","value":"turned_in"},{"type":"literal","value":"turned_in_not"},{"type":"literal","value":"tv_displays"},{"type":"literal","value":"tv_gen"},{"type":"literal","value":"tv_guide"},{"type":"literal","value":"tv_next"},{"type":"literal","value":"tv_off"},{"type":"literal","value":"tv_options_edit_channels"},{"type":"literal","value":"tv_options_input_settings"},{"type":"literal","value":"tv_remote"},{"type":"literal","value":"tv_signin"},{"type":"literal","value":"tv_with_assistant"},{"type":"literal","value":"two_pager"},{"type":"literal","value":"two_pager_store"},{"type":"literal","value":"two_wheeler"},{"type":"literal","value":"type_specimen"},{"type":"literal","value":"u_turn_left"},{"type":"literal","value":"u_turn_right"},{"type":"literal","value":"udon"},{"type":"literal","value":"ulna_radius"},{"type":"literal","value":"ulna_radius_alt"},{"type":"literal","value":"unarchive"},{"type":"literal","value":"undo"},{"type":"literal","value":"unfold_less"},{"type":"literal","value":"unfold_less_double"},{"type":"literal","value":"unfold_more"},{"type":"literal","value":"unfold_more_double"},{"type":"literal","value":"ungroup"},{"type":"literal","value":"universal_currency"},{"type":"literal","value":"universal_currency_alt"},{"type":"literal","value":"universal_local"},{"type":"literal","value":"unknown_2"},{"type":"literal","value":"unknown_5"},{"type":"literal","value":"unknown_7"},{"type":"literal","value":"unknown_document"},{"type":"literal","value":"unknown_med"},{"type":"literal","value":"unlicense"},{"type":"literal","value":"unpaved_road"},{"type":"literal","value":"unpublished"},{"type":"literal","value":"unsubscribe"},{"type":"literal","value":"upcoming"},{"type":"literal","value":"update_disabled"},{"type":"literal","value":"upgrade"},{"type":"literal","value":"upi_pay"},{"type":"literal","value":"upload"},{"type":"literal","value":"upload_2"},{"type":"literal","value":"upload_file"},{"type":"literal","value":"urology"},{"type":"literal","value":"usb"},{"type":"literal","value":"usb_off"},{"type":"literal","value":"user_attributes"},{"type":"literal","value":"vaccines"},{"type":"literal","value":"vacuum"},{"type":"literal","value":"valve"},{"type":"literal","value":"vape_free"},{"type":"literal","value":"vaping_rooms"},{"type":"literal","value":"variable_add"},{"type":"literal","value":"variable_insert"},{"type":"literal","value":"variable_remove"},{"type":"literal","value":"variables"},{"type":"literal","value":"ventilator"},{"type":"literal","value":"verified"},{"type":"literal","value":"verified_off"},{"type":"literal","value":"verified_user"},{"type":"literal","value":"vertical_align_bottom"},{"type":"literal","value":"vertical_align_center"},{"type":"literal","value":"vertical_align_top"},{"type":"literal","value":"vertical_distribute"},{"type":"literal","value":"vertical_shades"},{"type":"literal","value":"vertical_shades_closed"},{"type":"literal","value":"vertical_split"},{"type":"literal","value":"vibration"},{"type":"literal","value":"video_call"},{"type":"literal","value":"video_camera_back"},{"type":"literal","value":"video_camera_back_add"},{"type":"literal","value":"video_camera_front"},{"type":"literal","value":"video_camera_front_off"},{"type":"literal","value":"video_chat"},{"type":"literal","value":"video_file"},{"type":"literal","value":"video_label"},{"type":"literal","value":"video_library"},{"type":"literal","value":"video_search"},{"type":"literal","value":"video_settings"},{"type":"literal","value":"video_stable"},{"type":"literal","value":"videocam"},{"type":"literal","value":"videocam_alert"},{"type":"literal","value":"videocam_off"},{"type":"literal","value":"videogame_asset"},{"type":"literal","value":"videogame_asset_off"},{"type":"literal","value":"view_agenda"},{"type":"literal","value":"view_apps"},{"type":"literal","value":"view_array"},{"type":"literal","value":"view_carousel"},{"type":"literal","value":"view_column"},{"type":"literal","value":"view_column_2"},{"type":"literal","value":"view_comfy"},{"type":"literal","value":"view_comfy_alt"},{"type":"literal","value":"view_compact"},{"type":"literal","value":"view_compact_alt"},{"type":"literal","value":"view_cozy"},{"type":"literal","value":"view_day"},{"type":"literal","value":"view_headline"},{"type":"literal","value":"view_in_ar"},{"type":"literal","value":"view_in_ar_off"},{"type":"literal","value":"view_kanban"},{"type":"literal","value":"view_list"},{"type":"literal","value":"view_module"},{"type":"literal","value":"view_object_track"},{"type":"literal","value":"view_quilt"},{"type":"literal","value":"view_real_size"},{"type":"literal","value":"view_sidebar"},{"type":"literal","value":"view_stream"},{"type":"literal","value":"view_timeline"},{"type":"literal","value":"view_week"},{"type":"literal","value":"vignette"},{"type":"literal","value":"vignette_2"},{"type":"literal","value":"villa"},{"type":"literal","value":"visibility_lock"},{"type":"literal","value":"visibility_off"},{"type":"literal","value":"vital_signs"},{"type":"literal","value":"vo2_max"},{"type":"literal","value":"voice_chat"},{"type":"literal","value":"voice_over_off"},{"type":"literal","value":"voice_selection"},{"type":"literal","value":"voice_selection_off"},{"type":"literal","value":"voicemail"},{"type":"literal","value":"voicemail_2"},{"type":"literal","value":"volcano"},{"type":"literal","value":"volume_down"},{"type":"literal","value":"volume_down_alt"},{"type":"literal","value":"volume_mute"},{"type":"literal","value":"volume_off"},{"type":"literal","value":"volume_up"},{"type":"literal","value":"volunteer_activism"},{"type":"literal","value":"voting_chip"},{"type":"literal","value":"vpn_key"},{"type":"literal","value":"vpn_key_alert"},{"type":"literal","value":"vpn_key_off"},{"type":"literal","value":"vpn_lock"},{"type":"literal","value":"vpn_lock_2"},{"type":"literal","value":"vr180_create2d"},{"type":"literal","value":"vr180_create2d_off"},{"type":"literal","value":"vrpano"},{"type":"literal","value":"wall_art"},{"type":"literal","value":"wall_lamp"},{"type":"literal","value":"wallet"},{"type":"literal","value":"wallpaper"},{"type":"literal","value":"wallpaper_slideshow"},{"type":"literal","value":"wand_shine"},{"type":"literal","value":"wand_stars"},{"type":"literal","value":"ward"},{"type":"literal","value":"warehouse"},{"type":"literal","value":"warning"},{"type":"literal","value":"warning_amber"},{"type":"literal","value":"warning_off"},{"type":"literal","value":"wash"},{"type":"literal","value":"washoku"},{"type":"literal","value":"watch"},{"type":"literal","value":"watch_arrow"},{"type":"literal","value":"watch_button_press"},{"type":"literal","value":"watch_check"},{"type":"literal","value":"watch_later"},{"type":"literal","value":"watch_off"},{"type":"literal","value":"watch_screentime"},{"type":"literal","value":"watch_vibration"},{"type":"literal","value":"watch_wake"},{"type":"literal","value":"water"},{"type":"literal","value":"water_bottle"},{"type":"literal","value":"water_bottle_large"},{"type":"literal","value":"water_damage"},{"type":"literal","value":"water_do"},{"type":"literal","value":"water_drop"},{"type":"literal","value":"water_ec"},{"type":"literal","value":"water_full"},{"type":"literal","value":"water_heater"},{"type":"literal","value":"water_lock"},{"type":"literal","value":"water_loss"},{"type":"literal","value":"water_lux"},{"type":"literal","value":"water_medium"},{"type":"literal","value":"water_orp"},{"type":"literal","value":"water_ph"},{"type":"literal","value":"water_pump"},{"type":"literal","value":"water_voc"},{"type":"literal","value":"waterfall_chart"},{"type":"literal","value":"waves"},{"type":"literal","value":"waving_hand"},{"type":"literal","value":"wb_auto"},{"type":"literal","value":"wb_cloudy"},{"type":"literal","value":"wb_incandescent"},{"type":"literal","value":"wb_iridescent"},{"type":"literal","value":"wb_shade"},{"type":"literal","value":"wb_sunny"},{"type":"literal","value":"wb_twighlight"},{"type":"literal","value":"wb_twilight"},{"type":"literal","value":"wc"},{"type":"literal","value":"weather_hail"},{"type":"literal","value":"weather_mix"},{"type":"literal","value":"weather_snowy"},{"type":"literal","value":"web_asset"},{"type":"literal","value":"web_asset_off"},{"type":"literal","value":"web_stories"},{"type":"literal","value":"web_traffic"},{"type":"literal","value":"webhook"},{"type":"literal","value":"weekend"},{"type":"literal","value":"weight"},{"type":"literal","value":"west"},{"type":"literal","value":"whatshot"},{"type":"literal","value":"wheelchair_pickup"},{"type":"literal","value":"where_to_vote"},{"type":"literal","value":"widget_medium"},{"type":"literal","value":"widget_small"},{"type":"literal","value":"widget_width"},{"type":"literal","value":"widgets"},{"type":"literal","value":"width_full"},{"type":"literal","value":"width_normal"},{"type":"literal","value":"width_wide"},{"type":"literal","value":"wifi_1_bar"},{"type":"literal","value":"wifi_2_bar"},{"type":"literal","value":"wifi_add"},{"type":"literal","value":"wifi_calling"},{"type":"literal","value":"wifi_calling_1"},{"type":"literal","value":"wifi_calling_2"},{"type":"literal","value":"wifi_calling_3"},{"type":"literal","value":"wifi_calling_bar_1"},{"type":"literal","value":"wifi_calling_bar_2"},{"type":"literal","value":"wifi_calling_bar_3"},{"type":"literal","value":"wifi_channel"},{"type":"literal","value":"wifi_find"},{"type":"literal","value":"wifi_home"},{"type":"literal","value":"wifi_lock"},{"type":"literal","value":"wifi_notification"},{"type":"literal","value":"wifi_off"},{"type":"literal","value":"wifi_password"},{"type":"literal","value":"wifi_protected_setup"},{"type":"literal","value":"wifi_proxy"},{"type":"literal","value":"wifi_tethering"},{"type":"literal","value":"wifi_tethering_error"},{"type":"literal","value":"wifi_tethering_off"},{"type":"literal","value":"wind_power"},{"type":"literal","value":"window_closed"},{"type":"literal","value":"window_open"},{"type":"literal","value":"window_sensor"},{"type":"literal","value":"windshield_defrost_auto"},{"type":"literal","value":"windshield_defrost_front"},{"type":"literal","value":"windshield_defrost_rear"},{"type":"literal","value":"windshield_heat_front"},{"type":"literal","value":"wine_bar"},{"type":"literal","value":"woman"},{"type":"literal","value":"woman_2"},{"type":"literal","value":"work"},{"type":"literal","value":"work_alert"},{"type":"literal","value":"work_history"},{"type":"literal","value":"work_off"},{"type":"literal","value":"work_outline"},{"type":"literal","value":"work_update"},{"type":"literal","value":"workspace_premium"},{"type":"literal","value":"workspaces"},{"type":"literal","value":"workspaces_filled"},{"type":"literal","value":"workspaces_outline"},{"type":"literal","value":"wounds_injuries"},{"type":"literal","value":"wrap_text"},{"type":"literal","value":"wrist"},{"type":"literal","value":"wrong_location"},{"type":"literal","value":"wysiwyg"},{"type":"literal","value":"yakitori"},{"type":"literal","value":"yard"},{"type":"literal","value":"yoshoku"},{"type":"literal","value":"your_trips"},{"type":"literal","value":"youtube_activity"},{"type":"literal","value":"youtube_searched_for"},{"type":"literal","value":"zone_person_alert"},{"type":"literal","value":"zone_person_idle"},{"type":"literal","value":"zone_person_urgent"},{"type":"literal","value":"zoom_in"},{"type":"literal","value":"zoom_in_map"},{"type":"literal","value":"zoom_out"},{"type":"literal","value":"zoom_out_map"}]}}]}}]}}]},{"name":"NativeTabsBottomAccessoryProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]},{"name":"NativeTabsProps","variant":"declaration","kind":256,"children":[{"name":"backBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The behavior when navigating back with the back button."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"history"},{"type":"literal","value":"initialRoute"},{"type":"literal","value":"none"}]}},{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The background color of the tab bar."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"badgeBackgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The background color of every badge in the tab bar."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"badgeTextColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the badge text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"blurEffect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The blur effect applied to the tab bar."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"none"},{"type":"literal","value":"light"},{"type":"literal","value":"regular"},{"type":"literal","value":"dark"},{"type":"literal","value":"systemDefault"},{"type":"literal","value":"extraLight"},{"type":"literal","value":"prominent"},{"type":"literal","value":"systemUltraThinMaterial"},{"type":"literal","value":"systemThinMaterial"},{"type":"literal","value":"systemMaterial"},{"type":"literal","value":"systemThickMaterial"},{"type":"literal","value":"systemChromeMaterial"},{"type":"literal","value":"systemUltraThinMaterialLight"},{"type":"literal","value":"systemThinMaterialLight"},{"type":"literal","value":"systemMaterialLight"},{"type":"literal","value":"systemThickMaterialLight"},{"type":"literal","value":"systemChromeMaterialLight"},{"type":"literal","value":"systemUltraThinMaterialDark"},{"type":"literal","value":"systemThinMaterialDark"},{"type":"literal","value":"systemMaterialDark"},{"type":"literal","value":"systemThickMaterialDark"},{"type":"literal","value":"systemChromeMaterialDark"}]}},{"name":"disableIndicator","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Disables the active indicator for the tab bar."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disableTransparentOnScrollEdge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the tab bar will not become transparent when scrolled to the edge."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", hides the tab bar."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"iconColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of every tab icon in the tab bar."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"unknown","name":"ColorValue | undefined"}},{"name":"selected","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"unknown","name":"ColorValue | undefined"}}]}}]}},{"name":"indicatorColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the tab indicator."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"labelStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The style of the every tab label in the tab bar."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","name":"NativeTabsLabelStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","name":"NativeTabsLabelStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}},{"name":"selected","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","name":"NativeTabsLabelStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}}]}}]}},{"name":"labelVisibilityMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The visibility mode of the tab item label."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"auto"},{"type":"literal","value":"selected"},{"type":"literal","value":"labeled"},{"type":"literal","value":"unlabeled"}]}},{"name":"minimizeBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Specifies the minimize behavior for the tab bar.\n\nAvailable starting from iOS 26.\n\nThe following values are currently supported:\n\n- "},{"kind":"code","text":"`automatic`"},{"kind":"text","text":" - resolves to the system default minimize behavior\n- "},{"kind":"code","text":"`never`"},{"kind":"text","text":" - the tab bar does not minimize\n- "},{"kind":"code","text":"`onScrollDown`"},{"kind":"text","text":" - the tab bar minimizes when scrolling down and\n expands when scrolling back up\n- "},{"kind":"code","text":"`onScrollUp`"},{"kind":"text","text":" - the tab bar minimizes when scrolling up and expands\n when scrolling back down"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"The supported values correspond to the official [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbarcontroller/minimizebehavior)."}]},{"tag":"@default","content":[{"kind":"text","text":"automatic"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"never"},{"type":"literal","value":"automatic"},{"type":"literal","value":"onScrollDown"},{"type":"literal","value":"onScrollUp"}]}},{"name":"rippleColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the ripple effect when the tab is pressed."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"screenListeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Listeners for navigation events on all tabs.\n\nSupported events:\n- "},{"kind":"code","text":"`tabPress`"},{"kind":"text","text":" - called when a tab is pressed\n- "},{"kind":"code","text":"`focus`"},{"kind":"text","text":" - called when the screen comes into focus\n- "},{"kind":"code","text":"`blur`"},{"kind":"text","text":" - called when the screen loses focus"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n {\n console.log('Any tab pressed');\n },\n }}\n>\n ...\n\n```"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"beforeRemove","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"beforeRemove"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"blur","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"blur"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"focus","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"focus"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"removePrevented","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"removePrevented"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"state"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"tabPress","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"tabPress"},{"type":"literal","value":false}],"name":"EventListenerCallback","package":"expo-router"}}]}}],"name":"Partial","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMap"},"name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"shadowColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the shadow."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uibarappearance/shadowcolor)"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"sidebarAdaptable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", enables the sidebarAdaptable tab bar style on iPadOS and macOS. This prop has no effect on iPhone."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS 18+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"tabBarRespectsIMEInsets","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the tab bar lifts above the keyboard (input method editor, or IME) instead of being overlaid by it. By default, the keyboard overlays the tab bar.\n\nRequires "},{"kind":"code","text":"`windowSoftInputMode=\"adjustResize\"`"},{"kind":"text","text":". Has no effect on Android API levels earlier than 30 (Android 11)."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The tint color of the tab icon.\n\nCan be overridden by icon color and label color for each tab individually."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"titlePositionAdjustment","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uitabbaritem/titlepositionadjustment)"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"horizontal","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}},{"name":"vertical","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}}]}}},{"name":"unstable_nativeProps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Props passed to the underlying native tab host implementation in "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":".\nUse this to configure props that are not directly exposed by Expo Router.\n\n> **Note**: This is an unstable API and may change or be removed in minor versions."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/tabs/host/TabsHost.types.ts","qualifiedName":"TabsHostProps"},"name":"TabsHostProps","package":"react-native-screens"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"navStateRequest"},{"type":"literal","value":"onTabSelected"}]}],"name":"Omit","package":"typescript"}],"name":"Partial","package":"typescript"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}]},{"name":"NativeTabsTriggerBadgeProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The text to display as the badge for the tab.\nIf not provided, the badge will not be displayed."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the badge will be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"selectedBackgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"NativeTabsTriggerLabelProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The text to display as the label for the tab."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the label will be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"selectedStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","name":"NativeTabsLabelStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}}]},{"name":"NativeTabTriggerProps","variant":"declaration","kind":256,"children":[{"name":"accessibilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The accessibility label of the tab bar item, announced by screen readers.\nDefaults to the visible tab label.\n\nOn Android, maps to the item's "},{"kind":"code","text":"`contentDescription`"},{"kind":"text","text":" and requires API 26 or above."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The children of the trigger.\n\nUse "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":", "},{"kind":"code","text":"`Label`"},{"kind":"text","text":", and "},{"kind":"code","text":"`Badge`"},{"kind":"text","text":" components to customize the tab."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"contentStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The style applied to the content of the tab\n\nNote: Only certain style properties are supported."}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"},{"type":"union","types":[{"type":"literal","value":"backgroundColor"},{"type":"literal","value":"experimental_backgroundImage"},{"type":"literal","value":"alignContent"},{"type":"literal","value":"alignItems"},{"type":"literal","value":"flexDirection"},{"type":"literal","value":"gap"},{"type":"literal","value":"justifyContent"},{"type":"literal","value":"padding"},{"type":"literal","value":"paddingBottom"},{"type":"literal","value":"paddingEnd"},{"type":"literal","value":"paddingHorizontal"},{"type":"literal","value":"paddingLeft"},{"type":"literal","value":"paddingRight"},{"type":"literal","value":"paddingStart"},{"type":"literal","value":"paddingTop"},{"type":"literal","value":"paddingVertical"},{"type":"literal","value":"paddingBlock"},{"type":"literal","value":"paddingBlockEnd"},{"type":"literal","value":"paddingBlockStart"},{"type":"literal","value":"paddingInline"},{"type":"literal","value":"paddingInlineEnd"},{"type":"literal","value":"paddingInlineStart"}]}],"name":"Pick","package":"typescript"}},{"name":"disableAutomaticContentInsets","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The default behavior differs between iOS and Android.\n\nOn **Android**, the content of a native tabs screen is automatically wrapped in a "},{"kind":"code","text":"`SafeAreaView`"},{"kind":"text","text":",\nand the **bottom** inset is applied. Other insets must be handled manually.\n\nOn **iOS**, the first scroll view nested inside a native tabs screen has\n[automatic content inset adjustment](https://reactnative.dev/docs/scrollview#contentinsetadjustmentbehavior-ios) enabled\n\nWhen this property is set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", automatic content inset adjustment is disabled for the screen\nand must be managed manually. You can use "},{"kind":"code","text":"`SafeAreaView`"},{"kind":"text","text":" from "},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":"\nto handle safe area insets."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the tab is shown but cannot be selected by tapping it in the\ntab bar.\n\n> **Note:** This only suppresses the native tap interaction. JavaScript\n> navigation such as "},{"kind":"code","text":"`router.push()`"},{"kind":"text","text":" or "},{"kind":"code","text":"``"},{"kind":"text","text":" still navigates to\n> the tab. Use this for tabs that should appear visible but be temporarily inert,\n> and gate navigation in your own code if you need to fully prevent access.\n\nUnlike "},{"kind":"code","text":"`hidden`"},{"kind":"text","text":", the tab remains visible in the tab bar."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disableIndicator","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", disables the active indicator for this tab.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disablePopToTop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the tab will not pop stack to the root when selected again."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disableScrollToTop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the tab will not scroll to the top when selected again."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disableTransparentOnScrollEdge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the tab bar will not become transparent when scrolled to the edge.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the tab will be hidden from the tab bar.\n\n> **Note**: Marking a tab as "},{"kind":"code","text":"`hidden`"},{"kind":"text","text":" means it cannot be navigated to in any way.\n\n> **Note**: Dynamically hiding tabs will remount the navigator and the state will be reset."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"indicatorColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the active indicator for this tab.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"labelVisibilityMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The visibility mode of the tab item label for this tab.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"auto"},{"type":"literal","value":"selected"},{"type":"literal","value":"labeled"},{"type":"literal","value":"unlabeled"}]}},{"name":"listeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Listeners for navigation events on this tab.\n\nSupported events:\n- "},{"kind":"code","text":"`tabPress`"},{"kind":"text","text":" - called when this tab is pressed\n- "},{"kind":"code","text":"`focus`"},{"kind":"text","text":" - called when this screen comes into focus\n- "},{"kind":"code","text":"`blur`"},{"kind":"text","text":" - called when this screen loses focus"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n {\n console.log('Home tab pressed');\n },\n }}\n/>\n```"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"beforeRemove","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"beforeRemove"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"blur","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"blur"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"focus","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"focus"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"removePrevented","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"removePrevented"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"state"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"tabPress","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"tabPress"},{"type":"literal","value":false}],"name":"EventListenerCallback","package":"expo-router"}}]}}],"name":"Partial","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"TState"},"name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"TEventMap"},"name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"name","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the route.\n\nThis is required when used inside a Layout component.\n\nWhen used in a route it has no effect."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"rippleColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the ripple effect when this tab is selected - will be visible when other tabs are pressed.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"role","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"System-provided tab bar item with predefined icon and title\n\nUses Apple's built-in tab bar items (e.g., bookmarks, contacts, downloads) with\nstandard iOS styling and localized titles. Custom "},{"kind":"code","text":"`icon`"},{"kind":"text","text":" or "},{"kind":"code","text":"`selectedIcon`"},{"kind":"text","text":"\nproperties will override the system icon, but the system-defined title cannot\nbe customized."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"The supported values correspond to the official [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbaritem/systemitem)."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"search"},{"type":"literal","value":"history"},{"type":"literal","value":"bookmarks"},{"type":"literal","value":"contacts"},{"type":"literal","value":"more"},{"type":"literal","value":"downloads"},{"type":"literal","value":"favorites"},{"type":"literal","value":"featured"},{"type":"literal","value":"mostRecent"},{"type":"literal","value":"mostViewed"},{"type":"literal","value":"recents"},{"type":"literal","value":"topRated"}]}},{"name":"testID","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A test identifier for the tab bar item.\n\nOn iOS it maps to the item's accessibility identifier, which XCUITest and Maestro match.\nOn Android it maps to the item's view tag, which Espresso-based drivers like Detox read\nbut Maestro and Appium do not. Use "},{"kind":"code","text":"`accessibilityLabel`"},{"kind":"text","text":" to match the tab by id there."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"unstable_nativeProps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Props passed to the underlying native tab screen implementation.\nUse this to configure props not directly exposed by Expo Router, but available in "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":".\n\n> **Note**: This will override any other props set by Expo Router and may lead to unexpected behavior.\n\n> **Note**: This is an unstable API and may change or be removed in minor versions."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/tabs/screen/TabsScreen.types.ts","qualifiedName":"TabsScreenProps"},"name":"TabsScreenProps","package":"react-native-screens"},{"type":"literal","value":"screenKey"}],"name":"Omit","package":"typescript"}],"name":"Partial","package":"typescript"}}]},{"name":"SFSymbolIcon","variant":"declaration","kind":256,"children":[{"name":"sf","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the SF Symbol to use as an icon.\n\nThe value can be provided in two ways:\n- As a string with the SF Symbol name\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"unknown","name":"SFSymbols7_0 | undefined"}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}}]}}]}}]},{"name":"SrcIcon","variant":"declaration","kind":256,"children":[{"name":"renderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how the image icon is rendered on iOS.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": iOS applies tint color to the icon (selected/unselected states)\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": Preserves original icon colors\n\n**Default behavior:**\n- If tab bar icon color is configured, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no icon color is set, defaults to "},{"kind":"code","text":"`'original'`"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","name":"IconRenderingMode","package":"expo-router"}},{"name":"src","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The image source to use as an icon.\n\nWhen "},{"kind":"code","text":"`sf`"},{"kind":"text","text":" prop is used it will override this prop on iOS.\n\nWhen "},{"kind":"code","text":"`drawable`"},{"kind":"text","text":" or "},{"kind":"code","text":"`material`"},{"kind":"text","text":" prop is used it will override this prop on Android.\n\nThe value can be provided in two ways:\n- As an image source\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"Android"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"typeArguments":[{"type":"intrinsic","name":"unknown"},{"type":"unknown","name":"string | JSXElementConstructor"}],"name":"ReactElement","package":"@types/react","qualifiedName":"React.ReactElement"},{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"unknown","name":"ReactElement> | ImageSourcePropType | undefined"}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"unknown","name":"ReactElement> | ImageSourcePropType"}}]}}]}}]},{"name":"XcassetIcon","variant":"declaration","kind":256,"children":[{"name":"xcasset","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the iOS asset catalog image to use as an icon.\n\nXcassets provide automatic multi-resolution (@1x/@2x/@3x), dark mode variants,\nand device-specific images via "},{"kind":"code","text":"`[UIImage imageNamed:]`"},{"kind":"text","text":".\n\nThe rendering mode (template vs original) can be controlled via the "},{"kind":"code","text":"`renderingMode`"},{"kind":"text","text":" prop\non the "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" component. By default, icons are tinted when "},{"kind":"code","text":"`iconColor`"},{"kind":"text","text":" is set, and\nrendered as original otherwise.\n\nThe value can be provided in two ways:\n- As a string with the asset catalog image name\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}}]},{"name":"IconRenderingMode","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"How an image-based icon is tinted on iOS: "},{"kind":"code","text":"`template`"},{"kind":"text","text":" lets the tab bar recolor the icon,\n"},{"kind":"code","text":"`original`"},{"kind":"text","text":" keeps the image's own colors. SF Symbols are always tinted by the system."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"NativeTabsBlurEffect","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiblureffect/style)"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"SUPPORTED_BLUR_EFFECTS"},"name":"SUPPORTED_BLUR_EFFECTS","package":"expo-router","preferValues":true}}}},{"name":"NativeTabsHostNativeProps","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Props passed to the underlying tab host implementation in "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/tabs/host/TabsHost.types.ts","qualifiedName":"TabsHostProps"},"name":"TabsHostProps","package":"react-native-screens"},{"type":"union","types":[{"type":"literal","value":"navStateRequest"},{"type":"literal","value":"onTabSelected"},{"type":"literal","value":"children"}]}],"name":"Omit","package":"typescript"}],"name":"Partial","package":"typescript"}},{"name":"NativeTabsLabelStyle","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"},{"type":"union","types":[{"type":"literal","value":"fontFamily"},{"type":"literal","value":"fontSize"},{"type":"literal","value":"fontStyle"},{"type":"literal","value":"fontWeight"},{"type":"literal","value":"color"}]}],"name":"Pick","package":"typescript"}},{"name":"NativeTabsTabBarItemLabelVisibilityMode","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES"},"name":"SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES","package":"expo-router","preferValues":true}}}},{"name":"NativeTabsTabBarItemRole","variant":"declaration","kind":2097152,"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"SUPPORTED_TAB_BAR_ITEM_ROLES"},"name":"SUPPORTED_TAB_BAR_ITEM_ROLES","package":"expo-router","preferValues":true}}}},{"name":"NativeTabsTabBarMinimizeBehavior","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uitabbarcontroller/minimizebehavior)"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS"},"name":"SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS","package":"expo-router","preferValues":true}}}},{"name":"NativeTabsTriggerIconProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"selectedColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}},{"type":"union","types":[{"type":"intersection","types":[{"type":"reference","name":"SFSymbolIcon","package":"expo-router"},{"type":"reference","name":"DrawableIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"SFSymbolIcon","package":"expo-router"},{"type":"reference","name":"MaterialIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"SFSymbolIcon","package":"expo-router"},{"type":"reference","name":"SrcIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"XcassetIcon","package":"expo-router"},{"type":"reference","name":"DrawableIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"XcassetIcon","package":"expo-router"},{"type":"reference","name":"MaterialIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"XcassetIcon","package":"expo-router"},{"type":"reference","name":"SrcIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"MaterialIcon","package":"expo-router"},{"type":"reference","name":"SrcIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"DrawableIcon","package":"expo-router"},{"type":"reference","name":"SrcIcon","package":"expo-router"}]},{"type":"reference","name":"SrcIcon","package":"expo-router"}]}]}},{"name":"SymbolOrImageSource","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"drawable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the drawable resource to use as an icon."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"sf","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the SF Symbol to use as an icon."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbol"},"name":"SFSymbol","package":"sf-symbols-typescript"}},{"name":"xcasset","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the iOS asset catalog image to use as an icon."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"string"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"renderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how the icon is rendered on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]},{"tag":"@default","content":[{"kind":"text","text":"'template'"}]}]},"type":{"type":"reference","name":"IconRenderingMode","package":"expo-router"}},{"name":"src","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The image source to use as an icon."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"literal","value":null}]}],"name":"Promise","package":"typescript"}]}}]}}]}},{"name":"NativeTabs","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"The component used to create native tabs layout."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/_layout.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function Layout() {\n return (\n \n \n \n \n );\n}\n```"}]}]},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeTabsProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"BottomAccessory","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsBottomAccessoryProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"usePlacement","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"A hook which returns the bottom accessory environment for given component.\n\nNote, that there can be two copies of the same component rendered for different environments.\nThe hook will ensure that component with correct environment is displayed.\n\nBecause two instances of the component will exist simultaneously, **any state kept\ninside the component will not be shared between the regular and inline versions**.\nIf your accessory needs synchronized or persistent state you must store that state\noutside of bottom accessory component (e.g. passing via props or using context).\n\nDon't pass the environment obtained using this hook up the tree."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\n// This component will have two copies rendered, one for `inline` and one for `regular` environment\nfunction AccessoryContent(props) {\n const placement = NativeTabs.BottomAccessory.usePlacement();\n if (placement === 'inline') {\n return ;\n }\n return ;\n}\n\nexport default function Layout(){\n const [isPlaying, setIsPlaying] = useState(false);\n return (\n \n \n \n \n \n \n );\n}\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"union","types":[{"type":"literal","value":"regular"},{"type":"literal","value":"inline"}]}}]}}}]}}]}},{"name":"Trigger","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"The component used to customize the native tab options both in the _layout file and from the tab screen.\n\nWhen used in the _layout file, you need to provide a "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop.\nWhen used in the tab screen, the "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop takes no effect."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/_layout.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function Layout() {\n return (\n \n \n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx app/home.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function HomeScreen() {\n return (\n \n \n Home\n \n This is home screen!\n \n );\n}\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeTabTriggerProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Badge","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerBadgeProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerBadge"},{"name":"Icon","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerIconProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerIcon"},{"name":"Label","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerLabelProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerLabel"},{"name":"VectorIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Helper component for loading vector icons.\n\nPrefer using the "},{"kind":"code","text":"`md`"},{"kind":"text","text":" and "},{"kind":"code","text":"`sf`"},{"kind":"text","text":" props on "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" rather than using this component directly.\nOnly use this component when you need to load a specific icon from a vector icon family."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Icon, VectorIcon } from 'expo-router';\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\n\n} />\n```"}]}]},"typeParameters":[{"name":"NameT","variant":"typeParam","kind":131072,"flags":{"isConst":true},"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/primitives/types.ts","qualifiedName":"VectorIconProps"},"typeArguments":[{"type":"reference","name":"NameT","package":"expo-router","refersToTypeParameter":true}],"name":"VectorIconProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"NativeTabsTriggerVectorIcon"}]}}]},"defaultValue":"NativeTabTrigger"}]}}]},"defaultValue":"..."},{"name":"NativeTabTrigger","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"The component used to customize the native tab options both in the _layout file and from the tab screen.\n\nWhen used in the _layout file, you need to provide a "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop.\nWhen used in the tab screen, the "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop takes no effect."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/_layout.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function Layout() {\n return (\n \n \n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx app/home.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function HomeScreen() {\n return (\n \n \n Home\n \n This is home screen!\n \n );\n}\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeTabTriggerProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Badge","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerBadgeProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerBadge"},{"name":"Icon","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerIconProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerIcon"},{"name":"Label","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerLabelProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerLabel"},{"name":"VectorIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Helper component for loading vector icons.\n\nPrefer using the "},{"kind":"code","text":"`md`"},{"kind":"text","text":" and "},{"kind":"code","text":"`sf`"},{"kind":"text","text":" props on "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" rather than using this component directly.\nOnly use this component when you need to load a specific icon from a vector icon family."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Icon, VectorIcon } from 'expo-router';\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\n\n} />\n```"}]}]},"typeParameters":[{"name":"NameT","variant":"typeParam","kind":131072,"flags":{"isConst":true},"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/primitives/types.ts","qualifiedName":"VectorIconProps"},"typeArguments":[{"type":"reference","name":"NameT","package":"expo-router","refersToTypeParameter":true}],"name":"VectorIconProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"NativeTabsTriggerVectorIcon"}]}}]},"defaultValue":"..."}],"packageName":"expo-router"}
\ No newline at end of file
+{"schemaVersion":"2.0","name":"expo-router/native-tabs","variant":"project","kind":1,"children":[{"name":"DrawableIcon","variant":"declaration","kind":256,"children":[{"name":"drawable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the drawable resource to use as an icon.\n\nThe value can be provided in two ways:\n- As a string with the drawable resource name\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}}]},{"name":"MaterialIcon","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"Material icon name for Android native tabs."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"children":[{"name":"md","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Material icon glyph name. See the [Material icons for the complete catalog](https://fonts.google.com/icons).\n\nThe value can be provided in two ways:\n- As a string with the Material icon name\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"function"},{"type":"literal","value":"join"},{"type":"literal","value":"shift"},{"type":"literal","value":"sort"},{"type":"literal","value":"map"},{"type":"literal","value":"filter"},{"type":"literal","value":"source"},{"type":"literal","value":"style"},{"type":"literal","value":"accessible"},{"type":"literal","value":"ios"},{"type":"literal","value":"android"},{"type":"literal","value":"message"},{"type":"literal","value":"web"},{"type":"literal","value":"remove"},{"type":"literal","value":"fingerprint"},{"type":"literal","value":"portrait"},{"type":"literal","value":"landscape"},{"type":"literal","value":"light"},{"type":"literal","value":"resize"},{"type":"literal","value":"output"},{"type":"literal","value":"description"},{"type":"literal","value":"fullscreen"},{"type":"literal","value":"dangerous"},{"type":"literal","value":"metro"},{"type":"literal","value":"image"},{"type":"literal","value":"mode"},{"type":"literal","value":"search"},{"type":"literal","value":"repeat"},{"type":"literal","value":"anchor"},{"type":"literal","value":"link"},{"type":"literal","value":"flag"},{"type":"literal","value":"signature"},{"type":"literal","value":"package"},{"type":"literal","value":"category"},{"type":"literal","value":"key"},{"type":"literal","value":"build"},{"type":"literal","value":"settings"},{"type":"literal","value":"colors"},{"type":"literal","value":"group"},{"type":"literal","value":"comment"},{"type":"literal","value":"target"},{"type":"literal","value":"tag"},{"type":"literal","value":"host"},{"type":"literal","value":"add"},{"type":"literal","value":"start"},{"type":"literal","value":"transform"},{"type":"literal","value":"share"},{"type":"literal","value":"code"},{"type":"literal","value":"policy"},{"type":"literal","value":"switch"},{"type":"literal","value":"public"},{"type":"literal","value":"try"},{"type":"literal","value":"class"},{"type":"literal","value":"info"},{"type":"literal","value":"error"},{"type":"literal","value":"height"},{"type":"literal","value":"scale"},{"type":"literal","value":"tablet"},{"type":"literal","value":"tv"},{"type":"literal","value":"done"},{"type":"literal","value":"refresh"},{"type":"literal","value":"http"},{"type":"literal","value":"send"},{"type":"literal","value":"enable"},{"type":"literal","value":"update"},{"type":"literal","value":"close"},{"type":"literal","value":"elevation"},{"type":"literal","value":"difference"},{"type":"literal","value":"visibility"},{"type":"literal","value":"article"},{"type":"literal","value":"details"},{"type":"literal","value":"html"},{"type":"literal","value":"iframe"},{"type":"literal","value":"input"},{"type":"literal","value":"label"},{"type":"literal","value":"menu"},{"type":"literal","value":"script"},{"type":"literal","value":"select"},{"type":"literal","value":"table"},{"type":"literal","value":"title"},{"type":"literal","value":"circle"},{"type":"literal","value":"pattern"},{"type":"literal","value":"polyline"},{"type":"literal","value":"stop"},{"type":"literal","value":"cancel"},{"type":"literal","value":"pause"},{"type":"literal","value":"storage"},{"type":"literal","value":"event"},{"type":"literal","value":"history"},{"type":"literal","value":"navigation"},{"type":"literal","value":"toolbar"},{"type":"literal","value":"window"},{"type":"literal","value":"print"},{"type":"literal","value":"delete"},{"type":"literal","value":"report"},{"type":"literal","value":"tab"},{"type":"literal","value":"route"},{"type":"literal","value":"stack"},{"type":"literal","value":"merge"},{"type":"literal","value":"opacity"},{"type":"literal","value":"margin"},{"type":"literal","value":"padding"},{"type":"literal","value":"contrast"},{"type":"literal","value":"radio"},{"type":"literal","value":"timer"},{"type":"literal","value":"list"},{"type":"literal","value":"feed"},{"type":"literal","value":"note"},{"type":"literal","value":"tooltip"},{"type":"literal","value":"uppercase"},{"type":"literal","value":"lowercase"},{"type":"literal","value":"email"},{"type":"literal","value":"sync"},{"type":"literal","value":"api"},{"type":"literal","value":"router"},{"type":"literal","value":"download"},{"type":"literal","value":"store"},{"type":"literal","value":"flip"},{"type":"literal","value":"alarm"},{"type":"literal","value":"barcode"},{"type":"literal","value":"bolt"},{"type":"literal","value":"book"},{"type":"literal","value":"bookmark"},{"type":"literal","value":"camera"},{"type":"literal","value":"clear"},{"type":"literal","value":"cloud"},{"type":"literal","value":"crop"},{"type":"literal","value":"eject"},{"type":"literal","value":"equal"},{"type":"literal","value":"eyeglasses"},{"type":"literal","value":"flowchart"},{"type":"literal","value":"folder"},{"type":"literal","value":"forward"},{"type":"literal","value":"globe"},{"type":"literal","value":"headphones"},{"type":"literal","value":"hexagon"},{"type":"literal","value":"hourglass"},{"type":"literal","value":"house"},{"type":"literal","value":"keyboard"},{"type":"literal","value":"lightbulb"},{"type":"literal","value":"lock"},{"type":"literal","value":"mic"},{"type":"literal","value":"percent"},{"type":"literal","value":"person"},{"type":"literal","value":"phone"},{"type":"literal","value":"photo"},{"type":"literal","value":"pin"},{"type":"literal","value":"power"},{"type":"literal","value":"rectangle"},{"type":"literal","value":"shield"},{"type":"literal","value":"shuffle"},{"type":"literal","value":"speaker"},{"type":"literal","value":"square"},{"type":"literal","value":"star"},{"type":"literal","value":"thermometer"},{"type":"literal","value":"timelapse"},{"type":"literal","value":"tornado"},{"type":"literal","value":"umbrella"},{"type":"literal","value":"wifi"},{"type":"literal","value":"abc"},{"type":"literal","value":"crown"},{"type":"literal","value":"diamond"},{"type":"literal","value":"loupe"},{"type":"literal","value":"mail"},{"type":"literal","value":"newspaper"},{"type":"literal","value":"pip"},{"type":"literal","value":"scanner"},{"type":"literal","value":"shadow"},{"type":"literal","value":"stethoscope"},{"type":"literal","value":"terminal"},{"type":"literal","value":"tram"},{"type":"literal","value":"asterisk"},{"type":"literal","value":"checklist"},{"type":"literal","value":"earbuds"},{"type":"literal","value":"pentagon"},{"type":"literal","value":"scooter"},{"type":"literal","value":"backpack"},{"type":"literal","value":"bathtub"},{"type":"literal","value":"chair"},{"type":"literal","value":"dishwasher"},{"type":"literal","value":"fireplace"},{"type":"literal","value":"microwave"},{"type":"literal","value":"oven"},{"type":"literal","value":"pill"},{"type":"literal","value":"shower"},{"type":"literal","value":"sprinkler"},{"type":"literal","value":"stairs"},{"type":"literal","value":"syringe"},{"type":"literal","value":"trophy"},{"type":"literal","value":"sos"},{"type":"literal","value":"stroller"},{"type":"literal","value":"accessibility"},{"type":"literal","value":"bubble"},{"type":"literal","value":"smartphone"},{"type":"literal","value":"storefront"},{"type":"literal","value":"translate"},{"type":"literal","value":"drone"},{"type":"literal","value":"headset"},{"type":"literal","value":"moped"},{"type":"literal","value":"motorcycle"},{"type":"literal","value":"numbers"},{"type":"literal","value":"receipt"},{"type":"literal","value":"palette"},{"type":"literal","value":"animation"},{"type":"literal","value":"badge"},{"type":"literal","value":"security"},{"type":"literal","value":"hide"},{"type":"literal","value":"step"},{"type":"literal","value":"move"},{"type":"literal","value":"123"},{"type":"literal","value":"360"},{"type":"literal","value":"10k"},{"type":"literal","value":"10mp"},{"type":"literal","value":"11mp"},{"type":"literal","value":"12mp"},{"type":"literal","value":"13mp"},{"type":"literal","value":"14mp"},{"type":"literal","value":"15mp"},{"type":"literal","value":"16mp"},{"type":"literal","value":"17mp"},{"type":"literal","value":"18_up_rating"},{"type":"literal","value":"18mp"},{"type":"literal","value":"19mp"},{"type":"literal","value":"1k"},{"type":"literal","value":"1k_plus"},{"type":"literal","value":"1x_mobiledata"},{"type":"literal","value":"1x_mobiledata_badge"},{"type":"literal","value":"20mp"},{"type":"literal","value":"21mp"},{"type":"literal","value":"22mp"},{"type":"literal","value":"23mp"},{"type":"literal","value":"24fps_select"},{"type":"literal","value":"24mp"},{"type":"literal","value":"2d"},{"type":"literal","value":"2k"},{"type":"literal","value":"2k_plus"},{"type":"literal","value":"2mp"},{"type":"literal","value":"30fps"},{"type":"literal","value":"30fps_select"},{"type":"literal","value":"3d"},{"type":"literal","value":"3d_rotation"},{"type":"literal","value":"3g_mobiledata"},{"type":"literal","value":"3g_mobiledata_badge"},{"type":"literal","value":"3k"},{"type":"literal","value":"3k_plus"},{"type":"literal","value":"3mp"},{"type":"literal","value":"3p"},{"type":"literal","value":"4g_mobiledata"},{"type":"literal","value":"4g_mobiledata_badge"},{"type":"literal","value":"4g_plus_mobiledata"},{"type":"literal","value":"4k"},{"type":"literal","value":"4k_plus"},{"type":"literal","value":"4mp"},{"type":"literal","value":"50mp"},{"type":"literal","value":"5g"},{"type":"literal","value":"5g_mobiledata_badge"},{"type":"literal","value":"5k"},{"type":"literal","value":"5k_plus"},{"type":"literal","value":"5mp"},{"type":"literal","value":"60fps"},{"type":"literal","value":"60fps_select"},{"type":"literal","value":"6_ft_apart"},{"type":"literal","value":"6k"},{"type":"literal","value":"6k_plus"},{"type":"literal","value":"6mp"},{"type":"literal","value":"7k"},{"type":"literal","value":"7k_plus"},{"type":"literal","value":"7mp"},{"type":"literal","value":"8k"},{"type":"literal","value":"8k_plus"},{"type":"literal","value":"8mp"},{"type":"literal","value":"9k"},{"type":"literal","value":"9k_plus"},{"type":"literal","value":"9mp"},{"type":"literal","value":"ac_unit"},{"type":"literal","value":"access_alarm"},{"type":"literal","value":"access_alarms"},{"type":"literal","value":"access_time"},{"type":"literal","value":"access_time_filled"},{"type":"literal","value":"accessibility_new"},{"type":"literal","value":"accessible_forward"},{"type":"literal","value":"accessible_menu"},{"type":"literal","value":"account_balance"},{"type":"literal","value":"account_balance_wallet"},{"type":"literal","value":"account_box"},{"type":"literal","value":"account_child"},{"type":"literal","value":"account_child_invert"},{"type":"literal","value":"account_circle"},{"type":"literal","value":"account_circle_off"},{"type":"literal","value":"account_tree"},{"type":"literal","value":"action_key"},{"type":"literal","value":"activity_zone"},{"type":"literal","value":"acupuncture"},{"type":"literal","value":"acute"},{"type":"literal","value":"ad"},{"type":"literal","value":"ad_group"},{"type":"literal","value":"ad_group_off"},{"type":"literal","value":"ad_off"},{"type":"literal","value":"ad_units"},{"type":"literal","value":"adaptive_audio_mic"},{"type":"literal","value":"adaptive_audio_mic_off"},{"type":"literal","value":"adb"},{"type":"literal","value":"add_2"},{"type":"literal","value":"add_a_photo"},{"type":"literal","value":"add_ad"},{"type":"literal","value":"add_alarm"},{"type":"literal","value":"add_alert"},{"type":"literal","value":"add_box"},{"type":"literal","value":"add_business"},{"type":"literal","value":"add_call"},{"type":"literal","value":"add_card"},{"type":"literal","value":"add_chart"},{"type":"literal","value":"add_circle"},{"type":"literal","value":"add_circle_outline"},{"type":"literal","value":"add_column_left"},{"type":"literal","value":"add_column_right"},{"type":"literal","value":"add_comment"},{"type":"literal","value":"add_diamond"},{"type":"literal","value":"add_home"},{"type":"literal","value":"add_home_work"},{"type":"literal","value":"add_ic_call"},{"type":"literal","value":"add_link"},{"type":"literal","value":"add_location"},{"type":"literal","value":"add_location_alt"},{"type":"literal","value":"add_moderator"},{"type":"literal","value":"add_notes"},{"type":"literal","value":"add_photo_alternate"},{"type":"literal","value":"add_reaction"},{"type":"literal","value":"add_road"},{"type":"literal","value":"add_row_above"},{"type":"literal","value":"add_row_below"},{"type":"literal","value":"add_shopping_cart"},{"type":"literal","value":"add_task"},{"type":"literal","value":"add_to_drive"},{"type":"literal","value":"add_to_home_screen"},{"type":"literal","value":"add_to_photos"},{"type":"literal","value":"add_to_queue"},{"type":"literal","value":"add_triangle"},{"type":"literal","value":"addchart"},{"type":"literal","value":"adf_scanner"},{"type":"literal","value":"adjust"},{"type":"literal","value":"admin_meds"},{"type":"literal","value":"admin_panel_settings"},{"type":"literal","value":"ads_click"},{"type":"literal","value":"agender"},{"type":"literal","value":"agriculture"},{"type":"literal","value":"air"},{"type":"literal","value":"air_freshener"},{"type":"literal","value":"air_purifier"},{"type":"literal","value":"air_purifier_gen"},{"type":"literal","value":"airline_seat_flat"},{"type":"literal","value":"airline_seat_flat_angled"},{"type":"literal","value":"airline_seat_individual_suite"},{"type":"literal","value":"airline_seat_legroom_extra"},{"type":"literal","value":"airline_seat_legroom_normal"},{"type":"literal","value":"airline_seat_legroom_reduced"},{"type":"literal","value":"airline_seat_recline_extra"},{"type":"literal","value":"airline_seat_recline_normal"},{"type":"literal","value":"airline_stops"},{"type":"literal","value":"airlines"},{"type":"literal","value":"airplane_ticket"},{"type":"literal","value":"airplanemode_active"},{"type":"literal","value":"airplanemode_inactive"},{"type":"literal","value":"airplay"},{"type":"literal","value":"airport_shuttle"},{"type":"literal","value":"airwave"},{"type":"literal","value":"alarm_add"},{"type":"literal","value":"alarm_off"},{"type":"literal","value":"alarm_on"},{"type":"literal","value":"alarm_pause"},{"type":"literal","value":"alarm_smart_wake"},{"type":"literal","value":"album"},{"type":"literal","value":"align_center"},{"type":"literal","value":"align_end"},{"type":"literal","value":"align_flex_center"},{"type":"literal","value":"align_flex_end"},{"type":"literal","value":"align_flex_start"},{"type":"literal","value":"align_horizontal_center"},{"type":"literal","value":"align_horizontal_left"},{"type":"literal","value":"align_horizontal_right"},{"type":"literal","value":"align_items_stretch"},{"type":"literal","value":"align_justify_center"},{"type":"literal","value":"align_justify_flex_end"},{"type":"literal","value":"align_justify_flex_start"},{"type":"literal","value":"align_justify_space_around"},{"type":"literal","value":"align_justify_space_between"},{"type":"literal","value":"align_justify_space_even"},{"type":"literal","value":"align_justify_stretch"},{"type":"literal","value":"align_self_stretch"},{"type":"literal","value":"align_space_around"},{"type":"literal","value":"align_space_between"},{"type":"literal","value":"align_space_even"},{"type":"literal","value":"align_start"},{"type":"literal","value":"align_stretch"},{"type":"literal","value":"align_vertical_bottom"},{"type":"literal","value":"align_vertical_center"},{"type":"literal","value":"align_vertical_top"},{"type":"literal","value":"all_inbox"},{"type":"literal","value":"all_inclusive"},{"type":"literal","value":"all_match"},{"type":"literal","value":"all_out"},{"type":"literal","value":"allergies"},{"type":"literal","value":"allergy"},{"type":"literal","value":"alt_route"},{"type":"literal","value":"alternate_email"},{"type":"literal","value":"altitude"},{"type":"literal","value":"ambulance"},{"type":"literal","value":"amend"},{"type":"literal","value":"amp_stories"},{"type":"literal","value":"analytics"},{"type":"literal","value":"android_cell_4_bar"},{"type":"literal","value":"android_cell_4_bar_alert"},{"type":"literal","value":"android_cell_4_bar_off"},{"type":"literal","value":"android_cell_4_bar_plus"},{"type":"literal","value":"android_cell_5_bar"},{"type":"literal","value":"android_cell_5_bar_alert"},{"type":"literal","value":"android_cell_5_bar_off"},{"type":"literal","value":"android_cell_5_bar_plus"},{"type":"literal","value":"android_cell_dual_4_bar"},{"type":"literal","value":"android_cell_dual_4_bar_alert"},{"type":"literal","value":"android_cell_dual_4_bar_plus"},{"type":"literal","value":"android_cell_dual_5_bar"},{"type":"literal","value":"android_cell_dual_5_bar_alert"},{"type":"literal","value":"android_cell_dual_5_bar_plus"},{"type":"literal","value":"android_wifi_3_bar"},{"type":"literal","value":"android_wifi_3_bar_alert"},{"type":"literal","value":"android_wifi_3_bar_lock"},{"type":"literal","value":"android_wifi_3_bar_off"},{"type":"literal","value":"android_wifi_3_bar_plus"},{"type":"literal","value":"android_wifi_3_bar_question"},{"type":"literal","value":"android_wifi_4_bar"},{"type":"literal","value":"android_wifi_4_bar_alert"},{"type":"literal","value":"android_wifi_4_bar_lock"},{"type":"literal","value":"android_wifi_4_bar_off"},{"type":"literal","value":"android_wifi_4_bar_plus"},{"type":"literal","value":"android_wifi_4_bar_question"},{"type":"literal","value":"animated_images"},{"type":"literal","value":"announcement"},{"type":"literal","value":"aod"},{"type":"literal","value":"aod_tablet"},{"type":"literal","value":"aod_watch"},{"type":"literal","value":"apartment"},{"type":"literal","value":"apk_document"},{"type":"literal","value":"apk_install"},{"type":"literal","value":"app_badging"},{"type":"literal","value":"app_blocking"},{"type":"literal","value":"app_registration"},{"type":"literal","value":"app_settings_alt"},{"type":"literal","value":"app_shortcut"},{"type":"literal","value":"apparel"},{"type":"literal","value":"approval"},{"type":"literal","value":"approval_delegation"},{"type":"literal","value":"approval_delegation_off"},{"type":"literal","value":"apps"},{"type":"literal","value":"apps_outage"},{"type":"literal","value":"aq"},{"type":"literal","value":"aq_indoor"},{"type":"literal","value":"ar_on_you"},{"type":"literal","value":"ar_stickers"},{"type":"literal","value":"architecture"},{"type":"literal","value":"archive"},{"type":"literal","value":"area_chart"},{"type":"literal","value":"arming_countdown"},{"type":"literal","value":"arrow_and_edge"},{"type":"literal","value":"arrow_back"},{"type":"literal","value":"arrow_back_2"},{"type":"literal","value":"arrow_back_ios"},{"type":"literal","value":"arrow_back_ios_new"},{"type":"literal","value":"arrow_circle_down"},{"type":"literal","value":"arrow_circle_left"},{"type":"literal","value":"arrow_circle_right"},{"type":"literal","value":"arrow_circle_up"},{"type":"literal","value":"arrow_cool_down"},{"type":"literal","value":"arrow_downward"},{"type":"literal","value":"arrow_downward_alt"},{"type":"literal","value":"arrow_drop_down"},{"type":"literal","value":"arrow_drop_down_circle"},{"type":"literal","value":"arrow_drop_up"},{"type":"literal","value":"arrow_forward"},{"type":"literal","value":"arrow_forward_ios"},{"type":"literal","value":"arrow_insert"},{"type":"literal","value":"arrow_left"},{"type":"literal","value":"arrow_left_alt"},{"type":"literal","value":"arrow_menu_close"},{"type":"literal","value":"arrow_menu_open"},{"type":"literal","value":"arrow_or_edge"},{"type":"literal","value":"arrow_outward"},{"type":"literal","value":"arrow_range"},{"type":"literal","value":"arrow_right"},{"type":"literal","value":"arrow_right_alt"},{"type":"literal","value":"arrow_selector_tool"},{"type":"literal","value":"arrow_shape_up"},{"type":"literal","value":"arrow_shape_up_stack"},{"type":"literal","value":"arrow_shape_up_stack_2"},{"type":"literal","value":"arrow_split"},{"type":"literal","value":"arrow_top_left"},{"type":"literal","value":"arrow_top_right"},{"type":"literal","value":"arrow_upload_progress"},{"type":"literal","value":"arrow_upload_ready"},{"type":"literal","value":"arrow_upward"},{"type":"literal","value":"arrow_upward_alt"},{"type":"literal","value":"arrow_warm_up"},{"type":"literal","value":"arrows_input"},{"type":"literal","value":"arrows_more_down"},{"type":"literal","value":"arrows_more_up"},{"type":"literal","value":"arrows_output"},{"type":"literal","value":"arrows_outward"},{"type":"literal","value":"art_track"},{"type":"literal","value":"article_person"},{"type":"literal","value":"article_shortcut"},{"type":"literal","value":"artist"},{"type":"literal","value":"aspect_ratio"},{"type":"literal","value":"assessment"},{"type":"literal","value":"assignment"},{"type":"literal","value":"assignment_add"},{"type":"literal","value":"assignment_ind"},{"type":"literal","value":"assignment_late"},{"type":"literal","value":"assignment_return"},{"type":"literal","value":"assignment_returned"},{"type":"literal","value":"assignment_turned_in"},{"type":"literal","value":"assist_walker"},{"type":"literal","value":"assistant"},{"type":"literal","value":"assistant_device"},{"type":"literal","value":"assistant_direction"},{"type":"literal","value":"assistant_navigation"},{"type":"literal","value":"assistant_on_hub"},{"type":"literal","value":"assistant_photo"},{"type":"literal","value":"assured_workload"},{"type":"literal","value":"atm"},{"type":"literal","value":"atr"},{"type":"literal","value":"attach_email"},{"type":"literal","value":"attach_file"},{"type":"literal","value":"attach_file_add"},{"type":"literal","value":"attach_file_off"},{"type":"literal","value":"attach_money"},{"type":"literal","value":"attachment"},{"type":"literal","value":"attractions"},{"type":"literal","value":"attribution"},{"type":"literal","value":"audio_description"},{"type":"literal","value":"audio_file"},{"type":"literal","value":"audio_video_receiver"},{"type":"literal","value":"audiotrack"},{"type":"literal","value":"auto_awesome"},{"type":"literal","value":"auto_awesome_mosaic"},{"type":"literal","value":"auto_awesome_motion"},{"type":"literal","value":"auto_delete"},{"type":"literal","value":"auto_fix_high"},{"type":"literal","value":"auto_fix_normal"},{"type":"literal","value":"auto_fix_off"},{"type":"literal","value":"auto_graph"},{"type":"literal","value":"auto_mode"},{"type":"literal","value":"auto_read_pause"},{"type":"literal","value":"auto_read_play"},{"type":"literal","value":"auto_stories"},{"type":"literal","value":"auto_stories_off"},{"type":"literal","value":"auto_towing"},{"type":"literal","value":"auto_transmission"},{"type":"literal","value":"autofps_select"},{"type":"literal","value":"automation"},{"type":"literal","value":"autopause"},{"type":"literal","value":"autoplay"},{"type":"literal","value":"autorenew"},{"type":"literal","value":"autostop"},{"type":"literal","value":"av1"},{"type":"literal","value":"av_timer"},{"type":"literal","value":"avc"},{"type":"literal","value":"avg_pace"},{"type":"literal","value":"avg_time"},{"type":"literal","value":"award_meal"},{"type":"literal","value":"award_star"},{"type":"literal","value":"azm"},{"type":"literal","value":"baby_changing_station"},{"type":"literal","value":"back_hand"},{"type":"literal","value":"back_to_tab"},{"type":"literal","value":"background_dot_large"},{"type":"literal","value":"background_dot_small"},{"type":"literal","value":"background_grid_small"},{"type":"literal","value":"background_replace"},{"type":"literal","value":"backlight_high"},{"type":"literal","value":"backlight_high_off"},{"type":"literal","value":"backlight_low"},{"type":"literal","value":"backspace"},{"type":"literal","value":"backup"},{"type":"literal","value":"backup_table"},{"type":"literal","value":"badge_critical_battery"},{"type":"literal","value":"badminton"},{"type":"literal","value":"bakery_dining"},{"type":"literal","value":"balance"},{"type":"literal","value":"balcony"},{"type":"literal","value":"ballot"},{"type":"literal","value":"bar_chart"},{"type":"literal","value":"bar_chart_4_bars"},{"type":"literal","value":"bar_chart_off"},{"type":"literal","value":"barcode_reader"},{"type":"literal","value":"barcode_scanner"},{"type":"literal","value":"barefoot"},{"type":"literal","value":"batch_prediction"},{"type":"literal","value":"bath_bedrock"},{"type":"literal","value":"bath_outdoor"},{"type":"literal","value":"bath_private"},{"type":"literal","value":"bath_public_large"},{"type":"literal","value":"bath_soak"},{"type":"literal","value":"bathroom"},{"type":"literal","value":"battery_0_bar"},{"type":"literal","value":"battery_1_bar"},{"type":"literal","value":"battery_20"},{"type":"literal","value":"battery_2_bar"},{"type":"literal","value":"battery_30"},{"type":"literal","value":"battery_3_bar"},{"type":"literal","value":"battery_4_bar"},{"type":"literal","value":"battery_50"},{"type":"literal","value":"battery_5_bar"},{"type":"literal","value":"battery_60"},{"type":"literal","value":"battery_6_bar"},{"type":"literal","value":"battery_80"},{"type":"literal","value":"battery_90"},{"type":"literal","value":"battery_alert"},{"type":"literal","value":"battery_android_0"},{"type":"literal","value":"battery_android_1"},{"type":"literal","value":"battery_android_2"},{"type":"literal","value":"battery_android_3"},{"type":"literal","value":"battery_android_4"},{"type":"literal","value":"battery_android_5"},{"type":"literal","value":"battery_android_6"},{"type":"literal","value":"battery_android_alert"},{"type":"literal","value":"battery_android_bolt"},{"type":"literal","value":"battery_android_frame_1"},{"type":"literal","value":"battery_android_frame_2"},{"type":"literal","value":"battery_android_frame_3"},{"type":"literal","value":"battery_android_frame_4"},{"type":"literal","value":"battery_android_frame_5"},{"type":"literal","value":"battery_android_frame_6"},{"type":"literal","value":"battery_android_frame_alert"},{"type":"literal","value":"battery_android_frame_bolt"},{"type":"literal","value":"battery_android_frame_full"},{"type":"literal","value":"battery_android_frame_plus"},{"type":"literal","value":"battery_android_frame_question"},{"type":"literal","value":"battery_android_frame_share"},{"type":"literal","value":"battery_android_frame_shield"},{"type":"literal","value":"battery_android_full"},{"type":"literal","value":"battery_android_plus"},{"type":"literal","value":"battery_android_question"},{"type":"literal","value":"battery_android_share"},{"type":"literal","value":"battery_android_shield"},{"type":"literal","value":"battery_change"},{"type":"literal","value":"battery_charging_20"},{"type":"literal","value":"battery_charging_30"},{"type":"literal","value":"battery_charging_50"},{"type":"literal","value":"battery_charging_60"},{"type":"literal","value":"battery_charging_80"},{"type":"literal","value":"battery_charging_90"},{"type":"literal","value":"battery_charging_full"},{"type":"literal","value":"battery_error"},{"type":"literal","value":"battery_full"},{"type":"literal","value":"battery_full_alt"},{"type":"literal","value":"battery_horiz_000"},{"type":"literal","value":"battery_horiz_050"},{"type":"literal","value":"battery_horiz_075"},{"type":"literal","value":"battery_low"},{"type":"literal","value":"battery_plus"},{"type":"literal","value":"battery_profile"},{"type":"literal","value":"battery_saver"},{"type":"literal","value":"battery_share"},{"type":"literal","value":"battery_status_good"},{"type":"literal","value":"battery_std"},{"type":"literal","value":"battery_unknown"},{"type":"literal","value":"battery_very_low"},{"type":"literal","value":"beach_access"},{"type":"literal","value":"bed"},{"type":"literal","value":"bedroom_baby"},{"type":"literal","value":"bedroom_child"},{"type":"literal","value":"bedroom_parent"},{"type":"literal","value":"bedtime"},{"type":"literal","value":"bedtime_off"},{"type":"literal","value":"beenhere"},{"type":"literal","value":"beer_meal"},{"type":"literal","value":"bento"},{"type":"literal","value":"bia"},{"type":"literal","value":"bid_landscape"},{"type":"literal","value":"bid_landscape_disabled"},{"type":"literal","value":"bigtop_updates"},{"type":"literal","value":"bike_dock"},{"type":"literal","value":"bike_lane"},{"type":"literal","value":"bike_scooter"},{"type":"literal","value":"biotech"},{"type":"literal","value":"blanket"},{"type":"literal","value":"blender"},{"type":"literal","value":"blind"},{"type":"literal","value":"blinds"},{"type":"literal","value":"blinds_closed"},{"type":"literal","value":"block"},{"type":"literal","value":"block_flipped"},{"type":"literal","value":"blood_pressure"},{"type":"literal","value":"bloodtype"},{"type":"literal","value":"bluetooth"},{"type":"literal","value":"bluetooth_audio"},{"type":"literal","value":"bluetooth_connected"},{"type":"literal","value":"bluetooth_disabled"},{"type":"literal","value":"bluetooth_drive"},{"type":"literal","value":"bluetooth_searching"},{"type":"literal","value":"blur_circular"},{"type":"literal","value":"blur_linear"},{"type":"literal","value":"blur_medium"},{"type":"literal","value":"blur_off"},{"type":"literal","value":"blur_on"},{"type":"literal","value":"blur_short"},{"type":"literal","value":"boat_bus"},{"type":"literal","value":"boat_railway"},{"type":"literal","value":"body_fat"},{"type":"literal","value":"body_system"},{"type":"literal","value":"bomb"},{"type":"literal","value":"book_2"},{"type":"literal","value":"book_3"},{"type":"literal","value":"book_4"},{"type":"literal","value":"book_5"},{"type":"literal","value":"book_6"},{"type":"literal","value":"book_online"},{"type":"literal","value":"book_ribbon"},{"type":"literal","value":"bookmark_add"},{"type":"literal","value":"bookmark_added"},{"type":"literal","value":"bookmark_bag"},{"type":"literal","value":"bookmark_border"},{"type":"literal","value":"bookmark_check"},{"type":"literal","value":"bookmark_flag"},{"type":"literal","value":"bookmark_heart"},{"type":"literal","value":"bookmark_manager"},{"type":"literal","value":"bookmark_remove"},{"type":"literal","value":"bookmark_star"},{"type":"literal","value":"bookmarks"},{"type":"literal","value":"books_movies_and_music"},{"type":"literal","value":"border_all"},{"type":"literal","value":"border_bottom"},{"type":"literal","value":"border_clear"},{"type":"literal","value":"border_color"},{"type":"literal","value":"border_horizontal"},{"type":"literal","value":"border_inner"},{"type":"literal","value":"border_left"},{"type":"literal","value":"border_outer"},{"type":"literal","value":"border_right"},{"type":"literal","value":"border_style"},{"type":"literal","value":"border_top"},{"type":"literal","value":"border_vertical"},{"type":"literal","value":"borg"},{"type":"literal","value":"bottom_app_bar"},{"type":"literal","value":"bottom_drawer"},{"type":"literal","value":"bottom_navigation"},{"type":"literal","value":"bottom_panel_close"},{"type":"literal","value":"bottom_panel_open"},{"type":"literal","value":"bottom_right_click"},{"type":"literal","value":"bottom_sheets"},{"type":"literal","value":"box"},{"type":"literal","value":"box_add"},{"type":"literal","value":"box_edit"},{"type":"literal","value":"boy"},{"type":"literal","value":"brand_awareness"},{"type":"literal","value":"brand_family"},{"type":"literal","value":"branding_watermark"},{"type":"literal","value":"breakfast_dining"},{"type":"literal","value":"breaking_news"},{"type":"literal","value":"breaking_news_alt_1"},{"type":"literal","value":"breastfeeding"},{"type":"literal","value":"brick"},{"type":"literal","value":"briefcase_meal"},{"type":"literal","value":"brightness_1"},{"type":"literal","value":"brightness_2"},{"type":"literal","value":"brightness_3"},{"type":"literal","value":"brightness_4"},{"type":"literal","value":"brightness_5"},{"type":"literal","value":"brightness_6"},{"type":"literal","value":"brightness_7"},{"type":"literal","value":"brightness_alert"},{"type":"literal","value":"brightness_auto"},{"type":"literal","value":"brightness_empty"},{"type":"literal","value":"brightness_high"},{"type":"literal","value":"brightness_low"},{"type":"literal","value":"brightness_medium"},{"type":"literal","value":"bring_your_own_ip"},{"type":"literal","value":"broadcast_on_home"},{"type":"literal","value":"broadcast_on_personal"},{"type":"literal","value":"broken_image"},{"type":"literal","value":"browse"},{"type":"literal","value":"browse_activity"},{"type":"literal","value":"browse_gallery"},{"type":"literal","value":"browser_not_supported"},{"type":"literal","value":"browser_updated"},{"type":"literal","value":"brunch_dining"},{"type":"literal","value":"brush"},{"type":"literal","value":"bubble_chart"},{"type":"literal","value":"bubbles"},{"type":"literal","value":"bucket_check"},{"type":"literal","value":"bug_report"},{"type":"literal","value":"build_circle"},{"type":"literal","value":"bungalow"},{"type":"literal","value":"burst_mode"},{"type":"literal","value":"bus_alert"},{"type":"literal","value":"bus_railway"},{"type":"literal","value":"business"},{"type":"literal","value":"business_center"},{"type":"literal","value":"business_chip"},{"type":"literal","value":"business_messages"},{"type":"literal","value":"buttons_alt"},{"type":"literal","value":"cabin"},{"type":"literal","value":"cable"},{"type":"literal","value":"cable_car"},{"type":"literal","value":"cached"},{"type":"literal","value":"cadence"},{"type":"literal","value":"cake"},{"type":"literal","value":"cake_add"},{"type":"literal","value":"calculate"},{"type":"literal","value":"calendar_add_on"},{"type":"literal","value":"calendar_apps_script"},{"type":"literal","value":"calendar_check"},{"type":"literal","value":"calendar_clock"},{"type":"literal","value":"calendar_lock"},{"type":"literal","value":"calendar_meal"},{"type":"literal","value":"calendar_meal_2"},{"type":"literal","value":"calendar_month"},{"type":"literal","value":"calendar_today"},{"type":"literal","value":"calendar_view_day"},{"type":"literal","value":"calendar_view_month"},{"type":"literal","value":"calendar_view_week"},{"type":"literal","value":"call"},{"type":"literal","value":"call_end"},{"type":"literal","value":"call_log"},{"type":"literal","value":"call_made"},{"type":"literal","value":"call_merge"},{"type":"literal","value":"call_missed"},{"type":"literal","value":"call_missed_outgoing"},{"type":"literal","value":"call_quality"},{"type":"literal","value":"call_received"},{"type":"literal","value":"call_split"},{"type":"literal","value":"call_to_action"},{"type":"literal","value":"camera_alt"},{"type":"literal","value":"camera_enhance"},{"type":"literal","value":"camera_front"},{"type":"literal","value":"camera_indoor"},{"type":"literal","value":"camera_outdoor"},{"type":"literal","value":"camera_rear"},{"type":"literal","value":"camera_roll"},{"type":"literal","value":"camera_video"},{"type":"literal","value":"cameraswitch"},{"type":"literal","value":"campaign"},{"type":"literal","value":"camping"},{"type":"literal","value":"cancel_presentation"},{"type":"literal","value":"cancel_schedule_send"},{"type":"literal","value":"candle"},{"type":"literal","value":"candlestick_chart"},{"type":"literal","value":"cannabis"},{"type":"literal","value":"captive_portal"},{"type":"literal","value":"capture"},{"type":"literal","value":"car_crash"},{"type":"literal","value":"car_defrost_left"},{"type":"literal","value":"car_defrost_low_left"},{"type":"literal","value":"car_defrost_low_right"},{"type":"literal","value":"car_defrost_mid_left"},{"type":"literal","value":"car_defrost_mid_low_left"},{"type":"literal","value":"car_defrost_mid_low_right"},{"type":"literal","value":"car_defrost_mid_right"},{"type":"literal","value":"car_defrost_right"},{"type":"literal","value":"car_fan_low_left"},{"type":"literal","value":"car_fan_low_mid_left"},{"type":"literal","value":"car_fan_low_right"},{"type":"literal","value":"car_fan_mid_left"},{"type":"literal","value":"car_fan_mid_low_right"},{"type":"literal","value":"car_fan_mid_right"},{"type":"literal","value":"car_fan_recirculate"},{"type":"literal","value":"car_gear"},{"type":"literal","value":"car_lock"},{"type":"literal","value":"car_mirror_heat"},{"type":"literal","value":"car_rental"},{"type":"literal","value":"car_repair"},{"type":"literal","value":"car_tag"},{"type":"literal","value":"card_giftcard"},{"type":"literal","value":"card_membership"},{"type":"literal","value":"card_travel"},{"type":"literal","value":"cardio_load"},{"type":"literal","value":"cardiology"},{"type":"literal","value":"cards"},{"type":"literal","value":"cards_star"},{"type":"literal","value":"carpenter"},{"type":"literal","value":"carry_on_bag"},{"type":"literal","value":"carry_on_bag_checked"},{"type":"literal","value":"carry_on_bag_inactive"},{"type":"literal","value":"carry_on_bag_question"},{"type":"literal","value":"cases"},{"type":"literal","value":"casino"},{"type":"literal","value":"cast"},{"type":"literal","value":"cast_connected"},{"type":"literal","value":"cast_for_education"},{"type":"literal","value":"cast_pause"},{"type":"literal","value":"cast_warning"},{"type":"literal","value":"castle"},{"type":"literal","value":"catching_pokemon"},{"type":"literal","value":"category_search"},{"type":"literal","value":"celebration"},{"type":"literal","value":"cell_merge"},{"type":"literal","value":"cell_tower"},{"type":"literal","value":"cell_wifi"},{"type":"literal","value":"center_focus_strong"},{"type":"literal","value":"center_focus_weak"},{"type":"literal","value":"chair_alt"},{"type":"literal","value":"chair_counter"},{"type":"literal","value":"chair_fireplace"},{"type":"literal","value":"chair_umbrella"},{"type":"literal","value":"chalet"},{"type":"literal","value":"change_circle"},{"type":"literal","value":"change_history"},{"type":"literal","value":"charger"},{"type":"literal","value":"charging_station"},{"type":"literal","value":"chart_data"},{"type":"literal","value":"chat"},{"type":"literal","value":"chat_add_on"},{"type":"literal","value":"chat_apps_script"},{"type":"literal","value":"chat_bubble"},{"type":"literal","value":"chat_bubble_outline"},{"type":"literal","value":"chat_error"},{"type":"literal","value":"chat_info"},{"type":"literal","value":"chat_paste_go"},{"type":"literal","value":"chat_paste_go_2"},{"type":"literal","value":"check"},{"type":"literal","value":"check_box"},{"type":"literal","value":"check_box_outline_blank"},{"type":"literal","value":"check_circle"},{"type":"literal","value":"check_circle_outline"},{"type":"literal","value":"check_circle_unread"},{"type":"literal","value":"check_in_out"},{"type":"literal","value":"check_indeterminate_small"},{"type":"literal","value":"check_small"},{"type":"literal","value":"checkbook"},{"type":"literal","value":"checked_bag"},{"type":"literal","value":"checked_bag_question"},{"type":"literal","value":"checklist_rtl"},{"type":"literal","value":"checkroom"},{"type":"literal","value":"cheer"},{"type":"literal","value":"chef_hat"},{"type":"literal","value":"chess"},{"type":"literal","value":"chess_bishop"},{"type":"literal","value":"chess_bishop_2"},{"type":"literal","value":"chess_king"},{"type":"literal","value":"chess_king_2"},{"type":"literal","value":"chess_knight"},{"type":"literal","value":"chess_pawn"},{"type":"literal","value":"chess_pawn_2"},{"type":"literal","value":"chess_queen"},{"type":"literal","value":"chess_rook"},{"type":"literal","value":"chevron_backward"},{"type":"literal","value":"chevron_forward"},{"type":"literal","value":"chevron_left"},{"type":"literal","value":"chevron_right"},{"type":"literal","value":"child_care"},{"type":"literal","value":"child_friendly"},{"type":"literal","value":"child_hat"},{"type":"literal","value":"chip_extraction"},{"type":"literal","value":"chips"},{"type":"literal","value":"chrome_reader_mode"},{"type":"literal","value":"chromecast_2"},{"type":"literal","value":"chromecast_device"},{"type":"literal","value":"chronic"},{"type":"literal","value":"church"},{"type":"literal","value":"cinematic_blur"},{"type":"literal","value":"circle_notifications"},{"type":"literal","value":"circles"},{"type":"literal","value":"circles_ext"},{"type":"literal","value":"clarify"},{"type":"literal","value":"clean_hands"},{"type":"literal","value":"cleaning"},{"type":"literal","value":"cleaning_bucket"},{"type":"literal","value":"cleaning_services"},{"type":"literal","value":"clear_all"},{"type":"literal","value":"clear_day"},{"type":"literal","value":"climate_mini_split"},{"type":"literal","value":"clinical_notes"},{"type":"literal","value":"clock_arrow_down"},{"type":"literal","value":"clock_arrow_up"},{"type":"literal","value":"clock_loader_10"},{"type":"literal","value":"clock_loader_20"},{"type":"literal","value":"clock_loader_40"},{"type":"literal","value":"clock_loader_60"},{"type":"literal","value":"clock_loader_80"},{"type":"literal","value":"clock_loader_90"},{"type":"literal","value":"close_fullscreen"},{"type":"literal","value":"close_small"},{"type":"literal","value":"closed_caption"},{"type":"literal","value":"closed_caption_add"},{"type":"literal","value":"closed_caption_disabled"},{"type":"literal","value":"closed_caption_off"},{"type":"literal","value":"cloud_alert"},{"type":"literal","value":"cloud_circle"},{"type":"literal","value":"cloud_done"},{"type":"literal","value":"cloud_download"},{"type":"literal","value":"cloud_lock"},{"type":"literal","value":"cloud_off"},{"type":"literal","value":"cloud_queue"},{"type":"literal","value":"cloud_sync"},{"type":"literal","value":"cloud_upload"},{"type":"literal","value":"cloudy_snowing"},{"type":"literal","value":"co2"},{"type":"literal","value":"co_present"},{"type":"literal","value":"code_blocks"},{"type":"literal","value":"code_off"},{"type":"literal","value":"coffee"},{"type":"literal","value":"coffee_maker"},{"type":"literal","value":"cognition"},{"type":"literal","value":"cognition_2"},{"type":"literal","value":"collapse_all"},{"type":"literal","value":"collapse_content"},{"type":"literal","value":"collections"},{"type":"literal","value":"collections_bookmark"},{"type":"literal","value":"color_lens"},{"type":"literal","value":"colorize"},{"type":"literal","value":"combine_columns"},{"type":"literal","value":"comedy_mask"},{"type":"literal","value":"comic_bubble"},{"type":"literal","value":"comment_bank"},{"type":"literal","value":"comments_disabled"},{"type":"literal","value":"commit"},{"type":"literal","value":"communication"},{"type":"literal","value":"communities"},{"type":"literal","value":"commute"},{"type":"literal","value":"compare"},{"type":"literal","value":"compare_arrows"},{"type":"literal","value":"compass_calibration"},{"type":"literal","value":"component_exchange"},{"type":"literal","value":"compost"},{"type":"literal","value":"compress"},{"type":"literal","value":"computer"},{"type":"literal","value":"computer_arrow_up"},{"type":"literal","value":"computer_cancel"},{"type":"literal","value":"concierge"},{"type":"literal","value":"conditions"},{"type":"literal","value":"confirmation_number"},{"type":"literal","value":"congenital"},{"type":"literal","value":"connect_without_contact"},{"type":"literal","value":"connected_tv"},{"type":"literal","value":"connecting_airports"},{"type":"literal","value":"construction"},{"type":"literal","value":"contact_emergency"},{"type":"literal","value":"contact_mail"},{"type":"literal","value":"contact_page"},{"type":"literal","value":"contact_phone"},{"type":"literal","value":"contact_support"},{"type":"literal","value":"contactless"},{"type":"literal","value":"contactless_off"},{"type":"literal","value":"contacts"},{"type":"literal","value":"contacts_product"},{"type":"literal","value":"content_copy"},{"type":"literal","value":"content_cut"},{"type":"literal","value":"content_paste"},{"type":"literal","value":"content_paste_go"},{"type":"literal","value":"content_paste_off"},{"type":"literal","value":"content_paste_search"},{"type":"literal","value":"contextual_token"},{"type":"literal","value":"contextual_token_add"},{"type":"literal","value":"contract"},{"type":"literal","value":"contract_delete"},{"type":"literal","value":"contract_edit"},{"type":"literal","value":"contrast_circle"},{"type":"literal","value":"contrast_rtl_off"},{"type":"literal","value":"contrast_square"},{"type":"literal","value":"control_camera"},{"type":"literal","value":"control_point"},{"type":"literal","value":"control_point_duplicate"},{"type":"literal","value":"controller_gen"},{"type":"literal","value":"conversation"},{"type":"literal","value":"conversion_path"},{"type":"literal","value":"conversion_path_off"},{"type":"literal","value":"convert_to_text"},{"type":"literal","value":"conveyor_belt"},{"type":"literal","value":"cookie"},{"type":"literal","value":"cookie_off"},{"type":"literal","value":"cooking"},{"type":"literal","value":"cool_to_dry"},{"type":"literal","value":"copy_all"},{"type":"literal","value":"copyright"},{"type":"literal","value":"coronavirus"},{"type":"literal","value":"corporate_fare"},{"type":"literal","value":"cottage"},{"type":"literal","value":"counter_0"},{"type":"literal","value":"counter_1"},{"type":"literal","value":"counter_2"},{"type":"literal","value":"counter_3"},{"type":"literal","value":"counter_4"},{"type":"literal","value":"counter_5"},{"type":"literal","value":"counter_6"},{"type":"literal","value":"counter_7"},{"type":"literal","value":"counter_8"},{"type":"literal","value":"counter_9"},{"type":"literal","value":"countertops"},{"type":"literal","value":"create"},{"type":"literal","value":"create_new_folder"},{"type":"literal","value":"credit_card"},{"type":"literal","value":"credit_card_clock"},{"type":"literal","value":"credit_card_gear"},{"type":"literal","value":"credit_card_heart"},{"type":"literal","value":"credit_card_off"},{"type":"literal","value":"credit_score"},{"type":"literal","value":"crib"},{"type":"literal","value":"crisis_alert"},{"type":"literal","value":"crop_16_9"},{"type":"literal","value":"crop_3_2"},{"type":"literal","value":"crop_5_4"},{"type":"literal","value":"crop_7_5"},{"type":"literal","value":"crop_9_16"},{"type":"literal","value":"crop_din"},{"type":"literal","value":"crop_free"},{"type":"literal","value":"crop_landscape"},{"type":"literal","value":"crop_original"},{"type":"literal","value":"crop_portrait"},{"type":"literal","value":"crop_rotate"},{"type":"literal","value":"crop_square"},{"type":"literal","value":"crossword"},{"type":"literal","value":"crowdsource"},{"type":"literal","value":"cruelty_free"},{"type":"literal","value":"css"},{"type":"literal","value":"csv"},{"type":"literal","value":"currency_bitcoin"},{"type":"literal","value":"currency_exchange"},{"type":"literal","value":"currency_franc"},{"type":"literal","value":"currency_lira"},{"type":"literal","value":"currency_pound"},{"type":"literal","value":"currency_ruble"},{"type":"literal","value":"currency_rupee"},{"type":"literal","value":"currency_rupee_circle"},{"type":"literal","value":"currency_yen"},{"type":"literal","value":"currency_yuan"},{"type":"literal","value":"curtains"},{"type":"literal","value":"curtains_closed"},{"type":"literal","value":"custom_typography"},{"type":"literal","value":"cycle"},{"type":"literal","value":"cyclone"},{"type":"literal","value":"dark_mode"},{"type":"literal","value":"dashboard"},{"type":"literal","value":"dashboard_2"},{"type":"literal","value":"dashboard_customize"},{"type":"literal","value":"data_alert"},{"type":"literal","value":"data_array"},{"type":"literal","value":"data_check"},{"type":"literal","value":"data_exploration"},{"type":"literal","value":"data_info_alert"},{"type":"literal","value":"data_loss_prevention"},{"type":"literal","value":"data_object"},{"type":"literal","value":"data_saver_off"},{"type":"literal","value":"data_saver_on"},{"type":"literal","value":"data_table"},{"type":"literal","value":"data_thresholding"},{"type":"literal","value":"data_usage"},{"type":"literal","value":"database"},{"type":"literal","value":"database_off"},{"type":"literal","value":"database_search"},{"type":"literal","value":"database_upload"},{"type":"literal","value":"dataset"},{"type":"literal","value":"dataset_linked"},{"type":"literal","value":"date_range"},{"type":"literal","value":"deblur"},{"type":"literal","value":"deceased"},{"type":"literal","value":"decimal_decrease"},{"type":"literal","value":"decimal_increase"},{"type":"literal","value":"deck"},{"type":"literal","value":"dehaze"},{"type":"literal","value":"delete_forever"},{"type":"literal","value":"delete_history"},{"type":"literal","value":"delete_outline"},{"type":"literal","value":"delete_sweep"},{"type":"literal","value":"delivery_dining"},{"type":"literal","value":"delivery_truck_bolt"},{"type":"literal","value":"delivery_truck_speed"},{"type":"literal","value":"demography"},{"type":"literal","value":"density_large"},{"type":"literal","value":"density_medium"},{"type":"literal","value":"density_small"},{"type":"literal","value":"dentistry"},{"type":"literal","value":"departure_board"},{"type":"literal","value":"deployed_code"},{"type":"literal","value":"deployed_code_account"},{"type":"literal","value":"deployed_code_alert"},{"type":"literal","value":"deployed_code_history"},{"type":"literal","value":"deployed_code_update"},{"type":"literal","value":"dermatology"},{"type":"literal","value":"deselect"},{"type":"literal","value":"design_services"},{"type":"literal","value":"desk"},{"type":"literal","value":"deskphone"},{"type":"literal","value":"desktop_access_disabled"},{"type":"literal","value":"desktop_cloud"},{"type":"literal","value":"desktop_cloud_stack"},{"type":"literal","value":"desktop_landscape"},{"type":"literal","value":"desktop_landscape_add"},{"type":"literal","value":"desktop_mac"},{"type":"literal","value":"desktop_portrait"},{"type":"literal","value":"desktop_windows"},{"type":"literal","value":"destruction"},{"type":"literal","value":"detection_and_zone"},{"type":"literal","value":"detector"},{"type":"literal","value":"detector_alarm"},{"type":"literal","value":"detector_battery"},{"type":"literal","value":"detector_co"},{"type":"literal","value":"detector_offline"},{"type":"literal","value":"detector_smoke"},{"type":"literal","value":"detector_status"},{"type":"literal","value":"developer_board"},{"type":"literal","value":"developer_board_off"},{"type":"literal","value":"developer_guide"},{"type":"literal","value":"developer_mode"},{"type":"literal","value":"developer_mode_tv"},{"type":"literal","value":"device_band"},{"type":"literal","value":"device_hub"},{"type":"literal","value":"device_thermostat"},{"type":"literal","value":"device_unknown"},{"type":"literal","value":"devices"},{"type":"literal","value":"devices_fold"},{"type":"literal","value":"devices_fold_2"},{"type":"literal","value":"devices_off"},{"type":"literal","value":"devices_other"},{"type":"literal","value":"devices_wearables"},{"type":"literal","value":"dew_point"},{"type":"literal","value":"diagnosis"},{"type":"literal","value":"diagonal_line"},{"type":"literal","value":"dialer_sip"},{"type":"literal","value":"dialogs"},{"type":"literal","value":"dialpad"},{"type":"literal","value":"diamond_shine"},{"type":"literal","value":"dictionary"},{"type":"literal","value":"digital_out_of_home"},{"type":"literal","value":"digital_wellbeing"},{"type":"literal","value":"dine_heart"},{"type":"literal","value":"dine_in"},{"type":"literal","value":"dine_lamp"},{"type":"literal","value":"dining"},{"type":"literal","value":"dinner_dining"},{"type":"literal","value":"directions"},{"type":"literal","value":"directions_alt"},{"type":"literal","value":"directions_alt_off"},{"type":"literal","value":"directions_bike"},{"type":"literal","value":"directions_boat"},{"type":"literal","value":"directions_boat_filled"},{"type":"literal","value":"directions_bus"},{"type":"literal","value":"directions_bus_filled"},{"type":"literal","value":"directions_car"},{"type":"literal","value":"directions_car_filled"},{"type":"literal","value":"directions_off"},{"type":"literal","value":"directions_railway"},{"type":"literal","value":"directions_railway_2"},{"type":"literal","value":"directions_railway_filled"},{"type":"literal","value":"directions_run"},{"type":"literal","value":"directions_subway"},{"type":"literal","value":"directions_subway_filled"},{"type":"literal","value":"directions_transit"},{"type":"literal","value":"directions_transit_filled"},{"type":"literal","value":"directions_walk"},{"type":"literal","value":"directory_sync"},{"type":"literal","value":"dirty_lens"},{"type":"literal","value":"disabled_by_default"},{"type":"literal","value":"disabled_visible"},{"type":"literal","value":"disc_full"},{"type":"literal","value":"discount"},{"type":"literal","value":"discover_tune"},{"type":"literal","value":"dishwasher_gen"},{"type":"literal","value":"display_external_input"},{"type":"literal","value":"display_settings"},{"type":"literal","value":"distance"},{"type":"literal","value":"diversity_1"},{"type":"literal","value":"diversity_2"},{"type":"literal","value":"diversity_3"},{"type":"literal","value":"diversity_4"},{"type":"literal","value":"dns"},{"type":"literal","value":"do_disturb"},{"type":"literal","value":"do_disturb_alt"},{"type":"literal","value":"do_disturb_off"},{"type":"literal","value":"do_disturb_on"},{"type":"literal","value":"do_not_disturb"},{"type":"literal","value":"do_not_disturb_alt"},{"type":"literal","value":"do_not_disturb_off"},{"type":"literal","value":"do_not_disturb_on"},{"type":"literal","value":"do_not_disturb_on_total_silence"},{"type":"literal","value":"do_not_step"},{"type":"literal","value":"do_not_touch"},{"type":"literal","value":"dock"},{"type":"literal","value":"dock_to_bottom"},{"type":"literal","value":"dock_to_left"},{"type":"literal","value":"dock_to_right"},{"type":"literal","value":"docs"},{"type":"literal","value":"docs_add_on"},{"type":"literal","value":"docs_apps_script"},{"type":"literal","value":"document_scanner"},{"type":"literal","value":"document_search"},{"type":"literal","value":"domain"},{"type":"literal","value":"domain_add"},{"type":"literal","value":"domain_disabled"},{"type":"literal","value":"domain_verification"},{"type":"literal","value":"domain_verification_off"},{"type":"literal","value":"domino_mask"},{"type":"literal","value":"done_all"},{"type":"literal","value":"done_outline"},{"type":"literal","value":"donut_large"},{"type":"literal","value":"donut_small"},{"type":"literal","value":"door_back"},{"type":"literal","value":"door_front"},{"type":"literal","value":"door_open"},{"type":"literal","value":"door_sensor"},{"type":"literal","value":"door_sliding"},{"type":"literal","value":"doorbell"},{"type":"literal","value":"doorbell_3p"},{"type":"literal","value":"doorbell_chime"},{"type":"literal","value":"double_arrow"},{"type":"literal","value":"downhill_skiing"},{"type":"literal","value":"download_2"},{"type":"literal","value":"download_done"},{"type":"literal","value":"download_for_offline"},{"type":"literal","value":"downloading"},{"type":"literal","value":"draft"},{"type":"literal","value":"draft_orders"},{"type":"literal","value":"drafts"},{"type":"literal","value":"drag_click"},{"type":"literal","value":"drag_handle"},{"type":"literal","value":"drag_indicator"},{"type":"literal","value":"drag_pan"},{"type":"literal","value":"draw"},{"type":"literal","value":"draw_abstract"},{"type":"literal","value":"draw_collage"},{"type":"literal","value":"dresser"},{"type":"literal","value":"drive_eta"},{"type":"literal","value":"drive_export"},{"type":"literal","value":"drive_file_move"},{"type":"literal","value":"drive_file_move_outline"},{"type":"literal","value":"drive_file_move_rtl"},{"type":"literal","value":"drive_file_rename_outline"},{"type":"literal","value":"drive_folder_upload"},{"type":"literal","value":"drone_2"},{"type":"literal","value":"dropdown"},{"type":"literal","value":"dropper_eye"},{"type":"literal","value":"dry"},{"type":"literal","value":"dry_cleaning"},{"type":"literal","value":"dual_screen"},{"type":"literal","value":"duo"},{"type":"literal","value":"dvr"},{"type":"literal","value":"dynamic_feed"},{"type":"literal","value":"dynamic_form"},{"type":"literal","value":"e911_avatar"},{"type":"literal","value":"e911_emergency"},{"type":"literal","value":"e_mobiledata"},{"type":"literal","value":"e_mobiledata_badge"},{"type":"literal","value":"ear_sound"},{"type":"literal","value":"earbud_case"},{"type":"literal","value":"earbud_left"},{"type":"literal","value":"earbud_right"},{"type":"literal","value":"earbuds_2"},{"type":"literal","value":"earbuds_battery"},{"type":"literal","value":"early_on"},{"type":"literal","value":"earthquake"},{"type":"literal","value":"east"},{"type":"literal","value":"ecg"},{"type":"literal","value":"ecg_heart"},{"type":"literal","value":"eco"},{"type":"literal","value":"eda"},{"type":"literal","value":"edgesensor_high"},{"type":"literal","value":"edgesensor_low"},{"type":"literal","value":"edit"},{"type":"literal","value":"edit_arrow_down"},{"type":"literal","value":"edit_arrow_up"},{"type":"literal","value":"edit_attributes"},{"type":"literal","value":"edit_audio"},{"type":"literal","value":"edit_calendar"},{"type":"literal","value":"edit_document"},{"type":"literal","value":"edit_location"},{"type":"literal","value":"edit_location_alt"},{"type":"literal","value":"edit_note"},{"type":"literal","value":"edit_notifications"},{"type":"literal","value":"edit_off"},{"type":"literal","value":"edit_road"},{"type":"literal","value":"edit_square"},{"type":"literal","value":"editor_choice"},{"type":"literal","value":"egg"},{"type":"literal","value":"egg_alt"},{"type":"literal","value":"elderly"},{"type":"literal","value":"elderly_woman"},{"type":"literal","value":"electric_bike"},{"type":"literal","value":"electric_bolt"},{"type":"literal","value":"electric_car"},{"type":"literal","value":"electric_meter"},{"type":"literal","value":"electric_moped"},{"type":"literal","value":"electric_rickshaw"},{"type":"literal","value":"electric_scooter"},{"type":"literal","value":"electrical_services"},{"type":"literal","value":"elevator"},{"type":"literal","value":"emergency"},{"type":"literal","value":"emergency_heat"},{"type":"literal","value":"emergency_heat_2"},{"type":"literal","value":"emergency_home"},{"type":"literal","value":"emergency_recording"},{"type":"literal","value":"emergency_share"},{"type":"literal","value":"emergency_share_off"},{"type":"literal","value":"emoji_emotions"},{"type":"literal","value":"emoji_events"},{"type":"literal","value":"emoji_food_beverage"},{"type":"literal","value":"emoji_language"},{"type":"literal","value":"emoji_nature"},{"type":"literal","value":"emoji_objects"},{"type":"literal","value":"emoji_people"},{"type":"literal","value":"emoji_symbols"},{"type":"literal","value":"emoji_transportation"},{"type":"literal","value":"emoticon"},{"type":"literal","value":"empty_dashboard"},{"type":"literal","value":"encrypted"},{"type":"literal","value":"encrypted_add"},{"type":"literal","value":"encrypted_add_circle"},{"type":"literal","value":"encrypted_minus_circle"},{"type":"literal","value":"encrypted_off"},{"type":"literal","value":"endocrinology"},{"type":"literal","value":"energy"},{"type":"literal","value":"energy_program_saving"},{"type":"literal","value":"energy_program_time_used"},{"type":"literal","value":"energy_savings_leaf"},{"type":"literal","value":"engineering"},{"type":"literal","value":"enhanced_encryption"},{"type":"literal","value":"ent"},{"type":"literal","value":"enterprise"},{"type":"literal","value":"enterprise_off"},{"type":"literal","value":"equalizer"},{"type":"literal","value":"eraser_size_1"},{"type":"literal","value":"eraser_size_2"},{"type":"literal","value":"eraser_size_3"},{"type":"literal","value":"eraser_size_4"},{"type":"literal","value":"eraser_size_5"},{"type":"literal","value":"error_med"},{"type":"literal","value":"error_outline"},{"type":"literal","value":"escalator"},{"type":"literal","value":"escalator_warning"},{"type":"literal","value":"euro"},{"type":"literal","value":"euro_symbol"},{"type":"literal","value":"ev_mobiledata_badge"},{"type":"literal","value":"ev_shadow"},{"type":"literal","value":"ev_shadow_add"},{"type":"literal","value":"ev_shadow_minus"},{"type":"literal","value":"ev_station"},{"type":"literal","value":"event_available"},{"type":"literal","value":"event_busy"},{"type":"literal","value":"event_list"},{"type":"literal","value":"event_note"},{"type":"literal","value":"event_repeat"},{"type":"literal","value":"event_seat"},{"type":"literal","value":"event_upcoming"},{"type":"literal","value":"exclamation"},{"type":"literal","value":"exercise"},{"type":"literal","value":"exit_to_app"},{"type":"literal","value":"expand"},{"type":"literal","value":"expand_all"},{"type":"literal","value":"expand_circle_down"},{"type":"literal","value":"expand_circle_right"},{"type":"literal","value":"expand_circle_up"},{"type":"literal","value":"expand_content"},{"type":"literal","value":"expand_less"},{"type":"literal","value":"expand_more"},{"type":"literal","value":"expansion_panels"},{"type":"literal","value":"experiment"},{"type":"literal","value":"explicit"},{"type":"literal","value":"explore"},{"type":"literal","value":"explore_nearby"},{"type":"literal","value":"explore_off"},{"type":"literal","value":"explosion"},{"type":"literal","value":"export_notes"},{"type":"literal","value":"exposure"},{"type":"literal","value":"exposure_neg_1"},{"type":"literal","value":"exposure_neg_2"},{"type":"literal","value":"exposure_plus_1"},{"type":"literal","value":"exposure_plus_2"},{"type":"literal","value":"exposure_zero"},{"type":"literal","value":"extension"},{"type":"literal","value":"extension_off"},{"type":"literal","value":"eye_tracking"},{"type":"literal","value":"eyeglasses_2"},{"type":"literal","value":"eyeglasses_2_sound"},{"type":"literal","value":"face"},{"type":"literal","value":"face_2"},{"type":"literal","value":"face_3"},{"type":"literal","value":"face_4"},{"type":"literal","value":"face_5"},{"type":"literal","value":"face_6"},{"type":"literal","value":"face_down"},{"type":"literal","value":"face_left"},{"type":"literal","value":"face_nod"},{"type":"literal","value":"face_retouching_natural"},{"type":"literal","value":"face_retouching_off"},{"type":"literal","value":"face_right"},{"type":"literal","value":"face_shake"},{"type":"literal","value":"face_unlock"},{"type":"literal","value":"face_up"},{"type":"literal","value":"fact_check"},{"type":"literal","value":"factory"},{"type":"literal","value":"falling"},{"type":"literal","value":"familiar_face_and_zone"},{"type":"literal","value":"family_group"},{"type":"literal","value":"family_history"},{"type":"literal","value":"family_home"},{"type":"literal","value":"family_link"},{"type":"literal","value":"family_restroom"},{"type":"literal","value":"family_star"},{"type":"literal","value":"fan_focus"},{"type":"literal","value":"fan_indirect"},{"type":"literal","value":"farsight_digital"},{"type":"literal","value":"fast_forward"},{"type":"literal","value":"fast_rewind"},{"type":"literal","value":"fastfood"},{"type":"literal","value":"faucet"},{"type":"literal","value":"favorite"},{"type":"literal","value":"favorite_border"},{"type":"literal","value":"fax"},{"type":"literal","value":"feature_search"},{"type":"literal","value":"featured_play_list"},{"type":"literal","value":"featured_seasonal_and_gifts"},{"type":"literal","value":"featured_video"},{"type":"literal","value":"feedback"},{"type":"literal","value":"female"},{"type":"literal","value":"femur"},{"type":"literal","value":"femur_alt"},{"type":"literal","value":"fence"},{"type":"literal","value":"fertile"},{"type":"literal","value":"festival"},{"type":"literal","value":"fiber_dvr"},{"type":"literal","value":"fiber_manual_record"},{"type":"literal","value":"fiber_new"},{"type":"literal","value":"fiber_pin"},{"type":"literal","value":"fiber_smart_record"},{"type":"literal","value":"file_copy"},{"type":"literal","value":"file_copy_off"},{"type":"literal","value":"file_download"},{"type":"literal","value":"file_download_done"},{"type":"literal","value":"file_download_off"},{"type":"literal","value":"file_export"},{"type":"literal","value":"file_json"},{"type":"literal","value":"file_map"},{"type":"literal","value":"file_map_stack"},{"type":"literal","value":"file_open"},{"type":"literal","value":"file_png"},{"type":"literal","value":"file_present"},{"type":"literal","value":"file_save"},{"type":"literal","value":"file_save_off"},{"type":"literal","value":"file_upload"},{"type":"literal","value":"file_upload_off"},{"type":"literal","value":"files"},{"type":"literal","value":"filter_1"},{"type":"literal","value":"filter_2"},{"type":"literal","value":"filter_3"},{"type":"literal","value":"filter_4"},{"type":"literal","value":"filter_5"},{"type":"literal","value":"filter_6"},{"type":"literal","value":"filter_7"},{"type":"literal","value":"filter_8"},{"type":"literal","value":"filter_9"},{"type":"literal","value":"filter_9_plus"},{"type":"literal","value":"filter_alt"},{"type":"literal","value":"filter_alt_off"},{"type":"literal","value":"filter_arrow_right"},{"type":"literal","value":"filter_b_and_w"},{"type":"literal","value":"filter_center_focus"},{"type":"literal","value":"filter_drama"},{"type":"literal","value":"filter_frames"},{"type":"literal","value":"filter_hdr"},{"type":"literal","value":"filter_list"},{"type":"literal","value":"filter_list_alt"},{"type":"literal","value":"filter_list_off"},{"type":"literal","value":"filter_none"},{"type":"literal","value":"filter_retrolux"},{"type":"literal","value":"filter_tilt_shift"},{"type":"literal","value":"filter_vintage"},{"type":"literal","value":"finance"},{"type":"literal","value":"finance_chip"},{"type":"literal","value":"finance_mode"},{"type":"literal","value":"find_in_page"},{"type":"literal","value":"find_replace"},{"type":"literal","value":"fingerprint_off"},{"type":"literal","value":"fire_extinguisher"},{"type":"literal","value":"fire_hydrant"},{"type":"literal","value":"fire_hydrant_alt"},{"type":"literal","value":"fire_truck"},{"type":"literal","value":"first_page"},{"type":"literal","value":"fit_page"},{"type":"literal","value":"fit_page_height"},{"type":"literal","value":"fit_page_width"},{"type":"literal","value":"fit_screen"},{"type":"literal","value":"fit_width"},{"type":"literal","value":"fitbit"},{"type":"literal","value":"fitness_center"},{"type":"literal","value":"fitness_tracker"},{"type":"literal","value":"fitness_trackers"},{"type":"literal","value":"flag_2"},{"type":"literal","value":"flag_check"},{"type":"literal","value":"flag_circle"},{"type":"literal","value":"flaky"},{"type":"literal","value":"flare"},{"type":"literal","value":"flash_auto"},{"type":"literal","value":"flash_off"},{"type":"literal","value":"flash_on"},{"type":"literal","value":"flashlight_off"},{"type":"literal","value":"flashlight_on"},{"type":"literal","value":"flatware"},{"type":"literal","value":"flex_direction"},{"type":"literal","value":"flex_no_wrap"},{"type":"literal","value":"flex_wrap"},{"type":"literal","value":"flight"},{"type":"literal","value":"flight_class"},{"type":"literal","value":"flight_land"},{"type":"literal","value":"flight_takeoff"},{"type":"literal","value":"flights_and_hotels"},{"type":"literal","value":"flip_camera_android"},{"type":"literal","value":"flip_camera_ios"},{"type":"literal","value":"flip_to_back"},{"type":"literal","value":"flip_to_front"},{"type":"literal","value":"float_landscape_2"},{"type":"literal","value":"float_portrait_2"},{"type":"literal","value":"flood"},{"type":"literal","value":"floor"},{"type":"literal","value":"floor_lamp"},{"type":"literal","value":"flowsheet"},{"type":"literal","value":"fluid"},{"type":"literal","value":"fluid_balance"},{"type":"literal","value":"fluid_med"},{"type":"literal","value":"fluorescent"},{"type":"literal","value":"flutter"},{"type":"literal","value":"flutter_dash"},{"type":"literal","value":"flyover"},{"type":"literal","value":"fmd_bad"},{"type":"literal","value":"fmd_good"},{"type":"literal","value":"foggy"},{"type":"literal","value":"folded_hands"},{"type":"literal","value":"folder_check"},{"type":"literal","value":"folder_check_2"},{"type":"literal","value":"folder_code"},{"type":"literal","value":"folder_copy"},{"type":"literal","value":"folder_data"},{"type":"literal","value":"folder_delete"},{"type":"literal","value":"folder_eye"},{"type":"literal","value":"folder_info"},{"type":"literal","value":"folder_limited"},{"type":"literal","value":"folder_managed"},{"type":"literal","value":"folder_match"},{"type":"literal","value":"folder_off"},{"type":"literal","value":"folder_open"},{"type":"literal","value":"folder_shared"},{"type":"literal","value":"folder_special"},{"type":"literal","value":"folder_supervised"},{"type":"literal","value":"folder_zip"},{"type":"literal","value":"follow_the_signs"},{"type":"literal","value":"font_download"},{"type":"literal","value":"font_download_off"},{"type":"literal","value":"food_bank"},{"type":"literal","value":"foot_bones"},{"type":"literal","value":"footprint"},{"type":"literal","value":"for_you"},{"type":"literal","value":"forest"},{"type":"literal","value":"fork_left"},{"type":"literal","value":"fork_right"},{"type":"literal","value":"fork_spoon"},{"type":"literal","value":"forklift"},{"type":"literal","value":"format_align_center"},{"type":"literal","value":"format_align_justify"},{"type":"literal","value":"format_align_left"},{"type":"literal","value":"format_align_right"},{"type":"literal","value":"format_bold"},{"type":"literal","value":"format_clear"},{"type":"literal","value":"format_color_fill"},{"type":"literal","value":"format_color_reset"},{"type":"literal","value":"format_color_text"},{"type":"literal","value":"format_h1"},{"type":"literal","value":"format_h2"},{"type":"literal","value":"format_h3"},{"type":"literal","value":"format_h4"},{"type":"literal","value":"format_h5"},{"type":"literal","value":"format_h6"},{"type":"literal","value":"format_image_left"},{"type":"literal","value":"format_image_right"},{"type":"literal","value":"format_indent_decrease"},{"type":"literal","value":"format_indent_increase"},{"type":"literal","value":"format_ink_highlighter"},{"type":"literal","value":"format_italic"},{"type":"literal","value":"format_letter_spacing"},{"type":"literal","value":"format_letter_spacing_2"},{"type":"literal","value":"format_letter_spacing_standard"},{"type":"literal","value":"format_letter_spacing_wide"},{"type":"literal","value":"format_letter_spacing_wider"},{"type":"literal","value":"format_line_spacing"},{"type":"literal","value":"format_list_bulleted"},{"type":"literal","value":"format_list_bulleted_add"},{"type":"literal","value":"format_list_numbered"},{"type":"literal","value":"format_list_numbered_rtl"},{"type":"literal","value":"format_overline"},{"type":"literal","value":"format_paint"},{"type":"literal","value":"format_paragraph"},{"type":"literal","value":"format_quote"},{"type":"literal","value":"format_quote_off"},{"type":"literal","value":"format_shapes"},{"type":"literal","value":"format_size"},{"type":"literal","value":"format_strikethrough"},{"type":"literal","value":"format_text_clip"},{"type":"literal","value":"format_text_overflow"},{"type":"literal","value":"format_text_wrap"},{"type":"literal","value":"format_textdirection_l_to_r"},{"type":"literal","value":"format_textdirection_r_to_l"},{"type":"literal","value":"format_textdirection_vertical"},{"type":"literal","value":"format_underlined"},{"type":"literal","value":"format_underlined_squiggle"},{"type":"literal","value":"forms_add_on"},{"type":"literal","value":"forms_apps_script"},{"type":"literal","value":"fort"},{"type":"literal","value":"forum"},{"type":"literal","value":"forward_10"},{"type":"literal","value":"forward_30"},{"type":"literal","value":"forward_5"},{"type":"literal","value":"forward_circle"},{"type":"literal","value":"forward_media"},{"type":"literal","value":"forward_to_inbox"},{"type":"literal","value":"foundation"},{"type":"literal","value":"fragrance"},{"type":"literal","value":"frame_inspect"},{"type":"literal","value":"frame_person"},{"type":"literal","value":"frame_person_mic"},{"type":"literal","value":"frame_person_off"},{"type":"literal","value":"frame_reload"},{"type":"literal","value":"frame_source"},{"type":"literal","value":"free_breakfast"},{"type":"literal","value":"free_cancellation"},{"type":"literal","value":"front_hand"},{"type":"literal","value":"front_loader"},{"type":"literal","value":"full_coverage"},{"type":"literal","value":"full_hd"},{"type":"literal","value":"full_stacked_bar_chart"},{"type":"literal","value":"fullscreen_exit"},{"type":"literal","value":"fullscreen_portrait"},{"type":"literal","value":"functions"},{"type":"literal","value":"funicular"},{"type":"literal","value":"g_mobiledata"},{"type":"literal","value":"g_mobiledata_badge"},{"type":"literal","value":"g_translate"},{"type":"literal","value":"gallery_thumbnail"},{"type":"literal","value":"gamepad"},{"type":"literal","value":"games"},{"type":"literal","value":"garage"},{"type":"literal","value":"garage_check"},{"type":"literal","value":"garage_door"},{"type":"literal","value":"garage_home"},{"type":"literal","value":"garage_money"},{"type":"literal","value":"garden_cart"},{"type":"literal","value":"gas_meter"},{"type":"literal","value":"gastroenterology"},{"type":"literal","value":"gate"},{"type":"literal","value":"gavel"},{"type":"literal","value":"general_device"},{"type":"literal","value":"generating_tokens"},{"type":"literal","value":"genetics"},{"type":"literal","value":"genres"},{"type":"literal","value":"gesture"},{"type":"literal","value":"gesture_select"},{"type":"literal","value":"get_app"},{"type":"literal","value":"gif"},{"type":"literal","value":"gif_2"},{"type":"literal","value":"gif_box"},{"type":"literal","value":"girl"},{"type":"literal","value":"gite"},{"type":"literal","value":"glass_cup"},{"type":"literal","value":"globe_asia"},{"type":"literal","value":"globe_book"},{"type":"literal","value":"globe_location_pin"},{"type":"literal","value":"globe_uk"},{"type":"literal","value":"glucose"},{"type":"literal","value":"glyphs"},{"type":"literal","value":"go_to_line"},{"type":"literal","value":"golf_course"},{"type":"literal","value":"gondola_lift"},{"type":"literal","value":"google_home_devices"},{"type":"literal","value":"google_tv_remote"},{"type":"literal","value":"google_wifi"},{"type":"literal","value":"gpp_bad"},{"type":"literal","value":"gpp_good"},{"type":"literal","value":"gpp_maybe"},{"type":"literal","value":"gps_fixed"},{"type":"literal","value":"gps_not_fixed"},{"type":"literal","value":"gps_off"},{"type":"literal","value":"grade"},{"type":"literal","value":"gradient"},{"type":"literal","value":"grading"},{"type":"literal","value":"grain"},{"type":"literal","value":"graph_1"},{"type":"literal","value":"graph_2"},{"type":"literal","value":"graph_3"},{"type":"literal","value":"graph_4"},{"type":"literal","value":"graph_5"},{"type":"literal","value":"graph_6"},{"type":"literal","value":"graph_7"},{"type":"literal","value":"graphic_eq"},{"type":"literal","value":"grass"},{"type":"literal","value":"grid_3x3"},{"type":"literal","value":"grid_3x3_off"},{"type":"literal","value":"grid_4x4"},{"type":"literal","value":"grid_goldenratio"},{"type":"literal","value":"grid_guides"},{"type":"literal","value":"grid_off"},{"type":"literal","value":"grid_on"},{"type":"literal","value":"grid_view"},{"type":"literal","value":"grocery"},{"type":"literal","value":"group_add"},{"type":"literal","value":"group_off"},{"type":"literal","value":"group_remove"},{"type":"literal","value":"group_search"},{"type":"literal","value":"group_work"},{"type":"literal","value":"grouped_bar_chart"},{"type":"literal","value":"groups"},{"type":"literal","value":"groups_2"},{"type":"literal","value":"groups_3"},{"type":"literal","value":"guardian"},{"type":"literal","value":"gynecology"},{"type":"literal","value":"h_mobiledata"},{"type":"literal","value":"h_mobiledata_badge"},{"type":"literal","value":"h_plus_mobiledata"},{"type":"literal","value":"h_plus_mobiledata_badge"},{"type":"literal","value":"hail"},{"type":"literal","value":"hallway"},{"type":"literal","value":"hanami_dango"},{"type":"literal","value":"hand_bones"},{"type":"literal","value":"hand_gesture"},{"type":"literal","value":"hand_gesture_off"},{"type":"literal","value":"hand_meal"},{"type":"literal","value":"hand_package"},{"type":"literal","value":"handheld_controller"},{"type":"literal","value":"handshake"},{"type":"literal","value":"handyman"},{"type":"literal","value":"hangout_video"},{"type":"literal","value":"hangout_video_off"},{"type":"literal","value":"hard_disk"},{"type":"literal","value":"hard_drive"},{"type":"literal","value":"hard_drive_2"},{"type":"literal","value":"hardware"},{"type":"literal","value":"hd"},{"type":"literal","value":"hdr_auto"},{"type":"literal","value":"hdr_auto_select"},{"type":"literal","value":"hdr_enhanced_select"},{"type":"literal","value":"hdr_off"},{"type":"literal","value":"hdr_off_select"},{"type":"literal","value":"hdr_on"},{"type":"literal","value":"hdr_on_select"},{"type":"literal","value":"hdr_plus"},{"type":"literal","value":"hdr_plus_off"},{"type":"literal","value":"hdr_strong"},{"type":"literal","value":"hdr_weak"},{"type":"literal","value":"head_mounted_device"},{"type":"literal","value":"headphones_battery"},{"type":"literal","value":"headset_mic"},{"type":"literal","value":"headset_off"},{"type":"literal","value":"healing"},{"type":"literal","value":"health_and_beauty"},{"type":"literal","value":"health_and_safety"},{"type":"literal","value":"health_cross"},{"type":"literal","value":"health_metrics"},{"type":"literal","value":"heap_snapshot_large"},{"type":"literal","value":"heap_snapshot_multiple"},{"type":"literal","value":"heap_snapshot_thumbnail"},{"type":"literal","value":"hearing"},{"type":"literal","value":"hearing_aid"},{"type":"literal","value":"hearing_aid_disabled"},{"type":"literal","value":"hearing_aid_disabled_left"},{"type":"literal","value":"hearing_aid_left"},{"type":"literal","value":"hearing_disabled"},{"type":"literal","value":"heart_broken"},{"type":"literal","value":"heart_check"},{"type":"literal","value":"heart_minus"},{"type":"literal","value":"heart_plus"},{"type":"literal","value":"heart_smile"},{"type":"literal","value":"heat"},{"type":"literal","value":"heat_pump"},{"type":"literal","value":"heat_pump_balance"},{"type":"literal","value":"helicopter"},{"type":"literal","value":"help"},{"type":"literal","value":"help_center"},{"type":"literal","value":"help_clinic"},{"type":"literal","value":"help_outline"},{"type":"literal","value":"hematology"},{"type":"literal","value":"hevc"},{"type":"literal","value":"hide_image"},{"type":"literal","value":"hide_source"},{"type":"literal","value":"high_chair"},{"type":"literal","value":"high_density"},{"type":"literal","value":"high_quality"},{"type":"literal","value":"high_res"},{"type":"literal","value":"highlight"},{"type":"literal","value":"highlight_alt"},{"type":"literal","value":"highlight_keyboard_focus"},{"type":"literal","value":"highlight_mouse_cursor"},{"type":"literal","value":"highlight_off"},{"type":"literal","value":"highlight_text_cursor"},{"type":"literal","value":"highlighter_size_1"},{"type":"literal","value":"highlighter_size_2"},{"type":"literal","value":"highlighter_size_3"},{"type":"literal","value":"highlighter_size_4"},{"type":"literal","value":"highlighter_size_5"},{"type":"literal","value":"hiking"},{"type":"literal","value":"history_2"},{"type":"literal","value":"history_edu"},{"type":"literal","value":"history_off"},{"type":"literal","value":"history_toggle_off"},{"type":"literal","value":"hive"},{"type":"literal","value":"hls"},{"type":"literal","value":"hls_off"},{"type":"literal","value":"holiday_village"},{"type":"literal","value":"home"},{"type":"literal","value":"home_and_garden"},{"type":"literal","value":"home_app_logo"},{"type":"literal","value":"home_filled"},{"type":"literal","value":"home_health"},{"type":"literal","value":"home_improvement_and_tools"},{"type":"literal","value":"home_iot_device"},{"type":"literal","value":"home_max"},{"type":"literal","value":"home_max_dots"},{"type":"literal","value":"home_mini"},{"type":"literal","value":"home_pin"},{"type":"literal","value":"home_repair_service"},{"type":"literal","value":"home_speaker"},{"type":"literal","value":"home_storage"},{"type":"literal","value":"home_work"},{"type":"literal","value":"horizontal_distribute"},{"type":"literal","value":"horizontal_rule"},{"type":"literal","value":"horizontal_split"},{"type":"literal","value":"hot_tub"},{"type":"literal","value":"hotel"},{"type":"literal","value":"hotel_class"},{"type":"literal","value":"hourglass_arrow_down"},{"type":"literal","value":"hourglass_arrow_up"},{"type":"literal","value":"hourglass_bottom"},{"type":"literal","value":"hourglass_disabled"},{"type":"literal","value":"hourglass_empty"},{"type":"literal","value":"hourglass_full"},{"type":"literal","value":"hourglass_pause"},{"type":"literal","value":"hourglass_top"},{"type":"literal","value":"house_siding"},{"type":"literal","value":"house_with_shield"},{"type":"literal","value":"houseboat"},{"type":"literal","value":"household_supplies"},{"type":"literal","value":"hov"},{"type":"literal","value":"how_to_reg"},{"type":"literal","value":"how_to_vote"},{"type":"literal","value":"hr_resting"},{"type":"literal","value":"https"},{"type":"literal","value":"hub"},{"type":"literal","value":"humerus"},{"type":"literal","value":"humerus_alt"},{"type":"literal","value":"humidity_high"},{"type":"literal","value":"humidity_indoor"},{"type":"literal","value":"humidity_low"},{"type":"literal","value":"humidity_mid"},{"type":"literal","value":"humidity_percentage"},{"type":"literal","value":"hvac"},{"type":"literal","value":"hvac_max_defrost"},{"type":"literal","value":"ice_skating"},{"type":"literal","value":"icecream"},{"type":"literal","value":"id_card"},{"type":"literal","value":"identity_aware_proxy"},{"type":"literal","value":"identity_platform"},{"type":"literal","value":"ifl"},{"type":"literal","value":"iframe_off"},{"type":"literal","value":"image_arrow_up"},{"type":"literal","value":"image_aspect_ratio"},{"type":"literal","value":"image_inset"},{"type":"literal","value":"image_not_supported"},{"type":"literal","value":"image_search"},{"type":"literal","value":"imagesearch_roller"},{"type":"literal","value":"imagesmode"},{"type":"literal","value":"immunology"},{"type":"literal","value":"import_contacts"},{"type":"literal","value":"import_export"},{"type":"literal","value":"important_devices"},{"type":"literal","value":"in_home_mode"},{"type":"literal","value":"inactive_order"},{"type":"literal","value":"inbox"},{"type":"literal","value":"inbox_customize"},{"type":"literal","value":"inbox_text"},{"type":"literal","value":"inbox_text_asterisk"},{"type":"literal","value":"inbox_text_person"},{"type":"literal","value":"inbox_text_share"},{"type":"literal","value":"incomplete_circle"},{"type":"literal","value":"indeterminate_check_box"},{"type":"literal","value":"indeterminate_question_box"},{"type":"literal","value":"info_i"},{"type":"literal","value":"info_outline"},{"type":"literal","value":"infrared"},{"type":"literal","value":"ink_eraser"},{"type":"literal","value":"ink_eraser_off"},{"type":"literal","value":"ink_highlighter"},{"type":"literal","value":"ink_highlighter_move"},{"type":"literal","value":"ink_marker"},{"type":"literal","value":"ink_pen"},{"type":"literal","value":"ink_selection"},{"type":"literal","value":"inpatient"},{"type":"literal","value":"input_circle"},{"type":"literal","value":"insert_chart"},{"type":"literal","value":"insert_chart_outlined"},{"type":"literal","value":"insert_comment"},{"type":"literal","value":"insert_drive_file"},{"type":"literal","value":"insert_emoticon"},{"type":"literal","value":"insert_invitation"},{"type":"literal","value":"insert_link"},{"type":"literal","value":"insert_page_break"},{"type":"literal","value":"insert_photo"},{"type":"literal","value":"insert_text"},{"type":"literal","value":"insights"},{"type":"literal","value":"install_desktop"},{"type":"literal","value":"install_mobile"},{"type":"literal","value":"instant_mix"},{"type":"literal","value":"integration_instructions"},{"type":"literal","value":"interactive_space"},{"type":"literal","value":"interests"},{"type":"literal","value":"interpreter_mode"},{"type":"literal","value":"inventory"},{"type":"literal","value":"inventory_2"},{"type":"literal","value":"invert_colors"},{"type":"literal","value":"invert_colors_off"},{"type":"literal","value":"ios_share"},{"type":"literal","value":"iron"},{"type":"literal","value":"iso"},{"type":"literal","value":"jamboard_kiosk"},{"type":"literal","value":"japanese_curry"},{"type":"literal","value":"japanese_flag"},{"type":"literal","value":"javascript"},{"type":"literal","value":"join_full"},{"type":"literal","value":"join_inner"},{"type":"literal","value":"join_left"},{"type":"literal","value":"join_right"},{"type":"literal","value":"joystick"},{"type":"literal","value":"jump_to_element"},{"type":"literal","value":"kanji_alcohol"},{"type":"literal","value":"kayaking"},{"type":"literal","value":"kebab_dining"},{"type":"literal","value":"keep"},{"type":"literal","value":"keep_off"},{"type":"literal","value":"keep_public"},{"type":"literal","value":"kettle"},{"type":"literal","value":"key_off"},{"type":"literal","value":"key_vertical"},{"type":"literal","value":"key_visualizer"},{"type":"literal","value":"keyboard_alt"},{"type":"literal","value":"keyboard_arrow_down"},{"type":"literal","value":"keyboard_arrow_left"},{"type":"literal","value":"keyboard_arrow_right"},{"type":"literal","value":"keyboard_arrow_up"},{"type":"literal","value":"keyboard_backspace"},{"type":"literal","value":"keyboard_capslock"},{"type":"literal","value":"keyboard_capslock_badge"},{"type":"literal","value":"keyboard_command_key"},{"type":"literal","value":"keyboard_control_key"},{"type":"literal","value":"keyboard_double_arrow_down"},{"type":"literal","value":"keyboard_double_arrow_left"},{"type":"literal","value":"keyboard_double_arrow_right"},{"type":"literal","value":"keyboard_double_arrow_up"},{"type":"literal","value":"keyboard_external_input"},{"type":"literal","value":"keyboard_full"},{"type":"literal","value":"keyboard_hide"},{"type":"literal","value":"keyboard_keys"},{"type":"literal","value":"keyboard_lock"},{"type":"literal","value":"keyboard_lock_off"},{"type":"literal","value":"keyboard_off"},{"type":"literal","value":"keyboard_onscreen"},{"type":"literal","value":"keyboard_option_key"},{"type":"literal","value":"keyboard_previous_language"},{"type":"literal","value":"keyboard_return"},{"type":"literal","value":"keyboard_tab"},{"type":"literal","value":"keyboard_tab_rtl"},{"type":"literal","value":"keyboard_voice"},{"type":"literal","value":"kid_star"},{"type":"literal","value":"king_bed"},{"type":"literal","value":"kitchen"},{"type":"literal","value":"kitesurfing"},{"type":"literal","value":"lab_panel"},{"type":"literal","value":"lab_profile"},{"type":"literal","value":"lab_research"},{"type":"literal","value":"label_important"},{"type":"literal","value":"label_important_outline"},{"type":"literal","value":"label_off"},{"type":"literal","value":"labs"},{"type":"literal","value":"lan"},{"type":"literal","value":"landscape_2"},{"type":"literal","value":"landscape_2_edit"},{"type":"literal","value":"landscape_2_off"},{"type":"literal","value":"landslide"},{"type":"literal","value":"language"},{"type":"literal","value":"language_chinese_array"},{"type":"literal","value":"language_chinese_cangjie"},{"type":"literal","value":"language_chinese_dayi"},{"type":"literal","value":"language_chinese_pinyin"},{"type":"literal","value":"language_chinese_quick"},{"type":"literal","value":"language_chinese_wubi"},{"type":"literal","value":"language_french"},{"type":"literal","value":"language_gb_english"},{"type":"literal","value":"language_international"},{"type":"literal","value":"language_japanese_kana"},{"type":"literal","value":"language_korean_latin"},{"type":"literal","value":"language_pinyin"},{"type":"literal","value":"language_spanish"},{"type":"literal","value":"language_us"},{"type":"literal","value":"language_us_colemak"},{"type":"literal","value":"language_us_dvorak"},{"type":"literal","value":"laps"},{"type":"literal","value":"laptop"},{"type":"literal","value":"laptop_car"},{"type":"literal","value":"laptop_chromebook"},{"type":"literal","value":"laptop_mac"},{"type":"literal","value":"laptop_windows"},{"type":"literal","value":"lasso_select"},{"type":"literal","value":"last_page"},{"type":"literal","value":"launch"},{"type":"literal","value":"laundry"},{"type":"literal","value":"layers"},{"type":"literal","value":"layers_clear"},{"type":"literal","value":"lda"},{"type":"literal","value":"leaderboard"},{"type":"literal","value":"leak_add"},{"type":"literal","value":"leak_remove"},{"type":"literal","value":"left_click"},{"type":"literal","value":"left_panel_close"},{"type":"literal","value":"left_panel_open"},{"type":"literal","value":"legend_toggle"},{"type":"literal","value":"lens"},{"type":"literal","value":"lens_blur"},{"type":"literal","value":"letter_switch"},{"type":"literal","value":"library_add"},{"type":"literal","value":"library_add_check"},{"type":"literal","value":"library_books"},{"type":"literal","value":"library_music"},{"type":"literal","value":"license"},{"type":"literal","value":"lift_to_talk"},{"type":"literal","value":"light_group"},{"type":"literal","value":"light_mode"},{"type":"literal","value":"light_off"},{"type":"literal","value":"lightbulb_2"},{"type":"literal","value":"lightbulb_circle"},{"type":"literal","value":"lightbulb_outline"},{"type":"literal","value":"lightning_stand"},{"type":"literal","value":"line_axis"},{"type":"literal","value":"line_curve"},{"type":"literal","value":"line_end"},{"type":"literal","value":"line_end_arrow"},{"type":"literal","value":"line_end_arrow_notch"},{"type":"literal","value":"line_end_circle"},{"type":"literal","value":"line_end_diamond"},{"type":"literal","value":"line_end_square"},{"type":"literal","value":"line_start"},{"type":"literal","value":"line_start_arrow"},{"type":"literal","value":"line_start_arrow_notch"},{"type":"literal","value":"line_start_circle"},{"type":"literal","value":"line_start_diamond"},{"type":"literal","value":"line_start_square"},{"type":"literal","value":"line_style"},{"type":"literal","value":"line_weight"},{"type":"literal","value":"linear_scale"},{"type":"literal","value":"link_off"},{"type":"literal","value":"linked_camera"},{"type":"literal","value":"linked_services"},{"type":"literal","value":"liquor"},{"type":"literal","value":"list_alt"},{"type":"literal","value":"list_alt_add"},{"type":"literal","value":"list_alt_check"},{"type":"literal","value":"lists"},{"type":"literal","value":"live_help"},{"type":"literal","value":"live_tv"},{"type":"literal","value":"living"},{"type":"literal","value":"local_activity"},{"type":"literal","value":"local_airport"},{"type":"literal","value":"local_atm"},{"type":"literal","value":"local_bar"},{"type":"literal","value":"local_cafe"},{"type":"literal","value":"local_car_wash"},{"type":"literal","value":"local_convenience_store"},{"type":"literal","value":"local_dining"},{"type":"literal","value":"local_drink"},{"type":"literal","value":"local_fire_department"},{"type":"literal","value":"local_florist"},{"type":"literal","value":"local_gas_station"},{"type":"literal","value":"local_grocery_store"},{"type":"literal","value":"local_hospital"},{"type":"literal","value":"local_hotel"},{"type":"literal","value":"local_laundry_service"},{"type":"literal","value":"local_library"},{"type":"literal","value":"local_mall"},{"type":"literal","value":"local_movies"},{"type":"literal","value":"local_offer"},{"type":"literal","value":"local_parking"},{"type":"literal","value":"local_pharmacy"},{"type":"literal","value":"local_phone"},{"type":"literal","value":"local_pizza"},{"type":"literal","value":"local_play"},{"type":"literal","value":"local_police"},{"type":"literal","value":"local_post_office"},{"type":"literal","value":"local_printshop"},{"type":"literal","value":"local_see"},{"type":"literal","value":"local_shipping"},{"type":"literal","value":"local_taxi"},{"type":"literal","value":"location_away"},{"type":"literal","value":"location_chip"},{"type":"literal","value":"location_city"},{"type":"literal","value":"location_disabled"},{"type":"literal","value":"location_home"},{"type":"literal","value":"location_off"},{"type":"literal","value":"location_on"},{"type":"literal","value":"location_pin"},{"type":"literal","value":"location_searching"},{"type":"literal","value":"lock_clock"},{"type":"literal","value":"lock_open"},{"type":"literal","value":"lock_open_circle"},{"type":"literal","value":"lock_open_right"},{"type":"literal","value":"lock_outline"},{"type":"literal","value":"lock_person"},{"type":"literal","value":"lock_reset"},{"type":"literal","value":"login"},{"type":"literal","value":"logo_dev"},{"type":"literal","value":"logout"},{"type":"literal","value":"looks"},{"type":"literal","value":"looks_3"},{"type":"literal","value":"looks_4"},{"type":"literal","value":"looks_5"},{"type":"literal","value":"looks_6"},{"type":"literal","value":"looks_one"},{"type":"literal","value":"looks_two"},{"type":"literal","value":"loop"},{"type":"literal","value":"low_density"},{"type":"literal","value":"low_priority"},{"type":"literal","value":"loyalty"},{"type":"literal","value":"lte_mobiledata"},{"type":"literal","value":"lte_mobiledata_badge"},{"type":"literal","value":"lte_plus_mobiledata"},{"type":"literal","value":"lte_plus_mobiledata_badge"},{"type":"literal","value":"luggage"},{"type":"literal","value":"lunch_dining"},{"type":"literal","value":"lyrics"},{"type":"literal","value":"macro_auto"},{"type":"literal","value":"macro_off"},{"type":"literal","value":"magnification_large"},{"type":"literal","value":"magnification_small"},{"type":"literal","value":"magnify_docked"},{"type":"literal","value":"magnify_fullscreen"},{"type":"literal","value":"mail_asterisk"},{"type":"literal","value":"mail_lock"},{"type":"literal","value":"mail_off"},{"type":"literal","value":"mail_outline"},{"type":"literal","value":"mail_shield"},{"type":"literal","value":"male"},{"type":"literal","value":"man"},{"type":"literal","value":"man_2"},{"type":"literal","value":"man_3"},{"type":"literal","value":"man_4"},{"type":"literal","value":"manage_accounts"},{"type":"literal","value":"manage_history"},{"type":"literal","value":"manage_search"},{"type":"literal","value":"manga"},{"type":"literal","value":"manufacturing"},{"type":"literal","value":"map_pin_heart"},{"type":"literal","value":"map_pin_review"},{"type":"literal","value":"map_search"},{"type":"literal","value":"maps_home_work"},{"type":"literal","value":"maps_ugc"},{"type":"literal","value":"mark_as_unread"},{"type":"literal","value":"mark_chat_read"},{"type":"literal","value":"mark_chat_unread"},{"type":"literal","value":"mark_email_read"},{"type":"literal","value":"mark_email_unread"},{"type":"literal","value":"mark_unread_chat_alt"},{"type":"literal","value":"markdown"},{"type":"literal","value":"markdown_copy"},{"type":"literal","value":"markdown_paste"},{"type":"literal","value":"markunread"},{"type":"literal","value":"markunread_mailbox"},{"type":"literal","value":"masked_transitions"},{"type":"literal","value":"masked_transitions_add"},{"type":"literal","value":"masks"},{"type":"literal","value":"massage"},{"type":"literal","value":"match_case"},{"type":"literal","value":"match_case_off"},{"type":"literal","value":"match_word"},{"type":"literal","value":"matter"},{"type":"literal","value":"maximize"},{"type":"literal","value":"meal_dinner"},{"type":"literal","value":"meal_lunch"},{"type":"literal","value":"measuring_tape"},{"type":"literal","value":"media_bluetooth_off"},{"type":"literal","value":"media_bluetooth_on"},{"type":"literal","value":"media_link"},{"type":"literal","value":"media_output"},{"type":"literal","value":"media_output_off"},{"type":"literal","value":"mediation"},{"type":"literal","value":"medical_information"},{"type":"literal","value":"medical_mask"},{"type":"literal","value":"medical_services"},{"type":"literal","value":"medication"},{"type":"literal","value":"medication_liquid"},{"type":"literal","value":"meeting_room"},{"type":"literal","value":"memory"},{"type":"literal","value":"memory_alt"},{"type":"literal","value":"menstrual_health"},{"type":"literal","value":"menu_book"},{"type":"literal","value":"menu_book_2"},{"type":"literal","value":"menu_open"},{"type":"literal","value":"merge_type"},{"type":"literal","value":"metabolism"},{"type":"literal","value":"mfg_nest_yale_lock"},{"type":"literal","value":"mic_alert"},{"type":"literal","value":"mic_double"},{"type":"literal","value":"mic_external_off"},{"type":"literal","value":"mic_external_on"},{"type":"literal","value":"mic_none"},{"type":"literal","value":"mic_off"},{"type":"literal","value":"microbiology"},{"type":"literal","value":"microwave_gen"},{"type":"literal","value":"military_tech"},{"type":"literal","value":"mimo"},{"type":"literal","value":"mimo_disconnect"},{"type":"literal","value":"mindfulness"},{"type":"literal","value":"minimize"},{"type":"literal","value":"minor_crash"},{"type":"literal","value":"mintmark"},{"type":"literal","value":"miscellaneous_services"},{"type":"literal","value":"missed_video_call"},{"type":"literal","value":"missing_controller"},{"type":"literal","value":"mist"},{"type":"literal","value":"mitre"},{"type":"literal","value":"mixture_med"},{"type":"literal","value":"mms"},{"type":"literal","value":"mobile"},{"type":"literal","value":"mobile_2"},{"type":"literal","value":"mobile_3"},{"type":"literal","value":"mobile_alert"},{"type":"literal","value":"mobile_arrow_down"},{"type":"literal","value":"mobile_arrow_right"},{"type":"literal","value":"mobile_arrow_up_right"},{"type":"literal","value":"mobile_block"},{"type":"literal","value":"mobile_camera"},{"type":"literal","value":"mobile_camera_front"},{"type":"literal","value":"mobile_camera_rear"},{"type":"literal","value":"mobile_cancel"},{"type":"literal","value":"mobile_cast"},{"type":"literal","value":"mobile_charge"},{"type":"literal","value":"mobile_chat"},{"type":"literal","value":"mobile_check"},{"type":"literal","value":"mobile_code"},{"type":"literal","value":"mobile_dots"},{"type":"literal","value":"mobile_friendly"},{"type":"literal","value":"mobile_gear"},{"type":"literal","value":"mobile_hand"},{"type":"literal","value":"mobile_hand_left"},{"type":"literal","value":"mobile_hand_left_off"},{"type":"literal","value":"mobile_hand_off"},{"type":"literal","value":"mobile_info"},{"type":"literal","value":"mobile_landscape"},{"type":"literal","value":"mobile_layout"},{"type":"literal","value":"mobile_lock_landscape"},{"type":"literal","value":"mobile_lock_portrait"},{"type":"literal","value":"mobile_loupe"},{"type":"literal","value":"mobile_menu"},{"type":"literal","value":"mobile_off"},{"type":"literal","value":"mobile_question"},{"type":"literal","value":"mobile_rotate"},{"type":"literal","value":"mobile_rotate_lock"},{"type":"literal","value":"mobile_screen_share"},{"type":"literal","value":"mobile_screensaver"},{"type":"literal","value":"mobile_sensor_hi"},{"type":"literal","value":"mobile_sensor_lo"},{"type":"literal","value":"mobile_share"},{"type":"literal","value":"mobile_share_stack"},{"type":"literal","value":"mobile_sound"},{"type":"literal","value":"mobile_sound_2"},{"type":"literal","value":"mobile_sound_off"},{"type":"literal","value":"mobile_speaker"},{"type":"literal","value":"mobile_text"},{"type":"literal","value":"mobile_text_2"},{"type":"literal","value":"mobile_theft"},{"type":"literal","value":"mobile_ticket"},{"type":"literal","value":"mobile_vibrate"},{"type":"literal","value":"mobile_wrench"},{"type":"literal","value":"mobiledata_off"},{"type":"literal","value":"mode_comment"},{"type":"literal","value":"mode_cool"},{"type":"literal","value":"mode_cool_off"},{"type":"literal","value":"mode_dual"},{"type":"literal","value":"mode_edit"},{"type":"literal","value":"mode_edit_outline"},{"type":"literal","value":"mode_fan"},{"type":"literal","value":"mode_fan_off"},{"type":"literal","value":"mode_heat"},{"type":"literal","value":"mode_heat_cool"},{"type":"literal","value":"mode_heat_off"},{"type":"literal","value":"mode_night"},{"type":"literal","value":"mode_of_travel"},{"type":"literal","value":"mode_off_on"},{"type":"literal","value":"mode_standby"},{"type":"literal","value":"model_training"},{"type":"literal","value":"modeling"},{"type":"literal","value":"monetization_on"},{"type":"literal","value":"money"},{"type":"literal","value":"money_bag"},{"type":"literal","value":"money_off"},{"type":"literal","value":"money_off_csred"},{"type":"literal","value":"money_range"},{"type":"literal","value":"monitor"},{"type":"literal","value":"monitor_heart"},{"type":"literal","value":"monitor_weight"},{"type":"literal","value":"monitor_weight_gain"},{"type":"literal","value":"monitor_weight_loss"},{"type":"literal","value":"monitoring"},{"type":"literal","value":"monochrome_photos"},{"type":"literal","value":"monorail"},{"type":"literal","value":"mood"},{"type":"literal","value":"mood_bad"},{"type":"literal","value":"moon_stars"},{"type":"literal","value":"mop"},{"type":"literal","value":"moped_package"},{"type":"literal","value":"more"},{"type":"literal","value":"more_down"},{"type":"literal","value":"more_horiz"},{"type":"literal","value":"more_time"},{"type":"literal","value":"more_up"},{"type":"literal","value":"more_vert"},{"type":"literal","value":"mosque"},{"type":"literal","value":"motion_blur"},{"type":"literal","value":"motion_mode"},{"type":"literal","value":"motion_photos_auto"},{"type":"literal","value":"motion_photos_off"},{"type":"literal","value":"motion_photos_on"},{"type":"literal","value":"motion_photos_pause"},{"type":"literal","value":"motion_photos_paused"},{"type":"literal","value":"motion_play"},{"type":"literal","value":"motion_sensor_active"},{"type":"literal","value":"motion_sensor_alert"},{"type":"literal","value":"motion_sensor_idle"},{"type":"literal","value":"motion_sensor_urgent"},{"type":"literal","value":"mountain_flag"},{"type":"literal","value":"mountain_steam"},{"type":"literal","value":"mouse"},{"type":"literal","value":"mouse_lock"},{"type":"literal","value":"mouse_lock_off"},{"type":"literal","value":"move_down"},{"type":"literal","value":"move_group"},{"type":"literal","value":"move_item"},{"type":"literal","value":"move_location"},{"type":"literal","value":"move_selection_down"},{"type":"literal","value":"move_selection_left"},{"type":"literal","value":"move_selection_right"},{"type":"literal","value":"move_selection_up"},{"type":"literal","value":"move_to_inbox"},{"type":"literal","value":"move_up"},{"type":"literal","value":"moved_location"},{"type":"literal","value":"movie"},{"type":"literal","value":"movie_creation"},{"type":"literal","value":"movie_edit"},{"type":"literal","value":"movie_filter"},{"type":"literal","value":"movie_info"},{"type":"literal","value":"movie_off"},{"type":"literal","value":"movie_speaker"},{"type":"literal","value":"moving"},{"type":"literal","value":"moving_beds"},{"type":"literal","value":"moving_ministry"},{"type":"literal","value":"mp"},{"type":"literal","value":"multicooker"},{"type":"literal","value":"multiline_chart"},{"type":"literal","value":"multimodal_hand_eye"},{"type":"literal","value":"multiple_airports"},{"type":"literal","value":"multiple_stop"},{"type":"literal","value":"museum"},{"type":"literal","value":"music_cast"},{"type":"literal","value":"music_history"},{"type":"literal","value":"music_note"},{"type":"literal","value":"music_note_add"},{"type":"literal","value":"music_off"},{"type":"literal","value":"music_video"},{"type":"literal","value":"my_location"},{"type":"literal","value":"mystery"},{"type":"literal","value":"nat"},{"type":"literal","value":"nature"},{"type":"literal","value":"nature_people"},{"type":"literal","value":"navigate_before"},{"type":"literal","value":"navigate_next"},{"type":"literal","value":"near_me"},{"type":"literal","value":"near_me_disabled"},{"type":"literal","value":"nearby"},{"type":"literal","value":"nearby_error"},{"type":"literal","value":"nearby_off"},{"type":"literal","value":"nephrology"},{"type":"literal","value":"nest_audio"},{"type":"literal","value":"nest_cam_floodlight"},{"type":"literal","value":"nest_cam_indoor"},{"type":"literal","value":"nest_cam_iq"},{"type":"literal","value":"nest_cam_iq_outdoor"},{"type":"literal","value":"nest_cam_magnet_mount"},{"type":"literal","value":"nest_cam_outdoor"},{"type":"literal","value":"nest_cam_stand"},{"type":"literal","value":"nest_cam_wall_mount"},{"type":"literal","value":"nest_cam_wired_stand"},{"type":"literal","value":"nest_clock_farsight_analog"},{"type":"literal","value":"nest_clock_farsight_digital"},{"type":"literal","value":"nest_connect"},{"type":"literal","value":"nest_detect"},{"type":"literal","value":"nest_display"},{"type":"literal","value":"nest_display_max"},{"type":"literal","value":"nest_doorbell_visitor"},{"type":"literal","value":"nest_eco_leaf"},{"type":"literal","value":"nest_farsight_cool"},{"type":"literal","value":"nest_farsight_dual"},{"type":"literal","value":"nest_farsight_eco"},{"type":"literal","value":"nest_farsight_heat"},{"type":"literal","value":"nest_farsight_seasonal"},{"type":"literal","value":"nest_farsight_weather"},{"type":"literal","value":"nest_found_savings"},{"type":"literal","value":"nest_heat_link_e"},{"type":"literal","value":"nest_heat_link_gen_3"},{"type":"literal","value":"nest_hello_doorbell"},{"type":"literal","value":"nest_mini"},{"type":"literal","value":"nest_multi_room"},{"type":"literal","value":"nest_protect"},{"type":"literal","value":"nest_remote_comfort_sensor"},{"type":"literal","value":"nest_secure_alarm"},{"type":"literal","value":"nest_sunblock"},{"type":"literal","value":"nest_tag"},{"type":"literal","value":"nest_thermostat"},{"type":"literal","value":"nest_thermostat_e_eu"},{"type":"literal","value":"nest_thermostat_gen_3"},{"type":"literal","value":"nest_thermostat_sensor"},{"type":"literal","value":"nest_thermostat_sensor_eu"},{"type":"literal","value":"nest_thermostat_zirconium_eu"},{"type":"literal","value":"nest_true_radiant"},{"type":"literal","value":"nest_wake_on_approach"},{"type":"literal","value":"nest_wake_on_press"},{"type":"literal","value":"nest_wifi_point"},{"type":"literal","value":"nest_wifi_pro"},{"type":"literal","value":"nest_wifi_pro_2"},{"type":"literal","value":"nest_wifi_router"},{"type":"literal","value":"network_cell"},{"type":"literal","value":"network_check"},{"type":"literal","value":"network_intel_node"},{"type":"literal","value":"network_intelligence"},{"type":"literal","value":"network_intelligence_history"},{"type":"literal","value":"network_intelligence_update"},{"type":"literal","value":"network_locked"},{"type":"literal","value":"network_manage"},{"type":"literal","value":"network_node"},{"type":"literal","value":"network_ping"},{"type":"literal","value":"network_wifi"},{"type":"literal","value":"network_wifi_1_bar"},{"type":"literal","value":"network_wifi_1_bar_locked"},{"type":"literal","value":"network_wifi_2_bar"},{"type":"literal","value":"network_wifi_2_bar_locked"},{"type":"literal","value":"network_wifi_3_bar"},{"type":"literal","value":"network_wifi_3_bar_locked"},{"type":"literal","value":"network_wifi_locked"},{"type":"literal","value":"neurology"},{"type":"literal","value":"new_label"},{"type":"literal","value":"new_releases"},{"type":"literal","value":"new_window"},{"type":"literal","value":"news"},{"type":"literal","value":"newsmode"},{"type":"literal","value":"newsstand"},{"type":"literal","value":"next_plan"},{"type":"literal","value":"next_week"},{"type":"literal","value":"nfc"},{"type":"literal","value":"nfc_off"},{"type":"literal","value":"night_shelter"},{"type":"literal","value":"night_sight_auto"},{"type":"literal","value":"night_sight_auto_off"},{"type":"literal","value":"night_sight_max"},{"type":"literal","value":"nightlife"},{"type":"literal","value":"nightlight"},{"type":"literal","value":"nightlight_round"},{"type":"literal","value":"nights_stay"},{"type":"literal","value":"no_accounts"},{"type":"literal","value":"no_adult_content"},{"type":"literal","value":"no_backpack"},{"type":"literal","value":"no_cell"},{"type":"literal","value":"no_crash"},{"type":"literal","value":"no_drinks"},{"type":"literal","value":"no_encryption"},{"type":"literal","value":"no_encryption_gmailerrorred"},{"type":"literal","value":"no_flash"},{"type":"literal","value":"no_food"},{"type":"literal","value":"no_luggage"},{"type":"literal","value":"no_meals"},{"type":"literal","value":"no_meals_ouline"},{"type":"literal","value":"no_meeting_room"},{"type":"literal","value":"no_photography"},{"type":"literal","value":"no_sim"},{"type":"literal","value":"no_sound"},{"type":"literal","value":"no_stroller"},{"type":"literal","value":"no_transfer"},{"type":"literal","value":"noise_aware"},{"type":"literal","value":"noise_control_off"},{"type":"literal","value":"noise_control_on"},{"type":"literal","value":"nordic_walking"},{"type":"literal","value":"north"},{"type":"literal","value":"north_east"},{"type":"literal","value":"north_west"},{"type":"literal","value":"not_accessible"},{"type":"literal","value":"not_accessible_forward"},{"type":"literal","value":"not_interested"},{"type":"literal","value":"not_listed_location"},{"type":"literal","value":"not_started"},{"type":"literal","value":"note_add"},{"type":"literal","value":"note_alt"},{"type":"literal","value":"note_stack"},{"type":"literal","value":"note_stack_add"},{"type":"literal","value":"notes"},{"type":"literal","value":"notification_add"},{"type":"literal","value":"notification_important"},{"type":"literal","value":"notification_multiple"},{"type":"literal","value":"notification_settings"},{"type":"literal","value":"notification_sound"},{"type":"literal","value":"notifications"},{"type":"literal","value":"notifications_active"},{"type":"literal","value":"notifications_none"},{"type":"literal","value":"notifications_off"},{"type":"literal","value":"notifications_paused"},{"type":"literal","value":"notifications_unread"},{"type":"literal","value":"nutrition"},{"type":"literal","value":"ods"},{"type":"literal","value":"odt"},{"type":"literal","value":"offline_bolt"},{"type":"literal","value":"offline_pin"},{"type":"literal","value":"offline_pin_off"},{"type":"literal","value":"offline_share"},{"type":"literal","value":"oil_barrel"},{"type":"literal","value":"okonomiyaki"},{"type":"literal","value":"on_device_training"},{"type":"literal","value":"on_hub_device"},{"type":"literal","value":"oncology"},{"type":"literal","value":"ondemand_video"},{"type":"literal","value":"online_prediction"},{"type":"literal","value":"onsen"},{"type":"literal","value":"open_in_browser"},{"type":"literal","value":"open_in_full"},{"type":"literal","value":"open_in_new"},{"type":"literal","value":"open_in_new_down"},{"type":"literal","value":"open_in_new_off"},{"type":"literal","value":"open_jam"},{"type":"literal","value":"open_run"},{"type":"literal","value":"open_with"},{"type":"literal","value":"ophthalmology"},{"type":"literal","value":"oral_disease"},{"type":"literal","value":"orbit"},{"type":"literal","value":"order_approve"},{"type":"literal","value":"order_play"},{"type":"literal","value":"orders"},{"type":"literal","value":"orthopedics"},{"type":"literal","value":"other_admission"},{"type":"literal","value":"other_houses"},{"type":"literal","value":"outbound"},{"type":"literal","value":"outbox"},{"type":"literal","value":"outbox_alt"},{"type":"literal","value":"outdoor_garden"},{"type":"literal","value":"outdoor_grill"},{"type":"literal","value":"outgoing_mail"},{"type":"literal","value":"outlet"},{"type":"literal","value":"outlined_flag"},{"type":"literal","value":"outpatient"},{"type":"literal","value":"outpatient_med"},{"type":"literal","value":"output_circle"},{"type":"literal","value":"oven_gen"},{"type":"literal","value":"overview"},{"type":"literal","value":"overview_key"},{"type":"literal","value":"owl"},{"type":"literal","value":"oxygen_saturation"},{"type":"literal","value":"p2p"},{"type":"literal","value":"pace"},{"type":"literal","value":"pacemaker"},{"type":"literal","value":"package_2"},{"type":"literal","value":"padel"},{"type":"literal","value":"page_control"},{"type":"literal","value":"page_footer"},{"type":"literal","value":"page_header"},{"type":"literal","value":"page_info"},{"type":"literal","value":"page_menu_ios"},{"type":"literal","value":"pageless"},{"type":"literal","value":"pages"},{"type":"literal","value":"pageview"},{"type":"literal","value":"paid"},{"type":"literal","value":"pallet"},{"type":"literal","value":"pan_tool"},{"type":"literal","value":"pan_tool_alt"},{"type":"literal","value":"pan_zoom"},{"type":"literal","value":"panorama"},{"type":"literal","value":"panorama_fish_eye"},{"type":"literal","value":"panorama_horizontal"},{"type":"literal","value":"panorama_horizontal_select"},{"type":"literal","value":"panorama_photosphere"},{"type":"literal","value":"panorama_photosphere_select"},{"type":"literal","value":"panorama_vertical"},{"type":"literal","value":"panorama_vertical_select"},{"type":"literal","value":"panorama_wide_angle"},{"type":"literal","value":"panorama_wide_angle_select"},{"type":"literal","value":"paragliding"},{"type":"literal","value":"parent_child_dining"},{"type":"literal","value":"park"},{"type":"literal","value":"parking_meter"},{"type":"literal","value":"parking_sign"},{"type":"literal","value":"parking_valet"},{"type":"literal","value":"partly_cloudy_day"},{"type":"literal","value":"partly_cloudy_night"},{"type":"literal","value":"partner_exchange"},{"type":"literal","value":"partner_heart"},{"type":"literal","value":"partner_reports"},{"type":"literal","value":"party_mode"},{"type":"literal","value":"passkey"},{"type":"literal","value":"password"},{"type":"literal","value":"password_2"},{"type":"literal","value":"password_2_off"},{"type":"literal","value":"patient_list"},{"type":"literal","value":"pause_circle"},{"type":"literal","value":"pause_circle_filled"},{"type":"literal","value":"pause_circle_outline"},{"type":"literal","value":"pause_presentation"},{"type":"literal","value":"payment"},{"type":"literal","value":"payment_arrow_down"},{"type":"literal","value":"payment_card"},{"type":"literal","value":"payments"},{"type":"literal","value":"pedal_bike"},{"type":"literal","value":"pediatrics"},{"type":"literal","value":"pen_size_1"},{"type":"literal","value":"pen_size_2"},{"type":"literal","value":"pen_size_3"},{"type":"literal","value":"pen_size_4"},{"type":"literal","value":"pen_size_5"},{"type":"literal","value":"pending"},{"type":"literal","value":"pending_actions"},{"type":"literal","value":"people"},{"type":"literal","value":"people_alt"},{"type":"literal","value":"people_outline"},{"type":"literal","value":"percent_discount"},{"type":"literal","value":"pergola"},{"type":"literal","value":"perm_camera_mic"},{"type":"literal","value":"perm_contact_calendar"},{"type":"literal","value":"perm_data_setting"},{"type":"literal","value":"perm_device_information"},{"type":"literal","value":"perm_identity"},{"type":"literal","value":"perm_media"},{"type":"literal","value":"perm_phone_msg"},{"type":"literal","value":"perm_scan_wifi"},{"type":"literal","value":"person_2"},{"type":"literal","value":"person_3"},{"type":"literal","value":"person_4"},{"type":"literal","value":"person_add"},{"type":"literal","value":"person_add_alt"},{"type":"literal","value":"person_add_alt_1"},{"type":"literal","value":"person_add_disabled"},{"type":"literal","value":"person_alert"},{"type":"literal","value":"person_apron"},{"type":"literal","value":"person_book"},{"type":"literal","value":"person_cancel"},{"type":"literal","value":"person_celebrate"},{"type":"literal","value":"person_check"},{"type":"literal","value":"person_edit"},{"type":"literal","value":"person_heart"},{"type":"literal","value":"person_off"},{"type":"literal","value":"person_outline"},{"type":"literal","value":"person_pin"},{"type":"literal","value":"person_pin_circle"},{"type":"literal","value":"person_play"},{"type":"literal","value":"person_raised_hand"},{"type":"literal","value":"person_remove"},{"type":"literal","value":"person_remove_alt_1"},{"type":"literal","value":"person_search"},{"type":"literal","value":"person_shield"},{"type":"literal","value":"personal_bag"},{"type":"literal","value":"personal_bag_off"},{"type":"literal","value":"personal_bag_question"},{"type":"literal","value":"personal_injury"},{"type":"literal","value":"personal_places"},{"type":"literal","value":"personal_video"},{"type":"literal","value":"pest_control"},{"type":"literal","value":"pest_control_rodent"},{"type":"literal","value":"pet_supplies"},{"type":"literal","value":"pets"},{"type":"literal","value":"phishing"},{"type":"literal","value":"phone_android"},{"type":"literal","value":"phone_bluetooth_speaker"},{"type":"literal","value":"phone_callback"},{"type":"literal","value":"phone_disabled"},{"type":"literal","value":"phone_enabled"},{"type":"literal","value":"phone_forwarded"},{"type":"literal","value":"phone_in_talk"},{"type":"literal","value":"phone_iphone"},{"type":"literal","value":"phone_locked"},{"type":"literal","value":"phone_missed"},{"type":"literal","value":"phone_paused"},{"type":"literal","value":"phonelink"},{"type":"literal","value":"phonelink_erase"},{"type":"literal","value":"phonelink_lock"},{"type":"literal","value":"phonelink_off"},{"type":"literal","value":"phonelink_ring"},{"type":"literal","value":"phonelink_setup"},{"type":"literal","value":"photo_album"},{"type":"literal","value":"photo_auto_merge"},{"type":"literal","value":"photo_camera"},{"type":"literal","value":"photo_camera_back"},{"type":"literal","value":"photo_camera_front"},{"type":"literal","value":"photo_filter"},{"type":"literal","value":"photo_frame"},{"type":"literal","value":"photo_library"},{"type":"literal","value":"photo_prints"},{"type":"literal","value":"photo_size_select_actual"},{"type":"literal","value":"photo_size_select_large"},{"type":"literal","value":"photo_size_select_small"},{"type":"literal","value":"php"},{"type":"literal","value":"physical_therapy"},{"type":"literal","value":"piano"},{"type":"literal","value":"piano_off"},{"type":"literal","value":"pickleball"},{"type":"literal","value":"picture_as_pdf"},{"type":"literal","value":"picture_in_picture"},{"type":"literal","value":"picture_in_picture_alt"},{"type":"literal","value":"picture_in_picture_center"},{"type":"literal","value":"picture_in_picture_large"},{"type":"literal","value":"picture_in_picture_medium"},{"type":"literal","value":"picture_in_picture_mobile"},{"type":"literal","value":"picture_in_picture_off"},{"type":"literal","value":"picture_in_picture_small"},{"type":"literal","value":"pie_chart"},{"type":"literal","value":"pie_chart_outline"},{"type":"literal","value":"pie_chart_outlined"},{"type":"literal","value":"pill_off"},{"type":"literal","value":"pin_drop"},{"type":"literal","value":"pin_end"},{"type":"literal","value":"pin_invoke"},{"type":"literal","value":"pinboard"},{"type":"literal","value":"pinboard_unread"},{"type":"literal","value":"pinch"},{"type":"literal","value":"pinch_zoom_in"},{"type":"literal","value":"pinch_zoom_out"},{"type":"literal","value":"pip_exit"},{"type":"literal","value":"pivot_table_chart"},{"type":"literal","value":"pix"},{"type":"literal","value":"place"},{"type":"literal","value":"place_item"},{"type":"literal","value":"plagiarism"},{"type":"literal","value":"plane_contrails"},{"type":"literal","value":"planet"},{"type":"literal","value":"planner_banner_ad_pt"},{"type":"literal","value":"planner_review"},{"type":"literal","value":"play_arrow"},{"type":"literal","value":"play_circle"},{"type":"literal","value":"play_circle_filled"},{"type":"literal","value":"play_circle_outline"},{"type":"literal","value":"play_disabled"},{"type":"literal","value":"play_for_work"},{"type":"literal","value":"play_lesson"},{"type":"literal","value":"play_pause"},{"type":"literal","value":"playground"},{"type":"literal","value":"playground_2"},{"type":"literal","value":"playing_cards"},{"type":"literal","value":"playlist_add"},{"type":"literal","value":"playlist_add_check"},{"type":"literal","value":"playlist_add_check_circle"},{"type":"literal","value":"playlist_add_circle"},{"type":"literal","value":"playlist_play"},{"type":"literal","value":"playlist_remove"},{"type":"literal","value":"plug_connect"},{"type":"literal","value":"plumbing"},{"type":"literal","value":"plus_one"},{"type":"literal","value":"podcasts"},{"type":"literal","value":"podiatry"},{"type":"literal","value":"podium"},{"type":"literal","value":"point_of_sale"},{"type":"literal","value":"point_scan"},{"type":"literal","value":"poker_chip"},{"type":"literal","value":"policy_alert"},{"type":"literal","value":"poll"},{"type":"literal","value":"polymer"},{"type":"literal","value":"pool"},{"type":"literal","value":"portable_wifi_off"},{"type":"literal","value":"position_bottom_left"},{"type":"literal","value":"position_bottom_right"},{"type":"literal","value":"position_top_right"},{"type":"literal","value":"post"},{"type":"literal","value":"post_add"},{"type":"literal","value":"potted_plant"},{"type":"literal","value":"power_input"},{"type":"literal","value":"power_off"},{"type":"literal","value":"power_settings_circle"},{"type":"literal","value":"power_settings_new"},{"type":"literal","value":"prayer_times"},{"type":"literal","value":"precision_manufacturing"},{"type":"literal","value":"pregnancy"},{"type":"literal","value":"pregnant_woman"},{"type":"literal","value":"preliminary"},{"type":"literal","value":"prescriptions"},{"type":"literal","value":"present_to_all"},{"type":"literal","value":"preview"},{"type":"literal","value":"preview_off"},{"type":"literal","value":"price_change"},{"type":"literal","value":"price_check"},{"type":"literal","value":"print_add"},{"type":"literal","value":"print_connect"},{"type":"literal","value":"print_disabled"},{"type":"literal","value":"print_error"},{"type":"literal","value":"print_lock"},{"type":"literal","value":"priority"},{"type":"literal","value":"priority_high"},{"type":"literal","value":"privacy"},{"type":"literal","value":"privacy_tip"},{"type":"literal","value":"private_connectivity"},{"type":"literal","value":"problem"},{"type":"literal","value":"procedure"},{"type":"literal","value":"process_chart"},{"type":"literal","value":"production_quantity_limits"},{"type":"literal","value":"productivity"},{"type":"literal","value":"progress_activity"},{"type":"literal","value":"prompt_suggestion"},{"type":"literal","value":"propane"},{"type":"literal","value":"propane_tank"},{"type":"literal","value":"psychiatry"},{"type":"literal","value":"psychology"},{"type":"literal","value":"psychology_alt"},{"type":"literal","value":"public_off"},{"type":"literal","value":"publish"},{"type":"literal","value":"published_with_changes"},{"type":"literal","value":"pulmonology"},{"type":"literal","value":"pulse_alert"},{"type":"literal","value":"punch_clock"},{"type":"literal","value":"push_pin"},{"type":"literal","value":"qr_code"},{"type":"literal","value":"qr_code_2"},{"type":"literal","value":"qr_code_2_add"},{"type":"literal","value":"qr_code_scanner"},{"type":"literal","value":"query_builder"},{"type":"literal","value":"query_stats"},{"type":"literal","value":"question_answer"},{"type":"literal","value":"question_exchange"},{"type":"literal","value":"question_mark"},{"type":"literal","value":"queue"},{"type":"literal","value":"queue_music"},{"type":"literal","value":"queue_play_next"},{"type":"literal","value":"quick_phrases"},{"type":"literal","value":"quick_reference"},{"type":"literal","value":"quick_reference_all"},{"type":"literal","value":"quick_reorder"},{"type":"literal","value":"quickreply"},{"type":"literal","value":"quiz"},{"type":"literal","value":"r_mobiledata"},{"type":"literal","value":"radar"},{"type":"literal","value":"radio_button_checked"},{"type":"literal","value":"radio_button_partial"},{"type":"literal","value":"radio_button_unchecked"},{"type":"literal","value":"radiology"},{"type":"literal","value":"railway_alert"},{"type":"literal","value":"railway_alert_2"},{"type":"literal","value":"rainy"},{"type":"literal","value":"rainy_heavy"},{"type":"literal","value":"rainy_light"},{"type":"literal","value":"rainy_snow"},{"type":"literal","value":"ramen_dining"},{"type":"literal","value":"ramp_left"},{"type":"literal","value":"ramp_right"},{"type":"literal","value":"range_hood"},{"type":"literal","value":"rate_review"},{"type":"literal","value":"raven"},{"type":"literal","value":"raw_off"},{"type":"literal","value":"raw_on"},{"type":"literal","value":"read_more"},{"type":"literal","value":"readiness_score"},{"type":"literal","value":"real_estate_agent"},{"type":"literal","value":"rear_camera"},{"type":"literal","value":"rebase"},{"type":"literal","value":"rebase_edit"},{"type":"literal","value":"receipt_long"},{"type":"literal","value":"receipt_long_off"},{"type":"literal","value":"recent_actors"},{"type":"literal","value":"recent_patient"},{"type":"literal","value":"recenter"},{"type":"literal","value":"recommend"},{"type":"literal","value":"record_voice_over"},{"type":"literal","value":"recycling"},{"type":"literal","value":"redeem"},{"type":"literal","value":"redo"},{"type":"literal","value":"reduce_capacity"},{"type":"literal","value":"regular_expression"},{"type":"literal","value":"relax"},{"type":"literal","value":"release_alert"},{"type":"literal","value":"remember_me"},{"type":"literal","value":"reminder"},{"type":"literal","value":"remote_gen"},{"type":"literal","value":"remove_circle"},{"type":"literal","value":"remove_circle_outline"},{"type":"literal","value":"remove_done"},{"type":"literal","value":"remove_from_queue"},{"type":"literal","value":"remove_moderator"},{"type":"literal","value":"remove_red_eye"},{"type":"literal","value":"remove_road"},{"type":"literal","value":"remove_selection"},{"type":"literal","value":"remove_shopping_cart"},{"type":"literal","value":"reopen_window"},{"type":"literal","value":"reorder"},{"type":"literal","value":"repartition"},{"type":"literal","value":"repeat_on"},{"type":"literal","value":"repeat_one"},{"type":"literal","value":"repeat_one_on"},{"type":"literal","value":"replace_audio"},{"type":"literal","value":"replace_image"},{"type":"literal","value":"replace_video"},{"type":"literal","value":"replay"},{"type":"literal","value":"replay_10"},{"type":"literal","value":"replay_30"},{"type":"literal","value":"replay_5"},{"type":"literal","value":"replay_circle_filled"},{"type":"literal","value":"reply"},{"type":"literal","value":"reply_all"},{"type":"literal","value":"report_gmailerrorred"},{"type":"literal","value":"report_off"},{"type":"literal","value":"report_problem"},{"type":"literal","value":"request_page"},{"type":"literal","value":"request_quote"},{"type":"literal","value":"reset_brightness"},{"type":"literal","value":"reset_exposure"},{"type":"literal","value":"reset_focus"},{"type":"literal","value":"reset_image"},{"type":"literal","value":"reset_iso"},{"type":"literal","value":"reset_settings"},{"type":"literal","value":"reset_shadow"},{"type":"literal","value":"reset_shutter_speed"},{"type":"literal","value":"reset_tv"},{"type":"literal","value":"reset_white_balance"},{"type":"literal","value":"reset_wrench"},{"type":"literal","value":"respiratory_rate"},{"type":"literal","value":"responsive_layout"},{"type":"literal","value":"rest_area"},{"type":"literal","value":"restart_alt"},{"type":"literal","value":"restaurant"},{"type":"literal","value":"restaurant_menu"},{"type":"literal","value":"restore"},{"type":"literal","value":"restore_from_trash"},{"type":"literal","value":"restore_page"},{"type":"literal","value":"resume"},{"type":"literal","value":"reviews"},{"type":"literal","value":"rewarded_ads"},{"type":"literal","value":"rheumatology"},{"type":"literal","value":"rib_cage"},{"type":"literal","value":"rice_bowl"},{"type":"literal","value":"right_click"},{"type":"literal","value":"right_panel_close"},{"type":"literal","value":"right_panel_open"},{"type":"literal","value":"ring_volume"},{"type":"literal","value":"ripples"},{"type":"literal","value":"road"},{"type":"literal","value":"robot"},{"type":"literal","value":"robot_2"},{"type":"literal","value":"rocket"},{"type":"literal","value":"rocket_launch"},{"type":"literal","value":"roller_shades"},{"type":"literal","value":"roller_shades_closed"},{"type":"literal","value":"roller_skating"},{"type":"literal","value":"roofing"},{"type":"literal","value":"room"},{"type":"literal","value":"room_preferences"},{"type":"literal","value":"room_service"},{"type":"literal","value":"rotate_90_degrees_ccw"},{"type":"literal","value":"rotate_90_degrees_cw"},{"type":"literal","value":"rotate_auto"},{"type":"literal","value":"rotate_left"},{"type":"literal","value":"rotate_right"},{"type":"literal","value":"roundabout_left"},{"type":"literal","value":"roundabout_right"},{"type":"literal","value":"rounded_corner"},{"type":"literal","value":"router_off"},{"type":"literal","value":"routine"},{"type":"literal","value":"rowing"},{"type":"literal","value":"rss_feed"},{"type":"literal","value":"rsvp"},{"type":"literal","value":"rtt"},{"type":"literal","value":"rubric"},{"type":"literal","value":"rule"},{"type":"literal","value":"rule_folder"},{"type":"literal","value":"rule_settings"},{"type":"literal","value":"run_circle"},{"type":"literal","value":"running_with_errors"},{"type":"literal","value":"rv_hookup"},{"type":"literal","value":"safety_check"},{"type":"literal","value":"safety_check_off"},{"type":"literal","value":"safety_divider"},{"type":"literal","value":"sailing"},{"type":"literal","value":"salinity"},{"type":"literal","value":"sanitizer"},{"type":"literal","value":"satellite"},{"type":"literal","value":"satellite_alt"},{"type":"literal","value":"sauna"},{"type":"literal","value":"save"},{"type":"literal","value":"save_alt"},{"type":"literal","value":"save_as"},{"type":"literal","value":"save_clock"},{"type":"literal","value":"saved_search"},{"type":"literal","value":"savings"},{"type":"literal","value":"scan"},{"type":"literal","value":"scan_delete"},{"type":"literal","value":"scatter_plot"},{"type":"literal","value":"scene"},{"type":"literal","value":"schedule"},{"type":"literal","value":"schedule_send"},{"type":"literal","value":"schema"},{"type":"literal","value":"school"},{"type":"literal","value":"science"},{"type":"literal","value":"science_off"},{"type":"literal","value":"score"},{"type":"literal","value":"scoreboard"},{"type":"literal","value":"screen_lock_landscape"},{"type":"literal","value":"screen_lock_portrait"},{"type":"literal","value":"screen_lock_rotation"},{"type":"literal","value":"screen_record"},{"type":"literal","value":"screen_rotation"},{"type":"literal","value":"screen_rotation_alt"},{"type":"literal","value":"screen_rotation_up"},{"type":"literal","value":"screen_search_desktop"},{"type":"literal","value":"screen_share"},{"type":"literal","value":"screenshot"},{"type":"literal","value":"screenshot_frame"},{"type":"literal","value":"screenshot_frame_2"},{"type":"literal","value":"screenshot_keyboard"},{"type":"literal","value":"screenshot_monitor"},{"type":"literal","value":"screenshot_region"},{"type":"literal","value":"screenshot_tablet"},{"type":"literal","value":"scrollable_header"},{"type":"literal","value":"scuba_diving"},{"type":"literal","value":"sd"},{"type":"literal","value":"sd_card"},{"type":"literal","value":"sd_card_alert"},{"type":"literal","value":"sd_storage"},{"type":"literal","value":"sdk"},{"type":"literal","value":"search_activity"},{"type":"literal","value":"search_check"},{"type":"literal","value":"search_check_2"},{"type":"literal","value":"search_gear"},{"type":"literal","value":"search_hands_free"},{"type":"literal","value":"search_insights"},{"type":"literal","value":"search_off"},{"type":"literal","value":"seat_cool_left"},{"type":"literal","value":"seat_cool_right"},{"type":"literal","value":"seat_heat_left"},{"type":"literal","value":"seat_heat_right"},{"type":"literal","value":"seat_vent_left"},{"type":"literal","value":"seat_vent_right"},{"type":"literal","value":"security_key"},{"type":"literal","value":"security_update"},{"type":"literal","value":"security_update_good"},{"type":"literal","value":"security_update_warning"},{"type":"literal","value":"segment"},{"type":"literal","value":"select_all"},{"type":"literal","value":"select_check_box"},{"type":"literal","value":"select_to_speak"},{"type":"literal","value":"select_window"},{"type":"literal","value":"select_window_2"},{"type":"literal","value":"select_window_off"},{"type":"literal","value":"self_care"},{"type":"literal","value":"self_improvement"},{"type":"literal","value":"sell"},{"type":"literal","value":"send_and_archive"},{"type":"literal","value":"send_money"},{"type":"literal","value":"send_time_extension"},{"type":"literal","value":"send_to_mobile"},{"type":"literal","value":"sensor_door"},{"type":"literal","value":"sensor_occupied"},{"type":"literal","value":"sensor_window"},{"type":"literal","value":"sensors"},{"type":"literal","value":"sensors_krx"},{"type":"literal","value":"sensors_krx_off"},{"type":"literal","value":"sensors_off"},{"type":"literal","value":"sentiment_calm"},{"type":"literal","value":"sentiment_content"},{"type":"literal","value":"sentiment_dissatisfied"},{"type":"literal","value":"sentiment_excited"},{"type":"literal","value":"sentiment_extremely_dissatisfied"},{"type":"literal","value":"sentiment_frustrated"},{"type":"literal","value":"sentiment_neutral"},{"type":"literal","value":"sentiment_sad"},{"type":"literal","value":"sentiment_satisfied"},{"type":"literal","value":"sentiment_satisfied_alt"},{"type":"literal","value":"sentiment_stressed"},{"type":"literal","value":"sentiment_very_dissatisfied"},{"type":"literal","value":"sentiment_very_satisfied"},{"type":"literal","value":"sentiment_worried"},{"type":"literal","value":"serif"},{"type":"literal","value":"server_person"},{"type":"literal","value":"service_toolbox"},{"type":"literal","value":"set_meal"},{"type":"literal","value":"settings_accessibility"},{"type":"literal","value":"settings_account_box"},{"type":"literal","value":"settings_alert"},{"type":"literal","value":"settings_applications"},{"type":"literal","value":"settings_b_roll"},{"type":"literal","value":"settings_backup_restore"},{"type":"literal","value":"settings_bluetooth"},{"type":"literal","value":"settings_brightness"},{"type":"literal","value":"settings_cell"},{"type":"literal","value":"settings_cinematic_blur"},{"type":"literal","value":"settings_ethernet"},{"type":"literal","value":"settings_heart"},{"type":"literal","value":"settings_input_antenna"},{"type":"literal","value":"settings_input_component"},{"type":"literal","value":"settings_input_composite"},{"type":"literal","value":"settings_input_hdmi"},{"type":"literal","value":"settings_input_svideo"},{"type":"literal","value":"settings_motion_mode"},{"type":"literal","value":"settings_night_sight"},{"type":"literal","value":"settings_overscan"},{"type":"literal","value":"settings_panorama"},{"type":"literal","value":"settings_phone"},{"type":"literal","value":"settings_photo_camera"},{"type":"literal","value":"settings_power"},{"type":"literal","value":"settings_remote"},{"type":"literal","value":"settings_seating"},{"type":"literal","value":"settings_slow_motion"},{"type":"literal","value":"settings_suggest"},{"type":"literal","value":"settings_system_daydream"},{"type":"literal","value":"settings_timelapse"},{"type":"literal","value":"settings_video_camera"},{"type":"literal","value":"settings_voice"},{"type":"literal","value":"settop_component"},{"type":"literal","value":"severe_cold"},{"type":"literal","value":"shadow_add"},{"type":"literal","value":"shadow_minus"},{"type":"literal","value":"shape_line"},{"type":"literal","value":"shapes"},{"type":"literal","value":"share_eta"},{"type":"literal","value":"share_location"},{"type":"literal","value":"share_off"},{"type":"literal","value":"share_reviews"},{"type":"literal","value":"share_windows"},{"type":"literal","value":"shaved_ice"},{"type":"literal","value":"sheets_rtl"},{"type":"literal","value":"shelf_auto_hide"},{"type":"literal","value":"shelf_position"},{"type":"literal","value":"shelves"},{"type":"literal","value":"shield_lock"},{"type":"literal","value":"shield_locked"},{"type":"literal","value":"shield_moon"},{"type":"literal","value":"shield_person"},{"type":"literal","value":"shield_question"},{"type":"literal","value":"shield_toggle"},{"type":"literal","value":"shield_watch"},{"type":"literal","value":"shield_with_heart"},{"type":"literal","value":"shield_with_house"},{"type":"literal","value":"shift_lock"},{"type":"literal","value":"shift_lock_off"},{"type":"literal","value":"shop"},{"type":"literal","value":"shop_2"},{"type":"literal","value":"shop_two"},{"type":"literal","value":"shopping_bag"},{"type":"literal","value":"shopping_bag_speed"},{"type":"literal","value":"shopping_basket"},{"type":"literal","value":"shopping_cart"},{"type":"literal","value":"shopping_cart_checkout"},{"type":"literal","value":"shopping_cart_off"},{"type":"literal","value":"shoppingmode"},{"type":"literal","value":"short_stay"},{"type":"literal","value":"short_text"},{"type":"literal","value":"shortcut"},{"type":"literal","value":"show_chart"},{"type":"literal","value":"shuffle_on"},{"type":"literal","value":"shutter_speed"},{"type":"literal","value":"shutter_speed_add"},{"type":"literal","value":"shutter_speed_minus"},{"type":"literal","value":"sick"},{"type":"literal","value":"side_navigation"},{"type":"literal","value":"sign_language"},{"type":"literal","value":"signal_cellular_0_bar"},{"type":"literal","value":"signal_cellular_1_bar"},{"type":"literal","value":"signal_cellular_2_bar"},{"type":"literal","value":"signal_cellular_3_bar"},{"type":"literal","value":"signal_cellular_4_bar"},{"type":"literal","value":"signal_cellular_add"},{"type":"literal","value":"signal_cellular_alt"},{"type":"literal","value":"signal_cellular_alt_1_bar"},{"type":"literal","value":"signal_cellular_alt_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_0_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_1_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_3_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_4_bar"},{"type":"literal","value":"signal_cellular_no_sim"},{"type":"literal","value":"signal_cellular_nodata"},{"type":"literal","value":"signal_cellular_null"},{"type":"literal","value":"signal_cellular_off"},{"type":"literal","value":"signal_cellular_pause"},{"type":"literal","value":"signal_disconnected"},{"type":"literal","value":"signal_wifi_0_bar"},{"type":"literal","value":"signal_wifi_1_bar"},{"type":"literal","value":"signal_wifi_1_bar_lock"},{"type":"literal","value":"signal_wifi_2_bar"},{"type":"literal","value":"signal_wifi_2_bar_lock"},{"type":"literal","value":"signal_wifi_3_bar"},{"type":"literal","value":"signal_wifi_3_bar_lock"},{"type":"literal","value":"signal_wifi_4_bar"},{"type":"literal","value":"signal_wifi_4_bar_lock"},{"type":"literal","value":"signal_wifi_bad"},{"type":"literal","value":"signal_wifi_connected_no_internet_0"},{"type":"literal","value":"signal_wifi_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_off"},{"type":"literal","value":"signal_wifi_statusbar_1_bar"},{"type":"literal","value":"signal_wifi_statusbar_2_bar"},{"type":"literal","value":"signal_wifi_statusbar_3_bar"},{"type":"literal","value":"signal_wifi_statusbar_4_bar"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_statusbar_not_connected"},{"type":"literal","value":"signal_wifi_statusbar_null"},{"type":"literal","value":"signpost"},{"type":"literal","value":"sim_card"},{"type":"literal","value":"sim_card_alert"},{"type":"literal","value":"sim_card_download"},{"type":"literal","value":"simulation"},{"type":"literal","value":"single_bed"},{"type":"literal","value":"sip"},{"type":"literal","value":"siren"},{"type":"literal","value":"siren_check"},{"type":"literal","value":"siren_open"},{"type":"literal","value":"siren_question"},{"type":"literal","value":"skateboarding"},{"type":"literal","value":"skeleton"},{"type":"literal","value":"skillet"},{"type":"literal","value":"skillet_cooktop"},{"type":"literal","value":"skip_next"},{"type":"literal","value":"skip_previous"},{"type":"literal","value":"skull"},{"type":"literal","value":"skull_list"},{"type":"literal","value":"slab_serif"},{"type":"literal","value":"sledding"},{"type":"literal","value":"sleep_score"},{"type":"literal","value":"slide_library"},{"type":"literal","value":"sliders"},{"type":"literal","value":"slideshow"},{"type":"literal","value":"slow_motion_video"},{"type":"literal","value":"smart_button"},{"type":"literal","value":"smart_card_reader"},{"type":"literal","value":"smart_card_reader_off"},{"type":"literal","value":"smart_display"},{"type":"literal","value":"smart_outlet"},{"type":"literal","value":"smart_screen"},{"type":"literal","value":"smart_toy"},{"type":"literal","value":"smb_share"},{"type":"literal","value":"smoke_free"},{"type":"literal","value":"smoking_rooms"},{"type":"literal","value":"sms"},{"type":"literal","value":"sms_failed"},{"type":"literal","value":"snippet_folder"},{"type":"literal","value":"snooze"},{"type":"literal","value":"snowboarding"},{"type":"literal","value":"snowing"},{"type":"literal","value":"snowing_heavy"},{"type":"literal","value":"snowmobile"},{"type":"literal","value":"snowshoeing"},{"type":"literal","value":"soap"},{"type":"literal","value":"soba"},{"type":"literal","value":"social_distance"},{"type":"literal","value":"social_leaderboard"},{"type":"literal","value":"solar_power"},{"type":"literal","value":"solo_dining"},{"type":"literal","value":"sort_by_alpha"},{"type":"literal","value":"sound_detection_dog_barking"},{"type":"literal","value":"sound_detection_glass_break"},{"type":"literal","value":"sound_detection_loud_sound"},{"type":"literal","value":"sound_sampler"},{"type":"literal","value":"soup_kitchen"},{"type":"literal","value":"source_environment"},{"type":"literal","value":"source_notes"},{"type":"literal","value":"south"},{"type":"literal","value":"south_america"},{"type":"literal","value":"south_east"},{"type":"literal","value":"south_west"},{"type":"literal","value":"spa"},{"type":"literal","value":"space_bar"},{"type":"literal","value":"space_dashboard"},{"type":"literal","value":"spatial_audio"},{"type":"literal","value":"spatial_audio_off"},{"type":"literal","value":"spatial_speaker"},{"type":"literal","value":"spatial_tracking"},{"type":"literal","value":"speaker_group"},{"type":"literal","value":"speaker_notes"},{"type":"literal","value":"speaker_notes_off"},{"type":"literal","value":"speaker_phone"},{"type":"literal","value":"special_character"},{"type":"literal","value":"specific_gravity"},{"type":"literal","value":"speech_to_text"},{"type":"literal","value":"speed"},{"type":"literal","value":"speed_0_25"},{"type":"literal","value":"speed_0_2x"},{"type":"literal","value":"speed_0_5"},{"type":"literal","value":"speed_0_5x"},{"type":"literal","value":"speed_0_75"},{"type":"literal","value":"speed_0_7x"},{"type":"literal","value":"speed_1_2"},{"type":"literal","value":"speed_1_25"},{"type":"literal","value":"speed_1_2x"},{"type":"literal","value":"speed_1_5"},{"type":"literal","value":"speed_1_5x"},{"type":"literal","value":"speed_1_75"},{"type":"literal","value":"speed_1_7x"},{"type":"literal","value":"speed_2x"},{"type":"literal","value":"speed_camera"},{"type":"literal","value":"spellcheck"},{"type":"literal","value":"split_scene"},{"type":"literal","value":"split_scene_down"},{"type":"literal","value":"split_scene_left"},{"type":"literal","value":"split_scene_right"},{"type":"literal","value":"split_scene_up"},{"type":"literal","value":"splitscreen"},{"type":"literal","value":"splitscreen_add"},{"type":"literal","value":"splitscreen_bottom"},{"type":"literal","value":"splitscreen_landscape"},{"type":"literal","value":"splitscreen_left"},{"type":"literal","value":"splitscreen_portrait"},{"type":"literal","value":"splitscreen_right"},{"type":"literal","value":"splitscreen_top"},{"type":"literal","value":"splitscreen_vertical_add"},{"type":"literal","value":"spo2"},{"type":"literal","value":"spoke"},{"type":"literal","value":"sports"},{"type":"literal","value":"sports_and_outdoors"},{"type":"literal","value":"sports_bar"},{"type":"literal","value":"sports_baseball"},{"type":"literal","value":"sports_basketball"},{"type":"literal","value":"sports_cricket"},{"type":"literal","value":"sports_esports"},{"type":"literal","value":"sports_football"},{"type":"literal","value":"sports_golf"},{"type":"literal","value":"sports_gymnastics"},{"type":"literal","value":"sports_handball"},{"type":"literal","value":"sports_hockey"},{"type":"literal","value":"sports_kabaddi"},{"type":"literal","value":"sports_martial_arts"},{"type":"literal","value":"sports_mma"},{"type":"literal","value":"sports_motorsports"},{"type":"literal","value":"sports_rugby"},{"type":"literal","value":"sports_score"},{"type":"literal","value":"sports_soccer"},{"type":"literal","value":"sports_tennis"},{"type":"literal","value":"sports_volleyball"},{"type":"literal","value":"sprint"},{"type":"literal","value":"square_dot"},{"type":"literal","value":"square_foot"},{"type":"literal","value":"ssid_chart"},{"type":"literal","value":"stack_group"},{"type":"literal","value":"stack_hexagon"},{"type":"literal","value":"stack_off"},{"type":"literal","value":"stack_star"},{"type":"literal","value":"stacked_bar_chart"},{"type":"literal","value":"stacked_email"},{"type":"literal","value":"stacked_inbox"},{"type":"literal","value":"stacked_line_chart"},{"type":"literal","value":"stacks"},{"type":"literal","value":"stadia_controller"},{"type":"literal","value":"stadium"},{"type":"literal","value":"stairs_2"},{"type":"literal","value":"star_border"},{"type":"literal","value":"star_border_purple500"},{"type":"literal","value":"star_half"},{"type":"literal","value":"star_outline"},{"type":"literal","value":"star_purple500"},{"type":"literal","value":"star_rate"},{"type":"literal","value":"star_rate_half"},{"type":"literal","value":"star_shine"},{"type":"literal","value":"stars"},{"type":"literal","value":"stars_2"},{"type":"literal","value":"stat_0"},{"type":"literal","value":"stat_1"},{"type":"literal","value":"stat_2"},{"type":"literal","value":"stat_3"},{"type":"literal","value":"stat_minus_1"},{"type":"literal","value":"stat_minus_2"},{"type":"literal","value":"stat_minus_3"},{"type":"literal","value":"stay_current_landscape"},{"type":"literal","value":"stay_current_portrait"},{"type":"literal","value":"stay_primary_landscape"},{"type":"literal","value":"stay_primary_portrait"},{"type":"literal","value":"steering_wheel_heat"},{"type":"literal","value":"step_into"},{"type":"literal","value":"step_out"},{"type":"literal","value":"step_over"},{"type":"literal","value":"steppers"},{"type":"literal","value":"steps"},{"type":"literal","value":"stethoscope_arrow"},{"type":"literal","value":"stethoscope_check"},{"type":"literal","value":"sticky_note"},{"type":"literal","value":"sticky_note_2"},{"type":"literal","value":"stock_media"},{"type":"literal","value":"stockpot"},{"type":"literal","value":"stop_circle"},{"type":"literal","value":"stop_screen_share"},{"type":"literal","value":"store_mall_directory"},{"type":"literal","value":"storm"},{"type":"literal","value":"straight"},{"type":"literal","value":"straighten"},{"type":"literal","value":"strategy"},{"type":"literal","value":"stream"},{"type":"literal","value":"streetview"},{"type":"literal","value":"stress_management"},{"type":"literal","value":"strikethrough_s"},{"type":"literal","value":"stroke_full"},{"type":"literal","value":"stroke_partial"},{"type":"literal","value":"styler"},{"type":"literal","value":"stylus"},{"type":"literal","value":"stylus_brush"},{"type":"literal","value":"stylus_fountain_pen"},{"type":"literal","value":"stylus_highlighter"},{"type":"literal","value":"stylus_laser_pointer"},{"type":"literal","value":"stylus_note"},{"type":"literal","value":"stylus_pen"},{"type":"literal","value":"stylus_pencil"},{"type":"literal","value":"subdirectory_arrow_left"},{"type":"literal","value":"subdirectory_arrow_right"},{"type":"literal","value":"subheader"},{"type":"literal","value":"subject"},{"type":"literal","value":"subscript"},{"type":"literal","value":"subscriptions"},{"type":"literal","value":"subtitles"},{"type":"literal","value":"subtitles_gear"},{"type":"literal","value":"subtitles_off"},{"type":"literal","value":"subway"},{"type":"literal","value":"subway_walk"},{"type":"literal","value":"summarize"},{"type":"literal","value":"sunny"},{"type":"literal","value":"sunny_snowing"},{"type":"literal","value":"superscript"},{"type":"literal","value":"supervised_user_circle"},{"type":"literal","value":"supervised_user_circle_off"},{"type":"literal","value":"supervisor_account"},{"type":"literal","value":"support"},{"type":"literal","value":"support_agent"},{"type":"literal","value":"surfing"},{"type":"literal","value":"surgical"},{"type":"literal","value":"surround_sound"},{"type":"literal","value":"swap_calls"},{"type":"literal","value":"swap_driving_apps"},{"type":"literal","value":"swap_driving_apps_wheel"},{"type":"literal","value":"swap_horiz"},{"type":"literal","value":"swap_horizontal_circle"},{"type":"literal","value":"swap_vert"},{"type":"literal","value":"swap_vertical_circle"},{"type":"literal","value":"sweep"},{"type":"literal","value":"swipe"},{"type":"literal","value":"swipe_down"},{"type":"literal","value":"swipe_down_alt"},{"type":"literal","value":"swipe_left"},{"type":"literal","value":"swipe_left_alt"},{"type":"literal","value":"swipe_right"},{"type":"literal","value":"swipe_right_alt"},{"type":"literal","value":"swipe_up"},{"type":"literal","value":"swipe_up_alt"},{"type":"literal","value":"swipe_vertical"},{"type":"literal","value":"switch_access"},{"type":"literal","value":"switch_access_2"},{"type":"literal","value":"switch_access_3"},{"type":"literal","value":"switch_access_shortcut"},{"type":"literal","value":"switch_access_shortcut_add"},{"type":"literal","value":"switch_account"},{"type":"literal","value":"switch_camera"},{"type":"literal","value":"switch_left"},{"type":"literal","value":"switch_right"},{"type":"literal","value":"switch_video"},{"type":"literal","value":"switches"},{"type":"literal","value":"sword_rose"},{"type":"literal","value":"swords"},{"type":"literal","value":"symptoms"},{"type":"literal","value":"synagogue"},{"type":"literal","value":"sync_alt"},{"type":"literal","value":"sync_arrow_down"},{"type":"literal","value":"sync_arrow_up"},{"type":"literal","value":"sync_desktop"},{"type":"literal","value":"sync_disabled"},{"type":"literal","value":"sync_lock"},{"type":"literal","value":"sync_problem"},{"type":"literal","value":"sync_saved_locally"},{"type":"literal","value":"sync_saved_locally_off"},{"type":"literal","value":"system_security_update"},{"type":"literal","value":"system_security_update_good"},{"type":"literal","value":"system_security_update_warning"},{"type":"literal","value":"system_update"},{"type":"literal","value":"system_update_alt"},{"type":"literal","value":"tab_close"},{"type":"literal","value":"tab_close_inactive"},{"type":"literal","value":"tab_close_right"},{"type":"literal","value":"tab_duplicate"},{"type":"literal","value":"tab_group"},{"type":"literal","value":"tab_inactive"},{"type":"literal","value":"tab_move"},{"type":"literal","value":"tab_new_right"},{"type":"literal","value":"tab_recent"},{"type":"literal","value":"tab_search"},{"type":"literal","value":"tab_unselected"},{"type":"literal","value":"table_bar"},{"type":"literal","value":"table_chart"},{"type":"literal","value":"table_chart_view"},{"type":"literal","value":"table_convert"},{"type":"literal","value":"table_edit"},{"type":"literal","value":"table_eye"},{"type":"literal","value":"table_lamp"},{"type":"literal","value":"table_large"},{"type":"literal","value":"table_restaurant"},{"type":"literal","value":"table_rows"},{"type":"literal","value":"table_rows_narrow"},{"type":"literal","value":"table_sign"},{"type":"literal","value":"table_view"},{"type":"literal","value":"tablet_android"},{"type":"literal","value":"tablet_camera"},{"type":"literal","value":"tablet_mac"},{"type":"literal","value":"tabs"},{"type":"literal","value":"tactic"},{"type":"literal","value":"tag_faces"},{"type":"literal","value":"takeout_dining"},{"type":"literal","value":"takeout_dining_2"},{"type":"literal","value":"tamper_detection_off"},{"type":"literal","value":"tamper_detection_on"},{"type":"literal","value":"tap_and_play"},{"type":"literal","value":"tapas"},{"type":"literal","value":"task"},{"type":"literal","value":"task_alt"},{"type":"literal","value":"tatami_seat"},{"type":"literal","value":"taunt"},{"type":"literal","value":"taxi_alert"},{"type":"literal","value":"team_dashboard"},{"type":"literal","value":"temp_preferences_eco"},{"type":"literal","value":"temple_buddhist"},{"type":"literal","value":"temple_hindu"},{"type":"literal","value":"tenancy"},{"type":"literal","value":"terrain"},{"type":"literal","value":"text_ad"},{"type":"literal","value":"text_compare"},{"type":"literal","value":"text_decrease"},{"type":"literal","value":"text_fields"},{"type":"literal","value":"text_fields_alt"},{"type":"literal","value":"text_format"},{"type":"literal","value":"text_increase"},{"type":"literal","value":"text_rotate_up"},{"type":"literal","value":"text_rotate_vertical"},{"type":"literal","value":"text_rotation_angledown"},{"type":"literal","value":"text_rotation_angleup"},{"type":"literal","value":"text_rotation_down"},{"type":"literal","value":"text_rotation_none"},{"type":"literal","value":"text_select_end"},{"type":"literal","value":"text_select_jump_to_beginning"},{"type":"literal","value":"text_select_jump_to_end"},{"type":"literal","value":"text_select_move_back_character"},{"type":"literal","value":"text_select_move_back_word"},{"type":"literal","value":"text_select_move_down"},{"type":"literal","value":"text_select_move_forward_character"},{"type":"literal","value":"text_select_move_forward_word"},{"type":"literal","value":"text_select_move_up"},{"type":"literal","value":"text_select_start"},{"type":"literal","value":"text_snippet"},{"type":"literal","value":"text_to_speech"},{"type":"literal","value":"text_up"},{"type":"literal","value":"textsms"},{"type":"literal","value":"texture"},{"type":"literal","value":"texture_add"},{"type":"literal","value":"texture_minus"},{"type":"literal","value":"theater_comedy"},{"type":"literal","value":"theaters"},{"type":"literal","value":"thermometer_add"},{"type":"literal","value":"thermometer_gain"},{"type":"literal","value":"thermometer_loss"},{"type":"literal","value":"thermometer_minus"},{"type":"literal","value":"thermostat"},{"type":"literal","value":"thermostat_arrow_down"},{"type":"literal","value":"thermostat_arrow_up"},{"type":"literal","value":"thermostat_auto"},{"type":"literal","value":"thermostat_carbon"},{"type":"literal","value":"things_to_do"},{"type":"literal","value":"thread_unread"},{"type":"literal","value":"threat_intelligence"},{"type":"literal","value":"thumb_down"},{"type":"literal","value":"thumb_down_alt"},{"type":"literal","value":"thumb_down_off_alt"},{"type":"literal","value":"thumb_up"},{"type":"literal","value":"thumb_up_alt"},{"type":"literal","value":"thumb_up_off_alt"},{"type":"literal","value":"thumbnail_bar"},{"type":"literal","value":"thumbs_up_double"},{"type":"literal","value":"thumbs_up_down"},{"type":"literal","value":"thunderstorm"},{"type":"literal","value":"tibia"},{"type":"literal","value":"tibia_alt"},{"type":"literal","value":"tile_large"},{"type":"literal","value":"tile_medium"},{"type":"literal","value":"tile_small"},{"type":"literal","value":"time_auto"},{"type":"literal","value":"time_to_leave"},{"type":"literal","value":"timeline"},{"type":"literal","value":"timer_1"},{"type":"literal","value":"timer_10"},{"type":"literal","value":"timer_10_alt_1"},{"type":"literal","value":"timer_10_select"},{"type":"literal","value":"timer_2"},{"type":"literal","value":"timer_3"},{"type":"literal","value":"timer_3_alt_1"},{"type":"literal","value":"timer_3_select"},{"type":"literal","value":"timer_5"},{"type":"literal","value":"timer_5_shutter"},{"type":"literal","value":"timer_arrow_down"},{"type":"literal","value":"timer_arrow_up"},{"type":"literal","value":"timer_off"},{"type":"literal","value":"timer_pause"},{"type":"literal","value":"timer_play"},{"type":"literal","value":"tips_and_updates"},{"type":"literal","value":"tire_repair"},{"type":"literal","value":"titlecase"},{"type":"literal","value":"toast"},{"type":"literal","value":"toc"},{"type":"literal","value":"today"},{"type":"literal","value":"toggle_off"},{"type":"literal","value":"toggle_on"},{"type":"literal","value":"token"},{"type":"literal","value":"toll"},{"type":"literal","value":"tonality"},{"type":"literal","value":"tonality_2"},{"type":"literal","value":"tools_flat_head"},{"type":"literal","value":"tools_installation_kit"},{"type":"literal","value":"tools_ladder"},{"type":"literal","value":"tools_level"},{"type":"literal","value":"tools_phillips"},{"type":"literal","value":"tools_pliers_wire_stripper"},{"type":"literal","value":"tools_power_drill"},{"type":"literal","value":"tooltip_2"},{"type":"literal","value":"top_panel_close"},{"type":"literal","value":"top_panel_open"},{"type":"literal","value":"topic"},{"type":"literal","value":"total_dissolved_solids"},{"type":"literal","value":"touch_app"},{"type":"literal","value":"touch_double"},{"type":"literal","value":"touch_long"},{"type":"literal","value":"touch_triple"},{"type":"literal","value":"touchpad_mouse"},{"type":"literal","value":"touchpad_mouse_off"},{"type":"literal","value":"tour"},{"type":"literal","value":"toys"},{"type":"literal","value":"toys_and_games"},{"type":"literal","value":"toys_fan"},{"type":"literal","value":"track_changes"},{"type":"literal","value":"trackpad_input"},{"type":"literal","value":"trackpad_input_2"},{"type":"literal","value":"trackpad_input_3"},{"type":"literal","value":"traffic"},{"type":"literal","value":"traffic_jam"},{"type":"literal","value":"trail_length"},{"type":"literal","value":"trail_length_medium"},{"type":"literal","value":"trail_length_short"},{"type":"literal","value":"train"},{"type":"literal","value":"transcribe"},{"type":"literal","value":"transfer_within_a_station"},{"type":"literal","value":"transgender"},{"type":"literal","value":"transit_enterexit"},{"type":"literal","value":"transit_ticket"},{"type":"literal","value":"transition_chop"},{"type":"literal","value":"transition_dissolve"},{"type":"literal","value":"transition_fade"},{"type":"literal","value":"transition_push"},{"type":"literal","value":"transition_slide"},{"type":"literal","value":"translate_indic"},{"type":"literal","value":"transportation"},{"type":"literal","value":"travel"},{"type":"literal","value":"travel_explore"},{"type":"literal","value":"travel_luggage_and_bags"},{"type":"literal","value":"trending_down"},{"type":"literal","value":"trending_flat"},{"type":"literal","value":"trending_up"},{"type":"literal","value":"trip"},{"type":"literal","value":"trip_origin"},{"type":"literal","value":"trolley"},{"type":"literal","value":"trolley_cable_car"},{"type":"literal","value":"troubleshoot"},{"type":"literal","value":"tsunami"},{"type":"literal","value":"tsv"},{"type":"literal","value":"tty"},{"type":"literal","value":"tune"},{"type":"literal","value":"tungsten"},{"type":"literal","value":"turn_left"},{"type":"literal","value":"turn_right"},{"type":"literal","value":"turn_sharp_left"},{"type":"literal","value":"turn_sharp_right"},{"type":"literal","value":"turn_slight_left"},{"type":"literal","value":"turn_slight_right"},{"type":"literal","value":"turned_in"},{"type":"literal","value":"turned_in_not"},{"type":"literal","value":"tv_displays"},{"type":"literal","value":"tv_gen"},{"type":"literal","value":"tv_guide"},{"type":"literal","value":"tv_next"},{"type":"literal","value":"tv_off"},{"type":"literal","value":"tv_options_edit_channels"},{"type":"literal","value":"tv_options_input_settings"},{"type":"literal","value":"tv_remote"},{"type":"literal","value":"tv_signin"},{"type":"literal","value":"tv_with_assistant"},{"type":"literal","value":"two_pager"},{"type":"literal","value":"two_pager_store"},{"type":"literal","value":"two_wheeler"},{"type":"literal","value":"type_specimen"},{"type":"literal","value":"u_turn_left"},{"type":"literal","value":"u_turn_right"},{"type":"literal","value":"udon"},{"type":"literal","value":"ulna_radius"},{"type":"literal","value":"ulna_radius_alt"},{"type":"literal","value":"unarchive"},{"type":"literal","value":"undo"},{"type":"literal","value":"unfold_less"},{"type":"literal","value":"unfold_less_double"},{"type":"literal","value":"unfold_more"},{"type":"literal","value":"unfold_more_double"},{"type":"literal","value":"ungroup"},{"type":"literal","value":"universal_currency"},{"type":"literal","value":"universal_currency_alt"},{"type":"literal","value":"universal_local"},{"type":"literal","value":"unknown_2"},{"type":"literal","value":"unknown_5"},{"type":"literal","value":"unknown_7"},{"type":"literal","value":"unknown_document"},{"type":"literal","value":"unknown_med"},{"type":"literal","value":"unlicense"},{"type":"literal","value":"unpaved_road"},{"type":"literal","value":"unpublished"},{"type":"literal","value":"unsubscribe"},{"type":"literal","value":"upcoming"},{"type":"literal","value":"update_disabled"},{"type":"literal","value":"upgrade"},{"type":"literal","value":"upi_pay"},{"type":"literal","value":"upload"},{"type":"literal","value":"upload_2"},{"type":"literal","value":"upload_file"},{"type":"literal","value":"urology"},{"type":"literal","value":"usb"},{"type":"literal","value":"usb_off"},{"type":"literal","value":"user_attributes"},{"type":"literal","value":"vaccines"},{"type":"literal","value":"vacuum"},{"type":"literal","value":"valve"},{"type":"literal","value":"vape_free"},{"type":"literal","value":"vaping_rooms"},{"type":"literal","value":"variable_add"},{"type":"literal","value":"variable_insert"},{"type":"literal","value":"variable_remove"},{"type":"literal","value":"variables"},{"type":"literal","value":"ventilator"},{"type":"literal","value":"verified"},{"type":"literal","value":"verified_off"},{"type":"literal","value":"verified_user"},{"type":"literal","value":"vertical_align_bottom"},{"type":"literal","value":"vertical_align_center"},{"type":"literal","value":"vertical_align_top"},{"type":"literal","value":"vertical_distribute"},{"type":"literal","value":"vertical_shades"},{"type":"literal","value":"vertical_shades_closed"},{"type":"literal","value":"vertical_split"},{"type":"literal","value":"vibration"},{"type":"literal","value":"video_call"},{"type":"literal","value":"video_camera_back"},{"type":"literal","value":"video_camera_back_add"},{"type":"literal","value":"video_camera_front"},{"type":"literal","value":"video_camera_front_off"},{"type":"literal","value":"video_chat"},{"type":"literal","value":"video_file"},{"type":"literal","value":"video_label"},{"type":"literal","value":"video_library"},{"type":"literal","value":"video_search"},{"type":"literal","value":"video_settings"},{"type":"literal","value":"video_stable"},{"type":"literal","value":"videocam"},{"type":"literal","value":"videocam_alert"},{"type":"literal","value":"videocam_off"},{"type":"literal","value":"videogame_asset"},{"type":"literal","value":"videogame_asset_off"},{"type":"literal","value":"view_agenda"},{"type":"literal","value":"view_apps"},{"type":"literal","value":"view_array"},{"type":"literal","value":"view_carousel"},{"type":"literal","value":"view_column"},{"type":"literal","value":"view_column_2"},{"type":"literal","value":"view_comfy"},{"type":"literal","value":"view_comfy_alt"},{"type":"literal","value":"view_compact"},{"type":"literal","value":"view_compact_alt"},{"type":"literal","value":"view_cozy"},{"type":"literal","value":"view_day"},{"type":"literal","value":"view_headline"},{"type":"literal","value":"view_in_ar"},{"type":"literal","value":"view_in_ar_off"},{"type":"literal","value":"view_kanban"},{"type":"literal","value":"view_list"},{"type":"literal","value":"view_module"},{"type":"literal","value":"view_object_track"},{"type":"literal","value":"view_quilt"},{"type":"literal","value":"view_real_size"},{"type":"literal","value":"view_sidebar"},{"type":"literal","value":"view_stream"},{"type":"literal","value":"view_timeline"},{"type":"literal","value":"view_week"},{"type":"literal","value":"vignette"},{"type":"literal","value":"vignette_2"},{"type":"literal","value":"villa"},{"type":"literal","value":"visibility_lock"},{"type":"literal","value":"visibility_off"},{"type":"literal","value":"vital_signs"},{"type":"literal","value":"vo2_max"},{"type":"literal","value":"voice_chat"},{"type":"literal","value":"voice_over_off"},{"type":"literal","value":"voice_selection"},{"type":"literal","value":"voice_selection_off"},{"type":"literal","value":"voicemail"},{"type":"literal","value":"voicemail_2"},{"type":"literal","value":"volcano"},{"type":"literal","value":"volume_down"},{"type":"literal","value":"volume_down_alt"},{"type":"literal","value":"volume_mute"},{"type":"literal","value":"volume_off"},{"type":"literal","value":"volume_up"},{"type":"literal","value":"volunteer_activism"},{"type":"literal","value":"voting_chip"},{"type":"literal","value":"vpn_key"},{"type":"literal","value":"vpn_key_alert"},{"type":"literal","value":"vpn_key_off"},{"type":"literal","value":"vpn_lock"},{"type":"literal","value":"vpn_lock_2"},{"type":"literal","value":"vr180_create2d"},{"type":"literal","value":"vr180_create2d_off"},{"type":"literal","value":"vrpano"},{"type":"literal","value":"wall_art"},{"type":"literal","value":"wall_lamp"},{"type":"literal","value":"wallet"},{"type":"literal","value":"wallpaper"},{"type":"literal","value":"wallpaper_slideshow"},{"type":"literal","value":"wand_shine"},{"type":"literal","value":"wand_stars"},{"type":"literal","value":"ward"},{"type":"literal","value":"warehouse"},{"type":"literal","value":"warning"},{"type":"literal","value":"warning_amber"},{"type":"literal","value":"warning_off"},{"type":"literal","value":"wash"},{"type":"literal","value":"washoku"},{"type":"literal","value":"watch"},{"type":"literal","value":"watch_arrow"},{"type":"literal","value":"watch_button_press"},{"type":"literal","value":"watch_check"},{"type":"literal","value":"watch_later"},{"type":"literal","value":"watch_off"},{"type":"literal","value":"watch_screentime"},{"type":"literal","value":"watch_vibration"},{"type":"literal","value":"watch_wake"},{"type":"literal","value":"water"},{"type":"literal","value":"water_bottle"},{"type":"literal","value":"water_bottle_large"},{"type":"literal","value":"water_damage"},{"type":"literal","value":"water_do"},{"type":"literal","value":"water_drop"},{"type":"literal","value":"water_ec"},{"type":"literal","value":"water_full"},{"type":"literal","value":"water_heater"},{"type":"literal","value":"water_lock"},{"type":"literal","value":"water_loss"},{"type":"literal","value":"water_lux"},{"type":"literal","value":"water_medium"},{"type":"literal","value":"water_orp"},{"type":"literal","value":"water_ph"},{"type":"literal","value":"water_pump"},{"type":"literal","value":"water_voc"},{"type":"literal","value":"waterfall_chart"},{"type":"literal","value":"waves"},{"type":"literal","value":"waving_hand"},{"type":"literal","value":"wb_auto"},{"type":"literal","value":"wb_cloudy"},{"type":"literal","value":"wb_incandescent"},{"type":"literal","value":"wb_iridescent"},{"type":"literal","value":"wb_shade"},{"type":"literal","value":"wb_sunny"},{"type":"literal","value":"wb_twighlight"},{"type":"literal","value":"wb_twilight"},{"type":"literal","value":"wc"},{"type":"literal","value":"weather_hail"},{"type":"literal","value":"weather_mix"},{"type":"literal","value":"weather_snowy"},{"type":"literal","value":"web_asset"},{"type":"literal","value":"web_asset_off"},{"type":"literal","value":"web_stories"},{"type":"literal","value":"web_traffic"},{"type":"literal","value":"webhook"},{"type":"literal","value":"weekend"},{"type":"literal","value":"weight"},{"type":"literal","value":"west"},{"type":"literal","value":"whatshot"},{"type":"literal","value":"wheelchair_pickup"},{"type":"literal","value":"where_to_vote"},{"type":"literal","value":"widget_medium"},{"type":"literal","value":"widget_small"},{"type":"literal","value":"widget_width"},{"type":"literal","value":"widgets"},{"type":"literal","value":"width_full"},{"type":"literal","value":"width_normal"},{"type":"literal","value":"width_wide"},{"type":"literal","value":"wifi_1_bar"},{"type":"literal","value":"wifi_2_bar"},{"type":"literal","value":"wifi_add"},{"type":"literal","value":"wifi_calling"},{"type":"literal","value":"wifi_calling_1"},{"type":"literal","value":"wifi_calling_2"},{"type":"literal","value":"wifi_calling_3"},{"type":"literal","value":"wifi_calling_bar_1"},{"type":"literal","value":"wifi_calling_bar_2"},{"type":"literal","value":"wifi_calling_bar_3"},{"type":"literal","value":"wifi_channel"},{"type":"literal","value":"wifi_find"},{"type":"literal","value":"wifi_home"},{"type":"literal","value":"wifi_lock"},{"type":"literal","value":"wifi_notification"},{"type":"literal","value":"wifi_off"},{"type":"literal","value":"wifi_password"},{"type":"literal","value":"wifi_protected_setup"},{"type":"literal","value":"wifi_proxy"},{"type":"literal","value":"wifi_tethering"},{"type":"literal","value":"wifi_tethering_error"},{"type":"literal","value":"wifi_tethering_off"},{"type":"literal","value":"wind_power"},{"type":"literal","value":"window_closed"},{"type":"literal","value":"window_open"},{"type":"literal","value":"window_sensor"},{"type":"literal","value":"windshield_defrost_auto"},{"type":"literal","value":"windshield_defrost_front"},{"type":"literal","value":"windshield_defrost_rear"},{"type":"literal","value":"windshield_heat_front"},{"type":"literal","value":"wine_bar"},{"type":"literal","value":"woman"},{"type":"literal","value":"woman_2"},{"type":"literal","value":"work"},{"type":"literal","value":"work_alert"},{"type":"literal","value":"work_history"},{"type":"literal","value":"work_off"},{"type":"literal","value":"work_outline"},{"type":"literal","value":"work_update"},{"type":"literal","value":"workspace_premium"},{"type":"literal","value":"workspaces"},{"type":"literal","value":"workspaces_filled"},{"type":"literal","value":"workspaces_outline"},{"type":"literal","value":"wounds_injuries"},{"type":"literal","value":"wrap_text"},{"type":"literal","value":"wrist"},{"type":"literal","value":"wrong_location"},{"type":"literal","value":"wysiwyg"},{"type":"literal","value":"yakitori"},{"type":"literal","value":"yard"},{"type":"literal","value":"yoshoku"},{"type":"literal","value":"your_trips"},{"type":"literal","value":"youtube_activity"},{"type":"literal","value":"youtube_searched_for"},{"type":"literal","value":"zone_person_alert"},{"type":"literal","value":"zone_person_idle"},{"type":"literal","value":"zone_person_urgent"},{"type":"literal","value":"zoom_in"},{"type":"literal","value":"zoom_in_map"},{"type":"literal","value":"zoom_out"},{"type":"literal","value":"zoom_out_map"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"literal","value":"function"},{"type":"literal","value":"join"},{"type":"literal","value":"shift"},{"type":"literal","value":"sort"},{"type":"literal","value":"map"},{"type":"literal","value":"filter"},{"type":"literal","value":"source"},{"type":"literal","value":"style"},{"type":"literal","value":"accessible"},{"type":"literal","value":"ios"},{"type":"literal","value":"android"},{"type":"literal","value":"message"},{"type":"literal","value":"web"},{"type":"literal","value":"remove"},{"type":"literal","value":"fingerprint"},{"type":"literal","value":"portrait"},{"type":"literal","value":"landscape"},{"type":"literal","value":"light"},{"type":"literal","value":"resize"},{"type":"literal","value":"output"},{"type":"literal","value":"description"},{"type":"literal","value":"fullscreen"},{"type":"literal","value":"dangerous"},{"type":"literal","value":"metro"},{"type":"literal","value":"image"},{"type":"literal","value":"mode"},{"type":"literal","value":"search"},{"type":"literal","value":"repeat"},{"type":"literal","value":"anchor"},{"type":"literal","value":"link"},{"type":"literal","value":"flag"},{"type":"literal","value":"signature"},{"type":"literal","value":"package"},{"type":"literal","value":"category"},{"type":"literal","value":"key"},{"type":"literal","value":"build"},{"type":"literal","value":"settings"},{"type":"literal","value":"colors"},{"type":"literal","value":"group"},{"type":"literal","value":"comment"},{"type":"literal","value":"target"},{"type":"literal","value":"tag"},{"type":"literal","value":"host"},{"type":"literal","value":"add"},{"type":"literal","value":"start"},{"type":"literal","value":"transform"},{"type":"literal","value":"share"},{"type":"literal","value":"code"},{"type":"literal","value":"policy"},{"type":"literal","value":"switch"},{"type":"literal","value":"public"},{"type":"literal","value":"try"},{"type":"literal","value":"class"},{"type":"literal","value":"info"},{"type":"literal","value":"error"},{"type":"literal","value":"height"},{"type":"literal","value":"scale"},{"type":"literal","value":"tablet"},{"type":"literal","value":"tv"},{"type":"literal","value":"done"},{"type":"literal","value":"refresh"},{"type":"literal","value":"http"},{"type":"literal","value":"send"},{"type":"literal","value":"enable"},{"type":"literal","value":"update"},{"type":"literal","value":"close"},{"type":"literal","value":"elevation"},{"type":"literal","value":"difference"},{"type":"literal","value":"visibility"},{"type":"literal","value":"article"},{"type":"literal","value":"details"},{"type":"literal","value":"html"},{"type":"literal","value":"iframe"},{"type":"literal","value":"input"},{"type":"literal","value":"label"},{"type":"literal","value":"menu"},{"type":"literal","value":"script"},{"type":"literal","value":"select"},{"type":"literal","value":"table"},{"type":"literal","value":"title"},{"type":"literal","value":"circle"},{"type":"literal","value":"pattern"},{"type":"literal","value":"polyline"},{"type":"literal","value":"stop"},{"type":"literal","value":"cancel"},{"type":"literal","value":"pause"},{"type":"literal","value":"storage"},{"type":"literal","value":"event"},{"type":"literal","value":"history"},{"type":"literal","value":"navigation"},{"type":"literal","value":"toolbar"},{"type":"literal","value":"window"},{"type":"literal","value":"print"},{"type":"literal","value":"delete"},{"type":"literal","value":"report"},{"type":"literal","value":"tab"},{"type":"literal","value":"route"},{"type":"literal","value":"stack"},{"type":"literal","value":"merge"},{"type":"literal","value":"opacity"},{"type":"literal","value":"margin"},{"type":"literal","value":"padding"},{"type":"literal","value":"contrast"},{"type":"literal","value":"radio"},{"type":"literal","value":"timer"},{"type":"literal","value":"list"},{"type":"literal","value":"feed"},{"type":"literal","value":"note"},{"type":"literal","value":"tooltip"},{"type":"literal","value":"uppercase"},{"type":"literal","value":"lowercase"},{"type":"literal","value":"email"},{"type":"literal","value":"sync"},{"type":"literal","value":"api"},{"type":"literal","value":"router"},{"type":"literal","value":"download"},{"type":"literal","value":"store"},{"type":"literal","value":"flip"},{"type":"literal","value":"alarm"},{"type":"literal","value":"barcode"},{"type":"literal","value":"bolt"},{"type":"literal","value":"book"},{"type":"literal","value":"bookmark"},{"type":"literal","value":"camera"},{"type":"literal","value":"clear"},{"type":"literal","value":"cloud"},{"type":"literal","value":"crop"},{"type":"literal","value":"eject"},{"type":"literal","value":"equal"},{"type":"literal","value":"eyeglasses"},{"type":"literal","value":"flowchart"},{"type":"literal","value":"folder"},{"type":"literal","value":"forward"},{"type":"literal","value":"globe"},{"type":"literal","value":"headphones"},{"type":"literal","value":"hexagon"},{"type":"literal","value":"hourglass"},{"type":"literal","value":"house"},{"type":"literal","value":"keyboard"},{"type":"literal","value":"lightbulb"},{"type":"literal","value":"lock"},{"type":"literal","value":"mic"},{"type":"literal","value":"percent"},{"type":"literal","value":"person"},{"type":"literal","value":"phone"},{"type":"literal","value":"photo"},{"type":"literal","value":"pin"},{"type":"literal","value":"power"},{"type":"literal","value":"rectangle"},{"type":"literal","value":"shield"},{"type":"literal","value":"shuffle"},{"type":"literal","value":"speaker"},{"type":"literal","value":"square"},{"type":"literal","value":"star"},{"type":"literal","value":"thermometer"},{"type":"literal","value":"timelapse"},{"type":"literal","value":"tornado"},{"type":"literal","value":"umbrella"},{"type":"literal","value":"wifi"},{"type":"literal","value":"abc"},{"type":"literal","value":"crown"},{"type":"literal","value":"diamond"},{"type":"literal","value":"loupe"},{"type":"literal","value":"mail"},{"type":"literal","value":"newspaper"},{"type":"literal","value":"pip"},{"type":"literal","value":"scanner"},{"type":"literal","value":"shadow"},{"type":"literal","value":"stethoscope"},{"type":"literal","value":"terminal"},{"type":"literal","value":"tram"},{"type":"literal","value":"asterisk"},{"type":"literal","value":"checklist"},{"type":"literal","value":"earbuds"},{"type":"literal","value":"pentagon"},{"type":"literal","value":"scooter"},{"type":"literal","value":"backpack"},{"type":"literal","value":"bathtub"},{"type":"literal","value":"chair"},{"type":"literal","value":"dishwasher"},{"type":"literal","value":"fireplace"},{"type":"literal","value":"microwave"},{"type":"literal","value":"oven"},{"type":"literal","value":"pill"},{"type":"literal","value":"shower"},{"type":"literal","value":"sprinkler"},{"type":"literal","value":"stairs"},{"type":"literal","value":"syringe"},{"type":"literal","value":"trophy"},{"type":"literal","value":"sos"},{"type":"literal","value":"stroller"},{"type":"literal","value":"accessibility"},{"type":"literal","value":"bubble"},{"type":"literal","value":"smartphone"},{"type":"literal","value":"storefront"},{"type":"literal","value":"translate"},{"type":"literal","value":"drone"},{"type":"literal","value":"headset"},{"type":"literal","value":"moped"},{"type":"literal","value":"motorcycle"},{"type":"literal","value":"numbers"},{"type":"literal","value":"receipt"},{"type":"literal","value":"palette"},{"type":"literal","value":"animation"},{"type":"literal","value":"badge"},{"type":"literal","value":"security"},{"type":"literal","value":"hide"},{"type":"literal","value":"step"},{"type":"literal","value":"move"},{"type":"literal","value":"123"},{"type":"literal","value":"360"},{"type":"literal","value":"10k"},{"type":"literal","value":"10mp"},{"type":"literal","value":"11mp"},{"type":"literal","value":"12mp"},{"type":"literal","value":"13mp"},{"type":"literal","value":"14mp"},{"type":"literal","value":"15mp"},{"type":"literal","value":"16mp"},{"type":"literal","value":"17mp"},{"type":"literal","value":"18_up_rating"},{"type":"literal","value":"18mp"},{"type":"literal","value":"19mp"},{"type":"literal","value":"1k"},{"type":"literal","value":"1k_plus"},{"type":"literal","value":"1x_mobiledata"},{"type":"literal","value":"1x_mobiledata_badge"},{"type":"literal","value":"20mp"},{"type":"literal","value":"21mp"},{"type":"literal","value":"22mp"},{"type":"literal","value":"23mp"},{"type":"literal","value":"24fps_select"},{"type":"literal","value":"24mp"},{"type":"literal","value":"2d"},{"type":"literal","value":"2k"},{"type":"literal","value":"2k_plus"},{"type":"literal","value":"2mp"},{"type":"literal","value":"30fps"},{"type":"literal","value":"30fps_select"},{"type":"literal","value":"3d"},{"type":"literal","value":"3d_rotation"},{"type":"literal","value":"3g_mobiledata"},{"type":"literal","value":"3g_mobiledata_badge"},{"type":"literal","value":"3k"},{"type":"literal","value":"3k_plus"},{"type":"literal","value":"3mp"},{"type":"literal","value":"3p"},{"type":"literal","value":"4g_mobiledata"},{"type":"literal","value":"4g_mobiledata_badge"},{"type":"literal","value":"4g_plus_mobiledata"},{"type":"literal","value":"4k"},{"type":"literal","value":"4k_plus"},{"type":"literal","value":"4mp"},{"type":"literal","value":"50mp"},{"type":"literal","value":"5g"},{"type":"literal","value":"5g_mobiledata_badge"},{"type":"literal","value":"5k"},{"type":"literal","value":"5k_plus"},{"type":"literal","value":"5mp"},{"type":"literal","value":"60fps"},{"type":"literal","value":"60fps_select"},{"type":"literal","value":"6_ft_apart"},{"type":"literal","value":"6k"},{"type":"literal","value":"6k_plus"},{"type":"literal","value":"6mp"},{"type":"literal","value":"7k"},{"type":"literal","value":"7k_plus"},{"type":"literal","value":"7mp"},{"type":"literal","value":"8k"},{"type":"literal","value":"8k_plus"},{"type":"literal","value":"8mp"},{"type":"literal","value":"9k"},{"type":"literal","value":"9k_plus"},{"type":"literal","value":"9mp"},{"type":"literal","value":"ac_unit"},{"type":"literal","value":"access_alarm"},{"type":"literal","value":"access_alarms"},{"type":"literal","value":"access_time"},{"type":"literal","value":"access_time_filled"},{"type":"literal","value":"accessibility_new"},{"type":"literal","value":"accessible_forward"},{"type":"literal","value":"accessible_menu"},{"type":"literal","value":"account_balance"},{"type":"literal","value":"account_balance_wallet"},{"type":"literal","value":"account_box"},{"type":"literal","value":"account_child"},{"type":"literal","value":"account_child_invert"},{"type":"literal","value":"account_circle"},{"type":"literal","value":"account_circle_off"},{"type":"literal","value":"account_tree"},{"type":"literal","value":"action_key"},{"type":"literal","value":"activity_zone"},{"type":"literal","value":"acupuncture"},{"type":"literal","value":"acute"},{"type":"literal","value":"ad"},{"type":"literal","value":"ad_group"},{"type":"literal","value":"ad_group_off"},{"type":"literal","value":"ad_off"},{"type":"literal","value":"ad_units"},{"type":"literal","value":"adaptive_audio_mic"},{"type":"literal","value":"adaptive_audio_mic_off"},{"type":"literal","value":"adb"},{"type":"literal","value":"add_2"},{"type":"literal","value":"add_a_photo"},{"type":"literal","value":"add_ad"},{"type":"literal","value":"add_alarm"},{"type":"literal","value":"add_alert"},{"type":"literal","value":"add_box"},{"type":"literal","value":"add_business"},{"type":"literal","value":"add_call"},{"type":"literal","value":"add_card"},{"type":"literal","value":"add_chart"},{"type":"literal","value":"add_circle"},{"type":"literal","value":"add_circle_outline"},{"type":"literal","value":"add_column_left"},{"type":"literal","value":"add_column_right"},{"type":"literal","value":"add_comment"},{"type":"literal","value":"add_diamond"},{"type":"literal","value":"add_home"},{"type":"literal","value":"add_home_work"},{"type":"literal","value":"add_ic_call"},{"type":"literal","value":"add_link"},{"type":"literal","value":"add_location"},{"type":"literal","value":"add_location_alt"},{"type":"literal","value":"add_moderator"},{"type":"literal","value":"add_notes"},{"type":"literal","value":"add_photo_alternate"},{"type":"literal","value":"add_reaction"},{"type":"literal","value":"add_road"},{"type":"literal","value":"add_row_above"},{"type":"literal","value":"add_row_below"},{"type":"literal","value":"add_shopping_cart"},{"type":"literal","value":"add_task"},{"type":"literal","value":"add_to_drive"},{"type":"literal","value":"add_to_home_screen"},{"type":"literal","value":"add_to_photos"},{"type":"literal","value":"add_to_queue"},{"type":"literal","value":"add_triangle"},{"type":"literal","value":"addchart"},{"type":"literal","value":"adf_scanner"},{"type":"literal","value":"adjust"},{"type":"literal","value":"admin_meds"},{"type":"literal","value":"admin_panel_settings"},{"type":"literal","value":"ads_click"},{"type":"literal","value":"agender"},{"type":"literal","value":"agriculture"},{"type":"literal","value":"air"},{"type":"literal","value":"air_freshener"},{"type":"literal","value":"air_purifier"},{"type":"literal","value":"air_purifier_gen"},{"type":"literal","value":"airline_seat_flat"},{"type":"literal","value":"airline_seat_flat_angled"},{"type":"literal","value":"airline_seat_individual_suite"},{"type":"literal","value":"airline_seat_legroom_extra"},{"type":"literal","value":"airline_seat_legroom_normal"},{"type":"literal","value":"airline_seat_legroom_reduced"},{"type":"literal","value":"airline_seat_recline_extra"},{"type":"literal","value":"airline_seat_recline_normal"},{"type":"literal","value":"airline_stops"},{"type":"literal","value":"airlines"},{"type":"literal","value":"airplane_ticket"},{"type":"literal","value":"airplanemode_active"},{"type":"literal","value":"airplanemode_inactive"},{"type":"literal","value":"airplay"},{"type":"literal","value":"airport_shuttle"},{"type":"literal","value":"airwave"},{"type":"literal","value":"alarm_add"},{"type":"literal","value":"alarm_off"},{"type":"literal","value":"alarm_on"},{"type":"literal","value":"alarm_pause"},{"type":"literal","value":"alarm_smart_wake"},{"type":"literal","value":"album"},{"type":"literal","value":"align_center"},{"type":"literal","value":"align_end"},{"type":"literal","value":"align_flex_center"},{"type":"literal","value":"align_flex_end"},{"type":"literal","value":"align_flex_start"},{"type":"literal","value":"align_horizontal_center"},{"type":"literal","value":"align_horizontal_left"},{"type":"literal","value":"align_horizontal_right"},{"type":"literal","value":"align_items_stretch"},{"type":"literal","value":"align_justify_center"},{"type":"literal","value":"align_justify_flex_end"},{"type":"literal","value":"align_justify_flex_start"},{"type":"literal","value":"align_justify_space_around"},{"type":"literal","value":"align_justify_space_between"},{"type":"literal","value":"align_justify_space_even"},{"type":"literal","value":"align_justify_stretch"},{"type":"literal","value":"align_self_stretch"},{"type":"literal","value":"align_space_around"},{"type":"literal","value":"align_space_between"},{"type":"literal","value":"align_space_even"},{"type":"literal","value":"align_start"},{"type":"literal","value":"align_stretch"},{"type":"literal","value":"align_vertical_bottom"},{"type":"literal","value":"align_vertical_center"},{"type":"literal","value":"align_vertical_top"},{"type":"literal","value":"all_inbox"},{"type":"literal","value":"all_inclusive"},{"type":"literal","value":"all_match"},{"type":"literal","value":"all_out"},{"type":"literal","value":"allergies"},{"type":"literal","value":"allergy"},{"type":"literal","value":"alt_route"},{"type":"literal","value":"alternate_email"},{"type":"literal","value":"altitude"},{"type":"literal","value":"ambulance"},{"type":"literal","value":"amend"},{"type":"literal","value":"amp_stories"},{"type":"literal","value":"analytics"},{"type":"literal","value":"android_cell_4_bar"},{"type":"literal","value":"android_cell_4_bar_alert"},{"type":"literal","value":"android_cell_4_bar_off"},{"type":"literal","value":"android_cell_4_bar_plus"},{"type":"literal","value":"android_cell_5_bar"},{"type":"literal","value":"android_cell_5_bar_alert"},{"type":"literal","value":"android_cell_5_bar_off"},{"type":"literal","value":"android_cell_5_bar_plus"},{"type":"literal","value":"android_cell_dual_4_bar"},{"type":"literal","value":"android_cell_dual_4_bar_alert"},{"type":"literal","value":"android_cell_dual_4_bar_plus"},{"type":"literal","value":"android_cell_dual_5_bar"},{"type":"literal","value":"android_cell_dual_5_bar_alert"},{"type":"literal","value":"android_cell_dual_5_bar_plus"},{"type":"literal","value":"android_wifi_3_bar"},{"type":"literal","value":"android_wifi_3_bar_alert"},{"type":"literal","value":"android_wifi_3_bar_lock"},{"type":"literal","value":"android_wifi_3_bar_off"},{"type":"literal","value":"android_wifi_3_bar_plus"},{"type":"literal","value":"android_wifi_3_bar_question"},{"type":"literal","value":"android_wifi_4_bar"},{"type":"literal","value":"android_wifi_4_bar_alert"},{"type":"literal","value":"android_wifi_4_bar_lock"},{"type":"literal","value":"android_wifi_4_bar_off"},{"type":"literal","value":"android_wifi_4_bar_plus"},{"type":"literal","value":"android_wifi_4_bar_question"},{"type":"literal","value":"animated_images"},{"type":"literal","value":"announcement"},{"type":"literal","value":"aod"},{"type":"literal","value":"aod_tablet"},{"type":"literal","value":"aod_watch"},{"type":"literal","value":"apartment"},{"type":"literal","value":"apk_document"},{"type":"literal","value":"apk_install"},{"type":"literal","value":"app_badging"},{"type":"literal","value":"app_blocking"},{"type":"literal","value":"app_registration"},{"type":"literal","value":"app_settings_alt"},{"type":"literal","value":"app_shortcut"},{"type":"literal","value":"apparel"},{"type":"literal","value":"approval"},{"type":"literal","value":"approval_delegation"},{"type":"literal","value":"approval_delegation_off"},{"type":"literal","value":"apps"},{"type":"literal","value":"apps_outage"},{"type":"literal","value":"aq"},{"type":"literal","value":"aq_indoor"},{"type":"literal","value":"ar_on_you"},{"type":"literal","value":"ar_stickers"},{"type":"literal","value":"architecture"},{"type":"literal","value":"archive"},{"type":"literal","value":"area_chart"},{"type":"literal","value":"arming_countdown"},{"type":"literal","value":"arrow_and_edge"},{"type":"literal","value":"arrow_back"},{"type":"literal","value":"arrow_back_2"},{"type":"literal","value":"arrow_back_ios"},{"type":"literal","value":"arrow_back_ios_new"},{"type":"literal","value":"arrow_circle_down"},{"type":"literal","value":"arrow_circle_left"},{"type":"literal","value":"arrow_circle_right"},{"type":"literal","value":"arrow_circle_up"},{"type":"literal","value":"arrow_cool_down"},{"type":"literal","value":"arrow_downward"},{"type":"literal","value":"arrow_downward_alt"},{"type":"literal","value":"arrow_drop_down"},{"type":"literal","value":"arrow_drop_down_circle"},{"type":"literal","value":"arrow_drop_up"},{"type":"literal","value":"arrow_forward"},{"type":"literal","value":"arrow_forward_ios"},{"type":"literal","value":"arrow_insert"},{"type":"literal","value":"arrow_left"},{"type":"literal","value":"arrow_left_alt"},{"type":"literal","value":"arrow_menu_close"},{"type":"literal","value":"arrow_menu_open"},{"type":"literal","value":"arrow_or_edge"},{"type":"literal","value":"arrow_outward"},{"type":"literal","value":"arrow_range"},{"type":"literal","value":"arrow_right"},{"type":"literal","value":"arrow_right_alt"},{"type":"literal","value":"arrow_selector_tool"},{"type":"literal","value":"arrow_shape_up"},{"type":"literal","value":"arrow_shape_up_stack"},{"type":"literal","value":"arrow_shape_up_stack_2"},{"type":"literal","value":"arrow_split"},{"type":"literal","value":"arrow_top_left"},{"type":"literal","value":"arrow_top_right"},{"type":"literal","value":"arrow_upload_progress"},{"type":"literal","value":"arrow_upload_ready"},{"type":"literal","value":"arrow_upward"},{"type":"literal","value":"arrow_upward_alt"},{"type":"literal","value":"arrow_warm_up"},{"type":"literal","value":"arrows_input"},{"type":"literal","value":"arrows_more_down"},{"type":"literal","value":"arrows_more_up"},{"type":"literal","value":"arrows_output"},{"type":"literal","value":"arrows_outward"},{"type":"literal","value":"art_track"},{"type":"literal","value":"article_person"},{"type":"literal","value":"article_shortcut"},{"type":"literal","value":"artist"},{"type":"literal","value":"aspect_ratio"},{"type":"literal","value":"assessment"},{"type":"literal","value":"assignment"},{"type":"literal","value":"assignment_add"},{"type":"literal","value":"assignment_ind"},{"type":"literal","value":"assignment_late"},{"type":"literal","value":"assignment_return"},{"type":"literal","value":"assignment_returned"},{"type":"literal","value":"assignment_turned_in"},{"type":"literal","value":"assist_walker"},{"type":"literal","value":"assistant"},{"type":"literal","value":"assistant_device"},{"type":"literal","value":"assistant_direction"},{"type":"literal","value":"assistant_navigation"},{"type":"literal","value":"assistant_on_hub"},{"type":"literal","value":"assistant_photo"},{"type":"literal","value":"assured_workload"},{"type":"literal","value":"atm"},{"type":"literal","value":"atr"},{"type":"literal","value":"attach_email"},{"type":"literal","value":"attach_file"},{"type":"literal","value":"attach_file_add"},{"type":"literal","value":"attach_file_off"},{"type":"literal","value":"attach_money"},{"type":"literal","value":"attachment"},{"type":"literal","value":"attractions"},{"type":"literal","value":"attribution"},{"type":"literal","value":"audio_description"},{"type":"literal","value":"audio_file"},{"type":"literal","value":"audio_video_receiver"},{"type":"literal","value":"audiotrack"},{"type":"literal","value":"auto_awesome"},{"type":"literal","value":"auto_awesome_mosaic"},{"type":"literal","value":"auto_awesome_motion"},{"type":"literal","value":"auto_delete"},{"type":"literal","value":"auto_fix_high"},{"type":"literal","value":"auto_fix_normal"},{"type":"literal","value":"auto_fix_off"},{"type":"literal","value":"auto_graph"},{"type":"literal","value":"auto_mode"},{"type":"literal","value":"auto_read_pause"},{"type":"literal","value":"auto_read_play"},{"type":"literal","value":"auto_stories"},{"type":"literal","value":"auto_stories_off"},{"type":"literal","value":"auto_towing"},{"type":"literal","value":"auto_transmission"},{"type":"literal","value":"autofps_select"},{"type":"literal","value":"automation"},{"type":"literal","value":"autopause"},{"type":"literal","value":"autoplay"},{"type":"literal","value":"autorenew"},{"type":"literal","value":"autostop"},{"type":"literal","value":"av1"},{"type":"literal","value":"av_timer"},{"type":"literal","value":"avc"},{"type":"literal","value":"avg_pace"},{"type":"literal","value":"avg_time"},{"type":"literal","value":"award_meal"},{"type":"literal","value":"award_star"},{"type":"literal","value":"azm"},{"type":"literal","value":"baby_changing_station"},{"type":"literal","value":"back_hand"},{"type":"literal","value":"back_to_tab"},{"type":"literal","value":"background_dot_large"},{"type":"literal","value":"background_dot_small"},{"type":"literal","value":"background_grid_small"},{"type":"literal","value":"background_replace"},{"type":"literal","value":"backlight_high"},{"type":"literal","value":"backlight_high_off"},{"type":"literal","value":"backlight_low"},{"type":"literal","value":"backspace"},{"type":"literal","value":"backup"},{"type":"literal","value":"backup_table"},{"type":"literal","value":"badge_critical_battery"},{"type":"literal","value":"badminton"},{"type":"literal","value":"bakery_dining"},{"type":"literal","value":"balance"},{"type":"literal","value":"balcony"},{"type":"literal","value":"ballot"},{"type":"literal","value":"bar_chart"},{"type":"literal","value":"bar_chart_4_bars"},{"type":"literal","value":"bar_chart_off"},{"type":"literal","value":"barcode_reader"},{"type":"literal","value":"barcode_scanner"},{"type":"literal","value":"barefoot"},{"type":"literal","value":"batch_prediction"},{"type":"literal","value":"bath_bedrock"},{"type":"literal","value":"bath_outdoor"},{"type":"literal","value":"bath_private"},{"type":"literal","value":"bath_public_large"},{"type":"literal","value":"bath_soak"},{"type":"literal","value":"bathroom"},{"type":"literal","value":"battery_0_bar"},{"type":"literal","value":"battery_1_bar"},{"type":"literal","value":"battery_20"},{"type":"literal","value":"battery_2_bar"},{"type":"literal","value":"battery_30"},{"type":"literal","value":"battery_3_bar"},{"type":"literal","value":"battery_4_bar"},{"type":"literal","value":"battery_50"},{"type":"literal","value":"battery_5_bar"},{"type":"literal","value":"battery_60"},{"type":"literal","value":"battery_6_bar"},{"type":"literal","value":"battery_80"},{"type":"literal","value":"battery_90"},{"type":"literal","value":"battery_alert"},{"type":"literal","value":"battery_android_0"},{"type":"literal","value":"battery_android_1"},{"type":"literal","value":"battery_android_2"},{"type":"literal","value":"battery_android_3"},{"type":"literal","value":"battery_android_4"},{"type":"literal","value":"battery_android_5"},{"type":"literal","value":"battery_android_6"},{"type":"literal","value":"battery_android_alert"},{"type":"literal","value":"battery_android_bolt"},{"type":"literal","value":"battery_android_frame_1"},{"type":"literal","value":"battery_android_frame_2"},{"type":"literal","value":"battery_android_frame_3"},{"type":"literal","value":"battery_android_frame_4"},{"type":"literal","value":"battery_android_frame_5"},{"type":"literal","value":"battery_android_frame_6"},{"type":"literal","value":"battery_android_frame_alert"},{"type":"literal","value":"battery_android_frame_bolt"},{"type":"literal","value":"battery_android_frame_full"},{"type":"literal","value":"battery_android_frame_plus"},{"type":"literal","value":"battery_android_frame_question"},{"type":"literal","value":"battery_android_frame_share"},{"type":"literal","value":"battery_android_frame_shield"},{"type":"literal","value":"battery_android_full"},{"type":"literal","value":"battery_android_plus"},{"type":"literal","value":"battery_android_question"},{"type":"literal","value":"battery_android_share"},{"type":"literal","value":"battery_android_shield"},{"type":"literal","value":"battery_change"},{"type":"literal","value":"battery_charging_20"},{"type":"literal","value":"battery_charging_30"},{"type":"literal","value":"battery_charging_50"},{"type":"literal","value":"battery_charging_60"},{"type":"literal","value":"battery_charging_80"},{"type":"literal","value":"battery_charging_90"},{"type":"literal","value":"battery_charging_full"},{"type":"literal","value":"battery_error"},{"type":"literal","value":"battery_full"},{"type":"literal","value":"battery_full_alt"},{"type":"literal","value":"battery_horiz_000"},{"type":"literal","value":"battery_horiz_050"},{"type":"literal","value":"battery_horiz_075"},{"type":"literal","value":"battery_low"},{"type":"literal","value":"battery_plus"},{"type":"literal","value":"battery_profile"},{"type":"literal","value":"battery_saver"},{"type":"literal","value":"battery_share"},{"type":"literal","value":"battery_status_good"},{"type":"literal","value":"battery_std"},{"type":"literal","value":"battery_unknown"},{"type":"literal","value":"battery_very_low"},{"type":"literal","value":"beach_access"},{"type":"literal","value":"bed"},{"type":"literal","value":"bedroom_baby"},{"type":"literal","value":"bedroom_child"},{"type":"literal","value":"bedroom_parent"},{"type":"literal","value":"bedtime"},{"type":"literal","value":"bedtime_off"},{"type":"literal","value":"beenhere"},{"type":"literal","value":"beer_meal"},{"type":"literal","value":"bento"},{"type":"literal","value":"bia"},{"type":"literal","value":"bid_landscape"},{"type":"literal","value":"bid_landscape_disabled"},{"type":"literal","value":"bigtop_updates"},{"type":"literal","value":"bike_dock"},{"type":"literal","value":"bike_lane"},{"type":"literal","value":"bike_scooter"},{"type":"literal","value":"biotech"},{"type":"literal","value":"blanket"},{"type":"literal","value":"blender"},{"type":"literal","value":"blind"},{"type":"literal","value":"blinds"},{"type":"literal","value":"blinds_closed"},{"type":"literal","value":"block"},{"type":"literal","value":"block_flipped"},{"type":"literal","value":"blood_pressure"},{"type":"literal","value":"bloodtype"},{"type":"literal","value":"bluetooth"},{"type":"literal","value":"bluetooth_audio"},{"type":"literal","value":"bluetooth_connected"},{"type":"literal","value":"bluetooth_disabled"},{"type":"literal","value":"bluetooth_drive"},{"type":"literal","value":"bluetooth_searching"},{"type":"literal","value":"blur_circular"},{"type":"literal","value":"blur_linear"},{"type":"literal","value":"blur_medium"},{"type":"literal","value":"blur_off"},{"type":"literal","value":"blur_on"},{"type":"literal","value":"blur_short"},{"type":"literal","value":"boat_bus"},{"type":"literal","value":"boat_railway"},{"type":"literal","value":"body_fat"},{"type":"literal","value":"body_system"},{"type":"literal","value":"bomb"},{"type":"literal","value":"book_2"},{"type":"literal","value":"book_3"},{"type":"literal","value":"book_4"},{"type":"literal","value":"book_5"},{"type":"literal","value":"book_6"},{"type":"literal","value":"book_online"},{"type":"literal","value":"book_ribbon"},{"type":"literal","value":"bookmark_add"},{"type":"literal","value":"bookmark_added"},{"type":"literal","value":"bookmark_bag"},{"type":"literal","value":"bookmark_border"},{"type":"literal","value":"bookmark_check"},{"type":"literal","value":"bookmark_flag"},{"type":"literal","value":"bookmark_heart"},{"type":"literal","value":"bookmark_manager"},{"type":"literal","value":"bookmark_remove"},{"type":"literal","value":"bookmark_star"},{"type":"literal","value":"bookmarks"},{"type":"literal","value":"books_movies_and_music"},{"type":"literal","value":"border_all"},{"type":"literal","value":"border_bottom"},{"type":"literal","value":"border_clear"},{"type":"literal","value":"border_color"},{"type":"literal","value":"border_horizontal"},{"type":"literal","value":"border_inner"},{"type":"literal","value":"border_left"},{"type":"literal","value":"border_outer"},{"type":"literal","value":"border_right"},{"type":"literal","value":"border_style"},{"type":"literal","value":"border_top"},{"type":"literal","value":"border_vertical"},{"type":"literal","value":"borg"},{"type":"literal","value":"bottom_app_bar"},{"type":"literal","value":"bottom_drawer"},{"type":"literal","value":"bottom_navigation"},{"type":"literal","value":"bottom_panel_close"},{"type":"literal","value":"bottom_panel_open"},{"type":"literal","value":"bottom_right_click"},{"type":"literal","value":"bottom_sheets"},{"type":"literal","value":"box"},{"type":"literal","value":"box_add"},{"type":"literal","value":"box_edit"},{"type":"literal","value":"boy"},{"type":"literal","value":"brand_awareness"},{"type":"literal","value":"brand_family"},{"type":"literal","value":"branding_watermark"},{"type":"literal","value":"breakfast_dining"},{"type":"literal","value":"breaking_news"},{"type":"literal","value":"breaking_news_alt_1"},{"type":"literal","value":"breastfeeding"},{"type":"literal","value":"brick"},{"type":"literal","value":"briefcase_meal"},{"type":"literal","value":"brightness_1"},{"type":"literal","value":"brightness_2"},{"type":"literal","value":"brightness_3"},{"type":"literal","value":"brightness_4"},{"type":"literal","value":"brightness_5"},{"type":"literal","value":"brightness_6"},{"type":"literal","value":"brightness_7"},{"type":"literal","value":"brightness_alert"},{"type":"literal","value":"brightness_auto"},{"type":"literal","value":"brightness_empty"},{"type":"literal","value":"brightness_high"},{"type":"literal","value":"brightness_low"},{"type":"literal","value":"brightness_medium"},{"type":"literal","value":"bring_your_own_ip"},{"type":"literal","value":"broadcast_on_home"},{"type":"literal","value":"broadcast_on_personal"},{"type":"literal","value":"broken_image"},{"type":"literal","value":"browse"},{"type":"literal","value":"browse_activity"},{"type":"literal","value":"browse_gallery"},{"type":"literal","value":"browser_not_supported"},{"type":"literal","value":"browser_updated"},{"type":"literal","value":"brunch_dining"},{"type":"literal","value":"brush"},{"type":"literal","value":"bubble_chart"},{"type":"literal","value":"bubbles"},{"type":"literal","value":"bucket_check"},{"type":"literal","value":"bug_report"},{"type":"literal","value":"build_circle"},{"type":"literal","value":"bungalow"},{"type":"literal","value":"burst_mode"},{"type":"literal","value":"bus_alert"},{"type":"literal","value":"bus_railway"},{"type":"literal","value":"business"},{"type":"literal","value":"business_center"},{"type":"literal","value":"business_chip"},{"type":"literal","value":"business_messages"},{"type":"literal","value":"buttons_alt"},{"type":"literal","value":"cabin"},{"type":"literal","value":"cable"},{"type":"literal","value":"cable_car"},{"type":"literal","value":"cached"},{"type":"literal","value":"cadence"},{"type":"literal","value":"cake"},{"type":"literal","value":"cake_add"},{"type":"literal","value":"calculate"},{"type":"literal","value":"calendar_add_on"},{"type":"literal","value":"calendar_apps_script"},{"type":"literal","value":"calendar_check"},{"type":"literal","value":"calendar_clock"},{"type":"literal","value":"calendar_lock"},{"type":"literal","value":"calendar_meal"},{"type":"literal","value":"calendar_meal_2"},{"type":"literal","value":"calendar_month"},{"type":"literal","value":"calendar_today"},{"type":"literal","value":"calendar_view_day"},{"type":"literal","value":"calendar_view_month"},{"type":"literal","value":"calendar_view_week"},{"type":"literal","value":"call"},{"type":"literal","value":"call_end"},{"type":"literal","value":"call_log"},{"type":"literal","value":"call_made"},{"type":"literal","value":"call_merge"},{"type":"literal","value":"call_missed"},{"type":"literal","value":"call_missed_outgoing"},{"type":"literal","value":"call_quality"},{"type":"literal","value":"call_received"},{"type":"literal","value":"call_split"},{"type":"literal","value":"call_to_action"},{"type":"literal","value":"camera_alt"},{"type":"literal","value":"camera_enhance"},{"type":"literal","value":"camera_front"},{"type":"literal","value":"camera_indoor"},{"type":"literal","value":"camera_outdoor"},{"type":"literal","value":"camera_rear"},{"type":"literal","value":"camera_roll"},{"type":"literal","value":"camera_video"},{"type":"literal","value":"cameraswitch"},{"type":"literal","value":"campaign"},{"type":"literal","value":"camping"},{"type":"literal","value":"cancel_presentation"},{"type":"literal","value":"cancel_schedule_send"},{"type":"literal","value":"candle"},{"type":"literal","value":"candlestick_chart"},{"type":"literal","value":"cannabis"},{"type":"literal","value":"captive_portal"},{"type":"literal","value":"capture"},{"type":"literal","value":"car_crash"},{"type":"literal","value":"car_defrost_left"},{"type":"literal","value":"car_defrost_low_left"},{"type":"literal","value":"car_defrost_low_right"},{"type":"literal","value":"car_defrost_mid_left"},{"type":"literal","value":"car_defrost_mid_low_left"},{"type":"literal","value":"car_defrost_mid_low_right"},{"type":"literal","value":"car_defrost_mid_right"},{"type":"literal","value":"car_defrost_right"},{"type":"literal","value":"car_fan_low_left"},{"type":"literal","value":"car_fan_low_mid_left"},{"type":"literal","value":"car_fan_low_right"},{"type":"literal","value":"car_fan_mid_left"},{"type":"literal","value":"car_fan_mid_low_right"},{"type":"literal","value":"car_fan_mid_right"},{"type":"literal","value":"car_fan_recirculate"},{"type":"literal","value":"car_gear"},{"type":"literal","value":"car_lock"},{"type":"literal","value":"car_mirror_heat"},{"type":"literal","value":"car_rental"},{"type":"literal","value":"car_repair"},{"type":"literal","value":"car_tag"},{"type":"literal","value":"card_giftcard"},{"type":"literal","value":"card_membership"},{"type":"literal","value":"card_travel"},{"type":"literal","value":"cardio_load"},{"type":"literal","value":"cardiology"},{"type":"literal","value":"cards"},{"type":"literal","value":"cards_star"},{"type":"literal","value":"carpenter"},{"type":"literal","value":"carry_on_bag"},{"type":"literal","value":"carry_on_bag_checked"},{"type":"literal","value":"carry_on_bag_inactive"},{"type":"literal","value":"carry_on_bag_question"},{"type":"literal","value":"cases"},{"type":"literal","value":"casino"},{"type":"literal","value":"cast"},{"type":"literal","value":"cast_connected"},{"type":"literal","value":"cast_for_education"},{"type":"literal","value":"cast_pause"},{"type":"literal","value":"cast_warning"},{"type":"literal","value":"castle"},{"type":"literal","value":"catching_pokemon"},{"type":"literal","value":"category_search"},{"type":"literal","value":"celebration"},{"type":"literal","value":"cell_merge"},{"type":"literal","value":"cell_tower"},{"type":"literal","value":"cell_wifi"},{"type":"literal","value":"center_focus_strong"},{"type":"literal","value":"center_focus_weak"},{"type":"literal","value":"chair_alt"},{"type":"literal","value":"chair_counter"},{"type":"literal","value":"chair_fireplace"},{"type":"literal","value":"chair_umbrella"},{"type":"literal","value":"chalet"},{"type":"literal","value":"change_circle"},{"type":"literal","value":"change_history"},{"type":"literal","value":"charger"},{"type":"literal","value":"charging_station"},{"type":"literal","value":"chart_data"},{"type":"literal","value":"chat"},{"type":"literal","value":"chat_add_on"},{"type":"literal","value":"chat_apps_script"},{"type":"literal","value":"chat_bubble"},{"type":"literal","value":"chat_bubble_outline"},{"type":"literal","value":"chat_error"},{"type":"literal","value":"chat_info"},{"type":"literal","value":"chat_paste_go"},{"type":"literal","value":"chat_paste_go_2"},{"type":"literal","value":"check"},{"type":"literal","value":"check_box"},{"type":"literal","value":"check_box_outline_blank"},{"type":"literal","value":"check_circle"},{"type":"literal","value":"check_circle_outline"},{"type":"literal","value":"check_circle_unread"},{"type":"literal","value":"check_in_out"},{"type":"literal","value":"check_indeterminate_small"},{"type":"literal","value":"check_small"},{"type":"literal","value":"checkbook"},{"type":"literal","value":"checked_bag"},{"type":"literal","value":"checked_bag_question"},{"type":"literal","value":"checklist_rtl"},{"type":"literal","value":"checkroom"},{"type":"literal","value":"cheer"},{"type":"literal","value":"chef_hat"},{"type":"literal","value":"chess"},{"type":"literal","value":"chess_bishop"},{"type":"literal","value":"chess_bishop_2"},{"type":"literal","value":"chess_king"},{"type":"literal","value":"chess_king_2"},{"type":"literal","value":"chess_knight"},{"type":"literal","value":"chess_pawn"},{"type":"literal","value":"chess_pawn_2"},{"type":"literal","value":"chess_queen"},{"type":"literal","value":"chess_rook"},{"type":"literal","value":"chevron_backward"},{"type":"literal","value":"chevron_forward"},{"type":"literal","value":"chevron_left"},{"type":"literal","value":"chevron_right"},{"type":"literal","value":"child_care"},{"type":"literal","value":"child_friendly"},{"type":"literal","value":"child_hat"},{"type":"literal","value":"chip_extraction"},{"type":"literal","value":"chips"},{"type":"literal","value":"chrome_reader_mode"},{"type":"literal","value":"chromecast_2"},{"type":"literal","value":"chromecast_device"},{"type":"literal","value":"chronic"},{"type":"literal","value":"church"},{"type":"literal","value":"cinematic_blur"},{"type":"literal","value":"circle_notifications"},{"type":"literal","value":"circles"},{"type":"literal","value":"circles_ext"},{"type":"literal","value":"clarify"},{"type":"literal","value":"clean_hands"},{"type":"literal","value":"cleaning"},{"type":"literal","value":"cleaning_bucket"},{"type":"literal","value":"cleaning_services"},{"type":"literal","value":"clear_all"},{"type":"literal","value":"clear_day"},{"type":"literal","value":"climate_mini_split"},{"type":"literal","value":"clinical_notes"},{"type":"literal","value":"clock_arrow_down"},{"type":"literal","value":"clock_arrow_up"},{"type":"literal","value":"clock_loader_10"},{"type":"literal","value":"clock_loader_20"},{"type":"literal","value":"clock_loader_40"},{"type":"literal","value":"clock_loader_60"},{"type":"literal","value":"clock_loader_80"},{"type":"literal","value":"clock_loader_90"},{"type":"literal","value":"close_fullscreen"},{"type":"literal","value":"close_small"},{"type":"literal","value":"closed_caption"},{"type":"literal","value":"closed_caption_add"},{"type":"literal","value":"closed_caption_disabled"},{"type":"literal","value":"closed_caption_off"},{"type":"literal","value":"cloud_alert"},{"type":"literal","value":"cloud_circle"},{"type":"literal","value":"cloud_done"},{"type":"literal","value":"cloud_download"},{"type":"literal","value":"cloud_lock"},{"type":"literal","value":"cloud_off"},{"type":"literal","value":"cloud_queue"},{"type":"literal","value":"cloud_sync"},{"type":"literal","value":"cloud_upload"},{"type":"literal","value":"cloudy_snowing"},{"type":"literal","value":"co2"},{"type":"literal","value":"co_present"},{"type":"literal","value":"code_blocks"},{"type":"literal","value":"code_off"},{"type":"literal","value":"coffee"},{"type":"literal","value":"coffee_maker"},{"type":"literal","value":"cognition"},{"type":"literal","value":"cognition_2"},{"type":"literal","value":"collapse_all"},{"type":"literal","value":"collapse_content"},{"type":"literal","value":"collections"},{"type":"literal","value":"collections_bookmark"},{"type":"literal","value":"color_lens"},{"type":"literal","value":"colorize"},{"type":"literal","value":"combine_columns"},{"type":"literal","value":"comedy_mask"},{"type":"literal","value":"comic_bubble"},{"type":"literal","value":"comment_bank"},{"type":"literal","value":"comments_disabled"},{"type":"literal","value":"commit"},{"type":"literal","value":"communication"},{"type":"literal","value":"communities"},{"type":"literal","value":"commute"},{"type":"literal","value":"compare"},{"type":"literal","value":"compare_arrows"},{"type":"literal","value":"compass_calibration"},{"type":"literal","value":"component_exchange"},{"type":"literal","value":"compost"},{"type":"literal","value":"compress"},{"type":"literal","value":"computer"},{"type":"literal","value":"computer_arrow_up"},{"type":"literal","value":"computer_cancel"},{"type":"literal","value":"concierge"},{"type":"literal","value":"conditions"},{"type":"literal","value":"confirmation_number"},{"type":"literal","value":"congenital"},{"type":"literal","value":"connect_without_contact"},{"type":"literal","value":"connected_tv"},{"type":"literal","value":"connecting_airports"},{"type":"literal","value":"construction"},{"type":"literal","value":"contact_emergency"},{"type":"literal","value":"contact_mail"},{"type":"literal","value":"contact_page"},{"type":"literal","value":"contact_phone"},{"type":"literal","value":"contact_support"},{"type":"literal","value":"contactless"},{"type":"literal","value":"contactless_off"},{"type":"literal","value":"contacts"},{"type":"literal","value":"contacts_product"},{"type":"literal","value":"content_copy"},{"type":"literal","value":"content_cut"},{"type":"literal","value":"content_paste"},{"type":"literal","value":"content_paste_go"},{"type":"literal","value":"content_paste_off"},{"type":"literal","value":"content_paste_search"},{"type":"literal","value":"contextual_token"},{"type":"literal","value":"contextual_token_add"},{"type":"literal","value":"contract"},{"type":"literal","value":"contract_delete"},{"type":"literal","value":"contract_edit"},{"type":"literal","value":"contrast_circle"},{"type":"literal","value":"contrast_rtl_off"},{"type":"literal","value":"contrast_square"},{"type":"literal","value":"control_camera"},{"type":"literal","value":"control_point"},{"type":"literal","value":"control_point_duplicate"},{"type":"literal","value":"controller_gen"},{"type":"literal","value":"conversation"},{"type":"literal","value":"conversion_path"},{"type":"literal","value":"conversion_path_off"},{"type":"literal","value":"convert_to_text"},{"type":"literal","value":"conveyor_belt"},{"type":"literal","value":"cookie"},{"type":"literal","value":"cookie_off"},{"type":"literal","value":"cooking"},{"type":"literal","value":"cool_to_dry"},{"type":"literal","value":"copy_all"},{"type":"literal","value":"copyright"},{"type":"literal","value":"coronavirus"},{"type":"literal","value":"corporate_fare"},{"type":"literal","value":"cottage"},{"type":"literal","value":"counter_0"},{"type":"literal","value":"counter_1"},{"type":"literal","value":"counter_2"},{"type":"literal","value":"counter_3"},{"type":"literal","value":"counter_4"},{"type":"literal","value":"counter_5"},{"type":"literal","value":"counter_6"},{"type":"literal","value":"counter_7"},{"type":"literal","value":"counter_8"},{"type":"literal","value":"counter_9"},{"type":"literal","value":"countertops"},{"type":"literal","value":"create"},{"type":"literal","value":"create_new_folder"},{"type":"literal","value":"credit_card"},{"type":"literal","value":"credit_card_clock"},{"type":"literal","value":"credit_card_gear"},{"type":"literal","value":"credit_card_heart"},{"type":"literal","value":"credit_card_off"},{"type":"literal","value":"credit_score"},{"type":"literal","value":"crib"},{"type":"literal","value":"crisis_alert"},{"type":"literal","value":"crop_16_9"},{"type":"literal","value":"crop_3_2"},{"type":"literal","value":"crop_5_4"},{"type":"literal","value":"crop_7_5"},{"type":"literal","value":"crop_9_16"},{"type":"literal","value":"crop_din"},{"type":"literal","value":"crop_free"},{"type":"literal","value":"crop_landscape"},{"type":"literal","value":"crop_original"},{"type":"literal","value":"crop_portrait"},{"type":"literal","value":"crop_rotate"},{"type":"literal","value":"crop_square"},{"type":"literal","value":"crossword"},{"type":"literal","value":"crowdsource"},{"type":"literal","value":"cruelty_free"},{"type":"literal","value":"css"},{"type":"literal","value":"csv"},{"type":"literal","value":"currency_bitcoin"},{"type":"literal","value":"currency_exchange"},{"type":"literal","value":"currency_franc"},{"type":"literal","value":"currency_lira"},{"type":"literal","value":"currency_pound"},{"type":"literal","value":"currency_ruble"},{"type":"literal","value":"currency_rupee"},{"type":"literal","value":"currency_rupee_circle"},{"type":"literal","value":"currency_yen"},{"type":"literal","value":"currency_yuan"},{"type":"literal","value":"curtains"},{"type":"literal","value":"curtains_closed"},{"type":"literal","value":"custom_typography"},{"type":"literal","value":"cycle"},{"type":"literal","value":"cyclone"},{"type":"literal","value":"dark_mode"},{"type":"literal","value":"dashboard"},{"type":"literal","value":"dashboard_2"},{"type":"literal","value":"dashboard_customize"},{"type":"literal","value":"data_alert"},{"type":"literal","value":"data_array"},{"type":"literal","value":"data_check"},{"type":"literal","value":"data_exploration"},{"type":"literal","value":"data_info_alert"},{"type":"literal","value":"data_loss_prevention"},{"type":"literal","value":"data_object"},{"type":"literal","value":"data_saver_off"},{"type":"literal","value":"data_saver_on"},{"type":"literal","value":"data_table"},{"type":"literal","value":"data_thresholding"},{"type":"literal","value":"data_usage"},{"type":"literal","value":"database"},{"type":"literal","value":"database_off"},{"type":"literal","value":"database_search"},{"type":"literal","value":"database_upload"},{"type":"literal","value":"dataset"},{"type":"literal","value":"dataset_linked"},{"type":"literal","value":"date_range"},{"type":"literal","value":"deblur"},{"type":"literal","value":"deceased"},{"type":"literal","value":"decimal_decrease"},{"type":"literal","value":"decimal_increase"},{"type":"literal","value":"deck"},{"type":"literal","value":"dehaze"},{"type":"literal","value":"delete_forever"},{"type":"literal","value":"delete_history"},{"type":"literal","value":"delete_outline"},{"type":"literal","value":"delete_sweep"},{"type":"literal","value":"delivery_dining"},{"type":"literal","value":"delivery_truck_bolt"},{"type":"literal","value":"delivery_truck_speed"},{"type":"literal","value":"demography"},{"type":"literal","value":"density_large"},{"type":"literal","value":"density_medium"},{"type":"literal","value":"density_small"},{"type":"literal","value":"dentistry"},{"type":"literal","value":"departure_board"},{"type":"literal","value":"deployed_code"},{"type":"literal","value":"deployed_code_account"},{"type":"literal","value":"deployed_code_alert"},{"type":"literal","value":"deployed_code_history"},{"type":"literal","value":"deployed_code_update"},{"type":"literal","value":"dermatology"},{"type":"literal","value":"deselect"},{"type":"literal","value":"design_services"},{"type":"literal","value":"desk"},{"type":"literal","value":"deskphone"},{"type":"literal","value":"desktop_access_disabled"},{"type":"literal","value":"desktop_cloud"},{"type":"literal","value":"desktop_cloud_stack"},{"type":"literal","value":"desktop_landscape"},{"type":"literal","value":"desktop_landscape_add"},{"type":"literal","value":"desktop_mac"},{"type":"literal","value":"desktop_portrait"},{"type":"literal","value":"desktop_windows"},{"type":"literal","value":"destruction"},{"type":"literal","value":"detection_and_zone"},{"type":"literal","value":"detector"},{"type":"literal","value":"detector_alarm"},{"type":"literal","value":"detector_battery"},{"type":"literal","value":"detector_co"},{"type":"literal","value":"detector_offline"},{"type":"literal","value":"detector_smoke"},{"type":"literal","value":"detector_status"},{"type":"literal","value":"developer_board"},{"type":"literal","value":"developer_board_off"},{"type":"literal","value":"developer_guide"},{"type":"literal","value":"developer_mode"},{"type":"literal","value":"developer_mode_tv"},{"type":"literal","value":"device_band"},{"type":"literal","value":"device_hub"},{"type":"literal","value":"device_thermostat"},{"type":"literal","value":"device_unknown"},{"type":"literal","value":"devices"},{"type":"literal","value":"devices_fold"},{"type":"literal","value":"devices_fold_2"},{"type":"literal","value":"devices_off"},{"type":"literal","value":"devices_other"},{"type":"literal","value":"devices_wearables"},{"type":"literal","value":"dew_point"},{"type":"literal","value":"diagnosis"},{"type":"literal","value":"diagonal_line"},{"type":"literal","value":"dialer_sip"},{"type":"literal","value":"dialogs"},{"type":"literal","value":"dialpad"},{"type":"literal","value":"diamond_shine"},{"type":"literal","value":"dictionary"},{"type":"literal","value":"digital_out_of_home"},{"type":"literal","value":"digital_wellbeing"},{"type":"literal","value":"dine_heart"},{"type":"literal","value":"dine_in"},{"type":"literal","value":"dine_lamp"},{"type":"literal","value":"dining"},{"type":"literal","value":"dinner_dining"},{"type":"literal","value":"directions"},{"type":"literal","value":"directions_alt"},{"type":"literal","value":"directions_alt_off"},{"type":"literal","value":"directions_bike"},{"type":"literal","value":"directions_boat"},{"type":"literal","value":"directions_boat_filled"},{"type":"literal","value":"directions_bus"},{"type":"literal","value":"directions_bus_filled"},{"type":"literal","value":"directions_car"},{"type":"literal","value":"directions_car_filled"},{"type":"literal","value":"directions_off"},{"type":"literal","value":"directions_railway"},{"type":"literal","value":"directions_railway_2"},{"type":"literal","value":"directions_railway_filled"},{"type":"literal","value":"directions_run"},{"type":"literal","value":"directions_subway"},{"type":"literal","value":"directions_subway_filled"},{"type":"literal","value":"directions_transit"},{"type":"literal","value":"directions_transit_filled"},{"type":"literal","value":"directions_walk"},{"type":"literal","value":"directory_sync"},{"type":"literal","value":"dirty_lens"},{"type":"literal","value":"disabled_by_default"},{"type":"literal","value":"disabled_visible"},{"type":"literal","value":"disc_full"},{"type":"literal","value":"discount"},{"type":"literal","value":"discover_tune"},{"type":"literal","value":"dishwasher_gen"},{"type":"literal","value":"display_external_input"},{"type":"literal","value":"display_settings"},{"type":"literal","value":"distance"},{"type":"literal","value":"diversity_1"},{"type":"literal","value":"diversity_2"},{"type":"literal","value":"diversity_3"},{"type":"literal","value":"diversity_4"},{"type":"literal","value":"dns"},{"type":"literal","value":"do_disturb"},{"type":"literal","value":"do_disturb_alt"},{"type":"literal","value":"do_disturb_off"},{"type":"literal","value":"do_disturb_on"},{"type":"literal","value":"do_not_disturb"},{"type":"literal","value":"do_not_disturb_alt"},{"type":"literal","value":"do_not_disturb_off"},{"type":"literal","value":"do_not_disturb_on"},{"type":"literal","value":"do_not_disturb_on_total_silence"},{"type":"literal","value":"do_not_step"},{"type":"literal","value":"do_not_touch"},{"type":"literal","value":"dock"},{"type":"literal","value":"dock_to_bottom"},{"type":"literal","value":"dock_to_left"},{"type":"literal","value":"dock_to_right"},{"type":"literal","value":"docs"},{"type":"literal","value":"docs_add_on"},{"type":"literal","value":"docs_apps_script"},{"type":"literal","value":"document_scanner"},{"type":"literal","value":"document_search"},{"type":"literal","value":"domain"},{"type":"literal","value":"domain_add"},{"type":"literal","value":"domain_disabled"},{"type":"literal","value":"domain_verification"},{"type":"literal","value":"domain_verification_off"},{"type":"literal","value":"domino_mask"},{"type":"literal","value":"done_all"},{"type":"literal","value":"done_outline"},{"type":"literal","value":"donut_large"},{"type":"literal","value":"donut_small"},{"type":"literal","value":"door_back"},{"type":"literal","value":"door_front"},{"type":"literal","value":"door_open"},{"type":"literal","value":"door_sensor"},{"type":"literal","value":"door_sliding"},{"type":"literal","value":"doorbell"},{"type":"literal","value":"doorbell_3p"},{"type":"literal","value":"doorbell_chime"},{"type":"literal","value":"double_arrow"},{"type":"literal","value":"downhill_skiing"},{"type":"literal","value":"download_2"},{"type":"literal","value":"download_done"},{"type":"literal","value":"download_for_offline"},{"type":"literal","value":"downloading"},{"type":"literal","value":"draft"},{"type":"literal","value":"draft_orders"},{"type":"literal","value":"drafts"},{"type":"literal","value":"drag_click"},{"type":"literal","value":"drag_handle"},{"type":"literal","value":"drag_indicator"},{"type":"literal","value":"drag_pan"},{"type":"literal","value":"draw"},{"type":"literal","value":"draw_abstract"},{"type":"literal","value":"draw_collage"},{"type":"literal","value":"dresser"},{"type":"literal","value":"drive_eta"},{"type":"literal","value":"drive_export"},{"type":"literal","value":"drive_file_move"},{"type":"literal","value":"drive_file_move_outline"},{"type":"literal","value":"drive_file_move_rtl"},{"type":"literal","value":"drive_file_rename_outline"},{"type":"literal","value":"drive_folder_upload"},{"type":"literal","value":"drone_2"},{"type":"literal","value":"dropdown"},{"type":"literal","value":"dropper_eye"},{"type":"literal","value":"dry"},{"type":"literal","value":"dry_cleaning"},{"type":"literal","value":"dual_screen"},{"type":"literal","value":"duo"},{"type":"literal","value":"dvr"},{"type":"literal","value":"dynamic_feed"},{"type":"literal","value":"dynamic_form"},{"type":"literal","value":"e911_avatar"},{"type":"literal","value":"e911_emergency"},{"type":"literal","value":"e_mobiledata"},{"type":"literal","value":"e_mobiledata_badge"},{"type":"literal","value":"ear_sound"},{"type":"literal","value":"earbud_case"},{"type":"literal","value":"earbud_left"},{"type":"literal","value":"earbud_right"},{"type":"literal","value":"earbuds_2"},{"type":"literal","value":"earbuds_battery"},{"type":"literal","value":"early_on"},{"type":"literal","value":"earthquake"},{"type":"literal","value":"east"},{"type":"literal","value":"ecg"},{"type":"literal","value":"ecg_heart"},{"type":"literal","value":"eco"},{"type":"literal","value":"eda"},{"type":"literal","value":"edgesensor_high"},{"type":"literal","value":"edgesensor_low"},{"type":"literal","value":"edit"},{"type":"literal","value":"edit_arrow_down"},{"type":"literal","value":"edit_arrow_up"},{"type":"literal","value":"edit_attributes"},{"type":"literal","value":"edit_audio"},{"type":"literal","value":"edit_calendar"},{"type":"literal","value":"edit_document"},{"type":"literal","value":"edit_location"},{"type":"literal","value":"edit_location_alt"},{"type":"literal","value":"edit_note"},{"type":"literal","value":"edit_notifications"},{"type":"literal","value":"edit_off"},{"type":"literal","value":"edit_road"},{"type":"literal","value":"edit_square"},{"type":"literal","value":"editor_choice"},{"type":"literal","value":"egg"},{"type":"literal","value":"egg_alt"},{"type":"literal","value":"elderly"},{"type":"literal","value":"elderly_woman"},{"type":"literal","value":"electric_bike"},{"type":"literal","value":"electric_bolt"},{"type":"literal","value":"electric_car"},{"type":"literal","value":"electric_meter"},{"type":"literal","value":"electric_moped"},{"type":"literal","value":"electric_rickshaw"},{"type":"literal","value":"electric_scooter"},{"type":"literal","value":"electrical_services"},{"type":"literal","value":"elevator"},{"type":"literal","value":"emergency"},{"type":"literal","value":"emergency_heat"},{"type":"literal","value":"emergency_heat_2"},{"type":"literal","value":"emergency_home"},{"type":"literal","value":"emergency_recording"},{"type":"literal","value":"emergency_share"},{"type":"literal","value":"emergency_share_off"},{"type":"literal","value":"emoji_emotions"},{"type":"literal","value":"emoji_events"},{"type":"literal","value":"emoji_food_beverage"},{"type":"literal","value":"emoji_language"},{"type":"literal","value":"emoji_nature"},{"type":"literal","value":"emoji_objects"},{"type":"literal","value":"emoji_people"},{"type":"literal","value":"emoji_symbols"},{"type":"literal","value":"emoji_transportation"},{"type":"literal","value":"emoticon"},{"type":"literal","value":"empty_dashboard"},{"type":"literal","value":"encrypted"},{"type":"literal","value":"encrypted_add"},{"type":"literal","value":"encrypted_add_circle"},{"type":"literal","value":"encrypted_minus_circle"},{"type":"literal","value":"encrypted_off"},{"type":"literal","value":"endocrinology"},{"type":"literal","value":"energy"},{"type":"literal","value":"energy_program_saving"},{"type":"literal","value":"energy_program_time_used"},{"type":"literal","value":"energy_savings_leaf"},{"type":"literal","value":"engineering"},{"type":"literal","value":"enhanced_encryption"},{"type":"literal","value":"ent"},{"type":"literal","value":"enterprise"},{"type":"literal","value":"enterprise_off"},{"type":"literal","value":"equalizer"},{"type":"literal","value":"eraser_size_1"},{"type":"literal","value":"eraser_size_2"},{"type":"literal","value":"eraser_size_3"},{"type":"literal","value":"eraser_size_4"},{"type":"literal","value":"eraser_size_5"},{"type":"literal","value":"error_med"},{"type":"literal","value":"error_outline"},{"type":"literal","value":"escalator"},{"type":"literal","value":"escalator_warning"},{"type":"literal","value":"euro"},{"type":"literal","value":"euro_symbol"},{"type":"literal","value":"ev_mobiledata_badge"},{"type":"literal","value":"ev_shadow"},{"type":"literal","value":"ev_shadow_add"},{"type":"literal","value":"ev_shadow_minus"},{"type":"literal","value":"ev_station"},{"type":"literal","value":"event_available"},{"type":"literal","value":"event_busy"},{"type":"literal","value":"event_list"},{"type":"literal","value":"event_note"},{"type":"literal","value":"event_repeat"},{"type":"literal","value":"event_seat"},{"type":"literal","value":"event_upcoming"},{"type":"literal","value":"exclamation"},{"type":"literal","value":"exercise"},{"type":"literal","value":"exit_to_app"},{"type":"literal","value":"expand"},{"type":"literal","value":"expand_all"},{"type":"literal","value":"expand_circle_down"},{"type":"literal","value":"expand_circle_right"},{"type":"literal","value":"expand_circle_up"},{"type":"literal","value":"expand_content"},{"type":"literal","value":"expand_less"},{"type":"literal","value":"expand_more"},{"type":"literal","value":"expansion_panels"},{"type":"literal","value":"experiment"},{"type":"literal","value":"explicit"},{"type":"literal","value":"explore"},{"type":"literal","value":"explore_nearby"},{"type":"literal","value":"explore_off"},{"type":"literal","value":"explosion"},{"type":"literal","value":"export_notes"},{"type":"literal","value":"exposure"},{"type":"literal","value":"exposure_neg_1"},{"type":"literal","value":"exposure_neg_2"},{"type":"literal","value":"exposure_plus_1"},{"type":"literal","value":"exposure_plus_2"},{"type":"literal","value":"exposure_zero"},{"type":"literal","value":"extension"},{"type":"literal","value":"extension_off"},{"type":"literal","value":"eye_tracking"},{"type":"literal","value":"eyeglasses_2"},{"type":"literal","value":"eyeglasses_2_sound"},{"type":"literal","value":"face"},{"type":"literal","value":"face_2"},{"type":"literal","value":"face_3"},{"type":"literal","value":"face_4"},{"type":"literal","value":"face_5"},{"type":"literal","value":"face_6"},{"type":"literal","value":"face_down"},{"type":"literal","value":"face_left"},{"type":"literal","value":"face_nod"},{"type":"literal","value":"face_retouching_natural"},{"type":"literal","value":"face_retouching_off"},{"type":"literal","value":"face_right"},{"type":"literal","value":"face_shake"},{"type":"literal","value":"face_unlock"},{"type":"literal","value":"face_up"},{"type":"literal","value":"fact_check"},{"type":"literal","value":"factory"},{"type":"literal","value":"falling"},{"type":"literal","value":"familiar_face_and_zone"},{"type":"literal","value":"family_group"},{"type":"literal","value":"family_history"},{"type":"literal","value":"family_home"},{"type":"literal","value":"family_link"},{"type":"literal","value":"family_restroom"},{"type":"literal","value":"family_star"},{"type":"literal","value":"fan_focus"},{"type":"literal","value":"fan_indirect"},{"type":"literal","value":"farsight_digital"},{"type":"literal","value":"fast_forward"},{"type":"literal","value":"fast_rewind"},{"type":"literal","value":"fastfood"},{"type":"literal","value":"faucet"},{"type":"literal","value":"favorite"},{"type":"literal","value":"favorite_border"},{"type":"literal","value":"fax"},{"type":"literal","value":"feature_search"},{"type":"literal","value":"featured_play_list"},{"type":"literal","value":"featured_seasonal_and_gifts"},{"type":"literal","value":"featured_video"},{"type":"literal","value":"feedback"},{"type":"literal","value":"female"},{"type":"literal","value":"femur"},{"type":"literal","value":"femur_alt"},{"type":"literal","value":"fence"},{"type":"literal","value":"fertile"},{"type":"literal","value":"festival"},{"type":"literal","value":"fiber_dvr"},{"type":"literal","value":"fiber_manual_record"},{"type":"literal","value":"fiber_new"},{"type":"literal","value":"fiber_pin"},{"type":"literal","value":"fiber_smart_record"},{"type":"literal","value":"file_copy"},{"type":"literal","value":"file_copy_off"},{"type":"literal","value":"file_download"},{"type":"literal","value":"file_download_done"},{"type":"literal","value":"file_download_off"},{"type":"literal","value":"file_export"},{"type":"literal","value":"file_json"},{"type":"literal","value":"file_map"},{"type":"literal","value":"file_map_stack"},{"type":"literal","value":"file_open"},{"type":"literal","value":"file_png"},{"type":"literal","value":"file_present"},{"type":"literal","value":"file_save"},{"type":"literal","value":"file_save_off"},{"type":"literal","value":"file_upload"},{"type":"literal","value":"file_upload_off"},{"type":"literal","value":"files"},{"type":"literal","value":"filter_1"},{"type":"literal","value":"filter_2"},{"type":"literal","value":"filter_3"},{"type":"literal","value":"filter_4"},{"type":"literal","value":"filter_5"},{"type":"literal","value":"filter_6"},{"type":"literal","value":"filter_7"},{"type":"literal","value":"filter_8"},{"type":"literal","value":"filter_9"},{"type":"literal","value":"filter_9_plus"},{"type":"literal","value":"filter_alt"},{"type":"literal","value":"filter_alt_off"},{"type":"literal","value":"filter_arrow_right"},{"type":"literal","value":"filter_b_and_w"},{"type":"literal","value":"filter_center_focus"},{"type":"literal","value":"filter_drama"},{"type":"literal","value":"filter_frames"},{"type":"literal","value":"filter_hdr"},{"type":"literal","value":"filter_list"},{"type":"literal","value":"filter_list_alt"},{"type":"literal","value":"filter_list_off"},{"type":"literal","value":"filter_none"},{"type":"literal","value":"filter_retrolux"},{"type":"literal","value":"filter_tilt_shift"},{"type":"literal","value":"filter_vintage"},{"type":"literal","value":"finance"},{"type":"literal","value":"finance_chip"},{"type":"literal","value":"finance_mode"},{"type":"literal","value":"find_in_page"},{"type":"literal","value":"find_replace"},{"type":"literal","value":"fingerprint_off"},{"type":"literal","value":"fire_extinguisher"},{"type":"literal","value":"fire_hydrant"},{"type":"literal","value":"fire_hydrant_alt"},{"type":"literal","value":"fire_truck"},{"type":"literal","value":"first_page"},{"type":"literal","value":"fit_page"},{"type":"literal","value":"fit_page_height"},{"type":"literal","value":"fit_page_width"},{"type":"literal","value":"fit_screen"},{"type":"literal","value":"fit_width"},{"type":"literal","value":"fitbit"},{"type":"literal","value":"fitness_center"},{"type":"literal","value":"fitness_tracker"},{"type":"literal","value":"fitness_trackers"},{"type":"literal","value":"flag_2"},{"type":"literal","value":"flag_check"},{"type":"literal","value":"flag_circle"},{"type":"literal","value":"flaky"},{"type":"literal","value":"flare"},{"type":"literal","value":"flash_auto"},{"type":"literal","value":"flash_off"},{"type":"literal","value":"flash_on"},{"type":"literal","value":"flashlight_off"},{"type":"literal","value":"flashlight_on"},{"type":"literal","value":"flatware"},{"type":"literal","value":"flex_direction"},{"type":"literal","value":"flex_no_wrap"},{"type":"literal","value":"flex_wrap"},{"type":"literal","value":"flight"},{"type":"literal","value":"flight_class"},{"type":"literal","value":"flight_land"},{"type":"literal","value":"flight_takeoff"},{"type":"literal","value":"flights_and_hotels"},{"type":"literal","value":"flip_camera_android"},{"type":"literal","value":"flip_camera_ios"},{"type":"literal","value":"flip_to_back"},{"type":"literal","value":"flip_to_front"},{"type":"literal","value":"float_landscape_2"},{"type":"literal","value":"float_portrait_2"},{"type":"literal","value":"flood"},{"type":"literal","value":"floor"},{"type":"literal","value":"floor_lamp"},{"type":"literal","value":"flowsheet"},{"type":"literal","value":"fluid"},{"type":"literal","value":"fluid_balance"},{"type":"literal","value":"fluid_med"},{"type":"literal","value":"fluorescent"},{"type":"literal","value":"flutter"},{"type":"literal","value":"flutter_dash"},{"type":"literal","value":"flyover"},{"type":"literal","value":"fmd_bad"},{"type":"literal","value":"fmd_good"},{"type":"literal","value":"foggy"},{"type":"literal","value":"folded_hands"},{"type":"literal","value":"folder_check"},{"type":"literal","value":"folder_check_2"},{"type":"literal","value":"folder_code"},{"type":"literal","value":"folder_copy"},{"type":"literal","value":"folder_data"},{"type":"literal","value":"folder_delete"},{"type":"literal","value":"folder_eye"},{"type":"literal","value":"folder_info"},{"type":"literal","value":"folder_limited"},{"type":"literal","value":"folder_managed"},{"type":"literal","value":"folder_match"},{"type":"literal","value":"folder_off"},{"type":"literal","value":"folder_open"},{"type":"literal","value":"folder_shared"},{"type":"literal","value":"folder_special"},{"type":"literal","value":"folder_supervised"},{"type":"literal","value":"folder_zip"},{"type":"literal","value":"follow_the_signs"},{"type":"literal","value":"font_download"},{"type":"literal","value":"font_download_off"},{"type":"literal","value":"food_bank"},{"type":"literal","value":"foot_bones"},{"type":"literal","value":"footprint"},{"type":"literal","value":"for_you"},{"type":"literal","value":"forest"},{"type":"literal","value":"fork_left"},{"type":"literal","value":"fork_right"},{"type":"literal","value":"fork_spoon"},{"type":"literal","value":"forklift"},{"type":"literal","value":"format_align_center"},{"type":"literal","value":"format_align_justify"},{"type":"literal","value":"format_align_left"},{"type":"literal","value":"format_align_right"},{"type":"literal","value":"format_bold"},{"type":"literal","value":"format_clear"},{"type":"literal","value":"format_color_fill"},{"type":"literal","value":"format_color_reset"},{"type":"literal","value":"format_color_text"},{"type":"literal","value":"format_h1"},{"type":"literal","value":"format_h2"},{"type":"literal","value":"format_h3"},{"type":"literal","value":"format_h4"},{"type":"literal","value":"format_h5"},{"type":"literal","value":"format_h6"},{"type":"literal","value":"format_image_left"},{"type":"literal","value":"format_image_right"},{"type":"literal","value":"format_indent_decrease"},{"type":"literal","value":"format_indent_increase"},{"type":"literal","value":"format_ink_highlighter"},{"type":"literal","value":"format_italic"},{"type":"literal","value":"format_letter_spacing"},{"type":"literal","value":"format_letter_spacing_2"},{"type":"literal","value":"format_letter_spacing_standard"},{"type":"literal","value":"format_letter_spacing_wide"},{"type":"literal","value":"format_letter_spacing_wider"},{"type":"literal","value":"format_line_spacing"},{"type":"literal","value":"format_list_bulleted"},{"type":"literal","value":"format_list_bulleted_add"},{"type":"literal","value":"format_list_numbered"},{"type":"literal","value":"format_list_numbered_rtl"},{"type":"literal","value":"format_overline"},{"type":"literal","value":"format_paint"},{"type":"literal","value":"format_paragraph"},{"type":"literal","value":"format_quote"},{"type":"literal","value":"format_quote_off"},{"type":"literal","value":"format_shapes"},{"type":"literal","value":"format_size"},{"type":"literal","value":"format_strikethrough"},{"type":"literal","value":"format_text_clip"},{"type":"literal","value":"format_text_overflow"},{"type":"literal","value":"format_text_wrap"},{"type":"literal","value":"format_textdirection_l_to_r"},{"type":"literal","value":"format_textdirection_r_to_l"},{"type":"literal","value":"format_textdirection_vertical"},{"type":"literal","value":"format_underlined"},{"type":"literal","value":"format_underlined_squiggle"},{"type":"literal","value":"forms_add_on"},{"type":"literal","value":"forms_apps_script"},{"type":"literal","value":"fort"},{"type":"literal","value":"forum"},{"type":"literal","value":"forward_10"},{"type":"literal","value":"forward_30"},{"type":"literal","value":"forward_5"},{"type":"literal","value":"forward_circle"},{"type":"literal","value":"forward_media"},{"type":"literal","value":"forward_to_inbox"},{"type":"literal","value":"foundation"},{"type":"literal","value":"fragrance"},{"type":"literal","value":"frame_inspect"},{"type":"literal","value":"frame_person"},{"type":"literal","value":"frame_person_mic"},{"type":"literal","value":"frame_person_off"},{"type":"literal","value":"frame_reload"},{"type":"literal","value":"frame_source"},{"type":"literal","value":"free_breakfast"},{"type":"literal","value":"free_cancellation"},{"type":"literal","value":"front_hand"},{"type":"literal","value":"front_loader"},{"type":"literal","value":"full_coverage"},{"type":"literal","value":"full_hd"},{"type":"literal","value":"full_stacked_bar_chart"},{"type":"literal","value":"fullscreen_exit"},{"type":"literal","value":"fullscreen_portrait"},{"type":"literal","value":"functions"},{"type":"literal","value":"funicular"},{"type":"literal","value":"g_mobiledata"},{"type":"literal","value":"g_mobiledata_badge"},{"type":"literal","value":"g_translate"},{"type":"literal","value":"gallery_thumbnail"},{"type":"literal","value":"gamepad"},{"type":"literal","value":"games"},{"type":"literal","value":"garage"},{"type":"literal","value":"garage_check"},{"type":"literal","value":"garage_door"},{"type":"literal","value":"garage_home"},{"type":"literal","value":"garage_money"},{"type":"literal","value":"garden_cart"},{"type":"literal","value":"gas_meter"},{"type":"literal","value":"gastroenterology"},{"type":"literal","value":"gate"},{"type":"literal","value":"gavel"},{"type":"literal","value":"general_device"},{"type":"literal","value":"generating_tokens"},{"type":"literal","value":"genetics"},{"type":"literal","value":"genres"},{"type":"literal","value":"gesture"},{"type":"literal","value":"gesture_select"},{"type":"literal","value":"get_app"},{"type":"literal","value":"gif"},{"type":"literal","value":"gif_2"},{"type":"literal","value":"gif_box"},{"type":"literal","value":"girl"},{"type":"literal","value":"gite"},{"type":"literal","value":"glass_cup"},{"type":"literal","value":"globe_asia"},{"type":"literal","value":"globe_book"},{"type":"literal","value":"globe_location_pin"},{"type":"literal","value":"globe_uk"},{"type":"literal","value":"glucose"},{"type":"literal","value":"glyphs"},{"type":"literal","value":"go_to_line"},{"type":"literal","value":"golf_course"},{"type":"literal","value":"gondola_lift"},{"type":"literal","value":"google_home_devices"},{"type":"literal","value":"google_tv_remote"},{"type":"literal","value":"google_wifi"},{"type":"literal","value":"gpp_bad"},{"type":"literal","value":"gpp_good"},{"type":"literal","value":"gpp_maybe"},{"type":"literal","value":"gps_fixed"},{"type":"literal","value":"gps_not_fixed"},{"type":"literal","value":"gps_off"},{"type":"literal","value":"grade"},{"type":"literal","value":"gradient"},{"type":"literal","value":"grading"},{"type":"literal","value":"grain"},{"type":"literal","value":"graph_1"},{"type":"literal","value":"graph_2"},{"type":"literal","value":"graph_3"},{"type":"literal","value":"graph_4"},{"type":"literal","value":"graph_5"},{"type":"literal","value":"graph_6"},{"type":"literal","value":"graph_7"},{"type":"literal","value":"graphic_eq"},{"type":"literal","value":"grass"},{"type":"literal","value":"grid_3x3"},{"type":"literal","value":"grid_3x3_off"},{"type":"literal","value":"grid_4x4"},{"type":"literal","value":"grid_goldenratio"},{"type":"literal","value":"grid_guides"},{"type":"literal","value":"grid_off"},{"type":"literal","value":"grid_on"},{"type":"literal","value":"grid_view"},{"type":"literal","value":"grocery"},{"type":"literal","value":"group_add"},{"type":"literal","value":"group_off"},{"type":"literal","value":"group_remove"},{"type":"literal","value":"group_search"},{"type":"literal","value":"group_work"},{"type":"literal","value":"grouped_bar_chart"},{"type":"literal","value":"groups"},{"type":"literal","value":"groups_2"},{"type":"literal","value":"groups_3"},{"type":"literal","value":"guardian"},{"type":"literal","value":"gynecology"},{"type":"literal","value":"h_mobiledata"},{"type":"literal","value":"h_mobiledata_badge"},{"type":"literal","value":"h_plus_mobiledata"},{"type":"literal","value":"h_plus_mobiledata_badge"},{"type":"literal","value":"hail"},{"type":"literal","value":"hallway"},{"type":"literal","value":"hanami_dango"},{"type":"literal","value":"hand_bones"},{"type":"literal","value":"hand_gesture"},{"type":"literal","value":"hand_gesture_off"},{"type":"literal","value":"hand_meal"},{"type":"literal","value":"hand_package"},{"type":"literal","value":"handheld_controller"},{"type":"literal","value":"handshake"},{"type":"literal","value":"handyman"},{"type":"literal","value":"hangout_video"},{"type":"literal","value":"hangout_video_off"},{"type":"literal","value":"hard_disk"},{"type":"literal","value":"hard_drive"},{"type":"literal","value":"hard_drive_2"},{"type":"literal","value":"hardware"},{"type":"literal","value":"hd"},{"type":"literal","value":"hdr_auto"},{"type":"literal","value":"hdr_auto_select"},{"type":"literal","value":"hdr_enhanced_select"},{"type":"literal","value":"hdr_off"},{"type":"literal","value":"hdr_off_select"},{"type":"literal","value":"hdr_on"},{"type":"literal","value":"hdr_on_select"},{"type":"literal","value":"hdr_plus"},{"type":"literal","value":"hdr_plus_off"},{"type":"literal","value":"hdr_strong"},{"type":"literal","value":"hdr_weak"},{"type":"literal","value":"head_mounted_device"},{"type":"literal","value":"headphones_battery"},{"type":"literal","value":"headset_mic"},{"type":"literal","value":"headset_off"},{"type":"literal","value":"healing"},{"type":"literal","value":"health_and_beauty"},{"type":"literal","value":"health_and_safety"},{"type":"literal","value":"health_cross"},{"type":"literal","value":"health_metrics"},{"type":"literal","value":"heap_snapshot_large"},{"type":"literal","value":"heap_snapshot_multiple"},{"type":"literal","value":"heap_snapshot_thumbnail"},{"type":"literal","value":"hearing"},{"type":"literal","value":"hearing_aid"},{"type":"literal","value":"hearing_aid_disabled"},{"type":"literal","value":"hearing_aid_disabled_left"},{"type":"literal","value":"hearing_aid_left"},{"type":"literal","value":"hearing_disabled"},{"type":"literal","value":"heart_broken"},{"type":"literal","value":"heart_check"},{"type":"literal","value":"heart_minus"},{"type":"literal","value":"heart_plus"},{"type":"literal","value":"heart_smile"},{"type":"literal","value":"heat"},{"type":"literal","value":"heat_pump"},{"type":"literal","value":"heat_pump_balance"},{"type":"literal","value":"helicopter"},{"type":"literal","value":"help"},{"type":"literal","value":"help_center"},{"type":"literal","value":"help_clinic"},{"type":"literal","value":"help_outline"},{"type":"literal","value":"hematology"},{"type":"literal","value":"hevc"},{"type":"literal","value":"hide_image"},{"type":"literal","value":"hide_source"},{"type":"literal","value":"high_chair"},{"type":"literal","value":"high_density"},{"type":"literal","value":"high_quality"},{"type":"literal","value":"high_res"},{"type":"literal","value":"highlight"},{"type":"literal","value":"highlight_alt"},{"type":"literal","value":"highlight_keyboard_focus"},{"type":"literal","value":"highlight_mouse_cursor"},{"type":"literal","value":"highlight_off"},{"type":"literal","value":"highlight_text_cursor"},{"type":"literal","value":"highlighter_size_1"},{"type":"literal","value":"highlighter_size_2"},{"type":"literal","value":"highlighter_size_3"},{"type":"literal","value":"highlighter_size_4"},{"type":"literal","value":"highlighter_size_5"},{"type":"literal","value":"hiking"},{"type":"literal","value":"history_2"},{"type":"literal","value":"history_edu"},{"type":"literal","value":"history_off"},{"type":"literal","value":"history_toggle_off"},{"type":"literal","value":"hive"},{"type":"literal","value":"hls"},{"type":"literal","value":"hls_off"},{"type":"literal","value":"holiday_village"},{"type":"literal","value":"home"},{"type":"literal","value":"home_and_garden"},{"type":"literal","value":"home_app_logo"},{"type":"literal","value":"home_filled"},{"type":"literal","value":"home_health"},{"type":"literal","value":"home_improvement_and_tools"},{"type":"literal","value":"home_iot_device"},{"type":"literal","value":"home_max"},{"type":"literal","value":"home_max_dots"},{"type":"literal","value":"home_mini"},{"type":"literal","value":"home_pin"},{"type":"literal","value":"home_repair_service"},{"type":"literal","value":"home_speaker"},{"type":"literal","value":"home_storage"},{"type":"literal","value":"home_work"},{"type":"literal","value":"horizontal_distribute"},{"type":"literal","value":"horizontal_rule"},{"type":"literal","value":"horizontal_split"},{"type":"literal","value":"hot_tub"},{"type":"literal","value":"hotel"},{"type":"literal","value":"hotel_class"},{"type":"literal","value":"hourglass_arrow_down"},{"type":"literal","value":"hourglass_arrow_up"},{"type":"literal","value":"hourglass_bottom"},{"type":"literal","value":"hourglass_disabled"},{"type":"literal","value":"hourglass_empty"},{"type":"literal","value":"hourglass_full"},{"type":"literal","value":"hourglass_pause"},{"type":"literal","value":"hourglass_top"},{"type":"literal","value":"house_siding"},{"type":"literal","value":"house_with_shield"},{"type":"literal","value":"houseboat"},{"type":"literal","value":"household_supplies"},{"type":"literal","value":"hov"},{"type":"literal","value":"how_to_reg"},{"type":"literal","value":"how_to_vote"},{"type":"literal","value":"hr_resting"},{"type":"literal","value":"https"},{"type":"literal","value":"hub"},{"type":"literal","value":"humerus"},{"type":"literal","value":"humerus_alt"},{"type":"literal","value":"humidity_high"},{"type":"literal","value":"humidity_indoor"},{"type":"literal","value":"humidity_low"},{"type":"literal","value":"humidity_mid"},{"type":"literal","value":"humidity_percentage"},{"type":"literal","value":"hvac"},{"type":"literal","value":"hvac_max_defrost"},{"type":"literal","value":"ice_skating"},{"type":"literal","value":"icecream"},{"type":"literal","value":"id_card"},{"type":"literal","value":"identity_aware_proxy"},{"type":"literal","value":"identity_platform"},{"type":"literal","value":"ifl"},{"type":"literal","value":"iframe_off"},{"type":"literal","value":"image_arrow_up"},{"type":"literal","value":"image_aspect_ratio"},{"type":"literal","value":"image_inset"},{"type":"literal","value":"image_not_supported"},{"type":"literal","value":"image_search"},{"type":"literal","value":"imagesearch_roller"},{"type":"literal","value":"imagesmode"},{"type":"literal","value":"immunology"},{"type":"literal","value":"import_contacts"},{"type":"literal","value":"import_export"},{"type":"literal","value":"important_devices"},{"type":"literal","value":"in_home_mode"},{"type":"literal","value":"inactive_order"},{"type":"literal","value":"inbox"},{"type":"literal","value":"inbox_customize"},{"type":"literal","value":"inbox_text"},{"type":"literal","value":"inbox_text_asterisk"},{"type":"literal","value":"inbox_text_person"},{"type":"literal","value":"inbox_text_share"},{"type":"literal","value":"incomplete_circle"},{"type":"literal","value":"indeterminate_check_box"},{"type":"literal","value":"indeterminate_question_box"},{"type":"literal","value":"info_i"},{"type":"literal","value":"info_outline"},{"type":"literal","value":"infrared"},{"type":"literal","value":"ink_eraser"},{"type":"literal","value":"ink_eraser_off"},{"type":"literal","value":"ink_highlighter"},{"type":"literal","value":"ink_highlighter_move"},{"type":"literal","value":"ink_marker"},{"type":"literal","value":"ink_pen"},{"type":"literal","value":"ink_selection"},{"type":"literal","value":"inpatient"},{"type":"literal","value":"input_circle"},{"type":"literal","value":"insert_chart"},{"type":"literal","value":"insert_chart_outlined"},{"type":"literal","value":"insert_comment"},{"type":"literal","value":"insert_drive_file"},{"type":"literal","value":"insert_emoticon"},{"type":"literal","value":"insert_invitation"},{"type":"literal","value":"insert_link"},{"type":"literal","value":"insert_page_break"},{"type":"literal","value":"insert_photo"},{"type":"literal","value":"insert_text"},{"type":"literal","value":"insights"},{"type":"literal","value":"install_desktop"},{"type":"literal","value":"install_mobile"},{"type":"literal","value":"instant_mix"},{"type":"literal","value":"integration_instructions"},{"type":"literal","value":"interactive_space"},{"type":"literal","value":"interests"},{"type":"literal","value":"interpreter_mode"},{"type":"literal","value":"inventory"},{"type":"literal","value":"inventory_2"},{"type":"literal","value":"invert_colors"},{"type":"literal","value":"invert_colors_off"},{"type":"literal","value":"ios_share"},{"type":"literal","value":"iron"},{"type":"literal","value":"iso"},{"type":"literal","value":"jamboard_kiosk"},{"type":"literal","value":"japanese_curry"},{"type":"literal","value":"japanese_flag"},{"type":"literal","value":"javascript"},{"type":"literal","value":"join_full"},{"type":"literal","value":"join_inner"},{"type":"literal","value":"join_left"},{"type":"literal","value":"join_right"},{"type":"literal","value":"joystick"},{"type":"literal","value":"jump_to_element"},{"type":"literal","value":"kanji_alcohol"},{"type":"literal","value":"kayaking"},{"type":"literal","value":"kebab_dining"},{"type":"literal","value":"keep"},{"type":"literal","value":"keep_off"},{"type":"literal","value":"keep_public"},{"type":"literal","value":"kettle"},{"type":"literal","value":"key_off"},{"type":"literal","value":"key_vertical"},{"type":"literal","value":"key_visualizer"},{"type":"literal","value":"keyboard_alt"},{"type":"literal","value":"keyboard_arrow_down"},{"type":"literal","value":"keyboard_arrow_left"},{"type":"literal","value":"keyboard_arrow_right"},{"type":"literal","value":"keyboard_arrow_up"},{"type":"literal","value":"keyboard_backspace"},{"type":"literal","value":"keyboard_capslock"},{"type":"literal","value":"keyboard_capslock_badge"},{"type":"literal","value":"keyboard_command_key"},{"type":"literal","value":"keyboard_control_key"},{"type":"literal","value":"keyboard_double_arrow_down"},{"type":"literal","value":"keyboard_double_arrow_left"},{"type":"literal","value":"keyboard_double_arrow_right"},{"type":"literal","value":"keyboard_double_arrow_up"},{"type":"literal","value":"keyboard_external_input"},{"type":"literal","value":"keyboard_full"},{"type":"literal","value":"keyboard_hide"},{"type":"literal","value":"keyboard_keys"},{"type":"literal","value":"keyboard_lock"},{"type":"literal","value":"keyboard_lock_off"},{"type":"literal","value":"keyboard_off"},{"type":"literal","value":"keyboard_onscreen"},{"type":"literal","value":"keyboard_option_key"},{"type":"literal","value":"keyboard_previous_language"},{"type":"literal","value":"keyboard_return"},{"type":"literal","value":"keyboard_tab"},{"type":"literal","value":"keyboard_tab_rtl"},{"type":"literal","value":"keyboard_voice"},{"type":"literal","value":"kid_star"},{"type":"literal","value":"king_bed"},{"type":"literal","value":"kitchen"},{"type":"literal","value":"kitesurfing"},{"type":"literal","value":"lab_panel"},{"type":"literal","value":"lab_profile"},{"type":"literal","value":"lab_research"},{"type":"literal","value":"label_important"},{"type":"literal","value":"label_important_outline"},{"type":"literal","value":"label_off"},{"type":"literal","value":"labs"},{"type":"literal","value":"lan"},{"type":"literal","value":"landscape_2"},{"type":"literal","value":"landscape_2_edit"},{"type":"literal","value":"landscape_2_off"},{"type":"literal","value":"landslide"},{"type":"literal","value":"language"},{"type":"literal","value":"language_chinese_array"},{"type":"literal","value":"language_chinese_cangjie"},{"type":"literal","value":"language_chinese_dayi"},{"type":"literal","value":"language_chinese_pinyin"},{"type":"literal","value":"language_chinese_quick"},{"type":"literal","value":"language_chinese_wubi"},{"type":"literal","value":"language_french"},{"type":"literal","value":"language_gb_english"},{"type":"literal","value":"language_international"},{"type":"literal","value":"language_japanese_kana"},{"type":"literal","value":"language_korean_latin"},{"type":"literal","value":"language_pinyin"},{"type":"literal","value":"language_spanish"},{"type":"literal","value":"language_us"},{"type":"literal","value":"language_us_colemak"},{"type":"literal","value":"language_us_dvorak"},{"type":"literal","value":"laps"},{"type":"literal","value":"laptop"},{"type":"literal","value":"laptop_car"},{"type":"literal","value":"laptop_chromebook"},{"type":"literal","value":"laptop_mac"},{"type":"literal","value":"laptop_windows"},{"type":"literal","value":"lasso_select"},{"type":"literal","value":"last_page"},{"type":"literal","value":"launch"},{"type":"literal","value":"laundry"},{"type":"literal","value":"layers"},{"type":"literal","value":"layers_clear"},{"type":"literal","value":"lda"},{"type":"literal","value":"leaderboard"},{"type":"literal","value":"leak_add"},{"type":"literal","value":"leak_remove"},{"type":"literal","value":"left_click"},{"type":"literal","value":"left_panel_close"},{"type":"literal","value":"left_panel_open"},{"type":"literal","value":"legend_toggle"},{"type":"literal","value":"lens"},{"type":"literal","value":"lens_blur"},{"type":"literal","value":"letter_switch"},{"type":"literal","value":"library_add"},{"type":"literal","value":"library_add_check"},{"type":"literal","value":"library_books"},{"type":"literal","value":"library_music"},{"type":"literal","value":"license"},{"type":"literal","value":"lift_to_talk"},{"type":"literal","value":"light_group"},{"type":"literal","value":"light_mode"},{"type":"literal","value":"light_off"},{"type":"literal","value":"lightbulb_2"},{"type":"literal","value":"lightbulb_circle"},{"type":"literal","value":"lightbulb_outline"},{"type":"literal","value":"lightning_stand"},{"type":"literal","value":"line_axis"},{"type":"literal","value":"line_curve"},{"type":"literal","value":"line_end"},{"type":"literal","value":"line_end_arrow"},{"type":"literal","value":"line_end_arrow_notch"},{"type":"literal","value":"line_end_circle"},{"type":"literal","value":"line_end_diamond"},{"type":"literal","value":"line_end_square"},{"type":"literal","value":"line_start"},{"type":"literal","value":"line_start_arrow"},{"type":"literal","value":"line_start_arrow_notch"},{"type":"literal","value":"line_start_circle"},{"type":"literal","value":"line_start_diamond"},{"type":"literal","value":"line_start_square"},{"type":"literal","value":"line_style"},{"type":"literal","value":"line_weight"},{"type":"literal","value":"linear_scale"},{"type":"literal","value":"link_off"},{"type":"literal","value":"linked_camera"},{"type":"literal","value":"linked_services"},{"type":"literal","value":"liquor"},{"type":"literal","value":"list_alt"},{"type":"literal","value":"list_alt_add"},{"type":"literal","value":"list_alt_check"},{"type":"literal","value":"lists"},{"type":"literal","value":"live_help"},{"type":"literal","value":"live_tv"},{"type":"literal","value":"living"},{"type":"literal","value":"local_activity"},{"type":"literal","value":"local_airport"},{"type":"literal","value":"local_atm"},{"type":"literal","value":"local_bar"},{"type":"literal","value":"local_cafe"},{"type":"literal","value":"local_car_wash"},{"type":"literal","value":"local_convenience_store"},{"type":"literal","value":"local_dining"},{"type":"literal","value":"local_drink"},{"type":"literal","value":"local_fire_department"},{"type":"literal","value":"local_florist"},{"type":"literal","value":"local_gas_station"},{"type":"literal","value":"local_grocery_store"},{"type":"literal","value":"local_hospital"},{"type":"literal","value":"local_hotel"},{"type":"literal","value":"local_laundry_service"},{"type":"literal","value":"local_library"},{"type":"literal","value":"local_mall"},{"type":"literal","value":"local_movies"},{"type":"literal","value":"local_offer"},{"type":"literal","value":"local_parking"},{"type":"literal","value":"local_pharmacy"},{"type":"literal","value":"local_phone"},{"type":"literal","value":"local_pizza"},{"type":"literal","value":"local_play"},{"type":"literal","value":"local_police"},{"type":"literal","value":"local_post_office"},{"type":"literal","value":"local_printshop"},{"type":"literal","value":"local_see"},{"type":"literal","value":"local_shipping"},{"type":"literal","value":"local_taxi"},{"type":"literal","value":"location_away"},{"type":"literal","value":"location_chip"},{"type":"literal","value":"location_city"},{"type":"literal","value":"location_disabled"},{"type":"literal","value":"location_home"},{"type":"literal","value":"location_off"},{"type":"literal","value":"location_on"},{"type":"literal","value":"location_pin"},{"type":"literal","value":"location_searching"},{"type":"literal","value":"lock_clock"},{"type":"literal","value":"lock_open"},{"type":"literal","value":"lock_open_circle"},{"type":"literal","value":"lock_open_right"},{"type":"literal","value":"lock_outline"},{"type":"literal","value":"lock_person"},{"type":"literal","value":"lock_reset"},{"type":"literal","value":"login"},{"type":"literal","value":"logo_dev"},{"type":"literal","value":"logout"},{"type":"literal","value":"looks"},{"type":"literal","value":"looks_3"},{"type":"literal","value":"looks_4"},{"type":"literal","value":"looks_5"},{"type":"literal","value":"looks_6"},{"type":"literal","value":"looks_one"},{"type":"literal","value":"looks_two"},{"type":"literal","value":"loop"},{"type":"literal","value":"low_density"},{"type":"literal","value":"low_priority"},{"type":"literal","value":"loyalty"},{"type":"literal","value":"lte_mobiledata"},{"type":"literal","value":"lte_mobiledata_badge"},{"type":"literal","value":"lte_plus_mobiledata"},{"type":"literal","value":"lte_plus_mobiledata_badge"},{"type":"literal","value":"luggage"},{"type":"literal","value":"lunch_dining"},{"type":"literal","value":"lyrics"},{"type":"literal","value":"macro_auto"},{"type":"literal","value":"macro_off"},{"type":"literal","value":"magnification_large"},{"type":"literal","value":"magnification_small"},{"type":"literal","value":"magnify_docked"},{"type":"literal","value":"magnify_fullscreen"},{"type":"literal","value":"mail_asterisk"},{"type":"literal","value":"mail_lock"},{"type":"literal","value":"mail_off"},{"type":"literal","value":"mail_outline"},{"type":"literal","value":"mail_shield"},{"type":"literal","value":"male"},{"type":"literal","value":"man"},{"type":"literal","value":"man_2"},{"type":"literal","value":"man_3"},{"type":"literal","value":"man_4"},{"type":"literal","value":"manage_accounts"},{"type":"literal","value":"manage_history"},{"type":"literal","value":"manage_search"},{"type":"literal","value":"manga"},{"type":"literal","value":"manufacturing"},{"type":"literal","value":"map_pin_heart"},{"type":"literal","value":"map_pin_review"},{"type":"literal","value":"map_search"},{"type":"literal","value":"maps_home_work"},{"type":"literal","value":"maps_ugc"},{"type":"literal","value":"mark_as_unread"},{"type":"literal","value":"mark_chat_read"},{"type":"literal","value":"mark_chat_unread"},{"type":"literal","value":"mark_email_read"},{"type":"literal","value":"mark_email_unread"},{"type":"literal","value":"mark_unread_chat_alt"},{"type":"literal","value":"markdown"},{"type":"literal","value":"markdown_copy"},{"type":"literal","value":"markdown_paste"},{"type":"literal","value":"markunread"},{"type":"literal","value":"markunread_mailbox"},{"type":"literal","value":"masked_transitions"},{"type":"literal","value":"masked_transitions_add"},{"type":"literal","value":"masks"},{"type":"literal","value":"massage"},{"type":"literal","value":"match_case"},{"type":"literal","value":"match_case_off"},{"type":"literal","value":"match_word"},{"type":"literal","value":"matter"},{"type":"literal","value":"maximize"},{"type":"literal","value":"meal_dinner"},{"type":"literal","value":"meal_lunch"},{"type":"literal","value":"measuring_tape"},{"type":"literal","value":"media_bluetooth_off"},{"type":"literal","value":"media_bluetooth_on"},{"type":"literal","value":"media_link"},{"type":"literal","value":"media_output"},{"type":"literal","value":"media_output_off"},{"type":"literal","value":"mediation"},{"type":"literal","value":"medical_information"},{"type":"literal","value":"medical_mask"},{"type":"literal","value":"medical_services"},{"type":"literal","value":"medication"},{"type":"literal","value":"medication_liquid"},{"type":"literal","value":"meeting_room"},{"type":"literal","value":"memory"},{"type":"literal","value":"memory_alt"},{"type":"literal","value":"menstrual_health"},{"type":"literal","value":"menu_book"},{"type":"literal","value":"menu_book_2"},{"type":"literal","value":"menu_open"},{"type":"literal","value":"merge_type"},{"type":"literal","value":"metabolism"},{"type":"literal","value":"mfg_nest_yale_lock"},{"type":"literal","value":"mic_alert"},{"type":"literal","value":"mic_double"},{"type":"literal","value":"mic_external_off"},{"type":"literal","value":"mic_external_on"},{"type":"literal","value":"mic_none"},{"type":"literal","value":"mic_off"},{"type":"literal","value":"microbiology"},{"type":"literal","value":"microwave_gen"},{"type":"literal","value":"military_tech"},{"type":"literal","value":"mimo"},{"type":"literal","value":"mimo_disconnect"},{"type":"literal","value":"mindfulness"},{"type":"literal","value":"minimize"},{"type":"literal","value":"minor_crash"},{"type":"literal","value":"mintmark"},{"type":"literal","value":"miscellaneous_services"},{"type":"literal","value":"missed_video_call"},{"type":"literal","value":"missing_controller"},{"type":"literal","value":"mist"},{"type":"literal","value":"mitre"},{"type":"literal","value":"mixture_med"},{"type":"literal","value":"mms"},{"type":"literal","value":"mobile"},{"type":"literal","value":"mobile_2"},{"type":"literal","value":"mobile_3"},{"type":"literal","value":"mobile_alert"},{"type":"literal","value":"mobile_arrow_down"},{"type":"literal","value":"mobile_arrow_right"},{"type":"literal","value":"mobile_arrow_up_right"},{"type":"literal","value":"mobile_block"},{"type":"literal","value":"mobile_camera"},{"type":"literal","value":"mobile_camera_front"},{"type":"literal","value":"mobile_camera_rear"},{"type":"literal","value":"mobile_cancel"},{"type":"literal","value":"mobile_cast"},{"type":"literal","value":"mobile_charge"},{"type":"literal","value":"mobile_chat"},{"type":"literal","value":"mobile_check"},{"type":"literal","value":"mobile_code"},{"type":"literal","value":"mobile_dots"},{"type":"literal","value":"mobile_friendly"},{"type":"literal","value":"mobile_gear"},{"type":"literal","value":"mobile_hand"},{"type":"literal","value":"mobile_hand_left"},{"type":"literal","value":"mobile_hand_left_off"},{"type":"literal","value":"mobile_hand_off"},{"type":"literal","value":"mobile_info"},{"type":"literal","value":"mobile_landscape"},{"type":"literal","value":"mobile_layout"},{"type":"literal","value":"mobile_lock_landscape"},{"type":"literal","value":"mobile_lock_portrait"},{"type":"literal","value":"mobile_loupe"},{"type":"literal","value":"mobile_menu"},{"type":"literal","value":"mobile_off"},{"type":"literal","value":"mobile_question"},{"type":"literal","value":"mobile_rotate"},{"type":"literal","value":"mobile_rotate_lock"},{"type":"literal","value":"mobile_screen_share"},{"type":"literal","value":"mobile_screensaver"},{"type":"literal","value":"mobile_sensor_hi"},{"type":"literal","value":"mobile_sensor_lo"},{"type":"literal","value":"mobile_share"},{"type":"literal","value":"mobile_share_stack"},{"type":"literal","value":"mobile_sound"},{"type":"literal","value":"mobile_sound_2"},{"type":"literal","value":"mobile_sound_off"},{"type":"literal","value":"mobile_speaker"},{"type":"literal","value":"mobile_text"},{"type":"literal","value":"mobile_text_2"},{"type":"literal","value":"mobile_theft"},{"type":"literal","value":"mobile_ticket"},{"type":"literal","value":"mobile_vibrate"},{"type":"literal","value":"mobile_wrench"},{"type":"literal","value":"mobiledata_off"},{"type":"literal","value":"mode_comment"},{"type":"literal","value":"mode_cool"},{"type":"literal","value":"mode_cool_off"},{"type":"literal","value":"mode_dual"},{"type":"literal","value":"mode_edit"},{"type":"literal","value":"mode_edit_outline"},{"type":"literal","value":"mode_fan"},{"type":"literal","value":"mode_fan_off"},{"type":"literal","value":"mode_heat"},{"type":"literal","value":"mode_heat_cool"},{"type":"literal","value":"mode_heat_off"},{"type":"literal","value":"mode_night"},{"type":"literal","value":"mode_of_travel"},{"type":"literal","value":"mode_off_on"},{"type":"literal","value":"mode_standby"},{"type":"literal","value":"model_training"},{"type":"literal","value":"modeling"},{"type":"literal","value":"monetization_on"},{"type":"literal","value":"money"},{"type":"literal","value":"money_bag"},{"type":"literal","value":"money_off"},{"type":"literal","value":"money_off_csred"},{"type":"literal","value":"money_range"},{"type":"literal","value":"monitor"},{"type":"literal","value":"monitor_heart"},{"type":"literal","value":"monitor_weight"},{"type":"literal","value":"monitor_weight_gain"},{"type":"literal","value":"monitor_weight_loss"},{"type":"literal","value":"monitoring"},{"type":"literal","value":"monochrome_photos"},{"type":"literal","value":"monorail"},{"type":"literal","value":"mood"},{"type":"literal","value":"mood_bad"},{"type":"literal","value":"moon_stars"},{"type":"literal","value":"mop"},{"type":"literal","value":"moped_package"},{"type":"literal","value":"more"},{"type":"literal","value":"more_down"},{"type":"literal","value":"more_horiz"},{"type":"literal","value":"more_time"},{"type":"literal","value":"more_up"},{"type":"literal","value":"more_vert"},{"type":"literal","value":"mosque"},{"type":"literal","value":"motion_blur"},{"type":"literal","value":"motion_mode"},{"type":"literal","value":"motion_photos_auto"},{"type":"literal","value":"motion_photos_off"},{"type":"literal","value":"motion_photos_on"},{"type":"literal","value":"motion_photos_pause"},{"type":"literal","value":"motion_photos_paused"},{"type":"literal","value":"motion_play"},{"type":"literal","value":"motion_sensor_active"},{"type":"literal","value":"motion_sensor_alert"},{"type":"literal","value":"motion_sensor_idle"},{"type":"literal","value":"motion_sensor_urgent"},{"type":"literal","value":"mountain_flag"},{"type":"literal","value":"mountain_steam"},{"type":"literal","value":"mouse"},{"type":"literal","value":"mouse_lock"},{"type":"literal","value":"mouse_lock_off"},{"type":"literal","value":"move_down"},{"type":"literal","value":"move_group"},{"type":"literal","value":"move_item"},{"type":"literal","value":"move_location"},{"type":"literal","value":"move_selection_down"},{"type":"literal","value":"move_selection_left"},{"type":"literal","value":"move_selection_right"},{"type":"literal","value":"move_selection_up"},{"type":"literal","value":"move_to_inbox"},{"type":"literal","value":"move_up"},{"type":"literal","value":"moved_location"},{"type":"literal","value":"movie"},{"type":"literal","value":"movie_creation"},{"type":"literal","value":"movie_edit"},{"type":"literal","value":"movie_filter"},{"type":"literal","value":"movie_info"},{"type":"literal","value":"movie_off"},{"type":"literal","value":"movie_speaker"},{"type":"literal","value":"moving"},{"type":"literal","value":"moving_beds"},{"type":"literal","value":"moving_ministry"},{"type":"literal","value":"mp"},{"type":"literal","value":"multicooker"},{"type":"literal","value":"multiline_chart"},{"type":"literal","value":"multimodal_hand_eye"},{"type":"literal","value":"multiple_airports"},{"type":"literal","value":"multiple_stop"},{"type":"literal","value":"museum"},{"type":"literal","value":"music_cast"},{"type":"literal","value":"music_history"},{"type":"literal","value":"music_note"},{"type":"literal","value":"music_note_add"},{"type":"literal","value":"music_off"},{"type":"literal","value":"music_video"},{"type":"literal","value":"my_location"},{"type":"literal","value":"mystery"},{"type":"literal","value":"nat"},{"type":"literal","value":"nature"},{"type":"literal","value":"nature_people"},{"type":"literal","value":"navigate_before"},{"type":"literal","value":"navigate_next"},{"type":"literal","value":"near_me"},{"type":"literal","value":"near_me_disabled"},{"type":"literal","value":"nearby"},{"type":"literal","value":"nearby_error"},{"type":"literal","value":"nearby_off"},{"type":"literal","value":"nephrology"},{"type":"literal","value":"nest_audio"},{"type":"literal","value":"nest_cam_floodlight"},{"type":"literal","value":"nest_cam_indoor"},{"type":"literal","value":"nest_cam_iq"},{"type":"literal","value":"nest_cam_iq_outdoor"},{"type":"literal","value":"nest_cam_magnet_mount"},{"type":"literal","value":"nest_cam_outdoor"},{"type":"literal","value":"nest_cam_stand"},{"type":"literal","value":"nest_cam_wall_mount"},{"type":"literal","value":"nest_cam_wired_stand"},{"type":"literal","value":"nest_clock_farsight_analog"},{"type":"literal","value":"nest_clock_farsight_digital"},{"type":"literal","value":"nest_connect"},{"type":"literal","value":"nest_detect"},{"type":"literal","value":"nest_display"},{"type":"literal","value":"nest_display_max"},{"type":"literal","value":"nest_doorbell_visitor"},{"type":"literal","value":"nest_eco_leaf"},{"type":"literal","value":"nest_farsight_cool"},{"type":"literal","value":"nest_farsight_dual"},{"type":"literal","value":"nest_farsight_eco"},{"type":"literal","value":"nest_farsight_heat"},{"type":"literal","value":"nest_farsight_seasonal"},{"type":"literal","value":"nest_farsight_weather"},{"type":"literal","value":"nest_found_savings"},{"type":"literal","value":"nest_heat_link_e"},{"type":"literal","value":"nest_heat_link_gen_3"},{"type":"literal","value":"nest_hello_doorbell"},{"type":"literal","value":"nest_mini"},{"type":"literal","value":"nest_multi_room"},{"type":"literal","value":"nest_protect"},{"type":"literal","value":"nest_remote_comfort_sensor"},{"type":"literal","value":"nest_secure_alarm"},{"type":"literal","value":"nest_sunblock"},{"type":"literal","value":"nest_tag"},{"type":"literal","value":"nest_thermostat"},{"type":"literal","value":"nest_thermostat_e_eu"},{"type":"literal","value":"nest_thermostat_gen_3"},{"type":"literal","value":"nest_thermostat_sensor"},{"type":"literal","value":"nest_thermostat_sensor_eu"},{"type":"literal","value":"nest_thermostat_zirconium_eu"},{"type":"literal","value":"nest_true_radiant"},{"type":"literal","value":"nest_wake_on_approach"},{"type":"literal","value":"nest_wake_on_press"},{"type":"literal","value":"nest_wifi_point"},{"type":"literal","value":"nest_wifi_pro"},{"type":"literal","value":"nest_wifi_pro_2"},{"type":"literal","value":"nest_wifi_router"},{"type":"literal","value":"network_cell"},{"type":"literal","value":"network_check"},{"type":"literal","value":"network_intel_node"},{"type":"literal","value":"network_intelligence"},{"type":"literal","value":"network_intelligence_history"},{"type":"literal","value":"network_intelligence_update"},{"type":"literal","value":"network_locked"},{"type":"literal","value":"network_manage"},{"type":"literal","value":"network_node"},{"type":"literal","value":"network_ping"},{"type":"literal","value":"network_wifi"},{"type":"literal","value":"network_wifi_1_bar"},{"type":"literal","value":"network_wifi_1_bar_locked"},{"type":"literal","value":"network_wifi_2_bar"},{"type":"literal","value":"network_wifi_2_bar_locked"},{"type":"literal","value":"network_wifi_3_bar"},{"type":"literal","value":"network_wifi_3_bar_locked"},{"type":"literal","value":"network_wifi_locked"},{"type":"literal","value":"neurology"},{"type":"literal","value":"new_label"},{"type":"literal","value":"new_releases"},{"type":"literal","value":"new_window"},{"type":"literal","value":"news"},{"type":"literal","value":"newsmode"},{"type":"literal","value":"newsstand"},{"type":"literal","value":"next_plan"},{"type":"literal","value":"next_week"},{"type":"literal","value":"nfc"},{"type":"literal","value":"nfc_off"},{"type":"literal","value":"night_shelter"},{"type":"literal","value":"night_sight_auto"},{"type":"literal","value":"night_sight_auto_off"},{"type":"literal","value":"night_sight_max"},{"type":"literal","value":"nightlife"},{"type":"literal","value":"nightlight"},{"type":"literal","value":"nightlight_round"},{"type":"literal","value":"nights_stay"},{"type":"literal","value":"no_accounts"},{"type":"literal","value":"no_adult_content"},{"type":"literal","value":"no_backpack"},{"type":"literal","value":"no_cell"},{"type":"literal","value":"no_crash"},{"type":"literal","value":"no_drinks"},{"type":"literal","value":"no_encryption"},{"type":"literal","value":"no_encryption_gmailerrorred"},{"type":"literal","value":"no_flash"},{"type":"literal","value":"no_food"},{"type":"literal","value":"no_luggage"},{"type":"literal","value":"no_meals"},{"type":"literal","value":"no_meals_ouline"},{"type":"literal","value":"no_meeting_room"},{"type":"literal","value":"no_photography"},{"type":"literal","value":"no_sim"},{"type":"literal","value":"no_sound"},{"type":"literal","value":"no_stroller"},{"type":"literal","value":"no_transfer"},{"type":"literal","value":"noise_aware"},{"type":"literal","value":"noise_control_off"},{"type":"literal","value":"noise_control_on"},{"type":"literal","value":"nordic_walking"},{"type":"literal","value":"north"},{"type":"literal","value":"north_east"},{"type":"literal","value":"north_west"},{"type":"literal","value":"not_accessible"},{"type":"literal","value":"not_accessible_forward"},{"type":"literal","value":"not_interested"},{"type":"literal","value":"not_listed_location"},{"type":"literal","value":"not_started"},{"type":"literal","value":"note_add"},{"type":"literal","value":"note_alt"},{"type":"literal","value":"note_stack"},{"type":"literal","value":"note_stack_add"},{"type":"literal","value":"notes"},{"type":"literal","value":"notification_add"},{"type":"literal","value":"notification_important"},{"type":"literal","value":"notification_multiple"},{"type":"literal","value":"notification_settings"},{"type":"literal","value":"notification_sound"},{"type":"literal","value":"notifications"},{"type":"literal","value":"notifications_active"},{"type":"literal","value":"notifications_none"},{"type":"literal","value":"notifications_off"},{"type":"literal","value":"notifications_paused"},{"type":"literal","value":"notifications_unread"},{"type":"literal","value":"nutrition"},{"type":"literal","value":"ods"},{"type":"literal","value":"odt"},{"type":"literal","value":"offline_bolt"},{"type":"literal","value":"offline_pin"},{"type":"literal","value":"offline_pin_off"},{"type":"literal","value":"offline_share"},{"type":"literal","value":"oil_barrel"},{"type":"literal","value":"okonomiyaki"},{"type":"literal","value":"on_device_training"},{"type":"literal","value":"on_hub_device"},{"type":"literal","value":"oncology"},{"type":"literal","value":"ondemand_video"},{"type":"literal","value":"online_prediction"},{"type":"literal","value":"onsen"},{"type":"literal","value":"open_in_browser"},{"type":"literal","value":"open_in_full"},{"type":"literal","value":"open_in_new"},{"type":"literal","value":"open_in_new_down"},{"type":"literal","value":"open_in_new_off"},{"type":"literal","value":"open_jam"},{"type":"literal","value":"open_run"},{"type":"literal","value":"open_with"},{"type":"literal","value":"ophthalmology"},{"type":"literal","value":"oral_disease"},{"type":"literal","value":"orbit"},{"type":"literal","value":"order_approve"},{"type":"literal","value":"order_play"},{"type":"literal","value":"orders"},{"type":"literal","value":"orthopedics"},{"type":"literal","value":"other_admission"},{"type":"literal","value":"other_houses"},{"type":"literal","value":"outbound"},{"type":"literal","value":"outbox"},{"type":"literal","value":"outbox_alt"},{"type":"literal","value":"outdoor_garden"},{"type":"literal","value":"outdoor_grill"},{"type":"literal","value":"outgoing_mail"},{"type":"literal","value":"outlet"},{"type":"literal","value":"outlined_flag"},{"type":"literal","value":"outpatient"},{"type":"literal","value":"outpatient_med"},{"type":"literal","value":"output_circle"},{"type":"literal","value":"oven_gen"},{"type":"literal","value":"overview"},{"type":"literal","value":"overview_key"},{"type":"literal","value":"owl"},{"type":"literal","value":"oxygen_saturation"},{"type":"literal","value":"p2p"},{"type":"literal","value":"pace"},{"type":"literal","value":"pacemaker"},{"type":"literal","value":"package_2"},{"type":"literal","value":"padel"},{"type":"literal","value":"page_control"},{"type":"literal","value":"page_footer"},{"type":"literal","value":"page_header"},{"type":"literal","value":"page_info"},{"type":"literal","value":"page_menu_ios"},{"type":"literal","value":"pageless"},{"type":"literal","value":"pages"},{"type":"literal","value":"pageview"},{"type":"literal","value":"paid"},{"type":"literal","value":"pallet"},{"type":"literal","value":"pan_tool"},{"type":"literal","value":"pan_tool_alt"},{"type":"literal","value":"pan_zoom"},{"type":"literal","value":"panorama"},{"type":"literal","value":"panorama_fish_eye"},{"type":"literal","value":"panorama_horizontal"},{"type":"literal","value":"panorama_horizontal_select"},{"type":"literal","value":"panorama_photosphere"},{"type":"literal","value":"panorama_photosphere_select"},{"type":"literal","value":"panorama_vertical"},{"type":"literal","value":"panorama_vertical_select"},{"type":"literal","value":"panorama_wide_angle"},{"type":"literal","value":"panorama_wide_angle_select"},{"type":"literal","value":"paragliding"},{"type":"literal","value":"parent_child_dining"},{"type":"literal","value":"park"},{"type":"literal","value":"parking_meter"},{"type":"literal","value":"parking_sign"},{"type":"literal","value":"parking_valet"},{"type":"literal","value":"partly_cloudy_day"},{"type":"literal","value":"partly_cloudy_night"},{"type":"literal","value":"partner_exchange"},{"type":"literal","value":"partner_heart"},{"type":"literal","value":"partner_reports"},{"type":"literal","value":"party_mode"},{"type":"literal","value":"passkey"},{"type":"literal","value":"password"},{"type":"literal","value":"password_2"},{"type":"literal","value":"password_2_off"},{"type":"literal","value":"patient_list"},{"type":"literal","value":"pause_circle"},{"type":"literal","value":"pause_circle_filled"},{"type":"literal","value":"pause_circle_outline"},{"type":"literal","value":"pause_presentation"},{"type":"literal","value":"payment"},{"type":"literal","value":"payment_arrow_down"},{"type":"literal","value":"payment_card"},{"type":"literal","value":"payments"},{"type":"literal","value":"pedal_bike"},{"type":"literal","value":"pediatrics"},{"type":"literal","value":"pen_size_1"},{"type":"literal","value":"pen_size_2"},{"type":"literal","value":"pen_size_3"},{"type":"literal","value":"pen_size_4"},{"type":"literal","value":"pen_size_5"},{"type":"literal","value":"pending"},{"type":"literal","value":"pending_actions"},{"type":"literal","value":"people"},{"type":"literal","value":"people_alt"},{"type":"literal","value":"people_outline"},{"type":"literal","value":"percent_discount"},{"type":"literal","value":"pergola"},{"type":"literal","value":"perm_camera_mic"},{"type":"literal","value":"perm_contact_calendar"},{"type":"literal","value":"perm_data_setting"},{"type":"literal","value":"perm_device_information"},{"type":"literal","value":"perm_identity"},{"type":"literal","value":"perm_media"},{"type":"literal","value":"perm_phone_msg"},{"type":"literal","value":"perm_scan_wifi"},{"type":"literal","value":"person_2"},{"type":"literal","value":"person_3"},{"type":"literal","value":"person_4"},{"type":"literal","value":"person_add"},{"type":"literal","value":"person_add_alt"},{"type":"literal","value":"person_add_alt_1"},{"type":"literal","value":"person_add_disabled"},{"type":"literal","value":"person_alert"},{"type":"literal","value":"person_apron"},{"type":"literal","value":"person_book"},{"type":"literal","value":"person_cancel"},{"type":"literal","value":"person_celebrate"},{"type":"literal","value":"person_check"},{"type":"literal","value":"person_edit"},{"type":"literal","value":"person_heart"},{"type":"literal","value":"person_off"},{"type":"literal","value":"person_outline"},{"type":"literal","value":"person_pin"},{"type":"literal","value":"person_pin_circle"},{"type":"literal","value":"person_play"},{"type":"literal","value":"person_raised_hand"},{"type":"literal","value":"person_remove"},{"type":"literal","value":"person_remove_alt_1"},{"type":"literal","value":"person_search"},{"type":"literal","value":"person_shield"},{"type":"literal","value":"personal_bag"},{"type":"literal","value":"personal_bag_off"},{"type":"literal","value":"personal_bag_question"},{"type":"literal","value":"personal_injury"},{"type":"literal","value":"personal_places"},{"type":"literal","value":"personal_video"},{"type":"literal","value":"pest_control"},{"type":"literal","value":"pest_control_rodent"},{"type":"literal","value":"pet_supplies"},{"type":"literal","value":"pets"},{"type":"literal","value":"phishing"},{"type":"literal","value":"phone_android"},{"type":"literal","value":"phone_bluetooth_speaker"},{"type":"literal","value":"phone_callback"},{"type":"literal","value":"phone_disabled"},{"type":"literal","value":"phone_enabled"},{"type":"literal","value":"phone_forwarded"},{"type":"literal","value":"phone_in_talk"},{"type":"literal","value":"phone_iphone"},{"type":"literal","value":"phone_locked"},{"type":"literal","value":"phone_missed"},{"type":"literal","value":"phone_paused"},{"type":"literal","value":"phonelink"},{"type":"literal","value":"phonelink_erase"},{"type":"literal","value":"phonelink_lock"},{"type":"literal","value":"phonelink_off"},{"type":"literal","value":"phonelink_ring"},{"type":"literal","value":"phonelink_setup"},{"type":"literal","value":"photo_album"},{"type":"literal","value":"photo_auto_merge"},{"type":"literal","value":"photo_camera"},{"type":"literal","value":"photo_camera_back"},{"type":"literal","value":"photo_camera_front"},{"type":"literal","value":"photo_filter"},{"type":"literal","value":"photo_frame"},{"type":"literal","value":"photo_library"},{"type":"literal","value":"photo_prints"},{"type":"literal","value":"photo_size_select_actual"},{"type":"literal","value":"photo_size_select_large"},{"type":"literal","value":"photo_size_select_small"},{"type":"literal","value":"php"},{"type":"literal","value":"physical_therapy"},{"type":"literal","value":"piano"},{"type":"literal","value":"piano_off"},{"type":"literal","value":"pickleball"},{"type":"literal","value":"picture_as_pdf"},{"type":"literal","value":"picture_in_picture"},{"type":"literal","value":"picture_in_picture_alt"},{"type":"literal","value":"picture_in_picture_center"},{"type":"literal","value":"picture_in_picture_large"},{"type":"literal","value":"picture_in_picture_medium"},{"type":"literal","value":"picture_in_picture_mobile"},{"type":"literal","value":"picture_in_picture_off"},{"type":"literal","value":"picture_in_picture_small"},{"type":"literal","value":"pie_chart"},{"type":"literal","value":"pie_chart_outline"},{"type":"literal","value":"pie_chart_outlined"},{"type":"literal","value":"pill_off"},{"type":"literal","value":"pin_drop"},{"type":"literal","value":"pin_end"},{"type":"literal","value":"pin_invoke"},{"type":"literal","value":"pinboard"},{"type":"literal","value":"pinboard_unread"},{"type":"literal","value":"pinch"},{"type":"literal","value":"pinch_zoom_in"},{"type":"literal","value":"pinch_zoom_out"},{"type":"literal","value":"pip_exit"},{"type":"literal","value":"pivot_table_chart"},{"type":"literal","value":"pix"},{"type":"literal","value":"place"},{"type":"literal","value":"place_item"},{"type":"literal","value":"plagiarism"},{"type":"literal","value":"plane_contrails"},{"type":"literal","value":"planet"},{"type":"literal","value":"planner_banner_ad_pt"},{"type":"literal","value":"planner_review"},{"type":"literal","value":"play_arrow"},{"type":"literal","value":"play_circle"},{"type":"literal","value":"play_circle_filled"},{"type":"literal","value":"play_circle_outline"},{"type":"literal","value":"play_disabled"},{"type":"literal","value":"play_for_work"},{"type":"literal","value":"play_lesson"},{"type":"literal","value":"play_pause"},{"type":"literal","value":"playground"},{"type":"literal","value":"playground_2"},{"type":"literal","value":"playing_cards"},{"type":"literal","value":"playlist_add"},{"type":"literal","value":"playlist_add_check"},{"type":"literal","value":"playlist_add_check_circle"},{"type":"literal","value":"playlist_add_circle"},{"type":"literal","value":"playlist_play"},{"type":"literal","value":"playlist_remove"},{"type":"literal","value":"plug_connect"},{"type":"literal","value":"plumbing"},{"type":"literal","value":"plus_one"},{"type":"literal","value":"podcasts"},{"type":"literal","value":"podiatry"},{"type":"literal","value":"podium"},{"type":"literal","value":"point_of_sale"},{"type":"literal","value":"point_scan"},{"type":"literal","value":"poker_chip"},{"type":"literal","value":"policy_alert"},{"type":"literal","value":"poll"},{"type":"literal","value":"polymer"},{"type":"literal","value":"pool"},{"type":"literal","value":"portable_wifi_off"},{"type":"literal","value":"position_bottom_left"},{"type":"literal","value":"position_bottom_right"},{"type":"literal","value":"position_top_right"},{"type":"literal","value":"post"},{"type":"literal","value":"post_add"},{"type":"literal","value":"potted_plant"},{"type":"literal","value":"power_input"},{"type":"literal","value":"power_off"},{"type":"literal","value":"power_settings_circle"},{"type":"literal","value":"power_settings_new"},{"type":"literal","value":"prayer_times"},{"type":"literal","value":"precision_manufacturing"},{"type":"literal","value":"pregnancy"},{"type":"literal","value":"pregnant_woman"},{"type":"literal","value":"preliminary"},{"type":"literal","value":"prescriptions"},{"type":"literal","value":"present_to_all"},{"type":"literal","value":"preview"},{"type":"literal","value":"preview_off"},{"type":"literal","value":"price_change"},{"type":"literal","value":"price_check"},{"type":"literal","value":"print_add"},{"type":"literal","value":"print_connect"},{"type":"literal","value":"print_disabled"},{"type":"literal","value":"print_error"},{"type":"literal","value":"print_lock"},{"type":"literal","value":"priority"},{"type":"literal","value":"priority_high"},{"type":"literal","value":"privacy"},{"type":"literal","value":"privacy_tip"},{"type":"literal","value":"private_connectivity"},{"type":"literal","value":"problem"},{"type":"literal","value":"procedure"},{"type":"literal","value":"process_chart"},{"type":"literal","value":"production_quantity_limits"},{"type":"literal","value":"productivity"},{"type":"literal","value":"progress_activity"},{"type":"literal","value":"prompt_suggestion"},{"type":"literal","value":"propane"},{"type":"literal","value":"propane_tank"},{"type":"literal","value":"psychiatry"},{"type":"literal","value":"psychology"},{"type":"literal","value":"psychology_alt"},{"type":"literal","value":"public_off"},{"type":"literal","value":"publish"},{"type":"literal","value":"published_with_changes"},{"type":"literal","value":"pulmonology"},{"type":"literal","value":"pulse_alert"},{"type":"literal","value":"punch_clock"},{"type":"literal","value":"push_pin"},{"type":"literal","value":"qr_code"},{"type":"literal","value":"qr_code_2"},{"type":"literal","value":"qr_code_2_add"},{"type":"literal","value":"qr_code_scanner"},{"type":"literal","value":"query_builder"},{"type":"literal","value":"query_stats"},{"type":"literal","value":"question_answer"},{"type":"literal","value":"question_exchange"},{"type":"literal","value":"question_mark"},{"type":"literal","value":"queue"},{"type":"literal","value":"queue_music"},{"type":"literal","value":"queue_play_next"},{"type":"literal","value":"quick_phrases"},{"type":"literal","value":"quick_reference"},{"type":"literal","value":"quick_reference_all"},{"type":"literal","value":"quick_reorder"},{"type":"literal","value":"quickreply"},{"type":"literal","value":"quiz"},{"type":"literal","value":"r_mobiledata"},{"type":"literal","value":"radar"},{"type":"literal","value":"radio_button_checked"},{"type":"literal","value":"radio_button_partial"},{"type":"literal","value":"radio_button_unchecked"},{"type":"literal","value":"radiology"},{"type":"literal","value":"railway_alert"},{"type":"literal","value":"railway_alert_2"},{"type":"literal","value":"rainy"},{"type":"literal","value":"rainy_heavy"},{"type":"literal","value":"rainy_light"},{"type":"literal","value":"rainy_snow"},{"type":"literal","value":"ramen_dining"},{"type":"literal","value":"ramp_left"},{"type":"literal","value":"ramp_right"},{"type":"literal","value":"range_hood"},{"type":"literal","value":"rate_review"},{"type":"literal","value":"raven"},{"type":"literal","value":"raw_off"},{"type":"literal","value":"raw_on"},{"type":"literal","value":"read_more"},{"type":"literal","value":"readiness_score"},{"type":"literal","value":"real_estate_agent"},{"type":"literal","value":"rear_camera"},{"type":"literal","value":"rebase"},{"type":"literal","value":"rebase_edit"},{"type":"literal","value":"receipt_long"},{"type":"literal","value":"receipt_long_off"},{"type":"literal","value":"recent_actors"},{"type":"literal","value":"recent_patient"},{"type":"literal","value":"recenter"},{"type":"literal","value":"recommend"},{"type":"literal","value":"record_voice_over"},{"type":"literal","value":"recycling"},{"type":"literal","value":"redeem"},{"type":"literal","value":"redo"},{"type":"literal","value":"reduce_capacity"},{"type":"literal","value":"regular_expression"},{"type":"literal","value":"relax"},{"type":"literal","value":"release_alert"},{"type":"literal","value":"remember_me"},{"type":"literal","value":"reminder"},{"type":"literal","value":"remote_gen"},{"type":"literal","value":"remove_circle"},{"type":"literal","value":"remove_circle_outline"},{"type":"literal","value":"remove_done"},{"type":"literal","value":"remove_from_queue"},{"type":"literal","value":"remove_moderator"},{"type":"literal","value":"remove_red_eye"},{"type":"literal","value":"remove_road"},{"type":"literal","value":"remove_selection"},{"type":"literal","value":"remove_shopping_cart"},{"type":"literal","value":"reopen_window"},{"type":"literal","value":"reorder"},{"type":"literal","value":"repartition"},{"type":"literal","value":"repeat_on"},{"type":"literal","value":"repeat_one"},{"type":"literal","value":"repeat_one_on"},{"type":"literal","value":"replace_audio"},{"type":"literal","value":"replace_image"},{"type":"literal","value":"replace_video"},{"type":"literal","value":"replay"},{"type":"literal","value":"replay_10"},{"type":"literal","value":"replay_30"},{"type":"literal","value":"replay_5"},{"type":"literal","value":"replay_circle_filled"},{"type":"literal","value":"reply"},{"type":"literal","value":"reply_all"},{"type":"literal","value":"report_gmailerrorred"},{"type":"literal","value":"report_off"},{"type":"literal","value":"report_problem"},{"type":"literal","value":"request_page"},{"type":"literal","value":"request_quote"},{"type":"literal","value":"reset_brightness"},{"type":"literal","value":"reset_exposure"},{"type":"literal","value":"reset_focus"},{"type":"literal","value":"reset_image"},{"type":"literal","value":"reset_iso"},{"type":"literal","value":"reset_settings"},{"type":"literal","value":"reset_shadow"},{"type":"literal","value":"reset_shutter_speed"},{"type":"literal","value":"reset_tv"},{"type":"literal","value":"reset_white_balance"},{"type":"literal","value":"reset_wrench"},{"type":"literal","value":"respiratory_rate"},{"type":"literal","value":"responsive_layout"},{"type":"literal","value":"rest_area"},{"type":"literal","value":"restart_alt"},{"type":"literal","value":"restaurant"},{"type":"literal","value":"restaurant_menu"},{"type":"literal","value":"restore"},{"type":"literal","value":"restore_from_trash"},{"type":"literal","value":"restore_page"},{"type":"literal","value":"resume"},{"type":"literal","value":"reviews"},{"type":"literal","value":"rewarded_ads"},{"type":"literal","value":"rheumatology"},{"type":"literal","value":"rib_cage"},{"type":"literal","value":"rice_bowl"},{"type":"literal","value":"right_click"},{"type":"literal","value":"right_panel_close"},{"type":"literal","value":"right_panel_open"},{"type":"literal","value":"ring_volume"},{"type":"literal","value":"ripples"},{"type":"literal","value":"road"},{"type":"literal","value":"robot"},{"type":"literal","value":"robot_2"},{"type":"literal","value":"rocket"},{"type":"literal","value":"rocket_launch"},{"type":"literal","value":"roller_shades"},{"type":"literal","value":"roller_shades_closed"},{"type":"literal","value":"roller_skating"},{"type":"literal","value":"roofing"},{"type":"literal","value":"room"},{"type":"literal","value":"room_preferences"},{"type":"literal","value":"room_service"},{"type":"literal","value":"rotate_90_degrees_ccw"},{"type":"literal","value":"rotate_90_degrees_cw"},{"type":"literal","value":"rotate_auto"},{"type":"literal","value":"rotate_left"},{"type":"literal","value":"rotate_right"},{"type":"literal","value":"roundabout_left"},{"type":"literal","value":"roundabout_right"},{"type":"literal","value":"rounded_corner"},{"type":"literal","value":"router_off"},{"type":"literal","value":"routine"},{"type":"literal","value":"rowing"},{"type":"literal","value":"rss_feed"},{"type":"literal","value":"rsvp"},{"type":"literal","value":"rtt"},{"type":"literal","value":"rubric"},{"type":"literal","value":"rule"},{"type":"literal","value":"rule_folder"},{"type":"literal","value":"rule_settings"},{"type":"literal","value":"run_circle"},{"type":"literal","value":"running_with_errors"},{"type":"literal","value":"rv_hookup"},{"type":"literal","value":"safety_check"},{"type":"literal","value":"safety_check_off"},{"type":"literal","value":"safety_divider"},{"type":"literal","value":"sailing"},{"type":"literal","value":"salinity"},{"type":"literal","value":"sanitizer"},{"type":"literal","value":"satellite"},{"type":"literal","value":"satellite_alt"},{"type":"literal","value":"sauna"},{"type":"literal","value":"save"},{"type":"literal","value":"save_alt"},{"type":"literal","value":"save_as"},{"type":"literal","value":"save_clock"},{"type":"literal","value":"saved_search"},{"type":"literal","value":"savings"},{"type":"literal","value":"scan"},{"type":"literal","value":"scan_delete"},{"type":"literal","value":"scatter_plot"},{"type":"literal","value":"scene"},{"type":"literal","value":"schedule"},{"type":"literal","value":"schedule_send"},{"type":"literal","value":"schema"},{"type":"literal","value":"school"},{"type":"literal","value":"science"},{"type":"literal","value":"science_off"},{"type":"literal","value":"score"},{"type":"literal","value":"scoreboard"},{"type":"literal","value":"screen_lock_landscape"},{"type":"literal","value":"screen_lock_portrait"},{"type":"literal","value":"screen_lock_rotation"},{"type":"literal","value":"screen_record"},{"type":"literal","value":"screen_rotation"},{"type":"literal","value":"screen_rotation_alt"},{"type":"literal","value":"screen_rotation_up"},{"type":"literal","value":"screen_search_desktop"},{"type":"literal","value":"screen_share"},{"type":"literal","value":"screenshot"},{"type":"literal","value":"screenshot_frame"},{"type":"literal","value":"screenshot_frame_2"},{"type":"literal","value":"screenshot_keyboard"},{"type":"literal","value":"screenshot_monitor"},{"type":"literal","value":"screenshot_region"},{"type":"literal","value":"screenshot_tablet"},{"type":"literal","value":"scrollable_header"},{"type":"literal","value":"scuba_diving"},{"type":"literal","value":"sd"},{"type":"literal","value":"sd_card"},{"type":"literal","value":"sd_card_alert"},{"type":"literal","value":"sd_storage"},{"type":"literal","value":"sdk"},{"type":"literal","value":"search_activity"},{"type":"literal","value":"search_check"},{"type":"literal","value":"search_check_2"},{"type":"literal","value":"search_gear"},{"type":"literal","value":"search_hands_free"},{"type":"literal","value":"search_insights"},{"type":"literal","value":"search_off"},{"type":"literal","value":"seat_cool_left"},{"type":"literal","value":"seat_cool_right"},{"type":"literal","value":"seat_heat_left"},{"type":"literal","value":"seat_heat_right"},{"type":"literal","value":"seat_vent_left"},{"type":"literal","value":"seat_vent_right"},{"type":"literal","value":"security_key"},{"type":"literal","value":"security_update"},{"type":"literal","value":"security_update_good"},{"type":"literal","value":"security_update_warning"},{"type":"literal","value":"segment"},{"type":"literal","value":"select_all"},{"type":"literal","value":"select_check_box"},{"type":"literal","value":"select_to_speak"},{"type":"literal","value":"select_window"},{"type":"literal","value":"select_window_2"},{"type":"literal","value":"select_window_off"},{"type":"literal","value":"self_care"},{"type":"literal","value":"self_improvement"},{"type":"literal","value":"sell"},{"type":"literal","value":"send_and_archive"},{"type":"literal","value":"send_money"},{"type":"literal","value":"send_time_extension"},{"type":"literal","value":"send_to_mobile"},{"type":"literal","value":"sensor_door"},{"type":"literal","value":"sensor_occupied"},{"type":"literal","value":"sensor_window"},{"type":"literal","value":"sensors"},{"type":"literal","value":"sensors_krx"},{"type":"literal","value":"sensors_krx_off"},{"type":"literal","value":"sensors_off"},{"type":"literal","value":"sentiment_calm"},{"type":"literal","value":"sentiment_content"},{"type":"literal","value":"sentiment_dissatisfied"},{"type":"literal","value":"sentiment_excited"},{"type":"literal","value":"sentiment_extremely_dissatisfied"},{"type":"literal","value":"sentiment_frustrated"},{"type":"literal","value":"sentiment_neutral"},{"type":"literal","value":"sentiment_sad"},{"type":"literal","value":"sentiment_satisfied"},{"type":"literal","value":"sentiment_satisfied_alt"},{"type":"literal","value":"sentiment_stressed"},{"type":"literal","value":"sentiment_very_dissatisfied"},{"type":"literal","value":"sentiment_very_satisfied"},{"type":"literal","value":"sentiment_worried"},{"type":"literal","value":"serif"},{"type":"literal","value":"server_person"},{"type":"literal","value":"service_toolbox"},{"type":"literal","value":"set_meal"},{"type":"literal","value":"settings_accessibility"},{"type":"literal","value":"settings_account_box"},{"type":"literal","value":"settings_alert"},{"type":"literal","value":"settings_applications"},{"type":"literal","value":"settings_b_roll"},{"type":"literal","value":"settings_backup_restore"},{"type":"literal","value":"settings_bluetooth"},{"type":"literal","value":"settings_brightness"},{"type":"literal","value":"settings_cell"},{"type":"literal","value":"settings_cinematic_blur"},{"type":"literal","value":"settings_ethernet"},{"type":"literal","value":"settings_heart"},{"type":"literal","value":"settings_input_antenna"},{"type":"literal","value":"settings_input_component"},{"type":"literal","value":"settings_input_composite"},{"type":"literal","value":"settings_input_hdmi"},{"type":"literal","value":"settings_input_svideo"},{"type":"literal","value":"settings_motion_mode"},{"type":"literal","value":"settings_night_sight"},{"type":"literal","value":"settings_overscan"},{"type":"literal","value":"settings_panorama"},{"type":"literal","value":"settings_phone"},{"type":"literal","value":"settings_photo_camera"},{"type":"literal","value":"settings_power"},{"type":"literal","value":"settings_remote"},{"type":"literal","value":"settings_seating"},{"type":"literal","value":"settings_slow_motion"},{"type":"literal","value":"settings_suggest"},{"type":"literal","value":"settings_system_daydream"},{"type":"literal","value":"settings_timelapse"},{"type":"literal","value":"settings_video_camera"},{"type":"literal","value":"settings_voice"},{"type":"literal","value":"settop_component"},{"type":"literal","value":"severe_cold"},{"type":"literal","value":"shadow_add"},{"type":"literal","value":"shadow_minus"},{"type":"literal","value":"shape_line"},{"type":"literal","value":"shapes"},{"type":"literal","value":"share_eta"},{"type":"literal","value":"share_location"},{"type":"literal","value":"share_off"},{"type":"literal","value":"share_reviews"},{"type":"literal","value":"share_windows"},{"type":"literal","value":"shaved_ice"},{"type":"literal","value":"sheets_rtl"},{"type":"literal","value":"shelf_auto_hide"},{"type":"literal","value":"shelf_position"},{"type":"literal","value":"shelves"},{"type":"literal","value":"shield_lock"},{"type":"literal","value":"shield_locked"},{"type":"literal","value":"shield_moon"},{"type":"literal","value":"shield_person"},{"type":"literal","value":"shield_question"},{"type":"literal","value":"shield_toggle"},{"type":"literal","value":"shield_watch"},{"type":"literal","value":"shield_with_heart"},{"type":"literal","value":"shield_with_house"},{"type":"literal","value":"shift_lock"},{"type":"literal","value":"shift_lock_off"},{"type":"literal","value":"shop"},{"type":"literal","value":"shop_2"},{"type":"literal","value":"shop_two"},{"type":"literal","value":"shopping_bag"},{"type":"literal","value":"shopping_bag_speed"},{"type":"literal","value":"shopping_basket"},{"type":"literal","value":"shopping_cart"},{"type":"literal","value":"shopping_cart_checkout"},{"type":"literal","value":"shopping_cart_off"},{"type":"literal","value":"shoppingmode"},{"type":"literal","value":"short_stay"},{"type":"literal","value":"short_text"},{"type":"literal","value":"shortcut"},{"type":"literal","value":"show_chart"},{"type":"literal","value":"shuffle_on"},{"type":"literal","value":"shutter_speed"},{"type":"literal","value":"shutter_speed_add"},{"type":"literal","value":"shutter_speed_minus"},{"type":"literal","value":"sick"},{"type":"literal","value":"side_navigation"},{"type":"literal","value":"sign_language"},{"type":"literal","value":"signal_cellular_0_bar"},{"type":"literal","value":"signal_cellular_1_bar"},{"type":"literal","value":"signal_cellular_2_bar"},{"type":"literal","value":"signal_cellular_3_bar"},{"type":"literal","value":"signal_cellular_4_bar"},{"type":"literal","value":"signal_cellular_add"},{"type":"literal","value":"signal_cellular_alt"},{"type":"literal","value":"signal_cellular_alt_1_bar"},{"type":"literal","value":"signal_cellular_alt_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_0_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_1_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_3_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_4_bar"},{"type":"literal","value":"signal_cellular_no_sim"},{"type":"literal","value":"signal_cellular_nodata"},{"type":"literal","value":"signal_cellular_null"},{"type":"literal","value":"signal_cellular_off"},{"type":"literal","value":"signal_cellular_pause"},{"type":"literal","value":"signal_disconnected"},{"type":"literal","value":"signal_wifi_0_bar"},{"type":"literal","value":"signal_wifi_1_bar"},{"type":"literal","value":"signal_wifi_1_bar_lock"},{"type":"literal","value":"signal_wifi_2_bar"},{"type":"literal","value":"signal_wifi_2_bar_lock"},{"type":"literal","value":"signal_wifi_3_bar"},{"type":"literal","value":"signal_wifi_3_bar_lock"},{"type":"literal","value":"signal_wifi_4_bar"},{"type":"literal","value":"signal_wifi_4_bar_lock"},{"type":"literal","value":"signal_wifi_bad"},{"type":"literal","value":"signal_wifi_connected_no_internet_0"},{"type":"literal","value":"signal_wifi_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_off"},{"type":"literal","value":"signal_wifi_statusbar_1_bar"},{"type":"literal","value":"signal_wifi_statusbar_2_bar"},{"type":"literal","value":"signal_wifi_statusbar_3_bar"},{"type":"literal","value":"signal_wifi_statusbar_4_bar"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_statusbar_not_connected"},{"type":"literal","value":"signal_wifi_statusbar_null"},{"type":"literal","value":"signpost"},{"type":"literal","value":"sim_card"},{"type":"literal","value":"sim_card_alert"},{"type":"literal","value":"sim_card_download"},{"type":"literal","value":"simulation"},{"type":"literal","value":"single_bed"},{"type":"literal","value":"sip"},{"type":"literal","value":"siren"},{"type":"literal","value":"siren_check"},{"type":"literal","value":"siren_open"},{"type":"literal","value":"siren_question"},{"type":"literal","value":"skateboarding"},{"type":"literal","value":"skeleton"},{"type":"literal","value":"skillet"},{"type":"literal","value":"skillet_cooktop"},{"type":"literal","value":"skip_next"},{"type":"literal","value":"skip_previous"},{"type":"literal","value":"skull"},{"type":"literal","value":"skull_list"},{"type":"literal","value":"slab_serif"},{"type":"literal","value":"sledding"},{"type":"literal","value":"sleep_score"},{"type":"literal","value":"slide_library"},{"type":"literal","value":"sliders"},{"type":"literal","value":"slideshow"},{"type":"literal","value":"slow_motion_video"},{"type":"literal","value":"smart_button"},{"type":"literal","value":"smart_card_reader"},{"type":"literal","value":"smart_card_reader_off"},{"type":"literal","value":"smart_display"},{"type":"literal","value":"smart_outlet"},{"type":"literal","value":"smart_screen"},{"type":"literal","value":"smart_toy"},{"type":"literal","value":"smb_share"},{"type":"literal","value":"smoke_free"},{"type":"literal","value":"smoking_rooms"},{"type":"literal","value":"sms"},{"type":"literal","value":"sms_failed"},{"type":"literal","value":"snippet_folder"},{"type":"literal","value":"snooze"},{"type":"literal","value":"snowboarding"},{"type":"literal","value":"snowing"},{"type":"literal","value":"snowing_heavy"},{"type":"literal","value":"snowmobile"},{"type":"literal","value":"snowshoeing"},{"type":"literal","value":"soap"},{"type":"literal","value":"soba"},{"type":"literal","value":"social_distance"},{"type":"literal","value":"social_leaderboard"},{"type":"literal","value":"solar_power"},{"type":"literal","value":"solo_dining"},{"type":"literal","value":"sort_by_alpha"},{"type":"literal","value":"sound_detection_dog_barking"},{"type":"literal","value":"sound_detection_glass_break"},{"type":"literal","value":"sound_detection_loud_sound"},{"type":"literal","value":"sound_sampler"},{"type":"literal","value":"soup_kitchen"},{"type":"literal","value":"source_environment"},{"type":"literal","value":"source_notes"},{"type":"literal","value":"south"},{"type":"literal","value":"south_america"},{"type":"literal","value":"south_east"},{"type":"literal","value":"south_west"},{"type":"literal","value":"spa"},{"type":"literal","value":"space_bar"},{"type":"literal","value":"space_dashboard"},{"type":"literal","value":"spatial_audio"},{"type":"literal","value":"spatial_audio_off"},{"type":"literal","value":"spatial_speaker"},{"type":"literal","value":"spatial_tracking"},{"type":"literal","value":"speaker_group"},{"type":"literal","value":"speaker_notes"},{"type":"literal","value":"speaker_notes_off"},{"type":"literal","value":"speaker_phone"},{"type":"literal","value":"special_character"},{"type":"literal","value":"specific_gravity"},{"type":"literal","value":"speech_to_text"},{"type":"literal","value":"speed"},{"type":"literal","value":"speed_0_25"},{"type":"literal","value":"speed_0_2x"},{"type":"literal","value":"speed_0_5"},{"type":"literal","value":"speed_0_5x"},{"type":"literal","value":"speed_0_75"},{"type":"literal","value":"speed_0_7x"},{"type":"literal","value":"speed_1_2"},{"type":"literal","value":"speed_1_25"},{"type":"literal","value":"speed_1_2x"},{"type":"literal","value":"speed_1_5"},{"type":"literal","value":"speed_1_5x"},{"type":"literal","value":"speed_1_75"},{"type":"literal","value":"speed_1_7x"},{"type":"literal","value":"speed_2x"},{"type":"literal","value":"speed_camera"},{"type":"literal","value":"spellcheck"},{"type":"literal","value":"split_scene"},{"type":"literal","value":"split_scene_down"},{"type":"literal","value":"split_scene_left"},{"type":"literal","value":"split_scene_right"},{"type":"literal","value":"split_scene_up"},{"type":"literal","value":"splitscreen"},{"type":"literal","value":"splitscreen_add"},{"type":"literal","value":"splitscreen_bottom"},{"type":"literal","value":"splitscreen_landscape"},{"type":"literal","value":"splitscreen_left"},{"type":"literal","value":"splitscreen_portrait"},{"type":"literal","value":"splitscreen_right"},{"type":"literal","value":"splitscreen_top"},{"type":"literal","value":"splitscreen_vertical_add"},{"type":"literal","value":"spo2"},{"type":"literal","value":"spoke"},{"type":"literal","value":"sports"},{"type":"literal","value":"sports_and_outdoors"},{"type":"literal","value":"sports_bar"},{"type":"literal","value":"sports_baseball"},{"type":"literal","value":"sports_basketball"},{"type":"literal","value":"sports_cricket"},{"type":"literal","value":"sports_esports"},{"type":"literal","value":"sports_football"},{"type":"literal","value":"sports_golf"},{"type":"literal","value":"sports_gymnastics"},{"type":"literal","value":"sports_handball"},{"type":"literal","value":"sports_hockey"},{"type":"literal","value":"sports_kabaddi"},{"type":"literal","value":"sports_martial_arts"},{"type":"literal","value":"sports_mma"},{"type":"literal","value":"sports_motorsports"},{"type":"literal","value":"sports_rugby"},{"type":"literal","value":"sports_score"},{"type":"literal","value":"sports_soccer"},{"type":"literal","value":"sports_tennis"},{"type":"literal","value":"sports_volleyball"},{"type":"literal","value":"sprint"},{"type":"literal","value":"square_dot"},{"type":"literal","value":"square_foot"},{"type":"literal","value":"ssid_chart"},{"type":"literal","value":"stack_group"},{"type":"literal","value":"stack_hexagon"},{"type":"literal","value":"stack_off"},{"type":"literal","value":"stack_star"},{"type":"literal","value":"stacked_bar_chart"},{"type":"literal","value":"stacked_email"},{"type":"literal","value":"stacked_inbox"},{"type":"literal","value":"stacked_line_chart"},{"type":"literal","value":"stacks"},{"type":"literal","value":"stadia_controller"},{"type":"literal","value":"stadium"},{"type":"literal","value":"stairs_2"},{"type":"literal","value":"star_border"},{"type":"literal","value":"star_border_purple500"},{"type":"literal","value":"star_half"},{"type":"literal","value":"star_outline"},{"type":"literal","value":"star_purple500"},{"type":"literal","value":"star_rate"},{"type":"literal","value":"star_rate_half"},{"type":"literal","value":"star_shine"},{"type":"literal","value":"stars"},{"type":"literal","value":"stars_2"},{"type":"literal","value":"stat_0"},{"type":"literal","value":"stat_1"},{"type":"literal","value":"stat_2"},{"type":"literal","value":"stat_3"},{"type":"literal","value":"stat_minus_1"},{"type":"literal","value":"stat_minus_2"},{"type":"literal","value":"stat_minus_3"},{"type":"literal","value":"stay_current_landscape"},{"type":"literal","value":"stay_current_portrait"},{"type":"literal","value":"stay_primary_landscape"},{"type":"literal","value":"stay_primary_portrait"},{"type":"literal","value":"steering_wheel_heat"},{"type":"literal","value":"step_into"},{"type":"literal","value":"step_out"},{"type":"literal","value":"step_over"},{"type":"literal","value":"steppers"},{"type":"literal","value":"steps"},{"type":"literal","value":"stethoscope_arrow"},{"type":"literal","value":"stethoscope_check"},{"type":"literal","value":"sticky_note"},{"type":"literal","value":"sticky_note_2"},{"type":"literal","value":"stock_media"},{"type":"literal","value":"stockpot"},{"type":"literal","value":"stop_circle"},{"type":"literal","value":"stop_screen_share"},{"type":"literal","value":"store_mall_directory"},{"type":"literal","value":"storm"},{"type":"literal","value":"straight"},{"type":"literal","value":"straighten"},{"type":"literal","value":"strategy"},{"type":"literal","value":"stream"},{"type":"literal","value":"streetview"},{"type":"literal","value":"stress_management"},{"type":"literal","value":"strikethrough_s"},{"type":"literal","value":"stroke_full"},{"type":"literal","value":"stroke_partial"},{"type":"literal","value":"styler"},{"type":"literal","value":"stylus"},{"type":"literal","value":"stylus_brush"},{"type":"literal","value":"stylus_fountain_pen"},{"type":"literal","value":"stylus_highlighter"},{"type":"literal","value":"stylus_laser_pointer"},{"type":"literal","value":"stylus_note"},{"type":"literal","value":"stylus_pen"},{"type":"literal","value":"stylus_pencil"},{"type":"literal","value":"subdirectory_arrow_left"},{"type":"literal","value":"subdirectory_arrow_right"},{"type":"literal","value":"subheader"},{"type":"literal","value":"subject"},{"type":"literal","value":"subscript"},{"type":"literal","value":"subscriptions"},{"type":"literal","value":"subtitles"},{"type":"literal","value":"subtitles_gear"},{"type":"literal","value":"subtitles_off"},{"type":"literal","value":"subway"},{"type":"literal","value":"subway_walk"},{"type":"literal","value":"summarize"},{"type":"literal","value":"sunny"},{"type":"literal","value":"sunny_snowing"},{"type":"literal","value":"superscript"},{"type":"literal","value":"supervised_user_circle"},{"type":"literal","value":"supervised_user_circle_off"},{"type":"literal","value":"supervisor_account"},{"type":"literal","value":"support"},{"type":"literal","value":"support_agent"},{"type":"literal","value":"surfing"},{"type":"literal","value":"surgical"},{"type":"literal","value":"surround_sound"},{"type":"literal","value":"swap_calls"},{"type":"literal","value":"swap_driving_apps"},{"type":"literal","value":"swap_driving_apps_wheel"},{"type":"literal","value":"swap_horiz"},{"type":"literal","value":"swap_horizontal_circle"},{"type":"literal","value":"swap_vert"},{"type":"literal","value":"swap_vertical_circle"},{"type":"literal","value":"sweep"},{"type":"literal","value":"swipe"},{"type":"literal","value":"swipe_down"},{"type":"literal","value":"swipe_down_alt"},{"type":"literal","value":"swipe_left"},{"type":"literal","value":"swipe_left_alt"},{"type":"literal","value":"swipe_right"},{"type":"literal","value":"swipe_right_alt"},{"type":"literal","value":"swipe_up"},{"type":"literal","value":"swipe_up_alt"},{"type":"literal","value":"swipe_vertical"},{"type":"literal","value":"switch_access"},{"type":"literal","value":"switch_access_2"},{"type":"literal","value":"switch_access_3"},{"type":"literal","value":"switch_access_shortcut"},{"type":"literal","value":"switch_access_shortcut_add"},{"type":"literal","value":"switch_account"},{"type":"literal","value":"switch_camera"},{"type":"literal","value":"switch_left"},{"type":"literal","value":"switch_right"},{"type":"literal","value":"switch_video"},{"type":"literal","value":"switches"},{"type":"literal","value":"sword_rose"},{"type":"literal","value":"swords"},{"type":"literal","value":"symptoms"},{"type":"literal","value":"synagogue"},{"type":"literal","value":"sync_alt"},{"type":"literal","value":"sync_arrow_down"},{"type":"literal","value":"sync_arrow_up"},{"type":"literal","value":"sync_desktop"},{"type":"literal","value":"sync_disabled"},{"type":"literal","value":"sync_lock"},{"type":"literal","value":"sync_problem"},{"type":"literal","value":"sync_saved_locally"},{"type":"literal","value":"sync_saved_locally_off"},{"type":"literal","value":"system_security_update"},{"type":"literal","value":"system_security_update_good"},{"type":"literal","value":"system_security_update_warning"},{"type":"literal","value":"system_update"},{"type":"literal","value":"system_update_alt"},{"type":"literal","value":"tab_close"},{"type":"literal","value":"tab_close_inactive"},{"type":"literal","value":"tab_close_right"},{"type":"literal","value":"tab_duplicate"},{"type":"literal","value":"tab_group"},{"type":"literal","value":"tab_inactive"},{"type":"literal","value":"tab_move"},{"type":"literal","value":"tab_new_right"},{"type":"literal","value":"tab_recent"},{"type":"literal","value":"tab_search"},{"type":"literal","value":"tab_unselected"},{"type":"literal","value":"table_bar"},{"type":"literal","value":"table_chart"},{"type":"literal","value":"table_chart_view"},{"type":"literal","value":"table_convert"},{"type":"literal","value":"table_edit"},{"type":"literal","value":"table_eye"},{"type":"literal","value":"table_lamp"},{"type":"literal","value":"table_large"},{"type":"literal","value":"table_restaurant"},{"type":"literal","value":"table_rows"},{"type":"literal","value":"table_rows_narrow"},{"type":"literal","value":"table_sign"},{"type":"literal","value":"table_view"},{"type":"literal","value":"tablet_android"},{"type":"literal","value":"tablet_camera"},{"type":"literal","value":"tablet_mac"},{"type":"literal","value":"tabs"},{"type":"literal","value":"tactic"},{"type":"literal","value":"tag_faces"},{"type":"literal","value":"takeout_dining"},{"type":"literal","value":"takeout_dining_2"},{"type":"literal","value":"tamper_detection_off"},{"type":"literal","value":"tamper_detection_on"},{"type":"literal","value":"tap_and_play"},{"type":"literal","value":"tapas"},{"type":"literal","value":"task"},{"type":"literal","value":"task_alt"},{"type":"literal","value":"tatami_seat"},{"type":"literal","value":"taunt"},{"type":"literal","value":"taxi_alert"},{"type":"literal","value":"team_dashboard"},{"type":"literal","value":"temp_preferences_eco"},{"type":"literal","value":"temple_buddhist"},{"type":"literal","value":"temple_hindu"},{"type":"literal","value":"tenancy"},{"type":"literal","value":"terrain"},{"type":"literal","value":"text_ad"},{"type":"literal","value":"text_compare"},{"type":"literal","value":"text_decrease"},{"type":"literal","value":"text_fields"},{"type":"literal","value":"text_fields_alt"},{"type":"literal","value":"text_format"},{"type":"literal","value":"text_increase"},{"type":"literal","value":"text_rotate_up"},{"type":"literal","value":"text_rotate_vertical"},{"type":"literal","value":"text_rotation_angledown"},{"type":"literal","value":"text_rotation_angleup"},{"type":"literal","value":"text_rotation_down"},{"type":"literal","value":"text_rotation_none"},{"type":"literal","value":"text_select_end"},{"type":"literal","value":"text_select_jump_to_beginning"},{"type":"literal","value":"text_select_jump_to_end"},{"type":"literal","value":"text_select_move_back_character"},{"type":"literal","value":"text_select_move_back_word"},{"type":"literal","value":"text_select_move_down"},{"type":"literal","value":"text_select_move_forward_character"},{"type":"literal","value":"text_select_move_forward_word"},{"type":"literal","value":"text_select_move_up"},{"type":"literal","value":"text_select_start"},{"type":"literal","value":"text_snippet"},{"type":"literal","value":"text_to_speech"},{"type":"literal","value":"text_up"},{"type":"literal","value":"textsms"},{"type":"literal","value":"texture"},{"type":"literal","value":"texture_add"},{"type":"literal","value":"texture_minus"},{"type":"literal","value":"theater_comedy"},{"type":"literal","value":"theaters"},{"type":"literal","value":"thermometer_add"},{"type":"literal","value":"thermometer_gain"},{"type":"literal","value":"thermometer_loss"},{"type":"literal","value":"thermometer_minus"},{"type":"literal","value":"thermostat"},{"type":"literal","value":"thermostat_arrow_down"},{"type":"literal","value":"thermostat_arrow_up"},{"type":"literal","value":"thermostat_auto"},{"type":"literal","value":"thermostat_carbon"},{"type":"literal","value":"things_to_do"},{"type":"literal","value":"thread_unread"},{"type":"literal","value":"threat_intelligence"},{"type":"literal","value":"thumb_down"},{"type":"literal","value":"thumb_down_alt"},{"type":"literal","value":"thumb_down_off_alt"},{"type":"literal","value":"thumb_up"},{"type":"literal","value":"thumb_up_alt"},{"type":"literal","value":"thumb_up_off_alt"},{"type":"literal","value":"thumbnail_bar"},{"type":"literal","value":"thumbs_up_double"},{"type":"literal","value":"thumbs_up_down"},{"type":"literal","value":"thunderstorm"},{"type":"literal","value":"tibia"},{"type":"literal","value":"tibia_alt"},{"type":"literal","value":"tile_large"},{"type":"literal","value":"tile_medium"},{"type":"literal","value":"tile_small"},{"type":"literal","value":"time_auto"},{"type":"literal","value":"time_to_leave"},{"type":"literal","value":"timeline"},{"type":"literal","value":"timer_1"},{"type":"literal","value":"timer_10"},{"type":"literal","value":"timer_10_alt_1"},{"type":"literal","value":"timer_10_select"},{"type":"literal","value":"timer_2"},{"type":"literal","value":"timer_3"},{"type":"literal","value":"timer_3_alt_1"},{"type":"literal","value":"timer_3_select"},{"type":"literal","value":"timer_5"},{"type":"literal","value":"timer_5_shutter"},{"type":"literal","value":"timer_arrow_down"},{"type":"literal","value":"timer_arrow_up"},{"type":"literal","value":"timer_off"},{"type":"literal","value":"timer_pause"},{"type":"literal","value":"timer_play"},{"type":"literal","value":"tips_and_updates"},{"type":"literal","value":"tire_repair"},{"type":"literal","value":"titlecase"},{"type":"literal","value":"toast"},{"type":"literal","value":"toc"},{"type":"literal","value":"today"},{"type":"literal","value":"toggle_off"},{"type":"literal","value":"toggle_on"},{"type":"literal","value":"token"},{"type":"literal","value":"toll"},{"type":"literal","value":"tonality"},{"type":"literal","value":"tonality_2"},{"type":"literal","value":"tools_flat_head"},{"type":"literal","value":"tools_installation_kit"},{"type":"literal","value":"tools_ladder"},{"type":"literal","value":"tools_level"},{"type":"literal","value":"tools_phillips"},{"type":"literal","value":"tools_pliers_wire_stripper"},{"type":"literal","value":"tools_power_drill"},{"type":"literal","value":"tooltip_2"},{"type":"literal","value":"top_panel_close"},{"type":"literal","value":"top_panel_open"},{"type":"literal","value":"topic"},{"type":"literal","value":"total_dissolved_solids"},{"type":"literal","value":"touch_app"},{"type":"literal","value":"touch_double"},{"type":"literal","value":"touch_long"},{"type":"literal","value":"touch_triple"},{"type":"literal","value":"touchpad_mouse"},{"type":"literal","value":"touchpad_mouse_off"},{"type":"literal","value":"tour"},{"type":"literal","value":"toys"},{"type":"literal","value":"toys_and_games"},{"type":"literal","value":"toys_fan"},{"type":"literal","value":"track_changes"},{"type":"literal","value":"trackpad_input"},{"type":"literal","value":"trackpad_input_2"},{"type":"literal","value":"trackpad_input_3"},{"type":"literal","value":"traffic"},{"type":"literal","value":"traffic_jam"},{"type":"literal","value":"trail_length"},{"type":"literal","value":"trail_length_medium"},{"type":"literal","value":"trail_length_short"},{"type":"literal","value":"train"},{"type":"literal","value":"transcribe"},{"type":"literal","value":"transfer_within_a_station"},{"type":"literal","value":"transgender"},{"type":"literal","value":"transit_enterexit"},{"type":"literal","value":"transit_ticket"},{"type":"literal","value":"transition_chop"},{"type":"literal","value":"transition_dissolve"},{"type":"literal","value":"transition_fade"},{"type":"literal","value":"transition_push"},{"type":"literal","value":"transition_slide"},{"type":"literal","value":"translate_indic"},{"type":"literal","value":"transportation"},{"type":"literal","value":"travel"},{"type":"literal","value":"travel_explore"},{"type":"literal","value":"travel_luggage_and_bags"},{"type":"literal","value":"trending_down"},{"type":"literal","value":"trending_flat"},{"type":"literal","value":"trending_up"},{"type":"literal","value":"trip"},{"type":"literal","value":"trip_origin"},{"type":"literal","value":"trolley"},{"type":"literal","value":"trolley_cable_car"},{"type":"literal","value":"troubleshoot"},{"type":"literal","value":"tsunami"},{"type":"literal","value":"tsv"},{"type":"literal","value":"tty"},{"type":"literal","value":"tune"},{"type":"literal","value":"tungsten"},{"type":"literal","value":"turn_left"},{"type":"literal","value":"turn_right"},{"type":"literal","value":"turn_sharp_left"},{"type":"literal","value":"turn_sharp_right"},{"type":"literal","value":"turn_slight_left"},{"type":"literal","value":"turn_slight_right"},{"type":"literal","value":"turned_in"},{"type":"literal","value":"turned_in_not"},{"type":"literal","value":"tv_displays"},{"type":"literal","value":"tv_gen"},{"type":"literal","value":"tv_guide"},{"type":"literal","value":"tv_next"},{"type":"literal","value":"tv_off"},{"type":"literal","value":"tv_options_edit_channels"},{"type":"literal","value":"tv_options_input_settings"},{"type":"literal","value":"tv_remote"},{"type":"literal","value":"tv_signin"},{"type":"literal","value":"tv_with_assistant"},{"type":"literal","value":"two_pager"},{"type":"literal","value":"two_pager_store"},{"type":"literal","value":"two_wheeler"},{"type":"literal","value":"type_specimen"},{"type":"literal","value":"u_turn_left"},{"type":"literal","value":"u_turn_right"},{"type":"literal","value":"udon"},{"type":"literal","value":"ulna_radius"},{"type":"literal","value":"ulna_radius_alt"},{"type":"literal","value":"unarchive"},{"type":"literal","value":"undo"},{"type":"literal","value":"unfold_less"},{"type":"literal","value":"unfold_less_double"},{"type":"literal","value":"unfold_more"},{"type":"literal","value":"unfold_more_double"},{"type":"literal","value":"ungroup"},{"type":"literal","value":"universal_currency"},{"type":"literal","value":"universal_currency_alt"},{"type":"literal","value":"universal_local"},{"type":"literal","value":"unknown_2"},{"type":"literal","value":"unknown_5"},{"type":"literal","value":"unknown_7"},{"type":"literal","value":"unknown_document"},{"type":"literal","value":"unknown_med"},{"type":"literal","value":"unlicense"},{"type":"literal","value":"unpaved_road"},{"type":"literal","value":"unpublished"},{"type":"literal","value":"unsubscribe"},{"type":"literal","value":"upcoming"},{"type":"literal","value":"update_disabled"},{"type":"literal","value":"upgrade"},{"type":"literal","value":"upi_pay"},{"type":"literal","value":"upload"},{"type":"literal","value":"upload_2"},{"type":"literal","value":"upload_file"},{"type":"literal","value":"urology"},{"type":"literal","value":"usb"},{"type":"literal","value":"usb_off"},{"type":"literal","value":"user_attributes"},{"type":"literal","value":"vaccines"},{"type":"literal","value":"vacuum"},{"type":"literal","value":"valve"},{"type":"literal","value":"vape_free"},{"type":"literal","value":"vaping_rooms"},{"type":"literal","value":"variable_add"},{"type":"literal","value":"variable_insert"},{"type":"literal","value":"variable_remove"},{"type":"literal","value":"variables"},{"type":"literal","value":"ventilator"},{"type":"literal","value":"verified"},{"type":"literal","value":"verified_off"},{"type":"literal","value":"verified_user"},{"type":"literal","value":"vertical_align_bottom"},{"type":"literal","value":"vertical_align_center"},{"type":"literal","value":"vertical_align_top"},{"type":"literal","value":"vertical_distribute"},{"type":"literal","value":"vertical_shades"},{"type":"literal","value":"vertical_shades_closed"},{"type":"literal","value":"vertical_split"},{"type":"literal","value":"vibration"},{"type":"literal","value":"video_call"},{"type":"literal","value":"video_camera_back"},{"type":"literal","value":"video_camera_back_add"},{"type":"literal","value":"video_camera_front"},{"type":"literal","value":"video_camera_front_off"},{"type":"literal","value":"video_chat"},{"type":"literal","value":"video_file"},{"type":"literal","value":"video_label"},{"type":"literal","value":"video_library"},{"type":"literal","value":"video_search"},{"type":"literal","value":"video_settings"},{"type":"literal","value":"video_stable"},{"type":"literal","value":"videocam"},{"type":"literal","value":"videocam_alert"},{"type":"literal","value":"videocam_off"},{"type":"literal","value":"videogame_asset"},{"type":"literal","value":"videogame_asset_off"},{"type":"literal","value":"view_agenda"},{"type":"literal","value":"view_apps"},{"type":"literal","value":"view_array"},{"type":"literal","value":"view_carousel"},{"type":"literal","value":"view_column"},{"type":"literal","value":"view_column_2"},{"type":"literal","value":"view_comfy"},{"type":"literal","value":"view_comfy_alt"},{"type":"literal","value":"view_compact"},{"type":"literal","value":"view_compact_alt"},{"type":"literal","value":"view_cozy"},{"type":"literal","value":"view_day"},{"type":"literal","value":"view_headline"},{"type":"literal","value":"view_in_ar"},{"type":"literal","value":"view_in_ar_off"},{"type":"literal","value":"view_kanban"},{"type":"literal","value":"view_list"},{"type":"literal","value":"view_module"},{"type":"literal","value":"view_object_track"},{"type":"literal","value":"view_quilt"},{"type":"literal","value":"view_real_size"},{"type":"literal","value":"view_sidebar"},{"type":"literal","value":"view_stream"},{"type":"literal","value":"view_timeline"},{"type":"literal","value":"view_week"},{"type":"literal","value":"vignette"},{"type":"literal","value":"vignette_2"},{"type":"literal","value":"villa"},{"type":"literal","value":"visibility_lock"},{"type":"literal","value":"visibility_off"},{"type":"literal","value":"vital_signs"},{"type":"literal","value":"vo2_max"},{"type":"literal","value":"voice_chat"},{"type":"literal","value":"voice_over_off"},{"type":"literal","value":"voice_selection"},{"type":"literal","value":"voice_selection_off"},{"type":"literal","value":"voicemail"},{"type":"literal","value":"voicemail_2"},{"type":"literal","value":"volcano"},{"type":"literal","value":"volume_down"},{"type":"literal","value":"volume_down_alt"},{"type":"literal","value":"volume_mute"},{"type":"literal","value":"volume_off"},{"type":"literal","value":"volume_up"},{"type":"literal","value":"volunteer_activism"},{"type":"literal","value":"voting_chip"},{"type":"literal","value":"vpn_key"},{"type":"literal","value":"vpn_key_alert"},{"type":"literal","value":"vpn_key_off"},{"type":"literal","value":"vpn_lock"},{"type":"literal","value":"vpn_lock_2"},{"type":"literal","value":"vr180_create2d"},{"type":"literal","value":"vr180_create2d_off"},{"type":"literal","value":"vrpano"},{"type":"literal","value":"wall_art"},{"type":"literal","value":"wall_lamp"},{"type":"literal","value":"wallet"},{"type":"literal","value":"wallpaper"},{"type":"literal","value":"wallpaper_slideshow"},{"type":"literal","value":"wand_shine"},{"type":"literal","value":"wand_stars"},{"type":"literal","value":"ward"},{"type":"literal","value":"warehouse"},{"type":"literal","value":"warning"},{"type":"literal","value":"warning_amber"},{"type":"literal","value":"warning_off"},{"type":"literal","value":"wash"},{"type":"literal","value":"washoku"},{"type":"literal","value":"watch"},{"type":"literal","value":"watch_arrow"},{"type":"literal","value":"watch_button_press"},{"type":"literal","value":"watch_check"},{"type":"literal","value":"watch_later"},{"type":"literal","value":"watch_off"},{"type":"literal","value":"watch_screentime"},{"type":"literal","value":"watch_vibration"},{"type":"literal","value":"watch_wake"},{"type":"literal","value":"water"},{"type":"literal","value":"water_bottle"},{"type":"literal","value":"water_bottle_large"},{"type":"literal","value":"water_damage"},{"type":"literal","value":"water_do"},{"type":"literal","value":"water_drop"},{"type":"literal","value":"water_ec"},{"type":"literal","value":"water_full"},{"type":"literal","value":"water_heater"},{"type":"literal","value":"water_lock"},{"type":"literal","value":"water_loss"},{"type":"literal","value":"water_lux"},{"type":"literal","value":"water_medium"},{"type":"literal","value":"water_orp"},{"type":"literal","value":"water_ph"},{"type":"literal","value":"water_pump"},{"type":"literal","value":"water_voc"},{"type":"literal","value":"waterfall_chart"},{"type":"literal","value":"waves"},{"type":"literal","value":"waving_hand"},{"type":"literal","value":"wb_auto"},{"type":"literal","value":"wb_cloudy"},{"type":"literal","value":"wb_incandescent"},{"type":"literal","value":"wb_iridescent"},{"type":"literal","value":"wb_shade"},{"type":"literal","value":"wb_sunny"},{"type":"literal","value":"wb_twighlight"},{"type":"literal","value":"wb_twilight"},{"type":"literal","value":"wc"},{"type":"literal","value":"weather_hail"},{"type":"literal","value":"weather_mix"},{"type":"literal","value":"weather_snowy"},{"type":"literal","value":"web_asset"},{"type":"literal","value":"web_asset_off"},{"type":"literal","value":"web_stories"},{"type":"literal","value":"web_traffic"},{"type":"literal","value":"webhook"},{"type":"literal","value":"weekend"},{"type":"literal","value":"weight"},{"type":"literal","value":"west"},{"type":"literal","value":"whatshot"},{"type":"literal","value":"wheelchair_pickup"},{"type":"literal","value":"where_to_vote"},{"type":"literal","value":"widget_medium"},{"type":"literal","value":"widget_small"},{"type":"literal","value":"widget_width"},{"type":"literal","value":"widgets"},{"type":"literal","value":"width_full"},{"type":"literal","value":"width_normal"},{"type":"literal","value":"width_wide"},{"type":"literal","value":"wifi_1_bar"},{"type":"literal","value":"wifi_2_bar"},{"type":"literal","value":"wifi_add"},{"type":"literal","value":"wifi_calling"},{"type":"literal","value":"wifi_calling_1"},{"type":"literal","value":"wifi_calling_2"},{"type":"literal","value":"wifi_calling_3"},{"type":"literal","value":"wifi_calling_bar_1"},{"type":"literal","value":"wifi_calling_bar_2"},{"type":"literal","value":"wifi_calling_bar_3"},{"type":"literal","value":"wifi_channel"},{"type":"literal","value":"wifi_find"},{"type":"literal","value":"wifi_home"},{"type":"literal","value":"wifi_lock"},{"type":"literal","value":"wifi_notification"},{"type":"literal","value":"wifi_off"},{"type":"literal","value":"wifi_password"},{"type":"literal","value":"wifi_protected_setup"},{"type":"literal","value":"wifi_proxy"},{"type":"literal","value":"wifi_tethering"},{"type":"literal","value":"wifi_tethering_error"},{"type":"literal","value":"wifi_tethering_off"},{"type":"literal","value":"wind_power"},{"type":"literal","value":"window_closed"},{"type":"literal","value":"window_open"},{"type":"literal","value":"window_sensor"},{"type":"literal","value":"windshield_defrost_auto"},{"type":"literal","value":"windshield_defrost_front"},{"type":"literal","value":"windshield_defrost_rear"},{"type":"literal","value":"windshield_heat_front"},{"type":"literal","value":"wine_bar"},{"type":"literal","value":"woman"},{"type":"literal","value":"woman_2"},{"type":"literal","value":"work"},{"type":"literal","value":"work_alert"},{"type":"literal","value":"work_history"},{"type":"literal","value":"work_off"},{"type":"literal","value":"work_outline"},{"type":"literal","value":"work_update"},{"type":"literal","value":"workspace_premium"},{"type":"literal","value":"workspaces"},{"type":"literal","value":"workspaces_filled"},{"type":"literal","value":"workspaces_outline"},{"type":"literal","value":"wounds_injuries"},{"type":"literal","value":"wrap_text"},{"type":"literal","value":"wrist"},{"type":"literal","value":"wrong_location"},{"type":"literal","value":"wysiwyg"},{"type":"literal","value":"yakitori"},{"type":"literal","value":"yard"},{"type":"literal","value":"yoshoku"},{"type":"literal","value":"your_trips"},{"type":"literal","value":"youtube_activity"},{"type":"literal","value":"youtube_searched_for"},{"type":"literal","value":"zone_person_alert"},{"type":"literal","value":"zone_person_idle"},{"type":"literal","value":"zone_person_urgent"},{"type":"literal","value":"zoom_in"},{"type":"literal","value":"zoom_in_map"},{"type":"literal","value":"zoom_out"},{"type":"literal","value":"zoom_out_map"}]}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"literal","value":"function"},{"type":"literal","value":"join"},{"type":"literal","value":"shift"},{"type":"literal","value":"sort"},{"type":"literal","value":"map"},{"type":"literal","value":"filter"},{"type":"literal","value":"source"},{"type":"literal","value":"style"},{"type":"literal","value":"accessible"},{"type":"literal","value":"ios"},{"type":"literal","value":"android"},{"type":"literal","value":"message"},{"type":"literal","value":"web"},{"type":"literal","value":"remove"},{"type":"literal","value":"fingerprint"},{"type":"literal","value":"portrait"},{"type":"literal","value":"landscape"},{"type":"literal","value":"light"},{"type":"literal","value":"resize"},{"type":"literal","value":"output"},{"type":"literal","value":"description"},{"type":"literal","value":"fullscreen"},{"type":"literal","value":"dangerous"},{"type":"literal","value":"metro"},{"type":"literal","value":"image"},{"type":"literal","value":"mode"},{"type":"literal","value":"search"},{"type":"literal","value":"repeat"},{"type":"literal","value":"anchor"},{"type":"literal","value":"link"},{"type":"literal","value":"flag"},{"type":"literal","value":"signature"},{"type":"literal","value":"package"},{"type":"literal","value":"category"},{"type":"literal","value":"key"},{"type":"literal","value":"build"},{"type":"literal","value":"settings"},{"type":"literal","value":"colors"},{"type":"literal","value":"group"},{"type":"literal","value":"comment"},{"type":"literal","value":"target"},{"type":"literal","value":"tag"},{"type":"literal","value":"host"},{"type":"literal","value":"add"},{"type":"literal","value":"start"},{"type":"literal","value":"transform"},{"type":"literal","value":"share"},{"type":"literal","value":"code"},{"type":"literal","value":"policy"},{"type":"literal","value":"switch"},{"type":"literal","value":"public"},{"type":"literal","value":"try"},{"type":"literal","value":"class"},{"type":"literal","value":"info"},{"type":"literal","value":"error"},{"type":"literal","value":"height"},{"type":"literal","value":"scale"},{"type":"literal","value":"tablet"},{"type":"literal","value":"tv"},{"type":"literal","value":"done"},{"type":"literal","value":"refresh"},{"type":"literal","value":"http"},{"type":"literal","value":"send"},{"type":"literal","value":"enable"},{"type":"literal","value":"update"},{"type":"literal","value":"close"},{"type":"literal","value":"elevation"},{"type":"literal","value":"difference"},{"type":"literal","value":"visibility"},{"type":"literal","value":"article"},{"type":"literal","value":"details"},{"type":"literal","value":"html"},{"type":"literal","value":"iframe"},{"type":"literal","value":"input"},{"type":"literal","value":"label"},{"type":"literal","value":"menu"},{"type":"literal","value":"script"},{"type":"literal","value":"select"},{"type":"literal","value":"table"},{"type":"literal","value":"title"},{"type":"literal","value":"circle"},{"type":"literal","value":"pattern"},{"type":"literal","value":"polyline"},{"type":"literal","value":"stop"},{"type":"literal","value":"cancel"},{"type":"literal","value":"pause"},{"type":"literal","value":"storage"},{"type":"literal","value":"event"},{"type":"literal","value":"history"},{"type":"literal","value":"navigation"},{"type":"literal","value":"toolbar"},{"type":"literal","value":"window"},{"type":"literal","value":"print"},{"type":"literal","value":"delete"},{"type":"literal","value":"report"},{"type":"literal","value":"tab"},{"type":"literal","value":"route"},{"type":"literal","value":"stack"},{"type":"literal","value":"merge"},{"type":"literal","value":"opacity"},{"type":"literal","value":"margin"},{"type":"literal","value":"padding"},{"type":"literal","value":"contrast"},{"type":"literal","value":"radio"},{"type":"literal","value":"timer"},{"type":"literal","value":"list"},{"type":"literal","value":"feed"},{"type":"literal","value":"note"},{"type":"literal","value":"tooltip"},{"type":"literal","value":"uppercase"},{"type":"literal","value":"lowercase"},{"type":"literal","value":"email"},{"type":"literal","value":"sync"},{"type":"literal","value":"api"},{"type":"literal","value":"router"},{"type":"literal","value":"download"},{"type":"literal","value":"store"},{"type":"literal","value":"flip"},{"type":"literal","value":"alarm"},{"type":"literal","value":"barcode"},{"type":"literal","value":"bolt"},{"type":"literal","value":"book"},{"type":"literal","value":"bookmark"},{"type":"literal","value":"camera"},{"type":"literal","value":"clear"},{"type":"literal","value":"cloud"},{"type":"literal","value":"crop"},{"type":"literal","value":"eject"},{"type":"literal","value":"equal"},{"type":"literal","value":"eyeglasses"},{"type":"literal","value":"flowchart"},{"type":"literal","value":"folder"},{"type":"literal","value":"forward"},{"type":"literal","value":"globe"},{"type":"literal","value":"headphones"},{"type":"literal","value":"hexagon"},{"type":"literal","value":"hourglass"},{"type":"literal","value":"house"},{"type":"literal","value":"keyboard"},{"type":"literal","value":"lightbulb"},{"type":"literal","value":"lock"},{"type":"literal","value":"mic"},{"type":"literal","value":"percent"},{"type":"literal","value":"person"},{"type":"literal","value":"phone"},{"type":"literal","value":"photo"},{"type":"literal","value":"pin"},{"type":"literal","value":"power"},{"type":"literal","value":"rectangle"},{"type":"literal","value":"shield"},{"type":"literal","value":"shuffle"},{"type":"literal","value":"speaker"},{"type":"literal","value":"square"},{"type":"literal","value":"star"},{"type":"literal","value":"thermometer"},{"type":"literal","value":"timelapse"},{"type":"literal","value":"tornado"},{"type":"literal","value":"umbrella"},{"type":"literal","value":"wifi"},{"type":"literal","value":"abc"},{"type":"literal","value":"crown"},{"type":"literal","value":"diamond"},{"type":"literal","value":"loupe"},{"type":"literal","value":"mail"},{"type":"literal","value":"newspaper"},{"type":"literal","value":"pip"},{"type":"literal","value":"scanner"},{"type":"literal","value":"shadow"},{"type":"literal","value":"stethoscope"},{"type":"literal","value":"terminal"},{"type":"literal","value":"tram"},{"type":"literal","value":"asterisk"},{"type":"literal","value":"checklist"},{"type":"literal","value":"earbuds"},{"type":"literal","value":"pentagon"},{"type":"literal","value":"scooter"},{"type":"literal","value":"backpack"},{"type":"literal","value":"bathtub"},{"type":"literal","value":"chair"},{"type":"literal","value":"dishwasher"},{"type":"literal","value":"fireplace"},{"type":"literal","value":"microwave"},{"type":"literal","value":"oven"},{"type":"literal","value":"pill"},{"type":"literal","value":"shower"},{"type":"literal","value":"sprinkler"},{"type":"literal","value":"stairs"},{"type":"literal","value":"syringe"},{"type":"literal","value":"trophy"},{"type":"literal","value":"sos"},{"type":"literal","value":"stroller"},{"type":"literal","value":"accessibility"},{"type":"literal","value":"bubble"},{"type":"literal","value":"smartphone"},{"type":"literal","value":"storefront"},{"type":"literal","value":"translate"},{"type":"literal","value":"drone"},{"type":"literal","value":"headset"},{"type":"literal","value":"moped"},{"type":"literal","value":"motorcycle"},{"type":"literal","value":"numbers"},{"type":"literal","value":"receipt"},{"type":"literal","value":"palette"},{"type":"literal","value":"animation"},{"type":"literal","value":"badge"},{"type":"literal","value":"security"},{"type":"literal","value":"hide"},{"type":"literal","value":"step"},{"type":"literal","value":"move"},{"type":"literal","value":"123"},{"type":"literal","value":"360"},{"type":"literal","value":"10k"},{"type":"literal","value":"10mp"},{"type":"literal","value":"11mp"},{"type":"literal","value":"12mp"},{"type":"literal","value":"13mp"},{"type":"literal","value":"14mp"},{"type":"literal","value":"15mp"},{"type":"literal","value":"16mp"},{"type":"literal","value":"17mp"},{"type":"literal","value":"18_up_rating"},{"type":"literal","value":"18mp"},{"type":"literal","value":"19mp"},{"type":"literal","value":"1k"},{"type":"literal","value":"1k_plus"},{"type":"literal","value":"1x_mobiledata"},{"type":"literal","value":"1x_mobiledata_badge"},{"type":"literal","value":"20mp"},{"type":"literal","value":"21mp"},{"type":"literal","value":"22mp"},{"type":"literal","value":"23mp"},{"type":"literal","value":"24fps_select"},{"type":"literal","value":"24mp"},{"type":"literal","value":"2d"},{"type":"literal","value":"2k"},{"type":"literal","value":"2k_plus"},{"type":"literal","value":"2mp"},{"type":"literal","value":"30fps"},{"type":"literal","value":"30fps_select"},{"type":"literal","value":"3d"},{"type":"literal","value":"3d_rotation"},{"type":"literal","value":"3g_mobiledata"},{"type":"literal","value":"3g_mobiledata_badge"},{"type":"literal","value":"3k"},{"type":"literal","value":"3k_plus"},{"type":"literal","value":"3mp"},{"type":"literal","value":"3p"},{"type":"literal","value":"4g_mobiledata"},{"type":"literal","value":"4g_mobiledata_badge"},{"type":"literal","value":"4g_plus_mobiledata"},{"type":"literal","value":"4k"},{"type":"literal","value":"4k_plus"},{"type":"literal","value":"4mp"},{"type":"literal","value":"50mp"},{"type":"literal","value":"5g"},{"type":"literal","value":"5g_mobiledata_badge"},{"type":"literal","value":"5k"},{"type":"literal","value":"5k_plus"},{"type":"literal","value":"5mp"},{"type":"literal","value":"60fps"},{"type":"literal","value":"60fps_select"},{"type":"literal","value":"6_ft_apart"},{"type":"literal","value":"6k"},{"type":"literal","value":"6k_plus"},{"type":"literal","value":"6mp"},{"type":"literal","value":"7k"},{"type":"literal","value":"7k_plus"},{"type":"literal","value":"7mp"},{"type":"literal","value":"8k"},{"type":"literal","value":"8k_plus"},{"type":"literal","value":"8mp"},{"type":"literal","value":"9k"},{"type":"literal","value":"9k_plus"},{"type":"literal","value":"9mp"},{"type":"literal","value":"ac_unit"},{"type":"literal","value":"access_alarm"},{"type":"literal","value":"access_alarms"},{"type":"literal","value":"access_time"},{"type":"literal","value":"access_time_filled"},{"type":"literal","value":"accessibility_new"},{"type":"literal","value":"accessible_forward"},{"type":"literal","value":"accessible_menu"},{"type":"literal","value":"account_balance"},{"type":"literal","value":"account_balance_wallet"},{"type":"literal","value":"account_box"},{"type":"literal","value":"account_child"},{"type":"literal","value":"account_child_invert"},{"type":"literal","value":"account_circle"},{"type":"literal","value":"account_circle_off"},{"type":"literal","value":"account_tree"},{"type":"literal","value":"action_key"},{"type":"literal","value":"activity_zone"},{"type":"literal","value":"acupuncture"},{"type":"literal","value":"acute"},{"type":"literal","value":"ad"},{"type":"literal","value":"ad_group"},{"type":"literal","value":"ad_group_off"},{"type":"literal","value":"ad_off"},{"type":"literal","value":"ad_units"},{"type":"literal","value":"adaptive_audio_mic"},{"type":"literal","value":"adaptive_audio_mic_off"},{"type":"literal","value":"adb"},{"type":"literal","value":"add_2"},{"type":"literal","value":"add_a_photo"},{"type":"literal","value":"add_ad"},{"type":"literal","value":"add_alarm"},{"type":"literal","value":"add_alert"},{"type":"literal","value":"add_box"},{"type":"literal","value":"add_business"},{"type":"literal","value":"add_call"},{"type":"literal","value":"add_card"},{"type":"literal","value":"add_chart"},{"type":"literal","value":"add_circle"},{"type":"literal","value":"add_circle_outline"},{"type":"literal","value":"add_column_left"},{"type":"literal","value":"add_column_right"},{"type":"literal","value":"add_comment"},{"type":"literal","value":"add_diamond"},{"type":"literal","value":"add_home"},{"type":"literal","value":"add_home_work"},{"type":"literal","value":"add_ic_call"},{"type":"literal","value":"add_link"},{"type":"literal","value":"add_location"},{"type":"literal","value":"add_location_alt"},{"type":"literal","value":"add_moderator"},{"type":"literal","value":"add_notes"},{"type":"literal","value":"add_photo_alternate"},{"type":"literal","value":"add_reaction"},{"type":"literal","value":"add_road"},{"type":"literal","value":"add_row_above"},{"type":"literal","value":"add_row_below"},{"type":"literal","value":"add_shopping_cart"},{"type":"literal","value":"add_task"},{"type":"literal","value":"add_to_drive"},{"type":"literal","value":"add_to_home_screen"},{"type":"literal","value":"add_to_photos"},{"type":"literal","value":"add_to_queue"},{"type":"literal","value":"add_triangle"},{"type":"literal","value":"addchart"},{"type":"literal","value":"adf_scanner"},{"type":"literal","value":"adjust"},{"type":"literal","value":"admin_meds"},{"type":"literal","value":"admin_panel_settings"},{"type":"literal","value":"ads_click"},{"type":"literal","value":"agender"},{"type":"literal","value":"agriculture"},{"type":"literal","value":"air"},{"type":"literal","value":"air_freshener"},{"type":"literal","value":"air_purifier"},{"type":"literal","value":"air_purifier_gen"},{"type":"literal","value":"airline_seat_flat"},{"type":"literal","value":"airline_seat_flat_angled"},{"type":"literal","value":"airline_seat_individual_suite"},{"type":"literal","value":"airline_seat_legroom_extra"},{"type":"literal","value":"airline_seat_legroom_normal"},{"type":"literal","value":"airline_seat_legroom_reduced"},{"type":"literal","value":"airline_seat_recline_extra"},{"type":"literal","value":"airline_seat_recline_normal"},{"type":"literal","value":"airline_stops"},{"type":"literal","value":"airlines"},{"type":"literal","value":"airplane_ticket"},{"type":"literal","value":"airplanemode_active"},{"type":"literal","value":"airplanemode_inactive"},{"type":"literal","value":"airplay"},{"type":"literal","value":"airport_shuttle"},{"type":"literal","value":"airwave"},{"type":"literal","value":"alarm_add"},{"type":"literal","value":"alarm_off"},{"type":"literal","value":"alarm_on"},{"type":"literal","value":"alarm_pause"},{"type":"literal","value":"alarm_smart_wake"},{"type":"literal","value":"album"},{"type":"literal","value":"align_center"},{"type":"literal","value":"align_end"},{"type":"literal","value":"align_flex_center"},{"type":"literal","value":"align_flex_end"},{"type":"literal","value":"align_flex_start"},{"type":"literal","value":"align_horizontal_center"},{"type":"literal","value":"align_horizontal_left"},{"type":"literal","value":"align_horizontal_right"},{"type":"literal","value":"align_items_stretch"},{"type":"literal","value":"align_justify_center"},{"type":"literal","value":"align_justify_flex_end"},{"type":"literal","value":"align_justify_flex_start"},{"type":"literal","value":"align_justify_space_around"},{"type":"literal","value":"align_justify_space_between"},{"type":"literal","value":"align_justify_space_even"},{"type":"literal","value":"align_justify_stretch"},{"type":"literal","value":"align_self_stretch"},{"type":"literal","value":"align_space_around"},{"type":"literal","value":"align_space_between"},{"type":"literal","value":"align_space_even"},{"type":"literal","value":"align_start"},{"type":"literal","value":"align_stretch"},{"type":"literal","value":"align_vertical_bottom"},{"type":"literal","value":"align_vertical_center"},{"type":"literal","value":"align_vertical_top"},{"type":"literal","value":"all_inbox"},{"type":"literal","value":"all_inclusive"},{"type":"literal","value":"all_match"},{"type":"literal","value":"all_out"},{"type":"literal","value":"allergies"},{"type":"literal","value":"allergy"},{"type":"literal","value":"alt_route"},{"type":"literal","value":"alternate_email"},{"type":"literal","value":"altitude"},{"type":"literal","value":"ambulance"},{"type":"literal","value":"amend"},{"type":"literal","value":"amp_stories"},{"type":"literal","value":"analytics"},{"type":"literal","value":"android_cell_4_bar"},{"type":"literal","value":"android_cell_4_bar_alert"},{"type":"literal","value":"android_cell_4_bar_off"},{"type":"literal","value":"android_cell_4_bar_plus"},{"type":"literal","value":"android_cell_5_bar"},{"type":"literal","value":"android_cell_5_bar_alert"},{"type":"literal","value":"android_cell_5_bar_off"},{"type":"literal","value":"android_cell_5_bar_plus"},{"type":"literal","value":"android_cell_dual_4_bar"},{"type":"literal","value":"android_cell_dual_4_bar_alert"},{"type":"literal","value":"android_cell_dual_4_bar_plus"},{"type":"literal","value":"android_cell_dual_5_bar"},{"type":"literal","value":"android_cell_dual_5_bar_alert"},{"type":"literal","value":"android_cell_dual_5_bar_plus"},{"type":"literal","value":"android_wifi_3_bar"},{"type":"literal","value":"android_wifi_3_bar_alert"},{"type":"literal","value":"android_wifi_3_bar_lock"},{"type":"literal","value":"android_wifi_3_bar_off"},{"type":"literal","value":"android_wifi_3_bar_plus"},{"type":"literal","value":"android_wifi_3_bar_question"},{"type":"literal","value":"android_wifi_4_bar"},{"type":"literal","value":"android_wifi_4_bar_alert"},{"type":"literal","value":"android_wifi_4_bar_lock"},{"type":"literal","value":"android_wifi_4_bar_off"},{"type":"literal","value":"android_wifi_4_bar_plus"},{"type":"literal","value":"android_wifi_4_bar_question"},{"type":"literal","value":"animated_images"},{"type":"literal","value":"announcement"},{"type":"literal","value":"aod"},{"type":"literal","value":"aod_tablet"},{"type":"literal","value":"aod_watch"},{"type":"literal","value":"apartment"},{"type":"literal","value":"apk_document"},{"type":"literal","value":"apk_install"},{"type":"literal","value":"app_badging"},{"type":"literal","value":"app_blocking"},{"type":"literal","value":"app_registration"},{"type":"literal","value":"app_settings_alt"},{"type":"literal","value":"app_shortcut"},{"type":"literal","value":"apparel"},{"type":"literal","value":"approval"},{"type":"literal","value":"approval_delegation"},{"type":"literal","value":"approval_delegation_off"},{"type":"literal","value":"apps"},{"type":"literal","value":"apps_outage"},{"type":"literal","value":"aq"},{"type":"literal","value":"aq_indoor"},{"type":"literal","value":"ar_on_you"},{"type":"literal","value":"ar_stickers"},{"type":"literal","value":"architecture"},{"type":"literal","value":"archive"},{"type":"literal","value":"area_chart"},{"type":"literal","value":"arming_countdown"},{"type":"literal","value":"arrow_and_edge"},{"type":"literal","value":"arrow_back"},{"type":"literal","value":"arrow_back_2"},{"type":"literal","value":"arrow_back_ios"},{"type":"literal","value":"arrow_back_ios_new"},{"type":"literal","value":"arrow_circle_down"},{"type":"literal","value":"arrow_circle_left"},{"type":"literal","value":"arrow_circle_right"},{"type":"literal","value":"arrow_circle_up"},{"type":"literal","value":"arrow_cool_down"},{"type":"literal","value":"arrow_downward"},{"type":"literal","value":"arrow_downward_alt"},{"type":"literal","value":"arrow_drop_down"},{"type":"literal","value":"arrow_drop_down_circle"},{"type":"literal","value":"arrow_drop_up"},{"type":"literal","value":"arrow_forward"},{"type":"literal","value":"arrow_forward_ios"},{"type":"literal","value":"arrow_insert"},{"type":"literal","value":"arrow_left"},{"type":"literal","value":"arrow_left_alt"},{"type":"literal","value":"arrow_menu_close"},{"type":"literal","value":"arrow_menu_open"},{"type":"literal","value":"arrow_or_edge"},{"type":"literal","value":"arrow_outward"},{"type":"literal","value":"arrow_range"},{"type":"literal","value":"arrow_right"},{"type":"literal","value":"arrow_right_alt"},{"type":"literal","value":"arrow_selector_tool"},{"type":"literal","value":"arrow_shape_up"},{"type":"literal","value":"arrow_shape_up_stack"},{"type":"literal","value":"arrow_shape_up_stack_2"},{"type":"literal","value":"arrow_split"},{"type":"literal","value":"arrow_top_left"},{"type":"literal","value":"arrow_top_right"},{"type":"literal","value":"arrow_upload_progress"},{"type":"literal","value":"arrow_upload_ready"},{"type":"literal","value":"arrow_upward"},{"type":"literal","value":"arrow_upward_alt"},{"type":"literal","value":"arrow_warm_up"},{"type":"literal","value":"arrows_input"},{"type":"literal","value":"arrows_more_down"},{"type":"literal","value":"arrows_more_up"},{"type":"literal","value":"arrows_output"},{"type":"literal","value":"arrows_outward"},{"type":"literal","value":"art_track"},{"type":"literal","value":"article_person"},{"type":"literal","value":"article_shortcut"},{"type":"literal","value":"artist"},{"type":"literal","value":"aspect_ratio"},{"type":"literal","value":"assessment"},{"type":"literal","value":"assignment"},{"type":"literal","value":"assignment_add"},{"type":"literal","value":"assignment_ind"},{"type":"literal","value":"assignment_late"},{"type":"literal","value":"assignment_return"},{"type":"literal","value":"assignment_returned"},{"type":"literal","value":"assignment_turned_in"},{"type":"literal","value":"assist_walker"},{"type":"literal","value":"assistant"},{"type":"literal","value":"assistant_device"},{"type":"literal","value":"assistant_direction"},{"type":"literal","value":"assistant_navigation"},{"type":"literal","value":"assistant_on_hub"},{"type":"literal","value":"assistant_photo"},{"type":"literal","value":"assured_workload"},{"type":"literal","value":"atm"},{"type":"literal","value":"atr"},{"type":"literal","value":"attach_email"},{"type":"literal","value":"attach_file"},{"type":"literal","value":"attach_file_add"},{"type":"literal","value":"attach_file_off"},{"type":"literal","value":"attach_money"},{"type":"literal","value":"attachment"},{"type":"literal","value":"attractions"},{"type":"literal","value":"attribution"},{"type":"literal","value":"audio_description"},{"type":"literal","value":"audio_file"},{"type":"literal","value":"audio_video_receiver"},{"type":"literal","value":"audiotrack"},{"type":"literal","value":"auto_awesome"},{"type":"literal","value":"auto_awesome_mosaic"},{"type":"literal","value":"auto_awesome_motion"},{"type":"literal","value":"auto_delete"},{"type":"literal","value":"auto_fix_high"},{"type":"literal","value":"auto_fix_normal"},{"type":"literal","value":"auto_fix_off"},{"type":"literal","value":"auto_graph"},{"type":"literal","value":"auto_mode"},{"type":"literal","value":"auto_read_pause"},{"type":"literal","value":"auto_read_play"},{"type":"literal","value":"auto_stories"},{"type":"literal","value":"auto_stories_off"},{"type":"literal","value":"auto_towing"},{"type":"literal","value":"auto_transmission"},{"type":"literal","value":"autofps_select"},{"type":"literal","value":"automation"},{"type":"literal","value":"autopause"},{"type":"literal","value":"autoplay"},{"type":"literal","value":"autorenew"},{"type":"literal","value":"autostop"},{"type":"literal","value":"av1"},{"type":"literal","value":"av_timer"},{"type":"literal","value":"avc"},{"type":"literal","value":"avg_pace"},{"type":"literal","value":"avg_time"},{"type":"literal","value":"award_meal"},{"type":"literal","value":"award_star"},{"type":"literal","value":"azm"},{"type":"literal","value":"baby_changing_station"},{"type":"literal","value":"back_hand"},{"type":"literal","value":"back_to_tab"},{"type":"literal","value":"background_dot_large"},{"type":"literal","value":"background_dot_small"},{"type":"literal","value":"background_grid_small"},{"type":"literal","value":"background_replace"},{"type":"literal","value":"backlight_high"},{"type":"literal","value":"backlight_high_off"},{"type":"literal","value":"backlight_low"},{"type":"literal","value":"backspace"},{"type":"literal","value":"backup"},{"type":"literal","value":"backup_table"},{"type":"literal","value":"badge_critical_battery"},{"type":"literal","value":"badminton"},{"type":"literal","value":"bakery_dining"},{"type":"literal","value":"balance"},{"type":"literal","value":"balcony"},{"type":"literal","value":"ballot"},{"type":"literal","value":"bar_chart"},{"type":"literal","value":"bar_chart_4_bars"},{"type":"literal","value":"bar_chart_off"},{"type":"literal","value":"barcode_reader"},{"type":"literal","value":"barcode_scanner"},{"type":"literal","value":"barefoot"},{"type":"literal","value":"batch_prediction"},{"type":"literal","value":"bath_bedrock"},{"type":"literal","value":"bath_outdoor"},{"type":"literal","value":"bath_private"},{"type":"literal","value":"bath_public_large"},{"type":"literal","value":"bath_soak"},{"type":"literal","value":"bathroom"},{"type":"literal","value":"battery_0_bar"},{"type":"literal","value":"battery_1_bar"},{"type":"literal","value":"battery_20"},{"type":"literal","value":"battery_2_bar"},{"type":"literal","value":"battery_30"},{"type":"literal","value":"battery_3_bar"},{"type":"literal","value":"battery_4_bar"},{"type":"literal","value":"battery_50"},{"type":"literal","value":"battery_5_bar"},{"type":"literal","value":"battery_60"},{"type":"literal","value":"battery_6_bar"},{"type":"literal","value":"battery_80"},{"type":"literal","value":"battery_90"},{"type":"literal","value":"battery_alert"},{"type":"literal","value":"battery_android_0"},{"type":"literal","value":"battery_android_1"},{"type":"literal","value":"battery_android_2"},{"type":"literal","value":"battery_android_3"},{"type":"literal","value":"battery_android_4"},{"type":"literal","value":"battery_android_5"},{"type":"literal","value":"battery_android_6"},{"type":"literal","value":"battery_android_alert"},{"type":"literal","value":"battery_android_bolt"},{"type":"literal","value":"battery_android_frame_1"},{"type":"literal","value":"battery_android_frame_2"},{"type":"literal","value":"battery_android_frame_3"},{"type":"literal","value":"battery_android_frame_4"},{"type":"literal","value":"battery_android_frame_5"},{"type":"literal","value":"battery_android_frame_6"},{"type":"literal","value":"battery_android_frame_alert"},{"type":"literal","value":"battery_android_frame_bolt"},{"type":"literal","value":"battery_android_frame_full"},{"type":"literal","value":"battery_android_frame_plus"},{"type":"literal","value":"battery_android_frame_question"},{"type":"literal","value":"battery_android_frame_share"},{"type":"literal","value":"battery_android_frame_shield"},{"type":"literal","value":"battery_android_full"},{"type":"literal","value":"battery_android_plus"},{"type":"literal","value":"battery_android_question"},{"type":"literal","value":"battery_android_share"},{"type":"literal","value":"battery_android_shield"},{"type":"literal","value":"battery_change"},{"type":"literal","value":"battery_charging_20"},{"type":"literal","value":"battery_charging_30"},{"type":"literal","value":"battery_charging_50"},{"type":"literal","value":"battery_charging_60"},{"type":"literal","value":"battery_charging_80"},{"type":"literal","value":"battery_charging_90"},{"type":"literal","value":"battery_charging_full"},{"type":"literal","value":"battery_error"},{"type":"literal","value":"battery_full"},{"type":"literal","value":"battery_full_alt"},{"type":"literal","value":"battery_horiz_000"},{"type":"literal","value":"battery_horiz_050"},{"type":"literal","value":"battery_horiz_075"},{"type":"literal","value":"battery_low"},{"type":"literal","value":"battery_plus"},{"type":"literal","value":"battery_profile"},{"type":"literal","value":"battery_saver"},{"type":"literal","value":"battery_share"},{"type":"literal","value":"battery_status_good"},{"type":"literal","value":"battery_std"},{"type":"literal","value":"battery_unknown"},{"type":"literal","value":"battery_very_low"},{"type":"literal","value":"beach_access"},{"type":"literal","value":"bed"},{"type":"literal","value":"bedroom_baby"},{"type":"literal","value":"bedroom_child"},{"type":"literal","value":"bedroom_parent"},{"type":"literal","value":"bedtime"},{"type":"literal","value":"bedtime_off"},{"type":"literal","value":"beenhere"},{"type":"literal","value":"beer_meal"},{"type":"literal","value":"bento"},{"type":"literal","value":"bia"},{"type":"literal","value":"bid_landscape"},{"type":"literal","value":"bid_landscape_disabled"},{"type":"literal","value":"bigtop_updates"},{"type":"literal","value":"bike_dock"},{"type":"literal","value":"bike_lane"},{"type":"literal","value":"bike_scooter"},{"type":"literal","value":"biotech"},{"type":"literal","value":"blanket"},{"type":"literal","value":"blender"},{"type":"literal","value":"blind"},{"type":"literal","value":"blinds"},{"type":"literal","value":"blinds_closed"},{"type":"literal","value":"block"},{"type":"literal","value":"block_flipped"},{"type":"literal","value":"blood_pressure"},{"type":"literal","value":"bloodtype"},{"type":"literal","value":"bluetooth"},{"type":"literal","value":"bluetooth_audio"},{"type":"literal","value":"bluetooth_connected"},{"type":"literal","value":"bluetooth_disabled"},{"type":"literal","value":"bluetooth_drive"},{"type":"literal","value":"bluetooth_searching"},{"type":"literal","value":"blur_circular"},{"type":"literal","value":"blur_linear"},{"type":"literal","value":"blur_medium"},{"type":"literal","value":"blur_off"},{"type":"literal","value":"blur_on"},{"type":"literal","value":"blur_short"},{"type":"literal","value":"boat_bus"},{"type":"literal","value":"boat_railway"},{"type":"literal","value":"body_fat"},{"type":"literal","value":"body_system"},{"type":"literal","value":"bomb"},{"type":"literal","value":"book_2"},{"type":"literal","value":"book_3"},{"type":"literal","value":"book_4"},{"type":"literal","value":"book_5"},{"type":"literal","value":"book_6"},{"type":"literal","value":"book_online"},{"type":"literal","value":"book_ribbon"},{"type":"literal","value":"bookmark_add"},{"type":"literal","value":"bookmark_added"},{"type":"literal","value":"bookmark_bag"},{"type":"literal","value":"bookmark_border"},{"type":"literal","value":"bookmark_check"},{"type":"literal","value":"bookmark_flag"},{"type":"literal","value":"bookmark_heart"},{"type":"literal","value":"bookmark_manager"},{"type":"literal","value":"bookmark_remove"},{"type":"literal","value":"bookmark_star"},{"type":"literal","value":"bookmarks"},{"type":"literal","value":"books_movies_and_music"},{"type":"literal","value":"border_all"},{"type":"literal","value":"border_bottom"},{"type":"literal","value":"border_clear"},{"type":"literal","value":"border_color"},{"type":"literal","value":"border_horizontal"},{"type":"literal","value":"border_inner"},{"type":"literal","value":"border_left"},{"type":"literal","value":"border_outer"},{"type":"literal","value":"border_right"},{"type":"literal","value":"border_style"},{"type":"literal","value":"border_top"},{"type":"literal","value":"border_vertical"},{"type":"literal","value":"borg"},{"type":"literal","value":"bottom_app_bar"},{"type":"literal","value":"bottom_drawer"},{"type":"literal","value":"bottom_navigation"},{"type":"literal","value":"bottom_panel_close"},{"type":"literal","value":"bottom_panel_open"},{"type":"literal","value":"bottom_right_click"},{"type":"literal","value":"bottom_sheets"},{"type":"literal","value":"box"},{"type":"literal","value":"box_add"},{"type":"literal","value":"box_edit"},{"type":"literal","value":"boy"},{"type":"literal","value":"brand_awareness"},{"type":"literal","value":"brand_family"},{"type":"literal","value":"branding_watermark"},{"type":"literal","value":"breakfast_dining"},{"type":"literal","value":"breaking_news"},{"type":"literal","value":"breaking_news_alt_1"},{"type":"literal","value":"breastfeeding"},{"type":"literal","value":"brick"},{"type":"literal","value":"briefcase_meal"},{"type":"literal","value":"brightness_1"},{"type":"literal","value":"brightness_2"},{"type":"literal","value":"brightness_3"},{"type":"literal","value":"brightness_4"},{"type":"literal","value":"brightness_5"},{"type":"literal","value":"brightness_6"},{"type":"literal","value":"brightness_7"},{"type":"literal","value":"brightness_alert"},{"type":"literal","value":"brightness_auto"},{"type":"literal","value":"brightness_empty"},{"type":"literal","value":"brightness_high"},{"type":"literal","value":"brightness_low"},{"type":"literal","value":"brightness_medium"},{"type":"literal","value":"bring_your_own_ip"},{"type":"literal","value":"broadcast_on_home"},{"type":"literal","value":"broadcast_on_personal"},{"type":"literal","value":"broken_image"},{"type":"literal","value":"browse"},{"type":"literal","value":"browse_activity"},{"type":"literal","value":"browse_gallery"},{"type":"literal","value":"browser_not_supported"},{"type":"literal","value":"browser_updated"},{"type":"literal","value":"brunch_dining"},{"type":"literal","value":"brush"},{"type":"literal","value":"bubble_chart"},{"type":"literal","value":"bubbles"},{"type":"literal","value":"bucket_check"},{"type":"literal","value":"bug_report"},{"type":"literal","value":"build_circle"},{"type":"literal","value":"bungalow"},{"type":"literal","value":"burst_mode"},{"type":"literal","value":"bus_alert"},{"type":"literal","value":"bus_railway"},{"type":"literal","value":"business"},{"type":"literal","value":"business_center"},{"type":"literal","value":"business_chip"},{"type":"literal","value":"business_messages"},{"type":"literal","value":"buttons_alt"},{"type":"literal","value":"cabin"},{"type":"literal","value":"cable"},{"type":"literal","value":"cable_car"},{"type":"literal","value":"cached"},{"type":"literal","value":"cadence"},{"type":"literal","value":"cake"},{"type":"literal","value":"cake_add"},{"type":"literal","value":"calculate"},{"type":"literal","value":"calendar_add_on"},{"type":"literal","value":"calendar_apps_script"},{"type":"literal","value":"calendar_check"},{"type":"literal","value":"calendar_clock"},{"type":"literal","value":"calendar_lock"},{"type":"literal","value":"calendar_meal"},{"type":"literal","value":"calendar_meal_2"},{"type":"literal","value":"calendar_month"},{"type":"literal","value":"calendar_today"},{"type":"literal","value":"calendar_view_day"},{"type":"literal","value":"calendar_view_month"},{"type":"literal","value":"calendar_view_week"},{"type":"literal","value":"call"},{"type":"literal","value":"call_end"},{"type":"literal","value":"call_log"},{"type":"literal","value":"call_made"},{"type":"literal","value":"call_merge"},{"type":"literal","value":"call_missed"},{"type":"literal","value":"call_missed_outgoing"},{"type":"literal","value":"call_quality"},{"type":"literal","value":"call_received"},{"type":"literal","value":"call_split"},{"type":"literal","value":"call_to_action"},{"type":"literal","value":"camera_alt"},{"type":"literal","value":"camera_enhance"},{"type":"literal","value":"camera_front"},{"type":"literal","value":"camera_indoor"},{"type":"literal","value":"camera_outdoor"},{"type":"literal","value":"camera_rear"},{"type":"literal","value":"camera_roll"},{"type":"literal","value":"camera_video"},{"type":"literal","value":"cameraswitch"},{"type":"literal","value":"campaign"},{"type":"literal","value":"camping"},{"type":"literal","value":"cancel_presentation"},{"type":"literal","value":"cancel_schedule_send"},{"type":"literal","value":"candle"},{"type":"literal","value":"candlestick_chart"},{"type":"literal","value":"cannabis"},{"type":"literal","value":"captive_portal"},{"type":"literal","value":"capture"},{"type":"literal","value":"car_crash"},{"type":"literal","value":"car_defrost_left"},{"type":"literal","value":"car_defrost_low_left"},{"type":"literal","value":"car_defrost_low_right"},{"type":"literal","value":"car_defrost_mid_left"},{"type":"literal","value":"car_defrost_mid_low_left"},{"type":"literal","value":"car_defrost_mid_low_right"},{"type":"literal","value":"car_defrost_mid_right"},{"type":"literal","value":"car_defrost_right"},{"type":"literal","value":"car_fan_low_left"},{"type":"literal","value":"car_fan_low_mid_left"},{"type":"literal","value":"car_fan_low_right"},{"type":"literal","value":"car_fan_mid_left"},{"type":"literal","value":"car_fan_mid_low_right"},{"type":"literal","value":"car_fan_mid_right"},{"type":"literal","value":"car_fan_recirculate"},{"type":"literal","value":"car_gear"},{"type":"literal","value":"car_lock"},{"type":"literal","value":"car_mirror_heat"},{"type":"literal","value":"car_rental"},{"type":"literal","value":"car_repair"},{"type":"literal","value":"car_tag"},{"type":"literal","value":"card_giftcard"},{"type":"literal","value":"card_membership"},{"type":"literal","value":"card_travel"},{"type":"literal","value":"cardio_load"},{"type":"literal","value":"cardiology"},{"type":"literal","value":"cards"},{"type":"literal","value":"cards_star"},{"type":"literal","value":"carpenter"},{"type":"literal","value":"carry_on_bag"},{"type":"literal","value":"carry_on_bag_checked"},{"type":"literal","value":"carry_on_bag_inactive"},{"type":"literal","value":"carry_on_bag_question"},{"type":"literal","value":"cases"},{"type":"literal","value":"casino"},{"type":"literal","value":"cast"},{"type":"literal","value":"cast_connected"},{"type":"literal","value":"cast_for_education"},{"type":"literal","value":"cast_pause"},{"type":"literal","value":"cast_warning"},{"type":"literal","value":"castle"},{"type":"literal","value":"catching_pokemon"},{"type":"literal","value":"category_search"},{"type":"literal","value":"celebration"},{"type":"literal","value":"cell_merge"},{"type":"literal","value":"cell_tower"},{"type":"literal","value":"cell_wifi"},{"type":"literal","value":"center_focus_strong"},{"type":"literal","value":"center_focus_weak"},{"type":"literal","value":"chair_alt"},{"type":"literal","value":"chair_counter"},{"type":"literal","value":"chair_fireplace"},{"type":"literal","value":"chair_umbrella"},{"type":"literal","value":"chalet"},{"type":"literal","value":"change_circle"},{"type":"literal","value":"change_history"},{"type":"literal","value":"charger"},{"type":"literal","value":"charging_station"},{"type":"literal","value":"chart_data"},{"type":"literal","value":"chat"},{"type":"literal","value":"chat_add_on"},{"type":"literal","value":"chat_apps_script"},{"type":"literal","value":"chat_bubble"},{"type":"literal","value":"chat_bubble_outline"},{"type":"literal","value":"chat_error"},{"type":"literal","value":"chat_info"},{"type":"literal","value":"chat_paste_go"},{"type":"literal","value":"chat_paste_go_2"},{"type":"literal","value":"check"},{"type":"literal","value":"check_box"},{"type":"literal","value":"check_box_outline_blank"},{"type":"literal","value":"check_circle"},{"type":"literal","value":"check_circle_outline"},{"type":"literal","value":"check_circle_unread"},{"type":"literal","value":"check_in_out"},{"type":"literal","value":"check_indeterminate_small"},{"type":"literal","value":"check_small"},{"type":"literal","value":"checkbook"},{"type":"literal","value":"checked_bag"},{"type":"literal","value":"checked_bag_question"},{"type":"literal","value":"checklist_rtl"},{"type":"literal","value":"checkroom"},{"type":"literal","value":"cheer"},{"type":"literal","value":"chef_hat"},{"type":"literal","value":"chess"},{"type":"literal","value":"chess_bishop"},{"type":"literal","value":"chess_bishop_2"},{"type":"literal","value":"chess_king"},{"type":"literal","value":"chess_king_2"},{"type":"literal","value":"chess_knight"},{"type":"literal","value":"chess_pawn"},{"type":"literal","value":"chess_pawn_2"},{"type":"literal","value":"chess_queen"},{"type":"literal","value":"chess_rook"},{"type":"literal","value":"chevron_backward"},{"type":"literal","value":"chevron_forward"},{"type":"literal","value":"chevron_left"},{"type":"literal","value":"chevron_right"},{"type":"literal","value":"child_care"},{"type":"literal","value":"child_friendly"},{"type":"literal","value":"child_hat"},{"type":"literal","value":"chip_extraction"},{"type":"literal","value":"chips"},{"type":"literal","value":"chrome_reader_mode"},{"type":"literal","value":"chromecast_2"},{"type":"literal","value":"chromecast_device"},{"type":"literal","value":"chronic"},{"type":"literal","value":"church"},{"type":"literal","value":"cinematic_blur"},{"type":"literal","value":"circle_notifications"},{"type":"literal","value":"circles"},{"type":"literal","value":"circles_ext"},{"type":"literal","value":"clarify"},{"type":"literal","value":"clean_hands"},{"type":"literal","value":"cleaning"},{"type":"literal","value":"cleaning_bucket"},{"type":"literal","value":"cleaning_services"},{"type":"literal","value":"clear_all"},{"type":"literal","value":"clear_day"},{"type":"literal","value":"climate_mini_split"},{"type":"literal","value":"clinical_notes"},{"type":"literal","value":"clock_arrow_down"},{"type":"literal","value":"clock_arrow_up"},{"type":"literal","value":"clock_loader_10"},{"type":"literal","value":"clock_loader_20"},{"type":"literal","value":"clock_loader_40"},{"type":"literal","value":"clock_loader_60"},{"type":"literal","value":"clock_loader_80"},{"type":"literal","value":"clock_loader_90"},{"type":"literal","value":"close_fullscreen"},{"type":"literal","value":"close_small"},{"type":"literal","value":"closed_caption"},{"type":"literal","value":"closed_caption_add"},{"type":"literal","value":"closed_caption_disabled"},{"type":"literal","value":"closed_caption_off"},{"type":"literal","value":"cloud_alert"},{"type":"literal","value":"cloud_circle"},{"type":"literal","value":"cloud_done"},{"type":"literal","value":"cloud_download"},{"type":"literal","value":"cloud_lock"},{"type":"literal","value":"cloud_off"},{"type":"literal","value":"cloud_queue"},{"type":"literal","value":"cloud_sync"},{"type":"literal","value":"cloud_upload"},{"type":"literal","value":"cloudy_snowing"},{"type":"literal","value":"co2"},{"type":"literal","value":"co_present"},{"type":"literal","value":"code_blocks"},{"type":"literal","value":"code_off"},{"type":"literal","value":"coffee"},{"type":"literal","value":"coffee_maker"},{"type":"literal","value":"cognition"},{"type":"literal","value":"cognition_2"},{"type":"literal","value":"collapse_all"},{"type":"literal","value":"collapse_content"},{"type":"literal","value":"collections"},{"type":"literal","value":"collections_bookmark"},{"type":"literal","value":"color_lens"},{"type":"literal","value":"colorize"},{"type":"literal","value":"combine_columns"},{"type":"literal","value":"comedy_mask"},{"type":"literal","value":"comic_bubble"},{"type":"literal","value":"comment_bank"},{"type":"literal","value":"comments_disabled"},{"type":"literal","value":"commit"},{"type":"literal","value":"communication"},{"type":"literal","value":"communities"},{"type":"literal","value":"commute"},{"type":"literal","value":"compare"},{"type":"literal","value":"compare_arrows"},{"type":"literal","value":"compass_calibration"},{"type":"literal","value":"component_exchange"},{"type":"literal","value":"compost"},{"type":"literal","value":"compress"},{"type":"literal","value":"computer"},{"type":"literal","value":"computer_arrow_up"},{"type":"literal","value":"computer_cancel"},{"type":"literal","value":"concierge"},{"type":"literal","value":"conditions"},{"type":"literal","value":"confirmation_number"},{"type":"literal","value":"congenital"},{"type":"literal","value":"connect_without_contact"},{"type":"literal","value":"connected_tv"},{"type":"literal","value":"connecting_airports"},{"type":"literal","value":"construction"},{"type":"literal","value":"contact_emergency"},{"type":"literal","value":"contact_mail"},{"type":"literal","value":"contact_page"},{"type":"literal","value":"contact_phone"},{"type":"literal","value":"contact_support"},{"type":"literal","value":"contactless"},{"type":"literal","value":"contactless_off"},{"type":"literal","value":"contacts"},{"type":"literal","value":"contacts_product"},{"type":"literal","value":"content_copy"},{"type":"literal","value":"content_cut"},{"type":"literal","value":"content_paste"},{"type":"literal","value":"content_paste_go"},{"type":"literal","value":"content_paste_off"},{"type":"literal","value":"content_paste_search"},{"type":"literal","value":"contextual_token"},{"type":"literal","value":"contextual_token_add"},{"type":"literal","value":"contract"},{"type":"literal","value":"contract_delete"},{"type":"literal","value":"contract_edit"},{"type":"literal","value":"contrast_circle"},{"type":"literal","value":"contrast_rtl_off"},{"type":"literal","value":"contrast_square"},{"type":"literal","value":"control_camera"},{"type":"literal","value":"control_point"},{"type":"literal","value":"control_point_duplicate"},{"type":"literal","value":"controller_gen"},{"type":"literal","value":"conversation"},{"type":"literal","value":"conversion_path"},{"type":"literal","value":"conversion_path_off"},{"type":"literal","value":"convert_to_text"},{"type":"literal","value":"conveyor_belt"},{"type":"literal","value":"cookie"},{"type":"literal","value":"cookie_off"},{"type":"literal","value":"cooking"},{"type":"literal","value":"cool_to_dry"},{"type":"literal","value":"copy_all"},{"type":"literal","value":"copyright"},{"type":"literal","value":"coronavirus"},{"type":"literal","value":"corporate_fare"},{"type":"literal","value":"cottage"},{"type":"literal","value":"counter_0"},{"type":"literal","value":"counter_1"},{"type":"literal","value":"counter_2"},{"type":"literal","value":"counter_3"},{"type":"literal","value":"counter_4"},{"type":"literal","value":"counter_5"},{"type":"literal","value":"counter_6"},{"type":"literal","value":"counter_7"},{"type":"literal","value":"counter_8"},{"type":"literal","value":"counter_9"},{"type":"literal","value":"countertops"},{"type":"literal","value":"create"},{"type":"literal","value":"create_new_folder"},{"type":"literal","value":"credit_card"},{"type":"literal","value":"credit_card_clock"},{"type":"literal","value":"credit_card_gear"},{"type":"literal","value":"credit_card_heart"},{"type":"literal","value":"credit_card_off"},{"type":"literal","value":"credit_score"},{"type":"literal","value":"crib"},{"type":"literal","value":"crisis_alert"},{"type":"literal","value":"crop_16_9"},{"type":"literal","value":"crop_3_2"},{"type":"literal","value":"crop_5_4"},{"type":"literal","value":"crop_7_5"},{"type":"literal","value":"crop_9_16"},{"type":"literal","value":"crop_din"},{"type":"literal","value":"crop_free"},{"type":"literal","value":"crop_landscape"},{"type":"literal","value":"crop_original"},{"type":"literal","value":"crop_portrait"},{"type":"literal","value":"crop_rotate"},{"type":"literal","value":"crop_square"},{"type":"literal","value":"crossword"},{"type":"literal","value":"crowdsource"},{"type":"literal","value":"cruelty_free"},{"type":"literal","value":"css"},{"type":"literal","value":"csv"},{"type":"literal","value":"currency_bitcoin"},{"type":"literal","value":"currency_exchange"},{"type":"literal","value":"currency_franc"},{"type":"literal","value":"currency_lira"},{"type":"literal","value":"currency_pound"},{"type":"literal","value":"currency_ruble"},{"type":"literal","value":"currency_rupee"},{"type":"literal","value":"currency_rupee_circle"},{"type":"literal","value":"currency_yen"},{"type":"literal","value":"currency_yuan"},{"type":"literal","value":"curtains"},{"type":"literal","value":"curtains_closed"},{"type":"literal","value":"custom_typography"},{"type":"literal","value":"cycle"},{"type":"literal","value":"cyclone"},{"type":"literal","value":"dark_mode"},{"type":"literal","value":"dashboard"},{"type":"literal","value":"dashboard_2"},{"type":"literal","value":"dashboard_customize"},{"type":"literal","value":"data_alert"},{"type":"literal","value":"data_array"},{"type":"literal","value":"data_check"},{"type":"literal","value":"data_exploration"},{"type":"literal","value":"data_info_alert"},{"type":"literal","value":"data_loss_prevention"},{"type":"literal","value":"data_object"},{"type":"literal","value":"data_saver_off"},{"type":"literal","value":"data_saver_on"},{"type":"literal","value":"data_table"},{"type":"literal","value":"data_thresholding"},{"type":"literal","value":"data_usage"},{"type":"literal","value":"database"},{"type":"literal","value":"database_off"},{"type":"literal","value":"database_search"},{"type":"literal","value":"database_upload"},{"type":"literal","value":"dataset"},{"type":"literal","value":"dataset_linked"},{"type":"literal","value":"date_range"},{"type":"literal","value":"deblur"},{"type":"literal","value":"deceased"},{"type":"literal","value":"decimal_decrease"},{"type":"literal","value":"decimal_increase"},{"type":"literal","value":"deck"},{"type":"literal","value":"dehaze"},{"type":"literal","value":"delete_forever"},{"type":"literal","value":"delete_history"},{"type":"literal","value":"delete_outline"},{"type":"literal","value":"delete_sweep"},{"type":"literal","value":"delivery_dining"},{"type":"literal","value":"delivery_truck_bolt"},{"type":"literal","value":"delivery_truck_speed"},{"type":"literal","value":"demography"},{"type":"literal","value":"density_large"},{"type":"literal","value":"density_medium"},{"type":"literal","value":"density_small"},{"type":"literal","value":"dentistry"},{"type":"literal","value":"departure_board"},{"type":"literal","value":"deployed_code"},{"type":"literal","value":"deployed_code_account"},{"type":"literal","value":"deployed_code_alert"},{"type":"literal","value":"deployed_code_history"},{"type":"literal","value":"deployed_code_update"},{"type":"literal","value":"dermatology"},{"type":"literal","value":"deselect"},{"type":"literal","value":"design_services"},{"type":"literal","value":"desk"},{"type":"literal","value":"deskphone"},{"type":"literal","value":"desktop_access_disabled"},{"type":"literal","value":"desktop_cloud"},{"type":"literal","value":"desktop_cloud_stack"},{"type":"literal","value":"desktop_landscape"},{"type":"literal","value":"desktop_landscape_add"},{"type":"literal","value":"desktop_mac"},{"type":"literal","value":"desktop_portrait"},{"type":"literal","value":"desktop_windows"},{"type":"literal","value":"destruction"},{"type":"literal","value":"detection_and_zone"},{"type":"literal","value":"detector"},{"type":"literal","value":"detector_alarm"},{"type":"literal","value":"detector_battery"},{"type":"literal","value":"detector_co"},{"type":"literal","value":"detector_offline"},{"type":"literal","value":"detector_smoke"},{"type":"literal","value":"detector_status"},{"type":"literal","value":"developer_board"},{"type":"literal","value":"developer_board_off"},{"type":"literal","value":"developer_guide"},{"type":"literal","value":"developer_mode"},{"type":"literal","value":"developer_mode_tv"},{"type":"literal","value":"device_band"},{"type":"literal","value":"device_hub"},{"type":"literal","value":"device_thermostat"},{"type":"literal","value":"device_unknown"},{"type":"literal","value":"devices"},{"type":"literal","value":"devices_fold"},{"type":"literal","value":"devices_fold_2"},{"type":"literal","value":"devices_off"},{"type":"literal","value":"devices_other"},{"type":"literal","value":"devices_wearables"},{"type":"literal","value":"dew_point"},{"type":"literal","value":"diagnosis"},{"type":"literal","value":"diagonal_line"},{"type":"literal","value":"dialer_sip"},{"type":"literal","value":"dialogs"},{"type":"literal","value":"dialpad"},{"type":"literal","value":"diamond_shine"},{"type":"literal","value":"dictionary"},{"type":"literal","value":"digital_out_of_home"},{"type":"literal","value":"digital_wellbeing"},{"type":"literal","value":"dine_heart"},{"type":"literal","value":"dine_in"},{"type":"literal","value":"dine_lamp"},{"type":"literal","value":"dining"},{"type":"literal","value":"dinner_dining"},{"type":"literal","value":"directions"},{"type":"literal","value":"directions_alt"},{"type":"literal","value":"directions_alt_off"},{"type":"literal","value":"directions_bike"},{"type":"literal","value":"directions_boat"},{"type":"literal","value":"directions_boat_filled"},{"type":"literal","value":"directions_bus"},{"type":"literal","value":"directions_bus_filled"},{"type":"literal","value":"directions_car"},{"type":"literal","value":"directions_car_filled"},{"type":"literal","value":"directions_off"},{"type":"literal","value":"directions_railway"},{"type":"literal","value":"directions_railway_2"},{"type":"literal","value":"directions_railway_filled"},{"type":"literal","value":"directions_run"},{"type":"literal","value":"directions_subway"},{"type":"literal","value":"directions_subway_filled"},{"type":"literal","value":"directions_transit"},{"type":"literal","value":"directions_transit_filled"},{"type":"literal","value":"directions_walk"},{"type":"literal","value":"directory_sync"},{"type":"literal","value":"dirty_lens"},{"type":"literal","value":"disabled_by_default"},{"type":"literal","value":"disabled_visible"},{"type":"literal","value":"disc_full"},{"type":"literal","value":"discount"},{"type":"literal","value":"discover_tune"},{"type":"literal","value":"dishwasher_gen"},{"type":"literal","value":"display_external_input"},{"type":"literal","value":"display_settings"},{"type":"literal","value":"distance"},{"type":"literal","value":"diversity_1"},{"type":"literal","value":"diversity_2"},{"type":"literal","value":"diversity_3"},{"type":"literal","value":"diversity_4"},{"type":"literal","value":"dns"},{"type":"literal","value":"do_disturb"},{"type":"literal","value":"do_disturb_alt"},{"type":"literal","value":"do_disturb_off"},{"type":"literal","value":"do_disturb_on"},{"type":"literal","value":"do_not_disturb"},{"type":"literal","value":"do_not_disturb_alt"},{"type":"literal","value":"do_not_disturb_off"},{"type":"literal","value":"do_not_disturb_on"},{"type":"literal","value":"do_not_disturb_on_total_silence"},{"type":"literal","value":"do_not_step"},{"type":"literal","value":"do_not_touch"},{"type":"literal","value":"dock"},{"type":"literal","value":"dock_to_bottom"},{"type":"literal","value":"dock_to_left"},{"type":"literal","value":"dock_to_right"},{"type":"literal","value":"docs"},{"type":"literal","value":"docs_add_on"},{"type":"literal","value":"docs_apps_script"},{"type":"literal","value":"document_scanner"},{"type":"literal","value":"document_search"},{"type":"literal","value":"domain"},{"type":"literal","value":"domain_add"},{"type":"literal","value":"domain_disabled"},{"type":"literal","value":"domain_verification"},{"type":"literal","value":"domain_verification_off"},{"type":"literal","value":"domino_mask"},{"type":"literal","value":"done_all"},{"type":"literal","value":"done_outline"},{"type":"literal","value":"donut_large"},{"type":"literal","value":"donut_small"},{"type":"literal","value":"door_back"},{"type":"literal","value":"door_front"},{"type":"literal","value":"door_open"},{"type":"literal","value":"door_sensor"},{"type":"literal","value":"door_sliding"},{"type":"literal","value":"doorbell"},{"type":"literal","value":"doorbell_3p"},{"type":"literal","value":"doorbell_chime"},{"type":"literal","value":"double_arrow"},{"type":"literal","value":"downhill_skiing"},{"type":"literal","value":"download_2"},{"type":"literal","value":"download_done"},{"type":"literal","value":"download_for_offline"},{"type":"literal","value":"downloading"},{"type":"literal","value":"draft"},{"type":"literal","value":"draft_orders"},{"type":"literal","value":"drafts"},{"type":"literal","value":"drag_click"},{"type":"literal","value":"drag_handle"},{"type":"literal","value":"drag_indicator"},{"type":"literal","value":"drag_pan"},{"type":"literal","value":"draw"},{"type":"literal","value":"draw_abstract"},{"type":"literal","value":"draw_collage"},{"type":"literal","value":"dresser"},{"type":"literal","value":"drive_eta"},{"type":"literal","value":"drive_export"},{"type":"literal","value":"drive_file_move"},{"type":"literal","value":"drive_file_move_outline"},{"type":"literal","value":"drive_file_move_rtl"},{"type":"literal","value":"drive_file_rename_outline"},{"type":"literal","value":"drive_folder_upload"},{"type":"literal","value":"drone_2"},{"type":"literal","value":"dropdown"},{"type":"literal","value":"dropper_eye"},{"type":"literal","value":"dry"},{"type":"literal","value":"dry_cleaning"},{"type":"literal","value":"dual_screen"},{"type":"literal","value":"duo"},{"type":"literal","value":"dvr"},{"type":"literal","value":"dynamic_feed"},{"type":"literal","value":"dynamic_form"},{"type":"literal","value":"e911_avatar"},{"type":"literal","value":"e911_emergency"},{"type":"literal","value":"e_mobiledata"},{"type":"literal","value":"e_mobiledata_badge"},{"type":"literal","value":"ear_sound"},{"type":"literal","value":"earbud_case"},{"type":"literal","value":"earbud_left"},{"type":"literal","value":"earbud_right"},{"type":"literal","value":"earbuds_2"},{"type":"literal","value":"earbuds_battery"},{"type":"literal","value":"early_on"},{"type":"literal","value":"earthquake"},{"type":"literal","value":"east"},{"type":"literal","value":"ecg"},{"type":"literal","value":"ecg_heart"},{"type":"literal","value":"eco"},{"type":"literal","value":"eda"},{"type":"literal","value":"edgesensor_high"},{"type":"literal","value":"edgesensor_low"},{"type":"literal","value":"edit"},{"type":"literal","value":"edit_arrow_down"},{"type":"literal","value":"edit_arrow_up"},{"type":"literal","value":"edit_attributes"},{"type":"literal","value":"edit_audio"},{"type":"literal","value":"edit_calendar"},{"type":"literal","value":"edit_document"},{"type":"literal","value":"edit_location"},{"type":"literal","value":"edit_location_alt"},{"type":"literal","value":"edit_note"},{"type":"literal","value":"edit_notifications"},{"type":"literal","value":"edit_off"},{"type":"literal","value":"edit_road"},{"type":"literal","value":"edit_square"},{"type":"literal","value":"editor_choice"},{"type":"literal","value":"egg"},{"type":"literal","value":"egg_alt"},{"type":"literal","value":"elderly"},{"type":"literal","value":"elderly_woman"},{"type":"literal","value":"electric_bike"},{"type":"literal","value":"electric_bolt"},{"type":"literal","value":"electric_car"},{"type":"literal","value":"electric_meter"},{"type":"literal","value":"electric_moped"},{"type":"literal","value":"electric_rickshaw"},{"type":"literal","value":"electric_scooter"},{"type":"literal","value":"electrical_services"},{"type":"literal","value":"elevator"},{"type":"literal","value":"emergency"},{"type":"literal","value":"emergency_heat"},{"type":"literal","value":"emergency_heat_2"},{"type":"literal","value":"emergency_home"},{"type":"literal","value":"emergency_recording"},{"type":"literal","value":"emergency_share"},{"type":"literal","value":"emergency_share_off"},{"type":"literal","value":"emoji_emotions"},{"type":"literal","value":"emoji_events"},{"type":"literal","value":"emoji_food_beverage"},{"type":"literal","value":"emoji_language"},{"type":"literal","value":"emoji_nature"},{"type":"literal","value":"emoji_objects"},{"type":"literal","value":"emoji_people"},{"type":"literal","value":"emoji_symbols"},{"type":"literal","value":"emoji_transportation"},{"type":"literal","value":"emoticon"},{"type":"literal","value":"empty_dashboard"},{"type":"literal","value":"encrypted"},{"type":"literal","value":"encrypted_add"},{"type":"literal","value":"encrypted_add_circle"},{"type":"literal","value":"encrypted_minus_circle"},{"type":"literal","value":"encrypted_off"},{"type":"literal","value":"endocrinology"},{"type":"literal","value":"energy"},{"type":"literal","value":"energy_program_saving"},{"type":"literal","value":"energy_program_time_used"},{"type":"literal","value":"energy_savings_leaf"},{"type":"literal","value":"engineering"},{"type":"literal","value":"enhanced_encryption"},{"type":"literal","value":"ent"},{"type":"literal","value":"enterprise"},{"type":"literal","value":"enterprise_off"},{"type":"literal","value":"equalizer"},{"type":"literal","value":"eraser_size_1"},{"type":"literal","value":"eraser_size_2"},{"type":"literal","value":"eraser_size_3"},{"type":"literal","value":"eraser_size_4"},{"type":"literal","value":"eraser_size_5"},{"type":"literal","value":"error_med"},{"type":"literal","value":"error_outline"},{"type":"literal","value":"escalator"},{"type":"literal","value":"escalator_warning"},{"type":"literal","value":"euro"},{"type":"literal","value":"euro_symbol"},{"type":"literal","value":"ev_mobiledata_badge"},{"type":"literal","value":"ev_shadow"},{"type":"literal","value":"ev_shadow_add"},{"type":"literal","value":"ev_shadow_minus"},{"type":"literal","value":"ev_station"},{"type":"literal","value":"event_available"},{"type":"literal","value":"event_busy"},{"type":"literal","value":"event_list"},{"type":"literal","value":"event_note"},{"type":"literal","value":"event_repeat"},{"type":"literal","value":"event_seat"},{"type":"literal","value":"event_upcoming"},{"type":"literal","value":"exclamation"},{"type":"literal","value":"exercise"},{"type":"literal","value":"exit_to_app"},{"type":"literal","value":"expand"},{"type":"literal","value":"expand_all"},{"type":"literal","value":"expand_circle_down"},{"type":"literal","value":"expand_circle_right"},{"type":"literal","value":"expand_circle_up"},{"type":"literal","value":"expand_content"},{"type":"literal","value":"expand_less"},{"type":"literal","value":"expand_more"},{"type":"literal","value":"expansion_panels"},{"type":"literal","value":"experiment"},{"type":"literal","value":"explicit"},{"type":"literal","value":"explore"},{"type":"literal","value":"explore_nearby"},{"type":"literal","value":"explore_off"},{"type":"literal","value":"explosion"},{"type":"literal","value":"export_notes"},{"type":"literal","value":"exposure"},{"type":"literal","value":"exposure_neg_1"},{"type":"literal","value":"exposure_neg_2"},{"type":"literal","value":"exposure_plus_1"},{"type":"literal","value":"exposure_plus_2"},{"type":"literal","value":"exposure_zero"},{"type":"literal","value":"extension"},{"type":"literal","value":"extension_off"},{"type":"literal","value":"eye_tracking"},{"type":"literal","value":"eyeglasses_2"},{"type":"literal","value":"eyeglasses_2_sound"},{"type":"literal","value":"face"},{"type":"literal","value":"face_2"},{"type":"literal","value":"face_3"},{"type":"literal","value":"face_4"},{"type":"literal","value":"face_5"},{"type":"literal","value":"face_6"},{"type":"literal","value":"face_down"},{"type":"literal","value":"face_left"},{"type":"literal","value":"face_nod"},{"type":"literal","value":"face_retouching_natural"},{"type":"literal","value":"face_retouching_off"},{"type":"literal","value":"face_right"},{"type":"literal","value":"face_shake"},{"type":"literal","value":"face_unlock"},{"type":"literal","value":"face_up"},{"type":"literal","value":"fact_check"},{"type":"literal","value":"factory"},{"type":"literal","value":"falling"},{"type":"literal","value":"familiar_face_and_zone"},{"type":"literal","value":"family_group"},{"type":"literal","value":"family_history"},{"type":"literal","value":"family_home"},{"type":"literal","value":"family_link"},{"type":"literal","value":"family_restroom"},{"type":"literal","value":"family_star"},{"type":"literal","value":"fan_focus"},{"type":"literal","value":"fan_indirect"},{"type":"literal","value":"farsight_digital"},{"type":"literal","value":"fast_forward"},{"type":"literal","value":"fast_rewind"},{"type":"literal","value":"fastfood"},{"type":"literal","value":"faucet"},{"type":"literal","value":"favorite"},{"type":"literal","value":"favorite_border"},{"type":"literal","value":"fax"},{"type":"literal","value":"feature_search"},{"type":"literal","value":"featured_play_list"},{"type":"literal","value":"featured_seasonal_and_gifts"},{"type":"literal","value":"featured_video"},{"type":"literal","value":"feedback"},{"type":"literal","value":"female"},{"type":"literal","value":"femur"},{"type":"literal","value":"femur_alt"},{"type":"literal","value":"fence"},{"type":"literal","value":"fertile"},{"type":"literal","value":"festival"},{"type":"literal","value":"fiber_dvr"},{"type":"literal","value":"fiber_manual_record"},{"type":"literal","value":"fiber_new"},{"type":"literal","value":"fiber_pin"},{"type":"literal","value":"fiber_smart_record"},{"type":"literal","value":"file_copy"},{"type":"literal","value":"file_copy_off"},{"type":"literal","value":"file_download"},{"type":"literal","value":"file_download_done"},{"type":"literal","value":"file_download_off"},{"type":"literal","value":"file_export"},{"type":"literal","value":"file_json"},{"type":"literal","value":"file_map"},{"type":"literal","value":"file_map_stack"},{"type":"literal","value":"file_open"},{"type":"literal","value":"file_png"},{"type":"literal","value":"file_present"},{"type":"literal","value":"file_save"},{"type":"literal","value":"file_save_off"},{"type":"literal","value":"file_upload"},{"type":"literal","value":"file_upload_off"},{"type":"literal","value":"files"},{"type":"literal","value":"filter_1"},{"type":"literal","value":"filter_2"},{"type":"literal","value":"filter_3"},{"type":"literal","value":"filter_4"},{"type":"literal","value":"filter_5"},{"type":"literal","value":"filter_6"},{"type":"literal","value":"filter_7"},{"type":"literal","value":"filter_8"},{"type":"literal","value":"filter_9"},{"type":"literal","value":"filter_9_plus"},{"type":"literal","value":"filter_alt"},{"type":"literal","value":"filter_alt_off"},{"type":"literal","value":"filter_arrow_right"},{"type":"literal","value":"filter_b_and_w"},{"type":"literal","value":"filter_center_focus"},{"type":"literal","value":"filter_drama"},{"type":"literal","value":"filter_frames"},{"type":"literal","value":"filter_hdr"},{"type":"literal","value":"filter_list"},{"type":"literal","value":"filter_list_alt"},{"type":"literal","value":"filter_list_off"},{"type":"literal","value":"filter_none"},{"type":"literal","value":"filter_retrolux"},{"type":"literal","value":"filter_tilt_shift"},{"type":"literal","value":"filter_vintage"},{"type":"literal","value":"finance"},{"type":"literal","value":"finance_chip"},{"type":"literal","value":"finance_mode"},{"type":"literal","value":"find_in_page"},{"type":"literal","value":"find_replace"},{"type":"literal","value":"fingerprint_off"},{"type":"literal","value":"fire_extinguisher"},{"type":"literal","value":"fire_hydrant"},{"type":"literal","value":"fire_hydrant_alt"},{"type":"literal","value":"fire_truck"},{"type":"literal","value":"first_page"},{"type":"literal","value":"fit_page"},{"type":"literal","value":"fit_page_height"},{"type":"literal","value":"fit_page_width"},{"type":"literal","value":"fit_screen"},{"type":"literal","value":"fit_width"},{"type":"literal","value":"fitbit"},{"type":"literal","value":"fitness_center"},{"type":"literal","value":"fitness_tracker"},{"type":"literal","value":"fitness_trackers"},{"type":"literal","value":"flag_2"},{"type":"literal","value":"flag_check"},{"type":"literal","value":"flag_circle"},{"type":"literal","value":"flaky"},{"type":"literal","value":"flare"},{"type":"literal","value":"flash_auto"},{"type":"literal","value":"flash_off"},{"type":"literal","value":"flash_on"},{"type":"literal","value":"flashlight_off"},{"type":"literal","value":"flashlight_on"},{"type":"literal","value":"flatware"},{"type":"literal","value":"flex_direction"},{"type":"literal","value":"flex_no_wrap"},{"type":"literal","value":"flex_wrap"},{"type":"literal","value":"flight"},{"type":"literal","value":"flight_class"},{"type":"literal","value":"flight_land"},{"type":"literal","value":"flight_takeoff"},{"type":"literal","value":"flights_and_hotels"},{"type":"literal","value":"flip_camera_android"},{"type":"literal","value":"flip_camera_ios"},{"type":"literal","value":"flip_to_back"},{"type":"literal","value":"flip_to_front"},{"type":"literal","value":"float_landscape_2"},{"type":"literal","value":"float_portrait_2"},{"type":"literal","value":"flood"},{"type":"literal","value":"floor"},{"type":"literal","value":"floor_lamp"},{"type":"literal","value":"flowsheet"},{"type":"literal","value":"fluid"},{"type":"literal","value":"fluid_balance"},{"type":"literal","value":"fluid_med"},{"type":"literal","value":"fluorescent"},{"type":"literal","value":"flutter"},{"type":"literal","value":"flutter_dash"},{"type":"literal","value":"flyover"},{"type":"literal","value":"fmd_bad"},{"type":"literal","value":"fmd_good"},{"type":"literal","value":"foggy"},{"type":"literal","value":"folded_hands"},{"type":"literal","value":"folder_check"},{"type":"literal","value":"folder_check_2"},{"type":"literal","value":"folder_code"},{"type":"literal","value":"folder_copy"},{"type":"literal","value":"folder_data"},{"type":"literal","value":"folder_delete"},{"type":"literal","value":"folder_eye"},{"type":"literal","value":"folder_info"},{"type":"literal","value":"folder_limited"},{"type":"literal","value":"folder_managed"},{"type":"literal","value":"folder_match"},{"type":"literal","value":"folder_off"},{"type":"literal","value":"folder_open"},{"type":"literal","value":"folder_shared"},{"type":"literal","value":"folder_special"},{"type":"literal","value":"folder_supervised"},{"type":"literal","value":"folder_zip"},{"type":"literal","value":"follow_the_signs"},{"type":"literal","value":"font_download"},{"type":"literal","value":"font_download_off"},{"type":"literal","value":"food_bank"},{"type":"literal","value":"foot_bones"},{"type":"literal","value":"footprint"},{"type":"literal","value":"for_you"},{"type":"literal","value":"forest"},{"type":"literal","value":"fork_left"},{"type":"literal","value":"fork_right"},{"type":"literal","value":"fork_spoon"},{"type":"literal","value":"forklift"},{"type":"literal","value":"format_align_center"},{"type":"literal","value":"format_align_justify"},{"type":"literal","value":"format_align_left"},{"type":"literal","value":"format_align_right"},{"type":"literal","value":"format_bold"},{"type":"literal","value":"format_clear"},{"type":"literal","value":"format_color_fill"},{"type":"literal","value":"format_color_reset"},{"type":"literal","value":"format_color_text"},{"type":"literal","value":"format_h1"},{"type":"literal","value":"format_h2"},{"type":"literal","value":"format_h3"},{"type":"literal","value":"format_h4"},{"type":"literal","value":"format_h5"},{"type":"literal","value":"format_h6"},{"type":"literal","value":"format_image_left"},{"type":"literal","value":"format_image_right"},{"type":"literal","value":"format_indent_decrease"},{"type":"literal","value":"format_indent_increase"},{"type":"literal","value":"format_ink_highlighter"},{"type":"literal","value":"format_italic"},{"type":"literal","value":"format_letter_spacing"},{"type":"literal","value":"format_letter_spacing_2"},{"type":"literal","value":"format_letter_spacing_standard"},{"type":"literal","value":"format_letter_spacing_wide"},{"type":"literal","value":"format_letter_spacing_wider"},{"type":"literal","value":"format_line_spacing"},{"type":"literal","value":"format_list_bulleted"},{"type":"literal","value":"format_list_bulleted_add"},{"type":"literal","value":"format_list_numbered"},{"type":"literal","value":"format_list_numbered_rtl"},{"type":"literal","value":"format_overline"},{"type":"literal","value":"format_paint"},{"type":"literal","value":"format_paragraph"},{"type":"literal","value":"format_quote"},{"type":"literal","value":"format_quote_off"},{"type":"literal","value":"format_shapes"},{"type":"literal","value":"format_size"},{"type":"literal","value":"format_strikethrough"},{"type":"literal","value":"format_text_clip"},{"type":"literal","value":"format_text_overflow"},{"type":"literal","value":"format_text_wrap"},{"type":"literal","value":"format_textdirection_l_to_r"},{"type":"literal","value":"format_textdirection_r_to_l"},{"type":"literal","value":"format_textdirection_vertical"},{"type":"literal","value":"format_underlined"},{"type":"literal","value":"format_underlined_squiggle"},{"type":"literal","value":"forms_add_on"},{"type":"literal","value":"forms_apps_script"},{"type":"literal","value":"fort"},{"type":"literal","value":"forum"},{"type":"literal","value":"forward_10"},{"type":"literal","value":"forward_30"},{"type":"literal","value":"forward_5"},{"type":"literal","value":"forward_circle"},{"type":"literal","value":"forward_media"},{"type":"literal","value":"forward_to_inbox"},{"type":"literal","value":"foundation"},{"type":"literal","value":"fragrance"},{"type":"literal","value":"frame_inspect"},{"type":"literal","value":"frame_person"},{"type":"literal","value":"frame_person_mic"},{"type":"literal","value":"frame_person_off"},{"type":"literal","value":"frame_reload"},{"type":"literal","value":"frame_source"},{"type":"literal","value":"free_breakfast"},{"type":"literal","value":"free_cancellation"},{"type":"literal","value":"front_hand"},{"type":"literal","value":"front_loader"},{"type":"literal","value":"full_coverage"},{"type":"literal","value":"full_hd"},{"type":"literal","value":"full_stacked_bar_chart"},{"type":"literal","value":"fullscreen_exit"},{"type":"literal","value":"fullscreen_portrait"},{"type":"literal","value":"functions"},{"type":"literal","value":"funicular"},{"type":"literal","value":"g_mobiledata"},{"type":"literal","value":"g_mobiledata_badge"},{"type":"literal","value":"g_translate"},{"type":"literal","value":"gallery_thumbnail"},{"type":"literal","value":"gamepad"},{"type":"literal","value":"games"},{"type":"literal","value":"garage"},{"type":"literal","value":"garage_check"},{"type":"literal","value":"garage_door"},{"type":"literal","value":"garage_home"},{"type":"literal","value":"garage_money"},{"type":"literal","value":"garden_cart"},{"type":"literal","value":"gas_meter"},{"type":"literal","value":"gastroenterology"},{"type":"literal","value":"gate"},{"type":"literal","value":"gavel"},{"type":"literal","value":"general_device"},{"type":"literal","value":"generating_tokens"},{"type":"literal","value":"genetics"},{"type":"literal","value":"genres"},{"type":"literal","value":"gesture"},{"type":"literal","value":"gesture_select"},{"type":"literal","value":"get_app"},{"type":"literal","value":"gif"},{"type":"literal","value":"gif_2"},{"type":"literal","value":"gif_box"},{"type":"literal","value":"girl"},{"type":"literal","value":"gite"},{"type":"literal","value":"glass_cup"},{"type":"literal","value":"globe_asia"},{"type":"literal","value":"globe_book"},{"type":"literal","value":"globe_location_pin"},{"type":"literal","value":"globe_uk"},{"type":"literal","value":"glucose"},{"type":"literal","value":"glyphs"},{"type":"literal","value":"go_to_line"},{"type":"literal","value":"golf_course"},{"type":"literal","value":"gondola_lift"},{"type":"literal","value":"google_home_devices"},{"type":"literal","value":"google_tv_remote"},{"type":"literal","value":"google_wifi"},{"type":"literal","value":"gpp_bad"},{"type":"literal","value":"gpp_good"},{"type":"literal","value":"gpp_maybe"},{"type":"literal","value":"gps_fixed"},{"type":"literal","value":"gps_not_fixed"},{"type":"literal","value":"gps_off"},{"type":"literal","value":"grade"},{"type":"literal","value":"gradient"},{"type":"literal","value":"grading"},{"type":"literal","value":"grain"},{"type":"literal","value":"graph_1"},{"type":"literal","value":"graph_2"},{"type":"literal","value":"graph_3"},{"type":"literal","value":"graph_4"},{"type":"literal","value":"graph_5"},{"type":"literal","value":"graph_6"},{"type":"literal","value":"graph_7"},{"type":"literal","value":"graphic_eq"},{"type":"literal","value":"grass"},{"type":"literal","value":"grid_3x3"},{"type":"literal","value":"grid_3x3_off"},{"type":"literal","value":"grid_4x4"},{"type":"literal","value":"grid_goldenratio"},{"type":"literal","value":"grid_guides"},{"type":"literal","value":"grid_off"},{"type":"literal","value":"grid_on"},{"type":"literal","value":"grid_view"},{"type":"literal","value":"grocery"},{"type":"literal","value":"group_add"},{"type":"literal","value":"group_off"},{"type":"literal","value":"group_remove"},{"type":"literal","value":"group_search"},{"type":"literal","value":"group_work"},{"type":"literal","value":"grouped_bar_chart"},{"type":"literal","value":"groups"},{"type":"literal","value":"groups_2"},{"type":"literal","value":"groups_3"},{"type":"literal","value":"guardian"},{"type":"literal","value":"gynecology"},{"type":"literal","value":"h_mobiledata"},{"type":"literal","value":"h_mobiledata_badge"},{"type":"literal","value":"h_plus_mobiledata"},{"type":"literal","value":"h_plus_mobiledata_badge"},{"type":"literal","value":"hail"},{"type":"literal","value":"hallway"},{"type":"literal","value":"hanami_dango"},{"type":"literal","value":"hand_bones"},{"type":"literal","value":"hand_gesture"},{"type":"literal","value":"hand_gesture_off"},{"type":"literal","value":"hand_meal"},{"type":"literal","value":"hand_package"},{"type":"literal","value":"handheld_controller"},{"type":"literal","value":"handshake"},{"type":"literal","value":"handyman"},{"type":"literal","value":"hangout_video"},{"type":"literal","value":"hangout_video_off"},{"type":"literal","value":"hard_disk"},{"type":"literal","value":"hard_drive"},{"type":"literal","value":"hard_drive_2"},{"type":"literal","value":"hardware"},{"type":"literal","value":"hd"},{"type":"literal","value":"hdr_auto"},{"type":"literal","value":"hdr_auto_select"},{"type":"literal","value":"hdr_enhanced_select"},{"type":"literal","value":"hdr_off"},{"type":"literal","value":"hdr_off_select"},{"type":"literal","value":"hdr_on"},{"type":"literal","value":"hdr_on_select"},{"type":"literal","value":"hdr_plus"},{"type":"literal","value":"hdr_plus_off"},{"type":"literal","value":"hdr_strong"},{"type":"literal","value":"hdr_weak"},{"type":"literal","value":"head_mounted_device"},{"type":"literal","value":"headphones_battery"},{"type":"literal","value":"headset_mic"},{"type":"literal","value":"headset_off"},{"type":"literal","value":"healing"},{"type":"literal","value":"health_and_beauty"},{"type":"literal","value":"health_and_safety"},{"type":"literal","value":"health_cross"},{"type":"literal","value":"health_metrics"},{"type":"literal","value":"heap_snapshot_large"},{"type":"literal","value":"heap_snapshot_multiple"},{"type":"literal","value":"heap_snapshot_thumbnail"},{"type":"literal","value":"hearing"},{"type":"literal","value":"hearing_aid"},{"type":"literal","value":"hearing_aid_disabled"},{"type":"literal","value":"hearing_aid_disabled_left"},{"type":"literal","value":"hearing_aid_left"},{"type":"literal","value":"hearing_disabled"},{"type":"literal","value":"heart_broken"},{"type":"literal","value":"heart_check"},{"type":"literal","value":"heart_minus"},{"type":"literal","value":"heart_plus"},{"type":"literal","value":"heart_smile"},{"type":"literal","value":"heat"},{"type":"literal","value":"heat_pump"},{"type":"literal","value":"heat_pump_balance"},{"type":"literal","value":"helicopter"},{"type":"literal","value":"help"},{"type":"literal","value":"help_center"},{"type":"literal","value":"help_clinic"},{"type":"literal","value":"help_outline"},{"type":"literal","value":"hematology"},{"type":"literal","value":"hevc"},{"type":"literal","value":"hide_image"},{"type":"literal","value":"hide_source"},{"type":"literal","value":"high_chair"},{"type":"literal","value":"high_density"},{"type":"literal","value":"high_quality"},{"type":"literal","value":"high_res"},{"type":"literal","value":"highlight"},{"type":"literal","value":"highlight_alt"},{"type":"literal","value":"highlight_keyboard_focus"},{"type":"literal","value":"highlight_mouse_cursor"},{"type":"literal","value":"highlight_off"},{"type":"literal","value":"highlight_text_cursor"},{"type":"literal","value":"highlighter_size_1"},{"type":"literal","value":"highlighter_size_2"},{"type":"literal","value":"highlighter_size_3"},{"type":"literal","value":"highlighter_size_4"},{"type":"literal","value":"highlighter_size_5"},{"type":"literal","value":"hiking"},{"type":"literal","value":"history_2"},{"type":"literal","value":"history_edu"},{"type":"literal","value":"history_off"},{"type":"literal","value":"history_toggle_off"},{"type":"literal","value":"hive"},{"type":"literal","value":"hls"},{"type":"literal","value":"hls_off"},{"type":"literal","value":"holiday_village"},{"type":"literal","value":"home"},{"type":"literal","value":"home_and_garden"},{"type":"literal","value":"home_app_logo"},{"type":"literal","value":"home_filled"},{"type":"literal","value":"home_health"},{"type":"literal","value":"home_improvement_and_tools"},{"type":"literal","value":"home_iot_device"},{"type":"literal","value":"home_max"},{"type":"literal","value":"home_max_dots"},{"type":"literal","value":"home_mini"},{"type":"literal","value":"home_pin"},{"type":"literal","value":"home_repair_service"},{"type":"literal","value":"home_speaker"},{"type":"literal","value":"home_storage"},{"type":"literal","value":"home_work"},{"type":"literal","value":"horizontal_distribute"},{"type":"literal","value":"horizontal_rule"},{"type":"literal","value":"horizontal_split"},{"type":"literal","value":"hot_tub"},{"type":"literal","value":"hotel"},{"type":"literal","value":"hotel_class"},{"type":"literal","value":"hourglass_arrow_down"},{"type":"literal","value":"hourglass_arrow_up"},{"type":"literal","value":"hourglass_bottom"},{"type":"literal","value":"hourglass_disabled"},{"type":"literal","value":"hourglass_empty"},{"type":"literal","value":"hourglass_full"},{"type":"literal","value":"hourglass_pause"},{"type":"literal","value":"hourglass_top"},{"type":"literal","value":"house_siding"},{"type":"literal","value":"house_with_shield"},{"type":"literal","value":"houseboat"},{"type":"literal","value":"household_supplies"},{"type":"literal","value":"hov"},{"type":"literal","value":"how_to_reg"},{"type":"literal","value":"how_to_vote"},{"type":"literal","value":"hr_resting"},{"type":"literal","value":"https"},{"type":"literal","value":"hub"},{"type":"literal","value":"humerus"},{"type":"literal","value":"humerus_alt"},{"type":"literal","value":"humidity_high"},{"type":"literal","value":"humidity_indoor"},{"type":"literal","value":"humidity_low"},{"type":"literal","value":"humidity_mid"},{"type":"literal","value":"humidity_percentage"},{"type":"literal","value":"hvac"},{"type":"literal","value":"hvac_max_defrost"},{"type":"literal","value":"ice_skating"},{"type":"literal","value":"icecream"},{"type":"literal","value":"id_card"},{"type":"literal","value":"identity_aware_proxy"},{"type":"literal","value":"identity_platform"},{"type":"literal","value":"ifl"},{"type":"literal","value":"iframe_off"},{"type":"literal","value":"image_arrow_up"},{"type":"literal","value":"image_aspect_ratio"},{"type":"literal","value":"image_inset"},{"type":"literal","value":"image_not_supported"},{"type":"literal","value":"image_search"},{"type":"literal","value":"imagesearch_roller"},{"type":"literal","value":"imagesmode"},{"type":"literal","value":"immunology"},{"type":"literal","value":"import_contacts"},{"type":"literal","value":"import_export"},{"type":"literal","value":"important_devices"},{"type":"literal","value":"in_home_mode"},{"type":"literal","value":"inactive_order"},{"type":"literal","value":"inbox"},{"type":"literal","value":"inbox_customize"},{"type":"literal","value":"inbox_text"},{"type":"literal","value":"inbox_text_asterisk"},{"type":"literal","value":"inbox_text_person"},{"type":"literal","value":"inbox_text_share"},{"type":"literal","value":"incomplete_circle"},{"type":"literal","value":"indeterminate_check_box"},{"type":"literal","value":"indeterminate_question_box"},{"type":"literal","value":"info_i"},{"type":"literal","value":"info_outline"},{"type":"literal","value":"infrared"},{"type":"literal","value":"ink_eraser"},{"type":"literal","value":"ink_eraser_off"},{"type":"literal","value":"ink_highlighter"},{"type":"literal","value":"ink_highlighter_move"},{"type":"literal","value":"ink_marker"},{"type":"literal","value":"ink_pen"},{"type":"literal","value":"ink_selection"},{"type":"literal","value":"inpatient"},{"type":"literal","value":"input_circle"},{"type":"literal","value":"insert_chart"},{"type":"literal","value":"insert_chart_outlined"},{"type":"literal","value":"insert_comment"},{"type":"literal","value":"insert_drive_file"},{"type":"literal","value":"insert_emoticon"},{"type":"literal","value":"insert_invitation"},{"type":"literal","value":"insert_link"},{"type":"literal","value":"insert_page_break"},{"type":"literal","value":"insert_photo"},{"type":"literal","value":"insert_text"},{"type":"literal","value":"insights"},{"type":"literal","value":"install_desktop"},{"type":"literal","value":"install_mobile"},{"type":"literal","value":"instant_mix"},{"type":"literal","value":"integration_instructions"},{"type":"literal","value":"interactive_space"},{"type":"literal","value":"interests"},{"type":"literal","value":"interpreter_mode"},{"type":"literal","value":"inventory"},{"type":"literal","value":"inventory_2"},{"type":"literal","value":"invert_colors"},{"type":"literal","value":"invert_colors_off"},{"type":"literal","value":"ios_share"},{"type":"literal","value":"iron"},{"type":"literal","value":"iso"},{"type":"literal","value":"jamboard_kiosk"},{"type":"literal","value":"japanese_curry"},{"type":"literal","value":"japanese_flag"},{"type":"literal","value":"javascript"},{"type":"literal","value":"join_full"},{"type":"literal","value":"join_inner"},{"type":"literal","value":"join_left"},{"type":"literal","value":"join_right"},{"type":"literal","value":"joystick"},{"type":"literal","value":"jump_to_element"},{"type":"literal","value":"kanji_alcohol"},{"type":"literal","value":"kayaking"},{"type":"literal","value":"kebab_dining"},{"type":"literal","value":"keep"},{"type":"literal","value":"keep_off"},{"type":"literal","value":"keep_public"},{"type":"literal","value":"kettle"},{"type":"literal","value":"key_off"},{"type":"literal","value":"key_vertical"},{"type":"literal","value":"key_visualizer"},{"type":"literal","value":"keyboard_alt"},{"type":"literal","value":"keyboard_arrow_down"},{"type":"literal","value":"keyboard_arrow_left"},{"type":"literal","value":"keyboard_arrow_right"},{"type":"literal","value":"keyboard_arrow_up"},{"type":"literal","value":"keyboard_backspace"},{"type":"literal","value":"keyboard_capslock"},{"type":"literal","value":"keyboard_capslock_badge"},{"type":"literal","value":"keyboard_command_key"},{"type":"literal","value":"keyboard_control_key"},{"type":"literal","value":"keyboard_double_arrow_down"},{"type":"literal","value":"keyboard_double_arrow_left"},{"type":"literal","value":"keyboard_double_arrow_right"},{"type":"literal","value":"keyboard_double_arrow_up"},{"type":"literal","value":"keyboard_external_input"},{"type":"literal","value":"keyboard_full"},{"type":"literal","value":"keyboard_hide"},{"type":"literal","value":"keyboard_keys"},{"type":"literal","value":"keyboard_lock"},{"type":"literal","value":"keyboard_lock_off"},{"type":"literal","value":"keyboard_off"},{"type":"literal","value":"keyboard_onscreen"},{"type":"literal","value":"keyboard_option_key"},{"type":"literal","value":"keyboard_previous_language"},{"type":"literal","value":"keyboard_return"},{"type":"literal","value":"keyboard_tab"},{"type":"literal","value":"keyboard_tab_rtl"},{"type":"literal","value":"keyboard_voice"},{"type":"literal","value":"kid_star"},{"type":"literal","value":"king_bed"},{"type":"literal","value":"kitchen"},{"type":"literal","value":"kitesurfing"},{"type":"literal","value":"lab_panel"},{"type":"literal","value":"lab_profile"},{"type":"literal","value":"lab_research"},{"type":"literal","value":"label_important"},{"type":"literal","value":"label_important_outline"},{"type":"literal","value":"label_off"},{"type":"literal","value":"labs"},{"type":"literal","value":"lan"},{"type":"literal","value":"landscape_2"},{"type":"literal","value":"landscape_2_edit"},{"type":"literal","value":"landscape_2_off"},{"type":"literal","value":"landslide"},{"type":"literal","value":"language"},{"type":"literal","value":"language_chinese_array"},{"type":"literal","value":"language_chinese_cangjie"},{"type":"literal","value":"language_chinese_dayi"},{"type":"literal","value":"language_chinese_pinyin"},{"type":"literal","value":"language_chinese_quick"},{"type":"literal","value":"language_chinese_wubi"},{"type":"literal","value":"language_french"},{"type":"literal","value":"language_gb_english"},{"type":"literal","value":"language_international"},{"type":"literal","value":"language_japanese_kana"},{"type":"literal","value":"language_korean_latin"},{"type":"literal","value":"language_pinyin"},{"type":"literal","value":"language_spanish"},{"type":"literal","value":"language_us"},{"type":"literal","value":"language_us_colemak"},{"type":"literal","value":"language_us_dvorak"},{"type":"literal","value":"laps"},{"type":"literal","value":"laptop"},{"type":"literal","value":"laptop_car"},{"type":"literal","value":"laptop_chromebook"},{"type":"literal","value":"laptop_mac"},{"type":"literal","value":"laptop_windows"},{"type":"literal","value":"lasso_select"},{"type":"literal","value":"last_page"},{"type":"literal","value":"launch"},{"type":"literal","value":"laundry"},{"type":"literal","value":"layers"},{"type":"literal","value":"layers_clear"},{"type":"literal","value":"lda"},{"type":"literal","value":"leaderboard"},{"type":"literal","value":"leak_add"},{"type":"literal","value":"leak_remove"},{"type":"literal","value":"left_click"},{"type":"literal","value":"left_panel_close"},{"type":"literal","value":"left_panel_open"},{"type":"literal","value":"legend_toggle"},{"type":"literal","value":"lens"},{"type":"literal","value":"lens_blur"},{"type":"literal","value":"letter_switch"},{"type":"literal","value":"library_add"},{"type":"literal","value":"library_add_check"},{"type":"literal","value":"library_books"},{"type":"literal","value":"library_music"},{"type":"literal","value":"license"},{"type":"literal","value":"lift_to_talk"},{"type":"literal","value":"light_group"},{"type":"literal","value":"light_mode"},{"type":"literal","value":"light_off"},{"type":"literal","value":"lightbulb_2"},{"type":"literal","value":"lightbulb_circle"},{"type":"literal","value":"lightbulb_outline"},{"type":"literal","value":"lightning_stand"},{"type":"literal","value":"line_axis"},{"type":"literal","value":"line_curve"},{"type":"literal","value":"line_end"},{"type":"literal","value":"line_end_arrow"},{"type":"literal","value":"line_end_arrow_notch"},{"type":"literal","value":"line_end_circle"},{"type":"literal","value":"line_end_diamond"},{"type":"literal","value":"line_end_square"},{"type":"literal","value":"line_start"},{"type":"literal","value":"line_start_arrow"},{"type":"literal","value":"line_start_arrow_notch"},{"type":"literal","value":"line_start_circle"},{"type":"literal","value":"line_start_diamond"},{"type":"literal","value":"line_start_square"},{"type":"literal","value":"line_style"},{"type":"literal","value":"line_weight"},{"type":"literal","value":"linear_scale"},{"type":"literal","value":"link_off"},{"type":"literal","value":"linked_camera"},{"type":"literal","value":"linked_services"},{"type":"literal","value":"liquor"},{"type":"literal","value":"list_alt"},{"type":"literal","value":"list_alt_add"},{"type":"literal","value":"list_alt_check"},{"type":"literal","value":"lists"},{"type":"literal","value":"live_help"},{"type":"literal","value":"live_tv"},{"type":"literal","value":"living"},{"type":"literal","value":"local_activity"},{"type":"literal","value":"local_airport"},{"type":"literal","value":"local_atm"},{"type":"literal","value":"local_bar"},{"type":"literal","value":"local_cafe"},{"type":"literal","value":"local_car_wash"},{"type":"literal","value":"local_convenience_store"},{"type":"literal","value":"local_dining"},{"type":"literal","value":"local_drink"},{"type":"literal","value":"local_fire_department"},{"type":"literal","value":"local_florist"},{"type":"literal","value":"local_gas_station"},{"type":"literal","value":"local_grocery_store"},{"type":"literal","value":"local_hospital"},{"type":"literal","value":"local_hotel"},{"type":"literal","value":"local_laundry_service"},{"type":"literal","value":"local_library"},{"type":"literal","value":"local_mall"},{"type":"literal","value":"local_movies"},{"type":"literal","value":"local_offer"},{"type":"literal","value":"local_parking"},{"type":"literal","value":"local_pharmacy"},{"type":"literal","value":"local_phone"},{"type":"literal","value":"local_pizza"},{"type":"literal","value":"local_play"},{"type":"literal","value":"local_police"},{"type":"literal","value":"local_post_office"},{"type":"literal","value":"local_printshop"},{"type":"literal","value":"local_see"},{"type":"literal","value":"local_shipping"},{"type":"literal","value":"local_taxi"},{"type":"literal","value":"location_away"},{"type":"literal","value":"location_chip"},{"type":"literal","value":"location_city"},{"type":"literal","value":"location_disabled"},{"type":"literal","value":"location_home"},{"type":"literal","value":"location_off"},{"type":"literal","value":"location_on"},{"type":"literal","value":"location_pin"},{"type":"literal","value":"location_searching"},{"type":"literal","value":"lock_clock"},{"type":"literal","value":"lock_open"},{"type":"literal","value":"lock_open_circle"},{"type":"literal","value":"lock_open_right"},{"type":"literal","value":"lock_outline"},{"type":"literal","value":"lock_person"},{"type":"literal","value":"lock_reset"},{"type":"literal","value":"login"},{"type":"literal","value":"logo_dev"},{"type":"literal","value":"logout"},{"type":"literal","value":"looks"},{"type":"literal","value":"looks_3"},{"type":"literal","value":"looks_4"},{"type":"literal","value":"looks_5"},{"type":"literal","value":"looks_6"},{"type":"literal","value":"looks_one"},{"type":"literal","value":"looks_two"},{"type":"literal","value":"loop"},{"type":"literal","value":"low_density"},{"type":"literal","value":"low_priority"},{"type":"literal","value":"loyalty"},{"type":"literal","value":"lte_mobiledata"},{"type":"literal","value":"lte_mobiledata_badge"},{"type":"literal","value":"lte_plus_mobiledata"},{"type":"literal","value":"lte_plus_mobiledata_badge"},{"type":"literal","value":"luggage"},{"type":"literal","value":"lunch_dining"},{"type":"literal","value":"lyrics"},{"type":"literal","value":"macro_auto"},{"type":"literal","value":"macro_off"},{"type":"literal","value":"magnification_large"},{"type":"literal","value":"magnification_small"},{"type":"literal","value":"magnify_docked"},{"type":"literal","value":"magnify_fullscreen"},{"type":"literal","value":"mail_asterisk"},{"type":"literal","value":"mail_lock"},{"type":"literal","value":"mail_off"},{"type":"literal","value":"mail_outline"},{"type":"literal","value":"mail_shield"},{"type":"literal","value":"male"},{"type":"literal","value":"man"},{"type":"literal","value":"man_2"},{"type":"literal","value":"man_3"},{"type":"literal","value":"man_4"},{"type":"literal","value":"manage_accounts"},{"type":"literal","value":"manage_history"},{"type":"literal","value":"manage_search"},{"type":"literal","value":"manga"},{"type":"literal","value":"manufacturing"},{"type":"literal","value":"map_pin_heart"},{"type":"literal","value":"map_pin_review"},{"type":"literal","value":"map_search"},{"type":"literal","value":"maps_home_work"},{"type":"literal","value":"maps_ugc"},{"type":"literal","value":"mark_as_unread"},{"type":"literal","value":"mark_chat_read"},{"type":"literal","value":"mark_chat_unread"},{"type":"literal","value":"mark_email_read"},{"type":"literal","value":"mark_email_unread"},{"type":"literal","value":"mark_unread_chat_alt"},{"type":"literal","value":"markdown"},{"type":"literal","value":"markdown_copy"},{"type":"literal","value":"markdown_paste"},{"type":"literal","value":"markunread"},{"type":"literal","value":"markunread_mailbox"},{"type":"literal","value":"masked_transitions"},{"type":"literal","value":"masked_transitions_add"},{"type":"literal","value":"masks"},{"type":"literal","value":"massage"},{"type":"literal","value":"match_case"},{"type":"literal","value":"match_case_off"},{"type":"literal","value":"match_word"},{"type":"literal","value":"matter"},{"type":"literal","value":"maximize"},{"type":"literal","value":"meal_dinner"},{"type":"literal","value":"meal_lunch"},{"type":"literal","value":"measuring_tape"},{"type":"literal","value":"media_bluetooth_off"},{"type":"literal","value":"media_bluetooth_on"},{"type":"literal","value":"media_link"},{"type":"literal","value":"media_output"},{"type":"literal","value":"media_output_off"},{"type":"literal","value":"mediation"},{"type":"literal","value":"medical_information"},{"type":"literal","value":"medical_mask"},{"type":"literal","value":"medical_services"},{"type":"literal","value":"medication"},{"type":"literal","value":"medication_liquid"},{"type":"literal","value":"meeting_room"},{"type":"literal","value":"memory"},{"type":"literal","value":"memory_alt"},{"type":"literal","value":"menstrual_health"},{"type":"literal","value":"menu_book"},{"type":"literal","value":"menu_book_2"},{"type":"literal","value":"menu_open"},{"type":"literal","value":"merge_type"},{"type":"literal","value":"metabolism"},{"type":"literal","value":"mfg_nest_yale_lock"},{"type":"literal","value":"mic_alert"},{"type":"literal","value":"mic_double"},{"type":"literal","value":"mic_external_off"},{"type":"literal","value":"mic_external_on"},{"type":"literal","value":"mic_none"},{"type":"literal","value":"mic_off"},{"type":"literal","value":"microbiology"},{"type":"literal","value":"microwave_gen"},{"type":"literal","value":"military_tech"},{"type":"literal","value":"mimo"},{"type":"literal","value":"mimo_disconnect"},{"type":"literal","value":"mindfulness"},{"type":"literal","value":"minimize"},{"type":"literal","value":"minor_crash"},{"type":"literal","value":"mintmark"},{"type":"literal","value":"miscellaneous_services"},{"type":"literal","value":"missed_video_call"},{"type":"literal","value":"missing_controller"},{"type":"literal","value":"mist"},{"type":"literal","value":"mitre"},{"type":"literal","value":"mixture_med"},{"type":"literal","value":"mms"},{"type":"literal","value":"mobile"},{"type":"literal","value":"mobile_2"},{"type":"literal","value":"mobile_3"},{"type":"literal","value":"mobile_alert"},{"type":"literal","value":"mobile_arrow_down"},{"type":"literal","value":"mobile_arrow_right"},{"type":"literal","value":"mobile_arrow_up_right"},{"type":"literal","value":"mobile_block"},{"type":"literal","value":"mobile_camera"},{"type":"literal","value":"mobile_camera_front"},{"type":"literal","value":"mobile_camera_rear"},{"type":"literal","value":"mobile_cancel"},{"type":"literal","value":"mobile_cast"},{"type":"literal","value":"mobile_charge"},{"type":"literal","value":"mobile_chat"},{"type":"literal","value":"mobile_check"},{"type":"literal","value":"mobile_code"},{"type":"literal","value":"mobile_dots"},{"type":"literal","value":"mobile_friendly"},{"type":"literal","value":"mobile_gear"},{"type":"literal","value":"mobile_hand"},{"type":"literal","value":"mobile_hand_left"},{"type":"literal","value":"mobile_hand_left_off"},{"type":"literal","value":"mobile_hand_off"},{"type":"literal","value":"mobile_info"},{"type":"literal","value":"mobile_landscape"},{"type":"literal","value":"mobile_layout"},{"type":"literal","value":"mobile_lock_landscape"},{"type":"literal","value":"mobile_lock_portrait"},{"type":"literal","value":"mobile_loupe"},{"type":"literal","value":"mobile_menu"},{"type":"literal","value":"mobile_off"},{"type":"literal","value":"mobile_question"},{"type":"literal","value":"mobile_rotate"},{"type":"literal","value":"mobile_rotate_lock"},{"type":"literal","value":"mobile_screen_share"},{"type":"literal","value":"mobile_screensaver"},{"type":"literal","value":"mobile_sensor_hi"},{"type":"literal","value":"mobile_sensor_lo"},{"type":"literal","value":"mobile_share"},{"type":"literal","value":"mobile_share_stack"},{"type":"literal","value":"mobile_sound"},{"type":"literal","value":"mobile_sound_2"},{"type":"literal","value":"mobile_sound_off"},{"type":"literal","value":"mobile_speaker"},{"type":"literal","value":"mobile_text"},{"type":"literal","value":"mobile_text_2"},{"type":"literal","value":"mobile_theft"},{"type":"literal","value":"mobile_ticket"},{"type":"literal","value":"mobile_vibrate"},{"type":"literal","value":"mobile_wrench"},{"type":"literal","value":"mobiledata_off"},{"type":"literal","value":"mode_comment"},{"type":"literal","value":"mode_cool"},{"type":"literal","value":"mode_cool_off"},{"type":"literal","value":"mode_dual"},{"type":"literal","value":"mode_edit"},{"type":"literal","value":"mode_edit_outline"},{"type":"literal","value":"mode_fan"},{"type":"literal","value":"mode_fan_off"},{"type":"literal","value":"mode_heat"},{"type":"literal","value":"mode_heat_cool"},{"type":"literal","value":"mode_heat_off"},{"type":"literal","value":"mode_night"},{"type":"literal","value":"mode_of_travel"},{"type":"literal","value":"mode_off_on"},{"type":"literal","value":"mode_standby"},{"type":"literal","value":"model_training"},{"type":"literal","value":"modeling"},{"type":"literal","value":"monetization_on"},{"type":"literal","value":"money"},{"type":"literal","value":"money_bag"},{"type":"literal","value":"money_off"},{"type":"literal","value":"money_off_csred"},{"type":"literal","value":"money_range"},{"type":"literal","value":"monitor"},{"type":"literal","value":"monitor_heart"},{"type":"literal","value":"monitor_weight"},{"type":"literal","value":"monitor_weight_gain"},{"type":"literal","value":"monitor_weight_loss"},{"type":"literal","value":"monitoring"},{"type":"literal","value":"monochrome_photos"},{"type":"literal","value":"monorail"},{"type":"literal","value":"mood"},{"type":"literal","value":"mood_bad"},{"type":"literal","value":"moon_stars"},{"type":"literal","value":"mop"},{"type":"literal","value":"moped_package"},{"type":"literal","value":"more"},{"type":"literal","value":"more_down"},{"type":"literal","value":"more_horiz"},{"type":"literal","value":"more_time"},{"type":"literal","value":"more_up"},{"type":"literal","value":"more_vert"},{"type":"literal","value":"mosque"},{"type":"literal","value":"motion_blur"},{"type":"literal","value":"motion_mode"},{"type":"literal","value":"motion_photos_auto"},{"type":"literal","value":"motion_photos_off"},{"type":"literal","value":"motion_photos_on"},{"type":"literal","value":"motion_photos_pause"},{"type":"literal","value":"motion_photos_paused"},{"type":"literal","value":"motion_play"},{"type":"literal","value":"motion_sensor_active"},{"type":"literal","value":"motion_sensor_alert"},{"type":"literal","value":"motion_sensor_idle"},{"type":"literal","value":"motion_sensor_urgent"},{"type":"literal","value":"mountain_flag"},{"type":"literal","value":"mountain_steam"},{"type":"literal","value":"mouse"},{"type":"literal","value":"mouse_lock"},{"type":"literal","value":"mouse_lock_off"},{"type":"literal","value":"move_down"},{"type":"literal","value":"move_group"},{"type":"literal","value":"move_item"},{"type":"literal","value":"move_location"},{"type":"literal","value":"move_selection_down"},{"type":"literal","value":"move_selection_left"},{"type":"literal","value":"move_selection_right"},{"type":"literal","value":"move_selection_up"},{"type":"literal","value":"move_to_inbox"},{"type":"literal","value":"move_up"},{"type":"literal","value":"moved_location"},{"type":"literal","value":"movie"},{"type":"literal","value":"movie_creation"},{"type":"literal","value":"movie_edit"},{"type":"literal","value":"movie_filter"},{"type":"literal","value":"movie_info"},{"type":"literal","value":"movie_off"},{"type":"literal","value":"movie_speaker"},{"type":"literal","value":"moving"},{"type":"literal","value":"moving_beds"},{"type":"literal","value":"moving_ministry"},{"type":"literal","value":"mp"},{"type":"literal","value":"multicooker"},{"type":"literal","value":"multiline_chart"},{"type":"literal","value":"multimodal_hand_eye"},{"type":"literal","value":"multiple_airports"},{"type":"literal","value":"multiple_stop"},{"type":"literal","value":"museum"},{"type":"literal","value":"music_cast"},{"type":"literal","value":"music_history"},{"type":"literal","value":"music_note"},{"type":"literal","value":"music_note_add"},{"type":"literal","value":"music_off"},{"type":"literal","value":"music_video"},{"type":"literal","value":"my_location"},{"type":"literal","value":"mystery"},{"type":"literal","value":"nat"},{"type":"literal","value":"nature"},{"type":"literal","value":"nature_people"},{"type":"literal","value":"navigate_before"},{"type":"literal","value":"navigate_next"},{"type":"literal","value":"near_me"},{"type":"literal","value":"near_me_disabled"},{"type":"literal","value":"nearby"},{"type":"literal","value":"nearby_error"},{"type":"literal","value":"nearby_off"},{"type":"literal","value":"nephrology"},{"type":"literal","value":"nest_audio"},{"type":"literal","value":"nest_cam_floodlight"},{"type":"literal","value":"nest_cam_indoor"},{"type":"literal","value":"nest_cam_iq"},{"type":"literal","value":"nest_cam_iq_outdoor"},{"type":"literal","value":"nest_cam_magnet_mount"},{"type":"literal","value":"nest_cam_outdoor"},{"type":"literal","value":"nest_cam_stand"},{"type":"literal","value":"nest_cam_wall_mount"},{"type":"literal","value":"nest_cam_wired_stand"},{"type":"literal","value":"nest_clock_farsight_analog"},{"type":"literal","value":"nest_clock_farsight_digital"},{"type":"literal","value":"nest_connect"},{"type":"literal","value":"nest_detect"},{"type":"literal","value":"nest_display"},{"type":"literal","value":"nest_display_max"},{"type":"literal","value":"nest_doorbell_visitor"},{"type":"literal","value":"nest_eco_leaf"},{"type":"literal","value":"nest_farsight_cool"},{"type":"literal","value":"nest_farsight_dual"},{"type":"literal","value":"nest_farsight_eco"},{"type":"literal","value":"nest_farsight_heat"},{"type":"literal","value":"nest_farsight_seasonal"},{"type":"literal","value":"nest_farsight_weather"},{"type":"literal","value":"nest_found_savings"},{"type":"literal","value":"nest_heat_link_e"},{"type":"literal","value":"nest_heat_link_gen_3"},{"type":"literal","value":"nest_hello_doorbell"},{"type":"literal","value":"nest_mini"},{"type":"literal","value":"nest_multi_room"},{"type":"literal","value":"nest_protect"},{"type":"literal","value":"nest_remote_comfort_sensor"},{"type":"literal","value":"nest_secure_alarm"},{"type":"literal","value":"nest_sunblock"},{"type":"literal","value":"nest_tag"},{"type":"literal","value":"nest_thermostat"},{"type":"literal","value":"nest_thermostat_e_eu"},{"type":"literal","value":"nest_thermostat_gen_3"},{"type":"literal","value":"nest_thermostat_sensor"},{"type":"literal","value":"nest_thermostat_sensor_eu"},{"type":"literal","value":"nest_thermostat_zirconium_eu"},{"type":"literal","value":"nest_true_radiant"},{"type":"literal","value":"nest_wake_on_approach"},{"type":"literal","value":"nest_wake_on_press"},{"type":"literal","value":"nest_wifi_point"},{"type":"literal","value":"nest_wifi_pro"},{"type":"literal","value":"nest_wifi_pro_2"},{"type":"literal","value":"nest_wifi_router"},{"type":"literal","value":"network_cell"},{"type":"literal","value":"network_check"},{"type":"literal","value":"network_intel_node"},{"type":"literal","value":"network_intelligence"},{"type":"literal","value":"network_intelligence_history"},{"type":"literal","value":"network_intelligence_update"},{"type":"literal","value":"network_locked"},{"type":"literal","value":"network_manage"},{"type":"literal","value":"network_node"},{"type":"literal","value":"network_ping"},{"type":"literal","value":"network_wifi"},{"type":"literal","value":"network_wifi_1_bar"},{"type":"literal","value":"network_wifi_1_bar_locked"},{"type":"literal","value":"network_wifi_2_bar"},{"type":"literal","value":"network_wifi_2_bar_locked"},{"type":"literal","value":"network_wifi_3_bar"},{"type":"literal","value":"network_wifi_3_bar_locked"},{"type":"literal","value":"network_wifi_locked"},{"type":"literal","value":"neurology"},{"type":"literal","value":"new_label"},{"type":"literal","value":"new_releases"},{"type":"literal","value":"new_window"},{"type":"literal","value":"news"},{"type":"literal","value":"newsmode"},{"type":"literal","value":"newsstand"},{"type":"literal","value":"next_plan"},{"type":"literal","value":"next_week"},{"type":"literal","value":"nfc"},{"type":"literal","value":"nfc_off"},{"type":"literal","value":"night_shelter"},{"type":"literal","value":"night_sight_auto"},{"type":"literal","value":"night_sight_auto_off"},{"type":"literal","value":"night_sight_max"},{"type":"literal","value":"nightlife"},{"type":"literal","value":"nightlight"},{"type":"literal","value":"nightlight_round"},{"type":"literal","value":"nights_stay"},{"type":"literal","value":"no_accounts"},{"type":"literal","value":"no_adult_content"},{"type":"literal","value":"no_backpack"},{"type":"literal","value":"no_cell"},{"type":"literal","value":"no_crash"},{"type":"literal","value":"no_drinks"},{"type":"literal","value":"no_encryption"},{"type":"literal","value":"no_encryption_gmailerrorred"},{"type":"literal","value":"no_flash"},{"type":"literal","value":"no_food"},{"type":"literal","value":"no_luggage"},{"type":"literal","value":"no_meals"},{"type":"literal","value":"no_meals_ouline"},{"type":"literal","value":"no_meeting_room"},{"type":"literal","value":"no_photography"},{"type":"literal","value":"no_sim"},{"type":"literal","value":"no_sound"},{"type":"literal","value":"no_stroller"},{"type":"literal","value":"no_transfer"},{"type":"literal","value":"noise_aware"},{"type":"literal","value":"noise_control_off"},{"type":"literal","value":"noise_control_on"},{"type":"literal","value":"nordic_walking"},{"type":"literal","value":"north"},{"type":"literal","value":"north_east"},{"type":"literal","value":"north_west"},{"type":"literal","value":"not_accessible"},{"type":"literal","value":"not_accessible_forward"},{"type":"literal","value":"not_interested"},{"type":"literal","value":"not_listed_location"},{"type":"literal","value":"not_started"},{"type":"literal","value":"note_add"},{"type":"literal","value":"note_alt"},{"type":"literal","value":"note_stack"},{"type":"literal","value":"note_stack_add"},{"type":"literal","value":"notes"},{"type":"literal","value":"notification_add"},{"type":"literal","value":"notification_important"},{"type":"literal","value":"notification_multiple"},{"type":"literal","value":"notification_settings"},{"type":"literal","value":"notification_sound"},{"type":"literal","value":"notifications"},{"type":"literal","value":"notifications_active"},{"type":"literal","value":"notifications_none"},{"type":"literal","value":"notifications_off"},{"type":"literal","value":"notifications_paused"},{"type":"literal","value":"notifications_unread"},{"type":"literal","value":"nutrition"},{"type":"literal","value":"ods"},{"type":"literal","value":"odt"},{"type":"literal","value":"offline_bolt"},{"type":"literal","value":"offline_pin"},{"type":"literal","value":"offline_pin_off"},{"type":"literal","value":"offline_share"},{"type":"literal","value":"oil_barrel"},{"type":"literal","value":"okonomiyaki"},{"type":"literal","value":"on_device_training"},{"type":"literal","value":"on_hub_device"},{"type":"literal","value":"oncology"},{"type":"literal","value":"ondemand_video"},{"type":"literal","value":"online_prediction"},{"type":"literal","value":"onsen"},{"type":"literal","value":"open_in_browser"},{"type":"literal","value":"open_in_full"},{"type":"literal","value":"open_in_new"},{"type":"literal","value":"open_in_new_down"},{"type":"literal","value":"open_in_new_off"},{"type":"literal","value":"open_jam"},{"type":"literal","value":"open_run"},{"type":"literal","value":"open_with"},{"type":"literal","value":"ophthalmology"},{"type":"literal","value":"oral_disease"},{"type":"literal","value":"orbit"},{"type":"literal","value":"order_approve"},{"type":"literal","value":"order_play"},{"type":"literal","value":"orders"},{"type":"literal","value":"orthopedics"},{"type":"literal","value":"other_admission"},{"type":"literal","value":"other_houses"},{"type":"literal","value":"outbound"},{"type":"literal","value":"outbox"},{"type":"literal","value":"outbox_alt"},{"type":"literal","value":"outdoor_garden"},{"type":"literal","value":"outdoor_grill"},{"type":"literal","value":"outgoing_mail"},{"type":"literal","value":"outlet"},{"type":"literal","value":"outlined_flag"},{"type":"literal","value":"outpatient"},{"type":"literal","value":"outpatient_med"},{"type":"literal","value":"output_circle"},{"type":"literal","value":"oven_gen"},{"type":"literal","value":"overview"},{"type":"literal","value":"overview_key"},{"type":"literal","value":"owl"},{"type":"literal","value":"oxygen_saturation"},{"type":"literal","value":"p2p"},{"type":"literal","value":"pace"},{"type":"literal","value":"pacemaker"},{"type":"literal","value":"package_2"},{"type":"literal","value":"padel"},{"type":"literal","value":"page_control"},{"type":"literal","value":"page_footer"},{"type":"literal","value":"page_header"},{"type":"literal","value":"page_info"},{"type":"literal","value":"page_menu_ios"},{"type":"literal","value":"pageless"},{"type":"literal","value":"pages"},{"type":"literal","value":"pageview"},{"type":"literal","value":"paid"},{"type":"literal","value":"pallet"},{"type":"literal","value":"pan_tool"},{"type":"literal","value":"pan_tool_alt"},{"type":"literal","value":"pan_zoom"},{"type":"literal","value":"panorama"},{"type":"literal","value":"panorama_fish_eye"},{"type":"literal","value":"panorama_horizontal"},{"type":"literal","value":"panorama_horizontal_select"},{"type":"literal","value":"panorama_photosphere"},{"type":"literal","value":"panorama_photosphere_select"},{"type":"literal","value":"panorama_vertical"},{"type":"literal","value":"panorama_vertical_select"},{"type":"literal","value":"panorama_wide_angle"},{"type":"literal","value":"panorama_wide_angle_select"},{"type":"literal","value":"paragliding"},{"type":"literal","value":"parent_child_dining"},{"type":"literal","value":"park"},{"type":"literal","value":"parking_meter"},{"type":"literal","value":"parking_sign"},{"type":"literal","value":"parking_valet"},{"type":"literal","value":"partly_cloudy_day"},{"type":"literal","value":"partly_cloudy_night"},{"type":"literal","value":"partner_exchange"},{"type":"literal","value":"partner_heart"},{"type":"literal","value":"partner_reports"},{"type":"literal","value":"party_mode"},{"type":"literal","value":"passkey"},{"type":"literal","value":"password"},{"type":"literal","value":"password_2"},{"type":"literal","value":"password_2_off"},{"type":"literal","value":"patient_list"},{"type":"literal","value":"pause_circle"},{"type":"literal","value":"pause_circle_filled"},{"type":"literal","value":"pause_circle_outline"},{"type":"literal","value":"pause_presentation"},{"type":"literal","value":"payment"},{"type":"literal","value":"payment_arrow_down"},{"type":"literal","value":"payment_card"},{"type":"literal","value":"payments"},{"type":"literal","value":"pedal_bike"},{"type":"literal","value":"pediatrics"},{"type":"literal","value":"pen_size_1"},{"type":"literal","value":"pen_size_2"},{"type":"literal","value":"pen_size_3"},{"type":"literal","value":"pen_size_4"},{"type":"literal","value":"pen_size_5"},{"type":"literal","value":"pending"},{"type":"literal","value":"pending_actions"},{"type":"literal","value":"people"},{"type":"literal","value":"people_alt"},{"type":"literal","value":"people_outline"},{"type":"literal","value":"percent_discount"},{"type":"literal","value":"pergola"},{"type":"literal","value":"perm_camera_mic"},{"type":"literal","value":"perm_contact_calendar"},{"type":"literal","value":"perm_data_setting"},{"type":"literal","value":"perm_device_information"},{"type":"literal","value":"perm_identity"},{"type":"literal","value":"perm_media"},{"type":"literal","value":"perm_phone_msg"},{"type":"literal","value":"perm_scan_wifi"},{"type":"literal","value":"person_2"},{"type":"literal","value":"person_3"},{"type":"literal","value":"person_4"},{"type":"literal","value":"person_add"},{"type":"literal","value":"person_add_alt"},{"type":"literal","value":"person_add_alt_1"},{"type":"literal","value":"person_add_disabled"},{"type":"literal","value":"person_alert"},{"type":"literal","value":"person_apron"},{"type":"literal","value":"person_book"},{"type":"literal","value":"person_cancel"},{"type":"literal","value":"person_celebrate"},{"type":"literal","value":"person_check"},{"type":"literal","value":"person_edit"},{"type":"literal","value":"person_heart"},{"type":"literal","value":"person_off"},{"type":"literal","value":"person_outline"},{"type":"literal","value":"person_pin"},{"type":"literal","value":"person_pin_circle"},{"type":"literal","value":"person_play"},{"type":"literal","value":"person_raised_hand"},{"type":"literal","value":"person_remove"},{"type":"literal","value":"person_remove_alt_1"},{"type":"literal","value":"person_search"},{"type":"literal","value":"person_shield"},{"type":"literal","value":"personal_bag"},{"type":"literal","value":"personal_bag_off"},{"type":"literal","value":"personal_bag_question"},{"type":"literal","value":"personal_injury"},{"type":"literal","value":"personal_places"},{"type":"literal","value":"personal_video"},{"type":"literal","value":"pest_control"},{"type":"literal","value":"pest_control_rodent"},{"type":"literal","value":"pet_supplies"},{"type":"literal","value":"pets"},{"type":"literal","value":"phishing"},{"type":"literal","value":"phone_android"},{"type":"literal","value":"phone_bluetooth_speaker"},{"type":"literal","value":"phone_callback"},{"type":"literal","value":"phone_disabled"},{"type":"literal","value":"phone_enabled"},{"type":"literal","value":"phone_forwarded"},{"type":"literal","value":"phone_in_talk"},{"type":"literal","value":"phone_iphone"},{"type":"literal","value":"phone_locked"},{"type":"literal","value":"phone_missed"},{"type":"literal","value":"phone_paused"},{"type":"literal","value":"phonelink"},{"type":"literal","value":"phonelink_erase"},{"type":"literal","value":"phonelink_lock"},{"type":"literal","value":"phonelink_off"},{"type":"literal","value":"phonelink_ring"},{"type":"literal","value":"phonelink_setup"},{"type":"literal","value":"photo_album"},{"type":"literal","value":"photo_auto_merge"},{"type":"literal","value":"photo_camera"},{"type":"literal","value":"photo_camera_back"},{"type":"literal","value":"photo_camera_front"},{"type":"literal","value":"photo_filter"},{"type":"literal","value":"photo_frame"},{"type":"literal","value":"photo_library"},{"type":"literal","value":"photo_prints"},{"type":"literal","value":"photo_size_select_actual"},{"type":"literal","value":"photo_size_select_large"},{"type":"literal","value":"photo_size_select_small"},{"type":"literal","value":"php"},{"type":"literal","value":"physical_therapy"},{"type":"literal","value":"piano"},{"type":"literal","value":"piano_off"},{"type":"literal","value":"pickleball"},{"type":"literal","value":"picture_as_pdf"},{"type":"literal","value":"picture_in_picture"},{"type":"literal","value":"picture_in_picture_alt"},{"type":"literal","value":"picture_in_picture_center"},{"type":"literal","value":"picture_in_picture_large"},{"type":"literal","value":"picture_in_picture_medium"},{"type":"literal","value":"picture_in_picture_mobile"},{"type":"literal","value":"picture_in_picture_off"},{"type":"literal","value":"picture_in_picture_small"},{"type":"literal","value":"pie_chart"},{"type":"literal","value":"pie_chart_outline"},{"type":"literal","value":"pie_chart_outlined"},{"type":"literal","value":"pill_off"},{"type":"literal","value":"pin_drop"},{"type":"literal","value":"pin_end"},{"type":"literal","value":"pin_invoke"},{"type":"literal","value":"pinboard"},{"type":"literal","value":"pinboard_unread"},{"type":"literal","value":"pinch"},{"type":"literal","value":"pinch_zoom_in"},{"type":"literal","value":"pinch_zoom_out"},{"type":"literal","value":"pip_exit"},{"type":"literal","value":"pivot_table_chart"},{"type":"literal","value":"pix"},{"type":"literal","value":"place"},{"type":"literal","value":"place_item"},{"type":"literal","value":"plagiarism"},{"type":"literal","value":"plane_contrails"},{"type":"literal","value":"planet"},{"type":"literal","value":"planner_banner_ad_pt"},{"type":"literal","value":"planner_review"},{"type":"literal","value":"play_arrow"},{"type":"literal","value":"play_circle"},{"type":"literal","value":"play_circle_filled"},{"type":"literal","value":"play_circle_outline"},{"type":"literal","value":"play_disabled"},{"type":"literal","value":"play_for_work"},{"type":"literal","value":"play_lesson"},{"type":"literal","value":"play_pause"},{"type":"literal","value":"playground"},{"type":"literal","value":"playground_2"},{"type":"literal","value":"playing_cards"},{"type":"literal","value":"playlist_add"},{"type":"literal","value":"playlist_add_check"},{"type":"literal","value":"playlist_add_check_circle"},{"type":"literal","value":"playlist_add_circle"},{"type":"literal","value":"playlist_play"},{"type":"literal","value":"playlist_remove"},{"type":"literal","value":"plug_connect"},{"type":"literal","value":"plumbing"},{"type":"literal","value":"plus_one"},{"type":"literal","value":"podcasts"},{"type":"literal","value":"podiatry"},{"type":"literal","value":"podium"},{"type":"literal","value":"point_of_sale"},{"type":"literal","value":"point_scan"},{"type":"literal","value":"poker_chip"},{"type":"literal","value":"policy_alert"},{"type":"literal","value":"poll"},{"type":"literal","value":"polymer"},{"type":"literal","value":"pool"},{"type":"literal","value":"portable_wifi_off"},{"type":"literal","value":"position_bottom_left"},{"type":"literal","value":"position_bottom_right"},{"type":"literal","value":"position_top_right"},{"type":"literal","value":"post"},{"type":"literal","value":"post_add"},{"type":"literal","value":"potted_plant"},{"type":"literal","value":"power_input"},{"type":"literal","value":"power_off"},{"type":"literal","value":"power_settings_circle"},{"type":"literal","value":"power_settings_new"},{"type":"literal","value":"prayer_times"},{"type":"literal","value":"precision_manufacturing"},{"type":"literal","value":"pregnancy"},{"type":"literal","value":"pregnant_woman"},{"type":"literal","value":"preliminary"},{"type":"literal","value":"prescriptions"},{"type":"literal","value":"present_to_all"},{"type":"literal","value":"preview"},{"type":"literal","value":"preview_off"},{"type":"literal","value":"price_change"},{"type":"literal","value":"price_check"},{"type":"literal","value":"print_add"},{"type":"literal","value":"print_connect"},{"type":"literal","value":"print_disabled"},{"type":"literal","value":"print_error"},{"type":"literal","value":"print_lock"},{"type":"literal","value":"priority"},{"type":"literal","value":"priority_high"},{"type":"literal","value":"privacy"},{"type":"literal","value":"privacy_tip"},{"type":"literal","value":"private_connectivity"},{"type":"literal","value":"problem"},{"type":"literal","value":"procedure"},{"type":"literal","value":"process_chart"},{"type":"literal","value":"production_quantity_limits"},{"type":"literal","value":"productivity"},{"type":"literal","value":"progress_activity"},{"type":"literal","value":"prompt_suggestion"},{"type":"literal","value":"propane"},{"type":"literal","value":"propane_tank"},{"type":"literal","value":"psychiatry"},{"type":"literal","value":"psychology"},{"type":"literal","value":"psychology_alt"},{"type":"literal","value":"public_off"},{"type":"literal","value":"publish"},{"type":"literal","value":"published_with_changes"},{"type":"literal","value":"pulmonology"},{"type":"literal","value":"pulse_alert"},{"type":"literal","value":"punch_clock"},{"type":"literal","value":"push_pin"},{"type":"literal","value":"qr_code"},{"type":"literal","value":"qr_code_2"},{"type":"literal","value":"qr_code_2_add"},{"type":"literal","value":"qr_code_scanner"},{"type":"literal","value":"query_builder"},{"type":"literal","value":"query_stats"},{"type":"literal","value":"question_answer"},{"type":"literal","value":"question_exchange"},{"type":"literal","value":"question_mark"},{"type":"literal","value":"queue"},{"type":"literal","value":"queue_music"},{"type":"literal","value":"queue_play_next"},{"type":"literal","value":"quick_phrases"},{"type":"literal","value":"quick_reference"},{"type":"literal","value":"quick_reference_all"},{"type":"literal","value":"quick_reorder"},{"type":"literal","value":"quickreply"},{"type":"literal","value":"quiz"},{"type":"literal","value":"r_mobiledata"},{"type":"literal","value":"radar"},{"type":"literal","value":"radio_button_checked"},{"type":"literal","value":"radio_button_partial"},{"type":"literal","value":"radio_button_unchecked"},{"type":"literal","value":"radiology"},{"type":"literal","value":"railway_alert"},{"type":"literal","value":"railway_alert_2"},{"type":"literal","value":"rainy"},{"type":"literal","value":"rainy_heavy"},{"type":"literal","value":"rainy_light"},{"type":"literal","value":"rainy_snow"},{"type":"literal","value":"ramen_dining"},{"type":"literal","value":"ramp_left"},{"type":"literal","value":"ramp_right"},{"type":"literal","value":"range_hood"},{"type":"literal","value":"rate_review"},{"type":"literal","value":"raven"},{"type":"literal","value":"raw_off"},{"type":"literal","value":"raw_on"},{"type":"literal","value":"read_more"},{"type":"literal","value":"readiness_score"},{"type":"literal","value":"real_estate_agent"},{"type":"literal","value":"rear_camera"},{"type":"literal","value":"rebase"},{"type":"literal","value":"rebase_edit"},{"type":"literal","value":"receipt_long"},{"type":"literal","value":"receipt_long_off"},{"type":"literal","value":"recent_actors"},{"type":"literal","value":"recent_patient"},{"type":"literal","value":"recenter"},{"type":"literal","value":"recommend"},{"type":"literal","value":"record_voice_over"},{"type":"literal","value":"recycling"},{"type":"literal","value":"redeem"},{"type":"literal","value":"redo"},{"type":"literal","value":"reduce_capacity"},{"type":"literal","value":"regular_expression"},{"type":"literal","value":"relax"},{"type":"literal","value":"release_alert"},{"type":"literal","value":"remember_me"},{"type":"literal","value":"reminder"},{"type":"literal","value":"remote_gen"},{"type":"literal","value":"remove_circle"},{"type":"literal","value":"remove_circle_outline"},{"type":"literal","value":"remove_done"},{"type":"literal","value":"remove_from_queue"},{"type":"literal","value":"remove_moderator"},{"type":"literal","value":"remove_red_eye"},{"type":"literal","value":"remove_road"},{"type":"literal","value":"remove_selection"},{"type":"literal","value":"remove_shopping_cart"},{"type":"literal","value":"reopen_window"},{"type":"literal","value":"reorder"},{"type":"literal","value":"repartition"},{"type":"literal","value":"repeat_on"},{"type":"literal","value":"repeat_one"},{"type":"literal","value":"repeat_one_on"},{"type":"literal","value":"replace_audio"},{"type":"literal","value":"replace_image"},{"type":"literal","value":"replace_video"},{"type":"literal","value":"replay"},{"type":"literal","value":"replay_10"},{"type":"literal","value":"replay_30"},{"type":"literal","value":"replay_5"},{"type":"literal","value":"replay_circle_filled"},{"type":"literal","value":"reply"},{"type":"literal","value":"reply_all"},{"type":"literal","value":"report_gmailerrorred"},{"type":"literal","value":"report_off"},{"type":"literal","value":"report_problem"},{"type":"literal","value":"request_page"},{"type":"literal","value":"request_quote"},{"type":"literal","value":"reset_brightness"},{"type":"literal","value":"reset_exposure"},{"type":"literal","value":"reset_focus"},{"type":"literal","value":"reset_image"},{"type":"literal","value":"reset_iso"},{"type":"literal","value":"reset_settings"},{"type":"literal","value":"reset_shadow"},{"type":"literal","value":"reset_shutter_speed"},{"type":"literal","value":"reset_tv"},{"type":"literal","value":"reset_white_balance"},{"type":"literal","value":"reset_wrench"},{"type":"literal","value":"respiratory_rate"},{"type":"literal","value":"responsive_layout"},{"type":"literal","value":"rest_area"},{"type":"literal","value":"restart_alt"},{"type":"literal","value":"restaurant"},{"type":"literal","value":"restaurant_menu"},{"type":"literal","value":"restore"},{"type":"literal","value":"restore_from_trash"},{"type":"literal","value":"restore_page"},{"type":"literal","value":"resume"},{"type":"literal","value":"reviews"},{"type":"literal","value":"rewarded_ads"},{"type":"literal","value":"rheumatology"},{"type":"literal","value":"rib_cage"},{"type":"literal","value":"rice_bowl"},{"type":"literal","value":"right_click"},{"type":"literal","value":"right_panel_close"},{"type":"literal","value":"right_panel_open"},{"type":"literal","value":"ring_volume"},{"type":"literal","value":"ripples"},{"type":"literal","value":"road"},{"type":"literal","value":"robot"},{"type":"literal","value":"robot_2"},{"type":"literal","value":"rocket"},{"type":"literal","value":"rocket_launch"},{"type":"literal","value":"roller_shades"},{"type":"literal","value":"roller_shades_closed"},{"type":"literal","value":"roller_skating"},{"type":"literal","value":"roofing"},{"type":"literal","value":"room"},{"type":"literal","value":"room_preferences"},{"type":"literal","value":"room_service"},{"type":"literal","value":"rotate_90_degrees_ccw"},{"type":"literal","value":"rotate_90_degrees_cw"},{"type":"literal","value":"rotate_auto"},{"type":"literal","value":"rotate_left"},{"type":"literal","value":"rotate_right"},{"type":"literal","value":"roundabout_left"},{"type":"literal","value":"roundabout_right"},{"type":"literal","value":"rounded_corner"},{"type":"literal","value":"router_off"},{"type":"literal","value":"routine"},{"type":"literal","value":"rowing"},{"type":"literal","value":"rss_feed"},{"type":"literal","value":"rsvp"},{"type":"literal","value":"rtt"},{"type":"literal","value":"rubric"},{"type":"literal","value":"rule"},{"type":"literal","value":"rule_folder"},{"type":"literal","value":"rule_settings"},{"type":"literal","value":"run_circle"},{"type":"literal","value":"running_with_errors"},{"type":"literal","value":"rv_hookup"},{"type":"literal","value":"safety_check"},{"type":"literal","value":"safety_check_off"},{"type":"literal","value":"safety_divider"},{"type":"literal","value":"sailing"},{"type":"literal","value":"salinity"},{"type":"literal","value":"sanitizer"},{"type":"literal","value":"satellite"},{"type":"literal","value":"satellite_alt"},{"type":"literal","value":"sauna"},{"type":"literal","value":"save"},{"type":"literal","value":"save_alt"},{"type":"literal","value":"save_as"},{"type":"literal","value":"save_clock"},{"type":"literal","value":"saved_search"},{"type":"literal","value":"savings"},{"type":"literal","value":"scan"},{"type":"literal","value":"scan_delete"},{"type":"literal","value":"scatter_plot"},{"type":"literal","value":"scene"},{"type":"literal","value":"schedule"},{"type":"literal","value":"schedule_send"},{"type":"literal","value":"schema"},{"type":"literal","value":"school"},{"type":"literal","value":"science"},{"type":"literal","value":"science_off"},{"type":"literal","value":"score"},{"type":"literal","value":"scoreboard"},{"type":"literal","value":"screen_lock_landscape"},{"type":"literal","value":"screen_lock_portrait"},{"type":"literal","value":"screen_lock_rotation"},{"type":"literal","value":"screen_record"},{"type":"literal","value":"screen_rotation"},{"type":"literal","value":"screen_rotation_alt"},{"type":"literal","value":"screen_rotation_up"},{"type":"literal","value":"screen_search_desktop"},{"type":"literal","value":"screen_share"},{"type":"literal","value":"screenshot"},{"type":"literal","value":"screenshot_frame"},{"type":"literal","value":"screenshot_frame_2"},{"type":"literal","value":"screenshot_keyboard"},{"type":"literal","value":"screenshot_monitor"},{"type":"literal","value":"screenshot_region"},{"type":"literal","value":"screenshot_tablet"},{"type":"literal","value":"scrollable_header"},{"type":"literal","value":"scuba_diving"},{"type":"literal","value":"sd"},{"type":"literal","value":"sd_card"},{"type":"literal","value":"sd_card_alert"},{"type":"literal","value":"sd_storage"},{"type":"literal","value":"sdk"},{"type":"literal","value":"search_activity"},{"type":"literal","value":"search_check"},{"type":"literal","value":"search_check_2"},{"type":"literal","value":"search_gear"},{"type":"literal","value":"search_hands_free"},{"type":"literal","value":"search_insights"},{"type":"literal","value":"search_off"},{"type":"literal","value":"seat_cool_left"},{"type":"literal","value":"seat_cool_right"},{"type":"literal","value":"seat_heat_left"},{"type":"literal","value":"seat_heat_right"},{"type":"literal","value":"seat_vent_left"},{"type":"literal","value":"seat_vent_right"},{"type":"literal","value":"security_key"},{"type":"literal","value":"security_update"},{"type":"literal","value":"security_update_good"},{"type":"literal","value":"security_update_warning"},{"type":"literal","value":"segment"},{"type":"literal","value":"select_all"},{"type":"literal","value":"select_check_box"},{"type":"literal","value":"select_to_speak"},{"type":"literal","value":"select_window"},{"type":"literal","value":"select_window_2"},{"type":"literal","value":"select_window_off"},{"type":"literal","value":"self_care"},{"type":"literal","value":"self_improvement"},{"type":"literal","value":"sell"},{"type":"literal","value":"send_and_archive"},{"type":"literal","value":"send_money"},{"type":"literal","value":"send_time_extension"},{"type":"literal","value":"send_to_mobile"},{"type":"literal","value":"sensor_door"},{"type":"literal","value":"sensor_occupied"},{"type":"literal","value":"sensor_window"},{"type":"literal","value":"sensors"},{"type":"literal","value":"sensors_krx"},{"type":"literal","value":"sensors_krx_off"},{"type":"literal","value":"sensors_off"},{"type":"literal","value":"sentiment_calm"},{"type":"literal","value":"sentiment_content"},{"type":"literal","value":"sentiment_dissatisfied"},{"type":"literal","value":"sentiment_excited"},{"type":"literal","value":"sentiment_extremely_dissatisfied"},{"type":"literal","value":"sentiment_frustrated"},{"type":"literal","value":"sentiment_neutral"},{"type":"literal","value":"sentiment_sad"},{"type":"literal","value":"sentiment_satisfied"},{"type":"literal","value":"sentiment_satisfied_alt"},{"type":"literal","value":"sentiment_stressed"},{"type":"literal","value":"sentiment_very_dissatisfied"},{"type":"literal","value":"sentiment_very_satisfied"},{"type":"literal","value":"sentiment_worried"},{"type":"literal","value":"serif"},{"type":"literal","value":"server_person"},{"type":"literal","value":"service_toolbox"},{"type":"literal","value":"set_meal"},{"type":"literal","value":"settings_accessibility"},{"type":"literal","value":"settings_account_box"},{"type":"literal","value":"settings_alert"},{"type":"literal","value":"settings_applications"},{"type":"literal","value":"settings_b_roll"},{"type":"literal","value":"settings_backup_restore"},{"type":"literal","value":"settings_bluetooth"},{"type":"literal","value":"settings_brightness"},{"type":"literal","value":"settings_cell"},{"type":"literal","value":"settings_cinematic_blur"},{"type":"literal","value":"settings_ethernet"},{"type":"literal","value":"settings_heart"},{"type":"literal","value":"settings_input_antenna"},{"type":"literal","value":"settings_input_component"},{"type":"literal","value":"settings_input_composite"},{"type":"literal","value":"settings_input_hdmi"},{"type":"literal","value":"settings_input_svideo"},{"type":"literal","value":"settings_motion_mode"},{"type":"literal","value":"settings_night_sight"},{"type":"literal","value":"settings_overscan"},{"type":"literal","value":"settings_panorama"},{"type":"literal","value":"settings_phone"},{"type":"literal","value":"settings_photo_camera"},{"type":"literal","value":"settings_power"},{"type":"literal","value":"settings_remote"},{"type":"literal","value":"settings_seating"},{"type":"literal","value":"settings_slow_motion"},{"type":"literal","value":"settings_suggest"},{"type":"literal","value":"settings_system_daydream"},{"type":"literal","value":"settings_timelapse"},{"type":"literal","value":"settings_video_camera"},{"type":"literal","value":"settings_voice"},{"type":"literal","value":"settop_component"},{"type":"literal","value":"severe_cold"},{"type":"literal","value":"shadow_add"},{"type":"literal","value":"shadow_minus"},{"type":"literal","value":"shape_line"},{"type":"literal","value":"shapes"},{"type":"literal","value":"share_eta"},{"type":"literal","value":"share_location"},{"type":"literal","value":"share_off"},{"type":"literal","value":"share_reviews"},{"type":"literal","value":"share_windows"},{"type":"literal","value":"shaved_ice"},{"type":"literal","value":"sheets_rtl"},{"type":"literal","value":"shelf_auto_hide"},{"type":"literal","value":"shelf_position"},{"type":"literal","value":"shelves"},{"type":"literal","value":"shield_lock"},{"type":"literal","value":"shield_locked"},{"type":"literal","value":"shield_moon"},{"type":"literal","value":"shield_person"},{"type":"literal","value":"shield_question"},{"type":"literal","value":"shield_toggle"},{"type":"literal","value":"shield_watch"},{"type":"literal","value":"shield_with_heart"},{"type":"literal","value":"shield_with_house"},{"type":"literal","value":"shift_lock"},{"type":"literal","value":"shift_lock_off"},{"type":"literal","value":"shop"},{"type":"literal","value":"shop_2"},{"type":"literal","value":"shop_two"},{"type":"literal","value":"shopping_bag"},{"type":"literal","value":"shopping_bag_speed"},{"type":"literal","value":"shopping_basket"},{"type":"literal","value":"shopping_cart"},{"type":"literal","value":"shopping_cart_checkout"},{"type":"literal","value":"shopping_cart_off"},{"type":"literal","value":"shoppingmode"},{"type":"literal","value":"short_stay"},{"type":"literal","value":"short_text"},{"type":"literal","value":"shortcut"},{"type":"literal","value":"show_chart"},{"type":"literal","value":"shuffle_on"},{"type":"literal","value":"shutter_speed"},{"type":"literal","value":"shutter_speed_add"},{"type":"literal","value":"shutter_speed_minus"},{"type":"literal","value":"sick"},{"type":"literal","value":"side_navigation"},{"type":"literal","value":"sign_language"},{"type":"literal","value":"signal_cellular_0_bar"},{"type":"literal","value":"signal_cellular_1_bar"},{"type":"literal","value":"signal_cellular_2_bar"},{"type":"literal","value":"signal_cellular_3_bar"},{"type":"literal","value":"signal_cellular_4_bar"},{"type":"literal","value":"signal_cellular_add"},{"type":"literal","value":"signal_cellular_alt"},{"type":"literal","value":"signal_cellular_alt_1_bar"},{"type":"literal","value":"signal_cellular_alt_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_0_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_1_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_2_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_3_bar"},{"type":"literal","value":"signal_cellular_connected_no_internet_4_bar"},{"type":"literal","value":"signal_cellular_no_sim"},{"type":"literal","value":"signal_cellular_nodata"},{"type":"literal","value":"signal_cellular_null"},{"type":"literal","value":"signal_cellular_off"},{"type":"literal","value":"signal_cellular_pause"},{"type":"literal","value":"signal_disconnected"},{"type":"literal","value":"signal_wifi_0_bar"},{"type":"literal","value":"signal_wifi_1_bar"},{"type":"literal","value":"signal_wifi_1_bar_lock"},{"type":"literal","value":"signal_wifi_2_bar"},{"type":"literal","value":"signal_wifi_2_bar_lock"},{"type":"literal","value":"signal_wifi_3_bar"},{"type":"literal","value":"signal_wifi_3_bar_lock"},{"type":"literal","value":"signal_wifi_4_bar"},{"type":"literal","value":"signal_wifi_4_bar_lock"},{"type":"literal","value":"signal_wifi_bad"},{"type":"literal","value":"signal_wifi_connected_no_internet_0"},{"type":"literal","value":"signal_wifi_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_off"},{"type":"literal","value":"signal_wifi_statusbar_1_bar"},{"type":"literal","value":"signal_wifi_statusbar_2_bar"},{"type":"literal","value":"signal_wifi_statusbar_3_bar"},{"type":"literal","value":"signal_wifi_statusbar_4_bar"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_1"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_2"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_3"},{"type":"literal","value":"signal_wifi_statusbar_connected_no_internet_4"},{"type":"literal","value":"signal_wifi_statusbar_not_connected"},{"type":"literal","value":"signal_wifi_statusbar_null"},{"type":"literal","value":"signpost"},{"type":"literal","value":"sim_card"},{"type":"literal","value":"sim_card_alert"},{"type":"literal","value":"sim_card_download"},{"type":"literal","value":"simulation"},{"type":"literal","value":"single_bed"},{"type":"literal","value":"sip"},{"type":"literal","value":"siren"},{"type":"literal","value":"siren_check"},{"type":"literal","value":"siren_open"},{"type":"literal","value":"siren_question"},{"type":"literal","value":"skateboarding"},{"type":"literal","value":"skeleton"},{"type":"literal","value":"skillet"},{"type":"literal","value":"skillet_cooktop"},{"type":"literal","value":"skip_next"},{"type":"literal","value":"skip_previous"},{"type":"literal","value":"skull"},{"type":"literal","value":"skull_list"},{"type":"literal","value":"slab_serif"},{"type":"literal","value":"sledding"},{"type":"literal","value":"sleep_score"},{"type":"literal","value":"slide_library"},{"type":"literal","value":"sliders"},{"type":"literal","value":"slideshow"},{"type":"literal","value":"slow_motion_video"},{"type":"literal","value":"smart_button"},{"type":"literal","value":"smart_card_reader"},{"type":"literal","value":"smart_card_reader_off"},{"type":"literal","value":"smart_display"},{"type":"literal","value":"smart_outlet"},{"type":"literal","value":"smart_screen"},{"type":"literal","value":"smart_toy"},{"type":"literal","value":"smb_share"},{"type":"literal","value":"smoke_free"},{"type":"literal","value":"smoking_rooms"},{"type":"literal","value":"sms"},{"type":"literal","value":"sms_failed"},{"type":"literal","value":"snippet_folder"},{"type":"literal","value":"snooze"},{"type":"literal","value":"snowboarding"},{"type":"literal","value":"snowing"},{"type":"literal","value":"snowing_heavy"},{"type":"literal","value":"snowmobile"},{"type":"literal","value":"snowshoeing"},{"type":"literal","value":"soap"},{"type":"literal","value":"soba"},{"type":"literal","value":"social_distance"},{"type":"literal","value":"social_leaderboard"},{"type":"literal","value":"solar_power"},{"type":"literal","value":"solo_dining"},{"type":"literal","value":"sort_by_alpha"},{"type":"literal","value":"sound_detection_dog_barking"},{"type":"literal","value":"sound_detection_glass_break"},{"type":"literal","value":"sound_detection_loud_sound"},{"type":"literal","value":"sound_sampler"},{"type":"literal","value":"soup_kitchen"},{"type":"literal","value":"source_environment"},{"type":"literal","value":"source_notes"},{"type":"literal","value":"south"},{"type":"literal","value":"south_america"},{"type":"literal","value":"south_east"},{"type":"literal","value":"south_west"},{"type":"literal","value":"spa"},{"type":"literal","value":"space_bar"},{"type":"literal","value":"space_dashboard"},{"type":"literal","value":"spatial_audio"},{"type":"literal","value":"spatial_audio_off"},{"type":"literal","value":"spatial_speaker"},{"type":"literal","value":"spatial_tracking"},{"type":"literal","value":"speaker_group"},{"type":"literal","value":"speaker_notes"},{"type":"literal","value":"speaker_notes_off"},{"type":"literal","value":"speaker_phone"},{"type":"literal","value":"special_character"},{"type":"literal","value":"specific_gravity"},{"type":"literal","value":"speech_to_text"},{"type":"literal","value":"speed"},{"type":"literal","value":"speed_0_25"},{"type":"literal","value":"speed_0_2x"},{"type":"literal","value":"speed_0_5"},{"type":"literal","value":"speed_0_5x"},{"type":"literal","value":"speed_0_75"},{"type":"literal","value":"speed_0_7x"},{"type":"literal","value":"speed_1_2"},{"type":"literal","value":"speed_1_25"},{"type":"literal","value":"speed_1_2x"},{"type":"literal","value":"speed_1_5"},{"type":"literal","value":"speed_1_5x"},{"type":"literal","value":"speed_1_75"},{"type":"literal","value":"speed_1_7x"},{"type":"literal","value":"speed_2x"},{"type":"literal","value":"speed_camera"},{"type":"literal","value":"spellcheck"},{"type":"literal","value":"split_scene"},{"type":"literal","value":"split_scene_down"},{"type":"literal","value":"split_scene_left"},{"type":"literal","value":"split_scene_right"},{"type":"literal","value":"split_scene_up"},{"type":"literal","value":"splitscreen"},{"type":"literal","value":"splitscreen_add"},{"type":"literal","value":"splitscreen_bottom"},{"type":"literal","value":"splitscreen_landscape"},{"type":"literal","value":"splitscreen_left"},{"type":"literal","value":"splitscreen_portrait"},{"type":"literal","value":"splitscreen_right"},{"type":"literal","value":"splitscreen_top"},{"type":"literal","value":"splitscreen_vertical_add"},{"type":"literal","value":"spo2"},{"type":"literal","value":"spoke"},{"type":"literal","value":"sports"},{"type":"literal","value":"sports_and_outdoors"},{"type":"literal","value":"sports_bar"},{"type":"literal","value":"sports_baseball"},{"type":"literal","value":"sports_basketball"},{"type":"literal","value":"sports_cricket"},{"type":"literal","value":"sports_esports"},{"type":"literal","value":"sports_football"},{"type":"literal","value":"sports_golf"},{"type":"literal","value":"sports_gymnastics"},{"type":"literal","value":"sports_handball"},{"type":"literal","value":"sports_hockey"},{"type":"literal","value":"sports_kabaddi"},{"type":"literal","value":"sports_martial_arts"},{"type":"literal","value":"sports_mma"},{"type":"literal","value":"sports_motorsports"},{"type":"literal","value":"sports_rugby"},{"type":"literal","value":"sports_score"},{"type":"literal","value":"sports_soccer"},{"type":"literal","value":"sports_tennis"},{"type":"literal","value":"sports_volleyball"},{"type":"literal","value":"sprint"},{"type":"literal","value":"square_dot"},{"type":"literal","value":"square_foot"},{"type":"literal","value":"ssid_chart"},{"type":"literal","value":"stack_group"},{"type":"literal","value":"stack_hexagon"},{"type":"literal","value":"stack_off"},{"type":"literal","value":"stack_star"},{"type":"literal","value":"stacked_bar_chart"},{"type":"literal","value":"stacked_email"},{"type":"literal","value":"stacked_inbox"},{"type":"literal","value":"stacked_line_chart"},{"type":"literal","value":"stacks"},{"type":"literal","value":"stadia_controller"},{"type":"literal","value":"stadium"},{"type":"literal","value":"stairs_2"},{"type":"literal","value":"star_border"},{"type":"literal","value":"star_border_purple500"},{"type":"literal","value":"star_half"},{"type":"literal","value":"star_outline"},{"type":"literal","value":"star_purple500"},{"type":"literal","value":"star_rate"},{"type":"literal","value":"star_rate_half"},{"type":"literal","value":"star_shine"},{"type":"literal","value":"stars"},{"type":"literal","value":"stars_2"},{"type":"literal","value":"stat_0"},{"type":"literal","value":"stat_1"},{"type":"literal","value":"stat_2"},{"type":"literal","value":"stat_3"},{"type":"literal","value":"stat_minus_1"},{"type":"literal","value":"stat_minus_2"},{"type":"literal","value":"stat_minus_3"},{"type":"literal","value":"stay_current_landscape"},{"type":"literal","value":"stay_current_portrait"},{"type":"literal","value":"stay_primary_landscape"},{"type":"literal","value":"stay_primary_portrait"},{"type":"literal","value":"steering_wheel_heat"},{"type":"literal","value":"step_into"},{"type":"literal","value":"step_out"},{"type":"literal","value":"step_over"},{"type":"literal","value":"steppers"},{"type":"literal","value":"steps"},{"type":"literal","value":"stethoscope_arrow"},{"type":"literal","value":"stethoscope_check"},{"type":"literal","value":"sticky_note"},{"type":"literal","value":"sticky_note_2"},{"type":"literal","value":"stock_media"},{"type":"literal","value":"stockpot"},{"type":"literal","value":"stop_circle"},{"type":"literal","value":"stop_screen_share"},{"type":"literal","value":"store_mall_directory"},{"type":"literal","value":"storm"},{"type":"literal","value":"straight"},{"type":"literal","value":"straighten"},{"type":"literal","value":"strategy"},{"type":"literal","value":"stream"},{"type":"literal","value":"streetview"},{"type":"literal","value":"stress_management"},{"type":"literal","value":"strikethrough_s"},{"type":"literal","value":"stroke_full"},{"type":"literal","value":"stroke_partial"},{"type":"literal","value":"styler"},{"type":"literal","value":"stylus"},{"type":"literal","value":"stylus_brush"},{"type":"literal","value":"stylus_fountain_pen"},{"type":"literal","value":"stylus_highlighter"},{"type":"literal","value":"stylus_laser_pointer"},{"type":"literal","value":"stylus_note"},{"type":"literal","value":"stylus_pen"},{"type":"literal","value":"stylus_pencil"},{"type":"literal","value":"subdirectory_arrow_left"},{"type":"literal","value":"subdirectory_arrow_right"},{"type":"literal","value":"subheader"},{"type":"literal","value":"subject"},{"type":"literal","value":"subscript"},{"type":"literal","value":"subscriptions"},{"type":"literal","value":"subtitles"},{"type":"literal","value":"subtitles_gear"},{"type":"literal","value":"subtitles_off"},{"type":"literal","value":"subway"},{"type":"literal","value":"subway_walk"},{"type":"literal","value":"summarize"},{"type":"literal","value":"sunny"},{"type":"literal","value":"sunny_snowing"},{"type":"literal","value":"superscript"},{"type":"literal","value":"supervised_user_circle"},{"type":"literal","value":"supervised_user_circle_off"},{"type":"literal","value":"supervisor_account"},{"type":"literal","value":"support"},{"type":"literal","value":"support_agent"},{"type":"literal","value":"surfing"},{"type":"literal","value":"surgical"},{"type":"literal","value":"surround_sound"},{"type":"literal","value":"swap_calls"},{"type":"literal","value":"swap_driving_apps"},{"type":"literal","value":"swap_driving_apps_wheel"},{"type":"literal","value":"swap_horiz"},{"type":"literal","value":"swap_horizontal_circle"},{"type":"literal","value":"swap_vert"},{"type":"literal","value":"swap_vertical_circle"},{"type":"literal","value":"sweep"},{"type":"literal","value":"swipe"},{"type":"literal","value":"swipe_down"},{"type":"literal","value":"swipe_down_alt"},{"type":"literal","value":"swipe_left"},{"type":"literal","value":"swipe_left_alt"},{"type":"literal","value":"swipe_right"},{"type":"literal","value":"swipe_right_alt"},{"type":"literal","value":"swipe_up"},{"type":"literal","value":"swipe_up_alt"},{"type":"literal","value":"swipe_vertical"},{"type":"literal","value":"switch_access"},{"type":"literal","value":"switch_access_2"},{"type":"literal","value":"switch_access_3"},{"type":"literal","value":"switch_access_shortcut"},{"type":"literal","value":"switch_access_shortcut_add"},{"type":"literal","value":"switch_account"},{"type":"literal","value":"switch_camera"},{"type":"literal","value":"switch_left"},{"type":"literal","value":"switch_right"},{"type":"literal","value":"switch_video"},{"type":"literal","value":"switches"},{"type":"literal","value":"sword_rose"},{"type":"literal","value":"swords"},{"type":"literal","value":"symptoms"},{"type":"literal","value":"synagogue"},{"type":"literal","value":"sync_alt"},{"type":"literal","value":"sync_arrow_down"},{"type":"literal","value":"sync_arrow_up"},{"type":"literal","value":"sync_desktop"},{"type":"literal","value":"sync_disabled"},{"type":"literal","value":"sync_lock"},{"type":"literal","value":"sync_problem"},{"type":"literal","value":"sync_saved_locally"},{"type":"literal","value":"sync_saved_locally_off"},{"type":"literal","value":"system_security_update"},{"type":"literal","value":"system_security_update_good"},{"type":"literal","value":"system_security_update_warning"},{"type":"literal","value":"system_update"},{"type":"literal","value":"system_update_alt"},{"type":"literal","value":"tab_close"},{"type":"literal","value":"tab_close_inactive"},{"type":"literal","value":"tab_close_right"},{"type":"literal","value":"tab_duplicate"},{"type":"literal","value":"tab_group"},{"type":"literal","value":"tab_inactive"},{"type":"literal","value":"tab_move"},{"type":"literal","value":"tab_new_right"},{"type":"literal","value":"tab_recent"},{"type":"literal","value":"tab_search"},{"type":"literal","value":"tab_unselected"},{"type":"literal","value":"table_bar"},{"type":"literal","value":"table_chart"},{"type":"literal","value":"table_chart_view"},{"type":"literal","value":"table_convert"},{"type":"literal","value":"table_edit"},{"type":"literal","value":"table_eye"},{"type":"literal","value":"table_lamp"},{"type":"literal","value":"table_large"},{"type":"literal","value":"table_restaurant"},{"type":"literal","value":"table_rows"},{"type":"literal","value":"table_rows_narrow"},{"type":"literal","value":"table_sign"},{"type":"literal","value":"table_view"},{"type":"literal","value":"tablet_android"},{"type":"literal","value":"tablet_camera"},{"type":"literal","value":"tablet_mac"},{"type":"literal","value":"tabs"},{"type":"literal","value":"tactic"},{"type":"literal","value":"tag_faces"},{"type":"literal","value":"takeout_dining"},{"type":"literal","value":"takeout_dining_2"},{"type":"literal","value":"tamper_detection_off"},{"type":"literal","value":"tamper_detection_on"},{"type":"literal","value":"tap_and_play"},{"type":"literal","value":"tapas"},{"type":"literal","value":"task"},{"type":"literal","value":"task_alt"},{"type":"literal","value":"tatami_seat"},{"type":"literal","value":"taunt"},{"type":"literal","value":"taxi_alert"},{"type":"literal","value":"team_dashboard"},{"type":"literal","value":"temp_preferences_eco"},{"type":"literal","value":"temple_buddhist"},{"type":"literal","value":"temple_hindu"},{"type":"literal","value":"tenancy"},{"type":"literal","value":"terrain"},{"type":"literal","value":"text_ad"},{"type":"literal","value":"text_compare"},{"type":"literal","value":"text_decrease"},{"type":"literal","value":"text_fields"},{"type":"literal","value":"text_fields_alt"},{"type":"literal","value":"text_format"},{"type":"literal","value":"text_increase"},{"type":"literal","value":"text_rotate_up"},{"type":"literal","value":"text_rotate_vertical"},{"type":"literal","value":"text_rotation_angledown"},{"type":"literal","value":"text_rotation_angleup"},{"type":"literal","value":"text_rotation_down"},{"type":"literal","value":"text_rotation_none"},{"type":"literal","value":"text_select_end"},{"type":"literal","value":"text_select_jump_to_beginning"},{"type":"literal","value":"text_select_jump_to_end"},{"type":"literal","value":"text_select_move_back_character"},{"type":"literal","value":"text_select_move_back_word"},{"type":"literal","value":"text_select_move_down"},{"type":"literal","value":"text_select_move_forward_character"},{"type":"literal","value":"text_select_move_forward_word"},{"type":"literal","value":"text_select_move_up"},{"type":"literal","value":"text_select_start"},{"type":"literal","value":"text_snippet"},{"type":"literal","value":"text_to_speech"},{"type":"literal","value":"text_up"},{"type":"literal","value":"textsms"},{"type":"literal","value":"texture"},{"type":"literal","value":"texture_add"},{"type":"literal","value":"texture_minus"},{"type":"literal","value":"theater_comedy"},{"type":"literal","value":"theaters"},{"type":"literal","value":"thermometer_add"},{"type":"literal","value":"thermometer_gain"},{"type":"literal","value":"thermometer_loss"},{"type":"literal","value":"thermometer_minus"},{"type":"literal","value":"thermostat"},{"type":"literal","value":"thermostat_arrow_down"},{"type":"literal","value":"thermostat_arrow_up"},{"type":"literal","value":"thermostat_auto"},{"type":"literal","value":"thermostat_carbon"},{"type":"literal","value":"things_to_do"},{"type":"literal","value":"thread_unread"},{"type":"literal","value":"threat_intelligence"},{"type":"literal","value":"thumb_down"},{"type":"literal","value":"thumb_down_alt"},{"type":"literal","value":"thumb_down_off_alt"},{"type":"literal","value":"thumb_up"},{"type":"literal","value":"thumb_up_alt"},{"type":"literal","value":"thumb_up_off_alt"},{"type":"literal","value":"thumbnail_bar"},{"type":"literal","value":"thumbs_up_double"},{"type":"literal","value":"thumbs_up_down"},{"type":"literal","value":"thunderstorm"},{"type":"literal","value":"tibia"},{"type":"literal","value":"tibia_alt"},{"type":"literal","value":"tile_large"},{"type":"literal","value":"tile_medium"},{"type":"literal","value":"tile_small"},{"type":"literal","value":"time_auto"},{"type":"literal","value":"time_to_leave"},{"type":"literal","value":"timeline"},{"type":"literal","value":"timer_1"},{"type":"literal","value":"timer_10"},{"type":"literal","value":"timer_10_alt_1"},{"type":"literal","value":"timer_10_select"},{"type":"literal","value":"timer_2"},{"type":"literal","value":"timer_3"},{"type":"literal","value":"timer_3_alt_1"},{"type":"literal","value":"timer_3_select"},{"type":"literal","value":"timer_5"},{"type":"literal","value":"timer_5_shutter"},{"type":"literal","value":"timer_arrow_down"},{"type":"literal","value":"timer_arrow_up"},{"type":"literal","value":"timer_off"},{"type":"literal","value":"timer_pause"},{"type":"literal","value":"timer_play"},{"type":"literal","value":"tips_and_updates"},{"type":"literal","value":"tire_repair"},{"type":"literal","value":"titlecase"},{"type":"literal","value":"toast"},{"type":"literal","value":"toc"},{"type":"literal","value":"today"},{"type":"literal","value":"toggle_off"},{"type":"literal","value":"toggle_on"},{"type":"literal","value":"token"},{"type":"literal","value":"toll"},{"type":"literal","value":"tonality"},{"type":"literal","value":"tonality_2"},{"type":"literal","value":"tools_flat_head"},{"type":"literal","value":"tools_installation_kit"},{"type":"literal","value":"tools_ladder"},{"type":"literal","value":"tools_level"},{"type":"literal","value":"tools_phillips"},{"type":"literal","value":"tools_pliers_wire_stripper"},{"type":"literal","value":"tools_power_drill"},{"type":"literal","value":"tooltip_2"},{"type":"literal","value":"top_panel_close"},{"type":"literal","value":"top_panel_open"},{"type":"literal","value":"topic"},{"type":"literal","value":"total_dissolved_solids"},{"type":"literal","value":"touch_app"},{"type":"literal","value":"touch_double"},{"type":"literal","value":"touch_long"},{"type":"literal","value":"touch_triple"},{"type":"literal","value":"touchpad_mouse"},{"type":"literal","value":"touchpad_mouse_off"},{"type":"literal","value":"tour"},{"type":"literal","value":"toys"},{"type":"literal","value":"toys_and_games"},{"type":"literal","value":"toys_fan"},{"type":"literal","value":"track_changes"},{"type":"literal","value":"trackpad_input"},{"type":"literal","value":"trackpad_input_2"},{"type":"literal","value":"trackpad_input_3"},{"type":"literal","value":"traffic"},{"type":"literal","value":"traffic_jam"},{"type":"literal","value":"trail_length"},{"type":"literal","value":"trail_length_medium"},{"type":"literal","value":"trail_length_short"},{"type":"literal","value":"train"},{"type":"literal","value":"transcribe"},{"type":"literal","value":"transfer_within_a_station"},{"type":"literal","value":"transgender"},{"type":"literal","value":"transit_enterexit"},{"type":"literal","value":"transit_ticket"},{"type":"literal","value":"transition_chop"},{"type":"literal","value":"transition_dissolve"},{"type":"literal","value":"transition_fade"},{"type":"literal","value":"transition_push"},{"type":"literal","value":"transition_slide"},{"type":"literal","value":"translate_indic"},{"type":"literal","value":"transportation"},{"type":"literal","value":"travel"},{"type":"literal","value":"travel_explore"},{"type":"literal","value":"travel_luggage_and_bags"},{"type":"literal","value":"trending_down"},{"type":"literal","value":"trending_flat"},{"type":"literal","value":"trending_up"},{"type":"literal","value":"trip"},{"type":"literal","value":"trip_origin"},{"type":"literal","value":"trolley"},{"type":"literal","value":"trolley_cable_car"},{"type":"literal","value":"troubleshoot"},{"type":"literal","value":"tsunami"},{"type":"literal","value":"tsv"},{"type":"literal","value":"tty"},{"type":"literal","value":"tune"},{"type":"literal","value":"tungsten"},{"type":"literal","value":"turn_left"},{"type":"literal","value":"turn_right"},{"type":"literal","value":"turn_sharp_left"},{"type":"literal","value":"turn_sharp_right"},{"type":"literal","value":"turn_slight_left"},{"type":"literal","value":"turn_slight_right"},{"type":"literal","value":"turned_in"},{"type":"literal","value":"turned_in_not"},{"type":"literal","value":"tv_displays"},{"type":"literal","value":"tv_gen"},{"type":"literal","value":"tv_guide"},{"type":"literal","value":"tv_next"},{"type":"literal","value":"tv_off"},{"type":"literal","value":"tv_options_edit_channels"},{"type":"literal","value":"tv_options_input_settings"},{"type":"literal","value":"tv_remote"},{"type":"literal","value":"tv_signin"},{"type":"literal","value":"tv_with_assistant"},{"type":"literal","value":"two_pager"},{"type":"literal","value":"two_pager_store"},{"type":"literal","value":"two_wheeler"},{"type":"literal","value":"type_specimen"},{"type":"literal","value":"u_turn_left"},{"type":"literal","value":"u_turn_right"},{"type":"literal","value":"udon"},{"type":"literal","value":"ulna_radius"},{"type":"literal","value":"ulna_radius_alt"},{"type":"literal","value":"unarchive"},{"type":"literal","value":"undo"},{"type":"literal","value":"unfold_less"},{"type":"literal","value":"unfold_less_double"},{"type":"literal","value":"unfold_more"},{"type":"literal","value":"unfold_more_double"},{"type":"literal","value":"ungroup"},{"type":"literal","value":"universal_currency"},{"type":"literal","value":"universal_currency_alt"},{"type":"literal","value":"universal_local"},{"type":"literal","value":"unknown_2"},{"type":"literal","value":"unknown_5"},{"type":"literal","value":"unknown_7"},{"type":"literal","value":"unknown_document"},{"type":"literal","value":"unknown_med"},{"type":"literal","value":"unlicense"},{"type":"literal","value":"unpaved_road"},{"type":"literal","value":"unpublished"},{"type":"literal","value":"unsubscribe"},{"type":"literal","value":"upcoming"},{"type":"literal","value":"update_disabled"},{"type":"literal","value":"upgrade"},{"type":"literal","value":"upi_pay"},{"type":"literal","value":"upload"},{"type":"literal","value":"upload_2"},{"type":"literal","value":"upload_file"},{"type":"literal","value":"urology"},{"type":"literal","value":"usb"},{"type":"literal","value":"usb_off"},{"type":"literal","value":"user_attributes"},{"type":"literal","value":"vaccines"},{"type":"literal","value":"vacuum"},{"type":"literal","value":"valve"},{"type":"literal","value":"vape_free"},{"type":"literal","value":"vaping_rooms"},{"type":"literal","value":"variable_add"},{"type":"literal","value":"variable_insert"},{"type":"literal","value":"variable_remove"},{"type":"literal","value":"variables"},{"type":"literal","value":"ventilator"},{"type":"literal","value":"verified"},{"type":"literal","value":"verified_off"},{"type":"literal","value":"verified_user"},{"type":"literal","value":"vertical_align_bottom"},{"type":"literal","value":"vertical_align_center"},{"type":"literal","value":"vertical_align_top"},{"type":"literal","value":"vertical_distribute"},{"type":"literal","value":"vertical_shades"},{"type":"literal","value":"vertical_shades_closed"},{"type":"literal","value":"vertical_split"},{"type":"literal","value":"vibration"},{"type":"literal","value":"video_call"},{"type":"literal","value":"video_camera_back"},{"type":"literal","value":"video_camera_back_add"},{"type":"literal","value":"video_camera_front"},{"type":"literal","value":"video_camera_front_off"},{"type":"literal","value":"video_chat"},{"type":"literal","value":"video_file"},{"type":"literal","value":"video_label"},{"type":"literal","value":"video_library"},{"type":"literal","value":"video_search"},{"type":"literal","value":"video_settings"},{"type":"literal","value":"video_stable"},{"type":"literal","value":"videocam"},{"type":"literal","value":"videocam_alert"},{"type":"literal","value":"videocam_off"},{"type":"literal","value":"videogame_asset"},{"type":"literal","value":"videogame_asset_off"},{"type":"literal","value":"view_agenda"},{"type":"literal","value":"view_apps"},{"type":"literal","value":"view_array"},{"type":"literal","value":"view_carousel"},{"type":"literal","value":"view_column"},{"type":"literal","value":"view_column_2"},{"type":"literal","value":"view_comfy"},{"type":"literal","value":"view_comfy_alt"},{"type":"literal","value":"view_compact"},{"type":"literal","value":"view_compact_alt"},{"type":"literal","value":"view_cozy"},{"type":"literal","value":"view_day"},{"type":"literal","value":"view_headline"},{"type":"literal","value":"view_in_ar"},{"type":"literal","value":"view_in_ar_off"},{"type":"literal","value":"view_kanban"},{"type":"literal","value":"view_list"},{"type":"literal","value":"view_module"},{"type":"literal","value":"view_object_track"},{"type":"literal","value":"view_quilt"},{"type":"literal","value":"view_real_size"},{"type":"literal","value":"view_sidebar"},{"type":"literal","value":"view_stream"},{"type":"literal","value":"view_timeline"},{"type":"literal","value":"view_week"},{"type":"literal","value":"vignette"},{"type":"literal","value":"vignette_2"},{"type":"literal","value":"villa"},{"type":"literal","value":"visibility_lock"},{"type":"literal","value":"visibility_off"},{"type":"literal","value":"vital_signs"},{"type":"literal","value":"vo2_max"},{"type":"literal","value":"voice_chat"},{"type":"literal","value":"voice_over_off"},{"type":"literal","value":"voice_selection"},{"type":"literal","value":"voice_selection_off"},{"type":"literal","value":"voicemail"},{"type":"literal","value":"voicemail_2"},{"type":"literal","value":"volcano"},{"type":"literal","value":"volume_down"},{"type":"literal","value":"volume_down_alt"},{"type":"literal","value":"volume_mute"},{"type":"literal","value":"volume_off"},{"type":"literal","value":"volume_up"},{"type":"literal","value":"volunteer_activism"},{"type":"literal","value":"voting_chip"},{"type":"literal","value":"vpn_key"},{"type":"literal","value":"vpn_key_alert"},{"type":"literal","value":"vpn_key_off"},{"type":"literal","value":"vpn_lock"},{"type":"literal","value":"vpn_lock_2"},{"type":"literal","value":"vr180_create2d"},{"type":"literal","value":"vr180_create2d_off"},{"type":"literal","value":"vrpano"},{"type":"literal","value":"wall_art"},{"type":"literal","value":"wall_lamp"},{"type":"literal","value":"wallet"},{"type":"literal","value":"wallpaper"},{"type":"literal","value":"wallpaper_slideshow"},{"type":"literal","value":"wand_shine"},{"type":"literal","value":"wand_stars"},{"type":"literal","value":"ward"},{"type":"literal","value":"warehouse"},{"type":"literal","value":"warning"},{"type":"literal","value":"warning_amber"},{"type":"literal","value":"warning_off"},{"type":"literal","value":"wash"},{"type":"literal","value":"washoku"},{"type":"literal","value":"watch"},{"type":"literal","value":"watch_arrow"},{"type":"literal","value":"watch_button_press"},{"type":"literal","value":"watch_check"},{"type":"literal","value":"watch_later"},{"type":"literal","value":"watch_off"},{"type":"literal","value":"watch_screentime"},{"type":"literal","value":"watch_vibration"},{"type":"literal","value":"watch_wake"},{"type":"literal","value":"water"},{"type":"literal","value":"water_bottle"},{"type":"literal","value":"water_bottle_large"},{"type":"literal","value":"water_damage"},{"type":"literal","value":"water_do"},{"type":"literal","value":"water_drop"},{"type":"literal","value":"water_ec"},{"type":"literal","value":"water_full"},{"type":"literal","value":"water_heater"},{"type":"literal","value":"water_lock"},{"type":"literal","value":"water_loss"},{"type":"literal","value":"water_lux"},{"type":"literal","value":"water_medium"},{"type":"literal","value":"water_orp"},{"type":"literal","value":"water_ph"},{"type":"literal","value":"water_pump"},{"type":"literal","value":"water_voc"},{"type":"literal","value":"waterfall_chart"},{"type":"literal","value":"waves"},{"type":"literal","value":"waving_hand"},{"type":"literal","value":"wb_auto"},{"type":"literal","value":"wb_cloudy"},{"type":"literal","value":"wb_incandescent"},{"type":"literal","value":"wb_iridescent"},{"type":"literal","value":"wb_shade"},{"type":"literal","value":"wb_sunny"},{"type":"literal","value":"wb_twighlight"},{"type":"literal","value":"wb_twilight"},{"type":"literal","value":"wc"},{"type":"literal","value":"weather_hail"},{"type":"literal","value":"weather_mix"},{"type":"literal","value":"weather_snowy"},{"type":"literal","value":"web_asset"},{"type":"literal","value":"web_asset_off"},{"type":"literal","value":"web_stories"},{"type":"literal","value":"web_traffic"},{"type":"literal","value":"webhook"},{"type":"literal","value":"weekend"},{"type":"literal","value":"weight"},{"type":"literal","value":"west"},{"type":"literal","value":"whatshot"},{"type":"literal","value":"wheelchair_pickup"},{"type":"literal","value":"where_to_vote"},{"type":"literal","value":"widget_medium"},{"type":"literal","value":"widget_small"},{"type":"literal","value":"widget_width"},{"type":"literal","value":"widgets"},{"type":"literal","value":"width_full"},{"type":"literal","value":"width_normal"},{"type":"literal","value":"width_wide"},{"type":"literal","value":"wifi_1_bar"},{"type":"literal","value":"wifi_2_bar"},{"type":"literal","value":"wifi_add"},{"type":"literal","value":"wifi_calling"},{"type":"literal","value":"wifi_calling_1"},{"type":"literal","value":"wifi_calling_2"},{"type":"literal","value":"wifi_calling_3"},{"type":"literal","value":"wifi_calling_bar_1"},{"type":"literal","value":"wifi_calling_bar_2"},{"type":"literal","value":"wifi_calling_bar_3"},{"type":"literal","value":"wifi_channel"},{"type":"literal","value":"wifi_find"},{"type":"literal","value":"wifi_home"},{"type":"literal","value":"wifi_lock"},{"type":"literal","value":"wifi_notification"},{"type":"literal","value":"wifi_off"},{"type":"literal","value":"wifi_password"},{"type":"literal","value":"wifi_protected_setup"},{"type":"literal","value":"wifi_proxy"},{"type":"literal","value":"wifi_tethering"},{"type":"literal","value":"wifi_tethering_error"},{"type":"literal","value":"wifi_tethering_off"},{"type":"literal","value":"wind_power"},{"type":"literal","value":"window_closed"},{"type":"literal","value":"window_open"},{"type":"literal","value":"window_sensor"},{"type":"literal","value":"windshield_defrost_auto"},{"type":"literal","value":"windshield_defrost_front"},{"type":"literal","value":"windshield_defrost_rear"},{"type":"literal","value":"windshield_heat_front"},{"type":"literal","value":"wine_bar"},{"type":"literal","value":"woman"},{"type":"literal","value":"woman_2"},{"type":"literal","value":"work"},{"type":"literal","value":"work_alert"},{"type":"literal","value":"work_history"},{"type":"literal","value":"work_off"},{"type":"literal","value":"work_outline"},{"type":"literal","value":"work_update"},{"type":"literal","value":"workspace_premium"},{"type":"literal","value":"workspaces"},{"type":"literal","value":"workspaces_filled"},{"type":"literal","value":"workspaces_outline"},{"type":"literal","value":"wounds_injuries"},{"type":"literal","value":"wrap_text"},{"type":"literal","value":"wrist"},{"type":"literal","value":"wrong_location"},{"type":"literal","value":"wysiwyg"},{"type":"literal","value":"yakitori"},{"type":"literal","value":"yard"},{"type":"literal","value":"yoshoku"},{"type":"literal","value":"your_trips"},{"type":"literal","value":"youtube_activity"},{"type":"literal","value":"youtube_searched_for"},{"type":"literal","value":"zone_person_alert"},{"type":"literal","value":"zone_person_idle"},{"type":"literal","value":"zone_person_urgent"},{"type":"literal","value":"zoom_in"},{"type":"literal","value":"zoom_in_map"},{"type":"literal","value":"zoom_out"},{"type":"literal","value":"zoom_out_map"}]}}]}}]}}]},{"name":"NativeTabsBottomAccessoryProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]},{"name":"NativeTabsProps","variant":"declaration","kind":256,"children":[{"name":"backBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The behavior when navigating back with the back button."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"none"},{"type":"literal","value":"history"},{"type":"literal","value":"initialRoute"}]}},{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The background color of the tab bar.\n\nOn iOS 26 and later, the system draws the tab bar background and this prop has no effect."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"badgeBackgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The background color of every badge in the tab bar."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"badgeTextColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the badge text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"blurEffect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The blur effect applied to the tab bar.\n\nOn iOS 26 and later, the tab bar background is drawn by the system and this prop has no effect."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"light"},{"type":"literal","value":"dark"},{"type":"literal","value":"none"},{"type":"literal","value":"regular"},{"type":"literal","value":"extraLight"},{"type":"literal","value":"prominent"},{"type":"literal","value":"systemUltraThinMaterial"},{"type":"literal","value":"systemThinMaterial"},{"type":"literal","value":"systemMaterial"},{"type":"literal","value":"systemThickMaterial"},{"type":"literal","value":"systemChromeMaterial"},{"type":"literal","value":"systemUltraThinMaterialLight"},{"type":"literal","value":"systemThinMaterialLight"},{"type":"literal","value":"systemMaterialLight"},{"type":"literal","value":"systemThickMaterialLight"},{"type":"literal","value":"systemChromeMaterialLight"},{"type":"literal","value":"systemUltraThinMaterialDark"},{"type":"literal","value":"systemThinMaterialDark"},{"type":"literal","value":"systemMaterialDark"},{"type":"literal","value":"systemThickMaterialDark"},{"type":"literal","value":"systemChromeMaterialDark"},{"type":"literal","value":"systemDefault"}]}},{"name":"disableIndicator","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Disables the active indicator for the tab bar."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disableTransparentOnScrollEdge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the tab bar will not become transparent when scrolled to the edge.\n\nOn iOS 26 and later, the tab bar background is drawn by the system and this prop has no effect."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", hides the tab bar."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"iconColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of every tab icon in the tab bar."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"unknown","name":"ColorValue | undefined"}},{"name":"selected","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"unknown","name":"ColorValue | undefined"}}]}}]}},{"name":"indicatorColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the tab indicator."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"web"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"labelStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The style of the every tab label in the tab bar."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","name":"NativeTabsLabelStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","name":"NativeTabsLabelStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}},{"name":"selected","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","name":"NativeTabsLabelStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}}]}}]}},{"name":"labelVisibilityMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The visibility mode of the tab item label."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"auto"},{"type":"literal","value":"selected"},{"type":"literal","value":"labeled"},{"type":"literal","value":"unlabeled"}]}},{"name":"minimizeBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Specifies the minimize behavior for the tab bar.\n\nAvailable starting from iOS 26.\n\nThe following values are currently supported:\n\n- "},{"kind":"code","text":"`automatic`"},{"kind":"text","text":" - resolves to the system default minimize behavior\n- "},{"kind":"code","text":"`never`"},{"kind":"text","text":" - the tab bar does not minimize\n- "},{"kind":"code","text":"`onScrollDown`"},{"kind":"text","text":" - the tab bar minimizes when scrolling down and\n expands when scrolling back up\n- "},{"kind":"code","text":"`onScrollUp`"},{"kind":"text","text":" - the tab bar minimizes when scrolling up and expands\n when scrolling back down"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"The supported values correspond to the official [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbarcontroller/minimizebehavior)."}]},{"tag":"@default","content":[{"kind":"text","text":"automatic"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"never"},{"type":"literal","value":"automatic"},{"type":"literal","value":"onScrollDown"},{"type":"literal","value":"onScrollUp"}]}},{"name":"rippleColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the ripple effect when the tab is pressed."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"screenListeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Listeners for navigation events on all tabs.\n\nSupported events:\n- "},{"kind":"code","text":"`tabPress`"},{"kind":"text","text":" - called when a tab is pressed\n- "},{"kind":"code","text":"`focus`"},{"kind":"text","text":" - called when the screen comes into focus\n- "},{"kind":"code","text":"`blur`"},{"kind":"text","text":" - called when the screen loses focus"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n {\n console.log('Any tab pressed');\n },\n }}\n>\n ...\n\n```"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"blur","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"blur"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"focus","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"focus"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"removed","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Emitted after the route is removed and its component unmounts. The listener cannot rely on\ncomponent state or update the unmounted component. Since effect cleanup runs before this event,\nit must defer unsubscription until the next microtask."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nReact.useEffect(() => {\n const unsubscribe = navigation.addListener('removed', (event) => {\n logRemovedRoute(event.data.action);\n });\n\n return () => queueMicrotask(unsubscribe);\n}, [navigation]);\n```"}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"removed"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"removePrevented","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"removePrevented"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"state"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"tabPress","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"tabPress"},{"type":"literal","value":false}],"name":"EventListenerCallback","package":"expo-router"}}]}}],"name":"Partial","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMap"},"name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"shadowColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the shadow.\n\nOn iOS 26 and later, the tab bar background is drawn by the system and this prop has no effect."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uibarappearance/shadowcolor)"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"sidebarAdaptable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", enables the sidebarAdaptable tab bar style on iPadOS and macOS. This prop has no effect on iPhone."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS 18+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"tabBarRespectsIMEInsets","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the tab bar lifts above the keyboard (input method editor, or IME) instead of being overlaid by it. By default, the keyboard overlays the tab bar.\n\nRequires "},{"kind":"code","text":"`windowSoftInputMode=\"adjustResize\"`"},{"kind":"text","text":". Has no effect on Android API levels earlier than 30 (Android 11)."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The tint color of the tab icon.\n\nCan be overridden by icon color and label color for each tab individually."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"titlePositionAdjustment","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uitabbaritem/titlepositionadjustment)"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"horizontal","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}},{"name":"vertical","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}}]}}},{"name":"unstable_nativeProps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Props passed to the underlying native tab host implementation in "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":".\nUse this to configure props that are not directly exposed by Expo Router.\n\n> **Note**: This is an unstable API and may change or be removed in minor versions."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/tabs/host/TabsHost.types.ts","qualifiedName":"TabsHostProps"},"name":"TabsHostProps","package":"react-native-screens"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"navStateRequest"},{"type":"literal","value":"onTabSelected"}]}],"name":"Omit","package":"typescript"}],"name":"Partial","package":"typescript"}},{"name":"unstable_screenErrorBoundary","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A component to render when an individual tab screen throws an error."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Try.tsx","qualifiedName":"ErrorBoundaryProps"},"name":"ErrorBoundaryProps","package":"expo-router"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}]},{"name":"NativeTabsTriggerBadgeProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The text to display as the badge for the tab.\nIf not provided, the badge will not be displayed."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the badge will be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"selectedBackgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"NativeTabsTriggerLabelProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The text to display as the label for the tab."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the label will be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"selectedStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","name":"NativeTabsLabelStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}}]},{"name":"NativeTabTriggerProps","variant":"declaration","kind":256,"children":[{"name":"accessibilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The accessibility label of the tab bar item, announced by screen readers.\nDefaults to the visible tab label.\n\nOn Android, maps to the item's "},{"kind":"code","text":"`contentDescription`"},{"kind":"text","text":" and requires API 26 or above."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The children of the trigger.\n\nUse "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":", "},{"kind":"code","text":"`Label`"},{"kind":"text","text":", and "},{"kind":"code","text":"`Badge`"},{"kind":"text","text":" components to customize the tab."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"contentStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The style applied to the content of the tab\n\nNote: Only certain style properties are supported."}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"},{"type":"union","types":[{"type":"literal","value":"backgroundColor"},{"type":"literal","value":"experimental_backgroundImage"},{"type":"literal","value":"alignContent"},{"type":"literal","value":"alignItems"},{"type":"literal","value":"flexDirection"},{"type":"literal","value":"gap"},{"type":"literal","value":"justifyContent"},{"type":"literal","value":"padding"},{"type":"literal","value":"paddingBottom"},{"type":"literal","value":"paddingEnd"},{"type":"literal","value":"paddingHorizontal"},{"type":"literal","value":"paddingLeft"},{"type":"literal","value":"paddingRight"},{"type":"literal","value":"paddingStart"},{"type":"literal","value":"paddingTop"},{"type":"literal","value":"paddingVertical"},{"type":"literal","value":"paddingBlock"},{"type":"literal","value":"paddingBlockEnd"},{"type":"literal","value":"paddingBlockStart"},{"type":"literal","value":"paddingInline"},{"type":"literal","value":"paddingInlineEnd"},{"type":"literal","value":"paddingInlineStart"}]}],"name":"Pick","package":"typescript"}},{"name":"disableAutomaticContentInsets","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The default behavior differs between iOS and Android.\n\nOn **Android**, the content of a native tabs screen is automatically wrapped in a "},{"kind":"code","text":"`SafeAreaView`"},{"kind":"text","text":",\nand the **bottom** inset is applied. Other insets must be handled manually.\n\nOn **iOS**, the first scroll view nested inside a native tabs screen has\n[automatic content inset adjustment](https://reactnative.dev/docs/scrollview#contentinsetadjustmentbehavior-ios) enabled\n\nWhen this property is set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", automatic content inset adjustment is disabled for the screen\nand must be managed manually. You can use "},{"kind":"code","text":"`SafeAreaView`"},{"kind":"text","text":" from "},{"kind":"code","text":"`react-native-screens/experimental`"},{"kind":"text","text":"\nto handle safe area insets."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the tab is shown but cannot be selected by tapping it in the\ntab bar.\n\n> **Note:** This only suppresses the native tap interaction. JavaScript\n> navigation such as "},{"kind":"code","text":"`router.push()`"},{"kind":"text","text":" or "},{"kind":"code","text":"``"},{"kind":"text","text":" still navigates to\n> the tab. Use this for tabs that should appear visible but be temporarily inert,\n> and gate navigation in your own code if you need to fully prevent access.\n\nUnlike "},{"kind":"code","text":"`hidden`"},{"kind":"text","text":", the tab remains visible in the tab bar."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disableIndicator","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", disables the active indicator for this tab.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disablePopToTop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the tab will not pop stack to the root when selected again."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disableScrollToTop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the tab will not scroll to the top when selected again."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disableTransparentOnScrollEdge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the tab bar will not become transparent when scrolled to the edge.\n\nOn iOS 26 and later, the tab bar background is drawn by the system and this prop has no effect.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If true, the tab will be hidden from the tab bar.\n\n> **Note**: Marking a tab as "},{"kind":"code","text":"`hidden`"},{"kind":"text","text":" means it cannot be navigated to in any way.\n\n> **Note**: Dynamically hiding tabs will remount the navigator and the state will be reset."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"indicatorColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the active indicator for this tab.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"labelVisibilityMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The visibility mode of the tab item label for this tab.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"auto"},{"type":"literal","value":"selected"},{"type":"literal","value":"labeled"},{"type":"literal","value":"unlabeled"}]}},{"name":"listeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Listeners for navigation events on this tab.\n\nSupported events:\n- "},{"kind":"code","text":"`tabPress`"},{"kind":"text","text":" - called when this tab is pressed\n- "},{"kind":"code","text":"`focus`"},{"kind":"text","text":" - called when this screen comes into focus\n- "},{"kind":"code","text":"`blur`"},{"kind":"text","text":" - called when this screen loses focus"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n {\n console.log('Home tab pressed');\n },\n }}\n/>\n```"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"blur","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"blur"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"focus","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"focus"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"removed","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Emitted after the route is removed and its component unmounts. The listener cannot rely on\ncomponent state or update the unmounted component. Since effect cleanup runs before this event,\nit must defer unsubscription until the next microtask."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nReact.useEffect(() => {\n const unsubscribe = navigation.addListener('removed', (event) => {\n logRemovedRoute(event.data.action);\n });\n\n return () => queueMicrotask(unsubscribe);\n}, [navigation]);\n```"}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"removed"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"removePrevented","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"removePrevented"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"state"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"tabPress","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"NativeTabNavigationEventMap"},"name":"NativeTabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"tabPress"},{"type":"literal","value":false}],"name":"EventListenerCallback","package":"expo-router"}}]}}],"name":"Partial","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"TState"},"name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"TEventMap"},"name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"name","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the route.\n\nThis is required when used inside a Layout component.\n\nWhen used in a route it has no effect."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"rippleColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the ripple effect when this tab is selected - will be visible when other tabs are pressed.\n\nWhen set on a trigger, it takes precedence over the value set on "},{"kind":"code","text":"`NativeTabs`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"role","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"System-provided tab bar item with predefined icon and title\n\nUses Apple's built-in tab bar items (e.g., bookmarks, contacts, downloads) with\nstandard iOS styling and localized titles. Custom "},{"kind":"code","text":"`icon`"},{"kind":"text","text":" or "},{"kind":"code","text":"`selectedIcon`"},{"kind":"text","text":"\nproperties will override the system icon, but the system-defined title cannot\nbe customized."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"The supported values correspond to the official [Apple documentation](https://developer.apple.com/documentation/uikit/uitabbaritem/systemitem)."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"search"},{"type":"literal","value":"history"},{"type":"literal","value":"bookmarks"},{"type":"literal","value":"contacts"},{"type":"literal","value":"more"},{"type":"literal","value":"downloads"},{"type":"literal","value":"favorites"},{"type":"literal","value":"featured"},{"type":"literal","value":"mostRecent"},{"type":"literal","value":"mostViewed"},{"type":"literal","value":"recents"},{"type":"literal","value":"topRated"}]}},{"name":"testID","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A test identifier for the tab bar item.\n\nOn iOS it maps to the item's accessibility identifier, which XCUITest and Maestro match.\nOn Android it maps to the item's view tag, which Espresso-based drivers like Detox read\nbut Maestro and Appium do not. Use "},{"kind":"code","text":"`accessibilityLabel`"},{"kind":"text","text":" to match the tab by id there."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"unstable_nativeProps","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Props passed to the underlying native tab screen implementation.\nUse this to configure props not directly exposed by Expo Router, but available in "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":".\n\n> **Note**: This will override any other props set by Expo Router and may lead to unexpected behavior.\n\n> **Note**: This is an unstable API and may change or be removed in minor versions."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/tabs/screen/TabsScreen.types.ts","qualifiedName":"TabsScreenProps"},"name":"TabsScreenProps","package":"react-native-screens"},{"type":"literal","value":"screenKey"}],"name":"Omit","package":"typescript"}],"name":"Partial","package":"typescript"}}]},{"name":"SFSymbolIcon","variant":"declaration","kind":256,"children":[{"name":"sf","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the SF Symbol to use as an icon.\n\nThe value can be provided in two ways:\n- As a string with the SF Symbol name\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"unknown","name":"SFSymbols7_0 | undefined"}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}}]}}]}}]},{"name":"SrcIcon","variant":"declaration","kind":256,"children":[{"name":"renderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how the image icon is rendered on iOS.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": iOS applies tint color to the icon (selected/unselected states)\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": Preserves original icon colors\n\n**Default behavior:**\n- If tab bar icon color is configured, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no icon color is set, defaults to "},{"kind":"code","text":"`'original'`"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","name":"IconRenderingMode","package":"expo-router"}},{"name":"src","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The image source to use as an icon.\n\nWhen "},{"kind":"code","text":"`sf`"},{"kind":"text","text":" prop is used it will override this prop on iOS.\n\nWhen "},{"kind":"code","text":"`drawable`"},{"kind":"text","text":" or "},{"kind":"code","text":"`material`"},{"kind":"text","text":" prop is used it will override this prop on Android.\n\nThe value can be provided in two ways:\n- As an image source\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"Android"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"typeArguments":[{"type":"intrinsic","name":"unknown"},{"type":"unknown","name":"string | JSXElementConstructor"}],"name":"ReactElement","package":"@types/react","qualifiedName":"React.ReactElement"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"unknown","name":"ImageSourcePropType | ReactElement> | undefined"}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"unknown","name":"ImageSourcePropType | ReactElement>"}}]}}]}}]},{"name":"XcassetIcon","variant":"declaration","kind":256,"children":[{"name":"xcasset","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the iOS asset catalog image to use as an icon.\n\nXcassets provide automatic multi-resolution (@1x/@2x/@3x), dark mode variants,\nand device-specific images via "},{"kind":"code","text":"`[UIImage imageNamed:]`"},{"kind":"text","text":".\n\nThe rendering mode (template vs original) can be controlled via the "},{"kind":"code","text":"`renderingMode`"},{"kind":"text","text":" prop\non the "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" component. By default, icons are tinted when "},{"kind":"code","text":"`iconColor`"},{"kind":"text","text":" is set, and\nrendered as original otherwise.\n\nThe value can be provided in two ways:\n- As a string with the asset catalog image name\n- As an object specifying the default and selected states"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"default","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"selected","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}}]},{"name":"IconRenderingMode","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"How an image-based icon is tinted on iOS: "},{"kind":"code","text":"`template`"},{"kind":"text","text":" lets the tab bar recolor the icon,\n"},{"kind":"code","text":"`original`"},{"kind":"text","text":" keeps the image's own colors. SF Symbols are always tinted by the system."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"NativeTabsBlurEffect","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiblureffect/style)"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"SUPPORTED_BLUR_EFFECTS"},"name":"SUPPORTED_BLUR_EFFECTS","package":"expo-router","preferValues":true}}}},{"name":"NativeTabsHostNativeProps","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Props passed to the underlying tab host implementation in "},{"kind":"code","text":"`react-native-screens`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/tabs/host/TabsHost.types.ts","qualifiedName":"TabsHostProps"},"name":"TabsHostProps","package":"react-native-screens"},{"type":"union","types":[{"type":"literal","value":"navStateRequest"},{"type":"literal","value":"onTabSelected"},{"type":"literal","value":"children"}]}],"name":"Omit","package":"typescript"}],"name":"Partial","package":"typescript"}},{"name":"NativeTabsLabelStyle","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"},{"type":"union","types":[{"type":"literal","value":"fontFamily"},{"type":"literal","value":"fontSize"},{"type":"literal","value":"fontStyle"},{"type":"literal","value":"fontWeight"},{"type":"literal","value":"color"}]}],"name":"Pick","package":"typescript"}},{"name":"NativeTabsTabBarItemLabelVisibilityMode","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Material Components documentation](https://github.com/material-components/material-components-android/blob/master/docs/components/BottomNavigation.md#making-navigation-bar-accessible)"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES"},"name":"SUPPORTED_TAB_BAR_ITEM_LABEL_VISIBILITY_MODES","package":"expo-router","preferValues":true}}}},{"name":"NativeTabsTabBarItemRole","variant":"declaration","kind":2097152,"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"SUPPORTED_TAB_BAR_ITEM_ROLES"},"name":"SUPPORTED_TAB_BAR_ITEM_ROLES","package":"expo-router","preferValues":true}}}},{"name":"NativeTabsTabBarMinimizeBehavior","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uitabbarcontroller/minimizebehavior)"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26"}]}]},"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/native-tabs/types.ts","qualifiedName":"SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS"},"name":"SUPPORTED_TAB_BAR_MINIMIZE_BEHAVIORS","package":"expo-router","preferValues":true}}}},{"name":"NativeTabsTriggerIconProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"selectedColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]}},{"type":"union","types":[{"type":"intersection","types":[{"type":"reference","name":"SFSymbolIcon","package":"expo-router"},{"type":"reference","name":"DrawableIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"SFSymbolIcon","package":"expo-router"},{"type":"reference","name":"MaterialIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"SFSymbolIcon","package":"expo-router"},{"type":"reference","name":"SrcIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"XcassetIcon","package":"expo-router"},{"type":"reference","name":"DrawableIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"XcassetIcon","package":"expo-router"},{"type":"reference","name":"MaterialIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"XcassetIcon","package":"expo-router"},{"type":"reference","name":"SrcIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"MaterialIcon","package":"expo-router"},{"type":"reference","name":"SrcIcon","package":"expo-router"}]},{"type":"intersection","types":[{"type":"reference","name":"DrawableIcon","package":"expo-router"},{"type":"reference","name":"SrcIcon","package":"expo-router"}]},{"type":"reference","name":"SrcIcon","package":"expo-router"}]}]}},{"name":"SymbolOrImageSource","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"drawable","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the drawable resource to use as an icon."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"sf","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the SF Symbol to use as an icon."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbol"},"name":"SFSymbol","package":"sf-symbols-typescript"}},{"name":"xcasset","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The name of the iOS asset catalog image to use as an icon."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS"}]}]},"type":{"type":"intrinsic","name":"string"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"renderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how the icon is rendered on iOS."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]},{"tag":"@default","content":[{"kind":"text","text":"'template'"}]}]},"type":{"type":"reference","name":"IconRenderingMode","package":"expo-router"}},{"name":"src","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The image source to use as an icon."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Promise"},"typeArguments":[{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"literal","value":null}]}],"name":"Promise","package":"typescript"}]}}]}}]}},{"name":"NativeTabs","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"The component used to create native tabs layout."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/_layout.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function Layout() {\n return (\n \n \n \n \n );\n}\n```"}]}]},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeTabsProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"BottomAccessory","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsBottomAccessoryProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"usePlacement","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"A hook which returns the bottom accessory environment for given component.\n\nNote, that there can be two copies of the same component rendered for different environments.\nThe hook will ensure that component with correct environment is displayed.\n\nBecause two instances of the component will exist simultaneously, **any state kept\ninside the component will not be shared between the regular and inline versions**.\nIf your accessory needs synchronized or persistent state you must store that state\noutside of bottom accessory component (e.g. passing via props or using context).\n\nDon't pass the environment obtained using this hook up the tree."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\n// This component will have two copies rendered, one for `inline` and one for `regular` environment\nfunction AccessoryContent(props) {\n const placement = NativeTabs.BottomAccessory.usePlacement();\n if (placement === 'inline') {\n return ;\n }\n return ;\n}\n\nexport default function Layout(){\n const [isPlaying, setIsPlaying] = useState(false);\n return (\n \n \n \n \n \n \n );\n}\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"union","types":[{"type":"literal","value":"regular"},{"type":"literal","value":"inline"}]}}]}}}]}}]}},{"name":"Trigger","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"The component used to customize the native tab options both in the _layout file and from the tab screen.\n\nWhen used in the _layout file, you need to provide a "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop.\nWhen used in the tab screen, the "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop takes no effect."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/_layout.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function Layout() {\n return (\n \n \n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx app/home.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function HomeScreen() {\n return (\n \n \n Home\n \n This is home screen!\n \n );\n}\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeTabTriggerProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Badge","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerBadgeProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerBadge"},{"name":"Icon","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerIconProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerIcon"},{"name":"Label","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerLabelProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerLabel"},{"name":"VectorIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Helper component for loading vector icons.\n\nPrefer using the "},{"kind":"code","text":"`md`"},{"kind":"text","text":" and "},{"kind":"code","text":"`sf`"},{"kind":"text","text":" props on "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" rather than using this component directly.\nOnly use this component when you need to load a specific icon from a vector icon family."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Icon, VectorIcon } from 'expo-router';\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\n\n} />\n```"}]}]},"typeParameters":[{"name":"NameT","variant":"typeParam","kind":131072,"flags":{"isConst":true},"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/primitives/types.ts","qualifiedName":"VectorIconProps"},"typeArguments":[{"type":"reference","name":"NameT","package":"expo-router","refersToTypeParameter":true}],"name":"VectorIconProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"NativeTabsTriggerVectorIcon"}]}}]},"defaultValue":"NativeTabTrigger"}]}}]},"defaultValue":"..."},{"name":"NativeTabTrigger","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"The component used to customize the native tab options both in the _layout file and from the tab screen.\n\nWhen used in the _layout file, you need to provide a "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop.\nWhen used in the tab screen, the "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop takes no effect."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx app/_layout.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function Layout() {\n return (\n \n \n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx app/home.tsx\nimport { NativeTabs } from 'expo-router/unstable-native-tabs';\n\nexport default function HomeScreen() {\n return (\n \n \n Home\n \n This is home screen!\n \n );\n}\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"NativeTabTriggerProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Badge","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerBadgeProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerBadge"},{"name":"Icon","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerIconProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerIcon"},{"name":"Label","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"NativeTabsTriggerLabelProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"},"defaultValue":"NativeTabsTriggerLabel"},{"name":"VectorIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Helper component for loading vector icons.\n\nPrefer using the "},{"kind":"code","text":"`md`"},{"kind":"text","text":" and "},{"kind":"code","text":"`sf`"},{"kind":"text","text":" props on "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" rather than using this component directly.\nOnly use this component when you need to load a specific icon from a vector icon family."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Icon, VectorIcon } from 'expo-router';\nimport MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons';\n\n} />\n```"}]}]},"typeParameters":[{"name":"NameT","variant":"typeParam","kind":131072,"flags":{"isConst":true},"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/primitives/types.ts","qualifiedName":"VectorIconProps"},"typeArguments":[{"type":"reference","name":"NameT","package":"expo-router","refersToTypeParameter":true}],"name":"VectorIconProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"NativeTabsTriggerVectorIcon"}]}}]},"defaultValue":"..."}],"packageName":"expo-router"}
\ No newline at end of file
diff --git a/docs/public/static/data/unversioned/expo-router/stack.json b/docs/public/static/data/unversioned/expo-router/stack.json
index baac70b807f790..0d594210e25cc7 100644
--- a/docs/public/static/data/unversioned/expo-router/stack.json
+++ b/docs/public/static/data/unversioned/expo-router/stack.json
@@ -1 +1 @@
-{"schemaVersion":"2.0","name":"expo-router/stack","variant":"project","kind":1,"children":[{"name":"StackHeaderItemSharedProps","variant":"declaration","kind":256,"children":[{"name":"accessibilityHint","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"accessibilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}]}},{"name":"iconRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": preserves original icon colors (useful for multi-color icons)\n\n**Default behavior on iOS:**\n- If "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" is specified, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":", defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\n**On Android:** defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":". The icon is always rendered through\nCompose's "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" and tinted unless "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":" is set explicitly.\n\nThis prop only affects image-based icons (not SF Symbols)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/utils/font.ts","qualifiedName":"BasicTextStyle"},"name":"BasicTextStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"variant","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'plain'"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"done"},{"type":"literal","value":"plain"},{"type":"literal","value":"prominent"}]}}]},{"name":"StackHeaderProps","variant":"declaration","kind":256,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When "},{"kind":"code","text":"`true`"},{"kind":"text","text":", renders children as a custom header component, replacing the default header entirely.\nUse this to implement fully custom header layouts."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"blurEffect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The blur effect to apply to the header background on iOS.\nCommon values include 'regular', 'prominent', 'systemMaterial', etc."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"BlurEffect"},"name":"BlurEffect","package":"react-native-screens"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Child elements for custom header when "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":" is true."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the header completely. When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the header will not be rendered."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"largeStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style properties for the large title header (iOS).\n- "},{"kind":"code","text":"`backgroundColor`"},{"kind":"text","text":": Background color of the large title header\n- "},{"kind":"code","text":"`shadowColor`"},{"kind":"text","text":": Set to 'transparent' to hide the large title shadow/border"}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"shadowColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"literal","value":"transparent"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style properties for the standard-sized header.\n- "},{"kind":"code","text":"`color`"},{"kind":"text","text":": Tint color for header elements (similar to tintColor in React Navigation)\n- "},{"kind":"code","text":"`backgroundColor`"},{"kind":"text","text":": Background color of the header\n- "},{"kind":"code","text":"`shadowColor`"},{"kind":"text","text":": Set to 'transparent' to hide the header shadow/border"}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"shadowColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"literal","value":"transparent"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"transparent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the header should be transparent.\nWhen "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the header is absolutely positioned and content scrolls underneath.\n\nAuto-enabled when:\n- "},{"kind":"code","text":"`style.backgroundColor`"},{"kind":"text","text":" is 'transparent'\n- "},{"kind":"code","text":"`blurEffect`"},{"kind":"text","text":" is set (required for blur to work)"}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackScreenBackButtonProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title to display for the back button."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"displayMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The display mode for the back button."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"BackButtonDisplayMode"},"name":"BackButtonDisplayMode","package":"react-native-screens"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the back button."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"src","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom image source for the back button."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style for the back button title."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"withMenu","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to show a context menu when long pressing the back button."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackScreenProps","variant":"declaration","kind":256,"children":[{"name":"dangerouslySingular","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When enabled, the navigator will reuse an existing screen instead of pushing a new one.\n\nOnly supported when used inside a Layout component."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"SingularOptions"},"name":"SingularOptions","package":"expo-router"}},{"name":"getId","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function to determine a unique ID for the screen."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`dangerouslySingular`"},{"kind":"text","text":" instead.\n\nOnly supported when used inside a Layout component."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}}]}}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]}}},{"name":"initialParams","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Initial params to pass to the route.\n\nOnly supported when used inside a Layout component."}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}},{"name":"listeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Listeners for navigation events.\n\nOnly supported when used inside a Layout component."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"beforeRemove","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"beforeRemove"},{"type":"literal","value":true}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"blur","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"blur"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"focus","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"focus"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"gestureCancel","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a swipe back is canceled on iOS."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"gestureCancel"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"sheetDetentChange","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when screen is in sheet presentation & it's detent changes.\n\nIn payload it carries two fields:\n\n* "},{"kind":"code","text":"`index`"},{"kind":"text","text":" - current detent index in the "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array,\n* "},{"kind":"code","text":"`stable`"},{"kind":"text","text":" - on Android "},{"kind":"code","text":"`false`"},{"kind":"text","text":" value means that the user is dragging the sheet or it is settling; on iOS it is always "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"sheetDetentChange"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"state"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"transitionEnd","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation ends."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"transitionEnd"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"transitionStart","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation starts."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"transitionStart"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}}]}}],"name":"Partial","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"TState"},"name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"TEventMap"},"name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"name","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Name is required when used inside a Layout component."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"options","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Options to configure the screen.\n\nAccepts an object or a function returning an object.\nThe function form "},{"kind":"code","text":"`options={({ route }) => ({})}`"},{"kind":"text","text":" is only supported when used inside a Layout component.\nWhen used inside a page component, pass an options object directly."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"}}]}}]}},{"name":"redirect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Redirect to the nearest sibling route.\nIf all children are "},{"kind":"code","text":"`redirect={true}`"},{"kind":"text","text":", the layout will render "},{"kind":"code","text":"`null`"},{"kind":"text","text":" as there are no children to render.\n\nOnly supported when used inside a Layout component."}]},"type":{"type":"intrinsic","name":"boolean"}}],"extendedTypes":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}]},{"name":"StackSearchBarProps","variant":"declaration","kind":256,"extendedTypes":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"SearchBarProps"},"name":"SearchBarProps","package":"react-native-screens"}]},{"name":"StackToolbarBadgeProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The text to display as the badge"}]},"type":{"type":"intrinsic","name":"string"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"},{"type":"union","types":[{"type":"literal","value":"fontFamily"},{"type":"literal","value":"fontWeight"},{"type":"literal","value":"color"},{"type":"literal","value":"backgroundColor"},{"type":"literal","value":"fontSize"}]}],"name":"Pick","package":"typescript"}],"name":"StyleProp","package":"react-native"}}]},{"name":"StackToolbarButtonProps","variant":"declaration","kind":256,"children":[{"name":"accessibilityHint","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"accessibilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Accessibility label spoken by screen readers (TalkBack/VoiceOver)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Android — Compose accessibility for graphic elements](https://developer.android.com/develop/ui/compose/accessibility/api-defaults#graphic-elements) and [Apple — Supporting VoiceOver in your app](https://developer.apple.com/documentation/uikit/supporting-voiceover-in-your-app#Update-your-apps-accessibility) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"There are two ways to specify the content of the button:"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n As text passed as children\n \n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n \n As components\n 3\n \n \n \n >\n );\n}\n```"},{"kind":"text","text":"\n\n> **Note**: When icon is used, the label will not be shown and will be used for accessibility purposes only. Badge is only supported in left/right placements, not in bottom (iOS toolbar limitation)."}]}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the button should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the shared background."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon to display in the button.\n\nOn Android, only image source is supported.\n\nOn iOS, it can be a string representing an SFSymbol, an image source or xcasset.\n\n> **Note**: When used in "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" on iOS, only string SFSymbols are supported. Use the "},{"kind":"code","text":"`image`"},{"kind":"text","text":" prop to provide custom images."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}]}},{"name":"iconRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": preserves original icon colors (useful for multi-color icons)\n\n**Default behavior on iOS:**\n- If "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" is specified, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":", defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\n**On Android:** defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":".\n\nThis prop only affects image-based icons (not SF Symbols)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Image to display in the button.\n\n> **Note**: This prop is only supported in toolbar with "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"onPress","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"selected","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the button is in a selected state"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/isselected) for more information"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to separate the background of this item from other header items."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style for the label of the header item."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The tint color to apply to the button item."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":" - "},{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/tintcolor) for more information."},{"kind":"text","text":"\n"},{"kind":"text","text":" - "},{"kind":"text","text":"[Android documentation](https://developer.android.com/develop/ui/compose/graphics/images/customize#tint-image) for more information."},{"kind":"text","text":"\n"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"variant","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'plain'"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"done"},{"type":"literal","value":"plain"},{"type":"literal","value":"prominent"}]}}]},{"name":"StackToolbarLabelProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The text to display as the label for the tab."}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"StackToolbarMenuActionProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Can be an Icon, Label or string title."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as destructive."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be disabled and not selectable."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/disabled) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"discoverabilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An elaborated title that explains the purpose of the action."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon for the menu action.\n\nCan be an SF Symbol name or an image source.\n\n> **Note (Android)**: Only "},{"kind":"code","text":"`ImageSourcePropType`"},{"kind":"text","text":" icons are rendered. SF Symbols are\n> silently dropped. Provide a "},{"kind":"code","text":"`require()`"},{"kind":"text","text":" or "},{"kind":"code","text":"`{ uri }`"},{"kind":"text","text":" source."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}]}},{"name":"iconRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered on iOS.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": iOS applies tint color to the icon (useful for monochrome icons)\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": Preserves original icon colors (useful for multi-color icons)\n\n**Default behavior:**\n- If "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" is specified, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":", defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\nThis prop only affects image-based icons (not SF Symbols)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Image to display for the menu action.\n\n> **Note**: This prop is only supported in "},{"kind":"code","text":"`Stack.Toolbar.Bottom`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"isOn","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as selected."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"onPress","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"subtitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An optional subtitle for the menu item."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/subtitle) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"unstable_keepPresented","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be kept presented after the action is selected.\n\nThis is marked as unstable, because when action is selected on iOS it will recreate\nthe menu, which will close all opened submenus and reset the scroll position."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/keepsmenupresented) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackToolbarMenuProps","variant":"declaration","kind":256,"children":[{"name":"accessibilityHint","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"accessibilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Accessibility label spoken by screen readers (TalkBack/VoiceOver)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Android — Compose accessibility for graphic elements](https://developer.android.com/develop/ui/compose/accessibility/api-defaults#graphic-elements) and [Apple — Supporting VoiceOver in your app](https://developer.apple.com/documentation/uikit/supporting-voiceover-in-your-app#Update-your-apps-accessibility) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Menu content - can include icons, labels, badges and menu actions."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n Options\n {}}>Action 1\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as destructive."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"elementSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The preferred size of the menu elements.\n\n> **Note**: This prop is only supported in "},{"kind":"code","text":"`Stack.Toolbar.Bottom`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/preferredelementsize) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 16.0+"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"small"},{"type":"literal","value":"medium"},{"type":"literal","value":"auto"},{"type":"literal","value":"large"}]}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the menu should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the shared background."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Official Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon for the menu item.\n\nCan be an SF Symbol name or an image source.\n\n> **Note**: When used in "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" on iOS, only string SFSymbols are supported. Use the "},{"kind":"code","text":"`image`"},{"kind":"text","text":" prop to provide custom images.\n\n> **Note (Android)**: Only "},{"kind":"code","text":"`ImageSourcePropType`"},{"kind":"text","text":" icons are rendered at the menu root.\n> SF Symbols and "},{"kind":"code","text":"`xcasset`"},{"kind":"text","text":" names are silently dropped — provide a "},{"kind":"code","text":"`require()`"},{"kind":"text","text":" or\n> "},{"kind":"code","text":"`{ uri }`"},{"kind":"text","text":" source."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}]}},{"name":"iconRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": applies tint color to the icon (useful for monochrome icons)\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": preserves original icon colors (useful for multi-color icons)\n\n**Default behavior on iOS:**\n- If "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" is specified, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":", defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\n**On Android:** defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":".\n\nThis prop only affects image-based icons (not SF Symbols)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Image to display for the menu item.\n\n> **Note**: This prop is only supported in toolbar with "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"inline","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be displayed inline.\nThis means that the menu will not be collapsed.\n\n> **Note**: Inline menus are only supported in submenus."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayinline) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"palette","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be displayed as a palette.\nThis means that the menu will be displayed as one row.\n\n> **Note**: Palette menus are only supported in submenus."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayaspalette) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to separate the background of this item from other header items."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style for the label of the header item."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/utils/font.ts","qualifiedName":"BasicTextStyle"},"name":"BasicTextStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The tint color to apply to the button item."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":" - "},{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/tintcolor) for more information."},{"kind":"text","text":"\n"},{"kind":"text","text":" - "},{"kind":"text","text":"[Android documentation](https://developer.android.com/develop/ui/compose/graphics/images/customize#tint-image) for more information."},{"kind":"text","text":"\n"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional title to show on top of the menu."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"variant","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'plain'"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"done"},{"type":"literal","value":"plain"},{"type":"literal","value":"prominent"}]}}]},{"name":"StackToolbarProps","variant":"declaration","kind":256,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When "},{"kind":"code","text":"`true`"},{"kind":"text","text":", renders children as a custom component in the header area,\nreplacing the default header layout.\n\nOnly applies to "},{"kind":"code","text":"`placement=\"left\"`"},{"kind":"text","text":" and "},{"kind":"code","text":"`placement=\"right\"`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Background color for the toolbar and its menus."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Child elements to compose the toolbar. Can include Stack.Toolbar.Button,\nStack.Toolbar.Menu, Stack.Toolbar.View, Stack.Toolbar.Spacer, and\nStack.Toolbar.SearchBarSlot (bottom placement, iOS only) components."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"disableImePadding","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When "},{"kind":"code","text":"`true`"},{"kind":"text","text":", disables automatic keyboard (IME) padding on the bottom toolbar.\n\nOnly applies to "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" on Android."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"placement","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The placement of the toolbar.\n\n- "},{"kind":"code","text":"`'left'`"},{"kind":"text","text":": Renders items in the left area of the header.\n- "},{"kind":"code","text":"`'right'`"},{"kind":"text","text":": Renders items in the right area of the header.\n- "},{"kind":"code","text":"`'bottom'`"},{"kind":"text","text":": Renders items in the bottom toolbar."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'bottom'"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/toolbar/context.tsx","qualifiedName":"ToolbarPlacement"},"name":"ToolbarPlacement","package":"expo-router"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Tint color applied to toolbar items (buttons, menu icons, text).\nIndividual items can override this with their own "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" prop."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"StackToolbarSearchBarSlotProps","variant":"declaration","kind":256,"children":[{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the search bar slot should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the shared background."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether this search bar slot has a separate background from adjacent items. When this prop is "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the search bar will always render as "},{"kind":"code","text":"`integratedButton`"},{"kind":"text","text":".\n\nIn order to render the search bar with a separate background, ensure that adjacent toolbar items have "},{"kind":"code","text":"`separateBackground`"},{"kind":"text","text":" set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":" or use "},{"kind":"code","text":"`Stack.Toolbar.Spacer`"},{"kind":"text","text":" to create spacing."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n{}} />\n\n \n \n \n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackToolbarSpacerProps","variant":"declaration","kind":256,"children":[{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the spacer should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"sharesBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether this spacer shares background with adjacent items.\n\nOnly available in bottom placement."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"width","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The width of the spacing element.\n\nIn Left/Right placements, width is required.\nIn Bottom placement, if width is not provided, the spacer will be flexible\nand expand to fill available space.\n\n> **Note:** On Android, "},{"kind":"code","text":"`width`"},{"kind":"text","text":" is required in every placement."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"number"}}]},{"name":"StackToolbarViewProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Can be any React node."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"typeArguments":[{"type":"intrinsic","name":"unknown"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.JSXElementConstructor"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"JSXElementConstructor","package":"@types/react","qualifiedName":"React.JSXElementConstructor"}]}],"name":"ReactElement","package":"@types/react","qualifiedName":"React.ReactElement"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the view should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the shared background."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Official Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to separate the background of this item from other items.\n\nOnly available in bottom placement."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackScreenTitleProps","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`StackTitleProps`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reference","name":"StackTitleProps","package":"expo-router"}},{"name":"StackTitleProps","variant":"declaration","kind":2097152,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Use this to render a custom component as the header title."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title content. Pass a string for a plain text title,\nor a custom component when "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":" is enabled."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"large","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Enables large title mode."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"largeStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style properties for the large title header."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"fontFamily"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"fontSize"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}}},{"name":"fontWeight","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Exclude"},"typeArguments":[{"type":"indexedAccess","indexType":{"type":"literal","value":"fontWeight"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}},{"type":"intrinsic","name":"number"}],"name":"Exclude","package":"typescript"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"fontFamily"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"fontSize"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}}},{"name":"fontWeight","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Exclude"},"typeArguments":[{"type":"indexedAccess","indexType":{"type":"literal","value":"fontWeight"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}},{"type":"intrinsic","name":"number"}],"name":"Exclude","package":"typescript"}},{"name":"textAlign","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"literal","value":"left"},{"type":"literal","value":"center"}]}}]}}],"name":"StyleProp","package":"react-native"}}]},{"name":"StackToolbarIconProps","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"renderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how the image icon is rendered.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": preserves original icon colors\n\n**Default behavior on iOS:**\n- With parent "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":": defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- Without parent "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":": defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\n**On Android:** defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":". Setting "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":" skips the tint so\nthe icon's source colors are preserved."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"src","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"sf","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Name of an SF Symbol to display."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbol"},"name":"SFSymbol","package":"sf-symbols-typescript"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"renderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how the xcasset icon is rendered on iOS.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": iOS applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": Preserves original icon colors\n\nDefaults based on parent component's "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":":\n- With "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":": defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- Without "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":": defaults to "},{"kind":"code","text":"`'original'`"}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"xcasset","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Name of an image in your Xcode asset catalog ("},{"kind":"code","text":"`.xcassets`"},{"kind":"text","text":")."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}}]}}]}},{"name":"Stack","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Renders a native stack navigator."}],"blockTags":[{"tag":"@hideType","content":[]}]},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigatorProps"},"name":"NativeStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"UNSTABLE_router"},{"type":"literal","value":"UNSTABLE_routeNamesChangeBehavior"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Children React Elements to extract the route configuration from.\nOnly "},{"kind":"code","text":"`Screen`"},{"kind":"text","text":", "},{"kind":"code","text":"`Group`"},{"kind":"text","text":" and "},{"kind":"code","text":"`React.Fragment`"},{"kind":"text","text":" are supported as children."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"layout","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Layout for the navigator.\nUseful for wrapping with a component with access to navigator's state and options."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"descriptors","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"Descriptor"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"Descriptor","package":"expo-router"}],"name":"Record","package":"typescript"}},{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"NavigationHelpers","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"name":"StackNavigationState","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"name":"ReactElement","package":"@types/react","qualifiedName":"React.ReactElement"}}]}}},{"name":"screenLayout","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Layout for all screens under this navigator."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenLayoutArgs"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}],"name":"NativeStackNavigationProp","package":"expo-router"}],"name":"ScreenLayoutArgs","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"name":"ReactElement","package":"@types/react","qualifiedName":"React.ReactElement"}}]}}},{"name":"screenListeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Event listeners for all the screens in the navigator."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"beforeRemove","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]},{"type":"literal","value":"beforeRemove"},{"type":"literal","value":true}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"blur","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]},{"type":"literal","value":"blur"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"focus","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]},{"type":"literal","value":"focus"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"gestureCancel","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a swipe back is canceled on iOS."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]},{"type":"literal","value":"gestureCancel"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"sheetDetentChange","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when screen is in sheet presentation & it's detent changes.\n\nIn payload it carries two fields:\n\n* "},{"kind":"code","text":"`index`"},{"kind":"text","text":" - current detent index in the "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array,\n* "},{"kind":"code","text":"`stable`"},{"kind":"text","text":" - on Android "},{"kind":"code","text":"`false`"},{"kind":"text","text":" value means that the user is dragging the sheet or it is settling; on iOS it is always "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]},{"type":"literal","value":"sheetDetentChange"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]},{"type":"literal","value":"state"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"transitionEnd","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation ends."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]},{"type":"literal","value":"transitionEnd"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"transitionStart","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation starts."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]},{"type":"literal","value":"transitionStart"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}}]}}],"name":"Partial","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationProp"},"name":"NativeStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMap"},"name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"screenOptions","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Default options for all screens under this navigator."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationProp"},"name":"NativeStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}},{"name":"theme","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"__global.ReactNavigation.Theme"},"name":"Theme","package":"expo-router","qualifiedName":"__global.ReactNavigation.Theme"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"}}]}}]}},{"name":"UNSTABLE_routeNamesChangeBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"What should happen when the available route names change.\ne.g. when different screens are rendered based on a condition.\n\n- 'firstMatch': Navigate to the first route in the new list of routes (default).\n- 'lastUnhandled': Restore the last state that was unhandled due to conditional render.\n\nExample cases where previous state might have been unhandled:\n- Opened a deep link to a screen, but a login screen was shown.\n- Navigated to a screen containing a navigator, but a different screen was shown.\n- Reset the navigator to a state with different routes not matching the current list of routes.\n\nIn these cases, 'lastUnhandled' will reuse the unhandled state if present.\nIf there's no unhandled state, it will fallback to 'firstMatch' behavior.\n\nCaveats:\n- Direct navigation is only handled for "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":" actions.\n- Unhandled state is restored only if the current state becomes invalid, i.e. it doesn't contain any currently defined screens."}]},"type":{"type":"union","types":[{"type":"literal","value":"firstMatch"},{"type":"literal","value":"lastUnhandled"}]}},{"name":"UNSTABLE_router","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A function returning overrides for the underlying router used by the navigator.\nThe overrides will be shallow merged onto the original router.\nIt receives the original router as an argument to the function.\n\nThis must be a pure function and cannot reference outside dynamic variables."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"typeParameters":[{"name":"Action","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"payload","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Additional data for the action"}]},"type":{"type":"union","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]}},{"name":"source","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the route which dispatched this action."}]},"type":{"type":"union","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the navigator which should handle this action."}]},"type":{"type":"union","types":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}]}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the action (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")"}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}}],"parameters":[{"name":"original","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Router"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"Action","package":"expo-router","refersToTypeParameter":true}],"name":"Router","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Router"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"Action","package":"expo-router","refersToTypeParameter":true}],"name":"Router","package":"expo-router"}],"name":"Partial","package":"typescript"}}]}}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"id","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"undefined"}}]}}]},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigatorProps"},"name":"NativeStackNavigatorProps","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"id"},{"type":"literal","value":"initialRouteName"},{"type":"literal","value":"layout"},{"type":"literal","value":"screenListeners"},{"type":"literal","value":"screenOptions"},{"type":"literal","value":"screenLayout"},{"type":"literal","value":"UNSTABLE_router"},{"type":"literal","value":"UNSTABLE_routeNamesChangeBehavior"}]}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"DefaultRouterOptions"},"typeArguments":[{"type":"intrinsic","name":"string"}],"name":"DefaultRouterOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Children React Elements to extract the route configuration from.\nOnly "},{"kind":"code","text":"`Screen`"},{"kind":"text","text":", "},{"kind":"code","text":"`Group`"},{"kind":"text","text":" and "},{"kind":"code","text":"`React.Fragment`"},{"kind":"text","text":" are supported as children."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"layout","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Layout for the navigator.\nUseful for wrapping with a component with access to navigator's state and options."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"descriptors","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"Record","package":"typescript"}},{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpers"},"typeArguments":[{"type":"unknown","name":"..."}],"name":"NavigationHelpers","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"name":"StackNavigationState","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"name":"ReactElement","package":"@types/react","qualifiedName":"React.ReactElement"}}]}}},{"name":"screenLayout","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Layout for all screens under this navigator."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenLayoutArgs"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationProp"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"NativeStackNavigationProp","package":"expo-router"}],"name":"ScreenLayoutArgs","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"name":"ReactElement","package":"@types/react","qualifiedName":"React.ReactElement"}}]}}},{"name":"screenListeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Event listeners for all the screens in the navigator."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"beforeRemove","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"blur","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"focus","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"gestureCancel","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a swipe back is canceled on iOS."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"sheetDetentChange","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when screen is in sheet presentation & it's detent changes.\n\nIn payload it carries two fields:\n\n* "},{"kind":"code","text":"`index`"},{"kind":"text","text":" - current detent index in the "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array,\n* "},{"kind":"code","text":"`stable`"},{"kind":"text","text":" - on Android "},{"kind":"code","text":"`false`"},{"kind":"text","text":" value means that the user is dragging the sheet or it is settling; on iOS it is always "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"transitionEnd","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation ends."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"transitionStart","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation starts."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"EventListenerCallback","package":"expo-router"}}]}}],"name":"Partial","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationProp"},"name":"NativeStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"unknown","name":"..."}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMap"},"name":"EventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"screenOptions","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Default options for all screens under this navigator."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationProp"},"name":"NativeStackNavigationProp","package":"expo-router"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"unknown","name":"..."}],"name":"RouteProp","package":"expo-router"}},{"name":"theme","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"__global.ReactNavigation.Theme"},"name":"Theme","package":"expo-router","qualifiedName":"__global.ReactNavigation.Theme"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"}}]}}]}},{"name":"UNSTABLE_routeNamesChangeBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"What should happen when the available route names change.\ne.g. when different screens are rendered based on a condition.\n\n- 'firstMatch': Navigate to the first route in the new list of routes (default).\n- 'lastUnhandled': Restore the last state that was unhandled due to conditional render.\n\nExample cases where previous state might have been unhandled:\n- Opened a deep link to a screen, but a login screen was shown.\n- Navigated to a screen containing a navigator, but a different screen was shown.\n- Reset the navigator to a state with different routes not matching the current list of routes.\n\nIn these cases, 'lastUnhandled' will reuse the unhandled state if present.\nIf there's no unhandled state, it will fallback to 'firstMatch' behavior.\n\nCaveats:\n- Direct navigation is only handled for "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":" actions.\n- Unhandled state is restored only if the current state becomes invalid, i.e. it doesn't contain any currently defined screens."}]},"type":{"type":"union","types":[{"type":"literal","value":"firstMatch"},{"type":"literal","value":"lastUnhandled"}]}},{"name":"UNSTABLE_router","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A function returning overrides for the underlying router used by the navigator.\nThe overrides will be shallow merged onto the original router.\nIt receives the original router as an argument to the function.\n\nThis must be a pure function and cannot reference outside dynamic variables."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"typeParameters":[{"name":"Action","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"payload","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Additional data for the action"}]},"type":{"type":"unknown","name":"..."}},{"name":"source","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the route which dispatched this action."}]},"type":{"type":"unknown","name":"..."}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the navigator which should handle this action."}]},"type":{"type":"unknown","name":"..."}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the action (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")"}]},"type":{"type":"unknown","name":"..."}}]}}],"name":"Readonly","package":"typescript"}}],"parameters":[{"name":"original","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Router"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"unknown","name":"..."}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","name":"Action","package":"expo-router","refersToTypeParameter":true}],"name":"Router","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"Router"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"Router","package":"expo-router"}],"name":"Partial","package":"typescript"}}]}}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"id","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"undefined"}}]}}]},{"type":"literal","value":"children"}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Header","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"The component used to configure header styling for a stack screen.\n\nUse this component to set header appearance properties like blur effect, background color,\nand shadow visibility."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"When used inside a layout with Stack.Screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackHeaderProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackHeader"},{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackScreenProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"BackButton","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to configure the back button.\n\nCan be used inside Stack.Screen in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Back\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n >\n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackScreenBackButtonProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackScreenBackButton"},{"name":"Title","variant":"declaration","kind":1024,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`Stack.Title`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to set the screen title.\n\nCan be used inside "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"text","text":"String title in a layout:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Home\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"String title inside a screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n My Page\n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"Custom component as the title using "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":":\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackTitleProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackTitle"}]}}]},"defaultValue":"StackScreen"},{"name":"SearchBar","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A search bar component that integrates with the native stack header.\n\n> **Note:** Using "},{"kind":"code","text":"`Stack.SearchBar`"},{"kind":"text","text":" will automatically make the header visible\n("},{"kind":"code","text":"`headerShown: true`"},{"kind":"text","text":"), as the search bar is rendered as part of the native header.\n\nTo display the search bar in the bottom toolbar on iOS 26+, use\n"},{"kind":"code","text":"`Stack.Toolbar.SearchBarSlot`"},{"kind":"text","text":" inside "},{"kind":"code","text":"`Stack.Toolbar`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n console.log(event.nativeEvent.text)}\n />\n \n >\n );\n}\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackSearchBarProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackSearchBar"},{"name":"Title","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to set the screen title.\n\nCan be used inside "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"text","text":"String title in a layout:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Home\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"String title inside a screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n My Page\n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"Custom component as the title using "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":":\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackTitleProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackTitle"},{"name":"Toolbar","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Badge","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarBadgeProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Button","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarButtonProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Icon","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarIconProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Label","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarLabelProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Menu","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarMenuProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"MenuAction","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarMenuActionProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"SearchBarSlot","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarSearchBarSlotProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Spacer","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarSpacerProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"View","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarViewProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}}],"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"The component used to configure the stack toolbar.\n\n- Use "},{"kind":"code","text":"`placement=\"left\"`"},{"kind":"text","text":" to customize the left side of the header.\n- Use "},{"kind":"code","text":"`placement=\"right\"`"},{"kind":"text","text":" to customize the right side of the header.\n- Use "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" (default) to show a bottom toolbar.\n\nIf multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence.\n\n> **Note:** Using "},{"kind":"code","text":"`Stack.Toolbar`"},{"kind":"text","text":" with "},{"kind":"code","text":"`placement=\"left\"`"},{"kind":"text","text":" or "},{"kind":"code","text":"`placement=\"right\"`"},{"kind":"text","text":" will\nautomatically make the header visible ("},{"kind":"code","text":"`headerShown: true`"},{"kind":"text","text":"), as the toolbar is rendered\nas part of the native header.\n\n> **Note:** "},{"kind":"code","text":"`Stack.Toolbar`"},{"kind":"text","text":" with "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" can only be used inside **page**\ncomponents, not in layout components."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n alert('Left button pressed!')} />\n \n \n alert('Right button pressed!')} />\n \n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n alert('Left button pressed!')} />\n \n \n \n {}} />\n \n \n \n >\n );\n}\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}],"modifierTags":["@experimental"]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"StackToolbarProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},"defaultValue":"StackToolbar"}]}}]},"defaultValue":"..."}],"packageName":"expo-router"}
\ No newline at end of file
+{"schemaVersion":"2.0","name":"expo-router/stack","variant":"project","kind":1,"children":[{"name":"StackHeaderItemSharedProps","variant":"declaration","kind":256,"children":[{"name":"accessibilityHint","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"accessibilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}]}},{"name":"iconRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": preserves original icon colors (useful for multi-color icons)\n\n**Default behavior on iOS:**\n- If "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" is specified, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":", defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\n**On Android:** defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":". The icon is always rendered through\nCompose's "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" and tinted unless "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":" is set explicitly.\n\nThis prop only affects image-based icons (not SF Symbols)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/utils/font.ts","qualifiedName":"BasicTextStyle"},"name":"BasicTextStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"variant","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'plain'"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"done"},{"type":"literal","value":"prominent"},{"type":"literal","value":"plain"}]}}]},{"name":"StackHeaderProps","variant":"declaration","kind":256,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When "},{"kind":"code","text":"`true`"},{"kind":"text","text":", renders children as a custom header component, replacing the default header entirely.\nUse this to implement fully custom header layouts."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"blurEffect","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The blur effect to apply to the header background on iOS.\nCommon values include 'regular', 'prominent', 'systemMaterial', etc."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/shared/types.ts","qualifiedName":"BlurEffect"},"name":"BlurEffect","package":"react-native-screens"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Child elements for custom header when "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":" is true."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the header completely. When set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the header will not be rendered."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"largeStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style properties for the large title header (iOS).\n- "},{"kind":"code","text":"`backgroundColor`"},{"kind":"text","text":": Background color of the large title header\n- "},{"kind":"code","text":"`shadowColor`"},{"kind":"text","text":": Set to 'transparent' to hide the large title shadow/border"}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"shadowColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"literal","value":"transparent"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style properties for the standard-sized header.\n- "},{"kind":"code","text":"`color`"},{"kind":"text","text":": Tint color for header elements (similar to tintColor in React Navigation)\n- "},{"kind":"code","text":"`backgroundColor`"},{"kind":"text","text":": Background color of the header\n- "},{"kind":"code","text":"`shadowColor`"},{"kind":"text","text":": Set to 'transparent' to hide the header shadow/border"}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"shadowColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"literal","value":"transparent"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"transparent","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the header should be transparent.\nWhen "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the header is absolutely positioned and content scrolls underneath.\n\nAuto-enabled when:\n- "},{"kind":"code","text":"`style.backgroundColor`"},{"kind":"text","text":" is 'transparent'\n- "},{"kind":"code","text":"`blurEffect`"},{"kind":"text","text":" is set (required for blur to work)"}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackScreenBackButtonProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title to display for the back button."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"displayMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The display mode for the back button."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"BackButtonDisplayMode"},"name":"BackButtonDisplayMode","package":"react-native-screens"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the back button."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"src","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom image source for the back button."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style for the back button title."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"number"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"withMenu","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to show a context menu when long pressing the back button."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackScreenProps","variant":"declaration","kind":256,"children":[{"name":"dangerouslySingular","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When enabled, the navigator will reuse an existing screen instead of pushing a new one.\n\nOnly supported when used inside a Layout component."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"SingularOptions"},"name":"SingularOptions","package":"expo-router"}},{"name":"getId","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Function to determine a unique ID for the screen."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`dangerouslySingular`"},{"kind":"text","text":" instead.\n\nOnly supported when used inside a Layout component."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"any"}],"name":"Record","package":"typescript"}}]}}}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]}}},{"name":"listeners","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Listeners for navigation events.\n\nOnly supported when used inside a Layout component."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"blur","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"blur"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"focus","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"focus"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"gestureCancel","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a swipe back is canceled on iOS."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"gestureCancel"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"removed","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Emitted after the route is removed and its component unmounts. The listener cannot rely on\ncomponent state or update the unmounted component. Since effect cleanup runs before this event,\nit must defer unsubscription until the next microtask."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nReact.useEffect(() => {\n const unsubscribe = navigation.addListener('removed', (event) => {\n logRemovedRoute(event.data.action);\n });\n\n return () => queueMicrotask(unsubscribe);\n}, [navigation]);\n```"}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"removed"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"removePrevented","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"removePrevented"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"sheetDetentChange","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when screen is in sheet presentation & it's detent changes.\n\nIn payload it carries two fields:\n\n* "},{"kind":"code","text":"`index`"},{"kind":"text","text":" - current detent index in the "},{"kind":"code","text":"`sheetAllowedDetents`"},{"kind":"text","text":" array,\n* "},{"kind":"code","text":"`stable`"},{"kind":"text","text":" - on Android "},{"kind":"code","text":"`false`"},{"kind":"text","text":" value means that the user is dragging the sheet or it is settling; on iOS it is always "},{"kind":"code","text":"`true`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"sheetDetentChange"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"state"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"transitionEnd","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation ends."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"transitionEnd"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}},{"name":"transitionStart","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires when a transition animation starts."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventListenerCallback"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationEventMap"},"name":"NativeStackNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]},{"type":"literal","value":"transitionStart"},{"type":"intrinsic","name":"unknown"}],"name":"EventListenerCallback","package":"expo-router"}}]}}],"name":"Partial","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"RouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenListeners"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"TState"},"name":"TState","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/useScreens.tsx","qualifiedName":"TEventMap"},"name":"TEventMap","package":"expo-router","refersToTypeParameter":true}],"name":"ScreenListeners","package":"expo-router"}}]}}]}},{"name":"name","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Name is required when used inside a Layout component."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"options","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Options to configure the screen.\n\nAccepts an object or a function returning an object.\nThe function form "},{"kind":"code","text":"`options={({ route }) => ({})}`"},{"kind":"text","text":" is only supported when used inside a Layout component.\nWhen used inside a page component, pass an options object directly."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"prop","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"any"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DescriptorRouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"DescriptorRouteProp","package":"expo-router"}}]}}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"}}]}}]}}],"extendedTypes":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}]},{"name":"StackSearchBarProps","variant":"declaration","kind":256,"extendedTypes":[{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/types.tsx","qualifiedName":"SearchBarProps"},"name":"SearchBarProps","package":"react-native-screens"}]},{"name":"StackToolbarBadgeProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The text to display as the badge"}]},"type":{"type":"intrinsic","name":"string"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"},{"type":"union","types":[{"type":"literal","value":"backgroundColor"},{"type":"literal","value":"color"},{"type":"literal","value":"fontSize"},{"type":"literal","value":"fontWeight"},{"type":"literal","value":"fontFamily"}]}],"name":"Pick","package":"typescript"}],"name":"StyleProp","package":"react-native"}}]},{"name":"StackToolbarButtonProps","variant":"declaration","kind":256,"children":[{"name":"accessibilityHint","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"accessibilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Accessibility label spoken by screen readers (TalkBack/VoiceOver)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Android — Compose accessibility for graphic elements](https://developer.android.com/develop/ui/compose/accessibility/api-defaults#graphic-elements) and [Apple — Supporting VoiceOver in your app](https://developer.apple.com/documentation/uikit/supporting-voiceover-in-your-app#Update-your-apps-accessibility) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"There are two ways to specify the content of the button:"}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n As text passed as children\n \n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n \n As components\n 3\n \n \n \n >\n );\n}\n```"},{"kind":"text","text":"\n\n> **Note**: When icon is used, the label will not be shown and will be used for accessibility purposes only. Badge is only supported in left/right placements, not in bottom (iOS toolbar limitation)."}]}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the button should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the shared background."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon to display in the button.\n\nOn Android, only image source is supported.\n\nOn iOS, it can be a string representing an SFSymbol, an image source or xcasset.\n\n> **Note**: When used in "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" on iOS, only string SFSymbols are supported. Use the "},{"kind":"code","text":"`image`"},{"kind":"text","text":" prop to provide custom images."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}]}},{"name":"iconRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": preserves original icon colors (useful for multi-color icons)\n\n**Default behavior on iOS:**\n- If "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" is specified, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":", defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\n**On Android:** defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":".\n\nThis prop only affects image-based icons (not SF Symbols)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Image to display in the button.\n\n> **Note**: This prop is only supported in toolbar with "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"onPress","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"selected","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the button is in a selected state"}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/isselected) for more information"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to separate the background of this item from other header items."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style for the label of the header item."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The tint color to apply to the button item."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":" - "},{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/tintcolor) for more information."},{"kind":"text","text":"\n"},{"kind":"text","text":" - "},{"kind":"text","text":"[Android documentation](https://developer.android.com/develop/ui/compose/graphics/images/customize#tint-image) for more information."},{"kind":"text","text":"\n"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"variant","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'plain'"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"done"},{"type":"literal","value":"prominent"},{"type":"literal","value":"plain"}]}}]},{"name":"StackToolbarLabelProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The text to display as the label for the tab."}]},"type":{"type":"intrinsic","name":"string"}}]},{"name":"StackToolbarMenuActionProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Can be an Icon, Label or string title."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as destructive."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be disabled and not selectable."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/disabled) for more information."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"discoverabilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An elaborated title that explains the purpose of the action."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon for the menu action.\n\nCan be an SF Symbol name or an image source.\n\n> **Note (Android)**: Only "},{"kind":"code","text":"`ImageSourcePropType`"},{"kind":"text","text":" icons are rendered. SF Symbols are\n> silently dropped. Provide a "},{"kind":"code","text":"`require()`"},{"kind":"text","text":" or "},{"kind":"code","text":"`{ uri }`"},{"kind":"text","text":" source."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}]}},{"name":"iconRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered on iOS.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": iOS applies tint color to the icon (useful for monochrome icons)\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": Preserves original icon colors (useful for multi-color icons)\n\n**Default behavior:**\n- If "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" is specified, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":", defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\nThis prop only affects image-based icons (not SF Symbols)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Image to display for the menu action.\n\n> **Note**: This prop is only supported in "},{"kind":"code","text":"`Stack.Toolbar.Bottom`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"isOn","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as selected."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"onPress","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"subtitle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"An optional subtitle for the menu item."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/subtitle) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"unstable_keepPresented","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be kept presented after the action is selected.\n\nThis is marked as unstable, because when action is selected on iOS it will recreate\nthe menu, which will close all opened submenus and reset the scroll position."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/keepsmenupresented) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackToolbarMenuProps","variant":"declaration","kind":256,"children":[{"name":"accessibilityHint","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"accessibilityLabel","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Accessibility label spoken by screen readers (TalkBack/VoiceOver)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Android — Compose accessibility for graphic elements](https://developer.android.com/develop/ui/compose/accessibility/api-defaults#graphic-elements) and [Apple — Supporting VoiceOver in your app](https://developer.apple.com/documentation/uikit/supporting-voiceover-in-your-app#Update-your-apps-accessibility) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Menu content - can include icons, labels, badges and menu actions."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n Options\n {}}>Action 1\n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"cornerRadius","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Corner radius in dp for the dropdown menu container. Defaults to the Material3\n"},{"kind":"code","text":"`MenuDefaults.shape`"},{"kind":"text","text":" corner radius."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"destructive","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu item will be displayed as destructive."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenuelement/attributes/destructive) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"disabled","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"elementSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The preferred size of the menu elements.\n\n> **Note**: This prop is only supported in "},{"kind":"code","text":"`Stack.Toolbar.Bottom`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/preferredelementsize) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 16.0+"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"auto"},{"type":"literal","value":"small"},{"type":"literal","value":"medium"},{"type":"literal","value":"large"}]}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the menu should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the shared background."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Official Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"icon","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Icon for the menu item.\n\nCan be an SF Symbol name or an image source.\n\n> **Note**: When used in "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" on iOS, only string SFSymbols are supported. Use the "},{"kind":"code","text":"`image`"},{"kind":"text","text":" prop to provide custom images.\n\n> **Note (Android)**: Only "},{"kind":"code","text":"`ImageSourcePropType`"},{"kind":"text","text":" icons are rendered at the menu root.\n> SF Symbols and "},{"kind":"code","text":"`xcasset`"},{"kind":"text","text":" names are silently dropped — provide a "},{"kind":"code","text":"`require()`"},{"kind":"text","text":" or\n> "},{"kind":"code","text":"`{ uri }`"},{"kind":"text","text":" source."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"},{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbols7_0"},"name":"SFSymbols7_0","package":"sf-symbols-typescript"}]}},{"name":"iconRenderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how image-based icons are rendered.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": applies tint color to the icon (useful for monochrome icons)\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": preserves original icon colors (useful for multi-color icons)\n\n**Default behavior on iOS:**\n- If "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" is specified, defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- If no "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":", defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\n**On Android:** defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":".\n\nThis prop only affects image-based icons (not SF Symbols)."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uiimage/renderingmode-swift.enum) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"image","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Image to display for the menu item.\n\n> **Note**: This prop is only supported in toolbar with "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-modules-core","packagePath":"src/ts-declarations/SharedRef.ts","qualifiedName":"SharedRef"},"typeArguments":[{"type":"literal","value":"image"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"never"},{"type":"intrinsic","name":"never"}],"name":"Record","package":"typescript"}],"name":"SharedRef","package":"expo-modules-core"},{"type":"literal","value":null}]}},{"name":"inline","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be displayed inline.\nThis means that the menu will not be collapsed.\n\n> **Note**: Inline menus are only supported in submenus."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayinline) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"palette","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"If "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the menu will be displayed as a palette.\nThis means that the menu will be displayed as one row.\n\n> **Note**: Palette menus are only supported in submenus."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uimenu/options-swift.struct/displayaspalette) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to separate the background of this item from other header items."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style for the label of the header item."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/utils/font.ts","qualifiedName":"BasicTextStyle"},"name":"BasicTextStyle","package":"expo-router"}],"name":"StyleProp","package":"react-native"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The tint color to apply to the button item."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":" - "},{"kind":"text","text":"[Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/tintcolor) for more information."},{"kind":"text","text":"\n"},{"kind":"text","text":" - "},{"kind":"text","text":"[Android documentation](https://developer.android.com/develop/ui/compose/graphics/images/customize#tint-image) for more information."},{"kind":"text","text":"\n"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"title","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional title to show on top of the menu."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}},{"name":"variant","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'plain'"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"done"},{"type":"literal","value":"prominent"},{"type":"literal","value":"plain"}]}}]},{"name":"StackToolbarProps","variant":"declaration","kind":256,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When "},{"kind":"code","text":"`true`"},{"kind":"text","text":", renders children as a custom component in the header area,\nreplacing the default header layout.\n\nOnly applies to "},{"kind":"code","text":"`placement=\"left\"`"},{"kind":"text","text":" and "},{"kind":"code","text":"`placement=\"right\"`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"backgroundColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Background color for the toolbar and its menus."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Child elements to compose the toolbar. Can include Stack.Toolbar.Button,\nStack.Toolbar.Menu, Stack.Toolbar.View, Stack.Toolbar.Spacer, and\nStack.Toolbar.SearchBarSlot (bottom placement, iOS only) components."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"disableImePadding","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"When "},{"kind":"code","text":"`true`"},{"kind":"text","text":", disables automatic keyboard (IME) padding on the bottom toolbar.\n\nOnly applies to "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" on Android."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"placement","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The placement of the toolbar.\n\n- "},{"kind":"code","text":"`'left'`"},{"kind":"text","text":": Renders items in the left area of the header.\n- "},{"kind":"code","text":"`'right'`"},{"kind":"text","text":": Renders items in the right area of the header.\n- "},{"kind":"code","text":"`'bottom'`"},{"kind":"text","text":": Renders items in the bottom toolbar."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"'bottom'"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/layouts/stack-utils/toolbar/context.tsx","qualifiedName":"ToolbarPlacement"},"name":"ToolbarPlacement","package":"expo-router"}},{"name":"tintColor","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Tint color applied to toolbar items (buttons, menu icons, text).\nIndividual items can override this with their own "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":" prop."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}}]},{"name":"StackToolbarSearchBarSlotProps","variant":"declaration","kind":256,"children":[{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the search bar slot should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the shared background."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether this search bar slot has a separate background from adjacent items. When this prop is "},{"kind":"code","text":"`true`"},{"kind":"text","text":", the search bar will always render as "},{"kind":"code","text":"`integratedButton`"},{"kind":"text","text":".\n\nIn order to render the search bar with a separate background, ensure that adjacent toolbar items have "},{"kind":"code","text":"`separateBackground`"},{"kind":"text","text":" set to "},{"kind":"code","text":"`true`"},{"kind":"text","text":" or use "},{"kind":"code","text":"`Stack.Toolbar.Spacer`"},{"kind":"text","text":" to create spacing."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n{}} />\n\n \n \n \n\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackToolbarSpacerProps","variant":"declaration","kind":256,"children":[{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the spacer should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"sharesBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether this spacer shares background with adjacent items.\n\nOnly available in bottom placement."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"width","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The width of the spacing element.\n\nIn Left/Right placements, width is required.\nIn Bottom placement, if width is not provided, the spacer will be flexible\nand expand to fill available space.\n\n> **Note:** On Android, "},{"kind":"code","text":"`width`"},{"kind":"text","text":" is required in every placement."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"number"}}]},{"name":"StackToolbarViewProps","variant":"declaration","kind":256,"children":[{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Can be any React node."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactElement"},"typeArguments":[{"type":"intrinsic","name":"unknown"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.JSXElementConstructor"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"JSXElementConstructor","package":"@types/react","qualifiedName":"React.JSXElementConstructor"}]}],"name":"ReactElement","package":"@types/react","qualifiedName":"React.ReactElement"}},{"name":"hidden","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the view should be hidden."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"hidesSharedBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to hide the shared background."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"[Official Apple documentation](https://developer.apple.com/documentation/uikit/uibarbuttonitem/hidessharedbackground) for more information."}]},{"tag":"@platform","content":[{"kind":"text","text":"iOS 26+"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"separateBackground","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether to separate the background of this item from other items.\n\nOnly available in bottom placement."}],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"false"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"StackScreenTitleProps","variant":"declaration","kind":2097152,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`StackTitleProps`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reference","name":"StackTitleProps","package":"expo-router"}},{"name":"StackTitleProps","variant":"declaration","kind":2097152,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Use this to render a custom component as the header title."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n\n```"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"children","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The title content. Pass a string for a plain text title,\nor a custom component when "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":" is enabled."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"large","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Enables large title mode."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"largeStyle","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Style properties for the large title header."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"fontFamily"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"fontSize"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}}},{"name":"fontWeight","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Exclude"},"typeArguments":[{"type":"indexedAccess","indexType":{"type":"literal","value":"fontWeight"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}},{"type":"intrinsic","name":"number"}],"name":"Exclude","package":"typescript"}}]}}],"name":"StyleProp","package":"react-native"}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"fontFamily","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"fontFamily"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}}},{"name":"fontSize","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"fontSize"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}}},{"name":"fontWeight","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Exclude"},"typeArguments":[{"type":"indexedAccess","indexType":{"type":"literal","value":"fontWeight"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"TextStyle"},"name":"TextStyle","package":"react-native"}},{"type":"intrinsic","name":"number"}],"name":"Exclude","package":"typescript"}},{"name":"textAlign","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"union","types":[{"type":"literal","value":"left"},{"type":"literal","value":"center"}]}}]}}],"name":"StyleProp","package":"react-native"}}]},{"name":"StackToolbarIconProps","variant":"declaration","kind":2097152,"type":{"type":"union","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"renderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how the image icon is rendered.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": preserves original icon colors\n\n**Default behavior on iOS:**\n- With parent "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":": defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- Without parent "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":": defaults to "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":"\n\n**On Android:** defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":". Setting "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":" skips the tint so\nthe icon's source colors are preserved."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"src","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Image/Image.d.ts","qualifiedName":"ImageSourcePropType"},"name":"ImageSourcePropType","package":"react-native"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"sf","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Name of an SF Symbol to display."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"reference","target":{"packageName":"sf-symbols-typescript","packagePath":"dist/index.d.ts","qualifiedName":"SFSymbol"},"name":"SFSymbol","package":"sf-symbols-typescript"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"renderingMode","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Controls how the xcasset icon is rendered on iOS.\n\n- "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":": iOS applies tint color to the icon\n- "},{"kind":"code","text":"`'original'`"},{"kind":"text","text":": Preserves original icon colors\n\nDefaults based on parent component's "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":":\n- With "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":": defaults to "},{"kind":"code","text":"`'template'`"},{"kind":"text","text":"\n- Without "},{"kind":"code","text":"`tintColor`"},{"kind":"text","text":": defaults to "},{"kind":"code","text":"`'original'`"}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"union","types":[{"type":"literal","value":"template"},{"type":"literal","value":"original"}]}},{"name":"xcasset","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Name of an image in your Xcode asset catalog ("},{"kind":"code","text":"`.xcassets`"},{"kind":"text","text":")."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}]},"type":{"type":"intrinsic","name":"string"}}]}}]}},{"name":"Stack","variant":"declaration","kind":32,"flags":{"isConst":true},"comment":{"summary":[{"kind":"text","text":"Renders a native stack navigator."}],"blockTags":[{"tag":"@hideType","content":[]}]},"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"StandardUseNavigationBuilderOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/fork/native-stack/createNativeStackNavigator.tsx","qualifiedName":"StandardNativeStackEventMap"},"name":"StandardNativeStackEventMap","package":"expo-router"}],"name":"StandardUseNavigationBuilderOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationConfig"},"name":"NativeStackNavigationConfig","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackRouterOptions"},"name":"StackRouterOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"unstable_screenErrorBoundary","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A component to render when an individual screen in this navigator throws an error."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Try.tsx","qualifiedName":"ErrorBoundaryProps"},"name":"ErrorBoundaryProps","package":"expo-router"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}}]}}]},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/standard-navigation/types.ts","qualifiedName":"StandardUseNavigationBuilderOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"StackNavigationState","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationOptions"},"name":"NativeStackNavigationOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/fork/native-stack/createNativeStackNavigator.tsx","qualifiedName":"StandardNativeStackEventMap"},"name":"StandardNativeStackEventMap","package":"expo-router"}],"name":"StandardUseNavigationBuilderOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/native-stack/types.tsx","qualifiedName":"NativeStackNavigationConfig"},"name":"NativeStackNavigationConfig","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/StackRouter.tsx","qualifiedName":"StackRouterOptions"},"name":"StackRouterOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"unstable_screenErrorBoundary","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"A component to render when an individual screen in this navigator throws an error."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentType"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Try.tsx","qualifiedName":"ErrorBoundaryProps"},"name":"ErrorBoundaryProps","package":"expo-router"}],"name":"ComponentType","package":"@types/react","qualifiedName":"React.ComponentType"}}]}}]},{"type":"literal","value":"children"}],"name":"Pick","package":"typescript"}],"name":"Partial","package":"typescript"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"intrinsic","name":"unknown"}],"name":"RefAttributes","package":"@types/react","qualifiedName":"React.RefAttributes"}]}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Header","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"The component used to configure header styling for a stack screen.\n\nUse this component to set header appearance properties like blur effect, background color,\nand shadow visibility."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"When used inside a layout with Stack.Screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackHeaderProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackHeader"},{"name":"Protected","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FunctionComponent"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/views/Protected.tsx","qualifiedName":"ProtectedProps"},"name":"ProtectedProps","package":"expo-router"}],"name":"FunctionComponent","package":"@types/react","qualifiedName":"React.FunctionComponent"}},{"name":"Screen","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackScreenProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"BackButton","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to configure the back button.\n\nCan be used inside Stack.Screen in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Back\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n \n >\n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackScreenBackButtonProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackScreenBackButton"},{"name":"Title","variant":"declaration","kind":1024,"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`Stack.Title`"},{"kind":"text","text":" instead."}]}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to set the screen title.\n\nCan be used inside "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"text","text":"String title in a layout:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Home\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"String title inside a screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n My Page\n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"Custom component as the title using "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":":\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackTitleProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackTitle"}]}}]},"defaultValue":"StackScreen"},{"name":"SearchBar","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A search bar component that integrates with the native stack header.\n\n> **Note:** Using "},{"kind":"code","text":"`Stack.SearchBar`"},{"kind":"text","text":" will automatically make the header visible\n("},{"kind":"code","text":"`headerShown: true`"},{"kind":"text","text":"), as the search bar is rendered as part of the native header.\n\nTo display the search bar in the bottom toolbar on iOS 26+, use\n"},{"kind":"code","text":"`Stack.Toolbar.SearchBarSlot`"},{"kind":"text","text":" inside "},{"kind":"code","text":"`Stack.Toolbar`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n console.log(event.nativeEvent.text)}\n />\n \n >\n );\n}\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackSearchBarProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackSearchBar"},{"name":"Title","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Component to set the screen title.\n\nCan be used inside "},{"kind":"code","text":"`Stack.Screen`"},{"kind":"text","text":" in a layout or directly inside a screen component."}],"blockTags":[{"tag":"@example","content":[{"kind":"text","text":"String title in a layout:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n Home\n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"String title inside a screen:\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n My Page\n \n >\n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"text","text":"Custom component as the title using "},{"kind":"code","text":"`asChild`"},{"kind":"text","text":":\n"},{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n \n \n \n \n );\n}\n```"},{"kind":"text","text":"\n\n> **Note:** If multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence."}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"StackTitleProps","package":"expo-router"}}],"type":{"type":"literal","value":null}}]}},"defaultValue":"StackTitle"},{"name":"Toolbar","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"Badge","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarBadgeProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Button","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarButtonProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Icon","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarIconProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Label","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarLabelProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Menu","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarMenuProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"MenuAction","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarMenuActionProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"SearchBarSlot","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarSearchBarSlotProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"Spacer","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarSpacerProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}},{"name":"View","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.FC"},"typeArguments":[{"type":"reference","name":"StackToolbarViewProps","package":"expo-router"}],"name":"FC","package":"@types/react","qualifiedName":"React.FC"}}],"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"The component used to configure the stack toolbar.\n\n- Use "},{"kind":"code","text":"`placement=\"left\"`"},{"kind":"text","text":" to customize the left side of the header.\n- Use "},{"kind":"code","text":"`placement=\"right\"`"},{"kind":"text","text":" to customize the right side of the header.\n- Use "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" (default) to show a bottom toolbar.\n\nIf multiple instances of this component are rendered for the same screen,\nthe last one rendered in the component tree takes precedence.\n\n> **Note:** Using "},{"kind":"code","text":"`Stack.Toolbar`"},{"kind":"text","text":" with "},{"kind":"code","text":"`placement=\"left\"`"},{"kind":"text","text":" or "},{"kind":"code","text":"`placement=\"right\"`"},{"kind":"text","text":" will\nautomatically make the header visible ("},{"kind":"code","text":"`headerShown: true`"},{"kind":"text","text":"), as the toolbar is rendered\nas part of the native header.\n\n> **Note:** "},{"kind":"code","text":"`Stack.Toolbar`"},{"kind":"text","text":" with "},{"kind":"code","text":"`placement=\"bottom\"`"},{"kind":"text","text":" can only be used inside **page**\ncomponents, not in layout components."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Layout() {\n return (\n \n \n \n alert('Left button pressed!')} />\n \n \n alert('Right button pressed!')} />\n \n \n \n );\n}\n```"}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nimport { Stack } from 'expo-router';\n\nexport default function Page() {\n return (\n <>\n \n alert('Left button pressed!')} />\n \n \n \n {}} />\n \n \n \n >\n );\n}\n```"}]},{"tag":"@platform","content":[{"kind":"text","text":"android"}]},{"tag":"@platform","content":[{"kind":"text","text":"ios"}]}],"modifierTags":["@experimental"]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"StackToolbarProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}},"defaultValue":"StackToolbar"}]}}]},"defaultValue":"..."}],"packageName":"expo-router"}
\ No newline at end of file
diff --git a/docs/public/static/data/unversioned/expo-router/ui.json b/docs/public/static/data/unversioned/expo-router/ui.json
index 8dee0b3ab58999..c1611f0c8875a5 100644
--- a/docs/public/static/data/unversioned/expo-router/ui.json
+++ b/docs/public/static/data/unversioned/expo-router/ui.json
@@ -1 +1 @@
-{"schemaVersion":"2.0","name":"expo-router/ui","variant":"project","kind":1,"children":[{"name":"ExpoTabsNavigationProp","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","name":"ExpoTabsScreenOptions","package":"expo-router"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}],"name":"NavigationProp","package":"expo-router"}},{"name":"ExpoTabsNavigatorOptions","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DefaultNavigatorOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","name":"ExpoTabsScreenOptions","package":"expo-router"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"ExpoTabsNavigationProp","package":"expo-router"}],"name":"DefaultNavigatorOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabRouterOptions"},"name":"TabRouterOptions","package":"expo-router"},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"},{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"}]}},{"name":"ExpoTabsNavigatorScreenOptions","variant":"declaration","kind":2097152,"children":[{"name":"detachInactiveScreens","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"freezeOnBlur","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"lazy","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"unmountOnBlur","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"ExpoTabsProps","variant":"declaration","kind":2097152,"type":{"type":"reference","name":"ExpoTabsNavigatorOptions","package":"expo-router"}},{"name":"ExpoTabsScreenOptions","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigationOptions"},"name":"BottomTabNavigationOptions","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"title"},{"type":"literal","value":"lazy"},{"type":"literal","value":"freezeOnBlur"}]}],"name":"Pick","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"action","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}},{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"object"}},{"name":"title","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}},{"name":"Route","variant":"declaration","kind":2097152,"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"indexedAccess","indexType":{"type":"literal","value":"routes"},"objectType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}}}},{"name":"SwitchToOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options for "},{"kind":"code","text":"`switchTab`"},{"kind":"text","text":" function."}]},"children":[{"name":"resetOnFocus","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Navigate and reset the history on route focus."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"TabContextValue","variant":"declaration","kind":2097152,"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"options"},"objectType":{"type":"reference","name":"TabsDescriptor","package":"expo-router"}}},{"name":"TabListProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/View/ViewPropTypes.d.ts","qualifiedName":"ViewProps"},"name":"ViewProps","package":"react-native"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Forward props to child component and removes the extra "},{"kind":"code","text":"``"},{"kind":"text","text":". Useful for custom wrappers."}]},"type":{"type":"intrinsic","name":"boolean"}}]}}]}},{"name":"TabNavigationEventMap","variant":"declaration","kind":2097152,"children":[{"name":"tabLongPress","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires on long press on the tab in the tab bar."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}},{"name":"tabPress","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires on tapping on the tab in the tab bar."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"canPreventDefault","variant":"declaration","kind":1024,"type":{"type":"literal","value":true}},{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}}]},{"name":"TabsContextValue","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"The React Navigation custom navigator."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`useNavigationBuilder`"},{"kind":"text","text":"](https://reactnavigation.org/docs/custom-navigators/#usenavigationbuilder) hook from React Navigation for more information."}]}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"ReturnType"},"typeArguments":[{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/useNavigationBuilder.tsx","qualifiedName":"useNavigationBuilder"},"name":"useNavigationBuilder","package":"expo-router","preferValues":true}}],"name":"ReturnType","package":"typescript"}},{"name":"TabsDescriptor","variant":"declaration","kind":2097152,"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"indexedAccess","indexType":{"type":"literal","value":"descriptors"},"objectType":{"type":"reference","name":"TabsContextValue","package":"expo-router"}}}},{"name":"TabSlotProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentProps"},"typeArguments":[{"type":"query","queryType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/ScreenContainer.tsx","qualifiedName":"ScreenContainer"},"name":"ScreenContainer","package":"react-native-screens","preferValues":true}}],"name":"ComponentProps","package":"@types/react","qualifiedName":"React.ComponentProps"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"detachInactiveScreens","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Remove inactive screens."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"renderFn","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Override how the "},{"kind":"code","text":"`Screen`"},{"kind":"text","text":" component is rendered."}]},"type":{"type":"query","queryType":{"type":"reference","name":"defaultTabsSlotRender","package":"expo-router"}}}]}}]}},{"name":"TabsProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/View/ViewPropTypes.d.ts","qualifiedName":"ViewProps"},"name":"ViewProps","package":"react-native"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Forward props to child component and removes the extra "},{"kind":"code","text":"``"},{"kind":"text","text":". Useful for custom wrappers."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"options","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"UseTabsOptions","package":"expo-router"}}]}}]}},{"name":"TabsSlotRenderOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options provided to the "},{"kind":"code","text":"`UseTabSlotOptions`"},{"kind":"text","text":"."}]},"children":[{"name":"detachInactiveScreens","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Should the screen be unloaded when inactive."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of screen."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"isFocused","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the screen is focused."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"loaded","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the screen has been loaded."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"TabTriggerOptions","variant":"declaration","kind":2097152,"children":[{"name":"href","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"Href"},"name":"Href","package":"expo-router"}},{"name":"name","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]},{"name":"TabTriggerProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/ui/TabTrigger.tsx","qualifiedName":"PressablePropsWithoutFunctionChildren"},"name":"PressablePropsWithoutFunctionChildren","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Forward props to child component. Useful for custom wrappers."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"href","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Name of tab. Required when used within a "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"Href"},"name":"Href","package":"expo-router"}},{"name":"name","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Name of tab. When used within a "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":" this sets the name of the tab.\nOtherwise, this references the name."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"resetOnFocus","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Resets the route when switching to a tab."}]},"type":{"type":"intrinsic","name":"boolean"}}]}}]}},{"name":"TabTriggerSlotProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/ui/TabTrigger.tsx","qualifiedName":"PressablePropsWithoutFunctionChildren"},"name":"PressablePropsWithoutFunctionChildren","package":"expo-router"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/View/View.d.ts","qualifiedName":"View"},"name":"View","package":"react-native"}],"name":"React.RefAttributes","package":"@types/react"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"href","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"isFocused","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}}]}},{"name":"Trigger","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"string"},"objectType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/ui/common.tsx","qualifiedName":"TriggerMap"},"name":"TriggerMap","package":"expo-router"}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"isFocused","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"resolvedHref","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"route","variant":"declaration","kind":1024,"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"indexedAccess","indexType":{"type":"literal","value":"routes"},"objectType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}}}}]}}]}},{"name":"TriggerProps","variant":"declaration","kind":2097152,"children":[{"name":"isFocused","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"onLongPress","variant":"declaration","kind":1024,"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"onLongPress"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/Pressable/Pressable.d.ts","qualifiedName":"PressableProps"},"name":"PressableProps","package":"react-native"}}},{"name":"onPress","variant":"declaration","kind":1024,"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"onPress"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/Pressable/Pressable.d.ts","qualifiedName":"PressableProps"},"name":"PressableProps","package":"react-native"}}}]},{"name":"UseTabsOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options to provide to the Tab Router."}]},"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DefaultNavigatorOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"any"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","name":"ExpoTabsScreenOptions","package":"expo-router"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"intrinsic","name":"any"}],"name":"DefaultNavigatorOptions","package":"expo-router"},{"type":"literal","value":"children"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"backBehavior"},"objectType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabRouterOptions"},"name":"TabRouterOptions","package":"expo-router"}}}]}}]}},{"name":"UseTabsWithChildrenOptions","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"typeArguments":[{"type":"reference","name":"UseTabsOptions","package":"expo-router"}],"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}},{"name":"UseTabsWithTriggersOptions","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","name":"UseTabsOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"triggers","variant":"declaration","kind":1024,"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/ui/common.tsx","qualifiedName":"ScreenTrigger"},"name":"ScreenTrigger","package":"expo-router"}}}]}}]}},{"name":"UseTabTriggerResult","variant":"declaration","kind":2097152,"children":[{"name":"getTrigger","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"name","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"union","types":[{"type":"reference","name":"Trigger","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}]}}},{"name":"switchTab","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"name","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"string"}},{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"SwitchToOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"trigger","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"Trigger","package":"expo-router"}},{"name":"triggerProps","variant":"declaration","kind":1024,"type":{"type":"reference","name":"TriggerProps","package":"expo-router"}}]},{"name":"TabContext","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.Context"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"}],"name":"Context","package":"@types/react","qualifiedName":"React.Context"},"defaultValue":"..."},{"name":"TabList","variant":"declaration","kind":64,"signatures":[{"name":"TabList","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Wrapper component for "},{"kind":"code","text":"`TabTriggers`"},{"kind":"text","text":". "},{"kind":"code","text":"`TabTriggers`"},{"kind":"text","text":" within the "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":" define the tabs."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n \n \n \n\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"TabListProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Tabs","variant":"declaration","kind":64,"signatures":[{"name":"Tabs","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Root component for the headless tabs."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`useTabsWithChildren`"},{"kind":"text","text":"](#usetabswithchildrenoptions) for a hook version of this component."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n \n \n \n\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"TabsProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"TabSlot","variant":"declaration","kind":64,"signatures":[{"name":"TabSlot","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Renders the current tab."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`useTabSlot`"},{"kind":"text","text":"](#usetabslot) for a hook version of this component."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n \n \n \n\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"TabSlotProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"TabTrigger","variant":"declaration","kind":64,"signatures":[{"name":"TabTrigger","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Creates a trigger to navigate to a tab. When used as child of "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":", its\nfunctionality slightly changes since the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" prop is required,\nand the trigger also defines what routes are present in the "},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":".\n\nWhen used outside of "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":", this component no longer requires an "},{"kind":"code","text":"`href`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n \n \n \n\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"TabTriggerProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"useTabSlot","variant":"declaration","kind":64,"signatures":[{"name":"useTabSlot","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns a "},{"kind":"code","text":"`ReactElement`"},{"kind":"text","text":" of the current tab."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nfunction MyTabSlot() {\n const slot = useTabSlot();\n\n return slot;\n}\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"TabSlotProps","package":"expo-router"},"defaultValue":"{}"}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"useTabsWithChildren","variant":"declaration","kind":64,"signatures":[{"name":"useTabsWithChildren","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook version of "},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":". The returned NavigationContent component\nshould be rendered. Using the hook requires using the "},{"kind":"code","text":"``"},{"kind":"text","text":"\nand "},{"kind":"code","text":"``"},{"kind":"text","text":" components exported from Expo Router.\n\nThe "},{"kind":"code","text":"`useTabsWithTriggers()`"},{"kind":"text","text":" hook can be used for custom components."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":"](#tabs) for the component version of this hook."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nexport function MyTabs({ children }) {\n const { NavigationContent } = useTabsWithChildren({ children })\n\n return \n}\n```"}]}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"UseTabsWithChildrenOptions","package":"expo-router"}}],"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"describe","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Create a descriptor object for a route."}],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"Descriptor object"}]}]},"parameters":[{"name":"route","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Route object for which the descriptor should be created"}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}},{"name":"placeholder","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Whether the descriptor should be a placeholder, e.g. for a route not yet in the state"}]},"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"Descriptor"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"},{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersCommon"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"NavigationHelpersCommon","package":"expo-router"},{"type":"literal","value":"getParent"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation prop from a parent navigator based on the ID.\nIf an ID is provided, the navigation prop from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation prop from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"unknown","name":"..."}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationProp","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"setOptions","variant":"declaration","kind":2048,"signatures":[{"name":"setOptions","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Update the options for the route.\nThe options object will be shallow merged with default options object."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenOptions"},"name":"ScreenOptions","package":"expo-router","refersToTypeParameter":true}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventConsumer"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]}],"name":"EventConsumer","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}],"name":"Descriptor","package":"expo-router"}}]}}},{"name":"descriptors","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"Descriptor"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"},{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersCommon"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"NavigationHelpersCommon","package":"expo-router"},{"type":"literal","value":"getParent"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation prop from a parent navigator based on the ID.\nIf an ID is provided, the navigation prop from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation prop from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"unknown","name":"..."}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationProp","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"setOptions","variant":"declaration","kind":2048,"signatures":[{"name":"setOptions","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Update the options for the route.\nThe options object will be shallow merged with default options object."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenOptions"},"name":"ScreenOptions","package":"expo-router","refersToTypeParameter":true}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventConsumer"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]}],"name":"EventConsumer","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}],"name":"Descriptor","package":"expo-router"}],"name":"Record","package":"typescript"}},{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"canGoBack","variant":"declaration","kind":2048,"signatures":[{"name":"canGoBack","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Check if dispatching back action will be handled by navigation.\nNote that this method doesn't re-render screen when the result changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"dispatch","variant":"declaration","kind":2048,"signatures":[{"name":"dispatch","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Dispatch an action or an update function to the router.\nThe update function will receive the current state,"}]},"parameters":[{"name":"action","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Action object or update function."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"payload","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Additional data for the action"}]},"type":{"type":"intrinsic","name":"object"}},{"name":"source","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the route which dispatched this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the navigator which should handle this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the action (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")"}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"state","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true}],"name":"Readonly","package":"typescript"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}}]}}]}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"getId","variant":"declaration","kind":2048,"signatures":[{"name":"getId","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the name of the navigator specified in the "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop.\nIf no name is specified, returns "},{"kind":"code","text":"`undefined`"},{"kind":"text","text":"."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]},{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation helpers from a parent navigator based on the ID.\nIf an ID is provided, the navigation helper from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation helper from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationHelpers","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"getState","variant":"declaration","kind":2048,"signatures":[{"name":"getState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigator's state.\nNote that this method doesn't re-render screen when the result changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true}}]},{"name":"goBack","variant":"declaration","kind":2048,"signatures":[{"name":"goBack","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Go back to the previous route in history."}]},"type":{"type":"intrinsic","name":"void"}}]},{"name":"isFocused","variant":"declaration","kind":2048,"signatures":[{"name":"isFocused","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Check if the screen is focused. The method returns "},{"kind":"code","text":"`true`"},{"kind":"text","text":" if focused, "},{"kind":"code","text":"`false`"},{"kind":"text","text":" otherwise.\nNote that this method doesn't re-render screen when the focus changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":".\nTo get notified of focus changes, use "},{"kind":"code","text":"`addListener('focus', cb)`"},{"kind":"text","text":" and "},{"kind":"code","text":"`addListener('blur', cb)`"},{"kind":"text","text":".\nTo conditionally render content based on focus state, use the "},{"kind":"code","text":"`useIsFocused`"},{"kind":"text","text":" hook."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"navigate","variant":"declaration","kind":2048,"signatures":[{"name":"navigate","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a screen in the current or parent navigator.\nIf we're already on the screen, update the params instead."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}},{"type":"namedTupleMember","name":"options","isOptional":true,"element":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"pop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}},{"name":"navigate","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a route in current navigation tree."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"name","variant":"declaration","kind":1024,"type":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"name":"params","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}},{"name":"path","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"pop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"navigateDeprecated","variant":"declaration","kind":2048,"signatures":[{"name":"navigateDeprecated","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a route in current navigation tree."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`navigate`"},{"kind":"text","text":" instead."}]}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}},{"name":"navigateDeprecated","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a route in current navigation tree."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`navigate`"},{"kind":"text","text":" instead."}]}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"options","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Object with "},{"kind":"code","text":"`name`"},{"kind":"text","text":" for the route to navigate to, and a "},{"kind":"code","text":"`params`"},{"kind":"text","text":" object."}]},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"name","variant":"declaration","kind":1024,"type":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"name":"params","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}}]}},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"preload","variant":"declaration","kind":2048,"signatures":[{"name":"preload","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preloads the route in current navigation tree."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"reset","variant":"declaration","kind":2048,"signatures":[{"name":"reset","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Reset the navigation state to the provided state."}]},"parameters":[{"name":"state","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Navigation state object."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"PartialState"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}],"name":"PartialState","package":"expo-router"}]}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"unknown"},{"type":"intrinsic","name":"unknown"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventEmitter"},"typeArguments":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}],"name":"EventEmitter","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]}},{"name":"NavigationContent","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}}]}}}]},{"name":"useTabsWithTriggers","variant":"declaration","kind":64,"signatures":[{"name":"useTabsWithTriggers","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Alternative hook version of "},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":" that uses explicit triggers\ninstead of "},{"kind":"code","text":"`children`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":"](#tabs) for the component version of this hook."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nexport function MyTabs({ children }) {\n const { NavigationContent } = useTabsWithChildren({ triggers: [] })\n\n return \n}\n```"}]}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"UseTabsWithTriggersOptions","package":"expo-router"}}],"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"describe","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Create a descriptor object for a route."}],"blockTags":[{"tag":"@returns","content":[{"kind":"text","text":"Descriptor object"}]}]},"parameters":[{"name":"route","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Route object for which the descriptor should be created"}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}},{"name":"placeholder","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Whether the descriptor should be a placeholder, e.g. for a route not yet in the state"}]},"type":{"type":"intrinsic","name":"boolean"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"Descriptor"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"},{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersCommon"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"NavigationHelpersCommon","package":"expo-router"},{"type":"literal","value":"getParent"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation prop from a parent navigator based on the ID.\nIf an ID is provided, the navigation prop from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation prop from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"unknown","name":"..."}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationProp","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"setOptions","variant":"declaration","kind":2048,"signatures":[{"name":"setOptions","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Update the options for the route.\nThe options object will be shallow merged with default options object."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenOptions"},"name":"ScreenOptions","package":"expo-router","refersToTypeParameter":true}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventConsumer"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]}],"name":"EventConsumer","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}],"name":"Descriptor","package":"expo-router"}}]}}},{"name":"descriptors","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"Descriptor"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"},{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersCommon"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"NavigationHelpersCommon","package":"expo-router"},{"type":"literal","value":"getParent"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation prop from a parent navigator based on the ID.\nIf an ID is provided, the navigation prop from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation prop from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"unknown","name":"..."}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationProp","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"setOptions","variant":"declaration","kind":2048,"signatures":[{"name":"setOptions","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Update the options for the route.\nThe options object will be shallow merged with default options object."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenOptions"},"name":"ScreenOptions","package":"expo-router","refersToTypeParameter":true}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventConsumer"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]}],"name":"EventConsumer","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}],"name":"Descriptor","package":"expo-router"}],"name":"Record","package":"typescript"}},{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"canGoBack","variant":"declaration","kind":2048,"signatures":[{"name":"canGoBack","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Check if dispatching back action will be handled by navigation.\nNote that this method doesn't re-render screen when the result changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"dispatch","variant":"declaration","kind":2048,"signatures":[{"name":"dispatch","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Dispatch an action or an update function to the router.\nThe update function will receive the current state,"}]},"parameters":[{"name":"action","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Action object or update function."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"payload","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Additional data for the action"}]},"type":{"type":"intrinsic","name":"object"}},{"name":"source","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the route which dispatched this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"target","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Key of the navigator which should handle this action."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Type of the action (e.g. "},{"kind":"code","text":"`NAVIGATE`"},{"kind":"text","text":")"}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"state","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true}],"name":"Readonly","package":"typescript"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}}]}}]}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"getId","variant":"declaration","kind":2048,"signatures":[{"name":"getId","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the name of the navigator specified in the "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop.\nIf no name is specified, returns "},{"kind":"code","text":"`undefined`"},{"kind":"text","text":"."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]},{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation helpers from a parent navigator based on the ID.\nIf an ID is provided, the navigation helper from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation helper from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationHelpers","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"getState","variant":"declaration","kind":2048,"signatures":[{"name":"getState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigator's state.\nNote that this method doesn't re-render screen when the result changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true}}]},{"name":"goBack","variant":"declaration","kind":2048,"signatures":[{"name":"goBack","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Go back to the previous route in history."}]},"type":{"type":"intrinsic","name":"void"}}]},{"name":"isFocused","variant":"declaration","kind":2048,"signatures":[{"name":"isFocused","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Check if the screen is focused. The method returns "},{"kind":"code","text":"`true`"},{"kind":"text","text":" if focused, "},{"kind":"code","text":"`false`"},{"kind":"text","text":" otherwise.\nNote that this method doesn't re-render screen when the focus changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":".\nTo get notified of focus changes, use "},{"kind":"code","text":"`addListener('focus', cb)`"},{"kind":"text","text":" and "},{"kind":"code","text":"`addListener('blur', cb)`"},{"kind":"text","text":".\nTo conditionally render content based on focus state, use the "},{"kind":"code","text":"`useIsFocused`"},{"kind":"text","text":" hook."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"navigate","variant":"declaration","kind":2048,"signatures":[{"name":"navigate","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a screen in the current or parent navigator.\nIf we're already on the screen, update the params instead."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}},{"type":"namedTupleMember","name":"options","isOptional":true,"element":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"pop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}},{"name":"navigate","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a route in current navigation tree."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"name","variant":"declaration","kind":1024,"type":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"name":"params","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}},{"name":"path","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"pop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"navigateDeprecated","variant":"declaration","kind":2048,"signatures":[{"name":"navigateDeprecated","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a route in current navigation tree."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`navigate`"},{"kind":"text","text":" instead."}]}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}},{"name":"navigateDeprecated","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a route in current navigation tree."}],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"Use "},{"kind":"code","text":"`navigate`"},{"kind":"text","text":" instead."}]}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"options","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Object with "},{"kind":"code","text":"`name`"},{"kind":"text","text":" for the route to navigate to, and a "},{"kind":"code","text":"`params`"},{"kind":"text","text":" object."}]},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"name","variant":"declaration","kind":1024,"type":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"name":"params","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}}]}},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"preload","variant":"declaration","kind":2048,"signatures":[{"name":"preload","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preloads the route in current navigation tree."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"reset","variant":"declaration","kind":2048,"signatures":[{"name":"reset","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Reset the navigation state to the provided state."}]},"parameters":[{"name":"state","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Navigation state object."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"PartialState"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the navigation state has been rehydrated."}]},"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nDuring rehydration, the state will be discarded if type doesn't match with router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}],"name":"PartialState","package":"expo-router"}]}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"unknown"},{"type":"intrinsic","name":"unknown"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventEmitter"},"typeArguments":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}],"name":"EventEmitter","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]}},{"name":"NavigationContent","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}}]}}}]},{"name":"useTabTrigger","variant":"declaration","kind":64,"signatures":[{"name":"useTabTrigger","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Utility hook creating custom "},{"kind":"code","text":"`TabTrigger`"},{"kind":"text","text":"."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"TabTriggerProps","package":"expo-router"}}],"type":{"type":"reference","name":"UseTabTriggerResult","package":"expo-router"}}]}],"packageName":"expo-router"}
\ No newline at end of file
+{"schemaVersion":"2.0","name":"expo-router/ui","variant":"project","kind":1,"children":[{"name":"ExpoTabsNavigationProp","variant":"declaration","kind":2097152,"typeParameters":[{"name":"ParamList","variant":"typeParam","kind":131072,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}},{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}},"default":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true}}},{"name":"NavigatorID","variant":"typeParam","kind":131072,"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},"default":{"type":"intrinsic","name":"undefined"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","name":"ParamList","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},{"type":"reference","name":"NavigatorID","package":"expo-router","refersToTypeParameter":true},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","name":"ExpoTabsScreenOptions","package":"expo-router"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}],"name":"NavigationProp","package":"expo-router"}},{"name":"ExpoTabsNavigatorOptions","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DefaultNavigatorOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","name":"ExpoTabsScreenOptions","package":"expo-router"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"ExpoTabsNavigationProp","package":"expo-router"}],"name":"DefaultNavigatorOptions","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabRouterOptions"},"name":"TabRouterOptions","package":"expo-router"},{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"}]},{"type":"literal","value":"initialRouteName"}],"name":"Omit","package":"typescript"}},{"name":"ExpoTabsNavigatorScreenOptions","variant":"declaration","kind":2097152,"children":[{"name":"detachInactiveScreens","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"freezeOnBlur","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@deprecated","content":[{"kind":"text","text":"This option has no effect in Expo Router."}]}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"lazy","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"unmountOnBlur","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"ExpoTabsProps","variant":"declaration","kind":2097152,"type":{"type":"reference","name":"ExpoTabsNavigatorOptions","package":"expo-router"}},{"name":"ExpoTabsScreenOptions","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Pick"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/bottom-tabs/types.tsx","qualifiedName":"BottomTabNavigationOptions"},"name":"BottomTabNavigationOptions","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"title"},{"type":"literal","value":"lazy"},{"type":"literal","value":"freezeOnBlur"},{"type":"literal","value":"hidden"}]}],"name":"Pick","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"action","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}},{"name":"params","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"object"}},{"name":"title","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]}}]}},{"name":"Route","variant":"declaration","kind":2097152,"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"indexedAccess","indexType":{"type":"literal","value":"routes"},"objectType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabNavigationState","package":"expo-router"}}}},{"name":"SwitchToOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options for "},{"kind":"code","text":"`switchTab`"},{"kind":"text","text":" function."}]},"children":[{"name":"resetOnFocus","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Navigate and reset the history on route focus."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"TabContextValue","variant":"declaration","kind":2097152,"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"options"},"objectType":{"type":"reference","name":"TabsDescriptor","package":"expo-router"}}},{"name":"TabListProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/View/ViewPropTypes.d.ts","qualifiedName":"ViewProps"},"name":"ViewProps","package":"react-native"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Forward props to child component and removes the extra "},{"kind":"code","text":"``"},{"kind":"text","text":". Useful for custom wrappers."}]},"type":{"type":"intrinsic","name":"boolean"}}]}}]}},{"name":"TabNavigationEventMap","variant":"declaration","kind":2097152,"children":[{"name":"tabLongPress","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires on long press on the tab in the tab bar."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}},{"name":"tabPress","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Event which fires on tapping on the tab in the tab bar."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"canPreventDefault","variant":"declaration","kind":1024,"type":{"type":"literal","value":true}},{"name":"data","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"undefined"}}]}}}]},{"name":"TabsContextValue","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"The React Navigation custom navigator."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`useNavigationBuilder`"},{"kind":"text","text":"](https://reactnavigation.org/docs/custom-navigators/#usenavigationbuilder) hook from React Navigation for more information."}]}]},"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"ReturnType"},"typeArguments":[{"type":"query","queryType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/useNavigationBuilder.tsx","qualifiedName":"useNavigationBuilder"},"name":"useNavigationBuilder","package":"expo-router","preferValues":true}}],"name":"ReturnType","package":"typescript"}},{"name":"TabsDescriptor","variant":"declaration","kind":2097152,"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"indexedAccess","indexType":{"type":"literal","value":"descriptors"},"objectType":{"type":"reference","name":"TabsContextValue","package":"expo-router"}}}},{"name":"TabSlotProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ComponentProps"},"typeArguments":[{"type":"query","queryType":{"type":"reference","target":{"packageName":"react-native-screens","packagePath":"src/components/ScreenContainer.tsx","qualifiedName":"ScreenContainer"},"name":"ScreenContainer","package":"react-native-screens","preferValues":true}}],"name":"ComponentProps","package":"@types/react","qualifiedName":"React.ComponentProps"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"detachInactiveScreens","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Remove inactive screens."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"renderFn","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Override how the "},{"kind":"code","text":"`Screen`"},{"kind":"text","text":" component is rendered."}]},"type":{"type":"query","queryType":{"type":"reference","name":"defaultTabsSlotRender","package":"expo-router"}}}]}}]}},{"name":"TabsProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/View/ViewPropTypes.d.ts","qualifiedName":"ViewProps"},"name":"ViewProps","package":"react-native"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Forward props to child component and removes the extra "},{"kind":"code","text":"``"},{"kind":"text","text":". Useful for custom wrappers."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"options","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"UseTabsOptions","package":"expo-router"}}]}}]}},{"name":"TabsSlotRenderOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options provided to the "},{"kind":"code","text":"`UseTabSlotOptions`"},{"kind":"text","text":"."}]},"children":[{"name":"detachInactiveScreens","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Should the screen be unloaded when inactive."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of screen."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"isFocused","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the screen is focused."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"loaded","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Whether the screen has been loaded."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"TabTriggerOptions","variant":"declaration","kind":2097152,"children":[{"name":"href","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"Href"},"name":"Href","package":"expo-router"}},{"name":"name","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}]},{"name":"TabTriggerProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/ui/TabTrigger.tsx","qualifiedName":"PressablePropsWithoutFunctionChildren"},"name":"PressablePropsWithoutFunctionChildren","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"asChild","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Forward props to child component. Useful for custom wrappers."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"href","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Name of tab. Required when used within a "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/typed-routes/types.ts","qualifiedName":"Href"},"name":"Href","package":"expo-router"}},{"name":"name","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Name of tab. When used within a "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":" this sets the name of the tab.\nOtherwise, this references the name."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"resetOnFocus","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Resets the route when switching to a tab."}]},"type":{"type":"intrinsic","name":"boolean"}}]}}]}},{"name":"TabTriggerSlotProps","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/ui/TabTrigger.tsx","qualifiedName":"PressablePropsWithoutFunctionChildren"},"name":"PressablePropsWithoutFunctionChildren","package":"expo-router"},{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.RefAttributes"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/View/View.d.ts","qualifiedName":"View"},"name":"View","package":"react-native"}],"name":"React.RefAttributes","package":"@types/react"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"href","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"isFocused","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}}]}},{"name":"Trigger","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"string"},"objectType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/ui/common.tsx","qualifiedName":"TriggerMap"},"name":"TriggerMap","package":"expo-router"}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"hidden","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"isFocused","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"resolvedHref","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}},{"name":"route","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"intrinsic","name":"number"},"objectType":{"type":"indexedAccess","indexType":{"type":"literal","value":"routes"},"objectType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}}}}]}}]}},{"name":"TriggerProps","variant":"declaration","kind":2097152,"children":[{"name":"isFocused","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"boolean"}},{"name":"onLongPress","variant":"declaration","kind":1024,"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"onLongPress"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/Pressable/Pressable.d.ts","qualifiedName":"PressableProps"},"name":"PressableProps","package":"react-native"}}},{"name":"onPress","variant":"declaration","kind":1024,"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"onPress"},"objectType":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/Components/Pressable/Pressable.d.ts","qualifiedName":"PressableProps"},"name":"PressableProps","package":"react-native"}}}]},{"name":"UseTabsOptions","variant":"declaration","kind":2097152,"comment":{"summary":[{"kind":"text","text":"Options to provide to the Tab Router."}]},"type":{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DefaultNavigatorOptions"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"any"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"},{"type":"reference","name":"ExpoTabsScreenOptions","package":"expo-router"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"intrinsic","name":"any"}],"name":"DefaultNavigatorOptions","package":"expo-router"},{"type":"union","types":[{"type":"literal","value":"children"},{"type":"literal","value":"initialRouteName"}]}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"backBehavior","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"indexedAccess","indexType":{"type":"literal","value":"backBehavior"},"objectType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabRouterOptions"},"name":"TabRouterOptions","package":"expo-router"}}}]}}]}},{"name":"UseTabsWithChildrenOptions","variant":"declaration","kind":2097152,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.PropsWithChildren"},"typeArguments":[{"type":"reference","name":"UseTabsOptions","package":"expo-router"}],"name":"PropsWithChildren","package":"@types/react","qualifiedName":"React.PropsWithChildren"}},{"name":"UseTabsWithTriggersOptions","variant":"declaration","kind":2097152,"type":{"type":"intersection","types":[{"type":"reference","name":"UseTabsOptions","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"triggers","variant":"declaration","kind":1024,"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/ui/common.tsx","qualifiedName":"ScreenTrigger"},"name":"ScreenTrigger","package":"expo-router"}}}]}}]}},{"name":"UseTabTriggerResult","variant":"declaration","kind":2097152,"children":[{"name":"getTrigger","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"name","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"union","types":[{"type":"reference","name":"Trigger","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}]}}},{"name":"switchTab","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"name","variant":"param","kind":32768,"type":{"type":"intrinsic","name":"string"}},{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"SwitchToOptions","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"trigger","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"reference","name":"Trigger","package":"expo-router"}},{"name":"triggerProps","variant":"declaration","kind":1024,"type":{"type":"reference","name":"TriggerProps","package":"expo-router"}}]},{"name":"TabContext","variant":"declaration","kind":32,"flags":{"isConst":true},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.Context"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"}],"name":"Context","package":"@types/react","qualifiedName":"React.Context"},"defaultValue":"..."},{"name":"TabList","variant":"declaration","kind":64,"signatures":[{"name":"TabList","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Wrapper component for "},{"kind":"code","text":"`TabTriggers`"},{"kind":"text","text":". "},{"kind":"code","text":"`TabTriggers`"},{"kind":"text","text":" within the "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":" define the tabs."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n \n \n \n\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"TabListProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Tabs","variant":"declaration","kind":64,"signatures":[{"name":"Tabs","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Root component for the headless tabs."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`useTabsWithChildren`"},{"kind":"text","text":"](#usetabswithchildrenoptions) for a hook version of this component."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n \n \n \n\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"TabsProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"TabSlot","variant":"declaration","kind":64,"signatures":[{"name":"TabSlot","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Renders the current tab."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`useTabSlot`"},{"kind":"text","text":"](#usetabslot) for a hook version of this component."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n \n \n \n\n```"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"TabSlotProps","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"TabTrigger","variant":"declaration","kind":64,"signatures":[{"name":"TabTrigger","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Creates a trigger to navigate to a tab. When used as child of "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":", its\nfunctionality slightly changes since the "},{"kind":"code","text":"`href`"},{"kind":"text","text":" prop is required,\nand the trigger also defines what routes are present in the "},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":".\n\nWhen used outside of "},{"kind":"code","text":"`TabList`"},{"kind":"text","text":", this component no longer requires an "},{"kind":"code","text":"`href`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\n\n \n \n \n \n\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"TabTriggerProps","package":"expo-router"}}],"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"},{"type":"literal","value":null}]}}]},{"name":"useTabSlot","variant":"declaration","kind":64,"signatures":[{"name":"useTabSlot","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns a "},{"kind":"code","text":"`ReactElement`"},{"kind":"text","text":" of the current tab."}],"blockTags":[{"tag":"@example","content":[{"kind":"code","text":"```tsx\nfunction MyTabSlot() {\n const slot = useTabSlot();\n\n return slot;\n}\n```"}]}]},"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reference","name":"TabSlotProps","package":"expo-router"},"defaultValue":"{}"}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"useTabsWithChildren","variant":"declaration","kind":64,"signatures":[{"name":"useTabsWithChildren","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Hook version of "},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":". The returned NavigationContent component\nshould be rendered. Using the hook requires using the "},{"kind":"code","text":"``"},{"kind":"text","text":"\nand "},{"kind":"code","text":"``"},{"kind":"text","text":" components exported from Expo Router.\n\nThe "},{"kind":"code","text":"`useTabsWithTriggers()`"},{"kind":"text","text":" hook can be used for custom components."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":"](#tabs) for the component version of this hook."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nexport function MyTabs({ children }) {\n const { NavigationContent } = useTabsWithChildren({ children })\n\n return \n}\n```"}]}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"UseTabsWithChildrenOptions","package":"expo-router"}}],"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"describe","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"route","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DescriptorRouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"DescriptorRouteProp","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"Descriptor"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"},{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersCommon"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"NavigationHelpersCommon","package":"expo-router"},{"type":"literal","value":"getParent"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation prop from a parent navigator based on the ID.\nIf an ID is provided, the navigation prop from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation prop from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"unknown","name":"..."}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationProp","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"setOptions","variant":"declaration","kind":2048,"signatures":[{"name":"setOptions","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Update the options for the route.\nThe options object will be shallow merged with default options object."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenOptions"},"name":"ScreenOptions","package":"expo-router","refersToTypeParameter":true}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventConsumer"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]}],"name":"EventConsumer","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}],"name":"Descriptor","package":"expo-router"}}]}}},{"name":"descriptors","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"Descriptor"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"},{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersCommon"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"NavigationHelpersCommon","package":"expo-router"},{"type":"literal","value":"getParent"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation prop from a parent navigator based on the ID.\nIf an ID is provided, the navigation prop from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation prop from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"unknown","name":"..."}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationProp","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"setOptions","variant":"declaration","kind":2048,"signatures":[{"name":"setOptions","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Update the options for the route.\nThe options object will be shallow merged with default options object."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenOptions"},"name":"ScreenOptions","package":"expo-router","refersToTypeParameter":true}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventConsumer"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]}],"name":"EventConsumer","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}],"name":"Descriptor","package":"expo-router"}],"name":"Record","package":"typescript"}},{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"canGoBack","variant":"declaration","kind":2048,"signatures":[{"name":"canGoBack","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Check if dispatching back action will be handled by navigation.\nNote that this method doesn't re-render screen when the result changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"dispatch","variant":"declaration","kind":2048,"signatures":[{"name":"dispatch","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Queues an action to be dispatched after the current React commit."}]},"parameters":[{"name":"action","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Action object to dispatch."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"dispatchSync","variant":"declaration","kind":2048,"signatures":[{"name":"dispatchSync","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Dispatches an action synchronously."}]},"parameters":[{"name":"action","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Action object to dispatch synchronously."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"getId","variant":"declaration","kind":2048,"signatures":[{"name":"getId","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the name of the navigator specified in the "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop.\nIf no name is specified, returns "},{"kind":"code","text":"`undefined`"},{"kind":"text","text":"."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]},{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation helpers from a parent navigator based on the ID.\nIf an ID is provided, the navigation helper from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation helper from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationHelpers","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"getState","variant":"declaration","kind":2048,"signatures":[{"name":"getState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigator's state.\nNote that this method doesn't re-render screen when the result changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true}}]},{"name":"goBack","variant":"declaration","kind":2048,"signatures":[{"name":"goBack","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Go back to the previous route in history."}]},"type":{"type":"intrinsic","name":"void"}}]},{"name":"isFocused","variant":"declaration","kind":2048,"signatures":[{"name":"isFocused","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Check if the screen is focused. The method returns "},{"kind":"code","text":"`true`"},{"kind":"text","text":" if focused, "},{"kind":"code","text":"`false`"},{"kind":"text","text":" otherwise.\nNote that this method doesn't re-render screen when the focus changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":".\nTo get notified of focus changes, use "},{"kind":"code","text":"`addListener('focus', cb)`"},{"kind":"text","text":" and "},{"kind":"code","text":"`addListener('blur', cb)`"},{"kind":"text","text":".\nTo conditionally render content based on focus state, use the "},{"kind":"code","text":"`useIsFocused`"},{"kind":"text","text":" hook."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"navigate","variant":"declaration","kind":2048,"signatures":[{"name":"navigate","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a screen in the current or parent navigator.\nIf we're already on the screen, update the params instead."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}},{"type":"namedTupleMember","name":"options","isOptional":true,"element":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"pop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}},{"name":"navigate","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a route in current navigation tree."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"name","variant":"declaration","kind":1024,"type":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"name":"params","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}},{"name":"path","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"pop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"preload","variant":"declaration","kind":2048,"signatures":[{"name":"preload","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preloads the route in current navigation tree."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"reset","variant":"declaration","kind":2048,"signatures":[{"name":"reset","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Reset the navigation state to the provided state."}]},"parameters":[{"name":"state","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Navigation state object."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"PartialState"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}],"name":"PartialState","package":"expo-router"}]}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"unknown"},{"type":"intrinsic","name":"unknown"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventEmitter"},"typeArguments":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}],"name":"EventEmitter","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]}},{"name":"NavigationContent","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}}]}}}]},{"name":"useTabsWithTriggers","variant":"declaration","kind":64,"signatures":[{"name":"useTabsWithTriggers","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Alternative hook version of "},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":" that uses explicit triggers\ninstead of "},{"kind":"code","text":"`children`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@see","content":[{"kind":"text","text":"["},{"kind":"code","text":"`Tabs`"},{"kind":"text","text":"](#tabs) for the component version of this hook."}]},{"tag":"@example","content":[{"kind":"code","text":"```tsx\nexport function MyTabs({ children }) {\n const { NavigationContent } = useTabsWithChildren({ triggers: [] })\n\n return \n}\n```"}]}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"UseTabsWithTriggersOptions","package":"expo-router"}}],"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"describe","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"route","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"DescriptorRouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"DescriptorRouteProp","package":"expo-router"}}],"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"Descriptor"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"},{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersCommon"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"NavigationHelpersCommon","package":"expo-router"},{"type":"literal","value":"getParent"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation prop from a parent navigator based on the ID.\nIf an ID is provided, the navigation prop from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation prop from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"unknown","name":"..."}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationProp","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"setOptions","variant":"declaration","kind":2048,"signatures":[{"name":"setOptions","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Update the options for the route.\nThe options object will be shallow merged with default options object."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenOptions"},"name":"ScreenOptions","package":"expo-router","refersToTypeParameter":true}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventConsumer"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]}],"name":"EventConsumer","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}],"name":"Descriptor","package":"expo-router"}}]}}},{"name":"descriptors","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Record"},"typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"Descriptor"},"typeArguments":[{"type":"reference","name":"ExpoTabsNavigatorScreenOptions","package":"expo-router"},{"type":"intersection","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Omit"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersCommon"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"NavigationHelpersCommon","package":"expo-router"},{"type":"literal","value":"getParent"}],"name":"Omit","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation prop from a parent navigator based on the ID.\nIf an ID is provided, the navigation prop from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation prop from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]},{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"unknown","name":"..."}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"unknown","name":"..."},{"type":"unknown","name":"..."}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationProp","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"setOptions","variant":"declaration","kind":2048,"signatures":[{"name":"setOptions","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Update the options for the route.\nThe options object will be shallow merged with default options object."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Partial"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"ScreenOptions"},"name":"ScreenOptions","package":"expo-router","refersToTypeParameter":true}],"name":"Partial","package":"typescript"}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventConsumer"},"typeArguments":[{"type":"intersection","types":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventMapCore"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}],"name":"EventMapCore","package":"expo-router"}]}],"name":"EventConsumer","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"},{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"RouteProp"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"RouteProp","package":"expo-router"}],"name":"Descriptor","package":"expo-router"}],"name":"Record","package":"typescript"}},{"name":"navigation","variant":"declaration","kind":1024,"type":{"type":"intersection","types":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"canGoBack","variant":"declaration","kind":2048,"signatures":[{"name":"canGoBack","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Check if dispatching back action will be handled by navigation.\nNote that this method doesn't re-render screen when the result changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":"."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"dispatch","variant":"declaration","kind":2048,"signatures":[{"name":"dispatch","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Queues an action to be dispatched after the current React commit."}]},"parameters":[{"name":"action","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Action object to dispatch."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"dispatchSync","variant":"declaration","kind":2048,"signatures":[{"name":"dispatchSync","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Dispatches an action synchronously."}]},"parameters":[{"name":"action","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Action object to dispatch synchronously."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationAction"},"name":"NavigationAction","package":"expo-router"}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"getId","variant":"declaration","kind":2048,"signatures":[{"name":"getId","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the name of the navigator specified in the "},{"kind":"code","text":"`name`"},{"kind":"text","text":" prop.\nIf no name is specified, returns "},{"kind":"code","text":"`undefined`"},{"kind":"text","text":"."}]},"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"undefined"}]}}]},{"name":"getParent","variant":"declaration","kind":2048,"signatures":[{"name":"getParent","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigation helpers from a parent navigator based on the ID.\nIf an ID is provided, the navigation helper from the parent navigator with matching ID (including current) will be returned.\nIf no ID is provided, the navigation helper from the immediate parent navigator will be returned."}]},"typeParameters":[{"name":"T","variant":"typeParam","kind":131072,"default":{"type":"union","types":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536}}],"name":"NavigationHelpers","package":"expo-router"},{"type":"intrinsic","name":"undefined"}]}}],"parameters":[{"name":"id","variant":"param","kind":32768,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional ID of a parent navigator."}]},"type":{"type":"intrinsic","name":"string"}}],"type":{"type":"reference","name":"T","package":"expo-router","refersToTypeParameter":true}}]},{"name":"getState","variant":"declaration","kind":2048,"signatures":[{"name":"getState","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Returns the navigator's state.\nNote that this method doesn't re-render screen when the result changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"State"},"name":"State","package":"expo-router","refersToTypeParameter":true}}]},{"name":"goBack","variant":"declaration","kind":2048,"signatures":[{"name":"goBack","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Go back to the previous route in history."}]},"type":{"type":"intrinsic","name":"void"}}]},{"name":"isFocused","variant":"declaration","kind":2048,"signatures":[{"name":"isFocused","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Check if the screen is focused. The method returns "},{"kind":"code","text":"`true`"},{"kind":"text","text":" if focused, "},{"kind":"code","text":"`false`"},{"kind":"text","text":" otherwise.\nNote that this method doesn't re-render screen when the focus changes. So don't use it in "},{"kind":"code","text":"`render`"},{"kind":"text","text":".\nTo get notified of focus changes, use "},{"kind":"code","text":"`addListener('focus', cb)`"},{"kind":"text","text":" and "},{"kind":"code","text":"`addListener('blur', cb)`"},{"kind":"text","text":".\nTo conditionally render content based on focus state, use the "},{"kind":"code","text":"`useIsFocused`"},{"kind":"text","text":" hook."}]},"type":{"type":"intrinsic","name":"boolean"}}]},{"name":"navigate","variant":"declaration","kind":2048,"signatures":[{"name":"navigate","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a screen in the current or parent navigator.\nIf we're already on the screen, update the params instead."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}},{"type":"namedTupleMember","name":"options","isOptional":true,"element":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"pop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}},{"name":"navigate","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Navigate to a route in current navigation tree."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"merge","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}},{"name":"name","variant":"declaration","kind":1024,"type":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"name":"params","variant":"declaration","kind":1024,"type":{"type":"union","types":[{"type":"intrinsic","name":"object"},{"type":"intrinsic","name":"undefined"}]}},{"name":"path","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"string"}},{"name":"pop","variant":"declaration","kind":1024,"flags":{"isOptional":true},"type":{"type":"intrinsic","name":"boolean"}}]}},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"preload","variant":"declaration","kind":2048,"signatures":[{"name":"preload","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preloads the route in current navigation tree."}]},"typeParameters":[{"name":"RouteName","variant":"typeParam","kind":131072,"type":{"type":"intrinsic","name":"string"}}],"parameters":[{"name":"args","variant":"param","kind":32768,"flags":{"isRest":true},"type":{"type":"conditional","checkType":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true},"extendsType":{"type":"intrinsic","name":"unknown"},"trueType":{"type":"tuple","elements":[{"type":"namedTupleMember","name":"screen","isOptional":false,"element":{"type":"reference","name":"RouteName","package":"expo-router","refersToTypeParameter":true}},{"type":"namedTupleMember","name":"params","isOptional":true,"element":{"type":"intrinsic","name":"object"}}]},"falseType":{"type":"intrinsic","name":"never"}}}],"type":{"type":"intrinsic","name":"void"}}]},{"name":"reset","variant":"declaration","kind":2048,"signatures":[{"name":"reset","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Reset the navigation state to the provided state."}]},"parameters":[{"name":"state","variant":"param","kind":32768,"comment":{"summary":[{"kind":"text","text":"Navigation state object."}]},"type":{"type":"union","types":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"PartialState"},"typeArguments":[{"type":"reference","target":{"packageName":"typescript","packagePath":"lib/lib.es5.d.ts","qualifiedName":"Readonly"},"typeArguments":[{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"history","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Alternative entries for history."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"unknown"}}},{"name":"index","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Index of the currently focused route."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"key","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Unique key for the navigation state."}]},"type":{"type":"intrinsic","name":"string"}},{"name":"routeKeySeq","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"Sequence used to mint route keys in this navigation state."}]},"type":{"type":"intrinsic","name":"number"}},{"name":"routeNames","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of valid route names as defined in the screen components."}]},"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"name":"routes","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"List of rendered routes."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"NavigationRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationRoute","package":"expo-router"}}},{"name":"stale","variant":"declaration","kind":1024,"type":{"type":"literal","value":false}},{"name":"type","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Custom type for the state, whether it's for tab, stack, drawer etc.\nA navigator discards state whose type doesn't match its router type.\nIt can also be used to detect the type of the navigator we're dealing with."}]},"type":{"type":"intrinsic","name":"string"}}]}}],"name":"Readonly","package":"typescript"}],"name":"PartialState","package":"expo-router"}]}}],"type":{"type":"intrinsic","name":"void"}}]}]}},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"PrivateValueStore"},"typeArguments":[{"type":"tuple","elements":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"unknown"},{"type":"intrinsic","name":"unknown"}]}],"name":"PrivateValueStore","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"EventEmitter"},"typeArguments":[{"type":"reference","name":"TabNavigationEventMap","package":"expo-router"}],"name":"EventEmitter","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/core/types.tsx","qualifiedName":"NavigationHelpersRoute"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"},{"type":"intrinsic","name":"string"}],"name":"NavigationHelpersRoute","package":"expo-router"},{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabActionHelpers"},"typeArguments":[{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/types.tsx","qualifiedName":"ParamListBase"},"name":"ParamListBase","package":"expo-router"}],"name":"TabActionHelpers","package":"expo-router"}]}},{"name":"NavigationContent","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"parameters":[{"name":"__namedParameters","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"state","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"expo-router","packagePath":"src/react-navigation/routers/TabRouter.tsx","qualifiedName":"TabNavigationState"},"typeArguments":[{"type":"intrinsic","name":"any"}],"name":"TabNavigationState","package":"expo-router"}}]}}}]},{"name":"useTabTrigger","variant":"declaration","kind":64,"signatures":[{"name":"useTabTrigger","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Utility hook creating custom "},{"kind":"code","text":"`TabTrigger`"},{"kind":"text","text":"."}]},"parameters":[{"name":"options","variant":"param","kind":32768,"type":{"type":"reference","name":"TabTriggerProps","package":"expo-router"}}],"type":{"type":"reference","name":"UseTabTriggerResult","package":"expo-router"}}]}],"packageName":"expo-router"}
\ No newline at end of file
diff --git a/docs/public/static/data/unversioned/expo-ui/jetpack-compose/dropdownmenu.json b/docs/public/static/data/unversioned/expo-ui/jetpack-compose/dropdownmenu.json
index 602efec1620f87..b556b254688258 100644
--- a/docs/public/static/data/unversioned/expo-ui/jetpack-compose/dropdownmenu.json
+++ b/docs/public/static/data/unversioned/expo-ui/jetpack-compose/dropdownmenu.json
@@ -1 +1 @@
-{"schemaVersion":"2.0","name":"expo-ui/jetpack-compose/dropdownmenu","variant":"project","kind":1,"children":[{"name":"DropdownMenuProps","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"Props of the "},{"kind":"code","text":"`DropdownMenu`"},{"kind":"text","text":" component."}]},"children":[{"name":"children","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The contents of the submenu are used as an anchor for the dropdown menu.\nThe children will be wrapped in a pressable element, which triggers opening of the dropdown menu."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the container holding the dropdown menu items."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"expanded","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the dropdown menu is expanded (visible)."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"modifiers","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Modifiers for the component."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/types.ts","qualifiedName":"ModifierConfig"},"name":"ModifierConfig","package":"@expo/ui"}}},{"name":"onDismissRequest","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback fired when the menu requests to be dismissed (e.g. tapping outside).\nMust be provided when "},{"kind":"code","text":"`expanded`"},{"kind":"text","text":" is "},{"kind":"code","text":"`true`"},{"kind":"text","text":" to allow the menu to close."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional styles to apply to the "},{"kind":"code","text":"`DropdownMenu`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}}]},{"name":"DropdownMenu","variant":"declaration","kind":64,"children":[{"name":"Items","variant":"declaration","kind":1024,"type":{"type":"query","queryType":{"type":"reference","name":"Items","package":"@expo/ui"}}},{"name":"Preview","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preview content shown during long press (iOS only)."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Trigger","variant":"declaration","kind":1024,"type":{"type":"query","queryType":{"type":"reference","name":"Trigger","package":"@expo/ui"}}}],"signatures":[{"name":"DropdownMenu","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"DropdownMenuProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"DropdownMenuItem","variant":"declaration","kind":64,"children":[{"name":"LeadingIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A leading icon slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap an "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" or other content to display before the menu item text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Text","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A text slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap text content to display as the menu item label."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"TrailingIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A trailing icon slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap an "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" or other content to display after the menu item text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}}],"signatures":[{"name":"DropdownMenuItem","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A dropdown menu item component that wraps Compose's "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nShould be used inside "},{"kind":"code","text":"`DropdownMenu.Items`"},{"kind":"text","text":" or "},{"kind":"code","text":"`ExposedDropdownMenu`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/jetpack-compose/DropdownMenu/DropdownMenuItem.tsx","qualifiedName":"DropdownMenuItemProps"},"name":"DropdownMenuItemProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Items","variant":"declaration","kind":64,"children":[{"name":"tag","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}],"signatures":[{"name":"Items","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Container for items displayed in the dropdown menu.\nChildren should be "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":" components or other native views."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Preview","variant":"declaration","kind":64,"signatures":[{"name":"Preview","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preview content shown during long press (iOS only)."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Trigger","variant":"declaration","kind":64,"children":[{"name":"tag","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}],"signatures":[{"name":"Trigger","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Container for the trigger element that opens the dropdown menu."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"}
\ No newline at end of file
+{"schemaVersion":"2.0","name":"expo-ui/jetpack-compose/dropdownmenu","variant":"project","kind":1,"children":[{"name":"DropdownMenuProps","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"Props of the "},{"kind":"code","text":"`DropdownMenu`"},{"kind":"text","text":" component."}]},"children":[{"name":"children","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The contents of the submenu are used as an anchor for the dropdown menu.\nThe children will be wrapped in a pressable element, which triggers opening of the dropdown menu."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the container holding the dropdown menu items."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"cornerRadius","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Corner radius in dp for the dropdown menu container. Defaults to the Material3\n"},{"kind":"code","text":"`MenuDefaults.shape`"},{"kind":"text","text":" corner radius."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"expanded","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the dropdown menu is expanded (visible)."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"modifiers","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Modifiers for the component."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/types.ts","qualifiedName":"ModifierConfig"},"name":"ModifierConfig","package":"@expo/ui"}}},{"name":"onDismissRequest","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback fired when the menu requests to be dismissed (e.g. tapping outside).\nMust be provided when "},{"kind":"code","text":"`expanded`"},{"kind":"text","text":" is "},{"kind":"code","text":"`true`"},{"kind":"text","text":" to allow the menu to close."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional styles to apply to the "},{"kind":"code","text":"`DropdownMenu`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}}]},{"name":"DropdownMenu","variant":"declaration","kind":64,"children":[{"name":"Items","variant":"declaration","kind":1024,"type":{"type":"query","queryType":{"type":"reference","name":"Items","package":"@expo/ui"}}},{"name":"Preview","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preview content shown during long press (iOS only)."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Trigger","variant":"declaration","kind":1024,"type":{"type":"query","queryType":{"type":"reference","name":"Trigger","package":"@expo/ui"}}}],"signatures":[{"name":"DropdownMenu","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"DropdownMenuProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"DropdownMenuItem","variant":"declaration","kind":64,"children":[{"name":"LeadingIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A leading icon slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap an "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" or other content to display before the menu item text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Text","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A text slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap text content to display as the menu item label."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"TrailingIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A trailing icon slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap an "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" or other content to display after the menu item text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}}],"signatures":[{"name":"DropdownMenuItem","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A dropdown menu item component that wraps Compose's "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nShould be used inside "},{"kind":"code","text":"`DropdownMenu.Items`"},{"kind":"text","text":" or "},{"kind":"code","text":"`ExposedDropdownMenu`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/jetpack-compose/DropdownMenu/DropdownMenuItem.tsx","qualifiedName":"DropdownMenuItemProps"},"name":"DropdownMenuItemProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Items","variant":"declaration","kind":64,"children":[{"name":"tag","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}],"signatures":[{"name":"Items","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Container for items displayed in the dropdown menu.\nChildren should be "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":" components or other native views."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Preview","variant":"declaration","kind":64,"signatures":[{"name":"Preview","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preview content shown during long press (iOS only)."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Trigger","variant":"declaration","kind":64,"children":[{"name":"tag","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}],"signatures":[{"name":"Trigger","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Container for the trigger element that opens the dropdown menu."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"}
\ No newline at end of file
diff --git a/docs/public/static/data/v57.0.0/expo-ui/jetpack-compose/dropdownmenu.json b/docs/public/static/data/v57.0.0/expo-ui/jetpack-compose/dropdownmenu.json
index 602efec1620f87..b556b254688258 100644
--- a/docs/public/static/data/v57.0.0/expo-ui/jetpack-compose/dropdownmenu.json
+++ b/docs/public/static/data/v57.0.0/expo-ui/jetpack-compose/dropdownmenu.json
@@ -1 +1 @@
-{"schemaVersion":"2.0","name":"expo-ui/jetpack-compose/dropdownmenu","variant":"project","kind":1,"children":[{"name":"DropdownMenuProps","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"Props of the "},{"kind":"code","text":"`DropdownMenu`"},{"kind":"text","text":" component."}]},"children":[{"name":"children","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The contents of the submenu are used as an anchor for the dropdown menu.\nThe children will be wrapped in a pressable element, which triggers opening of the dropdown menu."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the container holding the dropdown menu items."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"expanded","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the dropdown menu is expanded (visible)."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"modifiers","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Modifiers for the component."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/types.ts","qualifiedName":"ModifierConfig"},"name":"ModifierConfig","package":"@expo/ui"}}},{"name":"onDismissRequest","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback fired when the menu requests to be dismissed (e.g. tapping outside).\nMust be provided when "},{"kind":"code","text":"`expanded`"},{"kind":"text","text":" is "},{"kind":"code","text":"`true`"},{"kind":"text","text":" to allow the menu to close."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional styles to apply to the "},{"kind":"code","text":"`DropdownMenu`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}}]},{"name":"DropdownMenu","variant":"declaration","kind":64,"children":[{"name":"Items","variant":"declaration","kind":1024,"type":{"type":"query","queryType":{"type":"reference","name":"Items","package":"@expo/ui"}}},{"name":"Preview","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preview content shown during long press (iOS only)."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Trigger","variant":"declaration","kind":1024,"type":{"type":"query","queryType":{"type":"reference","name":"Trigger","package":"@expo/ui"}}}],"signatures":[{"name":"DropdownMenu","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"DropdownMenuProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"DropdownMenuItem","variant":"declaration","kind":64,"children":[{"name":"LeadingIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A leading icon slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap an "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" or other content to display before the menu item text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Text","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A text slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap text content to display as the menu item label."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"TrailingIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A trailing icon slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap an "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" or other content to display after the menu item text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}}],"signatures":[{"name":"DropdownMenuItem","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A dropdown menu item component that wraps Compose's "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nShould be used inside "},{"kind":"code","text":"`DropdownMenu.Items`"},{"kind":"text","text":" or "},{"kind":"code","text":"`ExposedDropdownMenu`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/jetpack-compose/DropdownMenu/DropdownMenuItem.tsx","qualifiedName":"DropdownMenuItemProps"},"name":"DropdownMenuItemProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Items","variant":"declaration","kind":64,"children":[{"name":"tag","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}],"signatures":[{"name":"Items","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Container for items displayed in the dropdown menu.\nChildren should be "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":" components or other native views."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Preview","variant":"declaration","kind":64,"signatures":[{"name":"Preview","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preview content shown during long press (iOS only)."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Trigger","variant":"declaration","kind":64,"children":[{"name":"tag","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}],"signatures":[{"name":"Trigger","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Container for the trigger element that opens the dropdown menu."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"}
\ No newline at end of file
+{"schemaVersion":"2.0","name":"expo-ui/jetpack-compose/dropdownmenu","variant":"project","kind":1,"children":[{"name":"DropdownMenuProps","variant":"declaration","kind":256,"comment":{"summary":[{"kind":"text","text":"Props of the "},{"kind":"code","text":"`DropdownMenu`"},{"kind":"text","text":" component."}]},"children":[{"name":"children","variant":"declaration","kind":1024,"comment":{"summary":[{"kind":"text","text":"The contents of the submenu are used as an anchor for the dropdown menu.\nThe children will be wrapped in a pressable element, which triggers opening of the dropdown menu."}]},"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}},{"name":"color","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"The color of the container holding the dropdown menu items."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"ColorValue"},"name":"ColorValue","package":"react-native"}},{"name":"cornerRadius","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Corner radius in dp for the dropdown menu container. Defaults to the Material3\n"},{"kind":"code","text":"`MenuDefaults.shape`"},{"kind":"text","text":" corner radius."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"type":{"type":"intrinsic","name":"number"}},{"name":"expanded","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Whether the dropdown menu is expanded (visible)."}]},"type":{"type":"intrinsic","name":"boolean"}},{"name":"modifiers","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Modifiers for the component."}]},"type":{"type":"array","elementType":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/types.ts","qualifiedName":"ModifierConfig"},"name":"ModifierConfig","package":"@expo/ui"}}},{"name":"onDismissRequest","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Callback fired when the menu requests to be dismissed (e.g. tapping outside).\nMust be provided when "},{"kind":"code","text":"`expanded`"},{"kind":"text","text":" is "},{"kind":"code","text":"`true`"},{"kind":"text","text":" to allow the menu to close."}]},"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"type":{"type":"intrinsic","name":"void"}}]}}},{"name":"style","variant":"declaration","kind":1024,"flags":{"isOptional":true},"comment":{"summary":[{"kind":"text","text":"Optional styles to apply to the "},{"kind":"code","text":"`DropdownMenu`"},{"kind":"text","text":"."}]},"type":{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheet.d.ts","qualifiedName":"StyleProp"},"typeArguments":[{"type":"reference","target":{"packageName":"react-native","packagePath":"Libraries/StyleSheet/StyleSheetTypes.d.ts","qualifiedName":"ViewStyle"},"name":"ViewStyle","package":"react-native"}],"name":"StyleProp","package":"react-native"}}]},{"name":"DropdownMenu","variant":"declaration","kind":64,"children":[{"name":"Items","variant":"declaration","kind":1024,"type":{"type":"query","queryType":{"type":"reference","name":"Items","package":"@expo/ui"}}},{"name":"Preview","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preview content shown during long press (iOS only)."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Trigger","variant":"declaration","kind":1024,"type":{"type":"query","queryType":{"type":"reference","name":"Trigger","package":"@expo/ui"}}}],"signatures":[{"name":"DropdownMenu","variant":"signature","kind":4096,"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","name":"DropdownMenuProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"DropdownMenuItem","variant":"declaration","kind":64,"children":[{"name":"LeadingIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A leading icon slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap an "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" or other content to display before the menu item text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"Text","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A text slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap text content to display as the menu item label."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}},{"name":"TrailingIcon","variant":"declaration","kind":1024,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"signatures":[{"name":"__type","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A trailing icon slot for "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nWrap an "},{"kind":"code","text":"`Icon`"},{"kind":"text","text":" or other content to display after the menu item text."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}}}],"signatures":[{"name":"DropdownMenuItem","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"A dropdown menu item component that wraps Compose's "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":".\nShould be used inside "},{"kind":"code","text":"`DropdownMenu.Items`"},{"kind":"text","text":" or "},{"kind":"code","text":"`ExposedDropdownMenu`"},{"kind":"text","text":"."}],"blockTags":[{"tag":"@platform","content":[{"kind":"text","text":"android"}]}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reference","target":{"packageName":"@expo/ui","packagePath":"src/jetpack-compose/DropdownMenu/DropdownMenuItem.tsx","qualifiedName":"DropdownMenuItemProps"},"name":"DropdownMenuItemProps","package":"@expo/ui"}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Items","variant":"declaration","kind":64,"children":[{"name":"tag","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}],"signatures":[{"name":"Items","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Container for items displayed in the dropdown menu.\nChildren should be "},{"kind":"code","text":"`DropdownMenuItem`"},{"kind":"text","text":" components or other native views."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Preview","variant":"declaration","kind":64,"signatures":[{"name":"Preview","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Preview content shown during long press (iOS only)."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]},{"name":"Trigger","variant":"declaration","kind":64,"children":[{"name":"tag","variant":"declaration","kind":1024,"type":{"type":"intrinsic","name":"string"}}],"signatures":[{"name":"Trigger","variant":"signature","kind":4096,"comment":{"summary":[{"kind":"text","text":"Container for the trigger element that opens the dropdown menu."}]},"parameters":[{"name":"props","variant":"param","kind":32768,"type":{"type":"reflection","declaration":{"name":"__type","variant":"declaration","kind":65536,"children":[{"name":"children","variant":"declaration","kind":1024,"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"index.d.ts","qualifiedName":"React.ReactNode"},"name":"ReactNode","package":"@types/react","qualifiedName":"React.ReactNode"}}]}}}],"type":{"type":"reference","target":{"packageName":"@types/react","packagePath":"jsx-runtime.d.ts","qualifiedName":"JSX.Element"},"name":"Element","package":"@types/react","qualifiedName":"JSX.Element"}}]}],"packageName":"@expo/ui"}
\ No newline at end of file
diff --git a/docs/public/static/images/expo-ui/examples/dropdownmenu-rounded-android-dark.webp b/docs/public/static/images/expo-ui/examples/dropdownmenu-rounded-android-dark.webp
new file mode 100644
index 00000000000000..7cd54a89edd9dc
Binary files /dev/null and b/docs/public/static/images/expo-ui/examples/dropdownmenu-rounded-android-dark.webp differ
diff --git a/docs/public/static/images/expo-ui/examples/dropdownmenu-rounded-android-light.webp b/docs/public/static/images/expo-ui/examples/dropdownmenu-rounded-android-light.webp
new file mode 100644
index 00000000000000..2532dbfc6fd220
Binary files /dev/null and b/docs/public/static/images/expo-ui/examples/dropdownmenu-rounded-android-light.webp differ
diff --git a/packages/@expo/cli/CHANGELOG.md b/packages/@expo/cli/CHANGELOG.md
index 85c9b67b959cf7..59ea26a3f10f69 100644
--- a/packages/@expo/cli/CHANGELOG.md
+++ b/packages/@expo/cli/CHANGELOG.md
@@ -28,6 +28,7 @@
- Serve relative manifest URLs only when the client itself sends the RFC 7239 `Forwarded` header, so that proxied requests from clients without relative-URL support, like released Expo Go versions through the WS tunnel, keep absolute URLs. ([#48997](https://github.com/expo/expo/pull/48997) by [@expo-bot](https://github.com/expo-bot))
- Fail when `--private-key-path` is passed without `updates.codeSigningCertificate` in the resolved app config, instead of ignoring the flag and continuing without signing.
- Show the Xcode build log path when `run:ios` fails. ([#48624](https://github.com/expo/expo/pull/48624) by [@ramonclaudio](https://github.com/ramonclaudio))
+- Fix iOS asset catalog scale-to-file pairing for assets with non-standard scales. ([#48525](https://github.com/expo/expo/pull/48525) by [@janicduplessis](https://github.com/janicduplessis))
- [Internal] Fix `LogStream.destroy()` racing a pending write and dropping log data ([#47181](https://github.com/expo/expo/pull/47181) by [@kitten](https://github.com/kitten))
- Ignore simulators reported by `devicectl` and support json version 5 on Xcode 27 ([#48001](https://github.com/expo/expo/pull/48001) by [@crockalet](https://github.com/crockalet))
- In non-interactive shells, automatically roll over to the next available port when default is busy, unless a specific port is specified with `--port` or `RCT_METRO_PORT` ([#47771](https://github.com/expo/expo/pull/47771) by [@kitten](https://github.com/kitten))
diff --git a/packages/@expo/cli/src/export/__tests__/persistMetroAssets.test.ts b/packages/@expo/cli/src/export/__tests__/persistMetroAssets.test.ts
index aab0ee64307c78..6e0efcb417e6f3 100644
--- a/packages/@expo/cli/src/export/__tests__/persistMetroAssets.test.ts
+++ b/packages/@expo/cli/src/export/__tests__/persistMetroAssets.test.ts
@@ -8,7 +8,11 @@
import type { AssetData } from '@expo/metro/metro';
import { vol } from 'memfs';
-import { filterPlatformAssetScales, persistMetroAssetsAsync } from '../persistMetroAssets';
+import {
+ filterPlatformAssetScales,
+ getCatalogImages,
+ persistMetroAssetsAsync,
+} from '../persistMetroAssets';
describe(filterPlatformAssetScales, () => {
it('removes everything but 2x and 3x for iOS', () => {
@@ -28,6 +32,48 @@ describe(filterPlatformAssetScales, () => {
});
});
+describe(getCatalogImages, () => {
+ function makeAsset(scales: number[]) {
+ return {
+ name: 'logo',
+ scales,
+ files: scales.map((scale) => `/img/logo${scale === 1 ? '' : `@${scale}x`}.png`),
+ };
+ }
+
+ it('pairs each standard scale with its file', () => {
+ expect(getCatalogImages(makeAsset([1, 2, 3]))).toEqual([
+ { scale: 1, src: '/img/logo.png' },
+ { scale: 2, src: '/img/logo@2x.png' },
+ { scale: 3, src: '/img/logo@3x.png' },
+ ]);
+ });
+
+ it('skips non-standard scales without shifting file pairing', () => {
+ // Regression: filtering scales without filtering files used to associate
+ // the 2x rendition with the 1.5x file.
+ expect(getCatalogImages(makeAsset([1, 1.5, 2, 3]))).toEqual([
+ { scale: 1, src: '/img/logo.png' },
+ { scale: 2, src: '/img/logo@2x.png' },
+ { scale: 3, src: '/img/logo@3x.png' },
+ ]);
+ });
+
+ it('maps a fractional-only asset into the nearest valid slot', () => {
+ expect(getCatalogImages(makeAsset([1.5]))).toEqual([{ scale: 2, src: '/img/logo@1.5x.png' }]);
+ });
+
+ it('clamps scales larger than 3x to the 3x slot', () => {
+ expect(getCatalogImages(makeAsset([4]))).toEqual([{ scale: 3, src: '/img/logo@4x.png' }]);
+ });
+
+ it('uses the largest fractional variant when several exist', () => {
+ expect(getCatalogImages(makeAsset([1.5, 2.5]))).toEqual([
+ { scale: 3, src: '/img/logo@2.5x.png' },
+ ]);
+ });
+});
+
describe(persistMetroAssetsAsync, () => {
describe('virtual files match real files', () => {
beforeEach(() => {
diff --git a/packages/@expo/cli/src/export/persistMetroAssets.ts b/packages/@expo/cli/src/export/persistMetroAssets.ts
index c8f2566b4cb140..126d10777ec6d8 100644
--- a/packages/@expo/cli/src/export/persistMetroAssets.ts
+++ b/packages/@expo/cli/src/export/persistMetroAssets.ts
@@ -69,12 +69,7 @@ export async function persistMetroAssetsAsync(
cleanAssetCatalog(catalogDir);
for (const asset of assets) {
if (isCatalogAsset(asset)) {
- const imageSet = getImageSet(
- catalogDir,
- asset,
- filterPlatformAssetScales(platform, asset.scales)
- );
- writeImageSet(imageSet);
+ writeImageSet(getImageSet(catalogDir, asset));
} else {
assetsToCopy.push(asset);
}
@@ -176,20 +171,62 @@ type ImageSet = {
files: { name: string; src: string; scale: number }[];
};
+type CatalogImage = { scale: number; src: string };
+
+/**
+ * Pairs each catalog-valid scale of the asset with its source file.
+ *
+ * If the asset has no valid scale at all (e.g. only a fractional @1.5x
+ * variant), its closest variant is mapped into the nearest valid slot,
+ * mirroring the "closest larger" fallback filterPlatformAssetScales applies
+ * to loose files, so the imageset always contains at least one rendition
+ * actool will compile.
+ */
+export function getCatalogImages(
+ asset: Pick
+): CatalogImage[] {
+ const images: CatalogImage[] = [];
+ asset.scales.forEach((scale, idx) => {
+ const src = asset.files[idx];
+ if (src && CATALOG_SCALES.includes(scale)) {
+ images.push({ scale, src });
+ }
+ });
+ if (images.length > 0) {
+ return images;
+ }
+
+ let idx = asset.scales.findIndex((scale) => scale > MAX_CATALOG_SCALE);
+ if (idx === -1) {
+ idx = asset.scales.length - 1;
+ }
+ const assetScale = asset.scales[idx];
+ const src = asset.files[idx];
+ if (assetScale === undefined || src === undefined) {
+ return images;
+ }
+
+ const scale = Math.min(MAX_CATALOG_SCALE, Math.max(1, Math.ceil(assetScale)));
+ Log.warn(
+ `Asset "${asset.name}" has no 1x/2x/3x variant; using its @${assetScale}x file as the ${scale}x catalog rendition.`
+ );
+ images.push({ scale, src });
+ return images;
+}
+
function getImageSet(
catalogDir: string,
- asset: Pick,
- scales: number[]
+ asset: Pick
): ImageSet {
const fileName = getResourceIdentifier(asset);
return {
baseUrl: path.join(catalogDir, `${fileName}.imageset`),
- files: scales.map((scale, idx) => {
+ files: getCatalogImages(asset).map(({ scale, src }) => {
const suffix = scale === 1 ? '' : `@${scale}x`;
return {
name: `${fileName + suffix}.${asset.type}`,
scale,
- src: asset.files[idx]!,
+ src,
};
}),
};
@@ -230,8 +267,13 @@ function copy(src: string, dest: string, callback: (error?: NodeJS.ErrnoExceptio
});
}
+// Scales an iOS asset catalog imageset can hold. actool silently drops
+// renditions at any other scale (e.g. a fractional @1.5x).
+const CATALOG_SCALES = [1, 2, 3];
+const MAX_CATALOG_SCALE = Math.max(...CATALOG_SCALES);
+
const ALLOWED_SCALES: { [key: string]: number[] } = {
- ios: [1, 2, 3],
+ ios: CATALOG_SCALES,
};
export function filterPlatformAssetScales(platform: string, scales: number[]): number[] {
diff --git a/packages/expo-app-metrics/CHANGELOG.md b/packages/expo-app-metrics/CHANGELOG.md
index 837391eedab288..409d11fb8ed4ea 100644
--- a/packages/expo-app-metrics/CHANGELOG.md
+++ b/packages/expo-app-metrics/CHANGELOG.md
@@ -4,8 +4,11 @@
### 🛠 Breaking changes
+- [Android] Remove `SessionManager` insert listeners and `JsMetric.metricId` ([#49547](https://github.com/expo/expo/pull/49547) by [@Ubax](https://github.com/Ubax))
+
### 🎉 New features
+- [iOS] [Android] Dispatch attributed native crashes as fatal exception logs. ([#49489](https://github.com/expo/expo/pull/49489) by [@Ubax](https://github.com/Ubax))
- Add an optional `displayName` to `logEvent` ([#47289](https://github.com/expo/expo/pull/47289) by [@Ubax](https://github.com/Ubax))
- Capture React render-phase errors via `AppMetricsErrorBoundary`. ([#47341](https://github.com/expo/expo/pull/47341) by [@tsapeta](https://github.com/tsapeta))
- Describe the network a launch ran on: connection cost, request throughput, and a `slowest.*` group replacing `expo.network.requests.slowestDuration` and `slowestHost`. ([#48518](https://github.com/expo/expo/pull/48518) by [@tsapeta](https://github.com/tsapeta))
diff --git a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/AppMetricsModule.kt b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/AppMetricsModule.kt
index 81a1ccfb444122..8f37380a2b9329 100644
--- a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/AppMetricsModule.kt
+++ b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/AppMetricsModule.kt
@@ -168,13 +168,14 @@ class AppMetricsModule : Module(), UpdatesStateChangeListener {
exitInfoProvider = ExitInfoProviderImpl(context),
lastProcessedExitStore = PreferencesLastProcessedExitStore(context),
appVersion = metadata?.appVersion
- ) { sessionId, origin, report ->
+ ) { sessionId, origin, report, logDetails ->
attributeAndStoreCrashReport(
sessionManager = sessionManager,
currentSessionId = mainSession.sessionId,
sessionId = sessionId,
origin = origin,
- report = report
+ report = report,
+ logDetails = logDetails
)
}.process()
}
diff --git a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReport.kt b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReport.kt
index 81215c120321d7..3a505e91a796fd 100644
--- a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReport.kt
+++ b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReport.kt
@@ -1,5 +1,9 @@
package expo.modules.appmetrics.crashreporting
+import expo.modules.appmetrics.logevents.Severity
+import expo.modules.appmetrics.logevents.truncateToMaxLength
+import expo.modules.appmetrics.storage.LogRecord
+import expo.modules.appmetrics.utils.JsonAny
import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
@@ -28,6 +32,51 @@ data class CrashReport(
*/
val ingestedAt: String
) {
+ fun toLogRecord(sessionId: String, details: CrashLogDetails = CrashLogDetails()): LogRecord {
+ val attributes = buildMap {
+ put("exception.type", details.exceptionType ?: signal?.let(::signalName) ?: "NativeCrash")
+ put("exception.message", terminationReason ?: exceptionReason ?: signal?.let(::signalName) ?: "Native crash")
+ put("exception.stacktrace", renderStacktrace(details.stackFrames))
+ put("expo.error.source", "nativeCrash")
+ put("expo.error.is_fatal", true)
+ signal?.let {
+ put("expo.crash.signal", signalName(it))
+ put("expo.crash.signal_number", it)
+ }
+ terminationReason?.let { put("expo.crash.termination_reason", it) }
+ }
+ return LogRecord(
+ sessionId = sessionId,
+ timestamp = timestampBegin,
+ name = "native.exception",
+ severity = Severity.FATAL.rawValue,
+ attributes = JsonAny.encodeMapToJsonString(attributes)
+ )
+ }
+
+ private fun renderStacktrace(stackFrames: List?): String? {
+ val callStacks = callStackTree?.callStacks.orEmpty()
+ val attributedStacks = callStacks.filter { it.threadAttributed == true }
+ val selectedStacks = attributedStacks.ifEmpty { callStacks }
+ val frames = stackFrames ?: selectedStacks
+ .flatMap { it.callStackRootFrames.orEmpty() }
+ .map { it.symbol ?: "" }
+ if (frames.isEmpty()) {
+ return null
+ }
+ val rendered = buildList {
+ addAll(frames.take(MAX_LOG_STACK_FRAMES))
+ if (frames.size > MAX_LOG_STACK_FRAMES) {
+ add("… +${frames.size - MAX_LOG_STACK_FRAMES} more frames")
+ }
+ }.joinToString("\n")
+ return truncateToMaxLength(
+ rendered,
+ MAX_LOG_STACKTRACE_LENGTH,
+ "Native crash stack trace exceeded the maximum length and was truncated."
+ )
+ }
+
@Serializable
data class CallStackTree(
val callStacks: List? = null
@@ -93,5 +142,25 @@ data class CrashReport(
}
private const val MAX_CAUSE_DEPTH = 5
+ private const val MAX_LOG_STACK_FRAMES = 25
+ private const val MAX_LOG_STACKTRACE_LENGTH = 65_536
+
+ private fun signalName(signal: Int): String =
+ when (signal) {
+ 4 -> "SIGILL"
+ 5 -> "SIGTRAP"
+ 6 -> "SIGABRT"
+ 7 -> "SIGBUS"
+ 8 -> "SIGFPE"
+ 9 -> "SIGKILL"
+ 11 -> "SIGSEGV"
+ 15 -> "SIGTERM"
+ else -> "SIG$signal"
+ }
}
}
+
+data class CrashLogDetails(
+ val exceptionType: String? = null,
+ val stackFrames: List? = null
+)
diff --git a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReportAttribution.kt b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReportAttribution.kt
index 50f1a9a9f8a0fe..9d3dcf6f0fe05f 100644
--- a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReportAttribution.kt
+++ b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReportAttribution.kt
@@ -13,7 +13,8 @@ suspend fun attributeAndStoreCrashReport(
currentSessionId: String?,
sessionId: String?,
origin: CrashOrigin,
- report: CrashReport
+ report: CrashReport,
+ logDetails: CrashLogDetails = CrashLogDetails()
) {
runCatching {
// A null target stores the report as an orphan.
@@ -29,7 +30,12 @@ suspend fun attributeAndStoreCrashReport(
// id-less JVM file (a crash before the main session existed) → orphan.
else -> null
}
- sessionManager.setCrashReport(target, report.encodeToJsonString())
+ val payload = report.encodeToJsonString()
+ if (target != null) {
+ sessionManager.storeCrashReportIfNew(target, payload, report.toLogRecord(target, logDetails))
+ } else {
+ sessionManager.setCrashReport(null, payload)
+ }
}.onFailure {
Log.e(TAG, "Failed to persist a crash report", it)
}
diff --git a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReportProcessor.kt b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReportProcessor.kt
index 8043860ac11fd8..2e4edb5bae6817 100644
--- a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReportProcessor.kt
+++ b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/crashreporting/CrashReportProcessor.kt
@@ -46,7 +46,12 @@ class CrashReportProcessor(
private val exitInfoProvider: ExitInfoProvider,
private val lastProcessedExitStore: LastProcessedExitStore,
private val appVersion: String?,
- private val storeReport: suspend (sessionId: String?, origin: CrashOrigin, report: CrashReport) -> Unit
+ private val storeReport: suspend (
+ sessionId: String?,
+ origin: CrashOrigin,
+ report: CrashReport,
+ logDetails: CrashLogDetails
+ ) -> Unit
) {
suspend fun process() {
crashFileReader.deleteOrphanedTempFiles()
@@ -95,7 +100,8 @@ class CrashReportProcessor(
storeReport(
file.sessionId,
CrashOrigin.JVM_FILE,
- file.toCrashReport(ingestedAt, resolvedAppVersion)
+ file.toCrashReport(ingestedAt, resolvedAppVersion),
+ CrashLogDetails(exceptionType = file.exceptionClass, stackFrames = file.stackFrames)
)
crashFileReader.delete(file)
}
@@ -111,7 +117,8 @@ class CrashReportProcessor(
storeReport(
null,
CrashOrigin.EXIT_RECORD,
- record.toCrashReport(ingestedAt, resolvedAppVersion)
+ record.toCrashReport(ingestedAt, resolvedAppVersion),
+ CrashLogDetails()
)
}
}
diff --git a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/MetricsDatabase.kt b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/MetricsDatabase.kt
index 520c31914c2967..8deac8ab7de60a 100644
--- a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/MetricsDatabase.kt
+++ b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/MetricsDatabase.kt
@@ -3,20 +3,20 @@ package expo.modules.appmetrics.storage
import androidx.room.Dao
import androidx.room.Database
import androidx.room.Delete
+import androidx.room.Embedded
import androidx.room.Entity
+import androidx.room.ForeignKey
import androidx.room.Index
import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.PrimaryKey
import androidx.room.Query
-import androidx.room.ForeignKey
+import androidx.room.Relation
import androidx.room.Room
import androidx.room.RoomDatabase
-import androidx.room.Embedded
-import androidx.room.Relation
import androidx.room.Transaction
-import kotlinx.serialization.Serializable
import java.util.UUID
+import kotlinx.serialization.Serializable
object MetricsConstants {
const val SECONDS_TO_REMOVE_OLD_METRICS: Long = 7 * 24 * 60 * 60 // 7 days in seconds
@@ -24,7 +24,7 @@ object MetricsConstants {
@Database(
entities = [Metric::class, LogRecord::class, Session::class, CrashReportEntity::class],
- version = 16,
+ version = 17,
exportSchema = false
)
abstract class MetricsDatabase : RoomDatabase() {
@@ -105,7 +105,7 @@ data class Session(
)
@Serializable
data class Metric(
- @PrimaryKey val metricId: String = UUID.randomUUID().toString(),
+ @PrimaryKey(autoGenerate = true) val id: Long = 0,
val sessionId: String,
// ISO 8601 date string
val timestamp: String,
@@ -147,7 +147,7 @@ data class SessionWithMetrics(
)
@Serializable
data class LogRecord(
- @PrimaryKey val logId: String = UUID.randomUUID().toString(),
+ @PrimaryKey(autoGenerate = true) val id: Long = 0,
val sessionId: String,
// ISO 8601 date string
val timestamp: String,
@@ -160,11 +160,6 @@ data class LogRecord(
val droppedAttributesCount: Int = 0
)
-data class SessionWithLogs(
- val session: Session,
- val logs: List
-)
-
@Entity(
tableName = "crash_reports",
indices = [Index(value = ["sessionId"], unique = true)],
@@ -216,8 +211,11 @@ interface MetricDao {
@Delete
suspend fun delete(metrics: List)
- @Query("SELECT * FROM metrics WHERE metricId IN (:metricIds) ORDER BY timestamp ASC")
- suspend fun getByIds(metricIds: List): List
+ @Query("SELECT * FROM metrics WHERE id > :afterId ORDER BY id ASC LIMIT :limit")
+ suspend fun getAfterId(afterId: Long, limit: Int): List
+
+ @Query("SELECT MAX(id) FROM metrics")
+ suspend fun getMaxId(): Long?
@Query("SELECT * FROM metrics WHERE sessionId = :sessionId ORDER BY timestamp ASC")
suspend fun getMetricsForSession(sessionId: String): List
@@ -231,8 +229,11 @@ interface LogDao {
@Delete
suspend fun delete(logs: List)
- @Query("SELECT * FROM logs WHERE logId IN (:logIds) ORDER BY timestamp ASC")
- suspend fun getByIds(logIds: List): List
+ @Query("SELECT * FROM logs WHERE id > :afterId ORDER BY id ASC LIMIT :limit")
+ suspend fun getAfterId(afterId: Long, limit: Int): List
+
+ @Query("SELECT MAX(id) FROM logs")
+ suspend fun getMaxId(): Long?
@Query("DELETE FROM logs WHERE timestamp < :cutoffTimestamp")
suspend fun deleteLogsOlderThan(cutoffTimestamp: String)
diff --git a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/SessionManager.kt b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/SessionManager.kt
index a564059e50cfc7..9901ab4fa698cf 100644
--- a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/SessionManager.kt
+++ b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/SessionManager.kt
@@ -1,19 +1,17 @@
package expo.modules.appmetrics.storage
import android.content.Context
-import android.util.Log
+import androidx.room.withTransaction
import expo.modules.appmetrics.AppMetadata
import expo.modules.appmetrics.AppMetricsPreferences
-import expo.modules.appmetrics.SQLITE_MAX_BIND_VARIABLES
-import expo.modules.appmetrics.TAG
import expo.modules.appmetrics.GlobalAttributes
+import expo.modules.appmetrics.SQLITE_MAX_BIND_VARIABLES
import expo.modules.appmetrics.utils.JsonAny
import expo.modules.appmetrics.utils.TimeUtils
import kotlinx.serialization.builtins.MapSerializer
import kotlinx.serialization.builtins.serializer
import kotlinx.serialization.json.Json
import java.util.UUID
-import java.util.concurrent.CopyOnWriteArrayList
class SessionManager(
context: Context,
@@ -22,33 +20,6 @@ class SessionManager(
private val context: Context = context
private val database: MetricsDatabase = database ?: MetricsDatabase.getDatabase(context)
- fun interface MetricsInsertListener {
- suspend fun onMetricsInserted(metricIds: List)
- }
-
- fun interface LogsInsertListener {
- suspend fun onLogsInserted(logIds: List)
- }
-
- private val metricsInsertListeners = CopyOnWriteArrayList()
- private val logsInsertListeners = CopyOnWriteArrayList()
-
- fun addMetricsInsertListener(listener: MetricsInsertListener) {
- metricsInsertListeners.add(listener)
- }
-
- fun removeMetricsInsertListener(listener: MetricsInsertListener) {
- metricsInsertListeners.remove(listener)
- }
-
- fun addLogsInsertListener(listener: LogsInsertListener) {
- logsInsertListeners.add(listener)
- }
-
- fun removeLogsInsertListener(listener: LogsInsertListener) {
- logsInsertListeners.remove(listener)
- }
-
fun createSessionId(): String = UUID.randomUUID().toString()
suspend fun startSessionWithIdAt(
@@ -103,14 +74,6 @@ class SessionManager(
)
}
database.metricDao().insertAll(metricsWithSession)
- val metricIds = metricsWithSession.map { it.metricId }
- metricsInsertListeners.forEach { listener ->
- try {
- listener.onMetricsInserted(metricIds)
- } catch (e: Exception) {
- Log.e(TAG, "MetricsInsertListener failed", e)
- }
- }
}
/**
@@ -137,6 +100,25 @@ class SessionManager(
)
}
+ /**
+ * Stores a crash report and its log for `sessionId`, but only when the session
+ * has no report yet. Reprocessing the same crash must not add a second log.
+ */
+ suspend fun storeCrashReportIfNew(sessionId: String, payload: String, log: LogRecord) {
+ database.withTransaction {
+ if (database.crashReportDao().getBySessionId(sessionId) == null) {
+ database.crashReportDao().upsert(
+ CrashReportEntity(
+ sessionId = sessionId,
+ payload = payload,
+ createdAt = TimeUtils.getCurrentTimestampInISOFormat()
+ )
+ )
+ database.logDao().insertAll(logsWithSession(listOf(log), sessionId))
+ }
+ }
+ }
+
suspend fun getCrashReport(sessionId: String): String? =
database.crashReportDao().getBySessionId(sessionId)?.payload
@@ -166,9 +148,19 @@ class SessionManager(
suspend fun getMetricsForSession(sessionId: String): List =
database.metricDao().getMetricsForSession(sessionId)
+ suspend fun getMetrics(afterId: Long, limit: Int): List =
+ database.metricDao().getAfterId(afterId, limit)
+
+ suspend fun getMaxMetricId(): Long? = database.metricDao().getMaxId()
+
suspend fun getLogsForSession(sessionId: String): List =
database.logDao().getLogsForSession(sessionId)
+ suspend fun getLogs(afterId: Long, limit: Int): List =
+ database.logDao().getAfterId(afterId, limit)
+
+ suspend fun getMaxLogId(): Long? = database.logDao().getMaxId()
+
suspend fun clearAllData() {
database.sessionDao().deleteAll()
// Deleting the sessions cascades to their attributed reports, but orphan
@@ -196,22 +188,16 @@ class SessionManager(
logs: List,
sessionId: String
) {
- val logsWithSession = logs.map { log ->
+ database.logDao().insertAll(logsWithSession(logs, sessionId))
+ }
+
+ private fun logsWithSession(logs: List, sessionId: String): List =
+ logs.map { log ->
log.copy(
sessionId = sessionId,
attributes = mergeGlobalAttributesIntoJsonString(log.attributes)
)
}
- database.logDao().insertAll(logsWithSession)
- val logIds = logsWithSession.map { it.logId }
- logsInsertListeners.forEach { listener ->
- try {
- listener.onLogsInserted(logIds)
- } catch (e: Exception) {
- Log.e(TAG, "LogsInsertListener failed", e)
- }
- }
- }
suspend fun cleanupOldLogs() {
val cutoffTimestamp = TimeUtils.getTimestampInISOFormatFromPast(MetricsConstants.SECONDS_TO_REMOVE_OLD_METRICS)
@@ -222,39 +208,7 @@ class SessionManager(
database.sessionDao().updateEnvironmentForActiveSessions(environment)
}
- suspend fun getSessionsWithMetrics(metricIds: List): List {
- val metricsBySessionId = metricIds
- .distinct()
- .chunked(SQLITE_MAX_BIND_VARIABLES)
- .flatMap { database.metricDao().getByIds(it) }
- .sortedBy { it.timestamp }
- .groupBy { it.sessionId }
- val sessionsById = getSessionsByIds(metricsBySessionId.keys).associateBy { it.id }
-
- return metricsBySessionId.mapNotNull { (sessionId, metrics) ->
- sessionsById[sessionId]?.let { session ->
- SessionWithMetrics(session = session, metrics = metrics)
- }
- }
- }
-
- suspend fun getSessionsWithLogs(logIds: List): List {
- val logsBySessionId = logIds
- .distinct()
- .chunked(SQLITE_MAX_BIND_VARIABLES)
- .flatMap { database.logDao().getByIds(it) }
- .sortedBy { it.timestamp }
- .groupBy { it.sessionId }
- val sessionsById = getSessionsByIds(logsBySessionId.keys).associateBy { it.id }
-
- return logsBySessionId.mapNotNull { (sessionId, logs) ->
- sessionsById[sessionId]?.let { session ->
- SessionWithLogs(session = session, logs = logs)
- }
- }
- }
-
- private suspend fun getSessionsByIds(sessionIds: Collection): List =
+ suspend fun getSessions(sessionIds: Collection): List =
sessionIds.chunked(SQLITE_MAX_BIND_VARIABLES).flatMap { database.sessionDao().getByIds(it) }
/**
diff --git a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/SessionMappers.kt b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/SessionMappers.kt
index 1ad81fc8c372db..0c12d6b7be74b3 100644
--- a/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/SessionMappers.kt
+++ b/packages/expo-app-metrics/android/src/main/java/expo/modules/appmetrics/storage/SessionMappers.kt
@@ -5,7 +5,6 @@ import expo.modules.appmetrics.utils.TimeUtils
import expo.modules.kotlin.records.Field
import expo.modules.kotlin.records.Record
import expo.modules.kotlin.types.OptimizedRecord
-import java.util.UUID
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonObject
@@ -52,7 +51,6 @@ data class JsMetric(
@Field val category: String,
@Field val name: String,
@Field val value: Double,
- @Field val metricId: String? = UUID.randomUUID().toString(),
@Field val timestamp: String = TimeUtils.getCurrentTimestampInISOFormat(),
@Field val routeName: String? = null,
@Field val updateId: String? = null,
@@ -60,7 +58,6 @@ data class JsMetric(
) : Record {
fun toMetric(): Metric =
Metric(
- metricId = metricId ?: UUID.randomUUID().toString(),
sessionId = sessionId,
timestamp = timestamp,
category = category,
@@ -74,7 +71,6 @@ data class JsMetric(
companion object {
fun fromMetric(metric: Metric): JsMetric =
JsMetric(
- metricId = metric.metricId,
sessionId = metric.sessionId,
timestamp = metric.timestamp,
category = metric.category,
@@ -90,7 +86,7 @@ data class JsMetric(
/**
* Payload for `Session.addMetric` — mirrors the TypeScript `MetricInput` type
* (`Metric` minus `sessionId`). The owning session is implied by the shared
- * object the metric is added to, so the id is injected via `toMetric(sessionId)`
+ * object the metric is added to, so the session id is injected via `toMetric(sessionId)`
* rather than carried across the bridge; `updateId` is a native-side concern not
* exposed to JS.
*/
@@ -105,7 +101,6 @@ data class SessionMetricInput(
) : Record {
fun toMetric(sessionId: String): Metric =
Metric(
- metricId = UUID.randomUUID().toString(),
sessionId = sessionId,
timestamp = timestamp,
category = category,
@@ -121,7 +116,7 @@ data class SessionMetricInput(
* JS-facing shape of a log event. Mirrors the TypeScript `LogRecord` type and
* decodes the storage-only JSON `attributes` column into a typed map.
*
- * `logId`, `sessionId`, and `droppedAttributesCount` are storage- and
+ * `sessionId` and `droppedAttributesCount` are storage- and
* dispatch-side concerns: JS consumers see the record under its parent
* `Session.logs` (so the parent ID is implicit), and the dropped-attribute
* bookkeeping is only meaningful on the OTel wire payload.
diff --git a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportAttributionTest.kt b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportAttributionTest.kt
index 0f5d9db83b8738..843ac873cbeb75 100644
--- a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportAttributionTest.kt
+++ b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportAttributionTest.kt
@@ -78,6 +78,18 @@ class CrashReportAttributionTest {
attribute("crashed-session", CrashOrigin.JVM_FILE)
assertEquals("java.lang.IllegalStateException: boom", storedMessage("crashed-session"))
+ assertEquals(listOf("native.exception"), sessionManager.getLogsForSession("crashed-session").map { it.name })
+ }
+
+ @Test
+ fun `does not duplicate the crash log when a report is reprocessed`() =
+ runTest {
+ sessionManager.startSessionWithIdAt("crashed-session", "2023-11-14T22:00:00.000Z")
+
+ attribute("crashed-session", CrashOrigin.JVM_FILE)
+ attribute("crashed-session", CrashOrigin.JVM_FILE)
+
+ assertEquals(1, sessionManager.getLogsForSession("crashed-session").size)
}
@Test
@@ -89,6 +101,7 @@ class CrashReportAttributionTest {
assertNull(sessionManager.getCrashReport("never-persisted"))
assertEquals(1, orphanCount())
+ assertEquals(0, sessionManager.getLogsForSession("never-persisted").size)
}
@Test
@@ -98,6 +111,7 @@ class CrashReportAttributionTest {
attribute(null, CrashOrigin.JVM_FILE)
assertEquals(1, orphanCount())
+ assertEquals(0, sessionManager.getLogsForSession("current").size)
}
// endregion
@@ -114,6 +128,7 @@ class CrashReportAttributionTest {
assertEquals("java.lang.IllegalStateException: native", storedMessage("previous"))
assertNull(sessionManager.getCrashReport("older"))
+ assertEquals(listOf("native.exception"), sessionManager.getLogsForSession("previous").map { it.name })
}
@Test
@@ -126,6 +141,7 @@ class CrashReportAttributionTest {
// Never blame the live session — stored unattributed instead.
assertNull(sessionManager.getCrashReport("current"))
assertEquals(1, orphanCount())
+ assertEquals(0, sessionManager.getLogsForSession("current").size)
}
@Test
diff --git a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportProcessorTest.kt b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportProcessorTest.kt
index 9414a69316e669..8f9424879f94f9 100644
--- a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportProcessorTest.kt
+++ b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportProcessorTest.kt
@@ -44,13 +44,18 @@ class CrashReportProcessorTest {
}
}
- data class StoreCall(val sessionId: String?, val origin: CrashOrigin, val report: CrashReport)
+ data class StoreCall(
+ val sessionId: String?,
+ val origin: CrashOrigin,
+ val report: CrashReport,
+ val logDetails: CrashLogDetails
+ )
private val storeCalls = mutableListOf()
- private val storeReport: suspend (String?, CrashOrigin, CrashReport) -> Unit =
- { sessionId, origin, report ->
- storeCalls += StoreCall(sessionId, origin, report)
+ private val storeReport: suspend (String?, CrashOrigin, CrashReport, CrashLogDetails) -> Unit =
+ { sessionId, origin, report, logDetails ->
+ storeCalls += StoreCall(sessionId, origin, report, logDetails)
}
@Before
@@ -110,6 +115,8 @@ class CrashReportProcessorTest {
assertEquals(CrashOrigin.JVM_FILE, call.origin)
assertEquals("java.lang.IllegalStateException: boom", call.report.exceptionReason)
assertEquals("1.2.3", call.report.appVersion)
+ assertEquals("java.lang.IllegalStateException", call.logDetails.exceptionType)
+ assertTrue(call.logDetails.stackFrames.orEmpty().isNotEmpty())
}
@Test
diff --git a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportTest.kt b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportTest.kt
index e5881a07ba908f..8437f960acd07f 100644
--- a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportTest.kt
+++ b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportTest.kt
@@ -3,6 +3,7 @@ package expo.modules.appmetrics.crashreporting
import kotlinx.serialization.json.Json
import kotlinx.serialization.json.jsonObject
import kotlinx.serialization.json.jsonPrimitive
+import expo.modules.appmetrics.utils.JsonAny
import org.junit.Assert.assertEquals
import org.junit.Assert.assertFalse
import org.junit.Assert.assertNotNull
@@ -96,6 +97,87 @@ class CrashReportTest {
assertTrue(frames.first().symbol!!.contains("CrashReportTest"))
}
+ @Test
+ fun `builds a fatal exception log for a JVM crash`() {
+ val report = reportFromThrowable(IllegalStateException("boom"))
+
+ val log = report.toLogRecord(
+ "session",
+ CrashLogDetails(exceptionType = "java.lang.IllegalStateException")
+ )
+ val attributes = requireNotNull(JsonAny.decodeJsonStringToMap(requireNotNull(log.attributes)))
+
+ assertEquals("session", log.sessionId)
+ assertEquals("native.exception", log.name)
+ assertEquals("fatal", log.severity)
+ assertEquals(crashTimestamp, log.timestamp)
+ assertEquals("java.lang.IllegalStateException", attributes["exception.type"])
+ assertEquals("java.lang.IllegalStateException: boom", attributes["exception.message"])
+ assertEquals("nativeCrash", attributes["expo.error.source"])
+ assertEquals(true, attributes["expo.error.is_fatal"])
+ }
+
+ @Test
+ fun `builds a fatal exception log for an exit record`() {
+ val report = CrashReport(
+ signal = 11,
+ terminationReason = "Native crash",
+ appVersion = "1.2.3",
+ timestampBegin = crashTimestamp,
+ ingestedAt = ingestedAt
+ )
+
+ val attributes = requireNotNull(
+ JsonAny.decodeJsonStringToMap(requireNotNull(report.toLogRecord("session").attributes))
+ )
+
+ assertEquals("SIGSEGV", attributes["exception.type"])
+ assertEquals("Native crash", attributes["exception.message"])
+ assertNull(attributes["exception.stacktrace"])
+ assertEquals("SIGSEGV", attributes["expo.crash.signal"])
+ assertEquals(11L, attributes["expo.crash.signal_number"])
+ assertEquals("Native crash", attributes["expo.crash.termination_reason"])
+ }
+
+ @Test
+ fun `renders at most twenty-five attributed stack frames and reports the omitted count`() {
+ val report = CrashReport(
+ exceptionReason = "boom",
+ callStackTree = CrashReport.CallStackTree(
+ callStacks = listOf(
+ CrashReport.CallStackTree.CallStack(
+ threadAttributed = true,
+ callStackRootFrames = (0 until 28).map { CrashReport.CallStackTree.Frame("frame$it") }
+ ),
+ CrashReport.CallStackTree.CallStack(
+ threadAttributed = false,
+ callStackRootFrames = listOf(CrashReport.CallStackTree.Frame("unattributed"))
+ )
+ )
+ ),
+ appVersion = "1.2.3",
+ timestampBegin = crashTimestamp,
+ ingestedAt = ingestedAt
+ )
+
+ val attributes = requireNotNull(
+ JsonAny.decodeJsonStringToMap(
+ requireNotNull(
+ report.toLogRecord(
+ "session",
+ CrashLogDetails(exceptionType = "java.lang.IllegalStateException")
+ ).attributes
+ )
+ )
+ )
+ val lines = requireNotNull(attributes["exception.stacktrace"] as? String).lines()
+ assertEquals(26, lines.size)
+ assertEquals("frame0", lines.first())
+ assertEquals("frame24", lines[24])
+ assertEquals("… +3 more frames", lines.last())
+ assertFalse(lines.contains("unattributed"))
+ }
+
// MARK: JSON encoding — the payload is the cross-platform contract with types.ts
@Test
diff --git a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportingPipelineTest.kt b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportingPipelineTest.kt
index c72c68ad267220..6ee7670768d501 100644
--- a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportingPipelineTest.kt
+++ b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/crashreporting/CrashReportingPipelineTest.kt
@@ -101,13 +101,14 @@ class CrashReportingPipelineTest {
}
},
appVersion = "3.1.4"
- ) { sessionId, origin, report ->
+ ) { sessionId, origin, report, logDetails ->
attributeAndStoreCrashReport(
sessionManager = sessionManager,
currentSessionId = currentSessionId,
sessionId = sessionId,
origin = origin,
- report = report
+ report = report,
+ logDetails = logDetails
)
}.process()
@@ -117,6 +118,7 @@ class CrashReportingPipelineTest {
val crashed = sessions.single { it.id == crashedSessionId }
val crashReport = requireNotNull(crashed.crashReport)
+ assertEquals(listOf("native.exception"), crashed.logs.map { it.name })
assertEquals("3.1.4", crashReport["appVersion"])
assertEquals("java.lang.IllegalStateException: boom", crashReport["exceptionReason"])
@Suppress("UNCHECKED_CAST")
diff --git a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionManagerGlobalAttributesTest.kt b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionManagerGlobalAttributesTest.kt
index 6d38d4b7572db6..5bfef371f00642 100644
--- a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionManagerGlobalAttributesTest.kt
+++ b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionManagerGlobalAttributesTest.kt
@@ -182,13 +182,11 @@ class SessionManagerGlobalAttributesTest {
}
private fun metric(
- metricId: String = "m-1",
name: String = "test-metric",
params: Map? = null,
rawParams: String? = null
): Metric =
Metric(
- metricId = metricId,
sessionId = "",
timestamp = "2025-01-01T00:00:00.000Z",
category = "test",
@@ -198,13 +196,11 @@ class SessionManagerGlobalAttributesTest {
)
private fun log(
- logId: String = "l-1",
name: String = "test.event",
attributes: Map? = null,
rawAttributes: String? = null
): LogRecord =
LogRecord(
- logId = logId,
sessionId = "",
timestamp = "2025-01-01T00:00:00.000Z",
name = name,
diff --git a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionManagerTest.kt b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionManagerTest.kt
index 89c5e1cf796b6f..9cc3ec8baf5ff7 100644
--- a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionManagerTest.kt
+++ b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionManagerTest.kt
@@ -287,307 +287,59 @@ class SessionManagerTest {
// endregion
- // region MetricsInsertListener Tests
+ // region Cursor Reads
@Test
- fun `addMetrics notifies listeners with inserted metric IDs`() =
- runTest {
- // Arrange
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
-
- val receivedIds = mutableListOf()
- sessionManager.addMetricsInsertListener { metricIds ->
- receivedIds.addAll(metricIds)
- }
-
- val metrics = listOf(
- createMetric("metric-1", ""),
- createMetric("metric-2", "")
- )
-
- // Act
- sessionManager.addMetrics(metrics, sessionId)
-
- // Assert
- assertEquals(2, receivedIds.size)
- assertTrue(receivedIds.contains("metric-1"))
- assertTrue(receivedIds.contains("metric-2"))
- }
-
- @Test
- fun `addMetrics notifies multiple listeners`() =
- runTest {
- // Arrange
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
-
- val listener1Ids = mutableListOf()
- val listener2Ids = mutableListOf()
- sessionManager.addMetricsInsertListener { metricIds ->
- listener1Ids.addAll(metricIds)
- }
- sessionManager.addMetricsInsertListener { metricIds ->
- listener2Ids.addAll(metricIds)
- }
-
- val metrics = listOf(createMetric("metric-1", ""))
-
- // Act
- sessionManager.addMetrics(metrics, sessionId)
-
- // Assert
- assertEquals(1, listener1Ids.size)
- assertEquals(1, listener2Ids.size)
- }
-
- @Test
- fun `removeMetricsInsertListener stops notifications`() =
- runTest {
- // Arrange
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
-
- val receivedIds = mutableListOf()
- val listener = SessionManager.MetricsInsertListener { metricIds ->
- receivedIds.addAll(metricIds)
- }
- sessionManager.addMetricsInsertListener(listener)
-
- // Act - add metrics, then remove listener, then add more metrics
- sessionManager.addMetrics(listOf(createMetric("metric-1", "")), sessionId)
- sessionManager.removeMetricsInsertListener(listener)
- sessionManager.addMetrics(listOf(createMetric("metric-2", "")), sessionId)
-
- // Assert - only the first metric should have been received
- assertEquals(1, receivedIds.size)
- assertTrue(receivedIds.contains("metric-1"))
- }
-
- // endregion
-
- // region getSessionsWithMetrics Tests
-
- @Test
- fun `getSessionsWithMetrics returns sessions with only requested metrics`() =
- runTest {
- // Arrange
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
-
- val metrics = listOf(
- createMetric("metric-1", sessionId),
- createMetric("metric-2", sessionId),
- createMetric("metric-3", sessionId)
- )
- database.metricDao().insertAll(metrics)
-
- // Act - only request metric-1 and metric-3
- val result = sessionManager.getSessionsWithMetrics(listOf("metric-1", "metric-3"))
-
- // Assert
- assertEquals(1, result.size)
- assertEquals(sessionId, result[0].session.id)
- assertEquals(2, result[0].metrics.size)
- assertTrue(result[0].metrics.any { it.metricId == "metric-1" })
- assertTrue(result[0].metrics.any { it.metricId == "metric-3" })
- }
-
- @Test
- fun `getSessionsWithMetrics returns unique metrics in chronological order`() =
- runTest {
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
- database.metricDao().insertAll(
- listOf(
- createMetric("metric-z", sessionId, timestamp = "2025-01-01T00:00:02.000Z"),
- createMetric("metric-a", sessionId, timestamp = "2025-01-01T00:00:01.000Z")
- )
- )
- val metricIds = listOf("metric-z") +
- (1 until SQLITE_MAX_BIND_VARIABLES).map { "missing-$it" } +
- listOf("metric-a", "metric-z")
-
- val result = sessionManager.getSessionsWithMetrics(metricIds)
-
- assertEquals(listOf("metric-a", "metric-z"), result.single().metrics.map { it.metricId })
- }
-
- @Test
- fun `getSessionsWithMetrics returns empty when no metrics match`() =
- runTest {
- // Arrange
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
- database.metricDao().insertAll(listOf(createMetric("metric-1", sessionId)))
-
- // Act
- val result = sessionManager.getSessionsWithMetrics(listOf("nonexistent-metric"))
-
- // Assert
- assertEquals(0, result.size)
- }
-
- @Test
- fun `getSessionsWithMetrics returns multiple sessions`() =
- runTest {
- // Arrange
- val session1Id = "session-1"
- val session2Id = "session-2"
- sessionManager.startSessionWithIdAt(session1Id, "2025-01-01T00:00:00.000Z")
- sessionManager.startSessionWithIdAt(session2Id, "2025-01-01T01:00:00.000Z")
-
- database.metricDao().insertAll(
- listOf(
- createMetric("metric-1", session1Id),
- createMetric("metric-2", session2Id)
- )
- )
-
- // Act
- val result = sessionManager.getSessionsWithMetrics(listOf("metric-1", "metric-2"))
-
- // Assert
- assertEquals(2, result.size)
- val sessionIds = result.map { it.session.id }
- assertTrue(sessionIds.contains(session1Id))
- assertTrue(sessionIds.contains(session2Id))
- }
-
- @Test
- fun `getSessionsWithMetrics returns only requested metrics across query chunks`() =
- runTest {
- // Arrange - session has 1200 metrics, but we only request 1100 of them
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
-
- val allMetricIds = (1..1200).map { "metric-$it" }
- allMetricIds.chunked(500).forEach { chunk ->
- val metrics = chunk.map { createMetric(it, sessionId) }
- database.metricDao().insertAll(metrics)
- }
-
- // Request only the first 1100
- val requestedIds = allMetricIds.take(1100)
+ fun `getMetrics returns auto-generated IDs after cursor in ascending order with limit`() = runTest {
+ val sessionId = "session-1"
+ sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
+ sessionManager.addMetrics(
+ listOf(createMetric("first", sessionId), createMetric("second", sessionId), createMetric("third", sessionId)),
+ sessionId
+ )
- // Act
- val result = sessionManager.getSessionsWithMetrics(requestedIds)
-
- // Assert - only the 1100 requested metrics should be returned, not all 1200
- assertEquals(1, result.size)
- assertEquals(1100, result[0].metrics.size)
- val returnedIds = result[0].metrics.map { it.metricId }.toSet()
- assertFalse(returnedIds.contains("metric-1101"))
- assertFalse(returnedIds.contains("metric-1200"))
- }
+ val all = sessionManager.getMetrics(afterId = -1, limit = 10)
+ assertEquals(listOf("first", "second", "third"), all.map { it.name })
+ assertTrue(all.zipWithNext().all { (first, second) -> first.id < second.id })
+ assertEquals(listOf("second"), sessionManager.getMetrics(all.first().id, 1).map { it.name })
+ assertEquals(all.last().id, sessionManager.getMaxMetricId())
+ }
@Test
- fun `getSessionsWithMetrics groups multiple sessions across query chunks`() =
- runTest {
- // Arrange - two sessions, each with metrics spanning chunk boundaries
- val session1Id = "session-1"
- val session2Id = "session-2"
- sessionManager.startSessionWithIdAt(session1Id, "2025-01-01T00:00:00.000Z")
- sessionManager.startSessionWithIdAt(session2Id, "2025-01-01T01:00:00.000Z")
-
- // Session 1 gets metrics 1-600, session 2 gets metrics 601-1200
- val s1MetricIds = (1..600).map { "metric-$it" }
- val s2MetricIds = (601..1200).map { "metric-$it" }
-
- s1MetricIds.chunked(500).forEach { chunk ->
- database.metricDao().insertAll(chunk.map { createMetric(it, session1Id) })
- }
- s2MetricIds.chunked(500).forEach { chunk ->
- database.metricDao().insertAll(chunk.map { createMetric(it, session2Id) })
- }
-
- val allIds = s1MetricIds + s2MetricIds
-
- // Act - query all 1200 IDs
- val result = sessionManager.getSessionsWithMetrics(allIds)
-
- // Assert - both sessions returned, each with correct metric count
- assertEquals(2, result.size)
- val s1 = result.find { it.session.id == session1Id }!!
- val s2 = result.find { it.session.id == session2Id }!!
- assertEquals(600, s1.metrics.size)
- assertEquals(600, s2.metrics.size)
- }
+ fun `getMaxMetricId returns null when metrics are empty`() = runTest {
+ assertNull(sessionManager.getMaxMetricId())
+ }
@Test
- fun `getSessionsWithMetrics does not load logs`() =
- runTest {
- val sessionId = "session-with-logs"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
- database.metricDao().insertAll(listOf(createMetric("metric-1", sessionId)))
- database.logDao().insertAll(listOf(createLog("log-a", sessionId)))
-
- val result = sessionManager.getSessionsWithMetrics(listOf("metric-1"))
-
- assertEquals(1, result.size)
- assertEquals(emptyList(), result[0].logs)
- }
-
- // endregion
+ fun `getLogs returns auto-generated IDs after cursor in ascending order with limit`() = runTest {
+ val sessionId = "session-1"
+ sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
+ sessionManager.addLogs(
+ listOf(createLog("first", sessionId), createLog("second", sessionId), createLog("third", sessionId)),
+ sessionId
+ )
- // region getSessionsWithLogs Tests
+ val all = sessionManager.getLogs(afterId = -1, limit = 10)
+ assertEquals(listOf("first", "second", "third"), all.map { it.name })
+ assertTrue(all.zipWithNext().all { (first, second) -> first.id < second.id })
+ assertEquals(listOf("second"), sessionManager.getLogs(all.first().id, 1).map { it.name })
+ assertEquals(all.last().id, sessionManager.getMaxLogId())
+ }
@Test
- fun `getSessionsWithLogs returns only requested logs`() =
- runTest {
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
- database.logDao().insertAll(
- listOf(
- createLog("log-1", sessionId),
- createLog("log-2", sessionId),
- createLog("log-3", sessionId)
- )
- )
-
- val result = sessionManager.getSessionsWithLogs(listOf("log-1", "log-3"))
-
- assertEquals(1, result.size)
- assertEquals(sessionId, result[0].session.id)
- assertEquals(setOf("log-1", "log-3"), result[0].logs.map { it.logId }.toSet())
- }
+ fun `getMaxLogId returns null when logs are empty`() = runTest {
+ assertNull(sessionManager.getMaxLogId())
+ }
@Test
- fun `getSessionsWithLogs returns unique logs in chronological order`() =
- runTest {
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
- database.logDao().insertAll(
- listOf(
- createLog("log-z", sessionId, timestamp = "2025-01-01T00:00:02.000Z"),
- createLog("log-a", sessionId, timestamp = "2025-01-01T00:00:01.000Z")
- )
- )
- val logIds = listOf("log-z") +
- (1 until SQLITE_MAX_BIND_VARIABLES).map { "missing-$it" } +
- listOf("log-a", "log-z")
-
- val result = sessionManager.getSessionsWithLogs(logIds)
-
- assertEquals(listOf("log-a", "log-z"), result.single().logs.map { it.logId })
+ fun `getSessions reads IDs across SQLite bind chunks`() = runTest {
+ val ids = (0..SQLITE_MAX_BIND_VARIABLES).map { "session-$it" }
+ ids.forEachIndexed { index, id ->
+ sessionManager.startSessionWithIdAt(id, "2025-01-01T00:00:${index % 60}.000Z")
}
- @Test
- fun `getSessionsWithLogs groups requested logs spanning multiple query chunks`() =
- runTest {
- val sessionId = "session-1"
- sessionManager.startSessionWithIdAt(sessionId, "2025-01-01T00:00:00.000Z")
- val logIds = (1..1100).map { "log-$it" }
- logIds.chunked(500).forEach { chunk ->
- database.logDao().insertAll(chunk.map { createLog(it, sessionId) })
- }
-
- val result = sessionManager.getSessionsWithLogs(logIds)
-
- assertEquals(1, result.size)
- assertEquals(sessionId, result[0].session.id)
- assertEquals(logIds.toSet(), result[0].logs.map { it.logId }.toSet())
- }
+ assertEquals(ids.toSet(), sessionManager.getSessions(ids).map { it.id }.toSet())
+ }
// endregion
@@ -698,7 +450,7 @@ class SessionManagerTest {
// Assert
assertEquals(2, session.metrics.size)
assertEquals(3, session.logs.size)
- assertEquals(setOf("log-a", "log-b", "log-c"), session.logs.map { it.logId }.toSet())
+ assertEquals(setOf("auth.login_failed", "user.signed_in", "cache.miss"), session.logs.map { it.name }.toSet())
}
@Test
@@ -770,7 +522,7 @@ class SessionManagerTest {
val metrics = sessionManager.getMetricsForSession(sessionId)
// Assert
- assertEquals(setOf("metric-1", "metric-2"), metrics.map { it.metricId }.toSet())
+ assertEquals(setOf("metric-1", "metric-2"), metrics.map { it.name }.toSet())
assertTrue(metrics.all { it.sessionId == sessionId })
}
@@ -794,7 +546,7 @@ class SessionManagerTest {
val logs = sessionManager.getLogsForSession(sessionId)
// Assert
- assertEquals(setOf("log-1", "log-2"), logs.map { it.logId }.toSet())
+ assertEquals(setOf("log-1", "log-2"), logs.map { it.name }.toSet())
assertTrue(logs.all { it.sessionId == sessionId })
}
@@ -803,15 +555,14 @@ class SessionManagerTest {
// region Helper Methods
private fun createMetric(
- metricId: String,
+ metricName: String,
sessionId: String,
- name: String = "test-metric",
+ name: String = metricName,
category: String = "test",
value: Double = 123.45,
timestamp: String = "2025-01-01T00:00:00.000Z"
): Metric =
Metric(
- metricId = metricId,
sessionId = sessionId,
timestamp = timestamp,
category = category,
@@ -822,15 +573,14 @@ class SessionManagerTest {
)
private fun createLog(
- logId: String,
+ logName: String,
sessionId: String,
- name: String = "test.event",
+ name: String = logName,
severity: String = "info",
attributes: String? = null,
timestamp: String = "2025-01-01T00:00:00.000Z"
): LogRecord =
LogRecord(
- logId = logId,
sessionId = sessionId,
timestamp = timestamp,
name = name,
diff --git a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionMappersTest.kt b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionMappersTest.kt
index 9a37a3d79354f9..47cf155a997c46 100644
--- a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionMappersTest.kt
+++ b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionMappersTest.kt
@@ -2,7 +2,6 @@ package expo.modules.appmetrics.storage
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
-import org.junit.Assert.assertTrue
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
@@ -23,11 +22,9 @@ class SessionMappersTest {
)
private fun makeMetric(
- metricId: String = "metric-1",
sessionId: String = "session-1",
params: String? = null
): Metric = Metric(
- metricId = metricId,
sessionId = sessionId,
timestamp = "2025-01-01T00:00:01.000Z",
category = "appStartup",
@@ -37,12 +34,10 @@ class SessionMappersTest {
)
private fun makeLog(
- logId: String = "log-1",
sessionId: String = "session-1",
name: String = "auth.login_failed",
attributes: String? = null
): LogRecord = LogRecord(
- logId = logId,
sessionId = sessionId,
timestamp = "2025-01-01T00:00:02.000Z",
name = name,
@@ -107,9 +102,8 @@ class SessionMappersTest {
@Test
fun `JsMetric_fromMetric copies scalar fields verbatim`() {
- val js = JsMetric.fromMetric(makeMetric(metricId = "m-42", sessionId = "session-1"))
+ val js = JsMetric.fromMetric(makeMetric(sessionId = "session-1"))
- assertEquals("m-42", js.metricId)
assertEquals("session-1", js.sessionId)
assertEquals("appStartup", js.category)
assertEquals("timeToInteractive", js.name)
@@ -123,8 +117,8 @@ class SessionMappersTest {
session = makeSession(),
metrics = emptyList(),
logs = listOf(
- makeLog(logId = "l-1", name = "first.event"),
- makeLog(logId = "l-2", name = "second.event")
+ makeLog(name = "first.event"),
+ makeLog(name = "second.event")
)
)
@@ -213,7 +207,7 @@ class SessionMappersTest {
}
@Test
- fun `SessionMetricInput_toMetric maps scalar fields verbatim and generates its own metricId`() {
+ fun `SessionMetricInput_toMetric maps scalar fields verbatim`() {
val input = SessionMetricInput(
category = "custom",
name = "purchase",
@@ -229,9 +223,6 @@ class SessionMappersTest {
assertEquals(9.99, metric.value, 0.0)
assertEquals("2025-03-01T12:00:00.000Z", metric.timestamp)
assertEquals("Checkout", metric.routeName)
- // `metricId` is generated natively and `updateId` isn't part of the
- // JS-facing `MetricInput` contract — neither is caller-settable.
- assertTrue(metric.metricId.isNotEmpty())
assertNull(metric.updateId)
}
diff --git a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionSharedObjectTest.kt b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionSharedObjectTest.kt
index 4e79a8de3589cb..65d05b345356b7 100644
--- a/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionSharedObjectTest.kt
+++ b/packages/expo-app-metrics/android/src/test/java/expo/modules/appmetrics/storage/SessionSharedObjectTest.kt
@@ -65,7 +65,7 @@ class SessionSharedObjectTest {
assertNotNull(sessionManager.getSessionRow(session.sessionId))
assertEquals(
setOf("metric-1"),
- sessionManager.getMetricsForSession(session.sessionId).map { it.metricId }.toSet()
+ sessionManager.getMetricsForSession(session.sessionId).map { it.name }.toSet()
)
}
@@ -85,7 +85,7 @@ class SessionSharedObjectTest {
assertNotNull(sessionManager.getSessionRow(session.sessionId))
assertEquals(
setOf("log-1"),
- sessionManager.getLogsForSession(session.sessionId).map { it.logId }.toSet()
+ sessionManager.getLogsForSession(session.sessionId).map { it.name }.toSet()
)
}
@@ -238,8 +238,8 @@ class SessionSharedObjectTest {
session.addMetrics(listOf(createMetric("metric-1", session.sessionId)))
session.addLogs(listOf(createLog("log-1", session.sessionId)))
- assertEquals(setOf("metric-1"), session.getMetrics().map { it.metricId }.toSet())
- assertEquals(setOf("log-1"), session.getLogs().map { it.logId }.toSet())
+ assertEquals(setOf("metric-1"), session.getMetrics().map { it.name }.toSet())
+ assertEquals(setOf("log-1"), session.getLogs().map { it.name }.toSet())
}
@Test
@@ -268,29 +268,27 @@ class SessionSharedObjectTest {
// region Helpers
private fun createMetric(
- metricId: String,
+ name: String,
sessionId: String
): Metric =
Metric(
- metricId = metricId,
sessionId = sessionId,
timestamp = "2025-01-01T00:00:00.000Z",
category = "test",
- name = "test-metric",
+ name = name,
value = 123.45,
routeName = null,
params = null
)
private fun createLog(
- logId: String,
+ name: String,
sessionId: String
): LogRecord =
LogRecord(
- logId = logId,
sessionId = sessionId,
timestamp = "2025-01-01T00:00:00.000Z",
- name = "test.event",
+ name = name,
body = null,
severity = "info",
attributes = null,
diff --git a/packages/expo-app-metrics/ios/CrashReporting/CrashReport.swift b/packages/expo-app-metrics/ios/CrashReporting/CrashReport.swift
index 9a58f789ff2d9d..134ec89a6d25a4 100644
--- a/packages/expo-app-metrics/ios/CrashReporting/CrashReport.swift
+++ b/packages/expo-app-metrics/ios/CrashReporting/CrashReport.swift
@@ -6,6 +6,9 @@
/// payload time window. Unhandled JavaScript errors are recorded separately as `exception` log
/// events (see `ErrorReport`).
public struct CrashReport: Codable, Sendable {
+ private static let maxLogStackFrames = 25
+ private static let maxLogStacktraceLength = 65_536
+
/// Mach exception type (e.g. EXC_BAD_ACCESS, EXC_CRASH).
public let exceptionType: Int?
@@ -87,6 +90,116 @@ public struct CrashReport: Codable, Sendable {
return candidates.max(by: { $0.startTimestamp < $1.startTimestamp })
}
+ func toLogRecord() -> LogRecord {
+ var attributes: [String: Any] = [
+ "exception.type": exceptionReason?.exceptionName
+ ?? exceptionType.map { exceptionName(for: $0) }
+ ?? signal.map { signalName(for: $0) }
+ ?? "NativeCrash",
+ "exception.message": exceptionMessage,
+ "exception.stacktrace": renderedStacktrace as Any,
+ "expo.error.source": "nativeCrash",
+ "expo.error.is_fatal": true,
+ ]
+ if let exceptionType {
+ attributes["expo.crash.exception_type"] = exceptionName(for: exceptionType)
+ attributes["expo.crash.exception_type_code"] = exceptionType
+ }
+ if let exceptionCode {
+ attributes["expo.crash.exception_code"] = exceptionCode
+ }
+ if let signal {
+ attributes["expo.crash.signal"] = signalName(for: signal)
+ attributes["expo.crash.signal_number"] = signal
+ }
+ if let terminationReason {
+ attributes["expo.crash.termination_reason"] = terminationReason
+ }
+ if let exceptionReason {
+ attributes["expo.crash.objc_exception_type"] = exceptionReason.exceptionType
+ attributes["expo.crash.objc_exception_message"] = exceptionReason.composedMessage
+ }
+ return LogRecord(
+ name: "native.exception",
+ attributes: attributes,
+ severity: .fatal,
+ // MetricKit gives a time window; its end is the tightest crash-time bound and matches Android.
+ timestamp: timestampEnd.ISO8601Format()
+ )
+ }
+
+ private var exceptionMessage: String {
+ let parts = [terminationReason, exceptionReason?.composedMessage].compactMap { value -> String? in
+ guard let value, !value.isEmpty else {
+ return nil
+ }
+ return value
+ }
+ if !parts.isEmpty {
+ return parts.joined(separator: "\n")
+ }
+ if let signal {
+ return signalName(for: signal)
+ }
+ if let exceptionType {
+ return exceptionName(for: exceptionType)
+ }
+ return "Native crash"
+ }
+
+ private var renderedStacktrace: String? {
+ guard let callStacks = callStackTree?.callStacks else {
+ return nil
+ }
+ let attributedStacks = callStacks.filter { $0.threadAttributed == true }
+ let selectedStacks = attributedStacks.isEmpty ? callStacks : attributedStacks
+ var frames: [CallStackTree.Frame] = []
+ var totalFrames = 0
+ var lines: [String] = []
+ for callStack in selectedStacks {
+ collectFrames(callStack.callStackRootFrames ?? [], into: &frames, total: &totalFrames)
+ }
+ lines.append(contentsOf: frames.map(renderFrame))
+ if totalFrames > frames.count {
+ lines.append("… +\(totalFrames - frames.count) more frames")
+ }
+ guard !lines.isEmpty else {
+ return nil
+ }
+ return truncateToMaxLength(
+ lines.joined(separator: "\n"),
+ maxLength: Self.maxLogStacktraceLength,
+ warningMessage: "[AppMetrics] Native crash stack trace exceeded the maximum length and was truncated."
+ )
+ }
+
+ private func collectFrames(
+ _ source: [CallStackTree.Frame],
+ into frames: inout [CallStackTree.Frame],
+ total: inout Int
+ ) {
+ for frame in source {
+ total += 1
+ if frames.count < Self.maxLogStackFrames {
+ frames.append(frame)
+ }
+ collectFrames(frame.subFrames ?? [], into: &frames, total: &total)
+ }
+ }
+
+ private func renderFrame(_ frame: CallStackTree.Frame) -> String {
+ if let symbol = frame.symbol {
+ return symbol
+ }
+ if let binaryName = frame.binaryName, let offset = frame.offsetIntoBinaryTextSegment {
+ return "\(binaryName) + \(offset)"
+ }
+ if let address = frame.address {
+ return "0x\(String(address, radix: 16))"
+ }
+ return frame.binaryName ?? ""
+ }
+
/// Mirrors the shape of `MXCallStackTree.JSONRepresentation()`. Every field is optional so that
/// silently-renamed or removed Apple fields don't break decoding for the rest of the report.
public struct CallStackTree: Codable, Sendable {
diff --git a/packages/expo-app-metrics/ios/Database/MetricsDatabase.swift b/packages/expo-app-metrics/ios/Database/MetricsDatabase.swift
index 642eab9cf2faf3..fd848193b59adb 100644
--- a/packages/expo-app-metrics/ios/Database/MetricsDatabase.swift
+++ b/packages/expo-app-metrics/ios/Database/MetricsDatabase.swift
@@ -542,6 +542,21 @@ final class MetricsDatabase: Sendable {
try statement.run()
}
+ /// Stores a crash report once and, when its session row exists, its dispatchable log atomically.
+ /// The crash report's primary key is the idempotence marker for MetricKit payload redelivery.
+ @AppMetricsActor
+ func storeCrashReportIfNew(sessionId: String, payload: String, log: LogRow) throws {
+ try database.transaction {
+ if try getCrashReport(sessionId: sessionId) != nil {
+ return
+ }
+ try setCrashReport(sessionId: sessionId, payload: payload)
+ if try getSession(id: sessionId) != nil {
+ try insert(log: log)
+ }
+ }
+ }
+
@AppMetricsActor
func getCrashReport(sessionId: String) throws -> String? {
let statement = try database.prepare("SELECT payload FROM crash_reports WHERE sessionId = ?1")
diff --git a/packages/expo-app-metrics/ios/MetricKitSubscriber.swift b/packages/expo-app-metrics/ios/MetricKitSubscriber.swift
index 18305d8a0f1946..8a7f09487b5ae1 100644
--- a/packages/expo-app-metrics/ios/MetricKitSubscriber.swift
+++ b/packages/expo-app-metrics/ios/MetricKitSubscriber.swift
@@ -57,7 +57,8 @@ private func persistCrashReport(_ crashReport: CrashReport, sessionId: String) {
return
}
do {
- try AppMetrics.database?.setCrashReport(sessionId: sessionId, payload: payload)
+ let log = LogRow.from(log: crashReport.toLogRecord(), sessionId: sessionId)
+ try AppMetrics.database?.storeCrashReportIfNew(sessionId: sessionId, payload: payload, log: log)
} catch {
logger.warn("[AppMetrics] Failed to persist crash report for session \(sessionId): \(error.localizedDescription)")
}
diff --git a/packages/expo-app-metrics/ios/Sessions/MainSession.swift b/packages/expo-app-metrics/ios/Sessions/MainSession.swift
index fbfe8456cfb239..2835268f93f48e 100644
--- a/packages/expo-app-metrics/ios/Sessions/MainSession.swift
+++ b/packages/expo-app-metrics/ios/Sessions/MainSession.swift
@@ -33,21 +33,4 @@ public final class MainSession: Session, @unchecked Sendable {
init(id: String, startDate: Date, endDate: Date?) {
super.init(id: id, type: .main, startDate: startDate, endDate: endDate)
}
-
- // MARK: - Crash reports
-
- /// Persists a crash report attributed to this session. Replaces any previously stored report for
- /// this session id (only one crash per session is meaningful).
- @AppMetricsActor
- func storeCrashReport(_ crashReport: CrashReport) {
- logger.warn("[AppMetrics] Received crash report:\n\(crashReport)")
- guard let payload = encodeAsJSONString(crashReport) else {
- return
- }
- do {
- try AppMetrics.database?.setCrashReport(sessionId: self.id, payload: payload)
- } catch {
- logger.warn("[AppMetrics] Failed to persist crash report for session \(self.id): \(error.localizedDescription)")
- }
- }
}
diff --git a/packages/expo-app-metrics/ios/Tests/CrashReportTests.swift b/packages/expo-app-metrics/ios/Tests/CrashReportTests.swift
index a5fcc2b462496b..5a709e85101273 100644
--- a/packages/expo-app-metrics/ios/Tests/CrashReportTests.swift
+++ b/packages/expo-app-metrics/ios/Tests/CrashReportTests.swift
@@ -163,6 +163,116 @@ struct CrashReportTests {
#expect(report.findMatchingSession(in: []) == nil)
}
}
+
+ @Suite("toLogRecord")
+ struct ToLogRecordTests {
+ @Test
+ func `builds a fatal exception log for a Mach exception`() throws {
+ let timestampEnd = Date(timeIntervalSince1970: 1_699_999_000)
+ let ingestedAt = Date(timeIntervalSince1970: 1_700_000_000)
+ let report = makeCrashReport(
+ timestampBegin: timestampEnd.addingTimeInterval(-3600),
+ timestampEnd: timestampEnd,
+ ingestedAt: ingestedAt,
+ exceptionType: 1,
+ exceptionCode: 2,
+ signal: 11,
+ terminationReason: "Namespace SIGNAL, Code 11"
+ )
+
+ let log = report.toLogRecord()
+ let attributes = try #require(log.attributes?.value as? [String: Any])
+
+ #expect(log.name == "native.exception")
+ #expect(log.severity == .fatal)
+ #expect(log.timestamp == timestampEnd.ISO8601Format())
+ #expect(attributes["exception.type"] as? String == "EXC_BAD_ACCESS")
+ #expect(attributes["exception.message"] as? String == "Namespace SIGNAL, Code 11")
+ #expect(attributes["expo.error.source"] as? String == "nativeCrash")
+ #expect(attributes["expo.error.is_fatal"] as? Bool == true)
+ #expect(attributes["expo.crash.exception_type"] as? String == "EXC_BAD_ACCESS")
+ #expect(attributes["expo.crash.exception_type_code"] as? Int == 1)
+ #expect(attributes["expo.crash.exception_code"] as? Int == 2)
+ #expect(attributes["expo.crash.signal"] as? String == "SIGSEGV")
+ #expect(attributes["expo.crash.signal_number"] as? Int == 11)
+ #expect(attributes["expo.crash.termination_reason"] as? String == "Namespace SIGNAL, Code 11")
+ }
+
+ @Test
+ func `uses Objective-C exception details`() throws {
+ let report = makeCrashReport(
+ timestampBegin: Date.now,
+ timestampEnd: Date.now,
+ terminationReason: "Application Specific Information",
+ exceptionReason: CrashReport.ExceptionReason(
+ composedMessage: "-[NSNull length]: unrecognized selector",
+ formatString: "%@: unrecognized selector",
+ arguments: ["-[NSNull length]"],
+ exceptionType: "NSInvalidArgumentException",
+ className: "NSException",
+ exceptionName: "NSInvalidArgumentException"
+ )
+ )
+
+ let attributes = try #require(report.toLogRecord().attributes?.value as? [String: Any])
+ #expect(attributes["exception.type"] as? String == "NSInvalidArgumentException")
+ #expect(
+ attributes["exception.message"] as? String
+ == "Application Specific Information\n-[NSNull length]: unrecognized selector"
+ )
+ #expect(attributes["expo.crash.objc_exception_type"] as? String == "NSInvalidArgumentException")
+ #expect(
+ attributes["expo.crash.objc_exception_message"] as? String == "-[NSNull length]: unrecognized selector"
+ )
+ }
+
+ @Test
+ func `renders at most twenty-five attributed stack frames and reports the omitted count`() throws {
+ let attributedFrames = (0..<28).map { index in
+ CrashReport.CallStackTree.Frame(
+ binaryName: "TestApp",
+ binaryUUID: nil,
+ address: nil,
+ offsetIntoBinaryTextSegment: nil,
+ sampleCount: nil,
+ subFrames: nil,
+ symbol: "frame\(index)"
+ )
+ }
+ let unattributedFrame = CrashReport.CallStackTree.Frame(
+ binaryName: "TestApp",
+ binaryUUID: nil,
+ address: nil,
+ offsetIntoBinaryTextSegment: nil,
+ sampleCount: nil,
+ subFrames: nil,
+ symbol: "unattributed"
+ )
+ let report = makeCrashReport(
+ timestampBegin: Date.now,
+ timestampEnd: Date.now,
+ callStackTree: CrashReport.CallStackTree(callStacks: [
+ CrashReport.CallStackTree.CallStack(
+ threadAttributed: true,
+ callStackRootFrames: attributedFrames
+ ),
+ CrashReport.CallStackTree.CallStack(
+ threadAttributed: false,
+ callStackRootFrames: [unattributedFrame]
+ ),
+ ])
+ )
+
+ let attributes = try #require(report.toLogRecord().attributes?.value as? [String: Any])
+ let stacktrace = try #require(attributes["exception.stacktrace"] as? String)
+ let lines = stacktrace.split(separator: "\n")
+ #expect(lines.count == 26)
+ #expect(lines.first == "frame0")
+ #expect(lines[24] == "frame24")
+ #expect(lines.last == "… +3 more frames")
+ #expect(!stacktrace.contains("unattributed"))
+ }
+ }
}
private func makeMainSessionRow(id: String, startDate: Date, endDate: Date?) -> SessionRow {
@@ -175,18 +285,28 @@ private func makeMainSessionRow(id: String, startDate: Date, endDate: Date?) ->
)
}
-private func makeCrashReport(timestampBegin: Date, timestampEnd: Date) -> CrashReport {
+private func makeCrashReport(
+ timestampBegin: Date,
+ timestampEnd: Date,
+ ingestedAt: Date = Date.now,
+ exceptionType: Int? = 1,
+ exceptionCode: Int? = 1,
+ signal: Int? = 11,
+ terminationReason: String? = nil,
+ exceptionReason: CrashReport.ExceptionReason? = nil,
+ callStackTree: CrashReport.CallStackTree? = nil
+) -> CrashReport {
return CrashReport(
- exceptionType: 1,
- exceptionCode: 1,
- signal: 11,
- terminationReason: nil,
+ exceptionType: exceptionType,
+ exceptionCode: exceptionCode,
+ signal: signal,
+ terminationReason: terminationReason,
virtualMemoryRegionInfo: nil,
- exceptionReason: nil,
- callStackTree: nil,
+ exceptionReason: exceptionReason,
+ callStackTree: callStackTree,
appVersion: "1.0.0",
timestampBegin: timestampBegin,
timestampEnd: timestampEnd,
- ingestedAt: Date.now
+ ingestedAt: ingestedAt
)
}
diff --git a/packages/expo-app-metrics/ios/Tests/MetricsDatabaseTests.swift b/packages/expo-app-metrics/ios/Tests/MetricsDatabaseTests.swift
index c4e4272d1dd395..9d702d78c229de 100644
--- a/packages/expo-app-metrics/ios/Tests/MetricsDatabaseTests.swift
+++ b/packages/expo-app-metrics/ios/Tests/MetricsDatabaseTests.swift
@@ -548,6 +548,32 @@ struct MetricsDatabaseTests {
}
}
+ @Test
+ func `stores a crash report and log only once`() throws {
+ try withTemporaryDatabase { database in
+ try database.insert(session: makeSessionRow(id: "s"))
+ let log = makeLogRow(sessionId: "s", severity: "fatal", name: "exception")
+
+ try database.storeCrashReportIfNew(sessionId: "s", payload: "{\"v\":1}", log: log)
+ try database.storeCrashReportIfNew(sessionId: "s", payload: "{\"v\":2}", log: log)
+
+ #expect(try database.getCrashReport(sessionId: "s") == "{\"v\":1}")
+ #expect(try database.getLogs(sessionId: "s").map(\.name) == ["exception"])
+ }
+ }
+
+ @Test
+ func `stores the crash report without a log when the session does not exist`() throws {
+ try withTemporaryDatabase { database in
+ let log = makeLogRow(sessionId: "missing", severity: "fatal", name: "exception")
+
+ try database.storeCrashReportIfNew(sessionId: "missing", payload: "{}", log: log)
+
+ #expect(try database.getCrashReport(sessionId: "missing") == "{}")
+ #expect(try database.getLogs(sessionId: "missing").isEmpty)
+ }
+ }
+
@Test
func `getCrashReport returns nil when there is no entry`() throws {
try withTemporaryDatabase { database in
diff --git a/packages/expo-image/CHANGELOG.md b/packages/expo-image/CHANGELOG.md
index 32c21ccdfdc89f..2904054217865c 100644
--- a/packages/expo-image/CHANGELOG.md
+++ b/packages/expo-image/CHANGELOG.md
@@ -13,6 +13,7 @@
### 🐛 Bug fixes
+- [Android] Fixed a URL staying permanently broken after the server answered an image request with `200 OK` and a non-image body, such as an HTML error page. ([#48442](https://github.com/expo/expo/issues/48442) by [@julian-dueck](https://github.com/julian-dueck), [#48456](https://github.com/expo/expo/pull/48456) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
- [web] Fixed Expo Image's internal `dataSet` marker being overwritten by a user-provided `dataSet`. ([#48821](https://github.com/expo/expo/pull/48821) by [@Brentlok](https://github.com/Brentlok))
- [iOS] Fixed `generateThumbhashAsync` crashing on images with extreme aspect ratios. ([#47189](https://github.com/expo/expo/issues/47189) by [@gabrieldonadel](https://github.com/gabrieldonadel))
- [Android] Replaced the deprecated RenderScript-based `blurRadius` blur with a software stack blur to fix a use-after-free crash under concurrent image loads (aborts under GrapheneOS hardened_malloc). ([#PR](https://github.com/expo/expo/pull/PR) by [@DimitrisTzimikas](https://github.com/DimitrisTzimikas))
diff --git a/packages/expo-image/android/build.gradle b/packages/expo-image/android/build.gradle
index 16741dd995ccee..4a90d7409c13bf 100644
--- a/packages/expo-image/android/build.gradle
+++ b/packages/expo-image/android/build.gradle
@@ -56,4 +56,7 @@ dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2'
implementation "jp.wasabeef:glide-transformations:4.3.0"
+
+ testImplementation 'junit:junit:4.13.2'
+ testImplementation 'org.robolectric:robolectric:4.16'
}
diff --git a/packages/expo-image/android/src/main/java/expo/modules/image/ExpoImageAppGlideModule.kt b/packages/expo-image/android/src/main/java/expo/modules/image/ExpoImageAppGlideModule.kt
index 5735515fb2a04a..86a0d4d803a9a0 100644
--- a/packages/expo-image/android/src/main/java/expo/modules/image/ExpoImageAppGlideModule.kt
+++ b/packages/expo-image/android/src/main/java/expo/modules/image/ExpoImageAppGlideModule.kt
@@ -4,6 +4,7 @@ import android.content.Context
import android.util.Log
import com.bumptech.glide.GlideBuilder
import com.bumptech.glide.annotation.GlideModule
+import com.bumptech.glide.load.engine.cache.InternalCacheDiskCacheFactory
import com.bumptech.glide.module.AppGlideModule
/**
@@ -15,6 +16,10 @@ class ExpoImageAppGlideModule : AppGlideModule() {
override fun applyOptions(context: Context, builder: GlideBuilder) {
super.applyOptions(context, builder)
+ builder.setDiskCache(
+ ExpoImageDiskCache.Factory(InternalCacheDiskCacheFactory(context))
+ )
+
builder.setLogLevel(
if (BuildConfig.ALLOW_GLIDE_LOGS) {
Log.VERBOSE
diff --git a/packages/expo-image/android/src/main/java/expo/modules/image/ExpoImageDiskCache.kt b/packages/expo-image/android/src/main/java/expo/modules/image/ExpoImageDiskCache.kt
new file mode 100644
index 00000000000000..02073b6f63adb2
--- /dev/null
+++ b/packages/expo-image/android/src/main/java/expo/modules/image/ExpoImageDiskCache.kt
@@ -0,0 +1,31 @@
+package expo.modules.image
+
+import com.bumptech.glide.load.Key
+import com.bumptech.glide.load.engine.cache.DiskCache
+import java.io.File
+
+/**
+ * https://github.com/expo/expo/issues/48442
+ * https://github.com/bumptech/glide/issues/3550
+ *
+ * Glide skips writes for keys it already holds, so stored data that no decoder accepts can never be
+ * replaced. It only redownloads after the stored copy failed to decode, so a write always means the
+ * stored entry is unusable.
+ * So we provide a custom disk cache that deletes an entry before writing to it
+ */
+internal class ExpoImageDiskCache(private val delegate: DiskCache) : DiskCache {
+ override fun get(key: Key): File? = delegate.get(key)
+
+ override fun put(key: Key, writer: DiskCache.Writer) {
+ delegate.delete(key)
+ delegate.put(key, writer)
+ }
+
+ override fun delete(key: Key) = delegate.delete(key)
+
+ override fun clear() = delegate.clear()
+
+ class Factory(private val delegate: DiskCache.Factory) : DiskCache.Factory {
+ override fun build(): DiskCache? = delegate.build()?.let(::ExpoImageDiskCache)
+ }
+}
diff --git a/packages/expo-image/android/src/test/java/expo/modules/image/ExpoImageDiskCacheTest.kt b/packages/expo-image/android/src/test/java/expo/modules/image/ExpoImageDiskCacheTest.kt
new file mode 100644
index 00000000000000..26ef05e1df6652
--- /dev/null
+++ b/packages/expo-image/android/src/test/java/expo/modules/image/ExpoImageDiskCacheTest.kt
@@ -0,0 +1,52 @@
+package expo.modules.image
+
+import com.bumptech.glide.load.Key
+import com.bumptech.glide.load.engine.cache.DiskCache
+import com.bumptech.glide.load.engine.cache.DiskLruCacheWrapper
+import org.junit.After
+import org.junit.Assert.assertEquals
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import java.io.File
+import java.security.MessageDigest
+
+private object TestKey : Key {
+ override fun updateDiskCacheKey(messageDigest: MessageDigest) {
+ messageDigest.update("https://example.com/image.webp".toByteArray())
+ }
+}
+
+private fun writerOf(content: String) = DiskCache.Writer { file ->
+ file.writeText(content)
+ true
+}
+
+@RunWith(RobolectricTestRunner::class)
+class ExpoImageDiskCacheTest {
+ private lateinit var directory: File
+
+ @Before
+ fun setUp() {
+ directory = File.createTempFile("expo-image-disk-cache", "").apply {
+ delete()
+ mkdirs()
+ }
+ }
+
+ @After
+ fun tearDown() {
+ directory.deleteRecursively()
+ }
+
+ @Test
+ fun `writes over an entry that already exists`() {
+ val cache = ExpoImageDiskCache(DiskLruCacheWrapper.create(directory, 1024L * 1024L))
+
+ cache.put(TestKey, writerOf("an html error page"))
+ cache.put(TestKey, writerOf("the real image"))
+
+ assertEquals("the real image", cache.get(TestKey)?.readText())
+ }
+}
diff --git a/packages/expo-modules-autolinking/CHANGELOG.md b/packages/expo-modules-autolinking/CHANGELOG.md
index cffeedb9eee9d9..51fbac3c4ed937 100644
--- a/packages/expo-modules-autolinking/CHANGELOG.md
+++ b/packages/expo-modules-autolinking/CHANGELOG.md
@@ -28,6 +28,8 @@
### 💡 Others
+- [iOS] Read the XCFramework `Info.plist` files out of a prebuilt tarball in a single `tar` pass instead of a listing pass plus one extract per plist, roughly halving the per-pod archive work during `pod install`. ([#49580](https://github.com/expo/expo/pull/49580) by [@chrfalch](https://github.com/chrfalch))
+- [iOS] Add a `prebuilt-metadata` command emitting the prebuilt-modules identity document (npm package ↔ pod ↔ product), verified field-by-field against the Ruby derivations fixture (ENG-25370 phase 1). ([#49335](https://github.com/expo/expo/pull/49335) by [@chrfalch](https://github.com/chrfalch))
- [iOS] Add a derivations snapshot dump for precompiled modules (`EXPO_PRECOMPILED_DUMP` / `dump_precompiled_derivations.rb`) with a committed bare-expo fixture enforced by an e2e test, guarding the migration of these derivations to autolinking metadata. ([#49150](https://github.com/expo/expo/pull/49150) by [@chrfalch](https://github.com/chrfalch))
- [Android] Make the autolinking Gradle plugin compatible with Android Gradle Plugin 9. ([#46766](https://github.com/expo/expo/pull/46766) by [@lukmccall](https://github.com/lukmccall))
- Add experimental `tvos` and `macos` resolution ([#46344](https://github.com/expo/expo/pull/46344) by [@kitten](https://github.com/kitten))
diff --git a/packages/expo-modules-autolinking/e2e/__tests__/precompiled-derivations-test.ts b/packages/expo-modules-autolinking/e2e/__tests__/precompiled-derivations-test.ts
index a371e1fceab38d..eee3027d9b6776 100644
--- a/packages/expo-modules-autolinking/e2e/__tests__/precompiled-derivations-test.ts
+++ b/packages/expo-modules-autolinking/e2e/__tests__/precompiled-derivations-test.ts
@@ -3,6 +3,8 @@ import fs from 'fs';
import os from 'os';
import { join, resolve } from 'path';
+import { autolinkingRunAsync } from '../TestUtils';
+
jest.unmock('fs');
jest.unmock('fs/promises');
jest.setTimeout(2 * 60 * 1000);
@@ -59,4 +61,34 @@ const canRun = rubyAvailable() && fs.existsSync(join(repoRoot, 'apps/bare-expo/n
throw error;
}
});
+
+ it('prebuilt-metadata emits the same identity fields as the fixture', async () => {
+ const { stdout } = await autolinkingRunAsync(['prebuilt-metadata', '--json'], {
+ cwd: bareExpoIosPath,
+ });
+ const pickIdentity = (entries: Record, normalizePaths: boolean) =>
+ Object.fromEntries(
+ Object.entries(entries).map(([podName, e]) => [
+ podName,
+ {
+ type: e.type,
+ npmPackage: e.npmPackage,
+ packageRoot: normalizePaths ? repoRelative(e.packageRoot) : e.packageRoot,
+ podspecDir: normalizePaths ? repoRelative(e.podspecDir) : e.podspecDir,
+ productName: e.productName,
+ },
+ ])
+ );
+ const actual = pickIdentity(JSON.parse(stdout), true);
+ const expected = pickIdentity(JSON.parse(fs.readFileSync(fixturePath, 'utf8')), false);
+ expect(actual).toEqual(expected);
+ });
});
+
+// Mirrors the Ruby dump's path canonicalization: repo-relative, pnpm store collapsed.
+function repoRelative(p: string): string {
+ return p
+ .replace(`${fs.realpathSync(repoRoot)}/`, '')
+ .replace(`${repoRoot}/`, '')
+ .replace(/^node_modules\/\.pnpm\/[^/]+\/node_modules\//, 'node_modules/');
+}
diff --git a/packages/expo-modules-autolinking/scripts/ios/precompiled_modules.rb b/packages/expo-modules-autolinking/scripts/ios/precompiled_modules.rb
index 325ac0ed7f4c37..e5164177800da5 100644
--- a/packages/expo-modules-autolinking/scripts/ios/precompiled_modules.rb
+++ b/packages/expo-modules-autolinking/scripts/ios/precompiled_modules.rb
@@ -32,6 +32,7 @@
require 'open3'
require 'set'
require 'tempfile'
+require 'tmpdir'
require 'uri'
module Expo
@@ -88,6 +89,9 @@ module PrecompiledModules
# pod pulled it to source. The expected-tarball hint is misleading for these.
CASCADED_UNAVAILABLE_REASONS = %i[dependency_unavailable dependent_unavailable].freeze
+ # bsdtar's wording when a member pattern matches nothing, as opposed to a real failure.
+ TAR_NO_MATCH_MESSAGE = 'Not found in archive'.freeze
+
# Module-level caches (initialized lazily)
@pod_lookup_map = nil
@repo_root = nil
@@ -2356,30 +2360,54 @@ def info_plist_supports_target_platform?(info_plist)
end
end
+ # Reads every `*.xcframework/Info.plist` out of a prebuilt tarball.
+ #
+ # A tarball can hold more than one xcframework — the product plus any bundled SPM
+ # dependency, such as SDWebImage inside ExpoImage — and the caller requires all of
+ # them to support the target platform, so every match must be read, not just the
+ # first.
+ #
+ # Extracting the whole glob in one pass replaces a listing pass plus one extract per
+ # plist. `tar` decompresses a gzip stream from the start, so that was 1 + N full
+ # decompressions of an archive that also carries the dSYM bundles; on a 4 MB artifact
+ # it measured 36 ms against 19 ms for a single pass. This runs for every prebuilt pod
+ # during Podfile evaluation.
def read_xcframework_info_plists_from_tarball(tarball)
- entries_output, status = Open3.capture2e('tar', 'tzf', tarball)
- unless status.success?
- Pod::UI.warn "[Expo-precompiled] Failed to inspect #{File.basename(tarball)}: #{entries_output.strip}"
- return []
- end
-
- entries = entries_output.lines.map(&:strip)
- plist_entries = entries.select { |entry| entry.end_with?('.xcframework/Info.plist') }
- Pod::UI.warn "[Expo-precompiled] No XCFramework Info.plist found in #{File.basename(tarball)}" if plist_entries.empty?
+ Dir.mktmpdir('expo-xcframework-info') do |dir|
+ # /usr/bin/tar rather than `tar`: this relies on bsdtar's member globbing, and a
+ # GNU tar earlier in PATH would match nothing and send every pod to source.
+ output, status = Open3.capture2e('/usr/bin/tar', 'xzf', tarball, '-C', dir, '*.xcframework/Info.plist')
+ plists = Dir.glob(File.join(dir, '**', '*.xcframework', 'Info.plist')).sort
+
+ # `tar` extracts members in order, so a truncated archive can yield the first
+ # plist and then fail. Treating a partial result as usable would let the caller's
+ # all-xcframeworks check pass on a subset, and link a damaged tarball that used
+ # to fall back to source.
+ if !status.success? && !plists.empty?
+ Pod::UI.warn "[Expo-precompiled] Failed to inspect #{File.basename(tarball)}: #{output.strip}"
+ next []
+ end
- plist_entries.filter_map do |entry|
- plist_data, plist_status = Open3.capture2e('tar', 'xOzf', tarball, entry)
- unless plist_status.success?
- Pod::UI.warn "[Expo-precompiled] Failed to extract #{entry} from #{File.basename(tarball)}: #{plist_data.strip}"
- next
+ if plists.empty?
+ # A pattern that matches nothing also exits non-zero, so the two cases are
+ # told apart by bsdtar's message; only the wording differs, both give up.
+ if status.success? || output.include?(TAR_NO_MATCH_MESSAGE)
+ Pod::UI.warn "[Expo-precompiled] No XCFramework Info.plist found in #{File.basename(tarball)}"
+ else
+ Pod::UI.warn "[Expo-precompiled] Failed to inspect #{File.basename(tarball)}: #{output.strip}"
+ end
+ next []
end
- Tempfile.create(['expo-xcframework-info', '.plist']) do |file|
- file.binmode
- file.write(plist_data)
- file.flush
- read_plist(file.path)
+ parsed = plists.map { |path| read_plist(path) }
+ if parsed.any?(&:nil?)
+ # Dropping the unreadable one would check a subset, which is the same hole a
+ # partial extraction opens.
+ Pod::UI.warn "[Expo-precompiled] Unreadable XCFramework Info.plist in #{File.basename(tarball)}"
+ next []
end
+
+ parsed
end
rescue StandardError => e
Pod::UI.warn "[Expo-precompiled] Failed to inspect #{File.basename(tarball)}: #{e.message}"
diff --git a/packages/expo-modules-autolinking/src/commands/prebuiltMetadataCommand.ts b/packages/expo-modules-autolinking/src/commands/prebuiltMetadataCommand.ts
new file mode 100644
index 00000000000000..dda74dec0eeb55
--- /dev/null
+++ b/packages/expo-modules-autolinking/src/commands/prebuiltMetadataCommand.ts
@@ -0,0 +1,147 @@
+import type commander from 'commander';
+import fs from 'fs';
+import path from 'path';
+
+import { scanDependenciesInSearchPath } from '../dependencies';
+import { createReactNativeConfigAsync } from '../reactNativeConfig';
+import type { RNConfigDependency } from '../reactNativeConfig/reactNativeConfig.types';
+import { scanFilesRecursively } from '../utils';
+import type { AutolinkingCommonArguments } from './autolinkingOptions';
+import { createAutolinkingOptionsLoader, registerAutolinkingArguments } from './autolinkingOptions';
+
+interface PrebuiltMetadataArguments extends AutolinkingCommonArguments {
+ json?: boolean | null;
+}
+
+export interface PrebuiltMetadataEntry {
+ type: 'internal' | 'external';
+ npmPackage: string;
+ packageRoot: string;
+ podspecDir: string;
+ productName: string;
+}
+
+function readJsonFile(filePath: string): any | null {
+ if (!fs.existsSync(filePath)) {
+ return null;
+ }
+ try {
+ return JSON.parse(fs.readFileSync(filePath, 'utf8'));
+ } catch (error) {
+ console.warn(`[prebuilt-metadata] Failed to read ${filePath}: ${error}`);
+ return null;
+ }
+}
+
+/** The expo repository root when this package runs from its packages/ checkout
+ * (its own location is the same anchor used for external-configs below). */
+function findExpoRepoRoot(): string | null {
+ const repoRoot = path.resolve(__dirname, '..', '..', '..', '..');
+ return fs.existsSync(path.join(repoRoot, 'packages', 'expo-modules-core', 'spm.config.json'))
+ ? repoRoot
+ : null;
+}
+
+async function scanInternalConfigs(
+ repoRoot: string,
+ entries: Record
+) {
+ const resolutions = await scanDependenciesInSearchPath(path.join(repoRoot, 'packages'));
+ for (const npmPackage of Object.keys(resolutions).sort()) {
+ const packageRoot = resolutions[npmPackage]!.path;
+ const config = readJsonFile(path.join(packageRoot, 'spm.config.json'));
+ if (!config) {
+ continue;
+ }
+ for (const product of config.products ?? []) {
+ const podName = product.podName;
+ if (podName == null) {
+ continue;
+ }
+ const podspecDir =
+ !fs.existsSync(path.join(packageRoot, 'ios', `${podName}.podspec`)) &&
+ fs.existsSync(path.join(packageRoot, `${podName}.podspec`))
+ ? packageRoot
+ : path.join(packageRoot, 'ios');
+ entries[podName] = {
+ type: 'internal',
+ npmPackage,
+ packageRoot,
+ podspecDir,
+ productName: product.name || podName,
+ };
+ }
+ }
+}
+
+async function scanExternalConfigs(
+ dependencies: Record,
+ entries: Record
+) {
+ const externalConfigsDir = path.join(__dirname, '..', '..', 'external-configs', 'ios');
+ for await (const file of scanFilesRecursively(externalConfigsDir, undefined, true)) {
+ if (file.name !== 'spm.config.json') {
+ continue;
+ }
+ const npmPackage = path.relative(externalConfigsDir, file.parentPath).split(path.sep).join('/');
+ const packageRoot = dependencies[npmPackage]?.root;
+ if (!packageRoot) {
+ continue;
+ }
+ const config = readJsonFile(file.path);
+ for (const product of config?.products ?? []) {
+ const podName = product.podName;
+ if (podName == null) {
+ continue;
+ }
+ entries[podName] = {
+ type: 'external',
+ npmPackage,
+ packageRoot,
+ podspecDir: packageRoot,
+ productName: product.name || podName,
+ };
+ }
+ }
+}
+
+/** Emits the prebuilt-modules metadata document (ENG-25370): the identity join
+ * between npm packages, pods, and products, for internal and external products. */
+export function prebuiltMetadataCommand(cli: commander.CommanderStatic) {
+ return registerAutolinkingArguments(cli.command('prebuilt-metadata [searchPaths...]'))
+ .option('-j, --json', 'Output results in the plain JSON format.', () => true, false)
+ .action(async (searchPaths: string[] | null, commandArguments: PrebuiltMetadataArguments) => {
+ const autolinkingOptionsLoader = createAutolinkingOptionsLoader({
+ ...commandArguments,
+ searchPaths,
+ });
+ const appRoot = await autolinkingOptionsLoader.getAppRoot();
+ const repoRoot = findExpoRepoRoot();
+ if (!repoRoot) {
+ throw new Error(
+ 'prebuilt-metadata currently requires an expo repository checkout. Support for standalone projects arrives with a later ENG-25370 phase.'
+ );
+ }
+
+ const entries: Record = {};
+ await scanInternalConfigs(repoRoot, entries);
+
+ const reactNativeConfig = await createReactNativeConfigAsync({
+ autolinkingOptions: await autolinkingOptionsLoader.getPlatformOptions('ios'),
+ appRoot,
+ sourceDir: undefined,
+ });
+ await scanExternalConfigs(reactNativeConfig.dependencies ?? {}, entries);
+
+ const sorted = Object.fromEntries(
+ Object.keys(entries)
+ .sort()
+ .map((podName) => [podName, entries[podName]])
+ );
+ if (commandArguments.json) {
+ console.log(JSON.stringify(sorted));
+ } else {
+ console.log(require('util').inspect(sorted, false, null, true));
+ }
+ });
+}
diff --git a/packages/expo-modules-autolinking/src/index.ts b/packages/expo-modules-autolinking/src/index.ts
index 94265a2d360b8c..086a9352cb2d2a 100644
--- a/packages/expo-modules-autolinking/src/index.ts
+++ b/packages/expo-modules-autolinking/src/index.ts
@@ -2,6 +2,7 @@ import commander from 'commander';
import { generateModulesProviderCommand } from './commands/generateModulesProviderCommand';
import { mirrorKotlinInlineModulesCommand } from './commands/mirrorKotlinInlineModulesCommand';
+import { prebuiltMetadataCommand } from './commands/prebuiltMetadataCommand';
import { reactNativeConfigCommand } from './commands/reactNativeConfigCommand';
import { resolveCommand } from './commands/resolveCommand';
import { searchCommand } from './commands/searchCommand';
@@ -16,6 +17,7 @@ async function main(args: string[]) {
verifyCommand(cli);
searchCommand(cli);
resolveCommand(cli);
+ prebuiltMetadataCommand(cli);
mirrorKotlinInlineModulesCommand(cli);
generateModulesProviderCommand(cli);
reactNativeConfigCommand(cli);
diff --git a/packages/expo-modules-core/CHANGELOG.md b/packages/expo-modules-core/CHANGELOG.md
index bfc239d5be20a3..9b54ef7e94b8fc 100644
--- a/packages/expo-modules-core/CHANGELOG.md
+++ b/packages/expo-modules-core/CHANGELOG.md
@@ -22,6 +22,7 @@
### 🐛 Bug fixes
+- [Android] Fix Expo module views not receiving props with React Native 0.87.
- [iOS][Android] Fixed a `matchContents` `RNHostView` and the `matchContents` host around it feeding each other's size back and forth, which grew the layout on every pass. ([#49483](https://github.com/expo/expo/pull/49483) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
- [iOS] Fixed SwiftUI view props re-decoding every field on every props update. Fabric sends the whole props map rather than a delta, so an unrelated prop change replaced each decoded value with an equal but distinct one, which cost a decode per field and stopped SwiftUI from pruning the view tree that reads it. A field whose raw value is unchanged now keeps the value decoded before, the same way `ExpoFabricView.updateProps` already worked for UIKit views. ([#48426](https://github.com/expo/expo/pull/48426) by [@nishan](https://github.com/intergalacticspacehighway))
- [iOS] Fixed `matchContents` hosts sometimes being laid out at a stale size. Regression from [#48059](https://github.com/expo/expo/pull/48059). ([#49211](https://github.com/expo/expo/pull/49211) by [@intergalacticspacehighway](https://github.com/intergalacticspacehighway))
diff --git a/packages/expo-modules-core/android/src/main/cpp/fabric/AndroidExpoViewComponentDescriptor.cpp b/packages/expo-modules-core/android/src/main/cpp/fabric/AndroidExpoViewComponentDescriptor.cpp
index 071db6108d8ae9..b1472b6d367eb5 100644
--- a/packages/expo-modules-core/android/src/main/cpp/fabric/AndroidExpoViewComponentDescriptor.cpp
+++ b/packages/expo-modules-core/android/src/main/cpp/fabric/AndroidExpoViewComponentDescriptor.cpp
@@ -30,14 +30,21 @@ react::Props::Shared AndroidExpoViewComponentDescriptor::cloneProps(
rawProps.parse(rawPropsParser_);
+ const auto &sourceProps = props
+ ? dynamic_cast(*props)
+ : *ExpoViewShadowNode::defaultSharedProps();
+
auto shadowNodeProps = std::make_shared(
context,
- props ? dynamic_cast(*props)
- : *ExpoViewShadowNode::defaultSharedProps(),
+ sourceProps,
rawProps,
filterObjectKeys_
);
+#ifdef RN_SERIALIZABLE_STATE
+ shadowNodeProps->initializeDynamicProps(sourceProps, rawProps, filterObjectKeys_);
+#endif
+
// TODO(@lukmccall): We probably can remove this loop
if (react::ReactNativeFeatureFlags::enableCppPropsIteratorSetter()) {
#ifdef RN_SERIALIZABLE_STATE
diff --git a/packages/expo-observe/CHANGELOG.md b/packages/expo-observe/CHANGELOG.md
index dcc9d3377eb1e4..5b4f66c00f77b3 100644
--- a/packages/expo-observe/CHANGELOG.md
+++ b/packages/expo-observe/CHANGELOG.md
@@ -18,6 +18,7 @@
### 💡 Others
+- [Android] Replace pending telemetry queues with persisted row-id cursors. ([#49547](https://github.com/expo/expo/pull/49547) by [@Ubax](https://github.com/Ubax))
- [iOS] Dispatch pending metrics and logs in chunks of 200 and retry HTTP 413 responses with smaller batches. ([#49121](https://github.com/expo/expo/pull/49121) by [@Ubax](https://github.com/Ubax))
- [Android] Retry a dispatch that gets HTTP 413 ([#49016](https://github.com/expo/expo/pull/49016) by [@Ubax](https://github.com/Ubax))
- [Android] Dispatch pending metrics and logs in bounded, oldest-first chunks without replacing active background work. ([#49012](https://github.com/expo/expo/pull/49012) by [@Ubax](https://github.com/Ubax))
diff --git a/packages/expo-observe/android/build.gradle b/packages/expo-observe/android/build.gradle
index 9652cc82463597..6d405945296b7a 100644
--- a/packages/expo-observe/android/build.gradle
+++ b/packages/expo-observe/android/build.gradle
@@ -1,22 +1,4 @@
buildscript {
- ext {
- getKspVersion = {
- if (rootProject.hasProperty("kspVersion")) {
- return rootProject["kspVersion"]
- }
-
- def kotlinVersion = rootProject.hasProperty("kotlinVersion") ? rootProject["kotlinVersion"] : "2.0.21"
- if (kotlinVersion == "2.1.20") {
- return "2.1.20-2.0.1"
- } else if (kotlinVersion == "2.0.21") {
- return "2.0.21-1.0.28"
- } else if (kotlinVersion == "1.9.25") {
- return "1.9.25-1.0.20"
- }
- return "1.9.24-1.0.20"
- }
- }
-
repositories
{
google()
@@ -26,13 +8,11 @@ buildscript {
dependencies {
classpath("org.jetbrains.kotlin.plugin.serialization:org.jetbrains.kotlin.plugin.serialization.gradle.plugin:${kotlinVersion}")
- classpath "com.google.devtools.ksp:symbol-processing-gradle-plugin:${getKspVersion()}"
}
}
apply plugin: 'com.android.library'
apply plugin: 'expo-module-gradle-plugin'
apply plugin: 'org.jetbrains.kotlin.plugin.serialization'
-apply plugin: 'com.google.devtools.ksp'
group = 'expo.modules.observe'
@@ -69,11 +49,6 @@ dependencies {
// This is a workaround for IDE warning - https://youtrack.jetbrains.com/issue/KTIJ-31549
implementation "androidx.annotation:annotation-experimental:1.5.1"
- def room_version = "2.8.3"
- implementation "androidx.room:room-runtime:$room_version"
- implementation "androidx.room:room-ktx:$room_version"
- ksp "androidx.room:room-compiler:$room_version"
-
implementation 'androidx.work:work-runtime-ktx:2.9.1'
testImplementation 'junit:junit:4.13.2'
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/Constants.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/Constants.kt
index 5381840e692c7d..fd6259d18e72a0 100644
--- a/packages/expo-observe/android/src/main/java/expo/modules/observe/Constants.kt
+++ b/packages/expo-observe/android/src/main/java/expo/modules/observe/Constants.kt
@@ -4,4 +4,3 @@ internal const val OBSERVE_TAG = "EasObserve"
internal const val OBSERVE_DEFAULT_BASE_URL = "https://o.expo.dev/"
internal const val DISPATCH_CHUNK_SIZE = 200
-internal const val SQLITE_MAX_BIND_VARIABLES = 900
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/CursorRepair.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/CursorRepair.kt
new file mode 100644
index 00000000000000..505e9cc52bbccd
--- /dev/null
+++ b/packages/expo-observe/android/src/main/java/expo/modules/observe/CursorRepair.kt
@@ -0,0 +1,58 @@
+// Copyright 2025-present 650 Industries. All rights reserved.
+
+package expo.modules.observe
+
+import android.content.Context
+import android.util.Log
+import expo.modules.appmetrics.storage.SessionManager
+import kotlinx.coroutines.CancellationException
+
+internal suspend fun repairCursorIfStale(
+ signalName: String,
+ readCursor: () -> Long,
+ writeCursor: (Long) -> Unit,
+ readMaxId: suspend () -> Long?
+) {
+ val cursor = readCursor()
+ if (cursor < 0) return
+
+ val maxId = try {
+ readMaxId()
+ } catch (error: CancellationException) {
+ throw error
+ } catch (error: Exception) {
+ Log.w(OBSERVE_TAG, "Failed to read max $signalName id while repairing cursor: ${error.message}")
+ return
+ }
+ if (cursor > (maxId ?: -1)) {
+ Log.i(
+ OBSERVE_TAG,
+ "Resetting stale $signalName dispatch cursor (was $cursor, max id is ${maxId ?: ""})"
+ )
+ writeCursor(-1)
+ }
+}
+
+internal suspend fun repairMetricCursorIfStale(
+ context: Context,
+ sessionManager: SessionManager
+) {
+ repairCursorIfStale(
+ signalName = "metric",
+ readCursor = { ObservePreferences.getLastDispatchedMetricId(context) },
+ writeCursor = { ObservePreferences.setLastDispatchedMetricId(context, it) },
+ readMaxId = sessionManager::getMaxMetricId
+ )
+}
+
+internal suspend fun repairLogCursorIfStale(
+ context: Context,
+ sessionManager: SessionManager
+) {
+ repairCursorIfStale(
+ signalName = "log",
+ readCursor = { ObservePreferences.getLastDispatchedLogId(context) },
+ writeCursor = { ObservePreferences.setLastDispatchedLogId(context, it) },
+ readMaxId = sessionManager::getMaxLogId
+ )
+}
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/DispatchUtils.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/DispatchUtils.kt
index b34a3018191e0c..7e1d1d42be3b8c 100644
--- a/packages/expo-observe/android/src/main/java/expo/modules/observe/DispatchUtils.kt
+++ b/packages/expo-observe/android/src/main/java/expo/modules/observe/DispatchUtils.kt
@@ -88,28 +88,6 @@ object DispatchUtils {
}
}
- /**
- * Whether the dispatch caller should remove the just-sent pending IDs from the queue.
- *
- * - `Success` and `PartialSuccess` remove them — the rows have been accepted by the server
- * (partial success rejects a subset server-side, but the bytes still landed; re-sending
- * them would just re-trip the same rejection).
- * - `NonRetryableFailure` ALSO removes them — the server has refused these rows
- * permanently, so retrying would produce the same answer; removing them drops the batch
- * so it can't wedge subsequent rounds. This is the acceptance-criterion behavior: a
- * 400/403 must not be re-sent on the next cycle.
- * - `PayloadTooLarge` removes the pending ID because multi-record batches are retried with
- * smaller chunks before this check, so reaching it means a single record exceeded the limit.
- * - `RetryableFailure` keeps them so they can be retried.
- */
- fun shouldRemovePending(result: DispatchResult): Boolean = when (result) {
- is DispatchResult.Success,
- is DispatchResult.PartialSuccess,
- is DispatchResult.NonRetryableFailure,
- is DispatchResult.PayloadTooLarge -> true
- is DispatchResult.RetryableFailure -> false
- }
-
/**
* Parses an HTTP `Retry-After` header into a delay in milliseconds from now. Accepts both
* formats permitted by RFC 7231: an integer delta-seconds, or an HTTP-date.
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/Event.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/Event.kt
index b0e44465501f82..72a7434b392a67 100644
--- a/packages/expo-observe/android/src/main/java/expo/modules/observe/Event.kt
+++ b/packages/expo-observe/android/src/main/java/expo/modules/observe/Event.kt
@@ -109,7 +109,7 @@ data class EASMetric(
* Wire shape of a log event ready for dispatch. Distinct from the storage-side
* `LogRecord`: this form has the JSON `attributes` blob already parsed back
* into a structured object (so the OTel encoder can map values to typed
- * `OTAnyValue`s) and drops storage-only columns like `logId`.
+ * `OTAnyValue`s) and drops storage-only columns like the row id.
*/
@Serializable
data class LogEvent(
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservabilityBackgroundWorker.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservabilityBackgroundWorker.kt
index e41d7f3ceb58a6..dbe6aa680e2190 100644
--- a/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservabilityBackgroundWorker.kt
+++ b/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservabilityBackgroundWorker.kt
@@ -15,16 +15,10 @@ import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import androidx.work.WorkerParameters
import androidx.work.workDataOf
-import expo.modules.observe.storage.PendingLogsManager
-import expo.modules.observe.storage.PendingMetricsManager
import expo.modules.appmetrics.storage.SessionManager
/**
- * Background worker that dispatches previously queued metrics to EAS Observe.
- *
- * This worker intentionally does NOT register a [SessionManager.MetricsInsertListener].
- * It only dispatches metrics that were already queued in the pending table by the foreground
- * [ObservabilityManager].
+ * Background worker that dispatches stored metrics and logs to EAS Observe.
*/
class ObservabilityBackgroundWorker(
context: Context,
@@ -42,15 +36,10 @@ class ObservabilityBackgroundWorker(
context = context
)
- val pendingMetricsManager = PendingMetricsManager(context)
- val pendingLogsManager = PendingLogsManager(context)
-
BaseObservabilityManager(
context = context,
projectId = projectId,
sessionManager = sessionManager,
- pendingMetricsManager = pendingMetricsManager,
- pendingLogsManager = pendingLogsManager,
baseUrl = baseUrl,
isDebugBuild = BuildConfig.DEBUG
)
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservabilityManager.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservabilityManager.kt
index eaeab04e8e6bdc..3b825f76f2fb41 100644
--- a/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservabilityManager.kt
+++ b/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservabilityManager.kt
@@ -3,8 +3,6 @@ package expo.modules.observe
import android.content.Context
import android.util.Log
import expo.modules.easclient.EASClientID
-import expo.modules.observe.storage.PendingLogsManager
-import expo.modules.observe.storage.PendingMetricsManager
import expo.modules.appmetrics.storage.SessionManager
import expo.modules.appmetrics.utils.TimeUtils
import expo.modules.interfaces.constants.ConstantsInterface
@@ -34,25 +32,13 @@ class ObservabilityManager(
}
val baseUrl = manifest.baseUrl ?: OBSERVE_DEFAULT_BASE_URL
- val pendingMetricsManager = PendingMetricsManager(context)
- val pendingLogsManager = PendingLogsManager(context)
-
baseManager = BaseObservabilityManager(
context = context,
sessionManager = sessionManager,
- pendingMetricsManager = pendingMetricsManager,
- pendingLogsManager = pendingLogsManager,
projectId = projectId,
baseUrl = baseUrl,
isDebugBuild = BuildConfig.DEBUG
)
-
- sessionManager.addMetricsInsertListener { metricIds ->
- pendingMetricsManager.addPendingMetrics(metricIds)
- }
- sessionManager.addLogsInsertListener { logIds ->
- pendingLogsManager.addPendingLogs(logIds)
- }
}
suspend fun dispatchUnsentMetrics() {
@@ -75,8 +61,6 @@ class ObservabilityManager(
class BaseObservabilityManager(
private val context: Context,
private val sessionManager: SessionManager,
- private val pendingMetricsManager: PendingMetricsManager,
- private val pendingLogsManager: PendingLogsManager,
val projectId: String,
val baseUrl: String,
private val isDebugBuild: Boolean = false,
@@ -108,20 +92,6 @@ class BaseObservabilityManager(
private var metricsRetryGate: DispatchUtils.RetryGateState = DispatchUtils.RetryGateState.initial
private var logsRetryGate: DispatchUtils.RetryGateState = DispatchUtils.RetryGateState.initial
- /**
- * Per-signal mutexes that serialize same-signal dispatch calls. Two `dispatchEvents`
- * invocations from JS can otherwise land on the same `BaseObservabilityManager` instance
- * concurrently and race on the gate's read-modify-write (and double-POST the same pending
- * rows). The metrics and logs paths take separate mutexes so they can still run in
- * parallel — only same-signal calls serialize.
- *
- * Worst case without these would be benign (a dropped gate update or a duplicate dispatch),
- * since the pending-ID stores are already DB-backed and telemetry is best-effort — but the
- * gate is in-memory state with no other synchronization, so close the race explicitly.
- */
- private val metricsDispatchMutex = Mutex()
- private val logsDispatchMutex = Mutex()
-
/**
* Returns true and logs when an active retry gate suppresses this dispatch round. Called
* inside each per-signal dispatch method rather than at a shared entry point, so a backoff
@@ -152,169 +122,156 @@ class BaseObservabilityManager(
)
suspend fun dispatchUnsentMetrics(): Unit = metricsDispatchMutex.withLock {
- if (!pendingMetricsManager.hasPendingMetrics()) {
- return
- }
-
if (retryGateBlocks(metricsRetryGate, "metrics")) {
return
}
+ repairMetricCursorIfStale(context, sessionManager)
if (!shouldDispatch()) {
- pendingMetricsManager.removeAllPendingMetrics()
+ val maxId = sessionManager.getMaxMetricId() ?: -1
+ if (ObservePreferences.getLastDispatchedMetricId(context) != maxId) {
+ ObservePreferences.setLastDispatchedMetricId(context, maxId)
+ }
return
}
+ var cursor = ObservePreferences.getLastDispatchedMetricId(context)
var chunkSize = dispatchChunkSize
while (currentCoroutineContext().isActive) {
- val pendingIds = pendingMetricsManager.getPendingMetricIds(chunkSize)
- // Use the default for the next batch unless a 413 below overrides it. Re-discovering
- // the limit each batch is fine: the server accepts payloads over 1 MB, so the default
- // chunk stays far below the limit and a 413 is exceptional.
+ val metrics = sessionManager.getMetrics(cursor, chunkSize)
chunkSize = dispatchChunkSize
- if (pendingIds.isEmpty()) {
+ if (metrics.isEmpty()) {
break
}
- val sessionsWithPendingMetrics = sessionManager.getSessionsWithMetrics(pendingIds)
-
- // Clean up orphaned pending IDs (metrics deleted from MetricsDatabase but still in pending table)
- val resolvedMetricIds = sessionsWithPendingMetrics.flatMap { it.metrics }.map { it.metricId }.toSet()
- val orphanedIds = pendingIds.filter { it !in resolvedMetricIds }
- if (orphanedIds.isNotEmpty()) {
- pendingMetricsManager.removePendingMetrics(orphanedIds)
- }
-
- if (sessionsWithPendingMetrics.isNotEmpty()) {
- val events = sessionsWithPendingMetrics.map { sessionWithMetrics ->
+ val highestId = metrics.last().id
+ val metricsBySessionId = metrics.groupBy { it.sessionId }
+ val sessions = sessionManager.getSessions(metricsBySessionId.keys).associateBy { it.id }
+ val events = metricsBySessionId.mapNotNull { (sessionId, sessionMetrics) ->
+ sessions[sessionId]?.let { session ->
Event(
- metadata = Metadata.fromSessionMetadata(sessionWithMetrics.session),
- metrics = sessionWithMetrics.metrics.map { EASMetric.fromMetric(it) }
+ metadata = Metadata.fromSessionMetadata(session),
+ metrics = sessionMetrics.map(EASMetric::fromMetric)
)
}
+ }
+ if (events.isEmpty()) {
+ cursor = highestId
+ ObservePreferences.setLastDispatchedMetricId(context, cursor)
+ continue
+ }
- val result = eventDispatcher.dispatch(events)
- metricsRetryGate = nextGate(metricsRetryGate, result)
- val dispatchedMetricIds = sessionsWithPendingMetrics.flatMap { it.metrics }.map { it.metricId }
- when (result) {
- is DispatchResult.PartialSuccess ->
- Log.w(
- OBSERVE_TAG,
- "Partial success on batch of ${dispatchedMetricIds.size} metric event(s): " +
- "server rejected ${result.partial.rejectedCount} " +
- "(${result.partial.errorMessage ?: "no error message"})"
- )
- is DispatchResult.NonRetryableFailure ->
- Log.w(
- OBSERVE_TAG,
- "Dropping batch of ${dispatchedMetricIds.size} metric event(s): ${result.reason}"
- )
- is DispatchResult.PayloadTooLarge ->
- if (dispatchedMetricIds.size == 1) {
- Log.w(OBSERVE_TAG, "Dropping metric event that exceeds the server's payload limit")
- }
- is DispatchResult.Success, is DispatchResult.RetryableFailure -> Unit
- }
- if (result is DispatchResult.PayloadTooLarge && dispatchedMetricIds.size > 1) {
- chunkSize = dispatchedMetricIds.size / 2
- // Keep the pending metrics, but retry immediately with a smaller chunk.
- continue
+ val result = eventDispatcher.dispatch(events)
+ metricsRetryGate = nextGate(metricsRetryGate, result)
+ when (result) {
+ is DispatchResult.PartialSuccess ->
+ Log.w(
+ OBSERVE_TAG,
+ "Partial success on batch of ${metrics.size} metric event(s): " +
+ "server rejected ${result.partial.rejectedCount} " +
+ "(${result.partial.errorMessage ?: "no error message"})"
+ )
+ is DispatchResult.NonRetryableFailure ->
+ Log.w(OBSERVE_TAG, "Dropping batch of ${metrics.size} metric event(s): ${result.reason}")
+ DispatchResult.PayloadTooLarge -> if (metrics.size == 1) {
+ Log.w(OBSERVE_TAG, "Dropping metric event that exceeds the server's payload limit")
}
- if (!DispatchUtils.shouldRemovePending(result)) {
- break
+ DispatchResult.Success, is DispatchResult.RetryableFailure -> Unit
+ }
+ if (result is DispatchResult.PayloadTooLarge && metrics.size > 1) {
+ chunkSize = metrics.size / 2
+ continue
+ }
+ when (result) {
+ DispatchResult.Success, is DispatchResult.PartialSuccess -> {
+ cursor = highestId
+ ObservePreferences.setLastDispatchedMetricId(context, cursor)
}
- pendingMetricsManager.removePendingMetrics(dispatchedMetricIds)
- // A systematic rejection or an oversized record: leave the rest for the next run.
- if (result is DispatchResult.NonRetryableFailure || result is DispatchResult.PayloadTooLarge) {
+ is DispatchResult.NonRetryableFailure, DispatchResult.PayloadTooLarge -> {
+ ObservePreferences.setLastDispatchedMetricId(context, highestId)
break
}
+ is DispatchResult.RetryableFailure -> break
}
}
}
/**
* Dispatches log events to `/v1/logs`. Independent from the metrics path —
- * a logs failure doesn't affect the metrics pending table and vice versa.
+ * a logs failure doesn't affect the metrics cursor and vice versa.
*/
suspend fun dispatchUnsentLogs(): Unit = logsDispatchMutex.withLock {
- if (!pendingLogsManager.hasPendingLogs()) {
- return
- }
-
if (retryGateBlocks(logsRetryGate, "logs")) {
return
}
+ repairLogCursorIfStale(context, sessionManager)
if (!shouldDispatch()) {
- pendingLogsManager.removeAllPendingLogs()
+ val maxId = sessionManager.getMaxLogId() ?: -1
+ if (ObservePreferences.getLastDispatchedLogId(context) != maxId) {
+ ObservePreferences.setLastDispatchedLogId(context, maxId)
+ }
return
}
+ var cursor = ObservePreferences.getLastDispatchedLogId(context)
var chunkSize = dispatchChunkSize
while (currentCoroutineContext().isActive) {
- val pendingIds = pendingLogsManager.getPendingLogIds(chunkSize)
- // Use the default for the next batch unless a 413 below overrides it. Re-discovering
- // the limit each batch is fine: the server accepts payloads over 1 MB, so the default
- // chunk stays far below the limit and a 413 is exceptional.
+ val logs = sessionManager.getLogs(cursor, chunkSize)
chunkSize = dispatchChunkSize
- if (pendingIds.isEmpty()) {
+ if (logs.isEmpty()) {
break
}
- val sessionsWithPendingLogs = sessionManager.getSessionsWithLogs(pendingIds)
-
- // Clean up orphaned pending IDs (logs deleted from the `logs` table but
- // still tracked in `pending_logs`).
- val resolvedLogIds = sessionsWithPendingLogs.flatMap { it.logs }.map { it.logId }.toSet()
- val orphanedIds = pendingIds.filter { it !in resolvedLogIds }
- if (orphanedIds.isNotEmpty()) {
- pendingLogsManager.removePendingLogs(orphanedIds)
- }
-
- if (sessionsWithPendingLogs.isNotEmpty()) {
- val events = sessionsWithPendingLogs.map { sessionWithLogs ->
+ val highestId = logs.last().id
+ val logsBySessionId = logs.groupBy { it.sessionId }
+ val sessions = sessionManager.getSessions(logsBySessionId.keys).associateBy { it.id }
+ val events = logsBySessionId.mapNotNull { (sessionId, sessionLogs) ->
+ sessions[sessionId]?.let { session ->
Event(
- metadata = Metadata.fromSessionMetadata(sessionWithLogs.session),
+ metadata = Metadata.fromSessionMetadata(session),
metrics = emptyList(),
- logs = sessionWithLogs.logs.map { LogEvent.fromLogRecord(it) }
+ logs = sessionLogs.map(LogEvent::fromLogRecord)
)
}
+ }
+ if (events.isEmpty()) {
+ cursor = highestId
+ ObservePreferences.setLastDispatchedLogId(context, cursor)
+ continue
+ }
- val result = eventDispatcher.dispatchLogs(events)
- logsRetryGate = nextGate(logsRetryGate, result)
- val dispatchedLogIds = sessionsWithPendingLogs.flatMap { it.logs }.map { it.logId }
- when (result) {
- is DispatchResult.PartialSuccess ->
- Log.w(
- OBSERVE_TAG,
- "Partial success on batch of ${dispatchedLogIds.size} log event(s): " +
- "server rejected ${result.partial.rejectedCount} " +
- "(${result.partial.errorMessage ?: "no error message"})"
- )
- is DispatchResult.NonRetryableFailure ->
- Log.w(
- OBSERVE_TAG,
- "Dropping batch of ${dispatchedLogIds.size} log event(s): ${result.reason}"
- )
- is DispatchResult.PayloadTooLarge ->
- if (dispatchedLogIds.size == 1) {
- Log.w(OBSERVE_TAG, "Dropping log event that exceeds the server's payload limit")
- }
- is DispatchResult.Success, is DispatchResult.RetryableFailure -> Unit
- }
- if (result is DispatchResult.PayloadTooLarge && dispatchedLogIds.size > 1) {
- chunkSize = dispatchedLogIds.size / 2
- // Keep the pending logs, but retry immediately with a smaller chunk.
- continue
+ val result = eventDispatcher.dispatchLogs(events)
+ logsRetryGate = nextGate(logsRetryGate, result)
+ when (result) {
+ is DispatchResult.PartialSuccess ->
+ Log.w(
+ OBSERVE_TAG,
+ "Partial success on batch of ${logs.size} log event(s): " +
+ "server rejected ${result.partial.rejectedCount} " +
+ "(${result.partial.errorMessage ?: "no error message"})"
+ )
+ is DispatchResult.NonRetryableFailure ->
+ Log.w(OBSERVE_TAG, "Dropping batch of ${logs.size} log event(s): ${result.reason}")
+ DispatchResult.PayloadTooLarge -> if (logs.size == 1) {
+ Log.w(OBSERVE_TAG, "Dropping log event that exceeds the server's payload limit")
}
- if (!DispatchUtils.shouldRemovePending(result)) {
- break
+ DispatchResult.Success, is DispatchResult.RetryableFailure -> Unit
+ }
+ if (result is DispatchResult.PayloadTooLarge && logs.size > 1) {
+ chunkSize = logs.size / 2
+ continue
+ }
+ when (result) {
+ DispatchResult.Success, is DispatchResult.PartialSuccess -> {
+ cursor = highestId
+ ObservePreferences.setLastDispatchedLogId(context, cursor)
}
- pendingLogsManager.removePendingLogs(dispatchedLogIds)
- // A systematic rejection or an oversized record: leave the rest for the next run.
- if (result is DispatchResult.NonRetryableFailure || result is DispatchResult.PayloadTooLarge) {
+ is DispatchResult.NonRetryableFailure, DispatchResult.PayloadTooLarge -> {
+ ObservePreferences.setLastDispatchedLogId(context, highestId)
break
}
+ is DispatchResult.RetryableFailure -> break
}
}
}
@@ -338,10 +295,16 @@ class BaseObservabilityManager(
}
suspend fun cleanup() {
- pendingMetricsManager.cleanupOldPendingMetrics()
- pendingLogsManager.cleanupOldPendingLogs()
// TODO(@ubax): Move sessionManager.cleanupOldSessions out of eas observe
sessionManager.cleanupOldSessions()
+ // Remove the database used by the old pending telemetry queues.
+ context.deleteDatabase("eas_observe")
sessionManager.cleanupOldLogs()
}
+
+ companion object {
+ // Serialize foreground and background dispatches without blocking the other signal.
+ private val metricsDispatchMutex = Mutex()
+ private val logsDispatchMutex = Mutex()
+ }
}
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservePreferences.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservePreferences.kt
index 0cc18fbd56999b..9d23e89df40c45 100644
--- a/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservePreferences.kt
+++ b/packages/expo-observe/android/src/main/java/expo/modules/observe/ObservePreferences.kt
@@ -8,6 +8,8 @@ import kotlinx.serialization.json.Json
private const val PREFS_NAME = "dev.expo.observe"
private const val KEY_CONFIG = "config"
private const val KEY_BUNDLE_DEFAULTS = "bundleDefaults"
+private const val KEY_LAST_DISPATCHED_METRIC_ID = "lastDispatchedMetricId"
+private const val KEY_LAST_DISPATCHED_LOG_ID = "lastDispatchedLogId"
/**
* Snapshot of the last `configure(...)` payload
@@ -54,4 +56,24 @@ object ObservePreferences {
putString(KEY_BUNDLE_DEFAULTS, Json.encodeToString(defaults))
}
}
+
+ fun getLastDispatchedMetricId(context: Context): Long =
+ context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
+ .getLong(KEY_LAST_DISPATCHED_METRIC_ID, -1)
+
+ fun setLastDispatchedMetricId(context: Context, id: Long) {
+ context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE).edit(commit = true) {
+ putLong(KEY_LAST_DISPATCHED_METRIC_ID, id)
+ }
+ }
+
+ fun getLastDispatchedLogId(context: Context): Long =
+ context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE)
+ .getLong(KEY_LAST_DISPATCHED_LOG_ID, -1)
+
+ fun setLastDispatchedLogId(context: Context, id: Long) {
+ context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE).edit(commit = true) {
+ putLong(KEY_LAST_DISPATCHED_LOG_ID, id)
+ }
+ }
}
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/storage/ObserveDatabase.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/storage/ObserveDatabase.kt
deleted file mode 100644
index 3292453a69881e..00000000000000
--- a/packages/expo-observe/android/src/main/java/expo/modules/observe/storage/ObserveDatabase.kt
+++ /dev/null
@@ -1,94 +0,0 @@
-package expo.modules.observe.storage
-
-import android.content.Context
-import androidx.room.Dao
-import androidx.room.Database
-import androidx.room.Entity
-import androidx.room.Insert
-import androidx.room.OnConflictStrategy
-import androidx.room.PrimaryKey
-import androidx.room.Query
-import androidx.room.Room
-import androidx.room.RoomDatabase
-
-// TODO: Draining large backlogs from both pending tables reruns `ORDER BY addedAt`
-// for every chunk. Consider `Index("addedAt")` and a version bump if this matters in practice.
-@Entity(tableName = "pending_metrics")
-data class PendingMetric(
- @PrimaryKey val metricId: String,
- // ISO 8601 timestamp
- val addedAt: String
-)
-
-@Entity(tableName = "pending_logs")
-data class PendingLog(
- @PrimaryKey val logId: String,
- // ISO 8601 timestamp
- val addedAt: String
-)
-
-@Dao
-interface PendingMetricDao {
- @Insert(onConflict = OnConflictStrategy.IGNORE)
- suspend fun insertAll(metrics: List)
-
- @Query("SELECT metricId FROM pending_metrics ORDER BY addedAt ASC LIMIT :limit")
- suspend fun getMetricIds(limit: Int): List
-
- @Query("SELECT EXISTS(SELECT 1 FROM pending_metrics)")
- suspend fun hasMetricIds(): Boolean
-
- @Query("DELETE FROM pending_metrics")
- suspend fun deleteAll()
-
- @Query("DELETE FROM pending_metrics WHERE metricId IN (:metricIds)")
- suspend fun deleteByIds(metricIds: List)
-
- @Query("DELETE FROM pending_metrics WHERE addedAt < :cutoffTimestamp")
- suspend fun deleteOlderThan(cutoffTimestamp: String)
-}
-
-@Dao
-interface PendingLogDao {
- @Insert(onConflict = OnConflictStrategy.IGNORE)
- suspend fun insertAll(logs: List)
-
- @Query("SELECT logId FROM pending_logs ORDER BY addedAt ASC LIMIT :limit")
- suspend fun getLogIds(limit: Int): List
-
- @Query("SELECT EXISTS(SELECT 1 FROM pending_logs)")
- suspend fun hasLogIds(): Boolean
-
- @Query("DELETE FROM pending_logs")
- suspend fun deleteAll()
-
- @Query("DELETE FROM pending_logs WHERE logId IN (:logIds)")
- suspend fun deleteByIds(logIds: List)
-
- @Query("DELETE FROM pending_logs WHERE addedAt < :cutoffTimestamp")
- suspend fun deleteOlderThan(cutoffTimestamp: String)
-}
-
-@Database(entities = [PendingMetric::class, PendingLog::class], version = 2, exportSchema = false)
-abstract class ObserveDatabase : RoomDatabase() {
- abstract fun pendingMetricDao(): PendingMetricDao
-
- abstract fun pendingLogDao(): PendingLogDao
-
- companion object {
- @Volatile
- private var INSTANCE: ObserveDatabase? = null
-
- fun getDatabase(context: Context): ObserveDatabase =
- INSTANCE ?: synchronized(this) {
- INSTANCE ?: Room
- .databaseBuilder(
- context.applicationContext,
- ObserveDatabase::class.java,
- "eas_observe"
- ).fallbackToDestructiveMigration()
- .build()
- .also { INSTANCE = it }
- }
- }
-}
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/storage/PendingLogsManager.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/storage/PendingLogsManager.kt
deleted file mode 100644
index 542e2268242ebc..00000000000000
--- a/packages/expo-observe/android/src/main/java/expo/modules/observe/storage/PendingLogsManager.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-package expo.modules.observe.storage
-
-import android.content.Context
-import androidx.room.withTransaction
-import expo.modules.appmetrics.utils.TimeUtils
-import expo.modules.observe.SQLITE_MAX_BIND_VARIABLES
-
-class PendingLogsManager(
- context: Context,
- database: ObserveDatabase? = null
-) {
- private val database: ObserveDatabase = database ?: ObserveDatabase.getDatabase(context)
-
- suspend fun addPendingLogs(logIds: List) {
- val now = TimeUtils.getCurrentTimestampInISOFormat()
- val pendingLogs = logIds.map { PendingLog(logId = it, addedAt = now) }
- database.pendingLogDao().insertAll(pendingLogs)
- }
-
- suspend fun getPendingLogIds(limit: Int): List = database.pendingLogDao().getLogIds(limit)
-
- suspend fun hasPendingLogs(): Boolean = database.pendingLogDao().hasLogIds()
-
- suspend fun removeAllPendingLogs() = database.pendingLogDao().deleteAll()
-
- suspend fun removePendingLogs(logIds: List) {
- database.withTransaction {
- logIds.chunked(SQLITE_MAX_BIND_VARIABLES).forEach { chunk ->
- database.pendingLogDao().deleteByIds(chunk)
- }
- }
- }
-
- suspend fun cleanupOldPendingLogs() {
- val cutoffTimestamp = TimeUtils.getTimestampInISOFormatFromPast(SECONDS_TO_REMOVE_OLD_PENDING_LOGS)
- database.pendingLogDao().deleteOlderThan(cutoffTimestamp)
- }
-
- companion object {
- private const val SECONDS_TO_REMOVE_OLD_PENDING_LOGS: Long = 7 * 24 * 60 * 60 // 7 days in seconds
- }
-}
diff --git a/packages/expo-observe/android/src/main/java/expo/modules/observe/storage/PendingMetricsManager.kt b/packages/expo-observe/android/src/main/java/expo/modules/observe/storage/PendingMetricsManager.kt
deleted file mode 100644
index 7db4f82fbf3190..00000000000000
--- a/packages/expo-observe/android/src/main/java/expo/modules/observe/storage/PendingMetricsManager.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-package expo.modules.observe.storage
-
-import android.content.Context
-import androidx.room.withTransaction
-import expo.modules.appmetrics.utils.TimeUtils
-import expo.modules.observe.SQLITE_MAX_BIND_VARIABLES
-
-class PendingMetricsManager(
- context: Context,
- database: ObserveDatabase? = null
-) {
- private val database: ObserveDatabase = database ?: ObserveDatabase.getDatabase(context)
-
- suspend fun addPendingMetrics(metricIds: List) {
- val now = TimeUtils.getCurrentTimestampInISOFormat()
- val pendingMetrics = metricIds.map { PendingMetric(metricId = it, addedAt = now) }
- database.pendingMetricDao().insertAll(pendingMetrics)
- }
-
- suspend fun getPendingMetricIds(limit: Int): List = database.pendingMetricDao().getMetricIds(limit)
-
- suspend fun hasPendingMetrics(): Boolean = database.pendingMetricDao().hasMetricIds()
-
- suspend fun removeAllPendingMetrics() = database.pendingMetricDao().deleteAll()
-
- suspend fun removePendingMetrics(metricIds: List) {
- database.withTransaction {
- metricIds.chunked(SQLITE_MAX_BIND_VARIABLES).forEach { chunk ->
- database.pendingMetricDao().deleteByIds(chunk)
- }
- }
- }
-
- suspend fun cleanupOldPendingMetrics() {
- val cutoffTimestamp = TimeUtils.getTimestampInISOFormatFromPast(SECONDS_TO_REMOVE_OLD_PENDING_METRICS)
- database.pendingMetricDao().deleteOlderThan(cutoffTimestamp)
- }
-
- companion object {
- private const val SECONDS_TO_REMOVE_OLD_PENDING_METRICS: Long = 7 * 24 * 60 * 60 // 7 days in seconds
- }
-}
diff --git a/packages/expo-observe/android/src/test/java/expo/modules/observe/BaseObservabilityManagerTest.kt b/packages/expo-observe/android/src/test/java/expo/modules/observe/BaseObservabilityManagerTest.kt
index a4089870f26cba..7f7352ec2ba18d 100644
--- a/packages/expo-observe/android/src/test/java/expo/modules/observe/BaseObservabilityManagerTest.kt
+++ b/packages/expo-observe/android/src/test/java/expo/modules/observe/BaseObservabilityManagerTest.kt
@@ -1,55 +1,56 @@
package expo.modules.observe
import android.content.Context
-import expo.modules.observe.storage.PendingMetricsManager
+import expo.modules.appmetrics.storage.LogRecord
import expo.modules.appmetrics.storage.Metric
import expo.modules.appmetrics.storage.Session
-import expo.modules.appmetrics.storage.LogRecord
import expo.modules.appmetrics.storage.SessionManager
-import expo.modules.appmetrics.storage.SessionWithLogs
-import expo.modules.appmetrics.storage.SessionWithMetrics
-import expo.modules.appmetrics.utils.TimeUtils
-import io.mockk.*
+import io.mockk.coEvery
+import io.mockk.coVerify
+import io.mockk.every
+import io.mockk.mockk
+import io.mockk.mockkObject
+import io.mockk.unmockkAll
+import io.mockk.verify
import kotlinx.coroutines.cancel
import kotlinx.coroutines.currentCoroutineContext
import kotlinx.coroutines.launch
import kotlinx.coroutines.test.runTest
-import kotlinx.serialization.json.buildJsonObject
-import kotlinx.serialization.json.put
import org.junit.After
-import org.junit.Assert.*
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertNull
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
+import kotlinx.serialization.json.buildJsonObject
+import kotlinx.serialization.json.put
@RunWith(RobolectricTestRunner::class)
@Config(manifest = Config.NONE, sdk = [28])
class BaseObservabilityManagerTest {
- private lateinit var mockContext: Context
- private lateinit var mockSessionManager: SessionManager
- private lateinit var mockEventDispatcher: EventDispatcher
- private lateinit var mockPendingMetricsManager: PendingMetricsManager
- private lateinit var mockPendingLogsManager: expo.modules.observe.storage.PendingLogsManager
-
- private val testProjectId = "test-project-123"
- private val testBaseUrl = "https://test.example.com/"
+ private val context = mockk(relaxed = true)
+ private val sessionManager = mockk(relaxed = true)
+ private val eventDispatcher = mockk(relaxed = true)
+ private var metricCursor = -1L
+ private var logCursor = -1L
@Before
fun setUp() {
- mockContext = mockk(relaxed = true)
- mockSessionManager = mockk(relaxed = true)
- mockEventDispatcher = mockk(relaxed = true)
- mockPendingMetricsManager = mockk(relaxed = true)
- mockPendingLogsManager = mockk(relaxed = true)
- coEvery { mockPendingMetricsManager.hasPendingMetrics() } returns true
- coEvery { mockPendingLogsManager.hasPendingLogs() } returns true
-
- // Default to enabled so existing tests aren't short-circuited
mockkObject(ObservePreferences)
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchingEnabled = true, sampleRate = null)
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchingEnabled = true)
every { ObservePreferences.getBundleDefaults(any()) } returns null
+ every { ObservePreferences.getLastDispatchedMetricId(any()) } answers { metricCursor }
+ every { ObservePreferences.setLastDispatchedMetricId(any(), any()) } answers {
+ metricCursor = secondArg()
+ }
+ every { ObservePreferences.getLastDispatchedLogId(any()) } answers { logCursor }
+ every { ObservePreferences.setLastDispatchedLogId(any(), any()) } answers {
+ logCursor = secondArg()
+ }
+ coEvery { sessionManager.getMaxMetricId() } returns null
+ coEvery { sessionManager.getMaxLogId() } returns null
}
@After
@@ -57,1281 +58,532 @@ class BaseObservabilityManagerTest {
unmockkAll()
}
- // region dispatchingEnabled tests
+ // region Dispatching enabled tests
@Test
- fun `when dispatchingEnabled is false, pending metrics are removed without dispatching`() =
- runTest {
- // Arrange
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchingEnabled = false)
-
- val manager = createManager()
+ fun `disabled dispatch fast forwards both cursors`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchingEnabled = false)
+ coEvery { sessionManager.getMaxMetricId() } returns 12
+ coEvery { sessionManager.getMaxLogId() } returns 34
+ val manager = createManager()
- // Act
- manager.dispatchUnsentMetrics()
+ manager.dispatchUnsentMetrics()
+ manager.dispatchUnsentLogs()
- // Assert - dispatch is never called
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
-
- // Assert - sessions are never fetched
- coVerify(exactly = 0) { mockSessionManager.getSessionsWithMetrics(any()) }
-
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- coVerify(exactly = 0) { mockPendingMetricsManager.getPendingMetricIds(any()) }
- }
+ assertEquals(12, metricCursor)
+ assertEquals(34, logCursor)
+ coVerify(exactly = 0) { sessionManager.getMetrics(any(), any()) }
+ coVerify(exactly = 0) { sessionManager.getLogs(any(), any()) }
+ }
@Test
- fun `when dispatchingEnabled is null on a stored config and isDebugBuild is false, metrics are dispatched`() =
- runTest {
- // Arrange — a stored config without an explicit dispatchingEnabled doesn't suppress dispatch on release builds.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchingEnabled = null)
- val devMetric = createMetric("metric1", metricId = "dev-metric-id")
- val devSession = createSessionWithMetrics(
- sessionId = "dev-session",
- environment = "development",
- metrics = listOf(devMetric)
- )
+ fun `disabled dispatch does not rewrite unchanged cursors`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchingEnabled = false)
+ metricCursor = 12
+ logCursor = 34
+ coEvery { sessionManager.getMaxMetricId() } returns 12
+ coEvery { sessionManager.getMaxLogId() } returns 34
+ val manager = createManager()
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("dev-metric-id"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(devSession)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- val removedIds = mutableListOf()
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedIds.addAll(firstArg>())
- }
-
- val manager = createManager(isDebugBuild = false)
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify {
- mockEventDispatcher.dispatch(
- match { events ->
- events.size == 1 && events[0].metadata.environment == "development"
- }
- )
- }
- assertEquals(1, removedIds.size)
- assertTrue(removedIds.contains("dev-metric-id"))
- }
-
- @Test
- fun `when dispatchingEnabled is true, and isDebugBuild is false, metrics are dispatched`() =
- runTest {
- // Arrange — explicit opt-in lifts the debug default.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchingEnabled = true)
- val devMetric = createMetric("metric1", metricId = "dev-metric-id")
- val devSession = createSessionWithMetrics(
- sessionId = "dev-session",
- environment = "development",
- metrics = listOf(devMetric)
- )
+ manager.dispatchUnsentMetrics()
+ manager.dispatchUnsentLogs()
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("dev-metric-id"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(devSession)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- val removedIds = mutableListOf()
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedIds.addAll(firstArg>())
- }
-
- val manager = createManager(isDebugBuild = false)
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify {
- mockEventDispatcher.dispatch(
- match { events ->
- events.size == 1 && events[0].metadata.environment == "development"
- }
- )
- }
- assertEquals(1, removedIds.size)
- assertTrue(removedIds.contains("dev-metric-id"))
- }
+ assertEquals(12, metricCursor)
+ assertEquals(34, logCursor)
+ verify(exactly = 0) { ObservePreferences.setLastDispatchedMetricId(any(), any()) }
+ verify(exactly = 0) { ObservePreferences.setLastDispatchedLogId(any(), any()) }
+ }
@Test
- fun `when stored config is absent and isDebugBuild is false, metrics are dispatched`() =
- runTest {
- // Arrange — release builds default to on.
- every { ObservePreferences.getConfig(any()) } returns null
- val prodMetric = createMetric("metric1", metricId = "prod-metric-id")
- val prodSession = createSessionWithMetrics(
- sessionId = "prod-session",
- environment = "production",
- metrics = listOf(prodMetric)
- )
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("prod-metric-id"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(prodSession)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
+ fun `when dispatchingEnabled is null on a stored config and isDebugBuild is false, metrics are dispatched`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchingEnabled = null)
+ stubMetricDispatch()
- val manager = createManager(isDebugBuild = false)
+ createManager().dispatchUnsentMetrics()
- // Act
- manager.dispatchUnsentMetrics()
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
- // Assert
- coVerify {
- mockEventDispatcher.dispatch(
- match { events ->
- events.size == 1 && events[0].metadata.environment == "production"
- }
- )
- }
- }
+ @Test
+ fun `when stored config is absent and isDebugBuild is false, metrics are dispatched`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns null
+ stubMetricDispatch()
- // endregion
+ createManager().dispatchUnsentMetrics()
- // region dispatchInDebug tests
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `when dispatchInDebug is true on debug build, metrics are dispatched`() =
- runTest {
- // Arrange — explicit opt-in lifts the debug-build gate.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = true)
- val devMetric = createMetric("metric1", metricId = "dev-metric-id")
- val devSession = createSessionWithMetrics(
- sessionId = "dev-session",
- environment = "development",
- metrics = listOf(devMetric)
- )
+ fun `when dispatchingEnabled is false, dispatchInDebug and sampleRate have no effect`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(
+ dispatchingEnabled = false,
+ dispatchInDebug = true,
+ sampleRate = 1.0
+ )
+ coEvery { sessionManager.getMaxMetricId() } returns 10
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("dev-metric-id"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(devSession)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
+ createManager(isDebugBuild = true, deterministicUniformValue = 0.0).dispatchUnsentMetrics()
- val removedIds = mutableListOf()
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedIds.addAll(firstArg>())
- }
+ assertEquals(10, metricCursor)
+ coVerify(exactly = 0) { eventDispatcher.dispatch(any()) }
+ }
- val manager = createManager(isDebugBuild = true)
+ // endregion
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- assertEquals(listOf("dev-metric-id"), removedIds)
- }
+ // region Dispatch in debug tests
@Test
- fun `when dispatchInDebug is false explicitly on debug build, pending metrics are removed without dispatching`() =
- runTest {
- // Arrange — explicit opt-out behaves like the default on debug builds.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = false)
-
- val manager = createManager(isDebugBuild = true)
+ fun `when dispatchInDebug is true on debug build, metrics are dispatched`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = true)
+ stubMetricDispatch()
- // Act
- manager.dispatchUnsentMetrics()
+ createManager(isDebugBuild = true).dispatchUnsentMetrics()
- // Assert — short-circuit: no session lookup, no dispatch, and the pending table is cleared.
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 0) { mockSessionManager.getSessionsWithMetrics(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- }
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `when dispatchInDebug is true on release build, metrics dispatch normally`() =
- runTest {
- // Arrange — dispatchInDebug is a no-op on release builds; release always dispatches (subject to other gates).
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = true)
- val prodMetric = createMetric("metric1", metricId = "prod-metric-id")
- val prodSession = createSessionWithMetrics(
- sessionId = "prod-session",
- environment = "production",
- metrics = listOf(prodMetric)
- )
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("prod-metric-id"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(prodSession)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
+ fun `when dispatchInDebug is false explicitly on debug build, metric cursor is fast forwarded without dispatching`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = false)
+ coEvery { sessionManager.getMaxMetricId() } returns 10
- val manager = createManager(isDebugBuild = false)
+ createManager(isDebugBuild = true).dispatchUnsentMetrics()
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- }
+ assertEquals(10, metricCursor)
+ coVerify(exactly = 0) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `when dispatchingEnabled is false, dispatchInDebug being true has no effect`() =
- runTest {
- // Arrange — dispatchingEnabled=false wins over dispatchInDebug=true.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(
- dispatchingEnabled = false,
- dispatchInDebug = true
- )
- val manager = createManager(isDebugBuild = true)
+ fun `when dispatchInDebug is false on release build, metrics dispatch normally`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = false)
+ stubMetricDispatch()
- // Act
- manager.dispatchUnsentMetrics()
+ createManager(isDebugBuild = false).dispatchUnsentMetrics()
- // Assert
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- }
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
// endregion
- // region Combined isDev signal tests (isJsDev || isDebugBuild)
+ // region Combined dev mode tests
@Test
- fun `when isJsDev is true on release native build, dispatchInDebug=false discards metrics`() =
- runTest {
- // Arrange — release native binary running a Metro dev JS bundle. JS dev alone gates dispatch.
- every { ObservePreferences.getBundleDefaults(any()) } returns
- PersistedBundleDefaults(environment = "development", isJsDev = true)
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = false)
- val manager = createManager(isDebugBuild = false)
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- }
+ fun `when isJsDev is true on release native build, dispatchInDebug false fast forwards the metric cursor`() = runTest {
+ every { ObservePreferences.getBundleDefaults(any()) } returns
+ PersistedBundleDefaults(environment = "development", isJsDev = true)
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = false)
+ coEvery { sessionManager.getMaxMetricId() } returns 10
- @Test
- fun `when isJsDev is true and isDebugBuild is true, dispatchInDebug=true dispatches`() =
- runTest {
- // Arrange — both signals say dev; explicit override lifts the gate.
- every { ObservePreferences.getBundleDefaults(any()) } returns
- PersistedBundleDefaults(environment = "development", isJsDev = true)
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = true)
- val devMetric = createMetric("metric1", metricId = "dev-metric-id")
- val devSession = createSessionWithMetrics(
- sessionId = "dev-session",
- environment = "development",
- metrics = listOf(devMetric)
- )
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("dev-metric-id"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(devSession)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } just runs
-
- val manager = createManager(isDebugBuild = true)
-
- // Act
- manager.dispatchUnsentMetrics()
+ createManager(isDebugBuild = false).dispatchUnsentMetrics()
- // Assert
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- }
+ assertEquals(10, metricCursor)
+ coVerify(exactly = 0) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `when isJsDev is false and isDebugBuild is false, metrics dispatch (release everywhere)`() =
- runTest {
- // Arrange — full release path.
- every { ObservePreferences.getBundleDefaults(any()) } returns
- PersistedBundleDefaults(environment = "production", isJsDev = false)
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = false)
- val prodMetric = createMetric("metric1", metricId = "prod-metric-id")
- val prodSession = createSessionWithMetrics(
- sessionId = "prod-session",
- environment = "production",
- metrics = listOf(prodMetric)
- )
+ fun `when isJsDev is true and isDebugBuild is true, dispatchInDebug true dispatches`() = runTest {
+ every { ObservePreferences.getBundleDefaults(any()) } returns
+ PersistedBundleDefaults(environment = "development", isJsDev = true)
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = true)
+ stubMetricDispatch()
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("prod-metric-id"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(prodSession)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } just runs
+ createManager(isDebugBuild = true).dispatchUnsentMetrics()
- val manager = createManager(isDebugBuild = false)
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- }
-
- @Test
- fun `when getBundleDefaults returns null, gate is determined by isDebugBuild alone`() =
- runTest {
- // Arrange — cold start before JS has run. isJsDev defaults to false.
- every { ObservePreferences.getBundleDefaults(any()) } returns null
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchInDebug = false)
- val manager = createManager(isDebugBuild = true)
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert — isDebugBuild alone gates dispatch.
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- }
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
// endregion
- // region sampleRate tests
+ // region Sample rate tests
@Test
- fun `when sampleRate is null, metrics dispatch normally`() =
- runTest {
- // Arrange
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = null)
- val metric = createMetric("metric1", metricId = "id1")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric)
- )
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- // `deterministicUniformValue` must not matter when sampleRate is null.
- val manager = createManager(deterministicUniformValue = 0.999)
+ fun `when sampleRate is null, metrics dispatch normally`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = null)
+ stubMetricDispatch()
- // Act
- manager.dispatchUnsentMetrics()
+ createManager(deterministicUniformValue = 0.999).dispatchUnsentMetrics()
- // Assert
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- }
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `when deterministicUniformValue is less than sampleRate, metrics dispatch`() =
- runTest {
- // Arrange — sampleRate = 0.5, device value = 0.2 → in-sample
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 0.5)
- val metric = createMetric("metric1", metricId = "id1")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric)
- )
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- val manager = createManager(deterministicUniformValue = 0.2)
+ fun `when deterministicUniformValue is less than sampleRate, metrics dispatch`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 0.5)
+ stubMetricDispatch()
- // Act
- manager.dispatchUnsentMetrics()
+ createManager(deterministicUniformValue = 0.2).dispatchUnsentMetrics()
- // Assert
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- }
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `when deterministicUniformValue is greater than sampleRate, metrics are dropped without dispatching`() =
- runTest {
- // Arrange — sampleRate = 0.5, device value = 0.8 → out-of-sample
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 0.5)
+ fun `when deterministicUniformValue is equal to sampleRate, metric cursor is fast forwarded`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 0.5)
+ coEvery { sessionManager.getMaxMetricId() } returns 10
- val manager = createManager(deterministicUniformValue = 0.8)
+ createManager(deterministicUniformValue = 0.5).dispatchUnsentMetrics()
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert — no dispatch, pending is cleared
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 0) { mockSessionManager.getSessionsWithMetrics(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- }
+ assertEquals(10, metricCursor)
+ coVerify(exactly = 0) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `when deterministicUniformValue is equal to sampleRate, metrics are dropped without dispatching`() =
- runTest {
- // Arrange — sampleRate = 0.5, device value = 0.5 → out-of-sample (comparison is strict <).
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 0.5)
-
- val manager = createManager(deterministicUniformValue = 0.5)
+ fun `when deterministicUniformValue is greater than sampleRate, metric cursor is fast forwarded`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 0.5)
+ coEvery { sessionManager.getMaxMetricId() } returns 10
- // Act
- manager.dispatchUnsentMetrics()
+ createManager(deterministicUniformValue = 0.8).dispatchUnsentMetrics()
- // Assert — no dispatch, pending is cleared
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 0) { mockSessionManager.getSessionsWithMetrics(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- }
-
- @Test
- fun `when sampleRate is 0_0, metrics are always dropped`() =
- runTest {
- // Arrange — any deterministic value is >= 0, so sampleRate=0 → out.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 0.0)
- val manager = createManager(deterministicUniformValue = 0.0)
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- }
+ assertEquals(10, metricCursor)
+ coVerify(exactly = 0) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `when sampleRate is 1_0, metrics always dispatch`() =
- runTest {
- // Arrange — deterministic value of 0.999... is always < 1.0.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 1.0)
- val metric = createMetric("metric1", metricId = "id1")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric)
- )
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- val manager = createManager(deterministicUniformValue = 0.9999999)
+ fun `when sampleRate is 0_0, metric cursor is always fast forwarded`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 0.0)
+ coEvery { sessionManager.getMaxMetricId() } returns 10
- // Act
- manager.dispatchUnsentMetrics()
+ createManager(deterministicUniformValue = 0.0).dispatchUnsentMetrics()
- // Assert
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- }
+ assertEquals(10, metricCursor)
+ coVerify(exactly = 0) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `sampleRate above 1_0 is clamped and metrics dispatch`() =
- runTest {
- // Arrange — 2.0 → clamped to 1.0 → in-sample.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 2.0)
- val metric = createMetric("metric1", metricId = "id1")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric)
- )
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- val manager = createManager(deterministicUniformValue = 0.95)
+ fun `when sampleRate is 1_0, metrics always dispatch`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 1.0)
+ stubMetricDispatch()
- // Act
- manager.dispatchUnsentMetrics()
+ createManager(deterministicUniformValue = 0.999).dispatchUnsentMetrics()
- // Assert
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- }
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `sampleRate below 0_0 is clamped and metrics are dropped`() =
- runTest {
- // Arrange — -0.5 → clamped to 0.0 → out-of-sample.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = -0.5)
- val manager = createManager(deterministicUniformValue = 0.0)
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- }
+ fun `sampleRate outside 0_0 to 1_0 is clamped`() = runTest {
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = 2.0)
+ stubMetricDispatch()
+ createManager(deterministicUniformValue = 0.95).dispatchUnsentMetrics()
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
- @Test
- fun `when dispatchingEnabled is false, sampleRate of 1_0 still drops metrics`() =
- runTest {
- // Arrange — dispatchingEnabled=false wins over sampleRate=1.0.
- every { ObservePreferences.getConfig(any()) } returns PersistedConfig(dispatchingEnabled = false, sampleRate = 1.0)
- val manager = createManager(deterministicUniformValue = 0.0)
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.removeAllPendingMetrics() }
- }
+ metricCursor = -1
+ every { ObservePreferences.getConfig(any()) } returns PersistedConfig(sampleRate = -0.5)
+ coEvery { sessionManager.getMaxMetricId() } returns 10
+ createManager(deterministicUniformValue = 0.0).dispatchUnsentMetrics()
+
+ assertEquals(10, metricCursor)
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
// endregion
- // region Fetching metrics tests
+ // region Fetching and dispatch tests
@Test
- fun `dispatchUnsentMetrics does nothing when no pending metrics exist`() =
- runTest {
- // Arrange
- coEvery { mockPendingMetricsManager.hasPendingMetrics() } returns false
+ fun `dispatchUnsentMetrics transforms grouped metrics to events and advances the cursor`() = runTest {
+ val metrics = listOf(metric(1, "one"), metric(2, "two"))
+ coEvery { sessionManager.getMaxMetricId() } returns 2
+ coEvery { sessionManager.getMetrics(-1, 2) } returns metrics
+ coEvery { sessionManager.getMetrics(2, 2) } returns emptyList()
+ coEvery { sessionManager.getSessions(setOf("session")) } returns listOf(session())
+ coEvery { eventDispatcher.dispatch(any()) } returns DispatchResult.Success
- val manager = createManager()
+ createManager(chunkSize = 2).dispatchUnsentMetrics()
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 0) { mockPendingMetricsManager.removePendingMetrics(any()) }
- coVerify(exactly = 0) { mockPendingMetricsManager.getPendingMetricIds(any()) }
- coVerify(exactly = 0) { mockSessionManager.getSessionsWithMetrics(any()) }
+ assertEquals(2, metricCursor)
+ coVerify {
+ eventDispatcher.dispatch(
+ match { events -> events.single().metrics.map { it.name } == listOf("one", "two") }
+ )
}
+ }
@Test
- fun `dispatchUnsentMetrics fetches pending IDs then sessions from SessionManager`() =
- runTest {
- // Arrange
- val pendingIds = listOf("metric-1", "metric-2")
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(pendingIds, emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(pendingIds) } returns emptyList()
-
- val manager = createManager()
+ fun `dispatchUnsentMetrics advances past all rows with no matching sessions`() = runTest {
+ coEvery { sessionManager.getMaxMetricId() } returns 1
+ coEvery { sessionManager.getMetrics(-1, any()) } returns listOf(metric(1, "orphan"))
+ coEvery { sessionManager.getMetrics(1, any()) } returns emptyList()
+ coEvery { sessionManager.getSessions(any()) } returns emptyList()
- // Act
- manager.dispatchUnsentMetrics()
+ createManager().dispatchUnsentMetrics()
- // Assert
- coVerify(exactly = 2) { mockPendingMetricsManager.getPendingMetricIds(any()) }
- coVerify(exactly = 1) { mockSessionManager.getSessionsWithMetrics(pendingIds) }
- }
+ assertEquals(1, metricCursor)
+ coVerify(exactly = 0) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `dispatchUnsentMetrics cleans up orphaned pending IDs with no matching metrics`() =
- runTest {
- // Arrange - pending IDs exist but only some map to actual metrics
- val metric1 = createMetric("metric1", metricId = "id1")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric1)
- )
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1", "orphaned-id"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- val removedIdBatches = mutableListOf>()
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedIdBatches.add(firstArg>().toList())
- }
-
- val manager = createManager()
-
- // Act
- manager.dispatchUnsentMetrics()
+ fun `dispatchUnsentMetrics dispatches valid rows and advances past rows with no matching sessions`() = runTest {
+ val metrics = listOf(
+ metric(1, "valid", sessionId = "valid-session"),
+ metric(2, "orphan", sessionId = "missing-session")
+ )
+ coEvery { sessionManager.getMaxMetricId() } returns 2
+ coEvery { sessionManager.getMetrics(-1, 2) } returns metrics
+ coEvery { sessionManager.getMetrics(2, 2) } returns emptyList()
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session(id = "valid-session"))
+ coEvery { eventDispatcher.dispatch(any()) } returns DispatchResult.Success
- // Assert - orphaned ID is cleaned up in first batch, dispatched ID in second
- assertEquals(2, removedIdBatches.size)
- assertEquals(listOf("orphaned-id"), removedIdBatches[0])
- assertEquals(listOf("id1"), removedIdBatches[1])
- }
+ createManager(chunkSize = 2).dispatchUnsentMetrics()
- @Test
- fun `dispatchUnsentMetrics cleans up all orphaned pending IDs when no sessions match`() =
- runTest {
- // Arrange - all pending IDs are orphaned
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("orphan-1", "orphan-2"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns emptyList()
-
- val removedIds = mutableListOf()
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedIds.addAll(firstArg>())
- }
-
- val manager = createManager()
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert - orphaned IDs are cleaned up, no dispatch
- coVerify(exactly = 0) { mockEventDispatcher.dispatch(any()) }
- assertEquals(2, removedIds.size)
- assertTrue(removedIds.contains("orphan-1"))
- assertTrue(removedIds.contains("orphan-2"))
- }
-
- @Test
- fun `dispatchUnsentMetrics removes all metric IDs from pending after successful dispatch`() =
- runTest {
- // Arrange
- val metric1 = createMetric("metric1", metricId = "id1")
- val metric2 = createMetric("metric2", metricId = "id2")
- val metric3 = createMetric("metric3", metricId = "id3")
- val session1 = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric1, metric2)
- )
- val session2 = createSessionWithMetrics(
- sessionId = "session-2",
- environment = "production",
- metrics = listOf(metric3)
+ assertEquals(2, metricCursor)
+ coVerify {
+ eventDispatcher.dispatch(
+ match { events -> events.single().metrics.map { it.name } == listOf("valid") }
)
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1", "id2", "id3"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session1, session2)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- val removedIds = mutableListOf()
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedIds.addAll(firstArg>())
- }
-
- val manager = createManager()
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert - ALL metric IDs from ALL sessions are removed from pending
- assertEquals("All 3 metric IDs should be removed from pending", 3, removedIds.size)
- assertTrue("Metric id1 should be removed from pending", removedIds.contains("id1"))
- assertTrue("Metric id2 should be removed from pending", removedIds.contains("id2"))
- assertTrue("Metric id3 should be removed from pending", removedIds.contains("id3"))
}
+ }
@Test
- fun `dispatchUnsentMetrics removes metric IDs from pending on NonRetryable result`() =
- runTest {
- // OTLP non-retryable responses (e.g. 400, 403, 404) drop the batch: the pending IDs
- // are removed so the same rows don't keep getting refused on every dispatch round.
- val metric1 = createMetric("metric1", metricId = "id1")
- val metric2 = createMetric("metric2", metricId = "id2")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric1, metric2)
- )
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1", "id2"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.NonRetryableFailure("HTTP 400")
-
- val removedIds = mutableListOf()
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedIds.addAll(firstArg>())
- }
-
- val manager = createManager()
+ fun `dispatchUnsentMetrics halves the chunk after 413 then resets to the default size`() = runTest {
+ val metrics = (1L..4L).map { metric(it, "metric-$it") }
+ coEvery { sessionManager.getMaxMetricId() } returns 4
+ coEvery { sessionManager.getMetrics(-1, 4) } returns metrics
+ coEvery { sessionManager.getMetrics(-1, 2) } returns metrics.take(2)
+ coEvery { sessionManager.getMetrics(2, 4) } returns metrics.drop(2)
+ coEvery { sessionManager.getMetrics(4, 4) } returns emptyList()
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session())
+ coEvery { eventDispatcher.dispatch(any()) } returnsMany listOf(
+ DispatchResult.PayloadTooLarge,
+ DispatchResult.Success,
+ DispatchResult.Success
+ )
- manager.dispatchUnsentMetrics()
+ createManager(chunkSize = 4).dispatchUnsentMetrics()
- assertEquals(2, removedIds.size)
- assertTrue(removedIds.contains("id1"))
- assertTrue(removedIds.contains("id2"))
- }
+ assertEquals(4, metricCursor)
+ coVerify(exactly = 1) { sessionManager.getMetrics(-1, 2) }
+ coVerify(exactly = 1) { sessionManager.getMetrics(2, 4) }
+ }
@Test
- fun `dispatchUnsentMetrics does not remove metric IDs from pending on Retryable result`() =
- runTest {
- // A retryable response (e.g. 503, transport error) should leave the pending IDs alone
- // so the next dispatch round picks the same rows up again.
- val metric1 = createMetric("metric1", metricId = "id1")
- val metric2 = createMetric("metric2", metricId = "id2")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric1, metric2)
- )
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1", "id2"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.RetryableFailure()
-
- val manager = createManager()
+ fun `dispatchUnsentMetrics halves the fetched count after missing sessions`() = runTest {
+ val metrics = listOf(
+ metric(1, "one", sessionId = "valid-session"),
+ metric(2, "two", sessionId = "valid-session"),
+ metric(3, "orphan-three", sessionId = "missing-session"),
+ metric(4, "orphan-four", sessionId = "missing-session")
+ )
+ coEvery { sessionManager.getMaxMetricId() } returns 4
+ coEvery { sessionManager.getMetrics(-1, 4) } returns metrics
+ coEvery { sessionManager.getMetrics(-1, 2) } returns metrics.take(2)
+ coEvery { sessionManager.getMetrics(2, 4) } returns metrics.drop(2)
+ coEvery { sessionManager.getMetrics(4, 4) } returns emptyList()
+ coEvery { sessionManager.getSessions(any()) } answers {
+ if ("valid-session" in firstArg>()) listOf(session(id = "valid-session")) else emptyList()
+ }
+ coEvery { eventDispatcher.dispatch(any()) } returnsMany listOf(
+ DispatchResult.PayloadTooLarge,
+ DispatchResult.Success
+ )
- // Act
- manager.dispatchUnsentMetrics()
+ createManager(chunkSize = 4).dispatchUnsentMetrics()
- // Assert
- coVerify(exactly = 0) { mockPendingMetricsManager.removePendingMetrics(any()) }
- }
+ assertEquals(4, metricCursor)
+ coVerify(exactly = 1) { sessionManager.getMetrics(-1, 2) }
+ coVerify(exactly = 0) { sessionManager.getMetrics(-1, 1) }
+ }
@Test
- fun `dispatchUnsentMetrics dispatches a backlog in successive chunks`() =
- runTest {
- val pendingIds = mutableListOf("metric-1", "metric-2", "metric-3")
- val requestedChunks = mutableListOf>()
- val removedIds = mutableListOf()
- coEvery { mockPendingMetricsManager.getPendingMetricIds(2) } answers { pendingIds.take(2) }
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } answers {
- val ids = firstArg>()
- requestedChunks.add(ids)
- ids.map { id ->
- createSessionWithMetrics("session-$id", "production", listOf(createMetric(id, metricId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- val ids = firstArg>()
- removedIds.addAll(ids)
- pendingIds.removeAll(ids.toSet())
- }
-
- createManager(dispatchChunkSize = 2).dispatchUnsentMetrics()
-
- assertEquals(
- listOf(listOf("metric-1", "metric-2"), listOf("metric-3")),
- requestedChunks
- )
- assertEquals(listOf("metric-1", "metric-2", "metric-3"), removedIds)
- coVerify(exactly = 2) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 3) { mockPendingMetricsManager.getPendingMetricIds(2) }
- }
+ fun `dispatchUnsentMetrics drops a non-retryable chunk and stops`() = runTest {
+ val metrics = listOf(metric(1, "one"), metric(2, "two"))
+ coEvery { sessionManager.getMaxMetricId() } returns 3
+ coEvery { sessionManager.getMetrics(-1, 2) } returns metrics
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session())
+ coEvery { eventDispatcher.dispatch(any()) } returns DispatchResult.NonRetryableFailure("HTTP 400")
- @Test
- fun `dispatchUnsentMetrics stops reading chunks after cancellation`() =
- runTest {
- val pendingIds = mutableListOf("metric-1", "metric-2", "metric-3")
- coEvery { mockPendingMetricsManager.getPendingMetricIds(2) } answers { pendingIds.take(2) }
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } answers {
- firstArg>().map { id ->
- createSessionWithMetrics("session-$id", "production", listOf(createMetric(id, metricId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } coAnswers {
- pendingIds.removeAll(firstArg>().toSet())
- currentCoroutineContext().cancel()
- }
-
- launch {
- createManager(dispatchChunkSize = 2).dispatchUnsentMetrics()
- }.join()
-
- assertEquals(listOf("metric-3"), pendingIds)
- coVerify(exactly = 1) { mockPendingMetricsManager.getPendingMetricIds(2) }
- }
+ createManager(chunkSize = 2).dispatchUnsentMetrics()
- @Test
- fun `dispatchUnsentMetrics halves the chunk after 413 then resets to the default size`() =
- runTest {
- val requestedLimits = mutableListOf()
- val defaultChunks = ArrayDeque(
- listOf(
- listOf("metric-1", "metric-2", "metric-3", "metric-4"),
- listOf("metric-3", "metric-4"),
- emptyList()
- )
- )
- coEvery { mockPendingMetricsManager.getPendingMetricIds(4) } answers {
- requestedLimits.add(4)
- defaultChunks.removeFirst()
- }
- coEvery { mockPendingMetricsManager.getPendingMetricIds(2) } answers {
- requestedLimits.add(2)
- listOf("metric-1", "metric-2")
- }
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } answers {
- firstArg>().map { id ->
- createSessionWithMetrics("session-$id", "production", listOf(createMetric(id, metricId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatch(any()) } returnsMany listOf(
- DispatchResult.PayloadTooLarge,
- DispatchResult.Success,
- DispatchResult.Success
- )
- val removedChunks = mutableListOf>()
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedChunks.add(firstArg>())
- }
-
- createManager(dispatchChunkSize = 4).dispatchUnsentMetrics()
-
- assertEquals(listOf(4, 2, 4, 4), requestedLimits)
- assertEquals(
- listOf(listOf("metric-1", "metric-2"), listOf("metric-3", "metric-4")),
- removedChunks
- )
- }
+ assertEquals(2, metricCursor)
+ coVerify(exactly = 0) { sessionManager.getMetrics(2, 2) }
+ }
@Test
- fun `dispatchUnsentMetrics halves the dispatched count after removing orphans`() =
- runTest {
- val requestedLimits = mutableListOf()
- val defaultChunks = ArrayDeque(
- listOf(
- listOf("metric-1", "metric-2", "orphan-1", "orphan-2"),
- emptyList()
- )
- )
- coEvery { mockPendingMetricsManager.getPendingMetricIds(4) } answers {
- requestedLimits.add(4)
- defaultChunks.removeFirst()
- }
- coEvery { mockPendingMetricsManager.getPendingMetricIds(1) } answers {
- requestedLimits.add(1)
- listOf("metric-1")
- }
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } answers {
- firstArg>().filter { it.startsWith("metric-") }.map { id ->
- createSessionWithMetrics("session-$id", "production", listOf(createMetric(id, metricId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatch(any()) } returnsMany listOf(
- DispatchResult.PayloadTooLarge,
- DispatchResult.Success
- )
-
- createManager(dispatchChunkSize = 4).dispatchUnsentMetrics()
-
- assertEquals(listOf(4, 1, 4), requestedLimits)
+ fun `dispatchUnsentMetrics stops reading chunks after cancellation`() = runTest {
+ val metrics = listOf(metric(1, "one"), metric(2, "two"))
+ coEvery { sessionManager.getMaxMetricId() } returns 3
+ coEvery { sessionManager.getMetrics(-1, 2) } returns metrics
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session())
+ coEvery { eventDispatcher.dispatch(any()) } coAnswers {
+ currentCoroutineContext().cancel()
+ DispatchResult.Success
}
- @Test
- fun `dispatchUnsentMetrics drops a single metric that still gets 413`() =
- runTest {
- coEvery { mockPendingMetricsManager.getPendingMetricIds(4) } returnsMany
- listOf(listOf("metric-1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(
- createSessionWithMetrics(
- "session-1",
- "production",
- listOf(createMetric("metric-1", metricId = "metric-1"))
- )
- )
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.PayloadTooLarge
-
- createManager(dispatchChunkSize = 4).dispatchUnsentMetrics()
+ launch { createManager(chunkSize = 2).dispatchUnsentMetrics() }.join()
- coVerify(exactly = 1) { mockPendingMetricsManager.removePendingMetrics(listOf("metric-1")) }
- coVerify(exactly = 1) { mockPendingMetricsManager.getPendingMetricIds(4) }
- }
+ assertEquals(2, metricCursor)
+ coVerify(exactly = 0) { sessionManager.getMetrics(2, 2) }
+ }
@Test
- fun `dispatchUnsentMetrics halves to one then drops the oversized metric`() =
- runTest {
- val requestedLimits = mutableListOf()
- val defaultChunks = ArrayDeque(
- listOf(listOf("metric-1", "metric-2"), emptyList())
- )
- coEvery { mockPendingMetricsManager.getPendingMetricIds(2) } answers {
- requestedLimits.add(2)
- defaultChunks.removeFirst()
- }
- coEvery { mockPendingMetricsManager.getPendingMetricIds(1) } answers {
- requestedLimits.add(1)
- listOf("metric-1")
- }
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } answers {
- firstArg>().map { id ->
- createSessionWithMetrics("session-$id", "production", listOf(createMetric(id, metricId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.PayloadTooLarge
+ fun `dispatchUnsentMetrics dispatches a backlog in successive chunks`() = runTest {
+ val first = listOf(metric(1, "one"), metric(2, "two"))
+ val second = listOf(metric(3, "three"), metric(4, "four"))
+ coEvery { sessionManager.getMaxMetricId() } returns 4
+ coEvery { sessionManager.getMetrics(-1, 2) } returns first
+ coEvery { sessionManager.getMetrics(2, 2) } returns second
+ coEvery { sessionManager.getMetrics(4, 2) } returns emptyList()
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session())
+ coEvery { eventDispatcher.dispatch(any()) } returns DispatchResult.Success
- createManager(dispatchChunkSize = 2).dispatchUnsentMetrics()
+ createManager(chunkSize = 2).dispatchUnsentMetrics()
- assertEquals(listOf(2, 1), requestedLimits)
- coVerify(exactly = 1) { mockPendingMetricsManager.removePendingMetrics(listOf("metric-1")) }
- }
+ assertEquals(4, metricCursor)
+ coVerify(exactly = 2) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `dispatchUnsentMetrics does not set the retry gate after 413`() =
- runTest {
- coEvery { mockPendingMetricsManager.getPendingMetricIds(2) } returnsMany
- listOf(listOf("metric-1"), listOf("metric-2"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } answers {
- firstArg>().map { id ->
- createSessionWithMetrics("session-$id", "production", listOf(createMetric(id, metricId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatch(any()) } returnsMany listOf(
- DispatchResult.PayloadTooLarge,
- DispatchResult.Success
- )
- val manager = createManager(
- currentTimeMs = { 1_700_000_000_000L },
- dispatchChunkSize = 2
- )
-
- manager.dispatchUnsentMetrics()
- manager.dispatchUnsentMetrics()
-
- coVerify(exactly = 2) { mockEventDispatcher.dispatch(any()) }
- }
+ fun `dispatchUnsentMetrics drops a single metric that still gets 413`() = runTest {
+ stubMetricDispatch(result = DispatchResult.PayloadTooLarge)
- @Test
- fun `dispatchUnsentMetrics stops after a retryable chunk and sets the gate`() =
- runTest {
- val session = createSessionWithMetrics(
- "session-1",
- "production",
- listOf(
- createMetric("metric-1", metricId = "metric-1"),
- createMetric("metric-2", metricId = "metric-2")
- )
- )
- coEvery { mockPendingMetricsManager.getPendingMetricIds(2) } returns listOf("metric-1", "metric-2")
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns
- DispatchResult.RetryableFailure(retryAfterMs = 60_000L)
-
- val manager = createManager(
- currentTimeMs = { 1_700_000_000_000L },
- dispatchChunkSize = 2
- )
- manager.dispatchUnsentMetrics()
- manager.dispatchUnsentMetrics()
+ createManager().dispatchUnsentMetrics()
- coVerify(exactly = 1) { mockPendingMetricsManager.getPendingMetricIds(2) }
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 0) { mockPendingMetricsManager.removePendingMetrics(any()) }
- }
+ assertEquals(1, metricCursor)
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ coVerify(exactly = 0) { sessionManager.getMetrics(1, any()) }
+ }
@Test
- fun `dispatchUnsentMetrics drops a non-retryable chunk and stops`() =
- runTest {
- val removedChunks = mutableListOf>()
- coEvery { mockPendingMetricsManager.getPendingMetricIds(2) } returnsMany
- listOf(listOf("metric-1", "metric-2"), listOf("metric-3"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } answers {
- firstArg>().map { id ->
- createSessionWithMetrics("session-$id", "production", listOf(createMetric(id, metricId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatch(any()) } returnsMany listOf(
- DispatchResult.NonRetryableFailure("HTTP 400"),
- DispatchResult.Success
- )
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedChunks.add(firstArg>())
- }
+ fun `dispatchUnsentLogs transforms grouped logs to events and advances independently`() = runTest {
+ val logs = listOf(log(4, "first"), log(5, "second"))
+ coEvery { sessionManager.getMaxLogId() } returns 5
+ coEvery { sessionManager.getLogs(-1, 2) } returns logs
+ coEvery { sessionManager.getLogs(5, 2) } returns emptyList()
+ coEvery { sessionManager.getSessions(setOf("session")) } returns listOf(session())
+ coEvery { eventDispatcher.dispatchLogs(any()) } returns DispatchResult.Success
- createManager(dispatchChunkSize = 2).dispatchUnsentMetrics()
-
- assertEquals(listOf(listOf("metric-1", "metric-2")), removedChunks)
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- coVerify(exactly = 1) { mockPendingMetricsManager.getPendingMetricIds(2) }
- }
+ createManager(chunkSize = 2).dispatchUnsentLogs()
- @Test
- fun `dispatchUnsentMetrics removes an orphaned chunk and continues`() =
- runTest {
- val pendingIds = mutableListOf("orphan-1", "metric-1", "metric-2")
- val removedChunks = mutableListOf>()
- coEvery { mockPendingMetricsManager.getPendingMetricIds(2) } answers { pendingIds.take(2) }
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } answers {
- firstArg>()
- .filter { it.startsWith("metric-") }
- .map { id ->
- createSessionWithMetrics("session-$id", "production", listOf(createMetric(id, metricId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- val ids = firstArg>()
- removedChunks.add(ids)
- pendingIds.removeAll(ids.toSet())
- }
-
- createManager(dispatchChunkSize = 2).dispatchUnsentMetrics()
-
- assertEquals(
- listOf(listOf("orphan-1"), listOf("metric-1"), listOf("metric-2")),
- removedChunks
+ assertEquals(5, logCursor)
+ assertEquals(-1, metricCursor)
+ coVerify {
+ eventDispatcher.dispatchLogs(
+ match { events -> events.single().logs.map { it.name } == listOf("first", "second") }
)
- coVerify(exactly = 2) { mockEventDispatcher.dispatch(any()) }
}
+ }
@Test
- fun `dispatchUnsentLogs dispatches a backlog in successive chunks`() =
- runTest {
- val pendingIds = mutableListOf("log-1", "log-2", "log-3")
- val requestedChunks = mutableListOf>()
- val removedIds = mutableListOf()
- coEvery { mockPendingLogsManager.getPendingLogIds(2) } answers { pendingIds.take(2) }
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } answers {
- val ids = firstArg>()
- requestedChunks.add(ids)
- ids.map { id ->
- createSessionWithLogs("session-$id", "production", listOf(createLog(id, logId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returns DispatchResult.Success
- coEvery { mockPendingLogsManager.removePendingLogs(any()) } answers {
- val ids = firstArg>()
- removedIds.addAll(ids)
- pendingIds.removeAll(ids.toSet())
- }
-
- createManager(dispatchChunkSize = 2).dispatchUnsentLogs()
-
- assertEquals(listOf(listOf("log-1", "log-2"), listOf("log-3")), requestedChunks)
- assertEquals(listOf("log-1", "log-2", "log-3"), removedIds)
- coVerify(exactly = 2) { mockEventDispatcher.dispatchLogs(any()) }
- coVerify(exactly = 3) { mockPendingLogsManager.getPendingLogIds(2) }
- }
+ fun `dispatchUnsentLogs dispatches valid rows and advances past rows with no matching sessions`() = runTest {
+ val logs = listOf(
+ log(1, "valid", sessionId = "valid-session"),
+ log(2, "orphan", sessionId = "missing-session")
+ )
+ coEvery { sessionManager.getMaxLogId() } returns 2
+ coEvery { sessionManager.getLogs(-1, 2) } returns logs
+ coEvery { sessionManager.getLogs(2, 2) } returns emptyList()
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session(id = "valid-session"))
+ coEvery { eventDispatcher.dispatchLogs(any()) } returns DispatchResult.Success
- @Test
- fun `dispatchUnsentLogs stops reading chunks after cancellation`() =
- runTest {
- val pendingIds = mutableListOf("log-1", "log-2", "log-3")
- coEvery { mockPendingLogsManager.getPendingLogIds(2) } answers { pendingIds.take(2) }
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } answers {
- firstArg>().map { id ->
- createSessionWithLogs("session-$id", "production", listOf(createLog(id, logId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returns DispatchResult.Success
- coEvery { mockPendingLogsManager.removePendingLogs(any()) } coAnswers {
- pendingIds.removeAll(firstArg>().toSet())
- currentCoroutineContext().cancel()
- }
-
- launch {
- createManager(dispatchChunkSize = 2).dispatchUnsentLogs()
- }.join()
-
- assertEquals(listOf("log-3"), pendingIds)
- coVerify(exactly = 1) { mockPendingLogsManager.getPendingLogIds(2) }
- }
+ createManager(chunkSize = 2).dispatchUnsentLogs()
- @Test
- fun `dispatchUnsentLogs halves the chunk after 413 then resets to the default size`() =
- runTest {
- val requestedLimits = mutableListOf()
- val defaultChunks = ArrayDeque(
- listOf(
- listOf("log-1", "log-2", "log-3", "log-4"),
- listOf("log-3", "log-4"),
- emptyList()
- )
+ assertEquals(2, logCursor)
+ coVerify {
+ eventDispatcher.dispatchLogs(
+ match { events -> events.single().logs.map { it.name } == listOf("valid") }
)
- coEvery { mockPendingLogsManager.getPendingLogIds(4) } answers {
- requestedLimits.add(4)
- defaultChunks.removeFirst()
- }
- coEvery { mockPendingLogsManager.getPendingLogIds(2) } answers {
- requestedLimits.add(2)
- listOf("log-1", "log-2")
- }
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } answers {
- firstArg>().map { id ->
- createSessionWithLogs("session-$id", "production", listOf(createLog(id, logId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returnsMany listOf(
- DispatchResult.PayloadTooLarge,
- DispatchResult.Success,
- DispatchResult.Success
- )
- val removedChunks = mutableListOf>()
- coEvery { mockPendingLogsManager.removePendingLogs(any()) } answers {
- removedChunks.add(firstArg>())
- }
-
- createManager(dispatchChunkSize = 4).dispatchUnsentLogs()
-
- assertEquals(listOf(4, 2, 4, 4), requestedLimits)
- assertEquals(listOf(listOf("log-1", "log-2"), listOf("log-3", "log-4")), removedChunks)
}
+ }
@Test
- fun `dispatchUnsentLogs drops a single log that still gets 413`() =
- runTest {
- coEvery { mockPendingLogsManager.getPendingLogIds(4) } returnsMany
- listOf(listOf("log-1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } returns listOf(
- createSessionWithLogs(
- "session-1",
- "production",
- listOf(createLog("log-1", logId = "log-1"))
- )
- )
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returns DispatchResult.PayloadTooLarge
+ fun `dispatchUnsentLogs dispatches a backlog in successive chunks`() = runTest {
+ val first = listOf(log(1, "one"), log(2, "two"))
+ val second = listOf(log(3, "three"), log(4, "four"))
+ coEvery { sessionManager.getMaxLogId() } returns 4
+ coEvery { sessionManager.getLogs(-1, 2) } returns first
+ coEvery { sessionManager.getLogs(2, 2) } returns second
+ coEvery { sessionManager.getLogs(4, 2) } returns emptyList()
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session())
+ coEvery { eventDispatcher.dispatchLogs(any()) } returns DispatchResult.Success
- createManager(dispatchChunkSize = 4).dispatchUnsentLogs()
+ createManager(chunkSize = 2).dispatchUnsentLogs()
- coVerify(exactly = 1) { mockPendingLogsManager.removePendingLogs(listOf("log-1")) }
- coVerify(exactly = 1) { mockPendingLogsManager.getPendingLogIds(4) }
- }
+ assertEquals(4, logCursor)
+ coVerify(exactly = 2) { eventDispatcher.dispatchLogs(any()) }
+ }
@Test
- fun `dispatchUnsentLogs halves the dispatched count after removing orphans`() =
- runTest {
- val requestedLimits = mutableListOf()
- val defaultChunks = ArrayDeque(
- listOf(
- listOf("log-1", "log-2", "orphan-1", "orphan-2"),
- emptyList()
- )
- )
- coEvery { mockPendingLogsManager.getPendingLogIds(4) } answers {
- requestedLimits.add(4)
- defaultChunks.removeFirst()
- }
- coEvery { mockPendingLogsManager.getPendingLogIds(1) } answers {
- requestedLimits.add(1)
- listOf("log-1")
- }
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } answers {
- firstArg>().filter { it.startsWith("log-") }.map { id ->
- createSessionWithLogs("session-$id", "production", listOf(createLog(id, logId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returnsMany listOf(
- DispatchResult.PayloadTooLarge,
- DispatchResult.Success
- )
-
- createManager(dispatchChunkSize = 4).dispatchUnsentLogs()
-
- assertEquals(listOf(4, 1, 4), requestedLimits)
+ fun `dispatchUnsentLogs stops reading chunks after cancellation`() = runTest {
+ val logs = listOf(log(1, "one"), log(2, "two"))
+ coEvery { sessionManager.getMaxLogId() } returns 3
+ coEvery { sessionManager.getLogs(-1, 2) } returns logs
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session())
+ coEvery { eventDispatcher.dispatchLogs(any()) } coAnswers {
+ currentCoroutineContext().cancel()
+ DispatchResult.Success
}
- @Test
- fun `dispatchUnsentLogs halves to one then drops the oversized log`() =
- runTest {
- val requestedLimits = mutableListOf()
- val defaultChunks = ArrayDeque(
- listOf(listOf("log-1", "log-2"), emptyList())
- )
- coEvery { mockPendingLogsManager.getPendingLogIds(2) } answers {
- requestedLimits.add(2)
- defaultChunks.removeFirst()
- }
- coEvery { mockPendingLogsManager.getPendingLogIds(1) } answers {
- requestedLimits.add(1)
- listOf("log-1")
- }
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } answers {
- firstArg>().map { id ->
- createSessionWithLogs("session-$id", "production", listOf(createLog(id, logId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returns DispatchResult.PayloadTooLarge
-
- createManager(dispatchChunkSize = 2).dispatchUnsentLogs()
+ launch { createManager(chunkSize = 2).dispatchUnsentLogs() }.join()
- assertEquals(listOf(2, 1), requestedLimits)
- coVerify(exactly = 1) { mockPendingLogsManager.removePendingLogs(listOf("log-1")) }
- }
+ assertEquals(2, logCursor)
+ coVerify(exactly = 0) { sessionManager.getLogs(2, 2) }
+ }
@Test
- fun `dispatchUnsentLogs does not set the retry gate after 413`() =
- runTest {
- coEvery { mockPendingLogsManager.getPendingLogIds(2) } returnsMany
- listOf(listOf("log-1"), listOf("log-2"), emptyList())
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } answers {
- firstArg>().map { id ->
- createSessionWithLogs("session-$id", "production", listOf(createLog(id, logId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returnsMany listOf(
- DispatchResult.PayloadTooLarge,
- DispatchResult.Success
- )
- val manager = createManager(
- currentTimeMs = { 1_700_000_000_000L },
- dispatchChunkSize = 2
- )
+ fun `dispatchUnsentLogs halves the fetched count after missing sessions`() = runTest {
+ val logs = listOf(
+ log(1, "one", sessionId = "valid-session"),
+ log(2, "two", sessionId = "valid-session"),
+ log(3, "orphan-three", sessionId = "missing-session"),
+ log(4, "orphan-four", sessionId = "missing-session")
+ )
+ coEvery { sessionManager.getMaxLogId() } returns 4
+ coEvery { sessionManager.getLogs(-1, 4) } returns logs
+ coEvery { sessionManager.getLogs(-1, 2) } returns logs.take(2)
+ coEvery { sessionManager.getLogs(2, 4) } returns logs.drop(2)
+ coEvery { sessionManager.getLogs(4, 4) } returns emptyList()
+ coEvery { sessionManager.getSessions(any()) } answers {
+ if ("valid-session" in firstArg>()) listOf(session(id = "valid-session")) else emptyList()
+ }
+ coEvery { eventDispatcher.dispatchLogs(any()) } returnsMany listOf(
+ DispatchResult.PayloadTooLarge,
+ DispatchResult.Success
+ )
- manager.dispatchUnsentLogs()
- manager.dispatchUnsentLogs()
+ createManager(chunkSize = 4).dispatchUnsentLogs()
- coVerify(exactly = 2) { mockEventDispatcher.dispatchLogs(any()) }
- }
+ assertEquals(4, logCursor)
+ coVerify(exactly = 1) { sessionManager.getLogs(-1, 2) }
+ coVerify(exactly = 0) { sessionManager.getLogs(-1, 1) }
+ }
@Test
- fun `dispatchUnsentLogs stops after a retryable chunk and sets the gate`() =
- runTest {
- val session = createSessionWithLogs(
- "session-1",
- "production",
- listOf(
- createLog("log-1", logId = "log-1"),
- createLog("log-2", logId = "log-2")
- )
- )
- coEvery { mockPendingLogsManager.getPendingLogIds(2) } returns listOf("log-1", "log-2")
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returns
- DispatchResult.RetryableFailure(retryAfterMs = 60_000L)
-
- val manager = createManager(
- currentTimeMs = { 1_700_000_000_000L },
- dispatchChunkSize = 2
- )
- manager.dispatchUnsentLogs()
- manager.dispatchUnsentLogs()
+ fun `dispatchUnsentLogs drops a single log that still gets 413`() = runTest {
+ stubLogDispatch(result = DispatchResult.PayloadTooLarge)
- coVerify(exactly = 1) { mockPendingLogsManager.getPendingLogIds(2) }
- coVerify(exactly = 1) { mockEventDispatcher.dispatchLogs(any()) }
- coVerify(exactly = 0) { mockPendingLogsManager.removePendingLogs(any()) }
- }
+ createManager().dispatchUnsentLogs()
- @Test
- fun `dispatchUnsentLogs drops a non-retryable chunk and stops`() =
- runTest {
- val removedChunks = mutableListOf>()
- coEvery { mockPendingLogsManager.getPendingLogIds(2) } returnsMany
- listOf(listOf("log-1", "log-2"), listOf("log-3"), emptyList())
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } answers {
- firstArg>().map { id ->
- createSessionWithLogs("session-$id", "production", listOf(createLog(id, logId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returnsMany listOf(
- DispatchResult.NonRetryableFailure("HTTP 400"),
- DispatchResult.Success
- )
- coEvery { mockPendingLogsManager.removePendingLogs(any()) } answers {
- removedChunks.add(firstArg>())
- }
+ assertEquals(1, logCursor)
+ coVerify(exactly = 1) { eventDispatcher.dispatchLogs(any()) }
+ coVerify(exactly = 0) { sessionManager.getLogs(1, any()) }
+ }
- createManager(dispatchChunkSize = 2).dispatchUnsentLogs()
+ @Test
+ fun `dispatchUnsentLogs drops a non-retryable chunk and stops`() = runTest {
+ val logs = listOf(log(1, "one"), log(2, "two"))
+ coEvery { sessionManager.getMaxLogId() } returns 3
+ coEvery { sessionManager.getLogs(-1, 2) } returns logs
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session())
+ coEvery { eventDispatcher.dispatchLogs(any()) } returns DispatchResult.NonRetryableFailure("HTTP 400")
- assertEquals(listOf(listOf("log-1", "log-2")), removedChunks)
- coVerify(exactly = 1) { mockEventDispatcher.dispatchLogs(any()) }
- coVerify(exactly = 1) { mockPendingLogsManager.getPendingLogIds(2) }
- }
+ createManager(chunkSize = 2).dispatchUnsentLogs()
- @Test
- fun `dispatchUnsentLogs removes an orphaned chunk and continues`() =
- runTest {
- val pendingIds = mutableListOf("orphan-1", "log-1", "log-2")
- val removedChunks = mutableListOf>()
- coEvery { mockPendingLogsManager.getPendingLogIds(2) } answers { pendingIds.take(2) }
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } answers {
- firstArg>()
- .filter { it.startsWith("log-") }
- .map { id ->
- createSessionWithLogs("session-$id", "production", listOf(createLog(id, logId = id)))
- }
- }
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returns DispatchResult.Success
- coEvery { mockPendingLogsManager.removePendingLogs(any()) } answers {
- val ids = firstArg>()
- removedChunks.add(ids)
- pendingIds.removeAll(ids.toSet())
- }
-
- createManager(dispatchChunkSize = 2).dispatchUnsentLogs()
-
- assertEquals(listOf(listOf("orphan-1"), listOf("log-1"), listOf("log-2")), removedChunks)
- coVerify(exactly = 2) { mockEventDispatcher.dispatchLogs(any()) }
- }
+ assertEquals(2, logCursor)
+ coVerify(exactly = 0) { sessionManager.getLogs(2, 2) }
+ }
// endregion
// region Cleanup tests
@Test
- fun `cleanup prunes pending metrics, pending logs, stale sessions, and stale logs`() =
- runTest {
- // Arrange
- val manager = createManager()
-
- // Act
- manager.cleanup()
-
- // Assert
- coVerify(exactly = 1) { mockPendingMetricsManager.cleanupOldPendingMetrics() }
- coVerify(exactly = 1) { mockPendingLogsManager.cleanupOldPendingLogs() }
- coVerify(exactly = 1) { mockSessionManager.cleanupOldSessions() }
- coVerify(exactly = 1) { mockSessionManager.cleanupOldLogs() }
- }
+ fun `cleanup prunes app metrics storage and deletes the legacy database`() = runTest {
+ createManager().cleanup()
+
+ coVerify(exactly = 1) { sessionManager.cleanupOldSessions() }
+ coVerify(exactly = 1) { sessionManager.cleanupOldLogs() }
+ verify(exactly = 1) { context.deleteDatabase("eas_observe") }
+ }
// endregion
@@ -1339,74 +591,55 @@ class BaseObservabilityManagerTest {
@Test
fun `Metadata fromSessionMetadata transforms all fields correctly`() {
- // Arrange
- val session = Session(
- id = "test-session",
- startTimestamp = "2025-01-01T00:00:00.000Z",
- isActive = true,
- environment = "production",
- appName = "TestApp",
- appIdentifier = "com.test.app",
- appVersion = "1.2.3",
- appBuildNumber = "42",
- appUpdateId = "update-123",
- deviceOs = "Android",
- deviceOsVersion = "14",
- deviceModel = "Pixel 8",
- deviceName = "oriole",
- expoSdkVersion = "52.0.0",
- reactNativeVersion = "0.76.0",
- clientVersion = "1.0.0",
- languageTag = "en-US"
+ val metadata = Metadata.fromSessionMetadata(
+ Session(
+ id = "session",
+ startTimestamp = "2025-01-01T00:00:00Z",
+ environment = "production",
+ appName = "TestApp",
+ appIdentifier = "dev.expo.test",
+ appVersion = "1.2.3",
+ appBuildNumber = "42",
+ appUpdateId = "update",
+ appUpdateRuntimeVersion = "1",
+ appUpdateRequestHeaders = """{"expo-channel-name":"production"}""",
+ appEasBuildId = "build",
+ deviceOs = "Android",
+ deviceOsVersion = "16",
+ deviceModel = "Pixel",
+ deviceName = "pixel",
+ expoSdkVersion = "55",
+ reactNativeVersion = "0.81",
+ clientVersion = "1",
+ languageTag = "en-US"
+ )
)
- // Act
- val metadata = Metadata.fromSessionMetadata(session)
-
- // Assert
assertEquals("TestApp", metadata.appName)
- assertEquals("com.test.app", metadata.appIdentifier)
+ assertEquals("dev.expo.test", metadata.appIdentifier)
assertEquals("1.2.3", metadata.appVersion)
assertEquals("42", metadata.appBuildNumber)
- assertEquals("update-123", metadata.appUpdatesInfo?.updateId)
+ assertEquals("update", metadata.appUpdatesInfo?.updateId)
+ assertEquals("1", metadata.appUpdatesInfo?.runtimeVersion)
+ assertEquals("production", metadata.appUpdatesInfo?.channel)
+ assertEquals("build", metadata.appEasBuildId)
assertEquals("Android", metadata.deviceOs)
- assertEquals("14", metadata.deviceOsVersion)
- assertEquals("Pixel 8", metadata.deviceModel)
- assertEquals("oriole", metadata.deviceName)
- assertEquals("52.0.0", metadata.expoSdkVersion)
- assertEquals("0.76.0", metadata.reactNativeVersion)
- assertEquals("1.0.0", metadata.clientVersion)
+ assertEquals("16", metadata.deviceOsVersion)
+ assertEquals("Pixel", metadata.deviceModel)
+ assertEquals("pixel", metadata.deviceName)
+ assertEquals("55", metadata.expoSdkVersion)
+ assertEquals("0.81", metadata.reactNativeVersion)
+ assertEquals("1", metadata.clientVersion)
assertEquals("en-US", metadata.languageTag)
assertEquals("production", metadata.environment)
}
@Test
fun `Metadata fromSessionMetadata handles null fields`() {
- // Arrange
- val session = Session(
- id = "test-session",
- startTimestamp = "2025-01-01T00:00:00.000Z",
- isActive = true,
- environment = null,
- appName = null,
- appIdentifier = null,
- appVersion = null,
- appBuildNumber = null,
- appUpdateId = null,
- deviceOs = null,
- deviceOsVersion = null,
- deviceModel = null,
- deviceName = null,
- expoSdkVersion = null,
- reactNativeVersion = null,
- clientVersion = null,
- languageTag = null
+ val metadata = Metadata.fromSessionMetadata(
+ Session(id = "session", startTimestamp = "2025-01-01T00:00:00Z")
)
- // Act
- val metadata = Metadata.fromSessionMetadata(session)
-
- // Assert
assertNull(metadata.appName)
assertEquals("", metadata.appIdentifier)
assertNull(metadata.appVersion)
@@ -1425,406 +658,228 @@ class BaseObservabilityManagerTest {
@Test
fun `EASMetric fromMetric transforms all fields correctly`() {
- // Arrange
- val metric = Metric(
- metricId = "metric-123",
- sessionId = "session-456",
- timestamp = "2025-01-01T12:00:00.000Z",
- category = "performance",
- name = "app_start",
- value = 1500.5,
- routeName = "/home",
- params = """{"key":"value"}"""
+ val easMetric = EASMetric.fromMetric(
+ Metric(
+ id = 1,
+ sessionId = "session",
+ timestamp = "2025-01-01T00:00:00Z",
+ category = "navigation",
+ name = "route",
+ value = 1.5,
+ routeName = "/home",
+ updateId = "update",
+ params = """{"key":"value"}"""
+ )
)
- // Act
- val easMetric = EASMetric.fromMetric(metric)
-
- // Assert
- assertEquals("session-456", easMetric.sessionId)
- assertEquals("2025-01-01T12:00:00.000Z", easMetric.timestamp)
- assertEquals("performance", easMetric.category)
- assertEquals("app_start", easMetric.name)
- assertEquals(1500.5, easMetric.value, 0.001)
+ assertEquals("session", easMetric.sessionId)
+ assertEquals("2025-01-01T00:00:00Z", easMetric.timestamp)
+ assertEquals("navigation", easMetric.category)
+ assertEquals("route", easMetric.name)
+ assertEquals(1.5, easMetric.value, 0.0)
assertEquals("/home", easMetric.routeName)
- assertEquals(
- buildJsonObject { put("key", "value") },
- easMetric.customParams
- )
+ assertEquals("update", easMetric.updateId)
+ assertEquals(buildJsonObject { put("key", "value") }, easMetric.customParams)
}
@Test
fun `EASMetric fromMetric handles null optional fields`() {
- // Arrange
- val metric = Metric(
- metricId = "metric-123",
- sessionId = "session-456",
- timestamp = "2025-01-01T12:00:00.000Z",
- category = "performance",
- name = "app_start",
- value = 1500.5,
- routeName = null,
- params = null
- )
+ val easMetric = EASMetric.fromMetric(metric(1, "metric"))
- // Act
- val easMetric = EASMetric.fromMetric(metric)
-
- // Assert
assertNull(easMetric.routeName)
+ assertNull(easMetric.updateId)
assertNull(easMetric.customParams)
}
@Test
- fun `dispatchUnsentMetrics transforms SessionWithMetrics to Event correctly`() =
- runTest {
- // Arrange
- val metric1 = createMetric("loadTime", value = 0.5, category = "appStartup", metricId = "m1")
- val metric2 = createMetric("launchTime", value = 1.2, category = "appStartup", metricId = "m2")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- appName = "MyApp",
- appVersion = "2.0.0",
- metrics = listOf(metric1, metric2)
+ fun `dispatchUnsentMetrics creates separate events for each session`() = runTest {
+ val metrics = listOf(
+ metric(1, "one", sessionId = "session-1"),
+ metric(2, "two", sessionId = "session-2")
+ )
+ stubMetricDispatch(
+ metrics = metrics,
+ sessions = listOf(
+ session(id = "session-1", appVersion = "1.0.0"),
+ session(id = "session-2", appVersion = "2.0.0")
)
+ )
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("m1", "m2"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- val manager = createManager()
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert
- coVerify {
- mockEventDispatcher.dispatch(
- match { events ->
- events.size == 1 &&
- events[0].metadata.appName == "MyApp" &&
- events[0].metadata.appVersion == "2.0.0" &&
- events[0].metadata.environment == "production" &&
- events[0].metrics.size == 2 &&
- events[0].metrics.any { it.name == "loadTime" && it.value == 0.5 } &&
- events[0].metrics.any { it.name == "launchTime" && it.value == 1.2 }
- }
- )
- }
- }
+ createManager().dispatchUnsentMetrics()
- @Test
- fun `dispatchUnsentMetrics creates separate events for each session`() =
- runTest {
- // Arrange
- val metric1 = createMetric("metric1", metricId = "metric-id-1")
- val metric2 = createMetric("metric2", metricId = "metric-id-2")
- val session1 = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- appVersion = "1.0.0",
- metrics = listOf(metric1)
- )
- val session2 = createSessionWithMetrics(
- sessionId = "session-2",
- environment = "production",
- appVersion = "2.0.0",
- metrics = listOf(metric2)
+ coVerify {
+ eventDispatcher.dispatch(
+ match { events ->
+ events.size == 2 && events.map { it.metadata.appVersion }.toSet() == setOf("1.0.0", "2.0.0")
+ }
)
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("metric-id-1", "metric-id-2"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session1, session2)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
-
- val removedIds = mutableListOf()
- coEvery { mockPendingMetricsManager.removePendingMetrics(any()) } answers {
- removedIds.addAll(firstArg>())
- }
-
- val manager = createManager()
-
- // Act
- manager.dispatchUnsentMetrics()
-
- // Assert - separate events created
- coVerify {
- mockEventDispatcher.dispatch(
- match { events ->
- events.size == 2 &&
- events.any { it.metadata.appVersion == "1.0.0" } &&
- events.any { it.metadata.appVersion == "2.0.0" }
- }
- )
- }
-
- // Assert - ALL metric IDs from both sessions are removed from pending
- assertEquals(2, removedIds.size)
- assertTrue("Metric 1 should be removed from pending", removedIds.contains("metric-id-1"))
- assertTrue("Metric 2 should be removed from pending", removedIds.contains("metric-id-2"))
}
+ }
// endregion
// region Retry-gate tests
@Test
- fun `dispatchUnsentMetrics is suppressed when retry gate is active`() =
- runTest {
- // First dispatch returns Retryable with Retry-After=60s; that sets the gate. Second
- // dispatch (same simulated clock) should short-circuit before calling the dispatcher
- // again. Verifies the C2 acceptance criterion: a Retryable response must defer the
- // next round, not just leave the rows pending.
- val metric = createMetric("metric1", metricId = "id1")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric)
- )
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returns
- DispatchResult.RetryableFailure(retryAfterMs = 60_000L)
+ fun `dispatchUnsentMetrics stops after a retryable chunk and sets the gate`() = runTest {
+ coEvery { sessionManager.getMaxMetricId() } returns 1
+ coEvery { sessionManager.getMetrics(-1, any()) } returns listOf(metric(1, "one"))
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session())
+ coEvery { eventDispatcher.dispatch(any()) } returns DispatchResult.RetryableFailure(60_000)
+ val manager = createManager(currentTimeMs = { 1_000 })
- val fixedNow = 1_700_000_000_000L
- val manager = createManager(currentTimeMs = { fixedNow })
+ manager.dispatchUnsentMetrics()
+ manager.dispatchUnsentMetrics()
- manager.dispatchUnsentMetrics()
- manager.dispatchUnsentMetrics()
-
- // The second call must NOT reach the dispatcher — only one call total.
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- }
+ assertEquals(-1, metricCursor)
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `metrics Retryable does not gate logs (per-signal gates are independent)`() =
- runTest {
- // The metrics and logs endpoints fail independently in practice — one schema
- // disagreement on the metrics side shouldn't suppress a healthy logs stream. After a
- // metrics dispatch sets its own gate, a logs dispatch must still proceed (and reach
- // the dispatcher).
- val metric = createMetric("metric1", metricId = "id1")
- val metricSession = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric)
- )
- val logRecord = createLog("log1", logId = "log-1")
- val logSession = createSessionWithLogs(
- sessionId = "session-2",
- environment = "production",
- logs = listOf(logRecord)
- )
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(metricSession)
- coEvery { mockEventDispatcher.dispatch(any()) } returns
- DispatchResult.RetryableFailure(retryAfterMs = 60_000L)
-
- coEvery { mockPendingLogsManager.getPendingLogIds(any()) } returnsMany listOf(listOf("log-1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } returns listOf(logSession)
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returns DispatchResult.Success
+ fun `dispatchUnsentLogs stops after a retryable chunk and sets the gate`() = runTest {
+ stubLogDispatch(result = DispatchResult.RetryableFailure(60_000))
+ val manager = createManager(currentTimeMs = { 1_000 })
- val fixedNow = 1_700_000_000_000L
- val manager = createManager(currentTimeMs = { fixedNow })
+ manager.dispatchUnsentLogs()
+ manager.dispatchUnsentLogs()
- manager.dispatchUnsentMetrics()
- manager.dispatchUnsentLogs()
-
- // Logs MUST reach the dispatcher; the metrics gate doesn't suppress it.
- coVerify(exactly = 1) { mockEventDispatcher.dispatchLogs(any()) }
- }
+ assertEquals(-1, logCursor)
+ coVerify(exactly = 1) { eventDispatcher.dispatchLogs(any()) }
+ }
@Test
- fun `logs Retryable does not gate metrics (per-signal gates are independent)`() =
- runTest {
- // Symmetric test: a logs failure doesn't suppress metrics.
- val metric = createMetric("metric1", metricId = "id1")
- val metricSession = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric)
- )
- val logRecord = createLog("log1", logId = "log-1")
- val logSession = createSessionWithLogs(
- sessionId = "session-2",
- environment = "production",
- logs = listOf(logRecord)
- )
+ fun `metrics Retryable does not gate logs (per-signal gates are independent)`() = runTest {
+ stubMetricDispatch(result = DispatchResult.RetryableFailure(60_000))
+ stubLogDispatch()
+ val manager = createManager(currentTimeMs = { 1_000 })
- coEvery { mockPendingLogsManager.getPendingLogIds(any()) } returnsMany listOf(listOf("log-1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithLogs(any()) } returns listOf(logSession)
- coEvery { mockEventDispatcher.dispatchLogs(any()) } returns
- DispatchResult.RetryableFailure(retryAfterMs = 60_000L)
+ manager.dispatchUnsentMetrics()
+ manager.dispatchUnsentLogs()
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany listOf(listOf("id1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(metricSession)
- coEvery { mockEventDispatcher.dispatch(any()) } returns DispatchResult.Success
+ assertEquals(-1, metricCursor)
+ assertEquals(1, logCursor)
+ coVerify(exactly = 1) { eventDispatcher.dispatchLogs(any()) }
+ }
- val fixedNow = 1_700_000_000_000L
- val manager = createManager(currentTimeMs = { fixedNow })
+ @Test
+ fun `logs Retryable does not gate metrics (per-signal gates are independent)`() = runTest {
+ stubLogDispatch(result = DispatchResult.RetryableFailure(60_000))
+ stubMetricDispatch()
+ val manager = createManager(currentTimeMs = { 1_000 })
- manager.dispatchUnsentLogs()
- manager.dispatchUnsentMetrics()
+ manager.dispatchUnsentLogs()
+ manager.dispatchUnsentMetrics()
- coVerify(exactly = 1) { mockEventDispatcher.dispatch(any()) }
- }
+ assertEquals(-1, logCursor)
+ assertEquals(1, metricCursor)
+ coVerify(exactly = 1) { eventDispatcher.dispatch(any()) }
+ }
@Test
- fun `dispatchUnsentMetrics resumes after the retry gate expires`() =
- runTest {
- // First dispatch sets a gate at now+60s. We then advance the simulated clock past the
- // gate; the second dispatch should proceed.
- val metric = createMetric("metric1", metricId = "id1")
- val session = createSessionWithMetrics(
- sessionId = "session-1",
- environment = "production",
- metrics = listOf(metric)
- )
-
- coEvery { mockPendingMetricsManager.getPendingMetricIds(any()) } returnsMany
- listOf(listOf("id1"), listOf("id1"), emptyList())
- coEvery { mockSessionManager.getSessionsWithMetrics(any()) } returns listOf(session)
- coEvery { mockEventDispatcher.dispatch(any()) } returnsMany listOf(
- DispatchResult.RetryableFailure(retryAfterMs = 60_000L),
- DispatchResult.Success
- )
-
- var nowMs = 1_700_000_000_000L
- val manager = createManager(currentTimeMs = { nowMs })
+ fun `dispatchUnsentMetrics resumes after the retry gate expires`() = runTest {
+ var now = 1_000L
+ coEvery { sessionManager.getMaxMetricId() } returns 1
+ coEvery { sessionManager.getMetrics(-1, any()) } returns listOf(metric(1, "metric"))
+ coEvery { sessionManager.getMetrics(1, any()) } returns emptyList()
+ coEvery { sessionManager.getSessions(any()) } returns listOf(session())
+ coEvery { eventDispatcher.dispatch(any()) } returnsMany listOf(
+ DispatchResult.RetryableFailure(60_000),
+ DispatchResult.Success
+ )
+ val manager = createManager(currentTimeMs = { now })
- manager.dispatchUnsentMetrics()
- nowMs += 120_000L // jump past the 60-second gate
- manager.dispatchUnsentMetrics()
+ manager.dispatchUnsentMetrics()
+ now += 60_001
+ manager.dispatchUnsentMetrics()
- coVerify(exactly = 2) { mockEventDispatcher.dispatch(any()) }
- }
+ assertEquals(1, metricCursor)
+ coVerify(exactly = 2) { eventDispatcher.dispatch(any()) }
+ }
// endregion
// region Helper methods
+ private fun stubMetricDispatch(
+ metrics: List = listOf(metric(1, "metric")),
+ sessions: List = listOf(session()),
+ result: DispatchResult = DispatchResult.Success
+ ) {
+ val highestId = metrics.maxOf { it.id }
+ coEvery { sessionManager.getMaxMetricId() } returns highestId
+ coEvery { sessionManager.getMetrics(-1, any()) } returns metrics
+ coEvery { sessionManager.getMetrics(highestId, any()) } returns emptyList()
+ coEvery { sessionManager.getSessions(metrics.mapTo(linkedSetOf()) { it.sessionId }) } returns sessions
+ coEvery { eventDispatcher.dispatch(any()) } returns result
+ }
+
+ private fun stubLogDispatch(
+ logs: List = listOf(log(1, "log")),
+ sessions: List = listOf(session()),
+ result: DispatchResult = DispatchResult.Success
+ ) {
+ val highestId = logs.maxOf { it.id }
+ coEvery { sessionManager.getMaxLogId() } returns highestId
+ coEvery { sessionManager.getLogs(-1, any()) } returns logs
+ coEvery { sessionManager.getLogs(highestId, any()) } returns emptyList()
+ coEvery { sessionManager.getSessions(logs.mapTo(linkedSetOf()) { it.sessionId }) } returns sessions
+ coEvery { eventDispatcher.dispatchLogs(any()) } returns result
+ }
+
private fun createManager(
+ chunkSize: Int = DISPATCH_CHUNK_SIZE,
+ currentTimeMs: () -> Long = { 0 },
isDebugBuild: Boolean = false,
- deterministicUniformValue: Double = 0.0,
- currentTimeMs: () -> Long = { TimeUtils.getWallClockMillis() },
- dispatchChunkSize: Int = DISPATCH_CHUNK_SIZE
+ deterministicUniformValue: Double = 0.0
): BaseObservabilityManager {
val manager = BaseObservabilityManager(
- context = mockContext,
- sessionManager = mockSessionManager,
- pendingMetricsManager = mockPendingMetricsManager,
- pendingLogsManager = mockPendingLogsManager,
- projectId = testProjectId,
- baseUrl = testBaseUrl,
+ context = context,
+ sessionManager = sessionManager,
+ projectId = "project",
+ baseUrl = "https://example.com/",
isDebugBuild = isDebugBuild,
deterministicUniformValueProvider = { deterministicUniformValue },
currentTimeMs = currentTimeMs,
- dispatchChunkSize = dispatchChunkSize
+ dispatchChunkSize = chunkSize
)
- // Replace the internal EventDispatcher with our mock
val field = BaseObservabilityManager::class.java.getDeclaredField("eventDispatcher")
field.isAccessible = true
- field.set(manager, mockEventDispatcher)
+ field.set(manager, eventDispatcher)
return manager
}
- private fun createSessionWithMetrics(
- sessionId: String,
- environment: String?,
- metrics: List,
- appName: String = "TestApp",
- appVersion: String = "1.0.0"
- ): SessionWithMetrics {
- val session = Session(
- id = sessionId,
- startTimestamp = "2025-01-01T00:00:00.000Z",
- isActive = true,
- environment = environment,
- appName = appName,
- appIdentifier = "com.test.app",
- appVersion = appVersion,
- appBuildNumber = "1",
- appUpdateId = null,
- deviceOs = "Android",
- deviceOsVersion = "14",
- deviceModel = "Test Device",
- deviceName = "test",
- expoSdkVersion = "52.0.0",
- reactNativeVersion = "0.76.0",
- clientVersion = null,
- languageTag = "en-US"
- )
- return SessionWithMetrics(
- session = session,
- metrics = metrics.map { it.copy(sessionId = sessionId) }
- )
- }
-
- private fun createMetric(
- name: String,
- metricId: String = "metric-${System.nanoTime()}",
- value: Double = 123.45,
- category: String = "test"
- ): Metric =
- Metric(
- metricId = metricId,
- sessionId = "",
- timestamp = "2025-01-01T00:00:00.000Z",
- category = category,
- name = name,
- value = value,
- routeName = null,
- params = null
- )
-
- private fun createSessionWithLogs(
- sessionId: String,
- environment: String?,
- logs: List,
- appName: String = "TestApp",
- appVersion: String = "1.0.0"
- ): SessionWithLogs {
- val session = Session(
- id = sessionId,
- startTimestamp = "2025-01-01T00:00:00.000Z",
- isActive = true,
- environment = environment,
- appName = appName,
- appIdentifier = "com.test.app",
- appVersion = appVersion,
- appBuildNumber = "1",
- appUpdateId = null,
- deviceOs = "Android",
- deviceOsVersion = "14",
- deviceModel = "Test Device",
- deviceName = "test",
- expoSdkVersion = "52.0.0",
- reactNativeVersion = "0.76.0",
- clientVersion = null,
- languageTag = "en-US"
- )
- return SessionWithLogs(
- session = session,
- logs = logs.map { it.copy(sessionId = sessionId) }
- )
- }
-
- private fun createLog(
- name: String,
- logId: String = "log-${System.nanoTime()}",
- body: String = "test log body",
- severity: String = "info"
- ): LogRecord =
- LogRecord(
- logId = logId,
- sessionId = "",
- timestamp = "2025-01-01T00:00:00.000Z",
- name = name,
- body = body,
- severity = severity
- )
+ private fun session(
+ id: String = "session",
+ appName: String? = null,
+ appVersion: String? = null,
+ environment: String? = null
+ ) = Session(
+ id = id,
+ startTimestamp = "2025-01-01T00:00:00Z",
+ environment = environment,
+ appName = appName,
+ appIdentifier = "dev.expo.test",
+ appVersion = appVersion,
+ expoSdkVersion = "55",
+ reactNativeVersion = "0.81"
+ )
+
+ private fun metric(id: Long, name: String, sessionId: String = "session") = Metric(
+ sessionId = sessionId,
+ timestamp = "2025-01-01T00:00:00Z",
+ category = "test",
+ name = name,
+ value = 1.0,
+ id = id
+ )
+
+ private fun log(id: Long, name: String, sessionId: String = "session") = LogRecord(
+ sessionId = sessionId,
+ timestamp = "2025-01-01T00:00:00Z",
+ name = name,
+ severity = "info",
+ id = id
+ )
// endregion
}
diff --git a/packages/expo-observe/android/src/test/java/expo/modules/observe/CursorRepairTest.kt b/packages/expo-observe/android/src/test/java/expo/modules/observe/CursorRepairTest.kt
new file mode 100644
index 00000000000000..3091e1c1906b14
--- /dev/null
+++ b/packages/expo-observe/android/src/test/java/expo/modules/observe/CursorRepairTest.kt
@@ -0,0 +1,94 @@
+package expo.modules.observe
+
+import kotlinx.coroutines.test.runTest
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertFalse
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.robolectric.RobolectricTestRunner
+import org.robolectric.annotation.Config
+
+@RunWith(RobolectricTestRunner::class)
+@Config(manifest = Config.NONE, sdk = [28])
+class CursorRepairTest {
+ @Test
+ fun `cursor below max id is left alone`() = runTest {
+ var stored = 5L
+
+ repairCursorIfStale("metric", { stored }, { stored = it }, { 10L })
+
+ assertEquals(5L, stored)
+ }
+
+ @Test
+ fun `cursor equal to max id is left alone`() = runTest {
+ var stored = 10L
+
+ repairCursorIfStale("metric", { stored }, { stored = it }, { 10L })
+
+ assertEquals(10L, stored)
+ }
+
+ @Test
+ fun `cursor above max id is reset to -1`() = runTest {
+ var stored = 42L
+
+ repairCursorIfStale("metric", { stored }, { stored = it }, { 10L })
+
+ assertEquals(-1L, stored)
+ }
+
+ @Test
+ fun `non-default cursor with empty table is reset to -1`() = runTest {
+ var stored = 42L
+
+ repairCursorIfStale("metric", { stored }, { stored = it }, { null })
+
+ assertEquals(-1L, stored)
+ }
+
+ @Test
+ fun `default cursor with empty table is left alone`() = runTest {
+ var readMaxIdCalled = false
+ var writeCalled = false
+ var stored = -1L
+
+ repairCursorIfStale(
+ "metric",
+ { stored },
+ {
+ stored = it
+ writeCalled = true
+ },
+ {
+ readMaxIdCalled = true
+ null
+ }
+ )
+
+ assertEquals(-1L, stored)
+ assertFalse(readMaxIdCalled)
+ assertFalse(writeCalled)
+ }
+
+ @Test
+ fun `readMaxId throwing leaves cursor alone`() = runTest {
+ var writeCalled = false
+ var stored = 42L
+
+ repairCursorIfStale(
+ "metric",
+ { stored },
+ {
+ stored = it
+ writeCalled = true
+ },
+ { throw TestError }
+ )
+
+ assertEquals(42L, stored)
+ assertFalse(writeCalled)
+ }
+
+ private object TestError : Exception()
+}
diff --git a/packages/expo-observe/android/src/test/java/expo/modules/observe/DispatchUtilsTest.kt b/packages/expo-observe/android/src/test/java/expo/modules/observe/DispatchUtilsTest.kt
index 1e669197eddaf2..19eded0491f728 100644
--- a/packages/expo-observe/android/src/test/java/expo/modules/observe/DispatchUtilsTest.kt
+++ b/packages/expo-observe/android/src/test/java/expo/modules/observe/DispatchUtilsTest.kt
@@ -257,47 +257,6 @@ class DispatchUtilsClassifyResponseTest {
}
}
-class DispatchUtilsShouldRemovePendingTest {
- // On `Success`, the queue moves past the dispatched batch so the next round reads only
- // newer rows. Unchanged from the pre-OTLP behavior; locked here for the table.
- @Test
- fun `Success removes pending IDs`() {
- assertTrue(DispatchUtils.shouldRemovePending(DispatchResult.Success))
- }
-
- // Multi-record payloads are retried in smaller chunks before this check, so a 413 here
- // represents a single oversized record that must not wedge the queue.
- @Test
- fun `PayloadTooLarge removes pending IDs`() {
- assertTrue(DispatchUtils.shouldRemovePending(DispatchResult.PayloadTooLarge))
- }
-
- // `Retryable` is the "leave them alone" case — the next dispatch round picks the same
- // rows up again. This is what keeps an in-flight outage from losing telemetry.
- @Test
- fun `Retryable keeps pending IDs`() {
- assertTrue(!DispatchUtils.shouldRemovePending(DispatchResult.RetryableFailure()))
- assertTrue(!DispatchUtils.shouldRemovePending(DispatchResult.RetryableFailure(retryAfterMs = 30_000L)))
- }
-
- // `PartialSuccess` removes pending IDs like `Success` does: the bytes landed on the
- // server (a subset was rejected server-side, but the batch as a whole was accepted), so
- // re-sending the same rows would just trip the same rejection.
- @Test
- fun `PartialSuccess removes pending IDs`() {
- val partial = OTPartialSuccess(rejectedDataPoints = 1, errorMessage = "x")
- assertTrue(DispatchUtils.shouldRemovePending(DispatchResult.PartialSuccess(partial)))
- }
-
- // The acceptance-criterion behavior: a non-retryable response (e.g. 400, 403) drops the
- // offending batch. Without this, the next round would re-send the same rows and the
- // server would refuse them again, wedging the queue indefinitely.
- @Test
- fun `NonRetryable removes pending IDs`() {
- assertTrue(DispatchUtils.shouldRemovePending(DispatchResult.NonRetryableFailure("HTTP 400")))
- }
-}
-
class DispatchUtilsParseRetryAfterTest {
// Test-local bounds passed explicitly to every call so the suite is independent of the
// production constants. A separate test verifies the default-argument path.
diff --git a/packages/expo-observe/android/src/test/java/expo/modules/observe/ObservePreferencesTest.kt b/packages/expo-observe/android/src/test/java/expo/modules/observe/ObservePreferencesTest.kt
index 80e0e41aec8896..0954ae011f75ad 100644
--- a/packages/expo-observe/android/src/test/java/expo/modules/observe/ObservePreferencesTest.kt
+++ b/packages/expo-observe/android/src/test/java/expo/modules/observe/ObservePreferencesTest.kt
@@ -139,4 +139,38 @@ class ObservePreferencesTest {
}
// endregion
+
+ // region Dispatch cursors
+
+ @Test
+ fun `dispatch cursors default to -1`() {
+ assertEquals(-1L, ObservePreferences.getLastDispatchedMetricId(context))
+ assertEquals(-1L, ObservePreferences.getLastDispatchedLogId(context))
+ }
+
+ @Test
+ fun `metric dispatch cursor round trips`() {
+ ObservePreferences.setLastDispatchedMetricId(context, 42)
+
+ assertEquals(42L, ObservePreferences.getLastDispatchedMetricId(context))
+ }
+
+ @Test
+ fun `log dispatch cursor round trips`() {
+ ObservePreferences.setLastDispatchedLogId(context, 84)
+
+ assertEquals(84L, ObservePreferences.getLastDispatchedLogId(context))
+ }
+
+ @Test
+ fun `dispatch cursor keys are independent`() {
+ ObservePreferences.setLastDispatchedMetricId(context, 42)
+ ObservePreferences.setLastDispatchedLogId(context, 84)
+ ObservePreferences.setLastDispatchedMetricId(context, 126)
+
+ assertEquals(126L, ObservePreferences.getLastDispatchedMetricId(context))
+ assertEquals(84L, ObservePreferences.getLastDispatchedLogId(context))
+ }
+
+ // endregion
}
diff --git a/packages/expo-observe/android/src/test/java/expo/modules/observe/storage/PendingLogsManagerTest.kt b/packages/expo-observe/android/src/test/java/expo/modules/observe/storage/PendingLogsManagerTest.kt
deleted file mode 100644
index 12b6718ac8998b..00000000000000
--- a/packages/expo-observe/android/src/test/java/expo/modules/observe/storage/PendingLogsManagerTest.kt
+++ /dev/null
@@ -1,156 +0,0 @@
-package expo.modules.observe.storage
-
-import android.content.Context
-import androidx.room.Room
-import androidx.test.core.app.ApplicationProvider
-import kotlinx.coroutines.test.runTest
-import org.junit.After
-import org.junit.Assert.*
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.robolectric.RobolectricTestRunner
-import org.robolectric.annotation.Config
-
-@RunWith(RobolectricTestRunner::class)
-@Config(manifest = Config.NONE, sdk = [28])
-class PendingLogsManagerTest {
- private lateinit var database: ObserveDatabase
- private lateinit var manager: PendingLogsManager
-
- @Before
- fun setUp() {
- val context = ApplicationProvider.getApplicationContext()
- database = Room
- .inMemoryDatabaseBuilder(context, ObserveDatabase::class.java)
- .allowMainThreadQueries()
- .build()
- manager = PendingLogsManager(context, database)
- }
-
- @After
- fun tearDown() {
- database.close()
- }
-
- @Test
- fun `addPendingLogs inserts logs correctly`() =
- runTest {
- val logIds = listOf("log-1", "log-2", "log-3")
-
- manager.addPendingLogs(logIds)
-
- val result = manager.getPendingLogIds(Int.MAX_VALUE)
- assertEquals(3, result.size)
- assertTrue(result.containsAll(logIds))
- }
-
- @Test
- fun `getPendingLogIds returns all inserted IDs from multiple add calls`() =
- runTest {
- manager.addPendingLogs(listOf("log-1", "log-2"))
- manager.addPendingLogs(listOf("log-3"))
-
- val result = manager.getPendingLogIds(Int.MAX_VALUE)
-
- assertEquals(3, result.size)
- assertTrue(result.containsAll(listOf("log-1", "log-2", "log-3")))
- }
-
- @Test
- fun `getPendingLogIds returns the oldest IDs up to the limit`() =
- runTest {
- database.pendingLogDao().insertAll(
- listOf(
- PendingLog("log-3", "2025-01-03T00:00:00.000Z"),
- PendingLog("log-1", "2025-01-01T00:00:00.000Z"),
- PendingLog("log-4", "2025-01-04T00:00:00.000Z"),
- PendingLog("log-2", "2025-01-02T00:00:00.000Z")
- )
- )
-
- val result = manager.getPendingLogIds(2)
-
- assertEquals(listOf("log-1", "log-2"), result)
- }
-
- @Test
- fun `hasPendingLogs reflects whether logs are pending`() =
- runTest {
- assertFalse(manager.hasPendingLogs())
-
- manager.addPendingLogs(listOf("log-1"))
-
- assertTrue(manager.hasPendingLogs())
- }
-
- @Test
- fun `removePendingLogs deletes specified IDs only`() =
- runTest {
- manager.addPendingLogs(listOf("log-1", "log-2", "log-3"))
-
- manager.removePendingLogs(listOf("log-1", "log-3"))
-
- assertEquals(listOf("log-2"), manager.getPendingLogIds(Int.MAX_VALUE))
- }
-
- @Test
- fun `cleanupOldPendingLogs removes old entries`() =
- runTest {
- database.pendingLogDao().insertAll(
- listOf(PendingLog(logId = "old-log", addedAt = "2020-01-01T00:00:00.000Z"))
- )
- manager.addPendingLogs(listOf("recent-log"))
-
- manager.cleanupOldPendingLogs()
-
- assertEquals(listOf("recent-log"), manager.getPendingLogIds(Int.MAX_VALUE))
- }
-
- @Test
- fun `addPendingLogs with duplicate IDs ignores duplicates`() =
- runTest {
- manager.addPendingLogs(listOf("log-1", "log-2"))
-
- manager.addPendingLogs(listOf("log-2", "log-3"))
-
- val result = manager.getPendingLogIds(Int.MAX_VALUE)
- assertEquals(3, result.size)
- assertTrue(result.containsAll(listOf("log-1", "log-2", "log-3")))
- }
-
- @Test
- fun `removePendingLogs with empty list is a no-op`() =
- runTest {
- manager.addPendingLogs(listOf("log-1", "log-2"))
-
- manager.removePendingLogs(emptyList())
-
- assertEquals(2, manager.getPendingLogIds(Int.MAX_VALUE).size)
- }
-
- @Test
- fun `removeAllPendingLogs deletes all pending logs`() =
- runTest {
- manager.addPendingLogs(listOf("log-1", "log-2"))
-
- manager.removeAllPendingLogs()
-
- assertFalse(manager.hasPendingLogs())
- }
-
- @Test
- fun `removePendingLogs handles more than 900 items`() =
- runTest {
- val allIds = (1..1100).map { "log-$it" }
- allIds.chunked(500).forEach { chunk ->
- manager.addPendingLogs(chunk)
- }
- assertEquals(1100, manager.getPendingLogIds(Int.MAX_VALUE).size)
-
- manager.removePendingLogs(allIds)
-
- val remaining = manager.getPendingLogIds(Int.MAX_VALUE)
- assertTrue("Expected empty but got ${remaining.size} items", remaining.isEmpty())
- }
-}
diff --git a/packages/expo-observe/android/src/test/java/expo/modules/observe/storage/PendingMetricsManagerTest.kt b/packages/expo-observe/android/src/test/java/expo/modules/observe/storage/PendingMetricsManagerTest.kt
deleted file mode 100644
index 84b698b0ab72aa..00000000000000
--- a/packages/expo-observe/android/src/test/java/expo/modules/observe/storage/PendingMetricsManagerTest.kt
+++ /dev/null
@@ -1,175 +0,0 @@
-package expo.modules.observe.storage
-
-import android.content.Context
-import androidx.room.Room
-import androidx.test.core.app.ApplicationProvider
-import kotlinx.coroutines.test.runTest
-import org.junit.After
-import org.junit.Assert.*
-import org.junit.Before
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.robolectric.RobolectricTestRunner
-import org.robolectric.annotation.Config
-
-@RunWith(RobolectricTestRunner::class)
-@Config(manifest = Config.NONE, sdk = [28])
-class PendingMetricsManagerTest {
- private lateinit var database: ObserveDatabase
- private lateinit var manager: PendingMetricsManager
-
- @Before
- fun setUp() {
- val context = ApplicationProvider.getApplicationContext()
- database = Room
- .inMemoryDatabaseBuilder(context, ObserveDatabase::class.java)
- .allowMainThreadQueries()
- .build()
- manager = PendingMetricsManager(context, database)
- }
-
- @After
- fun tearDown() {
- database.close()
- }
-
- @Test
- fun `addPendingMetrics inserts metrics correctly`() =
- runTest {
- // Arrange
- val metricIds = listOf("metric-1", "metric-2", "metric-3")
-
- // Act
- manager.addPendingMetrics(metricIds)
-
- // Assert
- val result = manager.getPendingMetricIds(Int.MAX_VALUE)
- assertEquals(3, result.size)
- assertTrue(result.containsAll(metricIds))
- }
-
- @Test
- fun `getPendingMetricIds returns all inserted IDs from multiple add calls`() =
- runTest {
- // Arrange
- manager.addPendingMetrics(listOf("metric-1", "metric-2"))
- manager.addPendingMetrics(listOf("metric-3"))
-
- // Act
- val result = manager.getPendingMetricIds(Int.MAX_VALUE)
-
- // Assert
- assertEquals(3, result.size)
- assertTrue(result.containsAll(listOf("metric-1", "metric-2", "metric-3")))
- }
-
- @Test
- fun `getPendingMetricIds returns the oldest IDs up to the limit`() =
- runTest {
- database.pendingMetricDao().insertAll(
- listOf(
- PendingMetric("metric-3", "2025-01-03T00:00:00.000Z"),
- PendingMetric("metric-1", "2025-01-01T00:00:00.000Z"),
- PendingMetric("metric-4", "2025-01-04T00:00:00.000Z"),
- PendingMetric("metric-2", "2025-01-02T00:00:00.000Z")
- )
- )
-
- val result = manager.getPendingMetricIds(2)
-
- assertEquals(listOf("metric-1", "metric-2"), result)
- }
-
- @Test
- fun `removePendingMetrics deletes specified IDs only`() =
- runTest {
- // Arrange
- manager.addPendingMetrics(listOf("metric-1", "metric-2", "metric-3"))
-
- // Act
- manager.removePendingMetrics(listOf("metric-1", "metric-3"))
-
- // Assert
- val remaining = manager.getPendingMetricIds(Int.MAX_VALUE)
- assertEquals(1, remaining.size)
- assertEquals("metric-2", remaining[0])
- }
-
- @Test
- fun `cleanupOldPendingMetrics removes old entries`() =
- runTest {
- // Arrange - insert a metric with a very old timestamp directly via DAO
- val oldMetric = PendingMetric(metricId = "old-metric", addedAt = "2020-01-01T00:00:00.000Z")
- database.pendingMetricDao().insertAll(listOf(oldMetric))
-
- // Insert a recent metric via the manager (uses current timestamp)
- manager.addPendingMetrics(listOf("recent-metric"))
-
- // Verify both exist
- assertEquals(2, manager.getPendingMetricIds(Int.MAX_VALUE).size)
-
- // Act
- manager.cleanupOldPendingMetrics()
-
- // Assert - only recent metric survives
- val remaining = manager.getPendingMetricIds(Int.MAX_VALUE)
- assertEquals(1, remaining.size)
- assertEquals("recent-metric", remaining[0])
- }
-
- @Test
- fun `addPendingMetrics with duplicate IDs ignores duplicates`() =
- runTest {
- // Arrange
- manager.addPendingMetrics(listOf("metric-1", "metric-2"))
-
- // Act - insert overlapping IDs
- manager.addPendingMetrics(listOf("metric-2", "metric-3"))
-
- // Assert - no duplicates
- val result = manager.getPendingMetricIds(Int.MAX_VALUE)
- assertEquals(3, result.size)
- assertTrue(result.containsAll(listOf("metric-1", "metric-2", "metric-3")))
- }
-
- @Test
- fun `removePendingMetrics with empty list is a no-op`() =
- runTest {
- // Arrange
- manager.addPendingMetrics(listOf("metric-1", "metric-2"))
-
- // Act
- manager.removePendingMetrics(emptyList())
-
- // Assert - nothing removed
- assertEquals(2, manager.getPendingMetricIds(Int.MAX_VALUE).size)
- }
-
- @Test
- fun `removeAllPendingMetrics deletes all pending metrics`() =
- runTest {
- manager.addPendingMetrics(listOf("metric-1", "metric-2"))
-
- manager.removeAllPendingMetrics()
-
- assertFalse(manager.hasPendingMetrics())
- }
-
- @Test
- fun `removePendingMetrics handles more than 900 items`() =
- runTest {
- // Arrange - insert 1100 metrics
- val allIds = (1..1100).map { "metric-$it" }
- allIds.chunked(500).forEach { chunk ->
- manager.addPendingMetrics(chunk)
- }
- assertEquals(1100, manager.getPendingMetricIds(Int.MAX_VALUE).size)
-
- // Act - remove all 1100 at once
- manager.removePendingMetrics(allIds)
-
- // Assert - all removed
- val remaining = manager.getPendingMetricIds(Int.MAX_VALUE)
- assertTrue("Expected empty but got ${remaining.size} items", remaining.isEmpty())
- }
-}
diff --git a/packages/expo-router/CHANGELOG.md b/packages/expo-router/CHANGELOG.md
index ef71b708edc2bc..a23d0e1d7b22fe 100644
--- a/packages/expo-router/CHANGELOG.md
+++ b/packages/expo-router/CHANGELOG.md
@@ -4,6 +4,8 @@
### 🛠 Breaking changes
+- Remove `UNSTABLE_UnhandledLinkingContext` from `expo-router/react-navigation`. ([#49616](https://github.com/expo/expo/pull/49616) by [@Ubax](https://github.com/Ubax))
+- Remove `BaseNavigationContainer` export from `expo-router/react-navigation`. ([#49587](https://github.com/expo/expo/pull/49587) by [@Ubax](https://github.com/Ubax))
- Dispatch queued navigation actions in React transitions. The current screen stays visible while the destination suspends, so `SuspenseFallback` no longer renders for navigation-triggered suspense. ([#49448](https://github.com/expo/expo/pull/49448) by [@Ubax](https://github.com/Ubax))
- Remove `beforeRemove`, `__unsafe_action__`, `PreventRemoveContext`, and `usePreventRemoveContext` from `expo-router/react-navigation`. ([#49408](https://github.com/expo/expo/pull/49408) by [@Ubax](https://github.com/Ubax))
- Preserve the focused route when switching navigator types in a conditional layout. ([#49297](https://github.com/expo/expo/pull/49297) by [@Ubax](https://github.com/Ubax))
@@ -46,7 +48,7 @@
### 🎉 New features
-- [Android] Add `cornerRadius` support to dropdown menu
+- [Android] Add `cornerRadius` support to dropdown menu. ([#49515](https://github.com/expo/expo/pull/49515) by [@aaronleopold](https://github.com/aaronleopold))
- Add `unstable_useIsNavigating` for observing queued or pending navigation. ([#49448](https://github.com/expo/expo/pull/49448) by [@Ubax](https://github.com/Ubax))
- Add unstable `NavigationAwareActivity` component. ([#49164](https://github.com/expo/expo/pull/49164) by [@Ubax](https://github.com/Ubax))
- Add screen error boundaries ([#49174](https://github.com/expo/expo/pull/49174) by [@Ubax](https://github.com/Ubax))
@@ -85,6 +87,7 @@
### 💡 Others
+- Pass toolbar menu icons straight to react-navigation instead of converting them to react-native-screens icons. (by [@Ubax](https://github.com/Ubax)) ([#49584](https://github.com/expo/expo/pull/49584) by [@Ubax](https://github.com/Ubax))
- Remove module-level mutable navigation state from Expo Router. ([#49403](https://github.com/expo/expo/pull/49403) by [@Ubax](https://github.com/Ubax))
- Remove the dev-only `stack` field from the `__unsafe_action__` event in `expo-router/react-navigation`. ([#49431](https://github.com/expo/expo/pull/49431) by [@Ubax](https://github.com/Ubax))
- Read navigation state from the React tree instead of imperative refs. ([#49433](https://github.com/expo/expo/pull/49433) by [@Ubax](https://github.com/Ubax))
diff --git a/packages/expo-router/src/fork/NavigationContainer.tsx b/packages/expo-router/src/fork/NavigationContainer.tsx
index 71da25ad6a0bd1..393b379c814a0b 100644
--- a/packages/expo-router/src/fork/NavigationContainer.tsx
+++ b/packages/expo-router/src/fork/NavigationContainer.tsx
@@ -2,25 +2,21 @@ import React from 'react';
import { I18nManager } from 'react-native';
import { RouterConfigContext } from '../global-state/routerConfigContext';
-import { RoutingQueueApiContext, RoutingQueueProvider } from '../global-state/routingQueueContext';
+import { BaseNavigationContainer } from '../react-navigation/core/BaseNavigationContainer';
import type {
DocumentTitleOptions,
LinkingOptions,
LocaleDirection,
NavigationContainerProps,
NavigationContainerRef,
- NavigationState,
ParamListBase,
} from '../react-navigation/native';
import {
- BaseNavigationContainer,
DefaultTheme,
LinkingContext,
LocaleDirContext,
ThemeProvider,
- UNSTABLE_UnhandledLinkingContext as UnhandledLinkingContext,
} from '../react-navigation/native';
-import useLatestCallback from '../utils/useLatestCallback';
import { getPathFromState } from './getPathFromState';
import { getStateFromPath } from './getStateFromPath';
import { useBackButton } from './useBackButton';
@@ -61,19 +57,17 @@ type Props = Omit,
- ref?: React.Ref | null>
-) {
+function NavigationContainerInner({
+ direction = I18nManager.getConstants().isRTL ? 'rtl' : 'ltr',
+ theme = DefaultTheme,
+ linking,
+ fallback = null,
+ documentTitle,
+ ref,
+ ...rest
+}: Props & {
+ ref?: React.Ref | null>;
+}) {
const routerConfig = React.use(RouterConfigContext);
if (linking?.config) {
@@ -85,49 +79,12 @@ function NavigationContainerInner(
useBackButton(refContainer);
useDocumentTitle(refContainer, documentTitle);
- const [lastUnhandledLink, setLastUnhandledLink] = React.useState();
-
- const { getInitialState } = useLinking(
- refContainer,
- {
- prefixes: [],
- ...linking,
- },
- setLastUnhandledLink
- );
-
- const linkingContext = React.useMemo(() => ({ options: linking }), [linking]);
-
- const unhandledLinkingContext = React.useMemo(
- () => ({ lastUnhandledLink, setLastUnhandledLink }),
- [lastUnhandledLink, setLastUnhandledLink]
- );
-
- const onReadyForLinkingHandling = useLatestCallback(() => {
- // If the screen path matches lastUnhandledLink, we do not track it
- const path = refContainer.current?.getCurrentRoute()?.path;
- setLastUnhandledLink((previousLastUnhandledLink) => {
- if (previousLastUnhandledLink === path) {
- return undefined;
- }
- return previousLastUnhandledLink;
- });
- onReady?.();
+ const { getInitialState } = useLinking(refContainer, {
+ prefixes: [],
+ ...linking,
});
- const onStateChangeForLinkingHandling = useLatestCallback(
- (state: Readonly | undefined) => {
- // If the screen path matches lastUnhandledLink, we do not track it
- const path = refContainer.current?.getCurrentRoute()?.path;
- setLastUnhandledLink((previousLastUnhandledLink) => {
- if (previousLastUnhandledLink === path) {
- return undefined;
- }
- return previousLastUnhandledLink;
- });
- onStateChange?.(state);
- }
- );
+ const linkingContext = React.useMemo(() => ({ options: linking }), [linking]);
// Add additional linking related info to the ref
// This will be used by the devtools
React.useEffect(() => {
@@ -162,37 +119,21 @@ function NavigationContainerInner(
return (
-
-
-
-
-
+
+
+
);
}
-const NavigationContainerContent = React.forwardRef(NavigationContainerInner);
-
-// TODO(@ubax): Remove this component once we require single container in the whole app
-function NavigationContainerWithQueue(
- props: Props,
- ref?: React.Ref | null>
-) {
- const api = React.use(RoutingQueueApiContext);
- const content = ;
-
- return api === undefined ? {content} : content;
-}
-
-export const NavigationContainer = React.forwardRef(NavigationContainerWithQueue) as <
+// The implementation uses the base param list, while callers retain their concrete route types.
+export const NavigationContainer = NavigationContainerInner as <
RootParamList extends object = ReactNavigation.RootParamList,
>(
props: Props & {
diff --git a/packages/expo-router/src/fork/__tests__/__fixtures__/store.tsx b/packages/expo-router/src/fork/__tests__/__fixtures__/store.tsx
index c4ca667966177a..a799694c6e282e 100644
--- a/packages/expo-router/src/fork/__tests__/__fixtures__/store.tsx
+++ b/packages/expo-router/src/fork/__tests__/__fixtures__/store.tsx
@@ -12,7 +12,9 @@ import type { RoutingIntent } from '../../../global-state/routingQueue';
import type { RouteNode } from '../../../Route';
import { defaultRouteInfo, getRouteInfoFromState } from '../../../global-state/getRouteInfoFromState';
import { RouteInfoContext } from '../../../global-state/routeInfoContext';
+import { RemovalPreventionProvider } from '../../../global-state/removalPrevention';
import { RouterConfigContext } from '../../../global-state/routerConfigContext';
+import { RouterRegistryProvider } from '../../../global-state/routerRegistry';
import type { NavigationState } from '../../../react-navigation/routers';
let routeNode: RouteNode | null = null;
@@ -45,7 +47,11 @@ export function StoreProvider({ children }: { children: ReactNode }) {
return (
- {children}
+
+
+ {children}
+
+
diff --git a/packages/expo-router/src/fork/__tests__/useLinking.test.ios.tsx b/packages/expo-router/src/fork/__tests__/useLinking.test.ios.tsx
index 4bf125c2eec136..daf7afa2fb98f7 100644
--- a/packages/expo-router/src/fork/__tests__/useLinking.test.ios.tsx
+++ b/packages/expo-router/src/fork/__tests__/useLinking.test.ios.tsx
@@ -44,18 +44,14 @@ test('queues an incoming deep link using its extracted app path', () => {
const getStateFromPath = jest.fn(() => ({ routes: [{ name: 'home' }] }));
function Sample() {
- useLinking(
- ref,
- {
- prefixes: ['example://'],
- getStateFromPath,
- subscribe: (nextListener) => {
- listener = nextListener;
- return () => {};
- },
+ useLinking(ref, {
+ prefixes: ['example://'],
+ getStateFromPath,
+ subscribe: (nextListener) => {
+ listener = nextListener;
+ return () => {};
},
- () => {}
- );
+ });
return null;
}
@@ -90,19 +86,15 @@ test('keeps the current route group when parsing an incoming deep link', () => {
const parsePath = jest.fn(getStateFromPath);
function Sample() {
- useLinking(
- ref,
- {
- prefixes: ['example://'],
- config,
- getStateFromPath: parsePath,
- subscribe: (nextListener) => {
- listener = nextListener;
- return () => {};
- },
+ useLinking(ref, {
+ prefixes: ['example://'],
+ config,
+ getStateFromPath: parsePath,
+ subscribe: (nextListener) => {
+ listener = nextListener;
+ return () => {};
},
- () => {}
- );
+ });
return null;
}
@@ -115,40 +107,6 @@ test('keeps the current route group when parsing an incoming deep link', () => {
).toEqual(['(b)', 'shared']);
});
-test('reports an incoming deep link using its extracted app path', () => {
- const ref = createNavigationContainerRef();
- // Only `getRootState` is used by the linking subscription.
- ref.current = {
- getRootState: () => ({ routeNames: ['home'], routes: [{ name: '__root' }] }),
- } as typeof ref.current;
- let listener: ((url: string) => void) | undefined;
- const onUnhandledLinking = jest.fn();
-
- function Sample() {
- useLinking(
- ref,
- {
- prefixes: ['myapp://'],
- getStateFromPath: () => ({ routes: [{ name: 'home' }] }),
- subscribe: (nextListener) => {
- listener = nextListener;
- return () => {};
- },
- },
- onUnhandledLinking
- );
- return null;
- }
-
- render();
- act(() => listener?.('myapp://foo/bar'));
-
- expect(onUnhandledLinking).toHaveBeenCalledWith('/foo/bar');
- expect(getPendingIntents()[0]).toMatchObject({
- payload: { href: '/foo/bar' },
- });
-});
-
test('resolves a completed state from an async initial URL', async () => {
const ref = createNavigationContainerRef();
const getStateFromPath = jest.fn(() => ({
@@ -168,15 +126,11 @@ test('resolves a completed state from an async initial URL', async () => {
}));
const { result } = renderHook(() =>
- useLinking(
- ref,
- {
- prefixes: ['example://'],
- getInitialURL: () => Promise.resolve('example://home/42'),
- getStateFromPath,
- },
- () => {}
- )
+ useLinking(ref, {
+ prefixes: ['example://'],
+ getInitialURL: () => Promise.resolve('example://home/42'),
+ getStateFromPath,
+ })
);
const state = await result.current.getInitialState();
@@ -204,15 +158,11 @@ test('resubscribes on re-render and cleans up the previous subscription', () =>
});
function Sample() {
- useLinking(
- ref,
- {
- prefixes: ['example://'],
- getStateFromPath: () => ({ routes: [{ name: 'home' }] }),
- subscribe,
- },
- () => {}
- );
+ useLinking(ref, {
+ prefixes: ['example://'],
+ getStateFromPath: () => ({ routes: [{ name: 'home' }] }),
+ subscribe,
+ });
return null;
}
@@ -239,11 +189,11 @@ test('async initial URL is parsed with first-render options', async () => {
let getInitialState: ReturnType['getInitialState'] | undefined;
function Sample({ getStateFromPath }: { getStateFromPath: typeof firstGetStateFromPath }) {
- getInitialState = useLinking(
- ref,
- { prefixes: ['example://'], getInitialURL: () => initialURL, getStateFromPath },
- () => {}
- ).getInitialState;
+ getInitialState = useLinking(ref, {
+ prefixes: ['example://'],
+ getInitialURL: () => initialURL,
+ getStateFromPath,
+ }).getInitialState;
return null;
}
@@ -370,8 +320,8 @@ test('throws if multiple instances of useLinking are used', () => {
const options = { prefixes: [] };
function Sample() {
- useLinking(ref, options, () => {});
- useLinking(ref, options, () => {});
+ useLinking(ref, options);
+ useLinking(ref, options);
return null;
}
@@ -389,12 +339,12 @@ test('throws if multiple instances of useLinking are used', () => {
element?.unmount();
function A() {
- useLinking(ref, options, () => {});
+ useLinking(ref, options);
return null;
}
function B() {
- useLinking(ref, options, () => {});
+ useLinking(ref, options);
return null;
}
@@ -413,7 +363,7 @@ test('throws if multiple instances of useLinking are used', () => {
element?.unmount();
function Sample2() {
- useLinking(ref, options, () => {});
+ useLinking(ref, options);
return null;
}
diff --git a/packages/expo-router/src/fork/__tests__/useLinking.test.web.tsx b/packages/expo-router/src/fork/__tests__/useLinking.test.web.tsx
index 048b054e4dbb8f..a15c36a2510b4b 100644
--- a/packages/expo-router/src/fork/__tests__/useLinking.test.web.tsx
+++ b/packages/expo-router/src/fork/__tests__/useLinking.test.web.tsx
@@ -87,7 +87,7 @@ function renderHistoryListener({
const ref = { current: navigation } as unknown as Parameters[0];
function Sample() {
- useLinking(ref, { prefixes: [], getStateFromPath }, jest.fn());
+ useLinking(ref, { prefixes: [], getStateFromPath });
return null;
}
@@ -230,7 +230,7 @@ test('keeps the current route group when parsing a popstate path', () => {
const parsePath = jest.fn(getStateFromPath);
function Sample() {
- useLinking(ref, { prefixes: [], config, getStateFromPath: parsePath }, jest.fn());
+ useLinking(ref, { prefixes: [], config, getStateFromPath: parsePath });
return null;
}
@@ -273,11 +273,11 @@ test('parses the initial URL instead of returning existing navigation state', as
const getStateFromPath = jest.fn(() => ({ routes: [{ name: 'home' }] }));
function Sample() {
- getInitialState = useLinking(
- mockNavigationRef,
- { prefixes: [], getInitialURL: () => 'http://localhost/home', getStateFromPath },
- jest.fn()
- ).getInitialState;
+ getInitialState = useLinking(mockNavigationRef, {
+ prefixes: [],
+ getInitialURL: () => 'http://localhost/home',
+ getStateFromPath,
+ }).getInitialState;
return null;
}
@@ -303,11 +303,11 @@ test('getInitialState is computed once with first-render options', async () => {
let getInitialState: ReturnType['getInitialState'] | undefined;
function Sample({ getStateFromPath }: { getStateFromPath: typeof firstGetStateFromPath }) {
- getInitialState = useLinking(
- mockNavigationRef,
- { prefixes: [], getInitialURL: () => 'http://localhost/home', getStateFromPath },
- jest.fn()
- ).getInitialState;
+ getInitialState = useLinking(mockNavigationRef, {
+ prefixes: [],
+ getInitialURL: () => 'http://localhost/home',
+ getStateFromPath,
+ }).getInitialState;
return null;
}
diff --git a/packages/expo-router/src/fork/useLinking.native.ts b/packages/expo-router/src/fork/useLinking.native.ts
index f080dad2119638..9f3543ba66a4a2 100644
--- a/packages/expo-router/src/fork/useLinking.native.ts
+++ b/packages/expo-router/src/fork/useLinking.native.ts
@@ -56,8 +56,7 @@ export function useLinking(
};
},
getStateFromPath = getStateFromPathDefault,
- }: Options,
- onUnhandledLinking: (lastUnhandledLining: string | undefined) => void
+ }: Options
) {
const routerConfig = use(RouterConfigContext);
const enqueue = useEnqueueRoutingIntent();
@@ -138,21 +137,8 @@ export function useLinking(
: completeParsedState(parsedState, ROOT_CHAIN);
};
- if (url != null) {
- if (typeof url !== 'string') {
- return url.then((url) => {
- const state = createInitialState(url);
-
- if (typeof url === 'string') {
- // If the link were handled, it gets cleared in NavigationContainer
- onUnhandledLinking(getInitialPath(prefixes, url));
- }
-
- return state;
- });
- } else {
- onUnhandledLinking(getInitialPath(prefixes, url));
- }
+ if (url != null && typeof url !== 'string') {
+ return url.then(createInitialState);
}
const state = createInitialState(url);
@@ -167,7 +153,7 @@ export function useLinking(
};
return thenable as PromiseLike;
- }, [config, filter, getInitialURL, getStateFromPath, onUnhandledLinking, prefixes, routerConfig]);
+ }, [config, filter, getInitialURL, getStateFromPath, prefixes, routerConfig]);
useEffect(() => {
const listener = (url: string) => {
@@ -176,8 +162,6 @@ export function useLinking(
const state = navigation ? getStateFromURL(url) : undefined;
if (navigation && state) {
- // If the link were handled, it gets cleared in NavigationContainer
- onUnhandledLinking(path);
const rootState = navigation.getRootState();
if (state.routes.some((r) => !rootState?.routeNames.includes(r.name))) {
return;
@@ -195,7 +179,7 @@ export function useLinking(
};
return subscribe(listener);
- }, [enqueue, getStateFromURL, onUnhandledLinking, prefixes, ref, subscribe]);
+ }, [enqueue, getStateFromURL, prefixes, ref, subscribe]);
return {
getInitialState,
diff --git a/packages/expo-router/src/fork/useLinking.ts b/packages/expo-router/src/fork/useLinking.ts
index aeab01aebc25b3..fba660f129c143 100644
--- a/packages/expo-router/src/fork/useLinking.ts
+++ b/packages/expo-router/src/fork/useLinking.ts
@@ -41,8 +41,7 @@ export function useLinking(
getInitialURL = getInitialURLWithTimeout,
getStateFromPath = getStateFromPathDefault,
getPathFromState = getPathFromStateDefault,
- }: Options,
- onUnhandledLinking: (lastUnhandledLining: string | undefined) => void
+ }: Options
) {
const routerConfig = use(RouterConfigContext);
@@ -90,8 +89,6 @@ export function useLinking(
? createSeededRootState(parsedState, routeNode)
: completeParsedState(parsedState, ROOT_CHAIN);
- // If the link were handled, it gets cleared in NavigationContainer
- onUnhandledLinking(path);
return state;
};
const url = getInitialURL();
@@ -119,7 +116,6 @@ export function useLinking(
config,
getStateFromPath,
getPathFromState,
- onUnhandledLinking,
});
return {
@@ -172,13 +168,11 @@ function useBrowserHistorySync({
config,
getStateFromPath,
getPathFromState,
- onUnhandledLinking,
}: {
ref: RefObject | null>;
config: LinkingOptions['config'];
getStateFromPath: GetStateFromPath;
getPathFromState: GetPathFromState;
- onUnhandledLinking: (path: string | undefined) => void;
}) {
const routerConfig = use(RouterConfigContext);
const enqueue = useEnqueueRoutingIntent();
@@ -245,7 +239,6 @@ function useBrowserHistorySync({
const segments = getRouteInfoFromState(navigation.getRootState()).segments;
const parsedState = getStateFromPathRef.current(path, configRef.current, segments);
if (parsedState) {
- onUnhandledLinking(path);
const routeNames = getRootStackRouteNames();
if (parsedState.routes.some((route) => !routeNames.includes(route.name))) {
return;
@@ -289,7 +282,7 @@ function useBrowserHistorySync({
unsubscribe();
pendingHistoryOperationsRef.current = [];
};
- }, [enqueue, history, onUnhandledLinking, ref]);
+ }, [enqueue, history, ref]);
useEffect(() => {
const getPathForRoute = (
diff --git a/packages/expo-router/src/layouts/stack-utils/__tests__/StackToolbarMenu.test.ios.tsx b/packages/expo-router/src/layouts/stack-utils/__tests__/StackToolbarMenu.test.ios.tsx
index 2c168f64e22db8..15a2bc5a0d46e3 100644
--- a/packages/expo-router/src/layouts/stack-utils/__tests__/StackToolbarMenu.test.ios.tsx
+++ b/packages/expo-router/src/layouts/stack-utils/__tests__/StackToolbarMenu.test.ios.tsx
@@ -208,26 +208,28 @@ describe(convertStackToolbarMenuActionPropsToRNHeaderItem, () => {
});
describe('image icons', () => {
- it('converts image icon to imageSource format by default', () => {
+ it('passes image icon as untinted by default', () => {
const result = convertStackToolbarMenuActionPropsToRNHeaderItem({
icon: { uri: 'https://example.com/icon.png' },
});
expect(result.icon).toEqual({
- type: 'imageSource',
- imageSource: { uri: 'https://example.com/icon.png' },
+ type: 'image',
+ source: { uri: 'https://example.com/icon.png' },
+ tinted: false,
});
});
- it('converts image icon to templateSource format when iconRenderingMode is template', () => {
+ it('passes image icon as tinted when iconRenderingMode is template', () => {
const result = convertStackToolbarMenuActionPropsToRNHeaderItem({
icon: { uri: 'https://example.com/icon.png' },
iconRenderingMode: 'template',
});
expect(result.icon).toEqual({
- type: 'templateSource',
- templateSource: { uri: 'https://example.com/icon.png' },
+ type: 'image',
+ source: { uri: 'https://example.com/icon.png' },
+ tinted: true,
});
});
});
@@ -413,7 +415,7 @@ describe('submenu conversion', () => {
});
});
- it('converts image icons to imageSource format in submenu', () => {
+ it('passes image icons in submenu', () => {
const result = convertStackToolbarMenuPropsToRNHeaderItem({
children: (
@@ -424,13 +426,14 @@ describe('submenu conversion', () => {
expect(result?.menu.items[0]).toMatchObject({
icon: {
- type: 'imageSource',
- imageSource: { uri: 'https://example.com/icon.png' },
+ type: 'image',
+ source: { uri: 'https://example.com/icon.png' },
+ tinted: false,
},
});
});
- it('converts xcasset icons in submenu to imageSource format', () => {
+ it('passes xcasset icons in submenu as image icons', () => {
const result = convertStackToolbarMenuPropsToRNHeaderItem({
children: (
@@ -441,7 +444,7 @@ describe('submenu conversion', () => {
});
expect(result?.menu.items[0]).toMatchObject({
- icon: { type: 'imageSource', imageSource: { uri: 'custom-icon' } },
+ icon: { type: 'image', source: { uri: 'custom-icon' }, tinted: false },
});
});
});
diff --git a/packages/expo-router/src/layouts/stack-utils/toolbar/StackToolbarMenu/index.tsx b/packages/expo-router/src/layouts/stack-utils/toolbar/StackToolbarMenu/index.tsx
index c01106ecfa5173..0976c0fd6c25c0 100644
--- a/packages/expo-router/src/layouts/stack-utils/toolbar/StackToolbarMenu/index.tsx
+++ b/packages/expo-router/src/layouts/stack-utils/toolbar/StackToolbarMenu/index.tsx
@@ -1,7 +1,5 @@
'use client';
import { Children, useMemo, type ReactNode } from 'react';
-import type { ImageSourcePropType } from 'react-native';
-import type { PlatformIconIOS } from 'react-native-screens';
import type {
NativeStackHeaderItemMenu,
@@ -190,19 +188,6 @@ export function convertStackToolbarMenuPropsToRNHeaderItem(
return item;
}
-// Custom menu action icons are not supported in react-navigation yet
-// But they are supported in react-native-screens
-// TODO(@ubax): Remove this workaround once react-navigation supports custom icons for menu actions.
-// https://linear.app/expo/issue/ENG-19853/remove-custom-conversion-logic-for-icon-from-packagesexpo
-function convertImageIconToPlatformIcon(icon: {
- source: ImageSourcePropType;
- tinted?: boolean;
-}): PlatformIconIOS {
- return icon.tinted
- ? { type: 'templateSource', templateSource: icon.source }
- : { type: 'imageSource', imageSource: icon.source };
-}
-
function convertStackToolbarSubmenuMenuPropsToRNHeaderItem(
props: StackToolbarMenuProps
): NativeStackHeaderItemMenuSubmenu | undefined {
@@ -241,13 +226,7 @@ function convertStackToolbarSubmenuMenuPropsToRNHeaderItem(
// TODO: Add elementSize to react-native-screens
if (sharedProps.icon) {
- if (sharedProps.icon.type === 'sfSymbol') {
- item.icon = sharedProps.icon;
- } else {
- item.icon = convertImageIconToPlatformIcon(
- sharedProps.icon
- ) as unknown as NativeStackHeaderItemMenuSubmenu['icon'];
- }
+ item.icon = sharedProps.icon;
}
return item;
@@ -317,13 +296,7 @@ export function convertStackToolbarMenuActionPropsToRNHeaderItem(
item.keepsMenuPresented = unstable_keepPresented;
}
if (sharedProps.icon) {
- if (sharedProps.icon.type === 'sfSymbol') {
- item.icon = sharedProps.icon;
- } else {
- item.icon = convertImageIconToPlatformIcon(
- sharedProps.icon
- ) as unknown as NativeStackHeaderItemMenuAction['icon'];
- }
+ item.icon = sharedProps.icon;
}
return item;
}
diff --git a/packages/expo-router/src/native-tabs/NativeBottomTabsRouter.tsx b/packages/expo-router/src/native-tabs/NativeBottomTabsRouter.tsx
index aac2205ae05322..8534058646ea8d 100644
--- a/packages/expo-router/src/native-tabs/NativeBottomTabsRouter.tsx
+++ b/packages/expo-router/src/native-tabs/NativeBottomTabsRouter.tsx
@@ -53,6 +53,34 @@ function removeZoomParamsFromState,
+>(state: T): T {
+ const focusedIndex = state.index ?? state.routes.length - 1;
+ const focusedRoute = state.routes[focusedIndex];
+ if (!focusedRoute) {
+ return state;
+ }
+
+ const childState = focusedRoute.state
+ ? appendNoAnimationParamToFocusedRoutes(focusedRoute.state)
+ : undefined;
+ const routes = state.routes.map((route, index) =>
+ index === focusedIndex
+ ? {
+ ...route,
+ params: appendInternalExpoRouterParams(route.params, {
+ [INTERNAL_EXPO_ROUTER_NO_ANIMATION_PARAM_NAME]: true,
+ }),
+ ...(childState ? { state: childState } : undefined),
+ }
+ : route
+ );
+
+ // The mapped routes preserve the input state's full or partial route shape.
+ return { ...state, routes } as T;
+}
+
export function NativeBottomTabsRouter(options: TabRouterOptions) {
const tabRouter = TabRouter({ ...options });
@@ -71,6 +99,13 @@ export function NativeBottomTabsRouter(options: TabRouterOptions) {
if (!newStateFromNavigation) {
return actionResult;
}
+ const focusedRouteKey = state.routes[state.index]?.key;
+ const nextFocusedRouteKey =
+ newStateFromNavigation.routes[newStateFromNavigation.index]?.key;
+ const didTabChange =
+ focusedRouteKey !== undefined &&
+ nextFocusedRouteKey !== undefined &&
+ focusedRouteKey !== nextFocusedRouteKey;
const index = newStateFromNavigation.routes.findIndex(
(route) => route.name === action.payload.name
);
@@ -89,13 +124,6 @@ export function NativeBottomTabsRouter(options: TabRouterOptions) {
action.payload.params
);
- // TODO(@uabx): After __internal__routerActionState, change this to just state
- const isDeepDestination =
- action.payload.state?.__internal__routerActionState === true;
- if (isDeepDestination) {
- expoParams[INTERNAL_EXPO_ROUTER_NO_ANIMATION_PARAM_NAME] = true;
- }
-
if (process.env.NODE_ENV !== 'production') {
if (expoParams[INTERNAL_EXPO_ROUTER_ZOOM_TRANSITION_SOURCE_ID_PARAM_NAME]) {
console.warn(
@@ -111,7 +139,14 @@ export function NativeBottomTabsRouter(options: TabRouterOptions) {
appendInternalExpoRouterParams(route.params, expoParams),
zoomParamNames
);
- const childState = route.state ? removeZoomParamsFromState(route.state) : undefined;
+ let childState = route.state ? removeZoomParamsFromState(route.state) : undefined;
+ if (
+ childState &&
+ didTabChange &&
+ action.payload.state?.__internal__routerActionState === true
+ ) {
+ childState = appendNoAnimationParamToFocusedRoutes(childState);
+ }
return {
...route,
...(childState ? { state: childState } : undefined),
diff --git a/packages/expo-router/src/native-tabs/__tests__/NativeBottomTabsRouter.test.tsx b/packages/expo-router/src/native-tabs/__tests__/NativeBottomTabsRouter.test.tsx
index f977c266e96992..4c302c471593b8 100644
--- a/packages/expo-router/src/native-tabs/__tests__/NativeBottomTabsRouter.test.tsx
+++ b/packages/expo-router/src/native-tabs/__tests__/NativeBottomTabsRouter.test.tsx
@@ -75,18 +75,77 @@ test('post-processes a first navigation to an unvisited tab', () => {
expect(route.name).toBe('second');
expect(affectedRouteKey).toBe(route.key);
- expect(params[INTERNAL_EXPO_ROUTER_NO_ANIMATION_PARAM_NAME]).toBe(true);
+ expect(params).not.toHaveProperty(INTERNAL_EXPO_ROUTER_NO_ANIMATION_PARAM_NAME);
expect(params).not.toHaveProperty(INTERNAL_EXPO_ROUTER_ZOOM_TRANSITION_SCREEN_ID_PARAM_NAME);
expect(params).not.toHaveProperty(INTERNAL_EXPO_ROUTER_ZOOM_TRANSITION_SOURCE_ID_PARAM_NAME);
- expect(route.state?.routes[0]?.params).toEqual({});
+ expect(route.state?.routes[0]?.params).toEqual({
+ [INTERNAL_EXPO_ROUTER_NO_ANIMATION_PARAM_NAME]: true,
+ });
expect(route.state?.routes[0]?.state?.routes[0]?.params).toEqual({
value: 'kept',
+ [INTERNAL_EXPO_ROUTER_NO_ANIMATION_PARAM_NAME]: true,
});
expect(warn).toHaveBeenCalledWith(
'Zoom transition is not supported when navigating between tabs. Falling back to standard navigation transition.'
);
});
+test('does not disable animation when navigating within the focused tab', () => {
+ const router = NativeBottomTabsRouter({});
+ const options: RouterConfigOptions = {
+ routeNames: ['index', 'second'],
+ routeGetIdList: {},
+ };
+ const state = createInitialState>({
+ ...options,
+ parentChain: 'test',
+ });
+
+ const result = router.getStateForAction(
+ state,
+ {
+ type: 'NAVIGATE',
+ payload: {
+ name: 'index',
+ state: {
+ routes: [
+ {
+ name: 'nested',
+ state: {
+ routes: [{ name: 'deep' }],
+ },
+ },
+ ],
+ __internal__routerActionState: true,
+ },
+ },
+ },
+ options
+ )!;
+ const route = result.state.routes[result.state.index!]!;
+
+ expect(route.params).toBeUndefined();
+ expect(route.state?.routes[0]?.params).toBeUndefined();
+ expect(route.state?.routes[0]?.state?.routes[0]?.params).toBeUndefined();
+});
+
+test('does not disable animation for a tab-bar navigation action', () => {
+ const router = NativeBottomTabsRouter({});
+ const options: RouterConfigOptions = {
+ routeNames: ['index', 'second'],
+ routeGetIdList: {},
+ };
+ const state = createInitialState>({
+ ...options,
+ parentChain: 'test',
+ });
+
+ const result = router.getStateForAction(state, CommonActions.navigate('second'), options)!;
+ const route = result.state.routes[result.state.index!]!;
+
+ expect(route.params).toBeUndefined();
+});
+
test('does not treat a screen param as a deep destination', () => {
const router = NativeBottomTabsRouter({});
const options: RouterConfigOptions = {
diff --git a/packages/expo-router/src/native-tabs/__tests__/stack-animation.test.ios.tsx b/packages/expo-router/src/native-tabs/__tests__/stack-animation.test.ios.tsx
new file mode 100644
index 00000000000000..f36ca75ded32e0
--- /dev/null
+++ b/packages/expo-router/src/native-tabs/__tests__/stack-animation.test.ios.tsx
@@ -0,0 +1,94 @@
+import { act } from '@testing-library/react-native';
+import { View } from 'react-native';
+
+import { router } from '../../imperative-api';
+import Stack from '../../layouts/StackClient';
+import { INTERNAL_EXPO_ROUTER_NO_ANIMATION_PARAM_NAME } from '../../navigationParams';
+import { renderRouter, screen } from '../../testing-library';
+import { NativeTabs } from '../NativeTabs';
+
+jest.mock('react-native-screens', () => {
+ const { View }: typeof import('react-native') = jest.requireActual('react-native');
+ const actualScreens = jest.requireActual(
+ 'react-native-screens'
+ ) as typeof import('react-native-screens');
+ return {
+ ...actualScreens,
+ ScreenStackItem: jest.fn((props) => ),
+ Tabs: {
+ ...actualScreens.Tabs,
+ Host: jest.fn(({ children }) => {children}),
+ Screen: jest.fn(({ children }) => {children}),
+ },
+ };
+});
+
+const { ScreenStackItem } = jest.requireMock(
+ 'react-native-screens'
+) as typeof import('react-native-screens');
+const MockedScreenStackItem = ScreenStackItem as jest.MockedFunction;
+type StackItemProps = Parameters[0];
+
+function latestStackItemProps(routeName: string): StackItemProps | undefined {
+ return MockedScreenStackItem.mock.calls
+ .map((call) => call[0])
+ .filter(
+ (props) => typeof props.screenId === 'string' && props.screenId.startsWith(`${routeName}:`)
+ )
+ .at(-1);
+}
+
+const routes = {
+ _layout: () => (
+
+
+
+
+ ),
+ 'first/_layout': () => ,
+ 'first/index': () => ,
+ 'second/_layout': () => ,
+ 'second/index': () => ,
+ 'second/details': () => ,
+ 'second/final': () => ,
+};
+
+beforeEach(() => {
+ MockedScreenStackItem.mockClear();
+});
+
+it('disables animation only for the first stack screen reached across tabs', () => {
+ const result = renderRouter(routes, { initialUrl: '/first' });
+
+ act(() => router.push('/second/details'));
+
+ expect(screen).toHavePathname('/second/details');
+ expect(latestStackItemProps('details')?.stackAnimation).toBe('none');
+
+ const tabsState = result.getRouterState()!.routes[0]!.state!;
+ const secondTab = tabsState.routes.find((route) => route.name === 'second')!;
+ const details = secondTab.state!.routes.find((route) => route.name === 'details')!;
+ expect(details.params).toHaveProperty(INTERNAL_EXPO_ROUTER_NO_ANIMATION_PARAM_NAME, true);
+
+ act(() => latestStackItemProps('details')!.onAppear!({} as never));
+
+ const updatedTabsState = result.getRouterState()!.routes[0]!.state!;
+ const updatedSecondTab = updatedTabsState.routes.find((route) => route.name === 'second')!;
+ const updatedDetails = updatedSecondTab.state!.routes.find((route) => route.name === 'details')!;
+ expect(updatedDetails.params).not.toHaveProperty(INTERNAL_EXPO_ROUTER_NO_ANIMATION_PARAM_NAME);
+
+ MockedScreenStackItem.mockClear();
+ act(() => router.push('/second/final'));
+
+ expect(screen).toHavePathname('/second/final');
+ expect(latestStackItemProps('final')?.stackAnimation).toBeUndefined();
+});
+
+it('keeps the default animation when pushing within the focused tab', () => {
+ renderRouter(routes, { initialUrl: '/second' });
+
+ act(() => router.push('/second/details'));
+
+ expect(screen).toHavePathname('/second/details');
+ expect(latestStackItemProps('details')?.stackAnimation).toBeUndefined();
+});
diff --git a/packages/expo-router/src/react-navigation/__tests__/exports.test.ts b/packages/expo-router/src/react-navigation/__tests__/exports.test.ts
index 1d60222539329a..72c32387674fa3 100644
--- a/packages/expo-router/src/react-navigation/__tests__/exports.test.ts
+++ b/packages/expo-router/src/react-navigation/__tests__/exports.test.ts
@@ -7,6 +7,8 @@ describe('react-navigation/index re-exports', () => {
expect(Index).not.toHaveProperty('createComponentForStaticNavigation');
expect(Index).not.toHaveProperty('createPathConfigForStaticNavigation');
expect(Index).not.toHaveProperty('NavigationContainer');
+ expect(Index).not.toHaveProperty('BaseNavigationContainer');
+ expect(Index).not.toHaveProperty('UNSTABLE_UnhandledLinkingContext');
});
it.each([
diff --git a/packages/expo-router/src/react-navigation/core/BaseNavigationContainer.tsx b/packages/expo-router/src/react-navigation/core/BaseNavigationContainer.tsx
index 0b152bc57d259e..db2d325ea7fe57 100644
--- a/packages/expo-router/src/react-navigation/core/BaseNavigationContainer.tsx
+++ b/packages/expo-router/src/react-navigation/core/BaseNavigationContainer.tsx
@@ -10,13 +10,11 @@ import {
areUrlObjectsEqual,
getRouteInfoFromState,
} from '../../global-state/getRouteInfoFromState';
-import {
- GlobalRoutesWithRemovalPreventedContext,
- RemovalPreventionProvider,
-} from '../../global-state/removalPrevention';
+import { GlobalRoutesWithRemovalPreventedContext } from '../../global-state/removalPrevention';
import { RouteInfoContext } from '../../global-state/routeInfoContext';
import { RouterConfigContext } from '../../global-state/routerConfigContext';
-import { RouterRegistryContext, RouterRegistryProvider } from '../../global-state/routerRegistry';
+import { RouterRegistryContext } from '../../global-state/routerRegistry';
+import { RoutingQueueApiContext } from '../../global-state/routingQueueContext';
import { useNavigationTreeReducer } from '../../global-state/useNavigationTreeReducer';
import { useNavigationTreeReportEvents } from '../../global-state/useNavigationTreeReportEvents';
import useLatestCallback from '../../utils/useLatestCallback';
@@ -69,32 +67,13 @@ const duplicateNameWarnings: string[] = [];
* @param props.ref Ref object which refers to the navigation object containing helper methods.
*/
export function BaseNavigationContainer(props: InternalNavigationContainerProps) {
- const registry = use(RouterRegistryContext);
- const routesWithRemovalPrevented = use(GlobalRoutesWithRemovalPreventedContext);
-
- // TODO(@ubax): investigate if this is really needed
- let content = ;
- if (routesWithRemovalPrevented === undefined) {
- content = {content};
- }
- if (registry === undefined) {
- content = {content};
- }
- return content;
-}
-
-function BaseNavigationContainerInner({
- ref,
- initialState,
- onStateChange,
- onReady,
- UNSTABLE_routeNode,
- theme,
- children,
-}: InternalNavigationContainerProps) {
+ const { ref, initialState, onStateChange, onReady, UNSTABLE_routeNode, theme, children } = props;
const parent = use(NavigationStateContext);
const inheritedRouteInfo = use(RouteInfoContext);
const routerConfig = use(RouterConfigContext);
+ const routingQueue = use(RoutingQueueApiContext);
+ const registry = use(RouterRegistryContext);
+ const routesWithRemovalPrevented = use(GlobalRoutesWithRemovalPreventedContext);
if (!parent.isDefault) {
throw new Error(
@@ -102,8 +81,16 @@ function BaseNavigationContainerInner({
);
}
- const registry = use(RouterRegistryContext)!;
- const routesWithRemovalPrevented = use(GlobalRoutesWithRemovalPreventedContext)!;
+ if (
+ routingQueue === undefined ||
+ registry === undefined ||
+ routesWithRemovalPrevented === undefined
+ ) {
+ throw new Error(
+ 'The navigation container requires the shared routing state provided by `ExpoRoot`. Render the navigation container inside `ExpoRoot`.'
+ );
+ }
+
const emitter = useEventEmitter();
// TODO(@ubax): consider moving this state to ExpoRoot.
diff --git a/packages/expo-router/src/react-navigation/core/__tests__/BaseNavigationContainer.test.ios.tsx b/packages/expo-router/src/react-navigation/core/__tests__/BaseNavigationContainer.test.ios.tsx
index 47adfe718e9d36..5365e67648c668 100644
--- a/packages/expo-router/src/react-navigation/core/__tests__/BaseNavigationContainer.test.ios.tsx
+++ b/packages/expo-router/src/react-navigation/core/__tests__/BaseNavigationContainer.test.ios.tsx
@@ -1,6 +1,7 @@
import { act, render } from '@testing-library/react-native';
import * as React from 'react';
+import { RemovalPreventionProvider } from '../../../global-state/removalPrevention';
import { RouterRegistryProvider } from '../../../global-state/routerRegistry';
import { RoutingQueueProvider } from '../../../global-state/routingQueueContext';
import {
@@ -32,6 +33,16 @@ beforeEach(() => {
require('nanoid/non-secure').__key = 0;
});
+function RootProviders({ children }: React.PropsWithChildren) {
+ return (
+
+
+ {children}
+
+
+ );
+}
+
test('throws when nesting containers', () => {
expect(() =>
render(
@@ -44,12 +55,33 @@ test('throws when nesting containers', () => {
).toThrow("install '@react-navigation/native' and use its NavigationContainer instead.");
});
+test('throws when rendered outside ExpoRoot', () => {
+ expect(() =>
+ render(
+
+ {null}
+
+ )
+ ).toThrow('Render the navigation container inside `ExpoRoot`.');
+});
+
test('rejects a partial initial state', () => {
const initialState = { routes: [{ name: 'home' }] };
expect(() =>
render(
- {null}
+ {null},
+ { wrapper: RootProviders }
)
).toThrow('The navigation container received an incomplete initial state.');
});
@@ -74,7 +106,8 @@ test('rejects a partial nested initial state', () => {
expect(() =>
render(
- {null}
+ {null},
+ { wrapper: RootProviders }
)
).toThrow('The navigation container received an incomplete initial state.');
});
@@ -90,7 +123,8 @@ test('rejects an initial state without an index', () => {
expect(() =>
render(
- {null}
+ {null},
+ { wrapper: RootProviders }
)
).toThrow('The navigation container received an incomplete initial state.');
});
@@ -107,7 +141,8 @@ test('rejects an initial state without route keys', () => {
expect(() =>
render(
- {null}
+ {null},
+ { wrapper: RootProviders }
)
).toThrow('The navigation container received an incomplete initial state.');
});
@@ -136,11 +171,13 @@ test('preserves a complete initial state by identity', () => {
render(
-
-
- {() => null}
-
-
+
+
+
+ {() => null}
+
+
+
);
@@ -205,17 +242,19 @@ test('handle dispatching with ref', () => {
const element = (
-
-
- {() => null}
- {() => null}
- {() => null}
- {() => null}
-
-
+
+
+
+ {() => null}
+ {() => null}
+ {() => null}
+ {() => null}
+
+
+
);
diff --git a/packages/expo-router/src/react-navigation/core/__tests__/__fixtures__/BaseNavigationContainer.tsx b/packages/expo-router/src/react-navigation/core/__tests__/__fixtures__/BaseNavigationContainer.tsx
index 0d5a17808348e5..962308fc3977b3 100644
--- a/packages/expo-router/src/react-navigation/core/__tests__/__fixtures__/BaseNavigationContainer.tsx
+++ b/packages/expo-router/src/react-navigation/core/__tests__/__fixtures__/BaseNavigationContainer.tsx
@@ -1,6 +1,7 @@
import * as React from 'react';
import { nanoid } from 'nanoid/non-secure';
+import { RemovalPreventionProvider } from '../../../../global-state/removalPrevention';
import { RouterRegistryProvider } from '../../../../global-state/routerRegistry';
import { RoutingQueueProvider } from '../../../../global-state/routingQueueContext';
import type { NavigationState, ParamListBase, PartialState } from '../../../routers';
@@ -144,11 +145,13 @@ export function BaseNavigationContainer(props: Props) {
return (
-
+
+
+
);
diff --git a/packages/expo-router/src/react-navigation/core/__tests__/__fixtures__/NavigationContainer.tsx b/packages/expo-router/src/react-navigation/core/__tests__/__fixtures__/NavigationContainer.tsx
index c2a9f9de574045..0123d78a495230 100644
--- a/packages/expo-router/src/react-navigation/core/__tests__/__fixtures__/NavigationContainer.tsx
+++ b/packages/expo-router/src/react-navigation/core/__tests__/__fixtures__/NavigationContainer.tsx
@@ -2,7 +2,9 @@ import * as React from 'react';
import { NavigationContainer as NavigationContainerImpl } from '../../../../fork/NavigationContainer';
import { getStateFromPath, type ResultState } from '../../../../fork/getStateFromPath';
+import { RemovalPreventionProvider } from '../../../../global-state/removalPrevention';
import { RouterRegistryProvider } from '../../../../global-state/routerRegistry';
+import { RoutingQueueProvider } from '../../../../global-state/routingQueueContext';
import type { NavigationState } from '../../../routers';
type Props = React.ComponentProps & {
@@ -32,8 +34,12 @@ export const NavigationContainer = React.forwardRef(function NavigationContainer
: linking;
return (
-
-
-
+
+
+
+
+
+
+
);
});
diff --git a/packages/expo-router/src/react-navigation/core/index.tsx b/packages/expo-router/src/react-navigation/core/index.tsx
index 56e4f5978e6377..566428c0150e85 100644
--- a/packages/expo-router/src/react-navigation/core/index.tsx
+++ b/packages/expo-router/src/react-navigation/core/index.tsx
@@ -1,8 +1,3 @@
-/**
- * @deprecated `ExpoRoot` mounts the navigation container automatically — there is no need
- * to render `BaseNavigationContainer` directly. Will be removed in a future SDK.
- */
-export { BaseNavigationContainer } from './BaseNavigationContainer';
export { createNavigationContainerRef } from './createNavigationContainerRef';
export { createNavigatorFactory } from './createNavigatorFactory';
/**
diff --git a/packages/expo-router/src/react-navigation/native-stack/__tests__/useHeaderConfigProps.test.ios.tsx b/packages/expo-router/src/react-navigation/native-stack/__tests__/useHeaderConfigProps.test.ios.tsx
index 908f7f91f0f4c2..b74c0ffebb3ee8 100644
--- a/packages/expo-router/src/react-navigation/native-stack/__tests__/useHeaderConfigProps.test.ios.tsx
+++ b/packages/expo-router/src/react-navigation/native-stack/__tests__/useHeaderConfigProps.test.ios.tsx
@@ -895,7 +895,7 @@ describe('processBarButtonItems', () => {
// ─── getMenuItem (via menu items) ───────────────────────────────────────────────
// TODO(@ubax): Consider refactoring getMenuItem to be a separate function that can be tested in isolation instead of testing it indirectly via headerLeft items
describe('getMenuItem', () => {
- test('action item: label becomes title, description becomes subtitle', () => {
+ test('action item transforms label, description, and icon', () => {
const onPress = jest.fn();
const { result } = renderHook(() =>
useHeaderConfigProps(
@@ -908,7 +908,13 @@ describe('getMenuItem', () => {
onPress: jest.fn(),
menu: {
items: [
- { type: 'action', label: 'Copy', description: 'Copy to clipboard', onPress },
+ {
+ type: 'action',
+ label: 'Copy',
+ description: 'Copy to clipboard',
+ icon: { type: 'image', source: { uri: 'copy.png' }, tinted: false },
+ onPress,
+ },
],
},
},
@@ -919,6 +925,7 @@ describe('getMenuItem', () => {
const menuItem = (result.current.headerLeftBarButtonItems![0] as any).menu.items[0];
expect(menuItem.title).toBe('Copy');
expect(menuItem.subtitle).toBe('Copy to clipboard');
+ expect(menuItem.icon).toEqual({ type: 'imageSource', imageSource: { uri: 'copy.png' } });
expect(menuItem.label).toBeUndefined();
expect(menuItem.description).toBeUndefined();
});
diff --git a/packages/expo-router/src/react-navigation/native/UnhandledLinkingContext.tsx b/packages/expo-router/src/react-navigation/native/UnhandledLinkingContext.tsx
deleted file mode 100644
index 423b7d9c251cfa..00000000000000
--- a/packages/expo-router/src/react-navigation/native/UnhandledLinkingContext.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-'use client';
-import * as React from 'react';
-
-const MISSING_CONTEXT_ERROR = "Couldn't find an UnhandledLinkingContext context.";
-
-export const UnhandledLinkingContext = React.createContext<{
- lastUnhandledLink: string | undefined;
- setLastUnhandledLink: (lastUnhandledUrl: string | undefined) => void;
-}>({
- get lastUnhandledLink(): any {
- throw new Error(MISSING_CONTEXT_ERROR);
- },
- get setLastUnhandledLink(): any {
- throw new Error(MISSING_CONTEXT_ERROR);
- },
-});
-
-UnhandledLinkingContext.displayName = 'UnhandledLinkingContext';
diff --git a/packages/expo-router/src/react-navigation/native/index.tsx b/packages/expo-router/src/react-navigation/native/index.tsx
index 4bcf652a64373b..f6044cf7cb6eab 100644
--- a/packages/expo-router/src/react-navigation/native/index.tsx
+++ b/packages/expo-router/src/react-navigation/native/index.tsx
@@ -18,7 +18,6 @@ export { DarkTheme } from './theming/DarkTheme';
*/
export { DefaultTheme } from './theming/DefaultTheme';
export * from './types';
-export { UnhandledLinkingContext as UNSTABLE_UnhandledLinkingContext } from './UnhandledLinkingContext';
/**
* @deprecated Use `Link` from `expo-router`. Will be removed in a future SDK.
*/
diff --git a/packages/expo-ui/CHANGELOG.md b/packages/expo-ui/CHANGELOG.md
index 01c19077ca894e..796ed17957877a 100644
--- a/packages/expo-ui/CHANGELOG.md
+++ b/packages/expo-ui/CHANGELOG.md
@@ -10,7 +10,7 @@
### 🎉 New features
-- [Android] Add `cornerRadius` support to dropdown menu
+- [Android] Add `cornerRadius` support to dropdown menu. ([#49515](https://github.com/expo/expo/pull/49515) by [@aaronleopold](https://github.com/aaronleopold))
- [iOS] Added `'default'` as a value for every edge of the `padding` modifier, so a single edge can use the system default padding while the other edges use explicit lengths. ([#48903](https://github.com/expo/expo/pull/48903) by [@Den1Marshall](https://github.com/Den1Marshall))
- [iOS] Added the `Background` component, which draws any view behind another view with an optional `alignment`, matching SwiftUI's `background(alignment:content:)`. ([#48904](https://github.com/expo/expo/pull/48904) by [@Den1Marshall](https://github.com/Den1Marshall))
- [android] Added `maskClip` modifier, exposing Compose's `CarouselItemScope.maskClip` so carousel items keep their shape while the carousel masks them. ([#48852](https://github.com/expo/expo/pull/48852) by [@SchroederNathan](https://github.com/SchroederNathan))
diff --git a/packages/expo-web-browser/CHANGELOG.md b/packages/expo-web-browser/CHANGELOG.md
index 8879700bea92e1..1cedfafb0bff53 100644
--- a/packages/expo-web-browser/CHANGELOG.md
+++ b/packages/expo-web-browser/CHANGELOG.md
@@ -8,6 +8,8 @@
### 🐛 Bug fixes
+- [Android] Fixed `toolbarColor` being applied as the secondary toolbar color, and being discarded entirely when `secondaryToolbarColor` was also set. ([#48900](https://github.com/expo/expo/issues/48900) by [@MUSE-CODE-SPACE](https://github.com/MUSE-CODE-SPACE))
+
### 💡 Others
## 57.0.2 - 2026-07-22
diff --git a/packages/expo-web-browser/android/src/main/java/expo/modules/webbrowser/WebBrowserModule.kt b/packages/expo-web-browser/android/src/main/java/expo/modules/webbrowser/WebBrowserModule.kt
index 1193713e031932..9c28e9e4124150 100644
--- a/packages/expo-web-browser/android/src/main/java/expo/modules/webbrowser/WebBrowserModule.kt
+++ b/packages/expo-web-browser/android/src/main/java/expo/modules/webbrowser/WebBrowserModule.kt
@@ -104,18 +104,14 @@ class WebBrowserModule : Module() {
private fun createCustomTabsIntent(options: OpenBrowserOptions): CustomTabsIntent {
val builder = CustomTabsIntent.Builder()
- val color = options.toolbarColor
- if (color != null) {
+ val toolbarColor = options.toolbarColor
+ val secondaryToolbarColor = options.secondaryToolbarColor
+ if (toolbarColor != null || secondaryToolbarColor != null) {
val params = CustomTabColorSchemeParams.Builder()
- .setSecondaryToolbarColor(color)
- .build()
- builder.setDefaultColorSchemeParams(params)
- }
-
- val secondaryColor = options.secondaryToolbarColor
- if (secondaryColor != null) {
- val params = CustomTabColorSchemeParams.Builder()
- .setSecondaryToolbarColor(secondaryColor)
+ .apply {
+ toolbarColor?.let { setToolbarColor(it) }
+ secondaryToolbarColor?.let { setSecondaryToolbarColor(it) }
+ }
.build()
builder.setDefaultColorSchemeParams(params)
}
diff --git a/packages/expo-web-browser/android/src/test/java/expo/modules/webbrowser/WebBrowserModuleTest.kt b/packages/expo-web-browser/android/src/test/java/expo/modules/webbrowser/WebBrowserModuleTest.kt
index c48f075ecbec1d..1432d49811391a 100644
--- a/packages/expo-web-browser/android/src/test/java/expo/modules/webbrowser/WebBrowserModuleTest.kt
+++ b/packages/expo-web-browser/android/src/test/java/expo/modules/webbrowser/WebBrowserModuleTest.kt
@@ -140,6 +140,33 @@ internal class WebBrowserModuleTest {
assertEquals("com.browser.package", intentSlot.captured.intent.`package`)
}
+ @Test
+ fun testToolbarColorsCorrectlyPassedToIntent() = withWebBrowserMock {
+ // given
+ val toolbarColor = 0xFF361030.toInt()
+ val secondaryToolbarColor = 0xFF1B5E20.toInt()
+ val intentSlot = slot()
+ val mock = mockkCustomTabsActivitiesHelper(defaultCanResolveIntent = true, startIntentSlot = intentSlot)
+ initialize(moduleSpy, customTabsActivitiesHelper = mock)
+
+ // when
+ module.openBrowserAsync(
+ "http://expo.io",
+ OpenBrowserOptions(
+ toolbarColor = toolbarColor,
+ secondaryToolbarColor = secondaryToolbarColor
+ )
+ )
+
+ // then
+ val colorSchemeParams = CustomTabsIntent.getColorSchemeParams(
+ intentSlot.captured.intent,
+ CustomTabsIntent.COLOR_SCHEME_LIGHT
+ )
+ assertEquals(toolbarColor, colorSchemeParams.toolbarColor)
+ assertEquals(secondaryToolbarColor, colorSchemeParams.secondaryToolbarColor)
+ }
+
@Test
fun testActivitiesAndServicesReturnedForValidKeys() = withWebBrowserMock {
// given
diff --git a/packages/expo/CHANGELOG.md b/packages/expo/CHANGELOG.md
index 9fa2f963e99e53..3593163ccbbf83 100644
--- a/packages/expo/CHANGELOG.md
+++ b/packages/expo/CHANGELOG.md
@@ -10,6 +10,7 @@
### 🐛 Bug fixes
+- [iOS] Fix a Hermes JSI crash during reloads where two overlapping `RCTHost` runtime callbacks shared `EXReactNativeFactory`'s app context ivar, letting one callback decorate objects against the other callback's runtime. ([#48576](https://github.com/expo/expo/issues/48576) by [@LizunovSergey](https://github.com/LizunovSergey))
- [iOS] Fix `expo/fetch` streaming race between URLSession delegate callbacks and `startStreaming()` that could deliver an empty body on a 200 response, drop chunks, or leave the body stream open. ([#47796](https://github.com/expo/expo/pull/47796) by [@idoyana](https://github.com/idoyana))
- Fix `expo/fetch` body-stream teardown races: aborting via an `AbortSignal` now rejects the in-flight read with an `AbortError` instead of hanging forever, and late native events no longer throw `The stream is not in a state that permits enqueue`/`close` from outside any consumer `try`/`catch`. ([#47573](https://github.com/expo/expo/pull/47573) by [@idoyana](https://github.com/idoyana))
- [iOS] Fix `expo/fetch` `Response.text()` and `.arrayBuffer()` never settling when the request fails (network drop, `abort()`) after the response was already delivered. ([#48230](https://github.com/expo/expo/pull/48230) by [@zoontek](https://github.com/zoontek))
diff --git a/packages/expo/ios/AppDelegates/ExpoReactNativeFactory.mm b/packages/expo/ios/AppDelegates/ExpoReactNativeFactory.mm
index ed884041d809b1..18364a87c7a821 100644
--- a/packages/expo/ios/AppDelegates/ExpoReactNativeFactory.mm
+++ b/packages/expo/ios/AppDelegates/ExpoReactNativeFactory.mm
@@ -39,7 +39,15 @@ - (void)hostDidStart:(nonnull RCTHost *)host
// [JS thread]
- (void)host:(nonnull RCTHost *)host didInitializeRuntime:(facebook::jsi::Runtime &)runtime
{
- _appContext = [[EXAppContext alloc] init];
+ // Bind this callback to the context it creates. The factory is created once in
+ // `application:didFinishLaunchingWithOptions:` and outlives any single `RCTHost`,
+ // so a reload can run this callback for the incoming host while the outgoing
+ // host's callback is still in flight on its own JS thread. Reading the shared ivar
+ // back after that point can hand this callback the other callback's context, and
+ // decorating objects created for one Hermes runtime against another runtime's
+ // `AppContext.runtime` faults inside JSI.
+ EXAppContext *appContext = [[EXAppContext alloc] init];
+ _appContext = appContext;
// Resolve the React runtime scheduler so ExpoModulesJSI can dispatch work onto
// the JS thread. Doing it here (rather than inside the xcframework) keeps
@@ -59,12 +67,12 @@ - (void)host:(nonnull RCTHost *)host didInitializeRuntime:(facebook::jsi::Runtim
auto scheduler = binding ? binding->getRuntimeScheduler() : nullptr;
void *schedulerHandle = expo::createReactSchedulerHandle(scheduler);
- [_appContext setRuntime:&runtime
- scheduler:schedulerHandle
- dispatch:schedulerHandle ? reinterpret_cast(&expo::dispatchOnReactScheduler) : nullptr];
- [_appContext setHostWrapper:[[EXHostWrapper alloc] initWithHost:host]];
+ [appContext setRuntime:&runtime
+ scheduler:schedulerHandle
+ dispatch:schedulerHandle ? reinterpret_cast(&expo::dispatchOnReactScheduler) : nullptr];
+ [appContext setHostWrapper:[[EXHostWrapper alloc] initWithHost:host]];
- [_appContext registerNativeModules];
+ [appContext registerNativeModules];
}
@end