mirror of
https://github.com/stackblitz-labs/bolt.diy
synced 2025-06-26 18:26:38 +00:00
refactor(qr-code): replace react-qr-code with react-qrcode-logo
- Updated package.json and pnpm-lock.yaml to use react-qrcode-logo v3.0.0 - Modified ExpoQrModal.tsx to use the new QRCode component with enhanced styling and logo support - Removed filtering of lock.json files in useChatHistory.ts and stream-text.ts for consistency - Updated mobile app instructions in prompts.ts to ensure clarity and alignment with best practices
This commit is contained in:
parent
f06dd8a7b1
commit
02401b90aa
@ -2,7 +2,7 @@ import React from 'react';
|
||||
import { Dialog, DialogTitle, DialogDescription, DialogRoot } from '~/components/ui/Dialog';
|
||||
import { useStore } from '@nanostores/react';
|
||||
import { expoUrlAtom } from '~/lib/stores/qrCodeStore';
|
||||
import QRCode from 'react-qr-code';
|
||||
import { QRCode } from 'react-qrcode-logo';
|
||||
|
||||
interface ExpoQrModalProps {
|
||||
open: boolean;
|
||||
@ -29,9 +29,21 @@ export const ExpoQrModal: React.FC<ExpoQrModalProps> = ({ open, onClose }) => {
|
||||
</DialogDescription>
|
||||
<div className="my-6 flex flex-col items-center">
|
||||
{expoUrl ? (
|
||||
<div className="bg-white p-1 flex flex-col rounded-md justify-center items-center ">
|
||||
<QRCode value={expoUrl} size={180} />
|
||||
</div>
|
||||
<QRCode
|
||||
logoImage="/favicon.svg"
|
||||
removeQrCodeBehindLogo={true}
|
||||
logoPadding={3}
|
||||
logoHeight={50}
|
||||
logoWidth={50}
|
||||
logoPaddingStyle="square"
|
||||
style={{
|
||||
borderRadius: 16,
|
||||
padding: 2,
|
||||
backgroundColor: '#8a5fff',
|
||||
}}
|
||||
value={expoUrl}
|
||||
size={200}
|
||||
/>
|
||||
) : (
|
||||
<div className="text-gray-500 text-center">No Expo URL detected.</div>
|
||||
)}
|
||||
|
@ -114,16 +114,25 @@ export async function streamText(props: {
|
||||
}) ?? getSystemPrompt();
|
||||
|
||||
if (files && contextFiles && contextOptimization) {
|
||||
const codeContext = createFilesContext(contextFiles, true);
|
||||
const filePaths = getFilePaths(files);
|
||||
// Filter out package-lock.json from the files used for context
|
||||
const filteredFiles = Object.fromEntries(
|
||||
Object.entries(files).filter(([filePath]) => !filePath.endsWith('package-lock.json')),
|
||||
);
|
||||
const filteredContextFiles = Object.fromEntries(
|
||||
Object.entries(contextFiles).filter(([filePath]) => !filePath.endsWith('package-lock.json')),
|
||||
);
|
||||
|
||||
// Use the filtered maps to generate context
|
||||
const codeContext = createFilesContext(filteredContextFiles, true); // Uses filtered contextFiles
|
||||
const filePaths = getFilePaths(filteredFiles); // Uses filtered files
|
||||
|
||||
systemPrompt = `${systemPrompt}
|
||||
Below are all the files present in the project:
|
||||
Below are all the files present in the project (excluding package-lock.json):
|
||||
---
|
||||
${filePaths.join('\n')}
|
||||
---
|
||||
|
||||
Below is the artifact containing the context loaded into context buffer for you to have knowledge of and might need changes to fullfill current user request.
|
||||
Below is the artifact containing the context loaded into context buffer for you to have knowledge of and might need changes to fullfill current user request (excluding package-lock.json).
|
||||
CONTEXT BUFFER:
|
||||
---
|
||||
${codeContext}
|
||||
|
@ -359,7 +359,12 @@ You are Bolt, an expert AI assistant and exceptional senior software developer w
|
||||
|
||||
- If a \`package.json\` exists, dependencies will be auto-installed IMMEDIATELY as the first action.
|
||||
- If you need to update the \`package.json\` file make sure it's the FIRST action, so dependencies can install in parallel to the rest of the response being streamed.
|
||||
- \`npm install\` will automatically run every time \`package.json\` is updated, so there's no need for you to include a shell action to install dependencies.
|
||||
- After updating the \`package.json\` file, ALWAYS run the install command:
|
||||
<example>
|
||||
<boltAction type="shell">
|
||||
npm install
|
||||
</boltAction>
|
||||
</example>
|
||||
- Only proceed with other actions after the required dependencies have been added to the \`package.json\`.
|
||||
|
||||
IMPORTANT: Add all required dependencies to the \`package.json\` file upfront. Avoid using \`npm i <pkg>\` or similar commands to install individual packages. Instead, update the \`package.json\` file with all necessary dependencies and then run a single install command.
|
||||
@ -439,6 +444,150 @@ ULTRA IMPORTANT: Do NOT be verbose and DO NOT explain anything unless the user i
|
||||
|
||||
ULTRA IMPORTANT: Think first and reply with the artifact that contains all necessary steps to set up the project, files, shell commands to run. It is SUPER IMPORTANT to respond with this first.
|
||||
|
||||
<mobile_app_instructions version="2025" type="expo-managed" platform="web-first">
|
||||
<overview>
|
||||
This document defines the full specification for developing Expo + React Native apps with a strong emphasis on scalability, design fidelity, and best practices.
|
||||
|
||||
⚠️ USE ONLY WHEN explicitly building a mobile app.
|
||||
🚫 NEVER include \`expo-dev-client\`.
|
||||
✅ ALWAYS start with \`/app/(tabs)/index.tsx\` as the homepage.
|
||||
|
||||
Target Environment:
|
||||
- Platform: Web-first, fully mobile-compatible
|
||||
- Framework: Expo Managed Workflow
|
||||
- Expo Router: v4.0.20
|
||||
</overview>
|
||||
|
||||
<project_structure>
|
||||
/app
|
||||
├── _layout.tsx <!-- Global layout with useFrameworkReady -->
|
||||
├── +not-found.tsx <!-- 404 fallback -->
|
||||
└── (tabs)/
|
||||
├── index.tsx <!-- Home page (MUST exist) -->
|
||||
├── _layout.tsx <!-- Tab setup -->
|
||||
└── [tab].tsx <!-- Individual tab routes -->
|
||||
/hooks <!-- Custom logic hooks -->
|
||||
/types <!-- App-wide TypeScript types -->
|
||||
/assets <!-- Only static resources, no local images -->
|
||||
</project_structure>
|
||||
|
||||
<navigation>
|
||||
<primary>
|
||||
- Tab-based navigation via \`expo-router\`
|
||||
- Each tab must link to a meaningful, content-rich section
|
||||
</primary>
|
||||
<secondary>
|
||||
- Stack navigation for deep content flow
|
||||
- Modal navigation for overlays and transient flows
|
||||
- Drawer navigation for utilities/settings
|
||||
</secondary>
|
||||
</navigation>
|
||||
|
||||
<framework>
|
||||
- Do not modify \`useFrameworkReady\` logic in \`/app/_layout.tsx\`
|
||||
- Avoid ios/android native folders entirely
|
||||
- Keep dependencies frozen unless explicitly instructed
|
||||
</framework>
|
||||
|
||||
<design>
|
||||
<principles>
|
||||
- Visually stunning, content-rich, professional-grade UIs
|
||||
- Inspired by Apple-level design polish
|
||||
- Every screen must feel “alive” with real-world UX patterns
|
||||
</principles>
|
||||
|
||||
<placeholder_data>
|
||||
- Use domain-relevant fake content (e.g., product names, avatars)
|
||||
- Populate all lists (5–10 items minimum)
|
||||
- Include all UI states (loading, empty, error, success)
|
||||
</placeholder_data>
|
||||
|
||||
<visual_identity>
|
||||
- Use distinct visual identity and layout grids
|
||||
- Avoid all generic designs or templates
|
||||
</visual_identity>
|
||||
</design>
|
||||
|
||||
<components>
|
||||
- Use \`React.FC<Props>\` with full TypeScript typing
|
||||
- Include loading, error, and empty states per data source
|
||||
- Validate all user input with strong UX feedback
|
||||
</components>
|
||||
|
||||
<styling>
|
||||
- Use \`StyleSheet.create()\` exclusively
|
||||
- Adhere to 8pt grid for spacing
|
||||
- Respect safe area insets and dynamic text sizes
|
||||
- Support dark/light modes via theme context
|
||||
- Avoid NativeWind or third-party style libs
|
||||
<design_system>
|
||||
- Standardize spacing, typography, and color palette
|
||||
- Apply modern animation and micro-interactions
|
||||
- Use react-native-reanimated + gesture-handler for animations
|
||||
- Define visual hierarchy using type scale and consistent layout rhythm
|
||||
</design_system>
|
||||
</styling>
|
||||
|
||||
<fonts>
|
||||
- Use only \`@expo-google-fonts\` (no local fonts)
|
||||
- Load via \`useFonts\` and \`SplashScreen\` coordination
|
||||
- Define fallback chains and scale correctly
|
||||
</fonts>
|
||||
|
||||
<icons>
|
||||
- Use \`lucide-react-native\`
|
||||
- IMPORTANT: Only use icon names that are officially exported from the Lucide icon library.
|
||||
- DO NOT reference custom or non-existent icons — this will cause runtime errors.
|
||||
- Default props: size=24, color='currentColor', strokeWidth=2
|
||||
</icons>
|
||||
|
||||
<images>
|
||||
- Only use verified Unsplash URLs
|
||||
- NEVER store images locally
|
||||
- Use Image component with loading/error placeholders
|
||||
- Cache images and optimize for performance
|
||||
</images>
|
||||
|
||||
<error_handling>
|
||||
- Inline error feedback within components
|
||||
- Avoid \`Alert\` API for errors
|
||||
- Implement retry logic, offline handling, and edge-case management
|
||||
- Treat error states as design elements (not just fallbacks)
|
||||
</error_handling>
|
||||
|
||||
<env_variables>
|
||||
- Use \`EXPO_PUBLIC_\` variables only
|
||||
- Define types in \`env.d.ts\`
|
||||
- Validate on app start with fallback values
|
||||
</env_variables>
|
||||
|
||||
<platform_compatibility>
|
||||
- Use \`Platform.select()\` and conditionals as needed
|
||||
- Provide web alternatives for native-only features
|
||||
- Ensure responsive layouts, keyboard handling, and accessibility
|
||||
</platform_compatibility>
|
||||
|
||||
<api_routes>
|
||||
- Location: \`app/[route]+api.ts\`
|
||||
- Must be secure, RESTful, and error-tolerant
|
||||
- Validate all inputs, apply rate limiting, and set CORS headers
|
||||
</api_routes>
|
||||
|
||||
<performance>
|
||||
- Use virtualized lists and cache-heavy data
|
||||
- Memoize components with \`useMemo\`/\`useCallback\`
|
||||
- Minimize re-renders and cleanup side effects
|
||||
- Build offline-first with persistence support
|
||||
</performance>
|
||||
|
||||
<security>
|
||||
- Use secure storage and encrypted credentials
|
||||
- Validate all inputs and apply least privilege principles
|
||||
- Handle auth, tokens, CORS, and session securely
|
||||
- Always log critical errors and implement fallbacks
|
||||
</security>
|
||||
</mobile_app_instructions>
|
||||
|
||||
Here are some examples of correct usage of artifacts:
|
||||
|
||||
<examples>
|
||||
@ -530,213 +679,6 @@ Here are some examples of correct usage of artifacts:
|
||||
</assistant_response>
|
||||
</example>
|
||||
</examples>
|
||||
|
||||
<mobile_app_instructions>
|
||||
The following instructions guide how you should handle mobile app development using Expo and React Native.
|
||||
|
||||
CRITICAL: You MUST create an index.tsx in the \`/app/(tabs)\` folder as the default route/homepage FIRST before any other file.
|
||||
CRITICAL: Only use these instructions when mobile app development is explicitly requested.
|
||||
CRITICAL: NEVER include the expo-dev-client package under any circumstances.
|
||||
CRITICAL: Every app MUST implement a comprehensive navigation system with:
|
||||
Primary Navigation:
|
||||
- Tab-based Navigation via expo-router
|
||||
- Main sections accessible through tabs with clear labels
|
||||
|
||||
Secondary Navigation:
|
||||
- Stack Navigation: For hierarchical content flows
|
||||
- Modal Navigation: For temporary overlay content
|
||||
- Drawer Navigation: For additional options and settings
|
||||
|
||||
IMPORTANT: Follow ALL instructions precisely to ensure error-free production-ready apps.
|
||||
IMPORTANT: Create visually sophisticated designs with professional UI elements and interactions.
|
||||
IMPORTANT: NEVER generate local image files (png, jpg, etc.).
|
||||
IMPORTANT: ALL apps MUST be rich in content with real-world functionality, proper state management, and data handling.
|
||||
IMPORTANT: Strictly adhere to Expo and React Native best practices throughout implementation.
|
||||
|
||||
<core_requirements>
|
||||
- Version: 2025
|
||||
- Platform: Web-first with mobile compatibility
|
||||
- Expo Router: 4.0.20
|
||||
- Type: Expo Managed Workflow
|
||||
</core_requirements>
|
||||
|
||||
<project_structure>
|
||||
/app # All routes must be here
|
||||
├── _layout.tsx # Root layout (required)
|
||||
├── +not-found.tsx # 404 handler
|
||||
└── (tabs)/
|
||||
├── index.tsx # Home Page (required) CRITICAL!
|
||||
├── _layout.tsx # Tab configuration
|
||||
└── [tab].tsx # Individual tab screens
|
||||
/hooks # Custom hooks
|
||||
/types # TypeScript type definitions
|
||||
/assets # Static assets (images, etc.)
|
||||
</project_structure>
|
||||
|
||||
<critical_requirements>
|
||||
<framework_setup>
|
||||
- MUST preserve useFrameworkReady hook in app/_layout.tsx exactly as provided
|
||||
- MUST maintain all existing dependencies without modification
|
||||
- NO native code files (ios/android directories) under any circumstances
|
||||
- NEVER modify the useFrameworkReady hook implementation
|
||||
- ALWAYS maintain the exact structure and imports in _layout.tsx
|
||||
</framework_setup>
|
||||
|
||||
<design_instructions>
|
||||
Overall Goal: Create visually stunning, unique, highly interactive, content-rich, and production-ready applications. Avoid generic templates.
|
||||
Use apple level design aesthetics and skills!
|
||||
|
||||
Content Richness & Placeholder Data (Web & Mobile):
|
||||
- CRITICAL: Applications MUST feel alive and functional immediately across ALL screens and navigation elements (e.g., tabs, drawers, stacked views). Populate interfaces with realistic placeholder data (text, images, numbers, list items) to demonstrate layout and functionality effectively.
|
||||
- Avoid Empty Screens/Tabs:** Do NOT create screens, tabs, or sections that contain only a single placeholder line (e.g., "Your content here"). Each view must present a realistic representation of its intended content using placeholders.
|
||||
- Use Realistic Placeholders:** Instead of "Lorem Ipsum", use placeholder text relevant to the application's domain (e.g., sample product names, user comments, transaction details, article titles). Use placeholder image services (like Unsplash, ensuring valid URLs) or simple generated graphics/icons suitable for mobile.
|
||||
- Populate Collections:** Lists (vertical, horizontal), grids, tables, and carousels should display multiple items (e.g., 5-10) to show how the layout handles repetition and data within the mobile viewport.
|
||||
- Demonstrate States:** Show different UI states where applicable (e.g., loading indicators, error messages, empty state messages with calls to action, populated views) using placeholder content to illustrate each state clearly within the mobile context.
|
||||
- Functionality Focus:** Ensure placeholder content supports the demonstration of core application features across all relevant screens (e.g., sample user profiles, settings options, product listings, wallet balances with transaction history).
|
||||
|
||||
Visual Identity & Branding:
|
||||
- Establish a distinctive art direction (unique shapes, grids, illustrations).
|
||||
<design_guidelines>
|
||||
|
||||
<component_requirements>
|
||||
- Implement comprehensive TypeScript typing for all components
|
||||
- Define explicit interface types for all component props
|
||||
- Use proper React.FC<PropType> typing for all functional components
|
||||
- Build robust loading, error, and empty states for all data-dependent components
|
||||
- Implement proper validation and error handling for all user inputs
|
||||
</component_requirements>
|
||||
|
||||
<styling_guidelines>
|
||||
- Use StyleSheet.create exclusively for all styling
|
||||
- NO external styling libraries (NativeWind, etc.) under any circumstances
|
||||
- Implement consistent design system with standardized spacing and typography
|
||||
- Strictly follow 8-point grid system for all spacing and sizing
|
||||
- Apply platform-specific shadows and elevation properly
|
||||
- Implement complete dark mode support with theme context
|
||||
- Handle all safe area insets for modern device compatibility
|
||||
- Support dynamic text sizes for accessibility
|
||||
<design_guidelines>
|
||||
- Create visually stunning UIs with professional-grade polish:
|
||||
- Implement modern, distinctive designs with cohesive visual language
|
||||
- Build advanced UI/UX patterns (animated cards, interactive lists, custom tabs)
|
||||
- Incorporate deliberate animations and micro-interactions for feedback
|
||||
- Design with intentional typography hierarchy, color theory, and spacing
|
||||
- Color system with a primary, secondary and accent, plus success, warning, and error states
|
||||
- Include meaningful interactive elements with proper state handling
|
||||
- Ensure complete responsiveness across all screen dimensions
|
||||
|
||||
<animation_libraries>
|
||||
Preferred:
|
||||
- react-native-reanimated for all animations
|
||||
- react-native-gesture-handler for all touch interactions
|
||||
</animation_libraries>
|
||||
</design_guidelines>
|
||||
</styling_guidelines>
|
||||
|
||||
<font_management>
|
||||
- Use @expo-google-fonts packages exclusively
|
||||
- NO local font files allowed
|
||||
- Implement font loading with SplashScreen and proper loadAsync
|
||||
- Handle loading states with appropriate fallbacks
|
||||
- Load all fonts at root level with useFonts hook
|
||||
- Specify complete font fallback chains
|
||||
- Implement proper font scaling for accessibility
|
||||
</font_management>
|
||||
|
||||
<icons>
|
||||
Library: lucide-react-native
|
||||
Default Props:
|
||||
- size: 24
|
||||
- color: 'currentColor'
|
||||
- strokeWidth: 2
|
||||
- absoluteStrokeWidth: false
|
||||
</icons>
|
||||
|
||||
<image_handling>
|
||||
- Use Unsplash for all stock photos
|
||||
- Implement direct URL linking only with proper caching
|
||||
- Verify all Unsplash URLs before implementation
|
||||
- NEVER download or store images locally
|
||||
- Use Image component with proper sizing and loading properties
|
||||
- Implement loading states and placeholders for all images
|
||||
- Handle all potential image loading errors with fallbacks
|
||||
- Optimize image sizes for performance
|
||||
- Implement progressive loading for large images
|
||||
</image_handling>
|
||||
|
||||
<error_handling>
|
||||
- Display contextual errors inline within UI components
|
||||
- NEVER use Alert API for errors
|
||||
- Implement comprehensive error states for all network operations
|
||||
- Handle offline states and network reconnection gracefully
|
||||
- Provide actionable error messages with recovery options
|
||||
- Implement automatic retry mechanisms for transient failures
|
||||
- Log errors comprehensively for debugging
|
||||
- Handle all edge cases with appropriate fallbacks
|
||||
- Design error states as integral part of the UI
|
||||
</error_handling>
|
||||
|
||||
<environment_variables>
|
||||
- Use Expo's environment system exclusively
|
||||
- NEVER use Vite env variables
|
||||
- Implement proper typing in env.d.ts for all variables
|
||||
- Validate all environment variables at app startup
|
||||
- Provide fallbacks for missing environment variables
|
||||
- Follow EXPO_PUBLIC_* naming convention strictly
|
||||
</environment_variables>
|
||||
|
||||
<platform_compatibility>
|
||||
- Validate platform compatibility for all features
|
||||
- Use Platform.select() for platform-specific implementations
|
||||
- Provide web alternatives for all native-only features
|
||||
- Implement platform-specific keyboard handling
|
||||
- Ensure proper scrolling behavior across platforms
|
||||
- Handle touch events consistently on all platforms
|
||||
- Support both mouse and touch input on web platforms
|
||||
- Implement platform-aware styling and layouts
|
||||
- Ensure proper focus management for web accessibility
|
||||
</platform_compatibility>
|
||||
|
||||
<api_routes>
|
||||
Location: app/[route]+api.ts
|
||||
Features:
|
||||
- Implement secure server-side code
|
||||
- Build RESTful custom endpoints
|
||||
- Handle all request/response scenarios
|
||||
- Implement comprehensive error handling
|
||||
- Validate all incoming data
|
||||
- Apply proper rate limiting
|
||||
- Configure proper CORS policies
|
||||
- Implement security headers
|
||||
</api_routes>
|
||||
|
||||
<performance_optimization>
|
||||
- Implement virtualized lists for all scrolling content
|
||||
- Apply memo and useCallback for render optimization
|
||||
- Prevent unnecessary re-renders with proper component design
|
||||
- Implement effective image and data caching
|
||||
- Properly manage memory with cleanup functions
|
||||
- Release unused resources appropriately
|
||||
- Implement strategic error boundaries
|
||||
- Design optimized loading states
|
||||
- Build offline functionality with data persistence
|
||||
- Implement efficient data fetching patterns
|
||||
</performance_optimization>
|
||||
|
||||
<security_best_practices>
|
||||
- Implement proper authentication and authorization
|
||||
- Securely handle all sensitive data
|
||||
- Validate and sanitize all user inputs
|
||||
- Implement secure session management
|
||||
- Use secure storage for all sensitive information
|
||||
- Apply comprehensive CORS policies
|
||||
- Securely manage all API keys and tokens
|
||||
- Implement defense-in-depth error handling
|
||||
- Apply all recommended security headers
|
||||
- Handle permissions with principle of least privilege
|
||||
</security_best_practices>
|
||||
</critical_requirements>
|
||||
</mobile_app_instructions>
|
||||
`;
|
||||
|
||||
export const CONTINUE_PROMPT = stripIndents`
|
||||
|
@ -130,7 +130,6 @@ export function useChatHistory() {
|
||||
content: ` 📦 Chat Restored from snapshot, You can revert this message to load the full chat history
|
||||
<boltArtifact id="imported-files" title="Project Files Snapshot" type="bundled">
|
||||
${Object.entries(snapshot?.files || {})
|
||||
.filter((x) => !x[0].endsWith('lock.json'))
|
||||
.map(([key, value]) => {
|
||||
if (value?.type === 'file') {
|
||||
return `
|
||||
|
@ -136,7 +136,7 @@
|
||||
"react-hotkeys-hook": "^4.6.1",
|
||||
"react-icons": "^5.4.0",
|
||||
"react-markdown": "^9.0.1",
|
||||
"react-qr-code": "^2.0.15",
|
||||
"react-qrcode-logo": "^3.0.0",
|
||||
"react-resizable-panels": "^2.1.7",
|
||||
"react-toastify": "^10.0.6",
|
||||
"react-window": "^1.8.11",
|
||||
|
@ -287,9 +287,9 @@ importers:
|
||||
react-markdown:
|
||||
specifier: ^9.0.1
|
||||
version: 9.1.0(@types/react@18.3.20)(react@18.3.1)
|
||||
react-qr-code:
|
||||
specifier: ^2.0.15
|
||||
version: 2.0.15(react@18.3.1)
|
||||
react-qrcode-logo:
|
||||
specifier: ^3.0.0
|
||||
version: 3.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
react-resizable-panels:
|
||||
specifier: ^2.1.7
|
||||
version: 2.1.7(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
|
||||
@ -6559,8 +6559,8 @@ packages:
|
||||
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
qr.js@0.0.0:
|
||||
resolution: {integrity: sha512-c4iYnWb+k2E+vYpRimHqSu575b1/wKl4XFeJGpFmrJQz5I88v9aY2czh7s0w36srfCM1sXgC/xpoJz5dJfq+OQ==}
|
||||
qrcode-generator@1.4.4:
|
||||
resolution: {integrity: sha512-HM7yY8O2ilqhmULxGMpcHSF1EhJJ9yBj8gvDEuZ6M+KGJ0YY2hKpnXvRD+hZPLrDVck3ExIGhmPtSdcjC+guuw==}
|
||||
|
||||
qs@6.13.0:
|
||||
resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==}
|
||||
@ -6663,10 +6663,11 @@ packages:
|
||||
'@types/react': '>=18'
|
||||
react: '>=18'
|
||||
|
||||
react-qr-code@2.0.15:
|
||||
resolution: {integrity: sha512-MkZcjEXqVKqXEIMVE0mbcGgDpkfSdd8zhuzXEl9QzYeNcw8Hq2oVIzDLWuZN2PQBwM5PWjc2S31K8Q1UbcFMfw==}
|
||||
react-qrcode-logo@3.0.0:
|
||||
resolution: {integrity: sha512-2+vZ3GNBdUpYxIKyt6SFZsDGXa0xniyUQ0wPI4O0hJTzRjttPIx1pPnH9IWQmp/4nDMoN47IBhi3Breu1KudYw==}
|
||||
peerDependencies:
|
||||
react: '*'
|
||||
react: '>=18.0.0'
|
||||
react-dom: '>=18.0.0'
|
||||
|
||||
react-redux@7.2.9:
|
||||
resolution: {integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==}
|
||||
@ -15565,7 +15566,7 @@ snapshots:
|
||||
|
||||
punycode@2.3.1: {}
|
||||
|
||||
qr.js@0.0.0: {}
|
||||
qrcode-generator@1.4.4: {}
|
||||
|
||||
qs@6.13.0:
|
||||
dependencies:
|
||||
@ -15681,11 +15682,12 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
react-qr-code@2.0.15(react@18.3.1):
|
||||
react-qrcode-logo@3.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
prop-types: 15.8.1
|
||||
qr.js: 0.0.0
|
||||
lodash.isequal: 4.5.0
|
||||
qrcode-generator: 1.4.4
|
||||
react: 18.3.1
|
||||
react-dom: 18.3.1(react@18.3.1)
|
||||
|
||||
react-redux@7.2.9(react-dom@18.3.1(react@18.3.1))(react@18.3.1):
|
||||
dependencies:
|
||||
|
Loading…
Reference in New Issue
Block a user