├── packages └── icons │ ├── .npmignore │ ├── src │ ├── index.tsx │ ├── get-icon-names.ts │ ├── Icon.tsx │ ├── types.ts │ └── icon-mapping.ts │ ├── tsup.config.ts │ ├── .gitignore │ ├── tsconfig.json │ ├── package.json │ └── scripts │ ├── generate-md-icon-table.ts │ └── generate-sf-symbol-mapping.ts ├── apps └── example │ ├── android │ ├── app │ │ ├── src │ │ │ ├── main │ │ │ │ ├── res │ │ │ │ │ ├── values-night │ │ │ │ │ │ └── colors.xml │ │ │ │ │ ├── mipmap-hdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-mdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-xhdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ │ │ ├── ic_launcher.png │ │ │ │ │ │ ├── ic_launcher_round.png │ │ │ │ │ │ └── ic_launcher_foreground.png │ │ │ │ │ ├── drawable-hdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-mdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-xhdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-xxhdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable-xxxhdpi │ │ │ │ │ │ └── splashscreen_image.png │ │ │ │ │ ├── drawable │ │ │ │ │ │ ├── splashscreen.xml │ │ │ │ │ │ └── rn_edit_text_material.xml │ │ │ │ │ ├── values │ │ │ │ │ │ ├── colors.xml │ │ │ │ │ │ ├── strings.xml │ │ │ │ │ │ └── styles.xml │ │ │ │ │ └── mipmap-anydpi-v26 │ │ │ │ │ │ ├── ic_launcher.xml │ │ │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── roninoss │ │ │ │ │ └── icons │ │ │ │ │ ├── MainActivity.java │ │ │ │ │ └── MainApplication.java │ │ │ ├── debug │ │ │ │ ├── AndroidManifest.xml │ │ │ │ └── java │ │ │ │ │ └── com │ │ │ │ │ └── roninoss │ │ │ │ │ └── icons │ │ │ │ │ └── ReactNativeFlipper.java │ │ │ └── release │ │ │ │ └── java │ │ │ │ └── com │ │ │ │ └── roninoss │ │ │ │ └── icons │ │ │ │ └── ReactNativeFlipper.java │ │ ├── debug.keystore │ │ ├── proguard-rules.pro │ │ └── build.gradle │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── .gitignore │ ├── settings.gradle │ ├── build.gradle │ ├── gradle.properties │ ├── gradlew.bat │ └── gradlew │ ├── assets │ ├── icon.png │ ├── favicon.png │ ├── splash.png │ └── adaptive-icon.png │ ├── ios │ ├── Podfile.properties.json │ ├── example │ │ ├── Images.xcassets │ │ │ ├── Contents.json │ │ │ ├── SplashScreen.imageset │ │ │ │ ├── image.png │ │ │ │ └── Contents.json │ │ │ ├── SplashScreenBackground.imageset │ │ │ │ ├── image.png │ │ │ │ └── Contents.json │ │ │ └── AppIcon.appiconset │ │ │ │ ├── App-Icon-1024x1024@1x.png │ │ │ │ └── Contents.json │ │ ├── example-Bridging-Header.h │ │ ├── noop-file.swift │ │ ├── AppDelegate.h │ │ ├── main.m │ │ ├── example.entitlements │ │ ├── Supporting │ │ │ └── Expo.plist │ │ ├── AppDelegate.mm │ │ ├── Info.plist │ │ └── SplashScreen.storyboard │ ├── example.xcworkspace │ │ └── contents.xcworkspacedata │ ├── .gitignore │ ├── .xcode.env │ ├── example.xcodeproj │ │ ├── xcshareddata │ │ │ └── xcschemes │ │ │ │ └── example.xcscheme │ │ └── project.pbxproj │ ├── Podfile │ └── Podfile.lock │ ├── README.md │ ├── tsconfig.json │ ├── babel.config.js │ ├── .expo-shared │ └── assets.json │ ├── .gitignore │ ├── index.js │ ├── metro.config.js │ ├── package.json │ ├── app.json │ └── App.tsx ├── turbo.json ├── package.json ├── .gitignore └── LICENSE /packages/icons/.npmignore: -------------------------------------------------------------------------------- 1 | scripts -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/values-night/colors.xml: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /apps/example/assets/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/assets/icon.png -------------------------------------------------------------------------------- /apps/example/assets/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/assets/favicon.png -------------------------------------------------------------------------------- /apps/example/assets/splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/assets/splash.png -------------------------------------------------------------------------------- /apps/example/android/app/debug.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/debug.keystore -------------------------------------------------------------------------------- /apps/example/assets/adaptive-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/assets/adaptive-icon.png -------------------------------------------------------------------------------- /apps/example/ios/Podfile.properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo.jsEngine": "hermes", 3 | "EX_DEV_CLIENT_NETWORK_INSPECTOR": "true" 4 | } 5 | -------------------------------------------------------------------------------- /apps/example/README.md: -------------------------------------------------------------------------------- 1 | # Native 2 | 3 | A [react-native](https://reactnative.dev/) app built using [expo](https://docs.expo.dev/) 4 | -------------------------------------------------------------------------------- /apps/example/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "expo/tsconfig.base", 3 | "compilerOptions": { 4 | "strict": true 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /apps/example/ios/example/Images.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "expo" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /apps/example/android/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /apps/example/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = function (api) { 2 | api.cache(true); 3 | return { 4 | presets: ["babel-preset-expo"], 5 | }; 6 | }; 7 | -------------------------------------------------------------------------------- /apps/example/ios/example/example-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | // 2 | // Use this file to import your target's public headers that you would like to expose to Swift. 3 | // 4 | -------------------------------------------------------------------------------- /apps/example/ios/example/noop-file.swift: -------------------------------------------------------------------------------- 1 | // 2 | // @generated 3 | // A blank Swift file must be created for native modules with Swift files to work correctly. 4 | // 5 | -------------------------------------------------------------------------------- /packages/icons/src/index.tsx: -------------------------------------------------------------------------------- 1 | export * from './Icon'; 2 | export * from './types'; 3 | export * from './icon-mapping'; 4 | export * from './__generated/sf-symbol-mapping'; 5 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /apps/example/ios/example/AppDelegate.h: -------------------------------------------------------------------------------- 1 | #import 2 | #import 3 | #import 4 | 5 | @interface AppDelegate : EXAppDelegateWrapper 6 | 7 | @end 8 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/drawable-hdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/drawable-hdpi/splashscreen_image.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/drawable-mdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/drawable-mdpi/splashscreen_image.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /apps/example/ios/example/Images.xcassets/SplashScreen.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/ios/example/Images.xcassets/SplashScreen.imageset/image.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/drawable-xhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/drawable-xxhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /apps/example/.expo-shared/assets.json: -------------------------------------------------------------------------------- 1 | { 2 | "12bb71342c6255bbf50437ec8f4441c083f47cdb74bd89160c15e4f43e52a1cb": true, 3 | "40b842e832070c58deac6aa9e08fa459302ee3f9da492c7e77d93d2fbf4a56fd": true 4 | } 5 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/drawable-xxxhdpi/splashscreen_image.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /apps/example/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .expo/ 3 | dist/ 4 | npm-debug.* 5 | *.jks 6 | *.p8 7 | *.p12 8 | *.key 9 | *.mobileprovision 10 | *.orig.* 11 | web-build/ 12 | 13 | # macOS 14 | .DS_Store 15 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/drawable/splashscreen.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /apps/example/ios/example/Images.xcassets/SplashScreenBackground.imageset/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/ios/example/Images.xcassets/SplashScreenBackground.imageset/image.png -------------------------------------------------------------------------------- /apps/example/ios/example/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/roninoss/icons/HEAD/apps/example/ios/example/Images.xcassets/AppIcon.appiconset/App-Icon-1024x1024@1x.png -------------------------------------------------------------------------------- /apps/example/android/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Android/IntelliJ 6 | # 7 | build/ 8 | .idea 9 | .gradle 10 | local.properties 11 | *.iml 12 | *.hprof 13 | 14 | # Bundle artifacts 15 | *.jsbundle 16 | -------------------------------------------------------------------------------- /apps/example/ios/example/main.m: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | #import "AppDelegate.h" 4 | 5 | int main(int argc, char * argv[]) { 6 | @autoreleasepool { 7 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | #ffffff 3 | #FFFFFF 4 | #023c69 5 | #ffffff 6 | -------------------------------------------------------------------------------- /apps/example/android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.1-all.zip 4 | networkTimeout=10000 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | example 3 | contain 4 | false 5 | -------------------------------------------------------------------------------- /apps/example/ios/example/example.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | aps-environment 6 | development 7 | 8 | -------------------------------------------------------------------------------- /apps/example/ios/example.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /apps/example/ios/example/Images.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "filename": "App-Icon-1024x1024@1x.png", 5 | "idiom": "universal", 6 | "platform": "ios", 7 | "size": "1024x1024" 8 | } 9 | ], 10 | "info": { 11 | "version": 1, 12 | "author": "expo" 13 | } 14 | } -------------------------------------------------------------------------------- /apps/example/index.js: -------------------------------------------------------------------------------- 1 | import { registerRootComponent } from "expo"; 2 | 3 | import App from "./App"; 4 | 5 | // registerRootComponent calls AppRegistry.registerComponent('main', () => App); 6 | // It also ensures that whether you load the app in Expo Go or in a native build, 7 | // the environment is set up appropriately 8 | registerRootComponent(App); 9 | -------------------------------------------------------------------------------- /packages/icons/tsup.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig, Options } from 'tsup'; 2 | 3 | export default defineConfig((options: Options) => ({ 4 | entry: { 5 | index: 'src/index.tsx', 6 | }, 7 | banner: { 8 | js: "'use client'", 9 | }, 10 | clean: true, 11 | format: ['cjs', 'esm'], 12 | external: ['react'], 13 | dts: true, 14 | minify: true, 15 | ...options, 16 | })); 17 | -------------------------------------------------------------------------------- /apps/example/android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /turbo.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://turbo.build/schema.json", 3 | "globalDependencies": ["**/.env.*local"], 4 | "pipeline": { 5 | "build": { 6 | "outputs": ["dist/**", ".next/**", "!.next/cache/**"], 7 | "dependsOn": ["^build"] 8 | }, 9 | "dev": { 10 | "cache": false, 11 | "persistent": true 12 | }, 13 | "lint": {}, 14 | "clean": { 15 | "cache": false 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /apps/example/ios/example/Images.xcassets/SplashScreen.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /apps/example/ios/example/Images.xcassets/SplashScreenBackground.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "universal", 5 | "filename": "image.png", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "universal", 10 | "scale": "2x" 11 | }, 12 | { 13 | "idiom": "universal", 14 | "scale": "3x" 15 | } 16 | ], 17 | "info": { 18 | "version": 1, 19 | "author": "expo" 20 | } 21 | } -------------------------------------------------------------------------------- /apps/example/ios/.gitignore: -------------------------------------------------------------------------------- 1 | # OSX 2 | # 3 | .DS_Store 4 | 5 | # Xcode 6 | # 7 | build/ 8 | *.pbxuser 9 | !default.pbxuser 10 | *.mode1v3 11 | !default.mode1v3 12 | *.mode2v3 13 | !default.mode2v3 14 | *.perspectivev3 15 | !default.perspectivev3 16 | xcuserdata 17 | *.xccheckout 18 | *.moved-aside 19 | DerivedData 20 | *.hmap 21 | *.ipa 22 | *.xcuserstate 23 | project.xcworkspace 24 | .xcode.env.local 25 | 26 | # Bundle artifacts 27 | *.jsbundle 28 | 29 | # CocoaPods 30 | /Pods/ 31 | -------------------------------------------------------------------------------- /packages/icons/.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | src/__generated/temp-icon-table.md 4 | 5 | # dependencies 6 | node_modules 7 | .pnp 8 | .pnp.js 9 | 10 | 11 | # misc 12 | .DS_Store 13 | *.pem 14 | 15 | # build 16 | dist 17 | 18 | # debug 19 | npm-debug.log* 20 | yarn-debug.log* 21 | yarn-error.log* 22 | 23 | # local env files 24 | .env.local 25 | .env.development.local 26 | .env.test.local 27 | .env.production.local 28 | 29 | # turbo 30 | .turbo -------------------------------------------------------------------------------- /apps/example/ios/example/Supporting/Expo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | EXUpdatesCheckOnLaunch 6 | ALWAYS 7 | EXUpdatesEnabled 8 | 9 | EXUpdatesLaunchWaitMs 10 | 0 11 | EXUpdatesSDKVersion 12 | 49.0.0 13 | 14 | -------------------------------------------------------------------------------- /apps/example/ios/.xcode.env: -------------------------------------------------------------------------------- 1 | # This `.xcode.env` file is versioned and is used to source the environment 2 | # used when running script phases inside Xcode. 3 | # To customize your local environment, you can create an `.xcode.env.local` 4 | # file that is not versioned. 5 | 6 | # NODE_BINARY variable contains the PATH to the node executable. 7 | # 8 | # Customize the NODE_BINARY variable here. 9 | # For example, to use nvm with brew, add the following line 10 | # . "$(brew --prefix nvm)/nvm.sh" --no-use 11 | export NODE_BINARY=$(command -v node) 12 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "workspaces": [ 4 | "apps/*", 5 | "packages/*" 6 | ], 7 | "scripts": { 8 | "dev": "turbo run dev", 9 | "build": "turbo run build", 10 | "clean": "turbo run clean && rm -rf node_modules", 11 | "format": "prettier --write \"**/*.{ts,tsx,js,jsx,json,md}\" --ignore-path .gitignore" 12 | }, 13 | "devDependencies": { 14 | "prettier": "^3.1.1", 15 | "turbo": "latest" 16 | }, 17 | "packageManager": "yarn@1.22.19", 18 | "engines": { 19 | "node": ">=18" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | node_modules 5 | .pnp 6 | .pnp.js 7 | 8 | # testing 9 | coverage 10 | 11 | # next.js 12 | .next/ 13 | .swc/ 14 | out/ 15 | build 16 | 17 | # expo 18 | .expo 19 | 20 | # misc 21 | .DS_Store 22 | *.pem 23 | dist 24 | 25 | # debug 26 | npm-debug.log* 27 | yarn-debug.log* 28 | yarn-error.log* 29 | 30 | # local env files 31 | .env.local 32 | .env.development.local 33 | .env.test.local 34 | .env.production.local 35 | 36 | # turbo 37 | .turbo 38 | -------------------------------------------------------------------------------- /apps/example/android/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # react-native-reanimated 11 | -keep class com.swmansion.reanimated.** { *; } 12 | -keep class com.facebook.react.turbomodule.** { *; } 13 | 14 | # Add any project specific keep options here: 15 | -------------------------------------------------------------------------------- /apps/example/android/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'example' 2 | 3 | apply from: new File(["node", "--print", "require.resolve('expo/package.json')"].execute(null, rootDir).text.trim(), "../scripts/autolinking.gradle"); 4 | useExpoModules() 5 | 6 | apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); 7 | applyNativeModulesSettingsGradle(settings) 8 | 9 | include ':app' 10 | includeBuild(new File(["node", "--print", "require.resolve('@react-native/gradle-plugin/package.json')"].execute(null, rootDir).text.trim()).getParentFile()) 11 | -------------------------------------------------------------------------------- /apps/example/android/app/src/release/java/com/roninoss/icons/ReactNativeFlipper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | *

This source code is licensed under the MIT license found in the LICENSE file in the root 5 | * directory of this source tree. 6 | */ 7 | package com.roninoss.icons; 8 | 9 | import android.content.Context; 10 | import com.facebook.react.ReactInstanceManager; 11 | 12 | /** 13 | * Class responsible of loading Flipper inside your React Native application. This is the release 14 | * flavor of it so it's empty as we don't want to load Flipper. 15 | */ 16 | public class ReactNativeFlipper { 17 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { 18 | // Do nothing as we don't want to initialize Flipper on Release. 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /packages/icons/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://json.schemastore.org/tsconfig", 3 | "display": "Default", 4 | "compilerOptions": { 5 | "composite": false, 6 | "declaration": true, 7 | "declarationMap": true, 8 | "esModuleInterop": true, 9 | "forceConsistentCasingInFileNames": true, 10 | "inlineSources": false, 11 | "isolatedModules": true, 12 | "moduleResolution": "node", 13 | "noUnusedLocals": false, 14 | "noUnusedParameters": false, 15 | "preserveWatchOutput": true, 16 | "skipLibCheck": true, 17 | "strict": true, 18 | "allowJs": true, 19 | "jsx": "react-native", 20 | "lib": ["DOM", "ESNext"], 21 | "noEmit": true, 22 | "resolveJsonModule": true, 23 | "target": "ESNext" 24 | }, 25 | "include": ["."], 26 | "exclude": ["dist", "build", "node_modules"] 27 | } 28 | -------------------------------------------------------------------------------- /apps/example/metro.config.js: -------------------------------------------------------------------------------- 1 | // Learn more https://docs.expo.io/guides/customizing-metro 2 | const { getDefaultConfig } = require("expo/metro-config"); 3 | const path = require("path"); 4 | 5 | // Find the workspace root, this can be replaced with `find-yarn-workspace-root` 6 | const workspaceRoot = path.resolve(__dirname, "../.."); 7 | const projectRoot = __dirname; 8 | 9 | const config = getDefaultConfig(projectRoot); 10 | 11 | // 1. Watch all files within the monorepo 12 | config.watchFolders = [workspaceRoot]; 13 | // 2. Let Metro know where to resolve packages, and in what order 14 | config.resolver.nodeModulesPaths = [ 15 | path.resolve(projectRoot, "node_modules"), 16 | path.resolve(workspaceRoot, "node_modules"), 17 | ]; 18 | // 3. Force Metro to resolve (sub)dependencies only from the `nodeModulesPaths` 19 | config.resolver.disableHierarchicalLookup = true; 20 | 21 | module.exports = config; 22 | -------------------------------------------------------------------------------- /packages/icons/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "@roninoss/icons", 3 | "version": "0.0.4", 4 | "main": "./dist/index.js", 5 | "types": "./dist/index.d.ts", 6 | "files": [ 7 | "dist" 8 | ], 9 | "scripts": { 10 | "gen": "tsx scripts/generate-sf-symbol-mapping.ts", 11 | "gen:md-icon-table": "tsx scripts/generate-md-icon-table.ts", 12 | "build": "tsup", 13 | "dev": "tsup --watch", 14 | "clean": "rm -rf dist" 15 | }, 16 | "devDependencies": { 17 | "@types/react": "^18.2.46", 18 | "@types/react-native": "^0.73.0", 19 | "react": "^18.2.0", 20 | "react-native": "^0.73.1", 21 | "tsup": "^8.0.1", 22 | "tsx": "^4.7.1", 23 | "typescript": "^5.3.3" 24 | }, 25 | "dependencies": { 26 | "@expo/vector-icons": "^13.0.0", 27 | "sweet-sfsymbols": "^0.7.0" 28 | }, 29 | "peerDependencies": { 30 | "react": "*", 31 | "react-native": "*" 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /apps/example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "example", 3 | "version": "1.0.0", 4 | "private": true, 5 | "main": "index.js", 6 | "scripts": { 7 | "dev": "npx expo run:ios", 8 | "android": "expo run:android", 9 | "ios": "expo run:ios", 10 | "web": "expo start --web", 11 | "eject": "expo eject" 12 | }, 13 | "dependencies": { 14 | "@roninoss/icons": "*", 15 | "expo": "^49.0.21", 16 | "expo-dev-client": "~2.4.13", 17 | "expo-splash-screen": "~0.20.5", 18 | "expo-status-bar": "~1.6.0", 19 | "prettier": "^3.2.5", 20 | "react": "^18.2.0", 21 | "react-dom": "^18.2.0", 22 | "react-native": "0.72.10", 23 | "react-native-web": "^0.19.10" 24 | }, 25 | "devDependencies": { 26 | "@babel/core": "^7.23.7", 27 | "@expo/webpack-config": "^19.0.0", 28 | "@types/react": "^18.2.46", 29 | "@types/react-native": "^0.73.0", 30 | "typescript": "^5.3.3" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /apps/example/app.json: -------------------------------------------------------------------------------- 1 | { 2 | "expo": { 3 | "name": "example", 4 | "slug": "example", 5 | "version": "1.0.0", 6 | "orientation": "portrait", 7 | "icon": "./assets/icon.png", 8 | "userInterfaceStyle": "light", 9 | "splash": { 10 | "image": "./assets/splash.png", 11 | "resizeMode": "contain", 12 | "backgroundColor": "#ffffff" 13 | }, 14 | "updates": { 15 | "fallbackToCacheTimeout": 0 16 | }, 17 | "assetBundlePatterns": [ 18 | "**/*" 19 | ], 20 | "ios": { 21 | "supportsTablet": true, 22 | "bundleIdentifier": "com.roninoss.icons" 23 | }, 24 | "android": { 25 | "adaptiveIcon": { 26 | "foregroundImage": "./assets/adaptive-icon.png", 27 | "backgroundColor": "#FFFFFF" 28 | }, 29 | "package": "com.roninoss.icons" 30 | }, 31 | "web": { 32 | "favicon": "./assets/favicon.png" 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 14 | 17 | -------------------------------------------------------------------------------- /packages/icons/scripts/generate-md-icon-table.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { promises as fs } from 'fs'; 4 | import { ICON_MAPPING } from '../src/icon-mapping'; 5 | 6 | function generateMarkdownTable() { 7 | // Extract keys and sort them alphabetically 8 | const sortedKeys = Object.keys(ICON_MAPPING).sort(); 9 | 10 | // Generate Markdown table header 11 | let markdownTable = '| Material Name | Material Type | SF Symbol Name |\n'; 12 | markdownTable += '| --- | --- | --- |\n'; 13 | 14 | // Generate rows for each key 15 | sortedKeys.forEach((key) => { 16 | const { sfSymbol, type } = ICON_MAPPING[key as 'person']; 17 | markdownTable += `| ${key} | ${type} | ${sfSymbol} |\n`; 18 | }); 19 | 20 | return markdownTable; 21 | } 22 | 23 | async function main() { 24 | try { 25 | await fs.writeFile( 26 | 'src/__generated/temp-icon-table.md', 27 | generateMarkdownTable() 28 | ); 29 | } catch (error) { 30 | console.error(error); 31 | } 32 | } 33 | 34 | main(); 35 | -------------------------------------------------------------------------------- /packages/icons/scripts/generate-sf-symbol-mapping.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import { promises as fs } from 'fs'; 4 | import { ICON_MAPPING } from '../src/icon-mapping'; 5 | 6 | type IosName = (typeof ICON_MAPPING)[keyof typeof ICON_MAPPING]['sfSymbol']; 7 | 8 | type IconMapping = Record< 9 | IosName, 10 | { 11 | type: 'MaterialIcons' | 'MaterialCommunityIcons'; 12 | material: keyof typeof ICON_MAPPING; 13 | } 14 | >; 15 | 16 | async function main() { 17 | const SF_SYMBOL_MAPPING = {} as IconMapping; 18 | for (const key in ICON_MAPPING) { 19 | const subObject = ICON_MAPPING[key as keyof typeof ICON_MAPPING]; 20 | SF_SYMBOL_MAPPING[subObject.sfSymbol as IosName] = { 21 | type: subObject.type, 22 | material: key as keyof typeof ICON_MAPPING, 23 | }; 24 | } 25 | 26 | try { 27 | await fs.writeFile( 28 | 'src/__generated/sf-symbol-mapping.ts', 29 | `export const SF_SYMBOL_MAPPING = ${JSON.stringify(SF_SYMBOL_MAPPING, null, 2)} as const\n` 30 | ); 31 | } catch (error) { 32 | console.error(error); 33 | } 34 | } 35 | 36 | main(); 37 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 roninOSS 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /packages/icons/src/get-icon-names.ts: -------------------------------------------------------------------------------- 1 | import { SF_SYMBOL_MAPPING } from './__generated/sf-symbol-mapping'; 2 | import { ICON_MAPPING } from './icon-mapping'; 3 | import type { 4 | MaterialCommunityIconsProps, 5 | MaterialIconName, 6 | MaterialIconsProps, 7 | SfSymbolIconName, 8 | } from './types'; 9 | 10 | export function getIconNames( 11 | namingScheme: 'sfSymbol' | 'material', 12 | name?: MaterialIconName | SfSymbolIconName 13 | ) { 14 | if (!name) { 15 | return {}; 16 | } 17 | if (namingScheme === 'sfSymbol') { 18 | const sfSymbolName = name as SfSymbolIconName; 19 | const icon = SF_SYMBOL_MAPPING[sfSymbolName]; 20 | if (!icon) { 21 | return {}; 22 | } 23 | return { 24 | sfSymbol: sfSymbolName, 25 | materialIcon: icon.type === 'MaterialIcons' ? icon.material : null, 26 | materialCommunityIcon: 27 | icon.type === 'MaterialCommunityIcons' ? icon.material : null, 28 | }; 29 | } 30 | 31 | const icon = ICON_MAPPING[name as MaterialIconName]; 32 | if (!icon) { 33 | return {}; 34 | } 35 | return { 36 | sfSymbol: icon.sfSymbol, 37 | materialIcon: 38 | icon.type === 'MaterialIcons' 39 | ? (name as MaterialIconsProps['name']) 40 | : null, 41 | materialCommunityIcon: 42 | icon.type === 'MaterialCommunityIcons' 43 | ? (name as MaterialCommunityIconsProps['name']) 44 | : null, 45 | }; 46 | } 47 | -------------------------------------------------------------------------------- /apps/example/android/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | ext { 5 | buildToolsVersion = findProperty('android.buildToolsVersion') ?: '33.0.0' 6 | minSdkVersion = Integer.parseInt(findProperty('android.minSdkVersion') ?: '21') 7 | compileSdkVersion = Integer.parseInt(findProperty('android.compileSdkVersion') ?: '33') 8 | targetSdkVersion = Integer.parseInt(findProperty('android.targetSdkVersion') ?: '33') 9 | kotlinVersion = findProperty('android.kotlinVersion') ?: '1.8.10' 10 | frescoVersion = findProperty('expo.frescoVersion') ?: '2.5.0' 11 | 12 | // We use NDK 23 which has both M1 support and is the side-by-side NDK version from AGP. 13 | ndkVersion = "23.1.7779620" 14 | } 15 | repositories { 16 | google() 17 | mavenCentral() 18 | } 19 | dependencies { 20 | classpath('com.android.tools.build:gradle:7.4.2') 21 | classpath('com.facebook.react:react-native-gradle-plugin') 22 | } 23 | } 24 | 25 | allprojects { 26 | repositories { 27 | maven { 28 | // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm 29 | url(new File(['node', '--print', "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim(), '../android')) 30 | } 31 | maven { 32 | // Android JSC is installed from npm 33 | url(new File(['node', '--print', "require.resolve('jsc-android/package.json')"].execute(null, rootDir).text.trim(), '../dist')) 34 | } 35 | 36 | google() 37 | mavenCentral() 38 | maven { url 'https://www.jitpack.io' } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/res/drawable/rn_edit_text_material.xml: -------------------------------------------------------------------------------- 1 | 2 | 16 | 21 | 22 | 23 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /packages/icons/src/Icon.tsx: -------------------------------------------------------------------------------- 1 | import MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons'; 2 | import MaterialIcons from '@expo/vector-icons/MaterialIcons'; 3 | import * as React from 'react'; 4 | import { Platform } from 'react-native'; 5 | import SFSymbol from 'sweet-sfsymbols'; 6 | import { getIconNames } from './get-icon-names'; 7 | import type { IconProps } from './types'; 8 | 9 | export function Icon({ 10 | name, 11 | color = '#000000', 12 | namingScheme = 'material', 13 | size = 27, 14 | ios, 15 | materialIcon, 16 | }: IconProps) { 17 | const { useMaterialIcon, ...sfSymbolProps } = ios ?? {}; 18 | const iconNames = React.useMemo( 19 | () => getIconNames(namingScheme, name), 20 | [namingScheme, name] 21 | ); 22 | 23 | if (Platform.OS !== 'ios' || useMaterialIcon) { 24 | if (materialIcon?.type === 'MaterialCommunityIcons') { 25 | return ( 26 | 32 | ); 33 | } 34 | if (materialIcon?.type === 'MaterialIcons') { 35 | return ( 36 | 42 | ); 43 | } 44 | if (!name) return null; 45 | const materialProps = materialIcon ?? {}; 46 | return !!iconNames.materialIcon ? ( 47 | 54 | ) : ( 55 | 62 | ); 63 | } 64 | return ( 65 | 72 | ); 73 | } 74 | -------------------------------------------------------------------------------- /apps/example/android/gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | # Default value: -Xmx512m -XX:MaxMetaspaceSize=256m 13 | org.gradle.jvmargs=-Xmx2048m -XX:MaxMetaspaceSize=512m 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | 20 | # AndroidX package structure to make it clearer which packages are bundled with the 21 | # Android operating system, and which are packaged with your app's APK 22 | # https://developer.android.com/topic/libraries/support-library/androidx-rn 23 | android.useAndroidX=true 24 | 25 | # Automatically convert third-party libraries to use AndroidX 26 | android.enableJetifier=true 27 | 28 | # Version of flipper SDK to use with React Native 29 | FLIPPER_VERSION=0.182.0 30 | 31 | # Use this property to specify which architecture you want to build. 32 | # You can also override it from the CLI using 33 | # ./gradlew -PreactNativeArchitectures=x86_64 34 | reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64 35 | 36 | # Use this property to enable support to the new architecture. 37 | # This will allow you to use TurboModules and the Fabric render in 38 | # your application. You should enable this flag either if you want 39 | # to write custom TurboModules/Fabric components OR use libraries that 40 | # are providing them. 41 | newArchEnabled=false 42 | 43 | # Use this property to enable or disable the Hermes JS engine. 44 | # If set to false, you will be using JSC instead. 45 | hermesEnabled=true 46 | 47 | # Enable GIF support in React Native images (~200 B increase) 48 | expo.gif.enabled=true 49 | # Enable webp support in React Native images (~85 KB increase) 50 | expo.webp.enabled=true 51 | # Enable animated webp support (~3.4 MB increase) 52 | # Disabled by default because iOS doesn't support animated webp 53 | expo.webp.animated=false 54 | 55 | # Enable network inspector 56 | EX_DEV_CLIENT_NETWORK_INSPECTOR=true 57 | -------------------------------------------------------------------------------- /packages/icons/src/types.ts: -------------------------------------------------------------------------------- 1 | import type MaterialCommunityIcons from '@expo/vector-icons/MaterialCommunityIcons'; 2 | import type MaterialIcons from '@expo/vector-icons/MaterialIcons'; 3 | import type SFSymbol from 'sweet-sfsymbols'; 4 | import type { SF_SYMBOL_MAPPING } from './__generated/sf-symbol-mapping'; 5 | import type { ICON_MAPPING } from './icon-mapping'; 6 | 7 | export type SFSymbolProps = React.ComponentPropsWithoutRef; 8 | export type MaterialIconsProps = React.ComponentPropsWithoutRef< 9 | typeof MaterialIcons 10 | >; 11 | export type MaterialCommunityIconsProps = React.ComponentPropsWithoutRef< 12 | typeof MaterialCommunityIcons 13 | >; 14 | 15 | type IOSProps = 16 | | { useMaterialIcon: true } 17 | | ({ useMaterialIcon?: false } & SFSymbolProps); 18 | type OptionalIOSProps = { useMaterialIcon?: boolean } & Partial; 19 | 20 | type MaterialProps = 21 | | ({ type: 'MaterialCommunityIcons' } & MaterialCommunityIconsProps) 22 | | ({ type: 'MaterialIcons' } & MaterialIconsProps); 23 | type OptionalMaterialProps = 24 | | ({ type?: 'MaterialCommunityIcons' } & Partial) 25 | | ({ type?: 'MaterialIcons' } & Partial); 26 | 27 | export type MaterialIconName = keyof typeof ICON_MAPPING; 28 | export type SfSymbolIconName = keyof typeof SF_SYMBOL_MAPPING; 29 | 30 | type IconBaseProps = { 31 | namingScheme?: T; 32 | color?: string; 33 | size?: number; 34 | ios?: OptionalIOSProps; 35 | materialIcon?: OptionalMaterialProps; 36 | }; 37 | 38 | type IconWithMaterialNameProps = { 39 | name: MaterialIconName; 40 | } & IconBaseProps; 41 | 42 | type IconWithSfSymbolNameProps = { 43 | name: SfSymbolIconName; 44 | } & IconBaseProps; 45 | 46 | type IconBaseWithOptionalNameProps = { 47 | namingScheme?: T; 48 | color?: string; 49 | size?: number; 50 | ios: IOSProps; 51 | materialIcon: MaterialProps; 52 | }; 53 | 54 | type IconWithOptionalMaterialNameProps = { 55 | name?: MaterialIconName; 56 | } & IconBaseWithOptionalNameProps; 57 | 58 | type IconWithOptionalSfSymbolNameProps = { 59 | name?: SfSymbolIconName; 60 | } & IconBaseWithOptionalNameProps; 61 | 62 | export type IconProps = T extends 'sfSymbol' 63 | ? IconWithSfSymbolNameProps | IconWithOptionalSfSymbolNameProps 64 | : IconWithMaterialNameProps | IconWithOptionalMaterialNameProps; 65 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/java/com/roninoss/icons/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.roninoss.icons; 2 | 3 | import android.os.Build; 4 | import android.os.Bundle; 5 | 6 | import com.facebook.react.ReactActivity; 7 | import com.facebook.react.ReactActivityDelegate; 8 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; 9 | import com.facebook.react.defaults.DefaultReactActivityDelegate; 10 | 11 | import expo.modules.ReactActivityDelegateWrapper; 12 | 13 | public class MainActivity extends ReactActivity { 14 | @Override 15 | protected void onCreate(Bundle savedInstanceState) { 16 | // Set the theme to AppTheme BEFORE onCreate to support 17 | // coloring the background, status bar, and navigation bar. 18 | // This is required for expo-splash-screen. 19 | setTheme(R.style.AppTheme); 20 | super.onCreate(null); 21 | } 22 | 23 | /** 24 | * Returns the name of the main component registered from JavaScript. 25 | * This is used to schedule rendering of the component. 26 | */ 27 | @Override 28 | protected String getMainComponentName() { 29 | return "main"; 30 | } 31 | 32 | /** 33 | * Returns the instance of the {@link ReactActivityDelegate}. Here we use a util class {@link 34 | * DefaultReactActivityDelegate} which allows you to easily enable Fabric and Concurrent React 35 | * (aka React 18) with two boolean flags. 36 | */ 37 | @Override 38 | protected ReactActivityDelegate createReactActivityDelegate() { 39 | return new ReactActivityDelegateWrapper(this, BuildConfig.IS_NEW_ARCHITECTURE_ENABLED, new DefaultReactActivityDelegate( 40 | this, 41 | getMainComponentName(), 42 | // If you opted-in for the New Architecture, we enable the Fabric Renderer. 43 | DefaultNewArchitectureEntryPoint.getFabricEnabled())); 44 | } 45 | 46 | /** 47 | * Align the back button behavior with Android S 48 | * where moving root activities to background instead of finishing activities. 49 | * @see onBackPressed 50 | */ 51 | @Override 52 | public void invokeDefaultOnBackPressed() { 53 | if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { 54 | if (!moveTaskToBack(false)) { 55 | // For non-root activities, use the default implementation to finish them. 56 | super.invokeDefaultOnBackPressed(); 57 | } 58 | return; 59 | } 60 | 61 | // Use the default back button implementation on Android S 62 | // because it's doing more than {@link Activity#moveTaskToBack} in fact. 63 | super.invokeDefaultOnBackPressed(); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /apps/example/App.tsx: -------------------------------------------------------------------------------- 1 | // @refresh reset 2 | 3 | import 'expo-dev-client'; 4 | 5 | import { ICON_MAPPING, Icon } from '@roninoss/icons'; 6 | import { StatusBar } from 'expo-status-bar'; 7 | import * as React from 'react'; 8 | import { 9 | FlatList, 10 | Platform, 11 | Pressable, 12 | StyleSheet, 13 | Text, 14 | View, 15 | } from 'react-native'; 16 | 17 | const data = Object.keys(ICON_MAPPING).map( 18 | (name) => name 19 | ) as (keyof typeof ICON_MAPPING)[]; 20 | 21 | export default function Screen() { 22 | const [type, setType] = React.useState('Sf Symbol'); 23 | return ( 24 | 25 | { 27 | setType(type === 'Sf Symbol' ? 'Material Icon' : 'Sf Symbol'); 28 | }} 29 | style={{ 30 | paddingTop: 60, 31 | marginBottom: 20, 32 | backgroundColor: '#FFFFFFEE', 33 | zIndex: 100, 34 | }} 35 | > 36 | {type} 37 | 38 | {`Tap to change ${Platform.OS === 'ios' ? 'type' : 'naming scheme'}`} 39 | 40 | 41 | item} 44 | numColumns={4} 45 | data={data} 46 | renderItem={({ item }) => ( 47 | 57 | 63 | 64 | 68 | {type === 'Material Icon' ? item : ICON_MAPPING[item].sfSymbol} 69 | 70 | 71 | 72 | )} 73 | style={{ 74 | overflow: 'visible', 75 | }} 76 | /> 77 | 78 | 79 | 80 | ); 81 | } 82 | 83 | const styles = StyleSheet.create({ 84 | container: { 85 | flex: 1, 86 | backgroundColor: '#fff', 87 | gap: 12, 88 | }, 89 | header: { 90 | fontWeight: 'bold', 91 | 92 | fontSize: 36, 93 | marginTop: 20, 94 | textAlign: 'center', 95 | }, 96 | }); 97 | -------------------------------------------------------------------------------- /apps/example/ios/example/AppDelegate.mm: -------------------------------------------------------------------------------- 1 | #import "AppDelegate.h" 2 | 3 | #import 4 | #import 5 | 6 | @implementation AppDelegate 7 | 8 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 9 | { 10 | self.moduleName = @"main"; 11 | 12 | // You can add your custom initial props in the dictionary below. 13 | // They will be passed down to the ViewController used by React Native. 14 | self.initialProps = @{}; 15 | 16 | return [super application:application didFinishLaunchingWithOptions:launchOptions]; 17 | } 18 | 19 | - (NSURL *)sourceURLForBridge:(RCTBridge *)bridge 20 | { 21 | #if DEBUG 22 | return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@".expo/.virtual-metro-entry"]; 23 | #else 24 | return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; 25 | #endif 26 | } 27 | 28 | // Linking API 29 | - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options { 30 | return [super application:application openURL:url options:options] || [RCTLinkingManager application:application openURL:url options:options]; 31 | } 32 | 33 | // Universal Links 34 | - (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray> * _Nullable))restorationHandler { 35 | BOOL result = [RCTLinkingManager application:application continueUserActivity:userActivity restorationHandler:restorationHandler]; 36 | return [super application:application continueUserActivity:userActivity restorationHandler:restorationHandler] || result; 37 | } 38 | 39 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 40 | - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 41 | { 42 | return [super application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken]; 43 | } 44 | 45 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 46 | - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error 47 | { 48 | return [super application:application didFailToRegisterForRemoteNotificationsWithError:error]; 49 | } 50 | 51 | // Explicitly define remote notification delegates to ensure compatibility with some third-party libraries 52 | - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler 53 | { 54 | return [super application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler]; 55 | } 56 | 57 | @end 58 | -------------------------------------------------------------------------------- /apps/example/ios/example/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CADisableMinimumFrameDurationOnPhone 6 | 7 | CFBundleDevelopmentRegion 8 | $(DEVELOPMENT_LANGUAGE) 9 | CFBundleDisplayName 10 | example 11 | CFBundleExecutable 12 | $(EXECUTABLE_NAME) 13 | CFBundleIdentifier 14 | $(PRODUCT_BUNDLE_IDENTIFIER) 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | $(PRODUCT_NAME) 19 | CFBundlePackageType 20 | $(PRODUCT_BUNDLE_PACKAGE_TYPE) 21 | CFBundleShortVersionString 22 | 1.0.0 23 | CFBundleSignature 24 | ???? 25 | CFBundleURLTypes 26 | 27 | 28 | CFBundleURLSchemes 29 | 30 | com.roninoss.icons 31 | 32 | 33 | 34 | CFBundleURLSchemes 35 | 36 | exp+example 37 | 38 | 39 | 40 | CFBundleVersion 41 | 1 42 | LSRequiresIPhoneOS 43 | 44 | NSAppTransportSecurity 45 | 46 | NSAllowsArbitraryLoads 47 | 48 | NSExceptionDomains 49 | 50 | localhost 51 | 52 | NSExceptionAllowsInsecureHTTPLoads 53 | 54 | 55 | 56 | 57 | UILaunchStoryboardName 58 | SplashScreen 59 | UIRequiredDeviceCapabilities 60 | 61 | armv7 62 | 63 | UIRequiresFullScreen 64 | 65 | UIStatusBarStyle 66 | UIStatusBarStyleDefault 67 | UISupportedInterfaceOrientations 68 | 69 | UIInterfaceOrientationPortrait 70 | UIInterfaceOrientationPortraitUpsideDown 71 | 72 | UISupportedInterfaceOrientations~ipad 73 | 74 | UIInterfaceOrientationPortrait 75 | UIInterfaceOrientationPortraitUpsideDown 76 | UIInterfaceOrientationLandscapeLeft 77 | UIInterfaceOrientationLandscapeRight 78 | 79 | UIUserInterfaceStyle 80 | Light 81 | UIViewControllerBasedStatusBarAppearance 82 | 83 | 84 | -------------------------------------------------------------------------------- /apps/example/android/app/src/main/java/com/roninoss/icons/MainApplication.java: -------------------------------------------------------------------------------- 1 | package com.roninoss.icons; 2 | 3 | import android.app.Application; 4 | import android.content.res.Configuration; 5 | import androidx.annotation.NonNull; 6 | 7 | import com.facebook.react.PackageList; 8 | import com.facebook.react.ReactApplication; 9 | import com.facebook.react.ReactNativeHost; 10 | import com.facebook.react.ReactPackage; 11 | import com.facebook.react.config.ReactFeatureFlags; 12 | import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint; 13 | import com.facebook.react.defaults.DefaultReactNativeHost; 14 | import com.facebook.soloader.SoLoader; 15 | 16 | import expo.modules.ApplicationLifecycleDispatcher; 17 | import expo.modules.ReactNativeHostWrapper; 18 | 19 | import java.util.List; 20 | 21 | public class MainApplication extends Application implements ReactApplication { 22 | 23 | private final ReactNativeHost mReactNativeHost = 24 | new ReactNativeHostWrapper(this, new DefaultReactNativeHost(this) { 25 | @Override 26 | public boolean getUseDeveloperSupport() { 27 | return BuildConfig.DEBUG; 28 | } 29 | 30 | @Override 31 | protected List getPackages() { 32 | @SuppressWarnings("UnnecessaryLocalVariable") 33 | List packages = new PackageList(this).getPackages(); 34 | // Packages that cannot be autolinked yet can be added manually here, for example: 35 | // packages.add(new MyReactNativePackage()); 36 | return packages; 37 | } 38 | 39 | @Override 40 | protected String getJSMainModuleName() { 41 | return ".expo/.virtual-metro-entry"; 42 | } 43 | 44 | @Override 45 | protected boolean isNewArchEnabled() { 46 | return BuildConfig.IS_NEW_ARCHITECTURE_ENABLED; 47 | } 48 | 49 | @Override 50 | protected Boolean isHermesEnabled() { 51 | return BuildConfig.IS_HERMES_ENABLED; 52 | } 53 | }); 54 | 55 | @Override 56 | public ReactNativeHost getReactNativeHost() { 57 | return mReactNativeHost; 58 | } 59 | 60 | @Override 61 | public void onCreate() { 62 | super.onCreate(); 63 | SoLoader.init(this, /* native exopackage */ false); 64 | if (!BuildConfig.REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS) { 65 | ReactFeatureFlags.unstable_useRuntimeSchedulerAlways = false; 66 | } 67 | if (BuildConfig.IS_NEW_ARCHITECTURE_ENABLED) { 68 | // If you opted-in for the New Architecture, we load the native entry point for this app. 69 | DefaultNewArchitectureEntryPoint.load(); 70 | } 71 | if (BuildConfig.DEBUG) { 72 | ReactNativeFlipper.initializeFlipper(this, getReactNativeHost().getReactInstanceManager()); 73 | } 74 | ApplicationLifecycleDispatcher.onApplicationCreate(this); 75 | } 76 | 77 | @Override 78 | public void onConfigurationChanged(@NonNull Configuration newConfig) { 79 | super.onConfigurationChanged(newConfig); 80 | ApplicationLifecycleDispatcher.onConfigurationChanged(this, newConfig); 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /apps/example/android/gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%"=="" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%"=="" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if %ERRORLEVEL% equ 0 goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if %ERRORLEVEL% equ 0 goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | set EXIT_CODE=%ERRORLEVEL% 84 | if %EXIT_CODE% equ 0 set EXIT_CODE=1 85 | if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% 86 | exit /b %EXIT_CODE% 87 | 88 | :mainEnd 89 | if "%OS%"=="Windows_NT" endlocal 90 | 91 | :omega 92 | -------------------------------------------------------------------------------- /apps/example/ios/example.xcodeproj/xcshareddata/xcschemes/example.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 33 | 39 | 40 | 41 | 42 | 43 | 53 | 55 | 61 | 62 | 63 | 64 | 70 | 72 | 78 | 79 | 80 | 81 | 83 | 84 | 87 | 88 | 89 | -------------------------------------------------------------------------------- /apps/example/android/app/src/debug/java/com/roninoss/icons/ReactNativeFlipper.java: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Meta Platforms, Inc. and affiliates. 3 | * 4 | *

This source code is licensed under the MIT license found in the LICENSE file in the root 5 | * directory of this source tree. 6 | */ 7 | package com.roninoss.icons; 8 | 9 | import android.content.Context; 10 | import com.facebook.flipper.android.AndroidFlipperClient; 11 | import com.facebook.flipper.android.utils.FlipperUtils; 12 | import com.facebook.flipper.core.FlipperClient; 13 | import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin; 14 | import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin; 15 | import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin; 16 | import com.facebook.flipper.plugins.inspector.DescriptorMapping; 17 | import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin; 18 | import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor; 19 | import com.facebook.flipper.plugins.network.NetworkFlipperPlugin; 20 | import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin; 21 | import com.facebook.react.ReactInstanceEventListener; 22 | import com.facebook.react.ReactInstanceManager; 23 | import com.facebook.react.bridge.ReactContext; 24 | import com.facebook.react.modules.network.NetworkingModule; 25 | import okhttp3.OkHttpClient; 26 | 27 | /** 28 | * Class responsible of loading Flipper inside your React Native application. This is the debug 29 | * flavor of it. Here you can add your own plugins and customize the Flipper setup. 30 | */ 31 | public class ReactNativeFlipper { 32 | public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) { 33 | if (FlipperUtils.shouldEnableFlipper(context)) { 34 | final FlipperClient client = AndroidFlipperClient.getInstance(context); 35 | 36 | client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults())); 37 | client.addPlugin(new DatabasesFlipperPlugin(context)); 38 | client.addPlugin(new SharedPreferencesFlipperPlugin(context)); 39 | client.addPlugin(CrashReporterPlugin.getInstance()); 40 | 41 | NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin(); 42 | NetworkingModule.setCustomClientBuilder( 43 | new NetworkingModule.CustomClientBuilder() { 44 | @Override 45 | public void apply(OkHttpClient.Builder builder) { 46 | builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin)); 47 | } 48 | }); 49 | client.addPlugin(networkFlipperPlugin); 50 | client.start(); 51 | 52 | // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized 53 | // Hence we run if after all native modules have been initialized 54 | ReactContext reactContext = reactInstanceManager.getCurrentReactContext(); 55 | if (reactContext == null) { 56 | reactInstanceManager.addReactInstanceEventListener( 57 | new ReactInstanceEventListener() { 58 | @Override 59 | public void onReactContextInitialized(ReactContext reactContext) { 60 | reactInstanceManager.removeReactInstanceEventListener(this); 61 | reactContext.runOnNativeModulesQueueThread( 62 | new Runnable() { 63 | @Override 64 | public void run() { 65 | client.addPlugin(new FrescoFlipperPlugin()); 66 | } 67 | }); 68 | } 69 | }); 70 | } else { 71 | client.addPlugin(new FrescoFlipperPlugin()); 72 | } 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /apps/example/ios/Podfile: -------------------------------------------------------------------------------- 1 | require File.join(File.dirname(`node --print "require.resolve('expo/package.json')"`), "scripts/autolinking") 2 | require File.join(File.dirname(`node --print "require.resolve('react-native/package.json')"`), "scripts/react_native_pods") 3 | 4 | require 'json' 5 | podfile_properties = JSON.parse(File.read(File.join(__dir__, 'Podfile.properties.json'))) rescue {} 6 | 7 | ENV['RCT_NEW_ARCH_ENABLED'] = podfile_properties['newArchEnabled'] == 'true' ? '1' : '0' 8 | ENV['EX_DEV_CLIENT_NETWORK_INSPECTOR'] = podfile_properties['EX_DEV_CLIENT_NETWORK_INSPECTOR'] 9 | 10 | platform :ios, podfile_properties['ios.deploymentTarget'] || '13.0' 11 | install! 'cocoapods', 12 | :deterministic_uuids => false 13 | 14 | prepare_react_native_project! 15 | 16 | # If you are using a `react-native-flipper` your iOS build will fail when `NO_FLIPPER=1` is set. 17 | # because `react-native-flipper` depends on (FlipperKit,...), which will be excluded. To fix this, 18 | # you can also exclude `react-native-flipper` in `react-native.config.js` 19 | # 20 | # ```js 21 | # module.exports = { 22 | # dependencies: { 23 | # ...(process.env.NO_FLIPPER ? { 'react-native-flipper': { platforms: { ios: null } } } : {}), 24 | # } 25 | # } 26 | # ``` 27 | flipper_config = FlipperConfiguration.disabled 28 | if ENV['NO_FLIPPER'] == '1' then 29 | # Explicitly disabled through environment variables 30 | flipper_config = FlipperConfiguration.disabled 31 | elsif podfile_properties.key?('ios.flipper') then 32 | # Configure Flipper in Podfile.properties.json 33 | if podfile_properties['ios.flipper'] == 'true' then 34 | flipper_config = FlipperConfiguration.enabled(["Debug", "Release"]) 35 | elsif podfile_properties['ios.flipper'] != 'false' then 36 | flipper_config = FlipperConfiguration.enabled(["Debug", "Release"], { 'Flipper' => podfile_properties['ios.flipper'] }) 37 | end 38 | end 39 | 40 | target 'example' do 41 | use_expo_modules! 42 | config = use_native_modules! 43 | 44 | use_frameworks! :linkage => podfile_properties['ios.useFrameworks'].to_sym if podfile_properties['ios.useFrameworks'] 45 | use_frameworks! :linkage => ENV['USE_FRAMEWORKS'].to_sym if ENV['USE_FRAMEWORKS'] 46 | 47 | # Flags change depending on the env values. 48 | flags = get_default_flags() 49 | 50 | use_react_native!( 51 | :path => config[:reactNativePath], 52 | :hermes_enabled => podfile_properties['expo.jsEngine'] == nil || podfile_properties['expo.jsEngine'] == 'hermes', 53 | :fabric_enabled => flags[:fabric_enabled], 54 | # An absolute path to your application root. 55 | :app_path => "#{Pod::Config.instance.installation_root}/..", 56 | # Note that if you have use_frameworks! enabled, Flipper will not work if enabled 57 | :flipper_configuration => flipper_config 58 | ) 59 | 60 | post_install do |installer| 61 | react_native_post_install( 62 | installer, 63 | config[:reactNativePath], 64 | :mac_catalyst_enabled => false 65 | ) 66 | __apply_Xcode_12_5_M1_post_install_workaround(installer) 67 | 68 | # This is necessary for Xcode 14, because it signs resource bundles by default 69 | # when building for devices. 70 | installer.target_installation_results.pod_target_installation_results 71 | .each do |pod_name, target_installation_result| 72 | target_installation_result.resource_bundle_targets.each do |resource_bundle_target| 73 | resource_bundle_target.build_configurations.each do |config| 74 | config.build_settings['CODE_SIGNING_ALLOWED'] = 'NO' 75 | end 76 | end 77 | end 78 | end 79 | 80 | post_integrate do |installer| 81 | begin 82 | expo_patch_react_imports!(installer) 83 | rescue => e 84 | Pod::UI.warn e 85 | end 86 | end 87 | end 88 | -------------------------------------------------------------------------------- /apps/example/ios/example/SplashScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /apps/example/android/app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: "com.android.application" 2 | apply plugin: "com.facebook.react" 3 | 4 | def projectRoot = rootDir.getAbsoluteFile().getParentFile().getAbsolutePath() 5 | 6 | /** 7 | * This is the configuration block to customize your React Native Android app. 8 | * By default you don't need to apply any configuration, just uncomment the lines you need. 9 | */ 10 | react { 11 | entryFile = file(["node", "-e", "require('expo/scripts/resolveAppEntry')", projectRoot, "android", "absolute"].execute(null, rootDir).text.trim()) 12 | reactNativeDir = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() 13 | hermesCommand = new File(["node", "--print", "require.resolve('react-native/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsolutePath() + "/sdks/hermesc/%OS-BIN%/hermesc" 14 | codegenDir = new File(["node", "--print", "require.resolve('@react-native/codegen/package.json')"].execute(null, rootDir).text.trim()).getParentFile().getAbsoluteFile() 15 | 16 | // Use Expo CLI to bundle the app, this ensures the Metro config 17 | // works correctly with Expo projects. 18 | cliFile = new File(["node", "--print", "require.resolve('@expo/cli')"].execute(null, rootDir).text.trim()) 19 | bundleCommand = "export:embed" 20 | 21 | /* Folders */ 22 | // The root of your project, i.e. where "package.json" lives. Default is '..' 23 | // root = file("../") 24 | // The folder where the react-native NPM package is. Default is ../node_modules/react-native 25 | // reactNativeDir = file("../node_modules/react-native") 26 | // The folder where the react-native Codegen package is. Default is ../node_modules/@react-native/codegen 27 | // codegenDir = file("../node_modules/@react-native/codegen") 28 | 29 | /* Variants */ 30 | // The list of variants to that are debuggable. For those we're going to 31 | // skip the bundling of the JS bundle and the assets. By default is just 'debug'. 32 | // If you add flavors like lite, prod, etc. you'll have to list your debuggableVariants. 33 | // debuggableVariants = ["liteDebug", "prodDebug"] 34 | 35 | /* Bundling */ 36 | // A list containing the node command and its flags. Default is just 'node'. 37 | // nodeExecutableAndArgs = ["node"] 38 | 39 | // 40 | // The path to the CLI configuration file. Default is empty. 41 | // bundleConfig = file(../rn-cli.config.js) 42 | // 43 | // The name of the generated asset file containing your JS bundle 44 | // bundleAssetName = "MyApplication.android.bundle" 45 | // 46 | // The entry file for bundle generation. Default is 'index.android.js' or 'index.js' 47 | // entryFile = file("../js/MyApplication.android.js") 48 | // 49 | // A list of extra flags to pass to the 'bundle' commands. 50 | // See https://github.com/react-native-community/cli/blob/main/docs/commands.md#bundle 51 | // extraPackagerArgs = [] 52 | 53 | /* Hermes Commands */ 54 | // The hermes compiler command to run. By default it is 'hermesc' 55 | // hermesCommand = "$rootDir/my-custom-hermesc/bin/hermesc" 56 | // 57 | // The list of flags to pass to the Hermes compiler. By default is "-O", "-output-source-map" 58 | // hermesFlags = ["-O", "-output-source-map"] 59 | } 60 | 61 | /** 62 | * Set this to true to Run Proguard on Release builds to minify the Java bytecode. 63 | */ 64 | def enableProguardInReleaseBuilds = (findProperty('android.enableProguardInReleaseBuilds') ?: false).toBoolean() 65 | 66 | /** 67 | * The preferred build flavor of JavaScriptCore (JSC) 68 | * 69 | * For example, to use the international variant, you can use: 70 | * `def jscFlavor = 'org.webkit:android-jsc-intl:+'` 71 | * 72 | * The international variant includes ICU i18n library and necessary data 73 | * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that 74 | * give correct results when using with locales other than en-US. Note that 75 | * this variant is about 6MiB larger per architecture than default. 76 | */ 77 | def jscFlavor = 'org.webkit:android-jsc:+' 78 | 79 | android { 80 | ndkVersion rootProject.ext.ndkVersion 81 | 82 | compileSdkVersion rootProject.ext.compileSdkVersion 83 | 84 | namespace 'com.roninoss.icons' 85 | defaultConfig { 86 | applicationId 'com.roninoss.icons' 87 | minSdkVersion rootProject.ext.minSdkVersion 88 | targetSdkVersion rootProject.ext.targetSdkVersion 89 | versionCode 1 90 | versionName "1.0.0" 91 | 92 | buildConfigField("boolean", "REACT_NATIVE_UNSTABLE_USE_RUNTIME_SCHEDULER_ALWAYS", (findProperty("reactNative.unstable_useRuntimeSchedulerAlways") ?: true).toString()) 93 | } 94 | signingConfigs { 95 | debug { 96 | storeFile file('debug.keystore') 97 | storePassword 'android' 98 | keyAlias 'androiddebugkey' 99 | keyPassword 'android' 100 | } 101 | } 102 | buildTypes { 103 | debug { 104 | signingConfig signingConfigs.debug 105 | } 106 | release { 107 | // Caution! In production, you need to generate your own keystore file. 108 | // see https://reactnative.dev/docs/signed-apk-android. 109 | signingConfig signingConfigs.debug 110 | shrinkResources (findProperty('android.enableShrinkResourcesInReleaseBuilds')?.toBoolean() ?: false) 111 | minifyEnabled enableProguardInReleaseBuilds 112 | proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" 113 | } 114 | } 115 | } 116 | 117 | // Apply static values from `gradle.properties` to the `android.packagingOptions` 118 | // Accepts values in comma delimited lists, example: 119 | // android.packagingOptions.pickFirsts=/LICENSE,**/picasa.ini 120 | ["pickFirsts", "excludes", "merges", "doNotStrip"].each { prop -> 121 | // Split option: 'foo,bar' -> ['foo', 'bar'] 122 | def options = (findProperty("android.packagingOptions.$prop") ?: "").split(","); 123 | // Trim all elements in place. 124 | for (i in 0.. 0) { 129 | println "android.packagingOptions.$prop += $options ($options.length)" 130 | // Ex: android.packagingOptions.pickFirsts += '**/SCCS/**' 131 | options.each { 132 | android.packagingOptions[prop] += it 133 | } 134 | } 135 | } 136 | 137 | dependencies { 138 | // The version of react-native is set by the React Native Gradle Plugin 139 | implementation("com.facebook.react:react-android") 140 | 141 | def isGifEnabled = (findProperty('expo.gif.enabled') ?: "") == "true"; 142 | def isWebpEnabled = (findProperty('expo.webp.enabled') ?: "") == "true"; 143 | def isWebpAnimatedEnabled = (findProperty('expo.webp.animated') ?: "") == "true"; 144 | def frescoVersion = rootProject.ext.frescoVersion 145 | 146 | // If your app supports Android versions before Ice Cream Sandwich (API level 14) 147 | if (isGifEnabled || isWebpEnabled) { 148 | implementation("com.facebook.fresco:fresco:${frescoVersion}") 149 | implementation("com.facebook.fresco:imagepipeline-okhttp3:${frescoVersion}") 150 | } 151 | 152 | if (isGifEnabled) { 153 | // For animated gif support 154 | implementation("com.facebook.fresco:animated-gif:${frescoVersion}") 155 | } 156 | 157 | if (isWebpEnabled) { 158 | // For webp support 159 | implementation("com.facebook.fresco:webpsupport:${frescoVersion}") 160 | if (isWebpAnimatedEnabled) { 161 | // Animated webp support 162 | implementation("com.facebook.fresco:animated-webp:${frescoVersion}") 163 | } 164 | } 165 | 166 | debugImplementation("com.facebook.flipper:flipper:${FLIPPER_VERSION}") 167 | debugImplementation("com.facebook.flipper:flipper-network-plugin:${FLIPPER_VERSION}") { 168 | exclude group:'com.squareup.okhttp3', module:'okhttp' 169 | } 170 | debugImplementation("com.facebook.flipper:flipper-fresco-plugin:${FLIPPER_VERSION}") 171 | 172 | if (hermesEnabled.toBoolean()) { 173 | implementation("com.facebook.react:hermes-android") 174 | } else { 175 | implementation jscFlavor 176 | } 177 | } 178 | 179 | apply from: new File(["node", "--print", "require.resolve('@react-native-community/cli-platform-android/package.json')"].execute(null, rootDir).text.trim(), "../native_modules.gradle"); 180 | applyNativeModulesAppBuildGradle(project) 181 | -------------------------------------------------------------------------------- /apps/example/android/gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit 84 | 85 | APP_NAME="Gradle" 86 | APP_BASE_NAME=${0##*/} 87 | 88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 118 | 119 | 120 | # Determine the Java command to use to start the JVM. 121 | if [ -n "$JAVA_HOME" ] ; then 122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 | # IBM's JDK on AIX uses strange locations for the executables 124 | JAVACMD=$JAVA_HOME/jre/sh/java 125 | else 126 | JAVACMD=$JAVA_HOME/bin/java 127 | fi 128 | if [ ! -x "$JAVACMD" ] ; then 129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 | 131 | Please set the JAVA_HOME variable in your environment to match the 132 | location of your Java installation." 133 | fi 134 | else 135 | JAVACMD=java 136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | 142 | # Increase the maximum file descriptors if we can. 143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 144 | case $MAX_FD in #( 145 | max*) 146 | MAX_FD=$( ulimit -H -n ) || 147 | warn "Could not query maximum file descriptor limit" 148 | esac 149 | case $MAX_FD in #( 150 | '' | soft) :;; #( 151 | *) 152 | ulimit -n "$MAX_FD" || 153 | warn "Could not set maximum file descriptor limit to $MAX_FD" 154 | esac 155 | fi 156 | 157 | # Collect all arguments for the java command, stacking in reverse order: 158 | # * args from the command line 159 | # * the main class name 160 | # * -classpath 161 | # * -D...appname settings 162 | # * --module-path (only if needed) 163 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 164 | 165 | # For Cygwin or MSYS, switch paths to Windows format before running java 166 | if "$cygwin" || "$msys" ; then 167 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 168 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 169 | 170 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 171 | 172 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 173 | for arg do 174 | if 175 | case $arg in #( 176 | -*) false ;; # don't mess with options #( 177 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 178 | [ -e "$t" ] ;; #( 179 | *) false ;; 180 | esac 181 | then 182 | arg=$( cygpath --path --ignore --mixed "$arg" ) 183 | fi 184 | # Roll the args list around exactly as many times as the number of 185 | # args, so each arg winds up back in the position where it started, but 186 | # possibly modified. 187 | # 188 | # NB: a `for` loop captures its iteration list before it begins, so 189 | # changing the positional parameters here affects neither the number of 190 | # iterations, nor the values presented in `arg`. 191 | shift # remove old arg 192 | set -- "$@" "$arg" # push replacement arg 193 | done 194 | fi 195 | 196 | # Collect all arguments for the java command; 197 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 198 | # shell script including quotes and variable substitutions, so put them in 199 | # double quotes to make sure that they get re-expanded; and 200 | # * put everything else in single quotes, so that it's not re-expanded. 201 | 202 | set -- \ 203 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 204 | -classpath "$CLASSPATH" \ 205 | org.gradle.wrapper.GradleWrapperMain \ 206 | "$@" 207 | 208 | # Stop when "xargs" is not available. 209 | if ! command -v xargs >/dev/null 2>&1 210 | then 211 | die "xargs is not available" 212 | fi 213 | 214 | # Use "xargs" to parse quoted args. 215 | # 216 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 217 | # 218 | # In Bash we could simply go: 219 | # 220 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 221 | # set -- "${ARGS[@]}" "$@" 222 | # 223 | # but POSIX shell has neither arrays nor command substitution, so instead we 224 | # post-process each arg (as a line of input to sed) to backslash-escape any 225 | # character that might be a shell metacharacter, then use eval to reverse 226 | # that process (while maintaining the separation between arguments), and wrap 227 | # the whole thing up as a single "set" statement. 228 | # 229 | # This will of course break if any of these variables contains a newline or 230 | # an unmatched quote. 231 | # 232 | 233 | eval "set -- $( 234 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 235 | xargs -n1 | 236 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 237 | tr '\n' ' ' 238 | )" '"$@"' 239 | 240 | exec "$JAVACMD" "$@" 241 | -------------------------------------------------------------------------------- /apps/example/ios/example.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 46; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.mm */; }; 11 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 12 | 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 13 | 14A5021F1FE44EE4842A077B /* noop-file.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2E48961349C4947A464833D /* noop-file.swift */; }; 14 | 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */; }; 15 | 96905EF65AED1B983A6B3ABC /* libPods-example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-example.a */; }; 16 | B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */; }; 17 | BB2F792D24A3F905000567C9 /* Expo.plist in Resources */ = {isa = PBXBuildFile; fileRef = BB2F792C24A3F905000567C9 /* Expo.plist */; }; 18 | /* End PBXBuildFile section */ 19 | 20 | /* Begin PBXFileReference section */ 21 | 13B07F961A680F5B00A75B9A /* example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 22 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = example/AppDelegate.h; sourceTree = ""; }; 23 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AppDelegate.mm; path = example/AppDelegate.mm; sourceTree = ""; }; 24 | 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = example/Images.xcassets; sourceTree = ""; }; 25 | 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = example/Info.plist; sourceTree = ""; }; 26 | 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = example/main.m; sourceTree = ""; }; 27 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 28 | 6C2E3173556A471DD304B334 /* Pods-example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.debug.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.debug.xcconfig"; sourceTree = ""; }; 29 | 7A4D352CD337FB3A3BF06240 /* Pods-example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-example.release.xcconfig"; path = "Target Support Files/Pods-example/Pods-example.release.xcconfig"; sourceTree = ""; }; 30 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = SplashScreen.storyboard; path = example/SplashScreen.storyboard; sourceTree = ""; }; 31 | BB2F792C24A3F905000567C9 /* Expo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Expo.plist; sourceTree = ""; }; 32 | C2E48961349C4947A464833D /* noop-file.swift */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.swift; name = "noop-file.swift"; path = "example/noop-file.swift"; sourceTree = ""; }; 33 | CDB97DB88CD447DFB05FE06D /* example-Bridging-Header.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = "example-Bridging-Header.h"; path = "example/example-Bridging-Header.h"; sourceTree = ""; }; 34 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 35 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-example/ExpoModulesProvider.swift"; sourceTree = ""; }; 36 | /* End PBXFileReference section */ 37 | 38 | /* Begin PBXFrameworksBuildPhase section */ 39 | 13B07F8C1A680F5B00A75B9A /* Frameworks */ = { 40 | isa = PBXFrameworksBuildPhase; 41 | buildActionMask = 2147483647; 42 | files = ( 43 | 96905EF65AED1B983A6B3ABC /* libPods-example.a in Frameworks */, 44 | ); 45 | runOnlyForDeploymentPostprocessing = 0; 46 | }; 47 | /* End PBXFrameworksBuildPhase section */ 48 | 49 | /* Begin PBXGroup section */ 50 | 13B07FAE1A68108700A75B9A /* example */ = { 51 | isa = PBXGroup; 52 | children = ( 53 | BB2F792B24A3F905000567C9 /* Supporting */, 54 | 13B07FAF1A68108700A75B9A /* AppDelegate.h */, 55 | 13B07FB01A68108700A75B9A /* AppDelegate.mm */, 56 | 13B07FB51A68108700A75B9A /* Images.xcassets */, 57 | 13B07FB61A68108700A75B9A /* Info.plist */, 58 | 13B07FB71A68108700A75B9A /* main.m */, 59 | AA286B85B6C04FC6940260E9 /* SplashScreen.storyboard */, 60 | C2E48961349C4947A464833D /* noop-file.swift */, 61 | CDB97DB88CD447DFB05FE06D /* example-Bridging-Header.h */, 62 | ); 63 | name = example; 64 | sourceTree = ""; 65 | }; 66 | 2D16E6871FA4F8E400B85C8A /* Frameworks */ = { 67 | isa = PBXGroup; 68 | children = ( 69 | ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 70 | 58EEBF8E8E6FB1BC6CAF49B5 /* libPods-example.a */, 71 | ); 72 | name = Frameworks; 73 | sourceTree = ""; 74 | }; 75 | 832341AE1AAA6A7D00B99B32 /* Libraries */ = { 76 | isa = PBXGroup; 77 | children = ( 78 | ); 79 | name = Libraries; 80 | sourceTree = ""; 81 | }; 82 | 83CBB9F61A601CBA00E9B192 = { 83 | isa = PBXGroup; 84 | children = ( 85 | 13B07FAE1A68108700A75B9A /* example */, 86 | 832341AE1AAA6A7D00B99B32 /* Libraries */, 87 | 83CBBA001A601CBA00E9B192 /* Products */, 88 | 2D16E6871FA4F8E400B85C8A /* Frameworks */, 89 | D65327D7A22EEC0BE12398D9 /* Pods */, 90 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */, 91 | ); 92 | indentWidth = 2; 93 | sourceTree = ""; 94 | tabWidth = 2; 95 | usesTabs = 0; 96 | }; 97 | 83CBBA001A601CBA00E9B192 /* Products */ = { 98 | isa = PBXGroup; 99 | children = ( 100 | 13B07F961A680F5B00A75B9A /* example.app */, 101 | ); 102 | name = Products; 103 | sourceTree = ""; 104 | }; 105 | 92DBD88DE9BF7D494EA9DA96 /* example */ = { 106 | isa = PBXGroup; 107 | children = ( 108 | FAC715A2D49A985799AEE119 /* ExpoModulesProvider.swift */, 109 | ); 110 | name = example; 111 | sourceTree = ""; 112 | }; 113 | BB2F792B24A3F905000567C9 /* Supporting */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | BB2F792C24A3F905000567C9 /* Expo.plist */, 117 | ); 118 | name = Supporting; 119 | path = example/Supporting; 120 | sourceTree = ""; 121 | }; 122 | D65327D7A22EEC0BE12398D9 /* Pods */ = { 123 | isa = PBXGroup; 124 | children = ( 125 | 6C2E3173556A471DD304B334 /* Pods-example.debug.xcconfig */, 126 | 7A4D352CD337FB3A3BF06240 /* Pods-example.release.xcconfig */, 127 | ); 128 | path = Pods; 129 | sourceTree = ""; 130 | }; 131 | D7E4C46ADA2E9064B798F356 /* ExpoModulesProviders */ = { 132 | isa = PBXGroup; 133 | children = ( 134 | 92DBD88DE9BF7D494EA9DA96 /* example */, 135 | ); 136 | name = ExpoModulesProviders; 137 | sourceTree = ""; 138 | }; 139 | /* End PBXGroup section */ 140 | 141 | /* Begin PBXNativeTarget section */ 142 | 13B07F861A680F5B00A75B9A /* example */ = { 143 | isa = PBXNativeTarget; 144 | buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */; 145 | buildPhases = ( 146 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */, 147 | FD10A7F022414F080027D42C /* Start Packager */, 148 | 1541F9ECD1A563DCBC7084AE /* [Expo] Configure project */, 149 | 13B07F871A680F5B00A75B9A /* Sources */, 150 | 13B07F8C1A680F5B00A75B9A /* Frameworks */, 151 | 13B07F8E1A680F5B00A75B9A /* Resources */, 152 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 153 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */, 154 | B4937E33A420CDAAE8DF9418 /* [CP] Embed Pods Frameworks */, 155 | ); 156 | buildRules = ( 157 | ); 158 | dependencies = ( 159 | ); 160 | name = example; 161 | productName = example; 162 | productReference = 13B07F961A680F5B00A75B9A /* example.app */; 163 | productType = "com.apple.product-type.application"; 164 | }; 165 | /* End PBXNativeTarget section */ 166 | 167 | /* Begin PBXProject section */ 168 | 83CBB9F71A601CBA00E9B192 /* Project object */ = { 169 | isa = PBXProject; 170 | attributes = { 171 | LastUpgradeCheck = 1130; 172 | TargetAttributes = { 173 | 13B07F861A680F5B00A75B9A = { 174 | LastSwiftMigration = 1250; 175 | }; 176 | }; 177 | }; 178 | buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */; 179 | compatibilityVersion = "Xcode 3.2"; 180 | developmentRegion = en; 181 | hasScannedForEncodings = 0; 182 | knownRegions = ( 183 | en, 184 | Base, 185 | ); 186 | mainGroup = 83CBB9F61A601CBA00E9B192; 187 | productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; 188 | projectDirPath = ""; 189 | projectRoot = ""; 190 | targets = ( 191 | 13B07F861A680F5B00A75B9A /* example */, 192 | ); 193 | }; 194 | /* End PBXProject section */ 195 | 196 | /* Begin PBXResourcesBuildPhase section */ 197 | 13B07F8E1A680F5B00A75B9A /* Resources */ = { 198 | isa = PBXResourcesBuildPhase; 199 | buildActionMask = 2147483647; 200 | files = ( 201 | BB2F792D24A3F905000567C9 /* Expo.plist in Resources */, 202 | 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 203 | 3E461D99554A48A4959DE609 /* SplashScreen.storyboard in Resources */, 204 | ); 205 | runOnlyForDeploymentPostprocessing = 0; 206 | }; 207 | /* End PBXResourcesBuildPhase section */ 208 | 209 | /* Begin PBXShellScriptBuildPhase section */ 210 | 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = { 211 | isa = PBXShellScriptBuildPhase; 212 | buildActionMask = 2147483647; 213 | files = ( 214 | ); 215 | inputPaths = ( 216 | ); 217 | name = "Bundle React Native code and images"; 218 | outputPaths = ( 219 | ); 220 | runOnlyForDeploymentPostprocessing = 0; 221 | shellPath = /bin/sh; 222 | shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\n# The project root by default is one level up from the ios directory\nexport PROJECT_ROOT=\"$PROJECT_DIR\"/..\n\nif [[ \"$CONFIGURATION\" = *Debug* ]]; then\n export SKIP_BUNDLING=1\nfi\nif [[ -z \"$ENTRY_FILE\" ]]; then\n # Set the entry JS file using the bundler's entry resolution.\n export ENTRY_FILE=\"$(\"$NODE_BINARY\" -e \"require('expo/scripts/resolveAppEntry')\" \"$PROJECT_ROOT\" ios relative | tail -n 1)\"\nfi\n\nif [[ -z \"$CLI_PATH\" ]]; then\n # Use Expo CLI\n export CLI_PATH=\"$(\"$NODE_BINARY\" --print \"require.resolve('@expo/cli')\")\"\nfi\nif [[ -z \"$BUNDLE_COMMAND\" ]]; then\n # Default Expo CLI command for bundling\n export BUNDLE_COMMAND=\"export:embed\"\nfi\n\n`\"$NODE_BINARY\" --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/react-native-xcode.sh'\"`\n\n"; 223 | }; 224 | 08A4A3CD28434E44B6B9DE2E /* [CP] Check Pods Manifest.lock */ = { 225 | isa = PBXShellScriptBuildPhase; 226 | buildActionMask = 2147483647; 227 | files = ( 228 | ); 229 | inputFileListPaths = ( 230 | ); 231 | inputPaths = ( 232 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 233 | "${PODS_ROOT}/Manifest.lock", 234 | ); 235 | name = "[CP] Check Pods Manifest.lock"; 236 | outputFileListPaths = ( 237 | ); 238 | outputPaths = ( 239 | "$(DERIVED_FILE_DIR)/Pods-example-checkManifestLockResult.txt", 240 | ); 241 | runOnlyForDeploymentPostprocessing = 0; 242 | shellPath = /bin/sh; 243 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 244 | showEnvVarsInLog = 0; 245 | }; 246 | 1541F9ECD1A563DCBC7084AE /* [Expo] Configure project */ = { 247 | isa = PBXShellScriptBuildPhase; 248 | alwaysOutOfDate = 1; 249 | buildActionMask = 2147483647; 250 | files = ( 251 | ); 252 | inputFileListPaths = ( 253 | ); 254 | inputPaths = ( 255 | ); 256 | name = "[Expo] Configure project"; 257 | outputFileListPaths = ( 258 | ); 259 | outputPaths = ( 260 | ); 261 | runOnlyForDeploymentPostprocessing = 0; 262 | shellPath = /bin/sh; 263 | shellScript = "# This script configures Expo modules and generates the modules provider file.\nbash -l -c \"./Pods/Target\\ Support\\ Files/Pods-example/expo-configure-project.sh\"\n"; 264 | }; 265 | 800E24972A6A228C8D4807E9 /* [CP] Copy Pods Resources */ = { 266 | isa = PBXShellScriptBuildPhase; 267 | buildActionMask = 2147483647; 268 | files = ( 269 | ); 270 | inputPaths = ( 271 | "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh", 272 | "${PODS_CONFIGURATION_BUILD_DIR}/EXConstants/EXConstants.bundle", 273 | "${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle", 274 | "${PODS_CONFIGURATION_BUILD_DIR}/expo-dev-launcher/EXDevLauncher.bundle", 275 | "${PODS_CONFIGURATION_BUILD_DIR}/expo-dev-menu/EXDevMenu.bundle", 276 | ); 277 | name = "[CP] Copy Pods Resources"; 278 | outputPaths = ( 279 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXConstants.bundle", 280 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle", 281 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXDevLauncher.bundle", 282 | "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EXDevMenu.bundle", 283 | ); 284 | runOnlyForDeploymentPostprocessing = 0; 285 | shellPath = /bin/sh; 286 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-resources.sh\"\n"; 287 | showEnvVarsInLog = 0; 288 | }; 289 | B4937E33A420CDAAE8DF9418 /* [CP] Embed Pods Frameworks */ = { 290 | isa = PBXShellScriptBuildPhase; 291 | buildActionMask = 2147483647; 292 | files = ( 293 | ); 294 | inputPaths = ( 295 | "${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh", 296 | "${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/Pre-built/hermes.framework/hermes", 297 | ); 298 | name = "[CP] Embed Pods Frameworks"; 299 | outputPaths = ( 300 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework", 301 | ); 302 | runOnlyForDeploymentPostprocessing = 0; 303 | shellPath = /bin/sh; 304 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-example/Pods-example-frameworks.sh\"\n"; 305 | showEnvVarsInLog = 0; 306 | }; 307 | FD10A7F022414F080027D42C /* Start Packager */ = { 308 | isa = PBXShellScriptBuildPhase; 309 | buildActionMask = 2147483647; 310 | files = ( 311 | ); 312 | inputFileListPaths = ( 313 | ); 314 | inputPaths = ( 315 | ); 316 | name = "Start Packager"; 317 | outputFileListPaths = ( 318 | ); 319 | outputPaths = ( 320 | ); 321 | runOnlyForDeploymentPostprocessing = 0; 322 | shellPath = /bin/sh; 323 | shellScript = "if [[ -f \"$PODS_ROOT/../.xcode.env\" ]]; then\n source \"$PODS_ROOT/../.xcode.env\"\nfi\nif [[ -f \"$PODS_ROOT/../.xcode.env.local\" ]]; then\n source \"$PODS_ROOT/../.xcode.env.local\"\nfi\n\nexport RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > `$NODE_BINARY --print \"require('path').dirname(require.resolve('react-native/package.json')) + '/scripts/.packager.env'\"`\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open `$NODE_BINARY --print \"require('path').dirname(require.resolve('expo/package.json')) + '/scripts/launchPackager.command'\"` || echo \"Can't start packager automatically\"\n fi\nfi\n"; 324 | showEnvVarsInLog = 0; 325 | }; 326 | /* End PBXShellScriptBuildPhase section */ 327 | 328 | /* Begin PBXSourcesBuildPhase section */ 329 | 13B07F871A680F5B00A75B9A /* Sources */ = { 330 | isa = PBXSourcesBuildPhase; 331 | buildActionMask = 2147483647; 332 | files = ( 333 | 13B07FBC1A68108700A75B9A /* AppDelegate.mm in Sources */, 334 | 13B07FC11A68108700A75B9A /* main.m in Sources */, 335 | B18059E884C0ABDD17F3DC3D /* ExpoModulesProvider.swift in Sources */, 336 | 14A5021F1FE44EE4842A077B /* noop-file.swift in Sources */, 337 | ); 338 | runOnlyForDeploymentPostprocessing = 0; 339 | }; 340 | /* End PBXSourcesBuildPhase section */ 341 | 342 | /* Begin XCBuildConfiguration section */ 343 | 13B07F941A680F5B00A75B9A /* Debug */ = { 344 | isa = XCBuildConfiguration; 345 | baseConfigurationReference = 6C2E3173556A471DD304B334 /* Pods-example.debug.xcconfig */; 346 | buildSettings = { 347 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 348 | CLANG_ENABLE_MODULES = YES; 349 | CODE_SIGN_ENTITLEMENTS = example/example.entitlements; 350 | CURRENT_PROJECT_VERSION = 1; 351 | ENABLE_BITCODE = NO; 352 | GCC_PREPROCESSOR_DEFINITIONS = ( 353 | "$(inherited)", 354 | "FB_SONARKIT_ENABLED=1", 355 | ); 356 | INFOPLIST_FILE = example/Info.plist; 357 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 358 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 359 | MARKETING_VERSION = 1.0; 360 | OTHER_LDFLAGS = ( 361 | "$(inherited)", 362 | "-ObjC", 363 | "-lc++", 364 | ); 365 | OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG"; 366 | PRODUCT_BUNDLE_IDENTIFIER = com.roninoss.icons; 367 | PRODUCT_NAME = example; 368 | SWIFT_OBJC_BRIDGING_HEADER = "example/example-Bridging-Header.h"; 369 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 370 | SWIFT_VERSION = 5.0; 371 | TARGETED_DEVICE_FAMILY = "1,2"; 372 | VERSIONING_SYSTEM = "apple-generic"; 373 | }; 374 | name = Debug; 375 | }; 376 | 13B07F951A680F5B00A75B9A /* Release */ = { 377 | isa = XCBuildConfiguration; 378 | baseConfigurationReference = 7A4D352CD337FB3A3BF06240 /* Pods-example.release.xcconfig */; 379 | buildSettings = { 380 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 381 | CLANG_ENABLE_MODULES = YES; 382 | CODE_SIGN_ENTITLEMENTS = example/example.entitlements; 383 | CURRENT_PROJECT_VERSION = 1; 384 | INFOPLIST_FILE = example/Info.plist; 385 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 386 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 387 | MARKETING_VERSION = 1.0; 388 | OTHER_LDFLAGS = ( 389 | "$(inherited)", 390 | "-ObjC", 391 | "-lc++", 392 | ); 393 | OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE"; 394 | PRODUCT_BUNDLE_IDENTIFIER = com.roninoss.icons; 395 | PRODUCT_NAME = example; 396 | SWIFT_OBJC_BRIDGING_HEADER = "example/example-Bridging-Header.h"; 397 | SWIFT_VERSION = 5.0; 398 | TARGETED_DEVICE_FAMILY = "1,2"; 399 | VERSIONING_SYSTEM = "apple-generic"; 400 | }; 401 | name = Release; 402 | }; 403 | 83CBBA201A601CBA00E9B192 /* Debug */ = { 404 | isa = XCBuildConfiguration; 405 | buildSettings = { 406 | ALWAYS_SEARCH_USER_PATHS = NO; 407 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 408 | CLANG_CXX_LANGUAGE_STANDARD = "c++17"; 409 | CLANG_CXX_LIBRARY = "libc++"; 410 | CLANG_ENABLE_MODULES = YES; 411 | CLANG_ENABLE_OBJC_ARC = YES; 412 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 413 | CLANG_WARN_BOOL_CONVERSION = YES; 414 | CLANG_WARN_COMMA = YES; 415 | CLANG_WARN_CONSTANT_CONVERSION = YES; 416 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 417 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 418 | CLANG_WARN_EMPTY_BODY = YES; 419 | CLANG_WARN_ENUM_CONVERSION = YES; 420 | CLANG_WARN_INFINITE_RECURSION = YES; 421 | CLANG_WARN_INT_CONVERSION = YES; 422 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 423 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 424 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 425 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 426 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 427 | CLANG_WARN_STRICT_PROTOTYPES = YES; 428 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 429 | CLANG_WARN_UNREACHABLE_CODE = YES; 430 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 431 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 432 | COPY_PHASE_STRIP = NO; 433 | ENABLE_STRICT_OBJC_MSGSEND = YES; 434 | ENABLE_TESTABILITY = YES; 435 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 436 | GCC_C_LANGUAGE_STANDARD = gnu99; 437 | GCC_DYNAMIC_NO_PIC = NO; 438 | GCC_NO_COMMON_BLOCKS = YES; 439 | GCC_OPTIMIZATION_LEVEL = 0; 440 | GCC_PREPROCESSOR_DEFINITIONS = ( 441 | "DEBUG=1", 442 | "$(inherited)", 443 | _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, 444 | ); 445 | GCC_SYMBOLS_PRIVATE_EXTERN = NO; 446 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 447 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 448 | GCC_WARN_UNDECLARED_SELECTOR = YES; 449 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 450 | GCC_WARN_UNUSED_FUNCTION = YES; 451 | GCC_WARN_UNUSED_VARIABLE = YES; 452 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 453 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 454 | LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 455 | MTL_ENABLE_DEBUG_INFO = YES; 456 | ONLY_ACTIVE_ARCH = YES; 457 | OTHER_CFLAGS = "$(inherited)"; 458 | OTHER_CPLUSPLUSFLAGS = "$(inherited)"; 459 | OTHER_LDFLAGS = ( 460 | "$(inherited)", 461 | " ", 462 | ); 463 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 464 | SDKROOT = iphoneos; 465 | }; 466 | name = Debug; 467 | }; 468 | 83CBBA211A601CBA00E9B192 /* Release */ = { 469 | isa = XCBuildConfiguration; 470 | buildSettings = { 471 | ALWAYS_SEARCH_USER_PATHS = NO; 472 | CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; 473 | CLANG_CXX_LANGUAGE_STANDARD = "c++17"; 474 | CLANG_CXX_LIBRARY = "libc++"; 475 | CLANG_ENABLE_MODULES = YES; 476 | CLANG_ENABLE_OBJC_ARC = YES; 477 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 478 | CLANG_WARN_BOOL_CONVERSION = YES; 479 | CLANG_WARN_COMMA = YES; 480 | CLANG_WARN_CONSTANT_CONVERSION = YES; 481 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 482 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 483 | CLANG_WARN_EMPTY_BODY = YES; 484 | CLANG_WARN_ENUM_CONVERSION = YES; 485 | CLANG_WARN_INFINITE_RECURSION = YES; 486 | CLANG_WARN_INT_CONVERSION = YES; 487 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 488 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 489 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 490 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 491 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 492 | CLANG_WARN_STRICT_PROTOTYPES = YES; 493 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 494 | CLANG_WARN_UNREACHABLE_CODE = YES; 495 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 496 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 497 | COPY_PHASE_STRIP = YES; 498 | ENABLE_NS_ASSERTIONS = NO; 499 | ENABLE_STRICT_OBJC_MSGSEND = YES; 500 | "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = i386; 501 | GCC_C_LANGUAGE_STANDARD = gnu99; 502 | GCC_NO_COMMON_BLOCKS = YES; 503 | GCC_PREPROCESSOR_DEFINITIONS = ( 504 | "$(inherited)", 505 | _LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION, 506 | ); 507 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 508 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 509 | GCC_WARN_UNDECLARED_SELECTOR = YES; 510 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 511 | GCC_WARN_UNUSED_FUNCTION = YES; 512 | GCC_WARN_UNUSED_VARIABLE = YES; 513 | IPHONEOS_DEPLOYMENT_TARGET = 13.0; 514 | LD_RUNPATH_SEARCH_PATHS = "/usr/lib/swift $(inherited)"; 515 | LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\""; 516 | MTL_ENABLE_DEBUG_INFO = NO; 517 | OTHER_CFLAGS = "$(inherited)"; 518 | OTHER_CPLUSPLUSFLAGS = "$(inherited)"; 519 | OTHER_LDFLAGS = ( 520 | "$(inherited)", 521 | " ", 522 | ); 523 | REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native"; 524 | SDKROOT = iphoneos; 525 | VALIDATE_PRODUCT = YES; 526 | }; 527 | name = Release; 528 | }; 529 | /* End XCBuildConfiguration section */ 530 | 531 | /* Begin XCConfigurationList section */ 532 | 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "example" */ = { 533 | isa = XCConfigurationList; 534 | buildConfigurations = ( 535 | 13B07F941A680F5B00A75B9A /* Debug */, 536 | 13B07F951A680F5B00A75B9A /* Release */, 537 | ); 538 | defaultConfigurationIsVisible = 0; 539 | defaultConfigurationName = Release; 540 | }; 541 | 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "example" */ = { 542 | isa = XCConfigurationList; 543 | buildConfigurations = ( 544 | 83CBBA201A601CBA00E9B192 /* Debug */, 545 | 83CBBA211A601CBA00E9B192 /* Release */, 546 | ); 547 | defaultConfigurationIsVisible = 0; 548 | defaultConfigurationName = Release; 549 | }; 550 | /* End XCConfigurationList section */ 551 | }; 552 | rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */; 553 | } 554 | -------------------------------------------------------------------------------- /apps/example/ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - boost (1.76.0) 3 | - DoubleConversion (1.1.6) 4 | - EXApplication (5.3.1): 5 | - ExpoModulesCore 6 | - EXConstants (14.4.2): 7 | - ExpoModulesCore 8 | - EXFileSystem (15.4.5): 9 | - ExpoModulesCore 10 | - EXFont (11.4.0): 11 | - ExpoModulesCore 12 | - EXJSONUtils (0.7.1) 13 | - EXManifests (0.7.2): 14 | - ExpoModulesCore 15 | - Expo (49.0.23): 16 | - ExpoModulesCore 17 | - expo-dev-client (2.4.13): 18 | - EXManifests 19 | - expo-dev-launcher 20 | - expo-dev-menu 21 | - expo-dev-menu-interface 22 | - EXUpdatesInterface 23 | - expo-dev-launcher (2.4.15): 24 | - EXManifests 25 | - expo-dev-launcher/Main (= 2.4.15) 26 | - expo-dev-menu 27 | - expo-dev-menu-interface 28 | - ExpoModulesCore 29 | - EXUpdatesInterface 30 | - RCT-Folly (= 2021.07.22.00) 31 | - React-Core 32 | - React-RCTAppDelegate 33 | - expo-dev-launcher/Main (2.4.15): 34 | - EXManifests 35 | - expo-dev-launcher/Unsafe 36 | - expo-dev-menu 37 | - expo-dev-menu-interface 38 | - ExpoModulesCore 39 | - EXUpdatesInterface 40 | - RCT-Folly (= 2021.07.22.00) 41 | - React-Core 42 | - React-RCTAppDelegate 43 | - expo-dev-launcher/Unsafe (2.4.15): 44 | - EXManifests 45 | - expo-dev-menu 46 | - expo-dev-menu-interface 47 | - ExpoModulesCore 48 | - EXUpdatesInterface 49 | - RCT-Folly (= 2021.07.22.00) 50 | - React-Core 51 | - React-RCTAppDelegate 52 | - expo-dev-menu (3.2.4): 53 | - expo-dev-menu/Main (= 3.2.4) 54 | - RCT-Folly (= 2021.07.22.00) 55 | - React-Core 56 | - expo-dev-menu-interface (1.3.0) 57 | - expo-dev-menu/Main (3.2.4): 58 | - EXManifests 59 | - expo-dev-menu-interface 60 | - expo-dev-menu/Vendored 61 | - ExpoModulesCore 62 | - RCT-Folly (= 2021.07.22.00) 63 | - React-Core 64 | - expo-dev-menu/SafeAreaView (3.2.4): 65 | - ExpoModulesCore 66 | - RCT-Folly (= 2021.07.22.00) 67 | - React-Core 68 | - expo-dev-menu/Vendored (3.2.4): 69 | - expo-dev-menu/SafeAreaView 70 | - RCT-Folly (= 2021.07.22.00) 71 | - React-Core 72 | - ExpoKeepAwake (12.3.0): 73 | - ExpoModulesCore 74 | - ExpoModulesCore (1.5.13): 75 | - RCT-Folly (= 2021.07.22.00) 76 | - React-Core 77 | - React-NativeModulesApple 78 | - React-RCTAppDelegate 79 | - ReactCommon/turbomodule/core 80 | - EXSplashScreen (0.20.5): 81 | - ExpoModulesCore 82 | - RCT-Folly (= 2021.07.22.00) 83 | - React-Core 84 | - EXUpdatesInterface (0.10.1) 85 | - FBLazyVector (0.72.10) 86 | - FBReactNativeSpec (0.72.10): 87 | - RCT-Folly (= 2021.07.22.00) 88 | - RCTRequired (= 0.72.10) 89 | - RCTTypeSafety (= 0.72.10) 90 | - React-Core (= 0.72.10) 91 | - React-jsi (= 0.72.10) 92 | - ReactCommon/turbomodule/core (= 0.72.10) 93 | - fmt (6.2.1) 94 | - glog (0.3.5) 95 | - hermes-engine (0.72.10): 96 | - hermes-engine/Pre-built (= 0.72.10) 97 | - hermes-engine/Pre-built (0.72.10) 98 | - libevent (2.1.12) 99 | - RCT-Folly (2021.07.22.00): 100 | - boost 101 | - DoubleConversion 102 | - fmt (~> 6.2.1) 103 | - glog 104 | - RCT-Folly/Default (= 2021.07.22.00) 105 | - RCT-Folly/Default (2021.07.22.00): 106 | - boost 107 | - DoubleConversion 108 | - fmt (~> 6.2.1) 109 | - glog 110 | - RCT-Folly/Futures (2021.07.22.00): 111 | - boost 112 | - DoubleConversion 113 | - fmt (~> 6.2.1) 114 | - glog 115 | - libevent 116 | - RCTRequired (0.72.10) 117 | - RCTTypeSafety (0.72.10): 118 | - FBLazyVector (= 0.72.10) 119 | - RCTRequired (= 0.72.10) 120 | - React-Core (= 0.72.10) 121 | - React (0.72.10): 122 | - React-Core (= 0.72.10) 123 | - React-Core/DevSupport (= 0.72.10) 124 | - React-Core/RCTWebSocket (= 0.72.10) 125 | - React-RCTActionSheet (= 0.72.10) 126 | - React-RCTAnimation (= 0.72.10) 127 | - React-RCTBlob (= 0.72.10) 128 | - React-RCTImage (= 0.72.10) 129 | - React-RCTLinking (= 0.72.10) 130 | - React-RCTNetwork (= 0.72.10) 131 | - React-RCTSettings (= 0.72.10) 132 | - React-RCTText (= 0.72.10) 133 | - React-RCTVibration (= 0.72.10) 134 | - React-callinvoker (0.72.10) 135 | - React-Codegen (0.72.10): 136 | - DoubleConversion 137 | - FBReactNativeSpec 138 | - glog 139 | - hermes-engine 140 | - RCT-Folly 141 | - RCTRequired 142 | - RCTTypeSafety 143 | - React-Core 144 | - React-jsi 145 | - React-jsiexecutor 146 | - React-NativeModulesApple 147 | - React-rncore 148 | - ReactCommon/turbomodule/bridging 149 | - ReactCommon/turbomodule/core 150 | - React-Core (0.72.10): 151 | - glog 152 | - hermes-engine 153 | - RCT-Folly (= 2021.07.22.00) 154 | - React-Core/Default (= 0.72.10) 155 | - React-cxxreact 156 | - React-hermes 157 | - React-jsi 158 | - React-jsiexecutor 159 | - React-perflogger 160 | - React-runtimeexecutor 161 | - React-utils 162 | - SocketRocket (= 0.6.1) 163 | - Yoga 164 | - React-Core/CoreModulesHeaders (0.72.10): 165 | - glog 166 | - hermes-engine 167 | - RCT-Folly (= 2021.07.22.00) 168 | - React-Core/Default 169 | - React-cxxreact 170 | - React-hermes 171 | - React-jsi 172 | - React-jsiexecutor 173 | - React-perflogger 174 | - React-runtimeexecutor 175 | - React-utils 176 | - SocketRocket (= 0.6.1) 177 | - Yoga 178 | - React-Core/Default (0.72.10): 179 | - glog 180 | - hermes-engine 181 | - RCT-Folly (= 2021.07.22.00) 182 | - React-cxxreact 183 | - React-hermes 184 | - React-jsi 185 | - React-jsiexecutor 186 | - React-perflogger 187 | - React-runtimeexecutor 188 | - React-utils 189 | - SocketRocket (= 0.6.1) 190 | - Yoga 191 | - React-Core/DevSupport (0.72.10): 192 | - glog 193 | - hermes-engine 194 | - RCT-Folly (= 2021.07.22.00) 195 | - React-Core/Default (= 0.72.10) 196 | - React-Core/RCTWebSocket (= 0.72.10) 197 | - React-cxxreact 198 | - React-hermes 199 | - React-jsi 200 | - React-jsiexecutor 201 | - React-jsinspector (= 0.72.10) 202 | - React-perflogger 203 | - React-runtimeexecutor 204 | - React-utils 205 | - SocketRocket (= 0.6.1) 206 | - Yoga 207 | - React-Core/RCTActionSheetHeaders (0.72.10): 208 | - glog 209 | - hermes-engine 210 | - RCT-Folly (= 2021.07.22.00) 211 | - React-Core/Default 212 | - React-cxxreact 213 | - React-hermes 214 | - React-jsi 215 | - React-jsiexecutor 216 | - React-perflogger 217 | - React-runtimeexecutor 218 | - React-utils 219 | - SocketRocket (= 0.6.1) 220 | - Yoga 221 | - React-Core/RCTAnimationHeaders (0.72.10): 222 | - glog 223 | - hermes-engine 224 | - RCT-Folly (= 2021.07.22.00) 225 | - React-Core/Default 226 | - React-cxxreact 227 | - React-hermes 228 | - React-jsi 229 | - React-jsiexecutor 230 | - React-perflogger 231 | - React-runtimeexecutor 232 | - React-utils 233 | - SocketRocket (= 0.6.1) 234 | - Yoga 235 | - React-Core/RCTBlobHeaders (0.72.10): 236 | - glog 237 | - hermes-engine 238 | - RCT-Folly (= 2021.07.22.00) 239 | - React-Core/Default 240 | - React-cxxreact 241 | - React-hermes 242 | - React-jsi 243 | - React-jsiexecutor 244 | - React-perflogger 245 | - React-runtimeexecutor 246 | - React-utils 247 | - SocketRocket (= 0.6.1) 248 | - Yoga 249 | - React-Core/RCTImageHeaders (0.72.10): 250 | - glog 251 | - hermes-engine 252 | - RCT-Folly (= 2021.07.22.00) 253 | - React-Core/Default 254 | - React-cxxreact 255 | - React-hermes 256 | - React-jsi 257 | - React-jsiexecutor 258 | - React-perflogger 259 | - React-runtimeexecutor 260 | - React-utils 261 | - SocketRocket (= 0.6.1) 262 | - Yoga 263 | - React-Core/RCTLinkingHeaders (0.72.10): 264 | - glog 265 | - hermes-engine 266 | - RCT-Folly (= 2021.07.22.00) 267 | - React-Core/Default 268 | - React-cxxreact 269 | - React-hermes 270 | - React-jsi 271 | - React-jsiexecutor 272 | - React-perflogger 273 | - React-runtimeexecutor 274 | - React-utils 275 | - SocketRocket (= 0.6.1) 276 | - Yoga 277 | - React-Core/RCTNetworkHeaders (0.72.10): 278 | - glog 279 | - hermes-engine 280 | - RCT-Folly (= 2021.07.22.00) 281 | - React-Core/Default 282 | - React-cxxreact 283 | - React-hermes 284 | - React-jsi 285 | - React-jsiexecutor 286 | - React-perflogger 287 | - React-runtimeexecutor 288 | - React-utils 289 | - SocketRocket (= 0.6.1) 290 | - Yoga 291 | - React-Core/RCTSettingsHeaders (0.72.10): 292 | - glog 293 | - hermes-engine 294 | - RCT-Folly (= 2021.07.22.00) 295 | - React-Core/Default 296 | - React-cxxreact 297 | - React-hermes 298 | - React-jsi 299 | - React-jsiexecutor 300 | - React-perflogger 301 | - React-runtimeexecutor 302 | - React-utils 303 | - SocketRocket (= 0.6.1) 304 | - Yoga 305 | - React-Core/RCTTextHeaders (0.72.10): 306 | - glog 307 | - hermes-engine 308 | - RCT-Folly (= 2021.07.22.00) 309 | - React-Core/Default 310 | - React-cxxreact 311 | - React-hermes 312 | - React-jsi 313 | - React-jsiexecutor 314 | - React-perflogger 315 | - React-runtimeexecutor 316 | - React-utils 317 | - SocketRocket (= 0.6.1) 318 | - Yoga 319 | - React-Core/RCTVibrationHeaders (0.72.10): 320 | - glog 321 | - hermes-engine 322 | - RCT-Folly (= 2021.07.22.00) 323 | - React-Core/Default 324 | - React-cxxreact 325 | - React-hermes 326 | - React-jsi 327 | - React-jsiexecutor 328 | - React-perflogger 329 | - React-runtimeexecutor 330 | - React-utils 331 | - SocketRocket (= 0.6.1) 332 | - Yoga 333 | - React-Core/RCTWebSocket (0.72.10): 334 | - glog 335 | - hermes-engine 336 | - RCT-Folly (= 2021.07.22.00) 337 | - React-Core/Default (= 0.72.10) 338 | - React-cxxreact 339 | - React-hermes 340 | - React-jsi 341 | - React-jsiexecutor 342 | - React-perflogger 343 | - React-runtimeexecutor 344 | - React-utils 345 | - SocketRocket (= 0.6.1) 346 | - Yoga 347 | - React-CoreModules (0.72.10): 348 | - RCT-Folly (= 2021.07.22.00) 349 | - RCTTypeSafety (= 0.72.10) 350 | - React-Codegen (= 0.72.10) 351 | - React-Core/CoreModulesHeaders (= 0.72.10) 352 | - React-jsi (= 0.72.10) 353 | - React-RCTBlob 354 | - React-RCTImage (= 0.72.10) 355 | - ReactCommon/turbomodule/core (= 0.72.10) 356 | - SocketRocket (= 0.6.1) 357 | - React-cxxreact (0.72.10): 358 | - boost (= 1.76.0) 359 | - DoubleConversion 360 | - glog 361 | - hermes-engine 362 | - RCT-Folly (= 2021.07.22.00) 363 | - React-callinvoker (= 0.72.10) 364 | - React-debug (= 0.72.10) 365 | - React-jsi (= 0.72.10) 366 | - React-jsinspector (= 0.72.10) 367 | - React-logger (= 0.72.10) 368 | - React-perflogger (= 0.72.10) 369 | - React-runtimeexecutor (= 0.72.10) 370 | - React-debug (0.72.10) 371 | - React-hermes (0.72.10): 372 | - DoubleConversion 373 | - glog 374 | - hermes-engine 375 | - RCT-Folly (= 2021.07.22.00) 376 | - RCT-Folly/Futures (= 2021.07.22.00) 377 | - React-cxxreact (= 0.72.10) 378 | - React-jsi 379 | - React-jsiexecutor (= 0.72.10) 380 | - React-jsinspector (= 0.72.10) 381 | - React-perflogger (= 0.72.10) 382 | - React-jsi (0.72.10): 383 | - boost (= 1.76.0) 384 | - DoubleConversion 385 | - glog 386 | - hermes-engine 387 | - RCT-Folly (= 2021.07.22.00) 388 | - React-jsiexecutor (0.72.10): 389 | - DoubleConversion 390 | - glog 391 | - hermes-engine 392 | - RCT-Folly (= 2021.07.22.00) 393 | - React-cxxreact (= 0.72.10) 394 | - React-jsi (= 0.72.10) 395 | - React-perflogger (= 0.72.10) 396 | - React-jsinspector (0.72.10) 397 | - React-logger (0.72.10): 398 | - glog 399 | - React-NativeModulesApple (0.72.10): 400 | - hermes-engine 401 | - React-callinvoker 402 | - React-Core 403 | - React-cxxreact 404 | - React-jsi 405 | - React-runtimeexecutor 406 | - ReactCommon/turbomodule/bridging 407 | - ReactCommon/turbomodule/core 408 | - React-perflogger (0.72.10) 409 | - React-RCTActionSheet (0.72.10): 410 | - React-Core/RCTActionSheetHeaders (= 0.72.10) 411 | - React-RCTAnimation (0.72.10): 412 | - RCT-Folly (= 2021.07.22.00) 413 | - RCTTypeSafety (= 0.72.10) 414 | - React-Codegen (= 0.72.10) 415 | - React-Core/RCTAnimationHeaders (= 0.72.10) 416 | - React-jsi (= 0.72.10) 417 | - ReactCommon/turbomodule/core (= 0.72.10) 418 | - React-RCTAppDelegate (0.72.10): 419 | - RCT-Folly 420 | - RCTRequired 421 | - RCTTypeSafety 422 | - React-Core 423 | - React-CoreModules 424 | - React-hermes 425 | - React-NativeModulesApple 426 | - React-RCTImage 427 | - React-RCTNetwork 428 | - React-runtimescheduler 429 | - ReactCommon/turbomodule/core 430 | - React-RCTBlob (0.72.10): 431 | - hermes-engine 432 | - RCT-Folly (= 2021.07.22.00) 433 | - React-Codegen (= 0.72.10) 434 | - React-Core/RCTBlobHeaders (= 0.72.10) 435 | - React-Core/RCTWebSocket (= 0.72.10) 436 | - React-jsi (= 0.72.10) 437 | - React-RCTNetwork (= 0.72.10) 438 | - ReactCommon/turbomodule/core (= 0.72.10) 439 | - React-RCTImage (0.72.10): 440 | - RCT-Folly (= 2021.07.22.00) 441 | - RCTTypeSafety (= 0.72.10) 442 | - React-Codegen (= 0.72.10) 443 | - React-Core/RCTImageHeaders (= 0.72.10) 444 | - React-jsi (= 0.72.10) 445 | - React-RCTNetwork (= 0.72.10) 446 | - ReactCommon/turbomodule/core (= 0.72.10) 447 | - React-RCTLinking (0.72.10): 448 | - React-Codegen (= 0.72.10) 449 | - React-Core/RCTLinkingHeaders (= 0.72.10) 450 | - React-jsi (= 0.72.10) 451 | - ReactCommon/turbomodule/core (= 0.72.10) 452 | - React-RCTNetwork (0.72.10): 453 | - RCT-Folly (= 2021.07.22.00) 454 | - RCTTypeSafety (= 0.72.10) 455 | - React-Codegen (= 0.72.10) 456 | - React-Core/RCTNetworkHeaders (= 0.72.10) 457 | - React-jsi (= 0.72.10) 458 | - ReactCommon/turbomodule/core (= 0.72.10) 459 | - React-RCTSettings (0.72.10): 460 | - RCT-Folly (= 2021.07.22.00) 461 | - RCTTypeSafety (= 0.72.10) 462 | - React-Codegen (= 0.72.10) 463 | - React-Core/RCTSettingsHeaders (= 0.72.10) 464 | - React-jsi (= 0.72.10) 465 | - ReactCommon/turbomodule/core (= 0.72.10) 466 | - React-RCTText (0.72.10): 467 | - React-Core/RCTTextHeaders (= 0.72.10) 468 | - React-RCTVibration (0.72.10): 469 | - RCT-Folly (= 2021.07.22.00) 470 | - React-Codegen (= 0.72.10) 471 | - React-Core/RCTVibrationHeaders (= 0.72.10) 472 | - React-jsi (= 0.72.10) 473 | - ReactCommon/turbomodule/core (= 0.72.10) 474 | - React-rncore (0.72.10) 475 | - React-runtimeexecutor (0.72.10): 476 | - React-jsi (= 0.72.10) 477 | - React-runtimescheduler (0.72.10): 478 | - glog 479 | - hermes-engine 480 | - RCT-Folly (= 2021.07.22.00) 481 | - React-callinvoker 482 | - React-debug 483 | - React-jsi 484 | - React-runtimeexecutor 485 | - React-utils (0.72.10): 486 | - glog 487 | - RCT-Folly (= 2021.07.22.00) 488 | - React-debug 489 | - ReactCommon/turbomodule/bridging (0.72.10): 490 | - DoubleConversion 491 | - glog 492 | - hermes-engine 493 | - RCT-Folly (= 2021.07.22.00) 494 | - React-callinvoker (= 0.72.10) 495 | - React-cxxreact (= 0.72.10) 496 | - React-jsi (= 0.72.10) 497 | - React-logger (= 0.72.10) 498 | - React-perflogger (= 0.72.10) 499 | - ReactCommon/turbomodule/core (0.72.10): 500 | - DoubleConversion 501 | - glog 502 | - hermes-engine 503 | - RCT-Folly (= 2021.07.22.00) 504 | - React-callinvoker (= 0.72.10) 505 | - React-cxxreact (= 0.72.10) 506 | - React-jsi (= 0.72.10) 507 | - React-logger (= 0.72.10) 508 | - React-perflogger (= 0.72.10) 509 | - SocketRocket (0.6.1) 510 | - SweetSFSymbols (0.7.0): 511 | - ExpoModulesCore 512 | - Yoga (1.14.0) 513 | 514 | DEPENDENCIES: 515 | - boost (from `../node_modules/react-native/third-party-podspecs/boost.podspec`) 516 | - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 517 | - EXApplication (from `../../../node_modules/expo-application/ios`) 518 | - EXConstants (from `../../../node_modules/expo-constants/ios`) 519 | - EXFileSystem (from `../../../node_modules/expo-file-system/ios`) 520 | - EXFont (from `../../../node_modules/expo-font/ios`) 521 | - EXJSONUtils (from `../../../node_modules/expo-json-utils/ios`) 522 | - EXManifests (from `../../../node_modules/expo-manifests/ios`) 523 | - Expo (from `../../../node_modules/expo`) 524 | - expo-dev-client (from `../../../node_modules/expo-dev-client/ios`) 525 | - expo-dev-launcher (from `../../../node_modules/expo-dev-launcher`) 526 | - expo-dev-menu (from `../../../node_modules/expo-dev-menu`) 527 | - expo-dev-menu-interface (from `../../../node_modules/expo-dev-menu-interface/ios`) 528 | - ExpoKeepAwake (from `../../../node_modules/expo-keep-awake/ios`) 529 | - ExpoModulesCore (from `../../../node_modules/expo-modules-core`) 530 | - EXSplashScreen (from `../../../node_modules/expo-splash-screen/ios`) 531 | - EXUpdatesInterface (from `../../../node_modules/expo-updates-interface/ios`) 532 | - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 533 | - FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`) 534 | - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 535 | - hermes-engine (from `../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec`) 536 | - libevent (~> 2.1.12) 537 | - RCT-Folly (from `../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec`) 538 | - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) 539 | - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 540 | - React (from `../node_modules/react-native/`) 541 | - React-callinvoker (from `../node_modules/react-native/ReactCommon/callinvoker`) 542 | - React-Codegen (from `build/generated/ios`) 543 | - React-Core (from `../node_modules/react-native/`) 544 | - React-Core/RCTWebSocket (from `../node_modules/react-native/`) 545 | - React-CoreModules (from `../node_modules/react-native/React/CoreModules`) 546 | - React-cxxreact (from `../node_modules/react-native/ReactCommon/cxxreact`) 547 | - React-debug (from `../node_modules/react-native/ReactCommon/react/debug`) 548 | - React-hermes (from `../node_modules/react-native/ReactCommon/hermes`) 549 | - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 550 | - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 551 | - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) 552 | - React-logger (from `../node_modules/react-native/ReactCommon/logger`) 553 | - React-NativeModulesApple (from `../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios`) 554 | - React-perflogger (from `../node_modules/react-native/ReactCommon/reactperflogger`) 555 | - React-RCTActionSheet (from `../node_modules/react-native/Libraries/ActionSheetIOS`) 556 | - React-RCTAnimation (from `../node_modules/react-native/Libraries/NativeAnimation`) 557 | - React-RCTAppDelegate (from `../node_modules/react-native/Libraries/AppDelegate`) 558 | - React-RCTBlob (from `../node_modules/react-native/Libraries/Blob`) 559 | - React-RCTImage (from `../node_modules/react-native/Libraries/Image`) 560 | - React-RCTLinking (from `../node_modules/react-native/Libraries/LinkingIOS`) 561 | - React-RCTNetwork (from `../node_modules/react-native/Libraries/Network`) 562 | - React-RCTSettings (from `../node_modules/react-native/Libraries/Settings`) 563 | - React-RCTText (from `../node_modules/react-native/Libraries/Text`) 564 | - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) 565 | - React-rncore (from `../node_modules/react-native/ReactCommon`) 566 | - React-runtimeexecutor (from `../node_modules/react-native/ReactCommon/runtimeexecutor`) 567 | - React-runtimescheduler (from `../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler`) 568 | - React-utils (from `../node_modules/react-native/ReactCommon/react/utils`) 569 | - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) 570 | - SweetSFSymbols (from `../../../node_modules/sweet-sfsymbols/ios`) 571 | - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) 572 | 573 | SPEC REPOS: 574 | trunk: 575 | - fmt 576 | - libevent 577 | - SocketRocket 578 | 579 | EXTERNAL SOURCES: 580 | boost: 581 | :podspec: "../node_modules/react-native/third-party-podspecs/boost.podspec" 582 | DoubleConversion: 583 | :podspec: "../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec" 584 | EXApplication: 585 | :path: "../../../node_modules/expo-application/ios" 586 | EXConstants: 587 | :path: "../../../node_modules/expo-constants/ios" 588 | EXFileSystem: 589 | :path: "../../../node_modules/expo-file-system/ios" 590 | EXFont: 591 | :path: "../../../node_modules/expo-font/ios" 592 | EXJSONUtils: 593 | :path: "../../../node_modules/expo-json-utils/ios" 594 | EXManifests: 595 | :path: "../../../node_modules/expo-manifests/ios" 596 | Expo: 597 | :path: "../../../node_modules/expo" 598 | expo-dev-client: 599 | :path: "../../../node_modules/expo-dev-client/ios" 600 | expo-dev-launcher: 601 | :path: "../../../node_modules/expo-dev-launcher" 602 | expo-dev-menu: 603 | :path: "../../../node_modules/expo-dev-menu" 604 | expo-dev-menu-interface: 605 | :path: "../../../node_modules/expo-dev-menu-interface/ios" 606 | ExpoKeepAwake: 607 | :path: "../../../node_modules/expo-keep-awake/ios" 608 | ExpoModulesCore: 609 | :path: "../../../node_modules/expo-modules-core" 610 | EXSplashScreen: 611 | :path: "../../../node_modules/expo-splash-screen/ios" 612 | EXUpdatesInterface: 613 | :path: "../../../node_modules/expo-updates-interface/ios" 614 | FBLazyVector: 615 | :path: "../node_modules/react-native/Libraries/FBLazyVector" 616 | FBReactNativeSpec: 617 | :path: "../node_modules/react-native/React/FBReactNativeSpec" 618 | glog: 619 | :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 620 | hermes-engine: 621 | :podspec: "../node_modules/react-native/sdks/hermes-engine/hermes-engine.podspec" 622 | RCT-Folly: 623 | :podspec: "../node_modules/react-native/third-party-podspecs/RCT-Folly.podspec" 624 | RCTRequired: 625 | :path: "../node_modules/react-native/Libraries/RCTRequired" 626 | RCTTypeSafety: 627 | :path: "../node_modules/react-native/Libraries/TypeSafety" 628 | React: 629 | :path: "../node_modules/react-native/" 630 | React-callinvoker: 631 | :path: "../node_modules/react-native/ReactCommon/callinvoker" 632 | React-Codegen: 633 | :path: build/generated/ios 634 | React-Core: 635 | :path: "../node_modules/react-native/" 636 | React-CoreModules: 637 | :path: "../node_modules/react-native/React/CoreModules" 638 | React-cxxreact: 639 | :path: "../node_modules/react-native/ReactCommon/cxxreact" 640 | React-debug: 641 | :path: "../node_modules/react-native/ReactCommon/react/debug" 642 | React-hermes: 643 | :path: "../node_modules/react-native/ReactCommon/hermes" 644 | React-jsi: 645 | :path: "../node_modules/react-native/ReactCommon/jsi" 646 | React-jsiexecutor: 647 | :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 648 | React-jsinspector: 649 | :path: "../node_modules/react-native/ReactCommon/jsinspector" 650 | React-logger: 651 | :path: "../node_modules/react-native/ReactCommon/logger" 652 | React-NativeModulesApple: 653 | :path: "../node_modules/react-native/ReactCommon/react/nativemodule/core/platform/ios" 654 | React-perflogger: 655 | :path: "../node_modules/react-native/ReactCommon/reactperflogger" 656 | React-RCTActionSheet: 657 | :path: "../node_modules/react-native/Libraries/ActionSheetIOS" 658 | React-RCTAnimation: 659 | :path: "../node_modules/react-native/Libraries/NativeAnimation" 660 | React-RCTAppDelegate: 661 | :path: "../node_modules/react-native/Libraries/AppDelegate" 662 | React-RCTBlob: 663 | :path: "../node_modules/react-native/Libraries/Blob" 664 | React-RCTImage: 665 | :path: "../node_modules/react-native/Libraries/Image" 666 | React-RCTLinking: 667 | :path: "../node_modules/react-native/Libraries/LinkingIOS" 668 | React-RCTNetwork: 669 | :path: "../node_modules/react-native/Libraries/Network" 670 | React-RCTSettings: 671 | :path: "../node_modules/react-native/Libraries/Settings" 672 | React-RCTText: 673 | :path: "../node_modules/react-native/Libraries/Text" 674 | React-RCTVibration: 675 | :path: "../node_modules/react-native/Libraries/Vibration" 676 | React-rncore: 677 | :path: "../node_modules/react-native/ReactCommon" 678 | React-runtimeexecutor: 679 | :path: "../node_modules/react-native/ReactCommon/runtimeexecutor" 680 | React-runtimescheduler: 681 | :path: "../node_modules/react-native/ReactCommon/react/renderer/runtimescheduler" 682 | React-utils: 683 | :path: "../node_modules/react-native/ReactCommon/react/utils" 684 | ReactCommon: 685 | :path: "../node_modules/react-native/ReactCommon" 686 | SweetSFSymbols: 687 | :path: "../../../node_modules/sweet-sfsymbols/ios" 688 | Yoga: 689 | :path: "../node_modules/react-native/ReactCommon/yoga" 690 | 691 | SPEC CHECKSUMS: 692 | boost: 7dcd2de282d72e344012f7d6564d024930a6a440 693 | DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54 694 | EXApplication: 042aa2e3f05258a16962ea1a9914bf288db9c9a1 695 | EXConstants: ce5bbea779da8031ac818c36bea41b10e14d04e1 696 | EXFileSystem: f8b838a880254de42a5a7da20ed5ce12e2697c1b 697 | EXFont: 738c44c390953ebcbab075a4848bfbef025fd9ee 698 | EXJSONUtils: 6802be4282d42b97c51682468ddc1026a06f8276 699 | EXManifests: cf66451b11b2c2f6464917528d792759f7fd6ce0 700 | Expo: ba9abdf444dc6d2c05a82c4c1b51a2400beb6167 701 | expo-dev-client: f350e6ddced33d2c14008c6d70c7904c0cd78b1f 702 | expo-dev-launcher: 3c29a60a0e17e62d02cddcb6c106a25f63f1c75c 703 | expo-dev-menu: c5f789b6228f4176f83a1f47dba54350e63437e1 704 | expo-dev-menu-interface: bda969497e73dadc2663c479e0fa726ca79a306e 705 | ExpoKeepAwake: be4cbd52d9b177cde0fd66daa1913afa3161fc1d 706 | ExpoModulesCore: 30fd49da9efd50f3ab0ca14b7be39b663e09bcf5 707 | EXSplashScreen: c0e7f2d4a640f3b875808ed0b88575538daf6d82 708 | EXUpdatesInterface: 82ed48d417cdcd376c12ca1c2ce390d35500bed6 709 | FBLazyVector: f91d538f197fa71a7d5b77ec2069d49550c0eb96 710 | FBReactNativeSpec: b13d1c23d6ed82d6b66aad7a253edf8ba76c4a4c 711 | fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9 712 | glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b 713 | hermes-engine: 90e4033deb00bee33330a9f15eff0f874bd82f6d 714 | libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913 715 | RCT-Folly: 424b8c9a7a0b9ab2886ffe9c3b041ef628fd4fb1 716 | RCTRequired: b4d3068afa6f52ec5260a8417053b1f1b421483d 717 | RCTTypeSafety: a4551b3d338c96435f63bf06d564055c1d3cc0ac 718 | React: 66caa2a8192a35d7ba466a5fdf5dc06ee4a5f6dd 719 | React-callinvoker: e5b55e46894c2dd1bcdc19d4f82b0f7f631d1237 720 | React-Codegen: 0cf41e00026c5eba61f6bdcabd6e4bf659754f33 721 | React-Core: 2ce84187a00913f287b96753c56c7819ed7d90d5 722 | React-CoreModules: 893e7c5eed1ef8fe9e1ee1d913581c946e55b305 723 | React-cxxreact: 075d98dc664c0e9607cc0c45d41dc052bcc7313b 724 | React-debug: abc6213dcb9eafcf5242cbb194fef4c70c91871f 725 | React-hermes: 133cfa220ef836406f693ed7db56a509032ce433 726 | React-jsi: 9b45fd040d575f8ae6771bf1960641a58eb0bdd4 727 | React-jsiexecutor: 45ef2ec6dcde31b90469175ec76ddac77b91dfc3 728 | React-jsinspector: de0198127395fec3058140a20c045167f761bb16 729 | React-logger: dc3a2b174d79c2da635059212747d8d929b54e06 730 | React-NativeModulesApple: c3e696ff867e4bc212266cbdf7e862e48a0166fd 731 | React-perflogger: 43287389ea08993c300897a46f95cfac04bb6c1a 732 | React-RCTActionSheet: 923afe77f9bb89da7c1f98e2730bfc9dde0eed6d 733 | React-RCTAnimation: afd4d94c5e1f731e32ac99800850be06564ac642 734 | React-RCTAppDelegate: fb2e1447d014557f29e214fe2eb777442f808a3b 735 | React-RCTBlob: 167e2c6c3643f093058c51e76ecc653fc8236033 736 | React-RCTImage: 867de82a17630a08a3fa64b0cd6677dd19bf6eaf 737 | React-RCTLinking: 885dde8bc5d397c3e72c76315f1f9b5030b3a70e 738 | React-RCTNetwork: efec71102220b96ac8605d0253debd859ca0c817 739 | React-RCTSettings: 077065d0a4e925b017fe8538afa574d8fb52391f 740 | React-RCTText: 7adddb518ac362b2398fedf0c64105e0dab29441 741 | React-RCTVibration: de6b7218e415d82788e0965f278dddb2ef88b372 742 | React-rncore: f0d8c23481a6c263a343fa7fd3816d943754b720 743 | React-runtimeexecutor: 2b2c09edbca4c9a667428e8c93959f66b3b53140 744 | React-runtimescheduler: 6ca43e8deadf01ff06b3f01abf8f0e4d508e23c3 745 | React-utils: 372b83030a74347331636909278bf0a60ec30d59 746 | ReactCommon: 38824bfffaf4c51fbe03a2730b4fd874ef34d67b 747 | SocketRocket: f32cd54efbe0f095c4d7594881e52619cfe80b17 748 | SweetSFSymbols: 75e9d61f69fd934b0a32d87f739360a8eda22f4c 749 | Yoga: d0003f849d2b5224c072cef6568b540d8bb15cd3 750 | 751 | PODFILE CHECKSUM: 329483eb6daf495a1eab8db2c188f13aaa25dcf9 752 | 753 | COCOAPODS: 1.15.2 754 | -------------------------------------------------------------------------------- /packages/icons/src/icon-mapping.ts: -------------------------------------------------------------------------------- 1 | export const ICON_MAPPING = { 2 | 'format-font': { 3 | sfSymbol: 'textformat', 4 | type: 'MaterialCommunityIcons' 5 | }, 6 | 'format-size': { 7 | sfSymbol: 'textformat.size', 8 | type: 'MaterialIcons', 9 | }, 10 | 'tray-arrow-up': { 11 | sfSymbol: 'square.and.arrow.up', 12 | type: 'MaterialCommunityIcons', 13 | }, 14 | 'tray-arrow-down': { 15 | sfSymbol: 'square.and.arrow.down', 16 | type: 'MaterialCommunityIcons', 17 | }, 18 | 'arrow-down-bold-box-outline': { 19 | sfSymbol: 'square.and.arrow.down.on.square', 20 | type: 'MaterialCommunityIcons', 21 | }, 22 | 'arrow-down-bold-box': { 23 | sfSymbol: 'square.and.arrow.down.on.square.fill', 24 | type: 'MaterialCommunityIcons', 25 | }, 26 | 'arrow-right-bold-box-outline': { 27 | sfSymbol: 'rectangle.portrait.and.arrow.right', 28 | type: 'MaterialCommunityIcons', 29 | }, 30 | 'arrow-right-bold-box': { 31 | sfSymbol: 'rectangle.portrait.and.arrow.right.fill', 32 | type: 'MaterialCommunityIcons', 33 | }, 34 | pencil: { 35 | sfSymbol: 'pencil', 36 | type: 'MaterialCommunityIcons', 37 | }, 38 | 'pencil-circle-outline': { 39 | sfSymbol: 'pencil.circle', 40 | type: 'MaterialCommunityIcons', 41 | }, 42 | 'pencil-circle': { 43 | sfSymbol: 'pencil.circle.fill', 44 | type: 'MaterialCommunityIcons', 45 | }, 46 | 'pencil-off': { 47 | sfSymbol: 'pencil.slash', 48 | type: 'MaterialCommunityIcons', 49 | }, 50 | 'progress-pencil': { 51 | sfSymbol: 'pencil.line', 52 | type: 'MaterialCommunityIcons', 53 | }, 54 | eraser: { 55 | sfSymbol: 'eraser', 56 | type: 'MaterialCommunityIcons', 57 | }, 58 | 'eraser-variant': { 59 | sfSymbol: 'eraser.fill', 60 | type: 'MaterialCommunityIcons', 61 | }, 62 | 'pencil-box-outline': { 63 | sfSymbol: 'square.and.pencil', 64 | type: 'MaterialCommunityIcons', 65 | }, 66 | 'drive-file-rename-outline': { 67 | sfSymbol: 'rectangle.and.pencil.and.ellipsis', 68 | type: 'MaterialIcons', 69 | }, 70 | draw: { 71 | sfSymbol: 'pencil.and.scribble', 72 | type: 'MaterialCommunityIcons', 73 | }, 74 | marker: { 75 | sfSymbol: 'highlighter', 76 | type: 'MaterialCommunityIcons', 77 | }, 78 | 'fountain-pen-tip': { 79 | sfSymbol: 'pencil.tip', 80 | type: 'MaterialCommunityIcons', 81 | }, 82 | 'pencil-plus-outline': { 83 | sfSymbol: 'pencil.tip.crop.circle.badge.plus', 84 | type: 'MaterialCommunityIcons', 85 | }, 86 | 'pen-plus': { 87 | sfSymbol: 'pencil.tip.crop.circle.badge.plus.fill', 88 | type: 'MaterialCommunityIcons', 89 | }, 90 | 'pencil-minus-outline': { 91 | sfSymbol: 'pencil.tip.crop.circle.badge.minus', 92 | type: 'MaterialCommunityIcons', 93 | }, 94 | 'pen-minus': { 95 | sfSymbol: 'pencil.tip.crop.circle.badge.minus.fill', 96 | type: 'MaterialCommunityIcons', 97 | }, 98 | lasso: { 99 | sfSymbol: 'lasso', 100 | type: 'MaterialCommunityIcons', 101 | }, 102 | 'trash-can-outline': { 103 | sfSymbol: 'trash', 104 | type: 'MaterialCommunityIcons', 105 | }, 106 | 'trash-can': { 107 | sfSymbol: 'trash.fill', 108 | type: 'MaterialCommunityIcons', 109 | }, 110 | 'delete-circle-outline': { 111 | sfSymbol: 'trash.circle', 112 | type: 'MaterialCommunityIcons', 113 | }, 114 | 'delete-circle': { 115 | sfSymbol: 'trash.circle.fill', 116 | type: 'MaterialCommunityIcons', 117 | }, 118 | 'delete-off-outline': { 119 | sfSymbol: 'trash.slash', 120 | type: 'MaterialCommunityIcons', 121 | }, 122 | 'delete-off': { 123 | sfSymbol: 'trash.slash.fill', 124 | type: 'MaterialCommunityIcons', 125 | }, 126 | 'restore-from-trash': { 127 | sfSymbol: 'arrow.up.trash.fill', 128 | type: 'MaterialIcons', 129 | }, 130 | 'folder-open': { 131 | sfSymbol: 'folder', 132 | type: 'MaterialIcons', 133 | }, 134 | // 135 | folder: { 136 | sfSymbol: 'folder.fill', 137 | type: 'MaterialCommunityIcons', 138 | }, 139 | 'folder-plus-outline': { 140 | sfSymbol: 'folder.badge.plus', 141 | type: 'MaterialCommunityIcons', 142 | }, 143 | 'folder-plus': { 144 | sfSymbol: 'folder.fill.badge.plus', 145 | type: 'MaterialCommunityIcons', 146 | }, 147 | 'folder-remove-outline': { 148 | sfSymbol: 'folder.badge.minus', 149 | type: 'MaterialCommunityIcons', 150 | }, 151 | 'folder-remove': { 152 | sfSymbol: 'folder.fill.badge.minus', 153 | type: 'MaterialCommunityIcons', 154 | }, 155 | 'folder-account-outline': { 156 | sfSymbol: 'folder.badge.person.crop', 157 | type: 'MaterialCommunityIcons', 158 | }, 159 | 'folder-account': { 160 | sfSymbol: 'folder.fill.badge.person.crop', 161 | type: 'MaterialCommunityIcons', 162 | }, 163 | 'folder-cog-outline': { 164 | sfSymbol: 'folder.badge.gearshape', 165 | type: 'MaterialCommunityIcons', 166 | }, 167 | 'folder-cog': { 168 | sfSymbol: 'folder.fill.badge.gearshape', 169 | type: 'MaterialCommunityIcons', 170 | }, 171 | 'send-outline': { 172 | sfSymbol: 'paperplane', 173 | type: 'MaterialCommunityIcons', 174 | }, 175 | send: { 176 | sfSymbol: 'paperplane.fill', 177 | type: 'MaterialCommunityIcons', 178 | }, 179 | 'send-circle-outline': { 180 | sfSymbol: 'paperplane.circle', 181 | type: 'MaterialCommunityIcons', 182 | }, 183 | 'send-circle': { 184 | sfSymbol: 'paperplane.circle.fill', 185 | type: 'MaterialCommunityIcons', 186 | }, 187 | tray: { 188 | sfSymbol: 'tray', 189 | type: 'MaterialCommunityIcons', 190 | }, 191 | inbox: { 192 | sfSymbol: 'tray.fill', 193 | type: 'MaterialCommunityIcons', 194 | }, 195 | 'inbox-full-outline': { 196 | sfSymbol: 'tray.full', 197 | type: 'MaterialCommunityIcons', 198 | }, 199 | 'inbox-full': { 200 | sfSymbol: 'tray.full.fill', 201 | type: 'MaterialCommunityIcons', 202 | }, 203 | 'inbox-arrow-up-outline': { 204 | sfSymbol: 'tray.and.arrow.up', 205 | type: 'MaterialCommunityIcons', 206 | }, 207 | 'inbox-arrow-up': { 208 | sfSymbol: 'tray.and.arrow.up.fill', 209 | type: 'MaterialCommunityIcons', 210 | }, 211 | 'inbox-arrow-down-outline': { 212 | sfSymbol: 'tray.and.arrow.down', 213 | type: 'MaterialCommunityIcons', 214 | }, 215 | 'inbox-arrow-down': { 216 | sfSymbol: 'tray.and.arrow.down.fill', 217 | type: 'MaterialCommunityIcons', 218 | }, 219 | 'inbox-multiple-outline': { 220 | sfSymbol: 'tray.2', 221 | type: 'MaterialCommunityIcons', 222 | }, 223 | 'inbox-multiple': { 224 | sfSymbol: 'tray.2.fill', 225 | type: 'MaterialCommunityIcons', 226 | }, 227 | 'database-outline': { 228 | sfSymbol: 'externaldrive', 229 | type: 'MaterialCommunityIcons', 230 | }, 231 | database: { 232 | sfSymbol: 'externaldrive.fill', 233 | type: 'MaterialCommunityIcons', 234 | }, 235 | 'database-plus-outline': { 236 | sfSymbol: 'externaldrive.badge.plus', 237 | type: 'MaterialCommunityIcons', 238 | }, 239 | 'database-plus': { 240 | sfSymbol: 'externaldrive.fill.badge.plus', 241 | type: 'MaterialCommunityIcons', 242 | }, 243 | 'database-minus-outline': { 244 | sfSymbol: 'externaldrive.badge.minus', 245 | type: 'MaterialCommunityIcons', 246 | }, 247 | 'database-minus': { 248 | sfSymbol: 'externaldrive.fill.badge.minus', 249 | type: 'MaterialCommunityIcons', 250 | }, 251 | 'database-check-outline': { 252 | sfSymbol: 'externaldrive.badge.checkmark', 253 | type: 'MaterialCommunityIcons', 254 | }, 255 | 'database-check': { 256 | sfSymbol: 'externaldrive.fill.badge.checkmark', 257 | type: 'MaterialCommunityIcons', 258 | }, 259 | 'database-remove-outline': { 260 | sfSymbol: 'externaldrive.badge.xmark', 261 | type: 'MaterialCommunityIcons', 262 | }, 263 | 'database-remove': { 264 | sfSymbol: 'externaldrive.fill.badge.xmark', 265 | type: 'MaterialCommunityIcons', 266 | }, 267 | 'database-alert-outline': { 268 | sfSymbol: 'externaldrive.badge.exclamationmark', 269 | type: 'MaterialCommunityIcons', 270 | }, 271 | 'database-alert': { 272 | sfSymbol: 'externaldrive.fill.badge.exclamationmark', 273 | type: 'MaterialCommunityIcons', 274 | }, 275 | 'database-clock-outline': { 276 | sfSymbol: 'externaldrive.badge.timemachine', 277 | type: 'MaterialCommunityIcons', 278 | }, 279 | 'database-clock': { 280 | sfSymbol: 'externaldrive.fill.badge.timemachine', 281 | type: 'MaterialCommunityIcons', 282 | }, 283 | 'archive-outline': { 284 | sfSymbol: 'archivebox', 285 | type: 'MaterialCommunityIcons', 286 | }, 287 | archive: { 288 | sfSymbol: 'archivebox.fill', 289 | type: 'MaterialCommunityIcons', 290 | }, 291 | 'archive-remove-outline': { 292 | sfSymbol: 'xmark.bin', 293 | type: 'MaterialCommunityIcons', 294 | }, 295 | 'archive-remove': { 296 | sfSymbol: 'xmark.bin.fill', 297 | type: 'MaterialCommunityIcons', 298 | }, 299 | 'archive-arrow-up-outline': { 300 | sfSymbol: 'arrow.up.bin', 301 | type: 'MaterialCommunityIcons', 302 | }, 303 | 'archive-arrow-up': { 304 | sfSymbol: 'arrow.up.bin.fill', 305 | type: 'MaterialCommunityIcons', 306 | }, 307 | 'file-document-outline': { 308 | sfSymbol: 'doc', 309 | type: 'MaterialCommunityIcons', 310 | }, 311 | 'file-document': { 312 | sfSymbol: 'doc.fill', 313 | type: 'MaterialCommunityIcons', 314 | }, 315 | 'file-plus-outline': { 316 | sfSymbol: 'doc.badge.plus', 317 | type: 'MaterialCommunityIcons', 318 | }, 319 | 'file-plus': { 320 | sfSymbol: 'doc.fill.badge.plus', 321 | type: 'MaterialCommunityIcons', 322 | }, 323 | 'file-upload-outline': { 324 | sfSymbol: 'arrow.up.doc', 325 | type: 'MaterialCommunityIcons', 326 | }, 327 | 'file-upload': { 328 | sfSymbol: 'arrow.up.doc.fill', 329 | type: 'MaterialCommunityIcons', 330 | }, 331 | 'file-clock-outline': { 332 | sfSymbol: 'doc.badge.clock', 333 | type: 'MaterialCommunityIcons', 334 | }, 335 | 'file-clock': { 336 | sfSymbol: 'doc.badge.clock.fill', 337 | type: 'MaterialCommunityIcons', 338 | }, 339 | 'file-cog-outline': { 340 | sfSymbol: 'doc.badge.gearshape', 341 | type: 'MaterialCommunityIcons', 342 | }, 343 | 'file-cog': { 344 | sfSymbol: 'doc.badge.gearshape.fill', 345 | type: 'MaterialCommunityIcons', 346 | }, 347 | 'file-lock-outline': { 348 | sfSymbol: 'lock.doc', 349 | type: 'MaterialCommunityIcons', 350 | }, 351 | 'file-lock': { 352 | sfSymbol: 'lock.doc.fill', 353 | type: 'MaterialCommunityIcons', 354 | }, 355 | 'file-download-outline': { 356 | sfSymbol: 'arrow.down.doc', 357 | type: 'MaterialCommunityIcons', 358 | }, 359 | 'file-download': { 360 | sfSymbol: 'arrow.down.doc.fill', 361 | type: 'MaterialCommunityIcons', 362 | }, 363 | 'file-document-multiple-outline': { 364 | sfSymbol: 'doc.on.doc', 365 | type: 'MaterialCommunityIcons', 366 | }, 367 | 'file-document-multiple': { 368 | sfSymbol: 'doc.on.doc.fill', 369 | type: 'MaterialCommunityIcons', 370 | }, 371 | 'file-copy': { 372 | sfSymbol: 'doc.on.clipboard.fill', 373 | type: 'MaterialIcons', 374 | }, 375 | 'clipboard-outline': { 376 | sfSymbol: 'clipboard', 377 | type: 'MaterialCommunityIcons', 378 | }, 379 | clipboard: { 380 | sfSymbol: 'clipboard.fill', 381 | type: 'MaterialCommunityIcons', 382 | }, 383 | 'clipboard-list-outline': { 384 | sfSymbol: 'list.clipboard', 385 | type: 'MaterialCommunityIcons', 386 | }, 387 | 'clipboard-list': { 388 | sfSymbol: 'list.clipboard.fill', 389 | type: 'MaterialCommunityIcons', 390 | }, 391 | 'clipboard-edit-outline': { 392 | sfSymbol: 'pencil.and.list.clipboard', 393 | type: 'MaterialCommunityIcons', 394 | }, 395 | 'image-text': { 396 | sfSymbol: 'doc.richtext', 397 | type: 'MaterialCommunityIcons', 398 | }, 399 | 'file-question-outline': { 400 | sfSymbol: 'doc.questionmark', 401 | type: 'MaterialCommunityIcons', 402 | }, 403 | 'file-question': { 404 | sfSymbol: 'doc.questionmark.fill', 405 | type: 'MaterialCommunityIcons', 406 | }, 407 | 'card-bulleted-outline': { 408 | sfSymbol: 'list.bullet.rectangle', 409 | type: 'MaterialCommunityIcons', 410 | }, 411 | 'card-bulleted': { 412 | sfSymbol: 'list.bullet.rectangle.fill', 413 | type: 'MaterialCommunityIcons', 414 | }, 415 | 'file-search-outline': { 416 | sfSymbol: 'doc.text.magnifyingglass', 417 | type: 'MaterialCommunityIcons', 418 | }, 419 | 'note-outline': { 420 | sfSymbol: 'note', 421 | type: 'MaterialCommunityIcons', 422 | }, 423 | 'note-text-outline': { 424 | sfSymbol: 'note.text', 425 | type: 'MaterialCommunityIcons', 426 | }, 427 | 'calendar-month': { 428 | sfSymbol: 'calendar', 429 | type: 'MaterialCommunityIcons', 430 | }, 431 | 'calendar-plus': { 432 | sfSymbol: 'calendar.badge.plus', 433 | type: 'MaterialCommunityIcons', 434 | }, 435 | 'calendar-minus': { 436 | sfSymbol: 'calendar.badge.minus', 437 | type: 'MaterialCommunityIcons', 438 | }, 439 | 'calendar-clock': { 440 | sfSymbol: 'calendar.badge.clock', 441 | type: 'MaterialCommunityIcons', 442 | }, 443 | 'calendar-alert': { 444 | sfSymbol: 'calendar.badge.exclamationmark', 445 | type: 'MaterialCommunityIcons', 446 | }, 447 | 'calendar-check': { 448 | sfSymbol: 'calendar.badge.checkmark', 449 | type: 'MaterialCommunityIcons', 450 | }, 451 | 'arrow-left-bold-outline': { 452 | sfSymbol: 'arrowshape.left', 453 | type: 'MaterialCommunityIcons', 454 | }, 455 | 'arrow-left-bold': { 456 | sfSymbol: 'arrowshape.left.fill', 457 | type: 'MaterialCommunityIcons', 458 | }, 459 | 'arrow-left-bold-circle-outline': { 460 | sfSymbol: 'arrowshape.left.circle', 461 | type: 'MaterialCommunityIcons', 462 | }, 463 | 'arrow-left-bold-circle': { 464 | sfSymbol: 'arrowshape.left.circle.fill', 465 | type: 'MaterialCommunityIcons', 466 | }, 467 | 'arrow-right-bold-outline': { 468 | sfSymbol: 'arrowshape.right', 469 | type: 'MaterialCommunityIcons', 470 | }, 471 | 'arrow-right-bold': { 472 | sfSymbol: 'arrowshape.right.fill', 473 | type: 'MaterialCommunityIcons', 474 | }, 475 | 'arrow-right-bold-circle-outline': { 476 | sfSymbol: 'arrowshape.right.circle', 477 | type: 'MaterialCommunityIcons', 478 | }, 479 | 'arrow-right-bold-circle': { 480 | sfSymbol: 'arrowshape.right.circle.fill', 481 | type: 'MaterialCommunityIcons', 482 | }, 483 | 'arrow-up-bold-outline': { 484 | sfSymbol: 'arrowshape.up', 485 | type: 'MaterialCommunityIcons', 486 | }, 487 | 'arrow-up-bold': { 488 | sfSymbol: 'arrowshape.up.fill', 489 | type: 'MaterialCommunityIcons', 490 | }, 491 | 'arrow-up-bold-circle-outline': { 492 | sfSymbol: 'arrowshape.up.circle', 493 | type: 'MaterialCommunityIcons', 494 | }, 495 | 'arrow-up-bold-circle': { 496 | sfSymbol: 'arrowshape.up.circle.fill', 497 | type: 'MaterialCommunityIcons', 498 | }, 499 | 'arrow-down-bold-outline': { 500 | sfSymbol: 'arrowshape.down', 501 | type: 'MaterialCommunityIcons', 502 | }, 503 | 'arrow-down-bold': { 504 | sfSymbol: 'arrowshape.down.fill', 505 | type: 'MaterialCommunityIcons', 506 | }, 507 | 'arrow-down-bold-circle-outline': { 508 | sfSymbol: 'arrowshape.down.circle', 509 | type: 'MaterialCommunityIcons', 510 | }, 511 | 'arrow-down-bold-circle': { 512 | sfSymbol: 'arrowshape.down.circle.fill', 513 | type: 'MaterialCommunityIcons', 514 | }, 515 | 'arrow-left-right-bold-outline': { 516 | sfSymbol: 'arrowshape.left.arrowshape.right', 517 | type: 'MaterialCommunityIcons', 518 | }, 519 | 'arrow-left-right-bold': { 520 | sfSymbol: 'arrowshape.left.arrowshape.right.fill', 521 | type: 'MaterialCommunityIcons', 522 | }, 523 | 'arrow-left-top': { 524 | sfSymbol: 'arrowshape.turn.up.left', 525 | type: 'MaterialCommunityIcons', 526 | }, 527 | 'arrow-left-top-bold': { 528 | sfSymbol: 'arrowshape.turn.up.left.fill', 529 | type: 'MaterialCommunityIcons', 530 | }, 531 | 'arrow-right-top': { 532 | sfSymbol: 'arrowshape.turn.up.right', 533 | type: 'MaterialCommunityIcons', 534 | }, 535 | 'arrow-right-top-bold': { 536 | sfSymbol: 'arrowshape.turn.up.right.fill', 537 | type: 'MaterialCommunityIcons', 538 | }, 539 | 'book-open-outline': { 540 | sfSymbol: 'book', 541 | type: 'MaterialCommunityIcons', 542 | }, 543 | 'book-open': { 544 | sfSymbol: 'book.fill', 545 | type: 'MaterialCommunityIcons', 546 | }, 547 | bookshelf: { 548 | sfSymbol: 'books.vertical.fill', 549 | type: 'MaterialCommunityIcons', 550 | }, 551 | 'menu-book': { 552 | sfSymbol: 'menucard.fill', 553 | type: 'MaterialIcons', 554 | }, 555 | newspaper: { 556 | sfSymbol: 'newspaper', 557 | type: 'MaterialCommunityIcons', 558 | }, 559 | 'newspaper-variant': { 560 | sfSymbol: 'newspaper.fill', 561 | type: 'MaterialCommunityIcons', 562 | }, 563 | 'bookmark-outline': { 564 | sfSymbol: 'bookmark', 565 | type: 'MaterialCommunityIcons', 566 | }, 567 | bookmark: { 568 | sfSymbol: 'bookmark.fill', 569 | type: 'MaterialCommunityIcons', 570 | }, 571 | 'bookmark-off-outline': { 572 | sfSymbol: 'bookmark.slash', 573 | type: 'MaterialCommunityIcons', 574 | }, 575 | 'bookmark-off': { 576 | sfSymbol: 'bookmark.slash.fill', 577 | type: 'MaterialCommunityIcons', 578 | }, 579 | 'pencil-ruler': { 580 | sfSymbol: 'pencil.and.ruler.fill', 581 | type: 'MaterialCommunityIcons', 582 | }, 583 | ruler: { 584 | sfSymbol: 'ruler.fill', 585 | type: 'MaterialCommunityIcons', 586 | }, 587 | backpack: { 588 | sfSymbol: 'backpack.fill', 589 | type: 'MaterialIcons', 590 | }, 591 | paperclip: { 592 | sfSymbol: 'paperclip', 593 | type: 'MaterialCommunityIcons', 594 | }, 595 | link: { 596 | sfSymbol: 'link', 597 | type: 'MaterialCommunityIcons', 598 | }, 599 | 'link-plus': { 600 | sfSymbol: 'link.badge.plus', 601 | type: 'MaterialCommunityIcons', 602 | }, 603 | 'vector-link': { 604 | sfSymbol: 'personalhotspot', 605 | type: 'MaterialCommunityIcons', 606 | }, 607 | 'person-outline': { 608 | sfSymbol: 'person', 609 | type: 'MaterialIcons', 610 | }, 611 | person: { 612 | sfSymbol: 'person.fill', 613 | type: 'MaterialIcons', 614 | }, 615 | 'account-circle-outline': { 616 | sfSymbol: 'person.circle', 617 | type: 'MaterialCommunityIcons', 618 | }, 619 | 'account-circle': { 620 | sfSymbol: 'person.circle.fill', 621 | type: 'MaterialCommunityIcons', 622 | }, 623 | 'account-off-outline': { 624 | sfSymbol: 'person.slash', 625 | type: 'MaterialCommunityIcons', 626 | }, 627 | 'account-off': { 628 | sfSymbol: 'person.slash.fill', 629 | type: 'MaterialCommunityIcons', 630 | }, 631 | 'account-check': { 632 | sfSymbol: 'person.fill.checkmark', 633 | type: 'MaterialCommunityIcons', 634 | }, 635 | 'account-remove': { 636 | sfSymbol: 'person.fill.xmark', 637 | type: 'MaterialCommunityIcons', 638 | }, 639 | 'account-question': { 640 | sfSymbol: 'person.fill.questionmark', 641 | type: 'MaterialCommunityIcons', 642 | }, 643 | 'account-plus-outline': { 644 | sfSymbol: 'person.badge.plus', 645 | type: 'MaterialCommunityIcons', 646 | }, 647 | 'account-minus-outline': { 648 | sfSymbol: 'person.badge.minus', 649 | type: 'MaterialCommunityIcons', 650 | }, 651 | 'account-clock-outline': { 652 | sfSymbol: 'person.badge.clock', 653 | type: 'MaterialCommunityIcons', 654 | }, 655 | 'account-clock': { 656 | sfSymbol: 'person.badge.clock.fill', 657 | type: 'MaterialCommunityIcons', 658 | }, 659 | 'account-key-outline': { 660 | sfSymbol: 'person.badge.key', 661 | type: 'MaterialCommunityIcons', 662 | }, 663 | 'account-key': { 664 | sfSymbol: 'person.badge.key.fill', 665 | type: 'MaterialCommunityIcons', 666 | }, 667 | 'account-multiple-outline': { 668 | sfSymbol: 'person.2', 669 | type: 'MaterialCommunityIcons', 670 | }, 671 | 'account-multiple': { 672 | sfSymbol: 'person.2.fill', 673 | type: 'MaterialCommunityIcons', 674 | }, 675 | 'account-voice': { 676 | sfSymbol: 'person.wave.2.fill', 677 | type: 'MaterialCommunityIcons', 678 | }, 679 | 'image-frame': { 680 | sfSymbol: 'photo.artframe', 681 | type: 'MaterialCommunityIcons', 682 | }, 683 | checkerboard: { 684 | sfSymbol: 'rectangle.checkered', 685 | type: 'MaterialCommunityIcons', 686 | }, 687 | accessibility: { 688 | sfSymbol: 'accessibility', 689 | type: 'MaterialIcons', 690 | }, 691 | dumbbell: { 692 | sfSymbol: 'dumbbell.fill', 693 | type: 'MaterialCommunityIcons', 694 | }, 695 | 'soccer-field': { 696 | sfSymbol: 'sportscourt', 697 | type: 'MaterialCommunityIcons', 698 | }, 699 | soccer: { 700 | sfSymbol: 'soccerball', 701 | type: 'MaterialCommunityIcons', 702 | }, 703 | baseball: { 704 | sfSymbol: 'baseball.fill', 705 | type: 'MaterialCommunityIcons', 706 | }, 707 | basketball: { 708 | sfSymbol: 'basketball.fill', 709 | type: 'MaterialCommunityIcons', 710 | }, 711 | football: { 712 | sfSymbol: 'football.fill', 713 | type: 'MaterialCommunityIcons', 714 | }, 715 | tennis: { 716 | sfSymbol: 'tennis.racket', 717 | type: 'MaterialCommunityIcons', 718 | }, 719 | 'hockey-puck': { 720 | sfSymbol: 'hockey.puck.fill', 721 | type: 'MaterialCommunityIcons', 722 | }, 723 | cricket: { 724 | sfSymbol: 'cricket.ball.fill', 725 | type: 'MaterialCommunityIcons', 726 | }, 727 | 'tennis-ball': { 728 | sfSymbol: 'tennisball.fill', 729 | type: 'MaterialCommunityIcons', 730 | }, 731 | volleyball: { 732 | sfSymbol: 'volleyball.fill', 733 | type: 'MaterialCommunityIcons', 734 | }, 735 | skateboard: { 736 | sfSymbol: 'skateboard', 737 | type: 'MaterialCommunityIcons', 738 | }, 739 | ski: { 740 | sfSymbol: 'skis', 741 | type: 'MaterialCommunityIcons', 742 | }, 743 | surfing: { 744 | sfSymbol: 'surfboard', 745 | type: 'MaterialCommunityIcons', 746 | }, 747 | 'trophy-outline': { 748 | sfSymbol: 'trophy', 749 | type: 'MaterialCommunityIcons', 750 | }, 751 | trophy: { 752 | sfSymbol: 'trophy.fill', 753 | type: 'MaterialCommunityIcons', 754 | }, 755 | 'medal-outline': { 756 | sfSymbol: 'medal', 757 | type: 'MaterialCommunityIcons', 758 | }, 759 | medal: { 760 | sfSymbol: 'medal.fill', 761 | type: 'MaterialCommunityIcons', 762 | }, 763 | 'apple-keyboard-command': { 764 | sfSymbol: 'command', 765 | type: 'MaterialCommunityIcons', 766 | }, 767 | 'keyboard-space': { 768 | sfSymbol: 'space', 769 | type: 'MaterialCommunityIcons', 770 | }, 771 | 'apple-keyboard-option': { 772 | sfSymbol: 'option', 773 | type: 'MaterialCommunityIcons', 774 | }, 775 | restart: { 776 | sfSymbol: 'restart', 777 | type: 'MaterialCommunityIcons', 778 | }, 779 | sleep: { 780 | sfSymbol: 'zzz', 781 | type: 'MaterialCommunityIcons', 782 | }, 783 | power: { 784 | sfSymbol: 'power', 785 | type: 'MaterialCommunityIcons', 786 | }, 787 | 'power-cycle': { 788 | sfSymbol: 'togglepower', 789 | type: 'MaterialCommunityIcons', 790 | }, 791 | 'power-on': { 792 | sfSymbol: 'poweron', 793 | type: 'MaterialCommunityIcons', 794 | }, 795 | 'power-off': { 796 | sfSymbol: 'poweroff', 797 | type: 'MaterialCommunityIcons', 798 | }, 799 | 'power-sleep': { 800 | sfSymbol: 'powersleep', 801 | type: 'MaterialCommunityIcons', 802 | }, 803 | 'alpha-x-box-outline': { 804 | sfSymbol: 'clear', 805 | type: 'MaterialCommunityIcons', 806 | }, 807 | 'alpha-x-box': { 808 | sfSymbol: 'clear.fill', 809 | type: 'MaterialCommunityIcons', 810 | }, 811 | 'keyboard-backspace': { 812 | sfSymbol: 'delete.left', 813 | type: 'MaterialCommunityIcons', 814 | }, 815 | 'apple-keyboard-shift': { 816 | sfSymbol: 'shift', 817 | type: 'MaterialCommunityIcons', 818 | }, 819 | 'apple-keyboard-caps': { 820 | sfSymbol: 'capslock', 821 | type: 'MaterialCommunityIcons', 822 | }, 823 | 'keyboard-outline': { 824 | sfSymbol: 'keyboard', 825 | type: 'MaterialCommunityIcons', 826 | }, 827 | keyboard: { 828 | sfSymbol: 'keyboard.fill', 829 | type: 'MaterialCommunityIcons', 830 | }, 831 | 'keyboard-settings-outline': { 832 | sfSymbol: 'keyboard.badge.ellipsis', 833 | type: 'MaterialCommunityIcons', 834 | }, 835 | 'keyboard-settings': { 836 | sfSymbol: 'keyboard.badge.ellipsis.fill', 837 | type: 'MaterialCommunityIcons', 838 | }, 839 | web: { 840 | sfSymbol: 'globe', 841 | type: 'MaterialCommunityIcons', 842 | }, 843 | 'access-point-network': { 844 | sfSymbol: 'network', 845 | type: 'MaterialCommunityIcons', 846 | }, 847 | 'access-point-network-off': { 848 | sfSymbol: 'network.slash', 849 | type: 'MaterialCommunityIcons', 850 | }, 851 | 'weather-sunny': { 852 | sfSymbol: 'sun.min', 853 | type: 'MaterialCommunityIcons', 854 | }, 855 | 'white-balance-sunny': { 856 | sfSymbol: 'sun.max.fill', 857 | type: 'MaterialCommunityIcons', 858 | }, 859 | 'weather-sunny-alert': { 860 | sfSymbol: 'sun.max.trianglebadge.exclamationmark', 861 | type: 'MaterialCommunityIcons', 862 | }, 863 | 'weather-night': { 864 | sfSymbol: 'moon.stars', 865 | type: 'MaterialCommunityIcons', 866 | }, 867 | 'nightlight-round': { 868 | sfSymbol: 'moon.fill', 869 | type: 'MaterialIcons', 870 | }, 871 | 'star-four-points': { 872 | sfSymbol: 'sparkle', 873 | type: 'MaterialCommunityIcons', 874 | }, 875 | 'cloud-outline': { 876 | sfSymbol: 'cloud', 877 | type: 'MaterialCommunityIcons', 878 | }, 879 | cloud: { 880 | sfSymbol: 'cloud.fill', 881 | type: 'MaterialCommunityIcons', 882 | }, 883 | 'weather-rainy': { 884 | sfSymbol: 'cloud.rain', 885 | type: 'MaterialCommunityIcons', 886 | }, 887 | 'weather-lightning': { 888 | sfSymbol: 'cloud.bolt', 889 | type: 'MaterialCommunityIcons', 890 | }, 891 | 'weather-tornado': { 892 | sfSymbol: 'tornado', 893 | type: 'MaterialCommunityIcons', 894 | }, 895 | 'sun-thermometer-outline': { 896 | sfSymbol: 'thermometer.sun', 897 | type: 'MaterialCommunityIcons', 898 | }, 899 | 'sun-thermometer': { 900 | sfSymbol: 'thermometer.sun.fill', 901 | type: 'MaterialCommunityIcons', 902 | }, 903 | 'water-outline': { 904 | sfSymbol: 'drop', 905 | type: 'MaterialCommunityIcons', 906 | }, 907 | water: { 908 | sfSymbol: 'drop.fill', 909 | type: 'MaterialCommunityIcons', 910 | }, 911 | 'water-circle': { 912 | sfSymbol: 'drop.circle.fill', 913 | type: 'MaterialCommunityIcons', 914 | }, 915 | fire: { 916 | sfSymbol: 'flame', 917 | type: 'MaterialCommunityIcons', 918 | }, 919 | 'fire-circle': { 920 | sfSymbol: 'flame.circle', 921 | type: 'MaterialCommunityIcons', 922 | }, 923 | 'umbrella-outline': { 924 | sfSymbol: 'umbrella', 925 | type: 'MaterialCommunityIcons', 926 | }, 927 | umbrella: { 928 | sfSymbol: 'umbrella.fill', 929 | type: 'MaterialCommunityIcons', 930 | }, 931 | 'play-outline': { 932 | sfSymbol: 'play', 933 | type: 'MaterialCommunityIcons', 934 | }, 935 | play: { 936 | sfSymbol: 'play.fill', 937 | type: 'MaterialCommunityIcons', 938 | }, 939 | 'play-circle-outline': { 940 | sfSymbol: 'play.circle', 941 | type: 'MaterialCommunityIcons', 942 | }, 943 | 'play-circle': { 944 | sfSymbol: 'play.circle.fill', 945 | type: 'MaterialCommunityIcons', 946 | }, 947 | 'play-box-outline': { 948 | sfSymbol: 'play.square', 949 | type: 'MaterialCommunityIcons', 950 | }, 951 | 'play-box': { 952 | sfSymbol: 'play.square.fill', 953 | type: 'MaterialCommunityIcons', 954 | }, 955 | 'play-box-multiple-outline': { 956 | sfSymbol: 'play.square.stack', 957 | type: 'MaterialCommunityIcons', 958 | }, 959 | 'play-box-multiple': { 960 | sfSymbol: 'play.square.stack.fill', 961 | type: 'MaterialCommunityIcons', 962 | }, 963 | pause: { 964 | sfSymbol: 'pause', 965 | type: 'MaterialCommunityIcons', 966 | }, 967 | 'pause-circle-outline': { 968 | sfSymbol: 'pause.circle', 969 | type: 'MaterialCommunityIcons', 970 | }, 971 | 'pause-circle': { 972 | sfSymbol: 'pause.circle.fill', 973 | type: 'MaterialCommunityIcons', 974 | }, 975 | stop: { 976 | sfSymbol: 'stop.fill', 977 | type: 'MaterialCommunityIcons', 978 | }, 979 | 'stop-circle-outline': { 980 | sfSymbol: 'stop.circle', 981 | type: 'MaterialCommunityIcons', 982 | }, 983 | 'stop-circle': { 984 | sfSymbol: 'stop.circle.fill', 985 | type: 'MaterialCommunityIcons', 986 | }, 987 | 'record-circle-outline': { 988 | sfSymbol: 'record.circle', 989 | type: 'MaterialCommunityIcons', 990 | }, 991 | 'record-circle': { 992 | sfSymbol: 'record.circle.fill', 993 | type: 'MaterialCommunityIcons', 994 | }, 995 | 'play-pause': { 996 | sfSymbol: 'playpause.fill', 997 | type: 'MaterialCommunityIcons', 998 | }, 999 | 'rewind-outline': { 1000 | sfSymbol: 'backward', 1001 | type: 'MaterialCommunityIcons', 1002 | }, 1003 | rewind: { 1004 | sfSymbol: 'backward.fill', 1005 | type: 'MaterialCommunityIcons', 1006 | }, 1007 | 'fast-forward-outline': { 1008 | sfSymbol: 'forward', 1009 | type: 'MaterialCommunityIcons', 1010 | }, 1011 | 'fast-forward': { 1012 | sfSymbol: 'forward.fill', 1013 | type: 'MaterialCommunityIcons', 1014 | }, 1015 | 'skip-backward-outline': { 1016 | sfSymbol: 'backward.end', 1017 | type: 'MaterialCommunityIcons', 1018 | }, 1019 | 'skip-backward': { 1020 | sfSymbol: 'backward.end.fill', 1021 | type: 'MaterialCommunityIcons', 1022 | }, 1023 | 'skip-forward-outline': { 1024 | sfSymbol: 'forward.end', 1025 | type: 'MaterialCommunityIcons', 1026 | }, 1027 | 'skip-forward': { 1028 | sfSymbol: 'forward.end.fill', 1029 | type: 'MaterialCommunityIcons', 1030 | }, 1031 | 'step-backward': { 1032 | sfSymbol: 'backward.frame.fill', 1033 | type: 'MaterialCommunityIcons', 1034 | }, 1035 | 'step-forward': { 1036 | sfSymbol: 'forward.frame.fill', 1037 | type: 'MaterialCommunityIcons', 1038 | }, 1039 | shuffle: { 1040 | sfSymbol: 'shuffle', 1041 | type: 'MaterialCommunityIcons', 1042 | }, 1043 | repeat: { 1044 | sfSymbol: 'repeat', 1045 | type: 'MaterialCommunityIcons', 1046 | }, 1047 | 'repeat-once': { 1048 | sfSymbol: 'repeat.1', 1049 | type: 'MaterialCommunityIcons', 1050 | }, 1051 | infinity: { 1052 | sfSymbol: 'infinity', 1053 | type: 'MaterialCommunityIcons', 1054 | }, 1055 | 'bullhorn-outline': { 1056 | sfSymbol: 'megaphone', 1057 | type: 'MaterialCommunityIcons', 1058 | }, 1059 | bullhorn: { 1060 | sfSymbol: 'megaphone.fill', 1061 | type: 'MaterialCommunityIcons', 1062 | }, 1063 | 'volume-low': { 1064 | sfSymbol: 'speaker.fill', 1065 | type: 'MaterialCommunityIcons', 1066 | }, 1067 | 'volume-plus': { 1068 | sfSymbol: 'speaker.plus.fill', 1069 | type: 'MaterialCommunityIcons', 1070 | }, 1071 | 'volume-minus': { 1072 | sfSymbol: 'speaker.minus.fill', 1073 | type: 'MaterialCommunityIcons', 1074 | }, 1075 | 'volume-variant-off': { 1076 | sfSymbol: 'speaker.slash.fill', 1077 | type: 'MaterialCommunityIcons', 1078 | }, 1079 | 'volume-medium': { 1080 | sfSymbol: 'speaker.wave.1.fill', 1081 | type: 'MaterialCommunityIcons', 1082 | }, 1083 | 'volume-high': { 1084 | sfSymbol: 'speaker.wave.3.fill', 1085 | type: 'MaterialCommunityIcons', 1086 | }, 1087 | 'music-note': { 1088 | sfSymbol: 'music.note', 1089 | type: 'MaterialCommunityIcons', 1090 | }, 1091 | 'playlist-music': { 1092 | sfSymbol: 'music.note.list', 1093 | type: 'MaterialCommunityIcons', 1094 | }, 1095 | 'microphone-variant': { 1096 | sfSymbol: 'music.mic', 1097 | type: 'MaterialCommunityIcons', 1098 | }, 1099 | magnify: { 1100 | sfSymbol: 'magnifyingglass', 1101 | type: 'MaterialCommunityIcons', 1102 | }, 1103 | 'magnify-minus-outline': { 1104 | sfSymbol: 'minus.magnifyingglass', 1105 | type: 'MaterialCommunityIcons', 1106 | }, 1107 | 'magnify-plus-outline': { 1108 | sfSymbol: 'plus.magnifyingglass', 1109 | type: 'MaterialCommunityIcons', 1110 | }, 1111 | 'microphone-outline': { 1112 | sfSymbol: 'mic', 1113 | type: 'MaterialCommunityIcons', 1114 | }, 1115 | microphone: { 1116 | sfSymbol: 'mic.fill', 1117 | type: 'MaterialCommunityIcons', 1118 | }, 1119 | 'microphone-off': { 1120 | sfSymbol: 'mic.slash.fill', 1121 | type: 'MaterialCommunityIcons', 1122 | }, 1123 | 'microphone-plus': { 1124 | sfSymbol: 'mic.fill.badge.plus', 1125 | type: 'MaterialCommunityIcons', 1126 | }, 1127 | 'circle-outline': { 1128 | sfSymbol: 'circle', 1129 | type: 'MaterialCommunityIcons', 1130 | }, 1131 | circle: { 1132 | sfSymbol: 'circle.fill', 1133 | type: 'MaterialCommunityIcons', 1134 | }, 1135 | cancel: { 1136 | sfSymbol: 'circle.slash', 1137 | type: 'MaterialCommunityIcons', 1138 | }, 1139 | target: { 1140 | sfSymbol: 'target', 1141 | type: 'MaterialCommunityIcons', 1142 | }, 1143 | 'square-outline': { 1144 | sfSymbol: 'square', 1145 | type: 'MaterialCommunityIcons', 1146 | }, 1147 | square: { 1148 | sfSymbol: 'square.fill', 1149 | type: 'MaterialCommunityIcons', 1150 | }, 1151 | 'star-box-multiple-outline': { 1152 | sfSymbol: 'star.square.on.square', 1153 | type: 'MaterialCommunityIcons', 1154 | }, 1155 | 'star-box-multiple': { 1156 | sfSymbol: 'star.square.on.square.fill', 1157 | type: 'MaterialCommunityIcons', 1158 | }, 1159 | 'plus-box-outline': { 1160 | sfSymbol: 'plus.app', 1161 | type: 'MaterialCommunityIcons', 1162 | }, 1163 | 'plus-box': { 1164 | sfSymbol: 'plus.app.fill', 1165 | type: 'MaterialCommunityIcons', 1166 | }, 1167 | 'checkbox-blank-badge-outline': { 1168 | sfSymbol: 'app.badge', 1169 | type: 'MaterialCommunityIcons', 1170 | }, 1171 | 'checkbox-blank-badge': { 1172 | sfSymbol: 'app.badge.fill', 1173 | type: 'MaterialCommunityIcons', 1174 | }, 1175 | 'check-decagram-outline': { 1176 | sfSymbol: 'checkmark.seal', 1177 | type: 'MaterialCommunityIcons', 1178 | }, 1179 | 'check-decagram': { 1180 | sfSymbol: 'checkmark.seal.fill', 1181 | type: 'MaterialCommunityIcons', 1182 | }, 1183 | 'heart-outline': { 1184 | sfSymbol: 'heart', 1185 | type: 'MaterialCommunityIcons', 1186 | }, 1187 | heart: { 1188 | sfSymbol: 'heart.fill', 1189 | type: 'MaterialCommunityIcons', 1190 | }, 1191 | 'heart-flash': { 1192 | sfSymbol: 'bolt.heart.fill', 1193 | type: 'MaterialCommunityIcons', 1194 | }, 1195 | 'star-outline': { 1196 | sfSymbol: 'star', 1197 | type: 'MaterialCommunityIcons', 1198 | }, 1199 | star: { 1200 | sfSymbol: 'star.fill', 1201 | type: 'MaterialCommunityIcons', 1202 | }, 1203 | 'shield-outline': { 1204 | sfSymbol: 'shield', 1205 | type: 'MaterialCommunityIcons', 1206 | }, 1207 | shield: { 1208 | sfSymbol: 'shield.fill', 1209 | type: 'MaterialCommunityIcons', 1210 | }, 1211 | 'flag-outline': { 1212 | sfSymbol: 'flag', 1213 | type: 'MaterialCommunityIcons', 1214 | }, 1215 | flag: { 1216 | sfSymbol: 'flag.fill', 1217 | type: 'MaterialCommunityIcons', 1218 | }, 1219 | 'bell-outline': { 1220 | sfSymbol: 'bell', 1221 | type: 'MaterialCommunityIcons', 1222 | }, 1223 | bell: { 1224 | sfSymbol: 'bell.fill', 1225 | type: 'MaterialCommunityIcons', 1226 | }, 1227 | 'tag-outline': { 1228 | sfSymbol: 'tag', 1229 | type: 'MaterialCommunityIcons', 1230 | }, 1231 | tag: { 1232 | sfSymbol: 'tag.fill', 1233 | type: 'MaterialCommunityIcons', 1234 | }, 1235 | 'lightning-bolt-outline': { 1236 | sfSymbol: 'bolt', 1237 | type: 'MaterialCommunityIcons', 1238 | }, 1239 | 'lightning-bolt': { 1240 | sfSymbol: 'bolt.fill', 1241 | type: 'MaterialCommunityIcons', 1242 | }, 1243 | 'square-root': { 1244 | sfSymbol: 'x.squareroot', 1245 | type: 'MaterialCommunityIcons', 1246 | }, 1247 | flashlight: { 1248 | sfSymbol: 'flashlight.on.fill', 1249 | type: 'MaterialCommunityIcons', 1250 | }, 1251 | 'flashlight-off': { 1252 | sfSymbol: 'flashlight.off.fill', 1253 | type: 'MaterialCommunityIcons', 1254 | }, 1255 | 'camera-outline': { 1256 | sfSymbol: 'camera', 1257 | type: 'MaterialCommunityIcons', 1258 | }, 1259 | camera: { 1260 | sfSymbol: 'camera.fill', 1261 | type: 'MaterialCommunityIcons', 1262 | }, 1263 | 'message-outline': { 1264 | sfSymbol: 'message', 1265 | type: 'MaterialCommunityIcons', 1266 | }, 1267 | message: { 1268 | sfSymbol: 'message.fill', 1269 | type: 'MaterialCommunityIcons', 1270 | }, 1271 | 'message-plus-outline': { 1272 | sfSymbol: 'plus.message', 1273 | type: 'MaterialCommunityIcons', 1274 | }, 1275 | 'message-plus': { 1276 | sfSymbol: 'plus.message.fill', 1277 | type: 'MaterialCommunityIcons', 1278 | }, 1279 | 'message-processing-outline': { 1280 | sfSymbol: 'ellipsis.message', 1281 | type: 'MaterialCommunityIcons', 1282 | }, 1283 | 'message-processing': { 1284 | sfSymbol: 'ellipsis.message.fill', 1285 | type: 'MaterialCommunityIcons', 1286 | }, 1287 | 'format-quote-open': { 1288 | sfSymbol: 'quote.opening', 1289 | type: 'MaterialCommunityIcons', 1290 | }, 1291 | 'format-quote-close': { 1292 | sfSymbol: 'quote.closing', 1293 | type: 'MaterialCommunityIcons', 1294 | }, 1295 | 'comment-quote-outline': { 1296 | sfSymbol: 'quote.bubble', 1297 | type: 'MaterialCommunityIcons', 1298 | }, 1299 | 'comment-quote': { 1300 | sfSymbol: 'quote.bubble.fill', 1301 | type: 'MaterialCommunityIcons', 1302 | }, 1303 | 'message-star-outline': { 1304 | sfSymbol: 'star.bubble', 1305 | type: 'MaterialCommunityIcons', 1306 | }, 1307 | 'message-star': { 1308 | sfSymbol: 'star.bubble.fill', 1309 | type: 'MaterialCommunityIcons', 1310 | }, 1311 | 'message-question-outline': { 1312 | sfSymbol: 'questionmark.bubble', 1313 | type: 'MaterialCommunityIcons', 1314 | }, 1315 | 'message-question': { 1316 | sfSymbol: 'questionmark.bubble.fill', 1317 | type: 'MaterialCommunityIcons', 1318 | }, 1319 | 'phone-outline': { 1320 | sfSymbol: 'phone', 1321 | type: 'MaterialCommunityIcons', 1322 | }, 1323 | phone: { 1324 | sfSymbol: 'phone.fill', 1325 | type: 'MaterialCommunityIcons', 1326 | }, 1327 | 'phone-plus-outline': { 1328 | sfSymbol: 'phone.badge.plus', 1329 | type: 'MaterialCommunityIcons', 1330 | }, 1331 | 'phone-plus': { 1332 | sfSymbol: 'phone.fill.badge.plus', 1333 | type: 'MaterialCommunityIcons', 1334 | }, 1335 | 'phone-check-outline': { 1336 | sfSymbol: 'phone.badge.checkmark', 1337 | type: 'MaterialCommunityIcons', 1338 | }, 1339 | 'phone-check': { 1340 | sfSymbol: 'phone.fill.badge.checkmark', 1341 | type: 'MaterialCommunityIcons', 1342 | }, 1343 | 'video-outline': { 1344 | sfSymbol: 'video', 1345 | type: 'MaterialCommunityIcons', 1346 | }, 1347 | video: { 1348 | sfSymbol: 'video.fill', 1349 | type: 'MaterialCommunityIcons', 1350 | }, 1351 | 'email-outline': { 1352 | sfSymbol: 'envelope', 1353 | type: 'MaterialCommunityIcons', 1354 | }, 1355 | email: { 1356 | sfSymbol: 'envelope.fill', 1357 | type: 'MaterialCommunityIcons', 1358 | }, 1359 | 'email-open': { 1360 | sfSymbol: 'envelope.open.fill', 1361 | type: 'MaterialCommunityIcons', 1362 | }, 1363 | 'cog-outline': { 1364 | sfSymbol: 'gearshape', 1365 | type: 'MaterialCommunityIcons', 1366 | }, 1367 | cog: { 1368 | sfSymbol: 'gearshape.fill', 1369 | type: 'MaterialCommunityIcons', 1370 | }, 1371 | 'signature-freehand': { 1372 | sfSymbol: 'signature', 1373 | type: 'MaterialCommunityIcons', 1374 | }, 1375 | 'dots-horizontal': { 1376 | sfSymbol: 'ellipsis', 1377 | type: 'MaterialCommunityIcons', 1378 | }, 1379 | 'dots-horizontal-circle-outline': { 1380 | sfSymbol: 'ellipsis.circle', 1381 | type: 'MaterialCommunityIcons', 1382 | }, 1383 | 'dots-horizontal-circle': { 1384 | sfSymbol: 'ellipsis.circle.fill', 1385 | type: 'MaterialCommunityIcons', 1386 | }, 1387 | 'shopping-outline': { 1388 | sfSymbol: 'bag', 1389 | type: 'MaterialCommunityIcons', 1390 | }, 1391 | shopping: { 1392 | sfSymbol: 'bag.fill', 1393 | type: 'MaterialCommunityIcons', 1394 | }, 1395 | 'cart-outline': { 1396 | sfSymbol: 'cart', 1397 | type: 'MaterialCommunityIcons', 1398 | }, 1399 | cart: { 1400 | sfSymbol: 'cart.fill', 1401 | type: 'MaterialCommunityIcons', 1402 | }, 1403 | 'basket-outline': { 1404 | sfSymbol: 'basket', 1405 | type: 'MaterialCommunityIcons', 1406 | }, 1407 | basket: { 1408 | sfSymbol: 'basket.fill', 1409 | type: 'MaterialCommunityIcons', 1410 | }, 1411 | 'credit-card-outline': { 1412 | sfSymbol: 'creditcard', 1413 | type: 'MaterialCommunityIcons', 1414 | }, 1415 | 'credit-card': { 1416 | sfSymbol: 'creditcard.fill', 1417 | type: 'MaterialCommunityIcons', 1418 | }, 1419 | 'card-giftcard': { 1420 | sfSymbol: 'giftcard', 1421 | type: 'MaterialIcons', 1422 | }, 1423 | crop: { 1424 | sfSymbol: 'crop', 1425 | type: 'MaterialCommunityIcons', 1426 | }, 1427 | 'crop-rotate': { 1428 | sfSymbol: 'crop.rotate', 1429 | type: 'MaterialCommunityIcons', 1430 | }, 1431 | 'brush-variant': { 1432 | sfSymbol: 'paintbrush', 1433 | type: 'MaterialCommunityIcons', 1434 | }, 1435 | 'spirit-level': { 1436 | sfSymbol: 'level', 1437 | type: 'MaterialCommunityIcons', 1438 | }, 1439 | 'wrench-outline': { 1440 | sfSymbol: 'wrench.adjustable', 1441 | type: 'MaterialCommunityIcons', 1442 | }, 1443 | wrench: { 1444 | sfSymbol: 'wrench.adjustable.fill', 1445 | type: 'MaterialCommunityIcons', 1446 | }, 1447 | hammer: { 1448 | sfSymbol: 'hammer.fill', 1449 | type: 'MaterialCommunityIcons', 1450 | }, 1451 | screwdriver: { 1452 | sfSymbol: 'screwdriver', 1453 | type: 'MaterialCommunityIcons', 1454 | }, 1455 | eyedropper: { 1456 | sfSymbol: 'eyedropper', 1457 | type: 'MaterialCommunityIcons', 1458 | }, 1459 | 'hammer-screwdriver': { 1460 | sfSymbol: 'wrench.and.screwdriver.fill', 1461 | type: 'MaterialCommunityIcons', 1462 | }, 1463 | 'script-outline': { 1464 | sfSymbol: 'scroll', 1465 | type: 'MaterialCommunityIcons', 1466 | }, 1467 | script: { 1468 | sfSymbol: 'scroll.fill', 1469 | type: 'MaterialCommunityIcons', 1470 | }, 1471 | 'printer-outline': { 1472 | sfSymbol: 'printer', 1473 | type: 'MaterialCommunityIcons', 1474 | }, 1475 | printer: { 1476 | sfSymbol: 'printer.fill', 1477 | type: 'MaterialCommunityIcons', 1478 | }, 1479 | scanner: { 1480 | sfSymbol: 'scanner', 1481 | type: 'MaterialCommunityIcons', 1482 | }, 1483 | 'drama-masks': { 1484 | sfSymbol: 'theatermasks', 1485 | type: 'MaterialCommunityIcons', 1486 | }, 1487 | 'puzzle-outline': { 1488 | sfSymbol: 'puzzlepiece', 1489 | type: 'MaterialCommunityIcons', 1490 | }, 1491 | puzzle: { 1492 | sfSymbol: 'puzzlepiece.fill', 1493 | type: 'MaterialCommunityIcons', 1494 | }, 1495 | 'home-outline': { 1496 | sfSymbol: 'house', 1497 | type: 'MaterialCommunityIcons', 1498 | }, 1499 | home: { 1500 | sfSymbol: 'house.fill', 1501 | type: 'MaterialCommunityIcons', 1502 | }, 1503 | 'home-circle-outline': { 1504 | sfSymbol: 'house.circle', 1505 | type: 'MaterialCommunityIcons', 1506 | }, 1507 | 'home-circle': { 1508 | sfSymbol: 'house.circle.fill', 1509 | type: 'MaterialCommunityIcons', 1510 | }, 1511 | 'storefront-outline': { 1512 | sfSymbol: 'storefront', 1513 | type: 'MaterialCommunityIcons', 1514 | }, 1515 | storefront: { 1516 | sfSymbol: 'storefront.fill', 1517 | type: 'MaterialCommunityIcons', 1518 | }, 1519 | 'lightbulb-outline': { 1520 | sfSymbol: 'lightbulb', 1521 | type: 'MaterialCommunityIcons', 1522 | }, 1523 | lightbulb: { 1524 | sfSymbol: 'lightbulb.fill', 1525 | type: 'MaterialCommunityIcons', 1526 | }, 1527 | 'lightbulb-off-outline': { 1528 | sfSymbol: 'lightbulb.slash', 1529 | type: 'MaterialCommunityIcons', 1530 | }, 1531 | 'lightbulb-off': { 1532 | sfSymbol: 'lightbulb.slash.fill', 1533 | type: 'MaterialCommunityIcons', 1534 | }, 1535 | 'power-socket-us': { 1536 | sfSymbol: 'poweroutlet.type.b', 1537 | type: 'MaterialCommunityIcons', 1538 | }, 1539 | 'power-plug-outline': { 1540 | sfSymbol: 'powerplug', 1541 | type: 'MaterialCommunityIcons', 1542 | }, 1543 | 'power-plug': { 1544 | sfSymbol: 'powerplug.fill', 1545 | type: 'MaterialCommunityIcons', 1546 | }, 1547 | webcam: { 1548 | sfSymbol: 'web.camera.fill', 1549 | type: 'MaterialCommunityIcons', 1550 | }, 1551 | 'water-pump': { 1552 | sfSymbol: 'spigot.fill', 1553 | type: 'MaterialCommunityIcons', 1554 | }, 1555 | router: { 1556 | sfSymbol: 'wifi.router.fill', 1557 | type: 'MaterialIcons', 1558 | }, 1559 | 'party-popper': { 1560 | sfSymbol: 'party.popper.fill', 1561 | type: 'MaterialCommunityIcons', 1562 | }, 1563 | balloon: { 1564 | sfSymbol: 'balloon.fill', 1565 | type: 'MaterialCommunityIcons', 1566 | }, 1567 | firework: { 1568 | sfSymbol: 'fireworks', 1569 | type: 'MaterialCommunityIcons', 1570 | }, 1571 | 'office-building-outline': { 1572 | sfSymbol: 'building', 1573 | type: 'MaterialCommunityIcons', 1574 | }, 1575 | 'office-building': { 1576 | sfSymbol: 'building.fill', 1577 | type: 'MaterialCommunityIcons', 1578 | }, 1579 | 'city-variant-outline': { 1580 | sfSymbol: 'building.2', 1581 | type: 'MaterialCommunityIcons', 1582 | }, 1583 | 'city-variant': { 1584 | sfSymbol: 'building.2.fill', 1585 | type: 'MaterialCommunityIcons', 1586 | }, 1587 | 'lock-outline': { 1588 | sfSymbol: 'lock', 1589 | type: 'MaterialCommunityIcons', 1590 | }, 1591 | lock: { 1592 | sfSymbol: 'lock.fill', 1593 | type: 'MaterialCommunityIcons', 1594 | }, 1595 | 'shield-lock-outline': { 1596 | sfSymbol: 'lock.shield', 1597 | type: 'MaterialCommunityIcons', 1598 | }, 1599 | 'shield-lock': { 1600 | sfSymbol: 'lock.shield.fill', 1601 | type: 'MaterialCommunityIcons', 1602 | }, 1603 | 'lock-off-outline': { 1604 | sfSymbol: 'lock.slash', 1605 | type: 'MaterialCommunityIcons', 1606 | }, 1607 | 'lock-off': { 1608 | sfSymbol: 'lock.slash.fill', 1609 | type: 'MaterialCommunityIcons', 1610 | }, 1611 | 'lock-alert-outline': { 1612 | sfSymbol: 'exclamationmark.lock', 1613 | type: 'MaterialCommunityIcons', 1614 | }, 1615 | 'lock-alert': { 1616 | sfSymbol: 'exclamationmark.lock.fill', 1617 | type: 'MaterialCommunityIcons', 1618 | }, 1619 | 'lock-clock': { 1620 | sfSymbol: 'lock.badge.clock.fill', 1621 | type: 'MaterialCommunityIcons', 1622 | }, 1623 | 'lock-open': { 1624 | sfSymbol: 'lock.open', 1625 | type: 'MaterialCommunityIcons', 1626 | }, 1627 | 'lock-open-outline': { 1628 | sfSymbol: 'lock.open.fill', 1629 | type: 'MaterialCommunityIcons', 1630 | }, 1631 | 'lock-open-alert': { 1632 | sfSymbol: 'lock.open.trianglebadge.exclamationmark', 1633 | type: 'MaterialCommunityIcons', 1634 | }, 1635 | 'lock-open-alert-outline': { 1636 | sfSymbol: 'lock.open.trianglebadge.exclamationmark.fill', 1637 | type: 'MaterialCommunityIcons', 1638 | }, 1639 | 'lock-reset': { 1640 | sfSymbol: 'lock.rotation', 1641 | type: 'MaterialCommunityIcons', 1642 | }, 1643 | 'key-outline': { 1644 | sfSymbol: 'key', 1645 | type: 'MaterialCommunityIcons', 1646 | }, 1647 | key: { 1648 | sfSymbol: 'key.fill', 1649 | type: 'MaterialCommunityIcons', 1650 | }, 1651 | wifi: { 1652 | sfSymbol: 'wifi', 1653 | type: 'MaterialCommunityIcons', 1654 | }, 1655 | 'wifi-off': { 1656 | sfSymbol: 'wifi.slash', 1657 | type: 'MaterialCommunityIcons', 1658 | }, 1659 | 'wifi-alert': { 1660 | sfSymbol: 'wifi.exclamationmark', 1661 | type: 'MaterialCommunityIcons', 1662 | }, 1663 | 'pin-outline': { 1664 | sfSymbol: 'pin', 1665 | type: 'MaterialCommunityIcons', 1666 | }, 1667 | pin: { 1668 | sfSymbol: 'pin.fill', 1669 | type: 'MaterialCommunityIcons', 1670 | }, 1671 | 'pin-off-outline': { 1672 | sfSymbol: 'pin.slash', 1673 | type: 'MaterialCommunityIcons', 1674 | }, 1675 | 'pin-off': { 1676 | sfSymbol: 'pin.slash.fill', 1677 | type: 'MaterialCommunityIcons', 1678 | }, 1679 | 'map-marker-outline': { 1680 | sfSymbol: 'mappin', 1681 | type: 'MaterialCommunityIcons', 1682 | }, 1683 | 'map-marker-radius-outline': { 1684 | sfSymbol: 'mappin.circle', 1685 | type: 'MaterialCommunityIcons', 1686 | }, 1687 | 'map-marker-radius': { 1688 | sfSymbol: 'mappin.circle.fill', 1689 | type: 'MaterialCommunityIcons', 1690 | }, 1691 | 'map-marker-off-outline': { 1692 | sfSymbol: 'mappin.slash', 1693 | type: 'MaterialCommunityIcons', 1694 | }, 1695 | 'map-outline': { 1696 | sfSymbol: 'map', 1697 | type: 'MaterialCommunityIcons', 1698 | }, 1699 | map: { 1700 | sfSymbol: 'map.fill', 1701 | type: 'MaterialCommunityIcons', 1702 | }, 1703 | monitor: { 1704 | sfSymbol: 'display', 1705 | type: 'MaterialCommunityIcons', 1706 | }, 1707 | 'monitor-lock': { 1708 | sfSymbol: 'lock.display', 1709 | type: 'MaterialCommunityIcons', 1710 | }, 1711 | 'monitor-multiple': { 1712 | sfSymbol: 'display.2', 1713 | type: 'MaterialCommunityIcons', 1714 | }, 1715 | server: { 1716 | sfSymbol: 'server.rack', 1717 | type: 'MaterialCommunityIcons', 1718 | }, 1719 | laptop: { 1720 | sfSymbol: 'laptopcomputer', 1721 | type: 'MaterialCommunityIcons', 1722 | }, 1723 | 'laptop-off': { 1724 | sfSymbol: 'laptopcomputer.slash', 1725 | type: 'MaterialCommunityIcons', 1726 | }, 1727 | cellphone: { 1728 | sfSymbol: 'smartphone', 1729 | type: 'MaterialCommunityIcons', 1730 | }, 1731 | headphones: { 1732 | sfSymbol: 'headphones', 1733 | type: 'MaterialCommunityIcons', 1734 | }, 1735 | 'live-tv': { 1736 | sfSymbol: 'play.tv', 1737 | type: 'MaterialIcons', 1738 | }, 1739 | 'youtube-tv': { 1740 | sfSymbol: 'play.tv.fill', 1741 | type: 'MaterialCommunityIcons', 1742 | }, 1743 | 'connected-tv': { 1744 | sfSymbol: 'tv.badge.wifi', 1745 | type: 'MaterialIcons', 1746 | }, 1747 | 'bullhorn-variant-outline': { 1748 | sfSymbol: 'horn', 1749 | type: 'MaterialCommunityIcons', 1750 | }, 1751 | 'bullhorn-variant': { 1752 | sfSymbol: 'horn.fill', 1753 | type: 'MaterialCommunityIcons', 1754 | }, 1755 | bandage: { 1756 | sfSymbol: 'bandage.fill', 1757 | type: 'MaterialCommunityIcons', 1758 | }, 1759 | 'crown-outline': { 1760 | sfSymbol: 'crown', 1761 | type: 'MaterialCommunityIcons', 1762 | }, 1763 | crown: { 1764 | sfSymbol: 'crown.fill', 1765 | type: 'MaterialCommunityIcons', 1766 | }, 1767 | filmstrip: { 1768 | sfSymbol: 'film.fill', 1769 | type: 'MaterialCommunityIcons', 1770 | }, 1771 | 'filmstrip-box-multiple': { 1772 | sfSymbol: 'film.stack.fill', 1773 | type: 'MaterialCommunityIcons', 1774 | }, 1775 | 'movie-open-outline': { 1776 | sfSymbol: 'movieclapper', 1777 | type: 'MaterialCommunityIcons', 1778 | }, 1779 | 'movie-open': { 1780 | sfSymbol: 'movieclapper.fill', 1781 | type: 'MaterialCommunityIcons', 1782 | }, 1783 | 'ticket-confirmation-outline': { 1784 | sfSymbol: 'ticket', 1785 | type: 'MaterialCommunityIcons', 1786 | }, 1787 | 'ticket-confirmation': { 1788 | sfSymbol: 'ticket.fill', 1789 | type: 'MaterialCommunityIcons', 1790 | }, 1791 | 'eye-outline': { 1792 | sfSymbol: 'eye', 1793 | type: 'MaterialCommunityIcons', 1794 | }, 1795 | eye: { 1796 | sfSymbol: 'eye.fill', 1797 | type: 'MaterialCommunityIcons', 1798 | }, 1799 | 'eye-off-outline': { 1800 | sfSymbol: 'eye.slash', 1801 | type: 'MaterialCommunityIcons', 1802 | }, 1803 | 'eye-off': { 1804 | sfSymbol: 'eye.slash.fill', 1805 | type: 'MaterialCommunityIcons', 1806 | }, 1807 | brain: { 1808 | sfSymbol: 'brain', 1809 | type: 'MaterialCommunityIcons', 1810 | }, 1811 | qrcode: { 1812 | sfSymbol: 'qrcode', 1813 | type: 'MaterialCommunityIcons', 1814 | }, 1815 | barcode: { 1816 | sfSymbol: 'barcode', 1817 | type: 'MaterialCommunityIcons', 1818 | }, 1819 | 'image-outline': { 1820 | sfSymbol: 'photo', 1821 | type: 'MaterialCommunityIcons', 1822 | }, 1823 | image: { 1824 | sfSymbol: 'photo.fill', 1825 | type: 'MaterialCommunityIcons', 1826 | }, 1827 | 'image-plus': { 1828 | sfSymbol: 'photo.badge.plus.fill', 1829 | type: 'MaterialCommunityIcons', 1830 | }, 1831 | 'image-multiple-outline': { 1832 | sfSymbol: 'photo.stack', 1833 | type: 'MaterialCommunityIcons', 1834 | }, 1835 | 'image-multiple': { 1836 | sfSymbol: 'photo.stack.fill', 1837 | type: 'MaterialCommunityIcons', 1838 | }, 1839 | 'clock-outline': { 1840 | sfSymbol: 'clock', 1841 | type: 'MaterialCommunityIcons', 1842 | }, 1843 | clock: { 1844 | sfSymbol: 'clock.fill', 1845 | type: 'MaterialCommunityIcons', 1846 | }, 1847 | 'clock-check-outline': { 1848 | sfSymbol: 'clock.badge.checkmark', 1849 | type: 'MaterialCommunityIcons', 1850 | }, 1851 | 'clock-check': { 1852 | sfSymbol: 'clock.badge.checkmark.fill', 1853 | type: 'MaterialCommunityIcons', 1854 | }, 1855 | 'clock-remove-outline': { 1856 | sfSymbol: 'clock.badge.xmark', 1857 | type: 'MaterialCommunityIcons', 1858 | }, 1859 | 'clock-remove': { 1860 | sfSymbol: 'clock.badge.xmark.fill', 1861 | type: 'MaterialCommunityIcons', 1862 | }, 1863 | 'clock-alert-outline': { 1864 | sfSymbol: 'clock.badge.exclamationmark', 1865 | type: 'MaterialCommunityIcons', 1866 | }, 1867 | 'clock-alert': { 1868 | sfSymbol: 'clock.badge.exclamationmark.fill', 1869 | type: 'MaterialCommunityIcons', 1870 | }, 1871 | alarm: { 1872 | sfSymbol: 'alarm', 1873 | type: 'MaterialCommunityIcons', 1874 | }, 1875 | 'timer-outline': { 1876 | sfSymbol: 'stopwatch', 1877 | type: 'MaterialCommunityIcons', 1878 | }, 1879 | timer: { 1880 | sfSymbol: 'stopwatch.fill', 1881 | type: 'MaterialCommunityIcons', 1882 | }, 1883 | 'chart-timeline-variant': { 1884 | sfSymbol: 'chart.xyaxis.line', 1885 | type: 'MaterialCommunityIcons', 1886 | }, 1887 | 'camera-timer': { 1888 | sfSymbol: 'timer', 1889 | type: 'MaterialCommunityIcons', 1890 | }, 1891 | 'controller-classic-outline': { 1892 | sfSymbol: 'gamecontroller', 1893 | type: 'MaterialCommunityIcons', 1894 | }, 1895 | 'controller-classic': { 1896 | sfSymbol: 'gamecontroller.fill', 1897 | type: 'MaterialCommunityIcons', 1898 | }, 1899 | 'sony-playstation': { 1900 | sfSymbol: 'playstation.logo', 1901 | type: 'MaterialCommunityIcons', 1902 | }, 1903 | 'microsoft-xbox': { 1904 | sfSymbol: 'xbox.logo', 1905 | type: 'MaterialCommunityIcons', 1906 | }, 1907 | 'palette-outline': { 1908 | sfSymbol: 'paintpalette', 1909 | type: 'MaterialCommunityIcons', 1910 | }, 1911 | palette: { 1912 | sfSymbol: 'paintpalette.fill', 1913 | type: 'MaterialCommunityIcons', 1914 | }, 1915 | 'palette-swatch-outline': { 1916 | sfSymbol: 'swatchpalette', 1917 | type: 'MaterialCommunityIcons', 1918 | }, 1919 | 'palette-swatch': { 1920 | sfSymbol: 'swatchpalette.fill', 1921 | type: 'MaterialCommunityIcons', 1922 | }, 1923 | 'silverware-fork-knife': { 1924 | sfSymbol: 'fork.knife', 1925 | type: 'MaterialCommunityIcons', 1926 | }, 1927 | 'chart-box-outline': { 1928 | sfSymbol: 'chart.bar', 1929 | type: 'MaterialCommunityIcons', 1930 | }, 1931 | 'chart-box': { 1932 | sfSymbol: 'chart.bar.fill', 1933 | type: 'MaterialCommunityIcons', 1934 | }, 1935 | 'signal-cellular-3': { 1936 | sfSymbol: 'cellularbars', 1937 | type: 'MaterialCommunityIcons', 1938 | }, 1939 | 'chart-pie': { 1940 | sfSymbol: 'chart.pie.fill', 1941 | type: 'MaterialCommunityIcons', 1942 | }, 1943 | sd: { 1944 | sfSymbol: 'sdcard.fill', 1945 | type: 'MaterialCommunityIcons', 1946 | }, 1947 | atom: { 1948 | sfSymbol: 'atom', 1949 | type: 'MaterialCommunityIcons', 1950 | }, 1951 | 'angle-acute': { 1952 | sfSymbol: 'angle', 1953 | type: 'MaterialCommunityIcons', 1954 | }, 1955 | 'math-compass': { 1956 | sfSymbol: 'compass.drawing', 1957 | type: 'MaterialCommunityIcons', 1958 | }, 1959 | 'globe-model': { 1960 | sfSymbol: 'globe.desk', 1961 | type: 'MaterialCommunityIcons', 1962 | }, 1963 | 'gift-outline': { 1964 | sfSymbol: 'gift', 1965 | type: 'MaterialCommunityIcons', 1966 | }, 1967 | gift: { 1968 | sfSymbol: 'gift.fill', 1969 | type: 'MaterialCommunityIcons', 1970 | }, 1971 | cash: { 1972 | sfSymbol: 'banknote', 1973 | type: 'MaterialCommunityIcons', 1974 | }, 1975 | grid: { 1976 | sfSymbol: 'grid', 1977 | type: 'MaterialCommunityIcons', 1978 | }, 1979 | 'format-list-checks': { 1980 | sfSymbol: 'checklist', 1981 | type: 'MaterialCommunityIcons', 1982 | }, 1983 | 'format-list-bulleted': { 1984 | sfSymbol: 'list.bullet', 1985 | type: 'MaterialCommunityIcons', 1986 | }, 1987 | 'reorder-horizontal': { 1988 | sfSymbol: 'line.3.horizontal', 1989 | type: 'MaterialCommunityIcons', 1990 | }, 1991 | 'format-bold': { 1992 | sfSymbol: 'bold', 1993 | type: 'MaterialCommunityIcons', 1994 | }, 1995 | 'format-italic': { 1996 | sfSymbol: 'italic', 1997 | type: 'MaterialCommunityIcons', 1998 | }, 1999 | 'format-underline': { 2000 | sfSymbol: 'underline', 2001 | type: 'MaterialCommunityIcons', 2002 | }, 2003 | 'format-strikethrough': { 2004 | sfSymbol: 'strikethrough', 2005 | type: 'MaterialCommunityIcons', 2006 | }, 2007 | percent: { 2008 | sfSymbol: 'percent', 2009 | type: 'MaterialCommunityIcons', 2010 | }, 2011 | 'information-outline': { 2012 | sfSymbol: 'info.circle', 2013 | type: 'MaterialCommunityIcons', 2014 | }, 2015 | information: { 2016 | sfSymbol: 'info.circle.fill', 2017 | type: 'MaterialCommunityIcons', 2018 | }, 2019 | 'alternate-email': { 2020 | sfSymbol: 'at', 2021 | type: 'MaterialIcons', 2022 | }, 2023 | help: { 2024 | sfSymbol: 'questionmark', 2025 | type: 'MaterialCommunityIcons', 2026 | }, 2027 | exclamation: { 2028 | sfSymbol: 'exclamationmark', 2029 | type: 'MaterialCommunityIcons', 2030 | }, 2031 | plus: { 2032 | sfSymbol: 'plus', 2033 | type: 'MaterialCommunityIcons', 2034 | }, 2035 | minus: { 2036 | sfSymbol: 'minus', 2037 | type: 'MaterialCommunityIcons', 2038 | }, 2039 | 'plus-minus': { 2040 | sfSymbol: 'plusminus', 2041 | type: 'MaterialCommunityIcons', 2042 | }, 2043 | close: { 2044 | sfSymbol: 'multiply', 2045 | type: 'MaterialCommunityIcons', 2046 | }, 2047 | division: { 2048 | sfSymbol: 'divide', 2049 | type: 'MaterialCommunityIcons', 2050 | }, 2051 | equal: { 2052 | sfSymbol: 'equal', 2053 | type: 'MaterialCommunityIcons', 2054 | }, 2055 | 'less-than': { 2056 | sfSymbol: 'lessthan', 2057 | type: 'MaterialCommunityIcons', 2058 | }, 2059 | 'greater-than': { 2060 | sfSymbol: 'greaterthan', 2061 | type: 'MaterialCommunityIcons', 2062 | }, 2063 | 'code-parentheses': { 2064 | sfSymbol: 'parentheses', 2065 | type: 'MaterialCommunityIcons', 2066 | }, 2067 | 'code-braces': { 2068 | sfSymbol: 'curlybraces', 2069 | type: 'MaterialCommunityIcons', 2070 | }, 2071 | 'code-json': { 2072 | sfSymbol: 'ellipsis.curlybraces', 2073 | type: 'MaterialCommunityIcons', 2074 | }, 2075 | 'close-thick': { 2076 | sfSymbol: 'xmark', 2077 | type: 'MaterialCommunityIcons', 2078 | }, 2079 | 'close-circle-outline': { 2080 | sfSymbol: 'xmark.circle', 2081 | type: 'MaterialCommunityIcons', 2082 | }, 2083 | 'close-circle': { 2084 | sfSymbol: 'xmark.circle.fill', 2085 | type: 'MaterialCommunityIcons', 2086 | }, 2087 | 'close-box-outline': { 2088 | sfSymbol: 'xmark.square', 2089 | type: 'MaterialCommunityIcons', 2090 | }, 2091 | 'close-box': { 2092 | sfSymbol: 'xmark.square.fill', 2093 | type: 'MaterialCommunityIcons', 2094 | }, 2095 | 'shield-remove-outline': { 2096 | sfSymbol: 'xmark.shield', 2097 | type: 'MaterialCommunityIcons', 2098 | }, 2099 | 'shield-remove': { 2100 | sfSymbol: 'xmark.shield.fill', 2101 | type: 'MaterialCommunityIcons', 2102 | }, 2103 | 'close-octagon-outline': { 2104 | sfSymbol: 'xmark.octagon', 2105 | type: 'MaterialCommunityIcons', 2106 | }, 2107 | 'close-octagon': { 2108 | sfSymbol: 'xmark.octagon.fill', 2109 | type: 'MaterialCommunityIcons', 2110 | }, 2111 | check: { 2112 | sfSymbol: 'checkmark', 2113 | type: 'MaterialCommunityIcons', 2114 | }, 2115 | 'check-circle-outline': { 2116 | sfSymbol: 'checkmark.circle', 2117 | type: 'MaterialCommunityIcons', 2118 | }, 2119 | 'check-circle': { 2120 | sfSymbol: 'checkmark.circle.fill', 2121 | type: 'MaterialCommunityIcons', 2122 | }, 2123 | 'check-box': { 2124 | sfSymbol: 'checkmark.square.fill', 2125 | type: 'MaterialIcons', 2126 | }, 2127 | 'shield-check-outline': { 2128 | sfSymbol: 'checkmark.shield', 2129 | type: 'MaterialCommunityIcons', 2130 | }, 2131 | 'shield-check': { 2132 | sfSymbol: 'checkmark.shield.fill', 2133 | type: 'MaterialCommunityIcons', 2134 | }, 2135 | 'chevron-left': { 2136 | sfSymbol: 'chevron.left', 2137 | type: 'MaterialCommunityIcons', 2138 | }, 2139 | 'chevron-left-circle-outline': { 2140 | sfSymbol: 'chevron.left.circle', 2141 | type: 'MaterialCommunityIcons', 2142 | }, 2143 | 'chevron-left-circle': { 2144 | sfSymbol: 'chevron.left.circle.fill', 2145 | type: 'MaterialCommunityIcons', 2146 | }, 2147 | 'chevron-left-box-outline': { 2148 | sfSymbol: 'chevron.left.square', 2149 | type: 'MaterialCommunityIcons', 2150 | }, 2151 | 'chevron-left-box': { 2152 | sfSymbol: 'chevron.left.square.fill', 2153 | type: 'MaterialCommunityIcons', 2154 | }, 2155 | 'chevron-right': { 2156 | sfSymbol: 'chevron.right', 2157 | type: 'MaterialCommunityIcons', 2158 | }, 2159 | 'chevron-right-circle-outline': { 2160 | sfSymbol: 'chevron.right.circle', 2161 | type: 'MaterialCommunityIcons', 2162 | }, 2163 | 'chevron-right-circle': { 2164 | sfSymbol: 'chevron.right.circle.fill', 2165 | type: 'MaterialCommunityIcons', 2166 | }, 2167 | 'chevron-right-box-outline': { 2168 | sfSymbol: 'chevron.right.square', 2169 | type: 'MaterialCommunityIcons', 2170 | }, 2171 | 'chevron-right-box': { 2172 | sfSymbol: 'chevron.right.square.fill', 2173 | type: 'MaterialCommunityIcons', 2174 | }, 2175 | 'chevron-double-left': { 2176 | sfSymbol: 'chevron.left.2', 2177 | type: 'MaterialCommunityIcons', 2178 | }, 2179 | 'chevron-double-right': { 2180 | sfSymbol: 'chevron.right.2', 2181 | type: 'MaterialCommunityIcons', 2182 | }, 2183 | 'chevron-up': { 2184 | sfSymbol: 'chevron.up', 2185 | type: 'MaterialCommunityIcons', 2186 | }, 2187 | 'chevron-up-circle-outline': { 2188 | sfSymbol: 'chevron.up.circle', 2189 | type: 'MaterialCommunityIcons', 2190 | }, 2191 | 'chevron-up-circle': { 2192 | sfSymbol: 'chevron.up.circle.fill', 2193 | type: 'MaterialCommunityIcons', 2194 | }, 2195 | 'chevron-up-box-outline': { 2196 | sfSymbol: 'chevron.up.square', 2197 | type: 'MaterialCommunityIcons', 2198 | }, 2199 | 'chevron-up-box': { 2200 | sfSymbol: 'chevron.up.square.fill', 2201 | type: 'MaterialCommunityIcons', 2202 | }, 2203 | 'chevron-down': { 2204 | sfSymbol: 'chevron.down', 2205 | type: 'MaterialCommunityIcons', 2206 | }, 2207 | 'chevron-down-circle-outline': { 2208 | sfSymbol: 'chevron.down.circle', 2209 | type: 'MaterialCommunityIcons', 2210 | }, 2211 | 'chevron-down-circle': { 2212 | sfSymbol: 'chevron.down.circle.fill', 2213 | type: 'MaterialCommunityIcons', 2214 | }, 2215 | 'chevron-down-box-outline': { 2216 | sfSymbol: 'chevron.down.square', 2217 | type: 'MaterialCommunityIcons', 2218 | }, 2219 | 'chevron-down-box': { 2220 | sfSymbol: 'chevron.down.square.fill', 2221 | type: 'MaterialCommunityIcons', 2222 | }, 2223 | 'unfold-more-horizontal': { 2224 | sfSymbol: 'chevron.up.chevron.down', 2225 | type: 'MaterialCommunityIcons', 2226 | }, 2227 | 'arrow-left': { 2228 | sfSymbol: 'arrow.left', 2229 | type: 'MaterialCommunityIcons', 2230 | }, 2231 | 'arrow-left-circle-outline': { 2232 | sfSymbol: 'arrow.left.circle', 2233 | type: 'MaterialCommunityIcons', 2234 | }, 2235 | 'arrow-left-circle': { 2236 | sfSymbol: 'arrow.left.circle.fill', 2237 | type: 'MaterialCommunityIcons', 2238 | }, 2239 | 'arrow-left-box': { 2240 | sfSymbol: 'arrow.left.square.fill', 2241 | type: 'MaterialCommunityIcons', 2242 | }, 2243 | 'arrow-right': { 2244 | sfSymbol: 'arrow.right', 2245 | type: 'MaterialCommunityIcons', 2246 | }, 2247 | 'arrow-right-circle-outline': { 2248 | sfSymbol: 'arrow.right.circle', 2249 | type: 'MaterialCommunityIcons', 2250 | }, 2251 | 'arrow-right-circle': { 2252 | sfSymbol: 'arrow.right.circle.fill', 2253 | type: 'MaterialCommunityIcons', 2254 | }, 2255 | 'arrow-right-box': { 2256 | sfSymbol: 'arrow.right.square.fill', 2257 | type: 'MaterialCommunityIcons', 2258 | }, 2259 | 'arrow-up': { 2260 | sfSymbol: 'arrow.up', 2261 | type: 'MaterialCommunityIcons', 2262 | }, 2263 | 'arrow-up-circle-outline': { 2264 | sfSymbol: 'arrow.up.circle', 2265 | type: 'MaterialCommunityIcons', 2266 | }, 2267 | 'arrow-up-circle': { 2268 | sfSymbol: 'arrow.up.circle.fill', 2269 | type: 'MaterialCommunityIcons', 2270 | }, 2271 | 'arrow-up-box': { 2272 | sfSymbol: 'arrow.up.square.fill', 2273 | type: 'MaterialCommunityIcons', 2274 | }, 2275 | 'arrow-down': { 2276 | sfSymbol: 'arrow.down', 2277 | type: 'MaterialCommunityIcons', 2278 | }, 2279 | 'arrow-down-circle-outline': { 2280 | sfSymbol: 'arrow.down.circle', 2281 | type: 'MaterialCommunityIcons', 2282 | }, 2283 | 'arrow-down-circle': { 2284 | sfSymbol: 'arrow.down.circle.fill', 2285 | type: 'MaterialCommunityIcons', 2286 | }, 2287 | 'arrow-down-box': { 2288 | sfSymbol: 'arrow.down.square.fill', 2289 | type: 'MaterialCommunityIcons', 2290 | }, 2291 | asterisk: { 2292 | sfSymbol: 'asterisk', 2293 | type: 'MaterialCommunityIcons', 2294 | }, 2295 | 'attach-money': { 2296 | sfSymbol: 'dollarsign', 2297 | type: 'MaterialIcons', 2298 | }, 2299 | apple: { 2300 | sfSymbol: 'apple.logo', 2301 | type: 'MaterialCommunityIcons', 2302 | }, 2303 | } as const; 2304 | --------------------------------------------------------------------------------