diff --git a/.github/actions/find-or-create-comment/action.yml b/.github/actions/find-or-create-comment/action.yml new file mode 100644 index 000000000..5d435abb0 --- /dev/null +++ b/.github/actions/find-or-create-comment/action.yml @@ -0,0 +1,41 @@ +# Creates a comment to show native preview build status +# Or finds the comment if it exists +# Exposes the comment id in env in either case +name: Find or create comment +description: 'Finds the comment of build status or create one. Outputs the comment id.' + +inputs: + github-token: + description: 'Github token' + required: true + +runs: + using: 'composite' + steps: + - name: Find or create comment + uses: actions/github-script@v6 + with: + github-token: ${{ inputs.github-token }} + script: | + const buildName = '${{ env.build-name }}'; + const commentMagicPrefix = '${{ env.comment-unique-magic-prefix }}'; + const comments = await github.rest.issues.listComments({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + }); + + const existingComment = comments.data.find(comment => comment.body.startsWith(commentMagicPrefix)); + + if (existingComment) { + core.exportVariable('comment_id', existingComment.id) + } else { + const commentBody = `${commentMagicPrefix}\nšŸš€ ${buildName} build has started... Please wait for the results! šŸ•`; + const { data: { id: commentId } } = await github.rest.issues.createComment({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + body: commentBody + }); + core.exportVariable('comment_id', commentId) + } diff --git a/.github/actions/update-native-preview-build-status/action.yml b/.github/actions/update-native-preview-build-status/action.yml new file mode 100644 index 000000000..66c42cdbd --- /dev/null +++ b/.github/actions/update-native-preview-build-status/action.yml @@ -0,0 +1,39 @@ +name: Update build status +description: 'Updates build status comment with the build results' + +inputs: + github-token: + description: 'Github token' + required: true + build-outcome: + description: 'Build outcome' + required: true + +runs: + using: 'composite' + steps: + - name: Update build status + uses: actions/github-script@v6 + with: + github-token: ${{ inputs.github-token }} + script: | + const commentId = '${{ env.comment_id }}'; + const buildOutcome = '${{ inputs.build-outcome }}'; + const buildStatus = buildOutcome == 'success' ? 'completed' : 'failed'; + const buildName = '${{ env.build-name }}'; + const workflowUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`; + + let commentBody = `${{ env.comment-unique-magic-prefix }}\n${buildName} build ${buildStatus}!`; + + if (buildOutcome == 'success') { + commentBody += `\nYou can download the ${buildName} from the following link:\n${workflowUrl}#artifacts`; + } else { + commentBody += '\nPlease check the workflow logs for more details on the build failure.'; + } + + await github.rest.issues.updateComment({ + owner: context.repo.owner, + repo: context.repo.repo, + comment_id: commentId, + body: commentBody + }); \ No newline at end of file diff --git a/.github/workflows/android-preview-build-local.yml b/.github/workflows/ tauri-build.yml similarity index 51% rename from .github/workflows/android-preview-build-local.yml rename to .github/workflows/ tauri-build.yml index a528f8e8d..0dbcd1d7e 100644 --- a/.github/workflows/android-preview-build-local.yml +++ b/.github/workflows/ tauri-build.yml @@ -1,85 +1,83 @@ -name: android-preview-build-local +name: tauri-build + on: push: branches: ['**'] pull_request: branches: ['**'] -concurrency: +concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true - jobs: - update: - name: EAS Android Build Local - runs-on: ubuntu-latest + publish-tauri: + name: Tauri Build and Publish + runs-on: ${{ matrix.platform }} + strategy: + fail-fast: false + matrix: + include: + - platform: 'macos-latest' + arch: 'arm64' + args: '--target aarch64-apple-darwin' + - platform: 'macos-latest' + arch: 'x64' + args: '--target x86_64-apple-darwin' + - platform: 'ubuntu-22.04' + args: '' + - platform: 'windows-latest' + args: '' + permissions: contents: read pull-requests: write + steps: - - name: Check for EXPO_TOKEN + - name: Check for GITHUB_TOKEN run: | - if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then - echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets." + if [ -z "${{ secrets.GITHUB_TOKEN }}" ]; then + echo "You must provide a GITHUB_TOKEN secret for this repository." exit 1 fi + shell: bash - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - - name: Setup Node - uses: actions/setup-node@v3 + - name: Setup Node.js + uses: actions/setup-node@v4 with: - node-version: 20.x + node-version: lts/* cache: yarn - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable - - name: Setup EAS - uses: expo/expo-github-action@v8 - with: - eas-version: latest - token: ${{ secrets.EXPO_TOKEN }} + - name: Add macOS-specific Rust targets + if: matrix.platform == 'macos-latest' + run: rustup target add aarch64-apple-darwin x86_64-apple-darwin - - name: Export secrets as environment variables - env: - JSON_SECRETS: '${{ toJSON(secrets) }}' + - name: Install dependencies (Ubuntu only) + if: matrix.platform == 'ubuntu-22.04' run: | - eval "$(jq -r 'to_entries | map("export \(.key)=\(.value|tostring)") | .[]' <<< "$JSON_SECRETS")" - - - name: Install dependencies - uses: ./.github/actions/install-deps + sudo apt-get update + sudo apt-get install -y libwebkit2gtk-4.0-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf - - name: Prebuild - run: | - echo "Using Mapbox Token: $MAPBOX_DOWNLOADS_TOKEN" - export MAPBOX_DOWNLOADS_TOKEN=${{ secrets.MAPBOX_DOWNLOADS_TOKEN }} - yarn run prebuild:expo + - name: Install frontend dependencies + run: yarn install - - name: Create preview - id: build - run: | - echo "Using Mapbox Token: $MAPBOX_DOWNLOADS_TOKEN" - export MAPBOX_DOWNLOADS_TOKEN=${{ secrets.MAPBOX_DOWNLOADS_TOKEN }} - eas build --platform android --profile preview --local - apk_path=$(find . -name '*.apk') - echo "APK Path: ${apk_path}" - echo "apk_path=${apk_path}" >> $GITHUB_ENV - working-directory: apps/expo + - name: Build and Publish Tauri App + uses: tauri-apps/tauri-action@v0.5.12 env: - DEBUG: 'true' - continue-on-error: true - - - name: Upload APK - uses: actions/upload-artifact@v3 + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - name: android-apk - path: /home/runner/work/PackRat/PackRat/apps/expo/build-*.apk + # tagName: app-v__VERSION__ + # releaseName: 'App v__VERSION__' + # releaseBody: 'See the assets to download this version and install.' + # releaseDraft: true + # prerelease: false + args: ${{ matrix.args }} - name: Find or create comment if: github.event_name == 'pull_request' @@ -100,7 +98,7 @@ jobs: if (existingComment) { core.setOutput('comment_id', existingComment.id); } else { - const commentBody = `${commentIdentifier}\nšŸš€ Android APK build started... Please wait for the results! šŸ•`; + const commentBody = `${commentIdentifier}\nšŸš€ Tauri build started... Please wait for the results! šŸ•`; const { data: { id: commentId } } = await github.rest.issues.createComment({ issue_number: context.issue.number, owner: context.repo.owner, @@ -118,14 +116,14 @@ jobs: script: | const commentIdentifier = ''; const commentId = '${{ steps.find_or_create_comment.outputs.comment_id }}'; - const buildOutcome = '${{ steps.build.outcome }}'; + const buildOutcome = '${{ job.status }}'; const buildStatus = buildOutcome == 'success' ? 'completed' : 'failed'; const workflowUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`; - let commentBody = `${commentIdentifier}\nAndroid APK build ${buildStatus}!`; + let commentBody = `${commentIdentifier}\nTauri build ${buildStatus}!`; if (buildOutcome == 'success') { - commentBody += `\nYou can download the APK file from the following link:\n${workflowUrl}#artifacts`; + commentBody += `\nYou can download the build artifacts from the following link:\n${workflowUrl}#artifacts`; } else { commentBody += '\nPlease check the workflow logs for more details on the build failure.'; } diff --git a/.github/workflows/android-build-manual.yml b/.github/workflows/android-build-manual.yml deleted file mode 100644 index 3aa325482..000000000 --- a/.github/workflows/android-build-manual.yml +++ /dev/null @@ -1,53 +0,0 @@ -name: android build manual - -on: - workflow_dispatch: - inputs: - name: - description: 'Build manually' - default: 'World' - required: true - type: string - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - update: - name: EAS Android Preview Build - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: write - steps: - - name: Check for EXPO_TOKEN - run: | - if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then - echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions" - exit 1 - fi - - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Setup Node - uses: actions/setup-node@v3 - with: - node-version: 20.x - cache: yarn - - - name: Setup EAS - uses: expo/expo-github-action@v8 - with: - eas-version: latest - token: ${{ secrets.EXPO_TOKEN }} - - - name: Install dependencies - uses: ./.github/actions/install-deps - - - name: Create preview - uses: expo/expo-github-action/preview@v8 - with: - working-directory: apps/expo - command: eas build --platform android --profile preview \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml deleted file mode 100644 index b21e90816..000000000 --- a/.github/workflows/build.yml +++ /dev/null @@ -1,39 +0,0 @@ -name: android-build-apk-gradlew - -on: - push: - branches: ['**'] - pull_request: - branches: ['**'] - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build-android-gradlew: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Setup Standard Environment - uses: ./.github/actions/setup-standard-environment - with: - expo-token: ${{ secrets.EXPO_TOKEN }} - - - name: Prebuild - run: | - echo "Using Mapbox Token: $MAPBOX_DOWNLOADS_TOKEN" - export MAPBOX_DOWNLOADS_TOKEN=${{ secrets.MAPBOX_DOWNLOADS_TOKEN }} - yarn run prebuild:expo - - - name: Build Android Release - run: | - cd apps/expo/android && ./gradlew assembleRelease - - - name: Upload Artifact - uses: actions/upload-artifact@v1 - - with: - name: app-release.apk - path: android/app/build/outputs/apk/release/ diff --git a/.github/workflows/eas-build-manual.yml b/.github/workflows/eas-build-manual.yml deleted file mode 100644 index 2e541c7b8..000000000 --- a/.github/workflows/eas-build-manual.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: EAS Build Manual - -on: - workflow_dispatch: - inputs: - platform: - description: 'Platform (android or ios)' - required: true - default: 'android' - type: choice - options: - - android - - ios - build-type: - description: 'Build type (preview or local)' - required: true - default: 'preview' - type: choice - options: - - preview - - local - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - - -jobs: - update: - name: EAS ${{ github.event.inputs.platform }} ${{ github.event.inputs.build-type }} Build - runs-on: ubuntu-latest - permissions: - contents: read - pull-requests: write - - steps: - - name: Setup EAS - uses: ./.github/actions/setup-eas - with: - expo-token: ${{ secrets.EXPO_TOKEN }} - node-version: '20.x' - - - name: Create build - uses: expo/expo-github-action/preview@v8 - with: - working-directory: apps/expo - command: | - eas build --platform ${{ github.event.inputs.platform }} --profile preview \ - ${{ github.event.inputs.build-type == 'local' && '--local' || '' }} \ No newline at end of file diff --git a/.github/workflows/eas-cloud.yml b/.github/workflows/eas-cloud.yml new file mode 100644 index 000000000..c9a0e63fe --- /dev/null +++ b/.github/workflows/eas-cloud.yml @@ -0,0 +1,36 @@ +# Native production pipeline +# Builds on EAS Cloud with auto submission +name: EAS Build & Submit + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - 'packages/app/**' + - 'apps/expo/**' + - 'packages/ui/**' + - 'packages/shared-types/**' + - 'packages/config/**' + - 'packages/crosspath/**' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v2 + + - name: Setup EAS + uses: ./.github/actions/setup-eas + with: + expo-token: ${{ secrets.EXPO_TOKEN }} + + - name: Build on EAS + working-directory: ./apps/expo + run: eas build --platform all --profile production --non-interactive --no-wait --auto-submit \ No newline at end of file diff --git a/.github/workflows/expo.build.yml b/.github/workflows/eas-local.yml similarity index 55% rename from .github/workflows/expo.build.yml rename to .github/workflows/eas-local.yml index ea9210d73..fe2803618 100644 --- a/.github/workflows/expo.build.yml +++ b/.github/workflows/eas-local.yml @@ -1,10 +1,25 @@ name: EAS Local Build on: + workflow_dispatch: push: branches: [ "**" ] + paths: + - 'packages/app/**' + - 'apps/expo/**' + - 'packages/ui/**' + - 'packages/shared-types/**' + - 'packages/config/**' + - 'packages/crosspath/**' pull_request: branches: [ "**" ] + paths: + - 'packages/app/**' + - 'apps/expo/**' + - 'packages/ui/**' + - 'packages/shared-types/**' + - 'packages/config/**' + - 'packages/crosspath/**' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -19,10 +34,23 @@ env: # Define a shared environment variable for android and ios build. jobs: build-android: runs-on: ubuntu-latest + + # will be used in find_or_create_comment + # and update_native_build_preview action + env: + build-name: Android APK + comment-unique-magic-prefix: '' + steps: - name: Checkout code uses: actions/checkout@v2 + - name: Find or create comment for build status + if: github.event_name == 'pull_request' + uses: ./.github/actions/find-or-create-comment + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Setup Standard Environment uses: ./.github/actions/setup-standard-environment with: @@ -35,6 +63,7 @@ jobs: distribution: 'adopt' - name: Run Local Build for Android + id: build working-directory: ./apps/expo run: | eas build --profile preview --platform android --local --non-interactive @@ -46,13 +75,32 @@ jobs: with: name: android-apk path: /home/runner/work/PackRat/PackRat/apps/expo/build-*.apk + + - name: Update build status + if: always() && github.event_name == 'pull_request' + uses: ./.github/actions/update-native-preview-build-status + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + build-outcome: ${{ steps.build.outcome }} + build-ios: runs-on: macos-latest + + env: + build-name: iOS IPA + comment-unique-magic-prefix: '' + steps: - name: Checkout code uses: actions/checkout@v2 + - name: Find or create comment for build status + if: github.event_name == 'pull_request' + uses: ./.github/actions/find-or-create-comment + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + - name: Setup Standard Environment uses: ./.github/actions/setup-standard-environment with: @@ -64,6 +112,7 @@ jobs: # xcode-version: latest-stable - name: Run Local Build for iOS + id: build working-directory: ./apps/expo run: | export MAPBOX_DOWNLOADS_TOKEN=${{ secrets.MAPBOX_DOWNLOADS_TOKEN }} @@ -75,4 +124,12 @@ jobs: uses: actions/upload-artifact@v3 with: name: ios-ipa - path: /home/runner/work/PackRat/PackRat/apps/expo/build-*.ipa + path: /Users/runner/work/PackRat/PackRat/apps/expo/build-*.ipa + + - name: Update build status + if: always() && github.event_name == 'pull_request' + uses: ./.github/actions/update-native-preview-build-status + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + build-outcome: ${{ steps.build.outcome }} + diff --git a/.github/workflows/ios-build-local.yml b/.github/workflows/ios-build-local.yml deleted file mode 100644 index 5e6254dcc..000000000 --- a/.github/workflows/ios-build-local.yml +++ /dev/null @@ -1,116 +0,0 @@ -name: iOS App Release Build - -on: - push: - branches: ['**'] - pull_request: - branches: ['**'] - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - - -jobs: - build: - runs-on: macos-latest - - steps: - - name: Setup repo - uses: actions/checkout@v4 - - - name: Setup Node - uses: actions/setup-node@v3 - with: - node-version: 18.x - cache: 'yarn' - - - name: Setup EAS - uses: expo/expo-github-action@v8 - with: - eas-version: latest - token: ${{ secrets.EXPO_TOKEN }} - - - name: Install dependencies - run: yarn install - - - name: Setup environment variables - run: | - echo "MAPBOX_DOWNLOADS_TOKEN=$MAPBOX_DOWNLOADS_TOKEN" >> $GITHUB_ENV - - - name: Prebuild - run: | - echo "Using Mapbox Token: $MAPBOX_DOWNLOADS_TOKEN" - export MAPBOX_DOWNLOADS_TOKEN=${{ secrets.MAPBOX_DOWNLOADS_TOKEN }} - yarn run prebuild:expo - - - name: Build iOS app - id: build - run: | - echo "Using Mapbox Token: $MAPBOX_DOWNLOADS_TOKEN" - export MAPBOX_DOWNLOADS_TOKEN=${{ secrets.MAPBOX_DOWNLOADS_TOKEN }} - eas build --platform ios --profile preview --local --non-interactive --output ${{ github.workspace }}/app-release.ipa - env: - DEBUG: 'true' - continue-on-error: true - - - name: Upload IPA artifact - uses: actions/upload-artifact@v3 - with: - name: app-release - path: ${{ github.workspace }}/app-release.ipa - - - name: Find or create comment - if: github.event_name == 'pull_request' - uses: actions/github-script@v6 - id: find_or_create_comment - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const commentIdentifier = ''; - const comments = await github.rest.issues.listComments({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - }); - - const existingComment = comments.data.find(comment => comment.body.startsWith(commentIdentifier)); - - if (existingComment) { - core.setOutput('comment_id', existingComment.id); - } else { - const commentBody = `${commentIdentifier}\nšŸš€ iOS app build started... Please wait for the results! šŸ•`; - const { data: { id: commentId } } = await github.rest.issues.createComment({ - issue_number: context.issue.number, - owner: context.repo.owner, - repo: context.repo.repo, - body: commentBody - }); - core.setOutput('comment_id', commentId); - } - - name: Update PR comment - if: always() && github.event_name == 'pull_request' - uses: actions/github-script@v6 - with: - github-token: ${{ secrets.GITHUB_TOKEN }} - script: | - const commentIdentifier = ''; - const commentId = '${{ steps.find_or_create_comment.outputs.comment_id }}'; - const buildOutcome = '${{ steps.build.outcome }}'; - const buildStatus = buildOutcome == 'success' ? 'completed' : 'failed'; - const workflowUrl = `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`; - - let commentBody = `${commentIdentifier}\niOS app build ${buildStatus}!`; - - if (buildOutcome == 'success') { - commentBody += `\nYou can download the IPA file from the following link:\n${workflowUrl}#artifacts`; - } else { - commentBody += '\nPlease check the workflow logs for more details on the build failure.'; - } - - await github.rest.issues.updateComment({ - owner: context.repo.owner, - repo: context.repo.repo, - comment_id: commentId, - body: commentBody - }); diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/_layout.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/_layout.tsx index 40550304f..089f4515d 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/_layout.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/_layout.tsx @@ -4,7 +4,7 @@ import { View, Text, SafeAreaView, TouchableOpacity } from 'react-native'; import useCustomStyles from 'app/hooks/useCustomStyles'; import { useIsMobileView } from 'app/hooks/common'; import { useNavigate } from 'app/hooks/navigation'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; import { Button } from 'tamagui'; import { EvilIcons } from '@expo/vector-icons'; import SVGLogoComponent from 'app/components/logo'; diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/about/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/about/index.tsx index 371efdae2..d143a9eae 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/about/index.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/about/index.tsx @@ -3,6 +3,8 @@ import About from 'app/screens/about'; import { Platform, ScrollView, StyleSheet } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; +import useTheme from 'app/hooks/useTheme'; +import { DrawerToggleButton } from '@react-navigation/drawer'; /** * Renders the AboutRoute component. @@ -10,6 +12,8 @@ import Head from 'expo-router/head'; * @return {JSX.Element} The rendered component. */ export default function AboutRoute() { + const { currentTheme } = useTheme(); + return ( <> {Platform.OS === 'web' && ( @@ -22,6 +26,17 @@ export default function AboutRoute() { options={{ // https://reactnavigation.org/docs/headers#setting-the-header-title title: 'About', + headerRight: () => ( + + ), + + headerStyle: { + backgroundColor: currentTheme.colors.background, + }, + headerTitleStyle: { + fontSize: 24, + }, + headerTintColor: currentTheme.colors.tertiaryBlue, // https://reactnavigation.org/docs/headers#adjusting-header-styles // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/feed/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/feed/index.tsx new file mode 100644 index 000000000..40e866944 --- /dev/null +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/feed/index.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import { FeedScreen } from 'app/modules/feed'; +import { Platform } from 'react-native'; +import { Stack } from 'expo-router'; +import Head from 'expo-router/head'; +import useTheme from 'app/hooks/useTheme'; +import { DrawerToggleButton } from '@react-navigation/drawer'; + +export default function FeedNav() { + const { currentTheme } = useTheme(); + return ( + <> + {Platform.OS === 'web' && ( + + Feed + + )} + ( + + ), + + headerStyle: { + backgroundColor: currentTheme.colors.background, + }, + headerTitleStyle: { + fontSize: 24, + }, + headerTintColor: currentTheme.colors.tertiaryBlue, + // https://reactnavigation.org/docs/headers#adjusting-header-styles + + // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component + }} + /> + + + ); +} diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/feed/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/item/[itemId].tsx similarity index 67% rename from apps/expo/app/(app)/(drawer)/(tabs)/feed/index.tsx rename to apps/expo/app/(app)/(drawer)/(tabs)/(stack)/item/[itemId].tsx index a42c8a28a..3f3539346 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/feed/index.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/item/[itemId].tsx @@ -1,27 +1,29 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; +import { ItemDetailsScreen } from 'app/modules/item'; import { Platform } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; -export default function FeedNav() { +export default function Item() { return ( <> {Platform.OS === 'web' && ( - Feed + Item + )} - + {/* */} + ); } diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/items/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/items/index.tsx index 0ff9f3307..331ecaeea 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/items/index.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/items/index.tsx @@ -1,10 +1,14 @@ import React from 'react'; -import Items from 'app/screens/items'; +import { ItemsScreen } from 'app/modules/item'; import { Platform } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; +import useTheme from 'app/hooks/useTheme'; +import { DrawerToggleButton } from '@react-navigation/drawer'; + +export default function ItemsPage() { + const { currentTheme } = useTheme(); -export default function ItemsScreen() { return ( <> {Platform.OS === 'web' && ( @@ -16,12 +20,23 @@ export default function ItemsScreen() { options={{ // https://reactnavigation.org/docs/headers#setting-the-header-title title: 'Items', + headerRight: () => ( + + ), + + headerStyle: { + backgroundColor: currentTheme.colors.background, + }, + headerTitleStyle: { + fontSize: 24, + }, + headerTintColor: currentTheme.colors.tertiaryBlue, // https://reactnavigation.org/docs/headers#adjusting-header-styles // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component }} /> - + ); } diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/maps/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/maps/index.tsx index a44bbedaf..c7c012c59 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/maps/index.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/maps/index.tsx @@ -3,8 +3,12 @@ import Maps from 'app/screens/maps'; import { Platform } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; +import useTheme from 'app/hooks/useTheme'; +import { DrawerToggleButton } from '@react-navigation/drawer'; export default function MapsScreen() { + const { currentTheme } = useTheme(); + return ( <> {Platform.OS === 'web' && ( @@ -16,6 +20,17 @@ export default function MapsScreen() { options={{ // https://reactnavigation.org/docs/headers#setting-the-header-title title: 'Maps', + headerRight: () => ( + + ), + + headerStyle: { + backgroundColor: currentTheme.colors.background, + }, + headerTitleStyle: { + fontSize: 24, + }, + headerTintColor: currentTheme.colors.tertiaryBlue, // https://reactnavigation.org/docs/headers#adjusting-header-styles // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/pack/[id].tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/pack/[id].tsx index f43f41532..66f6b1d6d 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/pack/[id].tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/pack/[id].tsx @@ -1,12 +1,16 @@ import React from 'react'; import PackContainer from 'app/components/pack/PackContainer'; -import { PackDetails } from 'app/components/pack/PackDetails'; +import { PackDetailsScreen } from 'app/modules/pack'; import { DetailsComponent } from 'app/components/details'; import { Platform } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; +import useTheme from 'app/hooks/useTheme'; +import { DrawerToggleButton } from '@react-navigation/drawer'; export default function Pack() { + const { currentTheme } = useTheme(); + return ( <> {Platform.OS === 'web' && ( @@ -19,13 +23,24 @@ export default function Pack() { options={{ // https://reactnavigation.org/docs/headers#setting-the-header-title title: 'Pack', + headerRight: () => ( + + ), + + headerStyle: { + backgroundColor: currentTheme.colors.background, + }, + headerTitleStyle: { + fontSize: 24, + }, + headerTintColor: currentTheme.colors.tertiaryBlue, // https://reactnavigation.org/docs/headers#adjusting-header-styles // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component }} /> {/* */} - + ); } diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/pack/create.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/pack/create.tsx index 8262a6a0a..ce0e6d05c 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/pack/create.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/pack/create.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { AddPack } from 'app/components/pack/AddPack'; +import { AddPackScreen } from 'app/modules/pack'; import { Platform } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; @@ -22,7 +22,7 @@ export default function Pack() { // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component }} /> - + ); } diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/packs/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/packs/index.tsx index 2b768493b..7c5961bae 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/packs/index.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/packs/index.tsx @@ -1,10 +1,14 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; +import { FeedScreen } from 'app/modules/feed'; import { Platform } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; +import useTheme from 'app/hooks/useTheme'; +import { DrawerToggleButton } from '@react-navigation/drawer'; export default function Packs() { + const { currentTheme } = useTheme(); + return ( <> {Platform.OS === 'web' && ( @@ -16,12 +20,24 @@ export default function Packs() { options={{ // https://reactnavigation.org/docs/headers#setting-the-header-title title: 'Packs', + headerRight: () => ( + + ), + + headerStyle: { + backgroundColor: currentTheme.colors.background, + }, + headerTitleStyle: { + fontSize: 24, + }, + headerTintColor: currentTheme.colors.tertiaryBlue, + // https://reactnavigation.org/docs/headers#adjusting-header-styles // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component }} /> - + ); } diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/profile/[id].tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/profile/[id].tsx index 4ba12fd1b..4f0705646 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/profile/[id].tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/profile/[id].tsx @@ -2,9 +2,8 @@ import React from 'react'; import { Stack } from 'expo-router'; import { useEffect, useState } from 'react'; import { StyleSheet, Text, View, Platform } from 'react-native'; -import ProfileContainer from 'app/screens/user/ProfileContainer'; +import { ProfileScreen, useProfile, useProfileId } from 'app/modules/user'; import Head from 'expo-router/head'; -import { useProfile, useProfileId } from 'app/hooks/user'; const Profile = () => { const [id] = useProfileId(); @@ -24,7 +23,7 @@ const Profile = () => { title: userRealName ? `${userRealName}'s Profile` : '', }} /> - + ); }; diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/profile/settings/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/profile/settings/index.tsx index 22d0827f9..7b5d27046 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/profile/settings/index.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/profile/settings/index.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Platform, ScrollView } from 'react-native'; import { Stack } from 'expo-router'; -import Settings from 'app/screens/user/Settings'; +import { SettingsScreen } from 'app/modules/user'; import Head from 'expo-router/head'; export default function SettingsPage() { @@ -21,7 +21,7 @@ export default function SettingsPage() { // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component }} /> - + ); } diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/trips/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/trips/index.tsx index fe720144d..019a04ab6 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/trips/index.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/(stack)/trips/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; +import { FeedScreen } from 'app/modules/feed'; import { Platform } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; @@ -21,7 +21,7 @@ export default function FeedNav() { // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component }} /> - + ); } diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/index.tsx index c8c27f530..109c91904 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/index.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/index.tsx @@ -1,14 +1,11 @@ import React from 'react'; -import { Platform, StyleSheet, View, Text } from 'react-native'; +import { Platform, View } from 'react-native'; import { Stack } from 'expo-router'; -import { darkTheme, theme } from 'app/theme'; -import LandingPage from 'app/components/landing_page'; -import Dashboard from 'app/screens/dashboard'; +import { theme } from 'app/theme'; +import { DashboardScreen } from 'app/modules/dashboard'; import useTheme from 'app/hooks/useTheme'; -import { useAuthUser } from 'app/auth/hooks'; -import { current } from '@reduxjs/toolkit'; +import { useAuthUser, LoginScreen } from 'app/modules/auth'; import Head from 'expo-router/head'; -import Login from 'app/screens/LoginScreen'; export default function HomeScreen() { const { @@ -38,7 +35,9 @@ export default function HomeScreen() { title: 'Home', }} /> - {!user ? : } + + {!user ? : } + ); } diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/profile/index.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/profile/index.tsx index 4450d7d12..658d8774b 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/profile/index.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/profile/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import ProfileContainer from 'app/screens/user/ProfileContainer'; +import { ProfileScreen } from 'app/modules/user'; import { Platform, ScrollView } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; @@ -21,7 +21,7 @@ export default function Profile() { // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component }} /> - + ); } diff --git a/apps/expo/app/(app)/(drawer)/(tabs)/search.tsx b/apps/expo/app/(app)/(drawer)/(tabs)/search.tsx index 59721b1bc..df2b9d4f2 100644 --- a/apps/expo/app/(app)/(drawer)/(tabs)/search.tsx +++ b/apps/expo/app/(app)/(drawer)/(tabs)/search.tsx @@ -61,7 +61,10 @@ export default function Search() { return ( {Platform.OS === 'web' && ( diff --git a/apps/expo/app/(app)/_layout.tsx b/apps/expo/app/(app)/_layout.tsx index adb21cfb6..eca6a8b0b 100644 --- a/apps/expo/app/(app)/_layout.tsx +++ b/apps/expo/app/(app)/_layout.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Link, Slot } from 'expo-router'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; import { Stack } from 'expo-router'; import { MaterialCommunityIcons } from '@expo/vector-icons'; diff --git a/apps/expo/app/(app)/modal.tsx b/apps/expo/app/(app)/modal.tsx index 55dad70a2..d3ce81c86 100644 --- a/apps/expo/app/(app)/modal.tsx +++ b/apps/expo/app/(app)/modal.tsx @@ -37,7 +37,7 @@ export default function Modal() { {/* Use `../` as a simple way to navigate to the root. This is not analogous to "goBack". */} {!isPresented && Dismiss} {/* Native modals have dark backgrounds on iOS, set the status bar to light content. */} - + modal isPresented: {isPresented ? 'true' : 'false'} diff --git a/apps/expo/app/(auth)/register.tsx b/apps/expo/app/(auth)/register.tsx index 5b28bde33..a87725313 100644 --- a/apps/expo/app/(auth)/register.tsx +++ b/apps/expo/app/(auth)/register.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import Register from 'app/screens/RegisterScreen'; +import { RegisterScreen } from 'app/modules/auth'; import { Platform } from 'react-native'; import { Stack } from 'expo-router'; import Head from 'expo-router/head'; @@ -27,7 +27,7 @@ export default function RegisterContainer() { // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component }} /> - + ); } diff --git a/apps/expo/app/(auth)/sign-in.tsx b/apps/expo/app/(auth)/sign-in.tsx index 86361e39c..a2e21611f 100644 --- a/apps/expo/app/(auth)/sign-in.tsx +++ b/apps/expo/app/(auth)/sign-in.tsx @@ -1,8 +1,6 @@ import React from 'react'; -import Login from 'app/screens/LoginScreen'; -import { Platform } from 'react-native'; +import { LoginScreen } from 'app/modules/auth'; import { Stack } from 'expo-router'; -import Head from 'expo-router/head'; /** * Renders the SignIn component. @@ -21,7 +19,7 @@ export default function SignIn() { // https://reactnavigation.org/docs/headers#replacing-the-title-with-a-custom-component }} /> - + ); } diff --git a/apps/next/pages/appearance/index.tsx b/apps/next/pages/appearance/index.tsx index f412ccaef..6daf7cae9 100644 --- a/apps/next/pages/appearance/index.tsx +++ b/apps/next/pages/appearance/index.tsx @@ -1,5 +1,5 @@ import AppearanceContainer from 'app/screens/appearance/AppearanceContainer'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge'; diff --git a/apps/next/pages/dashboard/index.tsx b/apps/next/pages/dashboard/index.tsx index 2ca8da120..b5f59a2a6 100644 --- a/apps/next/pages/dashboard/index.tsx +++ b/apps/next/pages/dashboard/index.tsx @@ -1,13 +1,13 @@ -import Dashboard from 'app/screens/dashboard'; +import { DashboardScreen } from 'app/modules/dashboard'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge'; export default function DashboardPage() { return ( <> - + ); } diff --git a/apps/next/pages/destination/[destinationId].tsx b/apps/next/pages/destination/[destinationId].tsx index da0e0d660..0ac4676fb 100644 --- a/apps/next/pages/destination/[destinationId].tsx +++ b/apps/next/pages/destination/[destinationId].tsx @@ -1,5 +1,5 @@ import { DestinationPage } from 'app/components/destination'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; // import DestinationPage from "../../components/destination"; // export const runtime = 'experimental-edge'; diff --git a/apps/next/pages/feed/index.tsx b/apps/next/pages/feed/index.tsx index 98ca89bd5..d87c6a012 100644 --- a/apps/next/pages/feed/index.tsx +++ b/apps/next/pages/feed/index.tsx @@ -1,12 +1,12 @@ -import Feed from 'app/screens/feed/Feed'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { FeedScreen } from 'app/modules/feed'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge'; export default function FeedNav() { return ( <> - + ); } diff --git a/apps/next/pages/index.tsx b/apps/next/pages/index.tsx index 6093200a7..5a272f866 100644 --- a/apps/next/pages/index.tsx +++ b/apps/next/pages/index.tsx @@ -1,6 +1,6 @@ import Dashboard from './dashboard'; import LandingPage from 'app/components/landing_page'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; // export const runtime = 'experimental-edge' diff --git a/apps/next/pages/items/[itemId].tsx b/apps/next/pages/items/[itemId].tsx new file mode 100644 index 000000000..8c07cbbfd --- /dev/null +++ b/apps/next/pages/items/[itemId].tsx @@ -0,0 +1,19 @@ +import React from 'react'; +import { ItemDetailsScreen } from 'app/modules/item'; +import { AuthWrapper } from 'app/modules/auth'; + +// export const runtime = 'experimental-edge' + +function ItemScreen() { + return ( + <> + + + ); +} + +export default ItemScreen; + +ItemScreen.getLayout = function getLayout(page: any) { + return {page}; +}; diff --git a/apps/next/pages/items/index.tsx b/apps/next/pages/items/index.tsx index dc76df427..c3d04919a 100644 --- a/apps/next/pages/items/index.tsx +++ b/apps/next/pages/items/index.tsx @@ -1,11 +1,11 @@ -import Items from 'app/screens/items'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { ItemsScreen } from 'app/modules/item'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge'; export default function ItemsPage() { return ( <> - + ); } diff --git a/apps/next/pages/pack/[id].tsx b/apps/next/pages/pack/[id].tsx index 1841bbb31..5e3b6437e 100644 --- a/apps/next/pages/pack/[id].tsx +++ b/apps/next/pages/pack/[id].tsx @@ -1,13 +1,13 @@ import React from 'react'; -import { PackDetails } from 'app/components/pack/PackDetails'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { PackDetailsScreen } from 'app/modules/pack'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge' function PackScreen() { return ( <> - + ); } diff --git a/apps/next/pages/pack/create.tsx b/apps/next/pages/pack/create.tsx index 94a6bfd9e..1708426a8 100644 --- a/apps/next/pages/pack/create.tsx +++ b/apps/next/pages/pack/create.tsx @@ -1,11 +1,11 @@ import React from 'react'; -import { AddPack } from 'app/components/pack/AddPack'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AddPackScreen } from 'app/modules/pack'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge' function CreatePack() { - return ; + return ; } export default CreatePack; diff --git a/apps/next/pages/packs/index.tsx b/apps/next/pages/packs/index.tsx index 4c9fadbc3..d8751900a 100644 --- a/apps/next/pages/packs/index.tsx +++ b/apps/next/pages/packs/index.tsx @@ -1,11 +1,11 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { FeedScreen } from 'app/modules/feed'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge' function Packs() { - return ; + return ; } export default Packs; diff --git a/apps/next/pages/profile/[id].tsx b/apps/next/pages/profile/[id].tsx index 2b6915df5..d17951189 100644 --- a/apps/next/pages/profile/[id].tsx +++ b/apps/next/pages/profile/[id].tsx @@ -1,8 +1,8 @@ import { useEffect, useState } from 'react'; import { StyleSheet, Text, View, Platform } from 'react-native'; import ProfileContainer from 'app/screens/user/ProfileContainer'; -import { useProfileId } from 'app/hooks/user'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { useProfileId } from 'app/modules/user'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge' diff --git a/apps/next/pages/profile/index.tsx b/apps/next/pages/profile/index.tsx index d4ab506df..281006098 100644 --- a/apps/next/pages/profile/index.tsx +++ b/apps/next/pages/profile/index.tsx @@ -1,5 +1,5 @@ import ProfileContainer from 'app/screens/user/ProfileContainer'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge' diff --git a/apps/next/pages/profile/settings/index.tsx b/apps/next/pages/profile/settings/index.tsx index 9e3ad650f..570dedb8a 100644 --- a/apps/next/pages/profile/settings/index.tsx +++ b/apps/next/pages/profile/settings/index.tsx @@ -1,12 +1,12 @@ -import Settings from 'app/screens/user/Settings'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { SettingsScreen } from 'app/modules/user'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge' export default function SettingsPage() { return ( <> - + ); } diff --git a/apps/next/pages/register/index.tsx b/apps/next/pages/register/index.tsx index 144e7ef63..6b1501a6f 100644 --- a/apps/next/pages/register/index.tsx +++ b/apps/next/pages/register/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import RegisterScreen from 'app/screens/RegisterScreen'; +import { RegisterScreen } from 'app/modules/auth'; // export const runtime = 'experimental-edge' diff --git a/apps/next/pages/sign-in/index.tsx b/apps/next/pages/sign-in/index.tsx index 07bca7b04..1b9b29c52 100644 --- a/apps/next/pages/sign-in/index.tsx +++ b/apps/next/pages/sign-in/index.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import LoginScreen from 'app/screens/LoginScreen'; +import { LoginScreen } from 'app/modules/auth'; function Login() { return ( diff --git a/apps/next/pages/trip/[tripId].tsx b/apps/next/pages/trip/[tripId].tsx index 5080d4fac..b01f041b0 100644 --- a/apps/next/pages/trip/[tripId].tsx +++ b/apps/next/pages/trip/[tripId].tsx @@ -1,5 +1,5 @@ import { TripDetails } from 'app/screens/trip/TripDetails'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge' diff --git a/apps/next/pages/trip/create.tsx b/apps/next/pages/trip/create.tsx index 406814c03..5ca47f4b7 100644 --- a/apps/next/pages/trip/create.tsx +++ b/apps/next/pages/trip/create.tsx @@ -1,5 +1,5 @@ import CreateTrip from 'app/screens/trip/createTrip'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge' diff --git a/apps/next/pages/trips/index.tsx b/apps/next/pages/trips/index.tsx index dd9b94034..c0c439bf3 100644 --- a/apps/next/pages/trips/index.tsx +++ b/apps/next/pages/trips/index.tsx @@ -1,12 +1,12 @@ -import Feed from 'app/screens/feed/Feed'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { FeedScreen } from 'app/modules/feed'; +import { AuthWrapper } from 'app/modules/auth'; // export const runtime = 'experimental-edge' export default function FeedNav() { return ( <> - + ); } diff --git a/apps/tauri/package.json b/apps/tauri/package.json index f157ae340..06c8bc46c 100644 --- a/apps/tauri/package.json +++ b/apps/tauri/package.json @@ -1,9 +1,11 @@ { - "name": "tauri-app", + "name": "tauri", "private": true, - "version": "0.0.0", + "version": "0.1.0", + "type": "module", "scripts": { "dev": "vite", + "tauri": "tauri", "build": "yarn run build:tsc && yarn run build:vite", "build:tsc": "tsc || exit 0", "build:vite": "vite build --debug", @@ -13,6 +15,7 @@ "tauri:build": "yarn tauri build", "tauri:build:dev": "yarn tauri build --dev", "tauri:serve": "yarn tauri serve", + "tauri:migrate": "yarn run tauri migrate", "clean": "rm -rf dist node_modules .tamagui" }, "dependencies": { @@ -24,6 +27,7 @@ "@tanstack/react-router": "^1.16.5", "@tanstack/router-devtools": "^1.16.5", "@tanstack/router-vite-plugin": "^1.16.5", + "@tauri-apps/api": "^1", "@vitejs/plugin-react-swc": "^3.6.0", "app": "*", "esbuild-plugin-flow": "^0.3.2", @@ -33,7 +37,7 @@ "react-native-web": "^0.19.10" }, "devDependencies": { - "@tauri-apps/cli": "^2.0.0-beta.17", + "@tauri-apps/cli": "^1", "@types/react": "~18.2.55", "@types/react-dom": "^18.2.19", "@typescript-eslint/eslint-plugin": "^6.21.0", @@ -46,8 +50,8 @@ "rollup-plugin-polyfill-node": "^0.13.0", "rollup-plugin-typescript2": "^0.36.0", "tslib": "^2.6.2", - "typescript": "^5.3.3", - "vite": "^5.1.0", + "typescript": "^5.2.2", + "vite": "^5.3.1", "vite-plugin-node-polyfills": "^0.21.0" } } diff --git a/apps/tauri/src-tauri/Cargo.lock b/apps/tauri/src-tauri/Cargo.lock index 076b8c3f6..ebed6f1fa 100644 --- a/apps/tauri/src-tauri/Cargo.lock +++ b/apps/tauri/src-tauri/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -58,41 +58,32 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.83" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" - -[[package]] -name = "app" -version = "0.1.0" -dependencies = [ - "serde", - "serde_json", - "tauri", - "tauri-build", -] +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" [[package]] name = "atk" -version = "0.18.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4af014b17dd80e8af9fa689b2d4a211ddba6eb583c1622f35d0cb543f6b17e4" +checksum = "2c3d816ce6f0e2909a96830d6911c2aff044370b1ef92d7f267b43bae5addedd" dependencies = [ "atk-sys", + "bitflags 1.3.2", "glib", "libc", ] [[package]] name = "atk-sys" -version = "0.18.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "251e0b7d90e33e0ba930891a505a9a35ece37b2dd37a14f3ffc306c13b980009" +checksum = "58aeb089fb698e06db8089971c7ee317ab9644bade33383f63631437b03aafb6" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps", + "system-deps 6.2.2", ] [[package]] @@ -103,9 +94,9 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.71" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -116,6 +107,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + [[package]] name = "base64" version = "0.21.7" @@ -136,12 +133,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" -dependencies = [ - "serde", -] +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block" @@ -179,6 +173,16 @@ dependencies = [ "alloc-stdlib", ] +[[package]] +name = "bstr" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +dependencies = [ + "memchr", + "serde", +] + [[package]] name = "bumpalo" version = "3.16.0" @@ -187,9 +191,9 @@ checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "6fd4c6dcc3b0aea2f5c0b4b82c2b15fe39ddbc76041a310848f4706edf76bb31" [[package]] name = "byteorder" @@ -199,85 +203,52 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" -dependencies = [ - "serde", -] +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "cairo-rs" -version = "0.18.5" +version = "0.15.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ca26ef0159422fb77631dc9d17b102f253b876fe1586b03b803e63a309b4ee2" +checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" dependencies = [ - "bitflags 2.5.0", + "bitflags 1.3.2", "cairo-sys-rs", "glib", "libc", - "once_cell", "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.18.2" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "685c9fa8e590b8b3d678873528d83411db17242a73fccaed827770ea0fedda51" +checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" dependencies = [ "glib-sys", "libc", - "system-deps", -] - -[[package]] -name = "camino" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo-platform" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" -dependencies = [ - "serde", -] - -[[package]] -name = "cargo_metadata" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" -dependencies = [ - "camino", - "cargo-platform", - "semver", - "serde", - "serde_json", - "thiserror", + "system-deps 6.2.2", ] [[package]] name = "cargo_toml" -version = "0.17.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a969e13a7589e9e3e4207e153bae624ade2b5622fb4684a4923b23ec3d57719" +checksum = "599aa35200ffff8f04c1925aa1acc92fa2e08874379ef42e210a80e527e60838" dependencies = [ "serde", - "toml 0.8.12", + "toml 0.7.8", ] [[package]] name = "cc" -version = "1.0.97" +version = "1.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" +checksum = "72db2f7947ecee9b03b510377e8bb9077afa27176fdbff55c51027e976fdcc48" +dependencies = [ + "shlex", +] [[package]] name = "cesu8" @@ -296,6 +267,15 @@ dependencies = [ "uuid", ] +[[package]] +name = "cfg-expr" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" +dependencies = [ + "smallvec", +] + [[package]] name = "cfg-expr" version = "0.15.8" @@ -312,12 +292,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "cfg_aliases" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" - [[package]] name = "chrono" version = "0.4.38" @@ -328,14 +302,14 @@ dependencies = [ "iana-time-zone", "num-traits", "serde", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] name = "cocoa" -version = "0.25.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" +checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" dependencies = [ "bitflags 1.3.2", "block", @@ -361,6 +335,12 @@ dependencies = [ "objc", ] +[[package]] +name = "color_quant" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" + [[package]] name = "combine" version = "4.6.7" @@ -389,15 +369,15 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "core-graphics" -version = "0.23.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -419,36 +399,55 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" +checksum = "51e852e6dc9a5bed1fae92dd2375037bf2b768725bf3be87811edee3249d09ad" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.4.0" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-channel" -version = "0.5.12" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab3db02a9c5b5121e1e42fbdb1aeb65f5e02624cc58c43f2884c6ccac0b82f95" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -484,7 +483,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] @@ -494,14 +493,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" dependencies = [ "quote", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] name = "darling" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54e36fcd13ed84ffdfda6f5be89b31287cbb80c439841fe69e04841435464391" +checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" dependencies = [ "darling_core", "darling_macro", @@ -509,27 +508,27 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c2cf1c23a687a1feeb728783b993c4e1ad83d99f351801977dd809b48d0a70f" +checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] name = "darling_macro" -version = "0.20.8" +version = "0.20.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a668eda54683121533a393014d8692171709ff57a7d61f187b6e782719f8933f" +checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] @@ -544,15 +543,15 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.17" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 1.0.109", + "syn 2.0.74", ] [[package]] @@ -592,47 +591,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" -[[package]] -name = "dlib" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" -dependencies = [ - "libloading 0.8.3", -] - -[[package]] -name = "dlopen2" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1297103d2bbaea85724fcee6294c2d50b1081f9ad47d0f6f6f61eda65315a6" -dependencies = [ - "dlopen2_derive", - "libc", - "once_cell", - "winapi", -] - -[[package]] -name = "dlopen2_derive" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b99bf03862d7f545ebc28ddd33a665b50865f4dfd84031a393823879bd4c54" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - -[[package]] -name = "dpi" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25c0e292a7ca6d6498557ff1df68f32c99850012b6ea401cf8daf771f22ff53" -dependencies = [ - "serde", -] - [[package]] name = "dtoa" version = "1.0.9" @@ -641,35 +599,29 @@ checksum = "dcbb2bf8e87535c23f7a8a321e364ce21462d0ff10cb6407820e8e96dfff6653" [[package]] name = "dtoa-short" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbaceec3c6e4211c79e7b1800fb9680527106beb2f9c51904a3210c03a448c74" +checksum = "cd1511a7b6a56299bd043a9c167a6d2bfb37bf84a6dfceaba651168adfb43c87" dependencies = [ "dtoa", ] [[package]] name = "dunce" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" - -[[package]] -name = "dyn-clone" -version = "1.0.17" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "embed-resource" -version = "2.4.2" +version = "2.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6985554d0688b687c5cb73898a34fbe3ad6c24c58c238a4d91d5e840670ee9d" +checksum = "4edcacde9351c33139a41e3c97eb2334351a81a2791bebb0b243df837128f602" dependencies = [ "cc", "memchr", "rustc_version", - "toml 0.8.12", + "toml 0.8.19", "vswhom", "winreg", ] @@ -680,12 +632,37 @@ version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ef6b89e5b37196644d8796de5268852ff179b44e96276cf4290264843743bb7" +[[package]] +name = "encoding_rs" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" +dependencies = [ + "cfg-if", +] + [[package]] name = "equivalent" version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "fastrand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + [[package]] name = "fdeflate" version = "0.3.4" @@ -705,11 +682,23 @@ dependencies = [ "rustc_version", ] +[[package]] +name = "filetime" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf401df4a4e3872c4fe8151134cf483738e74b67fc934d6532c882b3d24a4550" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + [[package]] name = "flate2" -version = "1.0.30" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", @@ -723,30 +712,18 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foreign-types" -version = "0.5.0" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" dependencies = [ - "foreign-types-macros", "foreign-types-shared", ] -[[package]] -name = "foreign-types-macros" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - [[package]] name = "foreign-types-shared" -version = "0.3.1" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" @@ -807,15 +784,9 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.74", ] -[[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - [[package]] name = "futures-task" version = "0.3.30" @@ -829,11 +800,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", - "futures-io", "futures-macro", - "futures-sink", "futures-task", - "memchr", "pin-project-lite", "pin-utils", "slab", @@ -850,10 +818,11 @@ dependencies = [ [[package]] name = "gdk" -version = "0.18.0" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5ba081bdef3b75ebcdbfc953699ed2d7417d6bd853347a42a37d76406a33646" +checksum = "a6e05c1f572ab0e1f15be94217f0dc29088c248b14f792a5ff0af0d84bcda9e8" dependencies = [ + "bitflags 1.3.2", "cairo-rs", "gdk-pixbuf", "gdk-sys", @@ -865,35 +834,35 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.18.5" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50e1f5f1b0bfb830d6ccc8066d18db35c487b1b2b1e8589b5dfe9f07e8defaec" +checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" dependencies = [ + "bitflags 1.3.2", "gdk-pixbuf-sys", "gio", "glib", "libc", - "once_cell", ] [[package]] name = "gdk-pixbuf-sys" -version = "0.18.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9839ea644ed9c97a34d129ad56d38a25e6756f99f3a88e15cd39c20629caf7" +checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" dependencies = [ "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps", + "system-deps 6.2.2", ] [[package]] name = "gdk-sys" -version = "0.18.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31ff856cb3386dae1703a920f803abafcc580e9b5f711ca62ed1620c25b51ff2" +checksum = "32e7a08c1e8f06f4177fb7e51a777b8c1689f743a7bc11ea91d44d2226073a88" dependencies = [ "cairo-sys-rs", "gdk-pixbuf-sys", @@ -903,47 +872,33 @@ dependencies = [ "libc", "pango-sys", "pkg-config", - "system-deps", + "system-deps 6.2.2", ] [[package]] name = "gdkwayland-sys" -version = "0.18.0" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a90fbf5c033c65d93792192a49a8efb5bb1e640c419682a58bb96f5ae77f3d4a" +checksum = "cca49a59ad8cfdf36ef7330fe7bdfbe1d34323220cc16a0de2679ee773aee2c2" dependencies = [ "gdk-sys", "glib-sys", "gobject-sys", "libc", "pkg-config", - "system-deps", -] - -[[package]] -name = "gdkx11" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2ea8a4909d530f79921290389cbd7c34cb9d623bfe970eaae65ca5f9cd9cce" -dependencies = [ - "gdk", - "gdkx11-sys", - "gio", - "glib", - "libc", - "x11", + "system-deps 6.2.2", ] [[package]] name = "gdkx11-sys" -version = "0.18.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fee8f00f4ee46cad2939b8990f5c70c94ff882c3028f3cc5abf950fa4ab53043" +checksum = "b4b7f8c7a84b407aa9b143877e267e848ff34106578b64d1e0a24bf550716178" dependencies = [ "gdk-sys", "glib-sys", "libc", - "system-deps", + "system-deps 6.2.2", "x11", ] @@ -994,60 +949,55 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "gio" -version = "0.18.4" +version = "0.15.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fc8f532f87b79cbc51a79748f16a6828fb784be93145a322fa14d06d354c73" +checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" dependencies = [ + "bitflags 1.3.2", "futures-channel", "futures-core", "futures-io", - "futures-util", "gio-sys", "glib", "libc", "once_cell", - "pin-project-lite", - "smallvec", "thiserror", ] [[package]] name = "gio-sys" -version = "0.18.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37566df850baf5e4cb0dfb78af2e4b9898d817ed9263d1090a2df958c64737d2" +checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps", + "system-deps 6.2.2", "winapi", ] [[package]] name = "glib" -version = "0.18.5" +version = "0.15.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233daaf6e83ae6a12a52055f568f9d7cf4671dabb78ff9560ab6da230ce00ee5" +checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" dependencies = [ - "bitflags 2.5.0", + "bitflags 1.3.2", "futures-channel", "futures-core", "futures-executor", "futures-task", - "futures-util", - "gio-sys", "glib-macros", "glib-sys", "gobject-sys", "libc", - "memchr", "once_cell", "smallvec", "thiserror", @@ -1055,26 +1005,27 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.18.5" +version = "0.15.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bb0228f477c0900c880fd78c8759b95c7636dbd7842707f49e132378aa2acdc" +checksum = "10c6ae9f6fa26f4fb2ac16b528d138d971ead56141de489f8111e259b9df3c4a" dependencies = [ + "anyhow", "heck 0.4.1", - "proc-macro-crate 2.0.0", + "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.61", + "syn 1.0.109", ] [[package]] name = "glib-sys" -version = "0.18.1" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "063ce2eb6a8d0ea93d2bf8ba1957e78dbab6be1c2220dd3daca57d5a9d869898" +checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" dependencies = [ "libc", - "system-deps", + "system-deps 6.2.2", ] [[package]] @@ -1083,24 +1034,38 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +[[package]] +name = "globset" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57da3b9b5b85bd66f31093f8c408b90a74431672542466497dcbdfdc02034be1" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", +] + [[package]] name = "gobject-sys" -version = "0.18.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0850127b514d1c4a4654ead6dedadb18198999985908e6ffe4436f53c785ce44" +checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" dependencies = [ "glib-sys", "libc", - "system-deps", + "system-deps 6.2.2", ] [[package]] name = "gtk" -version = "0.18.1" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93c4f5e0e20b60e10631a5f06da7fe3dda744b05ad0ea71fee2f47adf865890c" +checksum = "92e3004a2d5d6d8b5057d2b57b3712c9529b62e82c77f25c1fecde1fd5c23bd0" dependencies = [ "atk", + "bitflags 1.3.2", "cairo-rs", "field-offset", "futures-channel", @@ -1111,15 +1076,16 @@ dependencies = [ "gtk-sys", "gtk3-macros", "libc", + "once_cell", "pango", "pkg-config", ] [[package]] name = "gtk-sys" -version = "0.18.0" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "771437bf1de2c1c0b496c11505bdf748e26066bbe942dfc8f614c9460f6d7722" +checksum = "d5bc2f0587cba247f60246a0ca11fe25fb733eabc3de12d1965fc07efab87c84" dependencies = [ "atk-sys", "cairo-sys-rs", @@ -1130,20 +1096,21 @@ dependencies = [ "gobject-sys", "libc", "pango-sys", - "system-deps", + "system-deps 6.2.2", ] [[package]] name = "gtk3-macros" -version = "0.18.0" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6063efb63db582968fb7df72e1ae68aa6360dcfb0a75143f34fc7d616bad75e" +checksum = "684c0456c086e8e7e9af73ec5b84e35938df394712054550e81558d21c44ab0d" dependencies = [ - "proc-macro-crate 1.3.1", + "anyhow", + "proc-macro-crate", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.61", + "syn 1.0.109", ] [[package]] @@ -1158,6 +1125,15 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" +[[package]] +name = "heck" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "heck" version = "0.4.1" @@ -1170,12 +1146,6 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" -[[package]] -name = "hermit-abi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - [[package]] name = "hex" version = "0.4.3" @@ -1198,9 +1168,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -1208,95 +1178,33 @@ dependencies = [ ] [[package]] -name = "http-body" -version = "1.0.0" +name = "http-range" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" -dependencies = [ - "bytes", - "http", -] +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" [[package]] -name = "http-body-util" -version = "0.1.1" +name = "iana-time-zone" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "httparse" -version = "1.8.0" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "hyper" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe575dd17d0862a9a33781c8c4696a55c320909004a67a00fb286ba8b1bc496d" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "httparse", - "itoa 1.0.11", - "pin-project-lite", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" -dependencies = [ - "bytes", - "futures-channel", - "futures-util", - "http", - "http-body", - "hyper", - "pin-project-lite", - "socket2", - "tokio", - "tower", - "tower-service", - "tracing", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.60" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core 0.52.0", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] [[package]] name = "ico" @@ -1324,6 +1232,34 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "ignore" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b46810df39e66e925525d6e38ce1e7f6e1d208f72dc39757880fcb66e2c58af1" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata 0.4.7", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "image" +version = "0.24.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" +dependencies = [ + "bytemuck", + "byteorder", + "color_quant", + "num-traits", +] + [[package]] name = "indexmap" version = "1.9.3" @@ -1337,9 +1273,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "93ead53efc7ea8ed3cfb0c79fc8023fbb782a5432b52830b6518941cebe6505c" dependencies = [ "equivalent", "hashbrown 0.14.5", @@ -1348,28 +1284,22 @@ dependencies = [ [[package]] name = "infer" -version = "0.15.0" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb33622da908807a06f9513c19b3c1ad50fab3e4137d82a78107d502075aa199" +checksum = "f551f8c3a39f68f986517db0d1759de85881894fdc7db798bd2a9df9cb04b7fc" dependencies = [ "cfb", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - [[package]] name = "itoa" version = "0.4.8" @@ -1384,9 +1314,9 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "javascriptcore-rs" -version = "1.1.2" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca5671e9ffce8ffba57afc24070e906da7fc4b1ba66f2cabebf61bf2ea257fcc" +checksum = "bf053e7843f2812ff03ef5afe34bb9c06ffee120385caad4f6b9967fcd37d41c" dependencies = [ "bitflags 1.3.2", "glib", @@ -1395,30 +1325,28 @@ dependencies = [ [[package]] name = "javascriptcore-rs-sys" -version = "1.1.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1be78d14ffa4b75b66df31840478fef72b51f8c2465d4ca7c194da9f7a5124" +checksum = "905fbb87419c5cde6e3269537e4ea7d46431f3008c5d057e915ef3f115e7793c" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps", + "system-deps 5.0.0", ] [[package]] name = "jni" -version = "0.21.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" +checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" dependencies = [ "cesu8", - "cfg-if", "combine", "jni-sys", "log", "thiserror", "walkdir", - "windows-sys 0.45.0", ] [[package]] @@ -1429,9 +1357,9 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -1447,17 +1375,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "keyboard-types" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b750dcadc39a09dbadd74e118f6dd6598df77fa01df0cfcdc52c28dece74528a" -dependencies = [ - "bitflags 2.5.0", - "serde", - "unicode-segmentation", -] - [[package]] name = "kuchikiki" version = "0.8.2" @@ -1473,59 +1390,15 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "libappindicator" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03589b9607c868cc7ae54c0b2a22c8dc03dd41692d48f2d7df73615c6a95dc0a" -dependencies = [ - "glib", - "gtk", - "gtk-sys", - "libappindicator-sys", - "log", -] - -[[package]] -name = "libappindicator-sys" -version = "0.9.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e9ec52138abedcc58dc17a7c6c0c00a2bdb4f3427c7f63fa97fd0d859155caf" -dependencies = [ - "gtk-sys", - "libloading 0.7.4", - "once_cell", -] +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.154" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" - -[[package]] -name = "libloading" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" -dependencies = [ - "cfg-if", - "winapi", -] - -[[package]] -name = "libloading" -version = "0.8.3" +version = "0.2.156" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" -dependencies = [ - "cfg-if", - "windows-targets 0.52.5", -] +checksum = "a5f43f184355eefb8d17fc948dbecf6c13be3c141f20d834ae842193a448c72a" [[package]] name = "libredox" @@ -1533,15 +1406,16 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", "libc", + "redox_syscall", ] [[package]] -name = "line-wrap" -version = "0.2.0" +name = "linux-raw-sys" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd1bc4d24ad230d21fb898d1116b1801d7adfc449d42026475862ab48b11e70e" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" @@ -1555,9 +1429,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "loom" @@ -1620,9 +1494,9 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memoffset" @@ -1633,63 +1507,26 @@ dependencies = [ "autocfg", ] -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - [[package]] name = "miniz_oxide" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", "simd-adler32", ] -[[package]] -name = "mio" -version = "0.8.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" -dependencies = [ - "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.48.0", -] - -[[package]] -name = "muda" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6fde56ead0971b4caae4aa0f19502e49d1fac2af9d0c60068e2d235e26ce709" -dependencies = [ - "cocoa", - "crossbeam-channel", - "dpi", - "gtk", - "keyboard-types", - "objc", - "once_cell", - "png", - "serde", - "thiserror", - "windows-sys 0.52.0", -] - [[package]] name = "ndk" -version = "0.7.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" +checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" dependencies = [ "bitflags 1.3.2", "jni-sys", "ndk-sys", "num_enum", - "raw-window-handle 0.5.2", "thiserror", ] @@ -1701,9 +1538,9 @@ checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" [[package]] name = "ndk-sys" -version = "0.4.1+23.1.7779620" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" +checksum = "6e5a6ae77c8ee183dcbbba6150e2e6b9f3f4196a7666c02a715a95692ec1fa97" dependencies = [ "jni-sys", ] @@ -1745,16 +1582,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - [[package]] name = "num_enum" version = "0.5.11" @@ -1770,7 +1597,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ - "proc-macro-crate 1.3.1", + "proc-macro-crate", "proc-macro2", "quote", "syn 1.0.109", @@ -1806,9 +1633,9 @@ dependencies = [ [[package]] name = "object" -version = "0.32.2" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "27b64972346851a39438c60b341ebc01bba47464ae329e55cf343eb93964efd9" dependencies = [ "memchr", ] @@ -1827,11 +1654,11 @@ checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "pango" -version = "0.18.3" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ca27ec1eb0457ab26f3036ea52229edbdb74dee1edd29063f5b9b010e7ebee4" +checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" dependencies = [ - "gio", + "bitflags 1.3.2", "glib", "libc", "once_cell", @@ -1840,21 +1667,21 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.18.0" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "436737e391a843e5933d6d9aa102cb126d501e815b83601365a948a518555dc5" +checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" dependencies = [ "glib-sys", "gobject-sys", "libc", - "system-deps", + "system-deps 6.2.2", ] [[package]] name = "parking_lot" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -1870,7 +1697,7 @@ dependencies = [ "libc", "redox_syscall", "smallvec", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] @@ -1983,7 +1810,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] @@ -2013,26 +1840,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - [[package]] name = "pin-project-lite" version = "0.2.14" @@ -2053,13 +1860,12 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "plist" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9d34169e64b3c7a80c8621a48adaf44e0cf62c78a9b25dd9dd35f1881a17cf9" +checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ - "base64 0.21.7", - "indexmap 2.2.6", - "line-wrap", + "base64 0.22.1", + "indexmap 2.4.0", "quick-xml", "serde", "time", @@ -2086,9 +1892,12 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "precomputed-hash" @@ -2106,15 +1915,6 @@ dependencies = [ "toml_edit 0.19.15", ] -[[package]] -name = "proc-macro-crate" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" -dependencies = [ - "toml_edit 0.20.7", -] - [[package]] name = "proc-macro-error" version = "1.0.4" @@ -2147,18 +1947,18 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.82" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" dependencies = [ "memchr", ] @@ -2259,19 +2059,13 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" -[[package]] -name = "raw-window-handle" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc3bcbdb1ddfc11e700e62968e6b4cc9c75bb466464ad28fb61c5b2c964418b" - [[package]] name = "redox_syscall" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4" dependencies = [ - "bitflags 2.5.0", + "bitflags 2.6.0", ] [[package]] @@ -2287,14 +2081,14 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.6", - "regex-syntax 0.8.3", + "regex-automata 0.4.7", + "regex-syntax 0.8.4", ] [[package]] @@ -2308,13 +2102,13 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.3", + "regex-syntax 0.8.4", ] [[package]] @@ -2325,46 +2119,9 @@ checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" - -[[package]] -name = "reqwest" -version = "0.12.4" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" -dependencies = [ - "base64 0.22.1", - "bytes", - "futures-core", - "futures-util", - "http", - "http-body", - "http-body-util", - "hyper", - "hyper-util", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "serde", - "serde_json", - "serde_urlencoded", - "sync_wrapper", - "tokio", - "tokio-util", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "wasm-streams", - "web-sys", - "winreg", -] +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rustc-demangle" @@ -2381,11 +2138,24 @@ dependencies = [ "semver", ] +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.6.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + [[package]] name = "rustversion" -version = "1.0.16" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "092474d1a01ea8278f69e6a358998405fae5b8b963ddaeb2b0b04a128bf1dfb0" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" @@ -2402,32 +2172,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "schemars" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6e7ed6919cb46507fb01ff1654309219f62b4d603822501b0b80d42f6f21ef" -dependencies = [ - "dyn-clone", - "indexmap 1.9.3", - "schemars_derive", - "serde", - "serde_json", - "url", -] - -[[package]] -name = "schemars_derive" -version = "0.8.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "185f2b7aa7e02d418e453790dde16890256bbd2bcd04b7dc5348811052b53f49" -dependencies = [ - "proc-macro2", - "quote", - "serde_derive_internals", - "syn 2.0.61", -] - [[package]] name = "scoped-tls" version = "1.0.1" @@ -2471,42 +2215,33 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.201" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" +checksum = "cff085d2cb684faa248efb494c39b68e522822ac0de72ccf08109abde717cfb2" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.201" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - -[[package]] -name = "serde_derive_internals" -version = "0.29.0" +version = "1.0.208" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330f01ce65a3a5fe59a60c82f3c9a024b573b8a6e875bd233fe5f934e71d54e3" +checksum = "24008e81ff7613ed8e5ba0cfaf24e2c2f1e5b8a0495711e44fcd4882fca62bcf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "83c8e735a073ccf5be70aa8066aa984eaf2fa000db6c8d0100ae605b366d31ed" dependencies = [ + "indexmap 2.4.0", "itoa 1.0.11", + "memchr", "ryu", "serde", ] @@ -2519,41 +2254,29 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] name = "serde_spanned" -version = "0.6.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" -dependencies = [ - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" dependencies = [ - "form_urlencoded", - "itoa 1.0.11", - "ryu", "serde", ] [[package]] name = "serde_with" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad483d2ab0149d5a5ebcd9972a3852711e0153d863bf5a5d0391d28883c4a20" +checksum = "69cecfa94848272156ea67b2b1a53f20fc7bc638c4a46d2f8abde08f05f4b857" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.2.6", + "indexmap 2.4.0", "serde", "serde_derive", "serde_json", @@ -2563,14 +2286,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.8.1" +version = "3.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65569b702f41443e8bc8bbb1c5779bd0450bbe723b56198980e80ec45780bce2" +checksum = "a8fee4991ef4f274617a51ad4af30519438dacb2f56ac773b08a1922ff743350" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] @@ -2625,6 +2348,12 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "simd-adler32" version = "0.3.7" @@ -2653,61 +2382,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] -name = "socket2" -version = "0.5.7" +name = "soup2" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "b2b4d76501d8ba387cf0fefbe055c3e0a59891d09f0f995ae4e4b16f6b60f3c0" dependencies = [ + "bitflags 1.3.2", + "gio", + "glib", "libc", - "windows-sys 0.52.0", + "once_cell", + "soup2-sys", ] [[package]] -name = "softbuffer" -version = "0.4.2" +name = "soup2-sys" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61d5d17f23326fe0d9b0af282f73f3af666699420fd5f42629efd9c6e7dc166f" -dependencies = [ - "bytemuck", - "cfg_aliases", - "cocoa", - "core-graphics", - "foreign-types", - "js-sys", - "log", - "objc", - "raw-window-handle 0.6.1", - "redox_syscall", - "wasm-bindgen", - "wayland-sys", - "web-sys", - "windows-sys 0.52.0", -] - -[[package]] -name = "soup3" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "471f924a40f31251afc77450e781cb26d55c0b650842efafc9c6cbd2f7cc4f9f" -dependencies = [ - "futures-channel", - "gio", - "glib", - "libc", - "soup3-sys", -] - -[[package]] -name = "soup3-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ebe8950a680a12f24f15ebe1bf70db7af98ad242d9db43596ad3108aab86c27" +checksum = "009ef427103fcb17f802871647a7fa6c60cbb654b4c4e4c0ac60a31c5f6dc9cf" dependencies = [ + "bitflags 1.3.2", "gio-sys", "glib-sys", "gobject-sys", "libc", - "system-deps", + "system-deps 5.0.0", ] [[package]] @@ -2718,9 +2417,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "state" -version = "0.6.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b8c4a4445d81357df8b1a650d0d0d6fbbbfe99d064aa5e02f3e4022061476d8" +checksum = "dbe866e1e51e8260c9eed836a042a5e7f6726bb2b411dffeaa712e19c388f23b" dependencies = [ "loom", ] @@ -2753,20 +2452,9 @@ dependencies = [ [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - -[[package]] -name = "swift-rs" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bbdb58577b6301f8d17ae2561f32002a5bae056d444e0f69e611e504a276204" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -2781,9 +2469,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.61" +version = "2.0.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" +checksum = "1fceb41e3d546d0bd83421d3409b1460cc7444cd389341a4c880fe7a042cb3d7" dependencies = [ "proc-macro2", "quote", @@ -2791,10 +2479,17 @@ dependencies = [ ] [[package]] -name = "sync_wrapper" -version = "0.1.2" +name = "system-deps" +version = "5.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" +dependencies = [ + "cfg-expr 0.9.1", + "heck 0.3.3", + "pkg-config", + "toml 0.5.11", + "version-compare 0.0.11", +] [[package]] name = "system-deps" @@ -2802,30 +2497,37 @@ version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ - "cfg-expr", + "cfg-expr 0.15.8", "heck 0.5.0", "pkg-config", - "toml 0.8.12", - "version-compare", + "toml 0.8.19", + "version-compare 0.2.0", ] [[package]] name = "tao" -version = "0.28.0" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12a8121bd5721ebbbe0889f8286d5824673beeb04071519b68916fbed04f3093" +checksum = "575c856fc21e551074869dcfaad8f706412bd5b803dfa0fbf6881c4ff4bfafab" dependencies = [ - "bitflags 2.5.0", + "bitflags 1.3.2", + "cairo-rs", + "cc", "cocoa", "core-foundation", "core-graphics", "crossbeam-channel", "dispatch", - "dlopen2", - "dpi", + "gdk", + "gdk-pixbuf", + "gdk-sys", "gdkwayland-sys", "gdkx11-sys", + "gio", + "glib", + "glib-sys", "gtk", + "image", "instant", "jni", "lazy_static", @@ -2837,14 +2539,15 @@ dependencies = [ "objc", "once_cell", "parking_lot", - "raw-window-handle 0.6.1", + "png", + "raw-window-handle", "scopeguard", + "serde", "tao-macros", "unicode-segmentation", - "url", - "windows 0.56.0", - "windows-core 0.56.0", - "windows-version", + "uuid", + "windows 0.39.0", + "windows-implement", "x11-dl", ] @@ -2859,90 +2562,106 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "tar" +version = "0.4.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb797dad5fb5b76fcf519e702f4a589483b5ef06567f160c392832c1f5e44909" +dependencies = [ + "filetime", + "libc", + "xattr", +] + [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "tauri" +version = "0.1.0" +dependencies = [ + "serde", + "serde_json", + "tauri 1.7.1", + "tauri-build", +] [[package]] name = "tauri" -version = "2.0.0-beta.19" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8e5bc2e4f5eb7496d1a3e5f4d272f69f1333db5f8efed28d79d7f93334fe95" +checksum = "336bc661a3f3250853fa83c6e5245449ed1c26dce5dcb28bdee7efedf6278806" dependencies = [ "anyhow", - "bytes", "cocoa", "dirs-next", "dunce", "embed_plist", + "encoding_rs", + "flate2", "futures-util", "getrandom 0.2.15", + "glib", "glob", "gtk", "heck 0.5.0", "http", - "jni", - "libc", - "log", - "mime", - "muda", + "ignore", "objc", + "once_cell", "percent-encoding", - "raw-window-handle 0.6.1", - "reqwest", + "rand 0.8.5", + "raw-window-handle", + "semver", "serde", "serde_json", "serde_repr", "serialize-to-javascript", "state", - "swift-rs", - "tauri-build", + "tar", "tauri-macros", "tauri-runtime", "tauri-runtime-wry", "tauri-utils", + "tempfile", "thiserror", "tokio", - "tray-icon", "url", - "urlpattern", + "uuid", "webkit2gtk", "webview2-com", - "window-vibrancy", - "windows 0.56.0", + "windows 0.39.0", ] [[package]] name = "tauri-build" -version = "2.0.0-beta.15" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aa28eebafcda490fa7097a6e3a4d07f65967614d35dd88b2aaa19dbb49241cd" +checksum = "b0c6ec7a5c3296330c7818478948b422967ce4649094696c985f61d50076d29c" dependencies = [ "anyhow", "cargo_toml", "dirs-next", - "glob", "heck 0.5.0", "json-patch", - "schemars", "semver", "serde", "serde_json", "tauri-utils", "tauri-winres", - "toml 0.8.12", "walkdir", ] [[package]] name = "tauri-codegen" -version = "2.0.0-beta.15" +version = "1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "727d13a28e9ec895f537d90a09acb0aa3593f703a715fe8a77f87269d3245b52" +checksum = "c1aed706708ff1200ec12de9cfbf2582b5d8ec05f6a7293911091effbd22036b" dependencies = [ - "base64 0.22.1", + "base64 0.21.7", "brotli", "ico", "json-patch", @@ -2954,80 +2673,75 @@ dependencies = [ "serde", "serde_json", "sha2", - "syn 2.0.61", "tauri-utils", "thiserror", "time", - "url", "uuid", "walkdir", ] [[package]] name = "tauri-macros" -version = "2.0.0-beta.15" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "258667612ad901d256e04ace71ac54d4b3dd8fb1e5baa24403b50991cade4365" +checksum = "b88f831d2973ae4f81a706a0004e67dac87f2e4439973bbe98efbd73825d8ede" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.61", + "syn 1.0.109", "tauri-codegen", "tauri-utils", ] [[package]] name = "tauri-runtime" -version = "2.0.0-beta.16" +version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "574f3d59cbe6c76b6d849bc35aa3a9e8061ff8f75f557dc33f38c0e43cf55a41" +checksum = "3068ed62b63dedc705558f4248c7ecbd5561f0f8050949859ea0db2326f26012" dependencies = [ - "dpi", "gtk", "http", - "jni", - "raw-window-handle 0.6.1", + "http-range", + "rand 0.8.5", + "raw-window-handle", "serde", "serde_json", "tauri-utils", "thiserror", "url", - "windows 0.56.0", + "uuid", + "webview2-com", + "windows 0.39.0", ] [[package]] name = "tauri-runtime-wry" -version = "2.0.0-beta.16" +version = "0.14.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6d1f223de1d674aaa561c900ac650b3160f11520e9b191a3574f6c493fc77fa" +checksum = "d4c3db170233096aa30330feadcd895bf9317be97e624458560a20e814db7955" dependencies = [ "cocoa", "gtk", - "http", - "jni", - "log", "percent-encoding", - "raw-window-handle 0.6.1", - "softbuffer", - "tao", + "rand 0.8.5", + "raw-window-handle", "tauri-runtime", "tauri-utils", - "url", + "uuid", "webkit2gtk", "webview2-com", - "windows 0.56.0", + "windows 0.39.0", "wry", ] [[package]] name = "tauri-utils" -version = "2.0.0-beta.15" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b4251529d92b5c611ccaa611f8a31cb41b1aa00db8bcc0a49efe5d966bfa911" +checksum = "2826db448309d382dac14d520f0c0a40839b87b57b977e59cf5f296b3ace6a93" dependencies = [ "brotli", - "cargo_metadata", "ctor", "dunce", "glob", @@ -3041,18 +2755,14 @@ dependencies = [ "phf 0.11.2", "proc-macro2", "quote", - "regex", - "schemars", "semver", "serde", "serde_json", "serde_with", - "swift-rs", "thiserror", - "toml 0.8.12", "url", - "urlpattern", "walkdir", + "windows-version", ] [[package]] @@ -3065,6 +2775,19 @@ dependencies = [ "toml 0.7.8", ] +[[package]] +name = "tempfile" +version = "3.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + [[package]] name = "tendril" version = "0.4.3" @@ -3084,22 +2807,22 @@ checksum = "8eaa81235c7058867fa8c0e7314f33dcce9c215f535d1913822a2b3f5e289f3c" [[package]] name = "thiserror" -version = "1.0.60" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.60" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] @@ -3145,9 +2868,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -3160,31 +2883,22 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.37.0" +version = "1.39.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" +checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" dependencies = [ "backtrace", "bytes", - "libc", - "mio", - "num_cpus", "pin-project-lite", - "socket2", - "windows-sys 0.48.0", ] [[package]] -name = "tokio-util" -version = "0.7.11" +name = "toml" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", + "serde", ] [[package]] @@ -3201,21 +2915,21 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.12" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.12", + "toml_edit 0.22.20", ] [[package]] name = "toml_datetime" -version = "0.6.5" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -3226,7 +2940,7 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.2.6", + "indexmap 2.4.0", "serde", "serde_spanned", "toml_datetime", @@ -3235,63 +2949,23 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.20.7" +version = "0.22.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +checksum = "583c44c02ad26b0c3f3066fe629275e50627026c51ac2e595cca4c230ce1ce1d" dependencies = [ - "indexmap 2.2.6", - "toml_datetime", - "winnow 0.5.40", -] - -[[package]] -name = "toml_edit" -version = "0.22.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" -dependencies = [ - "indexmap 2.2.6", + "indexmap 2.4.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.8", -] - -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", - "tracing", + "winnow 0.6.18", ] -[[package]] -name = "tower-layer" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - [[package]] name = "tracing" version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "log", "pin-project-lite", "tracing-attributes", "tracing-core", @@ -3305,7 +2979,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.74", ] [[package]] @@ -3347,79 +3021,12 @@ dependencies = [ "tracing-log", ] -[[package]] -name = "tray-icon" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39240037d755a1832e752d64f99078c3b0b21c09a71c12405070c75ef4e7cd3c" -dependencies = [ - "cocoa", - "core-graphics", - "crossbeam-channel", - "dirs-next", - "libappindicator", - "muda", - "objc", - "once_cell", - "png", - "serde", - "thiserror", - "windows-sys 0.52.0", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "typenum" version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unic-char-property" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8c57a407d9b6fa02b4795eb81c5b6652060a15a7903ea981f3d723e6c0be221" -dependencies = [ - "unic-char-range", -] - -[[package]] -name = "unic-char-range" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0398022d5f700414f6b899e10b8348231abf9173fa93144cbc1a43b9793c1fbc" - -[[package]] -name = "unic-common" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d7ff825a6a654ee85a63e80f92f054f904f21e7d12da4e22f9834a4aaa35bc" - -[[package]] -name = "unic-ucd-ident" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e230a37c0381caa9219d67cf063aa3a375ffed5bf541a452db16e744bdab6987" -dependencies = [ - "unic-char-property", - "unic-char-range", - "unic-ucd-version", -] - -[[package]] -name = "unic-ucd-version" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96bd2f2237fe450fcd0a1d2f5f4e91711124f7857ba2e964247776ebeeb7b0c4" -dependencies = [ - "unic-common", -] - [[package]] name = "unicode-bidi" version = "0.3.15" @@ -3449,9 +3056,9 @@ checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -3459,19 +3066,6 @@ dependencies = [ "serde", ] -[[package]] -name = "urlpattern" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9bd5ff03aea02fa45b13a7980151fe45009af1980ba69f651ec367121a31609" -dependencies = [ - "derive_more", - "regex", - "serde", - "unic-ucd-ident", - "url", -] - [[package]] name = "utf-8" version = "0.7.6" @@ -3480,9 +3074,9 @@ checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" [[package]] name = "uuid" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom 0.2.15", ] @@ -3493,6 +3087,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +[[package]] +name = "version-compare" +version = "0.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" + [[package]] name = "version-compare" version = "0.2.0" @@ -3501,9 +3101,9 @@ checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vswhom" @@ -3535,15 +3135,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - [[package]] name = "wasi" version = "0.9.0+wasi-snapshot-preview1" @@ -3558,46 +3149,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.74", "wasm-bindgen-shared", ] -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.42" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3605,62 +3185,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 2.0.74", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" - -[[package]] -name = "wasm-streams" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b65dc4c90b63b118468cf747d8bf3566c1913ef60be765b5730ead9e0a3ba129" -dependencies = [ - "futures-util", - "js-sys", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - -[[package]] -name = "wayland-sys" -version = "0.31.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" -dependencies = [ - "dlib", - "log", - "pkg-config", -] - -[[package]] -name = "web-sys" -version = "0.3.69" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" -dependencies = [ - "js-sys", - "wasm-bindgen", -] +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "webkit2gtk" -version = "2.0.1" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76b1bc1e54c581da1e9f179d0b38512ba358fb1af2d634a1affe42e37172361a" +checksum = "b8f859735e4a452aeb28c6c56a852967a8a76c8eb1cc32dbf931ad28a13d6370" dependencies = [ "bitflags 1.3.2", "cairo-rs", @@ -3676,18 +3222,20 @@ dependencies = [ "javascriptcore-rs", "libc", "once_cell", - "soup3", + "soup2", "webkit2gtk-sys", ] [[package]] name = "webkit2gtk-sys" -version = "2.0.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62daa38afc514d1f8f12b8693d30d5993ff77ced33ce30cd04deebc267a6d57c" +checksum = "4d76ca6ecc47aeba01ec61e480139dda143796abcae6f83bcddf50d6b5b1dcf3" dependencies = [ + "atk-sys", "bitflags 1.3.2", "cairo-sys-rs", + "gdk-pixbuf-sys", "gdk-sys", "gio-sys", "glib-sys", @@ -3695,45 +3243,48 @@ dependencies = [ "gtk-sys", "javascriptcore-rs-sys", "libc", + "pango-sys", "pkg-config", - "soup3-sys", - "system-deps", + "soup2-sys", + "system-deps 6.2.2", ] [[package]] name = "webview2-com" -version = "0.30.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c914dd492a52f0377bef56fd1b6e74a79090f9ee631d625d5b505a00e4538b6" +checksum = "b4a769c9f1a64a8734bde70caafac2b96cada12cd4aefa49196b3a386b8b4178" dependencies = [ "webview2-com-macros", "webview2-com-sys", - "windows 0.56.0", - "windows-core 0.56.0", + "windows 0.39.0", "windows-implement", - "windows-interface", ] [[package]] name = "webview2-com-macros" -version = "0.7.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1345798ecd8122468840bcdf1b95e5dc6d2206c5e4b0eafa078d061f59c9bc" +checksum = "eaebe196c01691db62e9e4ca52c5ef1e4fd837dcae27dae3ada599b5a8fd05ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.61", + "syn 1.0.109", ] [[package]] name = "webview2-com-sys" -version = "0.30.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a46bcf03482ec28eeb764ca788f67998cde4213adfbbfa90462622058530f5e" +checksum = "aac48ef20ddf657755fdcda8dfed2a7b4fc7e4581acce6fe9b88c3d64f29dee7" dependencies = [ + "regex", + "serde", + "serde_json", "thiserror", - "windows 0.56.0", - "windows-core 0.56.0", + "windows 0.39.0", + "windows-bindgen", + "windows-metadata", ] [[package]] @@ -3754,11 +3305,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3768,16 +3319,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "window-vibrancy" -version = "0.5.0" +name = "windows" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33082acd404763b315866e14a0d5193f3422c81086657583937a750cdd3ec340" +checksum = "f1c4bd0a50ac6020f65184721f758dba47bb9fbc2133df715ec74a237b26794a" dependencies = [ - "cocoa", - "objc", - "raw-window-handle 0.6.1", - "windows-sys 0.52.0", - "windows-version", + "windows-implement", + "windows_aarch64_msvc 0.39.0", + "windows_i686_gnu 0.39.0", + "windows_i686_msvc 0.39.0", + "windows_x86_64_gnu 0.39.0", + "windows_x86_64_msvc 0.39.0", ] [[package]] @@ -3790,13 +3342,13 @@ dependencies = [ ] [[package]] -name = "windows" -version = "0.56.0" +name = "windows-bindgen" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de69df01bdf1ead2f4ac895dc77c9351aefff65b2f3db429a343f9cbf05e132" +checksum = "68003dbd0e38abc0fb85b939240f4bce37c43a5981d3df37ccbaaa981b47cb41" dependencies = [ - "windows-core 0.56.0", - "windows-targets 0.52.5", + "windows-metadata", + "windows-tokens", ] [[package]] @@ -3805,60 +3357,24 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.5", -] - -[[package]] -name = "windows-core" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4698e52ed2d08f8658ab0c39512a7c00ee5fe2688c65f8c0a4f06750d729f2a6" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] name = "windows-implement" -version = "0.56.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6fc35f58ecd95a9b71c4f2329b911016e6bec66b3f2e6a4aad86bd2e99e2f9b" +checksum = "ba01f98f509cb5dc05f4e5fc95e535f78260f15fea8fe1a8abdd08f774f1cee7" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - -[[package]] -name = "windows-interface" -version = "0.56.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08990546bf4edef8f431fa6326e032865f27138718c587dc21bc0265bbcb57cc" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.61", -] - -[[package]] -name = "windows-result" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b" -dependencies = [ - "windows-targets 0.52.5", + "syn 1.0.109", + "windows-tokens", ] [[package]] -name = "windows-sys" -version = "0.45.0" +name = "windows-metadata" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" -dependencies = [ - "windows-targets 0.42.2", -] +checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" [[package]] name = "windows-sys" @@ -3875,22 +3391,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] [[package]] -name = "windows-targets" -version = "0.42.2" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows_aarch64_gnullvm 0.42.2", - "windows_aarch64_msvc 0.42.2", - "windows_i686_gnu 0.42.2", - "windows_i686_msvc 0.42.2", - "windows_x86_64_gnu 0.42.2", - "windows_x86_64_gnullvm 0.42.2", - "windows_x86_64_msvc 0.42.2", + "windows-targets 0.52.6", ] [[package]] @@ -3910,35 +3420,35 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.5", - "windows_aarch64_msvc 0.52.5", - "windows_i686_gnu 0.52.5", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc 0.52.5", - "windows_x86_64_gnu 0.52.5", - "windows_x86_64_gnullvm 0.52.5", - "windows_x86_64_msvc 0.52.5", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-tokens" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f838de2fe15fe6bac988e74b798f26499a8b21a9d97edec321e79b28d1d7f597" + [[package]] name = "windows-version" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6998aa457c9ba8ff2fb9f13e9d2a930dabcea28f1d0ab94d687d8b3654844515" dependencies = [ - "windows-targets 0.52.5", + "windows-targets 0.52.6", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -3947,15 +3457,15 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.42.2" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" +checksum = "ec7711666096bd4096ffa835238905bb33fb87267910e154b18b44eaabb340f2" [[package]] name = "windows_aarch64_msvc" @@ -3965,15 +3475,15 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.42.2" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" +checksum = "763fc57100a5f7042e3057e7e8d9bdd7860d330070251a73d003563a3bb49e1b" [[package]] name = "windows_i686_gnu" @@ -3983,21 +3493,21 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.42.2" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" +checksum = "7bc7cbfe58828921e10a9f446fcaaf649204dcfe6c1ddd712c5eebae6bda1106" [[package]] name = "windows_i686_msvc" @@ -4007,15 +3517,15 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.42.2" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" +checksum = "6868c165637d653ae1e8dc4d82c25d4f97dd6605eaa8d784b5c6e0ab2a252b65" [[package]] name = "windows_x86_64_gnu" @@ -4025,15 +3535,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.42.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -4043,15 +3547,15 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.2" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" +checksum = "5e4d40883ae9cae962787ca76ba76390ffa29214667a111db9e0a1ad8377e809" [[package]] name = "windows_x86_64_msvc" @@ -4061,9 +3565,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" @@ -4076,9 +3580,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.8" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +checksum = "68a9bda4691f099d435ad181000724da8e5899daa10713c2d432552b9ccd3a6f" dependencies = [ "memchr", ] @@ -4095,44 +3599,40 @@ dependencies = [ [[package]] name = "wry" -version = "0.39.5" +version = "0.24.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7172fc76376d55d089c627a31a5b604b4ac372793fb5378d1c7ddf008703008" +checksum = "00711278ed357350d44c749c286786ecac644e044e4da410d466212152383b45" dependencies = [ - "base64 0.22.1", + "base64 0.13.1", "block", "cocoa", "core-graphics", "crossbeam-channel", - "dpi", "dunce", - "gdkx11", + "gdk", + "gio", + "glib", "gtk", "html5ever", "http", - "javascriptcore-rs", - "jni", "kuchikiki", "libc", - "ndk", - "ndk-context", - "ndk-sys", + "log", "objc", "objc_id", "once_cell", - "percent-encoding", - "raw-window-handle 0.6.1", + "serde", + "serde_json", "sha2", - "soup3", - "tao-macros", + "soup2", + "tao", "thiserror", + "url", "webkit2gtk", "webkit2gtk-sys", "webview2-com", - "windows 0.56.0", - "windows-core 0.56.0", - "windows-version", - "x11-dl", + "windows 0.39.0", + "windows-implement", ] [[package]] @@ -4155,3 +3655,35 @@ dependencies = [ "once_cell", "pkg-config", ] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.74", +] diff --git a/apps/tauri/src-tauri/Cargo.toml b/apps/tauri/src-tauri/Cargo.toml index eb64bb72a..4c71aa147 100644 --- a/apps/tauri/src-tauri/Cargo.toml +++ b/apps/tauri/src-tauri/Cargo.toml @@ -1,26 +1,20 @@ [package] -name = "app" +name = "tauri" version = "0.1.0" description = "A Tauri App" authors = ["you"] -license = "" -repository = "" -default-run = "app" edition = "2021" -rust-version = "1.60" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [build-dependencies] -tauri-build = { version = "2.0.0-beta", features = [] } +tauri-build = { version = "1", features = [] } [dependencies] -serde_json = "1.0" -serde = { version = "1.0", features = ["derive"] } -tauri = { version = "2.0.0-beta", features = [] } +tauri = { version = "1", features = [] } +serde = { version = "1", features = ["derive"] } +serde_json = "1" [features] -# this feature is used for production builds or when `devPath` points to the filesystem and the built-in dev server is disabled. -# If you use cargo directly instead of tauri's cli you can use this feature flag to switch between tauri's `dev` and `build` modes. -# DO NOT REMOVE!! -custom-protocol = [ "tauri/custom-protocol" ] +# This feature is used for production builds or when a dev server is not specified, DO NOT REMOVE!! +custom-protocol = ["tauri/custom-protocol"] diff --git a/apps/tauri/src-tauri/capabilities/migrated.json b/apps/tauri/src-tauri/capabilities/migrated.json index 03fd3578e..f661bc36e 100644 --- a/apps/tauri/src-tauri/capabilities/migrated.json +++ b/apps/tauri/src-tauri/capabilities/migrated.json @@ -6,12 +6,12 @@ "main" ], "permissions": [ - "path:default", - "event:default", - "window:default", - "app:default", - "resources:default", - "menu:default", - "tray:default" + "core:path:default", + "core:event:default", + "core:window:default", + "core:app:default", + "core:resources:default", + "core:menu:default", + "core:tray:default" ] } \ No newline at end of file diff --git a/apps/tauri/src-tauri/gen/schemas/acl-manifests.json b/apps/tauri/src-tauri/gen/schemas/acl-manifests.json index c719d4706..f28aaa199 100644 --- a/apps/tauri/src-tauri/gen/schemas/acl-manifests.json +++ b/apps/tauri/src-tauri/gen/schemas/acl-manifests.json @@ -1 +1 @@ -{"app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":[]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":[]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-title","allow-current-monitor","allow-primary-monitor","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null}} \ No newline at end of file +{"core:app":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-version","allow-name","allow-tauri-version"]},"permissions":{"allow-app-hide":{"identifier":"allow-app-hide","description":"Enables the app_hide command without any pre-configured scope.","commands":{"allow":["app_hide"],"deny":[]}},"allow-app-show":{"identifier":"allow-app-show","description":"Enables the app_show command without any pre-configured scope.","commands":{"allow":["app_show"],"deny":[]}},"allow-default-window-icon":{"identifier":"allow-default-window-icon","description":"Enables the default_window_icon command without any pre-configured scope.","commands":{"allow":["default_window_icon"],"deny":[]}},"allow-name":{"identifier":"allow-name","description":"Enables the name command without any pre-configured scope.","commands":{"allow":["name"],"deny":[]}},"allow-tauri-version":{"identifier":"allow-tauri-version","description":"Enables the tauri_version command without any pre-configured scope.","commands":{"allow":["tauri_version"],"deny":[]}},"allow-version":{"identifier":"allow-version","description":"Enables the version command without any pre-configured scope.","commands":{"allow":["version"],"deny":[]}},"deny-app-hide":{"identifier":"deny-app-hide","description":"Denies the app_hide command without any pre-configured scope.","commands":{"allow":[],"deny":["app_hide"]}},"deny-app-show":{"identifier":"deny-app-show","description":"Denies the app_show command without any pre-configured scope.","commands":{"allow":[],"deny":["app_show"]}},"deny-default-window-icon":{"identifier":"deny-default-window-icon","description":"Denies the default_window_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["default_window_icon"]}},"deny-name":{"identifier":"deny-name","description":"Denies the name command without any pre-configured scope.","commands":{"allow":[],"deny":["name"]}},"deny-tauri-version":{"identifier":"deny-tauri-version","description":"Denies the tauri_version command without any pre-configured scope.","commands":{"allow":[],"deny":["tauri_version"]}},"deny-version":{"identifier":"deny-version","description":"Denies the version command without any pre-configured scope.","commands":{"allow":[],"deny":["version"]}}},"permission_sets":{},"global_scope_schema":null},"core:event":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-listen","allow-unlisten","allow-emit","allow-emit-to"]},"permissions":{"allow-emit":{"identifier":"allow-emit","description":"Enables the emit command without any pre-configured scope.","commands":{"allow":["emit"],"deny":[]}},"allow-emit-to":{"identifier":"allow-emit-to","description":"Enables the emit_to command without any pre-configured scope.","commands":{"allow":["emit_to"],"deny":[]}},"allow-listen":{"identifier":"allow-listen","description":"Enables the listen command without any pre-configured scope.","commands":{"allow":["listen"],"deny":[]}},"allow-unlisten":{"identifier":"allow-unlisten","description":"Enables the unlisten command without any pre-configured scope.","commands":{"allow":["unlisten"],"deny":[]}},"deny-emit":{"identifier":"deny-emit","description":"Denies the emit command without any pre-configured scope.","commands":{"allow":[],"deny":["emit"]}},"deny-emit-to":{"identifier":"deny-emit-to","description":"Denies the emit_to command without any pre-configured scope.","commands":{"allow":[],"deny":["emit_to"]}},"deny-listen":{"identifier":"deny-listen","description":"Denies the listen command without any pre-configured scope.","commands":{"allow":[],"deny":["listen"]}},"deny-unlisten":{"identifier":"deny-unlisten","description":"Denies the unlisten command without any pre-configured scope.","commands":{"allow":[],"deny":["unlisten"]}}},"permission_sets":{},"global_scope_schema":null},"core:image":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-from-bytes","allow-from-path","allow-rgba","allow-size"]},"permissions":{"allow-from-bytes":{"identifier":"allow-from-bytes","description":"Enables the from_bytes command without any pre-configured scope.","commands":{"allow":["from_bytes"],"deny":[]}},"allow-from-path":{"identifier":"allow-from-path","description":"Enables the from_path command without any pre-configured scope.","commands":{"allow":["from_path"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-rgba":{"identifier":"allow-rgba","description":"Enables the rgba command without any pre-configured scope.","commands":{"allow":["rgba"],"deny":[]}},"allow-size":{"identifier":"allow-size","description":"Enables the size command without any pre-configured scope.","commands":{"allow":["size"],"deny":[]}},"deny-from-bytes":{"identifier":"deny-from-bytes","description":"Denies the from_bytes command without any pre-configured scope.","commands":{"allow":[],"deny":["from_bytes"]}},"deny-from-path":{"identifier":"deny-from-path","description":"Denies the from_path command without any pre-configured scope.","commands":{"allow":[],"deny":["from_path"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-rgba":{"identifier":"deny-rgba","description":"Denies the rgba command without any pre-configured scope.","commands":{"allow":[],"deny":["rgba"]}},"deny-size":{"identifier":"deny-size","description":"Denies the size command without any pre-configured scope.","commands":{"allow":[],"deny":["size"]}}},"permission_sets":{},"global_scope_schema":null},"core:menu":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-append","allow-prepend","allow-insert","allow-remove","allow-remove-at","allow-items","allow-get","allow-popup","allow-create-default","allow-set-as-app-menu","allow-set-as-window-menu","allow-text","allow-set-text","allow-is-enabled","allow-set-enabled","allow-set-accelerator","allow-set-as-windows-menu-for-nsapp","allow-set-as-help-menu-for-nsapp","allow-is-checked","allow-set-checked","allow-set-icon"]},"permissions":{"allow-append":{"identifier":"allow-append","description":"Enables the append command without any pre-configured scope.","commands":{"allow":["append"],"deny":[]}},"allow-create-default":{"identifier":"allow-create-default","description":"Enables the create_default command without any pre-configured scope.","commands":{"allow":["create_default"],"deny":[]}},"allow-get":{"identifier":"allow-get","description":"Enables the get command without any pre-configured scope.","commands":{"allow":["get"],"deny":[]}},"allow-insert":{"identifier":"allow-insert","description":"Enables the insert command without any pre-configured scope.","commands":{"allow":["insert"],"deny":[]}},"allow-is-checked":{"identifier":"allow-is-checked","description":"Enables the is_checked command without any pre-configured scope.","commands":{"allow":["is_checked"],"deny":[]}},"allow-is-enabled":{"identifier":"allow-is-enabled","description":"Enables the is_enabled command without any pre-configured scope.","commands":{"allow":["is_enabled"],"deny":[]}},"allow-items":{"identifier":"allow-items","description":"Enables the items command without any pre-configured scope.","commands":{"allow":["items"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-popup":{"identifier":"allow-popup","description":"Enables the popup command without any pre-configured scope.","commands":{"allow":["popup"],"deny":[]}},"allow-prepend":{"identifier":"allow-prepend","description":"Enables the prepend command without any pre-configured scope.","commands":{"allow":["prepend"],"deny":[]}},"allow-remove":{"identifier":"allow-remove","description":"Enables the remove command without any pre-configured scope.","commands":{"allow":["remove"],"deny":[]}},"allow-remove-at":{"identifier":"allow-remove-at","description":"Enables the remove_at command without any pre-configured scope.","commands":{"allow":["remove_at"],"deny":[]}},"allow-set-accelerator":{"identifier":"allow-set-accelerator","description":"Enables the set_accelerator command without any pre-configured scope.","commands":{"allow":["set_accelerator"],"deny":[]}},"allow-set-as-app-menu":{"identifier":"allow-set-as-app-menu","description":"Enables the set_as_app_menu command without any pre-configured scope.","commands":{"allow":["set_as_app_menu"],"deny":[]}},"allow-set-as-help-menu-for-nsapp":{"identifier":"allow-set-as-help-menu-for-nsapp","description":"Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_help_menu_for_nsapp"],"deny":[]}},"allow-set-as-window-menu":{"identifier":"allow-set-as-window-menu","description":"Enables the set_as_window_menu command without any pre-configured scope.","commands":{"allow":["set_as_window_menu"],"deny":[]}},"allow-set-as-windows-menu-for-nsapp":{"identifier":"allow-set-as-windows-menu-for-nsapp","description":"Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":["set_as_windows_menu_for_nsapp"],"deny":[]}},"allow-set-checked":{"identifier":"allow-set-checked","description":"Enables the set_checked command without any pre-configured scope.","commands":{"allow":["set_checked"],"deny":[]}},"allow-set-enabled":{"identifier":"allow-set-enabled","description":"Enables the set_enabled command without any pre-configured scope.","commands":{"allow":["set_enabled"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-text":{"identifier":"allow-set-text","description":"Enables the set_text command without any pre-configured scope.","commands":{"allow":["set_text"],"deny":[]}},"allow-text":{"identifier":"allow-text","description":"Enables the text command without any pre-configured scope.","commands":{"allow":["text"],"deny":[]}},"deny-append":{"identifier":"deny-append","description":"Denies the append command without any pre-configured scope.","commands":{"allow":[],"deny":["append"]}},"deny-create-default":{"identifier":"deny-create-default","description":"Denies the create_default command without any pre-configured scope.","commands":{"allow":[],"deny":["create_default"]}},"deny-get":{"identifier":"deny-get","description":"Denies the get command without any pre-configured scope.","commands":{"allow":[],"deny":["get"]}},"deny-insert":{"identifier":"deny-insert","description":"Denies the insert command without any pre-configured scope.","commands":{"allow":[],"deny":["insert"]}},"deny-is-checked":{"identifier":"deny-is-checked","description":"Denies the is_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["is_checked"]}},"deny-is-enabled":{"identifier":"deny-is-enabled","description":"Denies the is_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["is_enabled"]}},"deny-items":{"identifier":"deny-items","description":"Denies the items command without any pre-configured scope.","commands":{"allow":[],"deny":["items"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-popup":{"identifier":"deny-popup","description":"Denies the popup command without any pre-configured scope.","commands":{"allow":[],"deny":["popup"]}},"deny-prepend":{"identifier":"deny-prepend","description":"Denies the prepend command without any pre-configured scope.","commands":{"allow":[],"deny":["prepend"]}},"deny-remove":{"identifier":"deny-remove","description":"Denies the remove command without any pre-configured scope.","commands":{"allow":[],"deny":["remove"]}},"deny-remove-at":{"identifier":"deny-remove-at","description":"Denies the remove_at command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_at"]}},"deny-set-accelerator":{"identifier":"deny-set-accelerator","description":"Denies the set_accelerator command without any pre-configured scope.","commands":{"allow":[],"deny":["set_accelerator"]}},"deny-set-as-app-menu":{"identifier":"deny-set-as-app-menu","description":"Denies the set_as_app_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_app_menu"]}},"deny-set-as-help-menu-for-nsapp":{"identifier":"deny-set-as-help-menu-for-nsapp","description":"Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_help_menu_for_nsapp"]}},"deny-set-as-window-menu":{"identifier":"deny-set-as-window-menu","description":"Denies the set_as_window_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_window_menu"]}},"deny-set-as-windows-menu-for-nsapp":{"identifier":"deny-set-as-windows-menu-for-nsapp","description":"Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.","commands":{"allow":[],"deny":["set_as_windows_menu_for_nsapp"]}},"deny-set-checked":{"identifier":"deny-set-checked","description":"Denies the set_checked command without any pre-configured scope.","commands":{"allow":[],"deny":["set_checked"]}},"deny-set-enabled":{"identifier":"deny-set-enabled","description":"Denies the set_enabled command without any pre-configured scope.","commands":{"allow":[],"deny":["set_enabled"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-text":{"identifier":"deny-set-text","description":"Denies the set_text command without any pre-configured scope.","commands":{"allow":[],"deny":["set_text"]}},"deny-text":{"identifier":"deny-text","description":"Denies the text command without any pre-configured scope.","commands":{"allow":[],"deny":["text"]}}},"permission_sets":{},"global_scope_schema":null},"core:path":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-resolve-directory","allow-resolve","allow-normalize","allow-join","allow-dirname","allow-extname","allow-basename","allow-is-absolute"]},"permissions":{"allow-basename":{"identifier":"allow-basename","description":"Enables the basename command without any pre-configured scope.","commands":{"allow":["basename"],"deny":[]}},"allow-dirname":{"identifier":"allow-dirname","description":"Enables the dirname command without any pre-configured scope.","commands":{"allow":["dirname"],"deny":[]}},"allow-extname":{"identifier":"allow-extname","description":"Enables the extname command without any pre-configured scope.","commands":{"allow":["extname"],"deny":[]}},"allow-is-absolute":{"identifier":"allow-is-absolute","description":"Enables the is_absolute command without any pre-configured scope.","commands":{"allow":["is_absolute"],"deny":[]}},"allow-join":{"identifier":"allow-join","description":"Enables the join command without any pre-configured scope.","commands":{"allow":["join"],"deny":[]}},"allow-normalize":{"identifier":"allow-normalize","description":"Enables the normalize command without any pre-configured scope.","commands":{"allow":["normalize"],"deny":[]}},"allow-resolve":{"identifier":"allow-resolve","description":"Enables the resolve command without any pre-configured scope.","commands":{"allow":["resolve"],"deny":[]}},"allow-resolve-directory":{"identifier":"allow-resolve-directory","description":"Enables the resolve_directory command without any pre-configured scope.","commands":{"allow":["resolve_directory"],"deny":[]}},"deny-basename":{"identifier":"deny-basename","description":"Denies the basename command without any pre-configured scope.","commands":{"allow":[],"deny":["basename"]}},"deny-dirname":{"identifier":"deny-dirname","description":"Denies the dirname command without any pre-configured scope.","commands":{"allow":[],"deny":["dirname"]}},"deny-extname":{"identifier":"deny-extname","description":"Denies the extname command without any pre-configured scope.","commands":{"allow":[],"deny":["extname"]}},"deny-is-absolute":{"identifier":"deny-is-absolute","description":"Denies the is_absolute command without any pre-configured scope.","commands":{"allow":[],"deny":["is_absolute"]}},"deny-join":{"identifier":"deny-join","description":"Denies the join command without any pre-configured scope.","commands":{"allow":[],"deny":["join"]}},"deny-normalize":{"identifier":"deny-normalize","description":"Denies the normalize command without any pre-configured scope.","commands":{"allow":[],"deny":["normalize"]}},"deny-resolve":{"identifier":"deny-resolve","description":"Denies the resolve command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve"]}},"deny-resolve-directory":{"identifier":"deny-resolve-directory","description":"Denies the resolve_directory command without any pre-configured scope.","commands":{"allow":[],"deny":["resolve_directory"]}}},"permission_sets":{},"global_scope_schema":null},"core:resources":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-close"]},"permissions":{"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}}},"permission_sets":{},"global_scope_schema":null},"core:tray":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-new","allow-get-by-id","allow-remove-by-id","allow-set-icon","allow-set-menu","allow-set-tooltip","allow-set-title","allow-set-visible","allow-set-temp-dir-path","allow-set-icon-as-template","allow-set-show-menu-on-left-click"]},"permissions":{"allow-get-by-id":{"identifier":"allow-get-by-id","description":"Enables the get_by_id command without any pre-configured scope.","commands":{"allow":["get_by_id"],"deny":[]}},"allow-new":{"identifier":"allow-new","description":"Enables the new command without any pre-configured scope.","commands":{"allow":["new"],"deny":[]}},"allow-remove-by-id":{"identifier":"allow-remove-by-id","description":"Enables the remove_by_id command without any pre-configured scope.","commands":{"allow":["remove_by_id"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-icon-as-template":{"identifier":"allow-set-icon-as-template","description":"Enables the set_icon_as_template command without any pre-configured scope.","commands":{"allow":["set_icon_as_template"],"deny":[]}},"allow-set-menu":{"identifier":"allow-set-menu","description":"Enables the set_menu command without any pre-configured scope.","commands":{"allow":["set_menu"],"deny":[]}},"allow-set-show-menu-on-left-click":{"identifier":"allow-set-show-menu-on-left-click","description":"Enables the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":["set_show_menu_on_left_click"],"deny":[]}},"allow-set-temp-dir-path":{"identifier":"allow-set-temp-dir-path","description":"Enables the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":["set_temp_dir_path"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-tooltip":{"identifier":"allow-set-tooltip","description":"Enables the set_tooltip command without any pre-configured scope.","commands":{"allow":["set_tooltip"],"deny":[]}},"allow-set-visible":{"identifier":"allow-set-visible","description":"Enables the set_visible command without any pre-configured scope.","commands":{"allow":["set_visible"],"deny":[]}},"deny-get-by-id":{"identifier":"deny-get-by-id","description":"Denies the get_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["get_by_id"]}},"deny-new":{"identifier":"deny-new","description":"Denies the new command without any pre-configured scope.","commands":{"allow":[],"deny":["new"]}},"deny-remove-by-id":{"identifier":"deny-remove-by-id","description":"Denies the remove_by_id command without any pre-configured scope.","commands":{"allow":[],"deny":["remove_by_id"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-icon-as-template":{"identifier":"deny-set-icon-as-template","description":"Denies the set_icon_as_template command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon_as_template"]}},"deny-set-menu":{"identifier":"deny-set-menu","description":"Denies the set_menu command without any pre-configured scope.","commands":{"allow":[],"deny":["set_menu"]}},"deny-set-show-menu-on-left-click":{"identifier":"deny-set-show-menu-on-left-click","description":"Denies the set_show_menu_on_left_click command without any pre-configured scope.","commands":{"allow":[],"deny":["set_show_menu_on_left_click"]}},"deny-set-temp-dir-path":{"identifier":"deny-set-temp-dir-path","description":"Denies the set_temp_dir_path command without any pre-configured scope.","commands":{"allow":[],"deny":["set_temp_dir_path"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-tooltip":{"identifier":"deny-set-tooltip","description":"Denies the set_tooltip command without any pre-configured scope.","commands":{"allow":[],"deny":["set_tooltip"]}},"deny-set-visible":{"identifier":"deny-set-visible","description":"Denies the set_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible"]}}},"permission_sets":{},"global_scope_schema":null},"core:webview":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-webview-position","allow-webview-size","allow-internal-toggle-devtools"]},"permissions":{"allow-create-webview":{"identifier":"allow-create-webview","description":"Enables the create_webview command without any pre-configured scope.","commands":{"allow":["create_webview"],"deny":[]}},"allow-create-webview-window":{"identifier":"allow-create-webview-window","description":"Enables the create_webview_window command without any pre-configured scope.","commands":{"allow":["create_webview_window"],"deny":[]}},"allow-internal-toggle-devtools":{"identifier":"allow-internal-toggle-devtools","description":"Enables the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":["internal_toggle_devtools"],"deny":[]}},"allow-print":{"identifier":"allow-print","description":"Enables the print command without any pre-configured scope.","commands":{"allow":["print"],"deny":[]}},"allow-reparent":{"identifier":"allow-reparent","description":"Enables the reparent command without any pre-configured scope.","commands":{"allow":["reparent"],"deny":[]}},"allow-set-webview-focus":{"identifier":"allow-set-webview-focus","description":"Enables the set_webview_focus command without any pre-configured scope.","commands":{"allow":["set_webview_focus"],"deny":[]}},"allow-set-webview-position":{"identifier":"allow-set-webview-position","description":"Enables the set_webview_position command without any pre-configured scope.","commands":{"allow":["set_webview_position"],"deny":[]}},"allow-set-webview-size":{"identifier":"allow-set-webview-size","description":"Enables the set_webview_size command without any pre-configured scope.","commands":{"allow":["set_webview_size"],"deny":[]}},"allow-set-webview-zoom":{"identifier":"allow-set-webview-zoom","description":"Enables the set_webview_zoom command without any pre-configured scope.","commands":{"allow":["set_webview_zoom"],"deny":[]}},"allow-webview-close":{"identifier":"allow-webview-close","description":"Enables the webview_close command without any pre-configured scope.","commands":{"allow":["webview_close"],"deny":[]}},"allow-webview-position":{"identifier":"allow-webview-position","description":"Enables the webview_position command without any pre-configured scope.","commands":{"allow":["webview_position"],"deny":[]}},"allow-webview-size":{"identifier":"allow-webview-size","description":"Enables the webview_size command without any pre-configured scope.","commands":{"allow":["webview_size"],"deny":[]}},"deny-create-webview":{"identifier":"deny-create-webview","description":"Denies the create_webview command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview"]}},"deny-create-webview-window":{"identifier":"deny-create-webview-window","description":"Denies the create_webview_window command without any pre-configured scope.","commands":{"allow":[],"deny":["create_webview_window"]}},"deny-internal-toggle-devtools":{"identifier":"deny-internal-toggle-devtools","description":"Denies the internal_toggle_devtools command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_devtools"]}},"deny-print":{"identifier":"deny-print","description":"Denies the print command without any pre-configured scope.","commands":{"allow":[],"deny":["print"]}},"deny-reparent":{"identifier":"deny-reparent","description":"Denies the reparent command without any pre-configured scope.","commands":{"allow":[],"deny":["reparent"]}},"deny-set-webview-focus":{"identifier":"deny-set-webview-focus","description":"Denies the set_webview_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_focus"]}},"deny-set-webview-position":{"identifier":"deny-set-webview-position","description":"Denies the set_webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_position"]}},"deny-set-webview-size":{"identifier":"deny-set-webview-size","description":"Denies the set_webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_size"]}},"deny-set-webview-zoom":{"identifier":"deny-set-webview-zoom","description":"Denies the set_webview_zoom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_webview_zoom"]}},"deny-webview-close":{"identifier":"deny-webview-close","description":"Denies the webview_close command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_close"]}},"deny-webview-position":{"identifier":"deny-webview-position","description":"Denies the webview_position command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_position"]}},"deny-webview-size":{"identifier":"deny-webview-size","description":"Denies the webview_size command without any pre-configured scope.","commands":{"allow":[],"deny":["webview_size"]}}},"permission_sets":{},"global_scope_schema":null},"core:window":{"default_permission":{"identifier":"default","description":"Default permissions for the plugin.","permissions":["allow-scale-factor","allow-inner-position","allow-outer-position","allow-inner-size","allow-outer-size","allow-is-fullscreen","allow-is-minimized","allow-is-maximized","allow-is-focused","allow-is-decorated","allow-is-resizable","allow-is-maximizable","allow-is-minimizable","allow-is-closable","allow-is-visible","allow-title","allow-current-monitor","allow-primary-monitor","allow-monitor-from-point","allow-available-monitors","allow-cursor-position","allow-theme","allow-internal-toggle-maximize"]},"permissions":{"allow-available-monitors":{"identifier":"allow-available-monitors","description":"Enables the available_monitors command without any pre-configured scope.","commands":{"allow":["available_monitors"],"deny":[]}},"allow-center":{"identifier":"allow-center","description":"Enables the center command without any pre-configured scope.","commands":{"allow":["center"],"deny":[]}},"allow-close":{"identifier":"allow-close","description":"Enables the close command without any pre-configured scope.","commands":{"allow":["close"],"deny":[]}},"allow-create":{"identifier":"allow-create","description":"Enables the create command without any pre-configured scope.","commands":{"allow":["create"],"deny":[]}},"allow-current-monitor":{"identifier":"allow-current-monitor","description":"Enables the current_monitor command without any pre-configured scope.","commands":{"allow":["current_monitor"],"deny":[]}},"allow-cursor-position":{"identifier":"allow-cursor-position","description":"Enables the cursor_position command without any pre-configured scope.","commands":{"allow":["cursor_position"],"deny":[]}},"allow-destroy":{"identifier":"allow-destroy","description":"Enables the destroy command without any pre-configured scope.","commands":{"allow":["destroy"],"deny":[]}},"allow-hide":{"identifier":"allow-hide","description":"Enables the hide command without any pre-configured scope.","commands":{"allow":["hide"],"deny":[]}},"allow-inner-position":{"identifier":"allow-inner-position","description":"Enables the inner_position command without any pre-configured scope.","commands":{"allow":["inner_position"],"deny":[]}},"allow-inner-size":{"identifier":"allow-inner-size","description":"Enables the inner_size command without any pre-configured scope.","commands":{"allow":["inner_size"],"deny":[]}},"allow-internal-toggle-maximize":{"identifier":"allow-internal-toggle-maximize","description":"Enables the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":["internal_toggle_maximize"],"deny":[]}},"allow-is-closable":{"identifier":"allow-is-closable","description":"Enables the is_closable command without any pre-configured scope.","commands":{"allow":["is_closable"],"deny":[]}},"allow-is-decorated":{"identifier":"allow-is-decorated","description":"Enables the is_decorated command without any pre-configured scope.","commands":{"allow":["is_decorated"],"deny":[]}},"allow-is-focused":{"identifier":"allow-is-focused","description":"Enables the is_focused command without any pre-configured scope.","commands":{"allow":["is_focused"],"deny":[]}},"allow-is-fullscreen":{"identifier":"allow-is-fullscreen","description":"Enables the is_fullscreen command without any pre-configured scope.","commands":{"allow":["is_fullscreen"],"deny":[]}},"allow-is-maximizable":{"identifier":"allow-is-maximizable","description":"Enables the is_maximizable command without any pre-configured scope.","commands":{"allow":["is_maximizable"],"deny":[]}},"allow-is-maximized":{"identifier":"allow-is-maximized","description":"Enables the is_maximized command without any pre-configured scope.","commands":{"allow":["is_maximized"],"deny":[]}},"allow-is-minimizable":{"identifier":"allow-is-minimizable","description":"Enables the is_minimizable command without any pre-configured scope.","commands":{"allow":["is_minimizable"],"deny":[]}},"allow-is-minimized":{"identifier":"allow-is-minimized","description":"Enables the is_minimized command without any pre-configured scope.","commands":{"allow":["is_minimized"],"deny":[]}},"allow-is-resizable":{"identifier":"allow-is-resizable","description":"Enables the is_resizable command without any pre-configured scope.","commands":{"allow":["is_resizable"],"deny":[]}},"allow-is-visible":{"identifier":"allow-is-visible","description":"Enables the is_visible command without any pre-configured scope.","commands":{"allow":["is_visible"],"deny":[]}},"allow-maximize":{"identifier":"allow-maximize","description":"Enables the maximize command without any pre-configured scope.","commands":{"allow":["maximize"],"deny":[]}},"allow-minimize":{"identifier":"allow-minimize","description":"Enables the minimize command without any pre-configured scope.","commands":{"allow":["minimize"],"deny":[]}},"allow-monitor-from-point":{"identifier":"allow-monitor-from-point","description":"Enables the monitor_from_point command without any pre-configured scope.","commands":{"allow":["monitor_from_point"],"deny":[]}},"allow-outer-position":{"identifier":"allow-outer-position","description":"Enables the outer_position command without any pre-configured scope.","commands":{"allow":["outer_position"],"deny":[]}},"allow-outer-size":{"identifier":"allow-outer-size","description":"Enables the outer_size command without any pre-configured scope.","commands":{"allow":["outer_size"],"deny":[]}},"allow-primary-monitor":{"identifier":"allow-primary-monitor","description":"Enables the primary_monitor command without any pre-configured scope.","commands":{"allow":["primary_monitor"],"deny":[]}},"allow-request-user-attention":{"identifier":"allow-request-user-attention","description":"Enables the request_user_attention command without any pre-configured scope.","commands":{"allow":["request_user_attention"],"deny":[]}},"allow-scale-factor":{"identifier":"allow-scale-factor","description":"Enables the scale_factor command without any pre-configured scope.","commands":{"allow":["scale_factor"],"deny":[]}},"allow-set-always-on-bottom":{"identifier":"allow-set-always-on-bottom","description":"Enables the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":["set_always_on_bottom"],"deny":[]}},"allow-set-always-on-top":{"identifier":"allow-set-always-on-top","description":"Enables the set_always_on_top command without any pre-configured scope.","commands":{"allow":["set_always_on_top"],"deny":[]}},"allow-set-closable":{"identifier":"allow-set-closable","description":"Enables the set_closable command without any pre-configured scope.","commands":{"allow":["set_closable"],"deny":[]}},"allow-set-content-protected":{"identifier":"allow-set-content-protected","description":"Enables the set_content_protected command without any pre-configured scope.","commands":{"allow":["set_content_protected"],"deny":[]}},"allow-set-cursor-grab":{"identifier":"allow-set-cursor-grab","description":"Enables the set_cursor_grab command without any pre-configured scope.","commands":{"allow":["set_cursor_grab"],"deny":[]}},"allow-set-cursor-icon":{"identifier":"allow-set-cursor-icon","description":"Enables the set_cursor_icon command without any pre-configured scope.","commands":{"allow":["set_cursor_icon"],"deny":[]}},"allow-set-cursor-position":{"identifier":"allow-set-cursor-position","description":"Enables the set_cursor_position command without any pre-configured scope.","commands":{"allow":["set_cursor_position"],"deny":[]}},"allow-set-cursor-visible":{"identifier":"allow-set-cursor-visible","description":"Enables the set_cursor_visible command without any pre-configured scope.","commands":{"allow":["set_cursor_visible"],"deny":[]}},"allow-set-decorations":{"identifier":"allow-set-decorations","description":"Enables the set_decorations command without any pre-configured scope.","commands":{"allow":["set_decorations"],"deny":[]}},"allow-set-effects":{"identifier":"allow-set-effects","description":"Enables the set_effects command without any pre-configured scope.","commands":{"allow":["set_effects"],"deny":[]}},"allow-set-focus":{"identifier":"allow-set-focus","description":"Enables the set_focus command without any pre-configured scope.","commands":{"allow":["set_focus"],"deny":[]}},"allow-set-fullscreen":{"identifier":"allow-set-fullscreen","description":"Enables the set_fullscreen command without any pre-configured scope.","commands":{"allow":["set_fullscreen"],"deny":[]}},"allow-set-icon":{"identifier":"allow-set-icon","description":"Enables the set_icon command without any pre-configured scope.","commands":{"allow":["set_icon"],"deny":[]}},"allow-set-ignore-cursor-events":{"identifier":"allow-set-ignore-cursor-events","description":"Enables the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":["set_ignore_cursor_events"],"deny":[]}},"allow-set-max-size":{"identifier":"allow-set-max-size","description":"Enables the set_max_size command without any pre-configured scope.","commands":{"allow":["set_max_size"],"deny":[]}},"allow-set-maximizable":{"identifier":"allow-set-maximizable","description":"Enables the set_maximizable command without any pre-configured scope.","commands":{"allow":["set_maximizable"],"deny":[]}},"allow-set-min-size":{"identifier":"allow-set-min-size","description":"Enables the set_min_size command without any pre-configured scope.","commands":{"allow":["set_min_size"],"deny":[]}},"allow-set-minimizable":{"identifier":"allow-set-minimizable","description":"Enables the set_minimizable command without any pre-configured scope.","commands":{"allow":["set_minimizable"],"deny":[]}},"allow-set-position":{"identifier":"allow-set-position","description":"Enables the set_position command without any pre-configured scope.","commands":{"allow":["set_position"],"deny":[]}},"allow-set-progress-bar":{"identifier":"allow-set-progress-bar","description":"Enables the set_progress_bar command without any pre-configured scope.","commands":{"allow":["set_progress_bar"],"deny":[]}},"allow-set-resizable":{"identifier":"allow-set-resizable","description":"Enables the set_resizable command without any pre-configured scope.","commands":{"allow":["set_resizable"],"deny":[]}},"allow-set-shadow":{"identifier":"allow-set-shadow","description":"Enables the set_shadow command without any pre-configured scope.","commands":{"allow":["set_shadow"],"deny":[]}},"allow-set-size":{"identifier":"allow-set-size","description":"Enables the set_size command without any pre-configured scope.","commands":{"allow":["set_size"],"deny":[]}},"allow-set-size-constraints":{"identifier":"allow-set-size-constraints","description":"Enables the set_size_constraints command without any pre-configured scope.","commands":{"allow":["set_size_constraints"],"deny":[]}},"allow-set-skip-taskbar":{"identifier":"allow-set-skip-taskbar","description":"Enables the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":["set_skip_taskbar"],"deny":[]}},"allow-set-title":{"identifier":"allow-set-title","description":"Enables the set_title command without any pre-configured scope.","commands":{"allow":["set_title"],"deny":[]}},"allow-set-title-bar-style":{"identifier":"allow-set-title-bar-style","description":"Enables the set_title_bar_style command without any pre-configured scope.","commands":{"allow":["set_title_bar_style"],"deny":[]}},"allow-set-visible-on-all-workspaces":{"identifier":"allow-set-visible-on-all-workspaces","description":"Enables the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":["set_visible_on_all_workspaces"],"deny":[]}},"allow-show":{"identifier":"allow-show","description":"Enables the show command without any pre-configured scope.","commands":{"allow":["show"],"deny":[]}},"allow-start-dragging":{"identifier":"allow-start-dragging","description":"Enables the start_dragging command without any pre-configured scope.","commands":{"allow":["start_dragging"],"deny":[]}},"allow-start-resize-dragging":{"identifier":"allow-start-resize-dragging","description":"Enables the start_resize_dragging command without any pre-configured scope.","commands":{"allow":["start_resize_dragging"],"deny":[]}},"allow-theme":{"identifier":"allow-theme","description":"Enables the theme command without any pre-configured scope.","commands":{"allow":["theme"],"deny":[]}},"allow-title":{"identifier":"allow-title","description":"Enables the title command without any pre-configured scope.","commands":{"allow":["title"],"deny":[]}},"allow-toggle-maximize":{"identifier":"allow-toggle-maximize","description":"Enables the toggle_maximize command without any pre-configured scope.","commands":{"allow":["toggle_maximize"],"deny":[]}},"allow-unmaximize":{"identifier":"allow-unmaximize","description":"Enables the unmaximize command without any pre-configured scope.","commands":{"allow":["unmaximize"],"deny":[]}},"allow-unminimize":{"identifier":"allow-unminimize","description":"Enables the unminimize command without any pre-configured scope.","commands":{"allow":["unminimize"],"deny":[]}},"deny-available-monitors":{"identifier":"deny-available-monitors","description":"Denies the available_monitors command without any pre-configured scope.","commands":{"allow":[],"deny":["available_monitors"]}},"deny-center":{"identifier":"deny-center","description":"Denies the center command without any pre-configured scope.","commands":{"allow":[],"deny":["center"]}},"deny-close":{"identifier":"deny-close","description":"Denies the close command without any pre-configured scope.","commands":{"allow":[],"deny":["close"]}},"deny-create":{"identifier":"deny-create","description":"Denies the create command without any pre-configured scope.","commands":{"allow":[],"deny":["create"]}},"deny-current-monitor":{"identifier":"deny-current-monitor","description":"Denies the current_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["current_monitor"]}},"deny-cursor-position":{"identifier":"deny-cursor-position","description":"Denies the cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["cursor_position"]}},"deny-destroy":{"identifier":"deny-destroy","description":"Denies the destroy command without any pre-configured scope.","commands":{"allow":[],"deny":["destroy"]}},"deny-hide":{"identifier":"deny-hide","description":"Denies the hide command without any pre-configured scope.","commands":{"allow":[],"deny":["hide"]}},"deny-inner-position":{"identifier":"deny-inner-position","description":"Denies the inner_position command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_position"]}},"deny-inner-size":{"identifier":"deny-inner-size","description":"Denies the inner_size command without any pre-configured scope.","commands":{"allow":[],"deny":["inner_size"]}},"deny-internal-toggle-maximize":{"identifier":"deny-internal-toggle-maximize","description":"Denies the internal_toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["internal_toggle_maximize"]}},"deny-is-closable":{"identifier":"deny-is-closable","description":"Denies the is_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_closable"]}},"deny-is-decorated":{"identifier":"deny-is-decorated","description":"Denies the is_decorated command without any pre-configured scope.","commands":{"allow":[],"deny":["is_decorated"]}},"deny-is-focused":{"identifier":"deny-is-focused","description":"Denies the is_focused command without any pre-configured scope.","commands":{"allow":[],"deny":["is_focused"]}},"deny-is-fullscreen":{"identifier":"deny-is-fullscreen","description":"Denies the is_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["is_fullscreen"]}},"deny-is-maximizable":{"identifier":"deny-is-maximizable","description":"Denies the is_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximizable"]}},"deny-is-maximized":{"identifier":"deny-is-maximized","description":"Denies the is_maximized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_maximized"]}},"deny-is-minimizable":{"identifier":"deny-is-minimizable","description":"Denies the is_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimizable"]}},"deny-is-minimized":{"identifier":"deny-is-minimized","description":"Denies the is_minimized command without any pre-configured scope.","commands":{"allow":[],"deny":["is_minimized"]}},"deny-is-resizable":{"identifier":"deny-is-resizable","description":"Denies the is_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["is_resizable"]}},"deny-is-visible":{"identifier":"deny-is-visible","description":"Denies the is_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["is_visible"]}},"deny-maximize":{"identifier":"deny-maximize","description":"Denies the maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["maximize"]}},"deny-minimize":{"identifier":"deny-minimize","description":"Denies the minimize command without any pre-configured scope.","commands":{"allow":[],"deny":["minimize"]}},"deny-monitor-from-point":{"identifier":"deny-monitor-from-point","description":"Denies the monitor_from_point command without any pre-configured scope.","commands":{"allow":[],"deny":["monitor_from_point"]}},"deny-outer-position":{"identifier":"deny-outer-position","description":"Denies the outer_position command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_position"]}},"deny-outer-size":{"identifier":"deny-outer-size","description":"Denies the outer_size command without any pre-configured scope.","commands":{"allow":[],"deny":["outer_size"]}},"deny-primary-monitor":{"identifier":"deny-primary-monitor","description":"Denies the primary_monitor command without any pre-configured scope.","commands":{"allow":[],"deny":["primary_monitor"]}},"deny-request-user-attention":{"identifier":"deny-request-user-attention","description":"Denies the request_user_attention command without any pre-configured scope.","commands":{"allow":[],"deny":["request_user_attention"]}},"deny-scale-factor":{"identifier":"deny-scale-factor","description":"Denies the scale_factor command without any pre-configured scope.","commands":{"allow":[],"deny":["scale_factor"]}},"deny-set-always-on-bottom":{"identifier":"deny-set-always-on-bottom","description":"Denies the set_always_on_bottom command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_bottom"]}},"deny-set-always-on-top":{"identifier":"deny-set-always-on-top","description":"Denies the set_always_on_top command without any pre-configured scope.","commands":{"allow":[],"deny":["set_always_on_top"]}},"deny-set-closable":{"identifier":"deny-set-closable","description":"Denies the set_closable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_closable"]}},"deny-set-content-protected":{"identifier":"deny-set-content-protected","description":"Denies the set_content_protected command without any pre-configured scope.","commands":{"allow":[],"deny":["set_content_protected"]}},"deny-set-cursor-grab":{"identifier":"deny-set-cursor-grab","description":"Denies the set_cursor_grab command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_grab"]}},"deny-set-cursor-icon":{"identifier":"deny-set-cursor-icon","description":"Denies the set_cursor_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_icon"]}},"deny-set-cursor-position":{"identifier":"deny-set-cursor-position","description":"Denies the set_cursor_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_position"]}},"deny-set-cursor-visible":{"identifier":"deny-set-cursor-visible","description":"Denies the set_cursor_visible command without any pre-configured scope.","commands":{"allow":[],"deny":["set_cursor_visible"]}},"deny-set-decorations":{"identifier":"deny-set-decorations","description":"Denies the set_decorations command without any pre-configured scope.","commands":{"allow":[],"deny":["set_decorations"]}},"deny-set-effects":{"identifier":"deny-set-effects","description":"Denies the set_effects command without any pre-configured scope.","commands":{"allow":[],"deny":["set_effects"]}},"deny-set-focus":{"identifier":"deny-set-focus","description":"Denies the set_focus command without any pre-configured scope.","commands":{"allow":[],"deny":["set_focus"]}},"deny-set-fullscreen":{"identifier":"deny-set-fullscreen","description":"Denies the set_fullscreen command without any pre-configured scope.","commands":{"allow":[],"deny":["set_fullscreen"]}},"deny-set-icon":{"identifier":"deny-set-icon","description":"Denies the set_icon command without any pre-configured scope.","commands":{"allow":[],"deny":["set_icon"]}},"deny-set-ignore-cursor-events":{"identifier":"deny-set-ignore-cursor-events","description":"Denies the set_ignore_cursor_events command without any pre-configured scope.","commands":{"allow":[],"deny":["set_ignore_cursor_events"]}},"deny-set-max-size":{"identifier":"deny-set-max-size","description":"Denies the set_max_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_max_size"]}},"deny-set-maximizable":{"identifier":"deny-set-maximizable","description":"Denies the set_maximizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_maximizable"]}},"deny-set-min-size":{"identifier":"deny-set-min-size","description":"Denies the set_min_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_min_size"]}},"deny-set-minimizable":{"identifier":"deny-set-minimizable","description":"Denies the set_minimizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_minimizable"]}},"deny-set-position":{"identifier":"deny-set-position","description":"Denies the set_position command without any pre-configured scope.","commands":{"allow":[],"deny":["set_position"]}},"deny-set-progress-bar":{"identifier":"deny-set-progress-bar","description":"Denies the set_progress_bar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_progress_bar"]}},"deny-set-resizable":{"identifier":"deny-set-resizable","description":"Denies the set_resizable command without any pre-configured scope.","commands":{"allow":[],"deny":["set_resizable"]}},"deny-set-shadow":{"identifier":"deny-set-shadow","description":"Denies the set_shadow command without any pre-configured scope.","commands":{"allow":[],"deny":["set_shadow"]}},"deny-set-size":{"identifier":"deny-set-size","description":"Denies the set_size command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size"]}},"deny-set-size-constraints":{"identifier":"deny-set-size-constraints","description":"Denies the set_size_constraints command without any pre-configured scope.","commands":{"allow":[],"deny":["set_size_constraints"]}},"deny-set-skip-taskbar":{"identifier":"deny-set-skip-taskbar","description":"Denies the set_skip_taskbar command without any pre-configured scope.","commands":{"allow":[],"deny":["set_skip_taskbar"]}},"deny-set-title":{"identifier":"deny-set-title","description":"Denies the set_title command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title"]}},"deny-set-title-bar-style":{"identifier":"deny-set-title-bar-style","description":"Denies the set_title_bar_style command without any pre-configured scope.","commands":{"allow":[],"deny":["set_title_bar_style"]}},"deny-set-visible-on-all-workspaces":{"identifier":"deny-set-visible-on-all-workspaces","description":"Denies the set_visible_on_all_workspaces command without any pre-configured scope.","commands":{"allow":[],"deny":["set_visible_on_all_workspaces"]}},"deny-show":{"identifier":"deny-show","description":"Denies the show command without any pre-configured scope.","commands":{"allow":[],"deny":["show"]}},"deny-start-dragging":{"identifier":"deny-start-dragging","description":"Denies the start_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_dragging"]}},"deny-start-resize-dragging":{"identifier":"deny-start-resize-dragging","description":"Denies the start_resize_dragging command without any pre-configured scope.","commands":{"allow":[],"deny":["start_resize_dragging"]}},"deny-theme":{"identifier":"deny-theme","description":"Denies the theme command without any pre-configured scope.","commands":{"allow":[],"deny":["theme"]}},"deny-title":{"identifier":"deny-title","description":"Denies the title command without any pre-configured scope.","commands":{"allow":[],"deny":["title"]}},"deny-toggle-maximize":{"identifier":"deny-toggle-maximize","description":"Denies the toggle_maximize command without any pre-configured scope.","commands":{"allow":[],"deny":["toggle_maximize"]}},"deny-unmaximize":{"identifier":"deny-unmaximize","description":"Denies the unmaximize command without any pre-configured scope.","commands":{"allow":[],"deny":["unmaximize"]}},"deny-unminimize":{"identifier":"deny-unminimize","description":"Denies the unminimize command without any pre-configured scope.","commands":{"allow":[],"deny":["unminimize"]}}},"permission_sets":{},"global_scope_schema":null}} \ No newline at end of file diff --git a/apps/tauri/src-tauri/gen/schemas/capabilities.json b/apps/tauri/src-tauri/gen/schemas/capabilities.json index 06f54dad9..5067477af 100644 --- a/apps/tauri/src-tauri/gen/schemas/capabilities.json +++ b/apps/tauri/src-tauri/gen/schemas/capabilities.json @@ -1 +1 @@ -{"migrated":{"identifier":"migrated","description":"permissions that were migrated from v1","local":true,"windows":["main"],"permissions":["path:default","event:default","window:default","app:default","resources:default","menu:default","tray:default"]}} \ No newline at end of file +{"migrated":{"identifier":"migrated","description":"permissions that were migrated from v1","local":true,"windows":["main"],"permissions":["core:path:default","core:event:default","core:window:default","core:app:default","core:resources:default","core:menu:default","core:tray:default"]}} \ No newline at end of file diff --git a/apps/tauri/src-tauri/gen/schemas/desktop-schema.json b/apps/tauri/src-tauri/gen/schemas/desktop-schema.json index 6eca9fd21..5eeb099bd 100644 --- a/apps/tauri/src-tauri/gen/schemas/desktop-schema.json +++ b/apps/tauri/src-tauri/gen/schemas/desktop-schema.json @@ -37,7 +37,7 @@ ], "definitions": { "Capability": { - "description": "a grouping and boundary mechanism developers can use to separate windows or plugins functionality from each other at runtime.\n\nIf a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create trust groups and reduce impact of vulnerabilities in certain plugins or windows. Windows can be added to a capability by exact name or glob patterns like *, admin-* or main-window.", + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", "type": "object", "required": [ "identifier", @@ -45,16 +45,16 @@ ], "properties": { "identifier": { - "description": "Identifier of the capability.", + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", "type": "string" }, "description": { - "description": "Description of the capability.", + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", "default": "", "type": "string" }, "remote": { - "description": "Configure remote URLs that can use the capability permissions.", + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", "anyOf": [ { "$ref": "#/definitions/CapabilityRemote" @@ -70,28 +70,29 @@ "type": "boolean" }, "windows": { - "description": "List of windows that uses this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.", + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", "type": "array", "items": { "type": "string" } }, "webviews": { - "description": "List of webviews that uses this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.", + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", "type": "array", "items": { "type": "string" } }, "permissions": { - "description": "List of permissions attached to this capability. Must include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`.", + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", "type": "array", "items": { "$ref": "#/definitions/PermissionEntry" - } + }, + "uniqueItems": true }, "platforms": { - "description": "Target platforms this capability applies. By default all platforms are affected by this capability.", + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", "type": [ "array", "null" @@ -110,7 +111,7 @@ ], "properties": { "urls": { - "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n# Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", "type": "array", "items": { "type": "string" @@ -155,7 +156,7 @@ } }, "deny": { - "description": "Data that defines what is denied by the scope.", + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", "type": [ "array", "null" @@ -171,1886 +172,1942 @@ "Identifier": { "oneOf": [ { - "description": "app:default -> Default permissions for the plugin.", + "description": "core:app:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:app:default" + ] + }, + { + "description": "core:app:allow-app-hide -> Enables the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-app-hide" + ] + }, + { + "description": "core:app:allow-app-show -> Enables the app_show command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-app-show" + ] + }, + { + "description": "core:app:allow-default-window-icon -> Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-default-window-icon" + ] + }, + { + "description": "core:app:allow-name -> Enables the name command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-name" + ] + }, + { + "description": "core:app:allow-tauri-version -> Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-tauri-version" + ] + }, + { + "description": "core:app:allow-version -> Enables the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-version" + ] + }, + { + "description": "core:app:deny-app-hide -> Denies the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:deny-app-hide" + ] + }, + { + "description": "core:app:deny-app-show -> Denies the app_show command without any pre-configured scope.", "type": "string", "enum": [ - "app:default" + "core:app:deny-app-show" ] }, { - "description": "app:allow-app-hide -> Enables the app_hide command without any pre-configured scope.", + "description": "core:app:deny-default-window-icon -> Denies the default_window_icon command without any pre-configured scope.", "type": "string", "enum": [ - "app:allow-app-hide" + "core:app:deny-default-window-icon" ] }, { - "description": "app:allow-app-show -> Enables the app_show command without any pre-configured scope.", + "description": "core:app:deny-name -> Denies the name command without any pre-configured scope.", "type": "string", "enum": [ - "app:allow-app-show" + "core:app:deny-name" ] }, { - "description": "app:allow-name -> Enables the name command without any pre-configured scope.", + "description": "core:app:deny-tauri-version -> Denies the tauri_version command without any pre-configured scope.", "type": "string", "enum": [ - "app:allow-name" + "core:app:deny-tauri-version" ] }, { - "description": "app:allow-tauri-version -> Enables the tauri_version command without any pre-configured scope.", + "description": "core:app:deny-version -> Denies the version command without any pre-configured scope.", "type": "string", "enum": [ - "app:allow-tauri-version" + "core:app:deny-version" ] }, { - "description": "app:allow-version -> Enables the version command without any pre-configured scope.", + "description": "core:event:default -> Default permissions for the plugin.", "type": "string", "enum": [ - "app:allow-version" + "core:event:default" ] }, { - "description": "app:deny-app-hide -> Denies the app_hide command without any pre-configured scope.", + "description": "core:event:allow-emit -> Enables the emit command without any pre-configured scope.", "type": "string", "enum": [ - "app:deny-app-hide" + "core:event:allow-emit" ] }, { - "description": "app:deny-app-show -> Denies the app_show command without any pre-configured scope.", + "description": "core:event:allow-emit-to -> Enables the emit_to command without any pre-configured scope.", "type": "string", "enum": [ - "app:deny-app-show" + "core:event:allow-emit-to" ] }, { - "description": "app:deny-name -> Denies the name command without any pre-configured scope.", + "description": "core:event:allow-listen -> Enables the listen command without any pre-configured scope.", "type": "string", "enum": [ - "app:deny-name" + "core:event:allow-listen" ] }, { - "description": "app:deny-tauri-version -> Denies the tauri_version command without any pre-configured scope.", + "description": "core:event:allow-unlisten -> Enables the unlisten command without any pre-configured scope.", "type": "string", "enum": [ - "app:deny-tauri-version" + "core:event:allow-unlisten" ] }, { - "description": "app:deny-version -> Denies the version command without any pre-configured scope.", + "description": "core:event:deny-emit -> Denies the emit command without any pre-configured scope.", "type": "string", "enum": [ - "app:deny-version" + "core:event:deny-emit" ] }, { - "description": "event:default -> Default permissions for the plugin.", + "description": "core:event:deny-emit-to -> Denies the emit_to command without any pre-configured scope.", "type": "string", "enum": [ - "event:default" + "core:event:deny-emit-to" ] }, { - "description": "event:allow-emit -> Enables the emit command without any pre-configured scope.", + "description": "core:event:deny-listen -> Denies the listen command without any pre-configured scope.", "type": "string", "enum": [ - "event:allow-emit" + "core:event:deny-listen" ] }, { - "description": "event:allow-emit-to -> Enables the emit_to command without any pre-configured scope.", + "description": "core:event:deny-unlisten -> Denies the unlisten command without any pre-configured scope.", "type": "string", "enum": [ - "event:allow-emit-to" + "core:event:deny-unlisten" ] }, { - "description": "event:allow-listen -> Enables the listen command without any pre-configured scope.", + "description": "core:image:default -> Default permissions for the plugin.", "type": "string", "enum": [ - "event:allow-listen" + "core:image:default" ] }, { - "description": "event:allow-unlisten -> Enables the unlisten command without any pre-configured scope.", + "description": "core:image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.", "type": "string", "enum": [ - "event:allow-unlisten" + "core:image:allow-from-bytes" ] }, { - "description": "event:deny-emit -> Denies the emit command without any pre-configured scope.", + "description": "core:image:allow-from-path -> Enables the from_path command without any pre-configured scope.", "type": "string", "enum": [ - "event:deny-emit" + "core:image:allow-from-path" ] }, { - "description": "event:deny-emit-to -> Denies the emit_to command without any pre-configured scope.", + "description": "core:image:allow-new -> Enables the new command without any pre-configured scope.", "type": "string", "enum": [ - "event:deny-emit-to" + "core:image:allow-new" ] }, { - "description": "event:deny-listen -> Denies the listen command without any pre-configured scope.", + "description": "core:image:allow-rgba -> Enables the rgba command without any pre-configured scope.", "type": "string", "enum": [ - "event:deny-listen" + "core:image:allow-rgba" ] }, { - "description": "event:deny-unlisten -> Denies the unlisten command without any pre-configured scope.", + "description": "core:image:allow-size -> Enables the size command without any pre-configured scope.", "type": "string", "enum": [ - "event:deny-unlisten" + "core:image:allow-size" ] }, { - "description": "image:default -> Default permissions for the plugin.", + "description": "core:image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.", "type": "string", "enum": [ - "image:default" + "core:image:deny-from-bytes" ] }, { - "description": "image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.", + "description": "core:image:deny-from-path -> Denies the from_path command without any pre-configured scope.", "type": "string", "enum": [ - "image:allow-from-bytes" + "core:image:deny-from-path" ] }, { - "description": "image:allow-from-path -> Enables the from_path command without any pre-configured scope.", + "description": "core:image:deny-new -> Denies the new command without any pre-configured scope.", "type": "string", "enum": [ - "image:allow-from-path" + "core:image:deny-new" ] }, { - "description": "image:allow-new -> Enables the new command without any pre-configured scope.", + "description": "core:image:deny-rgba -> Denies the rgba command without any pre-configured scope.", "type": "string", "enum": [ - "image:allow-new" + "core:image:deny-rgba" ] }, { - "description": "image:allow-rgba -> Enables the rgba command without any pre-configured scope.", + "description": "core:image:deny-size -> Denies the size command without any pre-configured scope.", "type": "string", "enum": [ - "image:allow-rgba" + "core:image:deny-size" ] }, { - "description": "image:allow-size -> Enables the size command without any pre-configured scope.", + "description": "core:menu:default -> Default permissions for the plugin.", "type": "string", "enum": [ - "image:allow-size" + "core:menu:default" ] }, { - "description": "image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.", + "description": "core:menu:allow-append -> Enables the append command without any pre-configured scope.", "type": "string", "enum": [ - "image:deny-from-bytes" + "core:menu:allow-append" ] }, { - "description": "image:deny-from-path -> Denies the from_path command without any pre-configured scope.", + "description": "core:menu:allow-create-default -> Enables the create_default command without any pre-configured scope.", "type": "string", "enum": [ - "image:deny-from-path" + "core:menu:allow-create-default" ] }, { - "description": "image:deny-new -> Denies the new command without any pre-configured scope.", + "description": "core:menu:allow-get -> Enables the get command without any pre-configured scope.", "type": "string", "enum": [ - "image:deny-new" + "core:menu:allow-get" ] }, { - "description": "image:deny-rgba -> Denies the rgba command without any pre-configured scope.", + "description": "core:menu:allow-insert -> Enables the insert command without any pre-configured scope.", "type": "string", "enum": [ - "image:deny-rgba" + "core:menu:allow-insert" ] }, { - "description": "image:deny-size -> Denies the size command without any pre-configured scope.", + "description": "core:menu:allow-is-checked -> Enables the is_checked command without any pre-configured scope.", "type": "string", "enum": [ - "image:deny-size" + "core:menu:allow-is-checked" ] }, { - "description": "menu:default -> Default permissions for the plugin.", + "description": "core:menu:allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.", "type": "string", "enum": [ - "menu:default" + "core:menu:allow-is-enabled" ] }, { - "description": "menu:allow-append -> Enables the append command without any pre-configured scope.", + "description": "core:menu:allow-items -> Enables the items command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-append" + "core:menu:allow-items" ] }, { - "description": "menu:allow-create-default -> Enables the create_default command without any pre-configured scope.", + "description": "core:menu:allow-new -> Enables the new command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-create-default" + "core:menu:allow-new" ] }, { - "description": "menu:allow-get -> Enables the get command without any pre-configured scope.", + "description": "core:menu:allow-popup -> Enables the popup command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-get" + "core:menu:allow-popup" ] }, { - "description": "menu:allow-insert -> Enables the insert command without any pre-configured scope.", + "description": "core:menu:allow-prepend -> Enables the prepend command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-insert" + "core:menu:allow-prepend" ] }, { - "description": "menu:allow-is-checked -> Enables the is_checked command without any pre-configured scope.", + "description": "core:menu:allow-remove -> Enables the remove command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-is-checked" + "core:menu:allow-remove" ] }, { - "description": "menu:allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.", + "description": "core:menu:allow-remove-at -> Enables the remove_at command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-is-enabled" + "core:menu:allow-remove-at" ] }, { - "description": "menu:allow-items -> Enables the items command without any pre-configured scope.", + "description": "core:menu:allow-set-accelerator -> Enables the set_accelerator command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-items" + "core:menu:allow-set-accelerator" ] }, { - "description": "menu:allow-new -> Enables the new command without any pre-configured scope.", + "description": "core:menu:allow-set-as-app-menu -> Enables the set_as_app_menu command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-new" + "core:menu:allow-set-as-app-menu" ] }, { - "description": "menu:allow-popup -> Enables the popup command without any pre-configured scope.", + "description": "core:menu:allow-set-as-help-menu-for-nsapp -> Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-popup" + "core:menu:allow-set-as-help-menu-for-nsapp" ] }, { - "description": "menu:allow-prepend -> Enables the prepend command without any pre-configured scope.", + "description": "core:menu:allow-set-as-window-menu -> Enables the set_as_window_menu command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-prepend" + "core:menu:allow-set-as-window-menu" ] }, { - "description": "menu:allow-remove -> Enables the remove command without any pre-configured scope.", + "description": "core:menu:allow-set-as-windows-menu-for-nsapp -> Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-remove" + "core:menu:allow-set-as-windows-menu-for-nsapp" ] }, { - "description": "menu:allow-remove-at -> Enables the remove_at command without any pre-configured scope.", + "description": "core:menu:allow-set-checked -> Enables the set_checked command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-remove-at" + "core:menu:allow-set-checked" ] }, { - "description": "menu:allow-set-accelerator -> Enables the set_accelerator command without any pre-configured scope.", + "description": "core:menu:allow-set-enabled -> Enables the set_enabled command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-set-accelerator" + "core:menu:allow-set-enabled" ] }, { - "description": "menu:allow-set-as-app-menu -> Enables the set_as_app_menu command without any pre-configured scope.", + "description": "core:menu:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-set-as-app-menu" + "core:menu:allow-set-icon" ] }, { - "description": "menu:allow-set-as-help-menu-for-nsapp -> Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "description": "core:menu:allow-set-text -> Enables the set_text command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-set-as-help-menu-for-nsapp" + "core:menu:allow-set-text" ] }, { - "description": "menu:allow-set-as-window-menu -> Enables the set_as_window_menu command without any pre-configured scope.", + "description": "core:menu:allow-text -> Enables the text command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-set-as-window-menu" + "core:menu:allow-text" ] }, { - "description": "menu:allow-set-as-windows-menu-for-nsapp -> Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "description": "core:menu:deny-append -> Denies the append command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-set-as-windows-menu-for-nsapp" + "core:menu:deny-append" ] }, { - "description": "menu:allow-set-checked -> Enables the set_checked command without any pre-configured scope.", + "description": "core:menu:deny-create-default -> Denies the create_default command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-set-checked" + "core:menu:deny-create-default" ] }, { - "description": "menu:allow-set-enabled -> Enables the set_enabled command without any pre-configured scope.", + "description": "core:menu:deny-get -> Denies the get command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-set-enabled" + "core:menu:deny-get" ] }, { - "description": "menu:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "description": "core:menu:deny-insert -> Denies the insert command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-set-icon" + "core:menu:deny-insert" ] }, { - "description": "menu:allow-set-text -> Enables the set_text command without any pre-configured scope.", + "description": "core:menu:deny-is-checked -> Denies the is_checked command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-set-text" + "core:menu:deny-is-checked" ] }, { - "description": "menu:allow-text -> Enables the text command without any pre-configured scope.", + "description": "core:menu:deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.", "type": "string", "enum": [ - "menu:allow-text" + "core:menu:deny-is-enabled" ] }, { - "description": "menu:deny-append -> Denies the append command without any pre-configured scope.", + "description": "core:menu:deny-items -> Denies the items command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-append" + "core:menu:deny-items" ] }, { - "description": "menu:deny-create-default -> Denies the create_default command without any pre-configured scope.", + "description": "core:menu:deny-new -> Denies the new command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-create-default" + "core:menu:deny-new" ] }, { - "description": "menu:deny-get -> Denies the get command without any pre-configured scope.", + "description": "core:menu:deny-popup -> Denies the popup command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-get" + "core:menu:deny-popup" ] }, { - "description": "menu:deny-insert -> Denies the insert command without any pre-configured scope.", + "description": "core:menu:deny-prepend -> Denies the prepend command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-insert" + "core:menu:deny-prepend" ] }, { - "description": "menu:deny-is-checked -> Denies the is_checked command without any pre-configured scope.", + "description": "core:menu:deny-remove -> Denies the remove command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-is-checked" + "core:menu:deny-remove" ] }, { - "description": "menu:deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.", + "description": "core:menu:deny-remove-at -> Denies the remove_at command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-is-enabled" + "core:menu:deny-remove-at" ] }, { - "description": "menu:deny-items -> Denies the items command without any pre-configured scope.", + "description": "core:menu:deny-set-accelerator -> Denies the set_accelerator command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-items" + "core:menu:deny-set-accelerator" ] }, { - "description": "menu:deny-new -> Denies the new command without any pre-configured scope.", + "description": "core:menu:deny-set-as-app-menu -> Denies the set_as_app_menu command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-new" + "core:menu:deny-set-as-app-menu" ] }, { - "description": "menu:deny-popup -> Denies the popup command without any pre-configured scope.", + "description": "core:menu:deny-set-as-help-menu-for-nsapp -> Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-popup" + "core:menu:deny-set-as-help-menu-for-nsapp" ] }, { - "description": "menu:deny-prepend -> Denies the prepend command without any pre-configured scope.", + "description": "core:menu:deny-set-as-window-menu -> Denies the set_as_window_menu command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-prepend" + "core:menu:deny-set-as-window-menu" ] }, { - "description": "menu:deny-remove -> Denies the remove command without any pre-configured scope.", + "description": "core:menu:deny-set-as-windows-menu-for-nsapp -> Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-remove" + "core:menu:deny-set-as-windows-menu-for-nsapp" ] }, { - "description": "menu:deny-remove-at -> Denies the remove_at command without any pre-configured scope.", + "description": "core:menu:deny-set-checked -> Denies the set_checked command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-remove-at" + "core:menu:deny-set-checked" ] }, { - "description": "menu:deny-set-accelerator -> Denies the set_accelerator command without any pre-configured scope.", + "description": "core:menu:deny-set-enabled -> Denies the set_enabled command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-set-accelerator" + "core:menu:deny-set-enabled" ] }, { - "description": "menu:deny-set-as-app-menu -> Denies the set_as_app_menu command without any pre-configured scope.", + "description": "core:menu:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-set-as-app-menu" + "core:menu:deny-set-icon" ] }, { - "description": "menu:deny-set-as-help-menu-for-nsapp -> Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "description": "core:menu:deny-set-text -> Denies the set_text command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-set-as-help-menu-for-nsapp" + "core:menu:deny-set-text" ] }, { - "description": "menu:deny-set-as-window-menu -> Denies the set_as_window_menu command without any pre-configured scope.", + "description": "core:menu:deny-text -> Denies the text command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-set-as-window-menu" + "core:menu:deny-text" ] }, { - "description": "menu:deny-set-as-windows-menu-for-nsapp -> Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "description": "core:path:default -> Default permissions for the plugin.", "type": "string", "enum": [ - "menu:deny-set-as-windows-menu-for-nsapp" + "core:path:default" ] }, { - "description": "menu:deny-set-checked -> Denies the set_checked command without any pre-configured scope.", + "description": "core:path:allow-basename -> Enables the basename command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-set-checked" + "core:path:allow-basename" ] }, { - "description": "menu:deny-set-enabled -> Denies the set_enabled command without any pre-configured scope.", + "description": "core:path:allow-dirname -> Enables the dirname command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-set-enabled" + "core:path:allow-dirname" ] }, { - "description": "menu:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "description": "core:path:allow-extname -> Enables the extname command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-set-icon" + "core:path:allow-extname" ] }, { - "description": "menu:deny-set-text -> Denies the set_text command without any pre-configured scope.", + "description": "core:path:allow-is-absolute -> Enables the is_absolute command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-set-text" + "core:path:allow-is-absolute" ] }, { - "description": "menu:deny-text -> Denies the text command without any pre-configured scope.", + "description": "core:path:allow-join -> Enables the join command without any pre-configured scope.", "type": "string", "enum": [ - "menu:deny-text" + "core:path:allow-join" ] }, { - "description": "path:default -> Default permissions for the plugin.", + "description": "core:path:allow-normalize -> Enables the normalize command without any pre-configured scope.", "type": "string", "enum": [ - "path:default" + "core:path:allow-normalize" ] }, { - "description": "path:allow-basename -> Enables the basename command without any pre-configured scope.", + "description": "core:path:allow-resolve -> Enables the resolve command without any pre-configured scope.", "type": "string", "enum": [ - "path:allow-basename" + "core:path:allow-resolve" ] }, { - "description": "path:allow-dirname -> Enables the dirname command without any pre-configured scope.", + "description": "core:path:allow-resolve-directory -> Enables the resolve_directory command without any pre-configured scope.", "type": "string", "enum": [ - "path:allow-dirname" + "core:path:allow-resolve-directory" ] }, { - "description": "path:allow-extname -> Enables the extname command without any pre-configured scope.", + "description": "core:path:deny-basename -> Denies the basename command without any pre-configured scope.", "type": "string", "enum": [ - "path:allow-extname" + "core:path:deny-basename" ] }, { - "description": "path:allow-is-absolute -> Enables the is_absolute command without any pre-configured scope.", + "description": "core:path:deny-dirname -> Denies the dirname command without any pre-configured scope.", "type": "string", "enum": [ - "path:allow-is-absolute" + "core:path:deny-dirname" ] }, { - "description": "path:allow-join -> Enables the join command without any pre-configured scope.", + "description": "core:path:deny-extname -> Denies the extname command without any pre-configured scope.", "type": "string", "enum": [ - "path:allow-join" + "core:path:deny-extname" ] }, { - "description": "path:allow-normalize -> Enables the normalize command without any pre-configured scope.", + "description": "core:path:deny-is-absolute -> Denies the is_absolute command without any pre-configured scope.", "type": "string", "enum": [ - "path:allow-normalize" + "core:path:deny-is-absolute" ] }, { - "description": "path:allow-resolve -> Enables the resolve command without any pre-configured scope.", + "description": "core:path:deny-join -> Denies the join command without any pre-configured scope.", "type": "string", "enum": [ - "path:allow-resolve" + "core:path:deny-join" ] }, { - "description": "path:allow-resolve-directory -> Enables the resolve_directory command without any pre-configured scope.", + "description": "core:path:deny-normalize -> Denies the normalize command without any pre-configured scope.", "type": "string", "enum": [ - "path:allow-resolve-directory" + "core:path:deny-normalize" ] }, { - "description": "path:deny-basename -> Denies the basename command without any pre-configured scope.", + "description": "core:path:deny-resolve -> Denies the resolve command without any pre-configured scope.", "type": "string", "enum": [ - "path:deny-basename" + "core:path:deny-resolve" ] }, { - "description": "path:deny-dirname -> Denies the dirname command without any pre-configured scope.", + "description": "core:path:deny-resolve-directory -> Denies the resolve_directory command without any pre-configured scope.", "type": "string", "enum": [ - "path:deny-dirname" + "core:path:deny-resolve-directory" ] }, { - "description": "path:deny-extname -> Denies the extname command without any pre-configured scope.", + "description": "core:resources:default -> Default permissions for the plugin.", "type": "string", "enum": [ - "path:deny-extname" + "core:resources:default" ] }, { - "description": "path:deny-is-absolute -> Denies the is_absolute command without any pre-configured scope.", + "description": "core:resources:allow-close -> Enables the close command without any pre-configured scope.", "type": "string", "enum": [ - "path:deny-is-absolute" + "core:resources:allow-close" ] }, { - "description": "path:deny-join -> Denies the join command without any pre-configured scope.", + "description": "core:resources:deny-close -> Denies the close command without any pre-configured scope.", "type": "string", "enum": [ - "path:deny-join" + "core:resources:deny-close" ] }, { - "description": "path:deny-normalize -> Denies the normalize command without any pre-configured scope.", + "description": "core:tray:default -> Default permissions for the plugin.", "type": "string", "enum": [ - "path:deny-normalize" + "core:tray:default" ] }, { - "description": "path:deny-resolve -> Denies the resolve command without any pre-configured scope.", + "description": "core:tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.", "type": "string", "enum": [ - "path:deny-resolve" + "core:tray:allow-get-by-id" ] }, { - "description": "path:deny-resolve-directory -> Denies the resolve_directory command without any pre-configured scope.", + "description": "core:tray:allow-new -> Enables the new command without any pre-configured scope.", "type": "string", "enum": [ - "path:deny-resolve-directory" + "core:tray:allow-new" ] }, { - "description": "resources:default -> Default permissions for the plugin.", + "description": "core:tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.", "type": "string", "enum": [ - "resources:default" + "core:tray:allow-remove-by-id" ] }, { - "description": "resources:allow-close -> Enables the close command without any pre-configured scope.", + "description": "core:tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", "type": "string", "enum": [ - "resources:allow-close" + "core:tray:allow-set-icon" ] }, { - "description": "resources:deny-close -> Denies the close command without any pre-configured scope.", + "description": "core:tray:allow-set-icon-as-template -> Enables the set_icon_as_template command without any pre-configured scope.", "type": "string", "enum": [ - "resources:deny-close" + "core:tray:allow-set-icon-as-template" ] }, { - "description": "tray:default -> Default permissions for the plugin.", + "description": "core:tray:allow-set-menu -> Enables the set_menu command without any pre-configured scope.", "type": "string", "enum": [ - "tray:default" + "core:tray:allow-set-menu" ] }, { - "description": "tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.", + "description": "core:tray:allow-set-show-menu-on-left-click -> Enables the set_show_menu_on_left_click command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-get-by-id" + "core:tray:allow-set-show-menu-on-left-click" ] }, { - "description": "tray:allow-new -> Enables the new command without any pre-configured scope.", + "description": "core:tray:allow-set-temp-dir-path -> Enables the set_temp_dir_path command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-new" + "core:tray:allow-set-temp-dir-path" ] }, { - "description": "tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.", + "description": "core:tray:allow-set-title -> Enables the set_title command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-remove-by-id" + "core:tray:allow-set-title" ] }, { - "description": "tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "description": "core:tray:allow-set-tooltip -> Enables the set_tooltip command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-set-icon" + "core:tray:allow-set-tooltip" ] }, { - "description": "tray:allow-set-icon-as-template -> Enables the set_icon_as_template command without any pre-configured scope.", + "description": "core:tray:allow-set-visible -> Enables the set_visible command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-set-icon-as-template" + "core:tray:allow-set-visible" ] }, { - "description": "tray:allow-set-menu -> Enables the set_menu command without any pre-configured scope.", + "description": "core:tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-set-menu" + "core:tray:deny-get-by-id" ] }, { - "description": "tray:allow-set-show-menu-on-left-click -> Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "description": "core:tray:deny-new -> Denies the new command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-set-show-menu-on-left-click" + "core:tray:deny-new" ] }, { - "description": "tray:allow-set-temp-dir-path -> Enables the set_temp_dir_path command without any pre-configured scope.", + "description": "core:tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-set-temp-dir-path" + "core:tray:deny-remove-by-id" ] }, { - "description": "tray:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "description": "core:tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-set-title" + "core:tray:deny-set-icon" ] }, { - "description": "tray:allow-set-tooltip -> Enables the set_tooltip command without any pre-configured scope.", + "description": "core:tray:deny-set-icon-as-template -> Denies the set_icon_as_template command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-set-tooltip" + "core:tray:deny-set-icon-as-template" ] }, { - "description": "tray:allow-set-visible -> Enables the set_visible command without any pre-configured scope.", + "description": "core:tray:deny-set-menu -> Denies the set_menu command without any pre-configured scope.", "type": "string", "enum": [ - "tray:allow-set-visible" + "core:tray:deny-set-menu" ] }, { - "description": "tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.", + "description": "core:tray:deny-set-show-menu-on-left-click -> Denies the set_show_menu_on_left_click command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-get-by-id" + "core:tray:deny-set-show-menu-on-left-click" ] }, { - "description": "tray:deny-new -> Denies the new command without any pre-configured scope.", + "description": "core:tray:deny-set-temp-dir-path -> Denies the set_temp_dir_path command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-new" + "core:tray:deny-set-temp-dir-path" ] }, { - "description": "tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.", + "description": "core:tray:deny-set-title -> Denies the set_title command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-remove-by-id" + "core:tray:deny-set-title" ] }, { - "description": "tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "description": "core:tray:deny-set-tooltip -> Denies the set_tooltip command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-set-icon" + "core:tray:deny-set-tooltip" ] }, { - "description": "tray:deny-set-icon-as-template -> Denies the set_icon_as_template command without any pre-configured scope.", + "description": "core:tray:deny-set-visible -> Denies the set_visible command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-set-icon-as-template" + "core:tray:deny-set-visible" ] }, { - "description": "tray:deny-set-menu -> Denies the set_menu command without any pre-configured scope.", + "description": "core:webview:default -> Default permissions for the plugin.", "type": "string", "enum": [ - "tray:deny-set-menu" + "core:webview:default" ] }, { - "description": "tray:deny-set-show-menu-on-left-click -> Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "description": "core:webview:allow-create-webview -> Enables the create_webview command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-set-show-menu-on-left-click" + "core:webview:allow-create-webview" ] }, { - "description": "tray:deny-set-temp-dir-path -> Denies the set_temp_dir_path command without any pre-configured scope.", + "description": "core:webview:allow-create-webview-window -> Enables the create_webview_window command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-set-temp-dir-path" + "core:webview:allow-create-webview-window" ] }, { - "description": "tray:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "description": "core:webview:allow-internal-toggle-devtools -> Enables the internal_toggle_devtools command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-set-title" + "core:webview:allow-internal-toggle-devtools" ] }, { - "description": "tray:deny-set-tooltip -> Denies the set_tooltip command without any pre-configured scope.", + "description": "core:webview:allow-print -> Enables the print command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-set-tooltip" + "core:webview:allow-print" ] }, { - "description": "tray:deny-set-visible -> Denies the set_visible command without any pre-configured scope.", + "description": "core:webview:allow-reparent -> Enables the reparent command without any pre-configured scope.", "type": "string", "enum": [ - "tray:deny-set-visible" + "core:webview:allow-reparent" ] }, { - "description": "webview:default -> Default permissions for the plugin.", + "description": "core:webview:allow-set-webview-focus -> Enables the set_webview_focus command without any pre-configured scope.", "type": "string", "enum": [ - "webview:default" + "core:webview:allow-set-webview-focus" ] }, { - "description": "webview:allow-create-webview -> Enables the create_webview command without any pre-configured scope.", + "description": "core:webview:allow-set-webview-position -> Enables the set_webview_position command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-create-webview" + "core:webview:allow-set-webview-position" ] }, { - "description": "webview:allow-create-webview-window -> Enables the create_webview_window command without any pre-configured scope.", + "description": "core:webview:allow-set-webview-size -> Enables the set_webview_size command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-create-webview-window" + "core:webview:allow-set-webview-size" ] }, { - "description": "webview:allow-internal-toggle-devtools -> Enables the internal_toggle_devtools command without any pre-configured scope.", + "description": "core:webview:allow-set-webview-zoom -> Enables the set_webview_zoom command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-internal-toggle-devtools" + "core:webview:allow-set-webview-zoom" ] }, { - "description": "webview:allow-print -> Enables the print command without any pre-configured scope.", + "description": "core:webview:allow-webview-close -> Enables the webview_close command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-print" + "core:webview:allow-webview-close" ] }, { - "description": "webview:allow-reparent -> Enables the reparent command without any pre-configured scope.", + "description": "core:webview:allow-webview-position -> Enables the webview_position command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-reparent" + "core:webview:allow-webview-position" ] }, { - "description": "webview:allow-set-webview-focus -> Enables the set_webview_focus command without any pre-configured scope.", + "description": "core:webview:allow-webview-size -> Enables the webview_size command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-set-webview-focus" + "core:webview:allow-webview-size" ] }, { - "description": "webview:allow-set-webview-position -> Enables the set_webview_position command without any pre-configured scope.", + "description": "core:webview:deny-create-webview -> Denies the create_webview command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-set-webview-position" + "core:webview:deny-create-webview" ] }, { - "description": "webview:allow-set-webview-size -> Enables the set_webview_size command without any pre-configured scope.", + "description": "core:webview:deny-create-webview-window -> Denies the create_webview_window command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-set-webview-size" + "core:webview:deny-create-webview-window" ] }, { - "description": "webview:allow-set-webview-zoom -> Enables the set_webview_zoom command without any pre-configured scope.", + "description": "core:webview:deny-internal-toggle-devtools -> Denies the internal_toggle_devtools command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-set-webview-zoom" + "core:webview:deny-internal-toggle-devtools" ] }, { - "description": "webview:allow-webview-close -> Enables the webview_close command without any pre-configured scope.", + "description": "core:webview:deny-print -> Denies the print command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-webview-close" + "core:webview:deny-print" ] }, { - "description": "webview:allow-webview-position -> Enables the webview_position command without any pre-configured scope.", + "description": "core:webview:deny-reparent -> Denies the reparent command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-webview-position" + "core:webview:deny-reparent" ] }, { - "description": "webview:allow-webview-size -> Enables the webview_size command without any pre-configured scope.", + "description": "core:webview:deny-set-webview-focus -> Denies the set_webview_focus command without any pre-configured scope.", "type": "string", "enum": [ - "webview:allow-webview-size" + "core:webview:deny-set-webview-focus" ] }, { - "description": "webview:deny-create-webview -> Denies the create_webview command without any pre-configured scope.", + "description": "core:webview:deny-set-webview-position -> Denies the set_webview_position command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-create-webview" + "core:webview:deny-set-webview-position" ] }, { - "description": "webview:deny-create-webview-window -> Denies the create_webview_window command without any pre-configured scope.", + "description": "core:webview:deny-set-webview-size -> Denies the set_webview_size command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-create-webview-window" + "core:webview:deny-set-webview-size" ] }, { - "description": "webview:deny-internal-toggle-devtools -> Denies the internal_toggle_devtools command without any pre-configured scope.", + "description": "core:webview:deny-set-webview-zoom -> Denies the set_webview_zoom command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-internal-toggle-devtools" + "core:webview:deny-set-webview-zoom" ] }, { - "description": "webview:deny-print -> Denies the print command without any pre-configured scope.", + "description": "core:webview:deny-webview-close -> Denies the webview_close command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-print" + "core:webview:deny-webview-close" ] }, { - "description": "webview:deny-reparent -> Denies the reparent command without any pre-configured scope.", + "description": "core:webview:deny-webview-position -> Denies the webview_position command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-reparent" + "core:webview:deny-webview-position" ] }, { - "description": "webview:deny-set-webview-focus -> Denies the set_webview_focus command without any pre-configured scope.", + "description": "core:webview:deny-webview-size -> Denies the webview_size command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-set-webview-focus" + "core:webview:deny-webview-size" ] }, { - "description": "webview:deny-set-webview-position -> Denies the set_webview_position command without any pre-configured scope.", + "description": "core:window:default -> Default permissions for the plugin.", "type": "string", "enum": [ - "webview:deny-set-webview-position" + "core:window:default" ] }, { - "description": "webview:deny-set-webview-size -> Denies the set_webview_size command without any pre-configured scope.", + "description": "core:window:allow-available-monitors -> Enables the available_monitors command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-set-webview-size" + "core:window:allow-available-monitors" ] }, { - "description": "webview:deny-set-webview-zoom -> Denies the set_webview_zoom command without any pre-configured scope.", + "description": "core:window:allow-center -> Enables the center command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-set-webview-zoom" + "core:window:allow-center" ] }, { - "description": "webview:deny-webview-close -> Denies the webview_close command without any pre-configured scope.", + "description": "core:window:allow-close -> Enables the close command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-webview-close" + "core:window:allow-close" ] }, { - "description": "webview:deny-webview-position -> Denies the webview_position command without any pre-configured scope.", + "description": "core:window:allow-create -> Enables the create command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-webview-position" + "core:window:allow-create" ] }, { - "description": "webview:deny-webview-size -> Denies the webview_size command without any pre-configured scope.", + "description": "core:window:allow-current-monitor -> Enables the current_monitor command without any pre-configured scope.", "type": "string", "enum": [ - "webview:deny-webview-size" + "core:window:allow-current-monitor" ] }, { - "description": "window:default -> Default permissions for the plugin.", + "description": "core:window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:default" + "core:window:allow-cursor-position" ] }, { - "description": "window:allow-available-monitors -> Enables the available_monitors command without any pre-configured scope.", + "description": "core:window:allow-destroy -> Enables the destroy command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-available-monitors" + "core:window:allow-destroy" ] }, { - "description": "window:allow-center -> Enables the center command without any pre-configured scope.", + "description": "core:window:allow-hide -> Enables the hide command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-center" + "core:window:allow-hide" ] }, { - "description": "window:allow-close -> Enables the close command without any pre-configured scope.", + "description": "core:window:allow-inner-position -> Enables the inner_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-close" + "core:window:allow-inner-position" ] }, { - "description": "window:allow-create -> Enables the create command without any pre-configured scope.", + "description": "core:window:allow-inner-size -> Enables the inner_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-create" + "core:window:allow-inner-size" ] }, { - "description": "window:allow-current-monitor -> Enables the current_monitor command without any pre-configured scope.", + "description": "core:window:allow-internal-toggle-maximize -> Enables the internal_toggle_maximize command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-current-monitor" + "core:window:allow-internal-toggle-maximize" ] }, { - "description": "window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.", + "description": "core:window:allow-is-closable -> Enables the is_closable command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-cursor-position" + "core:window:allow-is-closable" ] }, { - "description": "window:allow-destroy -> Enables the destroy command without any pre-configured scope.", + "description": "core:window:allow-is-decorated -> Enables the is_decorated command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-destroy" + "core:window:allow-is-decorated" ] }, { - "description": "window:allow-hide -> Enables the hide command without any pre-configured scope.", + "description": "core:window:allow-is-focused -> Enables the is_focused command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-hide" + "core:window:allow-is-focused" ] }, { - "description": "window:allow-inner-position -> Enables the inner_position command without any pre-configured scope.", + "description": "core:window:allow-is-fullscreen -> Enables the is_fullscreen command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-inner-position" + "core:window:allow-is-fullscreen" ] }, { - "description": "window:allow-inner-size -> Enables the inner_size command without any pre-configured scope.", + "description": "core:window:allow-is-maximizable -> Enables the is_maximizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-inner-size" + "core:window:allow-is-maximizable" ] }, { - "description": "window:allow-internal-toggle-maximize -> Enables the internal_toggle_maximize command without any pre-configured scope.", + "description": "core:window:allow-is-maximized -> Enables the is_maximized command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-internal-toggle-maximize" + "core:window:allow-is-maximized" ] }, { - "description": "window:allow-is-closable -> Enables the is_closable command without any pre-configured scope.", + "description": "core:window:allow-is-minimizable -> Enables the is_minimizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-closable" + "core:window:allow-is-minimizable" ] }, { - "description": "window:allow-is-decorated -> Enables the is_decorated command without any pre-configured scope.", + "description": "core:window:allow-is-minimized -> Enables the is_minimized command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-decorated" + "core:window:allow-is-minimized" ] }, { - "description": "window:allow-is-focused -> Enables the is_focused command without any pre-configured scope.", + "description": "core:window:allow-is-resizable -> Enables the is_resizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-focused" + "core:window:allow-is-resizable" ] }, { - "description": "window:allow-is-fullscreen -> Enables the is_fullscreen command without any pre-configured scope.", + "description": "core:window:allow-is-visible -> Enables the is_visible command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-fullscreen" + "core:window:allow-is-visible" ] }, { - "description": "window:allow-is-maximizable -> Enables the is_maximizable command without any pre-configured scope.", + "description": "core:window:allow-maximize -> Enables the maximize command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-maximizable" + "core:window:allow-maximize" ] }, { - "description": "window:allow-is-maximized -> Enables the is_maximized command without any pre-configured scope.", + "description": "core:window:allow-minimize -> Enables the minimize command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-maximized" + "core:window:allow-minimize" ] }, { - "description": "window:allow-is-minimizable -> Enables the is_minimizable command without any pre-configured scope.", + "description": "core:window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-minimizable" + "core:window:allow-monitor-from-point" ] }, { - "description": "window:allow-is-minimized -> Enables the is_minimized command without any pre-configured scope.", + "description": "core:window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-minimized" + "core:window:allow-outer-position" ] }, { - "description": "window:allow-is-resizable -> Enables the is_resizable command without any pre-configured scope.", + "description": "core:window:allow-outer-size -> Enables the outer_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-resizable" + "core:window:allow-outer-size" ] }, { - "description": "window:allow-is-visible -> Enables the is_visible command without any pre-configured scope.", + "description": "core:window:allow-primary-monitor -> Enables the primary_monitor command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-is-visible" + "core:window:allow-primary-monitor" ] }, { - "description": "window:allow-maximize -> Enables the maximize command without any pre-configured scope.", + "description": "core:window:allow-request-user-attention -> Enables the request_user_attention command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-maximize" + "core:window:allow-request-user-attention" ] }, { - "description": "window:allow-minimize -> Enables the minimize command without any pre-configured scope.", + "description": "core:window:allow-scale-factor -> Enables the scale_factor command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-minimize" + "core:window:allow-scale-factor" ] }, { - "description": "window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", + "description": "core:window:allow-set-always-on-bottom -> Enables the set_always_on_bottom command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-outer-position" + "core:window:allow-set-always-on-bottom" ] }, { - "description": "window:allow-outer-size -> Enables the outer_size command without any pre-configured scope.", + "description": "core:window:allow-set-always-on-top -> Enables the set_always_on_top command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-outer-size" + "core:window:allow-set-always-on-top" ] }, { - "description": "window:allow-primary-monitor -> Enables the primary_monitor command without any pre-configured scope.", + "description": "core:window:allow-set-closable -> Enables the set_closable command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-primary-monitor" + "core:window:allow-set-closable" ] }, { - "description": "window:allow-request-user-attention -> Enables the request_user_attention command without any pre-configured scope.", + "description": "core:window:allow-set-content-protected -> Enables the set_content_protected command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-request-user-attention" + "core:window:allow-set-content-protected" ] }, { - "description": "window:allow-scale-factor -> Enables the scale_factor command without any pre-configured scope.", + "description": "core:window:allow-set-cursor-grab -> Enables the set_cursor_grab command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-scale-factor" + "core:window:allow-set-cursor-grab" ] }, { - "description": "window:allow-set-always-on-bottom -> Enables the set_always_on_bottom command without any pre-configured scope.", + "description": "core:window:allow-set-cursor-icon -> Enables the set_cursor_icon command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-always-on-bottom" + "core:window:allow-set-cursor-icon" ] }, { - "description": "window:allow-set-always-on-top -> Enables the set_always_on_top command without any pre-configured scope.", + "description": "core:window:allow-set-cursor-position -> Enables the set_cursor_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-always-on-top" + "core:window:allow-set-cursor-position" ] }, { - "description": "window:allow-set-closable -> Enables the set_closable command without any pre-configured scope.", + "description": "core:window:allow-set-cursor-visible -> Enables the set_cursor_visible command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-closable" + "core:window:allow-set-cursor-visible" ] }, { - "description": "window:allow-set-content-protected -> Enables the set_content_protected command without any pre-configured scope.", + "description": "core:window:allow-set-decorations -> Enables the set_decorations command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-content-protected" + "core:window:allow-set-decorations" ] }, { - "description": "window:allow-set-cursor-grab -> Enables the set_cursor_grab command without any pre-configured scope.", + "description": "core:window:allow-set-effects -> Enables the set_effects command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-cursor-grab" + "core:window:allow-set-effects" ] }, { - "description": "window:allow-set-cursor-icon -> Enables the set_cursor_icon command without any pre-configured scope.", + "description": "core:window:allow-set-focus -> Enables the set_focus command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-cursor-icon" + "core:window:allow-set-focus" ] }, { - "description": "window:allow-set-cursor-position -> Enables the set_cursor_position command without any pre-configured scope.", + "description": "core:window:allow-set-fullscreen -> Enables the set_fullscreen command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-cursor-position" + "core:window:allow-set-fullscreen" ] }, { - "description": "window:allow-set-cursor-visible -> Enables the set_cursor_visible command without any pre-configured scope.", + "description": "core:window:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-cursor-visible" + "core:window:allow-set-icon" ] }, { - "description": "window:allow-set-decorations -> Enables the set_decorations command without any pre-configured scope.", + "description": "core:window:allow-set-ignore-cursor-events -> Enables the set_ignore_cursor_events command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-decorations" + "core:window:allow-set-ignore-cursor-events" ] }, { - "description": "window:allow-set-effects -> Enables the set_effects command without any pre-configured scope.", + "description": "core:window:allow-set-max-size -> Enables the set_max_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-effects" + "core:window:allow-set-max-size" ] }, { - "description": "window:allow-set-focus -> Enables the set_focus command without any pre-configured scope.", + "description": "core:window:allow-set-maximizable -> Enables the set_maximizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-focus" + "core:window:allow-set-maximizable" ] }, { - "description": "window:allow-set-fullscreen -> Enables the set_fullscreen command without any pre-configured scope.", + "description": "core:window:allow-set-min-size -> Enables the set_min_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-fullscreen" + "core:window:allow-set-min-size" ] }, { - "description": "window:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "description": "core:window:allow-set-minimizable -> Enables the set_minimizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-icon" + "core:window:allow-set-minimizable" ] }, { - "description": "window:allow-set-ignore-cursor-events -> Enables the set_ignore_cursor_events command without any pre-configured scope.", + "description": "core:window:allow-set-position -> Enables the set_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-ignore-cursor-events" + "core:window:allow-set-position" ] }, { - "description": "window:allow-set-max-size -> Enables the set_max_size command without any pre-configured scope.", + "description": "core:window:allow-set-progress-bar -> Enables the set_progress_bar command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-max-size" + "core:window:allow-set-progress-bar" ] }, { - "description": "window:allow-set-maximizable -> Enables the set_maximizable command without any pre-configured scope.", + "description": "core:window:allow-set-resizable -> Enables the set_resizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-maximizable" + "core:window:allow-set-resizable" ] }, { - "description": "window:allow-set-min-size -> Enables the set_min_size command without any pre-configured scope.", + "description": "core:window:allow-set-shadow -> Enables the set_shadow command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-min-size" + "core:window:allow-set-shadow" ] }, { - "description": "window:allow-set-minimizable -> Enables the set_minimizable command without any pre-configured scope.", + "description": "core:window:allow-set-size -> Enables the set_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-minimizable" + "core:window:allow-set-size" ] }, { - "description": "window:allow-set-position -> Enables the set_position command without any pre-configured scope.", + "description": "core:window:allow-set-size-constraints -> Enables the set_size_constraints command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-position" + "core:window:allow-set-size-constraints" ] }, { - "description": "window:allow-set-progress-bar -> Enables the set_progress_bar command without any pre-configured scope.", + "description": "core:window:allow-set-skip-taskbar -> Enables the set_skip_taskbar command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-progress-bar" + "core:window:allow-set-skip-taskbar" ] }, { - "description": "window:allow-set-resizable -> Enables the set_resizable command without any pre-configured scope.", + "description": "core:window:allow-set-title -> Enables the set_title command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-resizable" + "core:window:allow-set-title" ] }, { - "description": "window:allow-set-shadow -> Enables the set_shadow command without any pre-configured scope.", + "description": "core:window:allow-set-title-bar-style -> Enables the set_title_bar_style command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-shadow" + "core:window:allow-set-title-bar-style" ] }, { - "description": "window:allow-set-size -> Enables the set_size command without any pre-configured scope.", + "description": "core:window:allow-set-visible-on-all-workspaces -> Enables the set_visible_on_all_workspaces command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-size" + "core:window:allow-set-visible-on-all-workspaces" ] }, { - "description": "window:allow-set-skip-taskbar -> Enables the set_skip_taskbar command without any pre-configured scope.", + "description": "core:window:allow-show -> Enables the show command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-skip-taskbar" + "core:window:allow-show" ] }, { - "description": "window:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "description": "core:window:allow-start-dragging -> Enables the start_dragging command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-title" + "core:window:allow-start-dragging" ] }, { - "description": "window:allow-set-visible-on-all-workspaces -> Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "description": "core:window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-set-visible-on-all-workspaces" + "core:window:allow-start-resize-dragging" ] }, { - "description": "window:allow-show -> Enables the show command without any pre-configured scope.", + "description": "core:window:allow-theme -> Enables the theme command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-show" + "core:window:allow-theme" ] }, { - "description": "window:allow-start-dragging -> Enables the start_dragging command without any pre-configured scope.", + "description": "core:window:allow-title -> Enables the title command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-start-dragging" + "core:window:allow-title" ] }, { - "description": "window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.", + "description": "core:window:allow-toggle-maximize -> Enables the toggle_maximize command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-start-resize-dragging" + "core:window:allow-toggle-maximize" ] }, { - "description": "window:allow-theme -> Enables the theme command without any pre-configured scope.", + "description": "core:window:allow-unmaximize -> Enables the unmaximize command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-theme" + "core:window:allow-unmaximize" ] }, { - "description": "window:allow-title -> Enables the title command without any pre-configured scope.", + "description": "core:window:allow-unminimize -> Enables the unminimize command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-title" + "core:window:allow-unminimize" ] }, { - "description": "window:allow-toggle-maximize -> Enables the toggle_maximize command without any pre-configured scope.", + "description": "core:window:deny-available-monitors -> Denies the available_monitors command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-toggle-maximize" + "core:window:deny-available-monitors" ] }, { - "description": "window:allow-unmaximize -> Enables the unmaximize command without any pre-configured scope.", + "description": "core:window:deny-center -> Denies the center command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-unmaximize" + "core:window:deny-center" ] }, { - "description": "window:allow-unminimize -> Enables the unminimize command without any pre-configured scope.", + "description": "core:window:deny-close -> Denies the close command without any pre-configured scope.", "type": "string", "enum": [ - "window:allow-unminimize" + "core:window:deny-close" ] }, { - "description": "window:deny-available-monitors -> Denies the available_monitors command without any pre-configured scope.", + "description": "core:window:deny-create -> Denies the create command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-available-monitors" + "core:window:deny-create" ] }, { - "description": "window:deny-center -> Denies the center command without any pre-configured scope.", + "description": "core:window:deny-current-monitor -> Denies the current_monitor command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-center" + "core:window:deny-current-monitor" ] }, { - "description": "window:deny-close -> Denies the close command without any pre-configured scope.", + "description": "core:window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-close" + "core:window:deny-cursor-position" ] }, { - "description": "window:deny-create -> Denies the create command without any pre-configured scope.", + "description": "core:window:deny-destroy -> Denies the destroy command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-create" + "core:window:deny-destroy" ] }, { - "description": "window:deny-current-monitor -> Denies the current_monitor command without any pre-configured scope.", + "description": "core:window:deny-hide -> Denies the hide command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-current-monitor" + "core:window:deny-hide" ] }, { - "description": "window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.", + "description": "core:window:deny-inner-position -> Denies the inner_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-cursor-position" + "core:window:deny-inner-position" ] }, { - "description": "window:deny-destroy -> Denies the destroy command without any pre-configured scope.", + "description": "core:window:deny-inner-size -> Denies the inner_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-destroy" + "core:window:deny-inner-size" ] }, { - "description": "window:deny-hide -> Denies the hide command without any pre-configured scope.", + "description": "core:window:deny-internal-toggle-maximize -> Denies the internal_toggle_maximize command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-hide" + "core:window:deny-internal-toggle-maximize" ] }, { - "description": "window:deny-inner-position -> Denies the inner_position command without any pre-configured scope.", + "description": "core:window:deny-is-closable -> Denies the is_closable command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-inner-position" + "core:window:deny-is-closable" ] }, { - "description": "window:deny-inner-size -> Denies the inner_size command without any pre-configured scope.", + "description": "core:window:deny-is-decorated -> Denies the is_decorated command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-inner-size" + "core:window:deny-is-decorated" ] }, { - "description": "window:deny-internal-toggle-maximize -> Denies the internal_toggle_maximize command without any pre-configured scope.", + "description": "core:window:deny-is-focused -> Denies the is_focused command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-internal-toggle-maximize" + "core:window:deny-is-focused" ] }, { - "description": "window:deny-is-closable -> Denies the is_closable command without any pre-configured scope.", + "description": "core:window:deny-is-fullscreen -> Denies the is_fullscreen command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-closable" + "core:window:deny-is-fullscreen" ] }, { - "description": "window:deny-is-decorated -> Denies the is_decorated command without any pre-configured scope.", + "description": "core:window:deny-is-maximizable -> Denies the is_maximizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-decorated" + "core:window:deny-is-maximizable" ] }, { - "description": "window:deny-is-focused -> Denies the is_focused command without any pre-configured scope.", + "description": "core:window:deny-is-maximized -> Denies the is_maximized command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-focused" + "core:window:deny-is-maximized" ] }, { - "description": "window:deny-is-fullscreen -> Denies the is_fullscreen command without any pre-configured scope.", + "description": "core:window:deny-is-minimizable -> Denies the is_minimizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-fullscreen" + "core:window:deny-is-minimizable" ] }, { - "description": "window:deny-is-maximizable -> Denies the is_maximizable command without any pre-configured scope.", + "description": "core:window:deny-is-minimized -> Denies the is_minimized command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-maximizable" + "core:window:deny-is-minimized" ] }, { - "description": "window:deny-is-maximized -> Denies the is_maximized command without any pre-configured scope.", + "description": "core:window:deny-is-resizable -> Denies the is_resizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-maximized" + "core:window:deny-is-resizable" ] }, { - "description": "window:deny-is-minimizable -> Denies the is_minimizable command without any pre-configured scope.", + "description": "core:window:deny-is-visible -> Denies the is_visible command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-minimizable" + "core:window:deny-is-visible" ] }, { - "description": "window:deny-is-minimized -> Denies the is_minimized command without any pre-configured scope.", + "description": "core:window:deny-maximize -> Denies the maximize command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-minimized" + "core:window:deny-maximize" ] }, { - "description": "window:deny-is-resizable -> Denies the is_resizable command without any pre-configured scope.", + "description": "core:window:deny-minimize -> Denies the minimize command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-resizable" + "core:window:deny-minimize" ] }, { - "description": "window:deny-is-visible -> Denies the is_visible command without any pre-configured scope.", + "description": "core:window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-is-visible" + "core:window:deny-monitor-from-point" ] }, { - "description": "window:deny-maximize -> Denies the maximize command without any pre-configured scope.", + "description": "core:window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-maximize" + "core:window:deny-outer-position" ] }, { - "description": "window:deny-minimize -> Denies the minimize command without any pre-configured scope.", + "description": "core:window:deny-outer-size -> Denies the outer_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-minimize" + "core:window:deny-outer-size" ] }, { - "description": "window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", + "description": "core:window:deny-primary-monitor -> Denies the primary_monitor command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-outer-position" + "core:window:deny-primary-monitor" ] }, { - "description": "window:deny-outer-size -> Denies the outer_size command without any pre-configured scope.", + "description": "core:window:deny-request-user-attention -> Denies the request_user_attention command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-outer-size" + "core:window:deny-request-user-attention" ] }, { - "description": "window:deny-primary-monitor -> Denies the primary_monitor command without any pre-configured scope.", + "description": "core:window:deny-scale-factor -> Denies the scale_factor command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-primary-monitor" + "core:window:deny-scale-factor" ] }, { - "description": "window:deny-request-user-attention -> Denies the request_user_attention command without any pre-configured scope.", + "description": "core:window:deny-set-always-on-bottom -> Denies the set_always_on_bottom command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-request-user-attention" + "core:window:deny-set-always-on-bottom" ] }, { - "description": "window:deny-scale-factor -> Denies the scale_factor command without any pre-configured scope.", + "description": "core:window:deny-set-always-on-top -> Denies the set_always_on_top command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-scale-factor" + "core:window:deny-set-always-on-top" ] }, { - "description": "window:deny-set-always-on-bottom -> Denies the set_always_on_bottom command without any pre-configured scope.", + "description": "core:window:deny-set-closable -> Denies the set_closable command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-always-on-bottom" + "core:window:deny-set-closable" ] }, { - "description": "window:deny-set-always-on-top -> Denies the set_always_on_top command without any pre-configured scope.", + "description": "core:window:deny-set-content-protected -> Denies the set_content_protected command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-always-on-top" + "core:window:deny-set-content-protected" ] }, { - "description": "window:deny-set-closable -> Denies the set_closable command without any pre-configured scope.", + "description": "core:window:deny-set-cursor-grab -> Denies the set_cursor_grab command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-closable" + "core:window:deny-set-cursor-grab" ] }, { - "description": "window:deny-set-content-protected -> Denies the set_content_protected command without any pre-configured scope.", + "description": "core:window:deny-set-cursor-icon -> Denies the set_cursor_icon command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-content-protected" + "core:window:deny-set-cursor-icon" ] }, { - "description": "window:deny-set-cursor-grab -> Denies the set_cursor_grab command without any pre-configured scope.", + "description": "core:window:deny-set-cursor-position -> Denies the set_cursor_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-cursor-grab" + "core:window:deny-set-cursor-position" ] }, { - "description": "window:deny-set-cursor-icon -> Denies the set_cursor_icon command without any pre-configured scope.", + "description": "core:window:deny-set-cursor-visible -> Denies the set_cursor_visible command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-cursor-icon" + "core:window:deny-set-cursor-visible" ] }, { - "description": "window:deny-set-cursor-position -> Denies the set_cursor_position command without any pre-configured scope.", + "description": "core:window:deny-set-decorations -> Denies the set_decorations command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-cursor-position" + "core:window:deny-set-decorations" ] }, { - "description": "window:deny-set-cursor-visible -> Denies the set_cursor_visible command without any pre-configured scope.", + "description": "core:window:deny-set-effects -> Denies the set_effects command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-cursor-visible" + "core:window:deny-set-effects" ] }, { - "description": "window:deny-set-decorations -> Denies the set_decorations command without any pre-configured scope.", + "description": "core:window:deny-set-focus -> Denies the set_focus command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-decorations" + "core:window:deny-set-focus" ] }, { - "description": "window:deny-set-effects -> Denies the set_effects command without any pre-configured scope.", + "description": "core:window:deny-set-fullscreen -> Denies the set_fullscreen command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-effects" + "core:window:deny-set-fullscreen" ] }, { - "description": "window:deny-set-focus -> Denies the set_focus command without any pre-configured scope.", + "description": "core:window:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-focus" + "core:window:deny-set-icon" ] }, { - "description": "window:deny-set-fullscreen -> Denies the set_fullscreen command without any pre-configured scope.", + "description": "core:window:deny-set-ignore-cursor-events -> Denies the set_ignore_cursor_events command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-fullscreen" + "core:window:deny-set-ignore-cursor-events" ] }, { - "description": "window:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "description": "core:window:deny-set-max-size -> Denies the set_max_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-icon" + "core:window:deny-set-max-size" ] }, { - "description": "window:deny-set-ignore-cursor-events -> Denies the set_ignore_cursor_events command without any pre-configured scope.", + "description": "core:window:deny-set-maximizable -> Denies the set_maximizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-ignore-cursor-events" + "core:window:deny-set-maximizable" ] }, { - "description": "window:deny-set-max-size -> Denies the set_max_size command without any pre-configured scope.", + "description": "core:window:deny-set-min-size -> Denies the set_min_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-max-size" + "core:window:deny-set-min-size" ] }, { - "description": "window:deny-set-maximizable -> Denies the set_maximizable command without any pre-configured scope.", + "description": "core:window:deny-set-minimizable -> Denies the set_minimizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-maximizable" + "core:window:deny-set-minimizable" ] }, { - "description": "window:deny-set-min-size -> Denies the set_min_size command without any pre-configured scope.", + "description": "core:window:deny-set-position -> Denies the set_position command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-min-size" + "core:window:deny-set-position" ] }, { - "description": "window:deny-set-minimizable -> Denies the set_minimizable command without any pre-configured scope.", + "description": "core:window:deny-set-progress-bar -> Denies the set_progress_bar command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-minimizable" + "core:window:deny-set-progress-bar" ] }, { - "description": "window:deny-set-position -> Denies the set_position command without any pre-configured scope.", + "description": "core:window:deny-set-resizable -> Denies the set_resizable command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-position" + "core:window:deny-set-resizable" ] }, { - "description": "window:deny-set-progress-bar -> Denies the set_progress_bar command without any pre-configured scope.", + "description": "core:window:deny-set-shadow -> Denies the set_shadow command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-progress-bar" + "core:window:deny-set-shadow" ] }, { - "description": "window:deny-set-resizable -> Denies the set_resizable command without any pre-configured scope.", + "description": "core:window:deny-set-size -> Denies the set_size command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-resizable" + "core:window:deny-set-size" ] }, { - "description": "window:deny-set-shadow -> Denies the set_shadow command without any pre-configured scope.", + "description": "core:window:deny-set-size-constraints -> Denies the set_size_constraints command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-shadow" + "core:window:deny-set-size-constraints" ] }, { - "description": "window:deny-set-size -> Denies the set_size command without any pre-configured scope.", + "description": "core:window:deny-set-skip-taskbar -> Denies the set_skip_taskbar command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-size" + "core:window:deny-set-skip-taskbar" ] }, { - "description": "window:deny-set-skip-taskbar -> Denies the set_skip_taskbar command without any pre-configured scope.", + "description": "core:window:deny-set-title -> Denies the set_title command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-skip-taskbar" + "core:window:deny-set-title" ] }, { - "description": "window:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "description": "core:window:deny-set-title-bar-style -> Denies the set_title_bar_style command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-title" + "core:window:deny-set-title-bar-style" ] }, { - "description": "window:deny-set-visible-on-all-workspaces -> Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "description": "core:window:deny-set-visible-on-all-workspaces -> Denies the set_visible_on_all_workspaces command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-set-visible-on-all-workspaces" + "core:window:deny-set-visible-on-all-workspaces" ] }, { - "description": "window:deny-show -> Denies the show command without any pre-configured scope.", + "description": "core:window:deny-show -> Denies the show command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-show" + "core:window:deny-show" ] }, { - "description": "window:deny-start-dragging -> Denies the start_dragging command without any pre-configured scope.", + "description": "core:window:deny-start-dragging -> Denies the start_dragging command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-start-dragging" + "core:window:deny-start-dragging" ] }, { - "description": "window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.", + "description": "core:window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-start-resize-dragging" + "core:window:deny-start-resize-dragging" ] }, { - "description": "window:deny-theme -> Denies the theme command without any pre-configured scope.", + "description": "core:window:deny-theme -> Denies the theme command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-theme" + "core:window:deny-theme" ] }, { - "description": "window:deny-title -> Denies the title command without any pre-configured scope.", + "description": "core:window:deny-title -> Denies the title command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-title" + "core:window:deny-title" ] }, { - "description": "window:deny-toggle-maximize -> Denies the toggle_maximize command without any pre-configured scope.", + "description": "core:window:deny-toggle-maximize -> Denies the toggle_maximize command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-toggle-maximize" + "core:window:deny-toggle-maximize" ] }, { - "description": "window:deny-unmaximize -> Denies the unmaximize command without any pre-configured scope.", + "description": "core:window:deny-unmaximize -> Denies the unmaximize command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-unmaximize" + "core:window:deny-unmaximize" ] }, { - "description": "window:deny-unminimize -> Denies the unminimize command without any pre-configured scope.", + "description": "core:window:deny-unminimize -> Denies the unminimize command without any pre-configured scope.", "type": "string", "enum": [ - "window:deny-unminimize" + "core:window:deny-unminimize" ] } ] diff --git a/apps/tauri/src-tauri/gen/schemas/linux-schema.json b/apps/tauri/src-tauri/gen/schemas/linux-schema.json new file mode 100644 index 000000000..5eeb099bd --- /dev/null +++ b/apps/tauri/src-tauri/gen/schemas/linux-schema.json @@ -0,0 +1,2210 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "CapabilityFile", + "description": "Capability formats accepted in a capability file.", + "anyOf": [ + { + "description": "A single capability.", + "allOf": [ + { + "$ref": "#/definitions/Capability" + } + ] + }, + { + "description": "A list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + }, + { + "description": "A list of capabilities.", + "type": "object", + "required": [ + "capabilities" + ], + "properties": { + "capabilities": { + "description": "The list of capabilities.", + "type": "array", + "items": { + "$ref": "#/definitions/Capability" + } + } + } + } + ], + "definitions": { + "Capability": { + "description": "A grouping and boundary mechanism developers can use to isolate access to the IPC layer.\n\nIt controls application windows fine grained access to the Tauri core, application, or plugin commands. If a window is not matching any capability then it has no access to the IPC layer at all.\n\nThis can be done to create groups of windows, based on their required system access, which can reduce impact of frontend vulnerabilities in less privileged windows. Windows can be added to a capability by exact name (e.g. `main-window`) or glob patterns like `*` or `admin-*`. A Window can have none, one, or multiple associated capabilities.\n\n## Example\n\n```json { \"identifier\": \"main-user-files-write\", \"description\": \"This capability allows the `main` window on macOS and Windows access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.\", \"windows\": [ \"main\" ], \"permissions\": [ \"core:default\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] }, \"platforms\": [\"macOS\",\"windows\"] } ```", + "type": "object", + "required": [ + "identifier", + "permissions" + ], + "properties": { + "identifier": { + "description": "Identifier of the capability.\n\n## Example\n\n`main-user-files-write`", + "type": "string" + }, + "description": { + "description": "Description of what the capability is intended to allow on associated windows.\n\nIt should contain a description of what the grouped permissions should allow.\n\n## Example\n\nThis capability allows the `main` window access to `filesystem` write related commands and `dialog` commands to enable programatic access to files selected by the user.", + "default": "", + "type": "string" + }, + "remote": { + "description": "Configure remote URLs that can use the capability permissions.\n\nThis setting is optional and defaults to not being set, as our default use case is that the content is served from our local application.\n\n:::caution Make sure you understand the security implications of providing remote sources with local system access. :::\n\n## Example\n\n```json { \"urls\": [\"https://*.mydomain.dev\"] } ```", + "anyOf": [ + { + "$ref": "#/definitions/CapabilityRemote" + }, + { + "type": "null" + } + ] + }, + "local": { + "description": "Whether this capability is enabled for local app URLs or not. Defaults to `true`.", + "default": true, + "type": "boolean" + }, + "windows": { + "description": "List of windows that are affected by this capability. Can be a glob pattern.\n\nOn multiwebview windows, prefer [`Self::webviews`] for a fine grained access control.\n\n## Example\n\n`[\"main\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "webviews": { + "description": "List of webviews that are affected by this capability. Can be a glob pattern.\n\nThis is only required when using on multiwebview contexts, by default all child webviews of a window that matches [`Self::windows`] are linked.\n\n## Example\n\n`[\"sub-webview-one\", \"sub-webview-two\"]`", + "type": "array", + "items": { + "type": "string" + } + }, + "permissions": { + "description": "List of permissions attached to this capability.\n\nMust include the plugin name as prefix in the form of `${plugin-name}:${permission-name}`. For commands directly implemented in the application itself only `${permission-name}` is required.\n\n## Example\n\n```json [ \"core:default\", \"shell:allow-open\", \"dialog:open\", { \"identifier\": \"fs:allow-write-text-file\", \"allow\": [{ \"path\": \"$HOME/test.txt\" }] } ```", + "type": "array", + "items": { + "$ref": "#/definitions/PermissionEntry" + }, + "uniqueItems": true + }, + "platforms": { + "description": "Limit which target platforms this capability applies to.\n\nBy default all platforms are targeted.\n\n## Example\n\n`[\"macOS\",\"windows\"]`", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Target" + } + } + } + }, + "CapabilityRemote": { + "description": "Configuration for remote URLs that are associated with the capability.", + "type": "object", + "required": [ + "urls" + ], + "properties": { + "urls": { + "description": "Remote domains this capability refers to using the [URLPattern standard](https://urlpattern.spec.whatwg.org/).\n\n## Examples\n\n- \"https://*.mydomain.dev\": allows subdomains of mydomain.dev - \"https://mydomain.dev/api/*\": allows any subpath of mydomain.dev/api", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "PermissionEntry": { + "description": "An entry for a permission value in a [`Capability`] can be either a raw permission [`Identifier`] or an object that references a permission and extends its scope.", + "anyOf": [ + { + "description": "Reference a permission or permission set by identifier.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + { + "description": "Reference a permission or permission set by identifier and extends its scope.", + "type": "object", + "required": [ + "identifier" + ], + "properties": { + "identifier": { + "description": "Identifier of the permission or permission set.", + "allOf": [ + { + "$ref": "#/definitions/Identifier" + } + ] + }, + "allow": { + "description": "Data that defines what is allowed by the scope.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + }, + "deny": { + "description": "Data that defines what is denied by the scope. This should be prioritized by validation logic.", + "type": [ + "array", + "null" + ], + "items": { + "$ref": "#/definitions/Value" + } + } + } + } + ] + }, + "Identifier": { + "oneOf": [ + { + "description": "core:app:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:app:default" + ] + }, + { + "description": "core:app:allow-app-hide -> Enables the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-app-hide" + ] + }, + { + "description": "core:app:allow-app-show -> Enables the app_show command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-app-show" + ] + }, + { + "description": "core:app:allow-default-window-icon -> Enables the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-default-window-icon" + ] + }, + { + "description": "core:app:allow-name -> Enables the name command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-name" + ] + }, + { + "description": "core:app:allow-tauri-version -> Enables the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-tauri-version" + ] + }, + { + "description": "core:app:allow-version -> Enables the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:allow-version" + ] + }, + { + "description": "core:app:deny-app-hide -> Denies the app_hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:deny-app-hide" + ] + }, + { + "description": "core:app:deny-app-show -> Denies the app_show command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:deny-app-show" + ] + }, + { + "description": "core:app:deny-default-window-icon -> Denies the default_window_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:deny-default-window-icon" + ] + }, + { + "description": "core:app:deny-name -> Denies the name command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:deny-name" + ] + }, + { + "description": "core:app:deny-tauri-version -> Denies the tauri_version command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:deny-tauri-version" + ] + }, + { + "description": "core:app:deny-version -> Denies the version command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:app:deny-version" + ] + }, + { + "description": "core:event:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:event:default" + ] + }, + { + "description": "core:event:allow-emit -> Enables the emit command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:event:allow-emit" + ] + }, + { + "description": "core:event:allow-emit-to -> Enables the emit_to command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:event:allow-emit-to" + ] + }, + { + "description": "core:event:allow-listen -> Enables the listen command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:event:allow-listen" + ] + }, + { + "description": "core:event:allow-unlisten -> Enables the unlisten command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:event:allow-unlisten" + ] + }, + { + "description": "core:event:deny-emit -> Denies the emit command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:event:deny-emit" + ] + }, + { + "description": "core:event:deny-emit-to -> Denies the emit_to command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:event:deny-emit-to" + ] + }, + { + "description": "core:event:deny-listen -> Denies the listen command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:event:deny-listen" + ] + }, + { + "description": "core:event:deny-unlisten -> Denies the unlisten command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:event:deny-unlisten" + ] + }, + { + "description": "core:image:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:image:default" + ] + }, + { + "description": "core:image:allow-from-bytes -> Enables the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:allow-from-bytes" + ] + }, + { + "description": "core:image:allow-from-path -> Enables the from_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:allow-from-path" + ] + }, + { + "description": "core:image:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:allow-new" + ] + }, + { + "description": "core:image:allow-rgba -> Enables the rgba command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:allow-rgba" + ] + }, + { + "description": "core:image:allow-size -> Enables the size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:allow-size" + ] + }, + { + "description": "core:image:deny-from-bytes -> Denies the from_bytes command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:deny-from-bytes" + ] + }, + { + "description": "core:image:deny-from-path -> Denies the from_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:deny-from-path" + ] + }, + { + "description": "core:image:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:deny-new" + ] + }, + { + "description": "core:image:deny-rgba -> Denies the rgba command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:deny-rgba" + ] + }, + { + "description": "core:image:deny-size -> Denies the size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:image:deny-size" + ] + }, + { + "description": "core:menu:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:menu:default" + ] + }, + { + "description": "core:menu:allow-append -> Enables the append command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-append" + ] + }, + { + "description": "core:menu:allow-create-default -> Enables the create_default command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-create-default" + ] + }, + { + "description": "core:menu:allow-get -> Enables the get command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-get" + ] + }, + { + "description": "core:menu:allow-insert -> Enables the insert command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-insert" + ] + }, + { + "description": "core:menu:allow-is-checked -> Enables the is_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-is-checked" + ] + }, + { + "description": "core:menu:allow-is-enabled -> Enables the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-is-enabled" + ] + }, + { + "description": "core:menu:allow-items -> Enables the items command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-items" + ] + }, + { + "description": "core:menu:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-new" + ] + }, + { + "description": "core:menu:allow-popup -> Enables the popup command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-popup" + ] + }, + { + "description": "core:menu:allow-prepend -> Enables the prepend command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-prepend" + ] + }, + { + "description": "core:menu:allow-remove -> Enables the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-remove" + ] + }, + { + "description": "core:menu:allow-remove-at -> Enables the remove_at command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-remove-at" + ] + }, + { + "description": "core:menu:allow-set-accelerator -> Enables the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-set-accelerator" + ] + }, + { + "description": "core:menu:allow-set-as-app-menu -> Enables the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-set-as-app-menu" + ] + }, + { + "description": "core:menu:allow-set-as-help-menu-for-nsapp -> Enables the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-set-as-help-menu-for-nsapp" + ] + }, + { + "description": "core:menu:allow-set-as-window-menu -> Enables the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-set-as-window-menu" + ] + }, + { + "description": "core:menu:allow-set-as-windows-menu-for-nsapp -> Enables the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-set-as-windows-menu-for-nsapp" + ] + }, + { + "description": "core:menu:allow-set-checked -> Enables the set_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-set-checked" + ] + }, + { + "description": "core:menu:allow-set-enabled -> Enables the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-set-enabled" + ] + }, + { + "description": "core:menu:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-set-icon" + ] + }, + { + "description": "core:menu:allow-set-text -> Enables the set_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-set-text" + ] + }, + { + "description": "core:menu:allow-text -> Enables the text command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:allow-text" + ] + }, + { + "description": "core:menu:deny-append -> Denies the append command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-append" + ] + }, + { + "description": "core:menu:deny-create-default -> Denies the create_default command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-create-default" + ] + }, + { + "description": "core:menu:deny-get -> Denies the get command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-get" + ] + }, + { + "description": "core:menu:deny-insert -> Denies the insert command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-insert" + ] + }, + { + "description": "core:menu:deny-is-checked -> Denies the is_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-is-checked" + ] + }, + { + "description": "core:menu:deny-is-enabled -> Denies the is_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-is-enabled" + ] + }, + { + "description": "core:menu:deny-items -> Denies the items command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-items" + ] + }, + { + "description": "core:menu:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-new" + ] + }, + { + "description": "core:menu:deny-popup -> Denies the popup command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-popup" + ] + }, + { + "description": "core:menu:deny-prepend -> Denies the prepend command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-prepend" + ] + }, + { + "description": "core:menu:deny-remove -> Denies the remove command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-remove" + ] + }, + { + "description": "core:menu:deny-remove-at -> Denies the remove_at command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-remove-at" + ] + }, + { + "description": "core:menu:deny-set-accelerator -> Denies the set_accelerator command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-set-accelerator" + ] + }, + { + "description": "core:menu:deny-set-as-app-menu -> Denies the set_as_app_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-set-as-app-menu" + ] + }, + { + "description": "core:menu:deny-set-as-help-menu-for-nsapp -> Denies the set_as_help_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-set-as-help-menu-for-nsapp" + ] + }, + { + "description": "core:menu:deny-set-as-window-menu -> Denies the set_as_window_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-set-as-window-menu" + ] + }, + { + "description": "core:menu:deny-set-as-windows-menu-for-nsapp -> Denies the set_as_windows_menu_for_nsapp command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-set-as-windows-menu-for-nsapp" + ] + }, + { + "description": "core:menu:deny-set-checked -> Denies the set_checked command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-set-checked" + ] + }, + { + "description": "core:menu:deny-set-enabled -> Denies the set_enabled command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-set-enabled" + ] + }, + { + "description": "core:menu:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-set-icon" + ] + }, + { + "description": "core:menu:deny-set-text -> Denies the set_text command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-set-text" + ] + }, + { + "description": "core:menu:deny-text -> Denies the text command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:menu:deny-text" + ] + }, + { + "description": "core:path:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:path:default" + ] + }, + { + "description": "core:path:allow-basename -> Enables the basename command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:allow-basename" + ] + }, + { + "description": "core:path:allow-dirname -> Enables the dirname command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:allow-dirname" + ] + }, + { + "description": "core:path:allow-extname -> Enables the extname command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:allow-extname" + ] + }, + { + "description": "core:path:allow-is-absolute -> Enables the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:allow-is-absolute" + ] + }, + { + "description": "core:path:allow-join -> Enables the join command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:allow-join" + ] + }, + { + "description": "core:path:allow-normalize -> Enables the normalize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:allow-normalize" + ] + }, + { + "description": "core:path:allow-resolve -> Enables the resolve command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:allow-resolve" + ] + }, + { + "description": "core:path:allow-resolve-directory -> Enables the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:allow-resolve-directory" + ] + }, + { + "description": "core:path:deny-basename -> Denies the basename command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:deny-basename" + ] + }, + { + "description": "core:path:deny-dirname -> Denies the dirname command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:deny-dirname" + ] + }, + { + "description": "core:path:deny-extname -> Denies the extname command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:deny-extname" + ] + }, + { + "description": "core:path:deny-is-absolute -> Denies the is_absolute command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:deny-is-absolute" + ] + }, + { + "description": "core:path:deny-join -> Denies the join command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:deny-join" + ] + }, + { + "description": "core:path:deny-normalize -> Denies the normalize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:deny-normalize" + ] + }, + { + "description": "core:path:deny-resolve -> Denies the resolve command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:deny-resolve" + ] + }, + { + "description": "core:path:deny-resolve-directory -> Denies the resolve_directory command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:path:deny-resolve-directory" + ] + }, + { + "description": "core:resources:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:resources:default" + ] + }, + { + "description": "core:resources:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:resources:allow-close" + ] + }, + { + "description": "core:resources:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:resources:deny-close" + ] + }, + { + "description": "core:tray:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:tray:default" + ] + }, + { + "description": "core:tray:allow-get-by-id -> Enables the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-get-by-id" + ] + }, + { + "description": "core:tray:allow-new -> Enables the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-new" + ] + }, + { + "description": "core:tray:allow-remove-by-id -> Enables the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-remove-by-id" + ] + }, + { + "description": "core:tray:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-set-icon" + ] + }, + { + "description": "core:tray:allow-set-icon-as-template -> Enables the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-set-icon-as-template" + ] + }, + { + "description": "core:tray:allow-set-menu -> Enables the set_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-set-menu" + ] + }, + { + "description": "core:tray:allow-set-show-menu-on-left-click -> Enables the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-set-show-menu-on-left-click" + ] + }, + { + "description": "core:tray:allow-set-temp-dir-path -> Enables the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-set-temp-dir-path" + ] + }, + { + "description": "core:tray:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-set-title" + ] + }, + { + "description": "core:tray:allow-set-tooltip -> Enables the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-set-tooltip" + ] + }, + { + "description": "core:tray:allow-set-visible -> Enables the set_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:allow-set-visible" + ] + }, + { + "description": "core:tray:deny-get-by-id -> Denies the get_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-get-by-id" + ] + }, + { + "description": "core:tray:deny-new -> Denies the new command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-new" + ] + }, + { + "description": "core:tray:deny-remove-by-id -> Denies the remove_by_id command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-remove-by-id" + ] + }, + { + "description": "core:tray:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-set-icon" + ] + }, + { + "description": "core:tray:deny-set-icon-as-template -> Denies the set_icon_as_template command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-set-icon-as-template" + ] + }, + { + "description": "core:tray:deny-set-menu -> Denies the set_menu command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-set-menu" + ] + }, + { + "description": "core:tray:deny-set-show-menu-on-left-click -> Denies the set_show_menu_on_left_click command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-set-show-menu-on-left-click" + ] + }, + { + "description": "core:tray:deny-set-temp-dir-path -> Denies the set_temp_dir_path command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-set-temp-dir-path" + ] + }, + { + "description": "core:tray:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-set-title" + ] + }, + { + "description": "core:tray:deny-set-tooltip -> Denies the set_tooltip command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-set-tooltip" + ] + }, + { + "description": "core:tray:deny-set-visible -> Denies the set_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:tray:deny-set-visible" + ] + }, + { + "description": "core:webview:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:webview:default" + ] + }, + { + "description": "core:webview:allow-create-webview -> Enables the create_webview command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-create-webview" + ] + }, + { + "description": "core:webview:allow-create-webview-window -> Enables the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-create-webview-window" + ] + }, + { + "description": "core:webview:allow-internal-toggle-devtools -> Enables the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-internal-toggle-devtools" + ] + }, + { + "description": "core:webview:allow-print -> Enables the print command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-print" + ] + }, + { + "description": "core:webview:allow-reparent -> Enables the reparent command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-reparent" + ] + }, + { + "description": "core:webview:allow-set-webview-focus -> Enables the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-set-webview-focus" + ] + }, + { + "description": "core:webview:allow-set-webview-position -> Enables the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-set-webview-position" + ] + }, + { + "description": "core:webview:allow-set-webview-size -> Enables the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-set-webview-size" + ] + }, + { + "description": "core:webview:allow-set-webview-zoom -> Enables the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-set-webview-zoom" + ] + }, + { + "description": "core:webview:allow-webview-close -> Enables the webview_close command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-webview-close" + ] + }, + { + "description": "core:webview:allow-webview-position -> Enables the webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-webview-position" + ] + }, + { + "description": "core:webview:allow-webview-size -> Enables the webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:allow-webview-size" + ] + }, + { + "description": "core:webview:deny-create-webview -> Denies the create_webview command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-create-webview" + ] + }, + { + "description": "core:webview:deny-create-webview-window -> Denies the create_webview_window command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-create-webview-window" + ] + }, + { + "description": "core:webview:deny-internal-toggle-devtools -> Denies the internal_toggle_devtools command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-internal-toggle-devtools" + ] + }, + { + "description": "core:webview:deny-print -> Denies the print command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-print" + ] + }, + { + "description": "core:webview:deny-reparent -> Denies the reparent command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-reparent" + ] + }, + { + "description": "core:webview:deny-set-webview-focus -> Denies the set_webview_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-set-webview-focus" + ] + }, + { + "description": "core:webview:deny-set-webview-position -> Denies the set_webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-set-webview-position" + ] + }, + { + "description": "core:webview:deny-set-webview-size -> Denies the set_webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-set-webview-size" + ] + }, + { + "description": "core:webview:deny-set-webview-zoom -> Denies the set_webview_zoom command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-set-webview-zoom" + ] + }, + { + "description": "core:webview:deny-webview-close -> Denies the webview_close command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-webview-close" + ] + }, + { + "description": "core:webview:deny-webview-position -> Denies the webview_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-webview-position" + ] + }, + { + "description": "core:webview:deny-webview-size -> Denies the webview_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:webview:deny-webview-size" + ] + }, + { + "description": "core:window:default -> Default permissions for the plugin.", + "type": "string", + "enum": [ + "core:window:default" + ] + }, + { + "description": "core:window:allow-available-monitors -> Enables the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-available-monitors" + ] + }, + { + "description": "core:window:allow-center -> Enables the center command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-center" + ] + }, + { + "description": "core:window:allow-close -> Enables the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-close" + ] + }, + { + "description": "core:window:allow-create -> Enables the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-create" + ] + }, + { + "description": "core:window:allow-current-monitor -> Enables the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-current-monitor" + ] + }, + { + "description": "core:window:allow-cursor-position -> Enables the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-cursor-position" + ] + }, + { + "description": "core:window:allow-destroy -> Enables the destroy command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-destroy" + ] + }, + { + "description": "core:window:allow-hide -> Enables the hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-hide" + ] + }, + { + "description": "core:window:allow-inner-position -> Enables the inner_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-inner-position" + ] + }, + { + "description": "core:window:allow-inner-size -> Enables the inner_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-inner-size" + ] + }, + { + "description": "core:window:allow-internal-toggle-maximize -> Enables the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-internal-toggle-maximize" + ] + }, + { + "description": "core:window:allow-is-closable -> Enables the is_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-closable" + ] + }, + { + "description": "core:window:allow-is-decorated -> Enables the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-decorated" + ] + }, + { + "description": "core:window:allow-is-focused -> Enables the is_focused command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-focused" + ] + }, + { + "description": "core:window:allow-is-fullscreen -> Enables the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-fullscreen" + ] + }, + { + "description": "core:window:allow-is-maximizable -> Enables the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-maximizable" + ] + }, + { + "description": "core:window:allow-is-maximized -> Enables the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-maximized" + ] + }, + { + "description": "core:window:allow-is-minimizable -> Enables the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-minimizable" + ] + }, + { + "description": "core:window:allow-is-minimized -> Enables the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-minimized" + ] + }, + { + "description": "core:window:allow-is-resizable -> Enables the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-resizable" + ] + }, + { + "description": "core:window:allow-is-visible -> Enables the is_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-is-visible" + ] + }, + { + "description": "core:window:allow-maximize -> Enables the maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-maximize" + ] + }, + { + "description": "core:window:allow-minimize -> Enables the minimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-minimize" + ] + }, + { + "description": "core:window:allow-monitor-from-point -> Enables the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-monitor-from-point" + ] + }, + { + "description": "core:window:allow-outer-position -> Enables the outer_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-outer-position" + ] + }, + { + "description": "core:window:allow-outer-size -> Enables the outer_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-outer-size" + ] + }, + { + "description": "core:window:allow-primary-monitor -> Enables the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-primary-monitor" + ] + }, + { + "description": "core:window:allow-request-user-attention -> Enables the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-request-user-attention" + ] + }, + { + "description": "core:window:allow-scale-factor -> Enables the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-scale-factor" + ] + }, + { + "description": "core:window:allow-set-always-on-bottom -> Enables the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-always-on-bottom" + ] + }, + { + "description": "core:window:allow-set-always-on-top -> Enables the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-always-on-top" + ] + }, + { + "description": "core:window:allow-set-closable -> Enables the set_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-closable" + ] + }, + { + "description": "core:window:allow-set-content-protected -> Enables the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-content-protected" + ] + }, + { + "description": "core:window:allow-set-cursor-grab -> Enables the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-cursor-grab" + ] + }, + { + "description": "core:window:allow-set-cursor-icon -> Enables the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-cursor-icon" + ] + }, + { + "description": "core:window:allow-set-cursor-position -> Enables the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-cursor-position" + ] + }, + { + "description": "core:window:allow-set-cursor-visible -> Enables the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-cursor-visible" + ] + }, + { + "description": "core:window:allow-set-decorations -> Enables the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-decorations" + ] + }, + { + "description": "core:window:allow-set-effects -> Enables the set_effects command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-effects" + ] + }, + { + "description": "core:window:allow-set-focus -> Enables the set_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-focus" + ] + }, + { + "description": "core:window:allow-set-fullscreen -> Enables the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-fullscreen" + ] + }, + { + "description": "core:window:allow-set-icon -> Enables the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-icon" + ] + }, + { + "description": "core:window:allow-set-ignore-cursor-events -> Enables the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-ignore-cursor-events" + ] + }, + { + "description": "core:window:allow-set-max-size -> Enables the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-max-size" + ] + }, + { + "description": "core:window:allow-set-maximizable -> Enables the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-maximizable" + ] + }, + { + "description": "core:window:allow-set-min-size -> Enables the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-min-size" + ] + }, + { + "description": "core:window:allow-set-minimizable -> Enables the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-minimizable" + ] + }, + { + "description": "core:window:allow-set-position -> Enables the set_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-position" + ] + }, + { + "description": "core:window:allow-set-progress-bar -> Enables the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-progress-bar" + ] + }, + { + "description": "core:window:allow-set-resizable -> Enables the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-resizable" + ] + }, + { + "description": "core:window:allow-set-shadow -> Enables the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-shadow" + ] + }, + { + "description": "core:window:allow-set-size -> Enables the set_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-size" + ] + }, + { + "description": "core:window:allow-set-size-constraints -> Enables the set_size_constraints command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-size-constraints" + ] + }, + { + "description": "core:window:allow-set-skip-taskbar -> Enables the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-skip-taskbar" + ] + }, + { + "description": "core:window:allow-set-title -> Enables the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-title" + ] + }, + { + "description": "core:window:allow-set-title-bar-style -> Enables the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-title-bar-style" + ] + }, + { + "description": "core:window:allow-set-visible-on-all-workspaces -> Enables the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-set-visible-on-all-workspaces" + ] + }, + { + "description": "core:window:allow-show -> Enables the show command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-show" + ] + }, + { + "description": "core:window:allow-start-dragging -> Enables the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-start-dragging" + ] + }, + { + "description": "core:window:allow-start-resize-dragging -> Enables the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-start-resize-dragging" + ] + }, + { + "description": "core:window:allow-theme -> Enables the theme command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-theme" + ] + }, + { + "description": "core:window:allow-title -> Enables the title command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-title" + ] + }, + { + "description": "core:window:allow-toggle-maximize -> Enables the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-toggle-maximize" + ] + }, + { + "description": "core:window:allow-unmaximize -> Enables the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-unmaximize" + ] + }, + { + "description": "core:window:allow-unminimize -> Enables the unminimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:allow-unminimize" + ] + }, + { + "description": "core:window:deny-available-monitors -> Denies the available_monitors command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-available-monitors" + ] + }, + { + "description": "core:window:deny-center -> Denies the center command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-center" + ] + }, + { + "description": "core:window:deny-close -> Denies the close command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-close" + ] + }, + { + "description": "core:window:deny-create -> Denies the create command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-create" + ] + }, + { + "description": "core:window:deny-current-monitor -> Denies the current_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-current-monitor" + ] + }, + { + "description": "core:window:deny-cursor-position -> Denies the cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-cursor-position" + ] + }, + { + "description": "core:window:deny-destroy -> Denies the destroy command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-destroy" + ] + }, + { + "description": "core:window:deny-hide -> Denies the hide command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-hide" + ] + }, + { + "description": "core:window:deny-inner-position -> Denies the inner_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-inner-position" + ] + }, + { + "description": "core:window:deny-inner-size -> Denies the inner_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-inner-size" + ] + }, + { + "description": "core:window:deny-internal-toggle-maximize -> Denies the internal_toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-internal-toggle-maximize" + ] + }, + { + "description": "core:window:deny-is-closable -> Denies the is_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-closable" + ] + }, + { + "description": "core:window:deny-is-decorated -> Denies the is_decorated command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-decorated" + ] + }, + { + "description": "core:window:deny-is-focused -> Denies the is_focused command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-focused" + ] + }, + { + "description": "core:window:deny-is-fullscreen -> Denies the is_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-fullscreen" + ] + }, + { + "description": "core:window:deny-is-maximizable -> Denies the is_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-maximizable" + ] + }, + { + "description": "core:window:deny-is-maximized -> Denies the is_maximized command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-maximized" + ] + }, + { + "description": "core:window:deny-is-minimizable -> Denies the is_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-minimizable" + ] + }, + { + "description": "core:window:deny-is-minimized -> Denies the is_minimized command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-minimized" + ] + }, + { + "description": "core:window:deny-is-resizable -> Denies the is_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-resizable" + ] + }, + { + "description": "core:window:deny-is-visible -> Denies the is_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-is-visible" + ] + }, + { + "description": "core:window:deny-maximize -> Denies the maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-maximize" + ] + }, + { + "description": "core:window:deny-minimize -> Denies the minimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-minimize" + ] + }, + { + "description": "core:window:deny-monitor-from-point -> Denies the monitor_from_point command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-monitor-from-point" + ] + }, + { + "description": "core:window:deny-outer-position -> Denies the outer_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-outer-position" + ] + }, + { + "description": "core:window:deny-outer-size -> Denies the outer_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-outer-size" + ] + }, + { + "description": "core:window:deny-primary-monitor -> Denies the primary_monitor command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-primary-monitor" + ] + }, + { + "description": "core:window:deny-request-user-attention -> Denies the request_user_attention command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-request-user-attention" + ] + }, + { + "description": "core:window:deny-scale-factor -> Denies the scale_factor command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-scale-factor" + ] + }, + { + "description": "core:window:deny-set-always-on-bottom -> Denies the set_always_on_bottom command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-always-on-bottom" + ] + }, + { + "description": "core:window:deny-set-always-on-top -> Denies the set_always_on_top command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-always-on-top" + ] + }, + { + "description": "core:window:deny-set-closable -> Denies the set_closable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-closable" + ] + }, + { + "description": "core:window:deny-set-content-protected -> Denies the set_content_protected command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-content-protected" + ] + }, + { + "description": "core:window:deny-set-cursor-grab -> Denies the set_cursor_grab command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-cursor-grab" + ] + }, + { + "description": "core:window:deny-set-cursor-icon -> Denies the set_cursor_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-cursor-icon" + ] + }, + { + "description": "core:window:deny-set-cursor-position -> Denies the set_cursor_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-cursor-position" + ] + }, + { + "description": "core:window:deny-set-cursor-visible -> Denies the set_cursor_visible command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-cursor-visible" + ] + }, + { + "description": "core:window:deny-set-decorations -> Denies the set_decorations command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-decorations" + ] + }, + { + "description": "core:window:deny-set-effects -> Denies the set_effects command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-effects" + ] + }, + { + "description": "core:window:deny-set-focus -> Denies the set_focus command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-focus" + ] + }, + { + "description": "core:window:deny-set-fullscreen -> Denies the set_fullscreen command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-fullscreen" + ] + }, + { + "description": "core:window:deny-set-icon -> Denies the set_icon command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-icon" + ] + }, + { + "description": "core:window:deny-set-ignore-cursor-events -> Denies the set_ignore_cursor_events command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-ignore-cursor-events" + ] + }, + { + "description": "core:window:deny-set-max-size -> Denies the set_max_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-max-size" + ] + }, + { + "description": "core:window:deny-set-maximizable -> Denies the set_maximizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-maximizable" + ] + }, + { + "description": "core:window:deny-set-min-size -> Denies the set_min_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-min-size" + ] + }, + { + "description": "core:window:deny-set-minimizable -> Denies the set_minimizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-minimizable" + ] + }, + { + "description": "core:window:deny-set-position -> Denies the set_position command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-position" + ] + }, + { + "description": "core:window:deny-set-progress-bar -> Denies the set_progress_bar command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-progress-bar" + ] + }, + { + "description": "core:window:deny-set-resizable -> Denies the set_resizable command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-resizable" + ] + }, + { + "description": "core:window:deny-set-shadow -> Denies the set_shadow command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-shadow" + ] + }, + { + "description": "core:window:deny-set-size -> Denies the set_size command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-size" + ] + }, + { + "description": "core:window:deny-set-size-constraints -> Denies the set_size_constraints command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-size-constraints" + ] + }, + { + "description": "core:window:deny-set-skip-taskbar -> Denies the set_skip_taskbar command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-skip-taskbar" + ] + }, + { + "description": "core:window:deny-set-title -> Denies the set_title command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-title" + ] + }, + { + "description": "core:window:deny-set-title-bar-style -> Denies the set_title_bar_style command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-title-bar-style" + ] + }, + { + "description": "core:window:deny-set-visible-on-all-workspaces -> Denies the set_visible_on_all_workspaces command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-set-visible-on-all-workspaces" + ] + }, + { + "description": "core:window:deny-show -> Denies the show command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-show" + ] + }, + { + "description": "core:window:deny-start-dragging -> Denies the start_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-start-dragging" + ] + }, + { + "description": "core:window:deny-start-resize-dragging -> Denies the start_resize_dragging command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-start-resize-dragging" + ] + }, + { + "description": "core:window:deny-theme -> Denies the theme command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-theme" + ] + }, + { + "description": "core:window:deny-title -> Denies the title command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-title" + ] + }, + { + "description": "core:window:deny-toggle-maximize -> Denies the toggle_maximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-toggle-maximize" + ] + }, + { + "description": "core:window:deny-unmaximize -> Denies the unmaximize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-unmaximize" + ] + }, + { + "description": "core:window:deny-unminimize -> Denies the unminimize command without any pre-configured scope.", + "type": "string", + "enum": [ + "core:window:deny-unminimize" + ] + } + ] + }, + "Value": { + "description": "All supported ACL values.", + "anyOf": [ + { + "description": "Represents a null JSON value.", + "type": "null" + }, + { + "description": "Represents a [`bool`].", + "type": "boolean" + }, + { + "description": "Represents a valid ACL [`Number`].", + "allOf": [ + { + "$ref": "#/definitions/Number" + } + ] + }, + { + "description": "Represents a [`String`].", + "type": "string" + }, + { + "description": "Represents a list of other [`Value`]s.", + "type": "array", + "items": { + "$ref": "#/definitions/Value" + } + }, + { + "description": "Represents a map of [`String`] keys to [`Value`]s.", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/Value" + } + } + ] + }, + "Number": { + "description": "A valid ACL number.", + "anyOf": [ + { + "description": "Represents an [`i64`].", + "type": "integer", + "format": "int64" + }, + { + "description": "Represents a [`f64`].", + "type": "number", + "format": "double" + } + ] + }, + "Target": { + "description": "Platform target.", + "oneOf": [ + { + "description": "MacOS.", + "type": "string", + "enum": [ + "macOS" + ] + }, + { + "description": "Windows.", + "type": "string", + "enum": [ + "windows" + ] + }, + { + "description": "Linux.", + "type": "string", + "enum": [ + "linux" + ] + }, + { + "description": "Android.", + "type": "string", + "enum": [ + "android" + ] + }, + { + "description": "iOS.", + "type": "string", + "enum": [ + "iOS" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/apps/tauri/src-tauri/tauri.conf.json b/apps/tauri/src-tauri/tauri.conf.json index 04cb4598d..8bd0d1c69 100644 --- a/apps/tauri/src-tauri/tauri.conf.json +++ b/apps/tauri/src-tauri/tauri.conf.json @@ -1,61 +1,40 @@ { - "$schema": "../../../node_modules/@tauri-apps/cli/schema.json", + "package": { + "productName": "Packrat", + "version": "0.1.0" + }, "build": { - "beforeBuildCommand": "yarn run build", - "beforeDevCommand": "yarn run dev", - "frontendDist": "../dist", - "devUrl": "http://localhost:4200" + "distDir": "../dist", + "devPath": "http://localhost:4200", + "beforeDevCommand": "yarn dev", + "beforeBuildCommand": "yarn run build" }, - "bundle": { - "active": true, - "category": "DeveloperTool", - "copyright": "", - "targets": "all", - "externalBin": [], - "icon": [ - "icons/32x32.png", - "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" - ], - "windows": { - "certificateThumbprint": null, - "digestAlgorithm": "sha256", - "timestampUrl": "" - }, - "longDescription": "", - "macOS": { - "entitlements": null, - "exceptionDomain": "", - "frameworks": [], - "providerShortName": null, - "signingIdentity": null + "tauri": { + "bundle": { + "active": true, + "identifier": "com.andrewbierman.packrat", + + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ] }, - "resources": [], - "shortDescription": "", - "linux": { - "deb": { - "depends": [] - } - } - }, - "productName": "PackRat", - "version": "0.1.0", - "identifier": "com.tauri.dev", - "plugins": {}, - "app": { "windows": [ { - "fullscreen": false, + "title": "Packrat", + "width": 800, "height": 600, "resizable": true, - "title": "PackRat", - "width": 800 + "fullscreen": false } ], + "security": { "csp": null } } -} \ No newline at end of file +} diff --git a/apps/tauri/src/App.tsx b/apps/tauri/src/App.tsx index 0a42e9784..5f0bd5dbb 100644 --- a/apps/tauri/src/App.tsx +++ b/apps/tauri/src/App.tsx @@ -1,4 +1,3 @@ -import React from 'react'; import React, { StrictMode } from 'react'; import ReactDOM from 'react-dom/client'; import { RouterProvider, createRouter } from '@tanstack/react-router'; diff --git a/apps/tauri/src/routes/__root.tsx b/apps/tauri/src/routes/__root.tsx index 87537688b..cb8662bca 100644 --- a/apps/tauri/src/routes/__root.tsx +++ b/apps/tauri/src/routes/__root.tsx @@ -2,16 +2,20 @@ import React from 'react'; import { MainContentWeb } from '@packrat/ui'; import { createRootRoute, Link, Outlet } from '@tanstack/react-router'; import { TanStackRouterDevtools } from '@tanstack/router-devtools'; -import { Navbar } from 'app/components/navigation'; +import { NavbarTauri } from 'app/components/navigation'; import { Provider } from 'app/provider'; +import { View } from 'react-native'; +import { FullSideBar } from 'app/components/navigation/SideBar'; export const Route = createRootRoute({ component: () => ( - - - - + + + + + + ), diff --git a/apps/tauri/src/routes/appearance/index.lazy.tsx b/apps/tauri/src/routes/appearance/index.lazy.tsx index 2d157cbd6..66c6977bc 100644 --- a/apps/tauri/src/routes/appearance/index.lazy.tsx +++ b/apps/tauri/src/routes/appearance/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; import AppearanceContainer from 'app/screens/appearance/AppearanceContainer'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/appearance/')({ diff --git a/apps/tauri/src/routes/dashboard/index.lazy.tsx b/apps/tauri/src/routes/dashboard/index.lazy.tsx index c073aa57e..47706d37b 100644 --- a/apps/tauri/src/routes/dashboard/index.lazy.tsx +++ b/apps/tauri/src/routes/dashboard/index.lazy.tsx @@ -1,7 +1,7 @@ import React from 'react'; -import Dashboard from 'app/screens/dashboard'; +import { DashboardScreen } from 'app/modules/dashboard/screens'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/dashboard/')({ @@ -11,7 +11,7 @@ export const Route = createLazyFileRoute('/dashboard/')({ export default function DashboardPage() { return ( - + ); } diff --git a/apps/tauri/src/routes/destination/query.lazy.tsx b/apps/tauri/src/routes/destination/query.lazy.tsx index dd5171124..e4b7a722e 100644 --- a/apps/tauri/src/routes/destination/query.lazy.tsx +++ b/apps/tauri/src/routes/destination/query.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { DestinationPage } from 'app/components/destination'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; // import DestinationPage from "../../components/destination"; import { createLazyFileRoute } from '@tanstack/react-router'; diff --git a/apps/tauri/src/routes/feed/index.lazy.tsx b/apps/tauri/src/routes/feed/index.lazy.tsx index 72b518e2d..d09118ad2 100644 --- a/apps/tauri/src/routes/feed/index.lazy.tsx +++ b/apps/tauri/src/routes/feed/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { FeedScreen } from 'app/modules/feed'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/feed/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/feed/')({ export default function FeedNav() { return ( - + ); } diff --git a/apps/tauri/src/routes/index.tsx b/apps/tauri/src/routes/index.tsx index 97cc08a58..a9eb7f811 100644 --- a/apps/tauri/src/routes/index.tsx +++ b/apps/tauri/src/routes/index.tsx @@ -1,8 +1,9 @@ import React from 'react'; -import Dashboard from 'app/screens/dashboard'; +import { DashboardScreen } from 'app/modules/dashboard'; import LandingPage from 'app/components/landing_page'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; import { createFileRoute } from '@tanstack/react-router'; +import { ScrollView } from 'react-native'; export const Route = createFileRoute('/')({ component: Home, @@ -11,5 +12,5 @@ export const Route = createFileRoute('/')({ export default function Home() { const user = useAuthUser(); - return <>{!user ? : }; + return <>{!user ? : }; } diff --git a/apps/tauri/src/routes/items/index.lazy.tsx b/apps/tauri/src/routes/items/index.lazy.tsx index c6f6d534e..ba650704f 100644 --- a/apps/tauri/src/routes/items/index.lazy.tsx +++ b/apps/tauri/src/routes/items/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Items from 'app/screens/items'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { ItemsScreen } from 'app/modules/item'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/items/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/items/')({ export default function ItemsPage() { return ( - + ); } diff --git a/apps/tauri/src/routes/pack/$id.lazy.tsx b/apps/tauri/src/routes/pack/$id.lazy.tsx index a99e83525..998759d04 100644 --- a/apps/tauri/src/routes/pack/$id.lazy.tsx +++ b/apps/tauri/src/routes/pack/$id.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { PackDetails } from 'app/components/pack/PackDetails'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { PackDetailsScreen } from 'app/modules/pack'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/pack/$id')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/pack/$id')({ function PackScreen() { return ( - + ); } diff --git a/apps/tauri/src/routes/pack/create.lazy.tsx b/apps/tauri/src/routes/pack/create.lazy.tsx index c93bdc54d..8e6c52230 100644 --- a/apps/tauri/src/routes/pack/create.lazy.tsx +++ b/apps/tauri/src/routes/pack/create.lazy.tsx @@ -1,6 +1,5 @@ -import React from 'react'; -import { AddPack } from 'app/components/pack/AddPack'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AddPackScreen } from 'app/modules/pack'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/pack/create')({ @@ -10,7 +9,7 @@ export const Route = createLazyFileRoute('/pack/create')({ function CreatePack() { return ( - + ); } diff --git a/apps/tauri/src/routes/packs/index.lazy.tsx b/apps/tauri/src/routes/packs/index.lazy.tsx index 0854d84ef..c62c522b8 100644 --- a/apps/tauri/src/routes/packs/index.lazy.tsx +++ b/apps/tauri/src/routes/packs/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { FeedScreen } from 'app/modules/feed'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/packs/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/packs/')({ function Packs() { return ( - + ); } diff --git a/apps/tauri/src/routes/profile/$id.lazy.tsx b/apps/tauri/src/routes/profile/$id.lazy.tsx index 7827f7219..c893e812c 100644 --- a/apps/tauri/src/routes/profile/$id.lazy.tsx +++ b/apps/tauri/src/routes/profile/$id.lazy.tsx @@ -1,6 +1,5 @@ import React from 'react'; -import ProfileContainer from 'app/screens/user/ProfileContainer'; -import { useProfileId } from 'app/hooks/user'; +import { ProfileScreen, useProfileId } from 'app/modules/user'; import { createLazyFileRoute } from '@tanstack/react-router'; @@ -13,7 +12,7 @@ export default function Profile() { return ( <> - + ); } diff --git a/apps/tauri/src/routes/profile/index.lazy.tsx b/apps/tauri/src/routes/profile/index.lazy.tsx index 97980da80..21a9d0d42 100644 --- a/apps/tauri/src/routes/profile/index.lazy.tsx +++ b/apps/tauri/src/routes/profile/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import ProfileContainer from 'app/screens/user/ProfileContainer'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { ProfileScreen } from 'app/modules/user'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/profile/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/profile/')({ export default function Profile() { return ( - + ); } diff --git a/apps/tauri/src/routes/profile/settings/index.lazy.tsx b/apps/tauri/src/routes/profile/settings/index.lazy.tsx index 81fa5b327..d43b75a07 100644 --- a/apps/tauri/src/routes/profile/settings/index.lazy.tsx +++ b/apps/tauri/src/routes/profile/settings/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Settings from 'app/screens/user/Settings'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { SettingsScreen } from 'app/modules/user'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/profile/settings/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/profile/settings/')({ export default function SettingsPage() { return ( - + ); } diff --git a/apps/tauri/src/routes/register/index.lazy.tsx b/apps/tauri/src/routes/register/index.lazy.tsx index bca92740a..b84175e04 100644 --- a/apps/tauri/src/routes/register/index.lazy.tsx +++ b/apps/tauri/src/routes/register/index.lazy.tsx @@ -1,5 +1,4 @@ -import React from 'react'; -import RegisterScreen from 'app/screens/RegisterScreen'; +import { RegisterScreen } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/register/')({ diff --git a/apps/tauri/src/routes/sign-in/index.lazy.tsx b/apps/tauri/src/routes/sign-in/index.lazy.tsx index f139ab867..1f1771d31 100644 --- a/apps/tauri/src/routes/sign-in/index.lazy.tsx +++ b/apps/tauri/src/routes/sign-in/index.lazy.tsx @@ -1,5 +1,4 @@ -import React from 'react'; -import LoginScreen from 'app/screens/LoginScreen'; +import { LoginScreen } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/sign-in/')({ diff --git a/apps/tauri/src/routes/trip/$tripId.lazy.tsx b/apps/tauri/src/routes/trip/$tripId.lazy.tsx index 6dbceaf97..20504816b 100644 --- a/apps/tauri/src/routes/trip/$tripId.lazy.tsx +++ b/apps/tauri/src/routes/trip/$tripId.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { TripDetails } from 'app/screens/trip/TripDetails'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/trip/$tripId')({ diff --git a/apps/tauri/src/routes/trip/create.lazy.tsx b/apps/tauri/src/routes/trip/create.lazy.tsx index 301a10bae..ac9926608 100644 --- a/apps/tauri/src/routes/trip/create.lazy.tsx +++ b/apps/tauri/src/routes/trip/create.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; import CreateTrip from 'app/screens/trip/createTrip'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/trip/create')({ diff --git a/apps/tauri/src/routes/trips/index.lazy.tsx b/apps/tauri/src/routes/trips/index.lazy.tsx index f08be7c17..ca3f1c590 100644 --- a/apps/tauri/src/routes/trips/index.lazy.tsx +++ b/apps/tauri/src/routes/trips/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { FeedScreen } from 'app/modules/feed'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/trips/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/trips/')({ export default function FeedNav() { return ( - + ); } diff --git a/apps/vite/src/routeTree.gen.ts b/apps/vite/src/routeTree.gen.ts index 6c0df6bd9..968fb50c5 100644 --- a/apps/vite/src/routeTree.gen.ts +++ b/apps/vite/src/routeTree.gen.ts @@ -36,6 +36,7 @@ const TripTripIdLazyImport = createFileRoute('/trip/$tripId')() const ProfileIdLazyImport = createFileRoute('/profile/$id')() const PackCreateLazyImport = createFileRoute('/pack/create')() const PackIdLazyImport = createFileRoute('/pack/$id')() +const ItemItemIdLazyImport = createFileRoute('/item/$itemId')() const DestinationQueryLazyImport = createFileRoute('/destination/query')() const ProfileSettingsIndexLazyImport = createFileRoute('/profile/settings/')() @@ -149,6 +150,11 @@ const PackIdLazyRoute = PackIdLazyImport.update({ getParentRoute: () => rootRoute, } as any).lazy(() => import('./routes/pack/$id.lazy').then((d) => d.Route)) +const ItemItemIdLazyRoute = ItemItemIdLazyImport.update({ + path: '/item/$itemId', + getParentRoute: () => rootRoute, +} as any).lazy(() => import('./routes/item/$itemId.lazy').then((d) => d.Route)) + const DestinationQueryLazyRoute = DestinationQueryLazyImport.update({ path: '/destination/query', getParentRoute: () => rootRoute, @@ -175,6 +181,10 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof DestinationQueryLazyImport parentRoute: typeof rootRoute } + '/item/$itemId': { + preLoaderRoute: typeof ItemItemIdLazyImport + parentRoute: typeof rootRoute + } '/pack/$id': { preLoaderRoute: typeof PackIdLazyImport parentRoute: typeof rootRoute @@ -263,6 +273,7 @@ declare module '@tanstack/react-router' { export const routeTree = rootRoute.addChildren([ IndexRoute, DestinationQueryLazyRoute, + ItemItemIdLazyRoute, PackIdLazyRoute, PackCreateLazyRoute, ProfileIdLazyRoute, diff --git a/apps/vite/src/routes/__root.tsx b/apps/vite/src/routes/__root.tsx index e1e14a1a9..a80d0f1aa 100644 --- a/apps/vite/src/routes/__root.tsx +++ b/apps/vite/src/routes/__root.tsx @@ -1,18 +1,29 @@ -import React from 'react'; +import React, { useContext } from 'react'; import { MainContentWeb } from '@packrat/ui'; import { createRootRoute, Link, Outlet } from '@tanstack/react-router'; import { TanStackRouterDevtools } from '@tanstack/router-devtools'; import { Navbar } from 'app/components/navigation'; import { Provider } from 'app/provider'; import { NODE_ENV } from '@packrat/config'; +import ThemeContext from '../../../../packages/app/context/theme'; + +const ThemedMainContentWeb = () => { + const { isDark } = useContext(ThemeContext); + + const backgroundColor = isDark ? '#050505' : '#fdfbff'; + + return ( + + + + + ); +}; export const Route = createRootRoute({ component: () => ( - - - - + {NODE_ENV === 'development' && } ), diff --git a/apps/vite/src/routes/appearance/index.lazy.tsx b/apps/vite/src/routes/appearance/index.lazy.tsx index 2d157cbd6..66c6977bc 100644 --- a/apps/vite/src/routes/appearance/index.lazy.tsx +++ b/apps/vite/src/routes/appearance/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; import AppearanceContainer from 'app/screens/appearance/AppearanceContainer'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/appearance/')({ diff --git a/apps/vite/src/routes/dashboard/index.lazy.tsx b/apps/vite/src/routes/dashboard/index.lazy.tsx index c073aa57e..d58e5ac78 100644 --- a/apps/vite/src/routes/dashboard/index.lazy.tsx +++ b/apps/vite/src/routes/dashboard/index.lazy.tsx @@ -1,7 +1,7 @@ import React from 'react'; -import Dashboard from 'app/screens/dashboard'; +import { DashboardScreen } from 'app/modules/dashboard'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/dashboard/')({ @@ -11,7 +11,7 @@ export const Route = createLazyFileRoute('/dashboard/')({ export default function DashboardPage() { return ( - + ); } diff --git a/apps/vite/src/routes/destination/query.lazy.tsx b/apps/vite/src/routes/destination/query.lazy.tsx index dd5171124..e4b7a722e 100644 --- a/apps/vite/src/routes/destination/query.lazy.tsx +++ b/apps/vite/src/routes/destination/query.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { DestinationPage } from 'app/components/destination'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; // import DestinationPage from "../../components/destination"; import { createLazyFileRoute } from '@tanstack/react-router'; diff --git a/apps/vite/src/routes/feed/index.lazy.tsx b/apps/vite/src/routes/feed/index.lazy.tsx index 72b518e2d..d09118ad2 100644 --- a/apps/vite/src/routes/feed/index.lazy.tsx +++ b/apps/vite/src/routes/feed/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { FeedScreen } from 'app/modules/feed'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/feed/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/feed/')({ export default function FeedNav() { return ( - + ); } diff --git a/apps/vite/src/routes/index.tsx b/apps/vite/src/routes/index.tsx index e77a75ce0..3109bbcf7 100644 --- a/apps/vite/src/routes/index.tsx +++ b/apps/vite/src/routes/index.tsx @@ -1,8 +1,8 @@ import React from 'react'; -import Dashboard from 'app/screens/dashboard'; +import { DashboardScreen } from 'app/modules/dashboard'; import LandingPage from 'app/components/landing_page'; import { createFileRoute } from '@tanstack/react-router'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; export const Route = createFileRoute('/')({ component: Home, @@ -11,7 +11,7 @@ export const Route = createFileRoute('/')({ export default function Home() { return ( }> - + ); } diff --git a/apps/vite/src/routes/item/$itemId.lazy.tsx b/apps/vite/src/routes/item/$itemId.lazy.tsx new file mode 100644 index 000000000..ade7feed5 --- /dev/null +++ b/apps/vite/src/routes/item/$itemId.lazy.tsx @@ -0,0 +1,15 @@ +import { ItemDetailsScreen } from 'app/modules/item'; +import { AuthWrapper } from 'app/modules/auth'; +import { createLazyFileRoute } from '@tanstack/react-router'; + +export const Route = createLazyFileRoute('/item/$itemId')({ + component: ItemsPage, +}); + +export default function ItemsPage() { + return ( + + + + ); +} diff --git a/apps/vite/src/routes/items/index.lazy.tsx b/apps/vite/src/routes/items/index.lazy.tsx index c6f6d534e..65a0f1037 100644 --- a/apps/vite/src/routes/items/index.lazy.tsx +++ b/apps/vite/src/routes/items/index.lazy.tsx @@ -1,6 +1,5 @@ -import React from 'react'; -import Items from 'app/screens/items'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { ItemsScreen } from 'app/modules/item'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/items/')({ @@ -10,7 +9,7 @@ export const Route = createLazyFileRoute('/items/')({ export default function ItemsPage() { return ( - + ); } diff --git a/apps/vite/src/routes/pack/$id.lazy.tsx b/apps/vite/src/routes/pack/$id.lazy.tsx index a99e83525..998759d04 100644 --- a/apps/vite/src/routes/pack/$id.lazy.tsx +++ b/apps/vite/src/routes/pack/$id.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import { PackDetails } from 'app/components/pack/PackDetails'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { PackDetailsScreen } from 'app/modules/pack'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/pack/$id')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/pack/$id')({ function PackScreen() { return ( - + ); } diff --git a/apps/vite/src/routes/pack/create.lazy.tsx b/apps/vite/src/routes/pack/create.lazy.tsx index c93bdc54d..8e6c52230 100644 --- a/apps/vite/src/routes/pack/create.lazy.tsx +++ b/apps/vite/src/routes/pack/create.lazy.tsx @@ -1,6 +1,5 @@ -import React from 'react'; -import { AddPack } from 'app/components/pack/AddPack'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AddPackScreen } from 'app/modules/pack'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/pack/create')({ @@ -10,7 +9,7 @@ export const Route = createLazyFileRoute('/pack/create')({ function CreatePack() { return ( - + ); } diff --git a/apps/vite/src/routes/packs/index.lazy.tsx b/apps/vite/src/routes/packs/index.lazy.tsx index 0854d84ef..c62c522b8 100644 --- a/apps/vite/src/routes/packs/index.lazy.tsx +++ b/apps/vite/src/routes/packs/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { FeedScreen } from 'app/modules/feed'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/packs/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/packs/')({ function Packs() { return ( - + ); } diff --git a/apps/vite/src/routes/profile/$id.lazy.tsx b/apps/vite/src/routes/profile/$id.lazy.tsx index 7827f7219..c893e812c 100644 --- a/apps/vite/src/routes/profile/$id.lazy.tsx +++ b/apps/vite/src/routes/profile/$id.lazy.tsx @@ -1,6 +1,5 @@ import React from 'react'; -import ProfileContainer from 'app/screens/user/ProfileContainer'; -import { useProfileId } from 'app/hooks/user'; +import { ProfileScreen, useProfileId } from 'app/modules/user'; import { createLazyFileRoute } from '@tanstack/react-router'; @@ -13,7 +12,7 @@ export default function Profile() { return ( <> - + ); } diff --git a/apps/vite/src/routes/profile/index.lazy.tsx b/apps/vite/src/routes/profile/index.lazy.tsx index 97980da80..21a9d0d42 100644 --- a/apps/vite/src/routes/profile/index.lazy.tsx +++ b/apps/vite/src/routes/profile/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import ProfileContainer from 'app/screens/user/ProfileContainer'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { ProfileScreen } from 'app/modules/user'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/profile/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/profile/')({ export default function Profile() { return ( - + ); } diff --git a/apps/vite/src/routes/profile/settings/index.lazy.tsx b/apps/vite/src/routes/profile/settings/index.lazy.tsx index 81fa5b327..d43b75a07 100644 --- a/apps/vite/src/routes/profile/settings/index.lazy.tsx +++ b/apps/vite/src/routes/profile/settings/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Settings from 'app/screens/user/Settings'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { SettingsScreen } from 'app/modules/user'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/profile/settings/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/profile/settings/')({ export default function SettingsPage() { return ( - + ); } diff --git a/apps/vite/src/routes/register/index.lazy.tsx b/apps/vite/src/routes/register/index.lazy.tsx index bca92740a..b84175e04 100644 --- a/apps/vite/src/routes/register/index.lazy.tsx +++ b/apps/vite/src/routes/register/index.lazy.tsx @@ -1,5 +1,4 @@ -import React from 'react'; -import RegisterScreen from 'app/screens/RegisterScreen'; +import { RegisterScreen } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/register/')({ diff --git a/apps/vite/src/routes/sign-in/index.lazy.tsx b/apps/vite/src/routes/sign-in/index.lazy.tsx index f139ab867..c156ac5da 100644 --- a/apps/vite/src/routes/sign-in/index.lazy.tsx +++ b/apps/vite/src/routes/sign-in/index.lazy.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import LoginScreen from 'app/screens/LoginScreen'; +import { LoginScreen } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/sign-in/')({ diff --git a/apps/vite/src/routes/trip/$tripId.lazy.tsx b/apps/vite/src/routes/trip/$tripId.lazy.tsx index 6dbceaf97..20504816b 100644 --- a/apps/vite/src/routes/trip/$tripId.lazy.tsx +++ b/apps/vite/src/routes/trip/$tripId.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { TripDetails } from 'app/screens/trip/TripDetails'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/trip/$tripId')({ diff --git a/apps/vite/src/routes/trip/create.lazy.tsx b/apps/vite/src/routes/trip/create.lazy.tsx index 301a10bae..ac9926608 100644 --- a/apps/vite/src/routes/trip/create.lazy.tsx +++ b/apps/vite/src/routes/trip/create.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; import CreateTrip from 'app/screens/trip/createTrip'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/trip/create')({ diff --git a/apps/vite/src/routes/trips/index.lazy.tsx b/apps/vite/src/routes/trips/index.lazy.tsx index f08be7c17..ca3f1c590 100644 --- a/apps/vite/src/routes/trips/index.lazy.tsx +++ b/apps/vite/src/routes/trips/index.lazy.tsx @@ -1,6 +1,6 @@ import React from 'react'; -import Feed from 'app/screens/feed/Feed'; -import { AuthWrapper } from 'app/auth/AuthWrapper'; +import { FeedScreen } from 'app/modules/feed'; +import { AuthWrapper } from 'app/modules/auth'; import { createLazyFileRoute } from '@tanstack/react-router'; export const Route = createLazyFileRoute('/trips/')({ @@ -10,7 +10,7 @@ export const Route = createLazyFileRoute('/trips/')({ export default function FeedNav() { return ( - + ); } diff --git a/apps/vite/src/styles/global.css b/apps/vite/src/styles/global.css index 8c9f008ce..4bd185f4d 100644 --- a/apps/vite/src/styles/global.css +++ b/apps/vite/src/styles/global.css @@ -1,7 +1,16 @@ -body { - background-color: rgb(2, 132, 199) !important; -} *:focus { outline: none; } + +@media(prefers-color-scheme:dark){ + body { + background-color:#1A1A1D !important; + } +} + +@media(prefers-color-scheme:light){ + body { + background-color: #fdfbff !important; + } +} \ No newline at end of file diff --git a/packages/app/components/DuplicateIcon/index.tsx b/packages/app/assets/icons/DuplicateIcon.tsx similarity index 100% rename from packages/app/components/DuplicateIcon/index.tsx rename to packages/app/assets/icons/DuplicateIcon.tsx diff --git a/packages/app/assets/icons/index.ts b/packages/app/assets/icons/index.ts new file mode 100644 index 000000000..50ca1c174 --- /dev/null +++ b/packages/app/assets/icons/index.ts @@ -0,0 +1 @@ +export { DuplicateIcon } from './DuplicateIcon'; diff --git a/packages/app/auth/provider.tsx b/packages/app/auth/provider.tsx deleted file mode 100644 index c90de1b25..000000000 --- a/packages/app/auth/provider.tsx +++ /dev/null @@ -1,129 +0,0 @@ -// import { useRouter, useSegments } from "expo-router"; -// import React from "react"; -// import AsyncStorage from "@react-native-async-storage/async-storage"; -// // import { onAuthStateChanged, signInWithPopup } from "firebase/auth"; -// // import { auth } from "./firebase"; -// // import { signInWithEmailAndPassword, signInWithGoogle, GoogleAuthProvider, createUserWithEmailAndPassword } from "firebase/auth"; - -// const AuthContext = React.createContext(null); - -// // This hook can be used to access the user info. -// export function useAuth() { -// return React.useContext(AuthContext); -// } - -// // This hook will protect the route access based on user authentication. -// function useProtectedRoute(user) { -// const segments = useSegments(); -// const router = useRouter(); - -// React.useEffect(() => { -// const inAuthGroup = segments[0] === "(auth)"; - -// if ( -// // If the user is not signed in and the initial segment is not anything in the auth group. -// !user && -// !inAuthGroup -// ) { -// // Redirect to the sign-in page. -// router.replace("/sign-in"); -// } else if (user && inAuthGroup) { -// // Redirect away from the sign-in page. -// router.replace("/"); -// } -// }, [user, segments]); -// } - -// export function ProviderAuth(props) { -// const [user, setAuth] = React.useState(null); - -// React.useEffect(() => { -// // This listener will be called every time the user's authentication state changes. -// const unsubscribe = onAuthStateChanged(auth, (firebaseUser) => { -// if (firebaseUser) { -// // User is signed in. -// const { uid, email } = firebaseUser; -// setAuth({ uid, email }); -// storeData({ uid, email }); -// } else { -// // User is signed out. -// setAuth(null); -// deleteData(); -// } -// }); - -// // Return a function that will unsubscribe the listener when the component unmounts. -// return () => unsubscribe(); -// }, []); - -// const googleAuthProvider = new GoogleAuthProvider(); - -// console.log("user in provider", user) - -// useProtectedRoute(user); - -// const storeData = async (value) => { -// try { -// const jsonValue = JSON.stringify(value); -// await AsyncStorage.setItem("user", jsonValue); -// } catch (e) { -// // saving error -// } -// }; - -// const deleteData = async () => { -// try { -// await AsyncStorage.removeItem("user"); -// } catch (e) { -// // saving error -// } -// }; - -// const signInWithEmailPasswordProvider = async (email, password) => { -// try { -// const userCredential = await signInWithEmailAndPassword(auth, email, password); -// const firebaseUser = userCredential.user; -// setAuth(firebaseUser); -// } catch (error) { -// -// } -// }; - -// const signInWithGoogleProvider = async () => { -// try { -// const userCredential = await signInWithPopup(auth, googleAuthProvider); -// const firebaseUser = userCredential.user; -// setAuth(firebaseUser); -// } catch (error) { -// -// } -// }; - -// const signOut = async () => { -// await auth.signOut(); -// }; - -// const signUpWithEmailPasswordProvider = async (email, password) => { -// try { -// const newUser = await createUserWithEmailAndPassword(email, password); -// - -// } catch (e) { -// console.log("Error", e) -// } -// } - -// return ( -// -// {props.children} -// -// ); -// } diff --git a/packages/app/components/Fab/Fab.tsx b/packages/app/components/Fab/Fab.tsx new file mode 100644 index 000000000..3763b2e6e --- /dev/null +++ b/packages/app/components/Fab/Fab.tsx @@ -0,0 +1,26 @@ +import React, { useState } from 'react'; +import { Platform } from 'react-native'; +import FABWeb from './FabWeb'; +import FABNative from './FabNative'; + +const FAB = () => { + const [showQuickActions, setShowQuickActions] = useState(false); + + const toggleQuickActions = () => { + setShowQuickActions((prev) => !prev); + }; + + return Platform.OS === 'web' ? ( + + ) : ( + + ); +}; + +export default FAB; diff --git a/packages/app/components/Fab/FabNative.tsx b/packages/app/components/Fab/FabNative.tsx new file mode 100644 index 000000000..dc4cbf2bf --- /dev/null +++ b/packages/app/components/Fab/FabNative.tsx @@ -0,0 +1,59 @@ +import React from 'react'; +import { TouchableOpacity, View } from 'react-native'; +import { MaterialIcons } from '@expo/vector-icons'; +import useCustomStyles from 'app/hooks/useCustomStyles'; +import { QuickActionsSection } from '../../modules/dashboard'; + +const FABNative = ({ showQuickActions, toggleQuickActions }) => { + const styles = useCustomStyles(loadStyles); + + return ( + <> + {showQuickActions && ( + + + + )} + + + + + ); +}; + +const loadStyles = (theme) => { + const { currentTheme } = theme; + + return { + quickActionsContainer: { + position: 'absolute', + bottom: 70, + right: 40, + zIndex: 1, + backgroundColor: currentTheme.colors.background, + height: 54, + width: 150, + borderRadius: 5, + justifyContent: 'center', + alignItems: 'center', + }, + fab: { + position: 'absolute', + width: 55, + height: 55, + backgroundColor: currentTheme.colors.card, + borderRadius: 28, + justifyContent: 'center', + alignItems: 'center', + zIndex: 2, + elevation: 2, + bottom: 20, + alignSelf: 'center', + }, + fabIcon: { + color: currentTheme.colors.tertiaryBlue, + }, + }; +}; + +export default FABNative; diff --git a/packages/app/components/Fab/FabWeb.tsx b/packages/app/components/Fab/FabWeb.tsx new file mode 100644 index 000000000..a25ff8786 --- /dev/null +++ b/packages/app/components/Fab/FabWeb.tsx @@ -0,0 +1,63 @@ +import React from 'react'; +import { TouchableOpacity, View } from 'react-native'; +import { MaterialIcons } from '@expo/vector-icons'; +import { RText } from '@packrat/ui'; +import useCustomStyles from 'app/hooks/useCustomStyles'; +import { QuickActionsSection } from 'app//modules/dashboard'; + +const FABWeb = ({ showQuickActions, toggleQuickActions }) => { + const styles = useCustomStyles(loadStyles); + + return ( + <> + {showQuickActions && ( + + + + )} + + + Create + + + ); +}; + +const loadStyles = (theme) => { + const { currentTheme } = theme; + + return { + quickActionsContainer: { + position: 'absolute', + top: 50, + right: 10, + zIndex: 1, + backgroundColor: currentTheme.colors.background, + height: 54, + width: 150, + borderRadius: 5, + }, + fab: { + position: 'absolute', + flexDirection: 'row', + width: 100, + height: 50, + backgroundColor: currentTheme.colors.card, + borderRadius: 28, + justifyContent: 'center', + alignItems: 'center', + alignSelf: 'flex-end', + zIndex: 2, + }, + fabIcon: { + color: currentTheme.colors.tertiaryBlue, + }, + fabText: { + fontSize: 17, + color: currentTheme.colors.tertiaryBlue, + fontWeight: 'bold', + }, + }; +}; + +export default FABWeb; diff --git a/packages/app/components/GearList/GearList.tsx b/packages/app/components/GearList/GearList.tsx index 4adbc2ffa..0b6584aa1 100644 --- a/packages/app/components/GearList/GearList.tsx +++ b/packages/app/components/GearList/GearList.tsx @@ -1,9 +1,9 @@ import React from 'react'; import { RStack as OriginalRStack, RText as OriginalRText } from '@packrat/ui'; import { FontAwesome5 } from '@expo/vector-icons'; -import { AddPackContainer } from '../pack/AddPack'; +import { AddPackContainer } from '../../modules/pack/widgets/AddPackContainer'; import useTheme from '../../hooks/useTheme'; -import PackContainer from '../pack/PackContainer'; +import PackContainer from '../../modules/pack/widgets/PackContainer'; const RStack: any = OriginalRStack; const RText: any = OriginalRText; @@ -45,7 +45,7 @@ export const GearList = () => { /> = ({ {isAlreadyScored ? title : 'Score this pack!'} - {subheader} - {description} + + {subheader} + + + {description} + {isOwner && ( - Calculate Score + Calculate Score )} @@ -220,7 +224,7 @@ export const ScoreContainer: React.FC = ({ style={{ flex: 1, flexDirection: media.gtXs ? 'column' : 'row', - gap: 8, + gap: 15, }} > @@ -238,12 +242,21 @@ const loadStyles = (theme: any) => { paddingHorizontal: 25, marginVertical: 15, padding: 26, + marginTop: 25, // borderColor: currentTheme.colors.border, // borderWidth: 2, + borderColor: currentTheme.colors.border, + borderWidth: 1, + borderRadius: 10, + boxShadow: '0px 4px 8px rgba(0,0,0,0.1)', + backgroundColor: currentTheme.colors.background, }, hStack: { + display: 'flex', + flexDirection: 'row', justifyContent: 'space-between', alignItems: 'center', + gap: 10, }, vStack: { justifyContent: 'center', @@ -256,15 +269,22 @@ const loadStyles = (theme: any) => { width: '100%', }, scoreText: { - color: currentTheme.colors.textPrimary, + color: currentTheme.colors.text, fontSize: 26, fontWeight: 'bold', + paddingBottom: 15, }, button: { backgroundColor: currentTheme.colors.primary, marginTop: 15, height: 50, justifyContent: 'center', + boxShadow: '0px 2px 4px rgba(0,0,0,0.2)', + }, + buttonText: { + color: currentTheme.colors.white, + fontSize: 16, + fontWeight: '500', }, container: { flex: 1, @@ -274,6 +294,7 @@ const loadStyles = (theme: any) => { graphWrapper: { alignItems: 'center', justifyContent: 'center', + padding: 10, }, label: { position: 'absolute', diff --git a/packages/app/components/SearchInput/SearchInput.tsx b/packages/app/components/SearchInput/SearchInput.tsx index a75b4dbc3..27cedc1b3 100644 --- a/packages/app/components/SearchInput/SearchInput.tsx +++ b/packages/app/components/SearchInput/SearchInput.tsx @@ -67,7 +67,7 @@ export const SearchInput = forwardRef( }} > ( ( minWidth="100%" alignSelf="center" position="relative" - backgroundColor={currentTheme.colors.text} + backgroundColor={currentTheme.colors.white} borderRadius={8} > | null; }; } +const HEADER_COMPONENTS = { + trip: TripCardHeader, + pack: PackCardHeader, + item: ItemCardHeader, +}; + export const CustomCard = ({ title, content, @@ -35,6 +42,7 @@ export const CustomCard = ({ if (!data) return null; const isWeb = Platform.OS === 'web'; + const Header = HEADER_COMPONENTS[type] || PackCardHeader; return ( - {type === 'trip' ? ( - - ) : ( - - )} +
{type === 'pack' && authUser?.id === data.owner_id ? ( @@ -94,13 +98,15 @@ export const CustomCard = ({ paddingRight: 16, paddingLeft: 16, flex: 1, - paddingBottom: 20, + paddingBottom: 100, }} > {content} - {footer} + {footer ? ( + {footer} + ) : null} ); @@ -110,7 +116,7 @@ const loadStyles = (theme) => { const { isDark, currentTheme } = theme; return { mainContainer: { - backgroundColor: !isDark ? currentTheme.colors.card : '#1A1A1D', + backgroundColor: currentTheme.colors.border, flex: 1, gap: 45, justifyContent: 'space-between', diff --git a/packages/app/components/card/CustomCardHeader.tsx b/packages/app/components/card/CustomCardHeader.tsx index ff32ecd34..5c18cf9bf 100644 --- a/packages/app/components/card/CustomCardHeader.tsx +++ b/packages/app/components/card/CustomCardHeader.tsx @@ -1,27 +1,29 @@ import React, { useState } from 'react'; import { RButton, RStack, RText as OriginalRText } from '@packrat/ui'; import { View } from 'react-native'; -import { MaterialCommunityIcons } from '@expo/vector-icons'; import { RLink } from '@packrat/ui'; -import { useCopyClipboard, useScreenWidth } from 'app/hooks/common'; -import { useAuthUser } from 'app/auth/hooks'; +import { useCopyClipboard } from 'app/hooks/common'; +import { useAuthUser } from 'app/modules/auth'; import useTheme from '../../hooks/useTheme'; -import { CopyPackModal } from 'app/components/pack/CopyPackModal'; +import { CopyPackModal } from 'app/modules/pack'; interface CustomCardHeaderProps { + ownerId: string; data: { - owner_id: string; owners?: Array<{ name: string }>; type: string; }; title: string | JSX.Element; link?: string; - actionsComponent: boolean | JSX.Element | undefined; + actionsComponent?: boolean | JSX.Element | undefined; } +const COPY_TYPES = ['pack']; + const RText: any = OriginalRText; export const CustomCardHeader = ({ data, + ownerId, title, link, actionsComponent, @@ -31,20 +33,15 @@ export const CustomCardHeader = ({ const { isDark } = useTheme(); const [isCopyPackModalOpen, setIsCopyPackModalOpen] = useState(false); - console.log("dataaaaaaaaaaaaa", data.owners) - return ( <> {typeof title === 'string' ? {title} : title} - + - {user?.id === data.owner_id + {user?.id === ownerId ? 'Your Profile' : `View ${ data.owners && data.owners?.length @@ -54,7 +51,7 @@ export const CustomCardHeader = ({ - {user?.id !== data.owner_id && data.type !== 'trip' && ( + {user?.id !== ownerId && COPY_TYPES.includes(data.type) && ( { setIsCopyPackModalOpen(true); diff --git a/packages/app/components/card/ItemCardHeader/ItemCardHeader.tsx b/packages/app/components/card/ItemCardHeader/ItemCardHeader.tsx new file mode 100644 index 000000000..e1f9667bb --- /dev/null +++ b/packages/app/components/card/ItemCardHeader/ItemCardHeader.tsx @@ -0,0 +1,86 @@ +import React, { useState } from 'react'; +import useTheme from 'app/hooks/useTheme'; +import { CustomCardHeader } from '../CustomCardHeader'; +import { AntDesign, MaterialIcons } from '@expo/vector-icons'; +import { useAuthUser } from 'app/modules/auth'; +import { RStack, RIconButton, DropdownComponent, RText } from '@packrat/ui'; +import { useFetchSinglePack, useDeletePack } from 'app/modules/pack'; +import { useItemTitleInput } from './useItemTitleInput'; +import { useRouter } from 'app/hooks/router'; +import { Platform, View } from 'react-native'; +import useResponsive from 'app/hooks/useResponsive'; + +interface PackCardHeaderProps { + data: any; + title: string; + link?: string; +} +interface optionValues { + label: string; + value: string; +} + +export const ItemCardHeader = ({ data, title }: PackCardHeaderProps) => { + const { isLoading, refetch } = useFetchSinglePack(data?.id); + const user = useAuthUser(); + const { handleDeletePack } = useDeletePack(data.id); + const { + handleActionsOpenChange, + handleEdit, + handleSaveTitle, + isEditMode, + isOpen, + setIsOpen, + } = useItemTitleInput(data); + + const { isDark } = useTheme(); + const router = useRouter(); + + const optionValues: optionValues[] = [ + { label: 'Edit', value: 'Edit' }, + { label: 'Delete', value: 'Delete' }, + ]; + + const { xxs, xs, xxl } = useResponsive(); + console.log({ data }); + + return ( + <> + + {Platform.OS === 'web' && ( + + } + onPress={() => { + if (Platform.OS === 'web') { + window?.history?.back(); + } else { + router.back(); + } + }} + /> + )} + {title} + + } + /> + + ); +}; diff --git a/packages/app/components/card/ItemCardHeader/index.ts b/packages/app/components/card/ItemCardHeader/index.ts new file mode 100644 index 000000000..a0c43530e --- /dev/null +++ b/packages/app/components/card/ItemCardHeader/index.ts @@ -0,0 +1 @@ +export { ItemCardHeader } from './ItemCardHeader'; diff --git a/packages/app/components/card/ItemCardHeader/useItemTitleInput.ts b/packages/app/components/card/ItemCardHeader/useItemTitleInput.ts new file mode 100644 index 000000000..e6094c391 --- /dev/null +++ b/packages/app/components/card/ItemCardHeader/useItemTitleInput.ts @@ -0,0 +1,58 @@ +import { useEditPack, useDeletePack } from 'app/modules/pack'; +import { useRef, useState } from 'react'; + +export const useItemTitleInput = (data) => { + const [isEditMode, setIsEditMode] = useState(false); + const isEditModeRef = useRef(false); + const [isOpen, setIsOpen] = useState(false); + const { editPack } = useEditPack(); + const { handleDeletePack } = useDeletePack(data.id); + + const handleActionsOpenChange = (state) => { + setIsOpen(true); + if (!state && isEditModeRef.current) { + isEditModeRef.current = false; + setIsEditMode(true); + setIsOpen(true); + } + switch (state) { + case 'Edit': + handleEdit(); + break; + case 'Delete': + handleDelete(); + break; + default: + break; + } + }; + const handleEdit = () => { + isEditModeRef.current = true; + setIsOpen(false); + setIsEditMode(true); + }; + + const handleSaveTitle = (title) => { + const packDetails = { + id: data.id, + name: title, + is_public: data.is_public, + }; + setIsOpen(false); + editPack(packDetails); + setIsEditMode(false); + }; + const handleDelete = () => { + handleDeletePack(); + setIsOpen(false); + }; + + return { + handleActionsOpenChange, + isEditMode, + handleEdit, + handleSaveTitle, + isOpen, + setIsOpen, + }; +}; diff --git a/packages/app/components/card/LargeCard.tsx b/packages/app/components/card/LargeCard.tsx index 5db0d9630..822c979b5 100644 --- a/packages/app/components/card/LargeCard.tsx +++ b/packages/app/components/card/LargeCard.tsx @@ -74,7 +74,7 @@ const LargeCard: React.FC = ({ {Icon ? : null} { { diff --git a/packages/app/components/card/TripCardHeader/TripCardHeader.tsx b/packages/app/components/card/TripCardHeader/TripCardHeader.tsx index 8be863249..fb568f785 100644 --- a/packages/app/components/card/TripCardHeader/TripCardHeader.tsx +++ b/packages/app/components/card/TripCardHeader/TripCardHeader.tsx @@ -13,6 +13,7 @@ export const TripCardHeader = ({ data, title, link }) => { return ( { paddingHorizontal: 12, }, sendButton: { - backgroundColor: currentTheme.colors.background, + backgroundColor: currentTheme.colors.tertiaryBlue, paddingHorizontal: 16, paddingVertical: 8, borderRadius: 8, diff --git a/packages/app/components/chat/index.tsx b/packages/app/components/chat/index.tsx index 573cb8fae..fe18c7e51 100644 --- a/packages/app/components/chat/index.tsx +++ b/packages/app/components/chat/index.tsx @@ -21,6 +21,7 @@ import { SuggestionList, } from '../../components/Suggestion'; import useTheme from 'app/hooks/useTheme'; +import colors from 'native-base/lib/typescript/theme/base/colors'; interface ChatComponentProps { showChatSelector?: boolean; @@ -270,11 +271,7 @@ const ChatModalTrigger: React.FC = ({ } onPress={() => { diff --git a/packages/app/components/dashboard/FeedPreview.tsx b/packages/app/components/dashboard/FeedPreview.tsx deleted file mode 100644 index bdbf24571..000000000 --- a/packages/app/components/dashboard/FeedPreview.tsx +++ /dev/null @@ -1,74 +0,0 @@ -import React from 'react'; -import { RText as OriginalRText, RStack } from '@packrat/ui'; -import { RLink } from '@packrat/ui'; -import { View } from 'react-native'; -import Carousel from '../carousel'; -import useCustomStyles from 'app/hooks/useCustomStyles'; -import { useFeed } from 'app/hooks/feed'; -import loadStyles from './feedpreview.style'; - -interface FeedItem { - id: string; - name: string; - type: string | null; - description: string; -} - -interface FeedPreviewScrollProps { - itemWidth: number; -} -const RText: any = OriginalRText; - -const FeedPreviewScroll: React.FC = ({ itemWidth }) => { - const styles = useCustomStyles(loadStyles); - const { data: feedData } = useFeed(); - - console.log('feedData', feedData) - - return ( - - {feedData?.filter((item): item is FeedItem => item.type !== null).map((item: FeedItem, index: number) => { - const linkStr = `/${item.type}/${item.id}`; - return linkStr ? ( - - - - {item.name} - - {item.type} - - - - {item.description} - - - - ) : null; - })} - - ); -}; - -const FeedPreview: React.FC = () => { - return ; -}; -export default FeedPreview; diff --git a/packages/app/components/dashboard/HeroBanner.tsx b/packages/app/components/dashboard/HeroBanner.tsx deleted file mode 100644 index efdefa412..000000000 --- a/packages/app/components/dashboard/HeroBanner.tsx +++ /dev/null @@ -1,165 +0,0 @@ -import React from 'react'; -import { RStack, RText as OriginalRText, RButton } from '@packrat/ui'; -import { MaterialCommunityIcons } from '@expo/vector-icons'; - -import LargeCard from '../card/LargeCard'; -import { Platform, View } from 'react-native'; -import useTheme from '../../hooks/useTheme'; -import { useAuthUser } from 'app/auth/hooks'; -import Hero from '../hero'; -import { useRouter } from 'app/hooks/router'; -import { first } from 'lodash'; -import { hexToRGBA } from '../../utils/colorFunctions'; -import useCustomStyles from 'app/hooks/useCustomStyles'; -import { PlacesAutocomplete } from 'app/components/PlacesAutocomplete/PlacesAutocomplete'; - -const RText: any = OriginalRText; - -interface HeroSectionProps { - onSelect?: (selectedResult: SearchResult) => void; - style?: any; -} - -interface SearchResult { - properties: { - osm_id: number; - osm_type: string; - name: string; - }; - geometry: { - coordinates: [number, number]; - }; -} - -const HeroSection: React.FC = ({ onSelect }) => { - const { enableDarkMode, enableLightMode, isDark, isLight, currentTheme } = - useTheme(); - const styles = useCustomStyles(loadStyles); - const router = useRouter(); - - const handleSearchSelect = async (selectedResult: SearchResult) => { - try { - const { osm_id, osm_type, name } = selectedResult.properties; - - // const coordinates = selectedResult.geometry.coordinates; - - if (!osm_id || !osm_type) { - console.error( - 'No OSM ID or OSM type found in the selected search result', - ); - } else { - router.push({ - pathname: '/destination/query', - query: { - osmType: osm_type, - osmId: osm_id, - name, - }, - }); - } - } catch (error) { - console.error('errorrrrrr', error); - } - }; - - const user = useAuthUser(); - - const firstNameOrUser = first(user?.name?.split(' ')) ?? 'User'; - - const cardBackgroundColor = hexToRGBA(currentTheme.colors.secondaryBlue, 0.5); - - const bannerText = - firstNameOrUser !== 'User' - ? `Let's find a new trail, ${firstNameOrUser}` - : "Let's find a new trail"; - - return ( - - - - - {bannerText} - {Platform.OS === 'web' ? ( - - ) : ( - { - router.push('/search'); - }} - > - - - Search by park, city, or trail - - - )} - - - - - ); -}; - -const loadStyles = (theme: any) => { - const { currentTheme } = theme; - return { - banner: { - flex: 1, - backgroundRepeat: 'repeat', - backgroundSize: 'cover', - marginBottom: 20, - marginTop: 20, - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - position: 'relative', - zIndex: 1, - }, - title: { - fontSize: 24, - fontWeight: 'bold', - marginBottom: 20, - color: currentTheme.colors.text, - }, - }; -}; - -export default HeroSection; diff --git a/packages/app/components/dashboard/QuickActionButton.tsx b/packages/app/components/dashboard/QuickActionButton.tsx deleted file mode 100644 index daf3c9194..000000000 --- a/packages/app/components/dashboard/QuickActionButton.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import { TouchableOpacity, Text } from 'react-native'; -import { RCard as OriginalRCard } from '@packrat/ui'; -import { MaterialIcons } from '@expo/vector-icons'; -import React from 'react'; -import { theme } from '../../theme'; -import useCustomStyles from 'app/hooks/useCustomStyles'; - -const RCard: any = OriginalRCard; - -interface QuickActionButtonProps { - onPress: () => void; - iconName: keyof typeof MaterialIcons.glyphMap; - text: string; -} - -const QuickActionButton = ({ - onPress, - iconName, - text, -}: QuickActionButtonProps) => { - const styles = useCustomStyles(loadStyles); - return ( - - - - - {text} - - - - ); -}; - -const loadStyles = (theme: any) => { - const { currentTheme } = theme; - return { - container: { - margin: 10, - display: 'flex', - alignItems: 'center', - padding: '20', - }, - card: { - flexDirection: 'column', - justifyContent: 'center', - alignItems: 'center', - backgroundColor: currentTheme.colors.primary, - }, - icon: { - marginBottom: 10, - }, - text: { - fontSize: 13, - fontWeight: 'bold', - color: currentTheme.colors.iconColor, - }, - }; -}; - -export default QuickActionButton; diff --git a/packages/app/components/dashboard/SectionHeader.tsx b/packages/app/components/dashboard/SectionHeader.tsx deleted file mode 100644 index 79807ff5d..000000000 --- a/packages/app/components/dashboard/SectionHeader.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import React from 'react'; -import { RText, RStack } from '@packrat/ui'; -import { Ionicons } from '@expo/vector-icons'; -import { theme } from '../../theme'; -import useCustomStyles from 'app/hooks/useCustomStyles'; - -interface SectionHeaderProps { - iconName: keyof typeof Ionicons.glyphMap; - text: string; -} - -const SectionHeader = ({ iconName, text }: SectionHeaderProps) => { - const styles = useCustomStyles(loadStyles); - return ( - - - {text} - - ); -}; - -const loadStyles = () => ({ - rStack: { - marginBottom: 10, - justifyContent: 'space-around', // Updated from "space-between" - alignItems: 'center', - flexDirection: 'row', - }, - text: { - color: theme.colors.text, - fontSize: 20, - fontWeight: 'bold', - }, - icon: { - fontSize: 40, - margin: 10, - color: 'white', - }, -}); - -export default SectionHeader; diff --git a/packages/app/components/dashboard/feedpreview.style.tsx b/packages/app/components/dashboard/feedpreview.style.tsx deleted file mode 100644 index 404985156..000000000 --- a/packages/app/components/dashboard/feedpreview.style.tsx +++ /dev/null @@ -1,42 +0,0 @@ -const loadStyles = (theme: any, appTheme: any) => { - const { currentTheme } = theme; - return { - feedPreview: { - flexDirection: 'row', - width: '100%', - marginBottom: 20, - }, - cardStyles: { - height: 100, - width: '100%', - backgroundColor: appTheme.colors.primary, - borderRadius: 5, - padding: 20, - }, - feedItem: { - width: 250, - height: 100, - backgroundColor: currentTheme.colors.primary, - marginBottom: 10, - padding: 10, - borderRadius: 5, - marginRight: 10, - marginLeft: 10, - }, - feedItemTitle: { - fontWeight: 'bold', - fontSize: 17, - color: currentTheme.colors.text, - marginBottom: 5, - }, - feedItemType: { - fontWeight: 'bold', - fontSize: 16, - color: currentTheme.colors.text, - backgroundColor: currentTheme.colors.background, - marginBottom: 5, - }, - }; -}; - -export default loadStyles; diff --git a/packages/app/components/destination/index.tsx b/packages/app/components/destination/index.tsx index 67114755f..dd849ec66 100644 --- a/packages/app/components/destination/index.tsx +++ b/packages/app/components/destination/index.tsx @@ -159,7 +159,7 @@ export const DestinationPage = () => { ) : ( { color={currentTheme.colors.background} /> Search by park, city, or trail @@ -193,7 +193,7 @@ export const DestinationPage = () => { )} ContentComponent={map} @@ -232,12 +232,12 @@ const loadStyles = (theme) => { alignItems: 'flex-start', }, headerText: { - color: currentTheme.colors.textPrimary, + color: currentTheme.colors.text, fontSize: 22, fontWeight: 'bold', }, headerSubText: { - color: isDark ? 'white' : currentTheme.colors.textDarkGrey, + color: isDark ? 'white' : currentTheme.colors.whiteDarkGrey, fontSize: 16, marginTop: 5, }, @@ -246,7 +246,7 @@ const loadStyles = (theme) => { marginTop: 10, }, languageText: { - color: isDark ? 'white' : currentTheme.colors.textDarkGrey, + color: isDark ? 'white' : currentTheme.colors.whiteDarkGrey, fontSize: 14, marginRight: 10, marginBottom: 5, // Add margin to provide spacing between the language texts diff --git a/packages/app/components/feed/FeedCard.tsx b/packages/app/components/feed/FeedCard.tsx deleted file mode 100644 index 69e9d0fba..000000000 --- a/packages/app/components/feed/FeedCard.tsx +++ /dev/null @@ -1,359 +0,0 @@ -import { AntDesign } from '@expo/vector-icons'; -import { formatDistanceToNow } from 'date-fns'; -import { MaterialIcons, Entypo } from '@expo/vector-icons'; -import useTheme from '../../hooks/useTheme'; -import { Platform, TouchableOpacity, View } from 'react-native'; -import { DuplicateIcon } from '../DuplicateIcon/index'; -import { truncateString } from '../../utils/truncateString'; -import { - RLink, - RText as OriginalRText, - RStack, - RHeading, - ContextMenu, -} from '@packrat/ui'; -import { formatNumber } from 'app/utils/formatNumber'; -import { useAddFavorite, useFetchUserFavorites } from 'app/hooks/favorites'; -import { useAuthUser } from 'app/auth/hooks'; -import { useRouter } from 'app/hooks/router'; -import { useItemWeightUnit } from 'app/hooks/items'; -import { convertWeight } from 'app/utils/convertWeight'; -import Layout from 'app/components/layout/Layout'; -const RText: any = OriginalRText; - -interface CardProps { - type: string; - id: string; - owner: { - id: string; - username: string; - }; - name: string; - total_weight: number; - is_public: boolean; - favorited_by: Array<{ - id: string; - }>; - favorites_count: number; - owner_id: string | { id: String }; - destination: string; - createdAt: string; - owners: Array<{ any: any }>; - duration: string; - itemPacks?: any[]; -} - -interface User { - id: string; -} - -export default function Card({ - type, - id, - owner, - name, - total_weight, - is_public, - favorited_by, - favorites_count, - owner_id, - destination, - createdAt, - owners, - duration, - itemPacks, -}: CardProps) { - console.log('CardProps:', favorited_by); - const user = useAuthUser(); - const { enableDarkMode, enableLightMode, isDark, isLight, currentTheme } = - useTheme(); - - const { addFavorite } = useAddFavorite(); - const [weightUnit] = useItemWeightUnit(); - - // const { data: favorites = [] } = useFetchUserFavorites(user?.id); - - const router = useRouter(); - - const isFavorite = - type !== 'trip' && - // (favorited_by?.includes(user?.id) || - favorited_by?.some((obj) => obj?.['userId'] === user?.id && user?.id); // Check if obj?.userId is defined - - /** - * Handles adding an item to the user's favorites. - * - * @return {void} - */ - const handleAddToFavorite = () => { - if (!user) return; - const data = { - packId: id, - userId: user.id, - }; - - addFavorite(data); - }; - - /** - * Handles the removal of an item from the favorites list. - * - * @return {void} This function does not return a value. - */ - // const handleRemoveFromFavorite = () => { - // const favorite = favorites.find( - // (favorite) => favorite.pack_id === id && favorite.user_id === user.id, - // ); - // if (favorite) { - // // TODO IMPLEMENT remove favorite - // } - // }; - - const truncatedName = truncateString(name, 25); - const truncatedDestination = truncateString(destination, 25); - const formattedWeight = convertWeight(total_weight, 'g', weightUnit); - // const formattedWeight = formatNumber(total_weight); // TODO convert to user preference once implemented - const quantity = - itemPacks?.reduce( - (accumulator, currentValue) => accumulator + currentValue?.item?.quantity, - 0, - ) ?? 0; - let numberOfNights; - - if (duration) numberOfNights = JSON.parse(duration).numberOfNights; - const calculatedWidth = Platform.OS === 'web' ? '60vw' : '60%'; - return ( - - - - - - - - - - - {truncatedName} - - - - {type === 'pack' && ( - - - - - )} - {type === 'trip' && ( - - )} - - - - - {type === 'pack' && ( - - Total Weight: {formatNumber(formattedWeight)} {weightUnit} - - )} - {type === 'pack' && ( - - Total Quantity: {quantity} - - )} - - {type === 'trip' && ( - - {truncatedDestination} - - )} - - - - - - - - View {owner?.username ? '@' + owner?.username : 'Owner'} - - - - - {formatDistanceToNow( - new Date( - !Number.isNaN(new Date(createdAt).getTime()) - ? createdAt - : new Date(), - ).getTime(), - { - addSuffix: true, - }, - ) ?? 0} - - - - - - {type === 'pack' && ( - - - Favorites - - - {user?.id !== owner_id ? ( - - - - ) : null} - - - {favorites_count > 0 ? favorites_count : 0} - - - - )} - {type === 'trip' && ( - - - Nights - - - {numberOfNights} - - - )} - - - - - - - { - router.push(type === 'pack' ? '/pack/' + id : '/trip/' + id); - }} - > - View {type} - - { - router.push(`/profile/${owner_id}`); - }} - > - View Owner - - - - - - ); -} diff --git a/packages/app/components/footer/Footer.tsx b/packages/app/components/footer/Footer.tsx index d3a1cf250..80bdfe08b 100644 --- a/packages/app/components/footer/Footer.tsx +++ b/packages/app/components/footer/Footer.tsx @@ -20,7 +20,7 @@ export default function Footer() { > { {Platform.OS === 'web' ? ( @@ -56,7 +56,7 @@ const LandingPage = () => { { PackRat )} - + The Ultimate Travel App diff --git a/packages/app/components/landing_page/landingpage.style.tsx b/packages/app/components/landing_page/landingpage.style.tsx index 7fbba8a1a..d2ce11de3 100644 --- a/packages/app/components/landing_page/landingpage.style.tsx +++ b/packages/app/components/landing_page/landingpage.style.tsx @@ -47,7 +47,7 @@ const loadStyles = (theme) => { fontSize: Platform.OS === 'web' ? 24 : 20, fontWeight: Platform.OS === 'web' ? 'bold' : 'normal', textAlign: 'center', - color: currentTheme.colors.text, + color: currentTheme.colors.tertiaryBlue, marginBottom: 20, // Ensure spacing between text and next elements paddingHorizontal: 10, // Adjust text alignment on smaller screens }, @@ -59,7 +59,7 @@ const loadStyles = (theme) => { justifyContent: 'center', // Center buttons horizontally }, getStartedButton: { - backgroundColor: currentTheme.colors.secondaryBlue, + backgroundColor: currentTheme.colors.tertiaryBlue, height: 50, paddingVertical: 12, // Increase padding for better touch area paddingHorizontal: 30, @@ -67,14 +67,14 @@ const loadStyles = (theme) => { alignItems: 'center', // Ensure text is centered within button }, footerText: { - color: currentTheme.colors.text, + color: currentTheme.colors.white, fontSize: 18, fontWeight: 'bold', }, card: { marginBottom: 10, width: '100%', - backgroundColor: currentTheme.colors.secondaryBlue, + backgroundColor: currentTheme.colors.border, }, cardHeader: { flexDirection: 'row', @@ -91,7 +91,7 @@ const loadStyles = (theme) => { }, icon: { fontSize: 40, - color: currentTheme.colors.text, + color: currentTheme.colors.iconColor, marginRight: 10, }, featureText: { diff --git a/packages/app/components/layout/Layout.tsx b/packages/app/components/layout/Layout.tsx index e5ac9c968..2a2a89f28 100644 --- a/packages/app/components/layout/Layout.tsx +++ b/packages/app/components/layout/Layout.tsx @@ -1,17 +1,27 @@ +import { StyleProp, ViewStyle } from 'react-native'; import { View } from 'react-native'; -const Layout = ({ children }) => { +const Layout = ({ + children, + customStyle = {}, +}: { + children: React.ReactNode; + customStyle?: StyleProp; +}) => { return ( {children} diff --git a/packages/app/components/map/Map.native.tsx b/packages/app/components/map/Map.native.tsx index 06d72f517..8af80cb33 100644 --- a/packages/app/components/map/Map.native.tsx +++ b/packages/app/components/map/Map.native.tsx @@ -38,8 +38,8 @@ import * as DocumentPicker from 'expo-document-picker'; import * as FileSystem from 'expo-file-system'; import { DOMParser } from 'xmldom'; import { MapProps } from './models'; -import { useUserQuery } from 'app/auth/hooks'; -import { useUpdateUser } from 'app/hooks/user/useUpdateUser'; +import { useUserQuery } from 'app/modules/auth'; +import { useUpdateUser } from 'app/modules/user'; interface GeoJsonProperties { name?: string; diff --git a/packages/app/components/map/MapPreview.tsx b/packages/app/components/map/MapPreview.tsx index c47578eb9..2c1385239 100644 --- a/packages/app/components/map/MapPreview.tsx +++ b/packages/app/components/map/MapPreview.tsx @@ -1,6 +1,6 @@ import { RImage } from '@packrat/ui'; import { useProcessedShape, useMapPreviewData } from './useMapPreview'; -import { useAuthUserToken } from 'app/auth/hooks'; +import { useAuthUserToken } from 'app/modules/auth'; export default function MapPreview({ shape }) { const processedShape = useProcessedShape(shape); const { token } = useAuthUserToken(); diff --git a/packages/app/components/navigation/Drawer.native.tsx b/packages/app/components/navigation/Drawer.native.tsx index 82066d37b..6dd77a979 100644 --- a/packages/app/components/navigation/Drawer.native.tsx +++ b/packages/app/components/navigation/Drawer.native.tsx @@ -64,7 +64,7 @@ const loadStyles = (theme) => { marginHorizontal: 10, }, logoText: { - color: currentTheme.colors.text, + color: currentTheme.colors.white, fontSize: 38, fontWeight: '900', }, @@ -82,7 +82,7 @@ const loadStyles = (theme) => { paddingHorizontal: 12, }, menuBarItemText: { - color: currentTheme.colors.text, + color: currentTheme.colors.white, fontSize: 18, }, drawerTrigger: {}, diff --git a/packages/app/components/navigation/Drawer.tsx b/packages/app/components/navigation/Drawer.tsx index 6ba2ab388..696aad8eb 100644 --- a/packages/app/components/navigation/Drawer.tsx +++ b/packages/app/components/navigation/Drawer.tsx @@ -19,7 +19,7 @@ export function Drawer() { icon={} bg="transparent" outlineColor="transparent" - color="white" + color={currentTheme.colors.tertiaryBlue} fontWeight="bold" focusStyle={{ bg: 'transparent', diff --git a/packages/app/components/navigation/Navbar/Navbar.tsx b/packages/app/components/navigation/Navbar/Navbar.tsx index 74f1812df..fdaeabd87 100644 --- a/packages/app/components/navigation/Navbar/Navbar.tsx +++ b/packages/app/components/navigation/Navbar/Navbar.tsx @@ -1,17 +1,17 @@ -import React, { useMemo } from 'react'; +import React, { useContext, useMemo } from 'react'; import { View, Text, SafeAreaView, StyleSheet, Platform } from 'react-native'; -import { RButton, Container } from '@packrat/ui'; -import { useIsMobileView } from 'app/hooks/common'; +import { RButton, Container, RIconButton } from '@packrat/ui'; import { useNavigate } from 'app/hooks/navigation'; -import { NavigationList } from '../NavigationList'; import { Drawer } from '../Drawer'; import { useScrollTop } from 'app/hooks/common/useScrollTop'; import { useScreenWidth } from 'app/hooks/common'; -import useTheme from 'app/hooks/useTheme'; import { RImage } from '@packrat/ui'; +import Feather from '@expo/vector-icons/Feather'; +import ThemeContext from '../../../context/theme'; export const Navbar = () => { - const { currentTheme } = useTheme(); + const { currentTheme, isDark, enableDarkMode, enableLightMode } = + useContext(ThemeContext); const scrollTop = useScrollTop(); const { screenWidth } = useScreenWidth(); const isScrolled = !!scrollTop; @@ -20,6 +20,16 @@ export const Navbar = () => { }, [isScrolled, currentTheme, screenWidth]); const navigate = useNavigate(); + const iconName = isDark ? 'moon' : 'sun'; + const iconColor = isDark ? 'white' : 'black'; + const handlePress = () => { + if (isDark) { + enableLightMode(); + } else { + enableDarkMode(); + } + }; + return ( @@ -49,7 +59,20 @@ export const Navbar = () => { PackRat - + + } + onPress={handlePress} + /> + + @@ -57,7 +80,7 @@ export const Navbar = () => { }; const NavbarStyles = { - floatingBg: '#0284c7', + floatingBg: '#cce5ff', floatingRadius: 25, floatingBlur: 'blur(2px)', transition: 'all 0.2s ease-in-out', @@ -68,7 +91,7 @@ const loadStyles = (currentTheme, isScrolled, screenWidth) => { const isWeb = Platform.OS === 'web'; const isFloating = isWeb && isScrolled; const backgroundColor = isFloating - ? NavbarStyles.floatingBg + ? currentTheme.colors.border : currentTheme.colors.background; return StyleSheet.create({ @@ -93,7 +116,7 @@ const loadStyles = (currentTheme, isScrolled, screenWidth) => { position: 'fixed' as 'fixed' | 'relative', top: 0, zIndex: 100, - width: Platform.OS === 'web' ? '100vw' : "100%", + width: Platform.OS === 'web' ? '100vw' : '100%', }, }), }, @@ -124,9 +147,11 @@ const loadStyles = (currentTheme, isScrolled, screenWidth) => { logo: { marginRight: 10, cursor: 'pointer', + backgroundColor: currentTheme.colors.tertiaryBlue, + borderRadius: 10, }, logoText: { - color: currentTheme.colors.text, + color: currentTheme.colors.tertiaryBlue, fontSize: 38, fontWeight: '900', cursor: 'pointer', diff --git a/packages/app/components/navigation/Navbar/NavbarTauri.tsx b/packages/app/components/navigation/Navbar/NavbarTauri.tsx new file mode 100644 index 000000000..dec9d0800 --- /dev/null +++ b/packages/app/components/navigation/Navbar/NavbarTauri.tsx @@ -0,0 +1,161 @@ +import React, { useMemo } from 'react'; +import { View, Text, SafeAreaView, StyleSheet, Platform } from 'react-native'; +import { RButton, Container } from '@packrat/ui'; +import { useIsMobileView } from 'app/hooks/common'; +import { useNavigate } from 'app/hooks/navigation'; +import { NavigationList } from '../NavigationList'; +import { Drawer } from '../Drawer'; +import { useScrollTop } from 'app/hooks/common/useScrollTop'; +import { useScreenWidth } from 'app/hooks/common'; +import useTheme from 'app/hooks/useTheme'; +import { RImage } from '@packrat/ui'; +import FullSideBar from '../Sidebar/SideBar'; + +export const NavbarTauri = () => { + const { currentTheme } = useTheme(); + const scrollTop = useScrollTop(); + const { screenWidth } = useScreenWidth(); + const isScrolled = !!scrollTop; + const styles = useMemo(() => { + return StyleSheet.create(loadStyles(currentTheme, isScrolled, screenWidth)); + }, [isScrolled, currentTheme, screenWidth]); + const navigate = useNavigate(); + + return ( + + + + + { + navigate('/'); + }} + /> + { + navigate('/'); + }} + > + PackRat + + + + + + + ); +}; + +const NavbarStyles = { + floatingBg: '#0284c7', + floatingRadius: 25, + floatingBlur: 'blur(2px)', + transition: 'all 0.2s ease-in-out', + floatingSpacing: 4, +}; + +const loadStyles = (currentTheme, isScrolled, screenWidth) => { + const isWeb = Platform.OS === 'web'; + const isFloating = isWeb && isScrolled; + const backgroundColor = isFloating + ? NavbarStyles.floatingBg + : currentTheme.colors.background; + + return StyleSheet.create({ + drawerStyles: { + backgroundColor: currentTheme.colors.background, + }, + safeArea: { + backgroundColor, + width: '100%', + margin: 0, + transition: NavbarStyles.transition, + ...Platform.select({ + web: { + ...(isFloating + ? { + backdropFilter: NavbarStyles.floatingBlur, + marginTop: NavbarStyles.floatingSpacing, + padding: NavbarStyles.floatingSpacing, + borderRadius: NavbarStyles.floatingRadius, + } + : {}), + position: 'fixed' as 'fixed' | 'relative', + top: 0, + zIndex: 100, + width: Platform.OS === 'web' ? '100vw' : '100%', + }, + }), + }, + container: { + width: '100vw', + maxWidth: '100%', // Ensure container does not exceed the viewport width + flex: 1, // Ensure container can grow to fit content + backgroundColor, + borderRadius: NavbarStyles.floatingRadius, + flexDirection: 'row', // Keep flexDirection as row for alignment + justifyContent: 'space-between', + alignItems: 'center', + flexWrap: 'wrap', // Allow items to wrap + height: 60, // Ensure container takes full height of its container + padding: 16, + }, + header: { + flexDirection: 'row', // Keep flexDirection as row for initial alignment + alignItems: 'center', + justifyContent: 'space-between', + width: '100%', // Ensure header takes full width of its container + flexWrap: 'wrap', // Allow header items to wrap + }, + logoContainer: { + flexDirection: 'row', + alignItems: 'center', + }, + logo: { + marginRight: 10, + cursor: 'pointer', + }, + logoText: { + color: currentTheme.colors.text, + fontSize: 38, + fontWeight: '900', + cursor: 'pointer', + }, + menuBar: { + flexDirection: 'row', + alignItems: 'center', + justifyContent: 'flex-end', + paddingHorizontal: 16, + flex: 1, // Keep flexible but consider its behavior with wrapping, + flexWrap: 'wrap', // Allow items to wrap + }, + drawerTrigger: {}, + menuBarItemActive: { + // Apply styles for the active item + // ... + }, + menuBarItemTextActive: { + // Apply styles for the active item's text + // ... + }, + menuBarItemSelected: { + // Apply styles for the selected item + // ... + }, + menuBarItemTextSelected: { + // Apply styles for the selected item's text + // ... + }, + }); +}; diff --git a/packages/app/components/navigation/Navbar/index.ts b/packages/app/components/navigation/Navbar/index.ts index ec1cfd76d..00bf99a9a 100644 --- a/packages/app/components/navigation/Navbar/index.ts +++ b/packages/app/components/navigation/Navbar/index.ts @@ -1 +1,2 @@ export { Navbar } from './Navbar'; +export { NavbarTauri } from './NavbarTauri'; diff --git a/packages/app/components/navigation/Navigation.tsx b/packages/app/components/navigation/Navigation.tsx index ee1e48998..1530d2385 100644 --- a/packages/app/components/navigation/Navigation.tsx +++ b/packages/app/components/navigation/Navigation.tsx @@ -9,7 +9,7 @@ import { import useCustomStyles from 'app/hooks/useCustomStyles'; import { useIsMobileView } from 'app/hooks/common'; import { useNavigate } from 'app/hooks/navigation'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; import { NavigationList } from './NavigationList'; import { Button } from 'tamagui'; import SVGLogoComponent from '../../components/logo'; @@ -105,7 +105,7 @@ const loadStyles = (theme) => { marginHorizontal: 10, }, logoText: { - color: currentTheme.colors.text, + color: currentTheme.colors.white, fontSize: 38, fontWeight: '900', }, diff --git a/packages/app/components/navigation/NavigationItem.tsx b/packages/app/components/navigation/NavigationItem.tsx index 7ea3c5dd8..7d27aea2c 100644 --- a/packages/app/components/navigation/NavigationItem.tsx +++ b/packages/app/components/navigation/NavigationItem.tsx @@ -71,7 +71,7 @@ const loadStyles = (theme) => { paddingHorizontal: 12, }, menuBarItemText: { - color: currentTheme.colors.text, + color: currentTheme.colors.tertiaryBlue, fontSize: 15, }, menuBarItemActive: { diff --git a/packages/app/components/navigation/NavigationList.tsx b/packages/app/components/navigation/NavigationList.tsx index 6a31de984..6f40bcd71 100644 --- a/packages/app/components/navigation/NavigationList.tsx +++ b/packages/app/components/navigation/NavigationList.tsx @@ -31,7 +31,7 @@ export const NavigationList: React.FC = ({ color: currentTheme.colors.white, }} hoverStyle={{ - bg: currentTheme.colors.secondaryBlue as any, + bg: currentTheme.colors.border as any, }} key={item.href + index} > diff --git a/packages/app/components/navigation/Sidebar/ProfileNavigationList.tsx b/packages/app/components/navigation/Sidebar/ProfileNavigationList.tsx new file mode 100644 index 000000000..003dd5d8c --- /dev/null +++ b/packages/app/components/navigation/Sidebar/ProfileNavigationList.tsx @@ -0,0 +1,56 @@ +import React from 'react'; +import { useNavigationList } from 'app/hooks/navigation'; +import { NavigationItem } from '../NavigationItem'; +import { useIsMobileView } from 'app/hooks/common'; +import { View } from 'tamagui'; +import useTheme from '../../../hooks/useTheme'; + +interface ProfileNavigationList { + itemStyle?: any; + onItemSelect?: (item: any) => void; +} + +export const ProfileNavigationList = ({ itemStyle, onItemSelect }) => { + const isMobileView = useIsMobileView(); + const { currentTheme } = useTheme(); + const { navigationItems } = useNavigationList(); + + return ( + <> + {navigationItems + ?.filter(({ href }) => href === '/profile' || href === '/logout') + .map(({ type, ...Item }, index) => { + const item = Item as any; + console.log(item); + + return ( + + {type === 'link' ? ( + + ) : ( + item.Component && + )} + + ); + })} + + ); +}; diff --git a/packages/app/components/navigation/Sidebar/SideBar.tsx b/packages/app/components/navigation/Sidebar/SideBar.tsx new file mode 100644 index 000000000..3336f10eb --- /dev/null +++ b/packages/app/components/navigation/Sidebar/SideBar.tsx @@ -0,0 +1,99 @@ +import { useState } from 'react'; +import { View, useMedia, styled } from 'tamagui'; +import { RIconButton } from '@packrat/ui'; +import useTheme from 'app/hooks/useTheme'; +import Ionicons from '@expo/vector-icons/Ionicons'; +import { SidebarNavigationList } from './SidebarNavigationList'; +import { ProfileNavigationList } from './ProfileNavigationList'; + +export function FullSideBar() { + const [openDrawer, setOpenDrawer] = useState(false); + const { sm } = useMedia(); + + return ( + + {!sm && } + {sm && } + + + ); +} + +FullSideBar.fileName = 'FullSideBar'; + +function Sidebar() { + const { currentTheme } = useTheme(); + + return ( + + {}} + /> + + ); +} + +function ProfileDrawer({ + open, + setOpen, + onItemSelect, +}: { + open: boolean; + setOpen: (open: boolean) => void; + onItemSelect: (item: any) => void; +}) { + const { currentTheme } = useTheme(); + + return ( + + } + onPress={() => setOpen(!open)} + /> + {open && ( + + + + )} + + ); +} + +export default FullSideBar; diff --git a/packages/app/components/navigation/Sidebar/SidebarNavigationList.tsx b/packages/app/components/navigation/Sidebar/SidebarNavigationList.tsx new file mode 100644 index 000000000..e2a396070 --- /dev/null +++ b/packages/app/components/navigation/Sidebar/SidebarNavigationList.tsx @@ -0,0 +1,57 @@ +import React from 'react'; +import { useNavigationList } from 'app/hooks/navigation'; +import { NavigationItem } from '../NavigationItem'; +import { useIsMobileView } from 'app/hooks/common'; +import { View } from 'tamagui'; +import useTheme from '../../../hooks/useTheme'; + +interface SidebarNavigationList { + itemStyle?: any; + onItemSelect?: (item: any) => void; +} + +export const SidebarNavigationList = ({ itemStyle, onItemSelect }) => { + const isMobileView = useIsMobileView(); + const { currentTheme } = useTheme(); + const { navigationItems } = useNavigationList(); + + return ( + <> + {navigationItems + ?.filter( + ({ href, type }) => + href !== '/profile' && href !== '/logout' && type !== 'divider', + ) + .map(({ type, ...Item }, index) => { + const item = Item as any; + return ( + + {type === 'link' ? ( + + ) : ( + item.Component && + )} + + ); + })} + + ); +}; diff --git a/packages/app/components/navigation/Tabs.tsx b/packages/app/components/navigation/Tabs.tsx index 6486e9fb3..c2c53bed8 100644 --- a/packages/app/components/navigation/Tabs.tsx +++ b/packages/app/components/navigation/Tabs.tsx @@ -1,11 +1,16 @@ -import React from 'react'; +import React, { useContext } from 'react'; import { Tabs as ExpoTabs } from 'expo-router/tabs'; import { TabList } from './TabList'; import { DrawerToggleButton } from '@react-navigation/drawer'; import { Stack, usePathname } from 'expo-router'; -import { MaterialCommunityIcons } from '@expo/vector-icons'; +import { Feather, MaterialCommunityIcons } from '@expo/vector-icons'; import { BlurView } from 'expo-blur'; import useTheme from 'app/hooks/useTheme'; +import { StatusBar } from 'expo-status-bar'; +import { RIconButton } from '@packrat/ui'; +import ThemeContext from '../../context/theme'; +import { View } from 'react-native'; +import FAB from '../../components/Fab/Fab'; export const Tabs = () => { const formatHeaderTitle = () => { @@ -17,110 +22,120 @@ export const Tabs = () => { return title || 'Stack'; }; + const { isDark, enableDarkMode, enableLightMode } = useContext(ThemeContext); const { currentTheme } = useTheme(); + const iconName = isDark ? 'moon' : 'sun'; + const iconColor = isDark ? 'white' : 'black'; + const statusBarColor = isDark ? 'light' : 'dark'; + const handlePress = () => { + if (isDark) { + enableLightMode(); + } else { + enableDarkMode(); + } + }; return ( - , - tabBarBackground: () => ( - - ), - headerTitleStyle: { - fontSize: 24, - }, - headerStyle: { - backgroundColor: currentTheme.colors.secondaryBlue, - }, - headerTintColor: currentTheme.colors.text, - }} - > - ( - - ), - }} - /> - ( - - ), - }} - /> - ( - - ), - }} - /> - - - - + ( - + headerRight: () => ( + + } + onPress={handlePress} + /> + + ), - // TODO implement in the header - // header: () => ( - // - // - // - // ), - }} - /> - - {/* */} - + > + ( + + ), + }} + /> + ( + + ), + }} + /> + ( + + ), + }} + /> + + ( + + ), + }} + /> + + + + ); }; diff --git a/packages/app/components/pack_table/index.tsx b/packages/app/components/pack_table/index.tsx deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/app/components/password-reset/index.tsx b/packages/app/components/password-reset/index.tsx index 5da07f811..bf1364a8a 100644 --- a/packages/app/components/password-reset/index.tsx +++ b/packages/app/components/password-reset/index.tsx @@ -4,7 +4,7 @@ import { api } from '../../constants/api'; import { PasswordResetForm } from './PasswordResetForm'; import { RequestPasswordResetEmailModal } from './RequestEmailModal'; import useCustomStyles from 'app/hooks/useCustomStyles'; -import { usePasswordResetToken } from 'app/auth/hooks'; +import { usePasswordResetToken } from 'app/modules/auth'; export const RequestPasswordReset = () => { const [email, setEmail] = useState(''); diff --git a/packages/app/components/trip/TripCard.tsx b/packages/app/components/trip/TripCard.tsx index 972e8824e..03b452298 100644 --- a/packages/app/components/trip/TripCard.tsx +++ b/packages/app/components/trip/TripCard.tsx @@ -86,7 +86,7 @@ export default function TripCard({ { /> { setOpen(true); }} > - + Pick Date Range diff --git a/packages/app/components/trip/createTripModal.tsx b/packages/app/components/trip/createTripModal.tsx index 0d1d7ae5c..18af444d3 100644 --- a/packages/app/components/trip/createTripModal.tsx +++ b/packages/app/components/trip/createTripModal.tsx @@ -11,7 +11,7 @@ import { useRouter } from 'app/hooks/router'; import { useAddTrip } from 'app/hooks/trips'; import { addTripForm } from '@packrat/validations/src/validations/tripRoutesValidator'; import { useFormSubmitTrigger } from '@packrat/ui/src/form'; -import { useUserPackById } from 'app/hooks/packs'; +import { useUserPackById } from 'app/modules/pack'; import { formatCreateTripValuesForAPI } from 'app/utils/tripUtils'; const Form: any = OriginalForm; diff --git a/packages/app/components/weather/WeatherCard.tsx b/packages/app/components/weather/WeatherCard.tsx index 3c690083a..a9fbfa761 100644 --- a/packages/app/components/weather/WeatherCard.tsx +++ b/packages/app/components/weather/WeatherCard.tsx @@ -74,7 +74,7 @@ export default function WeatherCard({ /> { backgroundColor: currentTheme.colors.background === '#0284c7' ? '#eaeaea' - : currentTheme.colors.textDarkGrey, + : currentTheme.colors.whiteDarkGrey, }, cardContainer: { diff --git a/packages/app/constants/pack/icons.ts b/packages/app/constants/pack/icons.ts index 7a8c6a8e6..46b4b594c 100644 --- a/packages/app/constants/pack/icons.ts +++ b/packages/app/constants/pack/icons.ts @@ -1,4 +1,4 @@ -import { ItemCategoryEnum } from '../itemCategory'; +import { ItemCategoryEnum } from '../../modules/item/constants'; export const categoryIcons = { [ItemCategoryEnum.ESSENTIALS]: 'check-square', diff --git a/packages/app/context/theme.tsx b/packages/app/context/theme.tsx index ecbedca91..16e180534 100644 --- a/packages/app/context/theme.tsx +++ b/packages/app/context/theme.tsx @@ -2,6 +2,8 @@ import { createContext, useEffect, useReducer, useState } from 'react'; import { theme, darkTheme } from '../theme'; import ThirdPartyThemeProviders from './ThirdPartyThemeProviders'; import React from 'react'; +import { useColorScheme } from 'react-native'; + import { Platform } from 'react-native'; import AsyncStorage from '@react-native-async-storage/async-storage'; import { useStorageState } from 'app/hooks/storage/useStorageState'; @@ -65,27 +67,37 @@ export const ThemeProvider = ({ children }) => { const [[, storedIsEnabled], setStoredIsEnabled] = useStorageState('isEnabled'); const [loading, setLoading] = useState(true); + const colorScheme = useColorScheme(); useEffect(() => { - const fetchTheme = async () => { - try { - if (storedIsEnabled !== null) { - const isEnabled = JSON.parse(storedIsEnabled); - dispatch({ - type: isEnabled ? 'ENABLE_DARK_MODE' : 'ENABLE_LIGHT_MODE', - }); - } else { - dispatch({ type: 'ENABLE_LIGHT_MODE' }); - } - } catch (e) { - console.error('Local storage is unavailable:', e); - } finally { - setLoading(false); - } - }; - fetchTheme(); + // const fetchTheme = async () => { + // try { + // if (storedIsEnabled !== null) { + // const isEnabled = JSON.parse(storedIsEnabled); + // dispatch({ + // type: isEnabled ? 'ENABLE_DARK_MODE' : 'ENABLE_LIGHT_MODE', + // }); + // } else { + // dispatch({ type: 'ENABLE_LIGHT_MODE' }); + // } + // } catch (e) { + // console.error('Local storage is unavailable:', e); + // } finally { + // setLoading(false); + // } + // }; + // fetchTheme(); + setLoading(false); }, [storedIsEnabled]); + useEffect(() => { + console.log(colorScheme); + if (colorScheme === 'dark') { + dispatch({ type: 'ENABLE_DARK_MODE' }); + } else { + dispatch({ type: 'ENABLE_LIGHT_MODE' }); + } + }, [colorScheme]); /** * Enable dark mode. * diff --git a/packages/app/hooks/chat/useChat.ts b/packages/app/hooks/chat/useChat.ts index 823973bf8..897a252e2 100644 --- a/packages/app/hooks/chat/useChat.ts +++ b/packages/app/hooks/chat/useChat.ts @@ -1,7 +1,7 @@ import { useState } from 'react'; import { useGetUserChats } from './useGetUserChats'; import { useGetAIResponse, useGetAISuggestions } from './useGetAIResponse'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; import { v4 as uuidv4 } from 'uuid'; interface Reasoning { @@ -30,7 +30,7 @@ interface TypeId { export const useChat = (itemTypeId: TypeId | null = null) => { const user = useAuthUser(); - console.log('user', user) + console.log('user', user); const [typeId, setTypeId] = useState(itemTypeId); const [isLoading, setIsLoading] = useState(false); const [isAnalysisLoading, setIsAnalysisLoading] = useState(false); @@ -143,4 +143,4 @@ export const useChat = (itemTypeId: TypeId | null = null) => { isAnalysisLoading, setSuggestions, }; -}; \ No newline at end of file +}; diff --git a/packages/app/hooks/feed/index.ts b/packages/app/hooks/feed/index.ts deleted file mode 100644 index ba3d8a9e5..000000000 --- a/packages/app/hooks/feed/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { usePublicFeed } from './publicFeed'; -import { useUserPacks } from './../packs'; -import { useUserTrips } from '../singletrips'; - -export const useFeed = ( - queryString = 'Most Recent', - ownerId: string | undefined = undefined, - feedType = 'public', - selectedTypes = { pack: true, trip: true }, -) => { - switch (feedType) { - case 'public': - return usePublicFeed(queryString, selectedTypes); - case 'userPacks': - return useUserPacks(ownerId || undefined, queryString); - case 'userTrips': - return useUserTrips(ownerId || undefined); - default: - return { data: null, error: null, isLoading: true }; - } -}; diff --git a/packages/app/hooks/itemrow/index.ts b/packages/app/hooks/itemrow/index.ts deleted file mode 100644 index 34ca2a141..000000000 --- a/packages/app/hooks/itemrow/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './useItemRow'; diff --git a/packages/app/hooks/navigation/useNavigationItem.ts b/packages/app/hooks/navigation/useNavigationItem.ts index 1979853bc..a28493426 100644 --- a/packages/app/hooks/navigation/useNavigationItem.ts +++ b/packages/app/hooks/navigation/useNavigationItem.ts @@ -1,6 +1,6 @@ import { useState } from 'react'; import { EvilIcons } from '@expo/vector-icons'; -import { useLogout } from '../../auth/hooks'; +import { useLogout } from 'app/modules/auth'; import { useNavigate } from './useNavigate'; export const useNavigationItem = (item, onSelect) => { diff --git a/packages/app/hooks/navigation/useNavigationList.ts b/packages/app/hooks/navigation/useNavigationList.ts index c98b06f94..3962bccdc 100644 --- a/packages/app/hooks/navigation/useNavigationList.ts +++ b/packages/app/hooks/navigation/useNavigationList.ts @@ -6,7 +6,7 @@ import { Entypo, Fontisto, } from '@expo/vector-icons'; -import { useAuthUser } from '../../auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; import { Platform } from 'react-native'; import { Separator } from 'tamagui'; diff --git a/packages/app/hooks/navigation/useTabItem.ts b/packages/app/hooks/navigation/useTabItem.ts index 71ea678f0..0bdea4a37 100644 --- a/packages/app/hooks/navigation/useTabItem.ts +++ b/packages/app/hooks/navigation/useTabItem.ts @@ -1,5 +1,5 @@ import { EvilIcons } from '@expo/vector-icons'; -import { useLogout } from 'app/auth/hooks'; +import { useLogout } from 'app/modules/auth'; import { useTab } from './useTab'; export const useTabItem = (item, onSelect) => { const logout = useLogout(); diff --git a/packages/app/hooks/navigation/useTabList.ts b/packages/app/hooks/navigation/useTabList.ts index 75b20a1b8..a3753df68 100644 --- a/packages/app/hooks/navigation/useTabList.ts +++ b/packages/app/hooks/navigation/useTabList.ts @@ -5,7 +5,7 @@ import { MaterialIcons, AntDesign, } from '@expo/vector-icons'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; export const useTabList = () => { const user = useAuthUser(); diff --git a/packages/app/hooks/packs/index.ts b/packages/app/hooks/packs/index.ts deleted file mode 100644 index efc5f1cc0..000000000 --- a/packages/app/hooks/packs/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -export * from './useAddNewPack'; -export * from './useUserPacks'; -export * from './useFetchSinglePack'; -export * from './useDeletePack'; -export * from './useEditPack'; -export * from './usePackId'; -export * from './useUserPackById'; diff --git a/packages/app/hooks/password-reset/useRequestEmailModal.ts b/packages/app/hooks/password-reset/useRequestEmailModal.ts index 8d8612f40..c066663c3 100644 --- a/packages/app/hooks/password-reset/useRequestEmailModal.ts +++ b/packages/app/hooks/password-reset/useRequestEmailModal.ts @@ -23,7 +23,7 @@ export const useRequestEmailModal = () => { closeModal(); InformUser({ title: 'Password reset email sent', - style: { backgroundColor: currentTheme.colors.textPrimary }, + style: { backgroundColor: currentTheme.colors.text }, placement: 'bottom', duration: 5000, }); diff --git a/packages/app/hooks/singletrips/useFetchSingleTrip.ts b/packages/app/hooks/singletrips/useFetchSingleTrip.ts index caf5c85f9..154e90042 100644 --- a/packages/app/hooks/singletrips/useFetchSingleTrip.ts +++ b/packages/app/hooks/singletrips/useFetchSingleTrip.ts @@ -1,5 +1,5 @@ import { queryTrpc } from '../../trpc'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; interface TripData { owner_id: string; diff --git a/packages/app/hooks/trips/useCreateTripForm.ts b/packages/app/hooks/trips/useCreateTripForm.ts index 066a7aa70..e1e2f0807 100644 --- a/packages/app/hooks/trips/useCreateTripForm.ts +++ b/packages/app/hooks/trips/useCreateTripForm.ts @@ -3,8 +3,8 @@ import { useValidateSchema } from 'app/hooks/common'; import { addTripDetails } from '@packrat/validations'; import { useEffect, useMemo } from 'react'; import { type addTripKey } from 'app/screens/trip/createTripStore/store'; -import { useAuthUser } from 'app/auth/hooks'; -import { usePackId } from 'app/hooks/packs'; +import { useAuthUser } from 'app/modules/auth'; +import { usePackId } from 'app/modules/pack'; import { formatCreateTripValuesForAPI } from 'app/utils/tripUtils'; export const useCreateTripForm = (currentDestination, photonDetails) => { diff --git a/packages/app/hooks/useEditItem.tsx b/packages/app/hooks/useEditItem.tsx deleted file mode 100644 index c84ca35d4..000000000 --- a/packages/app/hooks/useEditItem.tsx +++ /dev/null @@ -1,28 +0,0 @@ -// import fetcher from "../api/fetcher"; -// import { api } from "../constants/api"; -// import { useMutation } from "@tanstack/react-query"; -// import { queryClient } from "../constants/queryClient"; - -// const editItem = async (newItem) => { -// return await fetcher(`${api}/item/`, { -// method: "PUT", -// headers: { -// "Content-Type": "application/json", -// }, -// body: JSON.stringify(newItem), -// }); -// }; - -// export default function useEditItem() { -// const mutation = useMutation({ -// mutationFn: async (newItem) => { -// return editItem(newItem); -// }, -// onSuccess: () => { -// // Invalidate and refetch -// queryClient.invalidateQueries({ queryKey: ["items"] }); -// }, -// }); - -// return { editItem: mutation }; -// } diff --git a/packages/app/hooks/water/useWater.ts b/packages/app/hooks/water/useWater.ts index fef0b22f1..600bdae7d 100644 --- a/packages/app/hooks/water/useWater.ts +++ b/packages/app/hooks/water/useWater.ts @@ -1,6 +1,6 @@ import React, { useState } from 'react'; -import { ItemCategoryEnum } from 'app/constants/itemCategory'; -import { useAddPackItem } from 'app/hooks/packs/useAddPackItem'; +import { ItemCategoryEnum } from 'app/modules/item/constants'; +import { useAddPackItem } from 'app/modules/pack'; export const useWater = ({ currentPack, setWaterItem }) => { const [waterWeight, setWaterWeight] = useState(0); diff --git a/packages/app/auth/AuthLoader.tsx b/packages/app/modules/auth/components/AuthLoader.tsx similarity index 86% rename from packages/app/auth/AuthLoader.tsx rename to packages/app/modules/auth/components/AuthLoader.tsx index a486e066a..0a4b4ce67 100644 --- a/packages/app/auth/AuthLoader.tsx +++ b/packages/app/modules/auth/components/AuthLoader.tsx @@ -1,4 +1,4 @@ -import { useUserQuery } from './hooks'; +import { useUserQuery } from '../hooks'; export const AuthLoader = ({ children, diff --git a/packages/app/auth/AuthWrapper.tsx b/packages/app/modules/auth/components/AuthWrapper.tsx similarity index 95% rename from packages/app/auth/AuthWrapper.tsx rename to packages/app/modules/auth/components/AuthWrapper.tsx index ad2ee75a2..32db97c46 100644 --- a/packages/app/auth/AuthWrapper.tsx +++ b/packages/app/modules/auth/components/AuthWrapper.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { AuthLoader } from 'app/auth/AuthLoader'; +import { AuthLoader } from './AuthLoader'; import { Redirect } from 'app/components/Redirect'; import { RSpinner, RText } from '@packrat/ui'; import { Platform, View } from 'react-native'; diff --git a/packages/app/modules/auth/components/index.ts b/packages/app/modules/auth/components/index.ts new file mode 100644 index 000000000..5cb7ca405 --- /dev/null +++ b/packages/app/modules/auth/components/index.ts @@ -0,0 +1,2 @@ +export { AuthLoader } from './AuthLoader'; +export { AuthWrapper } from './AuthWrapper'; diff --git a/packages/app/auth/hooks/index.ts b/packages/app/modules/auth/hooks/index.ts similarity index 83% rename from packages/app/auth/hooks/index.ts rename to packages/app/modules/auth/hooks/index.ts index c3478c5d9..ba49ce700 100644 --- a/packages/app/auth/hooks/index.ts +++ b/packages/app/modules/auth/hooks/index.ts @@ -5,3 +5,4 @@ export { useGoogleAuth } from './useGoogleAuth'; export { useLogout } from './useLogout'; export { useUserSetter } from './useUserSetter'; export { usePasswordResetToken } from './usePasswordResetToken'; +export { useMatchesCurrentUser } from './useMatchesCurrentUser'; diff --git a/packages/app/auth/hooks/useBiometricSignIn.ts b/packages/app/modules/auth/hooks/useBiometricSignIn.ts similarity index 100% rename from packages/app/auth/hooks/useBiometricSignIn.ts rename to packages/app/modules/auth/hooks/useBiometricSignIn.ts diff --git a/packages/app/auth/hooks/useGoogleAuth.ts b/packages/app/modules/auth/hooks/useGoogleAuth.ts similarity index 100% rename from packages/app/auth/hooks/useGoogleAuth.ts rename to packages/app/modules/auth/hooks/useGoogleAuth.ts diff --git a/packages/app/auth/hooks/useLogin.ts b/packages/app/modules/auth/hooks/useLogin.ts similarity index 100% rename from packages/app/auth/hooks/useLogin.ts rename to packages/app/modules/auth/hooks/useLogin.ts diff --git a/packages/app/auth/hooks/useLogout.ts b/packages/app/modules/auth/hooks/useLogout.ts similarity index 100% rename from packages/app/auth/hooks/useLogout.ts rename to packages/app/modules/auth/hooks/useLogout.ts diff --git a/packages/app/hooks/useMatchesCurrentUser.ts b/packages/app/modules/auth/hooks/useMatchesCurrentUser.ts similarity index 85% rename from packages/app/hooks/useMatchesCurrentUser.ts rename to packages/app/modules/auth/hooks/useMatchesCurrentUser.ts index 238e47eea..fb6c3a3c2 100644 --- a/packages/app/hooks/useMatchesCurrentUser.ts +++ b/packages/app/modules/auth/hooks/useMatchesCurrentUser.ts @@ -1,5 +1,5 @@ // useMatchesCurrentUser.ts -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; export const useMatchesCurrentUser = (ownerId: string): boolean => { const currentUser = useAuthUser(); diff --git a/packages/app/auth/hooks/usePasswordResetToken.ts b/packages/app/modules/auth/hooks/usePasswordResetToken.ts similarity index 100% rename from packages/app/auth/hooks/usePasswordResetToken.ts rename to packages/app/modules/auth/hooks/usePasswordResetToken.ts diff --git a/packages/app/auth/hooks/useRegisterUser.ts b/packages/app/modules/auth/hooks/useRegisterUser.ts similarity index 100% rename from packages/app/auth/hooks/useRegisterUser.ts rename to packages/app/modules/auth/hooks/useRegisterUser.ts diff --git a/packages/app/auth/hooks/useSessionSignIn.ts b/packages/app/modules/auth/hooks/useSessionSignIn.ts similarity index 100% rename from packages/app/auth/hooks/useSessionSignIn.ts rename to packages/app/modules/auth/hooks/useSessionSignIn.ts diff --git a/packages/app/auth/hooks/useUser.ts b/packages/app/modules/auth/hooks/useUser.ts similarity index 100% rename from packages/app/auth/hooks/useUser.ts rename to packages/app/modules/auth/hooks/useUser.ts diff --git a/packages/app/auth/hooks/useUserSetter.ts b/packages/app/modules/auth/hooks/useUserSetter.ts similarity index 100% rename from packages/app/auth/hooks/useUserSetter.ts rename to packages/app/modules/auth/hooks/useUserSetter.ts diff --git a/packages/app/modules/auth/index.ts b/packages/app/modules/auth/index.ts new file mode 100644 index 000000000..2d912204b --- /dev/null +++ b/packages/app/modules/auth/index.ts @@ -0,0 +1,3 @@ +export { AuthLoader, AuthWrapper } from './components'; +export { RegisterScreen, LoginScreen } from './screens'; +export * from './hooks'; diff --git a/packages/app/modules/auth/screens/LoginScreen.tsx b/packages/app/modules/auth/screens/LoginScreen.tsx new file mode 100644 index 000000000..e7a23071a --- /dev/null +++ b/packages/app/modules/auth/screens/LoginScreen.tsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react'; +import useTheme from '../../../hooks/useTheme'; +import { useGoogleAuth, useLogin } from 'app/modules/auth'; +import { SignInScreen } from '@packrat/ui/src/Bento/forms/layouts'; + +const demoUser = { + email: 'zoot3@email.com', + password: '12345678', +}; + +export function LoginScreen() { + const { enableGoogleLogin, isGoogleSignInReady, promptAsync } = + useGoogleAuth(); + + function useSignIn() { + const [status, setStatus] = useState<'idle' | 'loading' | 'success'>( + 'idle', + ); + const { handleLogin } = useLogin(); + return { + signInStatus: status, + signIn: async (data) => { + await setStatus('loading'); + await handleLogin(data); + setStatus('idle'); + }, + }; + } + + const { signIn, signInStatus } = useSignIn(); + const { currentTheme } = useTheme(); + + return ( + + ); +} diff --git a/packages/app/screens/RegisterScreen.tsx b/packages/app/modules/auth/screens/RegisterScreen.tsx similarity index 90% rename from packages/app/screens/RegisterScreen.tsx rename to packages/app/modules/auth/screens/RegisterScreen.tsx index d14c05e42..1ae319f0a 100644 --- a/packages/app/screens/RegisterScreen.tsx +++ b/packages/app/modules/auth/screens/RegisterScreen.tsx @@ -1,11 +1,11 @@ import { View } from 'react-native'; import { RScrollView } from '@packrat/ui'; -import useTheme from '../hooks/useTheme'; -import { useRegisterUser, useGoogleAuth } from 'app/auth/hooks'; +import useTheme from 'app/hooks/useTheme'; +import { useRegisterUser, useGoogleAuth } from 'app/modules/auth'; import { SignUpScreen } from '@packrat/ui/src/Bento/forms/layouts'; import { useState } from 'react'; -export default function Register() { +export function RegisterScreen() { const { currentTheme } = useTheme(); const { promptAsync, isGoogleSignInReady } = useGoogleAuth(); diff --git a/packages/app/modules/auth/screens/index.ts b/packages/app/modules/auth/screens/index.ts new file mode 100644 index 000000000..97c64c01d --- /dev/null +++ b/packages/app/modules/auth/screens/index.ts @@ -0,0 +1,2 @@ +export { RegisterScreen } from './RegisterScreen'; +export { LoginScreen } from './LoginScreen'; diff --git a/packages/app/auth/ts/index.ts b/packages/app/modules/auth/ts/index.ts similarity index 100% rename from packages/app/auth/ts/index.ts rename to packages/app/modules/auth/ts/index.ts diff --git a/packages/app/auth/ts/interfaces.ts b/packages/app/modules/auth/ts/interfaces.ts similarity index 100% rename from packages/app/auth/ts/interfaces.ts rename to packages/app/modules/auth/ts/interfaces.ts diff --git a/packages/app/auth/ts/types.ts b/packages/app/modules/auth/ts/types.ts similarity index 100% rename from packages/app/auth/ts/types.ts rename to packages/app/modules/auth/ts/types.ts diff --git a/packages/app/modules/dashboard/components/HeroSection/HeroSection.tsx b/packages/app/modules/dashboard/components/HeroSection/HeroSection.tsx new file mode 100644 index 000000000..58429b859 --- /dev/null +++ b/packages/app/modules/dashboard/components/HeroSection/HeroSection.tsx @@ -0,0 +1,146 @@ +import React from 'react'; +import { RStack, RText as OriginalRText, RButton } from '@packrat/ui'; +import { MaterialCommunityIcons } from '@expo/vector-icons'; +import { Platform, View } from 'react-native'; +import useTheme from 'app/hooks/useTheme'; +import { useAuthUser } from 'app/modules/auth'; +import { useRouter } from 'app/hooks/router'; +import { first } from 'lodash'; +import useCustomStyles from 'app/hooks/useCustomStyles'; +import { PlacesAutocomplete } from 'app/components/PlacesAutocomplete/PlacesAutocomplete'; + +const RText: any = OriginalRText; + +interface HeroSectionProps { + onSelect?: (selectedResult: SearchResult) => void; + style?: any; +} + +interface SearchResult { + properties: { + osm_id: number; + osm_type: string; + name: string; + }; + geometry: { + coordinates: [number, number]; + }; +} + +export const HeroSection: React.FC = ({ onSelect }) => { + const { currentTheme } = useTheme(); + const styles = useCustomStyles(loadStyles); + const router = useRouter(); + + const handleSearchSelect = async (selectedResult: SearchResult) => { + try { + const { osm_id, osm_type, name } = selectedResult.properties; + + if (!osm_id || !osm_type) { + console.error( + 'No OSM ID or OSM type found in the selected search result', + ); + } else { + router.push({ + pathname: '/destination/query', + query: { + osmType: osm_type, + osmId: osm_id, + name, + }, + }); + } + } catch (error) { + console.error('error', error); + } + }; + + const user = useAuthUser(); + const firstNameOrUser = first(user?.name?.split(' ')) ?? 'User'; + const bannerText = + firstNameOrUser !== 'User' + ? `Let's find a new trail, ${firstNameOrUser}` + : "Let's find a new trail"; + + return ( + + + {bannerText} + {Platform.OS === 'web' ? ( + + + + ) : ( + { + router.push('/search'); + }} + > + + + Search by park, city, or trail + + + )} + + + ); +}; + +const loadStyles = (theme: any) => { + const { currentTheme } = theme; + return { + banner: { + width: '100%', + padding: 20, + backgroundColor: currentTheme.colors.background, + alignItems: 'center', + justifyContent: 'center', + position: 'relative', + zIndex: 1, + }, + stack: { + width: '100%', + alignItems: 'flex-start', // Align items to the start (left) + }, + title: { + fontSize: 24, + fontWeight: 'bold', + marginBottom: 20, + color: currentTheme.colors.tertiaryBlue, + textAlign: 'left', // Align text to the left + width: '100%', // Ensure it takes full width for left alignment + }, + searchContainer: { + width: '100%', + alignItems: 'flex-start', + }, + searchBar: { + width: '100%', + padding: 10, + borderRadius: 5, + backgroundColor: currentTheme.colors.inputBackground, + color: currentTheme.colors.text, + borderWidth: 0, + elevation: 0, + shadowOpacity: 0, + }, + searchButton: { + backgroundColor: currentTheme.colors.border, + minWidth: '100%', + flexDirection: 'row', + alignItems: 'center', + padding: 10, + borderRadius: 5, + }, + }; +}; diff --git a/packages/app/modules/dashboard/components/HeroSection/index.ts b/packages/app/modules/dashboard/components/HeroSection/index.ts new file mode 100644 index 000000000..0fba2be0b --- /dev/null +++ b/packages/app/modules/dashboard/components/HeroSection/index.ts @@ -0,0 +1 @@ +export * from './HeroSection'; diff --git a/packages/app/modules/dashboard/components/QuickActionButton/QuickActionButton.tsx b/packages/app/modules/dashboard/components/QuickActionButton/QuickActionButton.tsx new file mode 100644 index 000000000..42956dc1a --- /dev/null +++ b/packages/app/modules/dashboard/components/QuickActionButton/QuickActionButton.tsx @@ -0,0 +1,48 @@ +import React from 'react'; +import { TouchableOpacity, Text } from 'react-native'; +import { MaterialIcons } from '@expo/vector-icons'; +import useCustomStyles from 'app/hooks/useCustomStyles'; + +interface QuickActionButtonProps { + onPress: () => void; + iconName: keyof typeof MaterialIcons.glyphMap; + text: string; +} + +export const QuickActionButton = ({ + onPress, + iconName, + text, +}: QuickActionButtonProps) => { + const styles = useCustomStyles(loadStyles); + return ( + + + {text} + + ); +}; + +const loadStyles = (theme: any) => { + const { currentTheme } = theme; + return { + button: { + flexDirection: 'row', + alignItems: 'center', + paddingHorizontal: 15, + paddingVertical: 10, + backgroundColor: currentTheme.colors.border, + borderRadius: 5, + margin: 5, + }, + icon: { + marginRight: 10, + color: currentTheme.colors.text, + }, + text: { + fontSize: 13, + fontWeight: 'bold', + color: currentTheme.colors.text, + }, + }; +}; diff --git a/packages/app/modules/dashboard/components/QuickActionButton/index.ts b/packages/app/modules/dashboard/components/QuickActionButton/index.ts new file mode 100644 index 000000000..b5bbdd6e4 --- /dev/null +++ b/packages/app/modules/dashboard/components/QuickActionButton/index.ts @@ -0,0 +1 @@ +export * from './QuickActionButton'; diff --git a/packages/app/components/dashboard/QuickActionSection.tsx b/packages/app/modules/dashboard/components/QuickActionSection/QuickActionSection.tsx similarity index 53% rename from packages/app/components/dashboard/QuickActionSection.tsx rename to packages/app/modules/dashboard/components/QuickActionSection/QuickActionSection.tsx index d3cee4b49..0cc11920b 100644 --- a/packages/app/components/dashboard/QuickActionSection.tsx +++ b/packages/app/modules/dashboard/components/QuickActionSection/QuickActionSection.tsx @@ -1,9 +1,10 @@ +import React from 'react'; import { RStack } from '@packrat/ui'; -import QuickActionButton from './QuickActionButton'; +import { QuickActionButton } from '../QuickActionButton'; import useCustomStyles from 'app/hooks/useCustomStyles'; -import { useQuickActions } from 'app/hooks/dashboard'; +import { useQuickActions } from 'app/modules/dashboard'; -const QuickActionsSection = () => { +export const QuickActionsSection = () => { const styles = useCustomStyles(loadStyles); const { handleActionSelect, quickActionData } = useQuickActions(); @@ -12,9 +13,7 @@ const QuickActionsSection = () => { {quickActionData.map((action) => ( { - handleActionSelect(action.action); - }} + onPress={() => handleActionSelect(action.action)} iconName={action.iconName} text={action.text} /> @@ -23,22 +22,12 @@ const QuickActionsSection = () => { ); }; -const loadStyles = (theme) => { +const loadStyles = (theme: any) => { const { currentTheme } = theme; return { section: { - marginBottom: 20, - paddingHorizontal: 20, display: 'flex', justifyContent: 'center', }, - card: { - justifyContent: 'center', - alignItems: 'center', - paddingHorizontal: 10, - paddingVertical: 20, - backgroundColor: currentTheme.colors.secondaryBlue, - }, }; }; -export default QuickActionsSection; diff --git a/packages/app/modules/dashboard/components/QuickActionSection/index.ts b/packages/app/modules/dashboard/components/QuickActionSection/index.ts new file mode 100644 index 000000000..1c1bf9d3d --- /dev/null +++ b/packages/app/modules/dashboard/components/QuickActionSection/index.ts @@ -0,0 +1 @@ +export * from './QuickActionSection'; diff --git a/packages/app/components/dashboard/Section.tsx b/packages/app/modules/dashboard/components/Section/Section.tsx similarity index 84% rename from packages/app/components/dashboard/Section.tsx rename to packages/app/modules/dashboard/components/Section/Section.tsx index 228a4eaff..b4010e113 100644 --- a/packages/app/components/dashboard/Section.tsx +++ b/packages/app/modules/dashboard/components/Section/Section.tsx @@ -8,7 +8,7 @@ interface SectionProps { children: React.ReactNode; onPress?: (event: GestureResponderEvent) => void; } -const Section: React.FC = ({ children, onPress }) => { +export const Section: React.FC = ({ children, onPress }) => { const styles = useCustomStyles(loadStyles); return ( @@ -30,8 +30,7 @@ const loadStyles = (theme: any) => { alignItems: 'center', width: '100%', borderRadius: 8, - backgroundColor: currentTheme.colors.secondaryBlue, + backgroundColor: currentTheme.colors.background, }, }; }; -export default Section; diff --git a/packages/app/modules/dashboard/components/Section/index.ts b/packages/app/modules/dashboard/components/Section/index.ts new file mode 100644 index 000000000..b524e0f3c --- /dev/null +++ b/packages/app/modules/dashboard/components/Section/index.ts @@ -0,0 +1 @@ +export * from './Section'; diff --git a/packages/app/modules/dashboard/components/SectionHeader/SectionHeader.tsx b/packages/app/modules/dashboard/components/SectionHeader/SectionHeader.tsx new file mode 100644 index 000000000..f61bdfbee --- /dev/null +++ b/packages/app/modules/dashboard/components/SectionHeader/SectionHeader.tsx @@ -0,0 +1,57 @@ +import React from 'react'; +import { RText, RStack, RButton } from '@packrat/ui'; +import { type Ionicons } from '@expo/vector-icons'; +import { useNavigate } from 'app/hooks/navigation'; +import { theme } from 'app/theme'; +import useCustomStyles from 'app/hooks/useCustomStyles'; + +interface SectionHeaderProps { + iconName: keyof typeof Ionicons.glyphMap; + text: string; + textStyle: any; +} + +export const SectionHeader = ({ + iconName, + text, + textStyle, +}: SectionHeaderProps) => { + const styles = useCustomStyles(loadStyles); + const navigate = useNavigate(); + + return ( + + {text} + navigate('/feed')}> + 0 View all feeds + + + ); +}; + +const loadStyles = (theme: any) => { + const { currentTheme } = theme; + return { + rStack: { + marginBottom: 10, + justifyContent: 'space-between', + alignItems: 'center', + flexDirection: 'row', + width: '100%', + }, + text: { + color: currentTheme.colors.tertiaryBlue, + fontSize: 25, + fontWeight: 'bold', + }, + icon: { + fontSize: 40, + margin: 10, + color: currentTheme.colors.iconColor, + }, + rbutton: { + backgroundColor: currentTheme.colors.background, + color: currentTheme.colors.text, + }, + }; +}; diff --git a/packages/app/modules/dashboard/components/SectionHeader/index.ts b/packages/app/modules/dashboard/components/SectionHeader/index.ts new file mode 100644 index 000000000..42bdfe9ea --- /dev/null +++ b/packages/app/modules/dashboard/components/SectionHeader/index.ts @@ -0,0 +1 @@ +export * from './SectionHeader'; diff --git a/packages/app/modules/dashboard/components/index.ts b/packages/app/modules/dashboard/components/index.ts new file mode 100644 index 000000000..0762a4d5b --- /dev/null +++ b/packages/app/modules/dashboard/components/index.ts @@ -0,0 +1,4 @@ +export * from './HeroSection'; +export * from './Section'; +export * from './SectionHeader'; +export * from './QuickActionSection'; diff --git a/packages/app/hooks/dashboard/index.ts b/packages/app/modules/dashboard/hooks/index.ts similarity index 100% rename from packages/app/hooks/dashboard/index.ts rename to packages/app/modules/dashboard/hooks/index.ts diff --git a/packages/app/hooks/dashboard/useQuickActions.ts b/packages/app/modules/dashboard/hooks/useQuickActions.ts similarity index 100% rename from packages/app/hooks/dashboard/useQuickActions.ts rename to packages/app/modules/dashboard/hooks/useQuickActions.ts diff --git a/packages/app/modules/dashboard/index.ts b/packages/app/modules/dashboard/index.ts new file mode 100644 index 000000000..44ec748f5 --- /dev/null +++ b/packages/app/modules/dashboard/index.ts @@ -0,0 +1,3 @@ +export * from './screens'; +export { QuickActionsSection } from './components'; +export { useQuickActions } from './hooks'; diff --git a/packages/app/screens/dashboard/index.tsx b/packages/app/modules/dashboard/screens/DashboardScreen/DashboardScreen.tsx similarity index 57% rename from packages/app/screens/dashboard/index.tsx rename to packages/app/modules/dashboard/screens/DashboardScreen/DashboardScreen.tsx index 13b560ed4..a3a925752 100644 --- a/packages/app/screens/dashboard/index.tsx +++ b/packages/app/modules/dashboard/screens/DashboardScreen/DashboardScreen.tsx @@ -1,17 +1,15 @@ import React from 'react'; import { Platform, View } from 'react-native'; import { RStack, RScrollView } from '@packrat/ui'; -import HeroBanner from '../../components/dashboard/HeroBanner'; -import QuickActionsSection from '../../components/dashboard/QuickActionSection'; -import FeedPreview from '../../components/dashboard/FeedPreview'; -import Section from '../../components/dashboard/Section'; -import SectionHeader from '../../components/dashboard/SectionHeader'; +import { HeroSection, Section, SectionHeader } from '../../components'; import useCustomStyles from 'app/hooks/useCustomStyles'; import Layout from 'app/components/layout/Layout'; import { SCREEN_WIDTH } from 'app/constants/breakpoint'; import { useScreenWidth } from 'app/hooks/common'; +import FAB from 'app/components/Fab/Fab'; +import { FeedPreview } from 'app/modules/feed'; -const Dashboard = () => { +export const DashboardScreen = () => { const styles = useCustomStyles(loadStyles); return ( @@ -23,20 +21,20 @@ const Dashboard = () => { Platform.OS === 'web' ? { minHeight: '100vh' } : null, ]} > - - + + {Platform.OS === 'web' ? : null} -
- - -
-
- - -
+ + +
+ + +
+
@@ -47,6 +45,7 @@ const Dashboard = () => { const loadStyles = (theme) => { const { currentTheme } = theme; const { screenWidth } = useScreenWidth(); + return { container: { backgroundColor: currentTheme.colors.background, @@ -65,13 +64,20 @@ const loadStyles = (theme) => { : '90vw' : '100%', }, - cardContainer: { - flexDirection: 'column', - justifyContent: 'space-between', - marginBottom: 20, + heroBanner: { width: '100%', }, + gridContainer: { + flexDirection: 'row', + flexWrap: 'wrap', + justifyContent: 'space-between', + }, + gridItem: { + flexBasis: '100%', + backgroundColor: currentTheme.colors.background, + }, + sectionHeaderText: { + color: currentTheme.colors.text, + }, }; }; - -export default Dashboard; diff --git a/packages/app/modules/dashboard/screens/DashboardScreen/index.ts b/packages/app/modules/dashboard/screens/DashboardScreen/index.ts new file mode 100644 index 000000000..50f3263be --- /dev/null +++ b/packages/app/modules/dashboard/screens/DashboardScreen/index.ts @@ -0,0 +1 @@ +export * from './DashboardScreen'; diff --git a/packages/app/modules/dashboard/screens/index.tsx b/packages/app/modules/dashboard/screens/index.tsx new file mode 100644 index 000000000..50f3263be --- /dev/null +++ b/packages/app/modules/dashboard/screens/index.tsx @@ -0,0 +1 @@ +export * from './DashboardScreen'; diff --git a/packages/app/modules/feed/components/FeedCard.tsx b/packages/app/modules/feed/components/FeedCard.tsx new file mode 100644 index 000000000..93c4426aa --- /dev/null +++ b/packages/app/modules/feed/components/FeedCard.tsx @@ -0,0 +1,248 @@ +import { AntDesign } from '@expo/vector-icons'; +import { formatDistanceToNow } from 'date-fns'; +import { MaterialIcons, Entypo } from '@expo/vector-icons'; +import useTheme from 'app/hooks/useTheme'; +import { TouchableOpacity } from 'react-native'; +import { DuplicateIcon } from 'app/assets/icons'; +import { truncateString } from 'app/utils/truncateString'; +import { RLink, RText as OriginalRText, ContextMenu } from '@packrat/ui'; +import { formatNumber } from 'app/utils/formatNumber'; +import { useAddFavorite } from 'app/hooks/favorites'; +import { useAuthUser } from 'app/modules/auth'; +import { useRouter } from 'app/hooks/router'; +import { useItemWeightUnit } from 'app/modules/item'; +import { convertWeight } from 'app/utils/convertWeight'; +import Layout from 'app/components/layout/Layout'; +import { Button, Card, H2, Paragraph, XStack, YStack } from 'tamagui'; + +const RText: any = OriginalRText; + +interface CardProps { + type: string; + id: string; + owner: { + id: string; + username: string; + }; + name: string; + total_weight: number; + is_public: boolean; + favorited_by: Array<{ + id: string; + }>; + favorites_count: number; + owner_id: string | { id: string }; + destination: string; + createdAt: string; + owners: Array<{ any: any }>; + duration: string; + itemPacks?: any[]; +} + +interface User { + id: string; +} + +export function FeedCard({ + type, + id, + owner, + name, + total_weight, + is_public, + favorited_by, + favorites_count, + owner_id, + destination, + createdAt, + owners, + duration, + itemPacks, +}: CardProps) { + console.log('CardProps:', favorited_by); + const user = useAuthUser(); + const { currentTheme } = useTheme(); + + const { addFavorite } = useAddFavorite(); + const [weightUnit] = useItemWeightUnit(); + + const router = useRouter(); + + const isFavorite = + type !== 'trip' && + favorited_by?.some((obj) => obj?.['userId'] === user?.id && user?.id); + + const handleAddToFavorite = () => { + if (!user) return; + const data = { + packId: id, + userId: user.id, + }; + addFavorite(data); + }; + + const truncatedName = truncateString(name, 25); + const truncatedDestination = truncateString(destination, 25); + const formattedWeight = convertWeight(total_weight, 'g', weightUnit); + const quantity = + itemPacks?.reduce( + (accumulator, currentValue) => accumulator + currentValue?.item?.quantity, + 0, + ) ?? 0; + let numberOfNights; + + if (duration) numberOfNights = JSON.parse(duration).numberOfNights; + + return ( + + + + + + + +

+ + + {truncatedName} + + +

+ + {type === 'pack' && ( + + + + + )} + {type === 'trip' && ( + + )} + +
+ {type === 'pack' && ( + <> + + Total Weight: {formatNumber(formattedWeight)} {weightUnit} + + + Total Quantity: {quantity} + + + )} + {type === 'trip' && ( + {truncatedDestination} + )} + + + + + + + View{' '} + {owner?.username ? '@' + owner?.username : 'Owner'} + + + + {formatDistanceToNow(new Date(createdAt), { + addSuffix: true, + })} + + + {type === 'pack' && ( + + + + + + {favorites_count} + + + )} + {type === 'trip' && ( + + + Nights + + + {numberOfNights} + + + )} + + + +
+
+ + { + router.push(type === 'pack' ? '/pack/' + id : '/trip/' + id); + }} + > + View {type} + + { + router.push(`/profile/${owner_id}`); + }} + > + View Owner + + +
+
+
+
+ ); +} diff --git a/packages/app/components/feed/FeedSearchFilter.tsx b/packages/app/modules/feed/components/FeedSearchFilter.tsx similarity index 92% rename from packages/app/components/feed/FeedSearchFilter.tsx rename to packages/app/modules/feed/components/FeedSearchFilter.tsx index 66ba706ed..555d337c0 100644 --- a/packages/app/components/feed/FeedSearchFilter.tsx +++ b/packages/app/modules/feed/components/FeedSearchFilter.tsx @@ -1,23 +1,17 @@ import React, { useRef, useContext, useEffect, useState } from 'react'; -import useTheme from '../../hooks/useTheme'; +import useTheme from 'app/hooks/useTheme'; import useCustomStyles from 'app/hooks/useCustomStyles'; -import { Switch } from 'tamagui'; import { View } from 'react-native'; -import { SearchContext } from './SearchProvider'; import { - RIconButton, - RSwitch, RText as OriginalRText, RStack as OriginalRStack, RSeparator as OriginalRSeparator, RButton, Form, - FormInput, InputWithIcon, DropdownComponent, } from '@packrat/ui'; import { Search, X } from '@tamagui/lucide-icons'; -import Layout from 'app/components/layout/Layout'; const RStack: any = OriginalRStack; const RText: any = OriginalRText; const RSeparator: any = OriginalRSeparator; @@ -46,7 +40,7 @@ interface FeedSearchFilterProps { onChange?: (value: string) => void; } -const FeedSearchFilter = ({ +export const FeedSearchFilter = ({ feedType, isSortHidden, handleSortChange, @@ -133,14 +127,14 @@ const FeedSearchFilter = ({ Discover Other Users' Public Packs {/* Packs @@ -156,7 +150,7 @@ const FeedSearchFilter = ({ Trips @@ -184,7 +178,7 @@ const FeedSearchFilter = ({ Sort By: @@ -253,5 +247,3 @@ const loadStyles = (theme: any) => { }, }; }; - -export default FeedSearchFilter; diff --git a/packages/app/components/feed/SearchProvider.tsx b/packages/app/modules/feed/components/SearchProvider.tsx similarity index 93% rename from packages/app/components/feed/SearchProvider.tsx rename to packages/app/modules/feed/components/SearchProvider.tsx index 2bc88e45f..e654d80b7 100644 --- a/packages/app/components/feed/SearchProvider.tsx +++ b/packages/app/modules/feed/components/SearchProvider.tsx @@ -23,4 +23,4 @@ const SearchProvider: React.FC = ({ children }) => { ); }; -export { SearchContext, SearchProvider }; \ No newline at end of file +export { SearchContext, SearchProvider }; diff --git a/packages/app/modules/feed/components/index.ts b/packages/app/modules/feed/components/index.ts new file mode 100644 index 000000000..f2a5b6056 --- /dev/null +++ b/packages/app/modules/feed/components/index.ts @@ -0,0 +1,3 @@ +export { FeedCard } from './FeedCard'; +export { FeedSearchFilter } from './FeedSearchFilter'; +export { SearchProvider, SearchContext } from './SearchProvider'; diff --git a/packages/app/modules/feed/hooks/index.ts b/packages/app/modules/feed/hooks/index.ts new file mode 100644 index 000000000..a1ff51b2d --- /dev/null +++ b/packages/app/modules/feed/hooks/index.ts @@ -0,0 +1 @@ +export { useFeed } from './useFeed'; diff --git a/packages/app/modules/feed/hooks/useFeed.ts b/packages/app/modules/feed/hooks/useFeed.ts new file mode 100644 index 000000000..2f84a08e6 --- /dev/null +++ b/packages/app/modules/feed/hooks/useFeed.ts @@ -0,0 +1,33 @@ +import { usePublicFeed } from './usePublicFeed'; +import { useUserPacks, useSimilarPacks } from 'app/modules/pack'; +import { useUserTrips } from 'app/modules/trip'; +import { useSimilarItems } from 'app/modules/item'; + +export const useFeed = ({ + queryString = 'Most Recent', + ownerId, + feedType = 'public', + selectedTypes = { pack: true, trip: true }, + id, +}: Partial<{ + queryString: string; + ownerId: string; + feedType: string; + selectedTypes: Object; + id: string; +}> = {}) => { + switch (feedType) { + case 'public': + return usePublicFeed(queryString, selectedTypes); + case 'userPacks': + return useUserPacks(ownerId || undefined, queryString); + case 'userTrips': + return useUserTrips(ownerId || undefined); + case 'similarPacks': + return useSimilarPacks(id); + case 'similarItems': + return useSimilarItems(id); + default: + return { data: null, error: null, isLoading: true }; + } +}; diff --git a/packages/app/hooks/feed/publicFeed.ts b/packages/app/modules/feed/hooks/usePublicFeed.ts similarity index 97% rename from packages/app/hooks/feed/publicFeed.ts rename to packages/app/modules/feed/hooks/usePublicFeed.ts index ad25ec0bd..32fcbe4ce 100644 --- a/packages/app/hooks/feed/publicFeed.ts +++ b/packages/app/modules/feed/hooks/usePublicFeed.ts @@ -1,4 +1,4 @@ -import { queryTrpc } from '../../trpc'; +import { queryTrpc } from 'app/trpc'; type DataType = { type: string; diff --git a/packages/app/modules/feed/index.ts b/packages/app/modules/feed/index.ts new file mode 100644 index 000000000..94d9e2c14 --- /dev/null +++ b/packages/app/modules/feed/index.ts @@ -0,0 +1,4 @@ +export * from './widgets'; +export * from './screens'; +export { useFeed } from './hooks'; +export { SearchProvider, FeedSearchFilter, FeedCard } from './components'; diff --git a/packages/app/screens/feed/Feed.tsx b/packages/app/modules/feed/screens/FeedScreen.tsx similarity index 68% rename from packages/app/screens/feed/Feed.tsx rename to packages/app/modules/feed/screens/FeedScreen.tsx index 3e7657dbc..db33bb99b 100644 --- a/packages/app/screens/feed/Feed.tsx +++ b/packages/app/modules/feed/screens/FeedScreen.tsx @@ -1,16 +1,14 @@ import React, { useMemo, useState } from 'react'; import { FlatList, View, Platform } from 'react-native'; -import Card from '../../components/feed/FeedCard'; +import { FeedCard, FeedSearchFilter, SearchProvider } from '../components'; import { useRouter } from 'app/hooks/router'; -import { fuseSearch } from '../../utils/fuseSearch'; +import { fuseSearch } from 'app/utils/fuseSearch'; import useCustomStyles from 'app/hooks/useCustomStyles'; -import FeedSearchFilter from 'app/components/feed/FeedSearchFilter'; -import { useFeed } from 'app/hooks/feed'; +import { useFeed } from 'app/modules/feed'; import { RefreshControl } from 'react-native'; import { RText } from '@packrat/ui'; -import { useAuthUser } from 'app/auth/hooks'; -import { disableScreen } from '../../hoc/disableScreen'; -import { SearchProvider } from 'app/components/feed/SearchProvider'; +import { useAuthUser } from 'app/modules/auth'; +import { disableScreen } from 'app/hoc/disableScreen'; const URL_PATHS = { userPacks: '/pack/', @@ -63,12 +61,12 @@ const Feed = ({ feedType = 'public' }: FeedProps) => { const ownerId = user?.id; const styles = useCustomStyles(loadStyles); - const { data, error, isLoading, refetch } = useFeed( + const { data, error, isLoading, refetch } = useFeed({ queryString, ownerId, feedType, selectedTypes, - ) as UseFeedResult; + }) as UseFeedResult; const onRefresh = () => { setRefreshing(true); @@ -104,46 +102,6 @@ const Feed = ({ feedType = 'public' }: FeedProps) => { * * @return {ReactNode} The rendered feed data. */ - const renderData = () => { - return ( - - - item?.id + item?.type} - renderItem={({ item }) => ( - - )} - ListFooterComponent={() => } - ListEmptyComponent={() => ( - - {ERROR_MESSAGES[feedType]} - - )} - showsVerticalScrollIndicator={false} - refreshControl={ - - } - maxToRenderPerBatch={2} - /> - - ); - }; const handleTogglePack = () => { setSelectedTypes((prevState) => ({ @@ -174,7 +132,46 @@ const Feed = ({ feedType = 'public' }: FeedProps) => { return ( - {renderData()} + + + + item?.id + item?.type} + renderItem={({ item }) => ( + + )} + ListFooterComponent={() => } + ListEmptyComponent={() => ( + + {ERROR_MESSAGES[feedType]} + + )} + showsVerticalScrollIndicator={false} + refreshControl={ + + } + maxToRenderPerBatch={2} + /> + + ); }; diff --git a/packages/app/modules/feed/screens/index.ts b/packages/app/modules/feed/screens/index.ts new file mode 100644 index 000000000..d4b2d4610 --- /dev/null +++ b/packages/app/modules/feed/screens/index.ts @@ -0,0 +1 @@ +export { default as FeedScreen } from './FeedScreen'; diff --git a/packages/app/modules/feed/widgets/FeedPreview/FeedPreview.tsx b/packages/app/modules/feed/widgets/FeedPreview/FeedPreview.tsx new file mode 100644 index 000000000..33bf44dd2 --- /dev/null +++ b/packages/app/modules/feed/widgets/FeedPreview/FeedPreview.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import Carousel from 'app/components/carousel'; +import { useFeed } from '../../hooks'; +import { default as FeedPreviewCard, type FeedItem } from './FeedPreviewCard'; +import Loader from 'app/components/Loader'; + +interface FeedPreviewScrollProps { + itemWidth: number; + feedType: string; + id?: string; +} + +const FeedPreviewScroll: React.FC = ({ + itemWidth, + feedType, + id, +}) => { + const { data: feedData, isLoading } = useFeed({ feedType, id }); + + return isLoading ? ( + + ) : ( + + {feedData + ?.filter((item): item is FeedItem => item.type !== null) + .map((item: FeedItem) => { + const linkStr = `/${item.type}/${item.id}`; + return linkStr ? ( + + ) : null; + })} + + ); +}; + +export const FeedPreview: React.FC<{ feedType: string; id?: string }> = ({ + feedType, + id, +}) => { + return ; +}; diff --git a/packages/app/modules/feed/widgets/FeedPreview/FeedPreviewCard.tsx b/packages/app/modules/feed/widgets/FeedPreview/FeedPreviewCard.tsx new file mode 100644 index 000000000..0453036d8 --- /dev/null +++ b/packages/app/modules/feed/widgets/FeedPreview/FeedPreviewCard.tsx @@ -0,0 +1,240 @@ +/* eslint-disable react/prop-types */ +/* eslint-disable react/react-in-jsx-scope */ +import { useState } from 'react'; +import { RText as OriginalRText, RStack } from '@packrat/ui'; +import { RLink } from '@packrat/ui'; +import { type LayoutChangeEvent, View } from 'react-native'; +import useCustomStyles from 'app/hooks/useCustomStyles'; +import loadStyles from './feedpreview.style'; +import { AntDesign, Fontisto, MaterialIcons } from '@expo/vector-icons'; +import useTheme from 'app/hooks/useTheme'; +import { useItemWeightUnit } from 'app/modules/item'; +import { convertWeight } from 'app/utils/convertWeight'; +import { formatNumber } from 'app/utils/formatNumber'; +import { hexToRGBA } from 'app/utils/colorFunctions'; + +// TODO FeedItem is one of: trip, pack, similar pack & item +export type FeedItem = any; + +interface FeedPreviewCardProps { + linkStr: string; + item: FeedItem; + feedType: string; +} + +const RText: any = OriginalRText; + +const FeedPreviewCard: React.FC = ({ + linkStr, + item, + feedType, +}) => { + const { currentTheme } = useTheme(); + const styles = useCustomStyles(loadStyles); + const [weightUnit] = useItemWeightUnit(); + const formattedWeight = convertWeight( + item.total_weight ?? item.weight, + item.unit ?? 'g', + weightUnit, + ); + const [cardWidth, setCardWidth] = useState(); + + const handleSetCardWidth = (event: LayoutChangeEvent) => { + const { width } = event.nativeEvent.layout; + setCardWidth(width); + }; + + if (feedType == 'similarItems') { + return ( + + + + + + + + + {item.name} + + + + {formatNumber(formattedWeight)} + {weightUnit} + + + + Qty: {item.quantity} + + + + + {new Date(item.createdAt).toLocaleString('en-US', { + month: 'short', + day: '2-digit', + ...(new Date(item.createdAt).getFullYear() == + new Date().getFullYear() + ? {} + : { year: 'numeric' }), + })} + + + + + + ); + } + + return ( + + + + + + + + + + {item.name} + + + + {formatNumber(formattedWeight)} + {weightUnit} + + + + + {item.favorites_count} + + + + + + {new Date(item.createdAt).toLocaleString('en-US', { + month: 'short', + day: '2-digit', + ...(new Date(item.createdAt).getFullYear() == + new Date().getFullYear() + ? {} + : { year: 'numeric' }), + })} + + + + Ttl Score: {item.total_score} + + + + + + ); +}; + +export default FeedPreviewCard; diff --git a/packages/app/modules/feed/widgets/FeedPreview/feedpreview.style.tsx b/packages/app/modules/feed/widgets/FeedPreview/feedpreview.style.tsx new file mode 100644 index 000000000..0ba151781 --- /dev/null +++ b/packages/app/modules/feed/widgets/FeedPreview/feedpreview.style.tsx @@ -0,0 +1,20 @@ +const loadStyles = (theme: any, appTheme: any) => { + const { currentTheme } = theme; + return { + cardStyles: { + height: 200, + width: '100%', + backgroundColor: currentTheme.colors.card, + borderRadius: 5, + padding: 20, + }, + feedItemTitle: { + fontWeight: 'bold', + fontSize: 20, + color: currentTheme.colors.text, + marginBottom: 5, + }, + }; +}; + +export default loadStyles; diff --git a/packages/app/modules/feed/widgets/FeedPreview/index.tsx b/packages/app/modules/feed/widgets/FeedPreview/index.tsx new file mode 100644 index 000000000..d701a9c32 --- /dev/null +++ b/packages/app/modules/feed/widgets/FeedPreview/index.tsx @@ -0,0 +1 @@ +export { FeedPreview } from './FeedPreview'; diff --git a/packages/app/modules/feed/widgets/index.ts b/packages/app/modules/feed/widgets/index.ts new file mode 100644 index 000000000..18232cfa4 --- /dev/null +++ b/packages/app/modules/feed/widgets/index.ts @@ -0,0 +1 @@ +export * from './FeedPreview'; diff --git a/packages/app/components/item/AddItem.tsx b/packages/app/modules/item/components/AddItem.tsx similarity index 91% rename from packages/app/components/item/AddItem.tsx rename to packages/app/modules/item/components/AddItem.tsx index dd7e14e6f..f69489b8a 100644 --- a/packages/app/components/item/AddItem.tsx +++ b/packages/app/modules/item/components/AddItem.tsx @@ -1,15 +1,13 @@ import { View } from 'react-native'; import { ItemForm } from './ItemForm'; // assuming you moved the form related code to a separate component -import { useAddPackItem } from 'app/hooks/packs/useAddPackItem'; -import { useEditPackItem } from 'app/hooks/packs/useEditPackItem'; -// import { usePackId } from 'app/hooks/packs/usePackId'; +import { useAddPackItem, useEditPackItem } from 'app/modules/pack'; import { addItem as addItemSchema, editItem as editItemSchema, type Item, } from '@packrat/validations'; import { useMemo } from 'react'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; interface AddItemProps { id?: string; diff --git a/packages/app/components/item/AddItemGlobal.tsx b/packages/app/modules/item/components/AddItemGlobal.tsx similarity index 90% rename from packages/app/components/item/AddItemGlobal.tsx rename to packages/app/modules/item/components/AddItemGlobal.tsx index 3d65dc1ad..195775ed8 100644 --- a/packages/app/components/item/AddItemGlobal.tsx +++ b/packages/app/modules/item/components/AddItemGlobal.tsx @@ -2,13 +2,13 @@ import { View } from 'react-native'; import { ItemForm } from './ItemForm'; // assuming you moved the form related code to a separate component import { useModal } from '@packrat/ui'; -import { useAddItem, useItems } from 'app/hooks/items'; +import { useAddItem, useItems } from '../hooks'; import { usePagination } from 'app/hooks/common'; import { addItemGlobal as addItemSchema, type Item, } from '@packrat/validations'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; export const AddItemGlobal = () => { const { limit, page } = usePagination(); diff --git a/packages/app/components/pack/AddItemModal.tsx b/packages/app/modules/item/components/AddItemModal.tsx similarity index 96% rename from packages/app/components/pack/AddItemModal.tsx rename to packages/app/modules/item/components/AddItemModal.tsx index c0fb46bfc..158f3a953 100644 --- a/packages/app/components/pack/AddItemModal.tsx +++ b/packages/app/modules/item/components/AddItemModal.tsx @@ -1,4 +1,4 @@ -import { AddItem } from '../item/AddItem'; +import { AddItem } from './AddItem'; import useTheme from 'app/hooks/useTheme'; import { BaseModal } from '@packrat/ui'; diff --git a/packages/app/components/item/ImportForm.tsx b/packages/app/modules/item/components/ImportForm.tsx similarity index 94% rename from packages/app/components/item/ImportForm.tsx rename to packages/app/modules/item/components/ImportForm.tsx index 745a2c742..492c90590 100644 --- a/packages/app/components/item/ImportForm.tsx +++ b/packages/app/modules/item/components/ImportForm.tsx @@ -1,10 +1,10 @@ import React, { useState, FC } from 'react'; import { View, Platform } from 'react-native'; import { DropdownComponent, RButton, RText } from '@packrat/ui'; -import useTheme from '../../hooks/useTheme'; +import useTheme from 'app/hooks/useTheme'; import * as DocumentPicker from 'expo-document-picker'; -import { useImportPackItem } from 'app/hooks/packs/useImportPackItem'; -import { useImportItem } from 'app/hooks/items/useImportItem'; +import { useImportPackItem } from 'app/modules/pack'; +import { useImportItem } from '../hooks'; import useResponsive from 'app/hooks/useResponsive'; interface ImportFormProps { diff --git a/packages/app/components/item/ImportItem.tsx b/packages/app/modules/item/components/ImportItem.tsx similarity index 93% rename from packages/app/components/item/ImportItem.tsx rename to packages/app/modules/item/components/ImportItem.tsx index 508b5d7aa..09430bef5 100644 --- a/packages/app/components/item/ImportItem.tsx +++ b/packages/app/modules/item/components/ImportItem.tsx @@ -1,7 +1,7 @@ import { View } from 'react-native'; import { ImportForm } from './ImportForm'; import { type Item } from '@packrat/validations'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; interface ImportItemProps { packId: string; diff --git a/packages/app/components/item/ImportItemGlobal.tsx b/packages/app/modules/item/components/ImportItemGlobal.tsx similarity index 92% rename from packages/app/components/item/ImportItemGlobal.tsx rename to packages/app/modules/item/components/ImportItemGlobal.tsx index 043fad444..e08292db6 100644 --- a/packages/app/components/item/ImportItemGlobal.tsx +++ b/packages/app/modules/item/components/ImportItemGlobal.tsx @@ -1,6 +1,6 @@ import { View } from 'react-native'; import { useModal } from '@packrat/ui'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; import { ImportForm } from './ImportForm'; export const ImportItemGlobal = () => { diff --git a/packages/app/components/pack/ImportItemModal.tsx b/packages/app/modules/item/components/ImportItemModal.tsx similarity index 94% rename from packages/app/components/pack/ImportItemModal.tsx rename to packages/app/modules/item/components/ImportItemModal.tsx index 6738f3355..89cf41624 100644 --- a/packages/app/components/pack/ImportItemModal.tsx +++ b/packages/app/modules/item/components/ImportItemModal.tsx @@ -1,4 +1,4 @@ -import { ImportItem } from '../item/ImportItem'; +import { ImportItem } from './ImportItem'; import { BaseModal } from '@packrat/ui'; interface ImportItemModalProps { diff --git a/packages/app/components/item/ItemForm.tsx b/packages/app/modules/item/components/ItemForm.tsx similarity index 95% rename from packages/app/components/item/ItemForm.tsx rename to packages/app/modules/item/components/ItemForm.tsx index 743dd932b..31902cd5c 100644 --- a/packages/app/components/item/ItemForm.tsx +++ b/packages/app/modules/item/components/ItemForm.tsx @@ -11,8 +11,8 @@ import { } from '@packrat/ui'; import { Platform, View } from 'react-native'; -import { ItemCategoryEnum } from '../../constants/itemCategory'; -import useTheme from '../../hooks/useTheme'; +import { ItemCategoryEnum } from '../constants'; +import useTheme from 'app/hooks/useTheme'; import { type Item } from '@packrat/validations'; const Form: any = OriginalForm; @@ -125,7 +125,7 @@ export const ItemForm = ({ {showSubmitButton && ( - + {isLoading ? 'Loading..' : isEdit ? 'Edit item' : 'Add Item'} diff --git a/packages/app/components/ItemRow/ItemRow.tsx b/packages/app/modules/item/components/ItemRow/ItemRow.tsx similarity index 100% rename from packages/app/components/ItemRow/ItemRow.tsx rename to packages/app/modules/item/components/ItemRow/ItemRow.tsx diff --git a/packages/app/components/item/SearchItem/SearchItem.tsx b/packages/app/modules/item/components/SearchItem/SearchItem.tsx similarity index 100% rename from packages/app/components/item/SearchItem/SearchItem.tsx rename to packages/app/modules/item/components/SearchItem/SearchItem.tsx diff --git a/packages/app/components/item/SearchItem/index.ts b/packages/app/modules/item/components/SearchItem/index.ts similarity index 100% rename from packages/app/components/item/SearchItem/index.ts rename to packages/app/modules/item/components/SearchItem/index.ts diff --git a/packages/app/components/item/SearchItem/useSearchItem.ts b/packages/app/modules/item/components/SearchItem/useSearchItem.ts similarity index 89% rename from packages/app/components/item/SearchItem/useSearchItem.ts rename to packages/app/modules/item/components/SearchItem/useSearchItem.ts index f96798604..3a61c98bc 100644 --- a/packages/app/components/item/SearchItem/useSearchItem.ts +++ b/packages/app/modules/item/components/SearchItem/useSearchItem.ts @@ -1,8 +1,8 @@ import { useMemo, useState } from 'react'; -import { useItems } from 'app/hooks/items'; +import { useItems } from 'app/modules/item'; import { queryTrpc } from 'app/trpc'; -import { useAuthUser } from 'app/auth/hooks'; -import { useFetchSinglePack, usePackId } from 'app/hooks/packs'; +import { useAuthUser } from 'app/modules/auth'; +import { useFetchSinglePack, usePackId } from 'app/modules/pack'; export const useSearchItem = () => { const [packId] = usePackId(); diff --git a/packages/app/modules/item/components/index.ts b/packages/app/modules/item/components/index.ts new file mode 100644 index 000000000..7172ee83b --- /dev/null +++ b/packages/app/modules/item/components/index.ts @@ -0,0 +1,6 @@ +export { AddItemGlobal } from './AddItemGlobal'; +export { ImportItemGlobal } from './ImportItemGlobal'; +export { ImportItemModal } from './ImportItemModal'; +export { SearchItem } from './SearchItem'; +export { AddItem } from './AddItem'; +export { AddItemModal } from './AddItemModal'; diff --git a/packages/app/components/itemtable/itemTable.tsx b/packages/app/modules/item/components/itemtable/itemTable.tsx similarity index 94% rename from packages/app/components/itemtable/itemTable.tsx rename to packages/app/modules/item/components/itemtable/itemTable.tsx index a4e07d764..872de74ac 100644 --- a/packages/app/components/itemtable/itemTable.tsx +++ b/packages/app/modules/item/components/itemtable/itemTable.tsx @@ -1,11 +1,11 @@ import React from 'react'; import { ScrollView, View } from 'react-native'; import useResponsive from 'app/hooks/useResponsive'; -import Loader from '../Loader'; -import useTheme from '../../hooks/useTheme'; +import Loader from '../../../../components/Loader'; +import useTheme from '../../../../hooks/useTheme'; import Layout from 'app/components/layout/Layout'; import { PaginatedSortedTable } from '@packrat/ui/src/Bento/elements/tables'; -import { PaginationLimit } from '../paginationChooseLimit'; +import { PaginationLimit } from '../../../../components/paginationChooseLimit'; interface Category { id: string; @@ -78,7 +78,6 @@ export const ItemsTable = ({ const filteredData = data.map((item) => { const { - id, categoryId, createdAt, updatedAt, diff --git a/packages/app/components/itemtable/itemsTable.style.ts b/packages/app/modules/item/components/itemtable/itemsTable.style.ts similarity index 94% rename from packages/app/components/itemtable/itemsTable.style.ts rename to packages/app/modules/item/components/itemtable/itemsTable.style.ts index 225da1d37..ef6362560 100644 --- a/packages/app/components/itemtable/itemsTable.style.ts +++ b/packages/app/modules/item/components/itemtable/itemsTable.style.ts @@ -1,4 +1,4 @@ -import { theme } from './../../theme'; +import { theme } from '../../../../theme'; export const loadStyles = () => { const currentTheme = theme; return { @@ -34,7 +34,7 @@ export const loadStyles = () => { }, titleText: { fontWeight: 'bold', - color: currentTheme.colors.text, + color: currentTheme.colors.white, }, head: { height: 50, diff --git a/packages/app/constants/itemCategory.ts b/packages/app/modules/item/constants.ts similarity index 100% rename from packages/app/constants/itemCategory.ts rename to packages/app/modules/item/constants.ts diff --git a/packages/app/hooks/items/index.ts b/packages/app/modules/item/hooks/index.ts similarity index 51% rename from packages/app/hooks/items/index.ts rename to packages/app/modules/item/hooks/index.ts index e36816bb6..f99c34097 100644 --- a/packages/app/hooks/items/index.ts +++ b/packages/app/modules/item/hooks/index.ts @@ -1,5 +1,10 @@ +export { useSimilarItems } from './useSimilarItems'; export { useAddItem } from './useAddItem'; export { useItems } from './useItems'; export { useDeleteItem } from './useDeleteItem'; export { useItemsUpdater } from './useItemsUpdater'; export { useItemWeightUnit } from './useItemWeightUnit'; +export { useItemId } from './useItemId'; +export { useItem } from './useItem'; +export { useItemRow } from './useItemRow'; +export { useImportItem } from './useImportItem'; diff --git a/packages/app/hooks/items/useAddItem.ts b/packages/app/modules/item/hooks/useAddItem.ts similarity index 100% rename from packages/app/hooks/items/useAddItem.ts rename to packages/app/modules/item/hooks/useAddItem.ts diff --git a/packages/app/hooks/items/useDeleteItem.ts b/packages/app/modules/item/hooks/useDeleteItem.ts similarity index 100% rename from packages/app/hooks/items/useDeleteItem.ts rename to packages/app/modules/item/hooks/useDeleteItem.ts diff --git a/packages/app/hooks/items/useImportItem.ts b/packages/app/modules/item/hooks/useImportItem.ts similarity index 100% rename from packages/app/hooks/items/useImportItem.ts rename to packages/app/modules/item/hooks/useImportItem.ts diff --git a/packages/app/modules/item/hooks/useItem.ts b/packages/app/modules/item/hooks/useItem.ts new file mode 100644 index 000000000..f758e8cc6 --- /dev/null +++ b/packages/app/modules/item/hooks/useItem.ts @@ -0,0 +1,20 @@ +import { useAuthUser } from 'app/modules/auth'; +import { queryTrpc } from 'app/trpc'; + +export const useItem = (itemId?: string) => { + const user = useAuthUser(); + const { refetch, data, error, isLoading, isError } = + queryTrpc.getItemById.useQuery( + { id: itemId }, + { + enabled: !!itemId, // to ensure the query runs only when packId is available + refetchOnWindowFocus: true, + keepPreviousData: true, + staleTime: Infinity, + cacheTime: Infinity, + }, + ); + const isOwner = data && user && data.ownerId === user.id; + + return { refetch, data, error, isLoading, isOwner, isError }; +}; diff --git a/packages/app/modules/item/hooks/useItemId.ts b/packages/app/modules/item/hooks/useItemId.ts new file mode 100644 index 000000000..2a47da815 --- /dev/null +++ b/packages/app/modules/item/hooks/useItemId.ts @@ -0,0 +1,6 @@ +import { createParam } from '@packrat/crosspath'; + +const { useParam } = createParam<{ itemId: string }>(); +export const useItemId = () => { + return useParam('itemId'); +}; diff --git a/packages/app/hooks/itemrow/useItemRow.ts b/packages/app/modules/item/hooks/useItemRow.ts similarity index 100% rename from packages/app/hooks/itemrow/useItemRow.ts rename to packages/app/modules/item/hooks/useItemRow.ts diff --git a/packages/app/hooks/items/useItemWeightUnit.ts b/packages/app/modules/item/hooks/useItemWeightUnit.ts similarity index 90% rename from packages/app/hooks/items/useItemWeightUnit.ts rename to packages/app/modules/item/hooks/useItemWeightUnit.ts index b33c749fb..fa2e5f3aa 100644 --- a/packages/app/hooks/items/useItemWeightUnit.ts +++ b/packages/app/modules/item/hooks/useItemWeightUnit.ts @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; type WeightUnit = 'g' | 'kg' | 'oz' | 'lb' | 'lbs'; diff --git a/packages/app/hooks/items/useItems.ts b/packages/app/modules/item/hooks/useItems.ts similarity index 100% rename from packages/app/hooks/items/useItems.ts rename to packages/app/modules/item/hooks/useItems.ts diff --git a/packages/app/hooks/items/useItemsUpdater.ts b/packages/app/modules/item/hooks/useItemsUpdater.ts similarity index 100% rename from packages/app/hooks/items/useItemsUpdater.ts rename to packages/app/modules/item/hooks/useItemsUpdater.ts diff --git a/packages/app/modules/item/hooks/useSimilarItems.ts b/packages/app/modules/item/hooks/useSimilarItems.ts new file mode 100644 index 000000000..fefe2f753 --- /dev/null +++ b/packages/app/modules/item/hooks/useSimilarItems.ts @@ -0,0 +1,13 @@ +import { queryTrpc } from 'app/trpc'; + +export const useSimilarItems = (id: string) => { + const { data, error, isLoading, refetch } = + queryTrpc.getSimilarItems.useQuery( + { id, limit: 10 }, + { + refetchOnWindowFocus: true, + }, + ); + + return { data, error, isLoading, refetch }; +}; diff --git a/packages/app/modules/item/index.ts b/packages/app/modules/item/index.ts new file mode 100644 index 000000000..cd4cf62d5 --- /dev/null +++ b/packages/app/modules/item/index.ts @@ -0,0 +1,9 @@ +export * from './hooks'; +export * from './screens'; +export { ItemCategoryEnum } from './constants'; +export { + ImportItemModal, + SearchItem, + AddItem, + AddItemModal, +} from './components'; diff --git a/packages/app/modules/item/screens/ItemDetailsScreen.tsx b/packages/app/modules/item/screens/ItemDetailsScreen.tsx new file mode 100644 index 000000000..1a21147d6 --- /dev/null +++ b/packages/app/modules/item/screens/ItemDetailsScreen.tsx @@ -0,0 +1,110 @@ +import { View } from 'react-native'; +import React from 'react'; +import useTheme from 'app/hooks/useTheme'; +import useCustomStyles from 'app/hooks/useCustomStyles'; +import { useItem, useItemId } from 'app/modules/item'; +import { usePagination } from 'app/hooks/common'; +import { RH3, RImage, RScrollView, RStack, RText, XStack } from '@packrat/ui'; +import useResponsive from 'app/hooks/useResponsive'; +import { CustomCard } from 'app/components/card'; +import LargeCard from 'app/components/card/LargeCard'; +import { FeedPreview } from 'app/modules/feed'; + +export function ItemDetailsScreen() { + const { limit, handleLimitChange, page, handlePageChange } = usePagination(); + const [itemId] = useItemId(); + const { data: item, isError } = useItem(itemId); + const styles = useCustomStyles(loadStyles); + const { currentTheme } = useTheme(); + + return ( + + + {!isError && item && ( + + + + {item?.name && ( + + Category: {item?.category?.name || '-'} + + Weight: {item?.weight} + {item?.unit} + + Quantity: {item?.quantity} + + )} + + } + type="item" + /> + + + Similar Items + + + + + )} + + + ); +} + +const loadStyles = (theme) => { + const { currentTheme } = theme; + const { xxs, xs } = useResponsive(); + + return { + mainContainer: { + backgroundColor: currentTheme.colors.background, + flexDirection: 'column', + flex: 1, + padding: 10, + alignItems: 'center', + }, + button: { + color: currentTheme.colors.white, + display: 'flex', + alignItems: 'center', + textAlign: 'center', + }, + container: { + backgroundColor: currentTheme.colors.card, + flexDirection: xs || xxs ? 'column' : 'row', + gap: xs || xxs ? 4 : 0, + justifyContent: 'space-between', + width: '100%', + padding: 30, + borderRadius: 10, + }, + sortContainer: { + width: xxs ? '100%' : xs ? '100%' : '20%', + justifyContent: 'space-between', + flexDirection: 'row', + alignItems: 'center', + }, + }; +}; diff --git a/packages/app/screens/items/index.tsx b/packages/app/modules/item/screens/ItemsScreen.tsx similarity index 92% rename from packages/app/screens/items/index.tsx rename to packages/app/modules/item/screens/ItemsScreen.tsx index 568782ac8..7c7d722b8 100644 --- a/packages/app/screens/items/index.tsx +++ b/packages/app/modules/item/screens/ItemsScreen.tsx @@ -1,11 +1,9 @@ import { View } from 'react-native'; import React, { useEffect, useState } from 'react'; -import useTheme from 'app/hooks/useTheme'; -import { AddItemGlobal } from 'app/components/item/AddItemGlobal'; -import { ImportItemGlobal } from 'app/components/item/ImportItemGlobal'; -import { ItemsTable } from 'app/components/itemtable/itemTable'; +import { AddItemGlobal, ImportItemGlobal } from '../components'; +import { ItemsTable } from 'app/modules/item/components/itemtable/itemTable'; import useCustomStyles from 'app/hooks/useCustomStyles'; -import { useItems } from 'app/hooks/items/useItems'; +import { useItems } from 'app/modules/item'; import { usePagination } from 'app/hooks/common'; import { BaseModal, @@ -16,7 +14,7 @@ import { } from '@packrat/ui'; import useResponsive from 'app/hooks/useResponsive'; -export default function Items() { +export function ItemsScreen() { const { limit, handleLimitChange, page, handlePageChange } = usePagination(); const { data, isFetching, isError } = useItems({ limit, page }); const styles = useCustomStyles(loadStyles); diff --git a/packages/app/modules/item/screens/index.ts b/packages/app/modules/item/screens/index.ts new file mode 100644 index 000000000..7e006f12d --- /dev/null +++ b/packages/app/modules/item/screens/index.ts @@ -0,0 +1,2 @@ +export { ItemsScreen } from './ItemsScreen'; +export { ItemDetailsScreen } from './ItemDetailsScreen'; diff --git a/packages/app/components/pack/AddPack.tsx b/packages/app/modules/pack/components/AddPackForm.tsx similarity index 80% rename from packages/app/components/pack/AddPack.tsx rename to packages/app/modules/pack/components/AddPackForm.tsx index 099ddd378..cb9c0d2bc 100644 --- a/packages/app/components/pack/AddPack.tsx +++ b/packages/app/modules/pack/components/AddPackForm.tsx @@ -1,28 +1,22 @@ +import React from 'react'; import { - BaseModal, - DropdownComponent, Form, FormInput, - FormSelect as OriginalFormSelect, RStack, RSwitch, RText, SubmitButton, - useModal, } from '@packrat/ui'; import { addPackSchema } from '@packrat/validations'; -import { useAddNewPack } from 'app/hooks/packs'; +import { useAddNewPack } from '../hooks'; import { useRouter } from 'app/hooks/router'; import useCustomStyles from 'app/hooks/useCustomStyles'; import useResponsive from 'app/hooks/useResponsive'; -import React, { useState } from 'react'; -import { Platform, View } from 'react-native'; +import { View } from 'react-native'; import { Switch } from 'tamagui'; -import useTheme from '../../hooks/useTheme'; +import useTheme from '../../../hooks/useTheme'; -const FormSelect: any = OriginalFormSelect; - -export const AddPack = ({ +export const AddPackForm = ({ isCreatingTrip = false, onSuccess = () => {}, }: { @@ -107,7 +101,7 @@ export const AddPack = ({ - + {isLoading ? 'Loading...' : 'Add Pack'} @@ -119,28 +113,6 @@ export const AddPack = ({ ); }; -export const AddPackContainer = ({ - isCreatingTrip, -}: { - isCreatingTrip: boolean; -}) => { - return ( - - - - ); -}; - -const PackModalContent = ({ isCreatingTrip }: { isCreatingTrip?: boolean }) => { - const { setIsModalOpen } = useModal(); - return ( - setIsModalOpen(false)} - /> - ); -}; - const loadStyles = (theme, appTheme) => { const { isDark, currentTheme } = theme; return { diff --git a/packages/app/components/pack/CopyPackModal.tsx b/packages/app/modules/pack/components/CopyPackModal.tsx similarity index 91% rename from packages/app/components/pack/CopyPackModal.tsx rename to packages/app/modules/pack/components/CopyPackModal.tsx index bb17b00b7..4af936b87 100644 --- a/packages/app/components/pack/CopyPackModal.tsx +++ b/packages/app/modules/pack/components/CopyPackModal.tsx @@ -1,8 +1,7 @@ import { BaseModal, RButton, RInput } from '@packrat/ui'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; import { useRouter } from 'app/hooks/router'; -import { useAddNewPack, usePackId } from 'app/hooks/packs'; -import { useAddPackItem } from 'app/hooks/packs/useAddPackItem'; +import { useAddNewPack, usePackId, useAddPackItem } from 'app/modules/pack'; import { useState } from 'react'; import React from 'react'; diff --git a/packages/app/components/PackOptions/index.tsx b/packages/app/modules/pack/components/PackOptions/index.tsx similarity index 100% rename from packages/app/components/PackOptions/index.tsx rename to packages/app/modules/pack/components/PackOptions/index.tsx diff --git a/packages/app/components/PackOptions/useModalState.tsx b/packages/app/modules/pack/components/PackOptions/useModalState.tsx similarity index 100% rename from packages/app/components/PackOptions/useModalState.tsx rename to packages/app/modules/pack/components/PackOptions/useModalState.tsx diff --git a/packages/app/components/pack_table/DeletePackItemModal.tsx b/packages/app/modules/pack/components/PackTable/DeletePackItemModal.tsx similarity index 90% rename from packages/app/components/pack_table/DeletePackItemModal.tsx rename to packages/app/modules/pack/components/PackTable/DeletePackItemModal.tsx index 59a638acd..0daffab16 100644 --- a/packages/app/components/pack_table/DeletePackItemModal.tsx +++ b/packages/app/modules/pack/components/PackTable/DeletePackItemModal.tsx @@ -1,7 +1,5 @@ import React from 'react'; -import { useDeletePackItem } from 'app/hooks/packs/useDeletePackItem'; import { BaseModal, CloseModalHandler, RText } from '@packrat/ui'; -import { useDeleteItem } from 'app/hooks/items'; interface DeletePackItemModalProps { onConfirm: (closeModal: CloseModalHandler) => void; diff --git a/packages/app/components/pack_table/EditPackItemModal.tsx b/packages/app/modules/pack/components/PackTable/EditPackItemModal.tsx similarity index 100% rename from packages/app/components/pack_table/EditPackItemModal.tsx rename to packages/app/modules/pack/components/PackTable/EditPackItemModal.tsx diff --git a/packages/app/components/pack_table/Table.tsx b/packages/app/modules/pack/components/PackTable/TableContainer.tsx similarity index 88% rename from packages/app/components/pack_table/Table.tsx rename to packages/app/modules/pack/components/PackTable/TableContainer.tsx index 05c89bfdd..60e693bc1 100644 --- a/packages/app/components/pack_table/Table.tsx +++ b/packages/app/modules/pack/components/PackTable/TableContainer.tsx @@ -1,19 +1,17 @@ -import { RButton, RCheckbox, RSkeleton, RStack, RText } from '@packrat/ui'; -import { FlatList, Platform, View } from 'react-native'; -import { Cell, Row, Table } from 'react-native-table-component'; -import { usePackTable } from 'app/hooks/packs/usePackTable'; +import { RButton, RSkeleton, RText } from '@packrat/ui'; +import { View } from 'react-native'; +import { + usePackTable, + useDeletePackItem, + useIsAuthUserPack, +} from 'app/modules/pack'; import useCustomStyles from 'app/hooks/useCustomStyles'; -import loadStyles from './packtable.style'; +import { loadStyles } from './packtable.style'; import { TotalWeightBox, WeightUnitDropdown, ErrorMessage, - CategoryRow, - TitleRow, } from './TableHelperComponents'; -import TableItem from './TableItem'; -import { useDeletePackItem } from 'app/hooks/packs/useDeletePackItem'; -import { useIsAuthUserPack } from 'app/hooks/packs/useIsAuthUserPack'; import { BasicTable } from '@packrat/ui/src/Bento/elements/tables'; interface TableContainerProps { @@ -149,5 +147,3 @@ export const TableContainer = ({ ); }; - -export default TableContainer; diff --git a/packages/app/components/pack_table/TableHelperComponents.tsx b/packages/app/modules/pack/components/PackTable/TableHelperComponents.tsx similarity index 98% rename from packages/app/components/pack_table/TableHelperComponents.tsx rename to packages/app/modules/pack/components/PackTable/TableHelperComponents.tsx index 45999cb2e..e6c3f0cbd 100644 --- a/packages/app/components/pack_table/TableHelperComponents.tsx +++ b/packages/app/modules/pack/components/PackTable/TableHelperComponents.tsx @@ -13,7 +13,7 @@ import { formatNumber } from 'app/utils/formatNumber'; import React from 'react'; import { View } from 'react-native'; import { Row } from 'react-native-table-component'; -import loadStyles from './packtable.style'; +import { loadStyles } from './packtable.style'; const RText: any = OriginalRText; const Feather: any = OriginalFeather; diff --git a/packages/app/components/pack_table/TableItem.tsx b/packages/app/modules/pack/components/PackTable/TableItem.tsx similarity index 96% rename from packages/app/components/pack_table/TableItem.tsx rename to packages/app/modules/pack/components/PackTable/TableItem.tsx index a07b7bd42..511cb6920 100644 --- a/packages/app/components/pack_table/TableItem.tsx +++ b/packages/app/modules/pack/components/PackTable/TableItem.tsx @@ -9,7 +9,7 @@ import { formatNumber } from 'app/utils/formatNumber'; import { AddItem } from '../item/AddItem'; import loadStyles from './packtable.style'; import { RText, ZDropdown } from '@packrat/ui'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; type ModalName = 'edit' | 'delete' | null; @@ -25,9 +25,9 @@ interface TableItemProps { setRefetch: React.Dispatch>; } -interface DropDownItems{ - label: string, - onSelect: () => void, +interface DropDownItems { + label: string; + onSelect: () => void; } const TableItem = ({ diff --git a/packages/app/modules/pack/components/PackTable/index.tsx b/packages/app/modules/pack/components/PackTable/index.tsx new file mode 100644 index 000000000..7d19a982b --- /dev/null +++ b/packages/app/modules/pack/components/PackTable/index.tsx @@ -0,0 +1,3 @@ +export { TableContainer } from './TableContainer'; +export { DeletePackItemModal } from './DeletePackItemModal'; +export { EditPackItemModal } from './EditPackItemModal'; diff --git a/packages/app/components/pack_table/packtable.style.tsx b/packages/app/modules/pack/components/PackTable/packtable.style.tsx similarity index 93% rename from packages/app/components/pack_table/packtable.style.tsx rename to packages/app/modules/pack/components/PackTable/packtable.style.tsx index 2b33990e7..c6bd16501 100644 --- a/packages/app/components/pack_table/packtable.style.tsx +++ b/packages/app/modules/pack/components/PackTable/packtable.style.tsx @@ -1,6 +1,7 @@ import { Platform } from 'react-native'; const isWeb = Platform.OS === 'web'; -const loadStyles = (theme) => { + +export const loadStyles = (theme) => { const { currentTheme } = theme; return { @@ -47,7 +48,7 @@ const loadStyles = (theme) => { fontWeight: 'bold', color: currentTheme.colors.background === '#1A1A1D' - ? currentTheme.colors.text + ? currentTheme.colors.white : 'black', fontSize: Platform.OS === 'web' ? 14 : 12, }, @@ -55,7 +56,7 @@ const loadStyles = (theme) => { flexDirection: 'row', height: 60, alignItems: 'center', - // color: currentTheme.colors.text, + // color: currentTheme.colors.white, backgroundColor: currentTheme.colors.background === '#1A1A1D' ? currentTheme.colors.black @@ -84,5 +85,3 @@ const loadStyles = (theme) => { }, }; }; - -export default loadStyles; diff --git a/packages/app/modules/pack/components/index.ts b/packages/app/modules/pack/components/index.ts new file mode 100644 index 000000000..3c3c80097 --- /dev/null +++ b/packages/app/modules/pack/components/index.ts @@ -0,0 +1,7 @@ +export { AddPackForm } from './AddPackForm'; +export { + TableContainer, + DeletePackItemModal, + EditPackItemModal, +} from './PackTable'; +export { CopyPackModal } from './CopyPackModal'; diff --git a/packages/app/modules/pack/hooks/index.ts b/packages/app/modules/pack/hooks/index.ts new file mode 100644 index 000000000..2a70cb196 --- /dev/null +++ b/packages/app/modules/pack/hooks/index.ts @@ -0,0 +1,15 @@ +export * from './useAddNewPack'; +export * from './useAddPackItem'; +export * from './useDeletePack'; +export * from './useDeletePackItem'; +export * from './useDuplicatePackItem'; +export * from './useEditPack'; +export * from './useEditPackItem'; +export * from './useFetchSinglePack'; +export * from './useImportPackItem'; +export * from './useIsAuthUserPack'; +export * from './usePackId'; +export * from './usePackTable'; +export * from './useSimilarPacks'; +export * from './useUserPackById'; +export * from './useUserPacks'; diff --git a/packages/app/hooks/packs/useAddNewPack.ts b/packages/app/modules/pack/hooks/useAddNewPack.ts similarity index 97% rename from packages/app/hooks/packs/useAddNewPack.ts rename to packages/app/modules/pack/hooks/useAddNewPack.ts index 03644748d..e90246eb0 100644 --- a/packages/app/hooks/packs/useAddNewPack.ts +++ b/packages/app/modules/pack/hooks/useAddNewPack.ts @@ -1,6 +1,6 @@ import { useState } from 'react'; -import { queryTrpc } from '../../trpc'; -import { useAuthUser } from 'app/auth/hooks'; +import { queryTrpc } from 'app/trpc'; +import { useAuthUser } from 'app/modules/auth'; interface Pack { id: number; diff --git a/packages/app/hooks/packs/useAddPackItem.ts b/packages/app/modules/pack/hooks/useAddPackItem.ts similarity index 97% rename from packages/app/hooks/packs/useAddPackItem.ts rename to packages/app/modules/pack/hooks/useAddPackItem.ts index 5a806a02b..dc255b864 100644 --- a/packages/app/hooks/packs/useAddPackItem.ts +++ b/packages/app/modules/pack/hooks/useAddPackItem.ts @@ -1,4 +1,4 @@ -import { queryTrpc } from '../../trpc'; +import { queryTrpc } from 'app/trpc'; export const useAddPackItem = () => { const utils = queryTrpc.useContext(); diff --git a/packages/app/hooks/packs/useDeletePack.ts b/packages/app/modules/pack/hooks/useDeletePack.ts similarity index 100% rename from packages/app/hooks/packs/useDeletePack.ts rename to packages/app/modules/pack/hooks/useDeletePack.ts diff --git a/packages/app/hooks/packs/useDeletePackItem.ts b/packages/app/modules/pack/hooks/useDeletePackItem.ts similarity index 97% rename from packages/app/hooks/packs/useDeletePackItem.ts rename to packages/app/modules/pack/hooks/useDeletePackItem.ts index f6c5aeb96..e01ba2adb 100644 --- a/packages/app/hooks/packs/useDeletePackItem.ts +++ b/packages/app/modules/pack/hooks/useDeletePackItem.ts @@ -1,4 +1,4 @@ -import { queryTrpc } from '../../trpc'; +import { queryTrpc } from 'app/trpc'; export const useDeletePackItem = () => { const utils = queryTrpc.useContext(); diff --git a/packages/app/hooks/packs/useDuplicatePackItem.ts b/packages/app/modules/pack/hooks/useDuplicatePackItem.ts similarity index 100% rename from packages/app/hooks/packs/useDuplicatePackItem.ts rename to packages/app/modules/pack/hooks/useDuplicatePackItem.ts diff --git a/packages/app/hooks/packs/useEditPack.ts b/packages/app/modules/pack/hooks/useEditPack.ts similarity index 100% rename from packages/app/hooks/packs/useEditPack.ts rename to packages/app/modules/pack/hooks/useEditPack.ts diff --git a/packages/app/hooks/packs/useEditPackItem.ts b/packages/app/modules/pack/hooks/useEditPackItem.ts similarity index 96% rename from packages/app/hooks/packs/useEditPackItem.ts rename to packages/app/modules/pack/hooks/useEditPackItem.ts index efca8573a..3d6abb877 100644 --- a/packages/app/hooks/packs/useEditPackItem.ts +++ b/packages/app/modules/pack/hooks/useEditPackItem.ts @@ -1,5 +1,5 @@ -import { queryTrpc } from '../../trpc'; -import { useItemsUpdater } from 'app/hooks/items'; +import { queryTrpc } from 'app/trpc'; +import { useItemsUpdater } from 'app/modules/item'; import { useOfflineQueue } from 'app/hooks/offline'; interface EditedItem { diff --git a/packages/app/hooks/packs/useFetchSinglePack.ts b/packages/app/modules/pack/hooks/useFetchSinglePack.ts similarity index 86% rename from packages/app/hooks/packs/useFetchSinglePack.ts rename to packages/app/modules/pack/hooks/useFetchSinglePack.ts index 57bd43aa4..7d3a35b3f 100644 --- a/packages/app/hooks/packs/useFetchSinglePack.ts +++ b/packages/app/modules/pack/hooks/useFetchSinglePack.ts @@ -1,5 +1,5 @@ -import { useAuthUser } from 'app/auth/hooks'; -import { queryTrpc } from '../../trpc'; +import { useAuthUser } from 'app/modules/auth'; +import { queryTrpc } from 'app/trpc'; export const useFetchSinglePack = (packId) => { const user = useAuthUser(); diff --git a/packages/app/hooks/packs/useImportPackItem.ts b/packages/app/modules/pack/hooks/useImportPackItem.ts similarity index 96% rename from packages/app/hooks/packs/useImportPackItem.ts rename to packages/app/modules/pack/hooks/useImportPackItem.ts index eecb2cc6a..400d19964 100644 --- a/packages/app/hooks/packs/useImportPackItem.ts +++ b/packages/app/modules/pack/hooks/useImportPackItem.ts @@ -1,4 +1,4 @@ -import { queryTrpc } from '../../trpc'; +import { queryTrpc } from 'app/trpc'; export const useImportPackItem = () => { const utils = queryTrpc.useContext(); diff --git a/packages/app/hooks/packs/useIsAuthUserPack.ts b/packages/app/modules/pack/hooks/useIsAuthUserPack.ts similarity index 73% rename from packages/app/hooks/packs/useIsAuthUserPack.ts rename to packages/app/modules/pack/hooks/useIsAuthUserPack.ts index f678301b5..f9e3a0384 100644 --- a/packages/app/hooks/packs/useIsAuthUserPack.ts +++ b/packages/app/modules/pack/hooks/useIsAuthUserPack.ts @@ -1,4 +1,4 @@ -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; export const useIsAuthUserPack = (pack) => { const user = useAuthUser(); diff --git a/packages/app/hooks/packs/usePackId.ts b/packages/app/modules/pack/hooks/usePackId.ts similarity index 100% rename from packages/app/hooks/packs/usePackId.ts rename to packages/app/modules/pack/hooks/usePackId.ts diff --git a/packages/app/hooks/packs/usePackTable.tsx b/packages/app/modules/pack/hooks/usePackTable.tsx similarity index 95% rename from packages/app/hooks/packs/usePackTable.tsx rename to packages/app/modules/pack/hooks/usePackTable.tsx index 8688e0873..aaa2b87c9 100644 --- a/packages/app/hooks/packs/usePackTable.tsx +++ b/packages/app/modules/pack/hooks/usePackTable.tsx @@ -1,9 +1,8 @@ import { useState } from 'react'; -import { ItemCategoryEnum } from 'app/constants/itemCategory'; import { convertWeight } from 'app/utils/convertWeight'; -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; import { useDuplicatePackItem } from './useDuplicatePackItem'; -import { useItemWeightUnit } from 'app/hooks/items'; +import { useItemWeightUnit, ItemCategoryEnum } from 'app/modules/item'; export const usePackTable = ({ currentPack, diff --git a/packages/app/modules/pack/hooks/useSimilarPacks.ts b/packages/app/modules/pack/hooks/useSimilarPacks.ts new file mode 100644 index 000000000..824b3082d --- /dev/null +++ b/packages/app/modules/pack/hooks/useSimilarPacks.ts @@ -0,0 +1,13 @@ +import { queryTrpc } from 'app/trpc'; + +export const useSimilarPacks = (id: string) => { + const { data, error, isLoading, refetch } = + queryTrpc.getSimilarPacks.useQuery( + { id, limit: 10 }, + { + refetchOnWindowFocus: true, + }, + ); + + return { data, error, isLoading, refetch }; +}; diff --git a/packages/app/hooks/packs/useUserPackById.ts b/packages/app/modules/pack/hooks/useUserPackById.ts similarity index 86% rename from packages/app/hooks/packs/useUserPackById.ts rename to packages/app/modules/pack/hooks/useUserPackById.ts index 5d3111e5e..2b039232b 100644 --- a/packages/app/hooks/packs/useUserPackById.ts +++ b/packages/app/modules/pack/hooks/useUserPackById.ts @@ -1,4 +1,4 @@ -import { useAuthUser } from 'app/auth/hooks'; +import { useAuthUser } from 'app/modules/auth'; import { useUserPacks } from './useUserPacks'; import { usePackId } from './usePackId'; diff --git a/packages/app/hooks/packs/useUserPacks.ts b/packages/app/modules/pack/hooks/useUserPacks.ts similarity index 73% rename from packages/app/hooks/packs/useUserPacks.ts rename to packages/app/modules/pack/hooks/useUserPacks.ts index 1fd5659d1..451163fb1 100644 --- a/packages/app/hooks/packs/useUserPacks.ts +++ b/packages/app/modules/pack/hooks/useUserPacks.ts @@ -1,6 +1,4 @@ -import { getQueryKey } from '@trpc/react-query'; -import { queryClient } from 'app/constants/queryClient'; -import { queryTrpc } from '../../trpc'; +import { queryTrpc } from 'app/trpc'; export const useUserPacks = (ownerId: string | undefined, queryString = '') => { const utils = queryTrpc.useContext(); @@ -16,12 +14,10 @@ export const useUserPacks = (ownerId: string | undefined, queryString = '') => { keepPreviousData: true, }, ); - utils.getPacks.setData( - { - ownerId: ownerId || '', - queryBy: queryString, - } - ); + utils.getPacks.setData({ + ownerId: ownerId || '', + queryBy: queryString, + }); // Extract packs or set an empty array if data is undefined. const packs = data?.packs || []; diff --git a/packages/app/modules/pack/index.ts b/packages/app/modules/pack/index.ts new file mode 100644 index 000000000..de11d3544 --- /dev/null +++ b/packages/app/modules/pack/index.ts @@ -0,0 +1,3 @@ +export * from './hooks'; +export * from './components'; +export { AddPackScreen, PackDetailsScreen } from './screens'; diff --git a/packages/app/modules/pack/screens/AddPackScreen.tsx b/packages/app/modules/pack/screens/AddPackScreen.tsx new file mode 100644 index 000000000..a7ffa2b80 --- /dev/null +++ b/packages/app/modules/pack/screens/AddPackScreen.tsx @@ -0,0 +1,12 @@ +import React from 'react'; +import { AddPackForm } from '../components'; + +export const AddPackScreen = ({ + isCreatingTrip = false, + onSuccess = () => {}, +}: { + isCreatingTrip?: boolean; + onSuccess?: any; +}) => { + return ; +}; diff --git a/packages/app/components/pack/PackDetails.tsx b/packages/app/modules/pack/screens/PackDetailsScreen.tsx similarity index 72% rename from packages/app/components/pack/PackDetails.tsx rename to packages/app/modules/pack/screens/PackDetailsScreen.tsx index c8c578e7e..75121387c 100644 --- a/packages/app/components/pack/PackDetails.tsx +++ b/packages/app/modules/pack/screens/PackDetailsScreen.tsx @@ -1,30 +1,36 @@ import React, { useState } from 'react'; import { CLIENT_URL } from '@packrat/config'; -import { RText } from '@packrat/ui'; -import { useAuthUser } from 'app/auth/hooks'; +import { RH3, RText } from '@packrat/ui'; +import { useAuthUser } from 'app/modules/auth'; import Layout from 'app/components/layout/Layout'; -import { useIsAuthUserPack } from 'app/hooks/packs/useIsAuthUserPack'; -import { usePackId } from 'app/hooks/packs/usePackId'; +import { + useIsAuthUserPack, + usePackId, + useFetchSinglePack, + TableContainer, +} from 'app/modules/pack'; import useResponsive from 'app/hooks/useResponsive'; import { FlatList, View } from 'react-native'; -import { useFetchSinglePack } from '../../hooks/packs'; -import ScoreContainer from '../ScoreContainer'; +import ScoreContainer from '../../../components/ScoreContainer'; // import ChatContainer from '../chat'; import { TextLink } from '@packrat/crosspath'; -import { DetailsComponent } from '../details'; -import { TableContainer } from '../pack_table/Table'; -import { AddItemModal } from './AddItemModal'; -import { ImportItemModal } from './ImportItemModal'; +import { DetailsComponent } from '../../../components/details'; +import { ImportItemModal, AddItemModal } from 'app/modules/item'; +import { FeedPreview } from 'app/modules/feed'; +import LargeCard from 'app/components/card/LargeCard'; +import useTheme from 'app/hooks/useTheme'; const SECTION = { TABLE: 'TABLE', CTA: 'CTA', SCORECARD: 'SCORECARD', CHAT: 'CHAT', + SIMILAR_ITEMS: 'SIMILAR_ITEMS', }; -export function PackDetails() { +export function PackDetailsScreen() { + const { currentTheme } = useTheme(); // const [canCopy, setCanCopy] = useParam('canCopy') const canCopy = false; const [packId] = usePackId(); @@ -54,12 +60,12 @@ export function PackDetails() { if (isLoading) return Loading...; return ( - + {!isError && ( val} renderItem={({ item }) => { switch (item[1]) { @@ -141,6 +147,35 @@ export function PackDetails() { /> ); + case SECTION.SIMILAR_ITEMS: + return ( + + + Similar Packs + + + + ); default: return null; } diff --git a/packages/app/modules/pack/screens/index.ts b/packages/app/modules/pack/screens/index.ts new file mode 100644 index 000000000..9e798df21 --- /dev/null +++ b/packages/app/modules/pack/screens/index.ts @@ -0,0 +1,2 @@ +export { AddPackScreen } from './AddPackScreen'; +export { PackDetailsScreen } from './PackDetailsScreen'; diff --git a/packages/app/modules/pack/widgets/AddPackContainer.tsx b/packages/app/modules/pack/widgets/AddPackContainer.tsx new file mode 100644 index 000000000..6c21aa29b --- /dev/null +++ b/packages/app/modules/pack/widgets/AddPackContainer.tsx @@ -0,0 +1,25 @@ +import React from 'react'; +import { BaseModal, useModal } from '@packrat/ui'; +import { AddPackForm } from '../components'; + +export const AddPackContainer = ({ + isCreatingTrip, +}: { + isCreatingTrip: boolean; +}) => { + return ( + + + + ); +}; + +const PackModalContent = ({ isCreatingTrip }: { isCreatingTrip?: boolean }) => { + const { setIsModalOpen } = useModal(); + return ( + setIsModalOpen(false)} + /> + ); +}; diff --git a/packages/app/components/pack/PackContainer.tsx b/packages/app/modules/pack/widgets/PackContainer.tsx similarity index 88% rename from packages/app/components/pack/PackContainer.tsx rename to packages/app/modules/pack/widgets/PackContainer.tsx index ab8700f2a..10bb5ecad 100644 --- a/packages/app/components/pack/PackContainer.tsx +++ b/packages/app/modules/pack/widgets/PackContainer.tsx @@ -1,13 +1,9 @@ import { useEffect, useState } from 'react'; -import { AddItem } from '../item/AddItem'; -import { TableContainer } from '../pack_table/Table'; -import { useUserPacks } from '../../hooks/packs/useUserPacks'; import { View } from 'react-native'; -import { AddItemModal } from './AddItemModal'; +import { AddItemModal } from 'app/modules/item'; import useCustomStyles from 'app/hooks/useCustomStyles'; -import { useAuthUser } from 'app/auth/hooks'; -import { usePackId } from 'app/hooks/packs'; -import { createParam } from '@packrat/crosspath'; +import { useAuthUser } from 'app/modules/auth'; +import { usePackId, useUserPacks, TableContainer } from 'app/modules/pack'; import { DropdownComponent } from '@packrat/ui'; export default function PackContainer({ isCreatingTrip = false }) { diff --git a/packages/app/modules/trip/hooks/index.ts b/packages/app/modules/trip/hooks/index.ts new file mode 100644 index 000000000..d2facdf71 --- /dev/null +++ b/packages/app/modules/trip/hooks/index.ts @@ -0,0 +1 @@ +export { useUserTrips } from './useUserTrips'; diff --git a/packages/app/modules/trip/hooks/useUserTrips.ts b/packages/app/modules/trip/hooks/useUserTrips.ts new file mode 100644 index 000000000..ca731a001 --- /dev/null +++ b/packages/app/modules/trip/hooks/useUserTrips.ts @@ -0,0 +1,23 @@ +import { queryTrpc } from 'app/trpc'; + +export const useUserTrips = (ownerId: string | undefined) => { + // If ownerId is not provided, donā€™t run the query. + const enabled = !!ownerId; + + // Leverage the query hook provided by tRPC + const { data, error, isLoading, refetch } = queryTrpc.getTrips.useQuery( + { owner_id: ownerId }, + { + enabled, // This query will run only if 'enabled' is true. + refetchOnWindowFocus: false, + keepPreviousData: true, + }, + ); + + console.log('data', data); + + // Extract trips or set an empty array if data is undefined. + // const trips = data?.trips || []; + + return { data, error, isLoading, refetch }; +}; diff --git a/packages/app/modules/trip/index.ts b/packages/app/modules/trip/index.ts new file mode 100644 index 000000000..fc736deaa --- /dev/null +++ b/packages/app/modules/trip/index.ts @@ -0,0 +1 @@ +export { useUserTrips } from './hooks'; diff --git a/packages/app/components/user/UserDataCard.tsx b/packages/app/modules/user/components/UserDataCard.tsx similarity index 96% rename from packages/app/components/user/UserDataCard.tsx rename to packages/app/modules/user/components/UserDataCard.tsx index 7a44c85c8..fdbe319ac 100644 --- a/packages/app/components/user/UserDataCard.tsx +++ b/packages/app/modules/user/components/UserDataCard.tsx @@ -10,8 +10,8 @@ import { RLink, RSkeleton, } from '@packrat/ui'; -import { truncateString } from '../../utils/truncateString'; -import { useEditPack } from 'app/hooks/packs'; +import { truncateString } from 'app/utils/truncateString'; +import { useEditPack } from 'app/modules/pack'; import { Platform } from 'react-native'; import { useEditTrips } from 'app/hooks/trips'; import { useAddFavorite } from 'app/hooks/favorites'; @@ -35,7 +35,7 @@ interface UserDataCardProps { isFavorite: boolean; } -const UserDataCard = ({ +export const UserDataCard = ({ type, // "pack" or "trip" destination, id, @@ -238,7 +238,9 @@ const UserDataCard = ({ /> - {favorites_count} + + {favorites_count} +
@@ -255,5 +257,3 @@ const UserDataCard = ({
); }; - -export default UserDataCard; diff --git a/packages/app/components/user/UserDetailList.tsx b/packages/app/modules/user/components/UserDetailList.tsx similarity index 82% rename from packages/app/components/user/UserDetailList.tsx rename to packages/app/modules/user/components/UserDetailList.tsx index ad802bacc..5fa4aa831 100644 --- a/packages/app/components/user/UserDetailList.tsx +++ b/packages/app/modules/user/components/UserDetailList.tsx @@ -1,13 +1,10 @@ import React, { useRef, useMemo, useState } from 'react'; import { View, FlatList, Platform } from 'react-native'; -import Card from '../../components/feed/FeedCard'; -import SearchFilter from '../../components/feed/FeedSearchFilter'; -import { fuseSearch } from '../../utils/fuseSearch'; -import { BaseDialog as OriginalBaseDialog, BaseModal } from '@packrat/ui'; +import { FeedCard, FeedSearchFilter } from 'app/modules/feed'; +import { fuseSearch } from 'app/utils/fuseSearch'; +import { BaseDialog, BaseModal } from '@packrat/ui'; // import BottomSheet from '@gorhom/bottom-sheet'; -const BaseDialog: any = OriginalBaseDialog; - interface DataItem { _id: string; type: string; @@ -17,7 +14,7 @@ interface DataListProps { data: DataItem[]; } -const DataList = ({ data }: DataListProps) => { +export const UserDataList = ({ data }: DataListProps) => { const [searchQuery, setSearchQuery] = useState(''); const keys = ['name', 'items.name', 'items.category']; const options = { @@ -55,7 +52,7 @@ const DataList = ({ data }: DataListProps) => { footerComponent={undefined} > - { horizontal={false} keyExtractor={(item) => item?.id} renderItem={({ item }) => ( - + )} showsVerticalScrollIndicator={false} maxToRenderPerBatch={2} @@ -86,7 +83,7 @@ const DataList = ({ data }: DataListProps) => { ]} footerComponent={undefined} > - { horizontal={false} keyExtractor={(item) => item?._id} renderItem={({ item }) => ( - + )} showsVerticalScrollIndicator={false} maxToRenderPerBatch={2} @@ -108,5 +105,3 @@ const DataList = ({ data }: DataListProps) => { ); }; - -export default DataList; diff --git a/packages/app/modules/user/components/index.ts b/packages/app/modules/user/components/index.ts new file mode 100644 index 000000000..c7b889de8 --- /dev/null +++ b/packages/app/modules/user/components/index.ts @@ -0,0 +1,2 @@ +export { UserDataCard } from './UserDataCard'; +export { UserDataList } from './UserDetailList'; diff --git a/packages/app/hooks/user/index.ts b/packages/app/modules/user/hooks/index.ts similarity index 64% rename from packages/app/hooks/user/index.ts rename to packages/app/modules/user/hooks/index.ts index 1a2178874..ccaec0f62 100644 --- a/packages/app/hooks/user/index.ts +++ b/packages/app/modules/user/hooks/index.ts @@ -2,3 +2,5 @@ export { useGetUser } from './useGetUser'; export { useProfile } from './useProfile'; export { useProfileSettings } from './useProfileSettings'; export { useProfileId } from './useProfileId'; +export { useDeleteProfile } from './useDeleteProfile'; +export { useUpdateUser } from './useUpdateUser'; diff --git a/packages/app/hooks/user/useDeleteProfile.ts b/packages/app/modules/user/hooks/useDeleteProfile.ts similarity index 80% rename from packages/app/hooks/user/useDeleteProfile.ts rename to packages/app/modules/user/hooks/useDeleteProfile.ts index f259820fb..db65ab8ae 100644 --- a/packages/app/hooks/user/useDeleteProfile.ts +++ b/packages/app/modules/user/hooks/useDeleteProfile.ts @@ -1,5 +1,5 @@ -import { queryTrpc } from '../../trpc'; -import { useAuthUser } from '../../auth/hooks/useUser'; +import { queryTrpc } from 'app/trpc'; +import { useAuthUser } from 'app/modules/auth'; import { logoutAuthUser } from 'app/utils/userUtils'; export const useDeleteProfile = () => { diff --git a/packages/app/hooks/user/useGetUser.ts b/packages/app/modules/user/hooks/useGetUser.ts similarity index 92% rename from packages/app/hooks/user/useGetUser.ts rename to packages/app/modules/user/hooks/useGetUser.ts index c1de59c18..9f917fa72 100644 --- a/packages/app/hooks/user/useGetUser.ts +++ b/packages/app/modules/user/hooks/useGetUser.ts @@ -1,4 +1,4 @@ -import { queryTrpc } from '../../trpc'; +import { queryTrpc } from 'app/trpc'; export const useGetUser = (userId: string) => { // If userId is not provided, donā€™t run the query. diff --git a/packages/app/hooks/user/useProfile.ts b/packages/app/modules/user/hooks/useProfile.ts similarity index 85% rename from packages/app/hooks/user/useProfile.ts rename to packages/app/modules/user/hooks/useProfile.ts index 886b5b462..938b2a0e4 100644 --- a/packages/app/hooks/user/useProfile.ts +++ b/packages/app/modules/user/hooks/useProfile.ts @@ -1,8 +1,7 @@ -import { useFetchUserFavorites } from '../favorites'; -import { useUserPacks } from '../packs'; -import { useUserTrips } from '../singletrips'; -import { useMatchesCurrentUser } from '../useMatchesCurrentUser'; -import { useAuthUser } from '../../auth/hooks'; +import { useFetchUserFavorites } from 'app/hooks/favorites'; +import { useUserPacks } from 'app/modules/pack'; +import { useUserTrips } from 'app/hooks/singletrips'; +import { useAuthUser, useMatchesCurrentUser } from 'app/modules/auth'; import { useGetUser } from './useGetUser'; export const useProfile = (id = null) => { diff --git a/packages/app/hooks/user/useProfileId.ts b/packages/app/modules/user/hooks/useProfileId.ts similarity index 100% rename from packages/app/hooks/user/useProfileId.ts rename to packages/app/modules/user/hooks/useProfileId.ts diff --git a/packages/app/hooks/user/useProfileSettings.ts b/packages/app/modules/user/hooks/useProfileSettings.ts similarity index 95% rename from packages/app/hooks/user/useProfileSettings.ts rename to packages/app/modules/user/hooks/useProfileSettings.ts index e10f87cd3..19b4bc554 100644 --- a/packages/app/hooks/user/useProfileSettings.ts +++ b/packages/app/modules/user/hooks/useProfileSettings.ts @@ -1,6 +1,6 @@ import { useState } from 'react'; import { useUpdateUser } from './useUpdateUser'; -import { useAuthUser, useUserQuery } from '../../auth/hooks'; +import { useUserQuery } from 'app/modules/auth'; import { useUpdateUserPassword } from './useUpdateUserPassword'; const PROFILE_SETTINGS_DEFAULTS = { diff --git a/packages/app/hooks/user/useUpdateUser.ts b/packages/app/modules/user/hooks/useUpdateUser.ts similarity index 92% rename from packages/app/hooks/user/useUpdateUser.ts rename to packages/app/modules/user/hooks/useUpdateUser.ts index 74ab06937..cff449bc7 100644 --- a/packages/app/hooks/user/useUpdateUser.ts +++ b/packages/app/modules/user/hooks/useUpdateUser.ts @@ -1,4 +1,4 @@ -import { useUserSetter } from 'app/auth/hooks'; +import { useUserSetter } from 'app/modules/auth'; import { queryTrpc } from 'app/trpc'; export const useUpdateUser = () => { diff --git a/packages/app/hooks/user/useUpdateUserPassword.ts b/packages/app/modules/user/hooks/useUpdateUserPassword.ts similarity index 100% rename from packages/app/hooks/user/useUpdateUserPassword.ts rename to packages/app/modules/user/hooks/useUpdateUserPassword.ts diff --git a/packages/app/modules/user/index.ts b/packages/app/modules/user/index.ts new file mode 100644 index 000000000..991eb0a99 --- /dev/null +++ b/packages/app/modules/user/index.ts @@ -0,0 +1,2 @@ +export * from './hooks'; +export * from './screens'; diff --git a/packages/app/modules/user/screens/ProfileScreen.tsx b/packages/app/modules/user/screens/ProfileScreen.tsx new file mode 100644 index 000000000..979bed92e --- /dev/null +++ b/packages/app/modules/user/screens/ProfileScreen.tsx @@ -0,0 +1,8 @@ +import { ProfileContainer } from '../widgets'; + +interface ProfileScreenProps { + userId?: string; +} +export const ProfileScreen = ({ userId }: ProfileScreenProps) => { + return ; +}; diff --git a/packages/app/screens/user/Settings.tsx b/packages/app/modules/user/screens/SettingsScreen.tsx similarity index 97% rename from packages/app/screens/user/Settings.tsx rename to packages/app/modules/user/screens/SettingsScreen.tsx index 636de4798..719ef9e58 100644 --- a/packages/app/screens/user/Settings.tsx +++ b/packages/app/modules/user/screens/SettingsScreen.tsx @@ -17,7 +17,7 @@ import { RSpinner, } from '@packrat/ui'; import Avatar from 'app/components/Avatar/Avatar'; -import { useProfileSettings } from 'app/hooks/user'; +import { useProfileSettings, useDeleteProfile } from '../hooks'; import useTheme from 'app/hooks/useTheme'; import { userSettingsSchema, @@ -26,7 +26,6 @@ import { } from '@packrat/validations'; import { Platform, View } from 'react-native'; import { useNavigate } from 'app/hooks/navigation'; -import { useDeleteProfile } from '../../hooks/user/useDeleteProfile'; const weatherOptions = ['celsius', 'fahrenheit'].map((key) => ({ label: key, @@ -38,7 +37,7 @@ const weightOptions = ['lb', 'oz', 'kg', 'g'].map((key) => ({ value: key, })); -export default function Settings() { +export function SettingsScreen() { const { user, handleEditUser, handleUpdatePassword } = useProfileSettings(); const { deleteProfile, isLoading } = useDeleteProfile(); diff --git a/packages/app/modules/user/screens/index.ts b/packages/app/modules/user/screens/index.ts new file mode 100644 index 000000000..3d7dae14a --- /dev/null +++ b/packages/app/modules/user/screens/index.ts @@ -0,0 +1,2 @@ +export { ProfileScreen } from './ProfileScreen'; +export { SettingsScreen } from './SettingsScreen'; diff --git a/packages/app/screens/user/ProfileContainer.tsx b/packages/app/modules/user/widgets/ProfileContainer.tsx similarity index 91% rename from packages/app/screens/user/ProfileContainer.tsx rename to packages/app/modules/user/widgets/ProfileContainer.tsx index ad0e30134..43c44192d 100644 --- a/packages/app/screens/user/ProfileContainer.tsx +++ b/packages/app/modules/user/widgets/ProfileContainer.tsx @@ -7,14 +7,14 @@ import { RSkeleton, } from '@packrat/ui'; import { ScrollView } from 'react-native-gesture-handler'; -import UserDataContainer from '../../components/user/UserDataContainer'; -import useTheme from '../../hooks/useTheme'; +import { UserDataContainer } from './UserDataContainer'; +import useTheme from '../../../hooks/useTheme'; import { MaterialCommunityIcons } from '@expo/vector-icons'; // import useGetPacks from "../../hooks/useGetPacks"; import { useRouter } from 'app/hooks/router'; import useCustomStyles from 'app/hooks/useCustomStyles'; -import Avatar from '../../components/Avatar/Avatar'; -import { useProfile } from 'app/hooks/user'; +import Avatar from '../../../components/Avatar/Avatar'; +import { useProfile } from '../hooks'; import Layout from 'app/components/layout/Layout'; const RText: any = OriginalRText; @@ -122,26 +122,30 @@ const Header = ({ {tripsCount} - Packs - + Packs + {packsCount} - Favorites - + + Favorites + + {favoritesCount} - Certified + + Certified + @@ -182,7 +186,7 @@ const SkeletonUserDataCard = () => { ); }; -export default function ProfileContainer({ id = null }) { +export function ProfileContainer({ id = null }) { const { currentTheme } = useTheme(); const styles = useCustomStyles(loadStyles); const { @@ -243,7 +247,7 @@ export default function ProfileContainer({ id = null }) { No favorites yet @@ -316,7 +320,7 @@ const loadStyles = (theme) => { }, userEmail: { fontSize: 16, - color: currentTheme.colors.textDarkGrey, + color: currentTheme.colors.whiteDarkGrey, textAlign: 'center', }, card: { diff --git a/packages/app/components/user/UserDataContainer.tsx b/packages/app/modules/user/widgets/UserDataContainer.tsx similarity index 90% rename from packages/app/components/user/UserDataContainer.tsx rename to packages/app/modules/user/widgets/UserDataContainer.tsx index a56e5ce5d..887e726b4 100644 --- a/packages/app/components/user/UserDataContainer.tsx +++ b/packages/app/modules/user/widgets/UserDataContainer.tsx @@ -1,16 +1,15 @@ import { RLink } from '@packrat/ui'; import { RStack, RText, RButton, RSkeleton } from '@packrat/ui'; import { VirtualizedList } from 'react-native'; -import UserDataCard from './UserDataCard'; +import { UserDataCard, UserDataList } from '../components'; import React, { useEffect, useState } from 'react'; -import LargeCard from '../card/LargeCard'; -import useTheme from '../../hooks/useTheme'; +import LargeCard from 'app/components/card/LargeCard'; +import useTheme from 'app/hooks/useTheme'; import { hexToRGBA } from 'app/utils/colorFunctions'; import { View } from 'react-native'; -import { useAuthUser } from 'app/auth/hooks'; -import DataList from './UserDetailList'; +import { useAuthUser } from 'app/modules/auth'; import Layout from 'app/components/layout/Layout'; -import { SearchProvider } from 'app/components/feed/SearchProvider'; +import { SearchProvider } from 'app/modules/feed'; // Skeleton version of the UserDataCard component const SkeletonUserDataCard = () => { @@ -34,7 +33,7 @@ interface UserDataContainerProps { SkeletonComponent?: React.ReactElement; } -export default function UserDataContainer({ +export function UserDataContainer({ data = [], type, userId, @@ -107,7 +106,7 @@ export default function UserDataContainer({ textTransform: 'capitalize', fontSize: 24, fontWeight: 'bold', - color: currentTheme.colors.textColor, + color: currentTheme.colors.tertiaryBlue, }} > {differentUser ? `${typeUppercase}` : `Your ${typeUppercase}`} @@ -144,7 +143,7 @@ export default function UserDataContainer({ /> - + ) : currentUser?.id === userId ? ( diff --git a/packages/app/modules/user/widgets/index.ts b/packages/app/modules/user/widgets/index.ts new file mode 100644 index 000000000..1ac21617b --- /dev/null +++ b/packages/app/modules/user/widgets/index.ts @@ -0,0 +1,2 @@ +export { UserDataContainer } from './UserDataContainer'; +export { ProfileContainer } from './ProfileContainer'; diff --git a/packages/app/screens/LoginScreen.tsx b/packages/app/screens/LoginScreen.tsx deleted file mode 100644 index 15fc8dd6d..000000000 --- a/packages/app/screens/LoginScreen.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import React, { useState } from 'react'; -import { View } from 'react-native'; -import { RStack, RScrollView } from '@packrat/ui'; -import useTheme from '../hooks/useTheme'; -import { useGoogleAuth, useLogin } from 'app/auth/hooks'; -import { SignInScreen } from '@packrat/ui/src/Bento/forms/layouts'; - -const demoUser = { - email: 'zoot3@email.com', - password: '12345678', -}; - -export default function Login() { - const { enableGoogleLogin, isGoogleSignInReady, promptAsync } = - useGoogleAuth(); - - function useSignIn() { - const [status, setStatus] = useState<'idle' | 'loading' | 'success'>( - 'idle', - ); - const { handleLogin } = useLogin(); - return { - signInStatus: status, - signIn: async (data) => { - await setStatus('loading'); - await handleLogin(data); - setStatus('idle'); - }, - }; - } - - const { signIn, signInStatus } = useSignIn(); - const { currentTheme } = useTheme(); - - return ( - - - - - - - - - - ); -} diff --git a/packages/app/screens/about/AboutContent.tsx b/packages/app/screens/about/AboutContent.tsx index 27e2767f4..d6c34051e 100644 --- a/packages/app/screens/about/AboutContent.tsx +++ b/packages/app/screens/about/AboutContent.tsx @@ -37,7 +37,10 @@ const AboutContent = ({ desktopContainer, isMobile }: AboutContentProps) => { {aboutSections.map((section, index) => ( - + {section} ))} @@ -50,14 +53,16 @@ const AboutContent = ({ desktopContainer, isMobile }: AboutContentProps) => { style={[isDark ? styles.githubIconDark : styles.githubIcon]} /> View on GitHub - Privacy Policy + + Privacy Policy + {/*