[{"data":1,"prerenderedAt":41627},["ShallowReactive",2],{"navigation_docs":3,"-react-native-version2-expo-router-basics":3728,"-react-native-version2-expo-router-basics-surround":41622},[4,1707,1912,2366,2547,2673,2880,3002,3052,3109,3143,3269,3346,3360,3495,3512,3525,3671,3724],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"C#","i-devicon-csharp","\u002Fcsharp","01.csharp",[10,13,60,90,120,202,219,253,379,404,457,650,1364,1654,1703],{"title":11,"path":7,"stem":12},"C# та .NET","01.csharp\u002Findex",{"title":14,"icon":15,"path":16,"stem":17,"children":18,"page":59},"Fundamentals","i-lucide-book-open","\u002Fcsharp\u002Ffundamentals","01.csharp\u002F01.fundamentals",[19,23,27,31,35,39,43,47,51,55],{"title":20,"path":21,"stem":22},"Вступ до екосистеми .NET","\u002Fcsharp\u002Ffundamentals\u002Fintroduction-to-ecosystem","01.csharp\u002F01.fundamentals\u002F01.introduction-to-ecosystem",{"title":24,"path":25,"stem":26},"Структура програми на C#","\u002Fcsharp\u002Ffundamentals\u002Fprogram-structure","01.csharp\u002F01.fundamentals\u002F02.program-structure",{"title":28,"path":29,"stem":30},"Змінні та Типи Даних","\u002Fcsharp\u002Ffundamentals\u002Fvariables-data-types","01.csharp\u002F01.fundamentals\u002F03.variables-data-types",{"title":32,"path":33,"stem":34},"Масиви","\u002Fcsharp\u002Ffundamentals\u002Farrays","01.csharp\u002F01.fundamentals\u002F04.arrays",{"title":36,"path":37,"stem":38},"Strings & Text Handling","\u002Fcsharp\u002Ffundamentals\u002Fstrings-text-handling","01.csharp\u002F01.fundamentals\u002F05.strings-text-handling",{"title":40,"path":41,"stem":42},"Дати і Час","\u002Fcsharp\u002Ffundamentals\u002Fdates-time-handling","01.csharp\u002F01.fundamentals\u002F06.dates-time-handling",{"title":44,"path":45,"stem":46},"Потік Керування","\u002Fcsharp\u002Ffundamentals\u002Fcontrol-flow","01.csharp\u002F01.fundamentals\u002F07.control-flow",{"title":48,"path":49,"stem":50},"Методи","\u002Fcsharp\u002Ffundamentals\u002Fmethods","01.csharp\u002F01.fundamentals\u002F08.methods",{"title":52,"path":53,"stem":54},"Основи Відлагодження","\u002Fcsharp\u002Ffundamentals\u002Fdebugging-basics","01.csharp\u002F01.fundamentals\u002F09.debugging-basics",{"title":56,"path":57,"stem":58},"Інтерактивна Консоль (Classic)","\u002Fcsharp\u002Ffundamentals\u002Finteractive-console","01.csharp\u002F01.fundamentals\u002F10.interactive-console",false,{"title":61,"icon":62,"path":63,"stem":64,"children":65,"page":59},"OOP","i-lucide-box","\u002Fcsharp\u002Foop","01.csharp\u002F02.oop",[66,70,74,78,82,86],{"title":67,"path":68,"stem":69},"Package Management (Управління Пакетами)","\u002Fcsharp\u002Foop\u002Fpackage-management","01.csharp\u002F02.oop\u002F01.package-management",{"title":71,"path":72,"stem":73},"Класи та Об'єкти","\u002Fcsharp\u002Foop\u002Fclasses-objects","01.csharp\u002F02.oop\u002F02.classes-objects",{"title":75,"path":76,"stem":77},"Властивості та Поля","\u002Fcsharp\u002Foop\u002Fproperties-fields","01.csharp\u002F02.oop\u002F03.properties-fields",{"title":79,"path":80,"stem":81},"Стовпи ООП","\u002Fcsharp\u002Foop\u002Foop-pillars","01.csharp\u002F02.oop\u002F04.oop-pillars",{"title":83,"path":84,"stem":85},"Advanced Types","\u002Fcsharp\u002Foop\u002Fadvanced-types","01.csharp\u002F02.oop\u002F05.advanced-types",{"title":87,"path":88,"stem":89},"Namespaces (Простори Імен)","\u002Fcsharp\u002Foop\u002Fnamespaces","01.csharp\u002F02.oop\u002F06.namespaces",{"title":91,"icon":92,"path":93,"stem":94,"children":95,"page":59},"Advanced Core","i-lucide-zap","\u002Fcsharp\u002Fadvanced-core","01.csharp\u002F03.advanced-core",[96,100,104,108,112,116],{"title":97,"path":98,"stem":99},"Generics (Узагальнення)","\u002Fcsharp\u002Fadvanced-core\u002Fgenerics","01.csharp\u002F03.advanced-core\u002F01.generics",{"title":101,"path":102,"stem":103},"Делегати, Події та Лямбда-вирази","\u002Fcsharp\u002Fadvanced-core\u002Fdelegates-events-lambdas","01.csharp\u002F03.advanced-core\u002F02.delegates-events-lambdas",{"title":105,"path":106,"stem":107},"Interfaces Deep Dive (Інтерфейси: Поглиблений Розгляд)","\u002Fcsharp\u002Fadvanced-core\u002Finterfaces-deep-dive","01.csharp\u002F03.advanced-core\u002F03.interfaces-deep-dive",{"title":109,"path":110,"stem":111},"Обробка Винятків","\u002Fcsharp\u002Fadvanced-core\u002Fexception-handling","01.csharp\u002F03.advanced-core\u002F04.exception-handling",{"title":113,"path":114,"stem":115},"Pattern Matching","\u002Fcsharp\u002Fadvanced-core\u002Fpattern-matching","01.csharp\u002F03.advanced-core\u002F05.pattern-matching",{"title":117,"path":118,"stem":119},"Додаткові Можливості C#","\u002Fcsharp\u002Fadvanced-core\u002Fadditional-features","01.csharp\u002F03.advanced-core\u002F06.additional-features",{"title":121,"icon":122,"path":123,"stem":124,"children":125,"page":59},"Architecture Best Practices","i-lucide-building-2","\u002Fcsharp\u002Farchitecture-best-practices","01.csharp\u002F04.architecture-best-practices",[126,130,149,153,157,161,165,169],{"title":127,"path":128,"stem":129},"Software Design Principles (Частина 1)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fsoftware-design-principles","01.csharp\u002F04.architecture-best-practices\u002F01.software-design-principles",{"title":131,"icon":132,"path":133,"stem":134,"children":135,"page":59},"Design Patterns","i-lucide-folder","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns",[136],{"title":137,"icon":132,"path":138,"stem":139,"children":140,"page":59},"Creational","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns\u002Fcreational","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns\u002Fcreational",[141,145],{"title":142,"path":143,"stem":144},"Singleton (Одинак)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns\u002Fcreational\u002Fsingleton","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns\u002Fcreational\u002F01.singleton",{"title":146,"path":147,"stem":148},"Builder (Будівельник)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdesign-patterns\u002Fcreational\u002Fbuilder","01.csharp\u002F04.architecture-best-practices\u002F02.design-patterns\u002Fcreational\u002F02.builder",{"title":150,"path":151,"stem":152},"Building Professional CLIs","\u002Fcsharp\u002Farchitecture-best-practices\u002Fbuilding-professional-clis","01.csharp\u002F04.architecture-best-practices\u002F03.building-professional-clis",{"title":154,"path":155,"stem":156},"Validation & Flow Control","\u002Fcsharp\u002Farchitecture-best-practices\u002Fvalidation-flow-control","01.csharp\u002F04.architecture-best-practices\u002F04.validation-flow-control",{"title":158,"path":159,"stem":160},"The Modern .NET Host (Microsoft.Extensions)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fmodern-dotnet-host","01.csharp\u002F04.architecture-best-practices\u002F05.modern-dotnet-host",{"title":162,"path":163,"stem":164},"Data Mapper: Repository та DAO патерни (Частина 1)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdata-mapper-part1","01.csharp\u002F04.architecture-best-practices\u002F06.data-mapper-part1",{"title":166,"path":167,"stem":168},"Data Mapper: Repository та DAO патерни (Частина 2)","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdata-mapper-part2","01.csharp\u002F04.architecture-best-practices\u002F07.data-mapper-part2",{"title":170,"icon":132,"path":171,"stem":172,"children":173,"page":59},"Di Ioc","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc",[174,178,182,186,190,194,198],{"title":175,"path":176,"stem":177},"Проблема залежностей та Інверсія Контролю","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fthe-dependency-problem","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F01.the-dependency-problem",{"title":179,"path":180,"stem":181},"Будуємо власний Service Container","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fbuild-your-own-container","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F02.build-your-own-container",{"title":183,"path":184,"stem":185},"Service Locator: Паттерн та Анти-паттерн","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fservice-locator-pattern","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F03.service-locator-pattern",{"title":187,"path":188,"stem":189},"Паттерни Dependency Injection","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fdependency-injection-patterns","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F04.dependency-injection-patterns",{"title":191,"path":192,"stem":193},"Microsoft DI: IServiceCollection та IServiceProvider","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fmicrosoft-di-deep-dive","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F05.microsoft-di-deep-dive",{"title":195,"path":196,"stem":197},"Service Lifetimes та Scopes","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fservice-lifetimes-and-scopes","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F06.service-lifetimes-and-scopes",{"title":199,"path":200,"stem":201},"DI Анти-паттерни та Найкращі Практики","\u002Fcsharp\u002Farchitecture-best-practices\u002Fdi-ioc\u002Fdi-anti-patterns-and-best-practices","01.csharp\u002F04.architecture-best-practices\u002F08.di-ioc\u002F07.di-anti-patterns-and-best-practices",{"title":203,"icon":132,"path":204,"stem":205,"children":206,"page":59},"Standard Library","\u002Fcsharp\u002Fstandard-library","01.csharp\u002F05.standard-library",[207,211,215],{"title":208,"path":209,"stem":210},"Collections (Колекції)","\u002Fcsharp\u002Fstandard-library\u002Fcollections","01.csharp\u002F05.standard-library\u002F01.collections",{"title":212,"path":213,"stem":214},"High Performance Types (Високопродуктивні Типи)","\u002Fcsharp\u002Fstandard-library\u002Fhigh-performance-types","01.csharp\u002F05.standard-library\u002F02.high-performance-types",{"title":216,"path":217,"stem":218},"LINQ (Language Integrated Query)","\u002Fcsharp\u002Fstandard-library\u002Flinq","01.csharp\u002F05.standard-library\u002F03.linq",{"title":220,"icon":221,"path":222,"stem":223,"children":224,"page":59},"System Internals Concurrency","i-lucide-server","\u002Fcsharp\u002Fsystem-internals-concurrency","01.csharp\u002F06.system-internals-concurrency",[225,229,233,237,241,245,249],{"title":226,"path":227,"stem":228},"Memory Management","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fmemory-management","01.csharp\u002F06.system-internals-concurrency\u002F01.memory-management",{"title":230,"path":231,"stem":232},"Reflection API: System.Type та Метадані","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Freflection-fundamentals","01.csharp\u002F06.system-internals-concurrency\u002F02.reflection-fundamentals",{"title":234,"path":235,"stem":236},"Attributes та Dynamic Language Runtime","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fattributes-dynamic","01.csharp\u002F06.system-internals-concurrency\u002F03.attributes-dynamic",{"title":238,"path":239,"stem":240},"Expression Trees: Швидка Альтернатива Рефлексії","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fexpression-trees-compiled","01.csharp\u002F06.system-internals-concurrency\u002F04.expression-trees-compiled",{"title":242,"path":243,"stem":244},"Source Generators: Compile-Time Code Generation","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fsource-generators","01.csharp\u002F06.system-internals-concurrency\u002F05.source-generators",{"title":246,"path":247,"stem":248},"Multithreading Fundamentals","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fmultithreading-fundamentals","01.csharp\u002F06.system-internals-concurrency\u002F06.multithreading-fundamentals",{"title":250,"path":251,"stem":252},"Synchronization Primitives","\u002Fcsharp\u002Fsystem-internals-concurrency\u002Fsynchronization-primitives","01.csharp\u002F06.system-internals-concurrency\u002F07.synchronization-primitives",{"title":254,"icon":255,"path":256,"stem":257,"children":258,"page":59},"System Programming Windows","i-lucide-cpu","\u002Fcsharp\u002Fsystem-programming-windows","01.csharp\u002F07.system-programming-windows",[259,263,267,271,275,279,283,287,291,295,299,303,307,311,315,319,323,327,331,335,339,343,347,351,355,359,363,367,371,375],{"title":260,"path":261,"stem":262},"Як Працює Операційна Система","\u002Fcsharp\u002Fsystem-programming-windows\u002Fhow-os-works","01.csharp\u002F07.system-programming-windows\u002F01.how-os-works",{"title":264,"path":265,"stem":266},"Процеси в .NET — API та Запуск","\u002Fcsharp\u002Fsystem-programming-windows\u002Fprocesses-in-dotnet","01.csharp\u002F07.system-programming-windows\u002F02.processes-in-dotnet",{"title":268,"path":269,"stem":270},"Процеси в .NET — IPC та Міжпроцесна Комунікація","\u002Fcsharp\u002Fsystem-programming-windows\u002F02a.processes-ipc","01.csharp\u002F07.system-programming-windows\u002F02a.processes-ipc",{"title":272,"path":273,"stem":274},"Application Domains та Збірки — AppDomain і AssemblyLoadContext","\u002Fcsharp\u002Fsystem-programming-windows\u002Fappdomains-assemblies","01.csharp\u002F07.system-programming-windows\u002F03.appdomains-assemblies",{"title":276,"path":277,"stem":278},"Application Domains та Збірки — Plug-in Система з Hot-Reload","\u002Fcsharp\u002Fsystem-programming-windows\u002F03a.appdomains-plugin-system","01.csharp\u002F07.system-programming-windows\u002F03a.appdomains-plugin-system",{"title":280,"path":281,"stem":282},"Потоки — Основи та API Thread","\u002Fcsharp\u002Fsystem-programming-windows\u002Fthread-fundamentals","01.csharp\u002F07.system-programming-windows\u002F04.thread-fundamentals",{"title":284,"path":285,"stem":286},"Потоки — Lifecycle, Пріоритети та Безпечне Завершення","\u002Fcsharp\u002Fsystem-programming-windows\u002F04a.thread-lifecycle-priorities","01.csharp\u002F07.system-programming-windows\u002F04a.thread-lifecycle-priorities",{"title":288,"path":289,"stem":290},"Проблеми Спільного Стану — Race Condition та Data Race","\u002Fcsharp\u002Fsystem-programming-windows\u002Fshared-state-problems","01.csharp\u002F07.system-programming-windows\u002F05.shared-state-problems",{"title":292,"path":293,"stem":294},"Проблеми Спільного Стану — Memory Model та volatile","\u002Fcsharp\u002Fsystem-programming-windows\u002F05a.shared-state-memory-model","01.csharp\u002F07.system-programming-windows\u002F05a.shared-state-memory-model",{"title":296,"path":297,"stem":298},"Синхронізація — Monitor, lock та еволюція примітивів","\u002Fcsharp\u002Fsystem-programming-windows\u002Fsynchronization-fundamentals","01.csharp\u002F07.system-programming-windows\u002F06.synchronization-fundamentals",{"title":300,"path":301,"stem":302},"Синхронізація — Наскрізний Приклад та Deadlock Detection","\u002Fcsharp\u002Fsystem-programming-windows\u002F06a.synchronization-walkthrough","01.csharp\u002F07.system-programming-windows\u002F06a.synchronization-walkthrough",{"title":304,"path":305,"stem":306},"Синхронізація — Mutex, Semaphore та Event-Based Primitives","\u002Fcsharp\u002Fsystem-programming-windows\u002Fsynchronization-advanced","01.csharp\u002F07.system-programming-windows\u002F07.synchronization-advanced",{"title":308,"path":309,"stem":310},"Синхронізація — Interlocked, Volatile та Lock-Free Структури","\u002Fcsharp\u002Fsystem-programming-windows\u002F07a.synchronization-advanced-walkthrough","01.csharp\u002F07.system-programming-windows\u002F07a.synchronization-advanced-walkthrough",{"title":312,"path":313,"stem":314},"Interlocked, CAS та Lock-Free Структури","\u002Fcsharp\u002Fsystem-programming-windows\u002Finterlocked-cas-lockfree","01.csharp\u002F07.system-programming-windows\u002F08.interlocked-cas-lockfree",{"title":316,"path":317,"stem":318},"Volatile, Memory Model та Spinning","\u002Fcsharp\u002Fsystem-programming-windows\u002F08a.volatile-memory-model","01.csharp\u002F07.system-programming-windows\u002F08a.volatile-memory-model",{"title":320,"path":321,"stem":322},"ThreadPool — Пул Потоків для Ефективного Виконання","\u002Fcsharp\u002Fsystem-programming-windows\u002Fthread-pool","01.csharp\u002F07.system-programming-windows\u002F09.thread-pool",{"title":324,"path":325,"stem":326},"ThreadPool — Просунуті Сценарії та Внутрішня Будова","\u002Fcsharp\u002Fsystem-programming-windows\u002F09a.thread-pool-advanced","01.csharp\u002F07.system-programming-windows\u002F09a.thread-pool-advanced",{"title":328,"path":329,"stem":330},"Concurrent та Immutable Collections","\u002Fcsharp\u002Fsystem-programming-windows\u002Fconcurrent-collections","01.csharp\u002F07.system-programming-windows\u002F10.concurrent-collections",{"title":332,"path":333,"stem":334},"TPL, Task та Композиція — Від Thread до Task","\u002Fcsharp\u002Fsystem-programming-windows\u002Ftpl-parallel-plinq","01.csharp\u002F07.system-programming-windows\u002F11.tpl-parallel-plinq",{"title":336,"path":337,"stem":338},"Parallel Class та PLINQ — Data Parallelism","\u002Fcsharp\u002Fsystem-programming-windows\u002F11a.tpl-parallel-plinq-advanced","01.csharp\u002F07.system-programming-windows\u002F11a.tpl-parallel-plinq-advanced",{"title":340,"path":341,"stem":342},"Async\u002FAwait — Фундамент Асинхронного Програмування","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-fundamentals","01.csharp\u002F07.system-programming-windows\u002F12.async-fundamentals",{"title":344,"path":345,"stem":346},"SynchronizationContext та ConfigureAwait — Контекст Виконання","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-context-configureawait","01.csharp\u002F07.system-programming-windows\u002F13.async-context-configureawait",{"title":348,"path":349,"stem":350},"Async — Просунуті Паттерни","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-advanced","01.csharp\u002F07.system-programming-windows\u002F14.async-advanced",{"title":352,"path":353,"stem":354},"System.Threading.Channels — Async Producer-Consumer","\u002Fcsharp\u002Fsystem-programming-windows\u002Fchannels","01.csharp\u002F07.system-programming-windows\u002F15.channels",{"title":356,"path":357,"stem":358},"Асинхронна Синхронізація","\u002Fcsharp\u002Fsystem-programming-windows\u002Fasync-synchronization","01.csharp\u002F07.system-programming-windows\u002F16.async-synchronization",{"title":360,"path":361,"stem":362},"Unsafe Code та Вказівники","\u002Fcsharp\u002Fsystem-programming-windows\u002Funsafe-code","01.csharp\u002F07.system-programming-windows\u002F17.unsafe-code",{"title":364,"path":365,"stem":366},"P\u002FInvoke та Windows API — Міст між .NET та Native Code","\u002Fcsharp\u002Fsystem-programming-windows\u002Fpinvoke-winapi","01.csharp\u002F07.system-programming-windows\u002F18.pinvoke-winapi",{"title":368,"path":369,"stem":370},"Реєстр Windows — Центральна База Конфігурації Системи","\u002Fcsharp\u002Fsystem-programming-windows\u002Fwindows-registry","01.csharp\u002F07.system-programming-windows\u002F19.windows-registry",{"title":372,"path":373,"stem":374},"Windows Hooks, Hotkeys та Services — Глибока Інтеграція з ОС","\u002Fcsharp\u002Fsystem-programming-windows\u002Fwindows-hooks-services","01.csharp\u002F07.system-programming-windows\u002F20.windows-hooks-services",{"title":376,"path":377,"stem":378},"Системне Програмування C# (Windows) — 07.system-programming-windows","\u002Fcsharp\u002Fsystem-programming-windows\u002Fimplementation_plan","01.csharp\u002F07.system-programming-windows\u002Fimplementation_plan",{"title":380,"icon":132,"path":381,"stem":382,"children":383,"page":59},"Io","\u002Fcsharp\u002Fio","01.csharp\u002F08.io",[384,388,392,396,400],{"title":385,"path":386,"stem":387},"8.1.1. Основи роботи з файловою системою","\u002Fcsharp\u002Fio\u002Ffile-system-basics","01.csharp\u002F08.io\u002F01.file-system-basics",{"title":389,"path":390,"stem":391},"8.1.2. Потоки (Streams) та Серіалізація Даних","\u002Fcsharp\u002Fio\u002Fstreams-serialization","01.csharp\u002F08.io\u002F02.streams-serialization",{"title":393,"path":394,"stem":395},"8.2.1. JSON Serialization з System.Text.Json","\u002Fcsharp\u002Fio\u002Fjson-serialization","01.csharp\u002F08.io\u002F03.json-serialization",{"title":397,"path":398,"stem":399},"8.2.2. XML Serialization та LINQ to XML","\u002Fcsharp\u002Fio\u002Fxml-serialization","01.csharp\u002F08.io\u002F04.xml-serialization",{"title":401,"path":402,"stem":403},"8.2.3. Binary Serialization: MessagePack та Protocol Buffers","\u002Fcsharp\u002Fio\u002Fbinary-serialization","01.csharp\u002F08.io\u002F05.binary-serialization",{"title":405,"icon":132,"path":406,"stem":407,"children":408,"page":59},"Ado Net","\u002Fcsharp\u002Fado-net","01.csharp\u002F09.ado-net",[409,413,417,421,425,429,433,437,441,445,449,453],{"title":410,"path":411,"stem":412},"9.1. Введення в ADO.NET","\u002Fcsharp\u002Fado-net\u002Fintroduction-to-adonet","01.csharp\u002F09.ado-net\u002F01.introduction-to-adonet",{"title":414,"path":415,"stem":416},"9.2. Клас DbConnection — з'єднання з базою даних","\u002Fcsharp\u002Fado-net\u002Fconnection","01.csharp\u002F09.ado-net\u002F02.connection",{"title":418,"path":419,"stem":420},"9.3. Клас DbCommand — виконання SQL-запитів","\u002Fcsharp\u002Fado-net\u002Fcommand-and-queries","01.csharp\u002F09.ado-net\u002F03.command-and-queries",{"title":422,"path":423,"stem":424},"9.4. Клас DbDataReader — ефективне читання даних","\u002Fcsharp\u002Fado-net\u002Fdatareader","01.csharp\u002F09.ado-net\u002F04.datareader",{"title":426,"path":427,"stem":428},"9.5. Параметризовані запити та захист від SQL Injection","\u002Fcsharp\u002Fado-net\u002Fparameters-and-sql-injection","01.csharp\u002F09.ado-net\u002F05.parameters-and-sql-injection",{"title":430,"path":431,"stem":432},"9.6. Транзакції в ADO.NET","\u002Fcsharp\u002Fado-net\u002Ftransactions","01.csharp\u002F09.ado-net\u002F06.transactions",{"title":434,"path":435,"stem":436},"9.7. DbProviderFactory — провайдер-незалежний код","\u002Fcsharp\u002Fado-net\u002Fprovider-factory","01.csharp\u002F09.ado-net\u002F07.provider-factory",{"title":438,"path":439,"stem":440},"9.8. Асинхронний доступ до даних","\u002Fcsharp\u002Fado-net\u002Fasync-data-access","01.csharp\u002F09.ado-net\u002F08.async-data-access",{"title":442,"path":443,"stem":444},"9.9. Від'єднаний режим: DataSet, DataTable, DataRow","\u002Fcsharp\u002Fado-net\u002Fdisconnected-mode-dataset","01.csharp\u002F09.ado-net\u002F09.disconnected-mode-dataset",{"title":446,"path":447,"stem":448},"9.10. DataAdapter — міст між DataSet та базою даних","\u002Fcsharp\u002Fado-net\u002Fdata-adapter","01.csharp\u002F09.ado-net\u002F10.data-adapter",{"title":450,"path":451,"stem":452},"9.11. Data Mapper та Repository: Архітектура доступу до даних","\u002Fcsharp\u002Fado-net\u002Fdata-mapper-repository","01.csharp\u002F09.ado-net\u002F11.data-mapper-repository",{"title":454,"path":455,"stem":456},"9.12. Identity Map, Unit of Work та Specification Pattern","\u002Fcsharp\u002Fado-net\u002Fadvanced-patterns","01.csharp\u002F09.ado-net\u002F12.advanced-patterns",{"title":458,"icon":255,"path":459,"stem":460,"children":461,"page":59},"Ef Core","\u002Fcsharp\u002Fef-core","01.csharp\u002F10.ef-core",[462,466,470,474,478,482,486,490,494,498,502,506,510,514,518,522,526,532,538,542,546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618,622,626,630,634,638,642,646],{"title":463,"path":464,"stem":465},"Що таке ORM? Від SQL до об'єктів","\u002Fcsharp\u002Fef-core\u002Fwhat-is-orm","01.csharp\u002F10.ef-core\u002F01.what-is-orm",{"title":467,"path":468,"stem":469},"Перший проєкт — від нуля до CRUD","\u002Fcsharp\u002Fef-core\u002Ffirst-project","01.csharp\u002F10.ef-core\u002F02.first-project",{"title":471,"path":472,"stem":473},"DbContext — Серце EF Core","\u002Fcsharp\u002Fef-core\u002Fdbcontext-deep-dive","01.csharp\u002F10.ef-core\u002F03.dbcontext-deep-dive",{"title":475,"path":476,"stem":477},"Провайдери баз даних — Архітектура та Вибір СУБД","\u002Fcsharp\u002Fef-core\u002Fdatabase-providers","01.csharp\u002F10.ef-core\u002F04.database-providers",{"title":479,"path":480,"stem":481},"Конвенції EF Core — Магія без конфігурації","\u002Fcsharp\u002Fef-core\u002Fconventions","01.csharp\u002F10.ef-core\u002F05.conventions",{"title":483,"path":484,"stem":485},"Fluent API та Data Annotations — Явна конфігурація моделі","\u002Fcsharp\u002Fef-core\u002Ffluent-api-vs-annotations","01.csharp\u002F10.ef-core\u002F06.fluent-api-vs-annotations",{"title":487,"path":488,"stem":489},"Зв'язки — One-to-One та One-to-Many","\u002Fcsharp\u002Fef-core\u002Frelationships-basics","01.csharp\u002F10.ef-core\u002F07.relationships-basics",{"title":491,"path":492,"stem":493},"Зв'язки Advanced — Many-to-Many та Складні Сценарії","\u002Fcsharp\u002Fef-core\u002Frelationships-advanced","01.csharp\u002F10.ef-core\u002F08.relationships-advanced",{"title":495,"path":496,"stem":497},"Властивості — Типи, Конвертери, Компаратори (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fproperty-configuration-part1","01.csharp\u002F10.ef-core\u002F09.property-configuration-part1",{"title":499,"path":500,"stem":501},"Властивості — Value Comparers, Generators, Shadow Properties (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fproperty-configuration-part2","01.csharp\u002F10.ef-core\u002F09.property-configuration-part2",{"title":503,"path":504,"stem":505},"Складні типи — Owned Types та Complex Types (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fcomplex-types-owned-part1","01.csharp\u002F10.ef-core\u002F10.complex-types-owned-part1",{"title":507,"path":508,"stem":509},"Складні типи — Complex Types, Keyless Entities, Порівняння (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fcomplex-types-owned-part2","01.csharp\u002F10.ef-core\u002F10.complex-types-owned-part2",{"title":511,"path":512,"stem":513},"JSON Columns — Складні дані у JSON (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fjson-columns-part1","01.csharp\u002F10.ef-core\u002F11.json-columns-part1",{"title":515,"path":516,"stem":517},"JSON Columns — Value Comparers, Індекси, Провайдери (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fjson-columns-part2","01.csharp\u002F10.ef-core\u002F11.json-columns-part2",{"title":519,"path":520,"stem":521},"Успадкування — Абстрактні класи та TPH (Частина 1)","\u002Fcsharp\u002Fef-core\u002Finheritance-part1","01.csharp\u002F10.ef-core\u002F12.inheritance-part1",{"title":523,"path":524,"stem":525},"Успадкування — TPT, TPC та Порівняння Стратегій (Частина 2)","\u002Fcsharp\u002Fef-core\u002Finheritance-part2","01.csharp\u002F10.ef-core\u002F12.inheritance-part2",{"title":527,"path":528,"stem":529,"children":530},"Індекси, Обмеження та Схема (Частина 1)","\u002Fcsharp\u002Fef-core\u002Findexes-constraints-part1","01.csharp\u002F10.ef-core\u002F13.indexes-constraints-part1",[531],{"title":527,"path":528,"stem":529},{"title":533,"path":534,"stem":535,"children":536},"Індекси, Обмеження та Схема (Частина 2)","\u002Fcsharp\u002Fef-core\u002Findexes-constraints-part2","01.csharp\u002F10.ef-core\u002F13.indexes-constraints-part2",[537],{"title":533,"path":534,"stem":535},{"title":539,"path":540,"stem":541},"Seed Data — Початкові Дані (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fseeding-part1","01.csharp\u002F10.ef-core\u002F14.seeding-part1",{"title":543,"path":544,"stem":545},"Seed Data — SQL-скрипти, Bogus та Стратегії (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fseeding-part2","01.csharp\u002F10.ef-core\u002F14.seeding-part2",{"title":547,"path":548,"stem":549},"Global Query Filters — Глобальні Фільтри (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fglobal-query-filters-part1","01.csharp\u002F10.ef-core\u002F15.global-query-filters-part1",{"title":551,"path":552,"stem":553},"Global Query Filters — Підводні камені та Інтеграція (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fglobal-query-filters-part2","01.csharp\u002F10.ef-core\u002F15.global-query-filters-part2",{"title":555,"path":556,"stem":557},"LINQ-запити в EF Core (Частина 1)","\u002Fcsharp\u002Fef-core\u002Flinq-queries-part1","01.csharp\u002F10.ef-core\u002F16.linq-queries-part1",{"title":559,"path":560,"stem":561},"LINQ-запити в EF Core (Частина 2)","\u002Fcsharp\u002Fef-core\u002Flinq-queries-part2","01.csharp\u002F10.ef-core\u002F16.linq-queries-part2",{"title":563,"path":564,"stem":565},"Завантаження Пов'язаних Даних (Частина 1)","\u002Fcsharp\u002Fef-core\u002Floading-related-data-part1","01.csharp\u002F10.ef-core\u002F17.loading-related-data-part1",{"title":567,"path":568,"stem":569},"Завантаження Пов'язаних Даних (Частина 2)","\u002Fcsharp\u002Fef-core\u002Floading-related-data-part2","01.csharp\u002F10.ef-core\u002F17.loading-related-data-part2",{"title":571,"path":572,"stem":573},"Raw SQL, Views та Stored Procedures (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fraw-sql-part1","01.csharp\u002F10.ef-core\u002F18.raw-sql-part1",{"title":575,"path":576,"stem":577},"Raw SQL — Stored Procedures, DbFunction та Bulk Operations (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fraw-sql-part2","01.csharp\u002F10.ef-core\u002F18.raw-sql-part2",{"title":579,"path":580,"stem":581},"Продвинуті Запити — Compiled Queries, Bulk та Оптимізація (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fadvanced-queries-part1","01.csharp\u002F10.ef-core\u002F19.advanced-queries-part1",{"title":583,"path":584,"stem":585},"Продвинуті Запити — Query Tags, Bulk та Interceptors (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fadvanced-queries-part2","01.csharp\u002F10.ef-core\u002F19.advanced-queries-part2",{"title":587,"path":588,"stem":589},"Change Tracker — Відстеження Змін (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fchange-tracking-part1","01.csharp\u002F10.ef-core\u002F20.change-tracking-part1",{"title":591,"path":592,"stem":593},"Change Tracker — Графи Об'єктів та Disconnected (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fchange-tracking-part2","01.csharp\u002F10.ef-core\u002F20.change-tracking-part2",{"title":595,"path":596,"stem":597},"Збереження Даних та Транзакції (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fsaving-data-part1","01.csharp\u002F10.ef-core\u002F21.saving-data-part1",{"title":599,"path":600,"stem":601},"Збереження Даних — Concurrency та Outbox (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fsaving-data-part2","01.csharp\u002F10.ef-core\u002F21.saving-data-part2",{"title":603,"path":604,"stem":605},"Конкурентність та Блокування (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fconcurrency-part1","01.csharp\u002F10.ef-core\u002F22.concurrency-part1",{"title":607,"path":608,"stem":609},"Конкурентність — Дедлоки та Queue Processing (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fconcurrency-part2","01.csharp\u002F10.ef-core\u002F22.concurrency-part2",{"title":611,"path":612,"stem":613},"Міграції в EF Core — Основи (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fmigrations-basics-part1","01.csharp\u002F10.ef-core\u002F23.migrations-basics-part1",{"title":615,"path":616,"stem":617},"Міграції в EF Core — Основи (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fmigrations-basics-part2","01.csharp\u002F10.ef-core\u002F23.migrations-basics-part2",{"title":619,"path":620,"stem":621},"Міграції — Просунуті Сценарії (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fmigrations-advanced-part1","01.csharp\u002F10.ef-core\u002F24.migrations-advanced-part1",{"title":623,"path":624,"stem":625},"Міграції — Просунуті Сценарії (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fmigrations-advanced-part2","01.csharp\u002F10.ef-core\u002F24.migrations-advanced-part2",{"title":627,"path":628,"stem":629},"Управління Схемою та Database-First (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fschema-management-part1","01.csharp\u002F10.ef-core\u002F25.schema-management-part1",{"title":631,"path":632,"stem":633},"Управління Схемою та Database-First (Частина 2)","\u002Fcsharp\u002Fef-core\u002Fschema-management-part2","01.csharp\u002F10.ef-core\u002F25.schema-management-part2",{"title":635,"path":636,"stem":637},"Продуктивність EF Core — Основи (Частина 1)","\u002Fcsharp\u002Fef-core\u002Fperformance-fundamentals-part1","01.csharp\u002F10.ef-core\u002F26.performance-fundamentals-part1",{"title":639,"path":640,"stem":641},"Interceptors в EF Core (Частина 1)","\u002Fcsharp\u002Fef-core\u002Finterceptors-part1","01.csharp\u002F10.ef-core\u002F29.interceptors-part1",{"title":643,"path":644,"stem":645},"Interceptors в EF Core — Connection, Transaction та Materialization (Частина 2)","\u002Fcsharp\u002Fef-core\u002Finterceptors-part2","01.csharp\u002F10.ef-core\u002F29.interceptors-part2",{"title":647,"path":648,"stem":649},"План вивчення Entity Framework Core — Повний курс","\u002Fcsharp\u002Fef-core\u002Fimplementation_plan","01.csharp\u002F10.ef-core\u002Fimplementation_plan",{"title":651,"icon":652,"path":653,"stem":654,"children":655,"page":59},"ASP.NET","i-devicon-dotnetcore","\u002Fcsharp\u002Faspnet","01.csharp\u002F11.aspnet",[656,730,791,869,927,941,967,1057,1111,1182,1212,1289,1346],{"title":657,"icon":658,"path":659,"stem":660,"children":661,"page":59},"Minimal API","i-lucide-network","\u002Fcsharp\u002Faspnet\u002Fminimal-api","01.csharp\u002F11.aspnet\u002F01.minimal-api",[662,666,670,674,678,682,686,690,694,698,702,706,710,714,718,722,726],{"title":663,"path":664,"stem":665},"Вступ до ASP.NET та еволюція фреймворку","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fintroduction","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F01.introduction",{"title":667,"path":668,"stem":669},"Перший додаток на ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Ffirst-application","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F02.first-application",{"title":671,"path":672,"stem":673},"WebApplication, Builder та Dependency Injection","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fwebapplication-builder","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F03.webapplication-builder",{"title":675,"path":676,"stem":677},"Конвеєр запитів та Middleware","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Frequest-pipeline-middleware","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F04.request-pipeline-middleware",{"title":679,"path":680,"stem":681},"Маршрутизація в ASP.NET Core: Основи","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Frouting-basics","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F05.routing-basics",{"title":683,"path":684,"stem":685},"Маршрутизація в ASP.NET Core: Розширені можливості","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Frouting-advanced","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F06.routing-advanced",{"title":687,"path":688,"stem":689},"Статичні файли в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fstatic-files","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F07.static-files",{"title":691,"path":692,"stem":693},"Статичні Активи: MapStaticAssets (ASP.NET Core 9.0)","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fstatic-assets","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F08.static-assets",{"title":695,"path":696,"stem":697},"Конфігурація в ASP.NET Core: Основи","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fconfiguration-fundamentals","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F09.configuration-fundamentals",{"title":699,"path":700,"stem":701},"Конфігурація: Паттерн Options","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fconfiguration-options","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F10.configuration-options",{"title":703,"path":704,"stem":705},"Логування в ASP.NET Core: Основи","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Flogging-basics","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F11.logging-basics",{"title":707,"path":708,"stem":709},"Логування: Serilog та Middleware","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Flogging-advanced","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F12.logging-advanced",{"title":711,"path":712,"stem":713},"Управління станом: HttpContext.Items та Cookies","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fstate-management","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F13.state-management",{"title":715,"path":716,"stem":717},"Стан сесії: Sessions","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fsession-state","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F14.session-state",{"title":719,"path":720,"stem":721},"Структура проєкту: від хаосу до архітектури","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fproject-structure","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F15.project-structure",{"title":723,"path":724,"stem":725},"Scalar у Minimal API: повний проєкт і Fluent OpenAPI","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fscalar-openapi-fluent","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F16.scalar-openapi-fluent",{"title":727,"path":728,"stem":729},"Swagger \u002F Swashbuckle у Minimal API: окремий класичний шлях","\u002Fcsharp\u002Faspnet\u002Fminimal-api\u002Fswagger-swashbuckle","01.csharp\u002F11.aspnet\u002F01.minimal-api\u002F17.swagger-swashbuckle",{"title":731,"icon":658,"path":732,"stem":733,"children":734,"page":59},"API","\u002Fcsharp\u002Faspnet\u002Fapi","01.csharp\u002F11.aspnet\u002F02.api",[735,739,743,747,751,755,759,763,767,771,775,779,783,787],{"title":736,"path":737,"stem":738},"Що таке API. Клієнт-серверна архітектура","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fwhat-is-api","01.csharp\u002F11.aspnet\u002F02.api\u002F01.what-is-api",{"title":740,"path":741,"stem":742},"Формати даних: JSON, XML, TOML та бінарні формати","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fdata-formats","01.csharp\u002F11.aspnet\u002F02.api\u002F02.data-formats",{"title":744,"path":745,"stem":746},"Парадигми API та концепція REST","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-paradigms-rest","01.csharp\u002F11.aspnet\u002F02.api\u002F03.api-paradigms-rest",{"title":748,"path":749,"stem":750},"HTTP-методи, статус-коди та заголовки","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fhttp-methods-status-codes","01.csharp\u002F11.aspnet\u002F02.api\u002F04.http-methods-status-codes",{"title":752,"path":753,"stem":754},"Організація HTTP API за принципами REST","\u002Fcsharp\u002Faspnet\u002Fapi\u002Frest-organizing","01.csharp\u002F11.aspnet\u002F02.api\u002F05.rest-organizing",{"title":756,"path":757,"stem":758},"Номенклатура URL та CRUD-операції","\u002Fcsharp\u002Faspnet\u002Fapi\u002Furl-nomenclature-crud","01.csharp\u002F11.aspnet\u002F02.api\u002F06.url-nomenclature-crud",{"title":760,"path":761,"stem":762},"Правила дизайну: іменування та стандарти","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-design-naming","01.csharp\u002F11.aspnet\u002F02.api\u002F07.api-design-naming",{"title":764,"path":765,"stem":766},"Валідація, ліміти та обробка помилок","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-design-validation","01.csharp\u002F11.aspnet\u002F02.api\u002F08.api-design-validation",{"title":768,"path":769,"stem":770},"Обробка помилок у Minimal API","\u002Fcsharp\u002Faspnet\u002Fapi\u002Ferror-handling-http","01.csharp\u002F11.aspnet\u002F02.api\u002F09.error-handling-http",{"title":772,"path":773,"stem":774},"Ідемпотентність та синхронізація стану","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fidempotency-sync","01.csharp\u002F11.aspnet\u002F02.api\u002F10.idempotency-sync",{"title":776,"path":777,"stem":778},"Пагінація та організація списків","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fpagination-lists","01.csharp\u002F11.aspnet\u002F02.api\u002F11.pagination-lists",{"title":780,"path":781,"stem":782},"Безпека API, кешування та інтернаціоналізація","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fsecurity-auth","01.csharp\u002F11.aspnet\u002F02.api\u002F12.security-auth",{"title":784,"path":785,"stem":786},"Процес проєктування API та документування","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fapi-design-process","01.csharp\u002F11.aspnet\u002F02.api\u002F13.api-design-process",{"title":788,"path":789,"stem":790},"OpenAPI: контракт, специфікація та документація API","\u002Fcsharp\u002Faspnet\u002Fapi\u002Fopenapi","01.csharp\u002F11.aspnet\u002F02.api\u002F14.openapi",{"title":792,"icon":793,"path":794,"stem":795,"children":796,"page":59},"Auth","i-lucide-shield-check","\u002Fcsharp\u002Faspnet\u002Fauth","01.csharp\u002F11.aspnet\u002F03.auth",[797,801,805,809,813,817,821,825,829,833,837,841,845,849,853,857,861,865],{"title":798,"path":799,"stem":800},"Основи аутентифікації та авторизації","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fauth-fundamentals","01.csharp\u002F11.aspnet\u002F03.auth\u002F01.auth-fundamentals",{"title":802,"path":803,"stem":804},"JWT-аутентифікація","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fjwt-authentication","01.csharp\u002F11.aspnet\u002F03.auth\u002F02.jwt-authentication",{"title":806,"path":807,"stem":808},"Авторизація: ролі, політики та resource-based доступ","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fauthorization-policies","01.csharp\u002F11.aspnet\u002F03.auth\u002F03.authorization-policies",{"title":810,"path":811,"stem":812},"Cookie-аутентифікація та ASP.NET Core Identity","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fcookie-auth-identity","01.csharp\u002F11.aspnet\u002F03.auth\u002F04.cookie-auth-identity",{"title":814,"path":815,"stem":816},"JWT + Refresh Tokens (HttpOnly Cookie)","\u002Fcsharp\u002Faspnet\u002Fauth\u002F04b.identity-auth-jwt","01.csharp\u002F11.aspnet\u002F03.auth\u002F04b.identity-auth-jwt",{"title":818,"path":819,"stem":820},"Identity: Підтвердження Email та Скидання Пароля","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fidentity-email-confirmation","01.csharp\u002F11.aspnet\u002F03.auth\u002F05.identity-email-confirmation",{"title":822,"path":823,"stem":824},"Identity: Двофакторна Аутентифікація (2FA)","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fidentity-two-factor","01.csharp\u002F11.aspnet\u002F03.auth\u002F06.identity-two-factor",{"title":826,"path":827,"stem":828},"Identity: Внутрішня Архітектура та Кастомізація","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fidentity-internals","01.csharp\u002F11.aspnet\u002F03.auth\u002F07.identity-internals",{"title":830,"path":831,"stem":832},"OAuth 2.0 та зовнішні провайдери","\u002Fcsharp\u002Faspnet\u002Fauth\u002Foauth-external-providers","01.csharp\u002F11.aspnet\u002F03.auth\u002F08.oauth-external-providers",{"title":834,"path":835,"stem":836},"Безпека на практиці: CORS, HTTPS та захист від атак","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fsecurity-hardening","01.csharp\u002F11.aspnet\u002F03.auth\u002F09.security-hardening",{"title":838,"path":839,"stem":840},"Теорія OAuth 2.0: Поняття, Аналогії та Флоу","\u002Fcsharp\u002Faspnet\u002Fauth\u002Foauth-theory","01.csharp\u002F11.aspnet\u002F03.auth\u002F10.oauth-theory",{"title":842,"path":843,"stem":844},"OIDC, OAuth 2.0 та Keycloak в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Foidc-keycloak","01.csharp\u002F11.aspnet\u002F03.auth\u002F10.oidc-keycloak",{"title":846,"path":847,"stem":848},"API Keys аутентифікація в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fapi-keys","01.csharp\u002F11.aspnet\u002F03.auth\u002F11.api-keys",{"title":850,"path":851,"stem":852},"Rate Limiting та Throttling в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Frate-limiting","01.csharp\u002F11.aspnet\u002F03.auth\u002F12.rate-limiting",{"title":854,"path":855,"stem":856},"Refresh Token Rotation в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Frefresh-token-rotation","01.csharp\u002F11.aspnet\u002F03.auth\u002F13.refresh-token-rotation",{"title":858,"path":859,"stem":860},"Certificate Authentication та mTLS в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fcertificate-auth","01.csharp\u002F11.aspnet\u002F03.auth\u002F14.certificate-auth",{"title":862,"path":863,"stem":864},"RBAC, ABAC та ReBAC в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Frbac-abac-rebac","01.csharp\u002F11.aspnet\u002F03.auth\u002F15.rbac-abac-rebac",{"title":866,"path":867,"stem":868},"Multi-tenancy та ізоляція даних в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fauth\u002Fmulti-tenancy","01.csharp\u002F11.aspnet\u002F03.auth\u002F16.multi-tenancy",{"title":870,"icon":871,"path":872,"stem":873,"children":874,"page":59},"Нотифікації","i-lucide-bell","\u002Fcsharp\u002Faspnet\u002Fnotifications","01.csharp\u002F11.aspnet\u002F04.notifications",[875,879,883,887,891,895,899,903,907,911,915,919,923],{"title":876,"path":877,"stem":878},"In-App нотифікації через базу даних","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fin-app-database-notifications","01.csharp\u002F11.aspnet\u002F04.notifications\u002F01.in-app-database-notifications",{"title":880,"path":881,"stem":882},"Polling: Регулярний запит оновлень","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fpolling","01.csharp\u002F11.aspnet\u002F04.notifications\u002F02.polling",{"title":884,"path":885,"stem":886},"Server-Sent Events: Однострімовий push від сервера","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fserver-sent-events","01.csharp\u002F11.aspnet\u002F04.notifications\u002F03.server-sent-events",{"title":888,"path":889,"stem":890},"WebSockets: Двостороннє з'єднання в реальному часі","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fwebsockets","01.csharp\u002F11.aspnet\u002F04.notifications\u002F04.websockets",{"title":892,"path":893,"stem":894},"SignalR: Абстракція над транспортами реального часу","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fsignalr","01.csharp\u002F11.aspnet\u002F04.notifications\u002F05.signalr",{"title":896,"path":897,"stem":898},"Background Services: Фонові задачі в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fbackground-services","01.csharp\u002F11.aspnet\u002F04.notifications\u002F06.background-services",{"title":900,"path":901,"stem":902},"Web Push нотифікації","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fweb-push","01.csharp\u002F11.aspnet\u002F04.notifications\u002F07.web-push",{"title":904,"path":905,"stem":906},"Email нотифікації","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Femail-notifications","01.csharp\u002F11.aspnet\u002F04.notifications\u002F08.email-notifications",{"title":908,"path":909,"stem":910},"Порівняння підходів: Як вибрати правильну технологію нотифікацій","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fchoosing-the-right-approach","01.csharp\u002F11.aspnet\u002F04.notifications\u002F09.choosing-the-right-approach",{"title":912,"path":913,"stem":914},"Hangfire: Надійне планування фонових задач","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fhangfire","01.csharp\u002F11.aspnet\u002F04.notifications\u002F10.hangfire",{"title":916,"path":917,"stem":918},"Практика: Конвертація зображень у WebP через Hangfire","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fhangfire-image-webp","01.csharp\u002F11.aspnet\u002F04.notifications\u002F11.hangfire-image-webp",{"title":920,"path":921,"stem":922},"Практика: Підготовка відео до HLS-стрімінгу через Hangfire","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Fhangfire-video-hls","01.csharp\u002F11.aspnet\u002F04.notifications\u002F12.hangfire-video-hls",{"title":924,"path":925,"stem":926},"Telegram-нотифікації: від одного повідомлення до масових розсилок і мульти-канального підходу","\u002Fcsharp\u002Faspnet\u002Fnotifications\u002Ftelegram-notifications","01.csharp\u002F11.aspnet\u002F04.notifications\u002F13.telegram-notifications",{"title":928,"icon":929,"path":930,"stem":931,"children":932,"page":59},"Інтернаціоналізація","i-lucide-languages","\u002Fcsharp\u002Faspnet\u002Fi18n","01.csharp\u002F11.aspnet\u002F05.i18n",[933,937],{"title":934,"path":935,"stem":936},"Інтернаціоналізація (i18n) у Minimal API: від A до Я","\u002Fcsharp\u002Faspnet\u002Fi18n\u002Finternationalization","01.csharp\u002F11.aspnet\u002F05.i18n\u002F01.internationalization",{"title":938,"path":939,"stem":940},"Humanizer: людиномовні рядки у .NET","\u002Fcsharp\u002Faspnet\u002Fi18n\u002Fhumanizer","01.csharp\u002F11.aspnet\u002F05.i18n\u002F02.humanizer",{"title":942,"icon":943,"path":944,"stem":945,"children":946,"page":59},"Кешування","i-lucide-layers","\u002Fcsharp\u002Faspnet\u002Fcaching","01.csharp\u002F11.aspnet\u002F06.caching",[947,951,955,959,963],{"title":948,"path":949,"stem":950},"Огляд кешування: чотири рівні і коли що обирати","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fcaching","01.csharp\u002F11.aspnet\u002F06.caching\u002F01.caching",{"title":952,"path":953,"stem":954},"IMemoryCache: кеш в оперативній пам'яті","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fmemory-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F02.memory-cache",{"title":956,"path":957,"stem":958},"IDistributedCache і Redis: розподілений кеш","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fdistributed-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F03.distributed-cache",{"title":960,"path":961,"stem":962},"Response Cache: HTTP-кешування через Cache-Control","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Fresponse-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F04.response-cache",{"title":964,"path":965,"stem":966},"Output Cache: серверний кеш HTTP-відповідей (.NET 7+)","\u002Fcsharp\u002Faspnet\u002Fcaching\u002Foutput-cache","01.csharp\u002F11.aspnet\u002F06.caching\u002F05.output-cache",{"title":968,"icon":969,"path":970,"stem":971,"children":972,"page":59},"Тестування","i-lucide-test-tube","\u002Fcsharp\u002Faspnet\u002Ftesting","01.csharp\u002F11.aspnet\u002F07.testing",[973,977,981,985,989,993,997,1001,1005,1009,1013,1017,1021,1025,1029,1033,1037,1041,1045,1049,1053],{"title":974,"path":975,"stem":976},"Що таке тестування? Від інтуїції до науки","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fwhat-is-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F01.what-is-testing",{"title":978,"path":979,"stem":980},"Піраміда тестування — Стратегія, а не Догма","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftesting-pyramid","01.csharp\u002F11.aspnet\u002F07.testing\u002F02.testing-pyramid",{"title":982,"path":983,"stem":984},"Дві Школи Тестування — Лондон проти Детройту","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftesting-schools","01.csharp\u002F11.aspnet\u002F07.testing\u002F03.testing-schools",{"title":986,"path":987,"stem":988},"TDD та BDD — Тести як Дизайн-інструмент","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftdd-and-bdd","01.csharp\u002F11.aspnet\u002F07.testing\u002F04.tdd-and-bdd",{"title":990,"path":991,"stem":992},"Що саме тестувати — Техніки аналізу та Циклomatична складність","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fwhat-to-test","01.csharp\u002F11.aspnet\u002F07.testing\u002F05.what-to-test",{"title":994,"path":995,"stem":996},"Тестові Фреймворки — Навіщо вони і що всередині","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftest-frameworks","01.csharp\u002F11.aspnet\u002F07.testing\u002F06.test-frameworks",{"title":998,"path":999,"stem":1000},"xUnit — Факти, Теорії та Lifecycle тестів","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fxunit-basics","01.csharp\u002F11.aspnet\u002F07.testing\u002F07.xunit-basics",{"title":1002,"path":1003,"stem":1004},"xUnit Advanced — Fixtures, Кастомізація та Розширення","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fxunit-advanced","01.csharp\u002F11.aspnet\u002F07.testing\u002F08.xunit-advanced",{"title":1006,"path":1007,"stem":1008},"Moq — Глибоке занурення в мокування","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fmocking-with-moq","01.csharp\u002F11.aspnet\u002F07.testing\u002F09.mocking-with-moq",{"title":1010,"path":1011,"stem":1012},"Тестування Баз Даних — EF Core, SQLite та Testcontainers","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fdatabase-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F10.database-testing",{"title":1014,"path":1015,"stem":1016},"Integration Testing — Частина 1 [Теорія та WebApplicationFactory]","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fintegration-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F11.integration-testing",{"title":1018,"path":1019,"stem":1020},"Інтеграційне тестування — Практика","\u002Fcsharp\u002Faspnet\u002Ftesting\u002F11a.integration-testing-practice","01.csharp\u002F11.aspnet\u002F07.testing\u002F11a.integration-testing-practice",{"title":1022,"path":1023,"stem":1024},"Integration Testing — Частина 2 [Просунуті Сценарії та Testcontainers]","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fintegration-testing-advanced","01.csharp\u002F11.aspnet\u002F07.testing\u002F12.integration-testing-advanced",{"title":1026,"path":1027,"stem":1028},"Професійний Postman: Колекції, Змінні та GitHub Інтеграція","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fpostman-professional","01.csharp\u002F11.aspnet\u002F07.testing\u002F13.postman-professional",{"title":1030,"path":1031,"stem":1032},"HttpClient у Тестах Частина 1: Архітектура та MockHttpMessageHandler","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fhttpclient-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F14.httpclient-testing",{"title":1034,"path":1035,"stem":1036},"HttpClient у Тестах Частина 2: WireMock.Net та Resilience","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fwiremock-net","01.csharp\u002F11.aspnet\u002F07.testing\u002F15.wiremock-net",{"title":1038,"path":1039,"stem":1040},"Патерни та Анти-патерни Тестування: Test Smells","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Ftesting-patterns","01.csharp\u002F11.aspnet\u002F07.testing\u002F16.testing-patterns",{"title":1042,"path":1043,"stem":1044},"Просунуті інструменти: Time, Snapshots та Властивості","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fadvanced-testing-tools","01.csharp\u002F11.aspnet\u002F07.testing\u002F17.advanced-testing-tools",{"title":1046,"path":1047,"stem":1048},"Тестування Архітектури з NetArchTest","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Farchitecture-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F18.architecture-testing",{"title":1050,"path":1051,"stem":1052},"Тестування Продуктивності: BenchmarkDotNet, NBomber та k6","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fperformance-testing","01.csharp\u002F11.aspnet\u002F07.testing\u002F19.performance-testing",{"title":1054,"path":1055,"stem":1056},"Залишок плану для курсу \"Тестування ASP.NET Minimal API\"","\u002Fcsharp\u002Faspnet\u002Ftesting\u002Fremaining_plan","01.csharp\u002F11.aspnet\u002F07.testing\u002Fremaining_plan",{"title":1058,"icon":1059,"path":1060,"stem":1061,"children":1062,"page":59},"Платежі","i-lucide-credit-card","\u002Fcsharp\u002Faspnet\u002Fpayments","01.csharp\u002F11.aspnet\u002F08.payments",[1063,1067,1071,1075,1079,1083,1087,1091,1095,1099,1103,1107],{"title":1064,"path":1065,"stem":1066},"Основи платіжної інфраструктури","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpayment-fundamentals","01.csharp\u002F11.aspnet\u002F08.payments\u002F01.payment-fundamentals",{"title":1068,"path":1069,"stem":1070},"Методи оплати в Україні","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpayment-methods-ukraine","01.csharp\u002F11.aspnet\u002F08.payments\u002F02.payment-methods-ukraine",{"title":1072,"path":1073,"stem":1074},"PCI DSS та безпека платежів","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpci-dss-security","01.csharp\u002F11.aspnet\u002F08.payments\u002F03.pci-dss-security",{"title":1076,"path":1077,"stem":1078},"Архітектура платіжної підсистеми","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fpayment-architecture","01.csharp\u002F11.aspnet\u002F08.payments\u002F04.payment-architecture",{"title":1080,"path":1081,"stem":1082},"Інтеграція LiqPay (ПриватБанк)","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fliqpay-integration","01.csharp\u002F11.aspnet\u002F08.payments\u002F05.liqpay-integration",{"title":1084,"path":1085,"stem":1086},"Інтеграція Monobank Acquiring API","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fmonobank-acquiring","01.csharp\u002F11.aspnet\u002F08.payments\u002F06.monobank-acquiring",{"title":1088,"path":1089,"stem":1090},"Інтеграція Stripe","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fstripe-integration","01.csharp\u002F11.aspnet\u002F08.payments\u002F07.stripe-integration",{"title":1092,"path":1093,"stem":1094},"Webhooks — глибоке занурення","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fwebhooks-deep-dive","01.csharp\u002F11.aspnet\u002F08.payments\u002F08.webhooks-deep-dive",{"title":1096,"path":1097,"stem":1098},"Підписки та рекурентні платежі","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fsubscriptions-recurring","01.csharp\u002F11.aspnet\u002F08.payments\u002F09.subscriptions-recurring",{"title":1100,"path":1101,"stem":1102},"Повернення коштів та диспути","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Frefunds-disputes","01.csharp\u002F11.aspnet\u002F08.payments\u002F10.refunds-disputes",{"title":1104,"path":1105,"stem":1106},"Тестування платіжних інтеграцій","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Ftesting-payments","01.csharp\u002F11.aspnet\u002F08.payments\u002F11.testing-payments",{"title":1108,"path":1109,"stem":1110},"Чекліст виходу в Production","\u002Fcsharp\u002Faspnet\u002Fpayments\u002Fproduction-checklist","01.csharp\u002F11.aspnet\u002F08.payments\u002F12.production-checklist",{"title":1112,"icon":1113,"items":1114,"path":1127,"stem":1128,"children":1129,"page":59},"Популярні бібліотеки","lucide:box",[1115,1116,1117,1118,1119,1120,1121,1122,1123,1124,1125,1126],"01.fluent-validation","02.mapster","03.erroror-result-pattern","04.serilog","05.mediatr","06.polly","07.health-checks","08.feature-management","09.fluent-email","10.quest-pdf","11.bogus","12.humanizer-guard","\u002Fcsharp\u002Faspnet\u002Flibraries","01.csharp\u002F11.aspnet\u002F09.libraries",[1130,1134,1138,1142,1146,1150,1154,1158,1162,1166,1170,1174,1178],{"title":1131,"path":1132,"stem":1133},"Валідація з FluentValidation в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ffluent-validation","01.csharp\u002F11.aspnet\u002F09.libraries\u002F01.fluent-validation",{"title":1135,"path":1136,"stem":1137},"Маппінг об","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fmapster","01.csharp\u002F11.aspnet\u002F09.libraries\u002F02.mapster",{"title":1139,"path":1140,"stem":1141},"Обробка помилок з ErrorOr та Result Pattern в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ferroror-result-pattern","01.csharp\u002F11.aspnet\u002F09.libraries\u002F03.erroror-result-pattern",{"title":1143,"path":1144,"stem":1145},"Структуроване логування з Serilog в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fserilog","01.csharp\u002F11.aspnet\u002F09.libraries\u002F04.serilog",{"title":1147,"path":1148,"stem":1149},"CQRS та Mediator з MediatR в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fmediatr","01.csharp\u002F11.aspnet\u002F09.libraries\u002F05.mediatr",{"title":1151,"path":1152,"stem":1153},"Відмовостійкість з Polly в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fpolly","01.csharp\u002F11.aspnet\u002F09.libraries\u002F06.polly",{"title":1155,"path":1156,"stem":1157},"Health Checks в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fhealth-checks","01.csharp\u002F11.aspnet\u002F09.libraries\u002F07.health-checks",{"title":1159,"path":1160,"stem":1161},"Feature Management та Feature Flags в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ffeature-management","01.csharp\u002F11.aspnet\u002F09.libraries\u002F08.feature-management",{"title":1163,"path":1164,"stem":1165},"Відправка Email з FluentEmail в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Ffluent-email","01.csharp\u002F11.aspnet\u002F09.libraries\u002F09.fluent-email",{"title":1167,"path":1168,"stem":1169},"Генерація PDF з QuestPDF в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fquest-pdf","01.csharp\u002F11.aspnet\u002F09.libraries\u002F10.quest-pdf",{"title":1171,"path":1172,"stem":1173},"Генерація тестових даних з Bogus в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fbogus","01.csharp\u002F11.aspnet\u002F09.libraries\u002F11.bogus",{"title":1175,"path":1176,"stem":1177},"Humanizer та Guard Clauses в ASP.NET Core","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fhumanizer-guard","01.csharp\u002F11.aspnet\u002F09.libraries\u002F12.humanizer-guard",{"title":1179,"path":1180,"stem":1181},"План модуля 10.libraries — Популярні бібліотеки ASP.NET","\u002Fcsharp\u002Faspnet\u002Flibraries\u002Fplan","01.csharp\u002F11.aspnet\u002F09.libraries\u002Fplan",{"title":1183,"icon":1184,"path":1185,"stem":1186,"children":1187,"page":59},"Razor Pages","i-lucide-layout-template","\u002Fcsharp\u002Faspnet\u002Frazor-pages","01.csharp\u002F11.aspnet\u002F10.razor-pages",[1188,1192,1196,1200,1204,1208],{"title":1189,"path":1190,"stem":1191},"Від Minimal API до Razor Pages: концептуальний перехід","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Ffrom-minimal-api","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F01.from-minimal-api",{"title":1193,"path":1194,"stem":1195},"PageModel: логіка сторінки Razor Pages","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Fpage-model","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F02.page-model",{"title":1197,"path":1198,"stem":1199},"Razor синтаксис: шаблонізатор у .cshtml","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Frazor-syntax","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F03.razor-syntax",{"title":1201,"path":1202,"stem":1203},"Tag Helpers: типізований HTML","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Ftag-helpers","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F04.tag-helpers",{"title":1205,"path":1206,"stem":1207},"Форми і валідація: повний цикл обробки даних","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Fforms-validation","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F05.forms-validation",{"title":1209,"path":1210,"stem":1211},"Практичний проєкт: TaskManager на Razor Pages","\u002Fcsharp\u002Faspnet\u002Frazor-pages\u002Fproject-task-manager","01.csharp\u002F11.aspnet\u002F10.razor-pages\u002F06.project-task-manager",{"title":1213,"path":1214,"stem":1215,"children":1216,"page":59},"ASP.NET Core MVC","\u002Fcsharp\u002Faspnet\u002Fmvc","01.csharp\u002F11.aspnet\u002F11.mvc",[1217,1221,1225,1229,1233,1237,1241,1245,1249,1253,1257,1261,1265,1269,1273,1277,1281,1285],{"title":1218,"path":1219,"stem":1220},"Патерн MVC: архітектура, що змінила веб","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fmvc-pattern","01.csharp\u002F11.aspnet\u002F11.mvc\u002F01.mvc-pattern",{"title":1222,"path":1223,"stem":1224},"Від Razor Pages до MVC: концептуальний перехід","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Ffrom-razor-pages","01.csharp\u002F11.aspnet\u002F11.mvc\u002F02.from-razor-pages",{"title":1226,"path":1227,"stem":1228},"Controllers та Actions: серце MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fcontrollers-actions","01.csharp\u002F11.aspnet\u002F11.mvc\u002F03.controllers-actions",{"title":1230,"path":1231,"stem":1232},"Маршрутизація в MVC: Convention vs Attribute Routing","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Frouting-mvc","01.csharp\u002F11.aspnet\u002F11.mvc\u002F04.routing-mvc",{"title":1234,"path":1235,"stem":1236},"Model Binding: від HTTP до C#","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fmodel-binding","01.csharp\u002F11.aspnet\u002F11.mvc\u002F05.model-binding",{"title":1238,"path":1239,"stem":1240},"Views, ViewData, ViewBag, TempData і ViewModel","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fviews-viewdata-tempdata","01.csharp\u002F11.aspnet\u002F11.mvc\u002F06.views-viewdata-tempdata",{"title":1242,"path":1243,"stem":1244},"Filters: аспектно-орієнтоване програмування в MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Ffilters","01.csharp\u002F11.aspnet\u002F11.mvc\u002F07.filters",{"title":1246,"path":1247,"stem":1248},"Areas: структурування великих застосунків","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fareas","01.csharp\u002F11.aspnet\u002F11.mvc\u002F08.areas",{"title":1250,"path":1251,"stem":1252},"View Components: повторювані незалежні блоки UI","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fview-components","01.csharp\u002F11.aspnet\u002F11.mvc\u002F09.view-components",{"title":1254,"path":1255,"stem":1256},"Display та Editor Templates","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fdisplay-editor-templates","01.csharp\u002F11.aspnet\u002F11.mvc\u002F10.display-editor-templates",{"title":1258,"path":1259,"stem":1260},"Валідація: IValidatableObject та FluentValidation","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fvalidation-advanced","01.csharp\u002F11.aspnet\u002F11.mvc\u002F11.validation-advanced",{"title":1262,"path":1263,"stem":1264},"HTMX: інтерактивність через HTML-атрибути","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fhtmx","01.csharp\u002F11.aspnet\u002F11.mvc\u002F12.htmx",{"title":1266,"path":1267,"stem":1268},"HTMX у ASP.NET Core MVC: серверна інтеграція","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fajax-htmx-mvc","01.csharp\u002F11.aspnet\u002F11.mvc\u002F13.ajax-htmx-mvc",{"title":1270,"path":1271,"stem":1272},"Практичний проєкт: Каталог товарів з HTMX","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fhtmx-project","01.csharp\u002F11.aspnet\u002F11.mvc\u002F14.htmx-project",{"title":1274,"path":1275,"stem":1276},"Завантаження та обробка файлів","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Ffile-upload","01.csharp\u002F11.aspnet\u002F11.mvc\u002F15.file-upload",{"title":1278,"path":1279,"stem":1280},"Глобалізація та Локалізація MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fglobalization-localization","01.csharp\u002F11.aspnet\u002F11.mvc\u002F16.globalization-localization",{"title":1282,"path":1283,"stem":1284},"Підсумковий проєкт: Блог-платформа","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fmvc-project","01.csharp\u002F11.aspnet\u002F11.mvc\u002F17.mvc-project",{"title":1286,"path":1287,"stem":1288},"План курсу: ASP.NET Core MVC","\u002Fcsharp\u002Faspnet\u002Fmvc\u002Fplan","01.csharp\u002F11.aspnet\u002F11.mvc\u002Fplan",{"title":1290,"path":1291,"stem":1292,"children":1293,"page":59},"Web Api","\u002Fcsharp\u002Faspnet\u002Fweb-api","01.csharp\u002F11.aspnet\u002F12.web-api",[1294,1298,1302,1306,1310,1314,1318,1322,1326,1330,1334,1338,1342],{"title":1295,"path":1296,"stem":1297},"Від Minimal API до Controller-based API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Ffrom-minimal-api-to-controllers","01.csharp\u002F11.aspnet\u002F12.web-api\u002F01.from-minimal-api-to-controllers",{"title":1299,"path":1300,"stem":1301},"ControllerBase, ActionResult\u003CT> та Response Types","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fcontroller-base-actionresult","01.csharp\u002F11.aspnet\u002F12.web-api\u002F02.controller-base-actionresult",{"title":1303,"path":1304,"stem":1305},"Content Negotiation - JSON, XML та власні форматери","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fcontent-negotiation","01.csharp\u002F11.aspnet\u002F12.web-api\u002F03.content-negotiation",{"title":1307,"path":1308,"stem":1309},"Версіонування API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fapi-versioning","01.csharp\u002F11.aspnet\u002F12.web-api\u002F04.api-versioning",{"title":1311,"path":1312,"stem":1313},"ProblemDetails та структурована обробка помилок","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fproblemdetails-error-handling","01.csharp\u002F11.aspnet\u002F12.web-api\u002F05.problemdetails-error-handling",{"title":1315,"path":1316,"stem":1317},"Фільтри у Web API контексті","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Ffilters-for-api","01.csharp\u002F11.aspnet\u002F12.web-api\u002F06.filters-for-api",{"title":1319,"path":1320,"stem":1321},"Пагінація, фільтрація та сортування","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fpagination-filtering-sorting","01.csharp\u002F11.aspnet\u002F12.web-api\u002F07.pagination-filtering-sorting",{"title":1323,"path":1324,"stem":1325},"HATEOAS та Resource Expansion","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fhateoas-resource-expansion","01.csharp\u002F11.aspnet\u002F12.web-api\u002F08.hateoas-resource-expansion",{"title":1327,"path":1328,"stem":1329},"Гібридна архітектура - Minimal API + Controllers","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fminimal-api-vs-controllers-hybrid","01.csharp\u002F11.aspnet\u002F12.web-api\u002F09.minimal-api-vs-controllers-hybrid",{"title":1331,"path":1332,"stem":1333},"Документація API - Swashbuckle, NSwag та генерація клієнтів","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fapi-documentation-generation","01.csharp\u002F11.aspnet\u002F12.web-api\u002F10.api-documentation-generation",{"title":1335,"path":1336,"stem":1337},"Health Checks та моніторинг API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fhealth-checks-monitoring","01.csharp\u002F11.aspnet\u002F12.web-api\u002F11.health-checks-monitoring",{"title":1339,"path":1340,"stem":1341},"Підсумковий проєкт - Production-Ready REST API","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fweb-api-project","01.csharp\u002F11.aspnet\u002F12.web-api\u002F12.web-api-project",{"title":1343,"path":1344,"stem":1345},"План курсу: ASP.NET Core Web API (Controllers)","\u002Fcsharp\u002Faspnet\u002Fweb-api\u002Fplan","01.csharp\u002F11.aspnet\u002F12.web-api\u002Fplan",{"title":1347,"icon":1348,"path":1349,"stem":1350,"children":1351,"page":59},"Моніторинг","i-lucide-activity","\u002Fcsharp\u002Faspnet\u002Fmonitoring","01.csharp\u002F11.aspnet\u002F13.monitoring",[1352,1356,1360],{"title":1353,"path":1354,"stem":1355},"Спостережуваність: від console.log до production-систем","\u002Fcsharp\u002Faspnet\u002Fmonitoring\u002Fobservability-intro","01.csharp\u002F11.aspnet\u002F13.monitoring\u002F01.observability-intro",{"title":1357,"path":1358,"stem":1359},"Health Checks: перший рівень observability","\u002Fcsharp\u002Faspnet\u002Fmonitoring\u002Fhealth-checks","01.csharp\u002F11.aspnet\u002F13.monitoring\u002F02.health-checks",{"title":1361,"path":1362,"stem":1363},"Вбудовані метрики .NET 10 та System.Diagnostics.Metrics","\u002Fcsharp\u002Faspnet\u002Fmonitoring\u002Fdotnet-metrics","01.csharp\u002F11.aspnet\u002F13.monitoring\u002F03.dotnet-metrics",{"title":1365,"icon":1366,"path":1367,"stem":1368,"children":1369,"page":59},"Desktop UI","i-lucide-app-window","\u002Fcsharp\u002Fdesktop-ui","01.csharp\u002F12.desktop-ui",[1370,1374,1378,1382,1386,1390,1394,1398,1402,1406,1410,1414,1418,1422,1426,1430,1434,1438,1442,1446,1450,1454,1458,1462,1466,1470,1474,1478,1482,1486,1490,1494,1498,1502,1506,1510,1514,1518,1522,1526,1530,1534,1538,1542,1546,1550,1554,1558,1562,1566,1570,1574,1578,1582,1586,1590,1594,1598,1602,1606,1610,1614,1618,1622,1626,1630,1634,1638,1642,1646,1650],{"title":1371,"path":1372,"stem":1373},"Що таке десктопна розробка?","\u002Fcsharp\u002Fdesktop-ui\u002Fwhat-is-desktop-dev","01.csharp\u002F12.desktop-ui\u002F01.what-is-desktop-dev",{"title":1375,"path":1376,"stem":1377},"Архітектура WPF — як влаштований графічний інтерфейс","\u002Fcsharp\u002Fdesktop-ui\u002Fwpf-architecture","01.csharp\u002F12.desktop-ui\u002F02.wpf-architecture",{"title":1379,"path":1380,"stem":1381},"Перший WPF-проєкт — від нуля до вікна","\u002Fcsharp\u002Fdesktop-ui\u002Ffirst-wpf-app","01.csharp\u002F12.desktop-ui\u002F03.first-wpf-app",{"title":1383,"path":1384,"stem":1385},"Перший Avalonia-проєкт: WPF для всіх платформ","\u002Fcsharp\u002Fdesktop-ui\u002F03a.first-avalonia-app","01.csharp\u002F12.desktop-ui\u002F03a.first-avalonia-app",{"title":1387,"path":1388,"stem":1389},"XAML: декларативний інтерфейс","\u002Fcsharp\u002Fdesktop-ui\u002Fxaml-basics","01.csharp\u002F12.desktop-ui\u002F04.xaml-basics",{"title":1391,"path":1392,"stem":1393},"Fluent UI у WPF — сучасний дизайн Windows 11","\u002Fcsharp\u002Fdesktop-ui\u002F04a.wpf-fluent-ui","01.csharp\u002F12.desktop-ui\u002F04a.wpf-fluent-ui",{"title":1395,"path":1396,"stem":1397},"WPF UI — сучасна бібліотека Fluent контролів","\u002Fcsharp\u002Fdesktop-ui\u002F04b.wpf-ui-library","01.csharp\u002F12.desktop-ui\u002F04b.wpf-ui-library",{"title":1399,"path":1400,"stem":1401},"HandyControl — велика бібліотека UI контролів для WPF","\u002Fcsharp\u002Fdesktop-ui\u002F04c.handycontrol-library","01.csharp\u002F12.desktop-ui\u002F04c.handycontrol-library",{"title":1403,"path":1404,"stem":1405},"Простори імен та ресурси XAML","\u002Fcsharp\u002Fdesktop-ui\u002Fxaml-namespaces-resources","01.csharp\u002F12.desktop-ui\u002F05.xaml-namespaces-resources",{"title":1407,"path":1408,"stem":1409},"XAML в Avalonia: ключові відмінності від WPF","\u002Fcsharp\u002Fdesktop-ui\u002F05a.avalonia-xaml-differences","01.csharp\u002F12.desktop-ui\u002F05a.avalonia-xaml-differences",{"title":1411,"path":1412,"stem":1413},"Розширення розмітки XAML (Markup Extensions)","\u002Fcsharp\u002Fdesktop-ui\u002Fxaml-markup-extensions","01.csharp\u002F12.desktop-ui\u002F06.xaml-markup-extensions",{"title":1415,"path":1416,"stem":1417},"Панелі Layout: StackPanel, WrapPanel, DockPanel","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-panels-part1","01.csharp\u002F12.desktop-ui\u002F07.layout-panels-part1",{"title":1419,"path":1420,"stem":1421},"Grid, Canvas, UniformGrid","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-panels-part2","01.csharp\u002F12.desktop-ui\u002F07.layout-panels-part2",{"title":1423,"path":1424,"stem":1425},"Просунуті техніки Layout","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-advanced","01.csharp\u002F12.desktop-ui\u002F08.layout-advanced",{"title":1427,"path":1428,"stem":1429},"Адаптивний Layout та найкращі практики","\u002Fcsharp\u002Fdesktop-ui\u002Flayout-responsive","01.csharp\u002F12.desktop-ui\u002F09.layout-responsive",{"title":1431,"path":1432,"stem":1433},"Layout в Avalonia: відмінності та нові можливості","\u002Fcsharp\u002Fdesktop-ui\u002F09a.layout-avalonia","01.csharp\u002F12.desktop-ui\u002F09a.layout-avalonia",{"title":1435,"path":1436,"stem":1437},"Button, Image, ProgressBar та інші базові контроли","\u002Fcsharp\u002Fdesktop-ui\u002Fbasic-controls","01.csharp\u002F12.desktop-ui\u002F10.basic-controls",{"title":1439,"path":1440,"stem":1441},"Контроли в Avalonia: відмінності від WPF","\u002Fcsharp\u002Fdesktop-ui\u002F10a.controls-avalonia","01.csharp\u002F12.desktop-ui\u002F10a.controls-avalonia",{"title":1443,"path":1444,"stem":1445},"Текстові контроли — TextBlock, TextBox, RichTextBox","\u002Fcsharp\u002Fdesktop-ui\u002Ftext-controls","01.csharp\u002F12.desktop-ui\u002F11.text-controls",{"title":1447,"path":1448,"stem":1449},"Контроли вибору — CheckBox, RadioButton, ComboBox, ListBox, DatePicker","\u002Fcsharp\u002Fdesktop-ui\u002Fselection-controls","01.csharp\u002F12.desktop-ui\u002F12.selection-controls",{"title":1451,"path":1452,"stem":1453},"Content Model — GroupBox, Expander, TabControl, StatusBar","\u002Fcsharp\u002Fdesktop-ui\u002Fcontent-controls","01.csharp\u002F12.desktop-ui\u002F13.content-controls",{"title":1455,"path":1456,"stem":1457},"UI\u002FUX принципи десктопних застосунків","\u002Fcsharp\u002Fdesktop-ui\u002F13a.ui-ux-principles","01.csharp\u002F12.desktop-ui\u002F13a.ui-ux-principles",{"title":1459,"path":1460,"stem":1461},"Dependency Properties — Концепція та Value Resolution","\u002Fcsharp\u002Fdesktop-ui\u002Fdependency-properties-part1","01.csharp\u002F12.desktop-ui\u002F14.dependency-properties-part1",{"title":1463,"path":1464,"stem":1465},"Avalonia Property System — StyledProperty та DirectProperty","\u002Fcsharp\u002Fdesktop-ui\u002F14a.avalonia-property-system","01.csharp\u002F12.desktop-ui\u002F14a.avalonia-property-system",{"title":1467,"path":1468,"stem":1469},"Attached Properties — Властивості без меж","\u002Fcsharp\u002Fdesktop-ui\u002Fattached-properties","01.csharp\u002F12.desktop-ui\u002F15.attached-properties",{"title":1471,"path":1472,"stem":1473},"Routed Events — Маршрутизація подій у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Frouted-events","01.csharp\u002F12.desktop-ui\u002F16.routed-events",{"title":1475,"path":1476,"stem":1477},"Data Binding — Від Code-Behind до Декларативності","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-binding-basics-part1","01.csharp\u002F12.desktop-ui\u002F17.data-binding-basics-part1",{"title":1479,"path":1480,"stem":1481},"INotifyPropertyChanged — Живе оновлення UI","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-binding-basics-part2","01.csharp\u002F12.desktop-ui\u002F17.data-binding-basics-part2",{"title":1483,"path":1484,"stem":1485},"Compiled Bindings в Avalonia — Безпека на етапі компіляції","\u002Fcsharp\u002Fdesktop-ui\u002F17a.avalonia-compiled-bindings","01.csharp\u002F12.desktop-ui\u002F17a.avalonia-compiled-bindings",{"title":1487,"path":1488,"stem":1489},"Просунутий Data Binding — ElementName, RelativeSource, MultiBinding","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-binding-advanced","01.csharp\u002F12.desktop-ui\u002F18.data-binding-advanced",{"title":1491,"path":1492,"stem":1493},"Value Converters — Перетворення типів даних у Data Binding","\u002Fcsharp\u002Fdesktop-ui\u002Fvalue-converters","01.csharp\u002F12.desktop-ui\u002F19.value-converters",{"title":1495,"path":1496,"stem":1497},"Data Templates — Візуалізація об'єктів у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-templates","01.csharp\u002F12.desktop-ui\u002F20.data-templates",{"title":1499,"path":1500,"stem":1501},"Collections Binding Part 1 — ObservableCollection та ItemsControl","\u002Fcsharp\u002Fdesktop-ui\u002Fcollections-binding-part1","01.csharp\u002F12.desktop-ui\u002F21.collections-binding-part1",{"title":1503,"path":1504,"stem":1505},"Collections Binding Part 2 — ICollectionView, Filtering, Sorting та Virtualization","\u002Fcsharp\u002Fdesktop-ui\u002Fcollections-binding-part2","01.csharp\u002F12.desktop-ui\u002F21.collections-binding-part2",{"title":1507,"path":1508,"stem":1509},"MVVM Pattern — Від Spaghetti Code до архітектури","\u002Fcsharp\u002Fdesktop-ui\u002Fmvvm-pattern","01.csharp\u002F12.desktop-ui\u002F22.mvvm-pattern",{"title":1511,"path":1512,"stem":1513},"ViewModel Implementation — Від BaseViewModel до валідації","\u002Fcsharp\u002Fdesktop-ui\u002Fviewmodel-implementation","01.csharp\u002F12.desktop-ui\u002F23.viewmodel-implementation",{"title":1515,"path":1516,"stem":1517},"Commands — Від event handlers до декларативних команд","\u002Fcsharp\u002Fdesktop-ui\u002Fcommands","01.csharp\u002F12.desktop-ui\u002F24.commands",{"title":1519,"path":1520,"stem":1521},"MVVM Toolkit — MVVM без boilerplate через Source Generators","\u002Fcsharp\u002Fdesktop-ui\u002Fmvvm-toolkit","01.csharp\u002F12.desktop-ui\u002F25.mvvm-toolkit",{"title":1523,"path":1524,"stem":1525},"Messenger Pattern — Комунікація між ViewModel без прямих посилань","\u002Fcsharp\u002Fdesktop-ui\u002Fmessenger-pattern","01.csharp\u002F12.desktop-ui\u002F26.messenger-pattern",{"title":1527,"path":1528,"stem":1529},"Стилі WPF — CSS для десктопу","\u002Fcsharp\u002Fdesktop-ui\u002Fstyles-basics","01.csharp\u002F12.desktop-ui\u002F27.styles-basics",{"title":1531,"path":1532,"stem":1533},"CSS-like стилі Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002F27a.avalonia-css-styling","01.csharp\u002F12.desktop-ui\u002F27a.avalonia-css-styling",{"title":1535,"path":1536,"stem":1537},"Control Templates — Частина 1. Концепція та TemplateBinding","\u002Fcsharp\u002Fdesktop-ui\u002Fcontrol-templates-part1","01.csharp\u002F12.desktop-ui\u002F28.control-templates-part1",{"title":1539,"path":1540,"stem":1541},"Control Templates — Частина 2. Named Parts та ContentPresenter","\u002Fcsharp\u002Fdesktop-ui\u002Fcontrol-templates-part2","01.csharp\u002F12.desktop-ui\u002F28.control-templates-part2",{"title":1543,"path":1544,"stem":1545},"Control Themes в Avalonia — нова ера стилізації","\u002Fcsharp\u002Fdesktop-ui\u002F28a.avalonia-control-themes","01.csharp\u002F12.desktop-ui\u002F28a.avalonia-control-themes",{"title":1547,"path":1548,"stem":1549},"Triggers та Visual State Manager у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Ftriggers-visual-states","01.csharp\u002F12.desktop-ui\u002F29.triggers-visual-states",{"title":1551,"path":1552,"stem":1553},"Pseudo-classes в Avalonia — замість WPF Triggers","\u002Fcsharp\u002Fdesktop-ui\u002F29a.avalonia-pseudo-classes","01.csharp\u002F12.desktop-ui\u002F29a.avalonia-pseudo-classes",{"title":1555,"path":1556,"stem":1557},"Теми та ресурсні словники у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fresources-themes","01.csharp\u002F12.desktop-ui\u002F30.resources-themes",{"title":1559,"path":1560,"stem":1561},"Avalonia Themes — Fluent Design та система тематизації","\u002Fcsharp\u002Fdesktop-ui\u002F30a.avalonia-themes-fluent","01.csharp\u002F12.desktop-ui\u002F30a.avalonia-themes-fluent",{"title":1563,"path":1564,"stem":1565},"Контроли колекцій — глибоке занурення","\u002Fcsharp\u002Fdesktop-ui\u002Fcollection-controls","01.csharp\u002F12.desktop-ui\u002F31.collection-controls",{"title":1567,"path":1568,"stem":1569},"DataGrid — колонки та базове відображення","\u002Fcsharp\u002Fdesktop-ui\u002Fdatagrid-part1","01.csharp\u002F12.desktop-ui\u002F32.datagrid-part1",{"title":1571,"path":1572,"stem":1573},"DataGrid — сортування, фільтрація, редагування","\u002Fcsharp\u002Fdesktop-ui\u002Fdatagrid-part2","01.csharp\u002F12.desktop-ui\u002F32.datagrid-part2",{"title":1575,"path":1576,"stem":1577},"TreeView та GridView","\u002Fcsharp\u002Fdesktop-ui\u002Ftreeview-listview","01.csharp\u002F12.desktop-ui\u002F33.treeview-listview",{"title":1579,"path":1580,"stem":1581},"Меню, Toolbar, ContextMenu, StatusBar","\u002Fcsharp\u002Fdesktop-ui\u002Fmenus-toolbars","01.csharp\u002F12.desktop-ui\u002F34.menus-toolbars",{"title":1583,"path":1584,"stem":1585},"Навігація та керування вікнами. Частина 1: вікна та сторінки","\u002Fcsharp\u002Fdesktop-ui\u002Fnavigation-windows-part1","01.csharp\u002F12.desktop-ui\u002F35.navigation-windows-part1",{"title":1587,"path":1588,"stem":1589},"Навігація та керування вікнами. Частина 2: MVVM-навігація","\u002Fcsharp\u002Fdesktop-ui\u002Fnavigation-windows-part2","01.csharp\u002F12.desktop-ui\u002F35.navigation-windows-part2",{"title":1591,"path":1592,"stem":1593},"Avalonia — Навігація та діалоги","\u002Fcsharp\u002Fdesktop-ui\u002F35a.avalonia-navigation-dialogs","01.csharp\u002F12.desktop-ui\u002F35a.avalonia-navigation-dialogs",{"title":1595,"path":1596,"stem":1597},"Діалоги та File Pickers у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fdialogs-file-pickers","01.csharp\u002F12.desktop-ui\u002F36.dialogs-file-pickers",{"title":1599,"path":1600,"stem":1601},"UserControl: компонентний підхід у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fuser-controls","01.csharp\u002F12.desktop-ui\u002F37.user-controls",{"title":1603,"path":1604,"stem":1605},"Custom Controls: Lookless Controls у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fcustom-controls","01.csharp\u002F12.desktop-ui\u002F38.custom-controls",{"title":1607,"path":1608,"stem":1609},"Avalonia TemplatedControl — Lookless Controls","\u002Fcsharp\u002Fdesktop-ui\u002F38a.avalonia-templated-controls","01.csharp\u002F12.desktop-ui\u002F38a.avalonia-templated-controls",{"title":1611,"path":1612,"stem":1613},"Анімації у WPF: Storyboard та Easing Functions","\u002Fcsharp\u002Fdesktop-ui\u002Fanimations-transitions","01.csharp\u002F12.desktop-ui\u002F39.animations-transitions",{"title":1615,"path":1616,"stem":1617},"Анімації в Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002F39a.avalonia-animations","01.csharp\u002F12.desktop-ui\u002F39a.avalonia-animations",{"title":1619,"path":1620,"stem":1621},"2D Графіка та Мультимедіа у WPF","\u002Fcsharp\u002Fdesktop-ui\u002Fmedia-graphics","01.csharp\u002F12.desktop-ui\u002F40.media-graphics",{"title":1623,"path":1624,"stem":1625},"Dependency Injection у WPF та Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002Fdi-integration","01.csharp\u002F12.desktop-ui\u002F41.di-integration",{"title":1627,"path":1628,"stem":1629},"SQLite та EF Core у десктопних додатках","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-persistence-part1","01.csharp\u002F12.desktop-ui\u002F42.data-persistence-part1",{"title":1631,"path":1632,"stem":1633},"Repository Pattern та Unit of Work","\u002Fcsharp\u002Fdesktop-ui\u002Fdata-persistence-part2","01.csharp\u002F12.desktop-ui\u002F43.data-persistence-part2",{"title":1635,"path":1636,"stem":1637},"Тестування ViewModels","\u002Fcsharp\u002Fdesktop-ui\u002Fviewmodel-testing","01.csharp\u002F12.desktop-ui\u002F44.viewmodel-testing",{"title":1639,"path":1640,"stem":1641},"Avalonia Headless Testing — тестування UI без вікон","\u002Fcsharp\u002Fdesktop-ui\u002F44a.avalonia-headless-testing","01.csharp\u002F12.desktop-ui\u002F44a.avalonia-headless-testing",{"title":1643,"path":1644,"stem":1645},"Кросплатформна розробка з Avalonia","\u002Fcsharp\u002Fdesktop-ui\u002Favalonia-cross-platform","01.csharp\u002F12.desktop-ui\u002F45.avalonia-cross-platform",{"title":1647,"path":1648,"stem":1649},"Пакування та розгортання Avalonia додатків","\u002Fcsharp\u002Fdesktop-ui\u002Favalonia-packaging-deployment","01.csharp\u002F12.desktop-ui\u002F46.avalonia-packaging-deployment",{"title":1651,"path":1652,"stem":1653},"Розгортання WPF застосунків","\u002Fcsharp\u002Fdesktop-ui\u002Fwpf-packaging-deployment","01.csharp\u002F12.desktop-ui\u002F47.wpf-packaging-deployment",{"title":1655,"icon":658,"path":1656,"stem":1657,"children":1658,"page":59},"Network Programming","\u002Fcsharp\u002Fnetwork-programming","01.csharp\u002F13.network-programming",[1659,1663,1667,1671,1675,1679,1683,1687,1691,1695,1699],{"title":1660,"path":1661,"stem":1662},"Основи комп'ютерних мереж","\u002Fcsharp\u002Fnetwork-programming\u002Ffoundations","01.csharp\u002F13.network-programming\u002F01.foundations",{"title":1664,"path":1665,"stem":1666},"Модель OSI та стек TCP\u002FIP","\u002Fcsharp\u002Fnetwork-programming\u002Fosi-model","01.csharp\u002F13.network-programming\u002F02.osi-model",{"title":1668,"path":1669,"stem":1670},"IP-протокол та адресація","\u002Fcsharp\u002Fnetwork-programming\u002Fip-addressing","01.csharp\u002F13.network-programming\u002F03.ip-addressing",{"title":1672,"path":1673,"stem":1674},"UDP — протокол без з'єднання","\u002Fcsharp\u002Fnetwork-programming\u002Fudp","01.csharp\u002F13.network-programming\u002F05.udp",{"title":1676,"path":1677,"stem":1678},"UDP Broadcast та Multicast","\u002Fcsharp\u002Fnetwork-programming\u002Fudp-broadcast-multicast","01.csharp\u002F13.network-programming\u002F06.udp-broadcast-multicast",{"title":1680,"path":1681,"stem":1682},"HTTP — протокол вебу","\u002Fcsharp\u002Fnetwork-programming\u002Fhttp-fundamentals","01.csharp\u002F13.network-programming\u002F07.http-fundamentals",{"title":1684,"path":1685,"stem":1686},"HttpListener — вбудований HTTP-сервер .NET","\u002Fcsharp\u002Fnetwork-programming\u002F07a.http-listener","01.csharp\u002F13.network-programming\u002F07a.http-listener",{"title":1688,"path":1689,"stem":1690},"HTTP Advanced — cookies, аутентифікація та HTTPS","\u002Fcsharp\u002Fnetwork-programming\u002Fhttp-advanced","01.csharp\u002F13.network-programming\u002F08.http-advanced",{"title":1692,"path":1693,"stem":1694},"SMTP та протоколи електронної пошти","\u002Fcsharp\u002Fnetwork-programming\u002Fsmtp","01.csharp\u002F13.network-programming\u002F09.smtp",{"title":1696,"path":1697,"stem":1698},"WebSocket — повнодуплексний протокол реального часу","\u002Fcsharp\u002Fnetwork-programming\u002Fwebsockets","01.csharp\u002F13.network-programming\u002F10.websockets",{"title":1700,"path":1701,"stem":1702},"TLS\u002FSSL — криптографічний захист мережевих з'єднань","\u002Fcsharp\u002Fnetwork-programming\u002Ftls-ssl","01.csharp\u002F13.network-programming\u002F11.tls-ssl",{"title":1704,"path":1705,"stem":1706},"C# & .NET: The Ultimate Roadmap","\u002Fcsharp\u002Froadmap","01.csharp\u002Froadmap",{"title":1708,"icon":1709,"path":1710,"stem":1711,"children":1712,"page":59},"C++","i-devicon-cplusplus","\u002Fcpp","02.cpp",[1713,1717,1721,1725,1729,1733,1737,1741,1745,1748,1752,1756,1760,1764,1768,1772,1776,1780,1784,1788,1792,1796,1800,1804,1808,1812,1816,1820,1824,1828,1832,1836,1840,1844,1848,1852,1856,1860,1864,1868,1872,1876,1880,1884,1888,1892,1896,1900,1904,1908],{"title":1714,"path":1715,"stem":1716},"Вступ у програмування та алгоритми","\u002Fcpp\u002Fintro-algorithms","02.cpp\u002F01.intro-algorithms",{"title":1718,"path":1719,"stem":1720},"Code Style: угоди про оформлення коду","\u002Fcpp\u002Fcode-style","02.cpp\u002F02.code-style",{"title":1722,"path":1723,"stem":1724},"Середовище розробки та перший проєкт","\u002Fcpp\u002Fide-setup","02.cpp\u002F03.ide-setup",{"title":1726,"path":1727,"stem":1728},"Вивід даних на екран","\u002Fcpp\u002Fdata-output","02.cpp\u002F04.data-output",{"title":1730,"path":1731,"stem":1732},"Типи даних, змінні та константи","\u002Fcpp\u002Fdata-types-variables","02.cpp\u002F05.data-types-variables",{"title":1734,"path":1735,"stem":1736},"Ввід даних з клавіатури","\u002Fcpp\u002Fdata-input","02.cpp\u002F06.data-input",{"title":1738,"path":1739,"stem":1740},"Оператори, перетворення типів та логічні операції","\u002Fcpp\u002Foperators-type-conversion","02.cpp\u002F07.operators-type-conversion",{"title":1742,"path":1743,"stem":1744},"Цикли","\u002Fcpp\u002Floops","02.cpp\u002F08.loops",{"title":32,"path":1746,"stem":1747},"\u002Fcpp\u002Farrays","02.cpp\u002F09.arrays",{"title":1749,"path":1750,"stem":1751},"Алгоритми сортування та аналіз складності","\u002Fcpp\u002Fsorting","02.cpp\u002F10.sorting",{"title":1753,"path":1754,"stem":1755},"Алгоритми пошуку","\u002Fcpp\u002Fsearching","02.cpp\u002F11.searching",{"title":1757,"path":1758,"stem":1759},"Функції: основи","\u002Fcpp\u002Ffunctions-basics","02.cpp\u002F12.functions-basics",{"title":1761,"path":1762,"stem":1763},"Функції: прототипи, область видимості та додаткові можливості","\u002Fcpp\u002Ffunctions-scope","02.cpp\u002F13.functions-scope",{"title":1765,"path":1766,"stem":1767},"Функції: перевантаження та шаблони","\u002Fcpp\u002Ffunctions-overloading-templates","02.cpp\u002F14.functions-overloading-templates",{"title":1769,"path":1770,"stem":1771},"Вказівники: основи","\u002Fcpp\u002Fpointers-basics","02.cpp\u002F15.pointers-basics",{"title":1773,"path":1774,"stem":1775},"Посилання (References)","\u002Fcpp\u002Freferences","02.cpp\u002F16.references",{"title":1777,"path":1778,"stem":1779},"Вказівники, const і масиви","\u002Fcpp\u002Fpointers-const-arrays","02.cpp\u002F17.pointers-const-arrays",{"title":1781,"path":1782,"stem":1783},"Адресна арифметика","\u002Fcpp\u002Fpointer-arithmetic","02.cpp\u002F18.pointer-arithmetic",{"title":1785,"path":1786,"stem":1787},"Динамічна пам'ять","\u002Fcpp\u002Fdynamic-memory","02.cpp\u002F19.dynamic-memory",{"title":1789,"path":1790,"stem":1791},"Вказівники типу void","\u002Fcpp\u002Fvoid-pointers","02.cpp\u002F20.void-pointers",{"title":1793,"path":1794,"stem":1795},"Вказівники на вказівники","\u002Fcpp\u002Fpointers-to-pointers","02.cpp\u002F21.pointers-to-pointers",{"title":1797,"path":1798,"stem":1799},"Оператор доступу до членів через вказівник (->)","\u002Fcpp\u002Fmember-access-operator","02.cpp\u002F22.member-access-operator",{"title":1801,"path":1802,"stem":1803},"Цикл for-each (Range-based for)","\u002Fcpp\u002Fforeach-loop","02.cpp\u002F23.foreach-loop",{"title":1805,"path":1806,"stem":1807},"Вказівники на функції","\u002Fcpp\u002Ffunction-pointers","02.cpp\u002F24.function-pointers",{"title":1809,"path":1810,"stem":1811},"Лямбда-вирази","\u002Fcpp\u002Flambdas","02.cpp\u002F25.lambdas",{"title":1813,"path":1814,"stem":1815},"Лямбда-захоплення","\u002Fcpp\u002Flambda-captures","02.cpp\u002F26.lambda-captures",{"title":1817,"path":1818,"stem":1819},"Еліпсис","\u002Fcpp\u002Fellipsis","02.cpp\u002F27.ellipsis",{"title":1821,"path":1822,"stem":1823},"Безпечні альтернативи еліпсису","\u002Fcpp\u002F27a.ellipsis","02.cpp\u002F27a.ellipsis",{"title":1825,"path":1826,"stem":1827},"Аргументи командного рядка","\u002Fcpp\u002Fcommand-line-arguments","02.cpp\u002F28.command-line-arguments",{"title":1829,"path":1830,"stem":1831},"Перерахування (enum)","\u002Fcpp\u002Fenum","02.cpp\u002F29.enum",{"title":1833,"path":1834,"stem":1835},"Класи-перерахування (enum class)","\u002Fcpp\u002Fenum-class","02.cpp\u002F30.enum-class",{"title":1837,"path":1838,"stem":1839},"Псевдоніми типів (typedef і using)","\u002Fcpp\u002Ftype-aliases","02.cpp\u002F31.type-aliases",{"title":1841,"path":1842,"stem":1843},"Системи числення та двійкова арифметика","\u002Fcpp\u002Fnumber-systems","02.cpp\u002F32.number-systems",{"title":1845,"path":1846,"stem":1847},"Структури (struct): агрегування даних","\u002Fcpp\u002Fstruct","02.cpp\u002F33.struct",{"title":1849,"path":1850,"stem":1851},"Структури у функціях","\u002Fcpp\u002Fstruct-functions","02.cpp\u002F34.struct-functions",{"title":1853,"path":1854,"stem":1855},"Масиви структур і вкладені структури","\u002Fcpp\u002Fstruct-arrays","02.cpp\u002F35.struct-arrays",{"title":1857,"path":1858,"stem":1859},"Патерни struct та межі застосування","\u002Fcpp\u002Fstruct-patterns","02.cpp\u002F36.struct-patterns",{"title":1861,"path":1862,"stem":1863},"Символи та таблиця ASCII","\u002Fcpp\u002Fascii-characters","02.cpp\u002F37.ascii-characters",{"title":1865,"path":1866,"stem":1867},"Unicode та кодування UTF","\u002Fcpp\u002Funicode-utf","02.cpp\u002F38.unicode-utf",{"title":1869,"path":1870,"stem":1871},"C-style рядки","\u002Fcpp\u002Fc-strings","02.cpp\u002F39.c-strings",{"title":1873,"path":1874,"stem":1875},"Вступ до std::string","\u002Fcpp\u002Fstd-string-intro","02.cpp\u002F40.std-string-intro",{"title":1877,"path":1878,"stem":1879},"Довжина, ємність та доступ до символів std::string","\u002Fcpp\u002Fstd-string-capacity-access","02.cpp\u002F41.std-string-capacity-access",{"title":1881,"path":1882,"stem":1883},"Модифікація std::string: присвоювання, додавання, вставка, видалення та заміна","\u002Fcpp\u002Fstd-string-modification","02.cpp\u002F42.std-string-modification",{"title":1885,"path":1886,"stem":1887},"Пошук у std::string: find, npos та практичні патерни","\u002Fcpp\u002Fstd-string-search","02.cpp\u002F43.std-string-search",{"title":1889,"path":1890,"stem":1891},"std::string_view: невласницький погляд на рядок без копіювання","\u002Fcpp\u002Fstd-string-view","02.cpp\u002F44.std-string-view",{"title":1893,"path":1894,"stem":1895},"Об'єднання (union): один блок пам'яті, кілька інтерпретацій","\u002Fcpp\u002Funion","02.cpp\u002F45.union",{"title":1897,"path":1898,"stem":1899},"Організація коду: файли, препроцесор, простори імен","\u002Fcpp\u002Fmultifile-programs","02.cpp\u002F46.multifile-programs",{"title":1901,"path":1902,"stem":1903},"Робота з файлами: C-стиль (stdio.h)","\u002Fcpp\u002Fc-style-files","02.cpp\u002F47.c-style-files",{"title":1905,"path":1906,"stem":1907},"Робота з файлами: C++-стиль (fstream)","\u002Fcpp\u002Fcpp-style-files","02.cpp\u002F48.cpp-style-files",{"title":1909,"path":1910,"stem":1911},"План навчання: Курс C++ — Продовження (Статті 29–60+)","\u002Fcpp\u002Fcurriculum-plan","02.cpp\u002Fcurriculum-plan",{"title":1913,"icon":1914,"path":1915,"stem":1916,"children":1917,"page":59},"JavaScript","i-devicon-javascript","\u002Fjavascript","03.javascript",[1918,1944,1998,2020,2324,2362],{"title":1919,"icon":1920,"path":1921,"stem":1922,"children":1923,"page":59},"Events","i-lucide-mouse-pointer-click","\u002Fjavascript\u002Fevents","03.javascript\u002F01.events",[1924,1928,1932,1936,1940],{"title":1925,"path":1926,"stem":1927},"Вступ до подій браузера","\u002Fjavascript\u002Fevents\u002Fintro","03.javascript\u002F01.events\u002F01.intro",{"title":1929,"path":1930,"stem":1931},"Бульбашковий механізм (Bubbling) та занурення (Capturing)","\u002Fjavascript\u002Fevents\u002Fbubbling-capturing","03.javascript\u002F01.events\u002F02.bubbling-capturing",{"title":1933,"path":1934,"stem":1935},"Делегування подій (Event Delegation)","\u002Fjavascript\u002Fevents\u002Fdelegate-events","03.javascript\u002F01.events\u002F03.delegate-events",{"title":1937,"path":1938,"stem":1939},"Типові дії браузера та preventDefault()","\u002Fjavascript\u002Fevents\u002Fprevent-default","03.javascript\u002F01.events\u002F04.prevent-default",{"title":1941,"path":1942,"stem":1943},"Запуск користувацьких подій (Custom Events)","\u002Fjavascript\u002Fevents\u002Fcustom-events","03.javascript\u002F01.events\u002F05.custom-events",{"title":1945,"icon":1946,"path":1947,"stem":1948,"children":1949,"page":59},"Network","i-lucide-globe","\u002Fjavascript\u002Fnetwork","03.javascript\u002F02.network",[1950,1954,1958,1962,1966,1970,1974,1978,1982,1986,1990,1994],{"title":1951,"path":1952,"stem":1953},"Fetch API - Сучасний підхід до HTTP-запитів","\u002Fjavascript\u002Fnetwork\u002F01-fetch-api","03.javascript\u002F02.network\u002F01-fetch-api",{"title":1955,"path":1956,"stem":1957},"FormData - Робота з формами та файлами","\u002Fjavascript\u002Fnetwork\u002F02-formdata","03.javascript\u002F02.network\u002F02-formdata",{"title":1959,"path":1960,"stem":1961},"Відстеження прогресу завантаження","\u002Fjavascript\u002Fnetwork\u002F03-download-progress","03.javascript\u002F02.network\u002F03-download-progress",{"title":1963,"path":1964,"stem":1965},"Переривання fetch-запитів","\u002Fjavascript\u002Fnetwork\u002F04-abort-requests","03.javascript\u002F02.network\u002F04-abort-requests",{"title":1967,"path":1968,"stem":1969},"CORS - Запити між різними джерелами","\u002Fjavascript\u002Fnetwork\u002F05-cors","03.javascript\u002F02.network\u002F05-cors",{"title":1971,"path":1972,"stem":1973},"Fetch API - Повний довідник опцій","\u002Fjavascript\u002Fnetwork\u002F06-fetch-options","03.javascript\u002F02.network\u002F06-fetch-options",{"title":1975,"path":1976,"stem":1977},"URL Objects - Робота з посиланнями","\u002Fjavascript\u002Fnetwork\u002F07-url-objects","03.javascript\u002F02.network\u002F07-url-objects",{"title":1979,"path":1980,"stem":1981},"XMLHttpRequest - AJAX та низькорівневі запити","\u002Fjavascript\u002Fnetwork\u002F08-xmlhttprequest","03.javascript\u002F02.network\u002F08-xmlhttprequest",{"title":1983,"path":1984,"stem":1985},"Відновлюване завантаження файлів","\u002Fjavascript\u002Fnetwork\u002F09-resumable-upload","03.javascript\u002F02.network\u002F09-resumable-upload",{"title":1987,"path":1988,"stem":1989},"Cookies, document.cookie та світ після \"Cookiepocalypse\"","\u002Fjavascript\u002Fnetwork\u002F10-cookies","03.javascript\u002F02.network\u002F10-cookies",{"title":1991,"path":1992,"stem":1993},"js-cookie: Керування Cookies без Болю","\u002Fjavascript\u002Fnetwork\u002F11-js-cookie","03.javascript\u002F02.network\u002F11-js-cookie",{"title":1995,"path":1996,"stem":1997},"Axios: Потужний HTTP-клієнт для JavaScript","\u002Fjavascript\u002Fnetwork\u002F12-axios","03.javascript\u002F02.network\u002F12-axios",{"title":1999,"icon":2000,"path":2001,"stem":2002,"children":2003,"page":59},"Bom","i-lucide-monitor","\u002Fjavascript\u002Fbom","03.javascript\u002F03.bom",[2004,2008,2012,2016],{"title":2005,"path":2006,"stem":2007},"LocalStorage, SessionStorage та patterns збереження даних","\u002Fjavascript\u002Fbom\u002F01-localstorage","03.javascript\u002F03.bom\u002F01-localstorage",{"title":2009,"path":2010,"stem":2011},"Location Object - Керування адресою сторінки","\u002Fjavascript\u002Fbom\u002F02-location-object","03.javascript\u002F03.bom\u002F02-location-object",{"title":2013,"path":2014,"stem":2015},"History API - Керування історією браузера","\u002Fjavascript\u002Fbom\u002F03-history-api","03.javascript\u002F03.bom\u002F03-history-api",{"title":2017,"path":2018,"stem":2019},"Navigator Object - Ідентифікація та Можливості Пристрою","\u002Fjavascript\u002Fbom\u002F04-navigator-object","03.javascript\u002F03.bom\u002F04-navigator-object",{"title":2021,"icon":2022,"path":2023,"stem":2024,"children":2025},"React","i-devicon-react","\u002Fjavascript\u002Freact","03.javascript\u002F04.react\u002Findex",[2026,2027,2031,2035,2039,2043,2106,2141,2293],{"title":2021,"path":2023,"stem":2024},{"title":2028,"path":2029,"stem":2030},"Робота з Формами в React","\u002Fjavascript\u002Freact\u002Freact-forms","03.javascript\u002F04.react\u002F01.react-forms",{"title":2032,"path":2033,"stem":2034},"React Hook Form: Професійна Робота з Формами","\u002Fjavascript\u002Freact\u002Freact-hook-form","03.javascript\u002F04.react\u002F02.react-hook-form",{"title":2036,"path":2037,"stem":2038},"React Hook Form: Глибоке Розуміння Архітектури та Оптимізації","\u002Fjavascript\u002Freact\u002Freact-hook-form-new","03.javascript\u002F04.react\u002F02.react-hook-form-new",{"title":2040,"path":2041,"stem":2042},"Axios та React: Професійна Архітектура Запитів","\u002Fjavascript\u002Freact\u002Fdata-fetching-axios","03.javascript\u002F04.react\u002F03.data-fetching-axios",{"title":2044,"icon":132,"path":2045,"stem":2046,"children":2047},"Tanstack Query","\u002Fjavascript\u002Freact\u002Ftanstack-query","03.javascript\u002F04.react\u002F04.tanstack-query\u002Findex",[2048,2050,2054,2058,2062,2066,2070,2074,2078,2082,2086,2090,2094,2098,2102],{"title":2049,"path":2045,"stem":2046},"TanStack Query: Майстерність Керування Станом Сервера",{"title":2051,"path":2052,"stem":2053},"Парадигма Server State: Чому useEffect недостатньо","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fserver-state-paradigm","03.javascript\u002F04.react\u002F04.tanstack-query\u002F01.server-state-paradigm",{"title":2055,"path":2056,"stem":2057},"Встановлення та Налаштування: Фундамент","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Finstallation-and-devtools","03.javascript\u002F04.react\u002F04.tanstack-query\u002F02.installation-and-devtools",{"title":2059,"path":2060,"stem":2061},"Основи Запитів та Магія Ключів","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fquery-basics-and-keys","03.javascript\u002F04.react\u002F04.tanstack-query\u002F03.query-basics-and-keys",{"title":2063,"path":2064,"stem":2065},"Синхронізація Даних: Життєвий Цикл Запиту","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fdata-synchronization","03.javascript\u002F04.react\u002F04.tanstack-query\u002F04.data-synchronization",{"title":2067,"path":2068,"stem":2069},"Мутації та Інвалідація: Зміна Даних","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fmutations-and-invalidation","03.javascript\u002F04.react\u002F04.tanstack-query\u002F05.mutations-and-invalidation",{"title":2071,"path":2072,"stem":2073},"Оптимістичні Оновлення: Швидше за Світло","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Foptimistic-updates","03.javascript\u002F04.react\u002F04.tanstack-query\u002F06.optimistic-updates",{"title":2075,"path":2076,"stem":2077},"Пагінація та Infinite Scroll","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fpagination-and-load-more","03.javascript\u002F04.react\u002F04.tanstack-query\u002F07.pagination-and-load-more",{"title":2079,"path":2080,"stem":2081},"Просунуті Патерни та Оптимізація","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fadvanced-patterns","03.javascript\u002F04.react\u002F04.tanstack-query\u002F08.advanced-patterns",{"title":2083,"path":2084,"stem":2085},"Архітектура та Best Practices","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Farchitecture-and-best-practices","03.javascript\u002F04.react\u002F04.tanstack-query\u002F09.architecture-and-best-practices",{"title":2087,"path":2088,"stem":2089},"Server-Side Rendering (SSR) та Гідратація","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fserver-side-rendering","03.javascript\u002F04.react\u002F04.tanstack-query\u002F10.server-side-rendering",{"title":2091,"path":2092,"stem":2093},"Стратегії Тестування","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Ftesting-strategies","03.javascript\u002F04.react\u002F04.tanstack-query\u002F11.testing-strategies",{"title":2095,"path":2096,"stem":2097},"Аутентифікація та Обробка Помилок","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fauthentication-and-errors","03.javascript\u002F04.react\u002F04.tanstack-query\u002F12.authentication-and-errors",{"title":2099,"path":2100,"stem":2101},"React Suspense та Майбутнє","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Freact-suspense","03.javascript\u002F04.react\u002F04.tanstack-query\u002F13.react-suspense",{"title":2103,"path":2104,"stem":2105},"Глибоке Занурення в Продуктивність","\u002Fjavascript\u002Freact\u002Ftanstack-query\u002Fperformance-deep-dive","03.javascript\u002F04.react\u002F04.tanstack-query\u002F14.performance-deep-dive",{"title":2107,"icon":2022,"path":2108,"stem":2109,"children":2110},"React Router","\u002Fjavascript\u002Freact\u002Freact-router","03.javascript\u002F04.react\u002F05.react-router\u002Findex",[2111,2113,2117,2121,2125,2129,2133,2137],{"title":2112,"path":2108,"stem":2109},"React Router: Навігаційна система сучасного вебу",{"title":2114,"path":2115,"stem":2116},"Налаштування та Базовий Роутинг","\u002Fjavascript\u002Freact\u002Freact-router\u002Fsetup-and-basic-routing","03.javascript\u002F04.react\u002F05.react-router\u002F01.setup-and-basic-routing",{"title":2118,"path":2119,"stem":2120},"Динамічна Навігація","\u002Fjavascript\u002Freact\u002Freact-router\u002Fnavigation-and-links","03.javascript\u002F04.react\u002F05.react-router\u002F02.navigation-and-links",{"title":2122,"path":2123,"stem":2124},"Вкладені Маршрути та Макети","\u002Fjavascript\u002Freact\u002Freact-router\u002Fnested-routes-and-layouts","03.javascript\u002F04.react\u002F05.react-router\u002F03.nested-routes-and-layouts",{"title":2126,"path":2127,"stem":2128},"Динамічні Маршрути та Параметри","\u002Fjavascript\u002Freact\u002Freact-router\u002Fdynamic-routing","03.javascript\u002F04.react\u002F05.react-router\u002F04.dynamic-routing",{"title":2130,"path":2131,"stem":2132},"Data APIs: Loaders та Actions","\u002Fjavascript\u002Freact\u002Freact-router\u002Fdata-loading","03.javascript\u002F04.react\u002F05.react-router\u002F05.data-loading",{"title":2134,"path":2135,"stem":2136},"Просунуті Патерни","\u002Fjavascript\u002Freact\u002Freact-router\u002Fadvanced-patterns","03.javascript\u002F04.react\u002F05.react-router\u002F06.advanced-patterns",{"title":2138,"path":2139,"stem":2140},"Legacy Routing: Компонентний підхід","\u002Fjavascript\u002Freact\u002Freact-router\u002Flegacy-routing","03.javascript\u002F04.react\u002F05.react-router\u002F07.legacy-routing",{"title":2142,"icon":132,"path":2143,"stem":2144,"children":2145},"Redux","\u002Fjavascript\u002Freact\u002Fredux","03.javascript\u002F04.react\u002F06.redux\u002Findex",[2146,2148,2164,2193,2202,2223,2239,2268],{"title":2147,"path":2143,"stem":2144},"Redux: Еволюція управління станом",{"title":14,"icon":15,"path":2149,"stem":2150,"children":2151,"page":59},"\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals",[2152,2156,2160],{"title":2153,"path":2154,"stem":2155},"Вступ до State Management","\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals\u002Fintro-state-management","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals\u002F01.intro-state-management",{"title":2157,"path":2158,"stem":2159},"Філософія Redux та Три Принципи","\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals\u002Fredux-philosophy","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals\u002F02.redux-philosophy",{"title":2161,"path":2162,"stem":2163},"Чисті функції та Іммутабельність","\u002Fjavascript\u002Freact\u002Fredux\u002Ffundamentals\u002Fpure-functions-immutability","03.javascript\u002F04.react\u002F06.redux\u002F01.fundamentals\u002F03.pure-functions-immutability",{"title":2165,"icon":132,"path":2166,"stem":2167,"children":2168,"page":59},"Classic Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux",[2169,2173,2177,2181,2185,2189],{"title":2170,"path":2171,"stem":2172},"Створення Store (Classic Redux)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Fstore-setup","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F01.store-setup",{"title":2174,"path":2175,"stem":2176},"Actions, Constants та Action Creators","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Factions-constants","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F02.actions-constants",{"title":2178,"path":2179,"stem":2180},"Логіка Reducers","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Freducers","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F03.reducers",{"title":2182,"path":2183,"stem":2184},"Комбінування Reducers (Root Reducer)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Fdata-flow","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F04.data-flow",{"title":2186,"path":2187,"stem":2188},"Підключення до React (React-Redux)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Freact-redux-connection","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F05.react-redux-connection",{"title":2190,"path":2191,"stem":2192},"Middleware та Асинхронність (Redux Thunk)","\u002Fjavascript\u002Freact\u002Fredux\u002Fclassic-redux\u002Fmiddleware-thunk","03.javascript\u002F04.react\u002F06.redux\u002F02.classic-redux\u002F06.middleware-thunk",{"title":2194,"icon":132,"path":2195,"stem":2196,"children":2197,"page":59},"Transition To Rtk","\u002Fjavascript\u002Freact\u002Fredux\u002Ftransition-to-rtk","03.javascript\u002F04.react\u002F06.redux\u002F03.transition-to-rtk",[2198],{"title":2199,"path":2200,"stem":2201},"Проблеми класичного Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Ftransition-to-rtk\u002Fproblems-with-classic","03.javascript\u002F04.react\u002F06.redux\u002F03.transition-to-rtk\u002F01.problems-with-classic",{"title":2203,"icon":132,"path":2204,"stem":2205,"children":2206,"page":59},"Redux Toolkit","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit",[2207,2211,2215,2219],{"title":2208,"path":2209,"stem":2210},"Налаштування Store з configureStore","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fconfigure-store","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F01.configure-store",{"title":2212,"path":2213,"stem":2214},"createSlice: Революція в Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fcreate-slice","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F02.create-slice",{"title":2216,"path":2217,"stem":2218},"Асинхронність з createAsyncThunk","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fasync-thunks","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F03.async-thunks",{"title":2220,"path":2221,"stem":2222},"04. Entity Adapter: Керування нормалізованим станом","\u002Fjavascript\u002Freact\u002Fredux\u002Fredux-toolkit\u002Fentity-adapter","03.javascript\u002F04.react\u002F06.redux\u002F04.redux-toolkit\u002F04.entity-adapter",{"title":2224,"icon":92,"path":2225,"stem":2226,"children":2227,"page":59},"Advanced","\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced",[2228,2232,2236],{"title":2229,"path":2230,"stem":2231},"Мемоізація та Селектори: Повний Гайд по Reselect","\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced\u002Fselectors-reselect","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced\u002F01.selectors-reselect",{"title":2233,"path":2234,"stem":2235},"RTK Query: Архітектура Серверного Кешу","\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced\u002Frtk-query-intro","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced\u002F02.rtk-query-intro",{"title":2083,"path":2237,"stem":2238},"\u002Fjavascript\u002Freact\u002Fredux\u002Fadvanced\u002Farchitecture-best-practices","03.javascript\u002F04.react\u002F06.redux\u002F05.advanced\u002F03.architecture-best-practices",{"title":2240,"icon":132,"path":2241,"stem":2242,"children":2243,"page":59},"Project Kanban","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban",[2244,2248,2252,2256,2260,2264],{"title":2245,"path":2246,"stem":2247},"Проєкт: Kanban Board (Trello Clone)","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fproject-overview","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F01.project-overview",{"title":2249,"path":2250,"stem":2251},"Налаштування та Типізація","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fsetup-and-types","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F02.setup-and-types",{"title":2253,"path":2254,"stem":2255},"Board Slice: Серце Дошки","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fboard-slice","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F03.board-slice",{"title":2257,"path":2258,"stem":2259},"Логіка Drag & Drop","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Fdrag-and-drop-logic","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F04.drag-and-drop-logic",{"title":2261,"path":2262,"stem":2263},"Інтеграція з RTK Query","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Frtk-query-integration","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F05.rtk-query-integration",{"title":2265,"path":2266,"stem":2267},"Optimistic Updates","\u002Fjavascript\u002Freact\u002Fredux\u002Fproject-kanban\u002Foptimistic-updates","03.javascript\u002F04.react\u002F06.redux\u002F06.project-kanban\u002F06.optimistic-updates",{"title":2269,"icon":132,"path":2270,"stem":2271,"children":2272,"page":59},"Testing","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting","03.javascript\u002F04.react\u002F06.redux\u002F07.testing",[2273,2277,2281,2285,2289],{"title":2274,"path":2275,"stem":2276},"Тестування Redux","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Fintro-testing","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F01.intro-testing",{"title":2278,"path":2279,"stem":2280},"Тестування Reducers","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-reducers","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F02.testing-reducers",{"title":2282,"path":2283,"stem":2284},"Тестування Селекторів","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-selectors","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F03.testing-selectors",{"title":2286,"path":2287,"stem":2288},"Тестування Компонентів (Integration)","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-components","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F04.testing-components",{"title":2290,"path":2291,"stem":2292},"Тестування Async Thunks","\u002Fjavascript\u002Freact\u002Fredux\u002Ftesting\u002Ftesting-thunks","03.javascript\u002F04.react\u002F06.redux\u002F07.testing\u002F05.testing-thunks",{"title":2294,"icon":132,"path":2295,"stem":2296,"children":2297},"Ui Libraries","\u002Fjavascript\u002Freact\u002Fui-libraries","03.javascript\u002F04.react\u002F07.ui-libraries\u002Findex",[2298,2300,2304,2308,2312,2316,2320],{"title":2299,"path":2295,"stem":2296},"UI Бібліотеки в React",{"title":2301,"path":2302,"stem":2303},"Вступ до UI Бібліотек: Навіщо Винаходити Велосипед Двічі?","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fintroduction-to-ui-libraries","03.javascript\u002F04.react\u002F07.ui-libraries\u002F01.introduction-to-ui-libraries",{"title":2305,"path":2306,"stem":2307},"Філософія shadcn\u002Fui: \"Not a Component Library\"","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-philosophy","03.javascript\u002F04.react\u002F07.ui-libraries\u002F02.shadcn-philosophy",{"title":2309,"path":2310,"stem":2311},"Установка та Налаштування shadcn\u002Fui","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-installation","03.javascript\u002F04.react\u002F07.ui-libraries\u002F03.shadcn-installation",{"title":2313,"path":2314,"stem":2315},"Базові Компоненти shadcn\u002Fui: Фундамент Інтерфейсу","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-components-basics","03.javascript\u002F04.react\u002F07.ui-libraries\u002F04.shadcn-components-basics",{"title":2317,"path":2318,"stem":2319},"Компоненти Форм: Побудова Інтерактивних Form","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-components-forms","03.javascript\u002F04.react\u002F07.ui-libraries\u002F05.shadcn-components-forms",{"title":2321,"path":2322,"stem":2323},"Складні Компоненти: Dialog, Dropdown, Table та Command","\u002Fjavascript\u002Freact\u002Fui-libraries\u002Fshadcn-components-advanced","03.javascript\u002F04.react\u002F07.ui-libraries\u002F06.shadcn-components-advanced",{"title":2325,"icon":2326,"path":2327,"stem":2328,"children":2329,"page":59},"TypeScript","i-devicon-typescript","\u002Fjavascript\u002Ftypescript","03.javascript\u002F05.typescript",[2330,2334,2338,2342,2346,2350,2354,2358],{"title":2331,"path":2332,"stem":2333},"TypeScript: Броня для вашого коду","\u002Fjavascript\u002Ftypescript\u002Fintro-and-basic-types","03.javascript\u002F05.typescript\u002F01.intro-and-basic-types",{"title":2335,"path":2336,"stem":2337},"Майстерність Моделювання Даних: Інтерфейси та Просунуті Типи","\u002Fjavascript\u002Ftypescript\u002Finterfaces-and-advanced-types","03.javascript\u002F05.typescript\u002F02.interfaces-and-advanced-types",{"title":2339,"path":2340,"stem":2341},"Алхімія Типів: Generics та Utility Types","\u002Fjavascript\u002Ftypescript\u002Fgenerics-and-utilities","03.javascript\u002F05.typescript\u002F03.generics-and-utilities",{"title":2343,"path":2344,"stem":2345},"Архітектура та Шаблони: Класи в TypeScript","\u002Fjavascript\u002Ftypescript\u002Fclasses-and-oop","03.javascript\u002F05.typescript\u002F04.classes-and-oop",{"title":2347,"path":2348,"stem":2349},"Продакшн та Екосистема: Advanced Config & Workflow","\u002Fjavascript\u002Ftypescript\u002Fadvanced-patterns-and-config","03.javascript\u002F05.typescript\u002F05.advanced-patterns-and-config",{"title":2351,"path":2352,"stem":2353},"TypeScript у світі React","\u002Fjavascript\u002Ftypescript\u002Freact-basics","03.javascript\u002F05.typescript\u002F06.react-basics",{"title":2355,"path":2356,"stem":2357},"React + TypeScript: Продвинуті патерни","\u002Fjavascript\u002Ftypescript\u002Freact-advanced","03.javascript\u002F05.typescript\u002F07.react-advanced",{"title":2359,"path":2360,"stem":2361},"React + TypeScript: Екосистема та бібліотеки","\u002Fjavascript\u002Ftypescript\u002Freact-ecosystem","03.javascript\u002F05.typescript\u002F08.react-ecosystem",{"title":2363,"path":2364,"stem":2365},"Atomic Design","\u002Fjavascript\u002Fatomic-design","03.javascript\u002F2.atomic-design",{"title":2367,"icon":2368,"path":2369,"stem":2370,"children":2371,"page":59},"Java","i-devicon-java","\u002Fjava","04.java",[2372,2375,2378,2382,2386,2390,2394],{"title":162,"path":2373,"stem":2374},"\u002Fjava\u002Fdata-mapper-part1","04.java\u002F01.data-mapper-part1",{"title":166,"path":2376,"stem":2377},"\u002Fjava\u002Fdata-mapper-part2","04.java\u002F02.data-mapper-part2",{"title":2379,"path":2380,"stem":2381},"Service Layer: Організація бізнес-логіки","\u002Fjava\u002Fservice-layer","04.java\u002F03.service-layer",{"title":2383,"path":2384,"stem":2385},"Rich Domain Model та State Pattern","\u002Fjava\u002Frich-domain-model","04.java\u002F04.rich-domain-model",{"title":2387,"path":2388,"stem":2389},"Патерни для складної бізнес-логіки","\u002Fjava\u002Fbusiness-logic-patterns","04.java\u002F05.business-logic-patterns",{"title":2391,"path":2392,"stem":2393},"Обробка помилок та валідація","\u002Fjava\u002Ferror-handling-validation","04.java\u002F06.error-handling-validation",{"title":2395,"path":2396,"stem":2397,"children":2398,"page":59},"Проектування баз даних","\u002Fjava\u002Fpr2","04.java\u002Fpr2",[2399,2403,2407,2411,2415,2419,2423,2427,2431,2435,2439,2443,2447,2451,2455,2459,2463,2467,2471,2475,2479,2483,2487,2491,2495,2499,2503,2507,2511,2515,2519,2523,2527,2531,2535,2539,2543],{"title":2400,"path":2401,"stem":2402},"Концептуальне моделювання: Мистецтво розуміння предметної області","\u002Fjava\u002Fpr2\u002Fconceptual-modeling","04.java\u002Fpr2\u002F01.conceptual-modeling",{"title":2404,"path":2405,"stem":2406},"Логічне моделювання: Від бізнес-ідей до структур даних","\u002Fjava\u002Fpr2\u002Flogical-modeling","04.java\u002Fpr2\u002F02.logical-modeling",{"title":2408,"path":2409,"stem":2410},"Нормалізація: Гігієна даних та боротьба з аномаліями","\u002Fjava\u002Fpr2\u002Fnormalization","04.java\u002Fpr2\u002F03.normalization",{"title":2412,"path":2413,"stem":2414},"Фізична схема: Від абстракції до DDL","\u002Fjava\u002Fpr2\u002Fphysical-schema","04.java\u002Fpr2\u002F04.physical-schema",{"title":2416,"path":2417,"stem":2418},"Архітектурна класифікація таблиць","\u002Fjava\u002Fpr2\u002Ftable-classification","04.java\u002Fpr2\u002F05.table-classification",{"title":2420,"path":2421,"stem":2422},"Database Migrations: Версіонування схеми з Flyway","\u002Fjava\u002Fpr2\u002Fdatabase-migrations","04.java\u002Fpr2\u002F06.database-migrations",{"title":2424,"path":2425,"stem":2426},"А що, якби це була не реляційна БД?","\u002Fjava\u002Fpr2\u002Fbeyond-relational","04.java\u002Fpr2\u002F07.beyond-relational",{"title":2428,"path":2429,"stem":2430},"Object-Relational Impedance Mismatch: Два світи, що не хочуть дружити","\u002Fjava\u002Fpr2\u002Fimpedance-mismatch","04.java\u002Fpr2\u002F09.impedance-mismatch",{"title":2432,"path":2433,"stem":2434},"JDBC: Перший контакт із базою даних","\u002Fjava\u002Fpr2\u002Fjdbc-fundamentals","04.java\u002Fpr2\u002F10.jdbc-fundamentals",{"title":2436,"path":2437,"stem":2438},"Якість коду: Spotless, SpotBugs та SonarQube","\u002Fjava\u002Fpr2\u002F10a.code-quality","04.java\u002Fpr2\u002F10a.code-quality",{"title":2440,"path":2441,"stem":2442},"Connection Pool: Патерн Object Pool для JDBC-з'єднань","\u002Fjava\u002Fpr2\u002Fconnection-pool","04.java\u002Fpr2\u002F11.connection-pool",{"title":2444,"path":2445,"stem":2446},"Row Data Gateway: Об'єкт як обгортка рядка таблиці","\u002Fjava\u002Fpr2\u002Frow-data-gateway","04.java\u002Fpr2\u002F12.row-data-gateway",{"title":2448,"path":2449,"stem":2450},"Table Data Gateway: Фасад таблиці як архітектурний відступ","\u002Fjava\u002Fpr2\u002Ftable-data-gateway","04.java\u002Fpr2\u002F13.table-data-gateway",{"title":2452,"path":2453,"stem":2454},"Repository + Data Mapper: Правильна шарова архітектура з JDBC","\u002Fjava\u002Fpr2\u002Frepository-data-mapper","04.java\u002Fpr2\u002F14.repository-data-mapper",{"title":2456,"path":2457,"stem":2458},"Identity Map: Кешування сутностей у рамках сесії","\u002Fjava\u002Fpr2\u002Fidentity-map","04.java\u002Fpr2\u002F15.identity-map",{"title":2460,"path":2461,"stem":2462},"Unit of Work: Відстеження змін і координація JDBC-транзакцій","\u002Fjava\u002Fpr2\u002Funit-of-work","04.java\u002Fpr2\u002F16.unit-of-work",{"title":2464,"path":2465,"stem":2466},"Strategy: Замінювані SQL-стратегії для підтримки різних СУБД","\u002Fjava\u002Fpr2\u002Fstrategy-sql","04.java\u002Fpr2\u002F17.strategy-sql",{"title":2468,"path":2469,"stem":2470},"Proxy: Lazy Loading для One-To-Many колекцій","\u002Fjava\u002Fpr2\u002Fproxy-lazy-loading","04.java\u002Fpr2\u002F18.proxy-lazy-loading",{"title":2472,"path":2473,"stem":2474},"Generic Repository через Java Reflection: анотації та динамічний SQL","\u002Fjava\u002Fpr2\u002Fgeneric-repository-reflection","04.java\u002Fpr2\u002F19.generic-repository-reflection",{"title":2476,"path":2477,"stem":2478},"Specification Pattern: Композиція бізнес-правил для складних запитів","\u002Fjava\u002Fpr2\u002Fspecification-pattern","04.java\u002Fpr2\u002F20.specification-pattern",{"title":2480,"path":2481,"stem":2482},"Розширені можливості Specification Pattern: підзапити, агрегації та гібридний підхід","\u002Fjava\u002Fpr2\u002F20a.advanced-specifications","04.java\u002Fpr2\u002F20a.advanced-specifications",{"title":2484,"path":2485,"stem":2486},"Асинхронність у JDBC: Від блокуючих викликів до CompletableFuture","\u002Fjava\u002Fpr2\u002Fasynchronous-jdbc","04.java\u002Fpr2\u002F21.asynchronous-jdbc",{"title":2488,"path":2489,"stem":2490},"Інтеграційне тестування JDBC-репозиторіїв: Embedded H2 та патерн AAA","\u002Fjava\u002Fpr2\u002Fintegration-testing-h2","04.java\u002Fpr2\u002F22.integration-testing-h2",{"title":2492,"path":2493,"stem":2494},"Testcontainers: Тестування з реальною PostgreSQL у Docker-контейнерах","\u002Fjava\u002Fpr2\u002Fintegration-testing-testcontainers","04.java\u002Fpr2\u002F23.integration-testing-testcontainers",{"title":2496,"path":2497,"stem":2498},"Google Guice: Впровадження залежностей у JavaFX-проєкті","\u002Fjava\u002Fpr2\u002Fdependency-injection-guice","04.java\u002Fpr2\u002F24.dependency-injection-guice",{"title":2500,"path":2501,"stem":2502},"JavaFX: Основи побудови графічних інтерфейсів","\u002Fjava\u002Fpr2\u002Fjavafx-fundamentals","04.java\u002Fpr2\u002F25.javafx-fundamentals",{"title":2504,"path":2505,"stem":2506},"Properties та Bindings: Реактивність у JavaFX","\u002Fjava\u002Fpr2\u002Fjavafx-properties-bindings","04.java\u002Fpr2\u002F26.javafx-properties-bindings",{"title":2508,"path":2509,"stem":2510},"MVC vs MVP vs MVVM: Еволюція архітектурних патернів UI","\u002Fjava\u002Fpr2\u002Fui-architecture-patterns","04.java\u002Fpr2\u002F27.ui-architecture-patterns",{"title":2512,"path":2513,"stem":2514},"MVVM на практиці: Побудова ViewModel","\u002Fjava\u002Fpr2\u002Fmvvm-viewmodel-implementation","04.java\u002Fpr2\u002F28.mvvm-viewmodel-implementation",{"title":2516,"path":2517,"stem":2518},"View та Controller: Зв'язування з ViewModel через FXML","\u002Fjava\u002Fpr2\u002Fmvvm-view-controller","04.java\u002Fpr2\u002F29.mvvm-view-controller",{"title":2520,"path":2521,"stem":2522},"Інтеграція MVVM з Guice: Автоматична ін'єкція залежностей","\u002Fjava\u002Fpr2\u002Fmvvm-guice-integration","04.java\u002Fpr2\u002F30.mvvm-guice-integration",{"title":2524,"path":2525,"stem":2526},"Валідація та обробка помилок у MVVM","\u002Fjava\u002Fpr2\u002Fmvvm-validation-error-handling","04.java\u002Fpr2\u002F31.mvvm-validation-error-handling",{"title":2528,"path":2529,"stem":2530},"Навігація та управління екранами у JavaFX MVVM","\u002Fjava\u002Fpr2\u002Fmvvm-navigation-screen-management","04.java\u002Fpr2\u002F32.mvvm-navigation-screen-management",{"title":2532,"path":2533,"stem":2534},"Тестування JavaFX MVVM-додатків","\u002Fjava\u002Fpr2\u002Fmvvm-testing","04.java\u002Fpr2\u002F33.mvvm-testing",{"title":2536,"path":2537,"stem":2538},"Стилізація та теми у JavaFX: CSS та User Experience","\u002Fjava\u002Fpr2\u002Fjavafx-styling-themes","04.java\u002Fpr2\u002F34.javafx-styling-themes",{"title":2540,"path":2541,"stem":2542},"AtlantaFX: Сучасні теми для JavaFX додатків","\u002Fjava\u002Fpr2\u002Fatlantafx-modern-themes","04.java\u002Fpr2\u002F35.atlantafx-modern-themes",{"title":2544,"path":2545,"stem":2546},"Пакування та розповсюдження JavaFX-додатків","\u002Fjava\u002Fpr2\u002Fjar-packaging-distribution","04.java\u002Fpr2\u002F36.jar-packaging-distribution",{"title":2548,"icon":2549,"path":2550,"stem":2551,"children":2552,"page":59},"Python","i-devicon-python","\u002Fpython","05.python",[2553,2557,2560,2564,2568,2572,2576,2580,2584,2588,2592,2596,2600,2604,2608,2669],{"title":2554,"path":2555,"stem":2556},"Модулі, Пакети та Віртуальні Середовища","\u002Fpython\u002Fmodules-packages-venv","05.python\u002F00.modules-packages-venv",{"title":71,"path":2558,"stem":2559},"\u002Fpython\u002Fclasses-objects","05.python\u002F01.classes-objects",{"title":2561,"path":2562,"stem":2563},"Інкапсуляція, Керування Доступом та Властивості","\u002Fpython\u002Fencapsulation","05.python\u002F02.encapsulation",{"title":2565,"path":2566,"stem":2567},"Наслідування, MRO та суперсила super()","\u002Fpython\u002Finheritance-mro","05.python\u002F03.inheritance-mro",{"title":2569,"path":2570,"stem":2571},"Абстракція — ABC проти Статичних Протоколів (PEP 544)","\u002Fpython\u002Fabstraction-protocols","05.python\u002F04.abstraction-protocols",{"title":2573,"path":2574,"stem":2575},"Магічні методи (Dunder) та Емуляція протоколів","\u002Fpython\u002Fdunder-methods","05.python\u002F05.dunder-methods",{"title":2577,"path":2578,"stem":2579},"Декоратори та Керування життєвим циклом методів","\u002Fpython\u002Fdecorators-static-class","05.python\u002F06.decorators-static-class",{"title":2581,"path":2582,"stem":2583},"Дескриптори — Магія доступу до атрибутів","\u002Fpython\u002Fdescriptors","05.python\u002F07.descriptors",{"title":2585,"path":2586,"stem":2587},"Метакласи — Динамічне створення класів під капотом CPython","\u002Fpython\u002Fmetaclasses","05.python\u002F08.metaclasses",{"title":2589,"path":2590,"stem":2591},"Dataclasses, NamedTuple та сучасні контейнери Python","\u002Fpython\u002Fmodern-containers","05.python\u002F09.modern-containers",{"title":2593,"path":2594,"stem":2595},"GIL та модель конкурентності CPython — фундамент перед потоками і процесами","\u002Fpython\u002Fgil-concurrency-intro","05.python\u002F11.gil-concurrency-intro",{"title":2597,"path":2598,"stem":2599},"Threading — конкурентність для I\u002FO-bound задач","\u002Fpython\u002Fthreading","05.python\u002F12.threading",{"title":2601,"path":2602,"stem":2603},"Multiprocessing — справжній паралелізм для CPU-bound задач","\u002Fpython\u002Fmultiprocessing","05.python\u002F13.multiprocessing",{"title":2605,"path":2606,"stem":2607},"asyncio — кооперативна конкурентність та event loop","\u002Fpython\u002Fasyncio","05.python\u002F14.asyncio",{"title":2609,"icon":92,"path":2610,"stem":2611,"children":2612,"page":59},"FastAPI","\u002Fpython\u002Ffastapi","05.python\u002Ffastapi",[2613,2617,2621,2625,2629,2633,2637,2641,2645,2649,2653,2657,2661,2665],{"title":2614,"path":2615,"stem":2616},"Глибокий Typing та Pydantic v2 — від анотацій до валідації","\u002Fpython\u002Ffastapi\u002Ftyping-pydantic","05.python\u002Ffastapi\u002F15.typing-pydantic",{"title":2618,"path":2619,"stem":2620},"WSGI, ASGI та Python Web-екосистема","\u002Fpython\u002Ffastapi\u002Fwsgi-asgi-ecosystem","05.python\u002Ffastapi\u002F16.wsgi-asgi-ecosystem",{"title":2622,"path":2623,"stem":2624},"FastAPI: Перший додаток, Uvicorn та OpenAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-intro","05.python\u002Ffastapi\u002F17.fastapi-intro",{"title":2626,"path":2627,"stem":2628},"Маршрутизація, параметри запитів та APIRouter","\u002Fpython\u002Ffastapi\u002Ffastapi-routing-params","05.python\u002Ffastapi\u002F18.fastapi-routing-params",{"title":2630,"path":2631,"stem":2632},"Pydantic v2 у FastAPI — схеми, валідація та серіалізація","\u002Fpython\u002Ffastapi\u002Ffastapi-pydantic-schemas","05.python\u002Ffastapi\u002F19.fastapi-pydantic-schemas",{"title":2634,"path":2635,"stem":2636},"Dependency Injection — серце архітектури FastAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-dependency-injection","05.python\u002Ffastapi\u002F20.fastapi-dependency-injection",{"title":2638,"path":2639,"stem":2640},"Обробка помилок, Middleware та CORS у FastAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-errors-middleware","05.python\u002Ffastapi\u002F21.fastapi-errors-middleware",{"title":2642,"path":2643,"stem":2644},"SQLAlchemy 2.0 — ORM, Core та Async Engine","\u002Fpython\u002Ffastapi\u002Fsqlalchemy-orm","05.python\u002Ffastapi\u002F22.sqlalchemy-orm",{"title":2646,"path":2647,"stem":2648},"Alembic — міграції бази даних","\u002Fpython\u002Ffastapi\u002Falembic-migrations","05.python\u002Ffastapi\u002F23.alembic-migrations",{"title":2650,"path":2651,"stem":2652},"Repository Pattern та Clean Architecture у FastAPI","\u002Fpython\u002Ffastapi\u002Ffastapi-repository-clean-arch","05.python\u002Ffastapi\u002F24.fastapi-repository-clean-arch",{"title":2654,"path":2655,"stem":2656},"Автентифікація та авторизація — JWT, OAuth2, RBAC","\u002Fpython\u002Ffastapi\u002Ffastapi-auth-security","05.python\u002Ffastapi\u002F25.fastapi-auth-security",{"title":2658,"path":2659,"stem":2660},"Тестування FastAPI — pytest, httpx, fixtures","\u002Fpython\u002Ffastapi\u002Ffastapi-testing","05.python\u002Ffastapi\u002F26.fastapi-testing",{"title":2662,"path":2663,"stem":2664},"Async на повну — Background Tasks, WebSockets, SSE та Celery","\u002Fpython\u002Ffastapi\u002Ffastapi-async-advanced","05.python\u002Ffastapi\u002F27.fastapi-async-advanced",{"title":2666,"path":2667,"stem":2668},"Deployment — Docker, CI\u002FCD, Monitoring","\u002Fpython\u002Ffastapi\u002Ffastapi-deployment","05.python\u002Ffastapi\u002F28.fastapi-deployment",{"title":2670,"path":2671,"stem":2672},"[object Object]","\u002Fpython\u002Foop-plan","05.python\u002Foop-plan",{"title":2674,"icon":2675,"path":2676,"stem":2677,"children":2678,"page":59},"Бази даних","i-lucide-database","\u002Fdatabases","06.databases",[2679,2709,2732,2769,2798,2816,2850,2862,2871],{"title":2680,"icon":2681,"path":2682,"stem":2683,"children":2684,"page":59},"Intro","i-lucide-play","\u002Fdatabases\u002Fintro","06.databases\u002F01.intro",[2685,2689,2693,2697,2701,2705],{"title":2686,"path":2687,"stem":2688},"Введення в теорію баз даних","\u002Fdatabases\u002Fintro\u002Fintroduction-to-databases","06.databases\u002F01.intro\u002F01.introduction-to-databases",{"title":2690,"path":2691,"stem":2692},"Реляційна модель даних","\u002Fdatabases\u002Fintro\u002Frelational-model-theory","06.databases\u002F01.intro\u002F02.relational-model-theory",{"title":2694,"path":2695,"stem":2696},"ER-моделювання","\u002Fdatabases\u002Fintro\u002Fer-modeling","06.databases\u002F01.intro\u002F03.er-modeling",{"title":2698,"path":2699,"stem":2700},"Логічне проектування БД","\u002Fdatabases\u002Fintro\u002Flogical-schema","06.databases\u002F01.intro\u002F04.logical-schema",{"title":2702,"path":2703,"stem":2704},"Класифікація таблиць","\u002Fdatabases\u002Fintro\u002Ftable-classification","06.databases\u002F01.intro\u002F05.table-classification",{"title":2706,"path":2707,"stem":2708},"PlantUML для баз даних","\u002Fdatabases\u002Fintro\u002Fplantuml-diagrams","06.databases\u002F01.intro\u002F06.plantuml-diagrams",{"title":2710,"icon":2675,"path":2711,"stem":2712,"children":2713,"page":59},"MS SQL Server Start","\u002Fdatabases\u002Fms-sql-server-start","06.databases\u002F02.ms-sql-server-start",[2714,2718,2724,2728],{"title":2715,"path":2716,"stem":2717},"Типи даних у MS SQL Server","\u002Fdatabases\u002Fms-sql-server-start\u002Fdata-types","06.databases\u002F02.ms-sql-server-start\u002F01.data-types",{"title":2719,"path":2720,"stem":2721,"children":2722},"Індекси у MS SQL Server","\u002Fdatabases\u002Fms-sql-server-start\u002Fsql-indexes","06.databases\u002F02.ms-sql-server-start\u002F02.sql-indexes",[2723],{"title":2719,"path":2720,"stem":2721},{"title":2725,"path":2726,"stem":2727},"Системні бази даних MS SQL Server","\u002Fdatabases\u002Fms-sql-server-start\u002Fsystem-databases","06.databases\u002F02.ms-sql-server-start\u002F03.system-databases",{"title":2729,"path":2730,"stem":2731},"Огляд мови SQL та запитів","\u002Fdatabases\u002Fms-sql-server-start\u002Fsql-queries-overview","06.databases\u002F02.ms-sql-server-start\u002F04.sql-queries-overview",{"title":2733,"icon":2675,"path":2734,"stem":2735,"children":2736,"page":59},"SQL","\u002Fdatabases\u002Fsql","06.databases\u002F03.sql",[2737,2741,2745,2749,2753,2757,2761,2765],{"title":2738,"path":2739,"stem":2740},"Налаштування демонстраційної бази даних","\u002Fdatabases\u002Fsql\u002Fsample-database-setup","06.databases\u002F03.sql\u002F00.sample-database-setup",{"title":2742,"path":2743,"stem":2744},"DDL - Створення таблиць (CREATE TABLE)","\u002Fdatabases\u002Fsql\u002Fddl-create-table","06.databases\u002F03.sql\u002F01.ddl-create-table",{"title":2746,"path":2747,"stem":2748},"DDL - Зміна та видалення таблиць (ALTER, DROP)","\u002Fdatabases\u002Fsql\u002Fddl-alter-drop-table","06.databases\u002F03.sql\u002F02.ddl-alter-drop-table",{"title":2750,"path":2751,"stem":2752},"SELECT запити - Основи","\u002Fdatabases\u002Fsql\u002Fselect-queries-fundamentals","06.databases\u002F03.sql\u002F03.select-queries-fundamentals",{"title":2754,"path":2755,"stem":2756},"SELECT запити - Розширені можливості","\u002Fdatabases\u002Fsql\u002Fselect-queries-advanced","06.databases\u002F03.sql\u002F04.select-queries-advanced",{"title":2758,"path":2759,"stem":2760},"INSERT запити - Додавання даних","\u002Fdatabases\u002Fsql\u002Finsert-queries","06.databases\u002F03.sql\u002F05.insert-queries",{"title":2762,"path":2763,"stem":2764},"UPDATE та DELETE запити","\u002Fdatabases\u002Fsql\u002Fupdate-delete-queries","06.databases\u002F03.sql\u002F06.update-delete-queries",{"title":2766,"path":2767,"stem":2768},"Транзакції в SQL","\u002Fdatabases\u002Fsql\u002Ftransactions","06.databases\u002F03.sql\u002F07.transactions",{"title":2770,"icon":2675,"path":2771,"stem":2772,"children":2773,"page":59},"Multi Table Databases","\u002Fdatabases\u002Fmulti-table-databases","06.databases\u002F04.multi-table-databases",[2774,2778,2782,2786,2790,2794],{"title":2775,"path":2776,"stem":2777},"Зв'язки та нормалізація БД","\u002Fdatabases\u002Fmulti-table-databases\u002Frelationships-and-normalization","06.databases\u002F04.multi-table-databases\u002F00.relationships-and-normalization",{"title":2779,"path":2780,"stem":2781},"INNER JOIN - З'єднання таблиць","\u002Fdatabases\u002Fmulti-table-databases\u002Finner-join","06.databases\u002F04.multi-table-databases\u002F01.inner-join",{"title":2783,"path":2784,"stem":2785},"OUTER JOINs - LEFT, RIGHT, FULL","\u002Fdatabases\u002Fmulti-table-databases\u002Fouter-joins","06.databases\u002F04.multi-table-databases\u002F02.outer-joins",{"title":2787,"path":2788,"stem":2789},"CROSS та SELF JOINs","\u002Fdatabases\u002Fmulti-table-databases\u002Fcross-self-joins","06.databases\u002F04.multi-table-databases\u002F03.cross-self-joins",{"title":2791,"path":2792,"stem":2793},"Підзапити (Subqueries)","\u002Fdatabases\u002Fmulti-table-databases\u002Fsubqueries","06.databases\u002F04.multi-table-databases\u002F04.subqueries",{"title":2795,"path":2796,"stem":2797},"Агрегації з JOIN","\u002Fdatabases\u002Fmulti-table-databases\u002Faggregations-with-joins","06.databases\u002F04.multi-table-databases\u002F05.aggregations-with-joins",{"title":2799,"icon":2800,"path":2801,"stem":2802,"children":2803,"page":59},"Aggregate Functions","i-lucide-calculator","\u002Fdatabases\u002Faggregate-functions","06.databases\u002F05.aggregate-functions",[2804,2808,2812],{"title":2805,"path":2806,"stem":2807},"Функції агрегування в MS SQL Server","\u002Fdatabases\u002Faggregate-functions\u002Fintroduction-aggregate-functions","06.databases\u002F05.aggregate-functions\u002F01.introduction-aggregate-functions",{"title":2809,"path":2810,"stem":2811},"Групування даних в MS SQL Server","\u002Fdatabases\u002Faggregate-functions\u002Fgrouping-data","06.databases\u002F05.aggregate-functions\u002F02.grouping-data",{"title":2813,"path":2814,"stem":2815},"Підзапити з агрегатними функціями","\u002Fdatabases\u002Faggregate-functions\u002Fsubqueries-aggregates","06.databases\u002F05.aggregate-functions\u002F03.subqueries-aggregates",{"title":2817,"icon":2818,"path":2819,"stem":2820,"children":2821,"page":59},"Тригери та зберігаємі процедури","i-lucide-database-zap","\u002Fdatabases\u002Ftriggers-stored-procedures","06.databases\u002F07.triggers-stored-procedures",[2822,2826,2830,2834,2838,2842,2846],{"title":2823,"path":2824,"stem":2825},"DML-тригери","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fdml-triggers","06.databases\u002F07.triggers-stored-procedures\u002F01.dml-triggers",{"title":2827,"path":2828,"stem":2829},"DDL-тригери","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fddl-triggers","06.databases\u002F07.triggers-stored-procedures\u002F02.ddl-triggers",{"title":2831,"path":2832,"stem":2833},"Transact-SQL розширення","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Ftransact-sql-extensions","06.databases\u002F07.triggers-stored-procedures\u002F03.transact-sql-extensions",{"title":2835,"path":2836,"stem":2837},"Транзакції","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Ftransactions","06.databases\u002F07.triggers-stored-procedures\u002F04.transactions",{"title":2839,"path":2840,"stem":2841},"Зберігаємі процедури","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fstored-procedures","06.databases\u002F07.triggers-stored-procedures\u002F05.stored-procedures",{"title":2843,"path":2844,"stem":2845},"Користувацькі функції","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fuser-defined-functions","06.databases\u002F07.triggers-stored-procedures\u002F06.user-defined-functions",{"title":2847,"path":2848,"stem":2849},"Безпека баз даних","\u002Fdatabases\u002Ftriggers-stored-procedures\u002Fsecurity","06.databases\u002F07.triggers-stored-procedures\u002F08.security",{"title":2847,"icon":793,"path":2851,"stem":2852,"children":2853,"page":59},"\u002Fdatabases\u002Fsecurity","06.databases\u002F08.security",[2854,2858],{"title":2855,"path":2856,"stem":2857},"Вступ до безпеки баз даних","\u002Fdatabases\u002Fsecurity\u002Fintroduction","06.databases\u002F08.security\u002F01.introduction",{"title":2859,"path":2860,"stem":2861},"Системні представлення та метадані","\u002Fdatabases\u002Fsecurity\u002Fsystem-views","06.databases\u002F08.security\u002F02.system-views",{"title":2863,"icon":2864,"path":2865,"stem":2866,"children":2867,"page":59},"Резервне копіювання та відновлення","i-lucide-database-backup","\u002Fdatabases\u002Fbackup-recovery","06.databases\u002F09.backup-recovery",[2868],{"title":2863,"path":2869,"stem":2870},"\u002Fdatabases\u002Fbackup-recovery\u002Fbackup-restore","06.databases\u002F09.backup-recovery\u002F01.backup-restore",{"title":2872,"icon":2873,"path":2874,"stem":2875,"children":2876,"page":59},"Повнотекстовий пошук","i-lucide-search","\u002Fdatabases\u002Ffull-text-search","06.databases\u002F10.full-text-search",[2877],{"title":2872,"path":2878,"stem":2879},"\u002Fdatabases\u002Ffull-text-search\u002Ffull-text-search","06.databases\u002F10.full-text-search\u002F01.full-text-search",{"title":2881,"icon":2882,"path":2883,"stem":2884,"children":2885,"page":59},"Tools","i-lucide-wrench","\u002Ftools","07.tools",[2886,2962],{"title":2887,"icon":2888,"path":2889,"stem":2890,"children":2891},"Docker","i-simple-icons-docker","\u002Ftools\u002Fdocker","07.tools\u002F01.docker\u002Findex",[2892,2894,2898,2902,2906,2910,2914,2918,2922,2926,2930,2934,2938,2942,2946,2950,2954,2958],{"title":2893,"path":2889,"stem":2890},"Docker: від нуля до production",{"title":2895,"path":2896,"stem":2897},"Контейнеризація — від проблеми до рішення","\u002Ftools\u002Fdocker\u002Fcontainerization-concept","07.tools\u002F01.docker\u002F01.containerization-concept",{"title":2899,"path":2900,"stem":2901},"Docker — що це і навіщо?","\u002Ftools\u002Fdocker\u002Fdocker-what-and-why","07.tools\u002F01.docker\u002F02.docker-what-and-why",{"title":2903,"path":2904,"stem":2905},"Архітектура Docker Engine","\u002Ftools\u002Fdocker\u002Fdocker-architecture","07.tools\u002F01.docker\u002F03.docker-architecture",{"title":2907,"path":2908,"stem":2909},"Встановлення Docker","\u002Ftools\u002Fdocker\u002Finstallation","07.tools\u002F01.docker\u002F04.installation",{"title":2911,"path":2912,"stem":2913},"Перший контейнер — docker run","\u002Ftools\u002Fdocker\u002Ffirst-container","07.tools\u002F01.docker\u002F05.first-container",{"title":2915,"path":2916,"stem":2917},"Життєвий цикл контейнера","\u002Ftools\u002Fdocker\u002Fcontainer-lifecycle","07.tools\u002F01.docker\u002F06.container-lifecycle",{"title":2919,"path":2920,"stem":2921},"Docker Images — фундаментальні концепції","\u002Ftools\u002Fdocker\u002Fdocker-images-fundamentals","07.tools\u002F01.docker\u002F07.docker-images-fundamentals",{"title":2923,"path":2924,"stem":2925},"Dockerfile — основи","\u002Ftools\u002Fdocker\u002Fdockerfile-basics","07.tools\u002F01.docker\u002F08.dockerfile-basics",{"title":2927,"path":2928,"stem":2929},"Dockerfile — просунуті техніки","\u002Ftools\u002Fdocker\u002Fdockerfile-advanced","07.tools\u002F01.docker\u002F09.dockerfile-advanced",{"title":2931,"path":2932,"stem":2933},"Build Context та кешування шарів","\u002Ftools\u002Fdocker\u002Fbuild-context-and-cache","07.tools\u002F01.docker\u002F10.build-context-and-cache",{"title":2935,"path":2936,"stem":2937},"Реєстри Docker-образів","\u002Ftools\u002Fdocker\u002Fimage-registries","07.tools\u002F01.docker\u002F11.image-registries",{"title":2939,"path":2940,"stem":2941},"Контейнеризація .NET додатків","\u002Ftools\u002Fdocker\u002Fdotnet-containerization","07.tools\u002F01.docker\u002F12.dotnet-containerization",{"title":2943,"path":2944,"stem":2945},"Томи та збереження даних","\u002Ftools\u002Fdocker\u002Fvolumes-and-data","07.tools\u002F01.docker\u002F13.volumes-and-data",{"title":2947,"path":2948,"stem":2949},"Основи мережі в Docker","\u002Ftools\u002Fdocker\u002Fnetworking-basics","07.tools\u002F01.docker\u002F14.networking-basics",{"title":2951,"path":2952,"stem":2953},"Змінні оточення та конфігурація","\u002Ftools\u002Fdocker\u002Fenvironment-and-configuration","07.tools\u002F01.docker\u002F15.environment-and-configuration",{"title":2955,"path":2956,"stem":2957},"Docker Compose — оркестрація контейнерів","\u002Ftools\u002Fdocker\u002Fdocker-compose-basics","07.tools\u002F01.docker\u002F16.docker-compose-basics",{"title":2959,"path":2960,"stem":2961},"Docker Compose — Multi-Service застосунки","\u002Ftools\u002Fdocker\u002Fcompose-multi-service","07.tools\u002F01.docker\u002F17.compose-multi-service",{"title":2963,"icon":2964,"path":2965,"stem":2966,"children":2967},"Kubernetes","simple-icons:kubernetes","\u002Ftools\u002Fkubernetes","07.tools\u002F02.kubernetes\u002Findex",[2968,2970,2974,2978,2982,2986,2990,2994,2998],{"title":2969,"path":2965,"stem":2966},"Kubernetes: від розробки до production",{"title":2971,"path":2972,"stem":2973},"Kubernetes — коли Docker Compose більше не вистачає","\u002Ftools\u002Fkubernetes\u002Fwhy-kubernetes","07.tools\u002F02.kubernetes\u002F01.why-kubernetes",{"title":2975,"path":2976,"stem":2977},"Архітектура Kubernetes — анатомія кластера","\u002Ftools\u002Fkubernetes\u002Fkubernetes-architecture","07.tools\u002F02.kubernetes\u002F02.kubernetes-architecture",{"title":2979,"path":2980,"stem":2981},"Локальне середовище — minikube, kind та k3s","\u002Ftools\u002Fkubernetes\u002Flocal-environment","07.tools\u002F02.kubernetes\u002F03.local-environment",{"title":2983,"path":2984,"stem":2985},"Pod — атомарна одиниця Kubernetes","\u002Ftools\u002Fkubernetes\u002Fpods-and-containers","07.tools\u002F02.kubernetes\u002F04.pods-and-containers",{"title":2987,"path":2988,"stem":2989},"Патерни використання Pod","\u002Ftools\u002Fkubernetes\u002Fpod-patterns","07.tools\u002F02.kubernetes\u002F05.pod-patterns",{"title":2991,"path":2992,"stem":2993},"Deployment — декларативне управління Pod","\u002Ftools\u002Fkubernetes\u002Fdeployment-basics","07.tools\u002F02.kubernetes\u002F06.deployment-basics",{"title":2995,"path":2996,"stem":2997},"Rolling Updates та управління життєвим циклом Deployment","\u002Ftools\u002Fkubernetes\u002Fdeployment-rolling-updates","07.tools\u002F02.kubernetes\u002F07.deployment-rolling-updates",{"title":2999,"path":3000,"stem":3001},"Service — мережева абстракція для Pod","\u002Ftools\u002Fkubernetes\u002Fservices-networking","07.tools\u002F02.kubernetes\u002F08.services-networking",{"title":3003,"icon":3004,"path":3005,"stem":3006,"children":3007,"page":59},"Software Engineering","i-lucide-code-2","\u002Fsoftware-engineering","09.software-engineering",[3008,3012,3016,3020,3024,3028,3032,3036,3040,3044,3048],{"title":3009,"path":3010,"stem":3011},"1. Аналіз предметної області. Експертні знання та складність","\u002Fsoftware-engineering\u002Fintro-subdomains","09.software-engineering\u002F01.intro-subdomains",{"title":3013,"path":3014,"stem":3015},"2. Обмежені контексти. Інтеграція обмежених контекстів","\u002Fsoftware-engineering\u002Fintegrating-limited-contexts","09.software-engineering\u002F02.integrating-limited-contexts",{"title":3017,"path":3018,"stem":3019},"3. Реалізація простої бізнес-логіки","\u002Fsoftware-engineering\u002Fsimple","09.software-engineering\u002F03.simple",{"title":3021,"path":3022,"stem":3023},"4. Опрацювання складної бізнес-логіки","\u002Fsoftware-engineering\u002Fcomplex-business-logic","09.software-engineering\u002F04.complex-business-logic",{"title":3025,"path":3026,"stem":3027},"5. Моделювання фактора часу. Подієво-орієнтована архітектура.","\u002Fsoftware-engineering\u002Fmodelling-the-time-factor","09.software-engineering\u002F05.modelling-the-time-factor",{"title":3029,"path":3030,"stem":3031},"6. Архітектурні патерни","\u002Fsoftware-engineering\u002Farchitectural-patterns","09.software-engineering\u002F06.architectural-patterns",{"title":3033,"path":3034,"stem":3035},"Паттерни взаємодії","\u002Fsoftware-engineering\u002Fpatterns-of-interaction","09.software-engineering\u002F07.patterns-of-interaction",{"title":3037,"path":3038,"stem":3039},"Евристика проєктування","\u002Fsoftware-engineering\u002Fdesign-heuristics","09.software-engineering\u002F08.design-heuristics",{"title":3041,"path":3042,"stem":3043},"Еволюція проєктних рішень","\u002Fsoftware-engineering\u002Fevolution-of-design-solutions","09.software-engineering\u002F09.evolution-of-design-solutions",{"title":3045,"path":3046,"stem":3047},"EventStorming","\u002Fsoftware-engineering\u002Feventstorming","09.software-engineering\u002F10.eventstorming",{"title":3049,"path":3050,"stem":3051},"DDD на практиці","\u002Fsoftware-engineering\u002Fddd-in-practice","09.software-engineering\u002F11.ddd-in-practice",{"title":3053,"icon":943,"path":3054,"stem":3055,"children":3056,"page":59},"DDD","\u002Fddd","10.ddd",[3057,3061,3065,3069,3073,3077,3081,3085,3089,3093,3097,3101,3105],{"title":3058,"path":3059,"stem":3060},"Аналіз предметної області","\u002Fddd\u002Fdomain-analysis","10.ddd\u002F01.domain-analysis",{"title":3062,"path":3063,"stem":3064},"Експертні знання про предметну область","\u002Fddd\u002Fdomain-expert-knowledge","10.ddd\u002F02.domain-expert-knowledge",{"title":3066,"path":3067,"stem":3068},"Як осмислити складність предметної області","\u002Fddd\u002Fmanaging-domain-complexity","10.ddd\u002F03.managing-domain-complexity",{"title":3070,"path":3071,"stem":3072},"Інтеграція обмежених контекстів","\u002Fddd\u002Fbounded-context-integration","10.ddd\u002F04.bounded-context-integration",{"title":3074,"path":3075,"stem":3076},"Реалізація простої бізнес-логіки","\u002Fddd\u002Fsimple-business-logic","10.ddd\u002F05.simple-business-logic",{"title":3078,"path":3079,"stem":3080},"Обробка складної бізнес-логіки","\u002Fddd\u002Fcomplex-business-logic","10.ddd\u002F06.complex-business-logic",{"title":3082,"path":3083,"stem":3084},"Моделювання фактора часу","\u002Fddd\u002Ftime-modeling","10.ddd\u002F07.time-modeling",{"title":3086,"path":3087,"stem":3088},"Глава 8. Архітектурні Патерни","\u002Fddd\u002Farchitectural-patterns","10.ddd\u002F08.architectural-patterns",{"title":3090,"path":3091,"stem":3092},"Глава 9. Патерни Взаємодії","\u002Fddd\u002Finteraction-patterns","10.ddd\u002F09.interaction-patterns",{"title":3094,"path":3095,"stem":3096},"Глава 10. Проектні Евристики","\u002Fddd\u002Fdesign-heuristics","10.ddd\u002F10.design-heuristics",{"title":3098,"path":3099,"stem":3100},"Глава 11. Еволюція Проектних Рішень","\u002Fddd\u002Fevolution-of-design-decisions","10.ddd\u002F11.evolution-of-design-decisions",{"title":3102,"path":3103,"stem":3104},"Глава 12. EventStorming","\u002Fddd\u002Fevent-storming","10.ddd\u002F12.event-storming",{"title":3106,"path":3107,"stem":3108},"Глава 13. DDD на Практиці","\u002Fddd\u002Fddd-in-practice","10.ddd\u002F13.ddd-in-practice",{"title":3110,"icon":3111,"path":3112,"stem":3113,"children":3114,"page":59},"Media Streaming","i-lucide-video","\u002Fmedia-streaming","11.media-streaming",[3115,3119,3123,3127,3131,3135,3139],{"title":3116,"path":3117,"stem":3118},"01. Магія Стрімінгу: Що відбувається, коли ви натискаєте \"Play\"","\u002Fmedia-streaming\u002Fintroduction","11.media-streaming\u002F01.introduction",{"title":3120,"path":3121,"stem":3122},"02. Анатомія Медіа: Кодеки, Контейнери та Стиснення","\u002Fmedia-streaming\u002Faudio-video-anatomy","11.media-streaming\u002F02.audio-video-anatomy",{"title":3124,"path":3125,"stem":3126},"03. The Gym: FFmpeg Deep Dive","\u002Fmedia-streaming\u002Fffmpeg-gym","11.media-streaming\u002F03.ffmpeg-gym",{"title":3128,"path":3129,"stem":3130},"04. HLS Protocol: HTTP Live Streaming у Деталях","\u002Fmedia-streaming\u002Fhls-protocol","11.media-streaming\u002F04.hls-protocol",{"title":3132,"path":3133,"stem":3134},"05. DASH Protocol: Відкритий Стандарт","\u002Fmedia-streaming\u002Fdash-protocol","11.media-streaming\u002F05.dash-protocol",{"title":3136,"path":3137,"stem":3138},"06. Масштабування: CDN та Adaptive Bitrate","\u002Fmedia-streaming\u002Fcdn-and-adaptive-bitrate","11.media-streaming\u002F06.cdn-and-adaptive-bitrate",{"title":3140,"path":3141,"stem":3142},"07. Війна із Затримкою (Latency)","\u002Fmedia-streaming\u002Frealtime-latency","11.media-streaming\u002F07.realtime-latency",{"title":3144,"icon":3145,"path":3146,"stem":3147,"children":3148,"page":59},"HTML & CSS","i-devicon-html5","\u002Fhtml-css","12.html-css",[3149,3153,3157,3161,3165,3169,3173,3177,3181,3185,3189,3193,3197,3201,3205,3209,3213,3217,3221,3225,3229,3233,3237,3241,3245,3249,3253,3257,3261,3265],{"title":3150,"path":3151,"stem":3152},"Вступ до HTML. Структура документа","\u002Fhtml-css\u002Fintro-html-structure","12.html-css\u002F01.intro-html-structure",{"title":3154,"path":3155,"stem":3156},"Форматування тексту в HTML","\u002Fhtml-css\u002Fhtml-text-formatting","12.html-css\u002F02.html-text-formatting",{"title":3158,"path":3159,"stem":3160},"Посилання та зображення в HTML","\u002Fhtml-css\u002Fhtml-links-images","12.html-css\u002F03.html-links-images",{"title":3162,"path":3163,"stem":3164},"Списки та таблиці в HTML","\u002Fhtml-css\u002Fhtml-lists-tables","12.html-css\u002F04.html-lists-tables",{"title":3166,"path":3167,"stem":3168},"Форми в HTML","\u002Fhtml-css\u002Fhtml-forms","12.html-css\u002F05.html-forms",{"title":3170,"path":3171,"stem":3172},"Семантичні елементи HTML5","\u002Fhtml-css\u002Fhtml-semantic-elements","12.html-css\u002F06.html-semantic-elements",{"title":3174,"path":3175,"stem":3176},"Мультимедіа та розширені елементи HTML","\u002Fhtml-css\u002Fhtml-multimedia-advanced","12.html-css\u002F07.html-multimedia-advanced",{"title":3178,"path":3179,"stem":3180},"Мікророзмітка та SEO в HTML","\u002Fhtml-css\u002Fhtml-microdata-seo","12.html-css\u002F08.html-microdata-seo",{"title":3182,"path":3183,"stem":3184},"Вступ до CSS. Селектори та специфічність","\u002Fhtml-css\u002Fcss-intro-selectors","12.html-css\u002F09.css-intro-selectors",{"title":3186,"path":3187,"stem":3188},"Блокова модель CSS. Відступи. Box Sizing","\u002Fhtml-css\u002Fcss-box-model","12.html-css\u002F10.css-box-model",{"title":3190,"path":3191,"stem":3192},"Розміри у CSS: повний довідник одиниць і ключових слів","\u002Fhtml-css\u002F10a.css-sizing","12.html-css\u002F10a.css-sizing",{"title":3194,"path":3195,"stem":3196},"Типографіка в CSS. Шрифти та текст","\u002Fhtml-css\u002Fcss-typography","12.html-css\u002F11.css-typography",{"title":3198,"path":3199,"stem":3200},"Кольори та фони в CSS","\u002Fhtml-css\u002Fcss-colors-backgrounds","12.html-css\u002F12.css-colors-backgrounds",{"title":3202,"path":3203,"stem":3204},"Тіні та фільтри в CSS","\u002Fhtml-css\u002F12b.css-shadows-filters","12.html-css\u002F12b.css-shadows-filters",{"title":3206,"path":3207,"stem":3208},"CSS Flexbox: Фундамент гнучких макетів","\u002Fhtml-css\u002Fcss-flexbox-fundamentals","12.html-css\u002F13.css-flexbox-fundamentals",{"title":3210,"path":3211,"stem":3212},"CSS Flexbox: Вирівнювання та Позиціонування","\u002Fhtml-css\u002Fcss-flexbox-alignment-sizing-and-patterns","12.html-css\u002F14.css-flexbox-alignment-sizing-and-patterns",{"title":3214,"path":3215,"stem":3216},"CSS Grid. Двовимірний макет. Частина 1","\u002Fhtml-css\u002Fcss-layout-grid","12.html-css\u002F15.css-layout-grid",{"title":3218,"path":3219,"stem":3220},"CSS Grid. Двовимірний макет. Частина 2","\u002Fhtml-css\u002Fcss-layout-grid-advanced","12.html-css\u002F16.css-layout-grid-advanced",{"title":3222,"path":3223,"stem":3224},"Позиціонування в CSS. Z-index. Stacking Context","\u002Fhtml-css\u002Fcss-positioning","12.html-css\u002F17.css-positioning",{"title":3226,"path":3227,"stem":3228},"CSS Анімації та Переходи","\u002Fhtml-css\u002Fcss-animations-transitions","12.html-css\u002F18.css-animations-transitions",{"title":3230,"path":3231,"stem":3232},"Адаптивний дизайн. Media Queries. Частина 1","\u002Fhtml-css\u002Fcss-responsive-media-queries","12.html-css\u002F19.css-responsive-media-queries",{"title":3234,"path":3235,"stem":3236},"Адаптивний дизайн. Частина 2: clamp(), Container Queries, @layer","\u002Fhtml-css\u002Fcss-responsive-advanced","12.html-css\u002F20.css-responsive-advanced",{"title":3238,"path":3239,"stem":3240},"CSS Custom Properties. Методології. Сучасний CSS","\u002Fhtml-css\u002Fcss-variables-methodologies","12.html-css\u002F21.css-variables-methodologies",{"title":3242,"path":3243,"stem":3244},"Сучасний CSS 2023–2025: Нові можливості","\u002Fhtml-css\u002Fcss-modern-features","12.html-css\u002F22.css-modern-features",{"title":3246,"path":3247,"stem":3248},"CSS Nesting, @layer, @scope та @property: нативний препроцесор","\u002Fhtml-css\u002F22a.css-nesting-modern-syntax","12.html-css\u002F22a.css-nesting-modern-syntax",{"title":3250,"path":3251,"stem":3252},"CSS для форм та інтерактивних станів","\u002Fhtml-css\u002Fcss-forms-interactive-states","12.html-css\u002F23.css-forms-interactive-states",{"title":3254,"path":3255,"stem":3256},"Доступність у CSS (CSS Accessibility)","\u002Fhtml-css\u002Fcss-accessibility","12.html-css\u002F24.css-accessibility",{"title":3258,"path":3259,"stem":3260},"CSS-функції та сучасні sizing primitives","\u002Fhtml-css\u002Fcss-functions-sizing","12.html-css\u002F25.css-functions-sizing",{"title":3262,"path":3263,"stem":3264},"Rendering Pipeline і CSS Performance","\u002Fhtml-css\u002Fcss-rendering-performance","12.html-css\u002F26.css-rendering-performance",{"title":3266,"path":3267,"stem":3268},"CSS Best Practices: типові ситуації та правильні рішення","\u002Fhtml-css\u002Fcss-best-practices","12.html-css\u002F27.css-best-practices",{"title":3270,"path":3271,"stem":3272,"children":3273,"page":59},"AWS","\u002Faws","13.aws",[3274,3278,3282,3286,3290,3294,3298,3302,3306,3310,3314,3318,3322,3326,3330,3334,3338,3342],{"title":3275,"path":3276,"stem":3277},"Реєстрація AWS акаунту та студентські програми","\u002Faws\u002Faccount-registration","13.aws\u002F00.account-registration",{"title":3279,"path":3280,"stem":3281},"Вступ до хмарних обчислень та AWS","\u002Faws\u002Fintroduction-to-cloud","13.aws\u002F01.introduction-to-cloud",{"title":3283,"path":3284,"stem":3285},"AWS IAM — Identity and Access Management","\u002Faws\u002Fiam","13.aws\u002F02.iam",{"title":3287,"path":3288,"stem":3289},"AWS IAM CLI — Довідник команд","\u002Faws\u002F02a.iam-doc","13.aws\u002F02a.iam-doc",{"title":3291,"path":3292,"stem":3293},"Docker та контейнеризація в AWS — ECR, ECS та Fargate","\u002Faws\u002Fdocker-ecs","13.aws\u002F03.docker-ecs",{"title":3295,"path":3296,"stem":3297},"AWS ECR \u002F ECS CLI — Довідник команд","\u002Faws\u002F03a.docker-ecs-doc","13.aws\u002F03a.docker-ecs-doc",{"title":3299,"path":3300,"stem":3301},"Amazon EC2 — Elastic Compute Cloud","\u002Faws\u002Fec2","13.aws\u002F04.ec2",{"title":3303,"path":3304,"stem":3305},"AWS EC2 CLI — Довідник команд","\u002Faws\u002F04a.ec2-doc","13.aws\u002F04a.ec2-doc",{"title":3307,"path":3308,"stem":3309},"Elastic Load Balancing та Auto Scaling","\u002Faws\u002Falb-asg","13.aws\u002F05.alb-asg",{"title":3311,"path":3312,"stem":3313},"Amazon S3 — Simple Storage Service","\u002Faws\u002Fs3","13.aws\u002F06.s3",{"title":3315,"path":3316,"stem":3317},"Amazon CloudFront — Content Delivery Network","\u002Faws\u002Fcloudfront","13.aws\u002F07.cloudfront",{"title":3319,"path":3320,"stem":3321},"Amazon RDS — Relational Database Service","\u002Faws\u002Frds","13.aws\u002F08.rds",{"title":3323,"path":3324,"stem":3325},"Amazon DynamoDB — NoSQL Database","\u002Faws\u002Fdynamodb","13.aws\u002F09.dynamodb",{"title":3327,"path":3328,"stem":3329},"AWS Lambda та Serverless Compute","\u002Faws\u002Flambda","13.aws\u002F10.lambda",{"title":3331,"path":3332,"stem":3333},"Amazon Bedrock - Foundation Models, RAG та Agents","\u002Faws\u002Fbedrock","13.aws\u002F22.bedrock",{"title":3335,"path":3336,"stem":3337},"Amazon Rekognition - Комп'ютерний зір","\u002Faws\u002Frekognition","13.aws\u002F23.rekognition",{"title":3339,"path":3340,"stem":3341},"Amazon Textract - Інтелектуальний аналіз документів","\u002Faws\u002Ftextract","13.aws\u002F24.textract",{"title":3343,"path":3344,"stem":3345},"Amazon Polly, Transcribe, Comprehend та Translate","\u002Faws\u002Faudio-nlp-services","13.aws\u002F25.audio-nlp-services",{"title":3347,"path":3348,"stem":3349,"children":3350,"page":59},"Ai Development","\u002Fai-development","14.ai-development",[3351],{"title":3352,"path":3353,"stem":3354,"children":3355,"page":59},"Foundations","\u002Fai-development\u002Ffoundations","14.ai-development\u002F00.foundations",[3356],{"title":3357,"path":3358,"stem":3359},"Модуль 0.1. Що таке Large Language Model (LLM)","\u002Fai-development\u002Ffoundations\u002Fwhat-is-llm","14.ai-development\u002F00.foundations\u002F01.what-is-llm",{"title":3361,"path":3362,"stem":3363,"children":3364,"page":59},"React Native","\u002Freact-native","15.react-native",[3365,3386],{"title":3366,"path":3367,"stem":3368,"children":3369,"page":59},"Version1","\u002Freact-native\u002Fversion1","15.react-native\u002Fversion1",[3370,3374,3378,3382],{"title":3371,"path":3372,"stem":3373},"Що таке React Native","\u002Freact-native\u002Fversion1\u002Fwhat-is-react-native","15.react-native\u002Fversion1\u002F01.what-is-react-native",{"title":3375,"path":3376,"stem":3377},"Як влаштований React Native «під капотом»","\u002Freact-native\u002Fversion1\u002Freact-native-architecture","15.react-native\u002Fversion1\u002F02.react-native-architecture",{"title":3379,"path":3380,"stem":3381},"Від React до React Native: ключові відмінності","\u002Freact-native\u002Fversion1\u002Freact-native-vs-react","15.react-native\u002Fversion1\u002F03.react-native-vs-react",{"title":3383,"path":3384,"stem":3385},"View та Text — фундаментальні будівельні блоки","\u002Freact-native\u002Fversion1\u002Fview-and-text","15.react-native\u002Fversion1\u002F04.view-and-text",{"title":3387,"path":3388,"stem":3389,"children":3390,"page":59},"Version2","\u002Freact-native\u002Fversion2","15.react-native\u002Fversion2",[3391,3395,3399,3403,3407,3411,3415,3419,3423,3427,3431,3435,3439,3443,3447,3451,3455,3459,3463,3467,3471,3475,3479,3483,3487,3491],{"title":3392,"path":3393,"stem":3394},"React Native — навіщо він потрібен","\u002Freact-native\u002Fversion2\u002Fwhy-react-native","15.react-native\u002Fversion2\u002F01.why-react-native",{"title":3396,"path":3397,"stem":3398},"Налаштування середовища розробки","\u002Freact-native\u002Fversion2\u002Fenvironment-setup","15.react-native\u002Fversion2\u002F02.environment-setup",{"title":3400,"path":3401,"stem":3402},"Expo і класичний React Native — два шляхи одного фреймворку","\u002Freact-native\u002Fversion2\u002Fexpo-vs-cli-landscape","15.react-native\u002Fversion2\u002F03.expo-vs-cli-landscape",{"title":3404,"path":3405,"stem":3406},"Середовище Expo — перший запуск","\u002Freact-native\u002Fversion2\u002Fexpo-setup-and-tooling","15.react-native\u002Fversion2\u002F04.expo-setup-and-tooling",{"title":3408,"path":3409,"stem":3410},"Структура проєкту та перші UI-примітиви","\u002Freact-native\u002Fversion2\u002Fproject-structure-and-conventions","15.react-native\u002Fversion2\u002F05.project-structure-and-conventions",{"title":3412,"path":3413,"stem":3414},"Базові компоненти React Native","\u002Freact-native\u002Fversion2\u002Fcore-components","15.react-native\u002Fversion2\u002F06.core-components",{"title":3416,"path":3417,"stem":3418},"Flexbox і layout у React Native","\u002Freact-native\u002Fversion2\u002Fflexbox-and-layout","15.react-native\u002Fversion2\u002F07.flexbox-and-layout",{"title":3420,"path":3421,"stem":3422},"StyleSheet і теми (light \u002F dark)","\u002Freact-native\u002Fversion2\u002Fstylesheet-and-theming","15.react-native\u002Fversion2\u002F08.stylesheet-and-theming",{"title":3424,"path":3425,"stem":3426},"Списки та віртуалізація","\u002Freact-native\u002Fversion2\u002Flists-and-virtualization","15.react-native\u002Fversion2\u002F09.lists-and-virtualization",{"title":3428,"path":3429,"stem":3430},"Форми, ввід і валідація","\u002Freact-native\u002Fversion2\u002Fforms-input-validation","15.react-native\u002Fversion2\u002F10.forms-input-validation",{"title":3432,"path":3433,"stem":3434},"Основи Expo Router","\u002Freact-native\u002Fversion2\u002Fexpo-router-basics","15.react-native\u002Fversion2\u002F11.expo-router-basics",{"title":3436,"path":3437,"stem":3438},"Вкладені навігатори та модалки","\u002Freact-native\u002Fversion2\u002Fnested-navigators-and-modals","15.react-native\u002Fversion2\u002F12.nested-navigators-and-modals",{"title":3440,"path":3441,"stem":3442},"Deep linking і параметри маршрутів","\u002Freact-native\u002Fversion2\u002Fdeep-linking-and-params","15.react-native\u002Fversion2\u002F13.deep-linking-and-params",{"title":3444,"path":3445,"stem":3446},"Робота з мережею та життєвий цикл застосунку","\u002Freact-native\u002Fversion2\u002Fnetworking-and-app-lifecycle","15.react-native\u002Fversion2\u002F14.networking-and-app-lifecycle",{"title":3448,"path":3449,"stem":3450},"Redux Toolkit на мобільних платформах","\u002Freact-native\u002Fversion2\u002Fredux-toolkit-on-mobile","15.react-native\u002Fversion2\u002F15.redux-toolkit-on-mobile",{"title":3452,"path":3453,"stem":3454},"RTK Query на мобільних платформах","\u002Freact-native\u002Fversion2\u002Frtk-query-mobile","15.react-native\u002Fversion2\u002F16.rtk-query-mobile",{"title":3456,"path":3457,"stem":3458},"Автентифікація та Безпечне Зберігання","\u002Freact-native\u002Fversion2\u002Fauth-secure-storage","15.react-native\u002Fversion2\u002F18.auth-secure-storage",{"title":3460,"path":3461,"stem":3462},"Локальне сховище — AsyncStorage, MMKV, SQLite","\u002Freact-native\u002Fversion2\u002Flocal-storage-mmkv-sqlite","15.react-native\u002Fversion2\u002F19.local-storage-mmkv-sqlite",{"title":3464,"path":3465,"stem":3466},"Офлайн-First і синхронізація","\u002Freact-native\u002Fversion2\u002Foffline-first-sync","15.react-native\u002Fversion2\u002F20.offline-first-sync",{"title":3468,"path":3469,"stem":3470},"Камера, медіа та файлова система","\u002Freact-native\u002Fversion2\u002Fcamera-media-filesystem","15.react-native\u002Fversion2\u002F21.camera-media-filesystem",{"title":3472,"path":3473,"stem":3474},"Карти та геолокація","\u002Freact-native\u002Fversion2\u002Fmaps-and-location","15.react-native\u002Fversion2\u002F22.maps-and-location",{"title":3476,"path":3477,"stem":3478},"Жести та дотики","\u002Freact-native\u002Fversion2\u002Fgestures-and-touch","15.react-native\u002Fversion2\u002F23.gestures-and-touch",{"title":3480,"path":3481,"stem":3482},"Анімації з Reanimated","\u002Freact-native\u002Fversion2\u002Freanimated-animations","15.react-native\u002Fversion2\u002F24.reanimated-animations",{"title":3484,"path":3485,"stem":3486},"Push і локальні сповіщення","\u002Freact-native\u002Fversion2\u002Fpush-and-local-notifications","15.react-native\u002Fversion2\u002F25.push-and-local-notifications",{"title":3488,"path":3489,"stem":3490},"Доступність та інтернаціоналізація","\u002Freact-native\u002Fversion2\u002Faccessibility-and-i18n","15.react-native\u002Fversion2\u002F26.accessibility-and-i18n",{"title":3492,"path":3493,"stem":3494},"EAS Build та профілі збірки","\u002Freact-native\u002Fversion2\u002Feas-build-and-profiles","15.react-native\u002Fversion2\u002F29.eas-build-and-profiles",{"title":3496,"path":3497,"stem":3498,"children":3499,"page":59},"Ai Python","\u002Fai-python","16.ai-python",[3500,3504,3508],{"title":3501,"path":3502,"stem":3503},"Вступ до штучного інтелекту та машинного навчання","\u002Fai-python\u002Fintro-to-ai","16.ai-python\u002F01.intro-to-ai",{"title":3505,"path":3506,"stem":3507},"Знайомство з Jupyter Notebook та JupyterLab","\u002Fai-python\u002Fjupyter-notebook","16.ai-python\u002F02.jupyter-notebook",{"title":3509,"path":3510,"stem":3511},"Робота з даними з використанням NumPy і pandas","\u002Fai-python\u002Fnumpy-pandas","16.ai-python\u002F03.numpy-pandas",{"title":3513,"icon":658,"path":3514,"stem":3515,"children":3516,"page":59},"Клієнт-серверна архітектура","\u002Fclient-server-architecture","17.client-server-architecture",[3517,3521],{"title":3518,"path":3519,"stem":3520},"Архітектура клієнт-серверних систем та основи Go","\u002Fclient-server-architecture\u002Fclient-server-architecture-and-go","17.client-server-architecture\u002F01.client-server-architecture-and-go",{"title":3522,"path":3523,"stem":3524},"Система типів та модель пам’яті мови Go","\u002Fclient-server-architecture\u002Ftype-system-and-memory-model","17.client-server-architecture\u002F02.type-system-and-memory-model",{"title":3526,"icon":1946,"path":3527,"stem":3528,"children":3529,"page":59},"Розробка WEB-застосувань","\u002Fweb-development","18.web-development",[3530,3575,3613,3642],{"title":3531,"icon":658,"path":3532,"stem":3533,"children":3534,"page":59},"Архітектура комп'ютерних мереж та мережеві протоколи","\u002Fweb-development\u002Fnetwork-architecture-and-protocols","18.web-development\u002F01.network-architecture-and-protocols",[3535,3539,3543,3547,3551,3555,3559,3563,3567,3571],{"title":3536,"path":3537,"stem":3538},"Еволюція веброзробки та модель клієнт-сервер","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fweb-evolution-client-server","18.web-development\u002F01.network-architecture-and-protocols\u002F01.web-evolution-client-server",{"title":3540,"path":3541,"stem":3542},"Еталонна модель OSI","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fosi-model","18.web-development\u002F01.network-architecture-and-protocols\u002F02.osi-model",{"title":3544,"path":3545,"stem":3546},"Стек протоколів TCP\u002FIP","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Ftcp-ip-stack","18.web-development\u002F01.network-architecture-and-protocols\u002F03.tcp-ip-stack",{"title":3548,"path":3549,"stem":3550},"IP-адресація, порти та сокети","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fip-addressing-ports-sockets","18.web-development\u002F01.network-architecture-and-protocols\u002F04.ip-addressing-ports-sockets",{"title":3552,"path":3553,"stem":3554},"Протоколи TCP та UDP","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Ftcp-udp-protocols","18.web-development\u002F01.network-architecture-and-protocols\u002F05.tcp-udp-protocols",{"title":3556,"path":3557,"stem":3558},"Система доменних імен DNS","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fdns-system","18.web-development\u002F01.network-architecture-and-protocols\u002F06.dns-system",{"title":3560,"path":3561,"stem":3562},"Протокол SMTP та поштові протоколи","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fsmtp-email-protocols","18.web-development\u002F01.network-architecture-and-protocols\u002F07.smtp-email-protocols",{"title":3564,"path":3565,"stem":3566},"Протокол WebSocket","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fwebsocket-protocol","18.web-development\u002F01.network-architecture-and-protocols\u002F08.websocket-protocol",{"title":3568,"path":3569,"stem":3570},"Протокол SSH","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fssh-protocol","18.web-development\u002F01.network-architecture-and-protocols\u002F09.ssh-protocol",{"title":3572,"path":3573,"stem":3574},"Огляд сучасних серверних технологій","\u002Fweb-development\u002Fnetwork-architecture-and-protocols\u002Fmodern-backend-technologies","18.web-development\u002F01.network-architecture-and-protocols\u002F10.modern-backend-technologies",{"title":3576,"icon":3577,"path":3578,"stem":3579,"children":3580,"page":59},"Протокол HTTP та захищена передача даних HTTPS","i-lucide-lock","\u002Fweb-development\u002Fhttp-and-https","18.web-development\u002F02.http-and-https",[3581,3585,3589,3593,3597,3601,3605,3609],{"title":3582,"path":3583,"stem":3584},"Вступ до протоколу HTTP та еволюція веб-технологій","\u002Fweb-development\u002Fhttp-and-https\u002Fintroduction-and-evolution","18.web-development\u002F02.http-and-https\u002F01.introduction-and-evolution",{"title":3586,"path":3587,"stem":3588},"Анатомія HTTP-запиту","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-request-structure","18.web-development\u002F02.http-and-https\u002F02.http-request-structure",{"title":3590,"path":3591,"stem":3592},"Анатомія HTTP-відповіді","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-response-structure","18.web-development\u002F02.http-and-https\u002F03.http-response-structure",{"title":3594,"path":3595,"stem":3596},"Методи HTTP та їхня семантика","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-methods","18.web-development\u002F02.http-and-https\u002F04.http-methods",{"title":3598,"path":3599,"stem":3600},"Коди статусу HTTP та їхнє призначення","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-status-codes","18.web-development\u002F02.http-and-https\u002F05.http-status-codes",{"title":3602,"path":3603,"stem":3604},"HTTP-заголовки та їхнє призначення","\u002Fweb-development\u002Fhttp-and-https\u002Fhttp-headers","18.web-development\u002F02.http-and-https\u002F06.http-headers",{"title":3606,"path":3607,"stem":3608},"CORS та механізми безпеки HTTP","\u002Fweb-development\u002Fhttp-and-https\u002Fcors-and-security","18.web-development\u002F02.http-and-https\u002F07.cors-and-security",{"title":3610,"path":3611,"stem":3612},"HTTPS та криптографічні основи TLS","\u002Fweb-development\u002Fhttp-and-https\u002Fhttps-and-tls","18.web-development\u002F02.http-and-https\u002F08.https-and-tls",{"title":3614,"icon":2326,"path":3615,"stem":3616,"children":3617,"page":59},"Система типів мови TypeScript","\u002Fweb-development\u002Ftypescript-type-system","18.web-development\u002F03.typescript-type-system",[3618,3622,3626,3630,3634,3638],{"title":3619,"path":3620,"stem":3621},"Знайомство з TypeScript Compiler","\u002Fweb-development\u002Ftypescript-type-system\u002Fintroduction-compiler-config","18.web-development\u002F03.typescript-type-system\u002F01.introduction-compiler-config",{"title":3623,"path":3624,"stem":3625},"Примітивні типи даних: string, number, boolean","\u002Fweb-development\u002Ftypescript-type-system\u002Fprimitive-special-types","18.web-development\u002F03.typescript-type-system\u002F02.primitive-special-types",{"title":3627,"path":3628,"stem":3629},"Масиви, кортежі та об","\u002Fweb-development\u002Ftypescript-type-system\u002Farrays-tuples-objects","18.web-development\u002F03.typescript-type-system\u002F03.arrays-tuples-objects",{"title":3631,"path":3632,"stem":3633},"Union типи, Intersection типи та літеральні типи","\u002Fweb-development\u002Ftypescript-type-system\u002Funion-intersection-literals","18.web-development\u002F03.typescript-type-system\u002F04.union-intersection-literals",{"title":3635,"path":3636,"stem":3637},"Type Narrowing (звуження типів)","\u002Fweb-development\u002Ftypescript-type-system\u002Ftype-narrowing","18.web-development\u002F03.typescript-type-system\u002F05.type-narrowing",{"title":3639,"path":3640,"stem":3641},"Типізація функцій","\u002Fweb-development\u002Ftypescript-type-system\u002Ffunctions-typing","18.web-development\u002F03.typescript-type-system\u002F06.functions-typing",{"title":3643,"icon":2326,"path":3644,"stem":3645,"children":3646,"page":59},"Розширені засоби мови TypeScript","\u002Fweb-development\u002Ftypescript-advanced","18.web-development\u002F04.typescript-advanced",[3647,3651,3655,3659,3663,3667],{"title":3648,"path":3649,"stem":3650},"Interfaces та Classes","\u002Fweb-development\u002Ftypescript-advanced\u002Finterfaces-classes","18.web-development\u002F04.typescript-advanced\u002F01.interfaces-classes",{"title":3652,"path":3653,"stem":3654},"Основи Generic типів","\u002Fweb-development\u002Ftypescript-advanced\u002Fgenerics-fundamentals","18.web-development\u002F04.typescript-advanced\u002F02.generics-fundamentals",{"title":3656,"path":3657,"stem":3658},"Enums та Decorators","\u002Fweb-development\u002Ftypescript-advanced\u002Fenums-decorators","18.web-development\u002F04.typescript-advanced\u002F03.enums-decorators",{"title":3660,"path":3661,"stem":3662},"Utility Types","\u002Fweb-development\u002Ftypescript-advanced\u002Futility-types","18.web-development\u002F04.typescript-advanced\u002F04.utility-types",{"title":3664,"path":3665,"stem":3666},"Mapped та Conditional Types","\u002Fweb-development\u002Ftypescript-advanced\u002Fmapped-conditional-types","18.web-development\u002F04.typescript-advanced\u002F05.mapped-conditional-types",{"title":3668,"path":3669,"stem":3670},"Модулі та Strict Mode","\u002Fweb-development\u002Ftypescript-advanced\u002Fmodules-strict-mode","18.web-development\u002F04.typescript-advanced\u002F06.modules-strict-mode",{"title":3672,"path":3673,"stem":3674,"children":3675,"page":59},"Tailwind","\u002Ftailwind","21.tailwind",[3676,3680,3684,3688,3692,3696,3700,3704,3708,3712,3716,3720],{"title":3677,"path":3678,"stem":3679},"Що таке Tailwind CSS і навіщо він потрібен","\u002Ftailwind\u002Ftailwind-intro-philosophy","21.tailwind\u002F01.tailwind-intro-philosophy",{"title":3681,"path":3682,"stem":3683},"Встановлення та налаштування Tailwind CSS v4","\u002Ftailwind\u002Ftailwind-installation-setup","21.tailwind\u002F02.tailwind-installation-setup",{"title":3685,"path":3686,"stem":3687},"Utility-класи: основи та система Tailwind","\u002Ftailwind\u002Ftailwind-utility-classes-core","21.tailwind\u002F03.tailwind-utility-classes-core",{"title":3689,"path":3690,"stem":3691},"Layout: Flexbox та Grid через Tailwind","\u002Ftailwind\u002Ftailwind-flexbox-grid","21.tailwind\u002F04.tailwind-flexbox-grid",{"title":3693,"path":3694,"stem":3695},"Кастомізація теми через @theme у Tailwind v4","\u002Ftailwind\u002Ftailwind-theme-customization","21.tailwind\u002F05.tailwind-theme-customization",{"title":3697,"path":3698,"stem":3699},"Варіанти: hover, focus, responsive, dark mode та нові v4","\u002Ftailwind\u002Ftailwind-variants-states","21.tailwind\u002F06.tailwind-variants-states",{"title":3701,"path":3702,"stem":3703},"Типографіка та система кольорів у Tailwind v4","\u002Ftailwind\u002Ftailwind-typography-colors","21.tailwind\u002F07.tailwind-typography-colors",{"title":3705,"path":3706,"stem":3707},"Компоненти та повторюваність: @apply, @utility та патерни","\u002Ftailwind\u002Ftailwind-components-patterns","21.tailwind\u002F08.tailwind-components-patterns",{"title":3709,"path":3710,"stem":3711},"Темна тема та система дизайн-токенів у Tailwind v4","\u002Ftailwind\u002Ftailwind-dark-mode-theming","21.tailwind\u002F09.tailwind-dark-mode-theming",{"title":3713,"path":3714,"stem":3715},"Довільні значення та контейнерні запити у Tailwind v4","\u002Ftailwind\u002Ftailwind-arbitrary-container-queries","21.tailwind\u002F10.tailwind-arbitrary-container-queries",{"title":3717,"path":3718,"stem":3719},"Анімації, трансформації та 3D у Tailwind v4","\u002Ftailwind\u002Ftailwind-animations-transforms","21.tailwind\u002F11.tailwind-animations-transforms",{"title":3721,"path":3722,"stem":3723},"Tailwind CLI, PostCSS та інтеграція з фреймворками","\u002Ftailwind\u002Ftailwind-cli-tooling","21.tailwind\u002F12.tailwind-cli-tooling",{"title":3725,"path":3726,"stem":3727},"Тестування компонентів діаграм","\u002Ftest-components","98.test-components",{"id":3729,"title":3432,"body":3730,"description":41617,"extension":16678,"links":41618,"meta":41619,"navigation":4050,"path":3433,"seo":41620,"stem":3434,"__hash__":41621},"docs\u002F15.react-native\u002Fversion2\u002F11.expo-router-basics.md",{"type":3731,"value":3732,"toc":41493},"minimark",[3733,3737,3742,3755,3758,3781,3800,3805,3914,3940,3955,3965,3968,3972,3983,3986,4171,4174,4222,4230,4481,4485,4496,4515,4521,4523,4527,4530,4683,4709,4713,4716,4743,4746,4766,4775,4777,4785,4788,4794,4840,4850,4853,4859,5099,5101,5105,5108,5142,5145,5147,5153,5164,5178,5184,5192,5230,5234,5251,5254,5262,5269,5452,5485,5489,5492,6016,6041,6043,6050,6053,6164,6170,6186,6190,6208,6210,6214,6223,6233,6239,6405,6409,6423,6434,6441,6501,6505,6508,6533,6540,6542,6546,6552,6559,6565,6702,6706,6720,6780,6787,6795,6816,6819,6941,6943,6950,6970,6976,6980,6983,6989,7159,7161,7165,7180,7384,7386,7390,7396,7555,7557,7561,7569,7708,7710,7720,7737,7836,7849,8116,8118,8124,8145,8151,8157,8346,8357,8361,8402,8404,8412,8428,8435,8573,8579,8589,8592,8675,8683,8696,8708,8848,8854,8862,8873,8912,8918,9125,9129,9198,9200,9208,9215,9221,9249,9259,9275,9277,9281,9290,9304,9311,9384,9391,9441,9443,9447,9464,9474,9480,9626,9630,9677,9679,9683,9690,9710,9716,9740,9747,9767,9778,9805,9809,9840,9844,9862,9864,9868,9872,9887,9890,9914,9918,9924,10020,10024,10107,10114,10121,10590,10596,10602,10864,10871,10880,11297,11303,11307,12262,12269,12274,12762,12768,12781,13565,13576,13583,13606,13615,13640,13644,13690,13694,13748,13752,13828,13830,13834,13841,13845,13851,13874,13881,13885,13890,13904,13909,13999,14003,14030,14034,39843,39847,39894,39898,39973,39977,39984,41293,41295,41299,41303,41321,41325,41348,41352,41382,41384,41388,41440,41442,41446,41467,41490],[3734,3735,3432],"h1",{"id":3736},"основи-expo-router",[3738,3739,3741],"h2",{"id":3740},"вступ-навігація-в-мобільних-додатках-та-файловий-роутинг-file-based-routing","Вступ: Навігація в мобільних додатках та файловий роутинг (File-Based Routing)",[3743,3744,3745,3746,3750,3751,3754],"p",{},"У процесі розвитку мобільного застосунку навантаження на інтерфейсний шар неминуче зростає. На початкових етапах розробки проєкт Nomad функціонував як монолітний одноекранний інтерфейс: спискове відображення поїздок, блок збережених локацій у заголовку списку та плаваюча кнопка переходу до форми створення. Попередній виніс форми створення поїздки в окремий модуль ",[3747,3748,3749],"code",{},"create-trip.tsx"," з активацією через виклик методу ",[3747,3752,3753],{},"router.push"," продемонстрував базову можливість зміни стану екрана, проте залишив поза увагою принципи функціонування навігаційного рушія, життєвий цикл мобільних контейнерів та ієрархію глобальної оболонки застосунку.",[3743,3756,3757],{},"Реальний мобільний продукт ніколи не обмежується одним екраном. У ньому завжди є десятки різних екранів: новинні стрічки, детальні картки, панелі налаштувань, пошук, авторизація та модальні діалоги. Взаємодія з користувачем на мобільних пристроях ґрунтується на зрозумілих та звичних патернах:",[3759,3760,3761,3769,3775],"ol",{},[3762,3763,3764,3768],"li",{},[3765,3766,3767],"strong",{},"Нижні навігаційні вкладки (Bottom Tabs):"," основний орієнтир застосунку для швидкого доступу до головних розділів (як у банківських додатках чи соцмережах).",[3762,3770,3771,3774],{},[3765,3772,3773],{},"Ієрархічна стопка екранів (Navigation Stack):"," організовує переходи углиб контенту за принципом «від списку до деталей» зі збереженням історії переходів та можливістю повернення назад свайпом чи кнопкою «Назад».",[3762,3776,3777,3780],{},[3765,3778,3779],{},"Коректна обробка системних жестів та кнопок:"," підтримка апаратної кнопки повернення на Android та жестової смуги навігації на iOS.",[3743,3782,3783,3786,3787,3790,3791,3794,3795,3799],{},[3765,3784,3785],{},"Expo Router"," — це спеціалізований фреймворк маршрутизації та навігації для екосистеми Expo та React Native, який використовує ",[3765,3788,3789],{},"файловий роутинг (File-Based Routing)",". Головна ідея запозичена з сучасних веб-фреймворків (зокрема Next.js App Router): структура файлів і папок усередині каталогу ",[3747,3792,3793],{},"app\u002F"," автоматично перетворюється на навігаційні маршрути (",[3796,3797,3798],"em",{},"Routes",") та контейнери застосунку.",[3801,3802,3804],"h3",{"id":3803},"навчальні-цілі-розділу","Навчальні цілі розділу:",[3806,3807,3808,3822,3835,3845,3878,3900,3907],"ul",{},[3762,3809,3810,3811,3814,3815,3817,3818,3821],{},"Опанувати концепцію ",[3765,3812,3813],{},"File-Based Routing"," у нативному мобільному середовищі та засвоїти правила архітектурного розмежування між каталогом маршрутів ",[3747,3816,3793],{}," та шаром бізнес-логіки й компонентів ",[3747,3819,3820],{},"src\u002F",".",[3762,3823,3824,3825,3830,3831,3834],{},"Дослідити архітектуру макетів ",[3765,3826,3827],{},[3747,3828,3829],{},"_layout.tsx"," як постійної контекстної оболонки, що інкапсулює спільні провайдери станів (",[3796,3832,3833],{},"State Providers",") та нативні навігатори.",[3762,3836,3837,3838,3841,3842,3821],{},"Сконфігурувати базові навігаційні контейнери: паралельні вкладки ",[3765,3839,3840],{},"Tabs"," та ієрархічну стопку ",[3765,3843,3844],{},"Stack",[3762,3846,3847,3848,3853,3854,3857,3858,3863,3864,3867,3868,3867,3871,3867,3874,3877],{},"Засвоїти механізми переходами між маршрутами за допомогою декларативного компонента ",[3765,3849,3850],{},[3747,3851,3852],{},"Link"," (з підтримкою властивості ",[3747,3855,3856],{},"asChild",") та імперативного хука ",[3765,3859,3860],{},[3747,3861,3862],{},"useRouter"," (методи ",[3747,3865,3866],{},"push",", ",[3747,3869,3870],{},"back",[3747,3872,3873],{},"replace",[3747,3875,3876],{},"canGoBack",").",[3762,3879,3880,3881,3886,3887,3892,3893,3896,3897,3877],{},"Зрозуміти семантику ізольованих груп маршрутів у круглих дужках ",[3765,3882,3883],{},[3747,3884,3885],{},"(group)",", призначення файлів ",[3765,3888,3889],{},[3747,3890,3891],{},"index.tsx",", а також правила конфігурації нативного заголовка (",[3796,3894,3895],{},"Header",") та безпечних зон (",[3796,3898,3899],{},"Safe Area Insets",[3762,3901,3902,3903,3906],{},"Активувати та інтегрувати механізм статичної типізації маршрутів ",[3765,3904,3905],{},"Typed Routes"," для компіляційної верифікації шляхів навігації.",[3762,3908,3909,3910,3913],{},"Розробити автономний навчальний міні-проєкт «Довідник міст» та здійснити рефакторинг проєкту ",[3765,3911,3912],{},"Nomad"," на повноцінну навігаційну структуру з вкладками та модальною стопкою.",[3915,3916,3917,3920,3921,3924,3925,3930,3931,3933,3934,3936,3937,3939],"note",{},[3765,3918,3919],{},"Головний принцип:"," Екран в Expo Router — це не просто випадковий компонент, який рендериться за умовою в ",[3747,3922,3923],{},"switch"," або тернарному операторі. Це ",[3765,3926,3927,3928],{},"експортований за замовчуванням React-компонент у файлі всередині каталогу ",[3747,3929,3793],{},", який маршрутизатор перетворює на повноцінний вузол графа навігації. Файл ",[3747,3932,3829],{}," формує спільний каркас навколо дочірніх сегментів, тоді як навігатори ",[3747,3935,3844],{}," і ",[3747,3938,3840],{}," визначають структуру та анімацію переходу між цими екранами.",[3941,3942,3943,3946,3947,3950,3951,3954],"tip",{},[3765,3944,3945],{},"Особливості тестування навігації."," Інтерактивні прев'ю на веб-сайті (",[3747,3948,3949],{},"::react-native-preview",") виконуються в ізольованому пісочничному оточенні без підключення нативного рушія Expo Router. Тому повноцінну перевірку переходів, стеків, жестів та збереження станів слід виконувати безпосередньо в середовищі ",[3765,3952,3953],{},"Expo Go"," або нативному симуляторі\u002Fемуляторі. У тексті статті наведено вичерпні архітектурні схеми, код та аналітичні розбори.",[3743,3956,3957,3958,3821],{},"Вихідний код репозиторію проєкту Nomad: ",[3959,3960,3964],"a",{"href":3961,"rel":3962},"https:\u002F\u002Fgithub.com\u002Farakviel\u002Fnomad",[3963],"nofollow","github.com\u002Farakviel\u002Fnomad",[3966,3967],"hr",{},[3738,3969,3971],{"id":3970},"архітектурна-необхідність-виділеної-системи-навігації","Архітектурна необхідність виділеної системи навігації",[3743,3973,3974,3975,3978,3979,3982],{},"У традиційній веб-розробці зміна представлення тісно пов'язана з адресним рядком браузера (URL), об'єктом ",[3747,3976,3977],{},"window.history"," та подіями ",[3747,3980,3981],{},"popstate",". На мобільних пристроях адресний рядок відсутній, проте задачі залишаються тими самими: передбачувано відобразити потрібний екран, зберегти історію переходів та надати користувачеві можливість повернутися назад без втрати стану даних.",[3743,3984,3985],{},"Початківці часто намагаються реалізувати перемикання екранів за допомогою локального реактивного стану:",[3987,3988,3993],"pre",{"className":3989,"code":3990,"language":3991,"meta":3992,"style":3992},"language-tsx shiki shiki-themes light-plus dark-plus dark-plus","const [currentScreen, setCurrentScreen] = useState\u003C'home' | 'form'>('home');\n\nif (currentScreen === 'form') {\n  return \u003CTripFormScreen onBack={() => setCurrentScreen('home')} \u002F>;\n}\n\nreturn \u003CHomeScreen onOpenForm={() => setCurrentScreen('form')} \u002F>;\n","tsx","",[3747,3994,3995,4045,4052,4073,4124,4130,4135],{"__ignoreMap":3992},[3996,3997,4000,4004,4008,4012,4014,4017,4020,4024,4027,4031,4034,4037,4040,4042],"span",{"class":3998,"line":3999},"line",1,[3996,4001,4003],{"class":4002},"su1O8","const",[3996,4005,4007],{"class":4006},"sHH4Y"," [",[3996,4009,4011],{"class":4010},"s-QsJ","currentScreen",[3996,4013,3867],{"class":4006},[3996,4015,4016],{"class":4010},"setCurrentScreen",[3996,4018,4019],{"class":4006},"] = ",[3996,4021,4023],{"class":4022},"s8Opu","useState",[3996,4025,4026],{"class":4006},"\u003C",[3996,4028,4030],{"class":4029},"sbdoH","'home'",[3996,4032,4033],{"class":4006}," | ",[3996,4035,4036],{"class":4029},"'form'",[3996,4038,4039],{"class":4006},">(",[3996,4041,4030],{"class":4029},[3996,4043,4044],{"class":4006},");\n",[3996,4046,4048],{"class":3998,"line":4047},2,[3996,4049,4051],{"emptyLinePlaceholder":4050},true,"\n",[3996,4053,4055,4059,4062,4065,4068,4070],{"class":3998,"line":4054},3,[3996,4056,4058],{"class":4057},"s8xlr","if",[3996,4060,4061],{"class":4006}," (",[3996,4063,4011],{"class":4064},"siwwj",[3996,4066,4067],{"class":4006}," === ",[3996,4069,4036],{"class":4029},[3996,4071,4072],{"class":4006},") {\n",[3996,4074,4076,4079,4083,4087,4091,4094,4097,4101,4104,4107,4110,4112,4115,4118,4121],{"class":3998,"line":4075},4,[3996,4077,4078],{"class":4057},"  return",[3996,4080,4082],{"class":4081},"s0P7L"," \u003C",[3996,4084,4086],{"class":4085},"sN1BT","TripFormScreen",[3996,4088,4090],{"class":4089},"sa4r_"," onBack",[3996,4092,4093],{"class":4006},"=",[3996,4095,4096],{"class":4002},"{",[3996,4098,4100],{"class":4099},"sD7JJ","() ",[3996,4102,4103],{"class":4002},"=>",[3996,4105,4106],{"class":4022}," setCurrentScreen",[3996,4108,4109],{"class":4099},"(",[3996,4111,4030],{"class":4029},[3996,4113,4114],{"class":4099},")",[3996,4116,4117],{"class":4002},"}",[3996,4119,4120],{"class":4081}," \u002F>",[3996,4122,4123],{"class":4006},";\n",[3996,4125,4127],{"class":3998,"line":4126},5,[3996,4128,4129],{"class":4006},"}\n",[3996,4131,4133],{"class":3998,"line":4132},6,[3996,4134,4051],{"emptyLinePlaceholder":4050},[3996,4136,4138,4141,4143,4146,4149,4151,4153,4155,4157,4159,4161,4163,4165,4167,4169],{"class":3998,"line":4137},7,[3996,4139,4140],{"class":4057},"return",[3996,4142,4082],{"class":4081},[3996,4144,4145],{"class":4085},"HomeScreen",[3996,4147,4148],{"class":4089}," onOpenForm",[3996,4150,4093],{"class":4006},[3996,4152,4096],{"class":4002},[3996,4154,4100],{"class":4099},[3996,4156,4103],{"class":4002},[3996,4158,4106],{"class":4022},[3996,4160,4109],{"class":4099},[3996,4162,4036],{"class":4029},[3996,4164,4114],{"class":4099},[3996,4166,4117],{"class":4002},[3996,4168,4120],{"class":4081},[3996,4170,4123],{"class":4006},[3743,4172,4173],{},"Такий спрощений підхід, хоча й працює для примітивних демонстрацій із двох екранів, виявляється абсолютно нежиттєздатним у масштабованих архітектурах через низку критичних проблем:",[3759,4175,4176,4188,4202,4212],{},[3762,4177,4178,4181,4182,4184,4185,4187],{},[3765,4179,4180],{},"Руйнування життєвого циклу компонентів і втрата стану:"," Умовний рендеринг через тернарний оператор або ",[3747,4183,4058],{}," повністю розмонтовує попередній компонент (",[3747,4186,4145],{},"). При поверненні назад дерево монтується заново, що призводить до втрати положення скролу у списках, скидання тимчасових фільтрів і повторного виконання мережевих запитів.",[3762,4189,4190,4193,4194,4197,4198,4201],{},[3765,4191,4192],{},"Відсутність підтримки складних навігаційних ієрархій:"," Спроба вручну синхронізувати вкладені стопки переходів (наприклад, ",[3747,4195,4196],{},"Home -> Details -> Edit -> Confirm","), незалежні паралельні вкладки та модальні діалоги призводить до експоненційного ускладнення коду (",[3796,4199,4200],{},"State Explosion",") та появи важковловимих багів.",[3762,4203,4204,4207,4208,4211],{},[3765,4205,4206],{},"Повна втрата нативних анімацій та системних жестів:"," Ручне перемикання екранів не використовує апаратні транзиції операційної системи. Користувач втрачає плавний інерційний свайп повернення на iOS (",[3796,4209,4210],{},"Interactive Pop Gesture",") та обробку системної кнопки «Назад» на Android.",[3762,4213,4214,4217,4218,4221],{},[3765,4215,4216],{},"Неможливість обробки глибоких посилань (Deep Linking):"," Застосунок не здатний коректно запуститися за зовнішнім URL-посиланням (наприклад, ",[3747,4219,4220],{},"nomad:\u002F\u002Ftrips\u002F42"," з push-повідомлення чи браузера), оскільки відсутній шар зіставлення рядкової адреси з вузлом дерева екранів.",[3987,4223,4228],{"className":4224,"code":4226,"language":4227},[4225],"language-text","       РУЧНЕ КЕРУВАННЯ СТАНОМ                          EXPO ROUTER (FILE-BASED)\n+------------------------------------+       +-----------------------------------------+\n|  useState('home' | 'form')         |       |  app\u002F                                   |\n|  - Повна втрата стану при unmount  |  vs   |  ├── (tabs)\u002Findex.tsx  (Маршрут \"\u002F\")    |\n|  - Відсутні нативні жести\u002Fсвайпи   |       |  └── create-trip.tsx   (Маршрут \"\u002F...\") |\n|  - Неможливий Deep Linking         |       +-----------------------------------------+\n|  - Складний спагеті-код переходів  |       | • Нативна оптимізація пам'яті (Screens) |\n+------------------------------------+       | • Збереження стану та позиції скролу    |\n                                             | • Нативна підтримка Deep Linking та URL |\n                                             +-----------------------------------------+\n","text",[3747,4229,4226],{"__ignoreMap":3992},[4231,4232,4233],"plant-uml",{},[3987,4234,4238],{"className":4235,"code":4236,"language":4237,"meta":3992,"style":3992},"language-plantuml shiki shiki-themes light-plus dark-plus dark-plus","@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Архітектура мобільної навігації: Ручний стан vs Expo Router\"\n\npackage \"Антипатерн: Ручний useState\" #fee2e2 {\n  [App Component] as AC #fca5a5\n  [HomeScreen] as HS1 #fecaca\n  [FormScreen] as FS1 #fecaca\n  \n  AC -down-> HS1 : currentScreen === 'home'\n  AC -down-> FS1 : currentScreen === 'form' (Unmounts HS1!)\n  note bottom of HS1\n    - Втрата стану скролу\n    - Повторний запит до API\n    - Відсутні нативні жести\n    - Неможливий Deep Linking\n  end note\n}\n\npackage \"Expo Router (File-Based Engine)\" #dcfce7 {\n  node \"Файлова система (app\u002F)\" as FS #bbf7d0 {\n    [app\u002F(tabs)\u002Findex.tsx] as R1\n    [app\u002Fcreate-trip.tsx] as R2\n  }\n  \n  node \"Expo Router Core\" as ERC #86efac {\n    [Route Resolver & Typed AST] as RR\n    [React Navigation Container] as RNC\n  }\n  \n  node \"Нативний рівень (react-native-screens)\" as NL #4ade80 {\n    [UINavigationController (iOS)] as UI_NC\n    [FragmentTransaction (Android)] as FR_NC\n  }\n  \n  FS -down-> RR : компіляція маршрутів\n  RR -down-> RNC : серіалізація стану графа\n  RNC -down-> UI_NC : апаратні транзиції 60\u002F120 FPS\n  RNC -down-> FR_NC : апаратні транзиції 60\u002F120 FPS\n}\n@enduml\n","plantuml",[3747,4239,4240,4245,4250,4255,4259,4264,4268,4273,4279,4285,4291,4297,4303,4309,4315,4321,4327,4333,4339,4345,4350,4355,4361,4367,4373,4379,4385,4390,4396,4402,4408,4413,4418,4424,4430,4436,4441,4446,4452,4458,4464,4470,4475],{"__ignoreMap":3992},[3996,4241,4242],{"class":3998,"line":3999},[3996,4243,4244],{},"@startuml\n",[3996,4246,4247],{"class":3998,"line":4047},[3996,4248,4249],{},"skinparam style plain\n",[3996,4251,4252],{"class":3998,"line":4054},[3996,4253,4254],{},"skinparam backgroundColor #ffffff\n",[3996,4256,4257],{"class":3998,"line":4075},[3996,4258,4051],{"emptyLinePlaceholder":4050},[3996,4260,4261],{"class":3998,"line":4126},[3996,4262,4263],{},"title \"Архітектура мобільної навігації: Ручний стан vs Expo Router\"\n",[3996,4265,4266],{"class":3998,"line":4132},[3996,4267,4051],{"emptyLinePlaceholder":4050},[3996,4269,4270],{"class":3998,"line":4137},[3996,4271,4272],{},"package \"Антипатерн: Ручний useState\" #fee2e2 {\n",[3996,4274,4276],{"class":3998,"line":4275},8,[3996,4277,4278],{},"  [App Component] as AC #fca5a5\n",[3996,4280,4282],{"class":3998,"line":4281},9,[3996,4283,4284],{},"  [HomeScreen] as HS1 #fecaca\n",[3996,4286,4288],{"class":3998,"line":4287},10,[3996,4289,4290],{},"  [FormScreen] as FS1 #fecaca\n",[3996,4292,4294],{"class":3998,"line":4293},11,[3996,4295,4296],{},"  \n",[3996,4298,4300],{"class":3998,"line":4299},12,[3996,4301,4302],{},"  AC -down-> HS1 : currentScreen === 'home'\n",[3996,4304,4306],{"class":3998,"line":4305},13,[3996,4307,4308],{},"  AC -down-> FS1 : currentScreen === 'form' (Unmounts HS1!)\n",[3996,4310,4312],{"class":3998,"line":4311},14,[3996,4313,4314],{},"  note bottom of HS1\n",[3996,4316,4318],{"class":3998,"line":4317},15,[3996,4319,4320],{},"    - Втрата стану скролу\n",[3996,4322,4324],{"class":3998,"line":4323},16,[3996,4325,4326],{},"    - Повторний запит до API\n",[3996,4328,4330],{"class":3998,"line":4329},17,[3996,4331,4332],{},"    - Відсутні нативні жести\n",[3996,4334,4336],{"class":3998,"line":4335},18,[3996,4337,4338],{},"    - Неможливий Deep Linking\n",[3996,4340,4342],{"class":3998,"line":4341},19,[3996,4343,4344],{},"  end note\n",[3996,4346,4348],{"class":3998,"line":4347},20,[3996,4349,4129],{},[3996,4351,4353],{"class":3998,"line":4352},21,[3996,4354,4051],{"emptyLinePlaceholder":4050},[3996,4356,4358],{"class":3998,"line":4357},22,[3996,4359,4360],{},"package \"Expo Router (File-Based Engine)\" #dcfce7 {\n",[3996,4362,4364],{"class":3998,"line":4363},23,[3996,4365,4366],{},"  node \"Файлова система (app\u002F)\" as FS #bbf7d0 {\n",[3996,4368,4370],{"class":3998,"line":4369},24,[3996,4371,4372],{},"    [app\u002F(tabs)\u002Findex.tsx] as R1\n",[3996,4374,4376],{"class":3998,"line":4375},25,[3996,4377,4378],{},"    [app\u002Fcreate-trip.tsx] as R2\n",[3996,4380,4382],{"class":3998,"line":4381},26,[3996,4383,4384],{},"  }\n",[3996,4386,4388],{"class":3998,"line":4387},27,[3996,4389,4296],{},[3996,4391,4393],{"class":3998,"line":4392},28,[3996,4394,4395],{},"  node \"Expo Router Core\" as ERC #86efac {\n",[3996,4397,4399],{"class":3998,"line":4398},29,[3996,4400,4401],{},"    [Route Resolver & Typed AST] as RR\n",[3996,4403,4405],{"class":3998,"line":4404},30,[3996,4406,4407],{},"    [React Navigation Container] as RNC\n",[3996,4409,4411],{"class":3998,"line":4410},31,[3996,4412,4384],{},[3996,4414,4416],{"class":3998,"line":4415},32,[3996,4417,4296],{},[3996,4419,4421],{"class":3998,"line":4420},33,[3996,4422,4423],{},"  node \"Нативний рівень (react-native-screens)\" as NL #4ade80 {\n",[3996,4425,4427],{"class":3998,"line":4426},34,[3996,4428,4429],{},"    [UINavigationController (iOS)] as UI_NC\n",[3996,4431,4433],{"class":3998,"line":4432},35,[3996,4434,4435],{},"    [FragmentTransaction (Android)] as FR_NC\n",[3996,4437,4439],{"class":3998,"line":4438},36,[3996,4440,4384],{},[3996,4442,4444],{"class":3998,"line":4443},37,[3996,4445,4296],{},[3996,4447,4449],{"class":3998,"line":4448},38,[3996,4450,4451],{},"  FS -down-> RR : компіляція маршрутів\n",[3996,4453,4455],{"class":3998,"line":4454},39,[3996,4456,4457],{},"  RR -down-> RNC : серіалізація стану графа\n",[3996,4459,4461],{"class":3998,"line":4460},40,[3996,4462,4463],{},"  RNC -down-> UI_NC : апаратні транзиції 60\u002F120 FPS\n",[3996,4465,4467],{"class":3998,"line":4466},41,[3996,4468,4469],{},"  RNC -down-> FR_NC : апаратні транзиції 60\u002F120 FPS\n",[3996,4471,4473],{"class":3998,"line":4472},42,[3996,4474,4129],{},[3996,4476,4478],{"class":3998,"line":4477},43,[3996,4479,4480],{},"@enduml\n",[3801,4482,4484],{"id":4483},"рівні-абстракції-react-navigation-та-expo-router","Рівні абстракції: React Navigation та Expo Router",[3743,4486,4487,4488,4491,4492,4495],{},"Для вирішення цих викликів у спільноті React Native було створено бібліотеку ",[3765,4489,4490],{},"React Navigation"," — де-факто стандарт навігації, який забезпечує низькорівневі нативні примітиви (стековий навігатор на базі ",[3747,4493,4494],{},"react-native-screens",", нижні панелі вкладок, бокові панелі Drawer).",[3743,4497,4498,4500,4501,4504,4505,3867,4508,3867,4511,4514],{},[3765,4499,3785],{}," побудований як надбудова ",[3765,4502,4503],{},"поверх React Navigation",". Він усуває необхідність громіздкої імперативної конфігурації екранів через велетенські JS-об'єкти чи вкладені JSX-структури (",[3747,4506,4507],{},"\u003CNavigationContainer>",[3747,4509,4510],{},"\u003CStack.Navigator>",[3747,4512,4513],{},"\u003CStack.Screen>","), замінюючи її декларативним зіставленням файлової системи. Фреймворк автоматично генерує граф переходів, серіалізує стан навігації в URL-подібну структуру та надає повну підтримку універсального рендерингу (iOS, Android, Web).",[3743,4516,4517,4518,4520],{},"У рамках нашого курсу основним стандартом обрано саме ",[3765,4519,3785],{},", оскільки проєкт Nomad побудований на сучасному стеку Expo, а файлова маршрутизація є офіційним вектором розвитку всієї екосистеми React Native.",[3966,4522],{},[3738,4524,4526],{"id":4525},"концептуальний-місток-веб-орієнтований-react-проти-expo-router","Концептуальний місток: Веб-орієнтований React проти Expo Router",[3743,4528,4529],{},"Для спеціалістів, які мають досвід роботи з веб-версією React (зокрема з React Router DOM або Next.js), концепції Expo Router будуть інтуїтивно близькими. Проте через специфіку функціонування мобільних операційних систем існують важливі архітектурні відмінності:",[4531,4532,4533,4550],"table",{},[4534,4535,4536],"thead",{},[4537,4538,4539,4544,4547],"tr",{},[4540,4541,4543],"th",{"align":4542},"left","Концепція у Web (Next.js \u002F React Router)",[4540,4545,4546],{"align":4542},"Відповідник у Expo Router",[4540,4548,4549],{"align":4542},"Інженерний коментар та семантика",[4551,4552,4553,4574,4591,4617,4635,4651,4665],"tbody",{},[4537,4554,4555,4562,4571],{},[4556,4557,4558,4559],"td",{"align":4542},"Браузерний URL ",[3747,4560,4561],{},"\u002Fabout",[4556,4563,4564,4565,4567,4568,4114],{"align":4542},"Маршрут ",[3747,4566,4561],{}," (файл ",[3747,4569,4570],{},"app\u002Fabout.tsx",[4556,4572,4573],{"align":4542},"Шлях у файловій системі визначає точку входу в застосунок.",[4537,4575,4576,4582,4588],{},[4556,4577,4578,4579,4581],{"align":4542},"Каталог сторінок ",[3747,4580,3793],{}," у Next.js",[4556,4583,4584,4585,4587],{"align":4542},"Каталог ",[3747,4586,3793],{}," у корені проєкту",[4556,4589,4590],{"align":4542},"Концепція File-Based Routing: файли автоматично стають маршрутами.",[4537,4592,4593,4604,4614],{},[4556,4594,4595,4596,4599,4600,4603],{"align":4542},"Тег ",[3747,4597,4598],{},"\u003Ca href=\"...\">"," або ",[3747,4601,4602],{},"\u003CLink>"," з Next.js",[4556,4605,4606,4607,4610,4611],{"align":4542},"Компонент ",[3747,4608,4609],{},"\u003CLink href=\"...\">"," з ",[3747,4612,4613],{},"expo-router",[4556,4615,4616],{"align":4542},"Декларативний механізм навігації з підтримкою доступності (Accessibility).",[4537,4618,4619,4625,4632],{},[4556,4620,4621,4622],{"align":4542},"Метод ",[3747,4623,4624],{},"router.push('\u002Fpath')",[4556,4626,4621,4627,4610,4629],{"align":4542},[3747,4628,4624],{},[3747,4630,4631],{},"useRouter()",[4556,4633,4634],{"align":4542},"Імперативний перехід, що виконується в обробниках подій та колбеках.",[4537,4636,4637,4644,4648],{},[4556,4638,4639,4640,4643],{"align":4542},"Файл макета ",[3747,4641,4642],{},"layout.tsx"," (Next.js)",[4556,4645,4639,4646],{"align":4542},[3747,4647,3829],{},[4556,4649,4650],{"align":4542},"Компонентна оболонка сегмента; зберігає стан під час перемикання дітей.",[4537,4652,4653,4656,4662],{},[4556,4654,4655],{"align":4542},"Вкладені макети (Nested Layouts)",[4556,4657,4658,4659,4661],{"align":4542},"Вкладені ",[3747,4660,3829],{}," у піддиректоріях",[4556,4663,4664],{"align":4542},"Дозволяє комбінувати різні типи навігаторів (наприклад, Tabs усередині Stack).",[4537,4666,4667,4670,4680],{},[4556,4668,4669],{"align":4542},"Query\u002FPath-параметри URL",[4556,4671,4672,4673,4676,4677],{"align":4542},"Хуки ",[3747,4674,4675],{},"useLocalSearchParams"," та ",[3747,4678,4679],{},"useGlobalSearchParams",[4556,4681,4682],{"align":4542},"Передача динамічних аргументів між екранами.",[4684,4685,4686,4689,4690,4693,4694,4697,4698,3867,4700,4703,4704,4706,4707,3821],"warning",{},[3765,4687,4688],{},"Критичне застереження."," Пакет ",[3747,4691,4692],{},"react-router-dom",", призначений для веб-браузерів, ",[3765,4695,4696],{},"категорично не використовується"," в розробці під React Native. Веб-роутери маніпулюють DOM-деревом (",[3747,4699,3977],{},[3747,4701,4702],{},"document.location","), які відсутні в нативному середовищі. Навігація в мобільних додатках здійснюється через пакет ",[3747,4705,4613],{},", який транслює дії в нативні команди мобільної ОС через бібліотеку ",[3747,4708,4494],{},[3801,4710,4712],{"id":4711},"переваги-підходу-файл-як-маршрут-file-as-a-route","Переваги підходу «Файл як маршрут» (File-as-a-Route)",[3743,4714,4715],{},"Організація структури застосунку на основі файлового роутингу надає суттєві переваги для масштабування кодової бази та командної взаємодії:",[3759,4717,4718,4727,4733],{},[3762,4719,4720,4723,4724,4726],{},[3765,4721,4722],{},"Самодокументована архітектура:"," Дерево каталогів усередині ",[3747,4725,3793],{}," є наочною ментальною картою застосунку. Будь-який розробник одразу розуміє, які екрани існують у продукті та як вони згруповані.",[3762,4728,4729,4732],{},[3765,4730,4731],{},"Відсутність централізованого монолітного реєстру:"," Зникає потреба підтримувати велетенські файли конфігурації навігації, де вручну реєструються сотні екранів та зв'язків між ними (що в командах часто ставало джерелом конфліктів злиття у системі контролю версій Git).",[3762,4734,4735,4738,4739,4742],{},[3765,4736,4737],{},"Природна уніфікація Deep Linking:"," Оскільки кожен екран автоматично прив'язаний до статичного або динамічного рядкового шляху, конфігурація вхідних посилань (наприклад, ",[3747,4740,4741],{},"myapp:\u002F\u002Ftrip\u002F123",") починає працювати автоматично без ручного написання складних регулярних виразів для парсингу URL.",[3743,4744,4745],{},"Водночас необхідно враховувати базові правила файлового роутера:",[3806,4747,4748,4757,4763],{},[3762,4749,4750,4751,4753,4754,4756],{},"Не кожен файл у директорії ",[3747,4752,3793],{}," є кінцевим екраном: файли з префіксом підкреслення (зокрема ",[3747,4755,3829],{},") виконують службову роль макетів-оболонок.",[3762,4758,4759,4760,4762],{},"Назви директорій у круглих дужках ",[3747,4761,3885],{}," є логічними групами й не створюють сегментів у фінальному URL.",[3762,4764,4765],{},"Розробник зобов'язаний явно вказувати тип навігаційного контейнера для кожного рівня (Stack чи Tabs) та конфігурувати заголовки й безпечні зони.",[3743,4767,4768],{},[4769,4770],"img",{"alt":4771,"className":4772,"src":4774},"Файл на диску → маршрут у застосунку",[4773],"diagram-img","\u002Fimages\u002Freact-native\u002Fexpo-router-basics\u002F01.svg",[3966,4776],{},[3738,4778,4780,4781,4676,4783],{"id":4779},"фізична-організація-проєкту-сегрегація-директорій-app-та-src","Фізична організація проєкту: Сегрегація директорій ",[3747,4782,3793],{},[3747,4784,3820],{},[3743,4786,4787],{},"У структурі архітектури нашого навчального курсу встановлено суворе розділення відповідальностей між двома ключовими каталогами:",[3987,4789,4792],{"className":4790,"code":4791,"language":4227},[4225],"                            АРХІТЕКТУРНА СЕГРЕГАЦІЯ\n+---------------------------------------+   +---------------------------------------+\n|                 app\u002F                  |   |                 src\u002F                  |\n|        (Навігаційний рівень)          |   |       (Рівень бізнес-логіки)          |\n+---------------------------------------+   +---------------------------------------+\n| • Маршрутизація та точки входу        |   | • Доменні сутності (Features)         |\n| • Конфігурація нативних макетів       |   | • UI-компоненти та дизайн-система     |\n| • _layout.tsx (Stack, Tabs)           |   | • Стан, хуки, схеми валідації         |\n| • «Тонкі контролери» (Thin Screens)   |   | • Чисті сервіси та утиліти            |\n+---------------------------------------+   +---------------------------------------+\n                   \\                                     \u002F\n                    \\--- Імпортує необхідні сутності ---\u002F\n",[3747,4793,4791],{"__ignoreMap":3992},[3806,4795,4796,4817],{},[3762,4797,4798,4804,4805,4807,4808,4811,4812,4814,4815,3821],{},[3765,4799,4800,4801,4803],{},"Директорія ",[3747,4802,3793],{}," — шар навігації та макетів:","\nМістить виключно файли маршрутів і файли макетів (",[3747,4806,3829],{},"). Компоненти, розташовані тут, повинні залишатися ",[3765,4809,4810],{},"«тонкими екранами» (Thin Screens)",". Їхнє єдине завдання — отримати навігаційні параметри (наприклад, через хук ",[3747,4813,4675],{},"), підключити відповідні доменні хуки або сервіси та змонтувати готові складені компоненти з шару ",[3747,4816,3820],{},[3762,4818,4819,4824,4825,4828,4829,4832,4833,4836,4837,4839],{},[3765,4820,4800,4821,4823],{},[3747,4822,3820],{}," — шар бізнес-логіки, доменних фіч та дизайн-системи:","\nМістить ізольовані модулі функціоналу (",[3747,4826,4827],{},"features\u002Ftrips","), спільні UI-компоненти (",[3747,4830,4831],{},"shared\u002Fui","), конфігурацію теми (",[3747,4834,4835],{},"shared\u002Ftheme",") та клієнти взаємодії з даними. Цей шар нічого не знає про файлову структуру ",[3747,4838,3793],{},", що забезпечує високий рівень повторного використання коду та спрощує модульне тестування.",[3743,4841,4842,4843,4845,4846,4849],{},"Якщо розміщувати важку бізнес-логіку, стан форм чи складні алгоритми безпосередньо у файлах ",[3747,4844,3793],{},", екрани швидко перетворюються на важкі антипатерні модулі (",[3796,4847,4848],{},"God Objects","), які неможливо повторно перевикористати або протестувати в ізоляції.",[3743,4851,4852],{},"Структура каталогу проєкту Nomad після впровадження повноцінної навігації:",[3987,4854,4857],{"className":4855,"code":4856,"language":4227,"meta":3992},[4225],"app\u002F\n  _layout.tsx           ← Кореневий макет: глобальні провайдери + головний Stack\n  (tabs)\u002F\n    _layout.tsx         ← Навігатор нижніх вкладок (Tabs Layout)\n    index.tsx           ← Маршрут \"\u002F\" (Головна вкладка «Поїздки»)\n    places.tsx          ← Маршрут \"\u002Fplaces\" (Вкладка «Місця»)\n    about.tsx           ← Маршрут \"\u002Fabout\" (Вкладка «Ще»)\n  create-trip.tsx       ← Маршрут \"\u002Fcreate-trip\" (Екран у Stack поверх вкладок)\nsrc\u002F\n  features\u002Ftrips\u002F       ← Доменна бізнес-логіка поїздок (моделі, форми, картки)\n  shared\u002F               ← Спільні компоненти UI, токени теми та утиліти\n",[3747,4858,4856],{"__ignoreMap":3992},[4231,4860,4861],{},[3987,4862,4864],{"className":4235,"code":4863,"language":4237,"meta":3992,"style":3992},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Архітектурна сегрегація: app\u002F (Routing) vs src\u002F (Domain Core)\"\n\npackage \"app\u002F — Навігаційний рівень (Thin Controllers)\" #e0f2fe {\n  class \"_layout.tsx (Root)\" as RL #bae6fd {\n    + ThemeProvider\n    + TripsProvider\n    + Stack Navigator\n  }\n  \n  package \"(tabs)\u002F\" as TABS_DIR #bae6fd {\n    class \"_layout.tsx (Tabs)\" as TL #7dd3fc\n    class \"index.tsx (\u002F) \" as T_IDX #7dd3fc\n    class \"places.tsx (\u002Fplaces)\" as T_PLC #7dd3fc\n    class \"about.tsx (\u002Fabout)\" as T_ABT #7dd3fc\n  }\n  \n  class \"create-trip.tsx (\u002Fcreate-trip)\" as CRT #7dd3fc\n}\n\npackage \"src\u002F — Шар бізнес-логіки та дизайн-системи\" #fef3c7 {\n  package \"features\u002Ftrips\" as FT #fde68a {\n    class \"TripsProvider & useTrips\" as TP #fcd34d\n    class \"TripList, TripCard\" as TC #fcd34d\n    class \"TripForm & Schema\" as TF #fcd34d\n  }\n  \n  package \"shared\u002F\" as SH #fde68a {\n    class \"ThemeProvider & useTheme\" as TH #fcd34d\n    class \"UI Kit (Button, Card, Input)\" as UI #fcd34d\n    class \"Theme Tokens (colors, spacing)\" as TT #fcd34d\n  }\n}\n\nRL -down-> TH : монтує провайдер\nRL -down-> TP : монтує провайдер\nT_IDX -down-> TC : рендерить список поїздок\nCRT -down-> TF : рендерить форму створення\nT_PLC -down-> UI : використовує компоненти\n\nnote right of RL\n  Правило чистої архітектури:\n  app\u002F імпортує сутності з src\u002F\n  src\u002F НІКОЛИ не імпортує з app\u002F\nend note\n@enduml\n",[3747,4865,4866,4870,4874,4878,4882,4887,4891,4896,4901,4906,4911,4916,4920,4924,4929,4934,4939,4944,4949,4953,4957,4962,4966,4970,4975,4980,4985,4990,4995,4999,5003,5008,5013,5018,5023,5027,5031,5035,5040,5045,5050,5055,5060,5064,5070,5076,5082,5088,5094],{"__ignoreMap":3992},[3996,4867,4868],{"class":3998,"line":3999},[3996,4869,4244],{},[3996,4871,4872],{"class":3998,"line":4047},[3996,4873,4249],{},[3996,4875,4876],{"class":3998,"line":4054},[3996,4877,4254],{},[3996,4879,4880],{"class":3998,"line":4075},[3996,4881,4051],{"emptyLinePlaceholder":4050},[3996,4883,4884],{"class":3998,"line":4126},[3996,4885,4886],{},"title \"Архітектурна сегрегація: app\u002F (Routing) vs src\u002F (Domain Core)\"\n",[3996,4888,4889],{"class":3998,"line":4132},[3996,4890,4051],{"emptyLinePlaceholder":4050},[3996,4892,4893],{"class":3998,"line":4137},[3996,4894,4895],{},"package \"app\u002F — Навігаційний рівень (Thin Controllers)\" #e0f2fe {\n",[3996,4897,4898],{"class":3998,"line":4275},[3996,4899,4900],{},"  class \"_layout.tsx (Root)\" as RL #bae6fd {\n",[3996,4902,4903],{"class":3998,"line":4281},[3996,4904,4905],{},"    + ThemeProvider\n",[3996,4907,4908],{"class":3998,"line":4287},[3996,4909,4910],{},"    + TripsProvider\n",[3996,4912,4913],{"class":3998,"line":4293},[3996,4914,4915],{},"    + Stack Navigator\n",[3996,4917,4918],{"class":3998,"line":4299},[3996,4919,4384],{},[3996,4921,4922],{"class":3998,"line":4305},[3996,4923,4296],{},[3996,4925,4926],{"class":3998,"line":4311},[3996,4927,4928],{},"  package \"(tabs)\u002F\" as TABS_DIR #bae6fd {\n",[3996,4930,4931],{"class":3998,"line":4317},[3996,4932,4933],{},"    class \"_layout.tsx (Tabs)\" as TL #7dd3fc\n",[3996,4935,4936],{"class":3998,"line":4323},[3996,4937,4938],{},"    class \"index.tsx (\u002F) \" as T_IDX #7dd3fc\n",[3996,4940,4941],{"class":3998,"line":4329},[3996,4942,4943],{},"    class \"places.tsx (\u002Fplaces)\" as T_PLC #7dd3fc\n",[3996,4945,4946],{"class":3998,"line":4335},[3996,4947,4948],{},"    class \"about.tsx (\u002Fabout)\" as T_ABT #7dd3fc\n",[3996,4950,4951],{"class":3998,"line":4341},[3996,4952,4384],{},[3996,4954,4955],{"class":3998,"line":4347},[3996,4956,4296],{},[3996,4958,4959],{"class":3998,"line":4352},[3996,4960,4961],{},"  class \"create-trip.tsx (\u002Fcreate-trip)\" as CRT #7dd3fc\n",[3996,4963,4964],{"class":3998,"line":4357},[3996,4965,4129],{},[3996,4967,4968],{"class":3998,"line":4363},[3996,4969,4051],{"emptyLinePlaceholder":4050},[3996,4971,4972],{"class":3998,"line":4369},[3996,4973,4974],{},"package \"src\u002F — Шар бізнес-логіки та дизайн-системи\" #fef3c7 {\n",[3996,4976,4977],{"class":3998,"line":4375},[3996,4978,4979],{},"  package \"features\u002Ftrips\" as FT #fde68a {\n",[3996,4981,4982],{"class":3998,"line":4381},[3996,4983,4984],{},"    class \"TripsProvider & useTrips\" as TP #fcd34d\n",[3996,4986,4987],{"class":3998,"line":4387},[3996,4988,4989],{},"    class \"TripList, TripCard\" as TC #fcd34d\n",[3996,4991,4992],{"class":3998,"line":4392},[3996,4993,4994],{},"    class \"TripForm & Schema\" as TF #fcd34d\n",[3996,4996,4997],{"class":3998,"line":4398},[3996,4998,4384],{},[3996,5000,5001],{"class":3998,"line":4404},[3996,5002,4296],{},[3996,5004,5005],{"class":3998,"line":4410},[3996,5006,5007],{},"  package \"shared\u002F\" as SH #fde68a {\n",[3996,5009,5010],{"class":3998,"line":4415},[3996,5011,5012],{},"    class \"ThemeProvider & useTheme\" as TH #fcd34d\n",[3996,5014,5015],{"class":3998,"line":4420},[3996,5016,5017],{},"    class \"UI Kit (Button, Card, Input)\" as UI #fcd34d\n",[3996,5019,5020],{"class":3998,"line":4426},[3996,5021,5022],{},"    class \"Theme Tokens (colors, spacing)\" as TT #fcd34d\n",[3996,5024,5025],{"class":3998,"line":4432},[3996,5026,4384],{},[3996,5028,5029],{"class":3998,"line":4438},[3996,5030,4129],{},[3996,5032,5033],{"class":3998,"line":4443},[3996,5034,4051],{"emptyLinePlaceholder":4050},[3996,5036,5037],{"class":3998,"line":4448},[3996,5038,5039],{},"RL -down-> TH : монтує провайдер\n",[3996,5041,5042],{"class":3998,"line":4454},[3996,5043,5044],{},"RL -down-> TP : монтує провайдер\n",[3996,5046,5047],{"class":3998,"line":4460},[3996,5048,5049],{},"T_IDX -down-> TC : рендерить список поїздок\n",[3996,5051,5052],{"class":3998,"line":4466},[3996,5053,5054],{},"CRT -down-> TF : рендерить форму створення\n",[3996,5056,5057],{"class":3998,"line":4472},[3996,5058,5059],{},"T_PLC -down-> UI : використовує компоненти\n",[3996,5061,5062],{"class":3998,"line":4477},[3996,5063,4051],{"emptyLinePlaceholder":4050},[3996,5065,5067],{"class":3998,"line":5066},44,[3996,5068,5069],{},"note right of RL\n",[3996,5071,5073],{"class":3998,"line":5072},45,[3996,5074,5075],{},"  Правило чистої архітектури:\n",[3996,5077,5079],{"class":3998,"line":5078},46,[3996,5080,5081],{},"  app\u002F імпортує сутності з src\u002F\n",[3996,5083,5085],{"class":3998,"line":5084},47,[3996,5086,5087],{},"  src\u002F НІКОЛИ не імпортує з app\u002F\n",[3996,5089,5091],{"class":3998,"line":5090},48,[3996,5092,5093],{},"end note\n",[3996,5095,5097],{"class":3998,"line":5096},49,[3996,5098,4480],{},[3966,5100],{},[3738,5102,5104],{"id":5103},"семантичні-одиниці-маршрут-route-та-екран-screen","Семантичні одиниці: Маршрут (Route) та Екран (Screen)",[3743,5106,5107],{},"Для побудови коректної ментальної моделі необхідно чітко розрізняти дві базові абстракції:",[3759,5109,5110,5130],{},[3762,5111,5112,5115,5116,3867,5119,4599,5122,5125,5126,5129],{},[3765,5113,5114],{},"Маршрут (Route):","\nЦе абстрактна логічна адреса (ідентифікатор) у навіційній системі застосунку, наприклад ",[3747,5117,5118],{},"\u002F",[3747,5120,5121],{},"\u002Fplaces",[3747,5123,5124],{},"\u002Fcreate-trip",". Маршрут визначає, ",[3796,5127,5128],{},"куди"," спрямовується навігаційний потік і як цей стан серіалізується для механізмів Deep Linking або історії переходів.",[3762,5131,5132,5135,5136,5139,5140,3821],{},[3765,5133,5134],{},"Екран (Screen):","\nЦе конкретний візуальний React-компонент, який монтується та відмальовується у вікні перегляду, коли відповідний маршрут стає активним. У системі Expo Router екран завжди декларується як експорт за замовчуванням (",[3747,5137,5138],{},"export default function Screen()",") із відповідного файлу в ",[3747,5141,3793],{},[3743,5143,5144],{},"Хоча на мобільних платформах користувач не взаємодіє з текстовим рядком URL напряму (на відміну від веб-версії, де URL синхронізується з адресним рядком браузера), уся навігаційна підсистема функціонує за тими самими принципами просторової адресації.",[3966,5146],{},[3738,5148,5150,5152],{"id":5149},"_layouttsx-декларативна-оболонка-та-межа-сегмента",[3747,5151,3829],{}," — Декларативна оболонка та межа сегмента",[3743,5154,5155,5156,5160,5161,5163],{},"Файл з конвенційною назвою ",[3765,5157,5158],{},[3747,5159,3829],{}," є ключовим будівельним блоком Expo Router. Він розміщується в корені директорії ",[3747,5162,3793],{}," або в будь-якій її піддиректорії.",[3743,5165,5166,5167,5169,5170,5173,5174,5177],{},"На відміну від звичайних файлів, ",[3747,5168,3829],{}," ",[3765,5171,5172],{},"ніколи не стає самостійною кінцевою сторінкою в навігації",". Це постійний компонент-обгортка (",[3796,5175,5176],{},"Layout Wrapper","), який обрамляє всі маршрути поточної директорії та її підкаталогів.",[3987,5179,5182],{"className":5180,"code":5181,"language":4227},[4225],"                           АРХІТЕКТУРА МАКЕТІВ\n+-------------------------------------------------------------------------+\n| _layout.tsx (Кореневий макет: ThemeProvider + TripsProvider + Stack)    |\n|                                                                         |\n|  +-------------------------------------------------------------------+  |\n|  | (tabs)\u002F_layout.tsx (Вкладений макет: Tabs Navigator)              |  |\n|  |                                                                   |  |\n|  |  [index.tsx (Поїздки)]  [places.tsx (Місця)]  [about.tsx (Ще)]    |  |\n|  +-------------------------------------------------------------------+  |\n|                                                                         |\n|  +-------------------------------------------------------------------+  |\n|  | create-trip.tsx (Stack Screen поверх панелі вкладок)              |  |\n|  +-------------------------------------------------------------------+  |\n+-------------------------------------------------------------------------+\n",[3747,5183,5181],{"__ignoreMap":3992},[3801,5185,5187,5188,5191],{"id":5186},"основні-інженерні-обовязки-кореневого-макета-app_layouttsx","Основні інженерні обов'язки кореневого макета (",[3747,5189,5190],{},"app\u002F_layout.tsx","):",[3759,5193,5194,5208,5217],{},[3762,5195,5196,5199,5200,5203,5204,5207],{},[3765,5197,5198],{},"Ініціалізація глобальних провайдерів стану:"," Підключення контекстів теми (",[3747,5201,5202],{},"ThemeProvider","), глобальних доменних сховищ (",[3747,5205,5206],{},"TripsProvider","), клієнтів кешування даних чи авторизації.",[3762,5209,5210,5213,5214,5216],{},[3765,5211,5212],{},"Конфігурація кореневого навігаційного контейнера:"," Декларація типу головного навігатора застосунку (найчастіше це кореневий ",[3747,5215,3844],{},", який керує переходами між основними розділами та модальними вікнами).",[3762,5218,5219,5222,5223,5226,5227,3877],{},[3765,5220,5221],{},"Управління системними елементами ОС:"," Конфігурація нативного статус-бара (",[3747,5224,5225],{},"StatusBar","), глобальних фонових кольорів вікна та обробка нативних екранів завантаження (",[3796,5228,5229],{},"Splash Screen",[3801,5231,5233],{"id":5232},"життєвий-цикл-макета-та-збереження-стану","Життєвий цикл макета та збереження стану",[3743,5235,5236,5237,5239,5240,5242,5243,5245,5246,5169,5248,3821],{},"Найважливіша перевага ",[3747,5238,3829],{}," полягає в його персистентності. Коли користувач здійснює навігацію між дочірніми маршрутами (наприклад, переходить із головного екрана ",[3747,5241,5118],{}," на форму ",[3747,5244,5124],{},"), сам компонент ",[3747,5247,3829],{},[3765,5249,5250],{},"не розмонтовується",[3743,5252,5253],{},"Це гарантує, що:",[3806,5255,5256,5259],{},[3762,5257,5258],{},"Усі вкладені React-провайдери зберігають свій актуальний стан у пам'яті (тема оформлення, закешовані списки та дані авторизації не ініціалізуються повторно).",[3762,5260,5261],{},"Не відбувається зайвих повторних рендерів глобальних підсистем застосунку.",[3743,5263,5264],{},[4769,5265],{"alt":5266,"className":5267,"src":5268},"Layout як постійна оболонка навколо дочірніх маршрутів",[4773],"\u002Fimages\u002Freact-native\u002Fexpo-router-basics\u002F03.svg",[4231,5270,5271],{},[3987,5272,5274],{"className":4235,"code":5273,"language":4237,"meta":3992,"style":3992},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Ієрархія макетів _layout.tsx та збереження стану контекстів\"\n\nrectangle \"app\u002F_layout.tsx (Root Layout — Завжди змонтований)\" as ROOT #dbeafe {\n  rectangle \"ThemeProvider\" as TP #bfdbfe {\n    rectangle \"TripsProvider\" as TRP #93c5fd {\n      rectangle \"Root \u003CStack screenOptions={...}>\" as RS #60a5fa {\n        \n        rectangle \"app\u002F(tabs)\u002F_layout.tsx (Tabs Layout)\" as TL #e9d5ff {\n          rectangle \"\u003CTabs screenOptions={...}>\" as TABS_NAV #d8b4fe {\n            rectangle \"app\u002F(tabs)\u002Findex.tsx\\n[Екран Поїздки]\" as S_TRIPS #c084fc\n            rectangle \"app\u002F(tabs)\u002Fplaces.tsx\\n[Екран Місця]\" as S_PLACES #c084fc\n            rectangle \"app\u002F(tabs)\u002Fabout.tsx\\n[Екран Ще]\" as S_ABOUT #c084fc\n          }\n        }\n        \n        rectangle \"app\u002Fcreate-trip.tsx\\n[Екран форми створення]\" as S_CREATE #fca5a5\n      }\n    }\n  }\n}\n\nS_TRIPS .right.> S_CREATE : router.push('\u002Fcreate-trip')\\n(Stack push)\nS_CREATE .left.> S_TRIPS : router.back()\\n(Stack pop)\n\nnote bottom of TL\n  Tabs Layout зберігає локальний стан\n  та позицію скролу між вкладками\nend note\n\nnote bottom of ROOT\n  Провайдери стану не розмонтовуються\n  при переході між будь-якими екранами\nend note\n@enduml\n",[3747,5275,5276,5280,5284,5288,5292,5297,5301,5306,5311,5316,5321,5326,5331,5336,5341,5346,5351,5356,5361,5365,5370,5375,5380,5384,5388,5392,5397,5402,5406,5411,5416,5421,5425,5429,5434,5439,5444,5448],{"__ignoreMap":3992},[3996,5277,5278],{"class":3998,"line":3999},[3996,5279,4244],{},[3996,5281,5282],{"class":3998,"line":4047},[3996,5283,4249],{},[3996,5285,5286],{"class":3998,"line":4054},[3996,5287,4254],{},[3996,5289,5290],{"class":3998,"line":4075},[3996,5291,4051],{"emptyLinePlaceholder":4050},[3996,5293,5294],{"class":3998,"line":4126},[3996,5295,5296],{},"title \"Ієрархія макетів _layout.tsx та збереження стану контекстів\"\n",[3996,5298,5299],{"class":3998,"line":4132},[3996,5300,4051],{"emptyLinePlaceholder":4050},[3996,5302,5303],{"class":3998,"line":4137},[3996,5304,5305],{},"rectangle \"app\u002F_layout.tsx (Root Layout — Завжди змонтований)\" as ROOT #dbeafe {\n",[3996,5307,5308],{"class":3998,"line":4275},[3996,5309,5310],{},"  rectangle \"ThemeProvider\" as TP #bfdbfe {\n",[3996,5312,5313],{"class":3998,"line":4281},[3996,5314,5315],{},"    rectangle \"TripsProvider\" as TRP #93c5fd {\n",[3996,5317,5318],{"class":3998,"line":4287},[3996,5319,5320],{},"      rectangle \"Root \u003CStack screenOptions={...}>\" as RS #60a5fa {\n",[3996,5322,5323],{"class":3998,"line":4293},[3996,5324,5325],{},"        \n",[3996,5327,5328],{"class":3998,"line":4299},[3996,5329,5330],{},"        rectangle \"app\u002F(tabs)\u002F_layout.tsx (Tabs Layout)\" as TL #e9d5ff {\n",[3996,5332,5333],{"class":3998,"line":4305},[3996,5334,5335],{},"          rectangle \"\u003CTabs screenOptions={...}>\" as TABS_NAV #d8b4fe {\n",[3996,5337,5338],{"class":3998,"line":4311},[3996,5339,5340],{},"            rectangle \"app\u002F(tabs)\u002Findex.tsx\\n[Екран Поїздки]\" as S_TRIPS #c084fc\n",[3996,5342,5343],{"class":3998,"line":4317},[3996,5344,5345],{},"            rectangle \"app\u002F(tabs)\u002Fplaces.tsx\\n[Екран Місця]\" as S_PLACES #c084fc\n",[3996,5347,5348],{"class":3998,"line":4323},[3996,5349,5350],{},"            rectangle \"app\u002F(tabs)\u002Fabout.tsx\\n[Екран Ще]\" as S_ABOUT #c084fc\n",[3996,5352,5353],{"class":3998,"line":4329},[3996,5354,5355],{},"          }\n",[3996,5357,5358],{"class":3998,"line":4335},[3996,5359,5360],{},"        }\n",[3996,5362,5363],{"class":3998,"line":4341},[3996,5364,5325],{},[3996,5366,5367],{"class":3998,"line":4347},[3996,5368,5369],{},"        rectangle \"app\u002Fcreate-trip.tsx\\n[Екран форми створення]\" as S_CREATE #fca5a5\n",[3996,5371,5372],{"class":3998,"line":4352},[3996,5373,5374],{},"      }\n",[3996,5376,5377],{"class":3998,"line":4357},[3996,5378,5379],{},"    }\n",[3996,5381,5382],{"class":3998,"line":4363},[3996,5383,4384],{},[3996,5385,5386],{"class":3998,"line":4369},[3996,5387,4129],{},[3996,5389,5390],{"class":3998,"line":4375},[3996,5391,4051],{"emptyLinePlaceholder":4050},[3996,5393,5394],{"class":3998,"line":4381},[3996,5395,5396],{},"S_TRIPS .right.> S_CREATE : router.push('\u002Fcreate-trip')\\n(Stack push)\n",[3996,5398,5399],{"class":3998,"line":4387},[3996,5400,5401],{},"S_CREATE .left.> S_TRIPS : router.back()\\n(Stack pop)\n",[3996,5403,5404],{"class":3998,"line":4392},[3996,5405,4051],{"emptyLinePlaceholder":4050},[3996,5407,5408],{"class":3998,"line":4398},[3996,5409,5410],{},"note bottom of TL\n",[3996,5412,5413],{"class":3998,"line":4404},[3996,5414,5415],{},"  Tabs Layout зберігає локальний стан\n",[3996,5417,5418],{"class":3998,"line":4410},[3996,5419,5420],{},"  та позицію скролу між вкладками\n",[3996,5422,5423],{"class":3998,"line":4415},[3996,5424,5093],{},[3996,5426,5427],{"class":3998,"line":4420},[3996,5428,4051],{"emptyLinePlaceholder":4050},[3996,5430,5431],{"class":3998,"line":4426},[3996,5432,5433],{},"note bottom of ROOT\n",[3996,5435,5436],{"class":3998,"line":4432},[3996,5437,5438],{},"  Провайдери стану не розмонтовуються\n",[3996,5440,5441],{"class":3998,"line":4438},[3996,5442,5443],{},"  при переході між будь-якими екранами\n",[3996,5445,5446],{"class":3998,"line":4443},[3996,5447,5093],{},[3996,5449,5450],{"class":3998,"line":4448},[3996,5451,4480],{},[5453,5454,5455,5467,5476],"field-group",{},[5456,5457,5459,5460,4599,5463,5466],"field",{"name":3829,"type":5458},"спеціальний файл-макет","Декларативна оболонка сегмента файлової системи. Префікс нижнього підкреслення є конвенцією Expo Router, що виключає файл зі списку доступних публічних маршрутів. Тіло компонента зазвичай повертає навігатор (",[3747,5461,5462],{},"\u003CStack \u002F>",[3747,5464,5465],{},"\u003CTabs \u002F>","), передаючи спільні опції всім дочірнім екранам.",[5456,5468,5471,5472,5475],{"name":5469,"type":5470},"Slot","компонент виведення дочірніх маршрутів","Базовий примітив Expo Router (",[3747,5473,5474],{},"import { Slot } from 'expo-router'","), що слугує геометричним місцем рендерингу активного дочірнього маршруту сегмента, якщо розробник будує кастомний макет без використання вбудованих нативних контейнерів Stack або Tabs.",[5456,5477,5480,5481,5484],{"name":5478,"type":5479},"screenOptions","об’єкт або функція конфігурації","Універсальний словник параметрів за замовчуванням для всіх екранів даного навігатора. Дозволяє централізовано визначити видимість заголовків (",[3747,5482,5483],{},"headerShown","), палітру кольорів навігаційної смуги, анімаційні переходи та нативні стилі тексту.",[3801,5486,5488],{"id":5487},"приклад-конфігурації-кореневого-макета","Приклад конфігурації кореневого макета",[3743,5490,5491],{},"У наведеному лістингу продемонстровано архітектурний патерн правильного розташування глобальних провайдерів навколо стекового навігатора:",[3987,5493,5495],{"className":3989,"code":5494,"language":3991,"meta":3992,"style":3992},"import { Stack } from 'expo-router';\nimport { StatusBar } from 'expo-status-bar';\nimport { TripsProvider } from '@\u002Ffeatures\u002Ftrips';\nimport { ThemeProvider, useTheme } from '@\u002Fshared\u002Ftheme';\n\nfunction RootNavigator() {\n  const { colors, scheme } = useTheme();\n\n  return (\n    \u003C>\n      \u003CStatusBar style={scheme === 'dark' ? 'light' : 'dark'} \u002F>\n      \u003CStack\n        screenOptions={{\n          headerStyle: { backgroundColor: colors.background },\n          headerTintColor: colors.primary,\n          headerTitleStyle: { color: colors.text, fontWeight: '600' },\n          contentStyle: { backgroundColor: colors.background },\n        }}\n      >\n        {\u002F* Група вкладок: заголовок кореневого стека приховується *\u002F}\n        \u003CStack.Screen name=\"(tabs)\" options={{ headerShown: false }} \u002F>\n        {\u002F* Окремий екран форми: заголовок стека активний з кнопкою повернення *\u002F}\n        \u003CStack.Screen\n          name=\"create-trip\"\n          options={{\n            title: 'Нова поїздка',\n            headerShown: true,\n            presentation: 'card',\n            headerBackTitle: 'Назад',\n          }}\n        \u002F>\n      \u003C\u002FStack>\n    \u003C\u002F>\n  );\n}\n\nexport default function RootLayout() {\n  return (\n    \u003CThemeProvider>\n      \u003CTripsProvider>\n        \u003CRootNavigator \u002F>\n      \u003C\u002FTripsProvider>\n    \u003C\u002FThemeProvider>\n  );\n}\n",[3747,5496,5497,5518,5535,5552,5574,5578,5589,5612,5616,5623,5628,5666,5673,5685,5706,5721,5747,5764,5771,5776,5787,5826,5835,5842,5852,5863,5873,5883,5893,5903,5910,5915,5925,5930,5935,5939,5943,5959,5965,5974,5982,5991,5999,6008,6012],{"__ignoreMap":3992},[3996,5498,5499,5502,5505,5507,5510,5513,5516],{"class":3998,"line":3999},[3996,5500,5501],{"class":4057},"import",[3996,5503,5504],{"class":4006}," { ",[3996,5506,3844],{"class":4064},[3996,5508,5509],{"class":4006}," } ",[3996,5511,5512],{"class":4057},"from",[3996,5514,5515],{"class":4029}," 'expo-router'",[3996,5517,4123],{"class":4006},[3996,5519,5520,5522,5524,5526,5528,5530,5533],{"class":3998,"line":4047},[3996,5521,5501],{"class":4057},[3996,5523,5504],{"class":4006},[3996,5525,5225],{"class":4064},[3996,5527,5509],{"class":4006},[3996,5529,5512],{"class":4057},[3996,5531,5532],{"class":4029}," 'expo-status-bar'",[3996,5534,4123],{"class":4006},[3996,5536,5537,5539,5541,5543,5545,5547,5550],{"class":3998,"line":4054},[3996,5538,5501],{"class":4057},[3996,5540,5504],{"class":4006},[3996,5542,5206],{"class":4064},[3996,5544,5509],{"class":4006},[3996,5546,5512],{"class":4057},[3996,5548,5549],{"class":4029}," '@\u002Ffeatures\u002Ftrips'",[3996,5551,4123],{"class":4006},[3996,5553,5554,5556,5558,5560,5562,5565,5567,5569,5572],{"class":3998,"line":4075},[3996,5555,5501],{"class":4057},[3996,5557,5504],{"class":4006},[3996,5559,5202],{"class":4064},[3996,5561,3867],{"class":4006},[3996,5563,5564],{"class":4064},"useTheme",[3996,5566,5509],{"class":4006},[3996,5568,5512],{"class":4057},[3996,5570,5571],{"class":4029}," '@\u002Fshared\u002Ftheme'",[3996,5573,4123],{"class":4006},[3996,5575,5576],{"class":3998,"line":4126},[3996,5577,4051],{"emptyLinePlaceholder":4050},[3996,5579,5580,5583,5586],{"class":3998,"line":4132},[3996,5581,5582],{"class":4002},"function",[3996,5584,5585],{"class":4022}," RootNavigator",[3996,5587,5588],{"class":4006},"() {\n",[3996,5590,5591,5594,5596,5599,5601,5604,5607,5609],{"class":3998,"line":4137},[3996,5592,5593],{"class":4002},"  const",[3996,5595,5504],{"class":4006},[3996,5597,5598],{"class":4010},"colors",[3996,5600,3867],{"class":4006},[3996,5602,5603],{"class":4010},"scheme",[3996,5605,5606],{"class":4006}," } = ",[3996,5608,5564],{"class":4022},[3996,5610,5611],{"class":4006},"();\n",[3996,5613,5614],{"class":3998,"line":4275},[3996,5615,4051],{"emptyLinePlaceholder":4050},[3996,5617,5618,5620],{"class":3998,"line":4281},[3996,5619,4078],{"class":4057},[3996,5621,5622],{"class":4006}," (\n",[3996,5624,5625],{"class":3998,"line":4287},[3996,5626,5627],{"class":4081},"    \u003C>\n",[3996,5629,5630,5633,5635,5638,5640,5642,5644,5647,5650,5653,5656,5659,5661,5663],{"class":3998,"line":4293},[3996,5631,5632],{"class":4081},"      \u003C",[3996,5634,5225],{"class":4085},[3996,5636,5637],{"class":4089}," style",[3996,5639,4093],{"class":4006},[3996,5641,4096],{"class":4002},[3996,5643,5603],{"class":4064},[3996,5645,5646],{"class":4006}," ===",[3996,5648,5649],{"class":4029}," 'dark'",[3996,5651,5652],{"class":4006}," ?",[3996,5654,5655],{"class":4029}," 'light'",[3996,5657,5658],{"class":4006}," :",[3996,5660,5649],{"class":4029},[3996,5662,4117],{"class":4002},[3996,5664,5665],{"class":4081}," \u002F>\n",[3996,5667,5668,5670],{"class":3998,"line":4299},[3996,5669,5632],{"class":4081},[3996,5671,5672],{"class":4085},"Stack\n",[3996,5674,5675,5678,5680,5682],{"class":3998,"line":4305},[3996,5676,5677],{"class":4089},"        screenOptions",[3996,5679,4093],{"class":4006},[3996,5681,4096],{"class":4002},[3996,5683,5684],{"class":4099},"{\n",[3996,5686,5687,5690,5692,5695,5698,5700,5703],{"class":3998,"line":4311},[3996,5688,5689],{"class":4064},"          headerStyle:",[3996,5691,5504],{"class":4099},[3996,5693,5694],{"class":4064},"backgroundColor:",[3996,5696,5697],{"class":4064}," colors",[3996,5699,3821],{"class":4099},[3996,5701,5702],{"class":4064},"background",[3996,5704,5705],{"class":4099}," },\n",[3996,5707,5708,5711,5713,5715,5718],{"class":3998,"line":4317},[3996,5709,5710],{"class":4064},"          headerTintColor:",[3996,5712,5697],{"class":4064},[3996,5714,3821],{"class":4099},[3996,5716,5717],{"class":4064},"primary",[3996,5719,5720],{"class":4099},",\n",[3996,5722,5723,5726,5728,5731,5733,5735,5737,5739,5742,5745],{"class":3998,"line":4323},[3996,5724,5725],{"class":4064},"          headerTitleStyle:",[3996,5727,5504],{"class":4099},[3996,5729,5730],{"class":4064},"color:",[3996,5732,5697],{"class":4064},[3996,5734,3821],{"class":4099},[3996,5736,4227],{"class":4064},[3996,5738,3867],{"class":4099},[3996,5740,5741],{"class":4064},"fontWeight:",[3996,5743,5744],{"class":4029}," '600'",[3996,5746,5705],{"class":4099},[3996,5748,5749,5752,5754,5756,5758,5760,5762],{"class":3998,"line":4329},[3996,5750,5751],{"class":4064},"          contentStyle:",[3996,5753,5504],{"class":4099},[3996,5755,5694],{"class":4064},[3996,5757,5697],{"class":4064},[3996,5759,3821],{"class":4099},[3996,5761,5702],{"class":4064},[3996,5763,5705],{"class":4099},[3996,5765,5766,5769],{"class":3998,"line":4335},[3996,5767,5768],{"class":4099},"        }",[3996,5770,4129],{"class":4002},[3996,5772,5773],{"class":3998,"line":4341},[3996,5774,5775],{"class":4081},"      >\n",[3996,5777,5778,5781,5785],{"class":3998,"line":4347},[3996,5779,5780],{"class":4002},"        {",[3996,5782,5784],{"class":5783},"spJ8K","\u002F* Група вкладок: заголовок кореневого стека приховується *\u002F",[3996,5786,4129],{"class":4002},[3996,5788,5789,5792,5795,5798,5800,5803,5806,5808,5810,5813,5816,5819,5822,5824],{"class":3998,"line":4352},[3996,5790,5791],{"class":4081},"        \u003C",[3996,5793,5794],{"class":4085},"Stack.Screen",[3996,5796,5797],{"class":4089}," name",[3996,5799,4093],{"class":4006},[3996,5801,5802],{"class":4029},"\"(tabs)\"",[3996,5804,5805],{"class":4089}," options",[3996,5807,4093],{"class":4006},[3996,5809,4096],{"class":4002},[3996,5811,5812],{"class":4099},"{ ",[3996,5814,5815],{"class":4064},"headerShown:",[3996,5817,5818],{"class":4002}," false",[3996,5820,5821],{"class":4099}," }",[3996,5823,4117],{"class":4002},[3996,5825,5665],{"class":4081},[3996,5827,5828,5830,5833],{"class":3998,"line":4357},[3996,5829,5780],{"class":4002},[3996,5831,5832],{"class":5783},"\u002F* Окремий екран форми: заголовок стека активний з кнопкою повернення *\u002F",[3996,5834,4129],{"class":4002},[3996,5836,5837,5839],{"class":3998,"line":4363},[3996,5838,5791],{"class":4081},[3996,5840,5841],{"class":4085},"Stack.Screen\n",[3996,5843,5844,5847,5849],{"class":3998,"line":4369},[3996,5845,5846],{"class":4089},"          name",[3996,5848,4093],{"class":4006},[3996,5850,5851],{"class":4029},"\"create-trip\"\n",[3996,5853,5854,5857,5859,5861],{"class":3998,"line":4375},[3996,5855,5856],{"class":4089},"          options",[3996,5858,4093],{"class":4006},[3996,5860,4096],{"class":4002},[3996,5862,5684],{"class":4099},[3996,5864,5865,5868,5871],{"class":3998,"line":4381},[3996,5866,5867],{"class":4064},"            title:",[3996,5869,5870],{"class":4029}," 'Нова поїздка'",[3996,5872,5720],{"class":4099},[3996,5874,5875,5878,5881],{"class":3998,"line":4387},[3996,5876,5877],{"class":4064},"            headerShown:",[3996,5879,5880],{"class":4002}," true",[3996,5882,5720],{"class":4099},[3996,5884,5885,5888,5891],{"class":3998,"line":4392},[3996,5886,5887],{"class":4064},"            presentation:",[3996,5889,5890],{"class":4029}," 'card'",[3996,5892,5720],{"class":4099},[3996,5894,5895,5898,5901],{"class":3998,"line":4398},[3996,5896,5897],{"class":4064},"            headerBackTitle:",[3996,5899,5900],{"class":4029}," 'Назад'",[3996,5902,5720],{"class":4099},[3996,5904,5905,5908],{"class":3998,"line":4404},[3996,5906,5907],{"class":4099},"          }",[3996,5909,4129],{"class":4002},[3996,5911,5912],{"class":3998,"line":4410},[3996,5913,5914],{"class":4081},"        \u002F>\n",[3996,5916,5917,5920,5922],{"class":3998,"line":4415},[3996,5918,5919],{"class":4081},"      \u003C\u002F",[3996,5921,3844],{"class":4085},[3996,5923,5924],{"class":4081},">\n",[3996,5926,5927],{"class":3998,"line":4420},[3996,5928,5929],{"class":4081},"    \u003C\u002F>\n",[3996,5931,5932],{"class":3998,"line":4426},[3996,5933,5934],{"class":4006},"  );\n",[3996,5936,5937],{"class":3998,"line":4432},[3996,5938,4129],{"class":4006},[3996,5940,5941],{"class":3998,"line":4438},[3996,5942,4051],{"emptyLinePlaceholder":4050},[3996,5944,5945,5948,5951,5954,5957],{"class":3998,"line":4443},[3996,5946,5947],{"class":4057},"export",[3996,5949,5950],{"class":4057}," default",[3996,5952,5953],{"class":4002}," function",[3996,5955,5956],{"class":4022}," RootLayout",[3996,5958,5588],{"class":4006},[3996,5960,5961,5963],{"class":3998,"line":4448},[3996,5962,4078],{"class":4057},[3996,5964,5622],{"class":4006},[3996,5966,5967,5970,5972],{"class":3998,"line":4454},[3996,5968,5969],{"class":4081},"    \u003C",[3996,5971,5202],{"class":4085},[3996,5973,5924],{"class":4081},[3996,5975,5976,5978,5980],{"class":3998,"line":4460},[3996,5977,5632],{"class":4081},[3996,5979,5206],{"class":4085},[3996,5981,5924],{"class":4081},[3996,5983,5984,5986,5989],{"class":3998,"line":4466},[3996,5985,5791],{"class":4081},[3996,5987,5988],{"class":4085},"RootNavigator",[3996,5990,5665],{"class":4081},[3996,5992,5993,5995,5997],{"class":3998,"line":4472},[3996,5994,5919],{"class":4081},[3996,5996,5206],{"class":4085},[3996,5998,5924],{"class":4081},[3996,6000,6001,6004,6006],{"class":3998,"line":4477},[3996,6002,6003],{"class":4081},"    \u003C\u002F",[3996,6005,5202],{"class":4085},[3996,6007,5924],{"class":4081},[3996,6009,6010],{"class":3998,"line":5066},[3996,6011,5934],{"class":4006},[3996,6013,6014],{"class":3998,"line":5072},[3996,6015,4129],{"class":4006},[3743,6017,6018,6019,4676,6021,6023,6024,6026,6027,6030,6031,6034,6035,4676,6038,3821],{},"Зверніть увагу: провайдери ",[3747,6020,5202],{},[3747,6022,5206],{}," обгортають компонент ",[3747,6025,5988],{},". Завдяки цьому дочірні екрани обох гілок (як вкладки ",[3747,6028,6029],{},"(tabs)",", так і окрема форма ",[3747,6032,6033],{},"create-trip",") мають однаковий доступ до контекстів через призначені хуки ",[3747,6036,6037],{},"useTheme()",[3747,6039,6040],{},"useTrips()",[3966,6042],{},[3738,6044,6046,6047],{"id":6045},"конвенції-файлової-структури-та-маршрутизація-index","Конвенції файлової структури та маршрутизація ",[3747,6048,6049],{},"index",[3743,6051,6052],{},"Expo Router використовує строгі конвенції зіставлення шляхів файлів із маршрутами застосунку:",[4531,6054,6055,6068],{},[4534,6056,6057],{},[4537,6058,6059,6062,6065],{},[4540,6060,6061],{"align":4542},"Шлях до файлу на диску",[4540,6063,6064],{"align":4542},"Згенерований маршрут у системі",[4540,6066,6067],{"align":4542},"Інженерне призначення",[4551,6069,6070,6084,6098,6112,6131,6145],{},[4537,6071,6072,6077,6081],{},[4556,6073,6074],{"align":4542},[3747,6075,6076],{},"app\u002Findex.tsx",[4556,6078,6079],{"align":4542},[3747,6080,5118],{},[4556,6082,6083],{"align":4542},"Головний стартовий екран кореневого рівня.",[4537,6085,6086,6091,6095],{},[4556,6087,6088],{"align":4542},[3747,6089,6090],{},"app\u002Fplaces.tsx",[4556,6092,6093],{"align":4542},[3747,6094,5121],{},[4556,6096,6097],{"align":4542},"Окремий статичний екран першого рівня.",[4537,6099,6100,6105,6109],{},[4556,6101,6102],{"align":4542},[3747,6103,6104],{},"app\u002Fcreate-trip.tsx",[4556,6106,6107],{"align":4542},[3747,6108,5124],{},[4556,6110,6111],{"align":4542},"Окремий екран створення поїздки.",[4537,6113,6114,6119,6123],{},[4556,6115,6116],{"align":4542},[3747,6117,6118],{},"app\u002F(tabs)\u002Findex.tsx",[4556,6120,6121],{"align":4542},[3747,6122,5118],{},[4556,6124,6125,6126,6128,6129,3821],{"align":4542},"Головний екран групи ",[3747,6127,6029],{},", що відповідає кореневому URL ",[3747,6130,5118],{},[4537,6132,6133,6138,6142],{},[4556,6134,6135],{"align":4542},[3747,6136,6137],{},"app\u002F(tabs)\u002Fplaces.tsx",[4556,6139,6140],{"align":4542},[3747,6141,5121],{},[4556,6143,6144],{"align":4542},"Екран списку місць усередині групи вкладок.",[4537,6146,6147,6152,6161],{},[4556,6148,6149],{"align":4542},[3747,6150,6151],{},"app\u002Fcity\u002F[id].tsx",[4556,6153,6154,6157,6158,4114],{"align":4542},[3747,6155,6156],{},"\u002Fcity\u002F:id"," (напр. ",[3747,6159,6160],{},"\u002Fcity\u002Fkyiv",[4556,6162,6163],{"align":4542},"Динамічний параметризований маршрут.",[3801,6165,6167,6168],{"id":6166},"семантична-роль-файлів-indextsx","Семантична роль файлів ",[3747,6169,3891],{},[3743,6171,6172,6173,6177,6178,6180,6181,6183,6184,3821],{},"Файл з назвою ",[3765,6174,6175],{},[3747,6176,3891],{}," завжди позначає кореневий (дефолтний) маршрут того каталогу, в якому він розташований. Якщо такий файл знаходиться безпосередньо в ",[3747,6179,6076],{}," або всередині групи ",[3747,6182,6118],{},", він стає точкою входу для базового шляху ",[3747,6185,5118],{},[3801,6187,6189],{"id":6188},"рекомендації-щодо-найменування-файлів","Рекомендації щодо найменування файлів:",[3806,6191,6192,6205],{},[3762,6193,6194,6195,6198,6199,3867,6201,6204],{},"Для назв файлів слід використовувати виключно стиль ",[3765,6196,6197],{},"kebab-case"," (наприклад, ",[3747,6200,3749],{},[3747,6202,6203],{},"user-profile.tsx","), оскільки імена файлів безпосередньо формують сегменти URL.",[3762,6206,6207],{},"Категорично заборонено використовувати пробіли, службові символи та символи нелатинських абеток (кирилицю) в іменах файлів маршрутів.",[3966,6209],{},[3738,6211,6213],{"id":6212},"навігатор-stack-модель-стекової-стопки-екранів-lifo","Навігатор Stack: Модель стекової стопки екранів (LIFO)",[3743,6215,6216,6219,6220,3821],{},[3765,6217,6218],{},"Stack-навігатор (Navigation Stack)"," моделює поведінку просторової стопки карток за класичним принципом інформатики ",[3765,6221,6222],{},"LIFO (Last In, First Out — останнім прийшов, першим пішов)",[3743,6224,6225,6226,6228,6229,6232],{},"Коли користувач ініціює перехід до нового екрана, новий інтерфейсний шар «наштовхується» (",[3765,6227,3866],{},") на вершину стека, повністю або частково перекриваючи попередній. При поверненні назад верхній екран «знімається» зі стека (",[3765,6230,6231],{},"pop","), відновлюючи видимість попереднього представлення разом із його незмінним станом пам'яті.",[3987,6234,6237],{"className":6235,"code":6236,"language":4227},[4225],"       ОПЕРАЦІЯ PUSH (router.push)                ОПЕРАЦІЯ POP (router.back)\n+------------------------------------+       +------------------------------------+\n|  [Вершина] create-trip.tsx         |  -->  |  [Знято зі стека і знищено]        |\n+------------------------------------+       +------------------------------------+\n|  [Основа]  (tabs) \u002F index.tsx      |  \u003C--  |  [Відновлено стан] (tabs)\u002Findex.tsx|\n+------------------------------------+       +------------------------------------+\n",[3747,6238,6236],{"__ignoreMap":3992},[4231,6240,6241],{},[3987,6242,6244],{"className":4235,"code":6243,"language":4237,"meta":3992,"style":3992},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Стековий навігатор (Stack): Життєвий цикл LIFO та переходи\"\n\nactor Користувач as User\nparticipant \"Екран: (tabs)\u002Findex\" as ScreenA\nparticipant \"Expo Router Engine\" as Router\nparticipant \"Native Stack Controller\\n(UINavigationController \u002F Fragment)\" as NativeStack\nparticipant \"Екран: create-trip\" as ScreenB\n\n== Фаза 1: Перехід вперед (Push) ==\nUser -> ScreenA : Тап на кнопку \"Нова поїздка\"\nScreenA -> Router : router.push('\u002Fcreate-trip')\nRouter -> NativeStack : pushViewController(create-trip, animated: true)\nNativeStack -> ScreenB : Монтування (Mount) & старт нативної анімації\nnote over ScreenA, ScreenB #e0f2fe\n  Стек у пам'яті:\n  1. [Вершина] create-trip.tsx (Активний, видимий)\n  2. [Основа]  (tabs)\u002Findex.tsx (Прихований під стеком, стан збережено)\nend note\n\n== Фаза 2: Повернення назад (Pop) ==\nUser -> ScreenB : Збереження форми \u002F жест \"Назад\"\nScreenB -> Router : router.back() (або Interactive Pop Gesture)\nRouter -> NativeStack : popViewController(animated: true)\nNativeStack -> ScreenB : Розмонтування (Unmount) & очищення ресурсів\nNativeStack -> ScreenA : Відновлення видимості (без повторного mount)\nnote over ScreenA #dcfce7\n  Стек у пам'яті:\n  1. [Вершина] (tabs)\u002Findex.tsx (Активний, скрол на місці)\nend note\n@enduml\n",[3747,6245,6246,6250,6254,6258,6262,6267,6271,6276,6281,6286,6291,6296,6300,6305,6310,6315,6320,6325,6330,6335,6340,6345,6349,6353,6358,6363,6368,6373,6378,6383,6388,6392,6397,6401],{"__ignoreMap":3992},[3996,6247,6248],{"class":3998,"line":3999},[3996,6249,4244],{},[3996,6251,6252],{"class":3998,"line":4047},[3996,6253,4249],{},[3996,6255,6256],{"class":3998,"line":4054},[3996,6257,4254],{},[3996,6259,6260],{"class":3998,"line":4075},[3996,6261,4051],{"emptyLinePlaceholder":4050},[3996,6263,6264],{"class":3998,"line":4126},[3996,6265,6266],{},"title \"Стековий навігатор (Stack): Життєвий цикл LIFO та переходи\"\n",[3996,6268,6269],{"class":3998,"line":4132},[3996,6270,4051],{"emptyLinePlaceholder":4050},[3996,6272,6273],{"class":3998,"line":4137},[3996,6274,6275],{},"actor Користувач as User\n",[3996,6277,6278],{"class":3998,"line":4275},[3996,6279,6280],{},"participant \"Екран: (tabs)\u002Findex\" as ScreenA\n",[3996,6282,6283],{"class":3998,"line":4281},[3996,6284,6285],{},"participant \"Expo Router Engine\" as Router\n",[3996,6287,6288],{"class":3998,"line":4287},[3996,6289,6290],{},"participant \"Native Stack Controller\\n(UINavigationController \u002F Fragment)\" as NativeStack\n",[3996,6292,6293],{"class":3998,"line":4293},[3996,6294,6295],{},"participant \"Екран: create-trip\" as ScreenB\n",[3996,6297,6298],{"class":3998,"line":4299},[3996,6299,4051],{"emptyLinePlaceholder":4050},[3996,6301,6302],{"class":3998,"line":4305},[3996,6303,6304],{},"== Фаза 1: Перехід вперед (Push) ==\n",[3996,6306,6307],{"class":3998,"line":4311},[3996,6308,6309],{},"User -> ScreenA : Тап на кнопку \"Нова поїздка\"\n",[3996,6311,6312],{"class":3998,"line":4317},[3996,6313,6314],{},"ScreenA -> Router : router.push('\u002Fcreate-trip')\n",[3996,6316,6317],{"class":3998,"line":4323},[3996,6318,6319],{},"Router -> NativeStack : pushViewController(create-trip, animated: true)\n",[3996,6321,6322],{"class":3998,"line":4329},[3996,6323,6324],{},"NativeStack -> ScreenB : Монтування (Mount) & старт нативної анімації\n",[3996,6326,6327],{"class":3998,"line":4335},[3996,6328,6329],{},"note over ScreenA, ScreenB #e0f2fe\n",[3996,6331,6332],{"class":3998,"line":4341},[3996,6333,6334],{},"  Стек у пам'яті:\n",[3996,6336,6337],{"class":3998,"line":4347},[3996,6338,6339],{},"  1. [Вершина] create-trip.tsx (Активний, видимий)\n",[3996,6341,6342],{"class":3998,"line":4352},[3996,6343,6344],{},"  2. [Основа]  (tabs)\u002Findex.tsx (Прихований під стеком, стан збережено)\n",[3996,6346,6347],{"class":3998,"line":4357},[3996,6348,5093],{},[3996,6350,6351],{"class":3998,"line":4363},[3996,6352,4051],{"emptyLinePlaceholder":4050},[3996,6354,6355],{"class":3998,"line":4369},[3996,6356,6357],{},"== Фаза 2: Повернення назад (Pop) ==\n",[3996,6359,6360],{"class":3998,"line":4375},[3996,6361,6362],{},"User -> ScreenB : Збереження форми \u002F жест \"Назад\"\n",[3996,6364,6365],{"class":3998,"line":4381},[3996,6366,6367],{},"ScreenB -> Router : router.back() (або Interactive Pop Gesture)\n",[3996,6369,6370],{"class":3998,"line":4387},[3996,6371,6372],{},"Router -> NativeStack : popViewController(animated: true)\n",[3996,6374,6375],{"class":3998,"line":4392},[3996,6376,6377],{},"NativeStack -> ScreenB : Розмонтування (Unmount) & очищення ресурсів\n",[3996,6379,6380],{"class":3998,"line":4398},[3996,6381,6382],{},"NativeStack -> ScreenA : Відновлення видимості (без повторного mount)\n",[3996,6384,6385],{"class":3998,"line":4404},[3996,6386,6387],{},"note over ScreenA #dcfce7\n",[3996,6389,6390],{"class":3998,"line":4410},[3996,6391,6334],{},[3996,6393,6394],{"class":3998,"line":4415},[3996,6395,6396],{},"  1. [Вершина] (tabs)\u002Findex.tsx (Активний, скрол на місці)\n",[3996,6398,6399],{"class":3998,"line":4420},[3996,6400,5093],{},[3996,6402,6403],{"class":3998,"line":4426},[3996,6404,4480],{},[3801,6406,6408],{"id":6407},"типові-сценарії-застосування-stack","Типові сценарії застосування Stack:",[3806,6410,6411,6414,6420],{},[3762,6412,6413],{},"Ієрархічний перехід «Список сутностей → Детальна інформація про сутність».",[3762,6415,6416,6417,3877],{},"Відкриття допоміжних форм введення даних або майстрів налаштування (",[3796,6418,6419],{},"Wizards",[3762,6421,6422],{},"Заглиблення в дерево налаштувань («Налаштування → Безпека → Зміна пароля»).",[3743,6424,6425,6426,6429,6430,6433],{},"На рівні операційної системи Stack-навігатор Expo Router транслюється у високопродуктивні нативні контролери: ",[3747,6427,6428],{},"UINavigationController"," в iOS та відповідні фрагментні транзакції ",[3747,6431,6432],{},"FragmentTransaction"," в AndroidX. Це гарантує нативну швидкість анімацій зі швидкістю 60\u002F120 кадрів на секунду та мінімальне навантаження на головний потік JavaScript.",[3743,6435,6436],{},[4769,6437],{"alt":6438,"className":6439,"src":6440},"Stack і Tabs: стопка проти нижніх вкладок",[4773],"\u002Fimages\u002Freact-native\u002Fexpo-router-basics\u002F02.svg",[5453,6442,6443,6451,6467,6480,6496],{},[5456,6444,6446,6447,6450],{"name":3844,"type":6445},"компонент навігатора","Контейнер стекової навігації (",[3747,6448,6449],{},"import { Stack } from 'expo-router'","). Дочірні файли поточної директорії автоматично реєструються як доступні екрани цього стека.",[5456,6452,6454,6455,6458,6459,6462,6463,6466],{"name":5794,"type":6453},"компонент конфігурації екрана","Декларативний елемент налаштування конкретного маршруту в стеку. Атрибут ",[3747,6456,6457],{},"name"," повинен точно відповідати імені файлу маршруту (без розширення ",[3747,6460,6461],{},".tsx","). Властивість ",[3747,6464,6465],{},"options"," дозволяє задати параметри відображення заголовка, анімацій та кнопок.",[5456,6468,6471,6472,6475,6476,6479],{"name":6469,"type":6470},"options.presentation","'card' | 'modal' | 'transparentModal'","Визначає візуальну модальність появи екрана. Значення ",[3747,6473,6474],{},"'card'"," (стандартне) виконує класичний горизонтальний зсув картки праворуч. Значення ",[3747,6477,6478],{},"'modal'"," транслює екран у модальне вікно, що виїжджає знизу екрана (глибше розглядається в наступних розділах).",[5456,6481,6484,6485,6488,6489,6492,6493,3821],{"name":6482,"type":6483},"options.headerShown","boolean","Визначає видимість нативної смуги заголовка (",[3747,6486,6487],{},"UINavigationBar"," \u002F ",[3747,6490,6491],{},"Toolbar","). Якщо екран використовує кастомний заголовок, зверстаний засобами React Native, цей параметр встановлюють у ",[3747,6494,6495],{},"false",[5456,6497,6500],{"name":6498,"type":6499},"options.headerBackTitle","string (iOS)","Конфігурує текстовий підпис біля стрілки повернення назад на платформі iOS (наприклад, «Назад» або назву попереднього екрана).",[3801,6502,6504],{"id":6503},"механіка-обробки-системного-повернення-назад","Механіка обробки системного повернення «Назад»",[3743,6506,6507],{},"Нативна інтеграція Stack-навігатора забезпечує узгоджену поведінку з платформовими гайдлайнами:",[3806,6509,6510,6520],{},[3762,6511,6512,6515,6516,6519],{},[3765,6513,6514],{},"iOS:"," Підтримується плавний інерційний жест повернення змахуванням від лівого краю екрана (",[3796,6517,6518],{},"Interactive Swipe-to-Back",") та нативна кнопка повернення у смузі заголовка.",[3762,6521,6522,6525,6526,6529,6530,6532],{},[3765,6523,6524],{},"Android:"," Навігатор автоматично перехоплює натискання системної апаратної\u002Fпрограмної кнопки «Назад» або сучасний жест від краю екрана (",[3796,6527,6528],{},"Back Gesture","), коректно викликаючи операцію ",[3747,6531,6231],{}," для активного стека.",[3743,6534,6535,6536,6539],{},"Програмний виклик методу ",[3747,6537,6538],{},"router.back()"," ініціює аналогічну операцію: перевіряє історію переходів і повертає користувача на один рівень назад.",[3966,6541],{},[3738,6543,6545],{"id":6544},"навігатор-tabs-модель-паралельних-розділів-інтерфейсу","Навігатор Tabs: Модель паралельних розділів інтерфейсу",[3743,6547,6548,6551],{},[3765,6549,6550],{},"Навігатор вкладок (Bottom Tabs Navigator)"," організовує кілька рівноправних функціональних доменів застосунку, перемикання між якими здійснюється через фіксовану панель у нижній частині дисплея.",[3743,6553,6554,6555,6558],{},"На відміну від Stack-навігатора, перемикання між вкладками ",[3765,6556,6557],{},"не створює лінійної стопки переходів",". Кожна вкладка є автономним кореневим простором, який функціонує паралельно з іншими.",[3987,6560,6563],{"className":6561,"code":6562,"language":4227},[4225],"                     НАВІГАЦІЙНЕ ДЕРЕВО ВКЛАДОК\n               +------------------------------------+\n               |           Tabs Navigator           |\n               +------------------------------------+\n                 \u002F                |               \\\n                \u002F                 |                \\\n    +-----------------+  +-----------------+  +-----------------+\n    | Вкладка:        |  | Вкладка:        |  | Вкладка:        |\n    | «Поїздки» (\u002F)   |  | «Місця» (\u002Fplaces)| | «Ще» (\u002Fabout)   |\n    +-----------------+  +-----------------+  +-----------------+\n",[3747,6564,6562],{"__ignoreMap":3992},[4231,6566,6567],{},[3987,6568,6570],{"className":4235,"code":6569,"language":4237,"meta":3992,"style":3992},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Навігатор Tabs: Модель паралельних гілок та ізоляція стану\"\n\nrectangle \"app\u002F(tabs)\u002F_layout.tsx \u003CTabs>\" as TABS_CONTAINER #f3e8ff {\n  \n  rectangle \"Вкладка 1: Trips (index.tsx)\" as TAB1 #e9d5ff {\n    rectangle \"Скрол: Y = 450px\" as S1 #d8b4fe\n    rectangle \"Вибраний фільтр: 'Активні'\" as F1 #d8b4fe\n  }\n  \n  rectangle \"Вкладка 2: Places (places.tsx)\" as TAB2 #e0e7ff {\n    rectangle \"Скрол: Y = 0px\" as S2 #c7d2fe\n    rectangle \"Пошуковий запит: 'Карпати'\" as Q2 #c7d2fe\n  }\n  \n  rectangle \"Вкладка 3: About (about.tsx)\" as TAB3 #fae8ff {\n    rectangle \"Статичний контент\" as S3 #f5d0fe\n  }\n}\n\nactor Користувач as U\nU -down-> TAB1 : 1. Переглядає список\nU -down-> TAB2 : 2. Тап на вкладку \"Місця\" (Стан TAB1 НЕ скидається)\nU -down-> TAB1 : 3. Повернення на \"Поїздки\" (Скрол 450px та фільтр збережено)\n\n@enduml\n",[3747,6571,6572,6576,6580,6584,6588,6593,6597,6602,6606,6611,6616,6621,6625,6629,6634,6639,6644,6648,6652,6657,6662,6666,6670,6674,6679,6684,6689,6694,6698],{"__ignoreMap":3992},[3996,6573,6574],{"class":3998,"line":3999},[3996,6575,4244],{},[3996,6577,6578],{"class":3998,"line":4047},[3996,6579,4249],{},[3996,6581,6582],{"class":3998,"line":4054},[3996,6583,4254],{},[3996,6585,6586],{"class":3998,"line":4075},[3996,6587,4051],{"emptyLinePlaceholder":4050},[3996,6589,6590],{"class":3998,"line":4126},[3996,6591,6592],{},"title \"Навігатор Tabs: Модель паралельних гілок та ізоляція стану\"\n",[3996,6594,6595],{"class":3998,"line":4132},[3996,6596,4051],{"emptyLinePlaceholder":4050},[3996,6598,6599],{"class":3998,"line":4137},[3996,6600,6601],{},"rectangle \"app\u002F(tabs)\u002F_layout.tsx \u003CTabs>\" as TABS_CONTAINER #f3e8ff {\n",[3996,6603,6604],{"class":3998,"line":4275},[3996,6605,4296],{},[3996,6607,6608],{"class":3998,"line":4281},[3996,6609,6610],{},"  rectangle \"Вкладка 1: Trips (index.tsx)\" as TAB1 #e9d5ff {\n",[3996,6612,6613],{"class":3998,"line":4287},[3996,6614,6615],{},"    rectangle \"Скрол: Y = 450px\" as S1 #d8b4fe\n",[3996,6617,6618],{"class":3998,"line":4293},[3996,6619,6620],{},"    rectangle \"Вибраний фільтр: 'Активні'\" as F1 #d8b4fe\n",[3996,6622,6623],{"class":3998,"line":4299},[3996,6624,4384],{},[3996,6626,6627],{"class":3998,"line":4305},[3996,6628,4296],{},[3996,6630,6631],{"class":3998,"line":4311},[3996,6632,6633],{},"  rectangle \"Вкладка 2: Places (places.tsx)\" as TAB2 #e0e7ff {\n",[3996,6635,6636],{"class":3998,"line":4317},[3996,6637,6638],{},"    rectangle \"Скрол: Y = 0px\" as S2 #c7d2fe\n",[3996,6640,6641],{"class":3998,"line":4323},[3996,6642,6643],{},"    rectangle \"Пошуковий запит: 'Карпати'\" as Q2 #c7d2fe\n",[3996,6645,6646],{"class":3998,"line":4329},[3996,6647,4384],{},[3996,6649,6650],{"class":3998,"line":4335},[3996,6651,4296],{},[3996,6653,6654],{"class":3998,"line":4341},[3996,6655,6656],{},"  rectangle \"Вкладка 3: About (about.tsx)\" as TAB3 #fae8ff {\n",[3996,6658,6659],{"class":3998,"line":4347},[3996,6660,6661],{},"    rectangle \"Статичний контент\" as S3 #f5d0fe\n",[3996,6663,6664],{"class":3998,"line":4352},[3996,6665,4384],{},[3996,6667,6668],{"class":3998,"line":4357},[3996,6669,4129],{},[3996,6671,6672],{"class":3998,"line":4363},[3996,6673,4051],{"emptyLinePlaceholder":4050},[3996,6675,6676],{"class":3998,"line":4369},[3996,6677,6678],{},"actor Користувач as U\n",[3996,6680,6681],{"class":3998,"line":4375},[3996,6682,6683],{},"U -down-> TAB1 : 1. Переглядає список\n",[3996,6685,6686],{"class":3998,"line":4381},[3996,6687,6688],{},"U -down-> TAB2 : 2. Тап на вкладку \"Місця\" (Стан TAB1 НЕ скидається)\n",[3996,6690,6691],{"class":3998,"line":4387},[3996,6692,6693],{},"U -down-> TAB1 : 3. Повернення на \"Поїздки\" (Скрол 450px та фільтр збережено)\n",[3996,6695,6696],{"class":3998,"line":4392},[3996,6697,4051],{"emptyLinePlaceholder":4050},[3996,6699,6700],{"class":3998,"line":4398},[3996,6701,4480],{},[3801,6703,6705],{"id":6704},"ергономічні-вимоги-до-панелі-вкладок","Ергономічні вимоги до панелі вкладок:",[3806,6707,6708,6711,6717],{},[3762,6709,6710],{},"Кожна вкладка повинна містити чітку семантичну векторну іконку та лаконічний підпис (до 10–12 символів).",[3762,6712,6713,6714,3877],{},"Активний стан вкладки зобов'язаний візуально виділятися акцентним кольором теми бренду (",[3747,6715,6716],{},"tabBarActiveTintColor",[3762,6718,6719],{},"Перемикання вкладок повинно зберігати внутрішній стан кожної з них (наприклад, поточну позицію скролу списку поїздок при переході на вкладку місць і назад).",[5453,6721,6722,6735,6751,6764,6775],{},[5456,6723,6724,6725,6728,6729,6731,6732,3821],{"name":3840,"type":6445},"Контейнер нижніх вкладок (",[3747,6726,6727],{},"import { Tabs } from 'expo-router'","). Файл ",[3747,6730,3829],{}," усередині директорії вкладок експортує компонент, що повертає розмітку ",[3747,6733,6734],{},"\u003CTabs>…\u003C\u002FTabs>",[5456,6736,6739,6740,6742,6743,3867,6745,3867,6748,3877],{"name":6737,"type":6738},"Tabs.Screen","компонент конфігурації вкладки","Реєструє окрему вкладку в навігаційній панелі. Параметр ",[3747,6741,6457],{}," задає ім'я цільового файлу маршруту (",[3747,6744,6049],{},[3747,6746,6747],{},"places",[3747,6749,6750],{},"about",[5456,6752,6755,6756,6759,6760,6763],{"name":6753,"type":6754},"options.tabBarIcon","({ color, size, focused }) => ReactNode","Функція зворотного виклику, що повертає компонент векторної іконки. Expo Router автоматично передає в цю функцію обчислений колір (",[3747,6757,6758],{},"color",") та рекомендований геометричний розмір (",[3747,6761,6762],{},"size",") залежно від активності вкладки.",[5456,6765,6768,6769,4676,6772,3877],{"name":6766,"type":6767},"options.tabBarActiveTintColor \u002F tabBarInactiveTintColor","ColorValue","Кольори для активного та неактивного станів іконок і підписів вкладки. Повинні синхронізуватися з поточною темою оформлення (",[3747,6770,6771],{},"colors.primary",[3747,6773,6774],{},"colors.textSecondary",[5456,6776,6779],{"name":6777,"type":6778},"options.tabBarStyle","ViewStyle","Об'єкт стилізації контейнера панелі вкладок (висота, колір фону, колір верхньої розділової межі). У темній темі вимагає обов'язкового налаштування для запобігання появі білої смуги на темному тлі контенту.",[3801,6781,6783,6784,4114],{"id":6782},"інтеграція-векторних-іконок-expovector-icons","Інтеграція векторних іконок (",[3747,6785,6786],{},"@expo\u002Fvector-icons",[3743,6788,6789,6790,6794],{},"Для оформлення таб-бару використовується бібліотека ",[3765,6791,6792],{},[3747,6793,6786],{},", яка постачається з популярними наборами гліфів (Ionicons, MaterialIcons, Feather, FontAwesome):",[3987,6796,6800],{"className":6797,"code":6798,"language":6799,"meta":3992,"style":3992},"language-bash shiki shiki-themes light-plus dark-plus dark-plus","npx expo install @expo\u002Fvector-icons\n","bash",[3747,6801,6802],{"__ignoreMap":3992},[3996,6803,6804,6807,6810,6813],{"class":3998,"line":3999},[3996,6805,6806],{"class":4022},"npx",[3996,6808,6809],{"class":4029}," expo",[3996,6811,6812],{"class":4029}," install",[3996,6814,6815],{"class":4029}," @expo\u002Fvector-icons\n",[3743,6817,6818],{},"Приклад конфігурації іконки у вкладці:",[3987,6820,6822],{"className":3989,"code":6821,"language":3991,"meta":3992,"style":3992},"\u003CTabs.Screen\n  name=\"places\"\n  options={{\n    title: 'Місця',\n    tabBarIcon: ({ color, size }) => (\n      \u003CIonicons name=\"location-outline\" size={size} color={color} \u002F>\n    ),\n  }}\n\u002F>\n",[3747,6823,6824,6831,6841,6852,6862,6886,6924,6929,6936],{"__ignoreMap":3992},[3996,6825,6826,6828],{"class":3998,"line":3999},[3996,6827,4026],{"class":4081},[3996,6829,6830],{"class":4085},"Tabs.Screen\n",[3996,6832,6833,6836,6838],{"class":3998,"line":4047},[3996,6834,6835],{"class":4089},"  name",[3996,6837,4093],{"class":4006},[3996,6839,6840],{"class":4029},"\"places\"\n",[3996,6842,6843,6846,6848,6850],{"class":3998,"line":4054},[3996,6844,6845],{"class":4089},"  options",[3996,6847,4093],{"class":4006},[3996,6849,4096],{"class":4002},[3996,6851,5684],{"class":4099},[3996,6853,6854,6857,6860],{"class":3998,"line":4075},[3996,6855,6856],{"class":4064},"    title:",[3996,6858,6859],{"class":4029}," 'Місця'",[3996,6861,5720],{"class":4099},[3996,6863,6864,6867,6870,6873,6875,6877,6879,6882,6884],{"class":3998,"line":4126},[3996,6865,6866],{"class":4022},"    tabBarIcon",[3996,6868,6869],{"class":4064},":",[3996,6871,6872],{"class":4099}," ({ ",[3996,6874,6758],{"class":4064},[3996,6876,3867],{"class":4099},[3996,6878,6762],{"class":4064},[3996,6880,6881],{"class":4099}," }) ",[3996,6883,4103],{"class":4002},[3996,6885,5622],{"class":4099},[3996,6887,6888,6890,6893,6895,6897,6900,6903,6905,6907,6909,6911,6914,6916,6918,6920,6922],{"class":3998,"line":4132},[3996,6889,5632],{"class":4081},[3996,6891,6892],{"class":4085},"Ionicons",[3996,6894,5797],{"class":4089},[3996,6896,4093],{"class":4006},[3996,6898,6899],{"class":4029},"\"location-outline\"",[3996,6901,6902],{"class":4089}," size",[3996,6904,4093],{"class":4006},[3996,6906,4096],{"class":4002},[3996,6908,6762],{"class":4064},[3996,6910,4117],{"class":4002},[3996,6912,6913],{"class":4089}," color",[3996,6915,4093],{"class":4006},[3996,6917,4096],{"class":4002},[3996,6919,6758],{"class":4064},[3996,6921,4117],{"class":4002},[3996,6923,5665],{"class":4081},[3996,6925,6926],{"class":3998,"line":4137},[3996,6927,6928],{"class":4099},"    ),\n",[3996,6930,6931,6934],{"class":3998,"line":4275},[3996,6932,6933],{"class":4099},"  }",[3996,6935,4129],{"class":4002},[3996,6937,6938],{"class":3998,"line":4281},[3996,6939,6940],{"class":4081},"\u002F>\n",[3966,6942],{},[3738,6944,6946,6947,6949],{"id":6945},"довідник-screenoptions-конфігурація-заголовків-стека-та-вкладок","Довідник ",[3747,6948,5478],{},": Конфігурація заголовків, стека та вкладок",[3743,6951,6952,6953,6957,6958,6962,6963,6966,6967,3877],{},"У проєктах на базі Expo Router конфігурація візуального відображення та поведінки екранів здійснюється за допомогою універсального словника параметрів ",[3765,6954,6955],{},[3747,6956,5478],{}," (на рівні макета-навігатора) або властивості ",[3765,6959,6960],{},[3747,6961,6465],{}," (на рівні конкретного компонента ",[3747,6964,6965],{},"\u003CStack.Screen \u002F>"," чи ",[3747,6968,6969],{},"\u003CTabs.Screen \u002F>",[3743,6971,6972,6973,6975],{},"Розуміння повної карти полів ",[3747,6974,5478],{}," критично важливе для побудови професійних інтерфейсів: від нативних розмитих шапок у стилі iOS до адаптивних таб-барів, системних статус-барів і модальних переходів.",[3801,6977,6979],{"id":6978},"ієрархія-та-каскад-спадкування-конфігурацій","Ієрархія та каскад спадкування конфігурацій",[3743,6981,6982],{},"Налаштування екранів застосовуються за трирівневою каскадною моделлю з чітким пріоритетом:",[3987,6984,6987],{"className":6985,"code":6986,"language":4227},[4225],"[Рівень 1: Глобальні screenOptions] ──▶ [Рівень 2: Декларативні options екрана] ──▶ [Рівень 3: Рантайм setOptions()]\n   (Базові стилі для всього стека)           (Перевизначення для конкретного маршруту)         (Динамічні зміни під час роботи)\n",[3747,6988,6986],{"__ignoreMap":3992},[4231,6990,6991],{},[3987,6992,6994],{"className":4235,"code":6993,"language":4237,"meta":3992,"style":3992},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Анатомія screenOptions: Каскад спадкування та пріоритет перевизначення\"\n\nrectangle \"Рівень 1: Глобальні налаштування навігатора\\n\u003CStack screenOptions={{ ... }}> або \u003CTabs screenOptions={{ ... }}>\" as L1 #dbeafe {\n  note right\n    - headerShown: true\n    - headerStyle: { backgroundColor: colors.background }\n    - headerTintColor: colors.primary\n    - headerTitleStyle: { fontWeight: '600' }\n    - contentStyle: { backgroundColor: colors.background }\n  end note\n}\n\nrectangle \"Рівень 2: Декларативне перевизначення для конкретного маршруту\\n\u003CStack.Screen name='create-trip' options={{ ... }}>\" as L2 #fef3c7 {\n  note right\n    - title: 'Нова поїздка'\n    - presentation: 'modal'\n    - headerBackTitle: 'Назад'\n    - headerRight: () => \u003CSaveButton \u002F>\n  end note\n}\n\nrectangle \"Рівень 3: Динамічне виконання під час рендеру\\nnavigation.setOptions({ title: item.title, headerRight: ... })\" as L3 #dcfce7 {\n  note right\n    - Динамічний заголовок за даними з API\n    - Активність кнопки збереження (disabled \u002F enabled)\n    - Найвищий пріоритет у рантаймі!\n  end note\n}\n\nL1 -down-> L2 : Спадкується за замовчуванням\nL2 -down-> L3 : Перевизначається динамічно\n@enduml\n",[3747,6995,6996,7000,7004,7008,7012,7017,7021,7026,7031,7036,7041,7046,7051,7056,7060,7064,7068,7073,7077,7082,7087,7092,7097,7101,7105,7109,7114,7118,7123,7128,7133,7137,7141,7145,7150,7155],{"__ignoreMap":3992},[3996,6997,6998],{"class":3998,"line":3999},[3996,6999,4244],{},[3996,7001,7002],{"class":3998,"line":4047},[3996,7003,4249],{},[3996,7005,7006],{"class":3998,"line":4054},[3996,7007,4254],{},[3996,7009,7010],{"class":3998,"line":4075},[3996,7011,4051],{"emptyLinePlaceholder":4050},[3996,7013,7014],{"class":3998,"line":4126},[3996,7015,7016],{},"title \"Анатомія screenOptions: Каскад спадкування та пріоритет перевизначення\"\n",[3996,7018,7019],{"class":3998,"line":4132},[3996,7020,4051],{"emptyLinePlaceholder":4050},[3996,7022,7023],{"class":3998,"line":4137},[3996,7024,7025],{},"rectangle \"Рівень 1: Глобальні налаштування навігатора\\n\u003CStack screenOptions={{ ... }}> або \u003CTabs screenOptions={{ ... }}>\" as L1 #dbeafe {\n",[3996,7027,7028],{"class":3998,"line":4275},[3996,7029,7030],{},"  note right\n",[3996,7032,7033],{"class":3998,"line":4281},[3996,7034,7035],{},"    - headerShown: true\n",[3996,7037,7038],{"class":3998,"line":4287},[3996,7039,7040],{},"    - headerStyle: { backgroundColor: colors.background }\n",[3996,7042,7043],{"class":3998,"line":4293},[3996,7044,7045],{},"    - headerTintColor: colors.primary\n",[3996,7047,7048],{"class":3998,"line":4299},[3996,7049,7050],{},"    - headerTitleStyle: { fontWeight: '600' }\n",[3996,7052,7053],{"class":3998,"line":4305},[3996,7054,7055],{},"    - contentStyle: { backgroundColor: colors.background }\n",[3996,7057,7058],{"class":3998,"line":4311},[3996,7059,4344],{},[3996,7061,7062],{"class":3998,"line":4317},[3996,7063,4129],{},[3996,7065,7066],{"class":3998,"line":4323},[3996,7067,4051],{"emptyLinePlaceholder":4050},[3996,7069,7070],{"class":3998,"line":4329},[3996,7071,7072],{},"rectangle \"Рівень 2: Декларативне перевизначення для конкретного маршруту\\n\u003CStack.Screen name='create-trip' options={{ ... }}>\" as L2 #fef3c7 {\n",[3996,7074,7075],{"class":3998,"line":4335},[3996,7076,7030],{},[3996,7078,7079],{"class":3998,"line":4341},[3996,7080,7081],{},"    - title: 'Нова поїздка'\n",[3996,7083,7084],{"class":3998,"line":4347},[3996,7085,7086],{},"    - presentation: 'modal'\n",[3996,7088,7089],{"class":3998,"line":4352},[3996,7090,7091],{},"    - headerBackTitle: 'Назад'\n",[3996,7093,7094],{"class":3998,"line":4357},[3996,7095,7096],{},"    - headerRight: () => \u003CSaveButton \u002F>\n",[3996,7098,7099],{"class":3998,"line":4363},[3996,7100,4344],{},[3996,7102,7103],{"class":3998,"line":4369},[3996,7104,4129],{},[3996,7106,7107],{"class":3998,"line":4375},[3996,7108,4051],{"emptyLinePlaceholder":4050},[3996,7110,7111],{"class":3998,"line":4381},[3996,7112,7113],{},"rectangle \"Рівень 3: Динамічне виконання під час рендеру\\nnavigation.setOptions({ title: item.title, headerRight: ... })\" as L3 #dcfce7 {\n",[3996,7115,7116],{"class":3998,"line":4387},[3996,7117,7030],{},[3996,7119,7120],{"class":3998,"line":4392},[3996,7121,7122],{},"    - Динамічний заголовок за даними з API\n",[3996,7124,7125],{"class":3998,"line":4398},[3996,7126,7127],{},"    - Активність кнопки збереження (disabled \u002F enabled)\n",[3996,7129,7130],{"class":3998,"line":4404},[3996,7131,7132],{},"    - Найвищий пріоритет у рантаймі!\n",[3996,7134,7135],{"class":3998,"line":4410},[3996,7136,4344],{},[3996,7138,7139],{"class":3998,"line":4415},[3996,7140,4129],{},[3996,7142,7143],{"class":3998,"line":4420},[3996,7144,4051],{"emptyLinePlaceholder":4050},[3996,7146,7147],{"class":3998,"line":4426},[3996,7148,7149],{},"L1 -down-> L2 : Спадкується за замовчуванням\n",[3996,7151,7152],{"class":3998,"line":4432},[3996,7153,7154],{},"L2 -down-> L3 : Перевизначається динамічно\n",[3996,7156,7157],{"class":3998,"line":4438},[3996,7158,4480],{},[3966,7160],{},[3801,7162,7164],{"id":7163},"_1-загальні-параметри-нативного-заголовка-header-screen-options","1. Загальні параметри нативного заголовка (Header Screen Options)",[3743,7166,7167,7168,7170,7171,7173,7174,7176,7177,7179],{},"Ці параметри доступні як у ",[3747,7169,3844],{},", так і в ",[3747,7172,3840],{}," та відповідають за рендеринг верхньої навігаційної смуги (",[3747,7175,6487],{}," в iOS \u002F ",[3747,7178,6491],{}," в Android):",[5453,7181,7182,7192,7198,7204,7224,7236,7258,7269,7277,7292,7296,7300,7307,7312,7320,7325,7332,7336,7343,7347,7375],{},[5456,7183,7185,7186,7188,7189,3821],{"name":5483,"type":6483,"default":7184},"true","Визначає видимість нативної смуги заголовка. Встановлення значення ",[3747,7187,6495],{}," повністю приховує заголовок операційної системи, передаючи керування верхньою частиною екрана верстці React Native або компоненту ",[3747,7190,7191],{},"SafeAreaView",[5456,7193,7197],{"name":7194,"type":7195,"default":7196},"headerTitle","string | ((props: HeaderTitleProps) => ReactNode)","ім'я файлу","Текстовий заголовок екрана або функціональний React-компонент для рендерингу складного вмісту по центру шапки (наприклад, логотипу, перемикача сегментів чи аватара з підписом).",[5456,7199,7203],{"name":7200,"type":7201,"default":7202},"headerTitleAlign","'left' | 'center'","iOS: 'center', Android: 'left'","Горизонтальне вирівнювання заголовка. За замовчуванням на платформі iOS заголовок центрується, тоді як на Android притискається до лівого краю.",[5456,7205,7209,7210,3867,7213,3867,7216,3867,7219,3867,7221,3821],{"name":7206,"type":7207,"default":7208},"headerTitleStyle","TextStyle","нативний стиль ОС","Об'єкт стилізації тексту заголовка: ",[3747,7211,7212],{},"fontSize",[3747,7214,7215],{},"fontWeight",[3747,7217,7218],{},"fontFamily",[3747,7220,6758],{},[3747,7222,7223],{},"letterSpacing",[5456,7225,7228,7229,5118,7232,7235],{"name":7226,"type":6767,"default":7227},"headerTintColor","колір системного акценту","Колір відтінку інтерактивних елементів заголовка: іконки та тексту кнопки «Назад», іконок дій у ",[3747,7230,7231],{},"headerLeft",[3747,7233,7234],{},"headerRight"," та стандартного заголовка.",[5456,7237,7240,7241,3867,7244,7247,7248,7251,7252,3867,7255,3821],{"name":7238,"type":6778,"default":7239},"headerStyle","нативний фон","Стиль контейнера панелі заголовка: ",[3747,7242,7243],{},"backgroundColor",[3747,7245,7246],{},"elevation"," (Android), ",[3747,7249,7250],{},"shadowOpacity"," (iOS), ",[3747,7253,7254],{},"borderBottomWidth",[3747,7256,7257],{},"borderBottomColor",[5456,7259,7261,7262,7264,7265,7268],{"name":7260,"type":6483,"default":6495},"headerTransparent","Вмикає абсолютне позиціонування заголовка поверх контенту екрана. При значенні ",[3747,7263,7184],{}," контент починається з верхнього краю дисплея ",[3747,7266,7267],{},"y = 0"," (ідеально для екранів з фотообкладинками та мапами).",[5456,7270,7273,7274,3877],{"name":7271,"type":7272},"headerBlurEffect","'regular' | 'prominent' | 'extraLight' | 'light' | 'dark' (iOS)","Вмикає нативне розмиття фону заголовка в стилі iOS (застосовується разом із напівпрозорим фоном або ",[3747,7275,7276],{},"headerTransparent: true",[5456,7278,7281,7282,4610,7285,7288,7289,3877],{"name":7279,"type":7280},"headerBackground","() => ReactNode","Функція повернення кастомного фонового компонента для хедера (наприклад, ",[3747,7283,7284],{},"BlurView",[3747,7286,7287],{},"expo-blur"," або градієнта ",[3747,7290,7291],{},"LinearGradient",[5456,7293,7295],{"name":7231,"type":7294},"((props: { tintColor?: string, canGoBack?: boolean, label?: string }) => ReactNode)","Кастомний React-компонент для лівої частини заголовка (замінює або доповнює стандартну кнопку повернення «Назад»).",[5456,7297,7299],{"name":7234,"type":7298},"((props: { tintColor?: string }) => ReactNode)","Кастомний React-компонент для правої частини заголовка (кнопки збереження, іконки фільтрів, шестерня налаштувань, аватар профілю).",[5456,7301,7303,7304,7306],{"name":7302,"type":6483,"default":7184},"headerBackVisible","Чи показувати стандартну стрілку\u002Fкнопку повернення «Назад». Якщо встановити в ",[3747,7305,6495],{},", кнопка приховується навіть за наявності попередніх екранів у стеку.",[5456,7308,7311],{"name":7309,"type":6499,"default":7310},"headerBackTitle","назва попереднього екрана","Текстовий підпис кнопки повернення на платформі iOS (наприклад, «Назад» або «Скасувати»).",[5456,7313,7316,7317,7319],{"name":7314,"type":7315,"default":7184},"headerBackTitleVisible","boolean (iOS)","Чи відображати текстовий підпис біля стрілки «Назад» на iOS (якщо ",[3747,7318,6495],{},", відображається лише шеврон без тексту).",[5456,7321,7324],{"name":7322,"type":7323},"headerBackTitleStyle","TextStyle (iOS)","Стиль шрифту текстового підпису кнопки «Назад».",[5456,7326,7328,7329,7331],{"name":7327,"type":6483,"default":7184},"headerShadowVisible","Чи відображати нативну тінь (iOS) або смугу розділення\u002Felevation (Android) під заголовком. Значення ",[3747,7330,6495],{}," робить перехід між заголовком і тілом екрана безшовним.",[5456,7333,7335],{"name":7334,"type":7315,"default":6495},"headerLargeTitle","Вмикає підтримку великого заголовка в стилі iOS (Large Title), який плавно згортається у звичайний заголовок під час скролу списку.",[5456,7337,7339,7340,3877],{"name":7338,"type":7323},"headerLargeTitleStyle","Стиль тексту великого заголовка (наприклад, ",[3747,7341,7342],{},"fontSize: 34, fontWeight: '700'",[5456,7344,7346],{"name":7345,"type":7315,"default":7184},"headerLargeTitleShadowVisible","Видимість розділової тіні під великим заголовком.",[5456,7348,7351,7352,7355,7356,7359,7360,3867,7363,3867,7366,3867,7369,3867,7372,3821],{"name":7349,"type":7350},"headerSearchBarOptions","HeaderSearchBarOptions (iOS\u002FAndroid)","Інтегрує нативний рядок пошуку безпосередньо в заголовок (",[3747,7353,7354],{},"UISearchController"," на iOS \u002F ",[3747,7357,7358],{},"SearchView"," на Android). Приймає об'єкт з полями ",[3747,7361,7362],{},"placeholder",[3747,7364,7365],{},"onChangeText",[3747,7367,7368],{},"onSearchButtonPress",[3747,7370,7371],{},"hideWhenScrolling",[3747,7373,7374],{},"tintColor",[5456,7376,7379,7380,7383],{"name":7377,"type":7378},"headerPressColorAndroid","string (Android)","Колір хвильового ефекту торкання (",[3796,7381,7382],{},"Ripple effect",") для кнопок у заголовку на платформі Android.",[3966,7385],{},[3801,7387,7389],{"id":7388},"_2-специфічні-параметри-стекового-навігатора-stack-screen-options","2. Специфічні параметри стекового навігатора (Stack Screen Options)",[3743,7391,7392,7393,5191],{},"Ці параметри конфігурують поведінку LIFO-стека, модальність вікон, системні статус-бари та анімації переходу нативного стека (",[3747,7394,7395],{},"@react-navigation\u002Fnative-stack",[5453,7397,7398,7435,7469,7474,7482,7488,7496,7504,7508,7513,7517,7530,7534,7539,7543,7547],{},[5456,7399,7402,7405],{"name":7400,"type":7401,"default":6474},"presentation","'card' | 'modal' | 'transparentModal' | 'containedModal' | 'fullScreenModal' | 'formSheet'",[3743,7403,7404],{},"Тип візуального представлення та модальності екрана:",[3806,7406,7407,7412,7417,7423,7429],{},[3762,7408,7409,7411],{},[3747,7410,6474],{}," — стандартний екран стека з горизонтальним зсувом;",[3762,7413,7414,7416],{},[3747,7415,6478],{}," — нативне модальне вікно (на iOS з'являється знизу з ефектом масштабування батьківського екрана);",[3762,7418,7419,7422],{},[3747,7420,7421],{},"'transparentModal'"," — модальне вікно з прозорим фоном, крізь який видно попередній екран;",[3762,7424,7425,7428],{},[3747,7426,7427],{},"'fullScreenModal'"," — модальне вікно, що перекриває весь дисплей включно зі статус-баром;",[3762,7430,7431,7434],{},[3747,7432,7433],{},"'formSheet'"," — модальний лист у стилі iPad\u002Fпланшетів.",[5456,7436,7440,7443],{"name":7437,"type":7438,"default":7439},"animation","'default' | 'fade' | 'fade_from_bottom' | 'flip' | 'simple_push' | 'slide_from_bottom' | 'slide_from_right' | 'slide_from_left' | 'none'","'default'",[3743,7441,7442],{},"Тип нативної анімації переходу між екранами:",[3806,7444,7445,7451,7457,7463],{},[3762,7446,7447,7450],{},[3747,7448,7449],{},"'slide_from_right'"," — класичний перехід Android\u002FiOS;",[3762,7452,7453,7456],{},[3747,7454,7455],{},"'slide_from_bottom'"," — виїзд знизу;",[3762,7458,7459,7462],{},[3747,7460,7461],{},"'fade'"," — плавне згасання\u002Fпоява;",[3762,7464,7465,7468],{},[3747,7466,7467],{},"'none'"," — миттєве перемикання без анімації.",[5456,7470,7473],{"name":7471,"type":7472},"animationDuration","number (мс)","Тривалість нативної анімації переходу в мілісекундах.",[5456,7475,7478,7479,7481],{"name":7476,"type":6483,"default":7477},"gestureEnabled","iOS: true, Android: false","Чи увімкнений нативний жест повернення змахуванням (",[3796,7480,4210],{}," на iOS або свайп назад).",[5456,7483,7487],{"name":7484,"type":7485,"default":7486},"gestureDirection","'horizontal' | 'vertical' | 'horizontal-inverted' | 'vertical-inverted'","'horizontal'","Напрямок жесту пальця для повернення на попередній екран.",[5456,7489,7491,7492,7495],{"name":7490,"type":7315,"default":6495},"fullScreenGestureEnabled","Дозволяє здійснювати жест повернення назад свайпом з ",[3765,7493,7494],{},"будь-якої точки дисплея",", а не лише від самого лівого краю.",[5456,7497,7499,7500,7503],{"name":7498,"type":6778},"contentStyle","Стиль кореневого нативного контейнера екрана (",[3747,7501,7502],{},"backgroundColor: colors.background","). Запобігає білим спалахам під час анімацій у темній темі.",[5456,7505,7507],{"name":7506,"type":7315,"default":6495},"autoHideHomeIndicator","Автоматичне приховування смуги домашнього індикатора жестів на iOS без рамки.",[5456,7509,7512],{"name":7510,"type":7511,"default":7439},"orientation","'default' | 'all' | 'portrait' | 'portrait_up' | 'portrait_down' | 'landscape' | 'landscape_left' | 'landscape_right'","Примусова орієнтація екрана (наприклад, блокування в портретному режимі для форми або альбомному для перегляду медіа).",[5456,7514,7516],{"name":7515,"type":7378},"statusBarColor","Колір фону системного статус-бара на платформі Android.",[5456,7518,7521,7522,7525,7526,7529],{"name":7519,"type":7520},"statusBarStyle","'auto' | 'inverted' | 'light' | 'dark'","Стиль іконок і тексту системного статус-бара (",[3747,7523,7524],{},"'light'"," — білий текст для темного фону, ",[3747,7527,7528],{},"'dark'"," — темний текст для світлого).",[5456,7531,7533],{"name":7532,"type":6483,"default":6495},"statusBarHidden","Чи приховувати системний статус-бар при переході на даний екран.",[5456,7535,7538],{"name":7536,"type":7537,"default":6495},"statusBarTranslucent","boolean (Android)","Чи робити статус-бар напівпрозорим на Android, дозволяючи контенту рендеритися під ним.",[5456,7540,7542],{"name":7541,"type":7378},"navigationBarColor","Колір фону нижньої системної панелі керування операційної системи Android.",[5456,7544,7546],{"name":7545,"type":7537,"default":6495},"navigationBarHidden","Чи приховувати нижню системну навігаційну смугу на Android.",[5456,7548,7550,7551,7554],{"name":7549,"type":6483,"default":7184},"freezeOnBlur","Оптимізація пам'яті через бібліотеку ",[3747,7552,7553],{},"react-freeze",": заморожує повторний рендеринг компонентів екрана, коли він перекритий іншим екраном стека.",[3966,7556],{},[3801,7558,7560],{"id":7559},"_3-специфічні-параметри-панелі-вкладок-bottom-tabs-options","3. Специфічні параметри панелі вкладок (Bottom Tabs Options)",[3743,7562,7563,7564,4061,7566,5191],{},"Ці параметри керують конфігурацією нижньої панелі вкладок ",[3747,7565,5465],{},[3747,7567,7568],{},"@react-navigation\u002Fbottom-tabs",[5453,7570,7571,7578,7587,7593,7603,7617,7629,7639,7643,7647,7669,7676,7681,7685,7689,7694,7698],{},[5456,7572,7574,7575,7577],{"name":7573,"type":6483,"default":7184},"tabBarShowLabel","Чи показувати текстові підписи під іконками вкладок. Якщо встановити у ",[3747,7576,6495],{},", таб-бар відображатиме виключно іконки.",[5456,7579,7582,7583,7586],{"name":7580,"type":7581},"tabBarLabel","string | ((props: { focused: boolean, color: string, position: LabelPosition, children: string }) => ReactNode)","Текстовий підпис вкладки або кастомна функція його рендерингу (перевизначає параметр ",[3747,7584,7585],{},"title"," спеціально для нижньої панелі).",[5456,7588,7592],{"name":7589,"type":7590,"default":7591},"tabBarLabelPosition","'below-icon' | 'beside-icon'","'below-icon'","Позиція текстового підпису: під іконкою чи праворуч від неї (актуально для планшетів та ландшафтного режиму).",[5456,7594,7596,7597,3867,7599,3867,7601,3877],{"name":7595,"type":7207},"tabBarLabelStyle","Об'єкт стилізації тексту вкладки (",[3747,7598,7212],{},[3747,7600,7215],{},[3747,7602,7218],{},[5456,7604,7607,7608,7611,7612,7614,7615,3821],{"name":7605,"type":7606},"tabBarIcon","((props: { focused: boolean, color: string, size: number }) => ReactNode)","Функція зворотного виклику для рендерингу векторної іконки вкладки. Отримує обчислений стан фокусу ",[3747,7609,7610],{},"focused",", розмір ",[3747,7613,6762],{}," (зазвичай 24–28) та колір ",[3747,7616,6758],{},[5456,7618,7621,7622,7625,7626,3877],{"name":7619,"type":7620},"tabBarBadge","string | number","Бейдж над іконкою вкладки (наприклад, лічильник непрочитаних сповіщень ",[3747,7623,7624],{},"3"," або точка ",[3747,7627,7628],{},"'!'",[5456,7630,7632,7633,3867,7635,3867,7637,3821],{"name":7631,"type":7207},"tabBarBadgeStyle","Стиль бейджа сповіщень: ",[3747,7634,7243],{},[3747,7636,6758],{},[3747,7638,7212],{},[5456,7640,7642],{"name":7641,"type":6767},"tabBarActiveTintColor \u002F tabBarInactiveTintColor","Колір іконки та тексту для активної (вибраної) та неактивної вкладки відповідно.",[5456,7644,7646],{"name":7645,"type":6767},"tabBarActiveBackgroundColor \u002F tabBarInactiveBackgroundColor","Колір фону окремого елемента вкладки в активному та неактивному станах.",[5456,7648,7650,7651,3867,7653,3867,7656,3867,7659,3867,7662,3867,7665,7668],{"name":7649,"type":6778},"tabBarStyle","Стиль контейнера нижньої панелі вкладок: ",[3747,7652,7243],{},[3747,7654,7655],{},"height",[3747,7657,7658],{},"borderTopColor",[3747,7660,7661],{},"position: 'absolute'",[3747,7663,7664],{},"bottom",[3747,7666,7667],{},"borderRadius"," (для створення плаваючого таб-бару з тінню).",[5456,7670,7672,7673,7675],{"name":7671,"type":7280},"tabBarBackground","Кастомний фоновий компонент для панелі вкладок (наприклад, ",[3747,7674,7284],{}," для напівпрозорого розмиття контенту під панеллю).",[5456,7677,7680],{"name":7678,"type":7679},"tabBarButton","((props: BottomTabBarButtonProps) => ReactNode)","Кастомний React-компонент кнопки вкладки (використовується для створення опуклих центральних кнопок «+» або кастомних анімацій при тапі).",[5456,7682,7684],{"name":7683,"type":6778},"tabBarItemStyle","Стилізація контейнера кожного окремого елемента вкладки.",[5456,7686,7688],{"name":7687,"type":7537,"default":6495},"tabBarHideOnKeyboard","Чи приховувати панель вкладок при відкритті екранної клавіатури, запобігаючи її накладанню на поля вводу.",[5456,7690,7693],{"name":7691,"type":7692},"tabBarAccessibilityLabel","string","Текстовий підпис доступності для екранних дикторів VoiceOver \u002F TalkBack.",[5456,7695,7697],{"name":7696,"type":6483,"default":7184},"lazy","Ліниве монтування екранів вкладок: екран рендериться лише тоді, коли користувач вперше переходить на відповідну вкладку.",[5456,7699,7701,7702,7704,7705,7707],{"name":7700,"type":6483,"default":6495},"unmountOnBlur","Чи повністю розмонтовувати екран при переході на іншу вкладку. За замовчуванням ",[3747,7703,6495],{}," (стан та скрол зберігаються); встановлення ",[3747,7706,7184],{}," очищує пам'ять та скидає стан екрана.",[3966,7709],{},[3801,7711,7713,7714,7716,7717],{"id":7712},"_4-динамічна-функціональна-форма-screenoptions-та-хук-usenavigation","4. Динамічна функціональна форма ",[3747,7715,5478],{}," та хук ",[3747,7718,7719],{},"useNavigation",[3743,7721,7722,7723,7725,7726,7729,7730,7733,7734,5191],{},"Параметр ",[3747,7724,5478],{}," може приймати не лише статичний об'єкт, а й ",[3765,7727,7728],{},"функцію зворотного виклику",", яка отримує поточний маршрут (",[3747,7731,7732],{},"route",") та об'єкт навігації (",[3747,7735,7736],{},"navigation",[3987,7738,7740],{"className":3989,"code":7739,"language":3991,"meta":3992,"style":3992},"\u003CStack\n  screenOptions={({ route }) => ({\n    headerTitle: route.name === 'create-trip' ? 'Створення' : 'Nomad',\n    headerShown: !route.name.startsWith('('),\n  })}\n\u002F>\n",[3747,7741,7742,7748,7769,7798,7825,7832],{"__ignoreMap":3992},[3996,7743,7744,7746],{"class":3998,"line":3999},[3996,7745,4026],{"class":4081},[3996,7747,5672],{"class":4085},[3996,7749,7750,7753,7755,7757,7760,7762,7764,7766],{"class":3998,"line":4047},[3996,7751,7752],{"class":4089},"  screenOptions",[3996,7754,4093],{"class":4006},[3996,7756,4096],{"class":4002},[3996,7758,7759],{"class":4099},"({ ",[3996,7761,7732],{"class":4064},[3996,7763,6881],{"class":4099},[3996,7765,4103],{"class":4002},[3996,7767,7768],{"class":4099}," ({\n",[3996,7770,7771,7774,7777,7779,7781,7783,7786,7788,7791,7793,7796],{"class":3998,"line":4054},[3996,7772,7773],{"class":4064},"    headerTitle:",[3996,7775,7776],{"class":4064}," route",[3996,7778,3821],{"class":4099},[3996,7780,6457],{"class":4064},[3996,7782,5646],{"class":4006},[3996,7784,7785],{"class":4029}," 'create-trip'",[3996,7787,5652],{"class":4006},[3996,7789,7790],{"class":4029}," 'Створення'",[3996,7792,5658],{"class":4006},[3996,7794,7795],{"class":4029}," 'Nomad'",[3996,7797,5720],{"class":4099},[3996,7799,7800,7803,7806,7808,7810,7812,7814,7817,7819,7822],{"class":3998,"line":4075},[3996,7801,7802],{"class":4064},"    headerShown:",[3996,7804,7805],{"class":4006}," !",[3996,7807,7732],{"class":4064},[3996,7809,3821],{"class":4099},[3996,7811,6457],{"class":4064},[3996,7813,3821],{"class":4099},[3996,7815,7816],{"class":4022},"startsWith",[3996,7818,4109],{"class":4099},[3996,7820,7821],{"class":4029},"'('",[3996,7823,7824],{"class":4099},"),\n",[3996,7826,7827,7830],{"class":3998,"line":4126},[3996,7828,7829],{"class":4099},"  })",[3996,7831,4129],{"class":4002},[3996,7833,7834],{"class":3998,"line":4132},[3996,7835,6940],{"class":4081},[3743,7837,7838,7839,7841,7842,7844,7845,6869],{},"Крім того, будь-який компонент екрана всередині ",[3747,7840,3793],{}," може динамічно оновлювати власні ",[3747,7843,6465],{}," під час роботи за допомогою хука ",[3765,7846,7847],{},[3747,7848,7719],{},[3987,7850,7852],{"className":3989,"code":7851,"language":3991,"meta":3992,"style":3992},"import { useLayoutEffect } from 'react';\nimport { useNavigation } from 'expo-router';\nimport { Pressable, Text } from 'react-native';\n\nexport default function EditTripScreen() {\n  const navigation = useNavigation();\n\n  useLayoutEffect(() => {\n    navigation.setOptions({\n      title: 'Редагування поїздки',\n      headerRight: () => (\n        \u003CPressable onPress={() => alert('Збережено!')}>\n          \u003CText style={{ color: '#2563eb', fontWeight: '600' }}>Готово\u003C\u002FText>\n        \u003C\u002FPressable>\n      ),\n    });\n  }, [navigation]);\n\n  return null;\n}\n",[3747,7853,7854,7872,7888,7911,7915,7928,7942,7946,7959,7972,7982,7996,8027,8070,8079,8084,8089,8099,8103,8112],{"__ignoreMap":3992},[3996,7855,7856,7858,7860,7863,7865,7867,7870],{"class":3998,"line":3999},[3996,7857,5501],{"class":4057},[3996,7859,5504],{"class":4006},[3996,7861,7862],{"class":4064},"useLayoutEffect",[3996,7864,5509],{"class":4006},[3996,7866,5512],{"class":4057},[3996,7868,7869],{"class":4029}," 'react'",[3996,7871,4123],{"class":4006},[3996,7873,7874,7876,7878,7880,7882,7884,7886],{"class":3998,"line":4047},[3996,7875,5501],{"class":4057},[3996,7877,5504],{"class":4006},[3996,7879,7719],{"class":4064},[3996,7881,5509],{"class":4006},[3996,7883,5512],{"class":4057},[3996,7885,5515],{"class":4029},[3996,7887,4123],{"class":4006},[3996,7889,7890,7892,7894,7897,7899,7902,7904,7906,7909],{"class":3998,"line":4054},[3996,7891,5501],{"class":4057},[3996,7893,5504],{"class":4006},[3996,7895,7896],{"class":4064},"Pressable",[3996,7898,3867],{"class":4006},[3996,7900,7901],{"class":4064},"Text",[3996,7903,5509],{"class":4006},[3996,7905,5512],{"class":4057},[3996,7907,7908],{"class":4029}," 'react-native'",[3996,7910,4123],{"class":4006},[3996,7912,7913],{"class":3998,"line":4075},[3996,7914,4051],{"emptyLinePlaceholder":4050},[3996,7916,7917,7919,7921,7923,7926],{"class":3998,"line":4126},[3996,7918,5947],{"class":4057},[3996,7920,5950],{"class":4057},[3996,7922,5953],{"class":4002},[3996,7924,7925],{"class":4022}," EditTripScreen",[3996,7927,5588],{"class":4006},[3996,7929,7930,7932,7935,7938,7940],{"class":3998,"line":4132},[3996,7931,5593],{"class":4002},[3996,7933,7934],{"class":4010}," navigation",[3996,7936,7937],{"class":4006}," = ",[3996,7939,7719],{"class":4022},[3996,7941,5611],{"class":4006},[3996,7943,7944],{"class":3998,"line":4137},[3996,7945,4051],{"emptyLinePlaceholder":4050},[3996,7947,7948,7951,7954,7956],{"class":3998,"line":4275},[3996,7949,7950],{"class":4022},"  useLayoutEffect",[3996,7952,7953],{"class":4006},"(() ",[3996,7955,4103],{"class":4002},[3996,7957,7958],{"class":4006}," {\n",[3996,7960,7961,7964,7966,7969],{"class":3998,"line":4281},[3996,7962,7963],{"class":4064},"    navigation",[3996,7965,3821],{"class":4006},[3996,7967,7968],{"class":4022},"setOptions",[3996,7970,7971],{"class":4006},"({\n",[3996,7973,7974,7977,7980],{"class":3998,"line":4287},[3996,7975,7976],{"class":4064},"      title:",[3996,7978,7979],{"class":4029}," 'Редагування поїздки'",[3996,7981,5720],{"class":4006},[3996,7983,7984,7987,7989,7992,7994],{"class":3998,"line":4293},[3996,7985,7986],{"class":4022},"      headerRight",[3996,7988,6869],{"class":4064},[3996,7990,7991],{"class":4006}," () ",[3996,7993,4103],{"class":4002},[3996,7995,5622],{"class":4006},[3996,7997,7998,8000,8002,8005,8007,8009,8011,8013,8016,8018,8021,8023,8025],{"class":3998,"line":4299},[3996,7999,5791],{"class":4081},[3996,8001,7896],{"class":4085},[3996,8003,8004],{"class":4089}," onPress",[3996,8006,4093],{"class":4006},[3996,8008,4096],{"class":4002},[3996,8010,4100],{"class":4099},[3996,8012,4103],{"class":4002},[3996,8014,8015],{"class":4022}," alert",[3996,8017,4109],{"class":4099},[3996,8019,8020],{"class":4029},"'Збережено!'",[3996,8022,4114],{"class":4099},[3996,8024,4117],{"class":4002},[3996,8026,5924],{"class":4081},[3996,8028,8029,8032,8034,8036,8038,8040,8042,8044,8047,8049,8051,8053,8055,8057,8060,8063,8066,8068],{"class":3998,"line":4305},[3996,8030,8031],{"class":4081},"          \u003C",[3996,8033,7901],{"class":4085},[3996,8035,5637],{"class":4089},[3996,8037,4093],{"class":4006},[3996,8039,4096],{"class":4002},[3996,8041,5812],{"class":4099},[3996,8043,5730],{"class":4064},[3996,8045,8046],{"class":4029}," '#2563eb'",[3996,8048,3867],{"class":4099},[3996,8050,5741],{"class":4064},[3996,8052,5744],{"class":4029},[3996,8054,5821],{"class":4099},[3996,8056,4117],{"class":4002},[3996,8058,8059],{"class":4081},">",[3996,8061,8062],{"class":4006},"Готово",[3996,8064,8065],{"class":4081},"\u003C\u002F",[3996,8067,7901],{"class":4085},[3996,8069,5924],{"class":4081},[3996,8071,8072,8075,8077],{"class":3998,"line":4311},[3996,8073,8074],{"class":4081},"        \u003C\u002F",[3996,8076,7896],{"class":4085},[3996,8078,5924],{"class":4081},[3996,8080,8081],{"class":3998,"line":4317},[3996,8082,8083],{"class":4006},"      ),\n",[3996,8085,8086],{"class":3998,"line":4323},[3996,8087,8088],{"class":4006},"    });\n",[3996,8090,8091,8094,8096],{"class":3998,"line":4329},[3996,8092,8093],{"class":4006},"  }, [",[3996,8095,7736],{"class":4064},[3996,8097,8098],{"class":4006},"]);\n",[3996,8100,8101],{"class":3998,"line":4335},[3996,8102,4051],{"emptyLinePlaceholder":4050},[3996,8104,8105,8107,8110],{"class":3998,"line":4341},[3996,8106,4078],{"class":4057},[3996,8108,8109],{"class":4002}," null",[3996,8111,4123],{"class":4006},[3996,8113,8114],{"class":3998,"line":4347},[3996,8115,4129],{"class":4006},[3966,8117],{},[3738,8119,8121,8122],{"id":8120},"логічне-групування-маршрутів-семантика-директорій-group","Логічне групування маршрутів: Семантика директорій ",[3747,8123,3885],{},[3743,8125,8126,8127,8130,8131,4599,8136,8141,8142,3821],{},"У структурі файлового роутера назви директорій, взяті в ",[3765,8128,8129],{},"круглі дужки",", наприклад ",[3765,8132,8133],{},[3747,8134,8135],{},"app\u002F(tabs)\u002F",[3765,8137,8138],{},[3747,8139,8140],{},"app\u002F(auth)\u002F",", називаються ",[3765,8143,8144],{},"групами маршрутів (Route Groups)",[3743,8146,8147,8148,3821],{},"Круглі дужки є спеціальним синтаксичним маркером, який повідомляє компілятору Expo Router: ",[3765,8149,8150],{},"ця директорія слугує виключно для логічної організації файлів та ізоляції макетів, але не додає власний сегмент до фінального рядка URL-маршруту",[3987,8152,8155],{"className":8153,"code":8154,"language":4227},[4225],"  ФАЙЛОВА СТРУКТУРА НА ДИСКУ                     РЕЗУЛЬТУЮЧИЙ МАРШРУТ (URL)\n+-----------------------------------+       +-----------------------------------+\n| app\u002F                              |       |                                   |\n| └── (tabs)\u002F                       |  -->  | (Сегмент \"(tabs)\" ігнорується)   |\n|     ├── index.tsx                 |  -->  | \"\u002F\"                               |\n|     ├── places.tsx                |  -->  | \"\u002Fplaces\"                         |\n|     └── about.tsx                 |  -->  | \"\u002Fabout\"                          |\n+-----------------------------------+       +-----------------------------------+\n",[3747,8156,8154],{"__ignoreMap":3992},[4231,8158,8159],{},[3987,8160,8162],{"className":4235,"code":8161,"language":4237,"meta":3992,"style":3992},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Семантика груп маршрутів (group): Ізоляція макетів без сегмента URL\"\n\nnode \"Файлова система на диску\" as FS #f8fafc {\n  folder \"app\u002F\" as APP #e2e8f0 {\n    folder \"(tabs)\u002F [Група вкладок]\" as G_TABS #dbeafe {\n      file \"_layout.tsx\" as TL_F #bfdbfe\n      file \"index.tsx\" as T1_F #bfdbfe\n      file \"places.tsx\" as T2_F #bfdbfe\n      file \"about.tsx\" as T3_F #bfdbfe\n    }\n    folder \"(auth)\u002F [Група авторизації]\" as G_AUTH #fef3c7 {\n      file \"_layout.tsx\" as AL_F #fde68a\n      file \"login.tsx\" as A1_F #fde68a\n      file \"register.tsx\" as A2_F #fde68a\n    }\n    file \"create-trip.tsx\" as CR_F #fee2e2\n  }\n}\n\nnode \"URL-простір маршрутів (Public Routes)\" as URLS #f0fdf4 {\n  [Маршрут: \"\u002F\"] as U_ROOT #bbf7d0\n  [Маршрут: \"\u002Fplaces\"] as U_PLC #bbf7d0\n  [Маршрут: \"\u002Fabout\"] as U_ABT #bbf7d0\n  [Маршрут: \"\u002Flogin\"] as U_LOG #bbf7d0\n  [Маршрут: \"\u002Fregister\"] as U_REG #bbf7d0\n  [Маршрут: \"\u002Fcreate-trip\"] as U_CRT #bbf7d0\n}\n\nT1_F --> U_ROOT : дужки (tabs) опускаються\nT2_F --> U_PLC : дужки (tabs) опускаються\nT3_F --> U_ABT : дужки (tabs) опускаються\nA1_F --> U_LOG : дужки (auth) опускаються\nA2_F --> U_REG : дужки (auth) опускаються\nCR_F --> U_CRT : пряме відображення\n@enduml\n",[3747,8163,8164,8168,8172,8176,8180,8185,8189,8194,8199,8204,8209,8214,8219,8224,8228,8233,8238,8243,8248,8252,8257,8261,8265,8269,8274,8279,8284,8289,8294,8299,8304,8308,8312,8317,8322,8327,8332,8337,8342],{"__ignoreMap":3992},[3996,8165,8166],{"class":3998,"line":3999},[3996,8167,4244],{},[3996,8169,8170],{"class":3998,"line":4047},[3996,8171,4249],{},[3996,8173,8174],{"class":3998,"line":4054},[3996,8175,4254],{},[3996,8177,8178],{"class":3998,"line":4075},[3996,8179,4051],{"emptyLinePlaceholder":4050},[3996,8181,8182],{"class":3998,"line":4126},[3996,8183,8184],{},"title \"Семантика груп маршрутів (group): Ізоляція макетів без сегмента URL\"\n",[3996,8186,8187],{"class":3998,"line":4132},[3996,8188,4051],{"emptyLinePlaceholder":4050},[3996,8190,8191],{"class":3998,"line":4137},[3996,8192,8193],{},"node \"Файлова система на диску\" as FS #f8fafc {\n",[3996,8195,8196],{"class":3998,"line":4275},[3996,8197,8198],{},"  folder \"app\u002F\" as APP #e2e8f0 {\n",[3996,8200,8201],{"class":3998,"line":4281},[3996,8202,8203],{},"    folder \"(tabs)\u002F [Група вкладок]\" as G_TABS #dbeafe {\n",[3996,8205,8206],{"class":3998,"line":4287},[3996,8207,8208],{},"      file \"_layout.tsx\" as TL_F #bfdbfe\n",[3996,8210,8211],{"class":3998,"line":4293},[3996,8212,8213],{},"      file \"index.tsx\" as T1_F #bfdbfe\n",[3996,8215,8216],{"class":3998,"line":4299},[3996,8217,8218],{},"      file \"places.tsx\" as T2_F #bfdbfe\n",[3996,8220,8221],{"class":3998,"line":4305},[3996,8222,8223],{},"      file \"about.tsx\" as T3_F #bfdbfe\n",[3996,8225,8226],{"class":3998,"line":4311},[3996,8227,5379],{},[3996,8229,8230],{"class":3998,"line":4317},[3996,8231,8232],{},"    folder \"(auth)\u002F [Група авторизації]\" as G_AUTH #fef3c7 {\n",[3996,8234,8235],{"class":3998,"line":4323},[3996,8236,8237],{},"      file \"_layout.tsx\" as AL_F #fde68a\n",[3996,8239,8240],{"class":3998,"line":4329},[3996,8241,8242],{},"      file \"login.tsx\" as A1_F #fde68a\n",[3996,8244,8245],{"class":3998,"line":4335},[3996,8246,8247],{},"      file \"register.tsx\" as A2_F #fde68a\n",[3996,8249,8250],{"class":3998,"line":4341},[3996,8251,5379],{},[3996,8253,8254],{"class":3998,"line":4347},[3996,8255,8256],{},"    file \"create-trip.tsx\" as CR_F #fee2e2\n",[3996,8258,8259],{"class":3998,"line":4352},[3996,8260,4384],{},[3996,8262,8263],{"class":3998,"line":4357},[3996,8264,4129],{},[3996,8266,8267],{"class":3998,"line":4363},[3996,8268,4051],{"emptyLinePlaceholder":4050},[3996,8270,8271],{"class":3998,"line":4369},[3996,8272,8273],{},"node \"URL-простір маршрутів (Public Routes)\" as URLS #f0fdf4 {\n",[3996,8275,8276],{"class":3998,"line":4375},[3996,8277,8278],{},"  [Маршрут: \"\u002F\"] as U_ROOT #bbf7d0\n",[3996,8280,8281],{"class":3998,"line":4381},[3996,8282,8283],{},"  [Маршрут: \"\u002Fplaces\"] as U_PLC #bbf7d0\n",[3996,8285,8286],{"class":3998,"line":4387},[3996,8287,8288],{},"  [Маршрут: \"\u002Fabout\"] as U_ABT #bbf7d0\n",[3996,8290,8291],{"class":3998,"line":4392},[3996,8292,8293],{},"  [Маршрут: \"\u002Flogin\"] as U_LOG #bbf7d0\n",[3996,8295,8296],{"class":3998,"line":4398},[3996,8297,8298],{},"  [Маршрут: \"\u002Fregister\"] as U_REG #bbf7d0\n",[3996,8300,8301],{"class":3998,"line":4404},[3996,8302,8303],{},"  [Маршрут: \"\u002Fcreate-trip\"] as U_CRT #bbf7d0\n",[3996,8305,8306],{"class":3998,"line":4410},[3996,8307,4129],{},[3996,8309,8310],{"class":3998,"line":4415},[3996,8311,4051],{"emptyLinePlaceholder":4050},[3996,8313,8314],{"class":3998,"line":4420},[3996,8315,8316],{},"T1_F --> U_ROOT : дужки (tabs) опускаються\n",[3996,8318,8319],{"class":3998,"line":4426},[3996,8320,8321],{},"T2_F --> U_PLC : дужки (tabs) опускаються\n",[3996,8323,8324],{"class":3998,"line":4432},[3996,8325,8326],{},"T3_F --> U_ABT : дужки (tabs) опускаються\n",[3996,8328,8329],{"class":3998,"line":4438},[3996,8330,8331],{},"A1_F --> U_LOG : дужки (auth) опускаються\n",[3996,8333,8334],{"class":3998,"line":4443},[3996,8335,8336],{},"A2_F --> U_REG : дужки (auth) опускаються\n",[3996,8338,8339],{"class":3998,"line":4448},[3996,8340,8341],{},"CR_F --> U_CRT : пряме відображення\n",[3996,8343,8344],{"class":3998,"line":4454},[3996,8345,4480],{},[3743,8347,8348,8349,8352,8353,8356],{},"Якби директорія називалася без дужок ",[3747,8350,8351],{},"app\u002Ftabs\u002Fplaces.tsx",", фінальний маршрут набув би вигляду ",[3747,8354,8355],{},"\u002Ftabs\u002Fplaces",", що створювало б зайву вкладеність в адресації.",[3801,8358,8360],{"id":8359},"архітектурні-сценарії-використання-груп","Архітектурні сценарії використання груп:",[3759,8362,8363,8374,8388],{},[3762,8364,8365,8368,8369,8371,8372,3821],{},[3765,8366,8367],{},"Ізоляція макетів (Layout Scoping):"," Об'єднання екранів, які повинні мати спільну панель вкладок ",[3747,8370,3840],{},", окремо від екранів, які повинні відображатися на весь дисплей у ",[3747,8373,3844],{},[3762,8375,8376,8379,8380,8383,8384,8387],{},[3765,8377,8378],{},"Сегрегація авторизаційних потоків:"," Створення груп ",[3747,8381,8382],{},"(auth)"," (для екранів входу та реєстрації зі своїм макетом) та ",[3747,8385,8386],{},"(app)"," (для основної робочої зони авторизованого користувача).",[3762,8389,8390,8393,8394,3867,8396,3867,8398,8401],{},[3765,8391,8392],{},"Підтримка чистоти кореневого простору імен:"," Дозволяє утримувати лаконічні та семантично чисті URL першого рівня (",[3747,8395,5118],{},[3747,8397,5121],{},[3747,8399,8400],{},"\u002Fprofile","), одночасно структурувавши десятки файлів проєкту за окремими підкаталогами.",[3966,8403],{},[3738,8405,8407,8408,4676,8410],{"id":8406},"програмне-та-декларативне-керування-переходами-link-та-userouter","Програмне та декларативне керування переходами: ",[3747,8409,3852],{},[3747,8411,3862],{},[3743,8413,8414,8415,8418,8419,8421,8422,8425,8426,3877],{},"Expo Router надає два взаємодоповнюючі механізми для реалізації переходів між маршрутами: ",[3765,8416,8417],{},"декларативний"," (компонент ",[3747,8420,3852],{},") та ",[3765,8423,8424],{},"імперативний"," (хук ",[3747,8427,3862],{},[3743,8429,8430],{},[4769,8431],{"alt":8432,"className":8433,"src":8434},"Link декларативно · router імперативно",[4773],"\u002Fimages\u002Freact-native\u002Fexpo-router-basics\u002F04.svg",[4231,8436,8437],{},[3987,8438,8440],{"className":4235,"code":8439,"language":4237,"meta":3992,"style":3992},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Декларативний Link vs Імперативний useRouter: Цикл обробки переходу\"\n\nactor Користувач as U\nparticipant \"UI View (\u003CLink> \u002F \u003CPressable>)\" as UI\nparticipant \"useRouter \u002F Link Dispatcher\" as Disp\nparticipant \"Expo Router State Engine\" as Engine\nparticipant \"React Navigation Controller\" as RNC\nparticipant \"Цільовий екран (Target Screen)\" as Target\n\nalt Декларативний перехід: \u003CLink href=\"\u002Fcreate-trip\" asChild>\n  U -> UI : Тап на елемент посилання\n  UI -> Disp : onPress обробник від Link\nelse Імперативний перехід: router.push('\u002Fcreate-trip')\n  U -> UI : Тап на кнопку форми\n  UI -> UI : Валідація схеми форми\n  UI -> Disp : router.push('\u002Fcreate-trip')\nend\n\nDisp -> Engine : dispatch({ type: 'NAVIGATE', payload: { name: 'create-trip' } })\nEngine -> Engine : Перевірка Typed Routes & пошук маршруту в AST\nEngine -> RNC : Виклик нативної стекової операції Push\nRNC -> Target : Монтування компонента Target + запуск транзиції\nTarget --> U : Відображення нового екрана (60\u002F120 FPS)\n@enduml\n",[3747,8441,8442,8446,8450,8454,8458,8463,8467,8471,8476,8481,8486,8491,8496,8500,8505,8510,8515,8520,8525,8530,8535,8540,8544,8549,8554,8559,8564,8569],{"__ignoreMap":3992},[3996,8443,8444],{"class":3998,"line":3999},[3996,8445,4244],{},[3996,8447,8448],{"class":3998,"line":4047},[3996,8449,4249],{},[3996,8451,8452],{"class":3998,"line":4054},[3996,8453,4254],{},[3996,8455,8456],{"class":3998,"line":4075},[3996,8457,4051],{"emptyLinePlaceholder":4050},[3996,8459,8460],{"class":3998,"line":4126},[3996,8461,8462],{},"title \"Декларативний Link vs Імперативний useRouter: Цикл обробки переходу\"\n",[3996,8464,8465],{"class":3998,"line":4132},[3996,8466,4051],{"emptyLinePlaceholder":4050},[3996,8468,8469],{"class":3998,"line":4137},[3996,8470,6678],{},[3996,8472,8473],{"class":3998,"line":4275},[3996,8474,8475],{},"participant \"UI View (\u003CLink> \u002F \u003CPressable>)\" as UI\n",[3996,8477,8478],{"class":3998,"line":4281},[3996,8479,8480],{},"participant \"useRouter \u002F Link Dispatcher\" as Disp\n",[3996,8482,8483],{"class":3998,"line":4287},[3996,8484,8485],{},"participant \"Expo Router State Engine\" as Engine\n",[3996,8487,8488],{"class":3998,"line":4293},[3996,8489,8490],{},"participant \"React Navigation Controller\" as RNC\n",[3996,8492,8493],{"class":3998,"line":4299},[3996,8494,8495],{},"participant \"Цільовий екран (Target Screen)\" as Target\n",[3996,8497,8498],{"class":3998,"line":4305},[3996,8499,4051],{"emptyLinePlaceholder":4050},[3996,8501,8502],{"class":3998,"line":4311},[3996,8503,8504],{},"alt Декларативний перехід: \u003CLink href=\"\u002Fcreate-trip\" asChild>\n",[3996,8506,8507],{"class":3998,"line":4317},[3996,8508,8509],{},"  U -> UI : Тап на елемент посилання\n",[3996,8511,8512],{"class":3998,"line":4323},[3996,8513,8514],{},"  UI -> Disp : onPress обробник від Link\n",[3996,8516,8517],{"class":3998,"line":4329},[3996,8518,8519],{},"else Імперативний перехід: router.push('\u002Fcreate-trip')\n",[3996,8521,8522],{"class":3998,"line":4335},[3996,8523,8524],{},"  U -> UI : Тап на кнопку форми\n",[3996,8526,8527],{"class":3998,"line":4341},[3996,8528,8529],{},"  UI -> UI : Валідація схеми форми\n",[3996,8531,8532],{"class":3998,"line":4347},[3996,8533,8534],{},"  UI -> Disp : router.push('\u002Fcreate-trip')\n",[3996,8536,8537],{"class":3998,"line":4352},[3996,8538,8539],{},"end\n",[3996,8541,8542],{"class":3998,"line":4357},[3996,8543,4051],{"emptyLinePlaceholder":4050},[3996,8545,8546],{"class":3998,"line":4363},[3996,8547,8548],{},"Disp -> Engine : dispatch({ type: 'NAVIGATE', payload: { name: 'create-trip' } })\n",[3996,8550,8551],{"class":3998,"line":4369},[3996,8552,8553],{},"Engine -> Engine : Перевірка Typed Routes & пошук маршруту в AST\n",[3996,8555,8556],{"class":3998,"line":4375},[3996,8557,8558],{},"Engine -> RNC : Виклик нативної стекової операції Push\n",[3996,8560,8561],{"class":3998,"line":4381},[3996,8562,8563],{},"RNC -> Target : Монтування компонента Target + запуск транзиції\n",[3996,8565,8566],{"class":3998,"line":4387},[3996,8567,8568],{},"Target --> U : Відображення нового екрана (60\u002F120 FPS)\n",[3996,8570,8571],{"class":3998,"line":4392},[3996,8572,4480],{},[3801,8574,8576,8577],{"id":8575},"_1-декларативний-підхід-компонент-link","1. Декларативний підхід: компонент ",[3747,8578,3852],{},[3743,8580,4606,8581,8585,8586,3877],{},[3765,8582,8583],{},[3747,8584,3852],{}," призначений для розміщення навігаційних посилань безпосередньо в JSX-дереві. Цей підхід подібний до веб-елемента гіперпосилання, забезпечуючи високу декларативність та повну підтримку систем доступності для екранних дикторів (",[3796,8587,8588],{},"Screen Readers",[3743,8590,8591],{},"Базовий синтаксис:",[3987,8593,8595],{"className":3989,"code":8594,"language":3991,"meta":3992,"style":3992},"import { Link } from 'expo-router';\nimport { Text } from 'react-native';\n\n\u003CLink href=\"\u002Fcreate-trip\">\n  \u003CText>Створити нову поїздку\u003C\u002FText>\n\u003C\u002FLink>\n",[3747,8596,8597,8613,8629,8633,8649,8667],{"__ignoreMap":3992},[3996,8598,8599,8601,8603,8605,8607,8609,8611],{"class":3998,"line":3999},[3996,8600,5501],{"class":4057},[3996,8602,5504],{"class":4006},[3996,8604,3852],{"class":4064},[3996,8606,5509],{"class":4006},[3996,8608,5512],{"class":4057},[3996,8610,5515],{"class":4029},[3996,8612,4123],{"class":4006},[3996,8614,8615,8617,8619,8621,8623,8625,8627],{"class":3998,"line":4047},[3996,8616,5501],{"class":4057},[3996,8618,5504],{"class":4006},[3996,8620,7901],{"class":4064},[3996,8622,5509],{"class":4006},[3996,8624,5512],{"class":4057},[3996,8626,7908],{"class":4029},[3996,8628,4123],{"class":4006},[3996,8630,8631],{"class":3998,"line":4054},[3996,8632,4051],{"emptyLinePlaceholder":4050},[3996,8634,8635,8637,8639,8642,8644,8647],{"class":3998,"line":4075},[3996,8636,4026],{"class":4081},[3996,8638,3852],{"class":4085},[3996,8640,8641],{"class":4089}," href",[3996,8643,4093],{"class":4006},[3996,8645,8646],{"class":4029},"\"\u002Fcreate-trip\"",[3996,8648,5924],{"class":4081},[3996,8650,8651,8654,8656,8658,8661,8663,8665],{"class":3998,"line":4126},[3996,8652,8653],{"class":4081},"  \u003C",[3996,8655,7901],{"class":4085},[3996,8657,8059],{"class":4081},[3996,8659,8660],{"class":4006},"Створити нову поїздку",[3996,8662,8065],{"class":4081},[3996,8664,7901],{"class":4085},[3996,8666,5924],{"class":4081},[3996,8668,8669,8671,8673],{"class":3998,"line":4132},[3996,8670,8065],{"class":4081},[3996,8672,3852],{"class":4085},[3996,8674,5924],{"class":4081},[8676,8677,8679,8680,8682],"h4",{"id":8678},"властивість-aschild-та-інтеграція-з-кастомними-кнопками","Властивість ",[3747,8681,3856],{}," та інтеграція з кастомними кнопками",[3743,8684,8685,8686,8688,8689,8691,8692,3821],{},"За замовчуванням компонент ",[3747,8687,3852],{}," огортає переданий дочірній текст власним текстовим представленням. Якщо розробнику необхідно надати посиланню вигляд складної кнопки (",[3747,8690,7896],{},"), картки або інтерактивного блоку зі стилями, застосовується властивість ",[3765,8693,8694],{},[3747,8695,3856],{},[3743,8697,8679,8698,8700,8701,8703,8704,8707],{},[3747,8699,3856],{}," повідомляє ",[3747,8702,3852],{},", що він не повинен створювати додатковий DOM\u002FNative-вузол у дереві, а натомість зобов'язаний передати всі необхідні навігаційні обробники подій дотику (",[3747,8705,8706],{},"onPress",") та атрибути доступності безпосередньо своєму першому дочірньому елементу:",[3987,8709,8711],{"className":3989,"code":8710,"language":3991,"meta":3992,"style":3992},"import { Link } from 'expo-router';\nimport { Pressable, StyleSheet, Text } from 'react-native';\n\n\u003CLink href=\"\u002Fcreate-trip\" asChild>\n  \u003CPressable style={styles.actionButton}>\n    \u003CText style={styles.actionButtonText}>Нова поїздка\u003C\u002FText>\n  \u003C\u002FPressable>\n\u003C\u002FLink>\n",[3747,8712,8713,8729,8754,8758,8775,8799,8831,8840],{"__ignoreMap":3992},[3996,8714,8715,8717,8719,8721,8723,8725,8727],{"class":3998,"line":3999},[3996,8716,5501],{"class":4057},[3996,8718,5504],{"class":4006},[3996,8720,3852],{"class":4064},[3996,8722,5509],{"class":4006},[3996,8724,5512],{"class":4057},[3996,8726,5515],{"class":4029},[3996,8728,4123],{"class":4006},[3996,8730,8731,8733,8735,8737,8739,8742,8744,8746,8748,8750,8752],{"class":3998,"line":4047},[3996,8732,5501],{"class":4057},[3996,8734,5504],{"class":4006},[3996,8736,7896],{"class":4064},[3996,8738,3867],{"class":4006},[3996,8740,8741],{"class":4064},"StyleSheet",[3996,8743,3867],{"class":4006},[3996,8745,7901],{"class":4064},[3996,8747,5509],{"class":4006},[3996,8749,5512],{"class":4057},[3996,8751,7908],{"class":4029},[3996,8753,4123],{"class":4006},[3996,8755,8756],{"class":3998,"line":4054},[3996,8757,4051],{"emptyLinePlaceholder":4050},[3996,8759,8760,8762,8764,8766,8768,8770,8773],{"class":3998,"line":4075},[3996,8761,4026],{"class":4081},[3996,8763,3852],{"class":4085},[3996,8765,8641],{"class":4089},[3996,8767,4093],{"class":4006},[3996,8769,8646],{"class":4029},[3996,8771,8772],{"class":4089}," asChild",[3996,8774,5924],{"class":4081},[3996,8776,8777,8779,8781,8783,8785,8787,8790,8792,8795,8797],{"class":3998,"line":4126},[3996,8778,8653],{"class":4081},[3996,8780,7896],{"class":4085},[3996,8782,5637],{"class":4089},[3996,8784,4093],{"class":4006},[3996,8786,4096],{"class":4002},[3996,8788,8789],{"class":4064},"styles",[3996,8791,3821],{"class":4099},[3996,8793,8794],{"class":4064},"actionButton",[3996,8796,4117],{"class":4002},[3996,8798,5924],{"class":4081},[3996,8800,8801,8803,8805,8807,8809,8811,8813,8815,8818,8820,8822,8825,8827,8829],{"class":3998,"line":4132},[3996,8802,5969],{"class":4081},[3996,8804,7901],{"class":4085},[3996,8806,5637],{"class":4089},[3996,8808,4093],{"class":4006},[3996,8810,4096],{"class":4002},[3996,8812,8789],{"class":4064},[3996,8814,3821],{"class":4099},[3996,8816,8817],{"class":4064},"actionButtonText",[3996,8819,4117],{"class":4002},[3996,8821,8059],{"class":4081},[3996,8823,8824],{"class":4006},"Нова поїздка",[3996,8826,8065],{"class":4081},[3996,8828,7901],{"class":4085},[3996,8830,5924],{"class":4081},[3996,8832,8833,8836,8838],{"class":3998,"line":4137},[3996,8834,8835],{"class":4081},"  \u003C\u002F",[3996,8837,7896],{"class":4085},[3996,8839,5924],{"class":4081},[3996,8841,8842,8844,8846],{"class":3998,"line":4275},[3996,8843,8065],{"class":4081},[3996,8845,3852],{"class":4085},[3996,8847,5924],{"class":4081},[3801,8849,8851,8852],{"id":8850},"_2-імперативний-підхід-хук-userouter","2. Імперативний підхід: хук ",[3747,8853,3862],{},[3743,8855,8856,8857,8861],{},"Хук ",[3765,8858,8859],{},[3747,8860,4631],{}," повертає інкапсульований об'єкт маршрутизатора для програмного виконання переходів. Імперативна навігація застосовується у випадках, коли перехід є наслідком певної логічної операції, а не простого тапу на посилання:",[3806,8863,8864,8867,8870],{},[3762,8865,8866],{},"Після успішної валідації та відправки форми на сервер.",[3762,8868,8869],{},"У відповідь на асинхронні події (завершення таймера, отримання push-повідомлення).",[3762,8871,8872],{},"За необхідності попередньої перевірки умов авторизації перед відкриттям екрана.",[5453,8874,8875,8884,8888,8895,8907],{},[5456,8876,8879,8880,8883],{"name":8877,"type":8878},"router.push(href)","метод: (href: Href) => void","Додає новий маршрут на вершину поточного навігаційного стека (",[3747,8881,8882],{},"Stack.push","). Попередній екран залишається в історії, а на новому екрані автоматично стає доступною кнопка та жест повернення «Назад».",[5456,8885,8887],{"name":8886,"type":8878},"router.replace(href)","Замінює поточний запис у навігаційній історії новим маршрутом. Використовується після успішної автентифікації або скидання пароля, щоб користувач не міг повернутися на екран вводу облікових даних через кнопку «Назад».",[5456,8889,8891,8892,8894],{"name":6538,"type":8890},"метод: () => void","Знімає верхній екран зі стека, здійснюючи повернення до попереднього стану навігаційної історії. Якщо форма створення зберегла поїздку, виклик ",[3747,8893,6538],{}," закриває форму і показує оновлений список на вкладках.",[5456,8896,8899,8900,8902,8903,8906],{"name":8897,"type":8898},"router.canGoBack()","метод: () => boolean","Повертає логічне значення ",[3747,8901,7184],{},", якщо в стеку навігації є хоча б один попередній екран, до якого можна повернутися. Запобігає виклику ",[3747,8904,8905],{},"back()"," в умовах порожнього стека (наприклад, при прямому холодному старті за Deep Link).",[5456,8908,8911],{"name":8909,"type":8910},"router.dismiss(count?)","метод: (count?: number) => void","Закриває активне модальне вікно або знімає вказану кількість екранів із вершини стека.",[3743,8913,8914,8915,8917],{},"Приклад застосування ",[3747,8916,3862],{}," в обробнику подій:",[3987,8919,8921],{"className":3989,"code":8920,"language":3991,"meta":3992,"style":3992},"import { useRouter } from 'expo-router';\n\nexport function CreateTripController() {\n  const router = useRouter();\n\n  const handleFormComplete = async (tripData: unknown) => {\n    \u002F\u002F 1. Асинхронне збереження даних\n    await saveTrip(tripData);\n    \n    \u002F\u002F 2. Програмне повернення до попереднього списку\n    if (router.canGoBack()) {\n      router.back();\n    } else {\n      router.replace('\u002F');\n    }\n  };\n\n  return \u003CTripForm onSubmit={handleFormComplete} \u002F>;\n}\n",[3747,8922,8923,8939,8943,8954,8967,8971,9001,9006,9020,9025,9030,9047,9058,9068,9083,9087,9092,9096,9121],{"__ignoreMap":3992},[3996,8924,8925,8927,8929,8931,8933,8935,8937],{"class":3998,"line":3999},[3996,8926,5501],{"class":4057},[3996,8928,5504],{"class":4006},[3996,8930,3862],{"class":4064},[3996,8932,5509],{"class":4006},[3996,8934,5512],{"class":4057},[3996,8936,5515],{"class":4029},[3996,8938,4123],{"class":4006},[3996,8940,8941],{"class":3998,"line":4047},[3996,8942,4051],{"emptyLinePlaceholder":4050},[3996,8944,8945,8947,8949,8952],{"class":3998,"line":4054},[3996,8946,5947],{"class":4057},[3996,8948,5953],{"class":4002},[3996,8950,8951],{"class":4022}," CreateTripController",[3996,8953,5588],{"class":4006},[3996,8955,8956,8958,8961,8963,8965],{"class":3998,"line":4075},[3996,8957,5593],{"class":4002},[3996,8959,8960],{"class":4010}," router",[3996,8962,7937],{"class":4006},[3996,8964,3862],{"class":4022},[3996,8966,5611],{"class":4006},[3996,8968,8969],{"class":3998,"line":4126},[3996,8970,4051],{"emptyLinePlaceholder":4050},[3996,8972,8973,8975,8978,8980,8983,8985,8988,8991,8994,8997,8999],{"class":3998,"line":4132},[3996,8974,5593],{"class":4002},[3996,8976,8977],{"class":4022}," handleFormComplete",[3996,8979,7937],{"class":4006},[3996,8981,8982],{"class":4002},"async",[3996,8984,4061],{"class":4006},[3996,8986,8987],{"class":4064},"tripData",[3996,8989,8990],{"class":4006},": ",[3996,8992,8993],{"class":4085},"unknown",[3996,8995,8996],{"class":4006},") ",[3996,8998,4103],{"class":4002},[3996,9000,7958],{"class":4006},[3996,9002,9003],{"class":3998,"line":4137},[3996,9004,9005],{"class":5783},"    \u002F\u002F 1. Асинхронне збереження даних\n",[3996,9007,9008,9011,9014,9016,9018],{"class":3998,"line":4275},[3996,9009,9010],{"class":4057},"    await",[3996,9012,9013],{"class":4022}," saveTrip",[3996,9015,4109],{"class":4006},[3996,9017,8987],{"class":4064},[3996,9019,4044],{"class":4006},[3996,9021,9022],{"class":3998,"line":4281},[3996,9023,9024],{"class":4006},"    \n",[3996,9026,9027],{"class":3998,"line":4287},[3996,9028,9029],{"class":5783},"    \u002F\u002F 2. Програмне повернення до попереднього списку\n",[3996,9031,9032,9035,9037,9040,9042,9044],{"class":3998,"line":4293},[3996,9033,9034],{"class":4057},"    if",[3996,9036,4061],{"class":4006},[3996,9038,9039],{"class":4064},"router",[3996,9041,3821],{"class":4006},[3996,9043,3876],{"class":4022},[3996,9045,9046],{"class":4006},"()) {\n",[3996,9048,9049,9052,9054,9056],{"class":3998,"line":4299},[3996,9050,9051],{"class":4064},"      router",[3996,9053,3821],{"class":4006},[3996,9055,3870],{"class":4022},[3996,9057,5611],{"class":4006},[3996,9059,9060,9063,9066],{"class":3998,"line":4305},[3996,9061,9062],{"class":4006},"    } ",[3996,9064,9065],{"class":4057},"else",[3996,9067,7958],{"class":4006},[3996,9069,9070,9072,9074,9076,9078,9081],{"class":3998,"line":4311},[3996,9071,9051],{"class":4064},[3996,9073,3821],{"class":4006},[3996,9075,3873],{"class":4022},[3996,9077,4109],{"class":4006},[3996,9079,9080],{"class":4029},"'\u002F'",[3996,9082,4044],{"class":4006},[3996,9084,9085],{"class":3998,"line":4317},[3996,9086,5379],{"class":4006},[3996,9088,9089],{"class":3998,"line":4323},[3996,9090,9091],{"class":4006},"  };\n",[3996,9093,9094],{"class":3998,"line":4329},[3996,9095,4051],{"emptyLinePlaceholder":4050},[3996,9097,9098,9100,9102,9105,9108,9110,9112,9115,9117,9119],{"class":3998,"line":4335},[3996,9099,4078],{"class":4057},[3996,9101,4082],{"class":4081},[3996,9103,9104],{"class":4085},"TripForm",[3996,9106,9107],{"class":4089}," onSubmit",[3996,9109,4093],{"class":4006},[3996,9111,4096],{"class":4002},[3996,9113,9114],{"class":4064},"handleFormComplete",[3996,9116,4117],{"class":4002},[3996,9118,4120],{"class":4081},[3996,9120,4123],{"class":4006},[3996,9122,9123],{"class":3998,"line":4341},[3996,9124,4129],{"class":4006},[3801,9126,9128],{"id":9127},"матриця-вибору-навігаційного-інструменту","Матриця вибору навігаційного інструменту",[4531,9130,9131,9144],{},[4534,9132,9133],{},[4537,9134,9135,9138,9141],{},[4540,9136,9137],{"align":4542},"Сценарій використання",[4540,9139,9140],{"align":4542},"Рекомендований інструмент",[4540,9142,9143],{"align":4542},"Обґрунтування вибору",[4551,9145,9146,9158,9173,9185],{},[4537,9147,9148,9151,9155],{},[4556,9149,9150],{"align":4542},"Елемент меню, посилання в тексті, статична картка",[4556,9152,9153],{"align":4542},[3747,9154,4609],{},[4556,9156,9157],{"align":4542},"Чітка декларативність у розмірці, підтримка Screen Reader.",[4537,9159,9160,9163,9168],{},[4556,9161,9162],{"align":4542},"Кнопка зі складним кастомним оформленням",[4556,9164,9165],{"align":4542},[3747,9166,9167],{},"\u003CLink href=\"...\" asChild>\u003CPressable>…\u003C\u002FLink>",[4556,9169,9170,9171,3821],{"align":4542},"Повне збереження кастомних стилів кнопки без спагеті-коду в ",[3747,9172,8706],{},[4537,9174,9175,9178,9182],{},[4556,9176,9177],{"align":4542},"Колбек завершення відправки форми",[4556,9179,9180],{"align":4542},[3747,9181,6538],{},[4556,9183,9184],{"align":4542},"Перехід ініціюється тільки після успішного виконання асинхронного коду.",[4537,9186,9187,9190,9195],{},[4556,9188,9189],{"align":4542},"Завершення процедури авторизації \u002F виходу",[4556,9191,9192],{"align":4542},[3747,9193,9194],{},"router.replace('\u002F...')",[4556,9196,9197],{"align":4542},"Очищення навігаційного стека від екранів авторизації.",[3966,9199],{},[3738,9201,9203,9204,9207],{"id":9202},"структура-посилань-href-та-статичні-шляхи","Структура посилань ",[3747,9205,9206],{},"href"," та статичні шляхи",[3743,9209,7722,9210,9214],{},[3765,9211,9212],{},[3747,9213,9206],{}," приймає рядок або об'єкт, який точно вказує цільову адресу маршруту в навігаційному дереві застосунку.",[3743,9216,9217,9218,6869],{},"На етапі вивчення базової маршрутизації використовуються ",[3765,9219,9220],{},"статичні шляхи",[3806,9222,9223,9232,9238,9244],{},[3762,9224,9225,9228,9229,9231],{},[3747,9226,9227],{},"\"\u002F\""," — кореневий маршрут (головний екран списку поїздок у групі ",[3747,9230,6029],{},");",[3762,9233,9234,9237],{},[3747,9235,9236],{},"\"\u002Fplaces\""," — екран каталогу локацій;",[3762,9239,9240,9243],{},[3747,9241,9242],{},"\"\u002Fabout\""," — інформаційний екран «Про додаток»;",[3762,9245,9246,9248],{},[3747,9247,8646],{}," — стековий екран створення поїздки.",[3743,9250,9251,9252,9254,9255,9258],{},"Динамічні параметризовані сегменти (наприклад, ",[3747,9253,6151],{},", де ",[3747,9256,9257],{},":id"," виступає змінною частиною URL) детально досліджуються у наступних розділах курсу.",[4684,9260,9261,9264,9265,9267,9268,9270,9271,9274],{},[3765,9262,9263],{},"Вимога існування маршруту."," Цільовий рядок ",[3747,9266,9206],{}," повинен гарантовано вказувати на існуючий фізичний файл у каталозі ",[3747,9269,3793],{},". Будь-яка механічна помилка в назві (наприклад, випадкова одруківка ",[3747,9272,9273],{},"href=\"\u002Fcrate-trip\"",") призведе до помилки часу виконання «Unmatched Route» (маршрут не знайдено) та відображення білого екрана або системного екрана 404.",[3966,9276],{},[3738,9278,9280],{"id":9279},"статична-типізація-навігаційних-шляхів-typed-routes","Статична типізація навігаційних шляхів (Typed Routes)",[3743,9282,9283,9284,9286,9287,3821],{},"Для запобігання помилкам, пов'язаним з ручним введенням рядків ",[3747,9285,9206],{},", Expo Router пропонує інструмент компіляційного контролю — ",[3765,9288,9289],{},"Typed Routes (Типізовані маршрути)",[3743,9291,9292,9293,9295,9296,9298,9299,5118,9301,3821],{},"При активації цієї функції компілятор Expo Router автоматично сканує вміст директорії ",[3747,9294,3793],{}," і на льоту генерує TypeScript-декларації глобального об'єкта шляхів, типізуючи пропси компонента ",[3747,9297,3852],{}," та параметри методів ",[3747,9300,3753],{},[3747,9302,9303],{},"router.replace",[3801,9305,9307,9308,6869],{"id":9306},"активація-типізації-у-файлі-appjson","Активація типізації у файлі ",[3747,9309,9310],{},"app.json",[3987,9312,9316],{"className":9313,"code":9314,"language":9315,"meta":3992,"style":3992},"language-json shiki shiki-themes light-plus dark-plus dark-plus","{\n  \"expo\": {\n    \"name\": \"Nomad\",\n    \"slug\": \"nomad\",\n    \"experiments\": {\n      \"typedRoutes\": true\n    }\n  }\n}\n","json",[3747,9317,9318,9322,9331,9343,9355,9362,9372,9376,9380],{"__ignoreMap":3992},[3996,9319,9320],{"class":3998,"line":3999},[3996,9321,5684],{"class":4006},[3996,9323,9324,9328],{"class":3998,"line":4047},[3996,9325,9327],{"class":9326},"sLwNe","  \"expo\"",[3996,9329,9330],{"class":4006},": {\n",[3996,9332,9333,9336,9338,9341],{"class":3998,"line":4054},[3996,9334,9335],{"class":9326},"    \"name\"",[3996,9337,8990],{"class":4006},[3996,9339,9340],{"class":4029},"\"Nomad\"",[3996,9342,5720],{"class":4006},[3996,9344,9345,9348,9350,9353],{"class":3998,"line":4075},[3996,9346,9347],{"class":9326},"    \"slug\"",[3996,9349,8990],{"class":4006},[3996,9351,9352],{"class":4029},"\"nomad\"",[3996,9354,5720],{"class":4006},[3996,9356,9357,9360],{"class":3998,"line":4126},[3996,9358,9359],{"class":9326},"    \"experiments\"",[3996,9361,9330],{"class":4006},[3996,9363,9364,9367,9369],{"class":3998,"line":4132},[3996,9365,9366],{"class":9326},"      \"typedRoutes\"",[3996,9368,8990],{"class":4006},[3996,9370,9371],{"class":4002},"true\n",[3996,9373,9374],{"class":3998,"line":4137},[3996,9375,5379],{"class":4006},[3996,9377,9378],{"class":3998,"line":4275},[3996,9379,4384],{"class":4006},[3996,9381,9382],{"class":3998,"line":4281},[3996,9383,4129],{"class":4006},[3743,9385,9386,9387,9390],{},"Після ввімкнення експериментального прапорця та перезапуску сервера розробки Metro (",[3747,9388,9389],{},"npx expo start","), будь-яка спроба передати неіснуючий рядок шляху викличе помилку компілятора TypeScript ще до запуску застосунку на пристрої:",[3987,9392,9394],{"className":3989,"code":9393,"language":3991,"meta":3992,"style":3992},"\u002F\u002F TypeScript видасть помилку: Argument of type '\"\u002Funknown-screen\"' is not assignable to parameter of type 'Href'\nrouter.push('\u002Funknown-screen'); \n\n\u002F\u002F Успішна валідація з підтримкою автодоповнення в IDE:\nrouter.push('\u002Fcreate-trip');\n",[3747,9395,9396,9401,9417,9421,9426],{"__ignoreMap":3992},[3996,9397,9398],{"class":3998,"line":3999},[3996,9399,9400],{"class":5783},"\u002F\u002F TypeScript видасть помилку: Argument of type '\"\u002Funknown-screen\"' is not assignable to parameter of type 'Href'\n",[3996,9402,9403,9405,9407,9409,9411,9414],{"class":3998,"line":4047},[3996,9404,9039],{"class":4064},[3996,9406,3821],{"class":4006},[3996,9408,3866],{"class":4022},[3996,9410,4109],{"class":4006},[3996,9412,9413],{"class":4029},"'\u002Funknown-screen'",[3996,9415,9416],{"class":4006},"); \n",[3996,9418,9419],{"class":3998,"line":4054},[3996,9420,4051],{"emptyLinePlaceholder":4050},[3996,9422,9423],{"class":3998,"line":4075},[3996,9424,9425],{"class":5783},"\u002F\u002F Успішна валідація з підтримкою автодоповнення в IDE:\n",[3996,9427,9428,9430,9432,9434,9436,9439],{"class":3998,"line":4126},[3996,9429,9039],{"class":4064},[3996,9431,3821],{"class":4006},[3996,9433,3866],{"class":4022},[3996,9435,4109],{"class":4006},[3996,9437,9438],{"class":4029},"'\u002Fcreate-trip'",[3996,9440,4044],{"class":4006},[3966,9442],{},[3738,9444,9446],{"id":9445},"координація-нативних-шарів-header-safeareaview-та-розрахунок-відступів","Координація нативних шарів: Header, SafeAreaView та розрахунок відступів",[3743,9448,9449,9450,3867,9453,9456,9457,9460,9461,3877],{},"Під час конструювання мобільних інтерфейсів розробники регулярно стикаються з проблемою розрахунку верхніх і нижніх відступів під системні елементи пристрою: вирізи камер (",[3796,9451,9452],{},"Notch",[3796,9454,9455],{},"Dynamic Island","), рядок стану (",[3796,9458,9459],{},"Status Bar",") та домашній індикатор жестів (",[3796,9462,9463],{},"Home Indicator",[3743,9465,9466,9467,9469,9470,9473],{},"Для ізоляції контенту від накладання на системні елементи використовується компонент ",[3747,9468,7191],{}," з бібліотеки ",[3747,9471,9472],{},"react-native-safe-area-context",". Проте при роботі з нативними навігаторами виникає специфічний конфлікт геометрії:",[3987,9475,9478],{"className":9476,"code":9477,"language":4227},[4225],"          КОНФЛІКТ ПОДВІЙНОГО ВІДСТУПУ (DOUBLE INSET BUG)\n+-------------------------------------------------------------------------+\n| [Status Bar \u002F Notch \u002F Dynamic Island]                                   |\n| +---------------------------------------------------------------------+ |\n| | Native Header (Вже містить власний безпечний відступ зверху)         | |\n| +---------------------------------------------------------------------+ |\n| | [ЗАЙВИЙ ВІДСТУП!] SafeAreaView edges={['top']} додає ще 44–59 pt     | |\n| | +-----------------------------------------------------------------+ | |\n| | | Контент форми (Невиправдано зміщений далеко вниз)               | | |\n| | +-----------------------------------------------------------------+ | |\n+-------------------------------------------------------------------------+\n",[3747,9479,9477],{"__ignoreMap":3992},[4231,9481,9482],{},[3987,9483,9485],{"className":4235,"code":9484,"language":4237,"meta":3992,"style":3992},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Координація нативних шарів: Safe Area, Header та Viewport\"\n\nrectangle \"Мобільний пристрій (Screen Frame)\" as DEVICE #f1f5f9 {\n  \n  rectangle \"Status Bar \u002F Notch \u002F Dynamic Island (44–59 pt)\" as SB #cbd5e1\n  \n  rectangle \"Native Header (\u003CStack.Screen options={{ headerShown: true }}>)\" as NH #93c5fd {\n    rectangle \"Left: Back Button\" as HL #60a5fa\n    rectangle \"Center: Title\" as HT #60a5fa\n    rectangle \"Right: Action Button\" as HR #60a5fa\n  }\n  \n  rectangle \"Основна робоча область (Viewport Content Area)\" as CONTENT #f8fafc {\n    rectangle \"SafeAreaView edges={['bottom', 'left', 'right']}\\n(Без повторного 'top' відступу!)\" as SAV #bbf7d0 {\n      rectangle \"Контент форми \u002F Списку\" as DATA #86efac\n    }\n  }\n  \n  rectangle \"Native Bottom Tab Bar (\u003CTabs.Screen \u002F>)\" as TABS #d8b4fe {\n    rectangle \"Tab 1: Поїздки\" as TB1 #c084fc\n    rectangle \"Tab 2: Місця\" as TB2 #c084fc\n    rectangle \"Tab 3: Ще\" as TB3 #c084fc\n  }\n  \n  rectangle \"Home Indicator \u002F Bottom Inset (34 pt)\" as HI #cbd5e1\n}\n@enduml\n",[3747,9486,9487,9491,9495,9499,9503,9508,9512,9517,9521,9526,9530,9535,9540,9545,9550,9554,9558,9563,9568,9573,9577,9581,9585,9590,9595,9600,9605,9609,9613,9618,9622],{"__ignoreMap":3992},[3996,9488,9489],{"class":3998,"line":3999},[3996,9490,4244],{},[3996,9492,9493],{"class":3998,"line":4047},[3996,9494,4249],{},[3996,9496,9497],{"class":3998,"line":4054},[3996,9498,4254],{},[3996,9500,9501],{"class":3998,"line":4075},[3996,9502,4051],{"emptyLinePlaceholder":4050},[3996,9504,9505],{"class":3998,"line":4126},[3996,9506,9507],{},"title \"Координація нативних шарів: Safe Area, Header та Viewport\"\n",[3996,9509,9510],{"class":3998,"line":4132},[3996,9511,4051],{"emptyLinePlaceholder":4050},[3996,9513,9514],{"class":3998,"line":4137},[3996,9515,9516],{},"rectangle \"Мобільний пристрій (Screen Frame)\" as DEVICE #f1f5f9 {\n",[3996,9518,9519],{"class":3998,"line":4275},[3996,9520,4296],{},[3996,9522,9523],{"class":3998,"line":4281},[3996,9524,9525],{},"  rectangle \"Status Bar \u002F Notch \u002F Dynamic Island (44–59 pt)\" as SB #cbd5e1\n",[3996,9527,9528],{"class":3998,"line":4287},[3996,9529,4296],{},[3996,9531,9532],{"class":3998,"line":4293},[3996,9533,9534],{},"  rectangle \"Native Header (\u003CStack.Screen options={{ headerShown: true }}>)\" as NH #93c5fd {\n",[3996,9536,9537],{"class":3998,"line":4299},[3996,9538,9539],{},"    rectangle \"Left: Back Button\" as HL #60a5fa\n",[3996,9541,9542],{"class":3998,"line":4305},[3996,9543,9544],{},"    rectangle \"Center: Title\" as HT #60a5fa\n",[3996,9546,9547],{"class":3998,"line":4311},[3996,9548,9549],{},"    rectangle \"Right: Action Button\" as HR #60a5fa\n",[3996,9551,9552],{"class":3998,"line":4317},[3996,9553,4384],{},[3996,9555,9556],{"class":3998,"line":4323},[3996,9557,4296],{},[3996,9559,9560],{"class":3998,"line":4329},[3996,9561,9562],{},"  rectangle \"Основна робоча область (Viewport Content Area)\" as CONTENT #f8fafc {\n",[3996,9564,9565],{"class":3998,"line":4335},[3996,9566,9567],{},"    rectangle \"SafeAreaView edges={['bottom', 'left', 'right']}\\n(Без повторного 'top' відступу!)\" as SAV #bbf7d0 {\n",[3996,9569,9570],{"class":3998,"line":4341},[3996,9571,9572],{},"      rectangle \"Контент форми \u002F Списку\" as DATA #86efac\n",[3996,9574,9575],{"class":3998,"line":4347},[3996,9576,5379],{},[3996,9578,9579],{"class":3998,"line":4352},[3996,9580,4384],{},[3996,9582,9583],{"class":3998,"line":4357},[3996,9584,4296],{},[3996,9586,9587],{"class":3998,"line":4363},[3996,9588,9589],{},"  rectangle \"Native Bottom Tab Bar (\u003CTabs.Screen \u002F>)\" as TABS #d8b4fe {\n",[3996,9591,9592],{"class":3998,"line":4369},[3996,9593,9594],{},"    rectangle \"Tab 1: Поїздки\" as TB1 #c084fc\n",[3996,9596,9597],{"class":3998,"line":4375},[3996,9598,9599],{},"    rectangle \"Tab 2: Місця\" as TB2 #c084fc\n",[3996,9601,9602],{"class":3998,"line":4381},[3996,9603,9604],{},"    rectangle \"Tab 3: Ще\" as TB3 #c084fc\n",[3996,9606,9607],{"class":3998,"line":4387},[3996,9608,4384],{},[3996,9610,9611],{"class":3998,"line":4392},[3996,9612,4296],{},[3996,9614,9615],{"class":3998,"line":4398},[3996,9616,9617],{},"  rectangle \"Home Indicator \u002F Bottom Inset (34 pt)\" as HI #cbd5e1\n",[3996,9619,9620],{"class":3998,"line":4404},[3996,9621,4129],{},[3996,9623,9624],{"class":3998,"line":4410},[3996,9625,4480],{},[3801,9627,9629],{"id":9628},"правила-координації-геометрії","Правила координації геометрії:",[3759,9631,9632,9657],{},[3762,9633,9634,9640,9641,9643,9644,9646,9647,4061,9650,9653,9654,3877],{},[3765,9635,9636,9637,5191],{},"Екрани з активним нативним заголовком (",[3747,9638,9639],{},"headerShown: true","\nНативний компонент заголовка ",[3747,9642,5794],{}," автоматично резервує необхідний простір під системний статус-бар. Якщо контент такого екрана додатково обгорнути в ",[3747,9645,7191],{}," з верхнім відступом, виникає дефект ",[3765,9648,9649],{},"подвійного порожнього зазору",[3796,9651,9652],{},"Double Padding Bug","). Тому на таких екранах верхній край SafeAreaView повинен бути вимкнений (",[3747,9655,9656],{},"edges={['bottom', 'left', 'right']}",[3762,9658,9659,9665,9666,9668,9669,4599,9672,4061,9674,3877],{},[3765,9660,9661,9662,5191],{},"Екрани з прихованим заголовком (",[3747,9663,9664],{},"headerShown: false","\nНа екранах вкладок ",[3747,9667,6029],{},", де системний заголовок вимкнено на користь власної верстки назви розділу, верхній відступ повинен повністю компенсуватися компонентом ",[3747,9670,9671],{},"Screen",[3747,9673,7191],{},[3747,9675,9676],{},"edges={['top']}",[3966,9678],{},[3738,9680,9682],{"id":9681},"архітектурні-антипатерни-та-типові-помилки-проєктування-навігації","Архітектурні антипатерни та типові помилки проєктування навігації",[3801,9684,9686,9687],{"id":9685},"_1-емуляція-навігації-через-локальний-стан-usestatescreen","1. Емуляція навігації через локальний стан ",[3747,9688,9689],{},"useState('screen')",[3806,9691,9692,9698],{},[3762,9693,9694,9697],{},[3765,9695,9696],{},"Проблема:"," Спроба будувати навігацію великого додатку через умовний рендеринг за станом створює спагеті-код, руйнує кешування екранів, блокує апаратні жести повернення та унеможливлює Deep Linking.",[3762,9699,9700,9703,9704,3867,9706,3867,9708,3877],{},[3765,9701,9702],{},"Рішення:"," Використовувати виключно декларативні можливості Expo Router (",[3747,9705,3793],{},[3747,9707,3844],{},[3747,9709,3840],{},[3801,9711,9713,9714],{"id":9712},"_2-концентрація-складної-бізнес-логіки-у-файлах-маршрутів-app","2. Концентрація складної бізнес-логіки у файлах маршрутів ",[3747,9715,3793],{},[3806,9717,9718,9726],{},[3762,9719,9720,9722,9723,9725],{},[3765,9721,9696],{}," Перетворення файлів у ",[3747,9724,3793],{}," на монолітні компоненти обсягом понад 500 рядків унеможливлює повторне використання UI-блоків та ізольоване тестування.",[3762,9727,9728,9730,9731,9733,9734,4676,9737,3821],{},[3765,9729,9702],{}," Зберігати маршрути в ",[3747,9732,3793],{}," максимально тонкими, делегуючи верстку та бізнес-логіку модулям із ",[3747,9735,9736],{},"src\u002Ffeatures\u002F",[3747,9738,9739],{},"src\u002Fshared\u002F",[3801,9741,9743,9744,9746],{"id":9742},"_3-плутанина-між-логічними-групами-group-та-фізичними-сегментами-url","3. Плутанина між логічними групами ",[3747,9745,3885],{}," та фізичними сегментами URL",[3806,9748,9749,9760],{},[3762,9750,9751,9753,9754,9756,9757,9759],{},[3765,9752,9696],{}," Очікування, що файл ",[3747,9755,6137],{}," буде доступний за маршрутом ",[3747,9758,8355],{},", і спроби звертатися до нього через цей некоректний шлях.",[3762,9761,9762,9764,9765,3821],{},[3765,9763,9702],{}," Пам'ятати, що круглі дужки в іменах директорій виключаються з фінального рядка URL. Правильний шлях — ",[3747,9766,5121],{},[3801,9768,9770,9771,9774,9775,9777],{"id":9769},"_4-виклик-push-замість-back-після-успішного-збереження-форми","4. Виклик ",[3747,9772,9773],{},"push('\u002F')"," замість ",[3747,9776,8905],{}," після успішного збереження форми",[3806,9779,9780,9793],{},[3762,9781,9782,9784,9785,9788,9789,9792],{},[3765,9783,9696],{}," Якщо після збереження сутності у формі викликати ",[3747,9786,9787],{},"router.push('\u002F')",", навігатор не повернеться на існуючий екран, а створить і наштовхне ",[3765,9790,9791],{},"новий дублікат головного екрана"," на вершину стека. При спробі користувача натиснути системну кнопку «Назад» він не вийде із застосунку, а повернеться назад на щойно заповнену форму.",[3762,9794,9795,9797,9798,9800,9801,9804],{},[3765,9796,9702],{}," Після завершення роботи з формою завжди викликати ",[3747,9799,6538],{}," (або ",[3747,9802,9803],{},"router.replace('\u002F')",", якщо повернення в історію неприпустиме).",[3801,9806,9808],{"id":9807},"_5-ігнорування-колірних-токенів-теми-для-навігаційних-панелей","5. Ігнорування колірних токенів теми для навігаційних панелей",[3806,9810,9811,9820],{},[3762,9812,9813,9815,9816,4676,9818,3821],{},[3765,9814,9696],{}," Застосунок підтримує темну тему, але панель вкладок залишається яскраво-білою за замовчуванням через відсутність конфігурації ",[3747,9817,7649],{},[3747,9819,7238],{},[3762,9821,9822,9824,9825,3867,9827,3867,9829,9831,9832,3867,9835,3867,9838,3877],{},[3765,9823,9702],{}," Обов'язково зв'язувати параметри навігаторів (",[3747,9826,7649],{},[3747,9828,7238],{},[3747,9830,6716],{},") із семантичними токенами дизайн-системи (",[3747,9833,9834],{},"colors.background",[3747,9836,9837],{},"colors.border",[3747,9839,6771],{},[3801,9841,9843],{"id":9842},"_6-вкладення-модальних-форм-створення-безпосередньо-в-список-вкладок","6. Вкладення модальних форм створення безпосередньо в список вкладок",[3806,9845,9846,9854],{},[3762,9847,9848,9850,9851,9853],{},[3765,9849,9696],{}," Додавання форми ",[3747,9852,6033],{}," як четвертої постійної вкладки в нижню панель спотворює UX: форма не є рівноправним розділом застосунку, а таб-бар заважає введенню даних.",[3762,9855,9856,9858,9859,9861],{},[3765,9857,9702],{}," Організовувати форми як окремі екрани кореневого стека ",[3747,9860,3844],{},", що відкриваються поверх панелі вкладок.",[3966,9863],{},[3738,9865,9867],{"id":9866},"міні-проєкт-довідник-міст","Міні-проєкт: «Довідник міст»",[3801,9869,9871],{"id":9870},"мета","Мета",[3743,9873,9874,9875,9878,9879,9882,9883,9886],{},"Окремий застосунок ",[3765,9876,9877],{},"поза"," Nomad. Шлях ",[3765,9880,9881],{},"від А до Я",": команди, структура тек, ",[3765,9884,9885],{},"повний код кожного файлу",". Можна відтворити без домислів.",[3743,9888,9889],{},"Сюжет:",[3759,9891,9892,9901,9908],{},[3762,9893,9894,9895,4033,9898,3821],{},"Tabs: ",[3765,9896,9897],{},"Список",[3765,9899,9900],{},"Про нас",[3762,9902,9903,9904,9907],{},"Список міст → тап → Stack-екран ",[3765,9905,9906],{},"деталей"," із системною «назад».",[3762,9909,9910,9911,9913],{},"«Про нас» — текст + ",[3747,9912,3852],{}," на список.",[3801,9915,9917],{"id":9916},"кінцева-структура","Кінцева структура",[3987,9919,9922],{"className":9920,"code":9921,"language":4227,"meta":3992},[4225],"city-guide\u002F\n  package.json\n  app.json\n  app\u002F\n    _layout.tsx\n    (tabs)\u002F\n      _layout.tsx\n      index.tsx\n      about.tsx\n    city\u002F\n      [id].tsx\n  src\u002F\n    data\u002F\n      cities.ts\n",[3747,9923,9921],{"__ignoreMap":3992},[4231,9925,9926],{},[3987,9927,9929],{"className":4235,"code":9928,"language":4237,"meta":3992,"style":3992},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\ntitle \"Архітектура навігації міні-проєкту «Довідник міст»\"\n\nrectangle \"app\u002F_layout.tsx (Root Stack)\" as R_STACK #dbeafe {\n  \n  rectangle \"app\u002F(tabs)\u002F_layout.tsx (Tabs Navigator)\" as T_NAV #e0e7ff {\n    rectangle \"app\u002F(tabs)\u002Findex.tsx\\n[Список міст]\" as T_LIST #c7d2fe\n    rectangle \"app\u002F(tabs)\u002Fabout.tsx\\n[Про проєкт]\" as T_ABOUT #c7d2fe\n  }\n  \n  rectangle \"app\u002Fcity\u002F[id].tsx\\n[Детальна картка міста]\" as S_DETAIL #fef3c7\n}\n\nT_LIST -down-> S_DETAIL : \u003CLink href={`\u002Fcity\u002F${city.id}`}>\\n(Stack Push з кнопкою «Назад»)\nS_DETAIL -up-> T_LIST : router.back()\\n(Повернення до списку)\nT_ABOUT .left.> T_LIST : \u003CLink href=\"\u002F\"> (Перехід на список)\n@enduml\n",[3747,9930,9931,9935,9939,9943,9947,9952,9956,9961,9965,9970,9975,9980,9984,9988,9993,9997,10001,10006,10011,10016],{"__ignoreMap":3992},[3996,9932,9933],{"class":3998,"line":3999},[3996,9934,4244],{},[3996,9936,9937],{"class":3998,"line":4047},[3996,9938,4249],{},[3996,9940,9941],{"class":3998,"line":4054},[3996,9942,4254],{},[3996,9944,9945],{"class":3998,"line":4075},[3996,9946,4051],{"emptyLinePlaceholder":4050},[3996,9948,9949],{"class":3998,"line":4126},[3996,9950,9951],{},"title \"Архітектура навігації міні-проєкту «Довідник міст»\"\n",[3996,9953,9954],{"class":3998,"line":4132},[3996,9955,4051],{"emptyLinePlaceholder":4050},[3996,9957,9958],{"class":3998,"line":4137},[3996,9959,9960],{},"rectangle \"app\u002F_layout.tsx (Root Stack)\" as R_STACK #dbeafe {\n",[3996,9962,9963],{"class":3998,"line":4275},[3996,9964,4296],{},[3996,9966,9967],{"class":3998,"line":4281},[3996,9968,9969],{},"  rectangle \"app\u002F(tabs)\u002F_layout.tsx (Tabs Navigator)\" as T_NAV #e0e7ff {\n",[3996,9971,9972],{"class":3998,"line":4287},[3996,9973,9974],{},"    rectangle \"app\u002F(tabs)\u002Findex.tsx\\n[Список міст]\" as T_LIST #c7d2fe\n",[3996,9976,9977],{"class":3998,"line":4293},[3996,9978,9979],{},"    rectangle \"app\u002F(tabs)\u002Fabout.tsx\\n[Про проєкт]\" as T_ABOUT #c7d2fe\n",[3996,9981,9982],{"class":3998,"line":4299},[3996,9983,4384],{},[3996,9985,9986],{"class":3998,"line":4305},[3996,9987,4296],{},[3996,9989,9990],{"class":3998,"line":4311},[3996,9991,9992],{},"  rectangle \"app\u002Fcity\u002F[id].tsx\\n[Детальна картка міста]\" as S_DETAIL #fef3c7\n",[3996,9994,9995],{"class":3998,"line":4317},[3996,9996,4129],{},[3996,9998,9999],{"class":3998,"line":4323},[3996,10000,4051],{"emptyLinePlaceholder":4050},[3996,10002,10003],{"class":3998,"line":4329},[3996,10004,10005],{},"T_LIST -down-> S_DETAIL : \u003CLink href={`\u002Fcity\u002F${city.id}`}>\\n(Stack Push з кнопкою «Назад»)\n",[3996,10007,10008],{"class":3998,"line":4335},[3996,10009,10010],{},"S_DETAIL -up-> T_LIST : router.back()\\n(Повернення до списку)\n",[3996,10012,10013],{"class":3998,"line":4341},[3996,10014,10015],{},"T_ABOUT .left.> T_LIST : \u003CLink href=\"\u002F\"> (Перехід на список)\n",[3996,10017,10018],{"class":3998,"line":4347},[3996,10019,4480],{},[3801,10021,10023],{"id":10022},"крок-1-створити-проєкт","Крок 1. Створити проєкт",[10025,10026,10027,10031,10060,10071,10075,10089,10093],"steps",{},[3801,10028,10030],{"id":10029},"_1-шаблон-з-tabs-і-router","1. Шаблон з tabs і Router",[3987,10032,10034],{"className":6797,"code":10033,"language":6799,"meta":3992,"style":3992},"npx create-expo-app@latest city-guide -t tabs\ncd city-guide\n",[3747,10035,10036,10052],{"__ignoreMap":3992},[3996,10037,10038,10040,10043,10046,10049],{"class":3998,"line":3999},[3996,10039,6806],{"class":4022},[3996,10041,10042],{"class":4029}," create-expo-app@latest",[3996,10044,10045],{"class":4029}," city-guide",[3996,10047,10048],{"class":4002}," -t",[3996,10050,10051],{"class":4029}," tabs\n",[3996,10053,10054,10057],{"class":3998,"line":4047},[3996,10055,10056],{"class":4022},"cd",[3996,10058,10059],{"class":4029}," city-guide\n",[3743,10061,10062,10063,10066,10067,10070],{},"У ",[3747,10064,10065],{},"package.json"," має бути ",[3747,10068,10069],{},"\"main\": \"expo-router\u002Fentry\""," (у шаблоні вже так).",[3801,10072,10074],{"id":10073},"_2-іконки-якщо-typescript-не-знаходить-пакет","2. Іконки (якщо TypeScript не знаходить пакет)",[3987,10076,10077],{"className":6797,"code":6798,"language":6799,"meta":3992,"style":3992},[3747,10078,10079],{"__ignoreMap":3992},[3996,10080,10081,10083,10085,10087],{"class":3998,"line":3999},[3996,10082,6806],{"class":4022},[3996,10084,6809],{"class":4029},[3996,10086,6812],{"class":4029},[3996,10088,6815],{"class":4029},[3801,10090,10092],{"id":10091},"_3-після-підстановки-всіх-файлів","3. Після підстановки всіх файлів",[3987,10094,10096],{"className":6797,"code":10095,"language":6799,"meta":3992,"style":3992},"npx expo start\n",[3747,10097,10098],{"__ignoreMap":3992},[3996,10099,10100,10102,10104],{"class":3998,"line":3999},[3996,10101,6806],{"class":4022},[3996,10103,6809],{"class":4029},[3996,10105,10106],{"class":4029}," start\n",[3801,10108,10110,10111],{"id":10109},"крок-2-дані-srcdatacitiests","Крок 2. Дані — ",[3747,10112,10113],{},"src\u002Fdata\u002Fcities.ts",[3743,10115,10116,10117,10120],{},"Створіть теки ",[3747,10118,10119],{},"src\u002Fdata\u002F"," і файл цілком:",[10122,10123,10125],"collapsible",{"title":10124},"Повний src\u002Fdata\u002Fcities.ts — розгорнути",[3987,10126,10130],{"className":10127,"code":10128,"language":10129,"meta":3992,"style":3992},"language-ts shiki shiki-themes light-plus dark-plus dark-plus","export type City = {\n  id: string;\n  name: string;\n  region: string;\n  population: string;\n  description: string;\n};\n\nexport const cities: City[] = [\n  {\n    id: 'kyiv',\n    name: 'Київ',\n    region: 'м. Київ',\n    population: '≈ 2,9 млн',\n    description:\n      'Столиця України. Поділ, Хрещатик, правий і лівий береги Дніпра. Зручна відправна точка для подорожей центром країни.',\n  },\n  {\n    id: 'lviv',\n    name: 'Львів',\n    region: 'Львівська область',\n    population: '≈ 720 тис.',\n    description:\n      'Місто на заході з площею Ринок, кавою й щільною історичною забудовою. Добре для вікенду пішки.',\n  },\n  {\n    id: 'odesa',\n    name: 'Одеса',\n    region: 'Одеська область',\n    population: '≈ 1 млн',\n    description:\n      'Порт на Чорному морі. Дерибасівська, набережна, особливий гумор і кухня. Літній ритм міста інший, ніж узимку.',\n  },\n  {\n    id: 'kharkiv',\n    name: 'Харків',\n    region: 'Харківська область',\n    population: '≈ 1,4 млн',\n    description:\n      'Велике місто на сході. Університети, парки, широкі проспекти. Важливий культурний і промисловий осередок.',\n  },\n  {\n    id: 'dnipro',\n    name: 'Дніпро',\n    region: 'Дніпропетровська область',\n    population: '≈ 970 тис.',\n    description:\n      'Місто на річці Дніпро з довгою набережною й мостами. Зручний вузол між сходом і центром.',\n  },\n];\n\nexport function getCityById(id: string): City | undefined {\n  return cities.find((c) => c.id === id);\n}\n","ts",[3747,10131,10132,10145,10156,10166,10177,10188,10199,10204,10208,10226,10231,10241,10251,10261,10271,10276,10283,10288,10292,10301,10310,10319,10328,10332,10339,10343,10347,10356,10365,10374,10383,10387,10394,10398,10402,10411,10420,10429,10438,10442,10449,10453,10457,10466,10475,10484,10493,10497,10504,10508,10514,10519,10550,10585],{"__ignoreMap":3992},[3996,10133,10134,10136,10139,10142],{"class":3998,"line":3999},[3996,10135,5947],{"class":4057},[3996,10137,10138],{"class":4002}," type",[3996,10140,10141],{"class":4085}," City",[3996,10143,10144],{"class":4006}," = {\n",[3996,10146,10147,10150,10152,10154],{"class":3998,"line":4047},[3996,10148,10149],{"class":4064},"  id",[3996,10151,8990],{"class":4006},[3996,10153,7692],{"class":4085},[3996,10155,4123],{"class":4006},[3996,10157,10158,10160,10162,10164],{"class":3998,"line":4054},[3996,10159,6835],{"class":4064},[3996,10161,8990],{"class":4006},[3996,10163,7692],{"class":4085},[3996,10165,4123],{"class":4006},[3996,10167,10168,10171,10173,10175],{"class":3998,"line":4075},[3996,10169,10170],{"class":4064},"  region",[3996,10172,8990],{"class":4006},[3996,10174,7692],{"class":4085},[3996,10176,4123],{"class":4006},[3996,10178,10179,10182,10184,10186],{"class":3998,"line":4126},[3996,10180,10181],{"class":4064},"  population",[3996,10183,8990],{"class":4006},[3996,10185,7692],{"class":4085},[3996,10187,4123],{"class":4006},[3996,10189,10190,10193,10195,10197],{"class":3998,"line":4132},[3996,10191,10192],{"class":4064},"  description",[3996,10194,8990],{"class":4006},[3996,10196,7692],{"class":4085},[3996,10198,4123],{"class":4006},[3996,10200,10201],{"class":3998,"line":4137},[3996,10202,10203],{"class":4006},"};\n",[3996,10205,10206],{"class":3998,"line":4275},[3996,10207,4051],{"emptyLinePlaceholder":4050},[3996,10209,10210,10212,10215,10218,10220,10223],{"class":3998,"line":4281},[3996,10211,5947],{"class":4057},[3996,10213,10214],{"class":4002}," const",[3996,10216,10217],{"class":4010}," cities",[3996,10219,8990],{"class":4006},[3996,10221,10222],{"class":4085},"City",[3996,10224,10225],{"class":4006},"[] = [\n",[3996,10227,10228],{"class":3998,"line":4287},[3996,10229,10230],{"class":4006},"  {\n",[3996,10232,10233,10236,10239],{"class":3998,"line":4293},[3996,10234,10235],{"class":4064},"    id:",[3996,10237,10238],{"class":4029}," 'kyiv'",[3996,10240,5720],{"class":4006},[3996,10242,10243,10246,10249],{"class":3998,"line":4299},[3996,10244,10245],{"class":4064},"    name:",[3996,10247,10248],{"class":4029}," 'Київ'",[3996,10250,5720],{"class":4006},[3996,10252,10253,10256,10259],{"class":3998,"line":4305},[3996,10254,10255],{"class":4064},"    region:",[3996,10257,10258],{"class":4029}," 'м. Київ'",[3996,10260,5720],{"class":4006},[3996,10262,10263,10266,10269],{"class":3998,"line":4311},[3996,10264,10265],{"class":4064},"    population:",[3996,10267,10268],{"class":4029}," '≈ 2,9 млн'",[3996,10270,5720],{"class":4006},[3996,10272,10273],{"class":3998,"line":4317},[3996,10274,10275],{"class":4064},"    description:\n",[3996,10277,10278,10281],{"class":3998,"line":4323},[3996,10279,10280],{"class":4029},"      'Столиця України. Поділ, Хрещатик, правий і лівий береги Дніпра. Зручна відправна точка для подорожей центром країни.'",[3996,10282,5720],{"class":4006},[3996,10284,10285],{"class":3998,"line":4329},[3996,10286,10287],{"class":4006},"  },\n",[3996,10289,10290],{"class":3998,"line":4335},[3996,10291,10230],{"class":4006},[3996,10293,10294,10296,10299],{"class":3998,"line":4341},[3996,10295,10235],{"class":4064},[3996,10297,10298],{"class":4029}," 'lviv'",[3996,10300,5720],{"class":4006},[3996,10302,10303,10305,10308],{"class":3998,"line":4347},[3996,10304,10245],{"class":4064},[3996,10306,10307],{"class":4029}," 'Львів'",[3996,10309,5720],{"class":4006},[3996,10311,10312,10314,10317],{"class":3998,"line":4352},[3996,10313,10255],{"class":4064},[3996,10315,10316],{"class":4029}," 'Львівська область'",[3996,10318,5720],{"class":4006},[3996,10320,10321,10323,10326],{"class":3998,"line":4357},[3996,10322,10265],{"class":4064},[3996,10324,10325],{"class":4029}," '≈ 720 тис.'",[3996,10327,5720],{"class":4006},[3996,10329,10330],{"class":3998,"line":4363},[3996,10331,10275],{"class":4064},[3996,10333,10334,10337],{"class":3998,"line":4369},[3996,10335,10336],{"class":4029},"      'Місто на заході з площею Ринок, кавою й щільною історичною забудовою. Добре для вікенду пішки.'",[3996,10338,5720],{"class":4006},[3996,10340,10341],{"class":3998,"line":4375},[3996,10342,10287],{"class":4006},[3996,10344,10345],{"class":3998,"line":4381},[3996,10346,10230],{"class":4006},[3996,10348,10349,10351,10354],{"class":3998,"line":4387},[3996,10350,10235],{"class":4064},[3996,10352,10353],{"class":4029}," 'odesa'",[3996,10355,5720],{"class":4006},[3996,10357,10358,10360,10363],{"class":3998,"line":4392},[3996,10359,10245],{"class":4064},[3996,10361,10362],{"class":4029}," 'Одеса'",[3996,10364,5720],{"class":4006},[3996,10366,10367,10369,10372],{"class":3998,"line":4398},[3996,10368,10255],{"class":4064},[3996,10370,10371],{"class":4029}," 'Одеська область'",[3996,10373,5720],{"class":4006},[3996,10375,10376,10378,10381],{"class":3998,"line":4404},[3996,10377,10265],{"class":4064},[3996,10379,10380],{"class":4029}," '≈ 1 млн'",[3996,10382,5720],{"class":4006},[3996,10384,10385],{"class":3998,"line":4410},[3996,10386,10275],{"class":4064},[3996,10388,10389,10392],{"class":3998,"line":4415},[3996,10390,10391],{"class":4029},"      'Порт на Чорному морі. Дерибасівська, набережна, особливий гумор і кухня. Літній ритм міста інший, ніж узимку.'",[3996,10393,5720],{"class":4006},[3996,10395,10396],{"class":3998,"line":4420},[3996,10397,10287],{"class":4006},[3996,10399,10400],{"class":3998,"line":4426},[3996,10401,10230],{"class":4006},[3996,10403,10404,10406,10409],{"class":3998,"line":4432},[3996,10405,10235],{"class":4064},[3996,10407,10408],{"class":4029}," 'kharkiv'",[3996,10410,5720],{"class":4006},[3996,10412,10413,10415,10418],{"class":3998,"line":4438},[3996,10414,10245],{"class":4064},[3996,10416,10417],{"class":4029}," 'Харків'",[3996,10419,5720],{"class":4006},[3996,10421,10422,10424,10427],{"class":3998,"line":4443},[3996,10423,10255],{"class":4064},[3996,10425,10426],{"class":4029}," 'Харківська область'",[3996,10428,5720],{"class":4006},[3996,10430,10431,10433,10436],{"class":3998,"line":4448},[3996,10432,10265],{"class":4064},[3996,10434,10435],{"class":4029}," '≈ 1,4 млн'",[3996,10437,5720],{"class":4006},[3996,10439,10440],{"class":3998,"line":4454},[3996,10441,10275],{"class":4064},[3996,10443,10444,10447],{"class":3998,"line":4460},[3996,10445,10446],{"class":4029},"      'Велике місто на сході. Університети, парки, широкі проспекти. Важливий культурний і промисловий осередок.'",[3996,10448,5720],{"class":4006},[3996,10450,10451],{"class":3998,"line":4466},[3996,10452,10287],{"class":4006},[3996,10454,10455],{"class":3998,"line":4472},[3996,10456,10230],{"class":4006},[3996,10458,10459,10461,10464],{"class":3998,"line":4477},[3996,10460,10235],{"class":4064},[3996,10462,10463],{"class":4029}," 'dnipro'",[3996,10465,5720],{"class":4006},[3996,10467,10468,10470,10473],{"class":3998,"line":5066},[3996,10469,10245],{"class":4064},[3996,10471,10472],{"class":4029}," 'Дніпро'",[3996,10474,5720],{"class":4006},[3996,10476,10477,10479,10482],{"class":3998,"line":5072},[3996,10478,10255],{"class":4064},[3996,10480,10481],{"class":4029}," 'Дніпропетровська область'",[3996,10483,5720],{"class":4006},[3996,10485,10486,10488,10491],{"class":3998,"line":5078},[3996,10487,10265],{"class":4064},[3996,10489,10490],{"class":4029}," '≈ 970 тис.'",[3996,10492,5720],{"class":4006},[3996,10494,10495],{"class":3998,"line":5084},[3996,10496,10275],{"class":4064},[3996,10498,10499,10502],{"class":3998,"line":5090},[3996,10500,10501],{"class":4029},"      'Місто на річці Дніпро з довгою набережною й мостами. Зручний вузол між сходом і центром.'",[3996,10503,5720],{"class":4006},[3996,10505,10506],{"class":3998,"line":5096},[3996,10507,10287],{"class":4006},[3996,10509,10511],{"class":3998,"line":10510},50,[3996,10512,10513],{"class":4006},"];\n",[3996,10515,10517],{"class":3998,"line":10516},51,[3996,10518,4051],{"emptyLinePlaceholder":4050},[3996,10520,10522,10524,10526,10529,10531,10534,10536,10538,10541,10543,10545,10548],{"class":3998,"line":10521},52,[3996,10523,5947],{"class":4057},[3996,10525,5953],{"class":4002},[3996,10527,10528],{"class":4022}," getCityById",[3996,10530,4109],{"class":4006},[3996,10532,10533],{"class":4064},"id",[3996,10535,8990],{"class":4006},[3996,10537,7692],{"class":4085},[3996,10539,10540],{"class":4006},"): ",[3996,10542,10222],{"class":4085},[3996,10544,4033],{"class":4006},[3996,10546,10547],{"class":4085},"undefined",[3996,10549,7958],{"class":4006},[3996,10551,10553,10555,10557,10559,10562,10565,10568,10570,10572,10575,10577,10579,10581,10583],{"class":3998,"line":10552},53,[3996,10554,4078],{"class":4057},[3996,10556,10217],{"class":4064},[3996,10558,3821],{"class":4006},[3996,10560,10561],{"class":4022},"find",[3996,10563,10564],{"class":4006},"((",[3996,10566,10567],{"class":4064},"c",[3996,10569,8996],{"class":4006},[3996,10571,4103],{"class":4002},[3996,10573,10574],{"class":4064}," c",[3996,10576,3821],{"class":4006},[3996,10578,10533],{"class":4064},[3996,10580,4067],{"class":4006},[3996,10582,10533],{"class":4064},[3996,10584,4044],{"class":4006},[3996,10586,10588],{"class":3998,"line":10587},54,[3996,10589,4129],{"class":4006},[3801,10591,10593,10594],{"id":10592},"крок-3-корінь-stack-app_layouttsx","Крок 3. Корінь Stack — ",[3747,10595,5190],{},[3743,10597,10598,10601],{},[3765,10599,10600],{},"Повністю замініть"," вміст:",[10122,10603,10605],{"title":10604},"Повний app\u002F_layout.tsx — розгорнути",[3987,10606,10608],{"className":3989,"code":10607,"language":3991,"meta":3992,"style":3992},"import { Stack } from 'expo-router';\nimport { StatusBar } from 'expo-status-bar';\n\nexport default function RootLayout() {\n  return (\n    \u003C>\n      \u003CStatusBar style=\"dark\" \u002F>\n      \u003CStack\n        screenOptions={{\n          headerStyle: { backgroundColor: '#F8FAFC' },\n          headerTintColor: '#2563EB',\n          headerTitleStyle: { fontWeight: '600', color: '#0F172A' },\n          contentStyle: { backgroundColor: '#F8FAFC' },\n        }}\n      >\n        \u003CStack.Screen name=\"(tabs)\" options={{ headerShown: false }} \u002F>\n        \u003CStack.Screen\n          name=\"city\u002F[id]\"\n          options={{\n            title: 'Про місто',\n            headerBackTitle: 'Назад',\n          }}\n        \u002F>\n      \u003C\u002FStack>\n    \u003C\u002F>\n  );\n}\n",[3747,10609,10610,10626,10642,10646,10658,10664,10668,10683,10689,10699,10712,10721,10740,10752,10758,10762,10792,10798,10807,10817,10826,10834,10840,10844,10852,10856,10860],{"__ignoreMap":3992},[3996,10611,10612,10614,10616,10618,10620,10622,10624],{"class":3998,"line":3999},[3996,10613,5501],{"class":4057},[3996,10615,5504],{"class":4006},[3996,10617,3844],{"class":4064},[3996,10619,5509],{"class":4006},[3996,10621,5512],{"class":4057},[3996,10623,5515],{"class":4029},[3996,10625,4123],{"class":4006},[3996,10627,10628,10630,10632,10634,10636,10638,10640],{"class":3998,"line":4047},[3996,10629,5501],{"class":4057},[3996,10631,5504],{"class":4006},[3996,10633,5225],{"class":4064},[3996,10635,5509],{"class":4006},[3996,10637,5512],{"class":4057},[3996,10639,5532],{"class":4029},[3996,10641,4123],{"class":4006},[3996,10643,10644],{"class":3998,"line":4054},[3996,10645,4051],{"emptyLinePlaceholder":4050},[3996,10647,10648,10650,10652,10654,10656],{"class":3998,"line":4075},[3996,10649,5947],{"class":4057},[3996,10651,5950],{"class":4057},[3996,10653,5953],{"class":4002},[3996,10655,5956],{"class":4022},[3996,10657,5588],{"class":4006},[3996,10659,10660,10662],{"class":3998,"line":4126},[3996,10661,4078],{"class":4057},[3996,10663,5622],{"class":4006},[3996,10665,10666],{"class":3998,"line":4132},[3996,10667,5627],{"class":4081},[3996,10669,10670,10672,10674,10676,10678,10681],{"class":3998,"line":4137},[3996,10671,5632],{"class":4081},[3996,10673,5225],{"class":4085},[3996,10675,5637],{"class":4089},[3996,10677,4093],{"class":4006},[3996,10679,10680],{"class":4029},"\"dark\"",[3996,10682,5665],{"class":4081},[3996,10684,10685,10687],{"class":3998,"line":4275},[3996,10686,5632],{"class":4081},[3996,10688,5672],{"class":4085},[3996,10690,10691,10693,10695,10697],{"class":3998,"line":4281},[3996,10692,5677],{"class":4089},[3996,10694,4093],{"class":4006},[3996,10696,4096],{"class":4002},[3996,10698,5684],{"class":4099},[3996,10700,10701,10703,10705,10707,10710],{"class":3998,"line":4287},[3996,10702,5689],{"class":4064},[3996,10704,5504],{"class":4099},[3996,10706,5694],{"class":4064},[3996,10708,10709],{"class":4029}," '#F8FAFC'",[3996,10711,5705],{"class":4099},[3996,10713,10714,10716,10719],{"class":3998,"line":4293},[3996,10715,5710],{"class":4064},[3996,10717,10718],{"class":4029}," '#2563EB'",[3996,10720,5720],{"class":4099},[3996,10722,10723,10725,10727,10729,10731,10733,10735,10738],{"class":3998,"line":4299},[3996,10724,5725],{"class":4064},[3996,10726,5504],{"class":4099},[3996,10728,5741],{"class":4064},[3996,10730,5744],{"class":4029},[3996,10732,3867],{"class":4099},[3996,10734,5730],{"class":4064},[3996,10736,10737],{"class":4029}," '#0F172A'",[3996,10739,5705],{"class":4099},[3996,10741,10742,10744,10746,10748,10750],{"class":3998,"line":4305},[3996,10743,5751],{"class":4064},[3996,10745,5504],{"class":4099},[3996,10747,5694],{"class":4064},[3996,10749,10709],{"class":4029},[3996,10751,5705],{"class":4099},[3996,10753,10754,10756],{"class":3998,"line":4311},[3996,10755,5768],{"class":4099},[3996,10757,4129],{"class":4002},[3996,10759,10760],{"class":3998,"line":4317},[3996,10761,5775],{"class":4081},[3996,10763,10764,10766,10768,10770,10772,10774,10776,10778,10780,10782,10784,10786,10788,10790],{"class":3998,"line":4323},[3996,10765,5791],{"class":4081},[3996,10767,5794],{"class":4085},[3996,10769,5797],{"class":4089},[3996,10771,4093],{"class":4006},[3996,10773,5802],{"class":4029},[3996,10775,5805],{"class":4089},[3996,10777,4093],{"class":4006},[3996,10779,4096],{"class":4002},[3996,10781,5812],{"class":4099},[3996,10783,5815],{"class":4064},[3996,10785,5818],{"class":4002},[3996,10787,5821],{"class":4099},[3996,10789,4117],{"class":4002},[3996,10791,5665],{"class":4081},[3996,10793,10794,10796],{"class":3998,"line":4329},[3996,10795,5791],{"class":4081},[3996,10797,5841],{"class":4085},[3996,10799,10800,10802,10804],{"class":3998,"line":4335},[3996,10801,5846],{"class":4089},[3996,10803,4093],{"class":4006},[3996,10805,10806],{"class":4029},"\"city\u002F[id]\"\n",[3996,10808,10809,10811,10813,10815],{"class":3998,"line":4341},[3996,10810,5856],{"class":4089},[3996,10812,4093],{"class":4006},[3996,10814,4096],{"class":4002},[3996,10816,5684],{"class":4099},[3996,10818,10819,10821,10824],{"class":3998,"line":4347},[3996,10820,5867],{"class":4064},[3996,10822,10823],{"class":4029}," 'Про місто'",[3996,10825,5720],{"class":4099},[3996,10827,10828,10830,10832],{"class":3998,"line":4352},[3996,10829,5897],{"class":4064},[3996,10831,5900],{"class":4029},[3996,10833,5720],{"class":4099},[3996,10835,10836,10838],{"class":3998,"line":4357},[3996,10837,5907],{"class":4099},[3996,10839,4129],{"class":4002},[3996,10841,10842],{"class":3998,"line":4363},[3996,10843,5914],{"class":4081},[3996,10845,10846,10848,10850],{"class":3998,"line":4369},[3996,10847,5919],{"class":4081},[3996,10849,3844],{"class":4085},[3996,10851,5924],{"class":4081},[3996,10853,10854],{"class":3998,"line":4375},[3996,10855,5929],{"class":4081},[3996,10857,10858],{"class":3998,"line":4381},[3996,10859,5934],{"class":4006},[3996,10861,10862],{"class":3998,"line":4387},[3996,10863,4129],{"class":4006},[3801,10865,10867,10868],{"id":10866},"крок-4-tabs-apptabs_layouttsx","Крок 4. Tabs — ",[3747,10869,10870],{},"app\u002F(tabs)\u002F_layout.tsx",[3743,10872,10873,10875,10876,3936,10878,3821],{},[3765,10874,10600],{}," вміст. Лише дві вкладки: ",[3747,10877,6049],{},[3747,10879,6750],{},[10122,10881,10883],{"title":10882},"Повний app\u002F(tabs)\u002F_layout.tsx — розгорнути",[3987,10884,10886],{"className":3989,"code":10885,"language":3991,"meta":3992,"style":3992},"import { Tabs } from 'expo-router';\nimport { Ionicons } from '@expo\u002Fvector-icons';\n\nexport default function TabsLayout() {\n  return (\n    \u003CTabs\n      screenOptions={{\n        headerShown: false,\n        tabBarActiveTintColor: '#2563EB',\n        tabBarInactiveTintColor: '#64748B',\n        tabBarStyle: {\n          backgroundColor: '#F8FAFC',\n          borderTopColor: '#E2E8F0',\n        },\n        tabBarLabelStyle: { fontSize: 12, fontWeight: '600' },\n      }}\n    >\n      \u003CTabs.Screen\n        name=\"index\"\n        options={{\n          title: 'Список',\n          tabBarIcon: ({ color, size }) => (\n            \u003CIonicons name=\"list-outline\" size={size} color={color} \u002F>\n          ),\n        }}\n      \u002F>\n      \u003CTabs.Screen\n        name=\"about\"\n        options={{\n          title: 'Про нас',\n          tabBarIcon: ({ color, size }) => (\n            \u003CIonicons\n              name=\"information-circle-outline\"\n              size={size}\n              color={color}\n            \u002F>\n          ),\n        }}\n      \u002F>\n    \u003C\u002FTabs>\n  );\n}\n",[3747,10887,10888,10904,10921,10925,10938,10944,10951,10962,10971,10980,10990,10997,11006,11016,11021,11043,11050,11055,11061,11071,11082,11092,11113,11149,11154,11160,11165,11171,11180,11190,11199,11219,11226,11236,11249,11262,11267,11271,11277,11281,11289,11293],{"__ignoreMap":3992},[3996,10889,10890,10892,10894,10896,10898,10900,10902],{"class":3998,"line":3999},[3996,10891,5501],{"class":4057},[3996,10893,5504],{"class":4006},[3996,10895,3840],{"class":4064},[3996,10897,5509],{"class":4006},[3996,10899,5512],{"class":4057},[3996,10901,5515],{"class":4029},[3996,10903,4123],{"class":4006},[3996,10905,10906,10908,10910,10912,10914,10916,10919],{"class":3998,"line":4047},[3996,10907,5501],{"class":4057},[3996,10909,5504],{"class":4006},[3996,10911,6892],{"class":4064},[3996,10913,5509],{"class":4006},[3996,10915,5512],{"class":4057},[3996,10917,10918],{"class":4029}," '@expo\u002Fvector-icons'",[3996,10920,4123],{"class":4006},[3996,10922,10923],{"class":3998,"line":4054},[3996,10924,4051],{"emptyLinePlaceholder":4050},[3996,10926,10927,10929,10931,10933,10936],{"class":3998,"line":4075},[3996,10928,5947],{"class":4057},[3996,10930,5950],{"class":4057},[3996,10932,5953],{"class":4002},[3996,10934,10935],{"class":4022}," TabsLayout",[3996,10937,5588],{"class":4006},[3996,10939,10940,10942],{"class":3998,"line":4126},[3996,10941,4078],{"class":4057},[3996,10943,5622],{"class":4006},[3996,10945,10946,10948],{"class":3998,"line":4132},[3996,10947,5969],{"class":4081},[3996,10949,10950],{"class":4085},"Tabs\n",[3996,10952,10953,10956,10958,10960],{"class":3998,"line":4137},[3996,10954,10955],{"class":4089},"      screenOptions",[3996,10957,4093],{"class":4006},[3996,10959,4096],{"class":4002},[3996,10961,5684],{"class":4099},[3996,10963,10964,10967,10969],{"class":3998,"line":4275},[3996,10965,10966],{"class":4064},"        headerShown:",[3996,10968,5818],{"class":4002},[3996,10970,5720],{"class":4099},[3996,10972,10973,10976,10978],{"class":3998,"line":4281},[3996,10974,10975],{"class":4064},"        tabBarActiveTintColor:",[3996,10977,10718],{"class":4029},[3996,10979,5720],{"class":4099},[3996,10981,10982,10985,10988],{"class":3998,"line":4287},[3996,10983,10984],{"class":4064},"        tabBarInactiveTintColor:",[3996,10986,10987],{"class":4029}," '#64748B'",[3996,10989,5720],{"class":4099},[3996,10991,10992,10995],{"class":3998,"line":4293},[3996,10993,10994],{"class":4064},"        tabBarStyle:",[3996,10996,7958],{"class":4099},[3996,10998,10999,11002,11004],{"class":3998,"line":4299},[3996,11000,11001],{"class":4064},"          backgroundColor:",[3996,11003,10709],{"class":4029},[3996,11005,5720],{"class":4099},[3996,11007,11008,11011,11014],{"class":3998,"line":4305},[3996,11009,11010],{"class":4064},"          borderTopColor:",[3996,11012,11013],{"class":4029}," '#E2E8F0'",[3996,11015,5720],{"class":4099},[3996,11017,11018],{"class":3998,"line":4311},[3996,11019,11020],{"class":4099},"        },\n",[3996,11022,11023,11026,11028,11031,11035,11037,11039,11041],{"class":3998,"line":4317},[3996,11024,11025],{"class":4064},"        tabBarLabelStyle:",[3996,11027,5504],{"class":4099},[3996,11029,11030],{"class":4064},"fontSize:",[3996,11032,11034],{"class":11033},"sJj4R"," 12",[3996,11036,3867],{"class":4099},[3996,11038,5741],{"class":4064},[3996,11040,5744],{"class":4029},[3996,11042,5705],{"class":4099},[3996,11044,11045,11048],{"class":3998,"line":4323},[3996,11046,11047],{"class":4099},"      }",[3996,11049,4129],{"class":4002},[3996,11051,11052],{"class":3998,"line":4329},[3996,11053,11054],{"class":4081},"    >\n",[3996,11056,11057,11059],{"class":3998,"line":4335},[3996,11058,5632],{"class":4081},[3996,11060,6830],{"class":4085},[3996,11062,11063,11066,11068],{"class":3998,"line":4341},[3996,11064,11065],{"class":4089},"        name",[3996,11067,4093],{"class":4006},[3996,11069,11070],{"class":4029},"\"index\"\n",[3996,11072,11073,11076,11078,11080],{"class":3998,"line":4347},[3996,11074,11075],{"class":4089},"        options",[3996,11077,4093],{"class":4006},[3996,11079,4096],{"class":4002},[3996,11081,5684],{"class":4099},[3996,11083,11084,11087,11090],{"class":3998,"line":4352},[3996,11085,11086],{"class":4064},"          title:",[3996,11088,11089],{"class":4029}," 'Список'",[3996,11091,5720],{"class":4099},[3996,11093,11094,11097,11099,11101,11103,11105,11107,11109,11111],{"class":3998,"line":4357},[3996,11095,11096],{"class":4022},"          tabBarIcon",[3996,11098,6869],{"class":4064},[3996,11100,6872],{"class":4099},[3996,11102,6758],{"class":4064},[3996,11104,3867],{"class":4099},[3996,11106,6762],{"class":4064},[3996,11108,6881],{"class":4099},[3996,11110,4103],{"class":4002},[3996,11112,5622],{"class":4099},[3996,11114,11115,11118,11120,11122,11124,11127,11129,11131,11133,11135,11137,11139,11141,11143,11145,11147],{"class":3998,"line":4363},[3996,11116,11117],{"class":4081},"            \u003C",[3996,11119,6892],{"class":4085},[3996,11121,5797],{"class":4089},[3996,11123,4093],{"class":4006},[3996,11125,11126],{"class":4029},"\"list-outline\"",[3996,11128,6902],{"class":4089},[3996,11130,4093],{"class":4006},[3996,11132,4096],{"class":4002},[3996,11134,6762],{"class":4064},[3996,11136,4117],{"class":4002},[3996,11138,6913],{"class":4089},[3996,11140,4093],{"class":4006},[3996,11142,4096],{"class":4002},[3996,11144,6758],{"class":4064},[3996,11146,4117],{"class":4002},[3996,11148,5665],{"class":4081},[3996,11150,11151],{"class":3998,"line":4369},[3996,11152,11153],{"class":4099},"          ),\n",[3996,11155,11156,11158],{"class":3998,"line":4375},[3996,11157,5768],{"class":4099},[3996,11159,4129],{"class":4002},[3996,11161,11162],{"class":3998,"line":4381},[3996,11163,11164],{"class":4081},"      \u002F>\n",[3996,11166,11167,11169],{"class":3998,"line":4387},[3996,11168,5632],{"class":4081},[3996,11170,6830],{"class":4085},[3996,11172,11173,11175,11177],{"class":3998,"line":4392},[3996,11174,11065],{"class":4089},[3996,11176,4093],{"class":4006},[3996,11178,11179],{"class":4029},"\"about\"\n",[3996,11181,11182,11184,11186,11188],{"class":3998,"line":4398},[3996,11183,11075],{"class":4089},[3996,11185,4093],{"class":4006},[3996,11187,4096],{"class":4002},[3996,11189,5684],{"class":4099},[3996,11191,11192,11194,11197],{"class":3998,"line":4404},[3996,11193,11086],{"class":4064},[3996,11195,11196],{"class":4029}," 'Про нас'",[3996,11198,5720],{"class":4099},[3996,11200,11201,11203,11205,11207,11209,11211,11213,11215,11217],{"class":3998,"line":4410},[3996,11202,11096],{"class":4022},[3996,11204,6869],{"class":4064},[3996,11206,6872],{"class":4099},[3996,11208,6758],{"class":4064},[3996,11210,3867],{"class":4099},[3996,11212,6762],{"class":4064},[3996,11214,6881],{"class":4099},[3996,11216,4103],{"class":4002},[3996,11218,5622],{"class":4099},[3996,11220,11221,11223],{"class":3998,"line":4415},[3996,11222,11117],{"class":4081},[3996,11224,11225],{"class":4085},"Ionicons\n",[3996,11227,11228,11231,11233],{"class":3998,"line":4420},[3996,11229,11230],{"class":4089},"              name",[3996,11232,4093],{"class":4006},[3996,11234,11235],{"class":4029},"\"information-circle-outline\"\n",[3996,11237,11238,11241,11243,11245,11247],{"class":3998,"line":4426},[3996,11239,11240],{"class":4089},"              size",[3996,11242,4093],{"class":4006},[3996,11244,4096],{"class":4002},[3996,11246,6762],{"class":4064},[3996,11248,4129],{"class":4002},[3996,11250,11251,11254,11256,11258,11260],{"class":3998,"line":4432},[3996,11252,11253],{"class":4089},"              color",[3996,11255,4093],{"class":4006},[3996,11257,4096],{"class":4002},[3996,11259,6758],{"class":4064},[3996,11261,4129],{"class":4002},[3996,11263,11264],{"class":3998,"line":4438},[3996,11265,11266],{"class":4081},"            \u002F>\n",[3996,11268,11269],{"class":3998,"line":4443},[3996,11270,11153],{"class":4099},[3996,11272,11273,11275],{"class":3998,"line":4448},[3996,11274,5768],{"class":4099},[3996,11276,4129],{"class":4002},[3996,11278,11279],{"class":3998,"line":4454},[3996,11280,11164],{"class":4081},[3996,11282,11283,11285,11287],{"class":3998,"line":4460},[3996,11284,6003],{"class":4081},[3996,11286,3840],{"class":4085},[3996,11288,5924],{"class":4081},[3996,11290,11291],{"class":3998,"line":4466},[3996,11292,5934],{"class":4006},[3996,11294,11295],{"class":3998,"line":4472},[3996,11296,4129],{"class":4006},[3801,11298,11300,11301],{"id":11299},"крок-5-список-apptabsindextsx","Крок 5. Список — ",[3747,11302,6118],{},[3743,11304,11305,10601],{},[3765,11306,10600],{},[10122,11308,11310],{"title":11309},"Повний app\u002F(tabs)\u002Findex.tsx — розгорнути",[3987,11311,11313],{"className":3989,"code":11312,"language":3991,"meta":3992,"style":3992},"import { FlatList, Pressable, StyleSheet, Text, View } from 'react-native';\nimport { Link } from 'expo-router';\nimport { SafeAreaView } from 'react-native-safe-area-context';\n\nimport { cities } from '..\u002F..\u002Fsrc\u002Fdata\u002Fcities';\n\nexport default function CitiesListScreen() {\n  return (\n    \u003CSafeAreaView style={styles.safe} edges={['top']}>\n      \u003CView style={styles.header}>\n        \u003CText style={styles.title}>Довідник міст\u003C\u002FText>\n        \u003CText style={styles.muted}>{cities.length} міст · тапніть картку\u003C\u002FText>\n      \u003C\u002FView>\n\n      \u003CFlatList\n        data={cities}\n        keyExtractor={(item) => item.id}\n        contentContainerStyle={styles.list}\n        ItemSeparatorComponent={() => \u003CView style={{ height: 10 }} \u002F>}\n        renderItem={({ item }) => (\n          \u003CLink href={`\u002Fcity\u002F${item.id}`} asChild>\n            \u003CPressable style={styles.card}>\n              \u003CText style={styles.cardTitle}>{item.name}\u003C\u002FText>\n              \u003CText style={styles.cardMeta}>{item.region}\u003C\u002FText>\n              \u003CText style={styles.linkHint}>Деталі →\u003C\u002FText>\n            \u003C\u002FPressable>\n          \u003C\u002FLink>\n        )}\n      \u002F>\n    \u003C\u002FSafeAreaView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  safe: { flex: 1, backgroundColor: '#F8FAFC' },\n  header: {\n    paddingHorizontal: 16,\n    paddingTop: 8,\n    paddingBottom: 12,\n    borderBottomWidth: 1,\n    borderBottomColor: '#E2E8F0',\n  },\n  title: { fontSize: 24, fontWeight: '800', color: '#0F172A' },\n  muted: { marginTop: 4, color: '#64748B', fontSize: 13 },\n  list: { padding: 16, paddingBottom: 32 },\n  card: {\n    backgroundColor: '#FFFFFF',\n    borderRadius: 12,\n    borderWidth: 1,\n    borderColor: '#E2E8F0',\n    padding: 14,\n  },\n  cardTitle: { fontSize: 18, fontWeight: '700', color: '#0F172A' },\n  cardMeta: { marginTop: 4, color: '#64748B', fontSize: 13 },\n  linkHint: {\n    marginTop: 10,\n    color: '#2563EB',\n    fontWeight: '700',\n    fontSize: 13,\n  },\n});\n",[3747,11314,11315,11349,11365,11382,11386,11404,11408,11421,11427,11468,11491,11522,11565,11573,11577,11584,11597,11624,11642,11681,11700,11735,11758,11798,11838,11870,11879,11888,11895,11899,11907,11911,11915,11919,11937,11958,11965,11975,11985,11994,12003,12012,12016,12043,12071,12093,12100,12110,12119,12128,12137,12147,12151,12178,12203,12211,12221,12231,12241,12251,12256],{"__ignoreMap":3992},[3996,11316,11317,11319,11321,11324,11326,11328,11330,11332,11334,11336,11338,11341,11343,11345,11347],{"class":3998,"line":3999},[3996,11318,5501],{"class":4057},[3996,11320,5504],{"class":4006},[3996,11322,11323],{"class":4064},"FlatList",[3996,11325,3867],{"class":4006},[3996,11327,7896],{"class":4064},[3996,11329,3867],{"class":4006},[3996,11331,8741],{"class":4064},[3996,11333,3867],{"class":4006},[3996,11335,7901],{"class":4064},[3996,11337,3867],{"class":4006},[3996,11339,11340],{"class":4064},"View",[3996,11342,5509],{"class":4006},[3996,11344,5512],{"class":4057},[3996,11346,7908],{"class":4029},[3996,11348,4123],{"class":4006},[3996,11350,11351,11353,11355,11357,11359,11361,11363],{"class":3998,"line":4047},[3996,11352,5501],{"class":4057},[3996,11354,5504],{"class":4006},[3996,11356,3852],{"class":4064},[3996,11358,5509],{"class":4006},[3996,11360,5512],{"class":4057},[3996,11362,5515],{"class":4029},[3996,11364,4123],{"class":4006},[3996,11366,11367,11369,11371,11373,11375,11377,11380],{"class":3998,"line":4054},[3996,11368,5501],{"class":4057},[3996,11370,5504],{"class":4006},[3996,11372,7191],{"class":4064},[3996,11374,5509],{"class":4006},[3996,11376,5512],{"class":4057},[3996,11378,11379],{"class":4029}," 'react-native-safe-area-context'",[3996,11381,4123],{"class":4006},[3996,11383,11384],{"class":3998,"line":4075},[3996,11385,4051],{"emptyLinePlaceholder":4050},[3996,11387,11388,11390,11392,11395,11397,11399,11402],{"class":3998,"line":4126},[3996,11389,5501],{"class":4057},[3996,11391,5504],{"class":4006},[3996,11393,11394],{"class":4064},"cities",[3996,11396,5509],{"class":4006},[3996,11398,5512],{"class":4057},[3996,11400,11401],{"class":4029}," '..\u002F..\u002Fsrc\u002Fdata\u002Fcities'",[3996,11403,4123],{"class":4006},[3996,11405,11406],{"class":3998,"line":4132},[3996,11407,4051],{"emptyLinePlaceholder":4050},[3996,11409,11410,11412,11414,11416,11419],{"class":3998,"line":4137},[3996,11411,5947],{"class":4057},[3996,11413,5950],{"class":4057},[3996,11415,5953],{"class":4002},[3996,11417,11418],{"class":4022}," CitiesListScreen",[3996,11420,5588],{"class":4006},[3996,11422,11423,11425],{"class":3998,"line":4275},[3996,11424,4078],{"class":4057},[3996,11426,5622],{"class":4006},[3996,11428,11429,11431,11433,11435,11437,11439,11441,11443,11446,11448,11451,11453,11455,11458,11461,11464,11466],{"class":3998,"line":4281},[3996,11430,5969],{"class":4081},[3996,11432,7191],{"class":4085},[3996,11434,5637],{"class":4089},[3996,11436,4093],{"class":4006},[3996,11438,4096],{"class":4002},[3996,11440,8789],{"class":4064},[3996,11442,3821],{"class":4099},[3996,11444,11445],{"class":4064},"safe",[3996,11447,4117],{"class":4002},[3996,11449,11450],{"class":4089}," edges",[3996,11452,4093],{"class":4006},[3996,11454,4096],{"class":4002},[3996,11456,11457],{"class":4099},"[",[3996,11459,11460],{"class":4029},"'top'",[3996,11462,11463],{"class":4099},"]",[3996,11465,4117],{"class":4002},[3996,11467,5924],{"class":4081},[3996,11469,11470,11472,11474,11476,11478,11480,11482,11484,11487,11489],{"class":3998,"line":4287},[3996,11471,5632],{"class":4081},[3996,11473,11340],{"class":4085},[3996,11475,5637],{"class":4089},[3996,11477,4093],{"class":4006},[3996,11479,4096],{"class":4002},[3996,11481,8789],{"class":4064},[3996,11483,3821],{"class":4099},[3996,11485,11486],{"class":4064},"header",[3996,11488,4117],{"class":4002},[3996,11490,5924],{"class":4081},[3996,11492,11493,11495,11497,11499,11501,11503,11505,11507,11509,11511,11513,11516,11518,11520],{"class":3998,"line":4293},[3996,11494,5791],{"class":4081},[3996,11496,7901],{"class":4085},[3996,11498,5637],{"class":4089},[3996,11500,4093],{"class":4006},[3996,11502,4096],{"class":4002},[3996,11504,8789],{"class":4064},[3996,11506,3821],{"class":4099},[3996,11508,7585],{"class":4064},[3996,11510,4117],{"class":4002},[3996,11512,8059],{"class":4081},[3996,11514,11515],{"class":4006},"Довідник міст",[3996,11517,8065],{"class":4081},[3996,11519,7901],{"class":4085},[3996,11521,5924],{"class":4081},[3996,11523,11524,11526,11528,11530,11532,11534,11536,11538,11541,11543,11545,11547,11549,11551,11554,11556,11559,11561,11563],{"class":3998,"line":4299},[3996,11525,5791],{"class":4081},[3996,11527,7901],{"class":4085},[3996,11529,5637],{"class":4089},[3996,11531,4093],{"class":4006},[3996,11533,4096],{"class":4002},[3996,11535,8789],{"class":4064},[3996,11537,3821],{"class":4099},[3996,11539,11540],{"class":4064},"muted",[3996,11542,4117],{"class":4002},[3996,11544,8059],{"class":4081},[3996,11546,4096],{"class":4002},[3996,11548,11394],{"class":4064},[3996,11550,3821],{"class":4099},[3996,11552,11553],{"class":4064},"length",[3996,11555,4117],{"class":4002},[3996,11557,11558],{"class":4006}," міст · тапніть картку",[3996,11560,8065],{"class":4081},[3996,11562,7901],{"class":4085},[3996,11564,5924],{"class":4081},[3996,11566,11567,11569,11571],{"class":3998,"line":4305},[3996,11568,5919],{"class":4081},[3996,11570,11340],{"class":4085},[3996,11572,5924],{"class":4081},[3996,11574,11575],{"class":3998,"line":4311},[3996,11576,4051],{"emptyLinePlaceholder":4050},[3996,11578,11579,11581],{"class":3998,"line":4317},[3996,11580,5632],{"class":4081},[3996,11582,11583],{"class":4085},"FlatList\n",[3996,11585,11586,11589,11591,11593,11595],{"class":3998,"line":4323},[3996,11587,11588],{"class":4089},"        data",[3996,11590,4093],{"class":4006},[3996,11592,4096],{"class":4002},[3996,11594,11394],{"class":4064},[3996,11596,4129],{"class":4002},[3996,11598,11599,11602,11604,11606,11608,11611,11613,11615,11618,11620,11622],{"class":3998,"line":4329},[3996,11600,11601],{"class":4089},"        keyExtractor",[3996,11603,4093],{"class":4006},[3996,11605,4096],{"class":4002},[3996,11607,4109],{"class":4099},[3996,11609,11610],{"class":4064},"item",[3996,11612,8996],{"class":4099},[3996,11614,4103],{"class":4002},[3996,11616,11617],{"class":4064}," item",[3996,11619,3821],{"class":4099},[3996,11621,10533],{"class":4064},[3996,11623,4129],{"class":4002},[3996,11625,11626,11629,11631,11633,11635,11637,11640],{"class":3998,"line":4335},[3996,11627,11628],{"class":4089},"        contentContainerStyle",[3996,11630,4093],{"class":4006},[3996,11632,4096],{"class":4002},[3996,11634,8789],{"class":4064},[3996,11636,3821],{"class":4099},[3996,11638,11639],{"class":4064},"list",[3996,11641,4129],{"class":4002},[3996,11643,11644,11647,11649,11651,11653,11655,11657,11659,11661,11663,11665,11667,11670,11673,11675,11677,11679],{"class":3998,"line":4341},[3996,11645,11646],{"class":4089},"        ItemSeparatorComponent",[3996,11648,4093],{"class":4006},[3996,11650,4096],{"class":4002},[3996,11652,4100],{"class":4099},[3996,11654,4103],{"class":4002},[3996,11656,4082],{"class":4081},[3996,11658,11340],{"class":4085},[3996,11660,5637],{"class":4089},[3996,11662,4093],{"class":4006},[3996,11664,4096],{"class":4002},[3996,11666,5812],{"class":4099},[3996,11668,11669],{"class":4064},"height:",[3996,11671,11672],{"class":11033}," 10",[3996,11674,5821],{"class":4099},[3996,11676,4117],{"class":4002},[3996,11678,4120],{"class":4081},[3996,11680,4129],{"class":4002},[3996,11682,11683,11686,11688,11690,11692,11694,11696,11698],{"class":3998,"line":4347},[3996,11684,11685],{"class":4089},"        renderItem",[3996,11687,4093],{"class":4006},[3996,11689,4096],{"class":4002},[3996,11691,7759],{"class":4099},[3996,11693,11610],{"class":4064},[3996,11695,6881],{"class":4099},[3996,11697,4103],{"class":4002},[3996,11699,5622],{"class":4099},[3996,11701,11702,11704,11706,11708,11710,11712,11715,11718,11720,11722,11724,11726,11729,11731,11733],{"class":3998,"line":4352},[3996,11703,8031],{"class":4081},[3996,11705,3852],{"class":4085},[3996,11707,8641],{"class":4089},[3996,11709,4093],{"class":4006},[3996,11711,4096],{"class":4002},[3996,11713,11714],{"class":4029},"`\u002Fcity\u002F",[3996,11716,11717],{"class":4002},"${",[3996,11719,11610],{"class":4064},[3996,11721,3821],{"class":4099},[3996,11723,10533],{"class":4064},[3996,11725,4117],{"class":4002},[3996,11727,11728],{"class":4029},"`",[3996,11730,4117],{"class":4002},[3996,11732,8772],{"class":4089},[3996,11734,5924],{"class":4081},[3996,11736,11737,11739,11741,11743,11745,11747,11749,11751,11754,11756],{"class":3998,"line":4357},[3996,11738,11117],{"class":4081},[3996,11740,7896],{"class":4085},[3996,11742,5637],{"class":4089},[3996,11744,4093],{"class":4006},[3996,11746,4096],{"class":4002},[3996,11748,8789],{"class":4064},[3996,11750,3821],{"class":4099},[3996,11752,11753],{"class":4064},"card",[3996,11755,4117],{"class":4002},[3996,11757,5924],{"class":4081},[3996,11759,11760,11763,11765,11767,11769,11771,11773,11775,11778,11780,11782,11784,11786,11788,11790,11792,11794,11796],{"class":3998,"line":4363},[3996,11761,11762],{"class":4081},"              \u003C",[3996,11764,7901],{"class":4085},[3996,11766,5637],{"class":4089},[3996,11768,4093],{"class":4006},[3996,11770,4096],{"class":4002},[3996,11772,8789],{"class":4064},[3996,11774,3821],{"class":4099},[3996,11776,11777],{"class":4064},"cardTitle",[3996,11779,4117],{"class":4002},[3996,11781,8059],{"class":4081},[3996,11783,4096],{"class":4002},[3996,11785,11610],{"class":4064},[3996,11787,3821],{"class":4099},[3996,11789,6457],{"class":4064},[3996,11791,4117],{"class":4002},[3996,11793,8065],{"class":4081},[3996,11795,7901],{"class":4085},[3996,11797,5924],{"class":4081},[3996,11799,11800,11802,11804,11806,11808,11810,11812,11814,11817,11819,11821,11823,11825,11827,11830,11832,11834,11836],{"class":3998,"line":4369},[3996,11801,11762],{"class":4081},[3996,11803,7901],{"class":4085},[3996,11805,5637],{"class":4089},[3996,11807,4093],{"class":4006},[3996,11809,4096],{"class":4002},[3996,11811,8789],{"class":4064},[3996,11813,3821],{"class":4099},[3996,11815,11816],{"class":4064},"cardMeta",[3996,11818,4117],{"class":4002},[3996,11820,8059],{"class":4081},[3996,11822,4096],{"class":4002},[3996,11824,11610],{"class":4064},[3996,11826,3821],{"class":4099},[3996,11828,11829],{"class":4064},"region",[3996,11831,4117],{"class":4002},[3996,11833,8065],{"class":4081},[3996,11835,7901],{"class":4085},[3996,11837,5924],{"class":4081},[3996,11839,11840,11842,11844,11846,11848,11850,11852,11854,11857,11859,11861,11864,11866,11868],{"class":3998,"line":4375},[3996,11841,11762],{"class":4081},[3996,11843,7901],{"class":4085},[3996,11845,5637],{"class":4089},[3996,11847,4093],{"class":4006},[3996,11849,4096],{"class":4002},[3996,11851,8789],{"class":4064},[3996,11853,3821],{"class":4099},[3996,11855,11856],{"class":4064},"linkHint",[3996,11858,4117],{"class":4002},[3996,11860,8059],{"class":4081},[3996,11862,11863],{"class":4099},"Деталі →",[3996,11865,8065],{"class":4081},[3996,11867,7901],{"class":4085},[3996,11869,5924],{"class":4081},[3996,11871,11872,11875,11877],{"class":3998,"line":4381},[3996,11873,11874],{"class":4081},"            \u003C\u002F",[3996,11876,7896],{"class":4085},[3996,11878,5924],{"class":4081},[3996,11880,11881,11884,11886],{"class":3998,"line":4387},[3996,11882,11883],{"class":4081},"          \u003C\u002F",[3996,11885,3852],{"class":4085},[3996,11887,5924],{"class":4081},[3996,11889,11890,11893],{"class":3998,"line":4392},[3996,11891,11892],{"class":4099},"        )",[3996,11894,4129],{"class":4002},[3996,11896,11897],{"class":3998,"line":4398},[3996,11898,11164],{"class":4081},[3996,11900,11901,11903,11905],{"class":3998,"line":4404},[3996,11902,6003],{"class":4081},[3996,11904,7191],{"class":4085},[3996,11906,5924],{"class":4081},[3996,11908,11909],{"class":3998,"line":4410},[3996,11910,5934],{"class":4006},[3996,11912,11913],{"class":3998,"line":4415},[3996,11914,4129],{"class":4006},[3996,11916,11917],{"class":3998,"line":4420},[3996,11918,4051],{"emptyLinePlaceholder":4050},[3996,11920,11921,11923,11926,11928,11930,11932,11935],{"class":3998,"line":4426},[3996,11922,4003],{"class":4002},[3996,11924,11925],{"class":4010}," styles",[3996,11927,7937],{"class":4006},[3996,11929,8741],{"class":4064},[3996,11931,3821],{"class":4006},[3996,11933,11934],{"class":4022},"create",[3996,11936,7971],{"class":4006},[3996,11938,11939,11942,11944,11947,11950,11952,11954,11956],{"class":3998,"line":4432},[3996,11940,11941],{"class":4064},"  safe:",[3996,11943,5504],{"class":4006},[3996,11945,11946],{"class":4064},"flex:",[3996,11948,11949],{"class":11033}," 1",[3996,11951,3867],{"class":4006},[3996,11953,5694],{"class":4064},[3996,11955,10709],{"class":4029},[3996,11957,5705],{"class":4006},[3996,11959,11960,11963],{"class":3998,"line":4438},[3996,11961,11962],{"class":4064},"  header:",[3996,11964,7958],{"class":4006},[3996,11966,11967,11970,11973],{"class":3998,"line":4443},[3996,11968,11969],{"class":4064},"    paddingHorizontal:",[3996,11971,11972],{"class":11033}," 16",[3996,11974,5720],{"class":4006},[3996,11976,11977,11980,11983],{"class":3998,"line":4448},[3996,11978,11979],{"class":4064},"    paddingTop:",[3996,11981,11982],{"class":11033}," 8",[3996,11984,5720],{"class":4006},[3996,11986,11987,11990,11992],{"class":3998,"line":4454},[3996,11988,11989],{"class":4064},"    paddingBottom:",[3996,11991,11034],{"class":11033},[3996,11993,5720],{"class":4006},[3996,11995,11996,11999,12001],{"class":3998,"line":4460},[3996,11997,11998],{"class":4064},"    borderBottomWidth:",[3996,12000,11949],{"class":11033},[3996,12002,5720],{"class":4006},[3996,12004,12005,12008,12010],{"class":3998,"line":4466},[3996,12006,12007],{"class":4064},"    borderBottomColor:",[3996,12009,11013],{"class":4029},[3996,12011,5720],{"class":4006},[3996,12013,12014],{"class":3998,"line":4472},[3996,12015,10287],{"class":4006},[3996,12017,12018,12021,12023,12025,12028,12030,12032,12035,12037,12039,12041],{"class":3998,"line":4477},[3996,12019,12020],{"class":4064},"  title:",[3996,12022,5504],{"class":4006},[3996,12024,11030],{"class":4064},[3996,12026,12027],{"class":11033}," 24",[3996,12029,3867],{"class":4006},[3996,12031,5741],{"class":4064},[3996,12033,12034],{"class":4029}," '800'",[3996,12036,3867],{"class":4006},[3996,12038,5730],{"class":4064},[3996,12040,10737],{"class":4029},[3996,12042,5705],{"class":4006},[3996,12044,12045,12048,12050,12053,12056,12058,12060,12062,12064,12066,12069],{"class":3998,"line":5066},[3996,12046,12047],{"class":4064},"  muted:",[3996,12049,5504],{"class":4006},[3996,12051,12052],{"class":4064},"marginTop:",[3996,12054,12055],{"class":11033}," 4",[3996,12057,3867],{"class":4006},[3996,12059,5730],{"class":4064},[3996,12061,10987],{"class":4029},[3996,12063,3867],{"class":4006},[3996,12065,11030],{"class":4064},[3996,12067,12068],{"class":11033}," 13",[3996,12070,5705],{"class":4006},[3996,12072,12073,12076,12078,12081,12083,12085,12088,12091],{"class":3998,"line":5072},[3996,12074,12075],{"class":4064},"  list:",[3996,12077,5504],{"class":4006},[3996,12079,12080],{"class":4064},"padding:",[3996,12082,11972],{"class":11033},[3996,12084,3867],{"class":4006},[3996,12086,12087],{"class":4064},"paddingBottom:",[3996,12089,12090],{"class":11033}," 32",[3996,12092,5705],{"class":4006},[3996,12094,12095,12098],{"class":3998,"line":5078},[3996,12096,12097],{"class":4064},"  card:",[3996,12099,7958],{"class":4006},[3996,12101,12102,12105,12108],{"class":3998,"line":5084},[3996,12103,12104],{"class":4064},"    backgroundColor:",[3996,12106,12107],{"class":4029}," '#FFFFFF'",[3996,12109,5720],{"class":4006},[3996,12111,12112,12115,12117],{"class":3998,"line":5090},[3996,12113,12114],{"class":4064},"    borderRadius:",[3996,12116,11034],{"class":11033},[3996,12118,5720],{"class":4006},[3996,12120,12121,12124,12126],{"class":3998,"line":5096},[3996,12122,12123],{"class":4064},"    borderWidth:",[3996,12125,11949],{"class":11033},[3996,12127,5720],{"class":4006},[3996,12129,12130,12133,12135],{"class":3998,"line":10510},[3996,12131,12132],{"class":4064},"    borderColor:",[3996,12134,11013],{"class":4029},[3996,12136,5720],{"class":4006},[3996,12138,12139,12142,12145],{"class":3998,"line":10516},[3996,12140,12141],{"class":4064},"    padding:",[3996,12143,12144],{"class":11033}," 14",[3996,12146,5720],{"class":4006},[3996,12148,12149],{"class":3998,"line":10521},[3996,12150,10287],{"class":4006},[3996,12152,12153,12156,12158,12160,12163,12165,12167,12170,12172,12174,12176],{"class":3998,"line":10552},[3996,12154,12155],{"class":4064},"  cardTitle:",[3996,12157,5504],{"class":4006},[3996,12159,11030],{"class":4064},[3996,12161,12162],{"class":11033}," 18",[3996,12164,3867],{"class":4006},[3996,12166,5741],{"class":4064},[3996,12168,12169],{"class":4029}," '700'",[3996,12171,3867],{"class":4006},[3996,12173,5730],{"class":4064},[3996,12175,10737],{"class":4029},[3996,12177,5705],{"class":4006},[3996,12179,12180,12183,12185,12187,12189,12191,12193,12195,12197,12199,12201],{"class":3998,"line":10587},[3996,12181,12182],{"class":4064},"  cardMeta:",[3996,12184,5504],{"class":4006},[3996,12186,12052],{"class":4064},[3996,12188,12055],{"class":11033},[3996,12190,3867],{"class":4006},[3996,12192,5730],{"class":4064},[3996,12194,10987],{"class":4029},[3996,12196,3867],{"class":4006},[3996,12198,11030],{"class":4064},[3996,12200,12068],{"class":11033},[3996,12202,5705],{"class":4006},[3996,12204,12206,12209],{"class":3998,"line":12205},55,[3996,12207,12208],{"class":4064},"  linkHint:",[3996,12210,7958],{"class":4006},[3996,12212,12214,12217,12219],{"class":3998,"line":12213},56,[3996,12215,12216],{"class":4064},"    marginTop:",[3996,12218,11672],{"class":11033},[3996,12220,5720],{"class":4006},[3996,12222,12224,12227,12229],{"class":3998,"line":12223},57,[3996,12225,12226],{"class":4064},"    color:",[3996,12228,10718],{"class":4029},[3996,12230,5720],{"class":4006},[3996,12232,12234,12237,12239],{"class":3998,"line":12233},58,[3996,12235,12236],{"class":4064},"    fontWeight:",[3996,12238,12169],{"class":4029},[3996,12240,5720],{"class":4006},[3996,12242,12244,12247,12249],{"class":3998,"line":12243},59,[3996,12245,12246],{"class":4064},"    fontSize:",[3996,12248,12068],{"class":11033},[3996,12250,5720],{"class":4006},[3996,12252,12254],{"class":3998,"line":12253},60,[3996,12255,10287],{"class":4006},[3996,12257,12259],{"class":3998,"line":12258},61,[3996,12260,12261],{"class":4006},"});\n",[3801,12263,12265,12266],{"id":12264},"крок-6-про-нас-apptabsabouttsx","Крок 6. «Про нас» — ",[3747,12267,12268],{},"app\u002F(tabs)\u002Fabout.tsx",[3743,12270,12271,12273],{},[3765,12272,10600],{}," (або створіть, якщо не було):",[10122,12275,12277],{"title":12276},"Повний app\u002F(tabs)\u002Fabout.tsx — розгорнути",[3987,12278,12280],{"className":3989,"code":12279,"language":3991,"meta":3992,"style":3992},"import { ScrollView, StyleSheet, Text } from 'react-native';\nimport { Link } from 'expo-router';\nimport { SafeAreaView } from 'react-native-safe-area-context';\n\nexport default function AboutScreen() {\n  return (\n    \u003CSafeAreaView style={styles.safe} edges={['top']}>\n      \u003CScrollView contentContainerStyle={styles.body}>\n        \u003CText style={styles.title}>Про довідник\u003C\u002FText>\n        \u003CText style={styles.p}>\n          Навчальний міні-проєкт курсу React Native: дві вкладки (Tabs) і екран\n          деталей у Stack. Дані — локальний масив міст, без мережі.\n        \u003C\u002FText>\n        \u003CText style={styles.p}>\n          Список відкриває маршрут \u002Fcity\u002F[id] через компонент Link. Кнопка\n          «назад» на екрані деталей — системна (Stack header).\n        \u003C\u002FText>\n        \u003CLink href=\"\u002F\" style={styles.link}>\n          ← До списку міст\n        \u003C\u002FLink>\n      \u003C\u002FScrollView>\n    \u003C\u002FSafeAreaView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  safe: { flex: 1, backgroundColor: '#F8FAFC' },\n  body: { padding: 16, gap: 12, paddingBottom: 40 },\n  title: { fontSize: 24, fontWeight: '800', color: '#0F172A' },\n  p: { fontSize: 16, lineHeight: 24, color: '#334155' },\n  link: {\n    marginTop: 8,\n    color: '#2563EB',\n    fontWeight: '700',\n    fontSize: 16,\n  },\n});\n",[3747,12281,12282,12307,12323,12339,12343,12356,12362,12398,12422,12453,12475,12480,12485,12493,12515,12520,12525,12533,12562,12567,12575,12583,12591,12595,12599,12603,12619,12637,12664,12688,12715,12722,12730,12738,12746,12754,12758],{"__ignoreMap":3992},[3996,12283,12284,12286,12288,12291,12293,12295,12297,12299,12301,12303,12305],{"class":3998,"line":3999},[3996,12285,5501],{"class":4057},[3996,12287,5504],{"class":4006},[3996,12289,12290],{"class":4064},"ScrollView",[3996,12292,3867],{"class":4006},[3996,12294,8741],{"class":4064},[3996,12296,3867],{"class":4006},[3996,12298,7901],{"class":4064},[3996,12300,5509],{"class":4006},[3996,12302,5512],{"class":4057},[3996,12304,7908],{"class":4029},[3996,12306,4123],{"class":4006},[3996,12308,12309,12311,12313,12315,12317,12319,12321],{"class":3998,"line":4047},[3996,12310,5501],{"class":4057},[3996,12312,5504],{"class":4006},[3996,12314,3852],{"class":4064},[3996,12316,5509],{"class":4006},[3996,12318,5512],{"class":4057},[3996,12320,5515],{"class":4029},[3996,12322,4123],{"class":4006},[3996,12324,12325,12327,12329,12331,12333,12335,12337],{"class":3998,"line":4054},[3996,12326,5501],{"class":4057},[3996,12328,5504],{"class":4006},[3996,12330,7191],{"class":4064},[3996,12332,5509],{"class":4006},[3996,12334,5512],{"class":4057},[3996,12336,11379],{"class":4029},[3996,12338,4123],{"class":4006},[3996,12340,12341],{"class":3998,"line":4075},[3996,12342,4051],{"emptyLinePlaceholder":4050},[3996,12344,12345,12347,12349,12351,12354],{"class":3998,"line":4126},[3996,12346,5947],{"class":4057},[3996,12348,5950],{"class":4057},[3996,12350,5953],{"class":4002},[3996,12352,12353],{"class":4022}," AboutScreen",[3996,12355,5588],{"class":4006},[3996,12357,12358,12360],{"class":3998,"line":4132},[3996,12359,4078],{"class":4057},[3996,12361,5622],{"class":4006},[3996,12363,12364,12366,12368,12370,12372,12374,12376,12378,12380,12382,12384,12386,12388,12390,12392,12394,12396],{"class":3998,"line":4137},[3996,12365,5969],{"class":4081},[3996,12367,7191],{"class":4085},[3996,12369,5637],{"class":4089},[3996,12371,4093],{"class":4006},[3996,12373,4096],{"class":4002},[3996,12375,8789],{"class":4064},[3996,12377,3821],{"class":4099},[3996,12379,11445],{"class":4064},[3996,12381,4117],{"class":4002},[3996,12383,11450],{"class":4089},[3996,12385,4093],{"class":4006},[3996,12387,4096],{"class":4002},[3996,12389,11457],{"class":4099},[3996,12391,11460],{"class":4029},[3996,12393,11463],{"class":4099},[3996,12395,4117],{"class":4002},[3996,12397,5924],{"class":4081},[3996,12399,12400,12402,12404,12407,12409,12411,12413,12415,12418,12420],{"class":3998,"line":4275},[3996,12401,5632],{"class":4081},[3996,12403,12290],{"class":4085},[3996,12405,12406],{"class":4089}," contentContainerStyle",[3996,12408,4093],{"class":4006},[3996,12410,4096],{"class":4002},[3996,12412,8789],{"class":4064},[3996,12414,3821],{"class":4099},[3996,12416,12417],{"class":4064},"body",[3996,12419,4117],{"class":4002},[3996,12421,5924],{"class":4081},[3996,12423,12424,12426,12428,12430,12432,12434,12436,12438,12440,12442,12444,12447,12449,12451],{"class":3998,"line":4281},[3996,12425,5791],{"class":4081},[3996,12427,7901],{"class":4085},[3996,12429,5637],{"class":4089},[3996,12431,4093],{"class":4006},[3996,12433,4096],{"class":4002},[3996,12435,8789],{"class":4064},[3996,12437,3821],{"class":4099},[3996,12439,7585],{"class":4064},[3996,12441,4117],{"class":4002},[3996,12443,8059],{"class":4081},[3996,12445,12446],{"class":4006},"Про довідник",[3996,12448,8065],{"class":4081},[3996,12450,7901],{"class":4085},[3996,12452,5924],{"class":4081},[3996,12454,12455,12457,12459,12461,12463,12465,12467,12469,12471,12473],{"class":3998,"line":4287},[3996,12456,5791],{"class":4081},[3996,12458,7901],{"class":4085},[3996,12460,5637],{"class":4089},[3996,12462,4093],{"class":4006},[3996,12464,4096],{"class":4002},[3996,12466,8789],{"class":4064},[3996,12468,3821],{"class":4099},[3996,12470,3743],{"class":4064},[3996,12472,4117],{"class":4002},[3996,12474,5924],{"class":4081},[3996,12476,12477],{"class":3998,"line":4293},[3996,12478,12479],{"class":4006},"          Навчальний міні-проєкт курсу React Native: дві вкладки (Tabs) і екран\n",[3996,12481,12482],{"class":3998,"line":4299},[3996,12483,12484],{"class":4006},"          деталей у Stack. Дані — локальний масив міст, без мережі.\n",[3996,12486,12487,12489,12491],{"class":3998,"line":4305},[3996,12488,8074],{"class":4081},[3996,12490,7901],{"class":4085},[3996,12492,5924],{"class":4081},[3996,12494,12495,12497,12499,12501,12503,12505,12507,12509,12511,12513],{"class":3998,"line":4311},[3996,12496,5791],{"class":4081},[3996,12498,7901],{"class":4085},[3996,12500,5637],{"class":4089},[3996,12502,4093],{"class":4006},[3996,12504,4096],{"class":4002},[3996,12506,8789],{"class":4064},[3996,12508,3821],{"class":4099},[3996,12510,3743],{"class":4064},[3996,12512,4117],{"class":4002},[3996,12514,5924],{"class":4081},[3996,12516,12517],{"class":3998,"line":4317},[3996,12518,12519],{"class":4006},"          Список відкриває маршрут \u002Fcity\u002F[id] через компонент Link. Кнопка\n",[3996,12521,12522],{"class":3998,"line":4323},[3996,12523,12524],{"class":4006},"          «назад» на екрані деталей — системна (Stack header).\n",[3996,12526,12527,12529,12531],{"class":3998,"line":4329},[3996,12528,8074],{"class":4081},[3996,12530,7901],{"class":4085},[3996,12532,5924],{"class":4081},[3996,12534,12535,12537,12539,12541,12543,12545,12547,12549,12551,12553,12555,12558,12560],{"class":3998,"line":4335},[3996,12536,5791],{"class":4081},[3996,12538,3852],{"class":4085},[3996,12540,8641],{"class":4089},[3996,12542,4093],{"class":4006},[3996,12544,9227],{"class":4029},[3996,12546,5637],{"class":4089},[3996,12548,4093],{"class":4006},[3996,12550,4096],{"class":4002},[3996,12552,8789],{"class":4064},[3996,12554,3821],{"class":4099},[3996,12556,12557],{"class":4064},"link",[3996,12559,4117],{"class":4002},[3996,12561,5924],{"class":4081},[3996,12563,12564],{"class":3998,"line":4341},[3996,12565,12566],{"class":4006},"          ← До списку міст\n",[3996,12568,12569,12571,12573],{"class":3998,"line":4347},[3996,12570,8074],{"class":4081},[3996,12572,3852],{"class":4085},[3996,12574,5924],{"class":4081},[3996,12576,12577,12579,12581],{"class":3998,"line":4352},[3996,12578,5919],{"class":4081},[3996,12580,12290],{"class":4085},[3996,12582,5924],{"class":4081},[3996,12584,12585,12587,12589],{"class":3998,"line":4357},[3996,12586,6003],{"class":4081},[3996,12588,7191],{"class":4085},[3996,12590,5924],{"class":4081},[3996,12592,12593],{"class":3998,"line":4363},[3996,12594,5934],{"class":4006},[3996,12596,12597],{"class":3998,"line":4369},[3996,12598,4129],{"class":4006},[3996,12600,12601],{"class":3998,"line":4375},[3996,12602,4051],{"emptyLinePlaceholder":4050},[3996,12604,12605,12607,12609,12611,12613,12615,12617],{"class":3998,"line":4381},[3996,12606,4003],{"class":4002},[3996,12608,11925],{"class":4010},[3996,12610,7937],{"class":4006},[3996,12612,8741],{"class":4064},[3996,12614,3821],{"class":4006},[3996,12616,11934],{"class":4022},[3996,12618,7971],{"class":4006},[3996,12620,12621,12623,12625,12627,12629,12631,12633,12635],{"class":3998,"line":4387},[3996,12622,11941],{"class":4064},[3996,12624,5504],{"class":4006},[3996,12626,11946],{"class":4064},[3996,12628,11949],{"class":11033},[3996,12630,3867],{"class":4006},[3996,12632,5694],{"class":4064},[3996,12634,10709],{"class":4029},[3996,12636,5705],{"class":4006},[3996,12638,12639,12642,12644,12646,12648,12650,12653,12655,12657,12659,12662],{"class":3998,"line":4392},[3996,12640,12641],{"class":4064},"  body:",[3996,12643,5504],{"class":4006},[3996,12645,12080],{"class":4064},[3996,12647,11972],{"class":11033},[3996,12649,3867],{"class":4006},[3996,12651,12652],{"class":4064},"gap:",[3996,12654,11034],{"class":11033},[3996,12656,3867],{"class":4006},[3996,12658,12087],{"class":4064},[3996,12660,12661],{"class":11033}," 40",[3996,12663,5705],{"class":4006},[3996,12665,12666,12668,12670,12672,12674,12676,12678,12680,12682,12684,12686],{"class":3998,"line":4398},[3996,12667,12020],{"class":4064},[3996,12669,5504],{"class":4006},[3996,12671,11030],{"class":4064},[3996,12673,12027],{"class":11033},[3996,12675,3867],{"class":4006},[3996,12677,5741],{"class":4064},[3996,12679,12034],{"class":4029},[3996,12681,3867],{"class":4006},[3996,12683,5730],{"class":4064},[3996,12685,10737],{"class":4029},[3996,12687,5705],{"class":4006},[3996,12689,12690,12693,12695,12697,12699,12701,12704,12706,12708,12710,12713],{"class":3998,"line":4404},[3996,12691,12692],{"class":4064},"  p:",[3996,12694,5504],{"class":4006},[3996,12696,11030],{"class":4064},[3996,12698,11972],{"class":11033},[3996,12700,3867],{"class":4006},[3996,12702,12703],{"class":4064},"lineHeight:",[3996,12705,12027],{"class":11033},[3996,12707,3867],{"class":4006},[3996,12709,5730],{"class":4064},[3996,12711,12712],{"class":4029}," '#334155'",[3996,12714,5705],{"class":4006},[3996,12716,12717,12720],{"class":3998,"line":4410},[3996,12718,12719],{"class":4064},"  link:",[3996,12721,7958],{"class":4006},[3996,12723,12724,12726,12728],{"class":3998,"line":4415},[3996,12725,12216],{"class":4064},[3996,12727,11982],{"class":11033},[3996,12729,5720],{"class":4006},[3996,12731,12732,12734,12736],{"class":3998,"line":4420},[3996,12733,12226],{"class":4064},[3996,12735,10718],{"class":4029},[3996,12737,5720],{"class":4006},[3996,12739,12740,12742,12744],{"class":3998,"line":4426},[3996,12741,12236],{"class":4064},[3996,12743,12169],{"class":4029},[3996,12745,5720],{"class":4006},[3996,12747,12748,12750,12752],{"class":3998,"line":4432},[3996,12749,12246],{"class":4064},[3996,12751,11972],{"class":11033},[3996,12753,5720],{"class":4006},[3996,12755,12756],{"class":3998,"line":4438},[3996,12757,10287],{"class":4006},[3996,12759,12760],{"class":3998,"line":4443},[3996,12761,12261],{"class":4006},[3801,12763,12765,12766],{"id":12764},"крок-7-деталі-appcityidtsx","Крок 7. Деталі — ",[3747,12767,6151],{},[3743,12769,12770,12771,12774,12775,5169,12778,6869],{},"Створіть теку ",[3747,12772,12773],{},"app\u002Fcity\u002F"," і файл ",[3747,12776,12777],{},"[id].tsx",[3765,12779,12780],{},"цілком",[10122,12782,12784],{"title":12783},"Повний app\u002Fcity\u002F[id].tsx — розгорнути",[3987,12785,12787],{"className":3989,"code":12786,"language":3991,"meta":3992,"style":3992},"import { ScrollView, StyleSheet, Text, View } from 'react-native';\nimport { Stack, useLocalSearchParams } from 'expo-router';\n\nimport { getCityById } from '..\u002F..\u002Fsrc\u002Fdata\u002Fcities';\n\nexport default function CityDetailsScreen() {\n  const { id } = useLocalSearchParams\u003C{ id: string }>();\n  const cityId = Array.isArray(id) ? id[0] : id;\n  const city = cityId ? getCityById(cityId) : undefined;\n\n  if (!city) {\n    return (\n      \u003CView style={styles.center}>\n        \u003CStack.Screen options={{ title: 'Не знайдено' }} \u002F>\n        \u003CText style={styles.title}>Місто не знайдено\u003C\u002FText>\n        \u003CText style={styles.muted}>Немає запису з id: {String(cityId)}\u003C\u002FText>\n      \u003C\u002FView>\n    );\n  }\n\n  return (\n    \u003CScrollView contentContainerStyle={styles.body}>\n      \u003CStack.Screen options={{ title: city.name }} \u002F>\n      \u003CText style={styles.title}>{city.name}\u003C\u002FText>\n      \u003CText style={styles.meta}>{city.region}\u003C\u002FText>\n      \u003CText style={styles.meta}>Населення: {city.population}\u003C\u002FText>\n      \u003CText style={styles.p}>{city.description}\u003C\u002FText>\n    \u003C\u002FScrollView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  body: { padding: 16, gap: 8, paddingBottom: 40 },\n  center: {\n    flex: 1,\n    padding: 24,\n    justifyContent: 'center',\n    alignItems: 'center',\n    backgroundColor: '#F8FAFC',\n  },\n  title: { fontSize: 26, fontWeight: '800', color: '#0F172A' },\n  meta: { fontSize: 14, color: '#64748B', fontWeight: '600' },\n  muted: { marginTop: 8, color: '#64748B' },\n  p: { marginTop: 12, fontSize: 16, lineHeight: 24, color: '#334155' },\n});\n",[3747,12788,12789,12817,12837,12841,12858,12862,12875,12899,12937,12965,12969,12982,12989,13012,13038,13069,13113,13121,13126,13130,13134,13140,13162,13190,13228,13267,13309,13348,13356,13360,13364,13368,13384,13408,13415,13424,13432,13442,13451,13459,13463,13488,13513,13531,13561],{"__ignoreMap":3992},[3996,12790,12791,12793,12795,12797,12799,12801,12803,12805,12807,12809,12811,12813,12815],{"class":3998,"line":3999},[3996,12792,5501],{"class":4057},[3996,12794,5504],{"class":4006},[3996,12796,12290],{"class":4064},[3996,12798,3867],{"class":4006},[3996,12800,8741],{"class":4064},[3996,12802,3867],{"class":4006},[3996,12804,7901],{"class":4064},[3996,12806,3867],{"class":4006},[3996,12808,11340],{"class":4064},[3996,12810,5509],{"class":4006},[3996,12812,5512],{"class":4057},[3996,12814,7908],{"class":4029},[3996,12816,4123],{"class":4006},[3996,12818,12819,12821,12823,12825,12827,12829,12831,12833,12835],{"class":3998,"line":4047},[3996,12820,5501],{"class":4057},[3996,12822,5504],{"class":4006},[3996,12824,3844],{"class":4064},[3996,12826,3867],{"class":4006},[3996,12828,4675],{"class":4064},[3996,12830,5509],{"class":4006},[3996,12832,5512],{"class":4057},[3996,12834,5515],{"class":4029},[3996,12836,4123],{"class":4006},[3996,12838,12839],{"class":3998,"line":4054},[3996,12840,4051],{"emptyLinePlaceholder":4050},[3996,12842,12843,12845,12847,12850,12852,12854,12856],{"class":3998,"line":4075},[3996,12844,5501],{"class":4057},[3996,12846,5504],{"class":4006},[3996,12848,12849],{"class":4064},"getCityById",[3996,12851,5509],{"class":4006},[3996,12853,5512],{"class":4057},[3996,12855,11401],{"class":4029},[3996,12857,4123],{"class":4006},[3996,12859,12860],{"class":3998,"line":4126},[3996,12861,4051],{"emptyLinePlaceholder":4050},[3996,12863,12864,12866,12868,12870,12873],{"class":3998,"line":4132},[3996,12865,5947],{"class":4057},[3996,12867,5950],{"class":4057},[3996,12869,5953],{"class":4002},[3996,12871,12872],{"class":4022}," CityDetailsScreen",[3996,12874,5588],{"class":4006},[3996,12876,12877,12879,12881,12883,12885,12887,12890,12892,12894,12896],{"class":3998,"line":4137},[3996,12878,5593],{"class":4002},[3996,12880,5504],{"class":4006},[3996,12882,10533],{"class":4010},[3996,12884,5606],{"class":4006},[3996,12886,4675],{"class":4022},[3996,12888,12889],{"class":4006},"\u003C{ ",[3996,12891,10533],{"class":4064},[3996,12893,8990],{"class":4006},[3996,12895,7692],{"class":4085},[3996,12897,12898],{"class":4006}," }>();\n",[3996,12900,12901,12903,12906,12908,12911,12913,12916,12918,12920,12923,12925,12927,12930,12933,12935],{"class":3998,"line":4275},[3996,12902,5593],{"class":4002},[3996,12904,12905],{"class":4010}," cityId",[3996,12907,7937],{"class":4006},[3996,12909,12910],{"class":4064},"Array",[3996,12912,3821],{"class":4006},[3996,12914,12915],{"class":4022},"isArray",[3996,12917,4109],{"class":4006},[3996,12919,10533],{"class":4064},[3996,12921,12922],{"class":4006},") ? ",[3996,12924,10533],{"class":4064},[3996,12926,11457],{"class":4006},[3996,12928,12929],{"class":11033},"0",[3996,12931,12932],{"class":4006},"] : ",[3996,12934,10533],{"class":4064},[3996,12936,4123],{"class":4006},[3996,12938,12939,12941,12944,12946,12949,12952,12954,12956,12958,12961,12963],{"class":3998,"line":4281},[3996,12940,5593],{"class":4002},[3996,12942,12943],{"class":4010}," city",[3996,12945,7937],{"class":4006},[3996,12947,12948],{"class":4064},"cityId",[3996,12950,12951],{"class":4006}," ? ",[3996,12953,12849],{"class":4022},[3996,12955,4109],{"class":4006},[3996,12957,12948],{"class":4064},[3996,12959,12960],{"class":4006},") : ",[3996,12962,10547],{"class":4002},[3996,12964,4123],{"class":4006},[3996,12966,12967],{"class":3998,"line":4287},[3996,12968,4051],{"emptyLinePlaceholder":4050},[3996,12970,12971,12974,12977,12980],{"class":3998,"line":4293},[3996,12972,12973],{"class":4057},"  if",[3996,12975,12976],{"class":4006}," (!",[3996,12978,12979],{"class":4064},"city",[3996,12981,4072],{"class":4006},[3996,12983,12984,12987],{"class":3998,"line":4299},[3996,12985,12986],{"class":4057},"    return",[3996,12988,5622],{"class":4006},[3996,12990,12991,12993,12995,12997,12999,13001,13003,13005,13008,13010],{"class":3998,"line":4305},[3996,12992,5632],{"class":4081},[3996,12994,11340],{"class":4085},[3996,12996,5637],{"class":4089},[3996,12998,4093],{"class":4006},[3996,13000,4096],{"class":4002},[3996,13002,8789],{"class":4064},[3996,13004,3821],{"class":4099},[3996,13006,13007],{"class":4064},"center",[3996,13009,4117],{"class":4002},[3996,13011,5924],{"class":4081},[3996,13013,13014,13016,13018,13020,13022,13024,13026,13029,13032,13034,13036],{"class":3998,"line":4311},[3996,13015,5791],{"class":4081},[3996,13017,5794],{"class":4085},[3996,13019,5805],{"class":4089},[3996,13021,4093],{"class":4006},[3996,13023,4096],{"class":4002},[3996,13025,5812],{"class":4099},[3996,13027,13028],{"class":4064},"title:",[3996,13030,13031],{"class":4029}," 'Не знайдено'",[3996,13033,5821],{"class":4099},[3996,13035,4117],{"class":4002},[3996,13037,5665],{"class":4081},[3996,13039,13040,13042,13044,13046,13048,13050,13052,13054,13056,13058,13060,13063,13065,13067],{"class":3998,"line":4317},[3996,13041,5791],{"class":4081},[3996,13043,7901],{"class":4085},[3996,13045,5637],{"class":4089},[3996,13047,4093],{"class":4006},[3996,13049,4096],{"class":4002},[3996,13051,8789],{"class":4064},[3996,13053,3821],{"class":4099},[3996,13055,7585],{"class":4064},[3996,13057,4117],{"class":4002},[3996,13059,8059],{"class":4081},[3996,13061,13062],{"class":4006},"Місто не знайдено",[3996,13064,8065],{"class":4081},[3996,13066,7901],{"class":4085},[3996,13068,5924],{"class":4081},[3996,13070,13071,13073,13075,13077,13079,13081,13083,13085,13087,13089,13091,13094,13096,13099,13101,13103,13105,13107,13109,13111],{"class":3998,"line":4323},[3996,13072,5791],{"class":4081},[3996,13074,7901],{"class":4085},[3996,13076,5637],{"class":4089},[3996,13078,4093],{"class":4006},[3996,13080,4096],{"class":4002},[3996,13082,8789],{"class":4064},[3996,13084,3821],{"class":4099},[3996,13086,11540],{"class":4064},[3996,13088,4117],{"class":4002},[3996,13090,8059],{"class":4081},[3996,13092,13093],{"class":4006},"Немає запису з id: ",[3996,13095,4096],{"class":4002},[3996,13097,13098],{"class":4022},"String",[3996,13100,4109],{"class":4099},[3996,13102,12948],{"class":4064},[3996,13104,4114],{"class":4099},[3996,13106,4117],{"class":4002},[3996,13108,8065],{"class":4081},[3996,13110,7901],{"class":4085},[3996,13112,5924],{"class":4081},[3996,13114,13115,13117,13119],{"class":3998,"line":4329},[3996,13116,5919],{"class":4081},[3996,13118,11340],{"class":4085},[3996,13120,5924],{"class":4081},[3996,13122,13123],{"class":3998,"line":4335},[3996,13124,13125],{"class":4006},"    );\n",[3996,13127,13128],{"class":3998,"line":4341},[3996,13129,4384],{"class":4006},[3996,13131,13132],{"class":3998,"line":4347},[3996,13133,4051],{"emptyLinePlaceholder":4050},[3996,13135,13136,13138],{"class":3998,"line":4352},[3996,13137,4078],{"class":4057},[3996,13139,5622],{"class":4006},[3996,13141,13142,13144,13146,13148,13150,13152,13154,13156,13158,13160],{"class":3998,"line":4357},[3996,13143,5969],{"class":4081},[3996,13145,12290],{"class":4085},[3996,13147,12406],{"class":4089},[3996,13149,4093],{"class":4006},[3996,13151,4096],{"class":4002},[3996,13153,8789],{"class":4064},[3996,13155,3821],{"class":4099},[3996,13157,12417],{"class":4064},[3996,13159,4117],{"class":4002},[3996,13161,5924],{"class":4081},[3996,13163,13164,13166,13168,13170,13172,13174,13176,13178,13180,13182,13184,13186,13188],{"class":3998,"line":4363},[3996,13165,5632],{"class":4081},[3996,13167,5794],{"class":4085},[3996,13169,5805],{"class":4089},[3996,13171,4093],{"class":4006},[3996,13173,4096],{"class":4002},[3996,13175,5812],{"class":4099},[3996,13177,13028],{"class":4064},[3996,13179,12943],{"class":4064},[3996,13181,3821],{"class":4099},[3996,13183,6457],{"class":4064},[3996,13185,5821],{"class":4099},[3996,13187,4117],{"class":4002},[3996,13189,5665],{"class":4081},[3996,13191,13192,13194,13196,13198,13200,13202,13204,13206,13208,13210,13212,13214,13216,13218,13220,13222,13224,13226],{"class":3998,"line":4369},[3996,13193,5632],{"class":4081},[3996,13195,7901],{"class":4085},[3996,13197,5637],{"class":4089},[3996,13199,4093],{"class":4006},[3996,13201,4096],{"class":4002},[3996,13203,8789],{"class":4064},[3996,13205,3821],{"class":4099},[3996,13207,7585],{"class":4064},[3996,13209,4117],{"class":4002},[3996,13211,8059],{"class":4081},[3996,13213,4096],{"class":4002},[3996,13215,12979],{"class":4064},[3996,13217,3821],{"class":4099},[3996,13219,6457],{"class":4064},[3996,13221,4117],{"class":4002},[3996,13223,8065],{"class":4081},[3996,13225,7901],{"class":4085},[3996,13227,5924],{"class":4081},[3996,13229,13230,13232,13234,13236,13238,13240,13242,13244,13247,13249,13251,13253,13255,13257,13259,13261,13263,13265],{"class":3998,"line":4375},[3996,13231,5632],{"class":4081},[3996,13233,7901],{"class":4085},[3996,13235,5637],{"class":4089},[3996,13237,4093],{"class":4006},[3996,13239,4096],{"class":4002},[3996,13241,8789],{"class":4064},[3996,13243,3821],{"class":4099},[3996,13245,13246],{"class":4064},"meta",[3996,13248,4117],{"class":4002},[3996,13250,8059],{"class":4081},[3996,13252,4096],{"class":4002},[3996,13254,12979],{"class":4064},[3996,13256,3821],{"class":4099},[3996,13258,11829],{"class":4064},[3996,13260,4117],{"class":4002},[3996,13262,8065],{"class":4081},[3996,13264,7901],{"class":4085},[3996,13266,5924],{"class":4081},[3996,13268,13269,13271,13273,13275,13277,13279,13281,13283,13285,13287,13289,13292,13294,13296,13298,13301,13303,13305,13307],{"class":3998,"line":4381},[3996,13270,5632],{"class":4081},[3996,13272,7901],{"class":4085},[3996,13274,5637],{"class":4089},[3996,13276,4093],{"class":4006},[3996,13278,4096],{"class":4002},[3996,13280,8789],{"class":4064},[3996,13282,3821],{"class":4099},[3996,13284,13246],{"class":4064},[3996,13286,4117],{"class":4002},[3996,13288,8059],{"class":4081},[3996,13290,13291],{"class":4006},"Населення: ",[3996,13293,4096],{"class":4002},[3996,13295,12979],{"class":4064},[3996,13297,3821],{"class":4099},[3996,13299,13300],{"class":4064},"population",[3996,13302,4117],{"class":4002},[3996,13304,8065],{"class":4081},[3996,13306,7901],{"class":4085},[3996,13308,5924],{"class":4081},[3996,13310,13311,13313,13315,13317,13319,13321,13323,13325,13327,13329,13331,13333,13335,13337,13340,13342,13344,13346],{"class":3998,"line":4387},[3996,13312,5632],{"class":4081},[3996,13314,7901],{"class":4085},[3996,13316,5637],{"class":4089},[3996,13318,4093],{"class":4006},[3996,13320,4096],{"class":4002},[3996,13322,8789],{"class":4064},[3996,13324,3821],{"class":4099},[3996,13326,3743],{"class":4064},[3996,13328,4117],{"class":4002},[3996,13330,8059],{"class":4081},[3996,13332,4096],{"class":4002},[3996,13334,12979],{"class":4064},[3996,13336,3821],{"class":4099},[3996,13338,13339],{"class":4064},"description",[3996,13341,4117],{"class":4002},[3996,13343,8065],{"class":4081},[3996,13345,7901],{"class":4085},[3996,13347,5924],{"class":4081},[3996,13349,13350,13352,13354],{"class":3998,"line":4392},[3996,13351,6003],{"class":4081},[3996,13353,12290],{"class":4085},[3996,13355,5924],{"class":4081},[3996,13357,13358],{"class":3998,"line":4398},[3996,13359,5934],{"class":4006},[3996,13361,13362],{"class":3998,"line":4404},[3996,13363,4129],{"class":4006},[3996,13365,13366],{"class":3998,"line":4410},[3996,13367,4051],{"emptyLinePlaceholder":4050},[3996,13369,13370,13372,13374,13376,13378,13380,13382],{"class":3998,"line":4415},[3996,13371,4003],{"class":4002},[3996,13373,11925],{"class":4010},[3996,13375,7937],{"class":4006},[3996,13377,8741],{"class":4064},[3996,13379,3821],{"class":4006},[3996,13381,11934],{"class":4022},[3996,13383,7971],{"class":4006},[3996,13385,13386,13388,13390,13392,13394,13396,13398,13400,13402,13404,13406],{"class":3998,"line":4420},[3996,13387,12641],{"class":4064},[3996,13389,5504],{"class":4006},[3996,13391,12080],{"class":4064},[3996,13393,11972],{"class":11033},[3996,13395,3867],{"class":4006},[3996,13397,12652],{"class":4064},[3996,13399,11982],{"class":11033},[3996,13401,3867],{"class":4006},[3996,13403,12087],{"class":4064},[3996,13405,12661],{"class":11033},[3996,13407,5705],{"class":4006},[3996,13409,13410,13413],{"class":3998,"line":4426},[3996,13411,13412],{"class":4064},"  center:",[3996,13414,7958],{"class":4006},[3996,13416,13417,13420,13422],{"class":3998,"line":4432},[3996,13418,13419],{"class":4064},"    flex:",[3996,13421,11949],{"class":11033},[3996,13423,5720],{"class":4006},[3996,13425,13426,13428,13430],{"class":3998,"line":4438},[3996,13427,12141],{"class":4064},[3996,13429,12027],{"class":11033},[3996,13431,5720],{"class":4006},[3996,13433,13434,13437,13440],{"class":3998,"line":4443},[3996,13435,13436],{"class":4064},"    justifyContent:",[3996,13438,13439],{"class":4029}," 'center'",[3996,13441,5720],{"class":4006},[3996,13443,13444,13447,13449],{"class":3998,"line":4448},[3996,13445,13446],{"class":4064},"    alignItems:",[3996,13448,13439],{"class":4029},[3996,13450,5720],{"class":4006},[3996,13452,13453,13455,13457],{"class":3998,"line":4454},[3996,13454,12104],{"class":4064},[3996,13456,10709],{"class":4029},[3996,13458,5720],{"class":4006},[3996,13460,13461],{"class":3998,"line":4460},[3996,13462,10287],{"class":4006},[3996,13464,13465,13467,13469,13471,13474,13476,13478,13480,13482,13484,13486],{"class":3998,"line":4466},[3996,13466,12020],{"class":4064},[3996,13468,5504],{"class":4006},[3996,13470,11030],{"class":4064},[3996,13472,13473],{"class":11033}," 26",[3996,13475,3867],{"class":4006},[3996,13477,5741],{"class":4064},[3996,13479,12034],{"class":4029},[3996,13481,3867],{"class":4006},[3996,13483,5730],{"class":4064},[3996,13485,10737],{"class":4029},[3996,13487,5705],{"class":4006},[3996,13489,13490,13493,13495,13497,13499,13501,13503,13505,13507,13509,13511],{"class":3998,"line":4472},[3996,13491,13492],{"class":4064},"  meta:",[3996,13494,5504],{"class":4006},[3996,13496,11030],{"class":4064},[3996,13498,12144],{"class":11033},[3996,13500,3867],{"class":4006},[3996,13502,5730],{"class":4064},[3996,13504,10987],{"class":4029},[3996,13506,3867],{"class":4006},[3996,13508,5741],{"class":4064},[3996,13510,5744],{"class":4029},[3996,13512,5705],{"class":4006},[3996,13514,13515,13517,13519,13521,13523,13525,13527,13529],{"class":3998,"line":4477},[3996,13516,12047],{"class":4064},[3996,13518,5504],{"class":4006},[3996,13520,12052],{"class":4064},[3996,13522,11982],{"class":11033},[3996,13524,3867],{"class":4006},[3996,13526,5730],{"class":4064},[3996,13528,10987],{"class":4029},[3996,13530,5705],{"class":4006},[3996,13532,13533,13535,13537,13539,13541,13543,13545,13547,13549,13551,13553,13555,13557,13559],{"class":3998,"line":5066},[3996,13534,12692],{"class":4064},[3996,13536,5504],{"class":4006},[3996,13538,12052],{"class":4064},[3996,13540,11034],{"class":11033},[3996,13542,3867],{"class":4006},[3996,13544,11030],{"class":4064},[3996,13546,11972],{"class":11033},[3996,13548,3867],{"class":4006},[3996,13550,12703],{"class":4064},[3996,13552,12027],{"class":11033},[3996,13554,3867],{"class":4006},[3996,13556,5730],{"class":4064},[3996,13558,12712],{"class":4029},[3996,13560,5705],{"class":4006},[3996,13562,13563],{"class":3998,"line":5072},[3996,13564,12261],{"class":4006},[3743,13566,13567,13569,13570,13572,13573,13575],{},[3747,13568,4675],{}," читає ",[3747,13571,10533],{}," з шляху ",[3747,13574,6160],{},". Глибше про params і deep links — у статті 13; тут мінімум, щоб Stack мав сенс.",[3801,13577,13579,13580],{"id":13578},"крок-8-прибрати-зайве-з-шаблону-tabs","Крок 8. Прибрати зайве з шаблону ",[3747,13581,13582],{},"tabs",[3759,13584,13585,13592,13603],{},[3762,13586,13587,13588,13591],{},"Видаліть ",[3747,13589,13590],{},"app\u002F(tabs)\u002Fexplore.tsx"," (або інший другий tab шаблону), якщо він є.",[3762,13593,10062,13594,13597,13598,3936,13600,13602],{},[3747,13595,13596],{},"(tabs)\u002F_layout.tsx"," мають лишитись лише ",[3747,13599,6049],{},[3747,13601,6750],{}," (як у нашому файлі).",[3762,13604,13605],{},"Видаліть невикористані компоненти\u002Fассети шаблону за бажанням.",[3743,13607,13608,13609,13611,13612,6869],{},"Опційно в ",[3747,13610,9310],{}," всередині ",[3747,13613,13614],{},"expo",[3987,13616,13618],{"className":9313,"code":13617,"language":9315,"meta":3992,"style":3992},"\"experiments\": {\n  \"typedRoutes\": true\n}\n",[3747,13619,13620,13627,13636],{"__ignoreMap":3992},[3996,13621,13622,13625],{"class":3998,"line":3999},[3996,13623,13624],{"class":4029},"\"experiments\"",[3996,13626,9330],{"class":4006},[3996,13628,13629,13632,13634],{"class":3998,"line":4047},[3996,13630,13631],{"class":9326},"  \"typedRoutes\"",[3996,13633,8990],{"class":4006},[3996,13635,9371],{"class":4002},[3996,13637,13638],{"class":3998,"line":4054},[3996,13639,4129],{"class":4006},[3801,13641,13643],{"id":13642},"крок-9-перевірка","Крок 9. Перевірка",[10025,13645,13646,13650,13655,13659,13662,13666,13669,13673,13679,13683],{},[3801,13647,13649],{"id":13648},"_1-старт","1. Старт",[3743,13651,13652,13654],{},[3747,13653,9389],{}," → Expo Go \u002F симулятор.",[3801,13656,13658],{"id":13657},"_2-вкладки","2. Вкладки",[3743,13660,13661],{},"Внизу «Список» і «Про нас»; перемикання змінює екран.",[3801,13663,13665],{"id":13664},"_3-деталі","3. Деталі",[3743,13667,13668],{},"Тап «Львів» → опис; header зі стрілкою \u002F «Назад»; жест назад на iOS\u002FAndroid.",[3801,13670,13672],{"id":13671},"_4-про-нас","4. Про нас",[3743,13674,13675,13676,13678],{},"Текст і ",[3747,13677,3852],{}," «До списку міст».",[3801,13680,13682],{"id":13681},"_5-невідомий-id","5. Невідомий id",[3743,13684,13685,13686,13689],{},"Якщо відкрити ",[3747,13687,13688],{},"\u002Fcity\u002Fxxx"," (через Link у коді тимчасово) — «Місто не знайдено».",[3801,13691,13693],{"id":13692},"критерій-готово","Критерій «готово»",[3806,13695,13698,13709,13719,13725,13731,13740],{"className":13696},[13697],"contains-task-list",[3762,13699,13702,5169,13706],{"className":13700},[13701],"task-list-item",[13703,13704],"input",{"disabled":4050,"type":13705},"checkbox",[3747,13707,13708],{},"create-expo-app -t tabs",[3762,13710,13712,13714,13715,13718],{"className":13711},[13701],[13703,13713],{"disabled":4050,"type":13705}," Усі файли кроків 2–7 з ",[3765,13716,13717],{},"повним"," кодом (не фрагменти «допишіть»)",[3762,13720,13722,13724],{"className":13721},[13701],[13703,13723],{"disabled":4050,"type":13705}," Дві вкладки українською",[3762,13726,13728,13730],{"className":13727},[13701],[13703,13729],{"disabled":4050,"type":13705}," Список → деталі → назад",[3762,13732,13734,13736,13737,13739],{"className":13733},[13701],[13703,13735],{"disabled":4050,"type":13705}," Немає ",[3747,13738,9689],{}," замість Router",[3762,13741,13743,13745,13746],{"className":13742},[13701],[13703,13744],{"disabled":4050,"type":13705}," Дані в ",[3747,13747,10113],{},[3801,13749,13751],{"id":13750},"карта-ідей-курсу-файли","Карта ідей курсу → файли",[4531,13753,13754,13764],{},[4534,13755,13756],{},[4537,13757,13758,13761],{},[4540,13759,13760],{},"Ідея",[4540,13762,13763],{},"Де",[4551,13765,13766,13776,13784,13799,13806,13816],{},[4537,13767,13768,13771],{},[4556,13769,13770],{},"File-based routing",[4556,13772,13773],{},[3747,13774,13775],{},"app\u002F**",[4537,13777,13778,13780],{},[4556,13779,3840],{},[4556,13781,13782],{},[3747,13783,13596],{},[4537,13785,13786,13789],{},[4556,13787,13788],{},"Stack + back",[4556,13790,13791,13792,13795,13796],{},"кореневий ",[3747,13793,13794],{},"_layout"," + ",[3747,13797,13798],{},"city\u002F[id]",[4537,13800,13801,13803],{},[4556,13802,3852],{},[4556,13804,13805],{},"список, about",[4537,13807,13808,13813],{},[4556,13809,13810,13811],{},"Група ",[3747,13812,6029],{},[4556,13814,13815],{},"не в URL",[4537,13817,13818,13821],{},[4556,13819,13820],{},"Динамічний сегмент",[4556,13822,13823,13795,13826],{},[3747,13824,13825],{},"[id]",[3747,13827,4675],{},[3966,13829],{},[3738,13831,13833],{"id":13832},"nomad-file-based-navigation-structure","Nomad: file-based navigation structure",[3743,13835,13836],{},[4769,13837],{"alt":13838,"className":13839,"src":13840},"Nomad: вкладки → форма → назад зі списком",[4773],"\u002Fimages\u002Freact-native\u002Fexpo-router-basics\u002F05.svg",[3801,13842,13844],{"id":13843},"навіщо-користувачу","Навіщо користувачу",[3743,13846,13847,13848,6869],{},"Застосунок перестає бути «одним довгим екраном». З’являються ",[3765,13849,13850],{},"розділи",[3806,13852,13853,13859,13865],{},[3762,13854,13855,13858],{},[3765,13856,13857],{},"Поїздки"," — стрічка, тема, sticky «Нова поїздка» (як раніше);",[3762,13860,13861,13864],{},[3765,13862,13863],{},"Місця"," — усі mock-місця сіткою;",[3762,13866,13867,13870,13871,13873],{},[3765,13868,13869],{},"Ще"," — опис, тема, приклад ",[3747,13872,3852],{}," на форму.",[3743,13875,13876,13877,13880],{},"Форма створення — ",[3765,13878,13879],{},"окремий stack-екран"," із системним заголовком і «назад», без дубльованого UI «← Назад» у контенті.",[3801,13882,13884],{"id":13883},"нитка-проєкту","Нитка проєкту",[3743,13886,13887],{},[3765,13888,13889],{},"Уже є (і зберігаємо):",[3806,13891,13892,13895,13898,13901],{},[3762,13893,13894],{},"ThemeProvider, чіпи теми (на вкладці Поїздки; також на «Ще»);",[3762,13896,13897],{},"FlashList поїздок, pull-to-refresh, TripCard, місця в header списку;",[3762,13899,13900],{},"CreateTripForm (RHF+Zod, усі контроли);",[3762,13902,13903],{},"TripsProvider, addTrip, картки з мітками.",[3743,13905,13906],{},[3765,13907,13908],{},"Додаємо \u002F змінюємо:",[4531,13910,13911,13921],{},[4534,13912,13913],{},[4537,13914,13915,13918],{},[4540,13916,13917],{},"Зміна",[4540,13919,13920],{},"Навіщо",[4551,13922,13923,13933,13947,13960,13970,13980,13989],{},[4537,13924,13925,13930],{},[4556,13926,13927,13929],{},[3747,13928,8135],{}," + Tabs layout",[4556,13931,13932],{},"три головні розділи",[4537,13934,13935,13941],{},[4556,13936,13937,13938],{},"перенесення home → ",[3747,13939,13940],{},"(tabs)\u002Findex.tsx",[4556,13942,13943,13944,13946],{},"маршрут ",[3747,13945,5118],{}," у вкладках",[4537,13948,13949,13957],{},[4556,13950,13951,3867,13954],{},[3747,13952,13953],{},"places.tsx",[3747,13955,13956],{},"about.tsx",[4556,13958,13959],{},"нові вкладки",[4537,13961,13962,13967],{},[4556,13963,13964,13965],{},"кореневий Stack з options для ",[3747,13966,6033],{},[4556,13968,13969],{},"header + back",[4537,13971,13972,13977],{},[4556,13973,13974],{},[3747,13975,13976],{},"typedRoutes: true",[4556,13978,13979],{},"підтримка типізації шляхів",[4537,13981,13982,13986],{},[4556,13983,13984],{},[3747,13985,6786],{},[4556,13987,13988],{},"іконки tab bar",[4537,13990,13991,13996],{},[4556,13992,13993,13994],{},"спрощення ",[3747,13995,3749],{},[4556,13997,13998],{},"без свого back-рядка",[3801,14000,14002],{"id":14001},"встановлення-іконок-якщо-збираєте-вручну","Встановлення іконок (якщо збираєте вручну)",[3987,14004,14006],{"className":6797,"code":14005,"language":6799,"meta":3992,"style":3992},"cd \u002Fpath\u002Fto\u002Fnomad\nnpx expo install @expo\u002Fvector-icons\n# за peer-конфліктів npm: npm install @expo\u002Fvector-icons --legacy-peer-deps\n",[3747,14007,14008,14015,14025],{"__ignoreMap":3992},[3996,14009,14010,14012],{"class":3998,"line":3999},[3996,14011,10056],{"class":4022},[3996,14013,14014],{"class":4029}," \u002Fpath\u002Fto\u002Fnomad\n",[3996,14016,14017,14019,14021,14023],{"class":3998,"line":4047},[3996,14018,6806],{"class":4022},[3996,14020,6809],{"class":4029},[3996,14022,6812],{"class":4029},[3996,14024,6815],{"class":4029},[3996,14026,14027],{"class":3998,"line":4054},[3996,14028,14029],{"class":5783},"# за peer-конфліктів npm: npm install @expo\u002Fvector-icons --legacy-peer-deps\n",[3801,14031,14033],{"id":14032},"повний-знімок-проєкту","Повний знімок проєкту",[14035,14036,14038,14422,14726,14826,15284,15841,19017,20005,21627,21939,22184,22496,23074,23664,24250,25078,25646,30054,32240,33093,34723,35457,35820,36203,37094,37234,37828,38548,38846,39770],"code-tree",{"title":14037},"Nomad після file-based navigation (tabs + create-trip)",[3987,14039,14041],{"className":9313,"code":14040,"filename":10065,"language":9315,"meta":3992,"style":3992},"{\n  \"name\": \"nomad\",\n  \"version\": \"1.0.0\",\n  \"main\": \"expo-router\u002Fentry\",\n  \"scripts\": {\n    \"start\": \"expo start\",\n    \"android\": \"expo start --android\",\n    \"ios\": \"expo start --ios\",\n    \"web\": \"expo start --web\"\n  },\n  \"dependencies\": {\n    \"@expo\u002Fvector-icons\": \"^15.1.1\",\n    \"@hookform\u002Fresolvers\": \"^5.7.1\",\n    \"@react-native-community\u002Fcheckbox\": \"^0.6.0\",\n    \"@react-native-community\u002Fdatetimepicker\": \"8.4.4\",\n    \"@react-native-community\u002Fslider\": \"5.0.1\",\n    \"@react-native-picker\u002Fpicker\": \"2.11.1\",\n    \"@shopify\u002Fflash-list\": \"^2.3.2\",\n    \"expo\": \"~54.0.35\",\n    \"expo-constants\": \"~18.0.13\",\n    \"expo-linking\": \"~8.0.12\",\n    \"expo-router\": \"~6.0.24\",\n    \"expo-status-bar\": \"~3.0.9\",\n    \"react\": \"19.1.0\",\n    \"react-hook-form\": \"^7.84.0\",\n    \"react-native\": \"0.81.5\",\n    \"react-native-safe-area-context\": \"~5.6.0\",\n    \"react-native-screens\": \"~4.16.0\",\n    \"zod\": \"^4.4.3\"\n  },\n  \"devDependencies\": {\n    \"@expo\u002Fngrok\": \"^4.1.3\",\n    \"@types\u002Freact\": \"~19.1.0\",\n    \"typescript\": \"~5.9.2\"\n  },\n  \"private\": true\n}\n",[3747,14042,14043,14047,14058,14070,14082,14089,14101,14113,14125,14135,14139,14146,14158,14170,14182,14194,14206,14218,14230,14242,14254,14266,14278,14290,14302,14314,14326,14338,14350,14360,14364,14371,14383,14395,14405,14409,14418],{"__ignoreMap":3992},[3996,14044,14045],{"class":3998,"line":3999},[3996,14046,5684],{"class":4006},[3996,14048,14049,14052,14054,14056],{"class":3998,"line":4047},[3996,14050,14051],{"class":9326},"  \"name\"",[3996,14053,8990],{"class":4006},[3996,14055,9352],{"class":4029},[3996,14057,5720],{"class":4006},[3996,14059,14060,14063,14065,14068],{"class":3998,"line":4054},[3996,14061,14062],{"class":9326},"  \"version\"",[3996,14064,8990],{"class":4006},[3996,14066,14067],{"class":4029},"\"1.0.0\"",[3996,14069,5720],{"class":4006},[3996,14071,14072,14075,14077,14080],{"class":3998,"line":4075},[3996,14073,14074],{"class":9326},"  \"main\"",[3996,14076,8990],{"class":4006},[3996,14078,14079],{"class":4029},"\"expo-router\u002Fentry\"",[3996,14081,5720],{"class":4006},[3996,14083,14084,14087],{"class":3998,"line":4126},[3996,14085,14086],{"class":9326},"  \"scripts\"",[3996,14088,9330],{"class":4006},[3996,14090,14091,14094,14096,14099],{"class":3998,"line":4132},[3996,14092,14093],{"class":9326},"    \"start\"",[3996,14095,8990],{"class":4006},[3996,14097,14098],{"class":4029},"\"expo start\"",[3996,14100,5720],{"class":4006},[3996,14102,14103,14106,14108,14111],{"class":3998,"line":4137},[3996,14104,14105],{"class":9326},"    \"android\"",[3996,14107,8990],{"class":4006},[3996,14109,14110],{"class":4029},"\"expo start --android\"",[3996,14112,5720],{"class":4006},[3996,14114,14115,14118,14120,14123],{"class":3998,"line":4275},[3996,14116,14117],{"class":9326},"    \"ios\"",[3996,14119,8990],{"class":4006},[3996,14121,14122],{"class":4029},"\"expo start --ios\"",[3996,14124,5720],{"class":4006},[3996,14126,14127,14130,14132],{"class":3998,"line":4281},[3996,14128,14129],{"class":9326},"    \"web\"",[3996,14131,8990],{"class":4006},[3996,14133,14134],{"class":4029},"\"expo start --web\"\n",[3996,14136,14137],{"class":3998,"line":4287},[3996,14138,10287],{"class":4006},[3996,14140,14141,14144],{"class":3998,"line":4293},[3996,14142,14143],{"class":9326},"  \"dependencies\"",[3996,14145,9330],{"class":4006},[3996,14147,14148,14151,14153,14156],{"class":3998,"line":4299},[3996,14149,14150],{"class":9326},"    \"@expo\u002Fvector-icons\"",[3996,14152,8990],{"class":4006},[3996,14154,14155],{"class":4029},"\"^15.1.1\"",[3996,14157,5720],{"class":4006},[3996,14159,14160,14163,14165,14168],{"class":3998,"line":4305},[3996,14161,14162],{"class":9326},"    \"@hookform\u002Fresolvers\"",[3996,14164,8990],{"class":4006},[3996,14166,14167],{"class":4029},"\"^5.7.1\"",[3996,14169,5720],{"class":4006},[3996,14171,14172,14175,14177,14180],{"class":3998,"line":4311},[3996,14173,14174],{"class":9326},"    \"@react-native-community\u002Fcheckbox\"",[3996,14176,8990],{"class":4006},[3996,14178,14179],{"class":4029},"\"^0.6.0\"",[3996,14181,5720],{"class":4006},[3996,14183,14184,14187,14189,14192],{"class":3998,"line":4317},[3996,14185,14186],{"class":9326},"    \"@react-native-community\u002Fdatetimepicker\"",[3996,14188,8990],{"class":4006},[3996,14190,14191],{"class":4029},"\"8.4.4\"",[3996,14193,5720],{"class":4006},[3996,14195,14196,14199,14201,14204],{"class":3998,"line":4323},[3996,14197,14198],{"class":9326},"    \"@react-native-community\u002Fslider\"",[3996,14200,8990],{"class":4006},[3996,14202,14203],{"class":4029},"\"5.0.1\"",[3996,14205,5720],{"class":4006},[3996,14207,14208,14211,14213,14216],{"class":3998,"line":4329},[3996,14209,14210],{"class":9326},"    \"@react-native-picker\u002Fpicker\"",[3996,14212,8990],{"class":4006},[3996,14214,14215],{"class":4029},"\"2.11.1\"",[3996,14217,5720],{"class":4006},[3996,14219,14220,14223,14225,14228],{"class":3998,"line":4335},[3996,14221,14222],{"class":9326},"    \"@shopify\u002Fflash-list\"",[3996,14224,8990],{"class":4006},[3996,14226,14227],{"class":4029},"\"^2.3.2\"",[3996,14229,5720],{"class":4006},[3996,14231,14232,14235,14237,14240],{"class":3998,"line":4341},[3996,14233,14234],{"class":9326},"    \"expo\"",[3996,14236,8990],{"class":4006},[3996,14238,14239],{"class":4029},"\"~54.0.35\"",[3996,14241,5720],{"class":4006},[3996,14243,14244,14247,14249,14252],{"class":3998,"line":4347},[3996,14245,14246],{"class":9326},"    \"expo-constants\"",[3996,14248,8990],{"class":4006},[3996,14250,14251],{"class":4029},"\"~18.0.13\"",[3996,14253,5720],{"class":4006},[3996,14255,14256,14259,14261,14264],{"class":3998,"line":4352},[3996,14257,14258],{"class":9326},"    \"expo-linking\"",[3996,14260,8990],{"class":4006},[3996,14262,14263],{"class":4029},"\"~8.0.12\"",[3996,14265,5720],{"class":4006},[3996,14267,14268,14271,14273,14276],{"class":3998,"line":4357},[3996,14269,14270],{"class":9326},"    \"expo-router\"",[3996,14272,8990],{"class":4006},[3996,14274,14275],{"class":4029},"\"~6.0.24\"",[3996,14277,5720],{"class":4006},[3996,14279,14280,14283,14285,14288],{"class":3998,"line":4363},[3996,14281,14282],{"class":9326},"    \"expo-status-bar\"",[3996,14284,8990],{"class":4006},[3996,14286,14287],{"class":4029},"\"~3.0.9\"",[3996,14289,5720],{"class":4006},[3996,14291,14292,14295,14297,14300],{"class":3998,"line":4369},[3996,14293,14294],{"class":9326},"    \"react\"",[3996,14296,8990],{"class":4006},[3996,14298,14299],{"class":4029},"\"19.1.0\"",[3996,14301,5720],{"class":4006},[3996,14303,14304,14307,14309,14312],{"class":3998,"line":4375},[3996,14305,14306],{"class":9326},"    \"react-hook-form\"",[3996,14308,8990],{"class":4006},[3996,14310,14311],{"class":4029},"\"^7.84.0\"",[3996,14313,5720],{"class":4006},[3996,14315,14316,14319,14321,14324],{"class":3998,"line":4381},[3996,14317,14318],{"class":9326},"    \"react-native\"",[3996,14320,8990],{"class":4006},[3996,14322,14323],{"class":4029},"\"0.81.5\"",[3996,14325,5720],{"class":4006},[3996,14327,14328,14331,14333,14336],{"class":3998,"line":4387},[3996,14329,14330],{"class":9326},"    \"react-native-safe-area-context\"",[3996,14332,8990],{"class":4006},[3996,14334,14335],{"class":4029},"\"~5.6.0\"",[3996,14337,5720],{"class":4006},[3996,14339,14340,14343,14345,14348],{"class":3998,"line":4392},[3996,14341,14342],{"class":9326},"    \"react-native-screens\"",[3996,14344,8990],{"class":4006},[3996,14346,14347],{"class":4029},"\"~4.16.0\"",[3996,14349,5720],{"class":4006},[3996,14351,14352,14355,14357],{"class":3998,"line":4398},[3996,14353,14354],{"class":9326},"    \"zod\"",[3996,14356,8990],{"class":4006},[3996,14358,14359],{"class":4029},"\"^4.4.3\"\n",[3996,14361,14362],{"class":3998,"line":4404},[3996,14363,10287],{"class":4006},[3996,14365,14366,14369],{"class":3998,"line":4410},[3996,14367,14368],{"class":9326},"  \"devDependencies\"",[3996,14370,9330],{"class":4006},[3996,14372,14373,14376,14378,14381],{"class":3998,"line":4415},[3996,14374,14375],{"class":9326},"    \"@expo\u002Fngrok\"",[3996,14377,8990],{"class":4006},[3996,14379,14380],{"class":4029},"\"^4.1.3\"",[3996,14382,5720],{"class":4006},[3996,14384,14385,14388,14390,14393],{"class":3998,"line":4420},[3996,14386,14387],{"class":9326},"    \"@types\u002Freact\"",[3996,14389,8990],{"class":4006},[3996,14391,14392],{"class":4029},"\"~19.1.0\"",[3996,14394,5720],{"class":4006},[3996,14396,14397,14400,14402],{"class":3998,"line":4426},[3996,14398,14399],{"class":9326},"    \"typescript\"",[3996,14401,8990],{"class":4006},[3996,14403,14404],{"class":4029},"\"~5.9.2\"\n",[3996,14406,14407],{"class":3998,"line":4432},[3996,14408,10287],{"class":4006},[3996,14410,14411,14414,14416],{"class":3998,"line":4438},[3996,14412,14413],{"class":9326},"  \"private\"",[3996,14415,8990],{"class":4006},[3996,14417,9371],{"class":4002},[3996,14419,14420],{"class":3998,"line":4443},[3996,14421,4129],{"class":4006},[3987,14423,14425],{"className":9313,"code":14424,"filename":9310,"language":9315,"meta":3992,"style":3992},"{\n  \"expo\": {\n    \"name\": \"Nomad\",\n    \"slug\": \"nomad\",\n    \"version\": \"1.0.0\",\n    \"orientation\": \"portrait\",\n    \"icon\": \".\u002Fassets\u002Ficon.png\",\n    \"userInterfaceStyle\": \"light\",\n    \"scheme\": \"nomad\",\n    \"newArchEnabled\": true,\n    \"splash\": {\n      \"image\": \".\u002Fassets\u002Fsplash-icon.png\",\n      \"resizeMode\": \"contain\",\n      \"backgroundColor\": \"#ffffff\"\n    },\n    \"ios\": {\n      \"supportsTablet\": true\n    },\n    \"android\": {\n      \"adaptiveIcon\": {\n        \"foregroundImage\": \".\u002Fassets\u002Fadaptive-icon.png\",\n        \"backgroundColor\": \"#ffffff\"\n      },\n      \"edgeToEdgeEnabled\": true,\n      \"predictiveBackGestureEnabled\": false\n    },\n    \"web\": {\n      \"favicon\": \".\u002Fassets\u002Ffavicon.png\"\n    },\n    \"plugins\": [\n      \"expo-router\",\n      \"@react-native-community\u002Fdatetimepicker\"\n    ],\n    \"experiments\": {\n      \"typedRoutes\": true\n    }\n  }\n}\n",[3747,14426,14427,14431,14437,14447,14457,14468,14480,14492,14504,14515,14526,14533,14545,14557,14567,14572,14578,14587,14591,14597,14604,14616,14625,14630,14641,14651,14655,14661,14671,14675,14683,14690,14695,14700,14706,14714,14718,14722],{"__ignoreMap":3992},[3996,14428,14429],{"class":3998,"line":3999},[3996,14430,5684],{"class":4006},[3996,14432,14433,14435],{"class":3998,"line":4047},[3996,14434,9327],{"class":9326},[3996,14436,9330],{"class":4006},[3996,14438,14439,14441,14443,14445],{"class":3998,"line":4054},[3996,14440,9335],{"class":9326},[3996,14442,8990],{"class":4006},[3996,14444,9340],{"class":4029},[3996,14446,5720],{"class":4006},[3996,14448,14449,14451,14453,14455],{"class":3998,"line":4075},[3996,14450,9347],{"class":9326},[3996,14452,8990],{"class":4006},[3996,14454,9352],{"class":4029},[3996,14456,5720],{"class":4006},[3996,14458,14459,14462,14464,14466],{"class":3998,"line":4126},[3996,14460,14461],{"class":9326},"    \"version\"",[3996,14463,8990],{"class":4006},[3996,14465,14067],{"class":4029},[3996,14467,5720],{"class":4006},[3996,14469,14470,14473,14475,14478],{"class":3998,"line":4132},[3996,14471,14472],{"class":9326},"    \"orientation\"",[3996,14474,8990],{"class":4006},[3996,14476,14477],{"class":4029},"\"portrait\"",[3996,14479,5720],{"class":4006},[3996,14481,14482,14485,14487,14490],{"class":3998,"line":4137},[3996,14483,14484],{"class":9326},"    \"icon\"",[3996,14486,8990],{"class":4006},[3996,14488,14489],{"class":4029},"\".\u002Fassets\u002Ficon.png\"",[3996,14491,5720],{"class":4006},[3996,14493,14494,14497,14499,14502],{"class":3998,"line":4275},[3996,14495,14496],{"class":9326},"    \"userInterfaceStyle\"",[3996,14498,8990],{"class":4006},[3996,14500,14501],{"class":4029},"\"light\"",[3996,14503,5720],{"class":4006},[3996,14505,14506,14509,14511,14513],{"class":3998,"line":4281},[3996,14507,14508],{"class":9326},"    \"scheme\"",[3996,14510,8990],{"class":4006},[3996,14512,9352],{"class":4029},[3996,14514,5720],{"class":4006},[3996,14516,14517,14520,14522,14524],{"class":3998,"line":4287},[3996,14518,14519],{"class":9326},"    \"newArchEnabled\"",[3996,14521,8990],{"class":4006},[3996,14523,7184],{"class":4002},[3996,14525,5720],{"class":4006},[3996,14527,14528,14531],{"class":3998,"line":4293},[3996,14529,14530],{"class":9326},"    \"splash\"",[3996,14532,9330],{"class":4006},[3996,14534,14535,14538,14540,14543],{"class":3998,"line":4299},[3996,14536,14537],{"class":9326},"      \"image\"",[3996,14539,8990],{"class":4006},[3996,14541,14542],{"class":4029},"\".\u002Fassets\u002Fsplash-icon.png\"",[3996,14544,5720],{"class":4006},[3996,14546,14547,14550,14552,14555],{"class":3998,"line":4305},[3996,14548,14549],{"class":9326},"      \"resizeMode\"",[3996,14551,8990],{"class":4006},[3996,14553,14554],{"class":4029},"\"contain\"",[3996,14556,5720],{"class":4006},[3996,14558,14559,14562,14564],{"class":3998,"line":4311},[3996,14560,14561],{"class":9326},"      \"backgroundColor\"",[3996,14563,8990],{"class":4006},[3996,14565,14566],{"class":4029},"\"#ffffff\"\n",[3996,14568,14569],{"class":3998,"line":4317},[3996,14570,14571],{"class":4006},"    },\n",[3996,14573,14574,14576],{"class":3998,"line":4323},[3996,14575,14117],{"class":9326},[3996,14577,9330],{"class":4006},[3996,14579,14580,14583,14585],{"class":3998,"line":4329},[3996,14581,14582],{"class":9326},"      \"supportsTablet\"",[3996,14584,8990],{"class":4006},[3996,14586,9371],{"class":4002},[3996,14588,14589],{"class":3998,"line":4335},[3996,14590,14571],{"class":4006},[3996,14592,14593,14595],{"class":3998,"line":4341},[3996,14594,14105],{"class":9326},[3996,14596,9330],{"class":4006},[3996,14598,14599,14602],{"class":3998,"line":4347},[3996,14600,14601],{"class":9326},"      \"adaptiveIcon\"",[3996,14603,9330],{"class":4006},[3996,14605,14606,14609,14611,14614],{"class":3998,"line":4352},[3996,14607,14608],{"class":9326},"        \"foregroundImage\"",[3996,14610,8990],{"class":4006},[3996,14612,14613],{"class":4029},"\".\u002Fassets\u002Fadaptive-icon.png\"",[3996,14615,5720],{"class":4006},[3996,14617,14618,14621,14623],{"class":3998,"line":4357},[3996,14619,14620],{"class":9326},"        \"backgroundColor\"",[3996,14622,8990],{"class":4006},[3996,14624,14566],{"class":4029},[3996,14626,14627],{"class":3998,"line":4363},[3996,14628,14629],{"class":4006},"      },\n",[3996,14631,14632,14635,14637,14639],{"class":3998,"line":4369},[3996,14633,14634],{"class":9326},"      \"edgeToEdgeEnabled\"",[3996,14636,8990],{"class":4006},[3996,14638,7184],{"class":4002},[3996,14640,5720],{"class":4006},[3996,14642,14643,14646,14648],{"class":3998,"line":4375},[3996,14644,14645],{"class":9326},"      \"predictiveBackGestureEnabled\"",[3996,14647,8990],{"class":4006},[3996,14649,14650],{"class":4002},"false\n",[3996,14652,14653],{"class":3998,"line":4381},[3996,14654,14571],{"class":4006},[3996,14656,14657,14659],{"class":3998,"line":4387},[3996,14658,14129],{"class":9326},[3996,14660,9330],{"class":4006},[3996,14662,14663,14666,14668],{"class":3998,"line":4392},[3996,14664,14665],{"class":9326},"      \"favicon\"",[3996,14667,8990],{"class":4006},[3996,14669,14670],{"class":4029},"\".\u002Fassets\u002Ffavicon.png\"\n",[3996,14672,14673],{"class":3998,"line":4398},[3996,14674,14571],{"class":4006},[3996,14676,14677,14680],{"class":3998,"line":4404},[3996,14678,14679],{"class":9326},"    \"plugins\"",[3996,14681,14682],{"class":4006},": [\n",[3996,14684,14685,14688],{"class":3998,"line":4410},[3996,14686,14687],{"class":4029},"      \"expo-router\"",[3996,14689,5720],{"class":4006},[3996,14691,14692],{"class":3998,"line":4415},[3996,14693,14694],{"class":4029},"      \"@react-native-community\u002Fdatetimepicker\"\n",[3996,14696,14697],{"class":3998,"line":4420},[3996,14698,14699],{"class":4006},"    ],\n",[3996,14701,14702,14704],{"class":3998,"line":4426},[3996,14703,9359],{"class":9326},[3996,14705,9330],{"class":4006},[3996,14707,14708,14710,14712],{"class":3998,"line":4432},[3996,14709,9366],{"class":9326},[3996,14711,8990],{"class":4006},[3996,14713,9371],{"class":4002},[3996,14715,14716],{"class":3998,"line":4438},[3996,14717,5379],{"class":4006},[3996,14719,14720],{"class":3998,"line":4443},[3996,14721,4384],{"class":4006},[3996,14723,14724],{"class":3998,"line":4448},[3996,14725,4129],{"class":4006},[3987,14727,14730],{"className":9313,"code":14728,"filename":14729,"language":9315,"meta":3992,"style":3992},"{\n  \"extends\": \"expo\u002Ftsconfig.base\",\n  \"compilerOptions\": {\n    \"strict\": true,\n    \"paths\": {\n      \"@\u002F*\": [\n        \".\u002Fsrc\u002F*\"\n      ]\n    }\n  },\n  \"include\": [\n    \"**\u002F*.ts\",\n    \"**\u002F*.tsx\"\n  ]\n}\n","tsconfig.json",[3747,14731,14732,14736,14748,14755,14766,14773,14780,14785,14790,14794,14798,14805,14812,14817,14822],{"__ignoreMap":3992},[3996,14733,14734],{"class":3998,"line":3999},[3996,14735,5684],{"class":4006},[3996,14737,14738,14741,14743,14746],{"class":3998,"line":4047},[3996,14739,14740],{"class":9326},"  \"extends\"",[3996,14742,8990],{"class":4006},[3996,14744,14745],{"class":4029},"\"expo\u002Ftsconfig.base\"",[3996,14747,5720],{"class":4006},[3996,14749,14750,14753],{"class":3998,"line":4054},[3996,14751,14752],{"class":9326},"  \"compilerOptions\"",[3996,14754,9330],{"class":4006},[3996,14756,14757,14760,14762,14764],{"class":3998,"line":4075},[3996,14758,14759],{"class":9326},"    \"strict\"",[3996,14761,8990],{"class":4006},[3996,14763,7184],{"class":4002},[3996,14765,5720],{"class":4006},[3996,14767,14768,14771],{"class":3998,"line":4126},[3996,14769,14770],{"class":9326},"    \"paths\"",[3996,14772,9330],{"class":4006},[3996,14774,14775,14778],{"class":3998,"line":4132},[3996,14776,14777],{"class":9326},"      \"@\u002F*\"",[3996,14779,14682],{"class":4006},[3996,14781,14782],{"class":3998,"line":4137},[3996,14783,14784],{"class":4029},"        \".\u002Fsrc\u002F*\"\n",[3996,14786,14787],{"class":3998,"line":4275},[3996,14788,14789],{"class":4006},"      ]\n",[3996,14791,14792],{"class":3998,"line":4281},[3996,14793,5379],{"class":4006},[3996,14795,14796],{"class":3998,"line":4287},[3996,14797,10287],{"class":4006},[3996,14799,14800,14803],{"class":3998,"line":4293},[3996,14801,14802],{"class":9326},"  \"include\"",[3996,14804,14682],{"class":4006},[3996,14806,14807,14810],{"class":3998,"line":4299},[3996,14808,14809],{"class":4029},"    \"**\u002F*.ts\"",[3996,14811,5720],{"class":4006},[3996,14813,14814],{"class":3998,"line":4305},[3996,14815,14816],{"class":4029},"    \"**\u002F*.tsx\"\n",[3996,14818,14819],{"class":3998,"line":4311},[3996,14820,14821],{"class":4006},"  ]\n",[3996,14823,14824],{"class":3998,"line":4317},[3996,14825,4129],{"class":4006},[3987,14827,14829],{"className":3989,"code":14828,"filename":5190,"language":3991,"meta":3992,"style":3992},"import { Stack } from 'expo-router';\nimport { StatusBar } from 'expo-status-bar';\n\nimport { TripsProvider } from '@\u002Ffeatures\u002Ftrips';\nimport { ThemeProvider, useTheme } from '@\u002Fshared\u002Ftheme';\n\n\u002F**\n * Кореневий layout застосунку.\n * Stack: (tabs) — нижні вкладки; create-trip — окремий екран «поверх» вкладок.\n *\u002F\nfunction RootNavigator() {\n  const { colors, scheme } = useTheme();\n\n  return (\n    \u003C>\n      \u003CStatusBar style={scheme === 'dark' ? 'light' : 'dark'} \u002F>\n      \u003CStack\n        screenOptions={{\n          contentStyle: { backgroundColor: colors.background },\n          headerStyle: { backgroundColor: colors.background },\n          headerTintColor: colors.primary,\n          headerTitleStyle: { color: colors.text, fontWeight: '600' },\n          headerShadowVisible: false,\n        }}\n      >\n        \u003CStack.Screen name=\"(tabs)\" options={{ headerShown: false }} \u002F>\n        \u003CStack.Screen\n          name=\"create-trip\"\n          options={{\n            headerShown: true,\n            title: 'Нова поїздка',\n            presentation: 'card',\n            headerBackTitle: 'Назад',\n          }}\n        \u002F>\n      \u003C\u002FStack>\n    \u003C\u002F>\n  );\n}\n\nexport default function RootLayout() {\n  return (\n    \u003CThemeProvider>\n      \u003CTripsProvider>\n        \u003CRootNavigator \u002F>\n      \u003C\u002FTripsProvider>\n    \u003C\u002FThemeProvider>\n  );\n}\n",[3747,14830,14831,14847,14863,14867,14883,14903,14907,14912,14917,14922,14927,14935,14953,14957,14963,14967,14997,15003,15013,15029,15045,15057,15079,15088,15094,15098,15128,15134,15142,15152,15160,15168,15176,15184,15190,15194,15202,15206,15210,15214,15218,15230,15236,15244,15252,15260,15268,15276,15280],{"__ignoreMap":3992},[3996,14832,14833,14835,14837,14839,14841,14843,14845],{"class":3998,"line":3999},[3996,14834,5501],{"class":4057},[3996,14836,5504],{"class":4006},[3996,14838,3844],{"class":4064},[3996,14840,5509],{"class":4006},[3996,14842,5512],{"class":4057},[3996,14844,5515],{"class":4029},[3996,14846,4123],{"class":4006},[3996,14848,14849,14851,14853,14855,14857,14859,14861],{"class":3998,"line":4047},[3996,14850,5501],{"class":4057},[3996,14852,5504],{"class":4006},[3996,14854,5225],{"class":4064},[3996,14856,5509],{"class":4006},[3996,14858,5512],{"class":4057},[3996,14860,5532],{"class":4029},[3996,14862,4123],{"class":4006},[3996,14864,14865],{"class":3998,"line":4054},[3996,14866,4051],{"emptyLinePlaceholder":4050},[3996,14868,14869,14871,14873,14875,14877,14879,14881],{"class":3998,"line":4075},[3996,14870,5501],{"class":4057},[3996,14872,5504],{"class":4006},[3996,14874,5206],{"class":4064},[3996,14876,5509],{"class":4006},[3996,14878,5512],{"class":4057},[3996,14880,5549],{"class":4029},[3996,14882,4123],{"class":4006},[3996,14884,14885,14887,14889,14891,14893,14895,14897,14899,14901],{"class":3998,"line":4126},[3996,14886,5501],{"class":4057},[3996,14888,5504],{"class":4006},[3996,14890,5202],{"class":4064},[3996,14892,3867],{"class":4006},[3996,14894,5564],{"class":4064},[3996,14896,5509],{"class":4006},[3996,14898,5512],{"class":4057},[3996,14900,5571],{"class":4029},[3996,14902,4123],{"class":4006},[3996,14904,14905],{"class":3998,"line":4132},[3996,14906,4051],{"emptyLinePlaceholder":4050},[3996,14908,14909],{"class":3998,"line":4137},[3996,14910,14911],{"class":5783},"\u002F**\n",[3996,14913,14914],{"class":3998,"line":4275},[3996,14915,14916],{"class":5783}," * Кореневий layout застосунку.\n",[3996,14918,14919],{"class":3998,"line":4281},[3996,14920,14921],{"class":5783}," * Stack: (tabs) — нижні вкладки; create-trip — окремий екран «поверх» вкладок.\n",[3996,14923,14924],{"class":3998,"line":4287},[3996,14925,14926],{"class":5783}," *\u002F\n",[3996,14928,14929,14931,14933],{"class":3998,"line":4293},[3996,14930,5582],{"class":4002},[3996,14932,5585],{"class":4022},[3996,14934,5588],{"class":4006},[3996,14936,14937,14939,14941,14943,14945,14947,14949,14951],{"class":3998,"line":4299},[3996,14938,5593],{"class":4002},[3996,14940,5504],{"class":4006},[3996,14942,5598],{"class":4010},[3996,14944,3867],{"class":4006},[3996,14946,5603],{"class":4010},[3996,14948,5606],{"class":4006},[3996,14950,5564],{"class":4022},[3996,14952,5611],{"class":4006},[3996,14954,14955],{"class":3998,"line":4305},[3996,14956,4051],{"emptyLinePlaceholder":4050},[3996,14958,14959,14961],{"class":3998,"line":4311},[3996,14960,4078],{"class":4057},[3996,14962,5622],{"class":4006},[3996,14964,14965],{"class":3998,"line":4317},[3996,14966,5627],{"class":4081},[3996,14968,14969,14971,14973,14975,14977,14979,14981,14983,14985,14987,14989,14991,14993,14995],{"class":3998,"line":4323},[3996,14970,5632],{"class":4081},[3996,14972,5225],{"class":4085},[3996,14974,5637],{"class":4089},[3996,14976,4093],{"class":4006},[3996,14978,4096],{"class":4002},[3996,14980,5603],{"class":4064},[3996,14982,5646],{"class":4006},[3996,14984,5649],{"class":4029},[3996,14986,5652],{"class":4006},[3996,14988,5655],{"class":4029},[3996,14990,5658],{"class":4006},[3996,14992,5649],{"class":4029},[3996,14994,4117],{"class":4002},[3996,14996,5665],{"class":4081},[3996,14998,14999,15001],{"class":3998,"line":4329},[3996,15000,5632],{"class":4081},[3996,15002,5672],{"class":4085},[3996,15004,15005,15007,15009,15011],{"class":3998,"line":4335},[3996,15006,5677],{"class":4089},[3996,15008,4093],{"class":4006},[3996,15010,4096],{"class":4002},[3996,15012,5684],{"class":4099},[3996,15014,15015,15017,15019,15021,15023,15025,15027],{"class":3998,"line":4341},[3996,15016,5751],{"class":4064},[3996,15018,5504],{"class":4099},[3996,15020,5694],{"class":4064},[3996,15022,5697],{"class":4064},[3996,15024,3821],{"class":4099},[3996,15026,5702],{"class":4064},[3996,15028,5705],{"class":4099},[3996,15030,15031,15033,15035,15037,15039,15041,15043],{"class":3998,"line":4347},[3996,15032,5689],{"class":4064},[3996,15034,5504],{"class":4099},[3996,15036,5694],{"class":4064},[3996,15038,5697],{"class":4064},[3996,15040,3821],{"class":4099},[3996,15042,5702],{"class":4064},[3996,15044,5705],{"class":4099},[3996,15046,15047,15049,15051,15053,15055],{"class":3998,"line":4352},[3996,15048,5710],{"class":4064},[3996,15050,5697],{"class":4064},[3996,15052,3821],{"class":4099},[3996,15054,5717],{"class":4064},[3996,15056,5720],{"class":4099},[3996,15058,15059,15061,15063,15065,15067,15069,15071,15073,15075,15077],{"class":3998,"line":4357},[3996,15060,5725],{"class":4064},[3996,15062,5504],{"class":4099},[3996,15064,5730],{"class":4064},[3996,15066,5697],{"class":4064},[3996,15068,3821],{"class":4099},[3996,15070,4227],{"class":4064},[3996,15072,3867],{"class":4099},[3996,15074,5741],{"class":4064},[3996,15076,5744],{"class":4029},[3996,15078,5705],{"class":4099},[3996,15080,15081,15084,15086],{"class":3998,"line":4363},[3996,15082,15083],{"class":4064},"          headerShadowVisible:",[3996,15085,5818],{"class":4002},[3996,15087,5720],{"class":4099},[3996,15089,15090,15092],{"class":3998,"line":4369},[3996,15091,5768],{"class":4099},[3996,15093,4129],{"class":4002},[3996,15095,15096],{"class":3998,"line":4375},[3996,15097,5775],{"class":4081},[3996,15099,15100,15102,15104,15106,15108,15110,15112,15114,15116,15118,15120,15122,15124,15126],{"class":3998,"line":4381},[3996,15101,5791],{"class":4081},[3996,15103,5794],{"class":4085},[3996,15105,5797],{"class":4089},[3996,15107,4093],{"class":4006},[3996,15109,5802],{"class":4029},[3996,15111,5805],{"class":4089},[3996,15113,4093],{"class":4006},[3996,15115,4096],{"class":4002},[3996,15117,5812],{"class":4099},[3996,15119,5815],{"class":4064},[3996,15121,5818],{"class":4002},[3996,15123,5821],{"class":4099},[3996,15125,4117],{"class":4002},[3996,15127,5665],{"class":4081},[3996,15129,15130,15132],{"class":3998,"line":4387},[3996,15131,5791],{"class":4081},[3996,15133,5841],{"class":4085},[3996,15135,15136,15138,15140],{"class":3998,"line":4392},[3996,15137,5846],{"class":4089},[3996,15139,4093],{"class":4006},[3996,15141,5851],{"class":4029},[3996,15143,15144,15146,15148,15150],{"class":3998,"line":4398},[3996,15145,5856],{"class":4089},[3996,15147,4093],{"class":4006},[3996,15149,4096],{"class":4002},[3996,15151,5684],{"class":4099},[3996,15153,15154,15156,15158],{"class":3998,"line":4404},[3996,15155,5877],{"class":4064},[3996,15157,5880],{"class":4002},[3996,15159,5720],{"class":4099},[3996,15161,15162,15164,15166],{"class":3998,"line":4410},[3996,15163,5867],{"class":4064},[3996,15165,5870],{"class":4029},[3996,15167,5720],{"class":4099},[3996,15169,15170,15172,15174],{"class":3998,"line":4415},[3996,15171,5887],{"class":4064},[3996,15173,5890],{"class":4029},[3996,15175,5720],{"class":4099},[3996,15177,15178,15180,15182],{"class":3998,"line":4420},[3996,15179,5897],{"class":4064},[3996,15181,5900],{"class":4029},[3996,15183,5720],{"class":4099},[3996,15185,15186,15188],{"class":3998,"line":4426},[3996,15187,5907],{"class":4099},[3996,15189,4129],{"class":4002},[3996,15191,15192],{"class":3998,"line":4432},[3996,15193,5914],{"class":4081},[3996,15195,15196,15198,15200],{"class":3998,"line":4438},[3996,15197,5919],{"class":4081},[3996,15199,3844],{"class":4085},[3996,15201,5924],{"class":4081},[3996,15203,15204],{"class":3998,"line":4443},[3996,15205,5929],{"class":4081},[3996,15207,15208],{"class":3998,"line":4448},[3996,15209,5934],{"class":4006},[3996,15211,15212],{"class":3998,"line":4454},[3996,15213,4129],{"class":4006},[3996,15215,15216],{"class":3998,"line":4460},[3996,15217,4051],{"emptyLinePlaceholder":4050},[3996,15219,15220,15222,15224,15226,15228],{"class":3998,"line":4466},[3996,15221,5947],{"class":4057},[3996,15223,5950],{"class":4057},[3996,15225,5953],{"class":4002},[3996,15227,5956],{"class":4022},[3996,15229,5588],{"class":4006},[3996,15231,15232,15234],{"class":3998,"line":4472},[3996,15233,4078],{"class":4057},[3996,15235,5622],{"class":4006},[3996,15237,15238,15240,15242],{"class":3998,"line":4477},[3996,15239,5969],{"class":4081},[3996,15241,5202],{"class":4085},[3996,15243,5924],{"class":4081},[3996,15245,15246,15248,15250],{"class":3998,"line":5066},[3996,15247,5632],{"class":4081},[3996,15249,5206],{"class":4085},[3996,15251,5924],{"class":4081},[3996,15253,15254,15256,15258],{"class":3998,"line":5072},[3996,15255,5791],{"class":4081},[3996,15257,5988],{"class":4085},[3996,15259,5665],{"class":4081},[3996,15261,15262,15264,15266],{"class":3998,"line":5078},[3996,15263,5919],{"class":4081},[3996,15265,5206],{"class":4085},[3996,15267,5924],{"class":4081},[3996,15269,15270,15272,15274],{"class":3998,"line":5084},[3996,15271,6003],{"class":4081},[3996,15273,5202],{"class":4085},[3996,15275,5924],{"class":4081},[3996,15277,15278],{"class":3998,"line":5090},[3996,15279,5934],{"class":4006},[3996,15281,15282],{"class":3998,"line":5096},[3996,15283,4129],{"class":4006},[3987,15285,15287],{"className":3989,"code":15286,"filename":10870,"language":3991,"meta":3992,"style":3992},"import { Tabs } from 'expo-router';\nimport { Ionicons } from '@expo\u002Fvector-icons';\n\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\n\n\u002F**\n * Нижня панель вкладок (Tabs).\n * Імена name= збігаються з файлами в цій теці (index, places, about).\n *\u002F\nexport default function TabsLayout() {\n  const { colors } = useTheme();\n\n  return (\n    \u003CTabs\n      screenOptions={{\n        headerShown: false,\n        tabBarActiveTintColor: colors.primary,\n        tabBarInactiveTintColor: colors.textSecondary,\n        tabBarStyle: {\n          backgroundColor: colors.background,\n          borderTopColor: colors.border,\n        },\n        tabBarLabelStyle: {\n          fontSize: 12,\n          fontWeight: '600',\n        },\n      }}\n    >\n      \u003CTabs.Screen\n        name=\"index\"\n        options={{\n          title: 'Поїздки',\n          tabBarIcon: ({ color, size }) => (\n            \u003CIonicons name=\"map-outline\" size={size} color={color} \u002F>\n          ),\n        }}\n      \u002F>\n      \u003CTabs.Screen\n        name=\"places\"\n        options={{\n          title: 'Місця',\n          tabBarIcon: ({ color, size }) => (\n            \u003CIonicons name=\"location-outline\" size={size} color={color} \u002F>\n          ),\n        }}\n      \u002F>\n      \u003CTabs.Screen\n        name=\"about\"\n        options={{\n          title: 'Ще',\n          tabBarIcon: ({ color, size }) => (\n            \u003CIonicons name=\"ellipsis-horizontal-circle-outline\" size={size} color={color} \u002F>\n          ),\n        }}\n      \u002F>\n    \u003C\u002FTabs>\n  );\n}\n",[3747,15288,15289,15305,15321,15325,15341,15345,15349,15354,15359,15363,15375,15389,15393,15399,15405,15415,15423,15435,15448,15454,15466,15479,15483,15489,15498,15507,15511,15517,15521,15527,15535,15545,15554,15574,15609,15613,15619,15623,15629,15637,15647,15655,15675,15709,15713,15719,15723,15729,15737,15747,15756,15776,15811,15815,15821,15825,15833,15837],{"__ignoreMap":3992},[3996,15290,15291,15293,15295,15297,15299,15301,15303],{"class":3998,"line":3999},[3996,15292,5501],{"class":4057},[3996,15294,5504],{"class":4006},[3996,15296,3840],{"class":4064},[3996,15298,5509],{"class":4006},[3996,15300,5512],{"class":4057},[3996,15302,5515],{"class":4029},[3996,15304,4123],{"class":4006},[3996,15306,15307,15309,15311,15313,15315,15317,15319],{"class":3998,"line":4047},[3996,15308,5501],{"class":4057},[3996,15310,5504],{"class":4006},[3996,15312,6892],{"class":4064},[3996,15314,5509],{"class":4006},[3996,15316,5512],{"class":4057},[3996,15318,10918],{"class":4029},[3996,15320,4123],{"class":4006},[3996,15322,15323],{"class":3998,"line":4054},[3996,15324,4051],{"emptyLinePlaceholder":4050},[3996,15326,15327,15329,15331,15333,15335,15337,15339],{"class":3998,"line":4075},[3996,15328,5501],{"class":4057},[3996,15330,5504],{"class":4006},[3996,15332,5564],{"class":4064},[3996,15334,5509],{"class":4006},[3996,15336,5512],{"class":4057},[3996,15338,5571],{"class":4029},[3996,15340,4123],{"class":4006},[3996,15342,15343],{"class":3998,"line":4126},[3996,15344,4051],{"emptyLinePlaceholder":4050},[3996,15346,15347],{"class":3998,"line":4132},[3996,15348,14911],{"class":5783},[3996,15350,15351],{"class":3998,"line":4137},[3996,15352,15353],{"class":5783}," * Нижня панель вкладок (Tabs).\n",[3996,15355,15356],{"class":3998,"line":4275},[3996,15357,15358],{"class":5783}," * Імена name= збігаються з файлами в цій теці (index, places, about).\n",[3996,15360,15361],{"class":3998,"line":4281},[3996,15362,14926],{"class":5783},[3996,15364,15365,15367,15369,15371,15373],{"class":3998,"line":4287},[3996,15366,5947],{"class":4057},[3996,15368,5950],{"class":4057},[3996,15370,5953],{"class":4002},[3996,15372,10935],{"class":4022},[3996,15374,5588],{"class":4006},[3996,15376,15377,15379,15381,15383,15385,15387],{"class":3998,"line":4293},[3996,15378,5593],{"class":4002},[3996,15380,5504],{"class":4006},[3996,15382,5598],{"class":4010},[3996,15384,5606],{"class":4006},[3996,15386,5564],{"class":4022},[3996,15388,5611],{"class":4006},[3996,15390,15391],{"class":3998,"line":4299},[3996,15392,4051],{"emptyLinePlaceholder":4050},[3996,15394,15395,15397],{"class":3998,"line":4305},[3996,15396,4078],{"class":4057},[3996,15398,5622],{"class":4006},[3996,15400,15401,15403],{"class":3998,"line":4311},[3996,15402,5969],{"class":4081},[3996,15404,10950],{"class":4085},[3996,15406,15407,15409,15411,15413],{"class":3998,"line":4317},[3996,15408,10955],{"class":4089},[3996,15410,4093],{"class":4006},[3996,15412,4096],{"class":4002},[3996,15414,5684],{"class":4099},[3996,15416,15417,15419,15421],{"class":3998,"line":4323},[3996,15418,10966],{"class":4064},[3996,15420,5818],{"class":4002},[3996,15422,5720],{"class":4099},[3996,15424,15425,15427,15429,15431,15433],{"class":3998,"line":4329},[3996,15426,10975],{"class":4064},[3996,15428,5697],{"class":4064},[3996,15430,3821],{"class":4099},[3996,15432,5717],{"class":4064},[3996,15434,5720],{"class":4099},[3996,15436,15437,15439,15441,15443,15446],{"class":3998,"line":4335},[3996,15438,10984],{"class":4064},[3996,15440,5697],{"class":4064},[3996,15442,3821],{"class":4099},[3996,15444,15445],{"class":4064},"textSecondary",[3996,15447,5720],{"class":4099},[3996,15449,15450,15452],{"class":3998,"line":4341},[3996,15451,10994],{"class":4064},[3996,15453,7958],{"class":4099},[3996,15455,15456,15458,15460,15462,15464],{"class":3998,"line":4347},[3996,15457,11001],{"class":4064},[3996,15459,5697],{"class":4064},[3996,15461,3821],{"class":4099},[3996,15463,5702],{"class":4064},[3996,15465,5720],{"class":4099},[3996,15467,15468,15470,15472,15474,15477],{"class":3998,"line":4352},[3996,15469,11010],{"class":4064},[3996,15471,5697],{"class":4064},[3996,15473,3821],{"class":4099},[3996,15475,15476],{"class":4064},"border",[3996,15478,5720],{"class":4099},[3996,15480,15481],{"class":3998,"line":4357},[3996,15482,11020],{"class":4099},[3996,15484,15485,15487],{"class":3998,"line":4363},[3996,15486,11025],{"class":4064},[3996,15488,7958],{"class":4099},[3996,15490,15491,15494,15496],{"class":3998,"line":4369},[3996,15492,15493],{"class":4064},"          fontSize:",[3996,15495,11034],{"class":11033},[3996,15497,5720],{"class":4099},[3996,15499,15500,15503,15505],{"class":3998,"line":4375},[3996,15501,15502],{"class":4064},"          fontWeight:",[3996,15504,5744],{"class":4029},[3996,15506,5720],{"class":4099},[3996,15508,15509],{"class":3998,"line":4381},[3996,15510,11020],{"class":4099},[3996,15512,15513,15515],{"class":3998,"line":4387},[3996,15514,11047],{"class":4099},[3996,15516,4129],{"class":4002},[3996,15518,15519],{"class":3998,"line":4392},[3996,15520,11054],{"class":4081},[3996,15522,15523,15525],{"class":3998,"line":4398},[3996,15524,5632],{"class":4081},[3996,15526,6830],{"class":4085},[3996,15528,15529,15531,15533],{"class":3998,"line":4404},[3996,15530,11065],{"class":4089},[3996,15532,4093],{"class":4006},[3996,15534,11070],{"class":4029},[3996,15536,15537,15539,15541,15543],{"class":3998,"line":4410},[3996,15538,11075],{"class":4089},[3996,15540,4093],{"class":4006},[3996,15542,4096],{"class":4002},[3996,15544,5684],{"class":4099},[3996,15546,15547,15549,15552],{"class":3998,"line":4415},[3996,15548,11086],{"class":4064},[3996,15550,15551],{"class":4029}," 'Поїздки'",[3996,15553,5720],{"class":4099},[3996,15555,15556,15558,15560,15562,15564,15566,15568,15570,15572],{"class":3998,"line":4420},[3996,15557,11096],{"class":4022},[3996,15559,6869],{"class":4064},[3996,15561,6872],{"class":4099},[3996,15563,6758],{"class":4064},[3996,15565,3867],{"class":4099},[3996,15567,6762],{"class":4064},[3996,15569,6881],{"class":4099},[3996,15571,4103],{"class":4002},[3996,15573,5622],{"class":4099},[3996,15575,15576,15578,15580,15582,15584,15587,15589,15591,15593,15595,15597,15599,15601,15603,15605,15607],{"class":3998,"line":4426},[3996,15577,11117],{"class":4081},[3996,15579,6892],{"class":4085},[3996,15581,5797],{"class":4089},[3996,15583,4093],{"class":4006},[3996,15585,15586],{"class":4029},"\"map-outline\"",[3996,15588,6902],{"class":4089},[3996,15590,4093],{"class":4006},[3996,15592,4096],{"class":4002},[3996,15594,6762],{"class":4064},[3996,15596,4117],{"class":4002},[3996,15598,6913],{"class":4089},[3996,15600,4093],{"class":4006},[3996,15602,4096],{"class":4002},[3996,15604,6758],{"class":4064},[3996,15606,4117],{"class":4002},[3996,15608,5665],{"class":4081},[3996,15610,15611],{"class":3998,"line":4432},[3996,15612,11153],{"class":4099},[3996,15614,15615,15617],{"class":3998,"line":4438},[3996,15616,5768],{"class":4099},[3996,15618,4129],{"class":4002},[3996,15620,15621],{"class":3998,"line":4443},[3996,15622,11164],{"class":4081},[3996,15624,15625,15627],{"class":3998,"line":4448},[3996,15626,5632],{"class":4081},[3996,15628,6830],{"class":4085},[3996,15630,15631,15633,15635],{"class":3998,"line":4454},[3996,15632,11065],{"class":4089},[3996,15634,4093],{"class":4006},[3996,15636,6840],{"class":4029},[3996,15638,15639,15641,15643,15645],{"class":3998,"line":4460},[3996,15640,11075],{"class":4089},[3996,15642,4093],{"class":4006},[3996,15644,4096],{"class":4002},[3996,15646,5684],{"class":4099},[3996,15648,15649,15651,15653],{"class":3998,"line":4466},[3996,15650,11086],{"class":4064},[3996,15652,6859],{"class":4029},[3996,15654,5720],{"class":4099},[3996,15656,15657,15659,15661,15663,15665,15667,15669,15671,15673],{"class":3998,"line":4472},[3996,15658,11096],{"class":4022},[3996,15660,6869],{"class":4064},[3996,15662,6872],{"class":4099},[3996,15664,6758],{"class":4064},[3996,15666,3867],{"class":4099},[3996,15668,6762],{"class":4064},[3996,15670,6881],{"class":4099},[3996,15672,4103],{"class":4002},[3996,15674,5622],{"class":4099},[3996,15676,15677,15679,15681,15683,15685,15687,15689,15691,15693,15695,15697,15699,15701,15703,15705,15707],{"class":3998,"line":4477},[3996,15678,11117],{"class":4081},[3996,15680,6892],{"class":4085},[3996,15682,5797],{"class":4089},[3996,15684,4093],{"class":4006},[3996,15686,6899],{"class":4029},[3996,15688,6902],{"class":4089},[3996,15690,4093],{"class":4006},[3996,15692,4096],{"class":4002},[3996,15694,6762],{"class":4064},[3996,15696,4117],{"class":4002},[3996,15698,6913],{"class":4089},[3996,15700,4093],{"class":4006},[3996,15702,4096],{"class":4002},[3996,15704,6758],{"class":4064},[3996,15706,4117],{"class":4002},[3996,15708,5665],{"class":4081},[3996,15710,15711],{"class":3998,"line":5066},[3996,15712,11153],{"class":4099},[3996,15714,15715,15717],{"class":3998,"line":5072},[3996,15716,5768],{"class":4099},[3996,15718,4129],{"class":4002},[3996,15720,15721],{"class":3998,"line":5078},[3996,15722,11164],{"class":4081},[3996,15724,15725,15727],{"class":3998,"line":5084},[3996,15726,5632],{"class":4081},[3996,15728,6830],{"class":4085},[3996,15730,15731,15733,15735],{"class":3998,"line":5090},[3996,15732,11065],{"class":4089},[3996,15734,4093],{"class":4006},[3996,15736,11179],{"class":4029},[3996,15738,15739,15741,15743,15745],{"class":3998,"line":5096},[3996,15740,11075],{"class":4089},[3996,15742,4093],{"class":4006},[3996,15744,4096],{"class":4002},[3996,15746,5684],{"class":4099},[3996,15748,15749,15751,15754],{"class":3998,"line":10510},[3996,15750,11086],{"class":4064},[3996,15752,15753],{"class":4029}," 'Ще'",[3996,15755,5720],{"class":4099},[3996,15757,15758,15760,15762,15764,15766,15768,15770,15772,15774],{"class":3998,"line":10516},[3996,15759,11096],{"class":4022},[3996,15761,6869],{"class":4064},[3996,15763,6872],{"class":4099},[3996,15765,6758],{"class":4064},[3996,15767,3867],{"class":4099},[3996,15769,6762],{"class":4064},[3996,15771,6881],{"class":4099},[3996,15773,4103],{"class":4002},[3996,15775,5622],{"class":4099},[3996,15777,15778,15780,15782,15784,15786,15789,15791,15793,15795,15797,15799,15801,15803,15805,15807,15809],{"class":3998,"line":10521},[3996,15779,11117],{"class":4081},[3996,15781,6892],{"class":4085},[3996,15783,5797],{"class":4089},[3996,15785,4093],{"class":4006},[3996,15787,15788],{"class":4029},"\"ellipsis-horizontal-circle-outline\"",[3996,15790,6902],{"class":4089},[3996,15792,4093],{"class":4006},[3996,15794,4096],{"class":4002},[3996,15796,6762],{"class":4064},[3996,15798,4117],{"class":4002},[3996,15800,6913],{"class":4089},[3996,15802,4093],{"class":4006},[3996,15804,4096],{"class":4002},[3996,15806,6758],{"class":4064},[3996,15808,4117],{"class":4002},[3996,15810,5665],{"class":4081},[3996,15812,15813],{"class":3998,"line":10552},[3996,15814,11153],{"class":4099},[3996,15816,15817,15819],{"class":3998,"line":10587},[3996,15818,5768],{"class":4099},[3996,15820,4129],{"class":4002},[3996,15822,15823],{"class":3998,"line":12205},[3996,15824,11164],{"class":4081},[3996,15826,15827,15829,15831],{"class":3998,"line":12213},[3996,15828,6003],{"class":4081},[3996,15830,3840],{"class":4085},[3996,15832,5924],{"class":4081},[3996,15834,15835],{"class":3998,"line":12223},[3996,15836,5934],{"class":4006},[3996,15838,15839],{"class":3998,"line":12233},[3996,15840,4129],{"class":4006},[3987,15842,15844],{"className":3989,"code":15843,"filename":6118,"language":3991,"meta":3992,"style":3992},"import { useCallback, useState } from 'react';\nimport {\n  FlatList,\n  Pressable,\n  RefreshControl,\n  StyleSheet,\n  View,\n} from 'react-native';\nimport { FlashList } from '@shopify\u002Fflash-list';\nimport { useRouter } from 'expo-router';\n\nimport {\n  mockPlaces,\n  PlaceChip,\n  TripCard,\n  useTrips,\n  type Place,\n  type Trip,\n} from '@\u002Ffeatures\u002Ftrips';\nimport { useTheme, type ThemePreference } from '@\u002Fshared\u002Ftheme';\nimport { AppText, Button, Screen } from '@\u002Fshared\u002Fui';\n\nconst PREFS: { id: ThemePreference; label: string }[] = [\n  { id: 'system', label: 'Система' },\n  { id: 'light', label: 'Світла' },\n  { id: 'dark', label: 'Темна' },\n];\n\nexport default function HomeScreen() {\n  const router = useRouter();\n  const { trips, resetToMock } = useTrips();\n  const { colors, spacing, preference, setPreference, scheme } = useTheme();\n  const [places] = useState\u003CPlace[]>(mockPlaces);\n  const [refreshing, setRefreshing] = useState(false);\n\n  const handleOpenTrip = useCallback((trip: Trip) => {\n    console.log('TODO: відкрити поїздку', trip.id, trip.title);\n  }, []);\n\n  const handleOpenPlace = useCallback((place: Place) => {\n    console.log('TODO: відкрити місце', place.id, place.name);\n  }, []);\n\n  const onRefresh = useCallback(() => {\n    setRefreshing(true);\n    \u002F\u002F Mock pull-to-refresh: повертаємо seed mock (локально створені зникають).\n    setTimeout(() => {\n      resetToMock();\n      setRefreshing(false);\n    }, 900);\n  }, [resetToMock]);\n\n  const renderTrip = useCallback(\n    ({ item }: { item: Trip }) => (\n      \u003CTripCard trip={item} onPress={handleOpenTrip} \u002F>\n    ),\n    [handleOpenTrip],\n  );\n\n  const keyExtractor = useCallback((item: Trip) => item.id, []);\n\n  const listHeader = (\n    \u003CView style={{ gap: spacing.md, marginBottom: spacing.md }}>\n      {places.length > 0 ? (\n        \u003CView style={{ gap: spacing.sm }}>\n          \u003CAppText style={{ fontWeight: '600' }}>Останні місця\u003C\u002FAppText>\n          \u003CFlatList\n            horizontal\n            data={places}\n            keyExtractor={(item) => item.id}\n            renderItem={({ item }) => (\n              \u003CPlaceChip place={item} onPress={handleOpenPlace} \u002F>\n            )}\n            showsHorizontalScrollIndicator={false}\n            ItemSeparatorComponent={() => \u003CView style={{ width: spacing.sm }} \u002F>}\n            contentContainerStyle={{ paddingVertical: 2 }}\n          \u002F>\n        \u003C\u002FView>\n      ) : null}\n\n      \u003CAppText style={{ fontWeight: '600' }}>Ваші поїздки\u003C\u002FAppText>\n    \u003C\u002FView>\n  );\n\n  const listEmpty = (\n    \u003CView\n      style={[\n        styles.empty,\n        {\n          paddingHorizontal: spacing.sm,\n          paddingVertical: spacing.xl,\n          gap: spacing.sm,\n        },\n      ]}\n    >\n      \u003CAppText variant=\"subtitle\" style={styles.emptyTitle}>\n        Поки немає поїздок\n      \u003C\u002FAppText>\n      \u003CAppText\n        variant=\"caption\"\n        color={colors.textSecondary}\n        style={styles.emptyDesc}\n      >\n        Потягніть список униз, щоб «оновити», або натисніть «Нова поїздка».\n      \u003C\u002FAppText>\n    \u003C\u002FView>\n  );\n\n  return (\n    \u003CScreen style={styles.screen}>\n      \u003CView\n        style={[\n          styles.header,\n          {\n            paddingHorizontal: spacing.md,\n            paddingTop: spacing.sm,\n            paddingBottom: spacing.md,\n            gap: spacing.xs,\n            borderBottomColor: colors.border,\n          },\n        ]}\n      >\n        \u003CAppText variant=\"title\">Мандрівник\u003C\u002FAppText>\n        \u003CAppText variant=\"caption\" style={{ marginTop: spacing.xs }}>\n          Щоденник подорожей · тема: {scheme === 'dark' ? 'темна' : 'світла'}\n        \u003C\u002FAppText>\n        \u003CAppText\n          variant=\"caption\"\n          style={{\n            marginTop: spacing.xs,\n            color: colors.primary,\n            fontWeight: '600',\n          }}\n        >\n          {trips.length > 0\n            ? `${trips.length} поїздок · ${places.length} місць`\n            : 'Список порожній'}\n        \u003C\u002FAppText>\n\n        \u003CView style={[styles.themeRow, { gap: spacing.sm, marginTop: spacing.sm }]}>\n          {PREFS.map((p) => {\n            const active = preference === p.id;\n            return (\n              \u003CPressable\n                key={p.id}\n                onPress={() => setPreference(p.id)}\n                style={[\n                  styles.themeChip,\n                  {\n                    backgroundColor: active ? colors.primary : colors.surface,\n                    borderColor: colors.border,\n                  },\n                ]}\n                accessibilityRole=\"button\"\n                accessibilityState={{ selected: active }}\n                accessibilityLabel={`Тема: ${p.label}`}\n              >\n                \u003CAppText\n                  variant=\"caption\"\n                  color={active ? colors.onPrimary : colors.text}\n                  style={styles.themeChipText}\n                >\n                  {p.label}\n                \u003C\u002FAppText>\n              \u003C\u002FPressable>\n            );\n          })}\n        \u003C\u002FView>\n      \u003C\u002FView>\n\n      \u003CView style={styles.listWrap}>\n        \u003CFlashList\n          data={trips}\n          renderItem={renderTrip}\n          keyExtractor={keyExtractor}\n          ListHeaderComponent={listHeader}\n          ListEmptyComponent={listEmpty}\n          contentContainerStyle={{\n            paddingHorizontal: spacing.md,\n            paddingTop: spacing.md,\n            paddingBottom: spacing.md,\n          }}\n          ItemSeparatorComponent={() => \u003CView style={{ height: spacing.md }} \u002F>}\n          refreshControl={\n            \u003CRefreshControl\n              refreshing={refreshing}\n              onRefresh={onRefresh}\n              tintColor={colors.primary}\n              colors={[colors.primary]}\n            \u002F>\n          }\n          showsVerticalScrollIndicator={false}\n        \u002F>\n      \u003C\u002FView>\n\n      \u003CView\n        style={[\n          styles.footer,\n          {\n            paddingHorizontal: spacing.md,\n            paddingTop: spacing.sm,\n            paddingBottom: spacing.md,\n            borderTopColor: colors.border,\n            backgroundColor: colors.background,\n          },\n        ]}\n      >\n        \u003CButton\n          label=\"Нова поїздка\"\n          onPress={() => {\n            router.push('\u002Fcreate-trip');\n          }}\n        \u002F>\n      \u003C\u002FView>\n    \u003C\u002FScreen>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    paddingHorizontal: 0,\n  },\n  header: {\n    borderBottomWidth: 1,\n  },\n  themeRow: {\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n  },\n  themeChip: {\n    paddingHorizontal: 12,\n    paddingVertical: 8,\n    borderRadius: 8,\n    borderWidth: 1,\n  },\n  themeChipText: {\n    fontWeight: '600',\n  },\n  listWrap: {\n    flex: 1,\n  },\n  empty: {\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  emptyTitle: {\n    textAlign: 'center',\n  },\n  emptyDesc: {\n    textAlign: 'center',\n  },\n  footer: {\n    borderTopWidth: 1,\n  },\n});\n",[3747,15845,15846,15867,15873,15880,15887,15894,15901,15908,15919,15937,15953,15957,15963,15970,15977,15984,15991,16001,16010,16020,16044,16071,16075,16105,16126,16143,16160,16164,16168,16181,16193,16214,16247,16272,16296,16300,16327,16360,16365,16369,16395,16426,16430,16434,16451,16462,16467,16478,16485,16496,16506,16514,16518,16532,16554,16585,16589,16599,16603,16607,16639,16643,16654,16696,16718,16748,16782,16789,16795,16809,16835,16855,16887,16895,16906,16949,16971,16977,16986,16997,17002,17036,17045,17050,17055,17065,17073,17086,17099,17105,17119,17134,17148,17153,17161,17166,17198,17204,17213,17221,17232,17250,17269,17274,17280,17289,17298,17303,17308,17315,17339,17346,17357,17369,17375,17389,17403,17417,17432,17446,17452,17460,17465,17490,17526,17552,17561,17568,17578,17590,17604,17618,17628,17635,17641,17658,17693,17704,17713,17718,17768,17791,17817,17825,17833,17851,17880,17892,17905,17911,17938,17952,17958,17966,17977,17998,18025,18031,18039,18049,18081,18100,18106,18120,18130,18140,18146,18154,18163,18172,18177,18201,18209,18223,18238,18253,18268,18283,18295,18308,18321,18334,18341,18383,18393,18401,18415,18430,18448,18470,18475,18480,18490,18495,18504,18509,18516,18527,18539,18544,18557,18570,18583,18597,18611,18616,18623,18628,18636,18647,18663,18679,18686,18691,18700,18709,18714,18719,18724,18741,18749,18758,18763,18770,18779,18784,18792,18803,18814,18819,18827,18836,18846,18855,18864,18869,18877,18886,18891,18899,18908,18913,18921,18930,18939,18944,18952,18962,18967,18975,18984,18989,18997,19007,19012],{"__ignoreMap":3992},[3996,15847,15848,15850,15852,15855,15857,15859,15861,15863,15865],{"class":3998,"line":3999},[3996,15849,5501],{"class":4057},[3996,15851,5504],{"class":4006},[3996,15853,15854],{"class":4064},"useCallback",[3996,15856,3867],{"class":4006},[3996,15858,4023],{"class":4064},[3996,15860,5509],{"class":4006},[3996,15862,5512],{"class":4057},[3996,15864,7869],{"class":4029},[3996,15866,4123],{"class":4006},[3996,15868,15869,15871],{"class":3998,"line":4047},[3996,15870,5501],{"class":4057},[3996,15872,7958],{"class":4006},[3996,15874,15875,15878],{"class":3998,"line":4054},[3996,15876,15877],{"class":4064},"  FlatList",[3996,15879,5720],{"class":4006},[3996,15881,15882,15885],{"class":3998,"line":4075},[3996,15883,15884],{"class":4064},"  Pressable",[3996,15886,5720],{"class":4006},[3996,15888,15889,15892],{"class":3998,"line":4126},[3996,15890,15891],{"class":4064},"  RefreshControl",[3996,15893,5720],{"class":4006},[3996,15895,15896,15899],{"class":3998,"line":4132},[3996,15897,15898],{"class":4064},"  StyleSheet",[3996,15900,5720],{"class":4006},[3996,15902,15903,15906],{"class":3998,"line":4137},[3996,15904,15905],{"class":4064},"  View",[3996,15907,5720],{"class":4006},[3996,15909,15910,15913,15915,15917],{"class":3998,"line":4275},[3996,15911,15912],{"class":4006},"} ",[3996,15914,5512],{"class":4057},[3996,15916,7908],{"class":4029},[3996,15918,4123],{"class":4006},[3996,15920,15921,15923,15925,15928,15930,15932,15935],{"class":3998,"line":4281},[3996,15922,5501],{"class":4057},[3996,15924,5504],{"class":4006},[3996,15926,15927],{"class":4064},"FlashList",[3996,15929,5509],{"class":4006},[3996,15931,5512],{"class":4057},[3996,15933,15934],{"class":4029}," '@shopify\u002Fflash-list'",[3996,15936,4123],{"class":4006},[3996,15938,15939,15941,15943,15945,15947,15949,15951],{"class":3998,"line":4287},[3996,15940,5501],{"class":4057},[3996,15942,5504],{"class":4006},[3996,15944,3862],{"class":4064},[3996,15946,5509],{"class":4006},[3996,15948,5512],{"class":4057},[3996,15950,5515],{"class":4029},[3996,15952,4123],{"class":4006},[3996,15954,15955],{"class":3998,"line":4293},[3996,15956,4051],{"emptyLinePlaceholder":4050},[3996,15958,15959,15961],{"class":3998,"line":4299},[3996,15960,5501],{"class":4057},[3996,15962,7958],{"class":4006},[3996,15964,15965,15968],{"class":3998,"line":4305},[3996,15966,15967],{"class":4064},"  mockPlaces",[3996,15969,5720],{"class":4006},[3996,15971,15972,15975],{"class":3998,"line":4311},[3996,15973,15974],{"class":4064},"  PlaceChip",[3996,15976,5720],{"class":4006},[3996,15978,15979,15982],{"class":3998,"line":4317},[3996,15980,15981],{"class":4064},"  TripCard",[3996,15983,5720],{"class":4006},[3996,15985,15986,15989],{"class":3998,"line":4323},[3996,15987,15988],{"class":4064},"  useTrips",[3996,15990,5720],{"class":4006},[3996,15992,15993,15996,15999],{"class":3998,"line":4329},[3996,15994,15995],{"class":4057},"  type",[3996,15997,15998],{"class":4064}," Place",[3996,16000,5720],{"class":4006},[3996,16002,16003,16005,16008],{"class":3998,"line":4335},[3996,16004,15995],{"class":4057},[3996,16006,16007],{"class":4064}," Trip",[3996,16009,5720],{"class":4006},[3996,16011,16012,16014,16016,16018],{"class":3998,"line":4341},[3996,16013,15912],{"class":4006},[3996,16015,5512],{"class":4057},[3996,16017,5549],{"class":4029},[3996,16019,4123],{"class":4006},[3996,16021,16022,16024,16026,16028,16030,16033,16036,16038,16040,16042],{"class":3998,"line":4347},[3996,16023,5501],{"class":4057},[3996,16025,5504],{"class":4006},[3996,16027,5564],{"class":4064},[3996,16029,3867],{"class":4006},[3996,16031,16032],{"class":4057},"type",[3996,16034,16035],{"class":4064}," ThemePreference",[3996,16037,5509],{"class":4006},[3996,16039,5512],{"class":4057},[3996,16041,5571],{"class":4029},[3996,16043,4123],{"class":4006},[3996,16045,16046,16048,16050,16053,16055,16058,16060,16062,16064,16066,16069],{"class":3998,"line":4352},[3996,16047,5501],{"class":4057},[3996,16049,5504],{"class":4006},[3996,16051,16052],{"class":4064},"AppText",[3996,16054,3867],{"class":4006},[3996,16056,16057],{"class":4064},"Button",[3996,16059,3867],{"class":4006},[3996,16061,9671],{"class":4064},[3996,16063,5509],{"class":4006},[3996,16065,5512],{"class":4057},[3996,16067,16068],{"class":4029}," '@\u002Fshared\u002Fui'",[3996,16070,4123],{"class":4006},[3996,16072,16073],{"class":3998,"line":4357},[3996,16074,4051],{"emptyLinePlaceholder":4050},[3996,16076,16077,16079,16082,16085,16087,16089,16092,16095,16098,16100,16102],{"class":3998,"line":4363},[3996,16078,4003],{"class":4002},[3996,16080,16081],{"class":4010}," PREFS",[3996,16083,16084],{"class":4006},": { ",[3996,16086,10533],{"class":4064},[3996,16088,8990],{"class":4006},[3996,16090,16091],{"class":4085},"ThemePreference",[3996,16093,16094],{"class":4006},"; ",[3996,16096,16097],{"class":4064},"label",[3996,16099,8990],{"class":4006},[3996,16101,7692],{"class":4085},[3996,16103,16104],{"class":4006}," }[] = [\n",[3996,16106,16107,16110,16113,16116,16118,16121,16124],{"class":3998,"line":4369},[3996,16108,16109],{"class":4006},"  { ",[3996,16111,16112],{"class":4064},"id:",[3996,16114,16115],{"class":4029}," 'system'",[3996,16117,3867],{"class":4006},[3996,16119,16120],{"class":4064},"label:",[3996,16122,16123],{"class":4029}," 'Система'",[3996,16125,5705],{"class":4006},[3996,16127,16128,16130,16132,16134,16136,16138,16141],{"class":3998,"line":4375},[3996,16129,16109],{"class":4006},[3996,16131,16112],{"class":4064},[3996,16133,5655],{"class":4029},[3996,16135,3867],{"class":4006},[3996,16137,16120],{"class":4064},[3996,16139,16140],{"class":4029}," 'Світла'",[3996,16142,5705],{"class":4006},[3996,16144,16145,16147,16149,16151,16153,16155,16158],{"class":3998,"line":4381},[3996,16146,16109],{"class":4006},[3996,16148,16112],{"class":4064},[3996,16150,5649],{"class":4029},[3996,16152,3867],{"class":4006},[3996,16154,16120],{"class":4064},[3996,16156,16157],{"class":4029}," 'Темна'",[3996,16159,5705],{"class":4006},[3996,16161,16162],{"class":3998,"line":4387},[3996,16163,10513],{"class":4006},[3996,16165,16166],{"class":3998,"line":4392},[3996,16167,4051],{"emptyLinePlaceholder":4050},[3996,16169,16170,16172,16174,16176,16179],{"class":3998,"line":4398},[3996,16171,5947],{"class":4057},[3996,16173,5950],{"class":4057},[3996,16175,5953],{"class":4002},[3996,16177,16178],{"class":4022}," HomeScreen",[3996,16180,5588],{"class":4006},[3996,16182,16183,16185,16187,16189,16191],{"class":3998,"line":4404},[3996,16184,5593],{"class":4002},[3996,16186,8960],{"class":4010},[3996,16188,7937],{"class":4006},[3996,16190,3862],{"class":4022},[3996,16192,5611],{"class":4006},[3996,16194,16195,16197,16199,16202,16204,16207,16209,16212],{"class":3998,"line":4410},[3996,16196,5593],{"class":4002},[3996,16198,5504],{"class":4006},[3996,16200,16201],{"class":4010},"trips",[3996,16203,3867],{"class":4006},[3996,16205,16206],{"class":4010},"resetToMock",[3996,16208,5606],{"class":4006},[3996,16210,16211],{"class":4022},"useTrips",[3996,16213,5611],{"class":4006},[3996,16215,16216,16218,16220,16222,16224,16227,16229,16232,16234,16237,16239,16241,16243,16245],{"class":3998,"line":4415},[3996,16217,5593],{"class":4002},[3996,16219,5504],{"class":4006},[3996,16221,5598],{"class":4010},[3996,16223,3867],{"class":4006},[3996,16225,16226],{"class":4010},"spacing",[3996,16228,3867],{"class":4006},[3996,16230,16231],{"class":4010},"preference",[3996,16233,3867],{"class":4006},[3996,16235,16236],{"class":4010},"setPreference",[3996,16238,3867],{"class":4006},[3996,16240,5603],{"class":4010},[3996,16242,5606],{"class":4006},[3996,16244,5564],{"class":4022},[3996,16246,5611],{"class":4006},[3996,16248,16249,16251,16253,16255,16257,16259,16261,16264,16267,16270],{"class":3998,"line":4420},[3996,16250,5593],{"class":4002},[3996,16252,4007],{"class":4006},[3996,16254,6747],{"class":4010},[3996,16256,4019],{"class":4006},[3996,16258,4023],{"class":4022},[3996,16260,4026],{"class":4006},[3996,16262,16263],{"class":4085},"Place",[3996,16265,16266],{"class":4006},"[]>(",[3996,16268,16269],{"class":4064},"mockPlaces",[3996,16271,4044],{"class":4006},[3996,16273,16274,16276,16278,16281,16283,16286,16288,16290,16292,16294],{"class":3998,"line":4426},[3996,16275,5593],{"class":4002},[3996,16277,4007],{"class":4006},[3996,16279,16280],{"class":4010},"refreshing",[3996,16282,3867],{"class":4006},[3996,16284,16285],{"class":4010},"setRefreshing",[3996,16287,4019],{"class":4006},[3996,16289,4023],{"class":4022},[3996,16291,4109],{"class":4006},[3996,16293,6495],{"class":4002},[3996,16295,4044],{"class":4006},[3996,16297,16298],{"class":3998,"line":4432},[3996,16299,4051],{"emptyLinePlaceholder":4050},[3996,16301,16302,16304,16307,16309,16311,16313,16316,16318,16321,16323,16325],{"class":3998,"line":4438},[3996,16303,5593],{"class":4002},[3996,16305,16306],{"class":4010}," handleOpenTrip",[3996,16308,7937],{"class":4006},[3996,16310,15854],{"class":4022},[3996,16312,10564],{"class":4006},[3996,16314,16315],{"class":4064},"trip",[3996,16317,8990],{"class":4006},[3996,16319,16320],{"class":4085},"Trip",[3996,16322,8996],{"class":4006},[3996,16324,4103],{"class":4002},[3996,16326,7958],{"class":4006},[3996,16328,16329,16332,16334,16337,16339,16342,16344,16346,16348,16350,16352,16354,16356,16358],{"class":3998,"line":4443},[3996,16330,16331],{"class":4064},"    console",[3996,16333,3821],{"class":4006},[3996,16335,16336],{"class":4022},"log",[3996,16338,4109],{"class":4006},[3996,16340,16341],{"class":4029},"'TODO: відкрити поїздку'",[3996,16343,3867],{"class":4006},[3996,16345,16315],{"class":4064},[3996,16347,3821],{"class":4006},[3996,16349,10533],{"class":4064},[3996,16351,3867],{"class":4006},[3996,16353,16315],{"class":4064},[3996,16355,3821],{"class":4006},[3996,16357,7585],{"class":4064},[3996,16359,4044],{"class":4006},[3996,16361,16362],{"class":3998,"line":4448},[3996,16363,16364],{"class":4006},"  }, []);\n",[3996,16366,16367],{"class":3998,"line":4454},[3996,16368,4051],{"emptyLinePlaceholder":4050},[3996,16370,16371,16373,16376,16378,16380,16382,16385,16387,16389,16391,16393],{"class":3998,"line":4460},[3996,16372,5593],{"class":4002},[3996,16374,16375],{"class":4010}," handleOpenPlace",[3996,16377,7937],{"class":4006},[3996,16379,15854],{"class":4022},[3996,16381,10564],{"class":4006},[3996,16383,16384],{"class":4064},"place",[3996,16386,8990],{"class":4006},[3996,16388,16263],{"class":4085},[3996,16390,8996],{"class":4006},[3996,16392,4103],{"class":4002},[3996,16394,7958],{"class":4006},[3996,16396,16397,16399,16401,16403,16405,16408,16410,16412,16414,16416,16418,16420,16422,16424],{"class":3998,"line":4466},[3996,16398,16331],{"class":4064},[3996,16400,3821],{"class":4006},[3996,16402,16336],{"class":4022},[3996,16404,4109],{"class":4006},[3996,16406,16407],{"class":4029},"'TODO: відкрити місце'",[3996,16409,3867],{"class":4006},[3996,16411,16384],{"class":4064},[3996,16413,3821],{"class":4006},[3996,16415,10533],{"class":4064},[3996,16417,3867],{"class":4006},[3996,16419,16384],{"class":4064},[3996,16421,3821],{"class":4006},[3996,16423,6457],{"class":4064},[3996,16425,4044],{"class":4006},[3996,16427,16428],{"class":3998,"line":4472},[3996,16429,16364],{"class":4006},[3996,16431,16432],{"class":3998,"line":4477},[3996,16433,4051],{"emptyLinePlaceholder":4050},[3996,16435,16436,16438,16441,16443,16445,16447,16449],{"class":3998,"line":5066},[3996,16437,5593],{"class":4002},[3996,16439,16440],{"class":4010}," onRefresh",[3996,16442,7937],{"class":4006},[3996,16444,15854],{"class":4022},[3996,16446,7953],{"class":4006},[3996,16448,4103],{"class":4002},[3996,16450,7958],{"class":4006},[3996,16452,16453,16456,16458,16460],{"class":3998,"line":5072},[3996,16454,16455],{"class":4022},"    setRefreshing",[3996,16457,4109],{"class":4006},[3996,16459,7184],{"class":4002},[3996,16461,4044],{"class":4006},[3996,16463,16464],{"class":3998,"line":5078},[3996,16465,16466],{"class":5783},"    \u002F\u002F Mock pull-to-refresh: повертаємо seed mock (локально створені зникають).\n",[3996,16468,16469,16472,16474,16476],{"class":3998,"line":5084},[3996,16470,16471],{"class":4022},"    setTimeout",[3996,16473,7953],{"class":4006},[3996,16475,4103],{"class":4002},[3996,16477,7958],{"class":4006},[3996,16479,16480,16483],{"class":3998,"line":5090},[3996,16481,16482],{"class":4022},"      resetToMock",[3996,16484,5611],{"class":4006},[3996,16486,16487,16490,16492,16494],{"class":3998,"line":5096},[3996,16488,16489],{"class":4022},"      setRefreshing",[3996,16491,4109],{"class":4006},[3996,16493,6495],{"class":4002},[3996,16495,4044],{"class":4006},[3996,16497,16498,16501,16504],{"class":3998,"line":10510},[3996,16499,16500],{"class":4006},"    }, ",[3996,16502,16503],{"class":11033},"900",[3996,16505,4044],{"class":4006},[3996,16507,16508,16510,16512],{"class":3998,"line":10516},[3996,16509,8093],{"class":4006},[3996,16511,16206],{"class":4064},[3996,16513,8098],{"class":4006},[3996,16515,16516],{"class":3998,"line":10521},[3996,16517,4051],{"emptyLinePlaceholder":4050},[3996,16519,16520,16522,16525,16527,16529],{"class":3998,"line":10552},[3996,16521,5593],{"class":4002},[3996,16523,16524],{"class":4010}," renderTrip",[3996,16526,7937],{"class":4006},[3996,16528,15854],{"class":4022},[3996,16530,16531],{"class":4006},"(\n",[3996,16533,16534,16537,16539,16542,16544,16546,16548,16550,16552],{"class":3998,"line":10587},[3996,16535,16536],{"class":4006},"    ({ ",[3996,16538,11610],{"class":4064},[3996,16540,16541],{"class":4006}," }: { ",[3996,16543,11610],{"class":4064},[3996,16545,8990],{"class":4006},[3996,16547,16320],{"class":4085},[3996,16549,6881],{"class":4006},[3996,16551,4103],{"class":4002},[3996,16553,5622],{"class":4006},[3996,16555,16556,16558,16561,16564,16566,16568,16570,16572,16574,16576,16578,16581,16583],{"class":3998,"line":12205},[3996,16557,5632],{"class":4081},[3996,16559,16560],{"class":4085},"TripCard",[3996,16562,16563],{"class":4089}," trip",[3996,16565,4093],{"class":4006},[3996,16567,4096],{"class":4002},[3996,16569,11610],{"class":4064},[3996,16571,4117],{"class":4002},[3996,16573,8004],{"class":4089},[3996,16575,4093],{"class":4006},[3996,16577,4096],{"class":4002},[3996,16579,16580],{"class":4064},"handleOpenTrip",[3996,16582,4117],{"class":4002},[3996,16584,5665],{"class":4081},[3996,16586,16587],{"class":3998,"line":12213},[3996,16588,6928],{"class":4006},[3996,16590,16591,16594,16596],{"class":3998,"line":12223},[3996,16592,16593],{"class":4006},"    [",[3996,16595,16580],{"class":4064},[3996,16597,16598],{"class":4006},"],\n",[3996,16600,16601],{"class":3998,"line":12233},[3996,16602,5934],{"class":4006},[3996,16604,16605],{"class":3998,"line":12243},[3996,16606,4051],{"emptyLinePlaceholder":4050},[3996,16608,16609,16611,16614,16616,16618,16620,16622,16624,16626,16628,16630,16632,16634,16636],{"class":3998,"line":12253},[3996,16610,5593],{"class":4002},[3996,16612,16613],{"class":4010}," keyExtractor",[3996,16615,7937],{"class":4006},[3996,16617,15854],{"class":4022},[3996,16619,10564],{"class":4006},[3996,16621,11610],{"class":4064},[3996,16623,8990],{"class":4006},[3996,16625,16320],{"class":4085},[3996,16627,8996],{"class":4006},[3996,16629,4103],{"class":4002},[3996,16631,11617],{"class":4064},[3996,16633,3821],{"class":4006},[3996,16635,10533],{"class":4064},[3996,16637,16638],{"class":4006},", []);\n",[3996,16640,16641],{"class":3998,"line":12258},[3996,16642,4051],{"emptyLinePlaceholder":4050},[3996,16644,16646,16648,16651],{"class":3998,"line":16645},62,[3996,16647,5593],{"class":4002},[3996,16649,16650],{"class":4022}," listHeader",[3996,16652,16653],{"class":4006}," = (\n",[3996,16655,16657,16659,16661,16663,16665,16667,16669,16671,16674,16676,16679,16681,16684,16686,16688,16690,16692,16694],{"class":3998,"line":16656},63,[3996,16658,5969],{"class":4081},[3996,16660,11340],{"class":4085},[3996,16662,5637],{"class":4089},[3996,16664,4093],{"class":4006},[3996,16666,4096],{"class":4002},[3996,16668,5812],{"class":4099},[3996,16670,12652],{"class":4064},[3996,16672,16673],{"class":4064}," spacing",[3996,16675,3821],{"class":4099},[3996,16677,16678],{"class":4064},"md",[3996,16680,3867],{"class":4099},[3996,16682,16683],{"class":4064},"marginBottom:",[3996,16685,16673],{"class":4064},[3996,16687,3821],{"class":4099},[3996,16689,16678],{"class":4064},[3996,16691,5821],{"class":4099},[3996,16693,4117],{"class":4002},[3996,16695,5924],{"class":4081},[3996,16697,16699,16702,16704,16706,16708,16711,16714,16716],{"class":3998,"line":16698},64,[3996,16700,16701],{"class":4002},"      {",[3996,16703,6747],{"class":4064},[3996,16705,3821],{"class":4099},[3996,16707,11553],{"class":4064},[3996,16709,16710],{"class":4006}," >",[3996,16712,16713],{"class":11033}," 0",[3996,16715,5652],{"class":4006},[3996,16717,5622],{"class":4099},[3996,16719,16721,16723,16725,16727,16729,16731,16733,16735,16737,16739,16742,16744,16746],{"class":3998,"line":16720},65,[3996,16722,5791],{"class":4081},[3996,16724,11340],{"class":4085},[3996,16726,5637],{"class":4089},[3996,16728,4093],{"class":4006},[3996,16730,4096],{"class":4002},[3996,16732,5812],{"class":4099},[3996,16734,12652],{"class":4064},[3996,16736,16673],{"class":4064},[3996,16738,3821],{"class":4099},[3996,16740,16741],{"class":4064},"sm",[3996,16743,5821],{"class":4099},[3996,16745,4117],{"class":4002},[3996,16747,5924],{"class":4081},[3996,16749,16751,16753,16755,16757,16759,16761,16763,16765,16767,16769,16771,16773,16776,16778,16780],{"class":3998,"line":16750},66,[3996,16752,8031],{"class":4081},[3996,16754,16052],{"class":4085},[3996,16756,5637],{"class":4089},[3996,16758,4093],{"class":4006},[3996,16760,4096],{"class":4002},[3996,16762,5812],{"class":4099},[3996,16764,5741],{"class":4064},[3996,16766,5744],{"class":4029},[3996,16768,5821],{"class":4099},[3996,16770,4117],{"class":4002},[3996,16772,8059],{"class":4081},[3996,16774,16775],{"class":4099},"Останні місця",[3996,16777,8065],{"class":4081},[3996,16779,16052],{"class":4085},[3996,16781,5924],{"class":4081},[3996,16783,16785,16787],{"class":3998,"line":16784},67,[3996,16786,8031],{"class":4081},[3996,16788,11583],{"class":4085},[3996,16790,16792],{"class":3998,"line":16791},68,[3996,16793,16794],{"class":4089},"            horizontal\n",[3996,16796,16798,16801,16803,16805,16807],{"class":3998,"line":16797},69,[3996,16799,16800],{"class":4089},"            data",[3996,16802,4093],{"class":4006},[3996,16804,4096],{"class":4002},[3996,16806,6747],{"class":4064},[3996,16808,4129],{"class":4002},[3996,16810,16812,16815,16817,16819,16821,16823,16825,16827,16829,16831,16833],{"class":3998,"line":16811},70,[3996,16813,16814],{"class":4089},"            keyExtractor",[3996,16816,4093],{"class":4006},[3996,16818,4096],{"class":4002},[3996,16820,4109],{"class":4099},[3996,16822,11610],{"class":4064},[3996,16824,8996],{"class":4099},[3996,16826,4103],{"class":4002},[3996,16828,11617],{"class":4064},[3996,16830,3821],{"class":4099},[3996,16832,10533],{"class":4064},[3996,16834,4129],{"class":4002},[3996,16836,16838,16841,16843,16845,16847,16849,16851,16853],{"class":3998,"line":16837},71,[3996,16839,16840],{"class":4089},"            renderItem",[3996,16842,4093],{"class":4006},[3996,16844,4096],{"class":4002},[3996,16846,7759],{"class":4099},[3996,16848,11610],{"class":4064},[3996,16850,6881],{"class":4099},[3996,16852,4103],{"class":4002},[3996,16854,5622],{"class":4099},[3996,16856,16858,16860,16863,16866,16868,16870,16872,16874,16876,16878,16880,16883,16885],{"class":3998,"line":16857},72,[3996,16859,11762],{"class":4081},[3996,16861,16862],{"class":4085},"PlaceChip",[3996,16864,16865],{"class":4089}," place",[3996,16867,4093],{"class":4006},[3996,16869,4096],{"class":4002},[3996,16871,11610],{"class":4064},[3996,16873,4117],{"class":4002},[3996,16875,8004],{"class":4089},[3996,16877,4093],{"class":4006},[3996,16879,4096],{"class":4002},[3996,16881,16882],{"class":4064},"handleOpenPlace",[3996,16884,4117],{"class":4002},[3996,16886,5665],{"class":4081},[3996,16888,16890,16893],{"class":3998,"line":16889},73,[3996,16891,16892],{"class":4099},"            )",[3996,16894,4129],{"class":4002},[3996,16896,16898,16901,16903],{"class":3998,"line":16897},74,[3996,16899,16900],{"class":4089},"            showsHorizontalScrollIndicator",[3996,16902,4093],{"class":4006},[3996,16904,16905],{"class":4002},"{false}\n",[3996,16907,16909,16912,16914,16916,16918,16920,16922,16924,16926,16928,16930,16932,16935,16937,16939,16941,16943,16945,16947],{"class":3998,"line":16908},75,[3996,16910,16911],{"class":4089},"            ItemSeparatorComponent",[3996,16913,4093],{"class":4006},[3996,16915,4096],{"class":4002},[3996,16917,4100],{"class":4099},[3996,16919,4103],{"class":4002},[3996,16921,4082],{"class":4081},[3996,16923,11340],{"class":4085},[3996,16925,5637],{"class":4089},[3996,16927,4093],{"class":4006},[3996,16929,4096],{"class":4002},[3996,16931,5812],{"class":4099},[3996,16933,16934],{"class":4064},"width:",[3996,16936,16673],{"class":4064},[3996,16938,3821],{"class":4099},[3996,16940,16741],{"class":4064},[3996,16942,5821],{"class":4099},[3996,16944,4117],{"class":4002},[3996,16946,4120],{"class":4081},[3996,16948,4129],{"class":4002},[3996,16950,16952,16955,16957,16959,16961,16964,16967,16969],{"class":3998,"line":16951},76,[3996,16953,16954],{"class":4089},"            contentContainerStyle",[3996,16956,4093],{"class":4006},[3996,16958,4096],{"class":4002},[3996,16960,5812],{"class":4099},[3996,16962,16963],{"class":4064},"paddingVertical:",[3996,16965,16966],{"class":11033}," 2",[3996,16968,5821],{"class":4099},[3996,16970,4129],{"class":4002},[3996,16972,16974],{"class":3998,"line":16973},77,[3996,16975,16976],{"class":4081},"          \u002F>\n",[3996,16978,16980,16982,16984],{"class":3998,"line":16979},78,[3996,16981,8074],{"class":4081},[3996,16983,11340],{"class":4085},[3996,16985,5924],{"class":4081},[3996,16987,16989,16992,16994],{"class":3998,"line":16988},79,[3996,16990,16991],{"class":4099},"      ) ",[3996,16993,6869],{"class":4006},[3996,16995,16996],{"class":4002}," null}\n",[3996,16998,17000],{"class":3998,"line":16999},80,[3996,17001,4051],{"emptyLinePlaceholder":4050},[3996,17003,17005,17007,17009,17011,17013,17015,17017,17019,17021,17023,17025,17027,17030,17032,17034],{"class":3998,"line":17004},81,[3996,17006,5632],{"class":4081},[3996,17008,16052],{"class":4085},[3996,17010,5637],{"class":4089},[3996,17012,4093],{"class":4006},[3996,17014,4096],{"class":4002},[3996,17016,5812],{"class":4099},[3996,17018,5741],{"class":4064},[3996,17020,5744],{"class":4029},[3996,17022,5821],{"class":4099},[3996,17024,4117],{"class":4002},[3996,17026,8059],{"class":4081},[3996,17028,17029],{"class":4006},"Ваші поїздки",[3996,17031,8065],{"class":4081},[3996,17033,16052],{"class":4085},[3996,17035,5924],{"class":4081},[3996,17037,17039,17041,17043],{"class":3998,"line":17038},82,[3996,17040,6003],{"class":4081},[3996,17042,11340],{"class":4085},[3996,17044,5924],{"class":4081},[3996,17046,17048],{"class":3998,"line":17047},83,[3996,17049,5934],{"class":4006},[3996,17051,17053],{"class":3998,"line":17052},84,[3996,17054,4051],{"emptyLinePlaceholder":4050},[3996,17056,17058,17060,17063],{"class":3998,"line":17057},85,[3996,17059,5593],{"class":4002},[3996,17061,17062],{"class":4022}," listEmpty",[3996,17064,16653],{"class":4006},[3996,17066,17068,17070],{"class":3998,"line":17067},86,[3996,17069,5969],{"class":4081},[3996,17071,17072],{"class":4085},"View\n",[3996,17074,17076,17079,17081,17083],{"class":3998,"line":17075},87,[3996,17077,17078],{"class":4089},"      style",[3996,17080,4093],{"class":4006},[3996,17082,4096],{"class":4002},[3996,17084,17085],{"class":4099},"[\n",[3996,17087,17089,17092,17094,17097],{"class":3998,"line":17088},88,[3996,17090,17091],{"class":4064},"        styles",[3996,17093,3821],{"class":4099},[3996,17095,17096],{"class":4064},"empty",[3996,17098,5720],{"class":4099},[3996,17100,17102],{"class":3998,"line":17101},89,[3996,17103,17104],{"class":4099},"        {\n",[3996,17106,17108,17111,17113,17115,17117],{"class":3998,"line":17107},90,[3996,17109,17110],{"class":4064},"          paddingHorizontal:",[3996,17112,16673],{"class":4064},[3996,17114,3821],{"class":4099},[3996,17116,16741],{"class":4064},[3996,17118,5720],{"class":4099},[3996,17120,17122,17125,17127,17129,17132],{"class":3998,"line":17121},91,[3996,17123,17124],{"class":4064},"          paddingVertical:",[3996,17126,16673],{"class":4064},[3996,17128,3821],{"class":4099},[3996,17130,17131],{"class":4064},"xl",[3996,17133,5720],{"class":4099},[3996,17135,17137,17140,17142,17144,17146],{"class":3998,"line":17136},92,[3996,17138,17139],{"class":4064},"          gap:",[3996,17141,16673],{"class":4064},[3996,17143,3821],{"class":4099},[3996,17145,16741],{"class":4064},[3996,17147,5720],{"class":4099},[3996,17149,17151],{"class":3998,"line":17150},93,[3996,17152,11020],{"class":4099},[3996,17154,17156,17159],{"class":3998,"line":17155},94,[3996,17157,17158],{"class":4099},"      ]",[3996,17160,4129],{"class":4002},[3996,17162,17164],{"class":3998,"line":17163},95,[3996,17165,11054],{"class":4081},[3996,17167,17169,17171,17173,17176,17178,17181,17183,17185,17187,17189,17191,17194,17196],{"class":3998,"line":17168},96,[3996,17170,5632],{"class":4081},[3996,17172,16052],{"class":4085},[3996,17174,17175],{"class":4089}," variant",[3996,17177,4093],{"class":4006},[3996,17179,17180],{"class":4029},"\"subtitle\"",[3996,17182,5637],{"class":4089},[3996,17184,4093],{"class":4006},[3996,17186,4096],{"class":4002},[3996,17188,8789],{"class":4064},[3996,17190,3821],{"class":4099},[3996,17192,17193],{"class":4064},"emptyTitle",[3996,17195,4117],{"class":4002},[3996,17197,5924],{"class":4081},[3996,17199,17201],{"class":3998,"line":17200},97,[3996,17202,17203],{"class":4006},"        Поки немає поїздок\n",[3996,17205,17207,17209,17211],{"class":3998,"line":17206},98,[3996,17208,5919],{"class":4081},[3996,17210,16052],{"class":4085},[3996,17212,5924],{"class":4081},[3996,17214,17216,17218],{"class":3998,"line":17215},99,[3996,17217,5632],{"class":4081},[3996,17219,17220],{"class":4085},"AppText\n",[3996,17222,17224,17227,17229],{"class":3998,"line":17223},100,[3996,17225,17226],{"class":4089},"        variant",[3996,17228,4093],{"class":4006},[3996,17230,17231],{"class":4029},"\"caption\"\n",[3996,17233,17235,17238,17240,17242,17244,17246,17248],{"class":3998,"line":17234},101,[3996,17236,17237],{"class":4089},"        color",[3996,17239,4093],{"class":4006},[3996,17241,4096],{"class":4002},[3996,17243,5598],{"class":4064},[3996,17245,3821],{"class":4099},[3996,17247,15445],{"class":4064},[3996,17249,4129],{"class":4002},[3996,17251,17253,17256,17258,17260,17262,17264,17267],{"class":3998,"line":17252},102,[3996,17254,17255],{"class":4089},"        style",[3996,17257,4093],{"class":4006},[3996,17259,4096],{"class":4002},[3996,17261,8789],{"class":4064},[3996,17263,3821],{"class":4099},[3996,17265,17266],{"class":4064},"emptyDesc",[3996,17268,4129],{"class":4002},[3996,17270,17272],{"class":3998,"line":17271},103,[3996,17273,5775],{"class":4081},[3996,17275,17277],{"class":3998,"line":17276},104,[3996,17278,17279],{"class":4006},"        Потягніть список униз, щоб «оновити», або натисніть «Нова поїздка».\n",[3996,17281,17283,17285,17287],{"class":3998,"line":17282},105,[3996,17284,5919],{"class":4081},[3996,17286,16052],{"class":4085},[3996,17288,5924],{"class":4081},[3996,17290,17292,17294,17296],{"class":3998,"line":17291},106,[3996,17293,6003],{"class":4081},[3996,17295,11340],{"class":4085},[3996,17297,5924],{"class":4081},[3996,17299,17301],{"class":3998,"line":17300},107,[3996,17302,5934],{"class":4006},[3996,17304,17306],{"class":3998,"line":17305},108,[3996,17307,4051],{"emptyLinePlaceholder":4050},[3996,17309,17311,17313],{"class":3998,"line":17310},109,[3996,17312,4078],{"class":4057},[3996,17314,5622],{"class":4006},[3996,17316,17318,17320,17322,17324,17326,17328,17330,17332,17335,17337],{"class":3998,"line":17317},110,[3996,17319,5969],{"class":4081},[3996,17321,9671],{"class":4085},[3996,17323,5637],{"class":4089},[3996,17325,4093],{"class":4006},[3996,17327,4096],{"class":4002},[3996,17329,8789],{"class":4064},[3996,17331,3821],{"class":4099},[3996,17333,17334],{"class":4064},"screen",[3996,17336,4117],{"class":4002},[3996,17338,5924],{"class":4081},[3996,17340,17342,17344],{"class":3998,"line":17341},111,[3996,17343,5632],{"class":4081},[3996,17345,17072],{"class":4085},[3996,17347,17349,17351,17353,17355],{"class":3998,"line":17348},112,[3996,17350,17255],{"class":4089},[3996,17352,4093],{"class":4006},[3996,17354,4096],{"class":4002},[3996,17356,17085],{"class":4099},[3996,17358,17360,17363,17365,17367],{"class":3998,"line":17359},113,[3996,17361,17362],{"class":4064},"          styles",[3996,17364,3821],{"class":4099},[3996,17366,11486],{"class":4064},[3996,17368,5720],{"class":4099},[3996,17370,17372],{"class":3998,"line":17371},114,[3996,17373,17374],{"class":4099},"          {\n",[3996,17376,17378,17381,17383,17385,17387],{"class":3998,"line":17377},115,[3996,17379,17380],{"class":4064},"            paddingHorizontal:",[3996,17382,16673],{"class":4064},[3996,17384,3821],{"class":4099},[3996,17386,16678],{"class":4064},[3996,17388,5720],{"class":4099},[3996,17390,17392,17395,17397,17399,17401],{"class":3998,"line":17391},116,[3996,17393,17394],{"class":4064},"            paddingTop:",[3996,17396,16673],{"class":4064},[3996,17398,3821],{"class":4099},[3996,17400,16741],{"class":4064},[3996,17402,5720],{"class":4099},[3996,17404,17406,17409,17411,17413,17415],{"class":3998,"line":17405},117,[3996,17407,17408],{"class":4064},"            paddingBottom:",[3996,17410,16673],{"class":4064},[3996,17412,3821],{"class":4099},[3996,17414,16678],{"class":4064},[3996,17416,5720],{"class":4099},[3996,17418,17420,17423,17425,17427,17430],{"class":3998,"line":17419},118,[3996,17421,17422],{"class":4064},"            gap:",[3996,17424,16673],{"class":4064},[3996,17426,3821],{"class":4099},[3996,17428,17429],{"class":4064},"xs",[3996,17431,5720],{"class":4099},[3996,17433,17435,17438,17440,17442,17444],{"class":3998,"line":17434},119,[3996,17436,17437],{"class":4064},"            borderBottomColor:",[3996,17439,5697],{"class":4064},[3996,17441,3821],{"class":4099},[3996,17443,15476],{"class":4064},[3996,17445,5720],{"class":4099},[3996,17447,17449],{"class":3998,"line":17448},120,[3996,17450,17451],{"class":4099},"          },\n",[3996,17453,17455,17458],{"class":3998,"line":17454},121,[3996,17456,17457],{"class":4099},"        ]",[3996,17459,4129],{"class":4002},[3996,17461,17463],{"class":3998,"line":17462},122,[3996,17464,5775],{"class":4081},[3996,17466,17468,17470,17472,17474,17476,17479,17481,17484,17486,17488],{"class":3998,"line":17467},123,[3996,17469,5791],{"class":4081},[3996,17471,16052],{"class":4085},[3996,17473,17175],{"class":4089},[3996,17475,4093],{"class":4006},[3996,17477,17478],{"class":4029},"\"title\"",[3996,17480,8059],{"class":4081},[3996,17482,17483],{"class":4006},"Мандрівник",[3996,17485,8065],{"class":4081},[3996,17487,16052],{"class":4085},[3996,17489,5924],{"class":4081},[3996,17491,17493,17495,17497,17499,17501,17504,17506,17508,17510,17512,17514,17516,17518,17520,17522,17524],{"class":3998,"line":17492},124,[3996,17494,5791],{"class":4081},[3996,17496,16052],{"class":4085},[3996,17498,17175],{"class":4089},[3996,17500,4093],{"class":4006},[3996,17502,17503],{"class":4029},"\"caption\"",[3996,17505,5637],{"class":4089},[3996,17507,4093],{"class":4006},[3996,17509,4096],{"class":4002},[3996,17511,5812],{"class":4099},[3996,17513,12052],{"class":4064},[3996,17515,16673],{"class":4064},[3996,17517,3821],{"class":4099},[3996,17519,17429],{"class":4064},[3996,17521,5821],{"class":4099},[3996,17523,4117],{"class":4002},[3996,17525,5924],{"class":4081},[3996,17527,17529,17532,17534,17536,17538,17540,17542,17545,17547,17550],{"class":3998,"line":17528},125,[3996,17530,17531],{"class":4006},"          Щоденник подорожей · тема: ",[3996,17533,4096],{"class":4002},[3996,17535,5603],{"class":4064},[3996,17537,5646],{"class":4006},[3996,17539,5649],{"class":4029},[3996,17541,5652],{"class":4006},[3996,17543,17544],{"class":4029}," 'темна'",[3996,17546,5658],{"class":4006},[3996,17548,17549],{"class":4029}," 'світла'",[3996,17551,4129],{"class":4002},[3996,17553,17555,17557,17559],{"class":3998,"line":17554},126,[3996,17556,8074],{"class":4081},[3996,17558,16052],{"class":4085},[3996,17560,5924],{"class":4081},[3996,17562,17564,17566],{"class":3998,"line":17563},127,[3996,17565,5791],{"class":4081},[3996,17567,17220],{"class":4085},[3996,17569,17571,17574,17576],{"class":3998,"line":17570},128,[3996,17572,17573],{"class":4089},"          variant",[3996,17575,4093],{"class":4006},[3996,17577,17231],{"class":4029},[3996,17579,17581,17584,17586,17588],{"class":3998,"line":17580},129,[3996,17582,17583],{"class":4089},"          style",[3996,17585,4093],{"class":4006},[3996,17587,4096],{"class":4002},[3996,17589,5684],{"class":4099},[3996,17591,17593,17596,17598,17600,17602],{"class":3998,"line":17592},130,[3996,17594,17595],{"class":4064},"            marginTop:",[3996,17597,16673],{"class":4064},[3996,17599,3821],{"class":4099},[3996,17601,17429],{"class":4064},[3996,17603,5720],{"class":4099},[3996,17605,17607,17610,17612,17614,17616],{"class":3998,"line":17606},131,[3996,17608,17609],{"class":4064},"            color:",[3996,17611,5697],{"class":4064},[3996,17613,3821],{"class":4099},[3996,17615,5717],{"class":4064},[3996,17617,5720],{"class":4099},[3996,17619,17621,17624,17626],{"class":3998,"line":17620},132,[3996,17622,17623],{"class":4064},"            fontWeight:",[3996,17625,5744],{"class":4029},[3996,17627,5720],{"class":4099},[3996,17629,17631,17633],{"class":3998,"line":17630},133,[3996,17632,5907],{"class":4099},[3996,17634,4129],{"class":4002},[3996,17636,17638],{"class":3998,"line":17637},134,[3996,17639,17640],{"class":4081},"        >\n",[3996,17642,17644,17647,17649,17651,17653,17655],{"class":3998,"line":17643},135,[3996,17645,17646],{"class":4002},"          {",[3996,17648,16201],{"class":4064},[3996,17650,3821],{"class":4099},[3996,17652,11553],{"class":4064},[3996,17654,16710],{"class":4006},[3996,17656,17657],{"class":11033}," 0\n",[3996,17659,17661,17664,17667,17669,17671,17673,17675,17677,17680,17682,17684,17686,17688,17690],{"class":3998,"line":17660},136,[3996,17662,17663],{"class":4006},"            ?",[3996,17665,17666],{"class":4029}," `",[3996,17668,11717],{"class":4002},[3996,17670,16201],{"class":4064},[3996,17672,3821],{"class":4099},[3996,17674,11553],{"class":4064},[3996,17676,4117],{"class":4002},[3996,17678,17679],{"class":4029}," поїздок · ",[3996,17681,11717],{"class":4002},[3996,17683,6747],{"class":4064},[3996,17685,3821],{"class":4099},[3996,17687,11553],{"class":4064},[3996,17689,4117],{"class":4002},[3996,17691,17692],{"class":4029}," місць`\n",[3996,17694,17696,17699,17702],{"class":3998,"line":17695},137,[3996,17697,17698],{"class":4006},"            :",[3996,17700,17701],{"class":4029}," 'Список порожній'",[3996,17703,4129],{"class":4002},[3996,17705,17707,17709,17711],{"class":3998,"line":17706},138,[3996,17708,8074],{"class":4081},[3996,17710,16052],{"class":4085},[3996,17712,5924],{"class":4081},[3996,17714,17716],{"class":3998,"line":17715},139,[3996,17717,4051],{"emptyLinePlaceholder":4050},[3996,17719,17721,17723,17725,17727,17729,17731,17733,17735,17737,17740,17743,17745,17747,17749,17751,17753,17755,17757,17759,17761,17764,17766],{"class":3998,"line":17720},140,[3996,17722,5791],{"class":4081},[3996,17724,11340],{"class":4085},[3996,17726,5637],{"class":4089},[3996,17728,4093],{"class":4006},[3996,17730,4096],{"class":4002},[3996,17732,11457],{"class":4099},[3996,17734,8789],{"class":4064},[3996,17736,3821],{"class":4099},[3996,17738,17739],{"class":4064},"themeRow",[3996,17741,17742],{"class":4099},", { ",[3996,17744,12652],{"class":4064},[3996,17746,16673],{"class":4064},[3996,17748,3821],{"class":4099},[3996,17750,16741],{"class":4064},[3996,17752,3867],{"class":4099},[3996,17754,12052],{"class":4064},[3996,17756,16673],{"class":4064},[3996,17758,3821],{"class":4099},[3996,17760,16741],{"class":4064},[3996,17762,17763],{"class":4099}," }]",[3996,17765,4117],{"class":4002},[3996,17767,5924],{"class":4081},[3996,17769,17771,17773,17776,17778,17781,17783,17785,17787,17789],{"class":3998,"line":17770},141,[3996,17772,17646],{"class":4002},[3996,17774,17775],{"class":4010},"PREFS",[3996,17777,3821],{"class":4099},[3996,17779,17780],{"class":4022},"map",[3996,17782,10564],{"class":4099},[3996,17784,3743],{"class":4064},[3996,17786,8996],{"class":4099},[3996,17788,4103],{"class":4002},[3996,17790,7958],{"class":4099},[3996,17792,17794,17797,17800,17803,17806,17808,17811,17813,17815],{"class":3998,"line":17793},142,[3996,17795,17796],{"class":4002},"            const",[3996,17798,17799],{"class":4010}," active",[3996,17801,17802],{"class":4006}," =",[3996,17804,17805],{"class":4064}," preference",[3996,17807,5646],{"class":4006},[3996,17809,17810],{"class":4064}," p",[3996,17812,3821],{"class":4099},[3996,17814,10533],{"class":4064},[3996,17816,4123],{"class":4099},[3996,17818,17820,17823],{"class":3998,"line":17819},143,[3996,17821,17822],{"class":4057},"            return",[3996,17824,5622],{"class":4099},[3996,17826,17828,17830],{"class":3998,"line":17827},144,[3996,17829,11762],{"class":4081},[3996,17831,17832],{"class":4085},"Pressable\n",[3996,17834,17836,17839,17841,17843,17845,17847,17849],{"class":3998,"line":17835},145,[3996,17837,17838],{"class":4089},"                key",[3996,17840,4093],{"class":4006},[3996,17842,4096],{"class":4002},[3996,17844,3743],{"class":4064},[3996,17846,3821],{"class":4099},[3996,17848,10533],{"class":4064},[3996,17850,4129],{"class":4002},[3996,17852,17854,17857,17859,17861,17863,17865,17868,17870,17872,17874,17876,17878],{"class":3998,"line":17853},146,[3996,17855,17856],{"class":4089},"                onPress",[3996,17858,4093],{"class":4006},[3996,17860,4096],{"class":4002},[3996,17862,4100],{"class":4099},[3996,17864,4103],{"class":4002},[3996,17866,17867],{"class":4022}," setPreference",[3996,17869,4109],{"class":4099},[3996,17871,3743],{"class":4064},[3996,17873,3821],{"class":4099},[3996,17875,10533],{"class":4064},[3996,17877,4114],{"class":4099},[3996,17879,4129],{"class":4002},[3996,17881,17883,17886,17888,17890],{"class":3998,"line":17882},147,[3996,17884,17885],{"class":4089},"                style",[3996,17887,4093],{"class":4006},[3996,17889,4096],{"class":4002},[3996,17891,17085],{"class":4099},[3996,17893,17895,17898,17900,17903],{"class":3998,"line":17894},148,[3996,17896,17897],{"class":4064},"                  styles",[3996,17899,3821],{"class":4099},[3996,17901,17902],{"class":4064},"themeChip",[3996,17904,5720],{"class":4099},[3996,17906,17908],{"class":3998,"line":17907},149,[3996,17909,17910],{"class":4099},"                  {\n",[3996,17912,17914,17917,17919,17921,17923,17925,17927,17929,17931,17933,17936],{"class":3998,"line":17913},150,[3996,17915,17916],{"class":4064},"                    backgroundColor:",[3996,17918,17799],{"class":4064},[3996,17920,5652],{"class":4006},[3996,17922,5697],{"class":4064},[3996,17924,3821],{"class":4099},[3996,17926,5717],{"class":4064},[3996,17928,5658],{"class":4006},[3996,17930,5697],{"class":4064},[3996,17932,3821],{"class":4099},[3996,17934,17935],{"class":4064},"surface",[3996,17937,5720],{"class":4099},[3996,17939,17941,17944,17946,17948,17950],{"class":3998,"line":17940},151,[3996,17942,17943],{"class":4064},"                    borderColor:",[3996,17945,5697],{"class":4064},[3996,17947,3821],{"class":4099},[3996,17949,15476],{"class":4064},[3996,17951,5720],{"class":4099},[3996,17953,17955],{"class":3998,"line":17954},152,[3996,17956,17957],{"class":4099},"                  },\n",[3996,17959,17961,17964],{"class":3998,"line":17960},153,[3996,17962,17963],{"class":4099},"                ]",[3996,17965,4129],{"class":4002},[3996,17967,17969,17972,17974],{"class":3998,"line":17968},154,[3996,17970,17971],{"class":4089},"                accessibilityRole",[3996,17973,4093],{"class":4006},[3996,17975,17976],{"class":4029},"\"button\"\n",[3996,17978,17980,17983,17985,17987,17989,17992,17994,17996],{"class":3998,"line":17979},155,[3996,17981,17982],{"class":4089},"                accessibilityState",[3996,17984,4093],{"class":4006},[3996,17986,4096],{"class":4002},[3996,17988,5812],{"class":4099},[3996,17990,17991],{"class":4064},"selected:",[3996,17993,17799],{"class":4064},[3996,17995,5821],{"class":4099},[3996,17997,4129],{"class":4002},[3996,17999,18001,18004,18006,18008,18011,18013,18015,18017,18019,18021,18023],{"class":3998,"line":18000},156,[3996,18002,18003],{"class":4089},"                accessibilityLabel",[3996,18005,4093],{"class":4006},[3996,18007,4096],{"class":4002},[3996,18009,18010],{"class":4029},"`Тема: ",[3996,18012,11717],{"class":4002},[3996,18014,3743],{"class":4064},[3996,18016,3821],{"class":4099},[3996,18018,16097],{"class":4064},[3996,18020,4117],{"class":4002},[3996,18022,11728],{"class":4029},[3996,18024,4129],{"class":4002},[3996,18026,18028],{"class":3998,"line":18027},157,[3996,18029,18030],{"class":4081},"              >\n",[3996,18032,18034,18037],{"class":3998,"line":18033},158,[3996,18035,18036],{"class":4081},"                \u003C",[3996,18038,17220],{"class":4085},[3996,18040,18042,18045,18047],{"class":3998,"line":18041},159,[3996,18043,18044],{"class":4089},"                  variant",[3996,18046,4093],{"class":4006},[3996,18048,17231],{"class":4029},[3996,18050,18052,18055,18057,18059,18062,18064,18066,18068,18071,18073,18075,18077,18079],{"class":3998,"line":18051},160,[3996,18053,18054],{"class":4089},"                  color",[3996,18056,4093],{"class":4006},[3996,18058,4096],{"class":4002},[3996,18060,18061],{"class":4064},"active",[3996,18063,5652],{"class":4006},[3996,18065,5697],{"class":4064},[3996,18067,3821],{"class":4099},[3996,18069,18070],{"class":4064},"onPrimary",[3996,18072,5658],{"class":4006},[3996,18074,5697],{"class":4064},[3996,18076,3821],{"class":4099},[3996,18078,4227],{"class":4064},[3996,18080,4129],{"class":4002},[3996,18082,18084,18087,18089,18091,18093,18095,18098],{"class":3998,"line":18083},161,[3996,18085,18086],{"class":4089},"                  style",[3996,18088,4093],{"class":4006},[3996,18090,4096],{"class":4002},[3996,18092,8789],{"class":4064},[3996,18094,3821],{"class":4099},[3996,18096,18097],{"class":4064},"themeChipText",[3996,18099,4129],{"class":4002},[3996,18101,18103],{"class":3998,"line":18102},162,[3996,18104,18105],{"class":4081},"                >\n",[3996,18107,18109,18112,18114,18116,18118],{"class":3998,"line":18108},163,[3996,18110,18111],{"class":4002},"                  {",[3996,18113,3743],{"class":4064},[3996,18115,3821],{"class":4099},[3996,18117,16097],{"class":4064},[3996,18119,4129],{"class":4002},[3996,18121,18123,18126,18128],{"class":3998,"line":18122},164,[3996,18124,18125],{"class":4081},"                \u003C\u002F",[3996,18127,16052],{"class":4085},[3996,18129,5924],{"class":4081},[3996,18131,18133,18136,18138],{"class":3998,"line":18132},165,[3996,18134,18135],{"class":4081},"              \u003C\u002F",[3996,18137,7896],{"class":4085},[3996,18139,5924],{"class":4081},[3996,18141,18143],{"class":3998,"line":18142},166,[3996,18144,18145],{"class":4099},"            );\n",[3996,18147,18149,18152],{"class":3998,"line":18148},167,[3996,18150,18151],{"class":4099},"          })",[3996,18153,4129],{"class":4002},[3996,18155,18157,18159,18161],{"class":3998,"line":18156},168,[3996,18158,8074],{"class":4081},[3996,18160,11340],{"class":4085},[3996,18162,5924],{"class":4081},[3996,18164,18166,18168,18170],{"class":3998,"line":18165},169,[3996,18167,5919],{"class":4081},[3996,18169,11340],{"class":4085},[3996,18171,5924],{"class":4081},[3996,18173,18175],{"class":3998,"line":18174},170,[3996,18176,4051],{"emptyLinePlaceholder":4050},[3996,18178,18180,18182,18184,18186,18188,18190,18192,18194,18197,18199],{"class":3998,"line":18179},171,[3996,18181,5632],{"class":4081},[3996,18183,11340],{"class":4085},[3996,18185,5637],{"class":4089},[3996,18187,4093],{"class":4006},[3996,18189,4096],{"class":4002},[3996,18191,8789],{"class":4064},[3996,18193,3821],{"class":4099},[3996,18195,18196],{"class":4064},"listWrap",[3996,18198,4117],{"class":4002},[3996,18200,5924],{"class":4081},[3996,18202,18204,18206],{"class":3998,"line":18203},172,[3996,18205,5791],{"class":4081},[3996,18207,18208],{"class":4085},"FlashList\n",[3996,18210,18212,18215,18217,18219,18221],{"class":3998,"line":18211},173,[3996,18213,18214],{"class":4089},"          data",[3996,18216,4093],{"class":4006},[3996,18218,4096],{"class":4002},[3996,18220,16201],{"class":4064},[3996,18222,4129],{"class":4002},[3996,18224,18226,18229,18231,18233,18236],{"class":3998,"line":18225},174,[3996,18227,18228],{"class":4089},"          renderItem",[3996,18230,4093],{"class":4006},[3996,18232,4096],{"class":4002},[3996,18234,18235],{"class":4064},"renderTrip",[3996,18237,4129],{"class":4002},[3996,18239,18241,18244,18246,18248,18251],{"class":3998,"line":18240},175,[3996,18242,18243],{"class":4089},"          keyExtractor",[3996,18245,4093],{"class":4006},[3996,18247,4096],{"class":4002},[3996,18249,18250],{"class":4064},"keyExtractor",[3996,18252,4129],{"class":4002},[3996,18254,18256,18259,18261,18263,18266],{"class":3998,"line":18255},176,[3996,18257,18258],{"class":4089},"          ListHeaderComponent",[3996,18260,4093],{"class":4006},[3996,18262,4096],{"class":4002},[3996,18264,18265],{"class":4064},"listHeader",[3996,18267,4129],{"class":4002},[3996,18269,18271,18274,18276,18278,18281],{"class":3998,"line":18270},177,[3996,18272,18273],{"class":4089},"          ListEmptyComponent",[3996,18275,4093],{"class":4006},[3996,18277,4096],{"class":4002},[3996,18279,18280],{"class":4064},"listEmpty",[3996,18282,4129],{"class":4002},[3996,18284,18286,18289,18291,18293],{"class":3998,"line":18285},178,[3996,18287,18288],{"class":4089},"          contentContainerStyle",[3996,18290,4093],{"class":4006},[3996,18292,4096],{"class":4002},[3996,18294,5684],{"class":4099},[3996,18296,18298,18300,18302,18304,18306],{"class":3998,"line":18297},179,[3996,18299,17380],{"class":4064},[3996,18301,16673],{"class":4064},[3996,18303,3821],{"class":4099},[3996,18305,16678],{"class":4064},[3996,18307,5720],{"class":4099},[3996,18309,18311,18313,18315,18317,18319],{"class":3998,"line":18310},180,[3996,18312,17394],{"class":4064},[3996,18314,16673],{"class":4064},[3996,18316,3821],{"class":4099},[3996,18318,16678],{"class":4064},[3996,18320,5720],{"class":4099},[3996,18322,18324,18326,18328,18330,18332],{"class":3998,"line":18323},181,[3996,18325,17408],{"class":4064},[3996,18327,16673],{"class":4064},[3996,18329,3821],{"class":4099},[3996,18331,16678],{"class":4064},[3996,18333,5720],{"class":4099},[3996,18335,18337,18339],{"class":3998,"line":18336},182,[3996,18338,5907],{"class":4099},[3996,18340,4129],{"class":4002},[3996,18342,18344,18347,18349,18351,18353,18355,18357,18359,18361,18363,18365,18367,18369,18371,18373,18375,18377,18379,18381],{"class":3998,"line":18343},183,[3996,18345,18346],{"class":4089},"          ItemSeparatorComponent",[3996,18348,4093],{"class":4006},[3996,18350,4096],{"class":4002},[3996,18352,4100],{"class":4099},[3996,18354,4103],{"class":4002},[3996,18356,4082],{"class":4081},[3996,18358,11340],{"class":4085},[3996,18360,5637],{"class":4089},[3996,18362,4093],{"class":4006},[3996,18364,4096],{"class":4002},[3996,18366,5812],{"class":4099},[3996,18368,11669],{"class":4064},[3996,18370,16673],{"class":4064},[3996,18372,3821],{"class":4099},[3996,18374,16678],{"class":4064},[3996,18376,5821],{"class":4099},[3996,18378,4117],{"class":4002},[3996,18380,4120],{"class":4081},[3996,18382,4129],{"class":4002},[3996,18384,18386,18389,18391],{"class":3998,"line":18385},184,[3996,18387,18388],{"class":4089},"          refreshControl",[3996,18390,4093],{"class":4006},[3996,18392,5684],{"class":4002},[3996,18394,18396,18398],{"class":3998,"line":18395},185,[3996,18397,11117],{"class":4081},[3996,18399,18400],{"class":4085},"RefreshControl\n",[3996,18402,18404,18407,18409,18411,18413],{"class":3998,"line":18403},186,[3996,18405,18406],{"class":4089},"              refreshing",[3996,18408,4093],{"class":4006},[3996,18410,4096],{"class":4002},[3996,18412,16280],{"class":4064},[3996,18414,4129],{"class":4002},[3996,18416,18418,18421,18423,18425,18428],{"class":3998,"line":18417},187,[3996,18419,18420],{"class":4089},"              onRefresh",[3996,18422,4093],{"class":4006},[3996,18424,4096],{"class":4002},[3996,18426,18427],{"class":4064},"onRefresh",[3996,18429,4129],{"class":4002},[3996,18431,18433,18436,18438,18440,18442,18444,18446],{"class":3998,"line":18432},188,[3996,18434,18435],{"class":4089},"              tintColor",[3996,18437,4093],{"class":4006},[3996,18439,4096],{"class":4002},[3996,18441,5598],{"class":4064},[3996,18443,3821],{"class":4099},[3996,18445,5717],{"class":4064},[3996,18447,4129],{"class":4002},[3996,18449,18451,18454,18456,18458,18460,18462,18464,18466,18468],{"class":3998,"line":18450},189,[3996,18452,18453],{"class":4089},"              colors",[3996,18455,4093],{"class":4006},[3996,18457,4096],{"class":4002},[3996,18459,11457],{"class":4099},[3996,18461,5598],{"class":4064},[3996,18463,3821],{"class":4099},[3996,18465,5717],{"class":4064},[3996,18467,11463],{"class":4099},[3996,18469,4129],{"class":4002},[3996,18471,18473],{"class":3998,"line":18472},190,[3996,18474,11266],{"class":4081},[3996,18476,18478],{"class":3998,"line":18477},191,[3996,18479,5355],{"class":4002},[3996,18481,18483,18486,18488],{"class":3998,"line":18482},192,[3996,18484,18485],{"class":4089},"          showsVerticalScrollIndicator",[3996,18487,4093],{"class":4006},[3996,18489,16905],{"class":4002},[3996,18491,18493],{"class":3998,"line":18492},193,[3996,18494,5914],{"class":4081},[3996,18496,18498,18500,18502],{"class":3998,"line":18497},194,[3996,18499,5919],{"class":4081},[3996,18501,11340],{"class":4085},[3996,18503,5924],{"class":4081},[3996,18505,18507],{"class":3998,"line":18506},195,[3996,18508,4051],{"emptyLinePlaceholder":4050},[3996,18510,18512,18514],{"class":3998,"line":18511},196,[3996,18513,5632],{"class":4081},[3996,18515,17072],{"class":4085},[3996,18517,18519,18521,18523,18525],{"class":3998,"line":18518},197,[3996,18520,17255],{"class":4089},[3996,18522,4093],{"class":4006},[3996,18524,4096],{"class":4002},[3996,18526,17085],{"class":4099},[3996,18528,18530,18532,18534,18537],{"class":3998,"line":18529},198,[3996,18531,17362],{"class":4064},[3996,18533,3821],{"class":4099},[3996,18535,18536],{"class":4064},"footer",[3996,18538,5720],{"class":4099},[3996,18540,18542],{"class":3998,"line":18541},199,[3996,18543,17374],{"class":4099},[3996,18545,18547,18549,18551,18553,18555],{"class":3998,"line":18546},200,[3996,18548,17380],{"class":4064},[3996,18550,16673],{"class":4064},[3996,18552,3821],{"class":4099},[3996,18554,16678],{"class":4064},[3996,18556,5720],{"class":4099},[3996,18558,18560,18562,18564,18566,18568],{"class":3998,"line":18559},201,[3996,18561,17394],{"class":4064},[3996,18563,16673],{"class":4064},[3996,18565,3821],{"class":4099},[3996,18567,16741],{"class":4064},[3996,18569,5720],{"class":4099},[3996,18571,18573,18575,18577,18579,18581],{"class":3998,"line":18572},202,[3996,18574,17408],{"class":4064},[3996,18576,16673],{"class":4064},[3996,18578,3821],{"class":4099},[3996,18580,16678],{"class":4064},[3996,18582,5720],{"class":4099},[3996,18584,18586,18589,18591,18593,18595],{"class":3998,"line":18585},203,[3996,18587,18588],{"class":4064},"            borderTopColor:",[3996,18590,5697],{"class":4064},[3996,18592,3821],{"class":4099},[3996,18594,15476],{"class":4064},[3996,18596,5720],{"class":4099},[3996,18598,18600,18603,18605,18607,18609],{"class":3998,"line":18599},204,[3996,18601,18602],{"class":4064},"            backgroundColor:",[3996,18604,5697],{"class":4064},[3996,18606,3821],{"class":4099},[3996,18608,5702],{"class":4064},[3996,18610,5720],{"class":4099},[3996,18612,18614],{"class":3998,"line":18613},205,[3996,18615,17451],{"class":4099},[3996,18617,18619,18621],{"class":3998,"line":18618},206,[3996,18620,17457],{"class":4099},[3996,18622,4129],{"class":4002},[3996,18624,18626],{"class":3998,"line":18625},207,[3996,18627,5775],{"class":4081},[3996,18629,18631,18633],{"class":3998,"line":18630},208,[3996,18632,5791],{"class":4081},[3996,18634,18635],{"class":4085},"Button\n",[3996,18637,18639,18642,18644],{"class":3998,"line":18638},209,[3996,18640,18641],{"class":4089},"          label",[3996,18643,4093],{"class":4006},[3996,18645,18646],{"class":4029},"\"Нова поїздка\"\n",[3996,18648,18650,18653,18655,18657,18659,18661],{"class":3998,"line":18649},210,[3996,18651,18652],{"class":4089},"          onPress",[3996,18654,4093],{"class":4006},[3996,18656,4096],{"class":4002},[3996,18658,4100],{"class":4099},[3996,18660,4103],{"class":4002},[3996,18662,7958],{"class":4099},[3996,18664,18666,18669,18671,18673,18675,18677],{"class":3998,"line":18665},211,[3996,18667,18668],{"class":4064},"            router",[3996,18670,3821],{"class":4099},[3996,18672,3866],{"class":4022},[3996,18674,4109],{"class":4099},[3996,18676,9438],{"class":4029},[3996,18678,4044],{"class":4099},[3996,18680,18682,18684],{"class":3998,"line":18681},212,[3996,18683,5907],{"class":4099},[3996,18685,4129],{"class":4002},[3996,18687,18689],{"class":3998,"line":18688},213,[3996,18690,5914],{"class":4081},[3996,18692,18694,18696,18698],{"class":3998,"line":18693},214,[3996,18695,5919],{"class":4081},[3996,18697,11340],{"class":4085},[3996,18699,5924],{"class":4081},[3996,18701,18703,18705,18707],{"class":3998,"line":18702},215,[3996,18704,6003],{"class":4081},[3996,18706,9671],{"class":4085},[3996,18708,5924],{"class":4081},[3996,18710,18712],{"class":3998,"line":18711},216,[3996,18713,5934],{"class":4006},[3996,18715,18717],{"class":3998,"line":18716},217,[3996,18718,4129],{"class":4006},[3996,18720,18722],{"class":3998,"line":18721},218,[3996,18723,4051],{"emptyLinePlaceholder":4050},[3996,18725,18727,18729,18731,18733,18735,18737,18739],{"class":3998,"line":18726},219,[3996,18728,4003],{"class":4002},[3996,18730,11925],{"class":4010},[3996,18732,7937],{"class":4006},[3996,18734,8741],{"class":4064},[3996,18736,3821],{"class":4006},[3996,18738,11934],{"class":4022},[3996,18740,7971],{"class":4006},[3996,18742,18744,18747],{"class":3998,"line":18743},220,[3996,18745,18746],{"class":4064},"  screen:",[3996,18748,7958],{"class":4006},[3996,18750,18752,18754,18756],{"class":3998,"line":18751},221,[3996,18753,11969],{"class":4064},[3996,18755,16713],{"class":11033},[3996,18757,5720],{"class":4006},[3996,18759,18761],{"class":3998,"line":18760},222,[3996,18762,10287],{"class":4006},[3996,18764,18766,18768],{"class":3998,"line":18765},223,[3996,18767,11962],{"class":4064},[3996,18769,7958],{"class":4006},[3996,18771,18773,18775,18777],{"class":3998,"line":18772},224,[3996,18774,11998],{"class":4064},[3996,18776,11949],{"class":11033},[3996,18778,5720],{"class":4006},[3996,18780,18782],{"class":3998,"line":18781},225,[3996,18783,10287],{"class":4006},[3996,18785,18787,18790],{"class":3998,"line":18786},226,[3996,18788,18789],{"class":4064},"  themeRow:",[3996,18791,7958],{"class":4006},[3996,18793,18795,18798,18801],{"class":3998,"line":18794},227,[3996,18796,18797],{"class":4064},"    flexDirection:",[3996,18799,18800],{"class":4029}," 'row'",[3996,18802,5720],{"class":4006},[3996,18804,18806,18809,18812],{"class":3998,"line":18805},228,[3996,18807,18808],{"class":4064},"    flexWrap:",[3996,18810,18811],{"class":4029}," 'wrap'",[3996,18813,5720],{"class":4006},[3996,18815,18817],{"class":3998,"line":18816},229,[3996,18818,10287],{"class":4006},[3996,18820,18822,18825],{"class":3998,"line":18821},230,[3996,18823,18824],{"class":4064},"  themeChip:",[3996,18826,7958],{"class":4006},[3996,18828,18830,18832,18834],{"class":3998,"line":18829},231,[3996,18831,11969],{"class":4064},[3996,18833,11034],{"class":11033},[3996,18835,5720],{"class":4006},[3996,18837,18839,18842,18844],{"class":3998,"line":18838},232,[3996,18840,18841],{"class":4064},"    paddingVertical:",[3996,18843,11982],{"class":11033},[3996,18845,5720],{"class":4006},[3996,18847,18849,18851,18853],{"class":3998,"line":18848},233,[3996,18850,12114],{"class":4064},[3996,18852,11982],{"class":11033},[3996,18854,5720],{"class":4006},[3996,18856,18858,18860,18862],{"class":3998,"line":18857},234,[3996,18859,12123],{"class":4064},[3996,18861,11949],{"class":11033},[3996,18863,5720],{"class":4006},[3996,18865,18867],{"class":3998,"line":18866},235,[3996,18868,10287],{"class":4006},[3996,18870,18872,18875],{"class":3998,"line":18871},236,[3996,18873,18874],{"class":4064},"  themeChipText:",[3996,18876,7958],{"class":4006},[3996,18878,18880,18882,18884],{"class":3998,"line":18879},237,[3996,18881,12236],{"class":4064},[3996,18883,5744],{"class":4029},[3996,18885,5720],{"class":4006},[3996,18887,18889],{"class":3998,"line":18888},238,[3996,18890,10287],{"class":4006},[3996,18892,18894,18897],{"class":3998,"line":18893},239,[3996,18895,18896],{"class":4064},"  listWrap:",[3996,18898,7958],{"class":4006},[3996,18900,18902,18904,18906],{"class":3998,"line":18901},240,[3996,18903,13419],{"class":4064},[3996,18905,11949],{"class":11033},[3996,18907,5720],{"class":4006},[3996,18909,18911],{"class":3998,"line":18910},241,[3996,18912,10287],{"class":4006},[3996,18914,18916,18919],{"class":3998,"line":18915},242,[3996,18917,18918],{"class":4064},"  empty:",[3996,18920,7958],{"class":4006},[3996,18922,18924,18926,18928],{"class":3998,"line":18923},243,[3996,18925,13446],{"class":4064},[3996,18927,13439],{"class":4029},[3996,18929,5720],{"class":4006},[3996,18931,18933,18935,18937],{"class":3998,"line":18932},244,[3996,18934,13436],{"class":4064},[3996,18936,13439],{"class":4029},[3996,18938,5720],{"class":4006},[3996,18940,18942],{"class":3998,"line":18941},245,[3996,18943,10287],{"class":4006},[3996,18945,18947,18950],{"class":3998,"line":18946},246,[3996,18948,18949],{"class":4064},"  emptyTitle:",[3996,18951,7958],{"class":4006},[3996,18953,18955,18958,18960],{"class":3998,"line":18954},247,[3996,18956,18957],{"class":4064},"    textAlign:",[3996,18959,13439],{"class":4029},[3996,18961,5720],{"class":4006},[3996,18963,18965],{"class":3998,"line":18964},248,[3996,18966,10287],{"class":4006},[3996,18968,18970,18973],{"class":3998,"line":18969},249,[3996,18971,18972],{"class":4064},"  emptyDesc:",[3996,18974,7958],{"class":4006},[3996,18976,18978,18980,18982],{"class":3998,"line":18977},250,[3996,18979,18957],{"class":4064},[3996,18981,13439],{"class":4029},[3996,18983,5720],{"class":4006},[3996,18985,18987],{"class":3998,"line":18986},251,[3996,18988,10287],{"class":4006},[3996,18990,18992,18995],{"class":3998,"line":18991},252,[3996,18993,18994],{"class":4064},"  footer:",[3996,18996,7958],{"class":4006},[3996,18998,19000,19003,19005],{"class":3998,"line":18999},253,[3996,19001,19002],{"class":4064},"    borderTopWidth:",[3996,19004,11949],{"class":11033},[3996,19006,5720],{"class":4006},[3996,19008,19010],{"class":3998,"line":19009},254,[3996,19011,10287],{"class":4006},[3996,19013,19015],{"class":3998,"line":19014},255,[3996,19016,12261],{"class":4006},[3987,19018,19020],{"className":3989,"code":19019,"filename":6137,"language":3991,"meta":3992,"style":3992},"import { useCallback, useState } from 'react';\nimport { FlatList, StyleSheet, View } from 'react-native';\n\nimport { mockPlaces, PlaceChip, type Place } from '@\u002Ffeatures\u002Ftrips';\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\nimport { AppText, Screen } from '@\u002Fshared\u002Fui';\n\n\u002F**\n * Вкладка «Місця» — повний список місць (раніше лише горизонтальна стрічка на home).\n *\u002F\nexport default function PlacesScreen() {\n  const { colors, spacing } = useTheme();\n  const [places] = useState\u003CPlace[]>(mockPlaces);\n\n  const handleOpenPlace = useCallback((place: Place) => {\n    console.log('TODO: відкрити місце', place.id, place.name);\n  }, []);\n\n  return (\n    \u003CScreen style={styles.screen}>\n      \u003CView\n        style={[\n          styles.header,\n          {\n            paddingHorizontal: spacing.md,\n            paddingTop: spacing.sm,\n            paddingBottom: spacing.md,\n            borderBottomColor: colors.border,\n          },\n        ]}\n      >\n        \u003CAppText variant=\"title\">Місця\u003C\u002FAppText>\n        \u003CAppText variant=\"caption\" style={{ marginTop: spacing.xs }}>\n          Усі збережені точки з mock-даних · {places.length}\n        \u003C\u002FAppText>\n      \u003C\u002FView>\n\n      \u003CFlatList\n        data={places}\n        keyExtractor={(item) => item.id}\n        numColumns={2}\n        columnWrapperStyle={{\n          gap: spacing.sm,\n          paddingHorizontal: spacing.md,\n        }}\n        contentContainerStyle={{\n          paddingTop: spacing.md,\n          paddingBottom: spacing.xl,\n          gap: spacing.sm,\n        }}\n        renderItem={({ item }) => (\n          \u003CView style={styles.cell}>\n            \u003CPlaceChip place={item} onPress={handleOpenPlace} \u002F>\n          \u003C\u002FView>\n        )}\n        ListEmptyComponent={\n          \u003CView style={styles.empty}>\n            \u003CAppText variant=\"subtitle\" style={styles.center}>\n              Місць поки немає\n            \u003C\u002FAppText>\n            \u003CAppText variant=\"caption\" color={colors.textSecondary} style={styles.center}>\n              Вони з’являться разом із поїздками.\n            \u003C\u002FAppText>\n          \u003C\u002FView>\n        }\n        showsVerticalScrollIndicator={false}\n      \u002F>\n    \u003C\u002FScreen>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    paddingHorizontal: 0,\n  },\n  header: {\n    borderBottomWidth: 1,\n  },\n  cell: {\n    flex: 1,\n  },\n  empty: {\n    padding: 32,\n    gap: 8,\n  },\n  center: {\n    textAlign: 'center',\n  },\n});\n",[3747,19021,19022,19042,19066,19070,19096,19112,19132,19136,19140,19145,19149,19162,19180,19202,19206,19230,19260,19264,19268,19274,19296,19302,19312,19322,19326,19338,19350,19362,19374,19378,19384,19388,19410,19444,19459,19467,19475,19479,19485,19497,19521,19535,19546,19558,19570,19576,19586,19599,19612,19624,19630,19648,19671,19699,19707,19713,19722,19744,19772,19777,19785,19827,19832,19840,19848,19852,19861,19865,19873,19877,19881,19885,19901,19907,19915,19919,19925,19933,19937,19944,19952,19956,19962,19970,19979,19983,19989,19997,20001],{"__ignoreMap":3992},[3996,19023,19024,19026,19028,19030,19032,19034,19036,19038,19040],{"class":3998,"line":3999},[3996,19025,5501],{"class":4057},[3996,19027,5504],{"class":4006},[3996,19029,15854],{"class":4064},[3996,19031,3867],{"class":4006},[3996,19033,4023],{"class":4064},[3996,19035,5509],{"class":4006},[3996,19037,5512],{"class":4057},[3996,19039,7869],{"class":4029},[3996,19041,4123],{"class":4006},[3996,19043,19044,19046,19048,19050,19052,19054,19056,19058,19060,19062,19064],{"class":3998,"line":4047},[3996,19045,5501],{"class":4057},[3996,19047,5504],{"class":4006},[3996,19049,11323],{"class":4064},[3996,19051,3867],{"class":4006},[3996,19053,8741],{"class":4064},[3996,19055,3867],{"class":4006},[3996,19057,11340],{"class":4064},[3996,19059,5509],{"class":4006},[3996,19061,5512],{"class":4057},[3996,19063,7908],{"class":4029},[3996,19065,4123],{"class":4006},[3996,19067,19068],{"class":3998,"line":4054},[3996,19069,4051],{"emptyLinePlaceholder":4050},[3996,19071,19072,19074,19076,19078,19080,19082,19084,19086,19088,19090,19092,19094],{"class":3998,"line":4075},[3996,19073,5501],{"class":4057},[3996,19075,5504],{"class":4006},[3996,19077,16269],{"class":4064},[3996,19079,3867],{"class":4006},[3996,19081,16862],{"class":4064},[3996,19083,3867],{"class":4006},[3996,19085,16032],{"class":4057},[3996,19087,15998],{"class":4064},[3996,19089,5509],{"class":4006},[3996,19091,5512],{"class":4057},[3996,19093,5549],{"class":4029},[3996,19095,4123],{"class":4006},[3996,19097,19098,19100,19102,19104,19106,19108,19110],{"class":3998,"line":4126},[3996,19099,5501],{"class":4057},[3996,19101,5504],{"class":4006},[3996,19103,5564],{"class":4064},[3996,19105,5509],{"class":4006},[3996,19107,5512],{"class":4057},[3996,19109,5571],{"class":4029},[3996,19111,4123],{"class":4006},[3996,19113,19114,19116,19118,19120,19122,19124,19126,19128,19130],{"class":3998,"line":4132},[3996,19115,5501],{"class":4057},[3996,19117,5504],{"class":4006},[3996,19119,16052],{"class":4064},[3996,19121,3867],{"class":4006},[3996,19123,9671],{"class":4064},[3996,19125,5509],{"class":4006},[3996,19127,5512],{"class":4057},[3996,19129,16068],{"class":4029},[3996,19131,4123],{"class":4006},[3996,19133,19134],{"class":3998,"line":4137},[3996,19135,4051],{"emptyLinePlaceholder":4050},[3996,19137,19138],{"class":3998,"line":4275},[3996,19139,14911],{"class":5783},[3996,19141,19142],{"class":3998,"line":4281},[3996,19143,19144],{"class":5783}," * Вкладка «Місця» — повний список місць (раніше лише горизонтальна стрічка на home).\n",[3996,19146,19147],{"class":3998,"line":4287},[3996,19148,14926],{"class":5783},[3996,19150,19151,19153,19155,19157,19160],{"class":3998,"line":4293},[3996,19152,5947],{"class":4057},[3996,19154,5950],{"class":4057},[3996,19156,5953],{"class":4002},[3996,19158,19159],{"class":4022}," PlacesScreen",[3996,19161,5588],{"class":4006},[3996,19163,19164,19166,19168,19170,19172,19174,19176,19178],{"class":3998,"line":4299},[3996,19165,5593],{"class":4002},[3996,19167,5504],{"class":4006},[3996,19169,5598],{"class":4010},[3996,19171,3867],{"class":4006},[3996,19173,16226],{"class":4010},[3996,19175,5606],{"class":4006},[3996,19177,5564],{"class":4022},[3996,19179,5611],{"class":4006},[3996,19181,19182,19184,19186,19188,19190,19192,19194,19196,19198,19200],{"class":3998,"line":4305},[3996,19183,5593],{"class":4002},[3996,19185,4007],{"class":4006},[3996,19187,6747],{"class":4010},[3996,19189,4019],{"class":4006},[3996,19191,4023],{"class":4022},[3996,19193,4026],{"class":4006},[3996,19195,16263],{"class":4085},[3996,19197,16266],{"class":4006},[3996,19199,16269],{"class":4064},[3996,19201,4044],{"class":4006},[3996,19203,19204],{"class":3998,"line":4311},[3996,19205,4051],{"emptyLinePlaceholder":4050},[3996,19207,19208,19210,19212,19214,19216,19218,19220,19222,19224,19226,19228],{"class":3998,"line":4317},[3996,19209,5593],{"class":4002},[3996,19211,16375],{"class":4010},[3996,19213,7937],{"class":4006},[3996,19215,15854],{"class":4022},[3996,19217,10564],{"class":4006},[3996,19219,16384],{"class":4064},[3996,19221,8990],{"class":4006},[3996,19223,16263],{"class":4085},[3996,19225,8996],{"class":4006},[3996,19227,4103],{"class":4002},[3996,19229,7958],{"class":4006},[3996,19231,19232,19234,19236,19238,19240,19242,19244,19246,19248,19250,19252,19254,19256,19258],{"class":3998,"line":4323},[3996,19233,16331],{"class":4064},[3996,19235,3821],{"class":4006},[3996,19237,16336],{"class":4022},[3996,19239,4109],{"class":4006},[3996,19241,16407],{"class":4029},[3996,19243,3867],{"class":4006},[3996,19245,16384],{"class":4064},[3996,19247,3821],{"class":4006},[3996,19249,10533],{"class":4064},[3996,19251,3867],{"class":4006},[3996,19253,16384],{"class":4064},[3996,19255,3821],{"class":4006},[3996,19257,6457],{"class":4064},[3996,19259,4044],{"class":4006},[3996,19261,19262],{"class":3998,"line":4329},[3996,19263,16364],{"class":4006},[3996,19265,19266],{"class":3998,"line":4335},[3996,19267,4051],{"emptyLinePlaceholder":4050},[3996,19269,19270,19272],{"class":3998,"line":4341},[3996,19271,4078],{"class":4057},[3996,19273,5622],{"class":4006},[3996,19275,19276,19278,19280,19282,19284,19286,19288,19290,19292,19294],{"class":3998,"line":4347},[3996,19277,5969],{"class":4081},[3996,19279,9671],{"class":4085},[3996,19281,5637],{"class":4089},[3996,19283,4093],{"class":4006},[3996,19285,4096],{"class":4002},[3996,19287,8789],{"class":4064},[3996,19289,3821],{"class":4099},[3996,19291,17334],{"class":4064},[3996,19293,4117],{"class":4002},[3996,19295,5924],{"class":4081},[3996,19297,19298,19300],{"class":3998,"line":4352},[3996,19299,5632],{"class":4081},[3996,19301,17072],{"class":4085},[3996,19303,19304,19306,19308,19310],{"class":3998,"line":4357},[3996,19305,17255],{"class":4089},[3996,19307,4093],{"class":4006},[3996,19309,4096],{"class":4002},[3996,19311,17085],{"class":4099},[3996,19313,19314,19316,19318,19320],{"class":3998,"line":4363},[3996,19315,17362],{"class":4064},[3996,19317,3821],{"class":4099},[3996,19319,11486],{"class":4064},[3996,19321,5720],{"class":4099},[3996,19323,19324],{"class":3998,"line":4369},[3996,19325,17374],{"class":4099},[3996,19327,19328,19330,19332,19334,19336],{"class":3998,"line":4375},[3996,19329,17380],{"class":4064},[3996,19331,16673],{"class":4064},[3996,19333,3821],{"class":4099},[3996,19335,16678],{"class":4064},[3996,19337,5720],{"class":4099},[3996,19339,19340,19342,19344,19346,19348],{"class":3998,"line":4381},[3996,19341,17394],{"class":4064},[3996,19343,16673],{"class":4064},[3996,19345,3821],{"class":4099},[3996,19347,16741],{"class":4064},[3996,19349,5720],{"class":4099},[3996,19351,19352,19354,19356,19358,19360],{"class":3998,"line":4387},[3996,19353,17408],{"class":4064},[3996,19355,16673],{"class":4064},[3996,19357,3821],{"class":4099},[3996,19359,16678],{"class":4064},[3996,19361,5720],{"class":4099},[3996,19363,19364,19366,19368,19370,19372],{"class":3998,"line":4392},[3996,19365,17437],{"class":4064},[3996,19367,5697],{"class":4064},[3996,19369,3821],{"class":4099},[3996,19371,15476],{"class":4064},[3996,19373,5720],{"class":4099},[3996,19375,19376],{"class":3998,"line":4398},[3996,19377,17451],{"class":4099},[3996,19379,19380,19382],{"class":3998,"line":4404},[3996,19381,17457],{"class":4099},[3996,19383,4129],{"class":4002},[3996,19385,19386],{"class":3998,"line":4410},[3996,19387,5775],{"class":4081},[3996,19389,19390,19392,19394,19396,19398,19400,19402,19404,19406,19408],{"class":3998,"line":4415},[3996,19391,5791],{"class":4081},[3996,19393,16052],{"class":4085},[3996,19395,17175],{"class":4089},[3996,19397,4093],{"class":4006},[3996,19399,17478],{"class":4029},[3996,19401,8059],{"class":4081},[3996,19403,13863],{"class":4006},[3996,19405,8065],{"class":4081},[3996,19407,16052],{"class":4085},[3996,19409,5924],{"class":4081},[3996,19411,19412,19414,19416,19418,19420,19422,19424,19426,19428,19430,19432,19434,19436,19438,19440,19442],{"class":3998,"line":4420},[3996,19413,5791],{"class":4081},[3996,19415,16052],{"class":4085},[3996,19417,17175],{"class":4089},[3996,19419,4093],{"class":4006},[3996,19421,17503],{"class":4029},[3996,19423,5637],{"class":4089},[3996,19425,4093],{"class":4006},[3996,19427,4096],{"class":4002},[3996,19429,5812],{"class":4099},[3996,19431,12052],{"class":4064},[3996,19433,16673],{"class":4064},[3996,19435,3821],{"class":4099},[3996,19437,17429],{"class":4064},[3996,19439,5821],{"class":4099},[3996,19441,4117],{"class":4002},[3996,19443,5924],{"class":4081},[3996,19445,19446,19449,19451,19453,19455,19457],{"class":3998,"line":4426},[3996,19447,19448],{"class":4006},"          Усі збережені точки з mock-даних · ",[3996,19450,4096],{"class":4002},[3996,19452,6747],{"class":4064},[3996,19454,3821],{"class":4099},[3996,19456,11553],{"class":4064},[3996,19458,4129],{"class":4002},[3996,19460,19461,19463,19465],{"class":3998,"line":4432},[3996,19462,8074],{"class":4081},[3996,19464,16052],{"class":4085},[3996,19466,5924],{"class":4081},[3996,19468,19469,19471,19473],{"class":3998,"line":4438},[3996,19470,5919],{"class":4081},[3996,19472,11340],{"class":4085},[3996,19474,5924],{"class":4081},[3996,19476,19477],{"class":3998,"line":4443},[3996,19478,4051],{"emptyLinePlaceholder":4050},[3996,19480,19481,19483],{"class":3998,"line":4448},[3996,19482,5632],{"class":4081},[3996,19484,11583],{"class":4085},[3996,19486,19487,19489,19491,19493,19495],{"class":3998,"line":4454},[3996,19488,11588],{"class":4089},[3996,19490,4093],{"class":4006},[3996,19492,4096],{"class":4002},[3996,19494,6747],{"class":4064},[3996,19496,4129],{"class":4002},[3996,19498,19499,19501,19503,19505,19507,19509,19511,19513,19515,19517,19519],{"class":3998,"line":4460},[3996,19500,11601],{"class":4089},[3996,19502,4093],{"class":4006},[3996,19504,4096],{"class":4002},[3996,19506,4109],{"class":4099},[3996,19508,11610],{"class":4064},[3996,19510,8996],{"class":4099},[3996,19512,4103],{"class":4002},[3996,19514,11617],{"class":4064},[3996,19516,3821],{"class":4099},[3996,19518,10533],{"class":4064},[3996,19520,4129],{"class":4002},[3996,19522,19523,19526,19528,19530,19533],{"class":3998,"line":4466},[3996,19524,19525],{"class":4089},"        numColumns",[3996,19527,4093],{"class":4006},[3996,19529,4096],{"class":4002},[3996,19531,19532],{"class":11033},"2",[3996,19534,4129],{"class":4002},[3996,19536,19537,19540,19542,19544],{"class":3998,"line":4472},[3996,19538,19539],{"class":4089},"        columnWrapperStyle",[3996,19541,4093],{"class":4006},[3996,19543,4096],{"class":4002},[3996,19545,5684],{"class":4099},[3996,19547,19548,19550,19552,19554,19556],{"class":3998,"line":4477},[3996,19549,17139],{"class":4064},[3996,19551,16673],{"class":4064},[3996,19553,3821],{"class":4099},[3996,19555,16741],{"class":4064},[3996,19557,5720],{"class":4099},[3996,19559,19560,19562,19564,19566,19568],{"class":3998,"line":5066},[3996,19561,17110],{"class":4064},[3996,19563,16673],{"class":4064},[3996,19565,3821],{"class":4099},[3996,19567,16678],{"class":4064},[3996,19569,5720],{"class":4099},[3996,19571,19572,19574],{"class":3998,"line":5072},[3996,19573,5768],{"class":4099},[3996,19575,4129],{"class":4002},[3996,19577,19578,19580,19582,19584],{"class":3998,"line":5078},[3996,19579,11628],{"class":4089},[3996,19581,4093],{"class":4006},[3996,19583,4096],{"class":4002},[3996,19585,5684],{"class":4099},[3996,19587,19588,19591,19593,19595,19597],{"class":3998,"line":5084},[3996,19589,19590],{"class":4064},"          paddingTop:",[3996,19592,16673],{"class":4064},[3996,19594,3821],{"class":4099},[3996,19596,16678],{"class":4064},[3996,19598,5720],{"class":4099},[3996,19600,19601,19604,19606,19608,19610],{"class":3998,"line":5090},[3996,19602,19603],{"class":4064},"          paddingBottom:",[3996,19605,16673],{"class":4064},[3996,19607,3821],{"class":4099},[3996,19609,17131],{"class":4064},[3996,19611,5720],{"class":4099},[3996,19613,19614,19616,19618,19620,19622],{"class":3998,"line":5096},[3996,19615,17139],{"class":4064},[3996,19617,16673],{"class":4064},[3996,19619,3821],{"class":4099},[3996,19621,16741],{"class":4064},[3996,19623,5720],{"class":4099},[3996,19625,19626,19628],{"class":3998,"line":10510},[3996,19627,5768],{"class":4099},[3996,19629,4129],{"class":4002},[3996,19631,19632,19634,19636,19638,19640,19642,19644,19646],{"class":3998,"line":10516},[3996,19633,11685],{"class":4089},[3996,19635,4093],{"class":4006},[3996,19637,4096],{"class":4002},[3996,19639,7759],{"class":4099},[3996,19641,11610],{"class":4064},[3996,19643,6881],{"class":4099},[3996,19645,4103],{"class":4002},[3996,19647,5622],{"class":4099},[3996,19649,19650,19652,19654,19656,19658,19660,19662,19664,19667,19669],{"class":3998,"line":10521},[3996,19651,8031],{"class":4081},[3996,19653,11340],{"class":4085},[3996,19655,5637],{"class":4089},[3996,19657,4093],{"class":4006},[3996,19659,4096],{"class":4002},[3996,19661,8789],{"class":4064},[3996,19663,3821],{"class":4099},[3996,19665,19666],{"class":4064},"cell",[3996,19668,4117],{"class":4002},[3996,19670,5924],{"class":4081},[3996,19672,19673,19675,19677,19679,19681,19683,19685,19687,19689,19691,19693,19695,19697],{"class":3998,"line":10552},[3996,19674,11117],{"class":4081},[3996,19676,16862],{"class":4085},[3996,19678,16865],{"class":4089},[3996,19680,4093],{"class":4006},[3996,19682,4096],{"class":4002},[3996,19684,11610],{"class":4064},[3996,19686,4117],{"class":4002},[3996,19688,8004],{"class":4089},[3996,19690,4093],{"class":4006},[3996,19692,4096],{"class":4002},[3996,19694,16882],{"class":4064},[3996,19696,4117],{"class":4002},[3996,19698,5665],{"class":4081},[3996,19700,19701,19703,19705],{"class":3998,"line":10587},[3996,19702,11883],{"class":4081},[3996,19704,11340],{"class":4085},[3996,19706,5924],{"class":4081},[3996,19708,19709,19711],{"class":3998,"line":12205},[3996,19710,11892],{"class":4099},[3996,19712,4129],{"class":4002},[3996,19714,19715,19718,19720],{"class":3998,"line":12213},[3996,19716,19717],{"class":4089},"        ListEmptyComponent",[3996,19719,4093],{"class":4006},[3996,19721,5684],{"class":4002},[3996,19723,19724,19726,19728,19730,19732,19734,19736,19738,19740,19742],{"class":3998,"line":12223},[3996,19725,8031],{"class":4081},[3996,19727,11340],{"class":4085},[3996,19729,5637],{"class":4089},[3996,19731,4093],{"class":4006},[3996,19733,4096],{"class":4002},[3996,19735,8789],{"class":4064},[3996,19737,3821],{"class":4099},[3996,19739,17096],{"class":4064},[3996,19741,4117],{"class":4002},[3996,19743,5924],{"class":4081},[3996,19745,19746,19748,19750,19752,19754,19756,19758,19760,19762,19764,19766,19768,19770],{"class":3998,"line":12233},[3996,19747,11117],{"class":4081},[3996,19749,16052],{"class":4085},[3996,19751,17175],{"class":4089},[3996,19753,4093],{"class":4006},[3996,19755,17180],{"class":4029},[3996,19757,5637],{"class":4089},[3996,19759,4093],{"class":4006},[3996,19761,4096],{"class":4002},[3996,19763,8789],{"class":4064},[3996,19765,3821],{"class":4099},[3996,19767,13007],{"class":4064},[3996,19769,4117],{"class":4002},[3996,19771,5924],{"class":4081},[3996,19773,19774],{"class":3998,"line":12243},[3996,19775,19776],{"class":4099},"              Місць поки немає\n",[3996,19778,19779,19781,19783],{"class":3998,"line":12253},[3996,19780,11874],{"class":4081},[3996,19782,16052],{"class":4085},[3996,19784,5924],{"class":4081},[3996,19786,19787,19789,19791,19793,19795,19797,19799,19801,19803,19805,19807,19809,19811,19813,19815,19817,19819,19821,19823,19825],{"class":3998,"line":12258},[3996,19788,11117],{"class":4081},[3996,19790,16052],{"class":4085},[3996,19792,17175],{"class":4089},[3996,19794,4093],{"class":4006},[3996,19796,17503],{"class":4029},[3996,19798,6913],{"class":4089},[3996,19800,4093],{"class":4006},[3996,19802,4096],{"class":4002},[3996,19804,5598],{"class":4064},[3996,19806,3821],{"class":4099},[3996,19808,15445],{"class":4064},[3996,19810,4117],{"class":4002},[3996,19812,5637],{"class":4089},[3996,19814,4093],{"class":4006},[3996,19816,4096],{"class":4002},[3996,19818,8789],{"class":4064},[3996,19820,3821],{"class":4099},[3996,19822,13007],{"class":4064},[3996,19824,4117],{"class":4002},[3996,19826,5924],{"class":4081},[3996,19828,19829],{"class":3998,"line":16645},[3996,19830,19831],{"class":4099},"              Вони з’являться разом із поїздками.\n",[3996,19833,19834,19836,19838],{"class":3998,"line":16656},[3996,19835,11874],{"class":4081},[3996,19837,16052],{"class":4085},[3996,19839,5924],{"class":4081},[3996,19841,19842,19844,19846],{"class":3998,"line":16698},[3996,19843,11883],{"class":4081},[3996,19845,11340],{"class":4085},[3996,19847,5924],{"class":4081},[3996,19849,19850],{"class":3998,"line":16720},[3996,19851,5360],{"class":4002},[3996,19853,19854,19857,19859],{"class":3998,"line":16750},[3996,19855,19856],{"class":4089},"        showsVerticalScrollIndicator",[3996,19858,4093],{"class":4006},[3996,19860,16905],{"class":4002},[3996,19862,19863],{"class":3998,"line":16784},[3996,19864,11164],{"class":4081},[3996,19866,19867,19869,19871],{"class":3998,"line":16791},[3996,19868,6003],{"class":4081},[3996,19870,9671],{"class":4085},[3996,19872,5924],{"class":4081},[3996,19874,19875],{"class":3998,"line":16797},[3996,19876,5934],{"class":4006},[3996,19878,19879],{"class":3998,"line":16811},[3996,19880,4129],{"class":4006},[3996,19882,19883],{"class":3998,"line":16837},[3996,19884,4051],{"emptyLinePlaceholder":4050},[3996,19886,19887,19889,19891,19893,19895,19897,19899],{"class":3998,"line":16857},[3996,19888,4003],{"class":4002},[3996,19890,11925],{"class":4010},[3996,19892,7937],{"class":4006},[3996,19894,8741],{"class":4064},[3996,19896,3821],{"class":4006},[3996,19898,11934],{"class":4022},[3996,19900,7971],{"class":4006},[3996,19902,19903,19905],{"class":3998,"line":16889},[3996,19904,18746],{"class":4064},[3996,19906,7958],{"class":4006},[3996,19908,19909,19911,19913],{"class":3998,"line":16897},[3996,19910,11969],{"class":4064},[3996,19912,16713],{"class":11033},[3996,19914,5720],{"class":4006},[3996,19916,19917],{"class":3998,"line":16908},[3996,19918,10287],{"class":4006},[3996,19920,19921,19923],{"class":3998,"line":16951},[3996,19922,11962],{"class":4064},[3996,19924,7958],{"class":4006},[3996,19926,19927,19929,19931],{"class":3998,"line":16973},[3996,19928,11998],{"class":4064},[3996,19930,11949],{"class":11033},[3996,19932,5720],{"class":4006},[3996,19934,19935],{"class":3998,"line":16979},[3996,19936,10287],{"class":4006},[3996,19938,19939,19942],{"class":3998,"line":16988},[3996,19940,19941],{"class":4064},"  cell:",[3996,19943,7958],{"class":4006},[3996,19945,19946,19948,19950],{"class":3998,"line":16999},[3996,19947,13419],{"class":4064},[3996,19949,11949],{"class":11033},[3996,19951,5720],{"class":4006},[3996,19953,19954],{"class":3998,"line":17004},[3996,19955,10287],{"class":4006},[3996,19957,19958,19960],{"class":3998,"line":17038},[3996,19959,18918],{"class":4064},[3996,19961,7958],{"class":4006},[3996,19963,19964,19966,19968],{"class":3998,"line":17047},[3996,19965,12141],{"class":4064},[3996,19967,12090],{"class":11033},[3996,19969,5720],{"class":4006},[3996,19971,19972,19975,19977],{"class":3998,"line":17052},[3996,19973,19974],{"class":4064},"    gap:",[3996,19976,11982],{"class":11033},[3996,19978,5720],{"class":4006},[3996,19980,19981],{"class":3998,"line":17057},[3996,19982,10287],{"class":4006},[3996,19984,19985,19987],{"class":3998,"line":17067},[3996,19986,13412],{"class":4064},[3996,19988,7958],{"class":4006},[3996,19990,19991,19993,19995],{"class":3998,"line":17075},[3996,19992,18957],{"class":4064},[3996,19994,13439],{"class":4029},[3996,19996,5720],{"class":4006},[3996,19998,19999],{"class":3998,"line":17088},[3996,20000,10287],{"class":4006},[3996,20002,20003],{"class":3998,"line":17101},[3996,20004,12261],{"class":4006},[3987,20006,20008],{"className":3989,"code":20007,"filename":12268,"language":3991,"meta":3992,"style":3992},"import { Pressable, ScrollView, StyleSheet, View } from 'react-native';\nimport { Link } from 'expo-router';\n\nimport { useTheme, type ThemePreference } from '@\u002Fshared\u002Ftheme';\nimport { AppText, Screen } from '@\u002Fshared\u002Fui';\n\nconst PREFS: { id: ThemePreference; label: string }[] = [\n  { id: 'system', label: 'Система' },\n  { id: 'light', label: 'Світла' },\n  { id: 'dark', label: 'Темна' },\n];\n\n\u002F**\n * Вкладка «Ще» — про застосунок, тема, посилання на створення поїздки (Link).\n *\u002F\nexport default function AboutScreen() {\n  const { colors, spacing, preference, setPreference, scheme } = useTheme();\n\n  return (\n    \u003CScreen style={styles.screen}>\n      \u003CScrollView\n        contentContainerStyle={{\n          paddingHorizontal: spacing.md,\n          paddingTop: spacing.sm,\n          paddingBottom: spacing.xl,\n          gap: spacing.md,\n        }}\n        showsVerticalScrollIndicator={false}\n      >\n        \u003CAppText variant=\"title\">Мандрівник\u003C\u002FAppText>\n        \u003CAppText variant=\"caption\" color={colors.textSecondary}>\n          Навчальний щоденник подорожей курсу React Native (Nomad). Тема зараз:{' '}\n          {scheme === 'dark' ? 'темна' : 'світла'}.\n        \u003C\u002FAppText>\n\n        \u003CView\n          style={[\n            styles.card,\n            {\n              backgroundColor: colors.surface,\n              borderColor: colors.border,\n              padding: spacing.md,\n              gap: spacing.sm,\n            },\n          ]}\n        >\n          \u003CAppText style={{ fontWeight: '700' }}>Тема оформлення\u003C\u002FAppText>\n          \u003CAppText variant=\"caption\" color={colors.textSecondary}>\n            Ті самі чіпи, що були на головному екрані — винесені також сюди, щоб\n            налаштування жили на окремій вкладці.\n          \u003C\u002FAppText>\n          \u003CView style={[styles.themeRow, { gap: spacing.sm }]}>\n            {PREFS.map((p) => {\n              const active = preference === p.id;\n              return (\n                \u003CPressable\n                  key={p.id}\n                  onPress={() => setPreference(p.id)}\n                  style={[\n                    styles.themeChip,\n                    {\n                      backgroundColor: active ? colors.primary : colors.surface,\n                      borderColor: colors.border,\n                    },\n                  ]}\n                  accessibilityRole=\"button\"\n                  accessibilityState={{ selected: active }}\n                  accessibilityLabel={`Тема: ${p.label}`}\n                >\n                  \u003CAppText\n                    variant=\"caption\"\n                    color={active ? colors.onPrimary : colors.text}\n                    style={styles.themeChipText}\n                  >\n                    {p.label}\n                  \u003C\u002FAppText>\n                \u003C\u002FPressable>\n              );\n            })}\n          \u003C\u002FView>\n        \u003C\u002FView>\n\n        \u003CView\n          style={[\n            styles.card,\n            {\n              backgroundColor: colors.surface,\n              borderColor: colors.border,\n              padding: spacing.md,\n              gap: spacing.sm,\n            },\n          ]}\n        >\n          \u003CAppText style={{ fontWeight: '700' }}>Навігація (Expo Router)\u003C\u002FAppText>\n          \u003CAppText variant=\"caption\" color={colors.textSecondary}>\n            Нижні вкладки — група маршрутів (tabs). «Нова поїздка» відкривається\n            поверх вкладок у Stack. Нижче — приклад компонента Link (як якір на\n            вебі).\n          \u003C\u002FAppText>\n          \u003CLink href=\"\u002Fcreate-trip\" asChild>\n            \u003CPressable\n              style={[\n                styles.linkBtn,\n                {\n                  backgroundColor: colors.primary,\n                  paddingVertical: spacing.sm + 4,\n                  borderRadius: 12,\n                },\n              ]}\n            >\n              \u003CAppText color={colors.onPrimary} style={{ fontWeight: '700' }}>\n                Відкрити форму (Link)\n              \u003C\u002FAppText>\n            \u003C\u002FPressable>\n          \u003C\u002FLink>\n        \u003C\u002FView>\n\n        \u003CAppText variant=\"caption\" color={colors.textSecondary}>\n          Репозиторій: github.com\u002Farakviel\u002Fnomad\n        \u003C\u002FAppText>\n      \u003C\u002FScrollView>\n    \u003C\u002FScreen>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    paddingHorizontal: 0,\n  },\n  card: {\n    borderWidth: 1,\n    borderRadius: 12,\n  },\n  themeRow: {\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n  },\n  themeChip: {\n    paddingHorizontal: 12,\n    paddingVertical: 8,\n    borderRadius: 8,\n    borderWidth: 1,\n  },\n  themeChipText: {\n    fontWeight: '600',\n  },\n  linkBtn: {\n    alignItems: 'center',\n  },\n});\n",[3747,20009,20010,20038,20054,20058,20080,20100,20104,20128,20144,20160,20176,20180,20184,20188,20193,20197,20209,20239,20243,20249,20271,20278,20288,20300,20312,20324,20336,20342,20350,20354,20376,20404,20416,20439,20447,20451,20457,20467,20478,20483,20496,20509,20522,20535,20540,20547,20551,20584,20612,20617,20622,20630,20666,20687,20708,20715,20721,20738,20765,20775,20786,20791,20816,20829,20834,20841,20850,20869,20894,20898,20905,20914,20943,20960,20965,20978,20987,20995,21000,21007,21015,21023,21027,21033,21043,21053,21057,21069,21081,21093,21105,21109,21115,21119,21152,21180,21185,21190,21195,21203,21219,21225,21236,21248,21253,21266,21284,21293,21298,21305,21310,21348,21353,21361,21369,21377,21385,21389,21417,21422,21430,21438,21446,21450,21454,21458,21474,21480,21488,21492,21498,21506,21514,21518,21524,21532,21540,21544,21550,21558,21566,21574,21582,21586,21592,21600,21604,21611,21619,21623],{"__ignoreMap":3992},[3996,20011,20012,20014,20016,20018,20020,20022,20024,20026,20028,20030,20032,20034,20036],{"class":3998,"line":3999},[3996,20013,5501],{"class":4057},[3996,20015,5504],{"class":4006},[3996,20017,7896],{"class":4064},[3996,20019,3867],{"class":4006},[3996,20021,12290],{"class":4064},[3996,20023,3867],{"class":4006},[3996,20025,8741],{"class":4064},[3996,20027,3867],{"class":4006},[3996,20029,11340],{"class":4064},[3996,20031,5509],{"class":4006},[3996,20033,5512],{"class":4057},[3996,20035,7908],{"class":4029},[3996,20037,4123],{"class":4006},[3996,20039,20040,20042,20044,20046,20048,20050,20052],{"class":3998,"line":4047},[3996,20041,5501],{"class":4057},[3996,20043,5504],{"class":4006},[3996,20045,3852],{"class":4064},[3996,20047,5509],{"class":4006},[3996,20049,5512],{"class":4057},[3996,20051,5515],{"class":4029},[3996,20053,4123],{"class":4006},[3996,20055,20056],{"class":3998,"line":4054},[3996,20057,4051],{"emptyLinePlaceholder":4050},[3996,20059,20060,20062,20064,20066,20068,20070,20072,20074,20076,20078],{"class":3998,"line":4075},[3996,20061,5501],{"class":4057},[3996,20063,5504],{"class":4006},[3996,20065,5564],{"class":4064},[3996,20067,3867],{"class":4006},[3996,20069,16032],{"class":4057},[3996,20071,16035],{"class":4064},[3996,20073,5509],{"class":4006},[3996,20075,5512],{"class":4057},[3996,20077,5571],{"class":4029},[3996,20079,4123],{"class":4006},[3996,20081,20082,20084,20086,20088,20090,20092,20094,20096,20098],{"class":3998,"line":4126},[3996,20083,5501],{"class":4057},[3996,20085,5504],{"class":4006},[3996,20087,16052],{"class":4064},[3996,20089,3867],{"class":4006},[3996,20091,9671],{"class":4064},[3996,20093,5509],{"class":4006},[3996,20095,5512],{"class":4057},[3996,20097,16068],{"class":4029},[3996,20099,4123],{"class":4006},[3996,20101,20102],{"class":3998,"line":4132},[3996,20103,4051],{"emptyLinePlaceholder":4050},[3996,20105,20106,20108,20110,20112,20114,20116,20118,20120,20122,20124,20126],{"class":3998,"line":4137},[3996,20107,4003],{"class":4002},[3996,20109,16081],{"class":4010},[3996,20111,16084],{"class":4006},[3996,20113,10533],{"class":4064},[3996,20115,8990],{"class":4006},[3996,20117,16091],{"class":4085},[3996,20119,16094],{"class":4006},[3996,20121,16097],{"class":4064},[3996,20123,8990],{"class":4006},[3996,20125,7692],{"class":4085},[3996,20127,16104],{"class":4006},[3996,20129,20130,20132,20134,20136,20138,20140,20142],{"class":3998,"line":4275},[3996,20131,16109],{"class":4006},[3996,20133,16112],{"class":4064},[3996,20135,16115],{"class":4029},[3996,20137,3867],{"class":4006},[3996,20139,16120],{"class":4064},[3996,20141,16123],{"class":4029},[3996,20143,5705],{"class":4006},[3996,20145,20146,20148,20150,20152,20154,20156,20158],{"class":3998,"line":4281},[3996,20147,16109],{"class":4006},[3996,20149,16112],{"class":4064},[3996,20151,5655],{"class":4029},[3996,20153,3867],{"class":4006},[3996,20155,16120],{"class":4064},[3996,20157,16140],{"class":4029},[3996,20159,5705],{"class":4006},[3996,20161,20162,20164,20166,20168,20170,20172,20174],{"class":3998,"line":4287},[3996,20163,16109],{"class":4006},[3996,20165,16112],{"class":4064},[3996,20167,5649],{"class":4029},[3996,20169,3867],{"class":4006},[3996,20171,16120],{"class":4064},[3996,20173,16157],{"class":4029},[3996,20175,5705],{"class":4006},[3996,20177,20178],{"class":3998,"line":4293},[3996,20179,10513],{"class":4006},[3996,20181,20182],{"class":3998,"line":4299},[3996,20183,4051],{"emptyLinePlaceholder":4050},[3996,20185,20186],{"class":3998,"line":4305},[3996,20187,14911],{"class":5783},[3996,20189,20190],{"class":3998,"line":4311},[3996,20191,20192],{"class":5783}," * Вкладка «Ще» — про застосунок, тема, посилання на створення поїздки (Link).\n",[3996,20194,20195],{"class":3998,"line":4317},[3996,20196,14926],{"class":5783},[3996,20198,20199,20201,20203,20205,20207],{"class":3998,"line":4323},[3996,20200,5947],{"class":4057},[3996,20202,5950],{"class":4057},[3996,20204,5953],{"class":4002},[3996,20206,12353],{"class":4022},[3996,20208,5588],{"class":4006},[3996,20210,20211,20213,20215,20217,20219,20221,20223,20225,20227,20229,20231,20233,20235,20237],{"class":3998,"line":4329},[3996,20212,5593],{"class":4002},[3996,20214,5504],{"class":4006},[3996,20216,5598],{"class":4010},[3996,20218,3867],{"class":4006},[3996,20220,16226],{"class":4010},[3996,20222,3867],{"class":4006},[3996,20224,16231],{"class":4010},[3996,20226,3867],{"class":4006},[3996,20228,16236],{"class":4010},[3996,20230,3867],{"class":4006},[3996,20232,5603],{"class":4010},[3996,20234,5606],{"class":4006},[3996,20236,5564],{"class":4022},[3996,20238,5611],{"class":4006},[3996,20240,20241],{"class":3998,"line":4335},[3996,20242,4051],{"emptyLinePlaceholder":4050},[3996,20244,20245,20247],{"class":3998,"line":4341},[3996,20246,4078],{"class":4057},[3996,20248,5622],{"class":4006},[3996,20250,20251,20253,20255,20257,20259,20261,20263,20265,20267,20269],{"class":3998,"line":4347},[3996,20252,5969],{"class":4081},[3996,20254,9671],{"class":4085},[3996,20256,5637],{"class":4089},[3996,20258,4093],{"class":4006},[3996,20260,4096],{"class":4002},[3996,20262,8789],{"class":4064},[3996,20264,3821],{"class":4099},[3996,20266,17334],{"class":4064},[3996,20268,4117],{"class":4002},[3996,20270,5924],{"class":4081},[3996,20272,20273,20275],{"class":3998,"line":4352},[3996,20274,5632],{"class":4081},[3996,20276,20277],{"class":4085},"ScrollView\n",[3996,20279,20280,20282,20284,20286],{"class":3998,"line":4357},[3996,20281,11628],{"class":4089},[3996,20283,4093],{"class":4006},[3996,20285,4096],{"class":4002},[3996,20287,5684],{"class":4099},[3996,20289,20290,20292,20294,20296,20298],{"class":3998,"line":4363},[3996,20291,17110],{"class":4064},[3996,20293,16673],{"class":4064},[3996,20295,3821],{"class":4099},[3996,20297,16678],{"class":4064},[3996,20299,5720],{"class":4099},[3996,20301,20302,20304,20306,20308,20310],{"class":3998,"line":4369},[3996,20303,19590],{"class":4064},[3996,20305,16673],{"class":4064},[3996,20307,3821],{"class":4099},[3996,20309,16741],{"class":4064},[3996,20311,5720],{"class":4099},[3996,20313,20314,20316,20318,20320,20322],{"class":3998,"line":4375},[3996,20315,19603],{"class":4064},[3996,20317,16673],{"class":4064},[3996,20319,3821],{"class":4099},[3996,20321,17131],{"class":4064},[3996,20323,5720],{"class":4099},[3996,20325,20326,20328,20330,20332,20334],{"class":3998,"line":4381},[3996,20327,17139],{"class":4064},[3996,20329,16673],{"class":4064},[3996,20331,3821],{"class":4099},[3996,20333,16678],{"class":4064},[3996,20335,5720],{"class":4099},[3996,20337,20338,20340],{"class":3998,"line":4387},[3996,20339,5768],{"class":4099},[3996,20341,4129],{"class":4002},[3996,20343,20344,20346,20348],{"class":3998,"line":4392},[3996,20345,19856],{"class":4089},[3996,20347,4093],{"class":4006},[3996,20349,16905],{"class":4002},[3996,20351,20352],{"class":3998,"line":4398},[3996,20353,5775],{"class":4081},[3996,20355,20356,20358,20360,20362,20364,20366,20368,20370,20372,20374],{"class":3998,"line":4404},[3996,20357,5791],{"class":4081},[3996,20359,16052],{"class":4085},[3996,20361,17175],{"class":4089},[3996,20363,4093],{"class":4006},[3996,20365,17478],{"class":4029},[3996,20367,8059],{"class":4081},[3996,20369,17483],{"class":4006},[3996,20371,8065],{"class":4081},[3996,20373,16052],{"class":4085},[3996,20375,5924],{"class":4081},[3996,20377,20378,20380,20382,20384,20386,20388,20390,20392,20394,20396,20398,20400,20402],{"class":3998,"line":4410},[3996,20379,5791],{"class":4081},[3996,20381,16052],{"class":4085},[3996,20383,17175],{"class":4089},[3996,20385,4093],{"class":4006},[3996,20387,17503],{"class":4029},[3996,20389,6913],{"class":4089},[3996,20391,4093],{"class":4006},[3996,20393,4096],{"class":4002},[3996,20395,5598],{"class":4064},[3996,20397,3821],{"class":4099},[3996,20399,15445],{"class":4064},[3996,20401,4117],{"class":4002},[3996,20403,5924],{"class":4081},[3996,20405,20406,20409,20411,20414],{"class":3998,"line":4415},[3996,20407,20408],{"class":4006},"          Навчальний щоденник подорожей курсу React Native (Nomad). Тема зараз:",[3996,20410,4096],{"class":4002},[3996,20412,20413],{"class":4029},"' '",[3996,20415,4129],{"class":4002},[3996,20417,20418,20420,20422,20424,20426,20428,20430,20432,20434,20436],{"class":3998,"line":4420},[3996,20419,17646],{"class":4002},[3996,20421,5603],{"class":4064},[3996,20423,5646],{"class":4006},[3996,20425,5649],{"class":4029},[3996,20427,5652],{"class":4006},[3996,20429,17544],{"class":4029},[3996,20431,5658],{"class":4006},[3996,20433,17549],{"class":4029},[3996,20435,4117],{"class":4002},[3996,20437,20438],{"class":4006},".\n",[3996,20440,20441,20443,20445],{"class":3998,"line":4426},[3996,20442,8074],{"class":4081},[3996,20444,16052],{"class":4085},[3996,20446,5924],{"class":4081},[3996,20448,20449],{"class":3998,"line":4432},[3996,20450,4051],{"emptyLinePlaceholder":4050},[3996,20452,20453,20455],{"class":3998,"line":4438},[3996,20454,5791],{"class":4081},[3996,20456,17072],{"class":4085},[3996,20458,20459,20461,20463,20465],{"class":3998,"line":4443},[3996,20460,17583],{"class":4089},[3996,20462,4093],{"class":4006},[3996,20464,4096],{"class":4002},[3996,20466,17085],{"class":4099},[3996,20468,20469,20472,20474,20476],{"class":3998,"line":4448},[3996,20470,20471],{"class":4064},"            styles",[3996,20473,3821],{"class":4099},[3996,20475,11753],{"class":4064},[3996,20477,5720],{"class":4099},[3996,20479,20480],{"class":3998,"line":4454},[3996,20481,20482],{"class":4099},"            {\n",[3996,20484,20485,20488,20490,20492,20494],{"class":3998,"line":4460},[3996,20486,20487],{"class":4064},"              backgroundColor:",[3996,20489,5697],{"class":4064},[3996,20491,3821],{"class":4099},[3996,20493,17935],{"class":4064},[3996,20495,5720],{"class":4099},[3996,20497,20498,20501,20503,20505,20507],{"class":3998,"line":4466},[3996,20499,20500],{"class":4064},"              borderColor:",[3996,20502,5697],{"class":4064},[3996,20504,3821],{"class":4099},[3996,20506,15476],{"class":4064},[3996,20508,5720],{"class":4099},[3996,20510,20511,20514,20516,20518,20520],{"class":3998,"line":4472},[3996,20512,20513],{"class":4064},"              padding:",[3996,20515,16673],{"class":4064},[3996,20517,3821],{"class":4099},[3996,20519,16678],{"class":4064},[3996,20521,5720],{"class":4099},[3996,20523,20524,20527,20529,20531,20533],{"class":3998,"line":4477},[3996,20525,20526],{"class":4064},"              gap:",[3996,20528,16673],{"class":4064},[3996,20530,3821],{"class":4099},[3996,20532,16741],{"class":4064},[3996,20534,5720],{"class":4099},[3996,20536,20537],{"class":3998,"line":5066},[3996,20538,20539],{"class":4099},"            },\n",[3996,20541,20542,20545],{"class":3998,"line":5072},[3996,20543,20544],{"class":4099},"          ]",[3996,20546,4129],{"class":4002},[3996,20548,20549],{"class":3998,"line":5078},[3996,20550,17640],{"class":4081},[3996,20552,20553,20555,20557,20559,20561,20563,20565,20567,20569,20571,20573,20575,20578,20580,20582],{"class":3998,"line":5084},[3996,20554,8031],{"class":4081},[3996,20556,16052],{"class":4085},[3996,20558,5637],{"class":4089},[3996,20560,4093],{"class":4006},[3996,20562,4096],{"class":4002},[3996,20564,5812],{"class":4099},[3996,20566,5741],{"class":4064},[3996,20568,12169],{"class":4029},[3996,20570,5821],{"class":4099},[3996,20572,4117],{"class":4002},[3996,20574,8059],{"class":4081},[3996,20576,20577],{"class":4006},"Тема оформлення",[3996,20579,8065],{"class":4081},[3996,20581,16052],{"class":4085},[3996,20583,5924],{"class":4081},[3996,20585,20586,20588,20590,20592,20594,20596,20598,20600,20602,20604,20606,20608,20610],{"class":3998,"line":5090},[3996,20587,8031],{"class":4081},[3996,20589,16052],{"class":4085},[3996,20591,17175],{"class":4089},[3996,20593,4093],{"class":4006},[3996,20595,17503],{"class":4029},[3996,20597,6913],{"class":4089},[3996,20599,4093],{"class":4006},[3996,20601,4096],{"class":4002},[3996,20603,5598],{"class":4064},[3996,20605,3821],{"class":4099},[3996,20607,15445],{"class":4064},[3996,20609,4117],{"class":4002},[3996,20611,5924],{"class":4081},[3996,20613,20614],{"class":3998,"line":5096},[3996,20615,20616],{"class":4006},"            Ті самі чіпи, що були на головному екрані — винесені також сюди, щоб\n",[3996,20618,20619],{"class":3998,"line":10510},[3996,20620,20621],{"class":4006},"            налаштування жили на окремій вкладці.\n",[3996,20623,20624,20626,20628],{"class":3998,"line":10516},[3996,20625,11883],{"class":4081},[3996,20627,16052],{"class":4085},[3996,20629,5924],{"class":4081},[3996,20631,20632,20634,20636,20638,20640,20642,20644,20646,20648,20650,20652,20654,20656,20658,20660,20662,20664],{"class":3998,"line":10521},[3996,20633,8031],{"class":4081},[3996,20635,11340],{"class":4085},[3996,20637,5637],{"class":4089},[3996,20639,4093],{"class":4006},[3996,20641,4096],{"class":4002},[3996,20643,11457],{"class":4099},[3996,20645,8789],{"class":4064},[3996,20647,3821],{"class":4099},[3996,20649,17739],{"class":4064},[3996,20651,17742],{"class":4099},[3996,20653,12652],{"class":4064},[3996,20655,16673],{"class":4064},[3996,20657,3821],{"class":4099},[3996,20659,16741],{"class":4064},[3996,20661,17763],{"class":4099},[3996,20663,4117],{"class":4002},[3996,20665,5924],{"class":4081},[3996,20667,20668,20671,20673,20675,20677,20679,20681,20683,20685],{"class":3998,"line":10552},[3996,20669,20670],{"class":4002},"            {",[3996,20672,17775],{"class":4010},[3996,20674,3821],{"class":4099},[3996,20676,17780],{"class":4022},[3996,20678,10564],{"class":4099},[3996,20680,3743],{"class":4064},[3996,20682,8996],{"class":4099},[3996,20684,4103],{"class":4002},[3996,20686,7958],{"class":4099},[3996,20688,20689,20692,20694,20696,20698,20700,20702,20704,20706],{"class":3998,"line":10587},[3996,20690,20691],{"class":4002},"              const",[3996,20693,17799],{"class":4010},[3996,20695,17802],{"class":4006},[3996,20697,17805],{"class":4064},[3996,20699,5646],{"class":4006},[3996,20701,17810],{"class":4064},[3996,20703,3821],{"class":4099},[3996,20705,10533],{"class":4064},[3996,20707,4123],{"class":4099},[3996,20709,20710,20713],{"class":3998,"line":12205},[3996,20711,20712],{"class":4057},"              return",[3996,20714,5622],{"class":4099},[3996,20716,20717,20719],{"class":3998,"line":12213},[3996,20718,18036],{"class":4081},[3996,20720,17832],{"class":4085},[3996,20722,20723,20726,20728,20730,20732,20734,20736],{"class":3998,"line":12223},[3996,20724,20725],{"class":4089},"                  key",[3996,20727,4093],{"class":4006},[3996,20729,4096],{"class":4002},[3996,20731,3743],{"class":4064},[3996,20733,3821],{"class":4099},[3996,20735,10533],{"class":4064},[3996,20737,4129],{"class":4002},[3996,20739,20740,20743,20745,20747,20749,20751,20753,20755,20757,20759,20761,20763],{"class":3998,"line":12233},[3996,20741,20742],{"class":4089},"                  onPress",[3996,20744,4093],{"class":4006},[3996,20746,4096],{"class":4002},[3996,20748,4100],{"class":4099},[3996,20750,4103],{"class":4002},[3996,20752,17867],{"class":4022},[3996,20754,4109],{"class":4099},[3996,20756,3743],{"class":4064},[3996,20758,3821],{"class":4099},[3996,20760,10533],{"class":4064},[3996,20762,4114],{"class":4099},[3996,20764,4129],{"class":4002},[3996,20766,20767,20769,20771,20773],{"class":3998,"line":12243},[3996,20768,18086],{"class":4089},[3996,20770,4093],{"class":4006},[3996,20772,4096],{"class":4002},[3996,20774,17085],{"class":4099},[3996,20776,20777,20780,20782,20784],{"class":3998,"line":12253},[3996,20778,20779],{"class":4064},"                    styles",[3996,20781,3821],{"class":4099},[3996,20783,17902],{"class":4064},[3996,20785,5720],{"class":4099},[3996,20787,20788],{"class":3998,"line":12258},[3996,20789,20790],{"class":4099},"                    {\n",[3996,20792,20793,20796,20798,20800,20802,20804,20806,20808,20810,20812,20814],{"class":3998,"line":16645},[3996,20794,20795],{"class":4064},"                      backgroundColor:",[3996,20797,17799],{"class":4064},[3996,20799,5652],{"class":4006},[3996,20801,5697],{"class":4064},[3996,20803,3821],{"class":4099},[3996,20805,5717],{"class":4064},[3996,20807,5658],{"class":4006},[3996,20809,5697],{"class":4064},[3996,20811,3821],{"class":4099},[3996,20813,17935],{"class":4064},[3996,20815,5720],{"class":4099},[3996,20817,20818,20821,20823,20825,20827],{"class":3998,"line":16656},[3996,20819,20820],{"class":4064},"                      borderColor:",[3996,20822,5697],{"class":4064},[3996,20824,3821],{"class":4099},[3996,20826,15476],{"class":4064},[3996,20828,5720],{"class":4099},[3996,20830,20831],{"class":3998,"line":16698},[3996,20832,20833],{"class":4099},"                    },\n",[3996,20835,20836,20839],{"class":3998,"line":16720},[3996,20837,20838],{"class":4099},"                  ]",[3996,20840,4129],{"class":4002},[3996,20842,20843,20846,20848],{"class":3998,"line":16750},[3996,20844,20845],{"class":4089},"                  accessibilityRole",[3996,20847,4093],{"class":4006},[3996,20849,17976],{"class":4029},[3996,20851,20852,20855,20857,20859,20861,20863,20865,20867],{"class":3998,"line":16784},[3996,20853,20854],{"class":4089},"                  accessibilityState",[3996,20856,4093],{"class":4006},[3996,20858,4096],{"class":4002},[3996,20860,5812],{"class":4099},[3996,20862,17991],{"class":4064},[3996,20864,17799],{"class":4064},[3996,20866,5821],{"class":4099},[3996,20868,4129],{"class":4002},[3996,20870,20871,20874,20876,20878,20880,20882,20884,20886,20888,20890,20892],{"class":3998,"line":16791},[3996,20872,20873],{"class":4089},"                  accessibilityLabel",[3996,20875,4093],{"class":4006},[3996,20877,4096],{"class":4002},[3996,20879,18010],{"class":4029},[3996,20881,11717],{"class":4002},[3996,20883,3743],{"class":4064},[3996,20885,3821],{"class":4099},[3996,20887,16097],{"class":4064},[3996,20889,4117],{"class":4002},[3996,20891,11728],{"class":4029},[3996,20893,4129],{"class":4002},[3996,20895,20896],{"class":3998,"line":16797},[3996,20897,18105],{"class":4081},[3996,20899,20900,20903],{"class":3998,"line":16811},[3996,20901,20902],{"class":4081},"                  \u003C",[3996,20904,17220],{"class":4085},[3996,20906,20907,20910,20912],{"class":3998,"line":16837},[3996,20908,20909],{"class":4089},"                    variant",[3996,20911,4093],{"class":4006},[3996,20913,17231],{"class":4029},[3996,20915,20916,20919,20921,20923,20925,20927,20929,20931,20933,20935,20937,20939,20941],{"class":3998,"line":16857},[3996,20917,20918],{"class":4089},"                    color",[3996,20920,4093],{"class":4006},[3996,20922,4096],{"class":4002},[3996,20924,18061],{"class":4064},[3996,20926,5652],{"class":4006},[3996,20928,5697],{"class":4064},[3996,20930,3821],{"class":4099},[3996,20932,18070],{"class":4064},[3996,20934,5658],{"class":4006},[3996,20936,5697],{"class":4064},[3996,20938,3821],{"class":4099},[3996,20940,4227],{"class":4064},[3996,20942,4129],{"class":4002},[3996,20944,20945,20948,20950,20952,20954,20956,20958],{"class":3998,"line":16889},[3996,20946,20947],{"class":4089},"                    style",[3996,20949,4093],{"class":4006},[3996,20951,4096],{"class":4002},[3996,20953,8789],{"class":4064},[3996,20955,3821],{"class":4099},[3996,20957,18097],{"class":4064},[3996,20959,4129],{"class":4002},[3996,20961,20962],{"class":3998,"line":16897},[3996,20963,20964],{"class":4081},"                  >\n",[3996,20966,20967,20970,20972,20974,20976],{"class":3998,"line":16908},[3996,20968,20969],{"class":4002},"                    {",[3996,20971,3743],{"class":4064},[3996,20973,3821],{"class":4099},[3996,20975,16097],{"class":4064},[3996,20977,4129],{"class":4002},[3996,20979,20980,20983,20985],{"class":3998,"line":16951},[3996,20981,20982],{"class":4081},"                  \u003C\u002F",[3996,20984,16052],{"class":4085},[3996,20986,5924],{"class":4081},[3996,20988,20989,20991,20993],{"class":3998,"line":16973},[3996,20990,18125],{"class":4081},[3996,20992,7896],{"class":4085},[3996,20994,5924],{"class":4081},[3996,20996,20997],{"class":3998,"line":16979},[3996,20998,20999],{"class":4099},"              );\n",[3996,21001,21002,21005],{"class":3998,"line":16988},[3996,21003,21004],{"class":4099},"            })",[3996,21006,4129],{"class":4002},[3996,21008,21009,21011,21013],{"class":3998,"line":16999},[3996,21010,11883],{"class":4081},[3996,21012,11340],{"class":4085},[3996,21014,5924],{"class":4081},[3996,21016,21017,21019,21021],{"class":3998,"line":17004},[3996,21018,8074],{"class":4081},[3996,21020,11340],{"class":4085},[3996,21022,5924],{"class":4081},[3996,21024,21025],{"class":3998,"line":17038},[3996,21026,4051],{"emptyLinePlaceholder":4050},[3996,21028,21029,21031],{"class":3998,"line":17047},[3996,21030,5791],{"class":4081},[3996,21032,17072],{"class":4085},[3996,21034,21035,21037,21039,21041],{"class":3998,"line":17052},[3996,21036,17583],{"class":4089},[3996,21038,4093],{"class":4006},[3996,21040,4096],{"class":4002},[3996,21042,17085],{"class":4099},[3996,21044,21045,21047,21049,21051],{"class":3998,"line":17057},[3996,21046,20471],{"class":4064},[3996,21048,3821],{"class":4099},[3996,21050,11753],{"class":4064},[3996,21052,5720],{"class":4099},[3996,21054,21055],{"class":3998,"line":17067},[3996,21056,20482],{"class":4099},[3996,21058,21059,21061,21063,21065,21067],{"class":3998,"line":17075},[3996,21060,20487],{"class":4064},[3996,21062,5697],{"class":4064},[3996,21064,3821],{"class":4099},[3996,21066,17935],{"class":4064},[3996,21068,5720],{"class":4099},[3996,21070,21071,21073,21075,21077,21079],{"class":3998,"line":17088},[3996,21072,20500],{"class":4064},[3996,21074,5697],{"class":4064},[3996,21076,3821],{"class":4099},[3996,21078,15476],{"class":4064},[3996,21080,5720],{"class":4099},[3996,21082,21083,21085,21087,21089,21091],{"class":3998,"line":17101},[3996,21084,20513],{"class":4064},[3996,21086,16673],{"class":4064},[3996,21088,3821],{"class":4099},[3996,21090,16678],{"class":4064},[3996,21092,5720],{"class":4099},[3996,21094,21095,21097,21099,21101,21103],{"class":3998,"line":17107},[3996,21096,20526],{"class":4064},[3996,21098,16673],{"class":4064},[3996,21100,3821],{"class":4099},[3996,21102,16741],{"class":4064},[3996,21104,5720],{"class":4099},[3996,21106,21107],{"class":3998,"line":17121},[3996,21108,20539],{"class":4099},[3996,21110,21111,21113],{"class":3998,"line":17136},[3996,21112,20544],{"class":4099},[3996,21114,4129],{"class":4002},[3996,21116,21117],{"class":3998,"line":17150},[3996,21118,17640],{"class":4081},[3996,21120,21121,21123,21125,21127,21129,21131,21133,21135,21137,21139,21141,21143,21146,21148,21150],{"class":3998,"line":17155},[3996,21122,8031],{"class":4081},[3996,21124,16052],{"class":4085},[3996,21126,5637],{"class":4089},[3996,21128,4093],{"class":4006},[3996,21130,4096],{"class":4002},[3996,21132,5812],{"class":4099},[3996,21134,5741],{"class":4064},[3996,21136,12169],{"class":4029},[3996,21138,5821],{"class":4099},[3996,21140,4117],{"class":4002},[3996,21142,8059],{"class":4081},[3996,21144,21145],{"class":4006},"Навігація (Expo Router)",[3996,21147,8065],{"class":4081},[3996,21149,16052],{"class":4085},[3996,21151,5924],{"class":4081},[3996,21153,21154,21156,21158,21160,21162,21164,21166,21168,21170,21172,21174,21176,21178],{"class":3998,"line":17163},[3996,21155,8031],{"class":4081},[3996,21157,16052],{"class":4085},[3996,21159,17175],{"class":4089},[3996,21161,4093],{"class":4006},[3996,21163,17503],{"class":4029},[3996,21165,6913],{"class":4089},[3996,21167,4093],{"class":4006},[3996,21169,4096],{"class":4002},[3996,21171,5598],{"class":4064},[3996,21173,3821],{"class":4099},[3996,21175,15445],{"class":4064},[3996,21177,4117],{"class":4002},[3996,21179,5924],{"class":4081},[3996,21181,21182],{"class":3998,"line":17168},[3996,21183,21184],{"class":4006},"            Нижні вкладки — група маршрутів (tabs). «Нова поїздка» відкривається\n",[3996,21186,21187],{"class":3998,"line":17200},[3996,21188,21189],{"class":4006},"            поверх вкладок у Stack. Нижче — приклад компонента Link (як якір на\n",[3996,21191,21192],{"class":3998,"line":17206},[3996,21193,21194],{"class":4006},"            вебі).\n",[3996,21196,21197,21199,21201],{"class":3998,"line":17215},[3996,21198,11883],{"class":4081},[3996,21200,16052],{"class":4085},[3996,21202,5924],{"class":4081},[3996,21204,21205,21207,21209,21211,21213,21215,21217],{"class":3998,"line":17223},[3996,21206,8031],{"class":4081},[3996,21208,3852],{"class":4085},[3996,21210,8641],{"class":4089},[3996,21212,4093],{"class":4006},[3996,21214,8646],{"class":4029},[3996,21216,8772],{"class":4089},[3996,21218,5924],{"class":4081},[3996,21220,21221,21223],{"class":3998,"line":17234},[3996,21222,11117],{"class":4081},[3996,21224,17832],{"class":4085},[3996,21226,21227,21230,21232,21234],{"class":3998,"line":17252},[3996,21228,21229],{"class":4089},"              style",[3996,21231,4093],{"class":4006},[3996,21233,4096],{"class":4002},[3996,21235,17085],{"class":4099},[3996,21237,21238,21241,21243,21246],{"class":3998,"line":17271},[3996,21239,21240],{"class":4064},"                styles",[3996,21242,3821],{"class":4099},[3996,21244,21245],{"class":4064},"linkBtn",[3996,21247,5720],{"class":4099},[3996,21249,21250],{"class":3998,"line":17276},[3996,21251,21252],{"class":4099},"                {\n",[3996,21254,21255,21258,21260,21262,21264],{"class":3998,"line":17282},[3996,21256,21257],{"class":4064},"                  backgroundColor:",[3996,21259,5697],{"class":4064},[3996,21261,3821],{"class":4099},[3996,21263,5717],{"class":4064},[3996,21265,5720],{"class":4099},[3996,21267,21268,21271,21273,21275,21277,21280,21282],{"class":3998,"line":17291},[3996,21269,21270],{"class":4064},"                  paddingVertical:",[3996,21272,16673],{"class":4064},[3996,21274,3821],{"class":4099},[3996,21276,16741],{"class":4064},[3996,21278,21279],{"class":4006}," +",[3996,21281,12055],{"class":11033},[3996,21283,5720],{"class":4099},[3996,21285,21286,21289,21291],{"class":3998,"line":17300},[3996,21287,21288],{"class":4064},"                  borderRadius:",[3996,21290,11034],{"class":11033},[3996,21292,5720],{"class":4099},[3996,21294,21295],{"class":3998,"line":17305},[3996,21296,21297],{"class":4099},"                },\n",[3996,21299,21300,21303],{"class":3998,"line":17310},[3996,21301,21302],{"class":4099},"              ]",[3996,21304,4129],{"class":4002},[3996,21306,21307],{"class":3998,"line":17317},[3996,21308,21309],{"class":4081},"            >\n",[3996,21311,21312,21314,21316,21318,21320,21322,21324,21326,21328,21330,21332,21334,21336,21338,21340,21342,21344,21346],{"class":3998,"line":17341},[3996,21313,11762],{"class":4081},[3996,21315,16052],{"class":4085},[3996,21317,6913],{"class":4089},[3996,21319,4093],{"class":4006},[3996,21321,4096],{"class":4002},[3996,21323,5598],{"class":4064},[3996,21325,3821],{"class":4099},[3996,21327,18070],{"class":4064},[3996,21329,4117],{"class":4002},[3996,21331,5637],{"class":4089},[3996,21333,4093],{"class":4006},[3996,21335,4096],{"class":4002},[3996,21337,5812],{"class":4099},[3996,21339,5741],{"class":4064},[3996,21341,12169],{"class":4029},[3996,21343,5821],{"class":4099},[3996,21345,4117],{"class":4002},[3996,21347,5924],{"class":4081},[3996,21349,21350],{"class":3998,"line":17348},[3996,21351,21352],{"class":4006},"                Відкрити форму (Link)\n",[3996,21354,21355,21357,21359],{"class":3998,"line":17359},[3996,21356,18135],{"class":4081},[3996,21358,16052],{"class":4085},[3996,21360,5924],{"class":4081},[3996,21362,21363,21365,21367],{"class":3998,"line":17371},[3996,21364,11874],{"class":4081},[3996,21366,7896],{"class":4085},[3996,21368,5924],{"class":4081},[3996,21370,21371,21373,21375],{"class":3998,"line":17377},[3996,21372,11883],{"class":4081},[3996,21374,3852],{"class":4085},[3996,21376,5924],{"class":4081},[3996,21378,21379,21381,21383],{"class":3998,"line":17391},[3996,21380,8074],{"class":4081},[3996,21382,11340],{"class":4085},[3996,21384,5924],{"class":4081},[3996,21386,21387],{"class":3998,"line":17405},[3996,21388,4051],{"emptyLinePlaceholder":4050},[3996,21390,21391,21393,21395,21397,21399,21401,21403,21405,21407,21409,21411,21413,21415],{"class":3998,"line":17419},[3996,21392,5791],{"class":4081},[3996,21394,16052],{"class":4085},[3996,21396,17175],{"class":4089},[3996,21398,4093],{"class":4006},[3996,21400,17503],{"class":4029},[3996,21402,6913],{"class":4089},[3996,21404,4093],{"class":4006},[3996,21406,4096],{"class":4002},[3996,21408,5598],{"class":4064},[3996,21410,3821],{"class":4099},[3996,21412,15445],{"class":4064},[3996,21414,4117],{"class":4002},[3996,21416,5924],{"class":4081},[3996,21418,21419],{"class":3998,"line":17434},[3996,21420,21421],{"class":4006},"          Репозиторій: github.com\u002Farakviel\u002Fnomad\n",[3996,21423,21424,21426,21428],{"class":3998,"line":17448},[3996,21425,8074],{"class":4081},[3996,21427,16052],{"class":4085},[3996,21429,5924],{"class":4081},[3996,21431,21432,21434,21436],{"class":3998,"line":17454},[3996,21433,5919],{"class":4081},[3996,21435,12290],{"class":4085},[3996,21437,5924],{"class":4081},[3996,21439,21440,21442,21444],{"class":3998,"line":17462},[3996,21441,6003],{"class":4081},[3996,21443,9671],{"class":4085},[3996,21445,5924],{"class":4081},[3996,21447,21448],{"class":3998,"line":17467},[3996,21449,5934],{"class":4006},[3996,21451,21452],{"class":3998,"line":17492},[3996,21453,4129],{"class":4006},[3996,21455,21456],{"class":3998,"line":17528},[3996,21457,4051],{"emptyLinePlaceholder":4050},[3996,21459,21460,21462,21464,21466,21468,21470,21472],{"class":3998,"line":17554},[3996,21461,4003],{"class":4002},[3996,21463,11925],{"class":4010},[3996,21465,7937],{"class":4006},[3996,21467,8741],{"class":4064},[3996,21469,3821],{"class":4006},[3996,21471,11934],{"class":4022},[3996,21473,7971],{"class":4006},[3996,21475,21476,21478],{"class":3998,"line":17563},[3996,21477,18746],{"class":4064},[3996,21479,7958],{"class":4006},[3996,21481,21482,21484,21486],{"class":3998,"line":17570},[3996,21483,11969],{"class":4064},[3996,21485,16713],{"class":11033},[3996,21487,5720],{"class":4006},[3996,21489,21490],{"class":3998,"line":17580},[3996,21491,10287],{"class":4006},[3996,21493,21494,21496],{"class":3998,"line":17592},[3996,21495,12097],{"class":4064},[3996,21497,7958],{"class":4006},[3996,21499,21500,21502,21504],{"class":3998,"line":17606},[3996,21501,12123],{"class":4064},[3996,21503,11949],{"class":11033},[3996,21505,5720],{"class":4006},[3996,21507,21508,21510,21512],{"class":3998,"line":17620},[3996,21509,12114],{"class":4064},[3996,21511,11034],{"class":11033},[3996,21513,5720],{"class":4006},[3996,21515,21516],{"class":3998,"line":17630},[3996,21517,10287],{"class":4006},[3996,21519,21520,21522],{"class":3998,"line":17637},[3996,21521,18789],{"class":4064},[3996,21523,7958],{"class":4006},[3996,21525,21526,21528,21530],{"class":3998,"line":17643},[3996,21527,18797],{"class":4064},[3996,21529,18800],{"class":4029},[3996,21531,5720],{"class":4006},[3996,21533,21534,21536,21538],{"class":3998,"line":17660},[3996,21535,18808],{"class":4064},[3996,21537,18811],{"class":4029},[3996,21539,5720],{"class":4006},[3996,21541,21542],{"class":3998,"line":17695},[3996,21543,10287],{"class":4006},[3996,21545,21546,21548],{"class":3998,"line":17706},[3996,21547,18824],{"class":4064},[3996,21549,7958],{"class":4006},[3996,21551,21552,21554,21556],{"class":3998,"line":17715},[3996,21553,11969],{"class":4064},[3996,21555,11034],{"class":11033},[3996,21557,5720],{"class":4006},[3996,21559,21560,21562,21564],{"class":3998,"line":17720},[3996,21561,18841],{"class":4064},[3996,21563,11982],{"class":11033},[3996,21565,5720],{"class":4006},[3996,21567,21568,21570,21572],{"class":3998,"line":17770},[3996,21569,12114],{"class":4064},[3996,21571,11982],{"class":11033},[3996,21573,5720],{"class":4006},[3996,21575,21576,21578,21580],{"class":3998,"line":17793},[3996,21577,12123],{"class":4064},[3996,21579,11949],{"class":11033},[3996,21581,5720],{"class":4006},[3996,21583,21584],{"class":3998,"line":17819},[3996,21585,10287],{"class":4006},[3996,21587,21588,21590],{"class":3998,"line":17827},[3996,21589,18874],{"class":4064},[3996,21591,7958],{"class":4006},[3996,21593,21594,21596,21598],{"class":3998,"line":17835},[3996,21595,12236],{"class":4064},[3996,21597,5744],{"class":4029},[3996,21599,5720],{"class":4006},[3996,21601,21602],{"class":3998,"line":17853},[3996,21603,10287],{"class":4006},[3996,21605,21606,21609],{"class":3998,"line":17882},[3996,21607,21608],{"class":4064},"  linkBtn:",[3996,21610,7958],{"class":4006},[3996,21612,21613,21615,21617],{"class":3998,"line":17894},[3996,21614,13446],{"class":4064},[3996,21616,13439],{"class":4029},[3996,21618,5720],{"class":4006},[3996,21620,21621],{"class":3998,"line":17907},[3996,21622,10287],{"class":4006},[3996,21624,21625],{"class":3998,"line":17913},[3996,21626,12261],{"class":4006},[3987,21628,21630],{"className":3989,"code":21629,"filename":6104,"language":3991,"meta":3992,"style":3992},"import { StyleSheet } from 'react-native';\nimport { useRouter } from 'expo-router';\n\nimport { CreateTripForm, useTrips } from '@\u002Ffeatures\u002Ftrips';\nimport { Screen } from '@\u002Fshared\u002Fui';\n\n\u002F**\n * Екран створення поїздки — Stack-екран поза Tabs.\n * Заголовок і системна кнопка «назад» задаються в app\u002F_layout.tsx (Stack.Screen options).\n *\u002F\nexport default function CreateTripScreen() {\n  const router = useRouter();\n  const { addTrip } = useTrips();\n\n  return (\n    \u003CScreen style={styles.screen}>\n      \u003CCreateTripForm\n        onSubmitSuccess={(trip) => {\n          addTrip(trip);\n          router.back();\n        }}\n        onCancel={() => router.back()}\n      \u002F>\n    \u003C\u002FScreen>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    paddingHorizontal: 0,\n  },\n});\n",[3747,21631,21632,21648,21664,21668,21689,21705,21709,21713,21718,21723,21727,21740,21752,21767,21771,21777,21799,21806,21825,21836,21847,21853,21877,21881,21889,21893,21897,21901,21917,21923,21931,21935],{"__ignoreMap":3992},[3996,21633,21634,21636,21638,21640,21642,21644,21646],{"class":3998,"line":3999},[3996,21635,5501],{"class":4057},[3996,21637,5504],{"class":4006},[3996,21639,8741],{"class":4064},[3996,21641,5509],{"class":4006},[3996,21643,5512],{"class":4057},[3996,21645,7908],{"class":4029},[3996,21647,4123],{"class":4006},[3996,21649,21650,21652,21654,21656,21658,21660,21662],{"class":3998,"line":4047},[3996,21651,5501],{"class":4057},[3996,21653,5504],{"class":4006},[3996,21655,3862],{"class":4064},[3996,21657,5509],{"class":4006},[3996,21659,5512],{"class":4057},[3996,21661,5515],{"class":4029},[3996,21663,4123],{"class":4006},[3996,21665,21666],{"class":3998,"line":4054},[3996,21667,4051],{"emptyLinePlaceholder":4050},[3996,21669,21670,21672,21674,21677,21679,21681,21683,21685,21687],{"class":3998,"line":4075},[3996,21671,5501],{"class":4057},[3996,21673,5504],{"class":4006},[3996,21675,21676],{"class":4064},"CreateTripForm",[3996,21678,3867],{"class":4006},[3996,21680,16211],{"class":4064},[3996,21682,5509],{"class":4006},[3996,21684,5512],{"class":4057},[3996,21686,5549],{"class":4029},[3996,21688,4123],{"class":4006},[3996,21690,21691,21693,21695,21697,21699,21701,21703],{"class":3998,"line":4126},[3996,21692,5501],{"class":4057},[3996,21694,5504],{"class":4006},[3996,21696,9671],{"class":4064},[3996,21698,5509],{"class":4006},[3996,21700,5512],{"class":4057},[3996,21702,16068],{"class":4029},[3996,21704,4123],{"class":4006},[3996,21706,21707],{"class":3998,"line":4132},[3996,21708,4051],{"emptyLinePlaceholder":4050},[3996,21710,21711],{"class":3998,"line":4137},[3996,21712,14911],{"class":5783},[3996,21714,21715],{"class":3998,"line":4275},[3996,21716,21717],{"class":5783}," * Екран створення поїздки — Stack-екран поза Tabs.\n",[3996,21719,21720],{"class":3998,"line":4281},[3996,21721,21722],{"class":5783}," * Заголовок і системна кнопка «назад» задаються в app\u002F_layout.tsx (Stack.Screen options).\n",[3996,21724,21725],{"class":3998,"line":4287},[3996,21726,14926],{"class":5783},[3996,21728,21729,21731,21733,21735,21738],{"class":3998,"line":4293},[3996,21730,5947],{"class":4057},[3996,21732,5950],{"class":4057},[3996,21734,5953],{"class":4002},[3996,21736,21737],{"class":4022}," CreateTripScreen",[3996,21739,5588],{"class":4006},[3996,21741,21742,21744,21746,21748,21750],{"class":3998,"line":4299},[3996,21743,5593],{"class":4002},[3996,21745,8960],{"class":4010},[3996,21747,7937],{"class":4006},[3996,21749,3862],{"class":4022},[3996,21751,5611],{"class":4006},[3996,21753,21754,21756,21758,21761,21763,21765],{"class":3998,"line":4305},[3996,21755,5593],{"class":4002},[3996,21757,5504],{"class":4006},[3996,21759,21760],{"class":4010},"addTrip",[3996,21762,5606],{"class":4006},[3996,21764,16211],{"class":4022},[3996,21766,5611],{"class":4006},[3996,21768,21769],{"class":3998,"line":4311},[3996,21770,4051],{"emptyLinePlaceholder":4050},[3996,21772,21773,21775],{"class":3998,"line":4317},[3996,21774,4078],{"class":4057},[3996,21776,5622],{"class":4006},[3996,21778,21779,21781,21783,21785,21787,21789,21791,21793,21795,21797],{"class":3998,"line":4323},[3996,21780,5969],{"class":4081},[3996,21782,9671],{"class":4085},[3996,21784,5637],{"class":4089},[3996,21786,4093],{"class":4006},[3996,21788,4096],{"class":4002},[3996,21790,8789],{"class":4064},[3996,21792,3821],{"class":4099},[3996,21794,17334],{"class":4064},[3996,21796,4117],{"class":4002},[3996,21798,5924],{"class":4081},[3996,21800,21801,21803],{"class":3998,"line":4329},[3996,21802,5632],{"class":4081},[3996,21804,21805],{"class":4085},"CreateTripForm\n",[3996,21807,21808,21811,21813,21815,21817,21819,21821,21823],{"class":3998,"line":4335},[3996,21809,21810],{"class":4089},"        onSubmitSuccess",[3996,21812,4093],{"class":4006},[3996,21814,4096],{"class":4002},[3996,21816,4109],{"class":4099},[3996,21818,16315],{"class":4064},[3996,21820,8996],{"class":4099},[3996,21822,4103],{"class":4002},[3996,21824,7958],{"class":4099},[3996,21826,21827,21830,21832,21834],{"class":3998,"line":4341},[3996,21828,21829],{"class":4022},"          addTrip",[3996,21831,4109],{"class":4099},[3996,21833,16315],{"class":4064},[3996,21835,4044],{"class":4099},[3996,21837,21838,21841,21843,21845],{"class":3998,"line":4347},[3996,21839,21840],{"class":4064},"          router",[3996,21842,3821],{"class":4099},[3996,21844,3870],{"class":4022},[3996,21846,5611],{"class":4099},[3996,21848,21849,21851],{"class":3998,"line":4352},[3996,21850,5768],{"class":4099},[3996,21852,4129],{"class":4002},[3996,21854,21855,21858,21860,21862,21864,21866,21868,21870,21872,21875],{"class":3998,"line":4357},[3996,21856,21857],{"class":4089},"        onCancel",[3996,21859,4093],{"class":4006},[3996,21861,4096],{"class":4002},[3996,21863,4100],{"class":4099},[3996,21865,4103],{"class":4002},[3996,21867,8960],{"class":4064},[3996,21869,3821],{"class":4099},[3996,21871,3870],{"class":4022},[3996,21873,21874],{"class":4099},"()",[3996,21876,4129],{"class":4002},[3996,21878,21879],{"class":3998,"line":4363},[3996,21880,11164],{"class":4081},[3996,21882,21883,21885,21887],{"class":3998,"line":4369},[3996,21884,6003],{"class":4081},[3996,21886,9671],{"class":4085},[3996,21888,5924],{"class":4081},[3996,21890,21891],{"class":3998,"line":4375},[3996,21892,5934],{"class":4006},[3996,21894,21895],{"class":3998,"line":4381},[3996,21896,4129],{"class":4006},[3996,21898,21899],{"class":3998,"line":4387},[3996,21900,4051],{"emptyLinePlaceholder":4050},[3996,21902,21903,21905,21907,21909,21911,21913,21915],{"class":3998,"line":4392},[3996,21904,4003],{"class":4002},[3996,21906,11925],{"class":4010},[3996,21908,7937],{"class":4006},[3996,21910,8741],{"class":4064},[3996,21912,3821],{"class":4006},[3996,21914,11934],{"class":4022},[3996,21916,7971],{"class":4006},[3996,21918,21919,21921],{"class":3998,"line":4398},[3996,21920,18746],{"class":4064},[3996,21922,7958],{"class":4006},[3996,21924,21925,21927,21929],{"class":3998,"line":4404},[3996,21926,11969],{"class":4064},[3996,21928,16713],{"class":11033},[3996,21930,5720],{"class":4006},[3996,21932,21933],{"class":3998,"line":4410},[3996,21934,10287],{"class":4006},[3996,21936,21937],{"class":3998,"line":4415},[3996,21938,12261],{"class":4006},[3987,21940,21943],{"className":10127,"code":21941,"filename":21942,"language":10129,"meta":3992,"style":3992},"export { mockTrips } from '.\u002Fmodel\u002FmockTrips';\nexport { mockPlaces } from '.\u002Fmodel\u002FmockPlaces';\nexport type { Trip, Place, TripRegion } from '.\u002Fmodel\u002Ftypes';\nexport { TRIP_REGIONS } from '.\u002Fmodel\u002Ftypes';\nexport { TripCard } from '.\u002Fui\u002FTripCard';\nexport { PlaceChip } from '.\u002Fui\u002FPlaceChip';\nexport { CreateTripForm } from '.\u002Fui\u002FCreateTripForm';\nexport { DateField } from '.\u002Fui\u002FDateField';\nexport { FormRow } from '.\u002Fui\u002FFormRow';\nexport { TripsProvider, useTrips } from '.\u002Fmodel\u002FTripsProvider';\nexport {\n  createTripSchema,\n  type CreateTripFormValues,\n} from '.\u002Fmodel\u002FcreateTripSchema';\nexport { formatTripDateLabel } from '.\u002Fmodel\u002FformatTripDates';\n","src\u002Ffeatures\u002Ftrips\u002Findex.ts",[3747,21944,21945,21963,21980,22008,22025,22042,22059,22076,22094,22112,22133,22139,22146,22155,22166],{"__ignoreMap":3992},[3996,21946,21947,21949,21951,21954,21956,21958,21961],{"class":3998,"line":3999},[3996,21948,5947],{"class":4057},[3996,21950,5504],{"class":4006},[3996,21952,21953],{"class":4064},"mockTrips",[3996,21955,5509],{"class":4006},[3996,21957,5512],{"class":4057},[3996,21959,21960],{"class":4029}," '.\u002Fmodel\u002FmockTrips'",[3996,21962,4123],{"class":4006},[3996,21964,21965,21967,21969,21971,21973,21975,21978],{"class":3998,"line":4047},[3996,21966,5947],{"class":4057},[3996,21968,5504],{"class":4006},[3996,21970,16269],{"class":4064},[3996,21972,5509],{"class":4006},[3996,21974,5512],{"class":4057},[3996,21976,21977],{"class":4029}," '.\u002Fmodel\u002FmockPlaces'",[3996,21979,4123],{"class":4006},[3996,21981,21982,21984,21986,21988,21990,21992,21994,21996,21999,22001,22003,22006],{"class":3998,"line":4054},[3996,21983,5947],{"class":4057},[3996,21985,10138],{"class":4057},[3996,21987,5504],{"class":4006},[3996,21989,16320],{"class":4064},[3996,21991,3867],{"class":4006},[3996,21993,16263],{"class":4064},[3996,21995,3867],{"class":4006},[3996,21997,21998],{"class":4064},"TripRegion",[3996,22000,5509],{"class":4006},[3996,22002,5512],{"class":4057},[3996,22004,22005],{"class":4029}," '.\u002Fmodel\u002Ftypes'",[3996,22007,4123],{"class":4006},[3996,22009,22010,22012,22014,22017,22019,22021,22023],{"class":3998,"line":4075},[3996,22011,5947],{"class":4057},[3996,22013,5504],{"class":4006},[3996,22015,22016],{"class":4064},"TRIP_REGIONS",[3996,22018,5509],{"class":4006},[3996,22020,5512],{"class":4057},[3996,22022,22005],{"class":4029},[3996,22024,4123],{"class":4006},[3996,22026,22027,22029,22031,22033,22035,22037,22040],{"class":3998,"line":4126},[3996,22028,5947],{"class":4057},[3996,22030,5504],{"class":4006},[3996,22032,16560],{"class":4064},[3996,22034,5509],{"class":4006},[3996,22036,5512],{"class":4057},[3996,22038,22039],{"class":4029}," '.\u002Fui\u002FTripCard'",[3996,22041,4123],{"class":4006},[3996,22043,22044,22046,22048,22050,22052,22054,22057],{"class":3998,"line":4132},[3996,22045,5947],{"class":4057},[3996,22047,5504],{"class":4006},[3996,22049,16862],{"class":4064},[3996,22051,5509],{"class":4006},[3996,22053,5512],{"class":4057},[3996,22055,22056],{"class":4029}," '.\u002Fui\u002FPlaceChip'",[3996,22058,4123],{"class":4006},[3996,22060,22061,22063,22065,22067,22069,22071,22074],{"class":3998,"line":4137},[3996,22062,5947],{"class":4057},[3996,22064,5504],{"class":4006},[3996,22066,21676],{"class":4064},[3996,22068,5509],{"class":4006},[3996,22070,5512],{"class":4057},[3996,22072,22073],{"class":4029}," '.\u002Fui\u002FCreateTripForm'",[3996,22075,4123],{"class":4006},[3996,22077,22078,22080,22082,22085,22087,22089,22092],{"class":3998,"line":4275},[3996,22079,5947],{"class":4057},[3996,22081,5504],{"class":4006},[3996,22083,22084],{"class":4064},"DateField",[3996,22086,5509],{"class":4006},[3996,22088,5512],{"class":4057},[3996,22090,22091],{"class":4029}," '.\u002Fui\u002FDateField'",[3996,22093,4123],{"class":4006},[3996,22095,22096,22098,22100,22103,22105,22107,22110],{"class":3998,"line":4281},[3996,22097,5947],{"class":4057},[3996,22099,5504],{"class":4006},[3996,22101,22102],{"class":4064},"FormRow",[3996,22104,5509],{"class":4006},[3996,22106,5512],{"class":4057},[3996,22108,22109],{"class":4029}," '.\u002Fui\u002FFormRow'",[3996,22111,4123],{"class":4006},[3996,22113,22114,22116,22118,22120,22122,22124,22126,22128,22131],{"class":3998,"line":4287},[3996,22115,5947],{"class":4057},[3996,22117,5504],{"class":4006},[3996,22119,5206],{"class":4064},[3996,22121,3867],{"class":4006},[3996,22123,16211],{"class":4064},[3996,22125,5509],{"class":4006},[3996,22127,5512],{"class":4057},[3996,22129,22130],{"class":4029}," '.\u002Fmodel\u002FTripsProvider'",[3996,22132,4123],{"class":4006},[3996,22134,22135,22137],{"class":3998,"line":4293},[3996,22136,5947],{"class":4057},[3996,22138,7958],{"class":4006},[3996,22140,22141,22144],{"class":3998,"line":4299},[3996,22142,22143],{"class":4064},"  createTripSchema",[3996,22145,5720],{"class":4006},[3996,22147,22148,22150,22153],{"class":3998,"line":4305},[3996,22149,15995],{"class":4057},[3996,22151,22152],{"class":4064}," CreateTripFormValues",[3996,22154,5720],{"class":4006},[3996,22156,22157,22159,22161,22164],{"class":3998,"line":4311},[3996,22158,15912],{"class":4006},[3996,22160,5512],{"class":4057},[3996,22162,22163],{"class":4029}," '.\u002Fmodel\u002FcreateTripSchema'",[3996,22165,4123],{"class":4006},[3996,22167,22168,22170,22172,22175,22177,22179,22182],{"class":3998,"line":4317},[3996,22169,5947],{"class":4057},[3996,22171,5504],{"class":4006},[3996,22173,22174],{"class":4064},"formatTripDateLabel",[3996,22176,5509],{"class":4006},[3996,22178,5512],{"class":4057},[3996,22180,22181],{"class":4029}," '.\u002Fmodel\u002FformatTripDates'",[3996,22183,4123],{"class":4006},[3987,22185,22188],{"className":10127,"code":22186,"filename":22187,"language":10129,"meta":3992,"style":3992},"export type Trip = {\n  id: string;\n  title: string;\n  dateLabel: string;\n  description: string;\n  coverUri: string;\n  \u002F** Регіон \u002F макрозона (з Picker у формі створення). *\u002F\n  region: string;\n  \u002F** Приватна поїздка (Switch) — навчальна мітка на картці. *\u002F\n  isPrivate?: boolean;\n  \u002F** Скільки днів плануємо (Slider 1–14). *\u002F\n  plannedDays?: number;\n  \u002F** Є попередній план маршруту (Checkbox). *\u002F\n  hasItinerary?: boolean;\n};\n\nexport type Place = {\n  id: string;\n  tripId: string;\n  name: string;\n  city: string;\n  note: string;\n};\n\n\u002F** Варіанти регіону для Picker — ті самі рядки, що в mock-стрічці. *\u002F\nexport const TRIP_REGIONS = [\n  'Карпати',\n  'Захід',\n  'Південь',\n  'Центр',\n  'Схід',\n  'Інше',\n] as const;\n\nexport type TripRegion = (typeof TRIP_REGIONS)[number];\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes.ts",[3747,22189,22190,22200,22210,22221,22232,22242,22253,22258,22268,22273,22285,22290,22302,22307,22318,22322,22326,22336,22346,22357,22367,22378,22389,22393,22397,22402,22414,22421,22428,22435,22442,22449,22456,22468,22472],{"__ignoreMap":3992},[3996,22191,22192,22194,22196,22198],{"class":3998,"line":3999},[3996,22193,5947],{"class":4057},[3996,22195,10138],{"class":4002},[3996,22197,16007],{"class":4085},[3996,22199,10144],{"class":4006},[3996,22201,22202,22204,22206,22208],{"class":3998,"line":4047},[3996,22203,10149],{"class":4064},[3996,22205,8990],{"class":4006},[3996,22207,7692],{"class":4085},[3996,22209,4123],{"class":4006},[3996,22211,22212,22215,22217,22219],{"class":3998,"line":4054},[3996,22213,22214],{"class":4064},"  title",[3996,22216,8990],{"class":4006},[3996,22218,7692],{"class":4085},[3996,22220,4123],{"class":4006},[3996,22222,22223,22226,22228,22230],{"class":3998,"line":4075},[3996,22224,22225],{"class":4064},"  dateLabel",[3996,22227,8990],{"class":4006},[3996,22229,7692],{"class":4085},[3996,22231,4123],{"class":4006},[3996,22233,22234,22236,22238,22240],{"class":3998,"line":4126},[3996,22235,10192],{"class":4064},[3996,22237,8990],{"class":4006},[3996,22239,7692],{"class":4085},[3996,22241,4123],{"class":4006},[3996,22243,22244,22247,22249,22251],{"class":3998,"line":4132},[3996,22245,22246],{"class":4064},"  coverUri",[3996,22248,8990],{"class":4006},[3996,22250,7692],{"class":4085},[3996,22252,4123],{"class":4006},[3996,22254,22255],{"class":3998,"line":4137},[3996,22256,22257],{"class":5783},"  \u002F** Регіон \u002F макрозона (з Picker у формі створення). *\u002F\n",[3996,22259,22260,22262,22264,22266],{"class":3998,"line":4275},[3996,22261,10170],{"class":4064},[3996,22263,8990],{"class":4006},[3996,22265,7692],{"class":4085},[3996,22267,4123],{"class":4006},[3996,22269,22270],{"class":3998,"line":4281},[3996,22271,22272],{"class":5783},"  \u002F** Приватна поїздка (Switch) — навчальна мітка на картці. *\u002F\n",[3996,22274,22275,22278,22281,22283],{"class":3998,"line":4287},[3996,22276,22277],{"class":4064},"  isPrivate",[3996,22279,22280],{"class":4006},"?: ",[3996,22282,6483],{"class":4085},[3996,22284,4123],{"class":4006},[3996,22286,22287],{"class":3998,"line":4293},[3996,22288,22289],{"class":5783},"  \u002F** Скільки днів плануємо (Slider 1–14). *\u002F\n",[3996,22291,22292,22295,22297,22300],{"class":3998,"line":4299},[3996,22293,22294],{"class":4064},"  plannedDays",[3996,22296,22280],{"class":4006},[3996,22298,22299],{"class":4085},"number",[3996,22301,4123],{"class":4006},[3996,22303,22304],{"class":3998,"line":4305},[3996,22305,22306],{"class":5783},"  \u002F** Є попередній план маршруту (Checkbox). *\u002F\n",[3996,22308,22309,22312,22314,22316],{"class":3998,"line":4311},[3996,22310,22311],{"class":4064},"  hasItinerary",[3996,22313,22280],{"class":4006},[3996,22315,6483],{"class":4085},[3996,22317,4123],{"class":4006},[3996,22319,22320],{"class":3998,"line":4317},[3996,22321,10203],{"class":4006},[3996,22323,22324],{"class":3998,"line":4323},[3996,22325,4051],{"emptyLinePlaceholder":4050},[3996,22327,22328,22330,22332,22334],{"class":3998,"line":4329},[3996,22329,5947],{"class":4057},[3996,22331,10138],{"class":4002},[3996,22333,15998],{"class":4085},[3996,22335,10144],{"class":4006},[3996,22337,22338,22340,22342,22344],{"class":3998,"line":4335},[3996,22339,10149],{"class":4064},[3996,22341,8990],{"class":4006},[3996,22343,7692],{"class":4085},[3996,22345,4123],{"class":4006},[3996,22347,22348,22351,22353,22355],{"class":3998,"line":4341},[3996,22349,22350],{"class":4064},"  tripId",[3996,22352,8990],{"class":4006},[3996,22354,7692],{"class":4085},[3996,22356,4123],{"class":4006},[3996,22358,22359,22361,22363,22365],{"class":3998,"line":4347},[3996,22360,6835],{"class":4064},[3996,22362,8990],{"class":4006},[3996,22364,7692],{"class":4085},[3996,22366,4123],{"class":4006},[3996,22368,22369,22372,22374,22376],{"class":3998,"line":4352},[3996,22370,22371],{"class":4064},"  city",[3996,22373,8990],{"class":4006},[3996,22375,7692],{"class":4085},[3996,22377,4123],{"class":4006},[3996,22379,22380,22383,22385,22387],{"class":3998,"line":4357},[3996,22381,22382],{"class":4064},"  note",[3996,22384,8990],{"class":4006},[3996,22386,7692],{"class":4085},[3996,22388,4123],{"class":4006},[3996,22390,22391],{"class":3998,"line":4363},[3996,22392,10203],{"class":4006},[3996,22394,22395],{"class":3998,"line":4369},[3996,22396,4051],{"emptyLinePlaceholder":4050},[3996,22398,22399],{"class":3998,"line":4375},[3996,22400,22401],{"class":5783},"\u002F** Варіанти регіону для Picker — ті самі рядки, що в mock-стрічці. *\u002F\n",[3996,22403,22404,22406,22408,22411],{"class":3998,"line":4381},[3996,22405,5947],{"class":4057},[3996,22407,10214],{"class":4002},[3996,22409,22410],{"class":4010}," TRIP_REGIONS",[3996,22412,22413],{"class":4006}," = [\n",[3996,22415,22416,22419],{"class":3998,"line":4387},[3996,22417,22418],{"class":4029},"  'Карпати'",[3996,22420,5720],{"class":4006},[3996,22422,22423,22426],{"class":3998,"line":4392},[3996,22424,22425],{"class":4029},"  'Захід'",[3996,22427,5720],{"class":4006},[3996,22429,22430,22433],{"class":3998,"line":4398},[3996,22431,22432],{"class":4029},"  'Південь'",[3996,22434,5720],{"class":4006},[3996,22436,22437,22440],{"class":3998,"line":4404},[3996,22438,22439],{"class":4029},"  'Центр'",[3996,22441,5720],{"class":4006},[3996,22443,22444,22447],{"class":3998,"line":4410},[3996,22445,22446],{"class":4029},"  'Схід'",[3996,22448,5720],{"class":4006},[3996,22450,22451,22454],{"class":3998,"line":4415},[3996,22452,22453],{"class":4029},"  'Інше'",[3996,22455,5720],{"class":4006},[3996,22457,22458,22461,22464,22466],{"class":3998,"line":4420},[3996,22459,22460],{"class":4006},"] ",[3996,22462,22463],{"class":4057},"as",[3996,22465,10214],{"class":4002},[3996,22467,4123],{"class":4006},[3996,22469,22470],{"class":3998,"line":4426},[3996,22471,4051],{"emptyLinePlaceholder":4050},[3996,22473,22474,22476,22478,22481,22484,22487,22489,22492,22494],{"class":3998,"line":4432},[3996,22475,5947],{"class":4057},[3996,22477,10138],{"class":4002},[3996,22479,22480],{"class":4085}," TripRegion",[3996,22482,22483],{"class":4006}," = (",[3996,22485,22486],{"class":4002},"typeof",[3996,22488,22410],{"class":4010},[3996,22490,22491],{"class":4006},")[",[3996,22493,22299],{"class":4085},[3996,22495,10513],{"class":4006},[3987,22497,22500],{"className":10127,"code":22498,"filename":22499,"language":10129,"meta":3992,"style":3992},"import { z } from 'zod';\n\nimport { TRIP_REGIONS } from '.\u002Ftypes';\n\n\u002F**\n * Схема створення поїздки (Zod).\n * Повідомлення — українською: саме їх побачить користувач під полем.\n *\n * Покриває різні типи контролів:\n * - string → TextInput\n * - enum → Picker\n * - date → DateTimePicker\n * - boolean → Switch \u002F Checkbox\n * - number → Slider\n *\u002F\nexport const createTripSchema = z\n  .object({\n    title: z\n      .string()\n      .trim()\n      .min(2, 'Назва має містити щонайменше 2 символи')\n      .max(80, 'Назва занадто довга (макс. 80)'),\n    region: z.enum(TRIP_REGIONS, {\n      error: 'Оберіть регіон зі списку',\n    }),\n    description: z\n      .string()\n      .trim()\n      .min(10, 'Опис — щонайменше 10 символів')\n      .max(500, 'Опис занадто довгий (макс. 500)'),\n    startDate: z.date({ error: 'Оберіть дату початку' }),\n    endDate: z.date({ error: 'Оберіть дату завершення' }),\n    \u002F** Switch: чи ховати поїздку з «публічної» стрічки (навчальна семантика). *\u002F\n    isPrivate: z.boolean(),\n    \u002F** Slider: орієнтовна тривалість у днях. *\u002F\n    plannedDays: z\n      .number()\n      .min(1, 'Мінімум 1 день')\n      .max(14, 'У формі максимум 14 днів'),\n    \u002F** Checkbox: чи є план маршруту. *\u002F\n    hasItinerary: z.boolean(),\n    \u002F**\n     * Checkbox з обов’язковою згодою.\n     * `true` — єдине прийнятне значення (як «прийняти умови»).\n     *\u002F\n    acceptedLocalSave: z.literal(true, {\n      error: 'Підтвердіть, що дані поки зберігаються лише на пристрої',\n    }),\n  })\n  .refine((data) => data.endDate.getTime() >= data.startDate.getTime(), {\n    message: 'Дата завершення не може бути раніше початку',\n    path: ['endDate'],\n  });\n\nexport type CreateTripFormValues = z.infer\u003Ctypeof createTripSchema>;\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002FcreateTripSchema.ts",[3747,22501,22502,22520,22524,22541,22545,22549,22554,22559,22564,22569,22574,22579,22584,22589,22594,22598,22612,22622,22629,22639,22648,22667,22686,22705,22715,22720,22727,22735,22743,22761,22779,22802,22822,22827,22841,22846,22853,22861,22879,22897,22902,22915,22920,22925,22930,22935,22953,22962,22966,22971,23017,23027,23039,23044,23048],{"__ignoreMap":3992},[3996,22503,22504,22506,22508,22511,22513,22515,22518],{"class":3998,"line":3999},[3996,22505,5501],{"class":4057},[3996,22507,5504],{"class":4006},[3996,22509,22510],{"class":4064},"z",[3996,22512,5509],{"class":4006},[3996,22514,5512],{"class":4057},[3996,22516,22517],{"class":4029}," 'zod'",[3996,22519,4123],{"class":4006},[3996,22521,22522],{"class":3998,"line":4047},[3996,22523,4051],{"emptyLinePlaceholder":4050},[3996,22525,22526,22528,22530,22532,22534,22536,22539],{"class":3998,"line":4054},[3996,22527,5501],{"class":4057},[3996,22529,5504],{"class":4006},[3996,22531,22016],{"class":4064},[3996,22533,5509],{"class":4006},[3996,22535,5512],{"class":4057},[3996,22537,22538],{"class":4029}," '.\u002Ftypes'",[3996,22540,4123],{"class":4006},[3996,22542,22543],{"class":3998,"line":4075},[3996,22544,4051],{"emptyLinePlaceholder":4050},[3996,22546,22547],{"class":3998,"line":4126},[3996,22548,14911],{"class":5783},[3996,22550,22551],{"class":3998,"line":4132},[3996,22552,22553],{"class":5783}," * Схема створення поїздки (Zod).\n",[3996,22555,22556],{"class":3998,"line":4137},[3996,22557,22558],{"class":5783}," * Повідомлення — українською: саме їх побачить користувач під полем.\n",[3996,22560,22561],{"class":3998,"line":4275},[3996,22562,22563],{"class":5783}," *\n",[3996,22565,22566],{"class":3998,"line":4281},[3996,22567,22568],{"class":5783}," * Покриває різні типи контролів:\n",[3996,22570,22571],{"class":3998,"line":4287},[3996,22572,22573],{"class":5783}," * - string → TextInput\n",[3996,22575,22576],{"class":3998,"line":4293},[3996,22577,22578],{"class":5783}," * - enum → Picker\n",[3996,22580,22581],{"class":3998,"line":4299},[3996,22582,22583],{"class":5783}," * - date → DateTimePicker\n",[3996,22585,22586],{"class":3998,"line":4305},[3996,22587,22588],{"class":5783}," * - boolean → Switch \u002F Checkbox\n",[3996,22590,22591],{"class":3998,"line":4311},[3996,22592,22593],{"class":5783}," * - number → Slider\n",[3996,22595,22596],{"class":3998,"line":4317},[3996,22597,14926],{"class":5783},[3996,22599,22600,22602,22604,22607,22609],{"class":3998,"line":4323},[3996,22601,5947],{"class":4057},[3996,22603,10214],{"class":4002},[3996,22605,22606],{"class":4010}," createTripSchema",[3996,22608,7937],{"class":4006},[3996,22610,22611],{"class":4064},"z\n",[3996,22613,22614,22617,22620],{"class":3998,"line":4329},[3996,22615,22616],{"class":4006},"  .",[3996,22618,22619],{"class":4022},"object",[3996,22621,7971],{"class":4006},[3996,22623,22624,22626],{"class":3998,"line":4335},[3996,22625,6856],{"class":4064},[3996,22627,22628],{"class":4064}," z\n",[3996,22630,22631,22634,22636],{"class":3998,"line":4341},[3996,22632,22633],{"class":4006},"      .",[3996,22635,7692],{"class":4022},[3996,22637,22638],{"class":4006},"()\n",[3996,22640,22641,22643,22646],{"class":3998,"line":4347},[3996,22642,22633],{"class":4006},[3996,22644,22645],{"class":4022},"trim",[3996,22647,22638],{"class":4006},[3996,22649,22650,22652,22655,22657,22659,22661,22664],{"class":3998,"line":4352},[3996,22651,22633],{"class":4006},[3996,22653,22654],{"class":4022},"min",[3996,22656,4109],{"class":4006},[3996,22658,19532],{"class":11033},[3996,22660,3867],{"class":4006},[3996,22662,22663],{"class":4029},"'Назва має містити щонайменше 2 символи'",[3996,22665,22666],{"class":4006},")\n",[3996,22668,22669,22671,22674,22676,22679,22681,22684],{"class":3998,"line":4357},[3996,22670,22633],{"class":4006},[3996,22672,22673],{"class":4022},"max",[3996,22675,4109],{"class":4006},[3996,22677,22678],{"class":11033},"80",[3996,22680,3867],{"class":4006},[3996,22682,22683],{"class":4029},"'Назва занадто довга (макс. 80)'",[3996,22685,7824],{"class":4006},[3996,22687,22688,22690,22693,22695,22698,22700,22702],{"class":3998,"line":4363},[3996,22689,10255],{"class":4064},[3996,22691,22692],{"class":4064}," z",[3996,22694,3821],{"class":4006},[3996,22696,22697],{"class":4022},"enum",[3996,22699,4109],{"class":4006},[3996,22701,22016],{"class":4010},[3996,22703,22704],{"class":4006},", {\n",[3996,22706,22707,22710,22713],{"class":3998,"line":4369},[3996,22708,22709],{"class":4064},"      error:",[3996,22711,22712],{"class":4029}," 'Оберіть регіон зі списку'",[3996,22714,5720],{"class":4006},[3996,22716,22717],{"class":3998,"line":4375},[3996,22718,22719],{"class":4006},"    }),\n",[3996,22721,22722,22725],{"class":3998,"line":4381},[3996,22723,22724],{"class":4064},"    description:",[3996,22726,22628],{"class":4064},[3996,22728,22729,22731,22733],{"class":3998,"line":4387},[3996,22730,22633],{"class":4006},[3996,22732,7692],{"class":4022},[3996,22734,22638],{"class":4006},[3996,22736,22737,22739,22741],{"class":3998,"line":4392},[3996,22738,22633],{"class":4006},[3996,22740,22645],{"class":4022},[3996,22742,22638],{"class":4006},[3996,22744,22745,22747,22749,22751,22754,22756,22759],{"class":3998,"line":4398},[3996,22746,22633],{"class":4006},[3996,22748,22654],{"class":4022},[3996,22750,4109],{"class":4006},[3996,22752,22753],{"class":11033},"10",[3996,22755,3867],{"class":4006},[3996,22757,22758],{"class":4029},"'Опис — щонайменше 10 символів'",[3996,22760,22666],{"class":4006},[3996,22762,22763,22765,22767,22769,22772,22774,22777],{"class":3998,"line":4404},[3996,22764,22633],{"class":4006},[3996,22766,22673],{"class":4022},[3996,22768,4109],{"class":4006},[3996,22770,22771],{"class":11033},"500",[3996,22773,3867],{"class":4006},[3996,22775,22776],{"class":4029},"'Опис занадто довгий (макс. 500)'",[3996,22778,7824],{"class":4006},[3996,22780,22781,22784,22786,22788,22791,22793,22796,22799],{"class":3998,"line":4410},[3996,22782,22783],{"class":4064},"    startDate:",[3996,22785,22692],{"class":4064},[3996,22787,3821],{"class":4006},[3996,22789,22790],{"class":4022},"date",[3996,22792,7759],{"class":4006},[3996,22794,22795],{"class":4064},"error:",[3996,22797,22798],{"class":4029}," 'Оберіть дату початку'",[3996,22800,22801],{"class":4006}," }),\n",[3996,22803,22804,22807,22809,22811,22813,22815,22817,22820],{"class":3998,"line":4415},[3996,22805,22806],{"class":4064},"    endDate:",[3996,22808,22692],{"class":4064},[3996,22810,3821],{"class":4006},[3996,22812,22790],{"class":4022},[3996,22814,7759],{"class":4006},[3996,22816,22795],{"class":4064},[3996,22818,22819],{"class":4029}," 'Оберіть дату завершення'",[3996,22821,22801],{"class":4006},[3996,22823,22824],{"class":3998,"line":4420},[3996,22825,22826],{"class":5783},"    \u002F** Switch: чи ховати поїздку з «публічної» стрічки (навчальна семантика). *\u002F\n",[3996,22828,22829,22832,22834,22836,22838],{"class":3998,"line":4426},[3996,22830,22831],{"class":4064},"    isPrivate:",[3996,22833,22692],{"class":4064},[3996,22835,3821],{"class":4006},[3996,22837,6483],{"class":4022},[3996,22839,22840],{"class":4006},"(),\n",[3996,22842,22843],{"class":3998,"line":4432},[3996,22844,22845],{"class":5783},"    \u002F** Slider: орієнтовна тривалість у днях. *\u002F\n",[3996,22847,22848,22851],{"class":3998,"line":4438},[3996,22849,22850],{"class":4064},"    plannedDays:",[3996,22852,22628],{"class":4064},[3996,22854,22855,22857,22859],{"class":3998,"line":4443},[3996,22856,22633],{"class":4006},[3996,22858,22299],{"class":4022},[3996,22860,22638],{"class":4006},[3996,22862,22863,22865,22867,22869,22872,22874,22877],{"class":3998,"line":4448},[3996,22864,22633],{"class":4006},[3996,22866,22654],{"class":4022},[3996,22868,4109],{"class":4006},[3996,22870,22871],{"class":11033},"1",[3996,22873,3867],{"class":4006},[3996,22875,22876],{"class":4029},"'Мінімум 1 день'",[3996,22878,22666],{"class":4006},[3996,22880,22881,22883,22885,22887,22890,22892,22895],{"class":3998,"line":4454},[3996,22882,22633],{"class":4006},[3996,22884,22673],{"class":4022},[3996,22886,4109],{"class":4006},[3996,22888,22889],{"class":11033},"14",[3996,22891,3867],{"class":4006},[3996,22893,22894],{"class":4029},"'У формі максимум 14 днів'",[3996,22896,7824],{"class":4006},[3996,22898,22899],{"class":3998,"line":4460},[3996,22900,22901],{"class":5783},"    \u002F** Checkbox: чи є план маршруту. *\u002F\n",[3996,22903,22904,22907,22909,22911,22913],{"class":3998,"line":4466},[3996,22905,22906],{"class":4064},"    hasItinerary:",[3996,22908,22692],{"class":4064},[3996,22910,3821],{"class":4006},[3996,22912,6483],{"class":4022},[3996,22914,22840],{"class":4006},[3996,22916,22917],{"class":3998,"line":4472},[3996,22918,22919],{"class":5783},"    \u002F**\n",[3996,22921,22922],{"class":3998,"line":4477},[3996,22923,22924],{"class":5783},"     * Checkbox з обов’язковою згодою.\n",[3996,22926,22927],{"class":3998,"line":5066},[3996,22928,22929],{"class":5783},"     * `true` — єдине прийнятне значення (як «прийняти умови»).\n",[3996,22931,22932],{"class":3998,"line":5072},[3996,22933,22934],{"class":5783},"     *\u002F\n",[3996,22936,22937,22940,22942,22944,22947,22949,22951],{"class":3998,"line":5078},[3996,22938,22939],{"class":4064},"    acceptedLocalSave:",[3996,22941,22692],{"class":4064},[3996,22943,3821],{"class":4006},[3996,22945,22946],{"class":4022},"literal",[3996,22948,4109],{"class":4006},[3996,22950,7184],{"class":4002},[3996,22952,22704],{"class":4006},[3996,22954,22955,22957,22960],{"class":3998,"line":5084},[3996,22956,22709],{"class":4064},[3996,22958,22959],{"class":4029}," 'Підтвердіть, що дані поки зберігаються лише на пристрої'",[3996,22961,5720],{"class":4006},[3996,22963,22964],{"class":3998,"line":5090},[3996,22965,22719],{"class":4006},[3996,22967,22968],{"class":3998,"line":5096},[3996,22969,22970],{"class":4006},"  })\n",[3996,22972,22973,22975,22978,22980,22983,22985,22987,22990,22992,22995,22997,23000,23003,23005,23007,23010,23012,23014],{"class":3998,"line":10510},[3996,22974,22616],{"class":4006},[3996,22976,22977],{"class":4022},"refine",[3996,22979,10564],{"class":4006},[3996,22981,22982],{"class":4064},"data",[3996,22984,8996],{"class":4006},[3996,22986,4103],{"class":4002},[3996,22988,22989],{"class":4064}," data",[3996,22991,3821],{"class":4006},[3996,22993,22994],{"class":4064},"endDate",[3996,22996,3821],{"class":4006},[3996,22998,22999],{"class":4022},"getTime",[3996,23001,23002],{"class":4006},"() >= ",[3996,23004,22982],{"class":4064},[3996,23006,3821],{"class":4006},[3996,23008,23009],{"class":4064},"startDate",[3996,23011,3821],{"class":4006},[3996,23013,22999],{"class":4022},[3996,23015,23016],{"class":4006},"(), {\n",[3996,23018,23019,23022,23025],{"class":3998,"line":10516},[3996,23020,23021],{"class":4064},"    message:",[3996,23023,23024],{"class":4029}," 'Дата завершення не може бути раніше початку'",[3996,23026,5720],{"class":4006},[3996,23028,23029,23032,23034,23037],{"class":3998,"line":10521},[3996,23030,23031],{"class":4064},"    path:",[3996,23033,4007],{"class":4006},[3996,23035,23036],{"class":4029},"'endDate'",[3996,23038,16598],{"class":4006},[3996,23040,23041],{"class":3998,"line":10552},[3996,23042,23043],{"class":4006},"  });\n",[3996,23045,23046],{"class":3998,"line":10587},[3996,23047,4051],{"emptyLinePlaceholder":4050},[3996,23049,23050,23052,23054,23056,23058,23060,23062,23065,23067,23069,23071],{"class":3998,"line":12205},[3996,23051,5947],{"class":4057},[3996,23053,10138],{"class":4002},[3996,23055,22152],{"class":4085},[3996,23057,7937],{"class":4006},[3996,23059,22510],{"class":4085},[3996,23061,3821],{"class":4006},[3996,23063,23064],{"class":4085},"infer",[3996,23066,4026],{"class":4006},[3996,23068,22486],{"class":4002},[3996,23070,22606],{"class":4064},[3996,23072,23073],{"class":4006},">;\n",[3987,23075,23078],{"className":10127,"code":23076,"filename":23077,"language":10129,"meta":3992,"style":3992},"const MONTHS_UK_SHORT = [\n  'січ.',\n  'лют.',\n  'бер.',\n  'квіт.',\n  'трав.',\n  'черв.',\n  'лип.',\n  'серп.',\n  'вер.',\n  'жовт.',\n  'лист.',\n  'груд.',\n] as const;\n\nfunction dayMonth(d: Date): string {\n  return `${d.getDate()} ${MONTHS_UK_SHORT[d.getMonth()]}`;\n}\n\n\u002F**\n * Людський підпис періоду, як у mock-стрічці:\n * «12–14 бер. 2026» або «28 бер. – 2 квіт. 2026».\n *\u002F\nexport function formatTripDateLabel(start: Date, end: Date): string {\n  const y1 = start.getFullYear();\n  const y2 = end.getFullYear();\n  const m1 = start.getMonth();\n  const m2 = end.getMonth();\n  const d1 = start.getDate();\n  const d2 = end.getDate();\n\n  if (y1 === y2 && m1 === m2) {\n    if (d1 === d2) {\n      return `${dayMonth(start)} ${y1}`;\n    }\n    return `${d1}–${d2} ${MONTHS_UK_SHORT[m1]} ${y1}`;\n  }\n\n  if (y1 === y2) {\n    return `${dayMonth(start)} – ${dayMonth(end)} ${y1}`;\n  }\n\n  return `${dayMonth(start)} ${y1} – ${dayMonth(end)} ${y2}`;\n}\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002FformatTripDates.ts",[3747,23079,23080,23089,23096,23103,23110,23117,23124,23131,23138,23145,23152,23159,23166,23173,23183,23187,23210,23253,23257,23261,23265,23270,23275,23279,23312,23330,23347,23364,23381,23398,23415,23419,23446,23462,23492,23496,23539,23543,23547,23561,23604,23608,23612,23660],{"__ignoreMap":3992},[3996,23081,23082,23084,23087],{"class":3998,"line":3999},[3996,23083,4003],{"class":4002},[3996,23085,23086],{"class":4010}," MONTHS_UK_SHORT",[3996,23088,22413],{"class":4006},[3996,23090,23091,23094],{"class":3998,"line":4047},[3996,23092,23093],{"class":4029},"  'січ.'",[3996,23095,5720],{"class":4006},[3996,23097,23098,23101],{"class":3998,"line":4054},[3996,23099,23100],{"class":4029},"  'лют.'",[3996,23102,5720],{"class":4006},[3996,23104,23105,23108],{"class":3998,"line":4075},[3996,23106,23107],{"class":4029},"  'бер.'",[3996,23109,5720],{"class":4006},[3996,23111,23112,23115],{"class":3998,"line":4126},[3996,23113,23114],{"class":4029},"  'квіт.'",[3996,23116,5720],{"class":4006},[3996,23118,23119,23122],{"class":3998,"line":4132},[3996,23120,23121],{"class":4029},"  'трав.'",[3996,23123,5720],{"class":4006},[3996,23125,23126,23129],{"class":3998,"line":4137},[3996,23127,23128],{"class":4029},"  'черв.'",[3996,23130,5720],{"class":4006},[3996,23132,23133,23136],{"class":3998,"line":4275},[3996,23134,23135],{"class":4029},"  'лип.'",[3996,23137,5720],{"class":4006},[3996,23139,23140,23143],{"class":3998,"line":4281},[3996,23141,23142],{"class":4029},"  'серп.'",[3996,23144,5720],{"class":4006},[3996,23146,23147,23150],{"class":3998,"line":4287},[3996,23148,23149],{"class":4029},"  'вер.'",[3996,23151,5720],{"class":4006},[3996,23153,23154,23157],{"class":3998,"line":4293},[3996,23155,23156],{"class":4029},"  'жовт.'",[3996,23158,5720],{"class":4006},[3996,23160,23161,23164],{"class":3998,"line":4299},[3996,23162,23163],{"class":4029},"  'лист.'",[3996,23165,5720],{"class":4006},[3996,23167,23168,23171],{"class":3998,"line":4305},[3996,23169,23170],{"class":4029},"  'груд.'",[3996,23172,5720],{"class":4006},[3996,23174,23175,23177,23179,23181],{"class":3998,"line":4311},[3996,23176,22460],{"class":4006},[3996,23178,22463],{"class":4057},[3996,23180,10214],{"class":4002},[3996,23182,4123],{"class":4006},[3996,23184,23185],{"class":3998,"line":4317},[3996,23186,4051],{"emptyLinePlaceholder":4050},[3996,23188,23189,23191,23194,23196,23199,23201,23204,23206,23208],{"class":3998,"line":4323},[3996,23190,5582],{"class":4002},[3996,23192,23193],{"class":4022}," dayMonth",[3996,23195,4109],{"class":4006},[3996,23197,23198],{"class":4064},"d",[3996,23200,8990],{"class":4006},[3996,23202,23203],{"class":4085},"Date",[3996,23205,10540],{"class":4006},[3996,23207,7692],{"class":4085},[3996,23209,7958],{"class":4006},[3996,23211,23212,23214,23216,23218,23220,23222,23225,23227,23229,23232,23235,23237,23239,23241,23244,23247,23249,23251],{"class":3998,"line":4329},[3996,23213,4078],{"class":4057},[3996,23215,17666],{"class":4029},[3996,23217,11717],{"class":4002},[3996,23219,23198],{"class":4064},[3996,23221,3821],{"class":4099},[3996,23223,23224],{"class":4022},"getDate",[3996,23226,21874],{"class":4099},[3996,23228,4117],{"class":4002},[3996,23230,23231],{"class":4002}," ${",[3996,23233,23234],{"class":4010},"MONTHS_UK_SHORT",[3996,23236,11457],{"class":4099},[3996,23238,23198],{"class":4064},[3996,23240,3821],{"class":4099},[3996,23242,23243],{"class":4022},"getMonth",[3996,23245,23246],{"class":4099},"()]",[3996,23248,4117],{"class":4002},[3996,23250,11728],{"class":4029},[3996,23252,4123],{"class":4006},[3996,23254,23255],{"class":3998,"line":4335},[3996,23256,4129],{"class":4006},[3996,23258,23259],{"class":3998,"line":4341},[3996,23260,4051],{"emptyLinePlaceholder":4050},[3996,23262,23263],{"class":3998,"line":4347},[3996,23264,14911],{"class":5783},[3996,23266,23267],{"class":3998,"line":4352},[3996,23268,23269],{"class":5783}," * Людський підпис періоду, як у mock-стрічці:\n",[3996,23271,23272],{"class":3998,"line":4357},[3996,23273,23274],{"class":5783}," * «12–14 бер. 2026» або «28 бер. – 2 квіт. 2026».\n",[3996,23276,23277],{"class":3998,"line":4363},[3996,23278,14926],{"class":5783},[3996,23280,23281,23283,23285,23288,23290,23293,23295,23297,23299,23302,23304,23306,23308,23310],{"class":3998,"line":4369},[3996,23282,5947],{"class":4057},[3996,23284,5953],{"class":4002},[3996,23286,23287],{"class":4022}," formatTripDateLabel",[3996,23289,4109],{"class":4006},[3996,23291,23292],{"class":4064},"start",[3996,23294,8990],{"class":4006},[3996,23296,23203],{"class":4085},[3996,23298,3867],{"class":4006},[3996,23300,23301],{"class":4064},"end",[3996,23303,8990],{"class":4006},[3996,23305,23203],{"class":4085},[3996,23307,10540],{"class":4006},[3996,23309,7692],{"class":4085},[3996,23311,7958],{"class":4006},[3996,23313,23314,23316,23319,23321,23323,23325,23328],{"class":3998,"line":4375},[3996,23315,5593],{"class":4002},[3996,23317,23318],{"class":4010}," y1",[3996,23320,7937],{"class":4006},[3996,23322,23292],{"class":4064},[3996,23324,3821],{"class":4006},[3996,23326,23327],{"class":4022},"getFullYear",[3996,23329,5611],{"class":4006},[3996,23331,23332,23334,23337,23339,23341,23343,23345],{"class":3998,"line":4381},[3996,23333,5593],{"class":4002},[3996,23335,23336],{"class":4010}," y2",[3996,23338,7937],{"class":4006},[3996,23340,23301],{"class":4064},[3996,23342,3821],{"class":4006},[3996,23344,23327],{"class":4022},[3996,23346,5611],{"class":4006},[3996,23348,23349,23351,23354,23356,23358,23360,23362],{"class":3998,"line":4387},[3996,23350,5593],{"class":4002},[3996,23352,23353],{"class":4010}," m1",[3996,23355,7937],{"class":4006},[3996,23357,23292],{"class":4064},[3996,23359,3821],{"class":4006},[3996,23361,23243],{"class":4022},[3996,23363,5611],{"class":4006},[3996,23365,23366,23368,23371,23373,23375,23377,23379],{"class":3998,"line":4392},[3996,23367,5593],{"class":4002},[3996,23369,23370],{"class":4010}," m2",[3996,23372,7937],{"class":4006},[3996,23374,23301],{"class":4064},[3996,23376,3821],{"class":4006},[3996,23378,23243],{"class":4022},[3996,23380,5611],{"class":4006},[3996,23382,23383,23385,23388,23390,23392,23394,23396],{"class":3998,"line":4398},[3996,23384,5593],{"class":4002},[3996,23386,23387],{"class":4010}," d1",[3996,23389,7937],{"class":4006},[3996,23391,23292],{"class":4064},[3996,23393,3821],{"class":4006},[3996,23395,23224],{"class":4022},[3996,23397,5611],{"class":4006},[3996,23399,23400,23402,23405,23407,23409,23411,23413],{"class":3998,"line":4404},[3996,23401,5593],{"class":4002},[3996,23403,23404],{"class":4010}," d2",[3996,23406,7937],{"class":4006},[3996,23408,23301],{"class":4064},[3996,23410,3821],{"class":4006},[3996,23412,23224],{"class":4022},[3996,23414,5611],{"class":4006},[3996,23416,23417],{"class":3998,"line":4410},[3996,23418,4051],{"emptyLinePlaceholder":4050},[3996,23420,23421,23423,23425,23428,23430,23433,23436,23439,23441,23444],{"class":3998,"line":4415},[3996,23422,12973],{"class":4057},[3996,23424,4061],{"class":4006},[3996,23426,23427],{"class":4064},"y1",[3996,23429,4067],{"class":4006},[3996,23431,23432],{"class":4064},"y2",[3996,23434,23435],{"class":4006}," && ",[3996,23437,23438],{"class":4064},"m1",[3996,23440,4067],{"class":4006},[3996,23442,23443],{"class":4064},"m2",[3996,23445,4072],{"class":4006},[3996,23447,23448,23450,23452,23455,23457,23460],{"class":3998,"line":4420},[3996,23449,9034],{"class":4057},[3996,23451,4061],{"class":4006},[3996,23453,23454],{"class":4064},"d1",[3996,23456,4067],{"class":4006},[3996,23458,23459],{"class":4064},"d2",[3996,23461,4072],{"class":4006},[3996,23463,23464,23467,23469,23471,23474,23476,23478,23480,23482,23484,23486,23488,23490],{"class":3998,"line":4426},[3996,23465,23466],{"class":4057},"      return",[3996,23468,17666],{"class":4029},[3996,23470,11717],{"class":4002},[3996,23472,23473],{"class":4022},"dayMonth",[3996,23475,4109],{"class":4099},[3996,23477,23292],{"class":4064},[3996,23479,4114],{"class":4099},[3996,23481,4117],{"class":4002},[3996,23483,23231],{"class":4002},[3996,23485,23427],{"class":4064},[3996,23487,4117],{"class":4002},[3996,23489,11728],{"class":4029},[3996,23491,4123],{"class":4006},[3996,23493,23494],{"class":3998,"line":4432},[3996,23495,5379],{"class":4006},[3996,23497,23498,23500,23502,23504,23506,23508,23511,23513,23515,23517,23519,23521,23523,23525,23527,23529,23531,23533,23535,23537],{"class":3998,"line":4438},[3996,23499,12986],{"class":4057},[3996,23501,17666],{"class":4029},[3996,23503,11717],{"class":4002},[3996,23505,23454],{"class":4064},[3996,23507,4117],{"class":4002},[3996,23509,23510],{"class":4029},"–",[3996,23512,11717],{"class":4002},[3996,23514,23459],{"class":4064},[3996,23516,4117],{"class":4002},[3996,23518,23231],{"class":4002},[3996,23520,23234],{"class":4010},[3996,23522,11457],{"class":4099},[3996,23524,23438],{"class":4064},[3996,23526,11463],{"class":4099},[3996,23528,4117],{"class":4002},[3996,23530,23231],{"class":4002},[3996,23532,23427],{"class":4064},[3996,23534,4117],{"class":4002},[3996,23536,11728],{"class":4029},[3996,23538,4123],{"class":4006},[3996,23540,23541],{"class":3998,"line":4443},[3996,23542,4384],{"class":4006},[3996,23544,23545],{"class":3998,"line":4448},[3996,23546,4051],{"emptyLinePlaceholder":4050},[3996,23548,23549,23551,23553,23555,23557,23559],{"class":3998,"line":4454},[3996,23550,12973],{"class":4057},[3996,23552,4061],{"class":4006},[3996,23554,23427],{"class":4064},[3996,23556,4067],{"class":4006},[3996,23558,23432],{"class":4064},[3996,23560,4072],{"class":4006},[3996,23562,23563,23565,23567,23569,23571,23573,23575,23577,23579,23582,23584,23586,23588,23590,23592,23594,23596,23598,23600,23602],{"class":3998,"line":4460},[3996,23564,12986],{"class":4057},[3996,23566,17666],{"class":4029},[3996,23568,11717],{"class":4002},[3996,23570,23473],{"class":4022},[3996,23572,4109],{"class":4099},[3996,23574,23292],{"class":4064},[3996,23576,4114],{"class":4099},[3996,23578,4117],{"class":4002},[3996,23580,23581],{"class":4029}," – ",[3996,23583,11717],{"class":4002},[3996,23585,23473],{"class":4022},[3996,23587,4109],{"class":4099},[3996,23589,23301],{"class":4064},[3996,23591,4114],{"class":4099},[3996,23593,4117],{"class":4002},[3996,23595,23231],{"class":4002},[3996,23597,23427],{"class":4064},[3996,23599,4117],{"class":4002},[3996,23601,11728],{"class":4029},[3996,23603,4123],{"class":4006},[3996,23605,23606],{"class":3998,"line":4466},[3996,23607,4384],{"class":4006},[3996,23609,23610],{"class":3998,"line":4472},[3996,23611,4051],{"emptyLinePlaceholder":4050},[3996,23613,23614,23616,23618,23620,23622,23624,23626,23628,23630,23632,23634,23636,23638,23640,23642,23644,23646,23648,23650,23652,23654,23656,23658],{"class":3998,"line":4477},[3996,23615,4078],{"class":4057},[3996,23617,17666],{"class":4029},[3996,23619,11717],{"class":4002},[3996,23621,23473],{"class":4022},[3996,23623,4109],{"class":4099},[3996,23625,23292],{"class":4064},[3996,23627,4114],{"class":4099},[3996,23629,4117],{"class":4002},[3996,23631,23231],{"class":4002},[3996,23633,23427],{"class":4064},[3996,23635,4117],{"class":4002},[3996,23637,23581],{"class":4029},[3996,23639,11717],{"class":4002},[3996,23641,23473],{"class":4022},[3996,23643,4109],{"class":4099},[3996,23645,23301],{"class":4064},[3996,23647,4114],{"class":4099},[3996,23649,4117],{"class":4002},[3996,23651,23231],{"class":4002},[3996,23653,23432],{"class":4064},[3996,23655,4117],{"class":4002},[3996,23657,11728],{"class":4029},[3996,23659,4123],{"class":4006},[3996,23661,23662],{"class":3998,"line":5066},[3996,23663,4129],{"class":4006},[3987,23665,23668],{"className":3989,"code":23666,"filename":23667,"language":3991,"meta":3992,"style":3992},"import {\n  createContext,\n  ReactNode,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n} from 'react';\n\nimport { mockTrips } from '.\u002FmockTrips';\nimport type { Trip } from '.\u002Ftypes';\n\ntype TripsContextValue = {\n  trips: Trip[];\n  \u002F** Додати нову поїздку на початок стрічки (найсвіжіша зверху). *\u002F\n  addTrip: (trip: Trip) => void;\n  \u002F** Mock «оновити з сервера» — повертає seed mockTrips (без локально створених). *\u002F\n  resetToMock: () => void;\n};\n\nconst TripsContext = createContext\u003CTripsContextValue | null>(null);\n\ntype TripsProviderProps = {\n  children: ReactNode;\n};\n\nexport function TripsProvider({ children }: TripsProviderProps) {\n  const [trips, setTrips] = useState\u003CTrip[]>(() => [...mockTrips]);\n\n  const addTrip = useCallback((trip: Trip) => {\n    setTrips((prev) => [trip, ...prev]);\n  }, []);\n\n  const resetToMock = useCallback(() => {\n    setTrips([...mockTrips]);\n  }, []);\n\n  const value = useMemo(\n    () => ({ trips, addTrip, resetToMock }),\n    [trips, addTrip, resetToMock],\n  );\n\n  return (\n    \u003CTripsContext.Provider value={value}>{children}\u003C\u002FTripsContext.Provider>\n  );\n}\n\nexport function useTrips(): TripsContextValue {\n  const ctx = useContext(TripsContext);\n  if (!ctx) {\n    throw new Error('useTrips треба викликати всередині TripsProvider');\n  }\n  return ctx;\n}\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002FTripsProvider.tsx",[3747,23669,23670,23676,23683,23690,23697,23704,23711,23718,23728,23732,23749,23767,23771,23780,23792,23797,23820,23825,23839,23843,23847,23875,23879,23888,23900,23904,23908,23930,23963,23967,23992,24017,24021,24025,24042,24053,24057,24061,24075,24096,24112,24116,24120,24126,24158,24162,24166,24170,24186,24205,24216,24234,24238,24246],{"__ignoreMap":3992},[3996,23671,23672,23674],{"class":3998,"line":3999},[3996,23673,5501],{"class":4057},[3996,23675,7958],{"class":4006},[3996,23677,23678,23681],{"class":3998,"line":4047},[3996,23679,23680],{"class":4064},"  createContext",[3996,23682,5720],{"class":4006},[3996,23684,23685,23688],{"class":3998,"line":4054},[3996,23686,23687],{"class":4064},"  ReactNode",[3996,23689,5720],{"class":4006},[3996,23691,23692,23695],{"class":3998,"line":4075},[3996,23693,23694],{"class":4064},"  useCallback",[3996,23696,5720],{"class":4006},[3996,23698,23699,23702],{"class":3998,"line":4126},[3996,23700,23701],{"class":4064},"  useContext",[3996,23703,5720],{"class":4006},[3996,23705,23706,23709],{"class":3998,"line":4132},[3996,23707,23708],{"class":4064},"  useMemo",[3996,23710,5720],{"class":4006},[3996,23712,23713,23716],{"class":3998,"line":4137},[3996,23714,23715],{"class":4064},"  useState",[3996,23717,5720],{"class":4006},[3996,23719,23720,23722,23724,23726],{"class":3998,"line":4275},[3996,23721,15912],{"class":4006},[3996,23723,5512],{"class":4057},[3996,23725,7869],{"class":4029},[3996,23727,4123],{"class":4006},[3996,23729,23730],{"class":3998,"line":4281},[3996,23731,4051],{"emptyLinePlaceholder":4050},[3996,23733,23734,23736,23738,23740,23742,23744,23747],{"class":3998,"line":4287},[3996,23735,5501],{"class":4057},[3996,23737,5504],{"class":4006},[3996,23739,21953],{"class":4064},[3996,23741,5509],{"class":4006},[3996,23743,5512],{"class":4057},[3996,23745,23746],{"class":4029}," '.\u002FmockTrips'",[3996,23748,4123],{"class":4006},[3996,23750,23751,23753,23755,23757,23759,23761,23763,23765],{"class":3998,"line":4293},[3996,23752,5501],{"class":4057},[3996,23754,10138],{"class":4057},[3996,23756,5504],{"class":4006},[3996,23758,16320],{"class":4064},[3996,23760,5509],{"class":4006},[3996,23762,5512],{"class":4057},[3996,23764,22538],{"class":4029},[3996,23766,4123],{"class":4006},[3996,23768,23769],{"class":3998,"line":4299},[3996,23770,4051],{"emptyLinePlaceholder":4050},[3996,23772,23773,23775,23778],{"class":3998,"line":4305},[3996,23774,16032],{"class":4002},[3996,23776,23777],{"class":4085}," TripsContextValue",[3996,23779,10144],{"class":4006},[3996,23781,23782,23785,23787,23789],{"class":3998,"line":4311},[3996,23783,23784],{"class":4064},"  trips",[3996,23786,8990],{"class":4006},[3996,23788,16320],{"class":4085},[3996,23790,23791],{"class":4006},"[];\n",[3996,23793,23794],{"class":3998,"line":4317},[3996,23795,23796],{"class":5783},"  \u002F** Додати нову поїздку на початок стрічки (найсвіжіша зверху). *\u002F\n",[3996,23798,23799,23802,23805,23807,23809,23811,23813,23815,23818],{"class":3998,"line":4323},[3996,23800,23801],{"class":4022},"  addTrip",[3996,23803,23804],{"class":4006},": (",[3996,23806,16315],{"class":4064},[3996,23808,8990],{"class":4006},[3996,23810,16320],{"class":4085},[3996,23812,8996],{"class":4006},[3996,23814,4103],{"class":4002},[3996,23816,23817],{"class":4085}," void",[3996,23819,4123],{"class":4006},[3996,23821,23822],{"class":3998,"line":4329},[3996,23823,23824],{"class":5783},"  \u002F** Mock «оновити з сервера» — повертає seed mockTrips (без локально створених). *\u002F\n",[3996,23826,23827,23830,23833,23835,23837],{"class":3998,"line":4335},[3996,23828,23829],{"class":4022},"  resetToMock",[3996,23831,23832],{"class":4006},": () ",[3996,23834,4103],{"class":4002},[3996,23836,23817],{"class":4085},[3996,23838,4123],{"class":4006},[3996,23840,23841],{"class":3998,"line":4341},[3996,23842,10203],{"class":4006},[3996,23844,23845],{"class":3998,"line":4347},[3996,23846,4051],{"emptyLinePlaceholder":4050},[3996,23848,23849,23851,23854,23856,23859,23861,23864,23866,23869,23871,23873],{"class":3998,"line":4352},[3996,23850,4003],{"class":4002},[3996,23852,23853],{"class":4010}," TripsContext",[3996,23855,7937],{"class":4006},[3996,23857,23858],{"class":4022},"createContext",[3996,23860,4026],{"class":4006},[3996,23862,23863],{"class":4085},"TripsContextValue",[3996,23865,4033],{"class":4006},[3996,23867,23868],{"class":4085},"null",[3996,23870,4039],{"class":4006},[3996,23872,23868],{"class":4002},[3996,23874,4044],{"class":4006},[3996,23876,23877],{"class":3998,"line":4357},[3996,23878,4051],{"emptyLinePlaceholder":4050},[3996,23880,23881,23883,23886],{"class":3998,"line":4363},[3996,23882,16032],{"class":4002},[3996,23884,23885],{"class":4085}," TripsProviderProps",[3996,23887,10144],{"class":4006},[3996,23889,23890,23893,23895,23898],{"class":3998,"line":4369},[3996,23891,23892],{"class":4064},"  children",[3996,23894,8990],{"class":4006},[3996,23896,23897],{"class":4085},"ReactNode",[3996,23899,4123],{"class":4006},[3996,23901,23902],{"class":3998,"line":4375},[3996,23903,10203],{"class":4006},[3996,23905,23906],{"class":3998,"line":4381},[3996,23907,4051],{"emptyLinePlaceholder":4050},[3996,23909,23910,23912,23914,23917,23919,23922,23925,23928],{"class":3998,"line":4387},[3996,23911,5947],{"class":4057},[3996,23913,5953],{"class":4002},[3996,23915,23916],{"class":4022}," TripsProvider",[3996,23918,7759],{"class":4006},[3996,23920,23921],{"class":4064},"children",[3996,23923,23924],{"class":4006}," }: ",[3996,23926,23927],{"class":4085},"TripsProviderProps",[3996,23929,4072],{"class":4006},[3996,23931,23932,23934,23936,23938,23940,23943,23945,23947,23949,23951,23954,23956,23959,23961],{"class":3998,"line":4392},[3996,23933,5593],{"class":4002},[3996,23935,4007],{"class":4006},[3996,23937,16201],{"class":4010},[3996,23939,3867],{"class":4006},[3996,23941,23942],{"class":4010},"setTrips",[3996,23944,4019],{"class":4006},[3996,23946,4023],{"class":4022},[3996,23948,4026],{"class":4006},[3996,23950,16320],{"class":4085},[3996,23952,23953],{"class":4006},"[]>(() ",[3996,23955,4103],{"class":4002},[3996,23957,23958],{"class":4006}," [...",[3996,23960,21953],{"class":4064},[3996,23962,8098],{"class":4006},[3996,23964,23965],{"class":3998,"line":4398},[3996,23966,4051],{"emptyLinePlaceholder":4050},[3996,23968,23969,23971,23974,23976,23978,23980,23982,23984,23986,23988,23990],{"class":3998,"line":4404},[3996,23970,5593],{"class":4002},[3996,23972,23973],{"class":4010}," addTrip",[3996,23975,7937],{"class":4006},[3996,23977,15854],{"class":4022},[3996,23979,10564],{"class":4006},[3996,23981,16315],{"class":4064},[3996,23983,8990],{"class":4006},[3996,23985,16320],{"class":4085},[3996,23987,8996],{"class":4006},[3996,23989,4103],{"class":4002},[3996,23991,7958],{"class":4006},[3996,23993,23994,23997,23999,24002,24004,24006,24008,24010,24013,24015],{"class":3998,"line":4410},[3996,23995,23996],{"class":4022},"    setTrips",[3996,23998,10564],{"class":4006},[3996,24000,24001],{"class":4064},"prev",[3996,24003,8996],{"class":4006},[3996,24005,4103],{"class":4002},[3996,24007,4007],{"class":4006},[3996,24009,16315],{"class":4064},[3996,24011,24012],{"class":4006},", ...",[3996,24014,24001],{"class":4064},[3996,24016,8098],{"class":4006},[3996,24018,24019],{"class":3998,"line":4415},[3996,24020,16364],{"class":4006},[3996,24022,24023],{"class":3998,"line":4420},[3996,24024,4051],{"emptyLinePlaceholder":4050},[3996,24026,24027,24029,24032,24034,24036,24038,24040],{"class":3998,"line":4426},[3996,24028,5593],{"class":4002},[3996,24030,24031],{"class":4010}," resetToMock",[3996,24033,7937],{"class":4006},[3996,24035,15854],{"class":4022},[3996,24037,7953],{"class":4006},[3996,24039,4103],{"class":4002},[3996,24041,7958],{"class":4006},[3996,24043,24044,24046,24049,24051],{"class":3998,"line":4432},[3996,24045,23996],{"class":4022},[3996,24047,24048],{"class":4006},"([...",[3996,24050,21953],{"class":4064},[3996,24052,8098],{"class":4006},[3996,24054,24055],{"class":3998,"line":4438},[3996,24056,16364],{"class":4006},[3996,24058,24059],{"class":3998,"line":4443},[3996,24060,4051],{"emptyLinePlaceholder":4050},[3996,24062,24063,24065,24068,24070,24073],{"class":3998,"line":4448},[3996,24064,5593],{"class":4002},[3996,24066,24067],{"class":4010}," value",[3996,24069,7937],{"class":4006},[3996,24071,24072],{"class":4022},"useMemo",[3996,24074,16531],{"class":4006},[3996,24076,24077,24080,24082,24084,24086,24088,24090,24092,24094],{"class":3998,"line":4454},[3996,24078,24079],{"class":4006},"    () ",[3996,24081,4103],{"class":4002},[3996,24083,6872],{"class":4006},[3996,24085,16201],{"class":4064},[3996,24087,3867],{"class":4006},[3996,24089,21760],{"class":4064},[3996,24091,3867],{"class":4006},[3996,24093,16206],{"class":4064},[3996,24095,22801],{"class":4006},[3996,24097,24098,24100,24102,24104,24106,24108,24110],{"class":3998,"line":4460},[3996,24099,16593],{"class":4006},[3996,24101,16201],{"class":4064},[3996,24103,3867],{"class":4006},[3996,24105,21760],{"class":4064},[3996,24107,3867],{"class":4006},[3996,24109,16206],{"class":4064},[3996,24111,16598],{"class":4006},[3996,24113,24114],{"class":3998,"line":4466},[3996,24115,5934],{"class":4006},[3996,24117,24118],{"class":3998,"line":4472},[3996,24119,4051],{"emptyLinePlaceholder":4050},[3996,24121,24122,24124],{"class":3998,"line":4477},[3996,24123,4078],{"class":4057},[3996,24125,5622],{"class":4006},[3996,24127,24128,24130,24133,24135,24137,24139,24142,24144,24146,24148,24150,24152,24154,24156],{"class":3998,"line":5066},[3996,24129,5969],{"class":4081},[3996,24131,24132],{"class":4085},"TripsContext.Provider",[3996,24134,24067],{"class":4089},[3996,24136,4093],{"class":4006},[3996,24138,4096],{"class":4002},[3996,24140,24141],{"class":4064},"value",[3996,24143,4117],{"class":4002},[3996,24145,8059],{"class":4081},[3996,24147,4096],{"class":4002},[3996,24149,23921],{"class":4064},[3996,24151,4117],{"class":4002},[3996,24153,8065],{"class":4081},[3996,24155,24132],{"class":4085},[3996,24157,5924],{"class":4081},[3996,24159,24160],{"class":3998,"line":5072},[3996,24161,5934],{"class":4006},[3996,24163,24164],{"class":3998,"line":5078},[3996,24165,4129],{"class":4006},[3996,24167,24168],{"class":3998,"line":5084},[3996,24169,4051],{"emptyLinePlaceholder":4050},[3996,24171,24172,24174,24176,24179,24182,24184],{"class":3998,"line":5090},[3996,24173,5947],{"class":4057},[3996,24175,5953],{"class":4002},[3996,24177,24178],{"class":4022}," useTrips",[3996,24180,24181],{"class":4006},"(): ",[3996,24183,23863],{"class":4085},[3996,24185,7958],{"class":4006},[3996,24187,24188,24190,24193,24195,24198,24200,24203],{"class":3998,"line":5096},[3996,24189,5593],{"class":4002},[3996,24191,24192],{"class":4010}," ctx",[3996,24194,7937],{"class":4006},[3996,24196,24197],{"class":4022},"useContext",[3996,24199,4109],{"class":4006},[3996,24201,24202],{"class":4064},"TripsContext",[3996,24204,4044],{"class":4006},[3996,24206,24207,24209,24211,24214],{"class":3998,"line":10510},[3996,24208,12973],{"class":4057},[3996,24210,12976],{"class":4006},[3996,24212,24213],{"class":4064},"ctx",[3996,24215,4072],{"class":4006},[3996,24217,24218,24221,24224,24227,24229,24232],{"class":3998,"line":10516},[3996,24219,24220],{"class":4057},"    throw",[3996,24222,24223],{"class":4002}," new",[3996,24225,24226],{"class":4022}," Error",[3996,24228,4109],{"class":4006},[3996,24230,24231],{"class":4029},"'useTrips треба викликати всередині TripsProvider'",[3996,24233,4044],{"class":4006},[3996,24235,24236],{"class":3998,"line":10521},[3996,24237,4384],{"class":4006},[3996,24239,24240,24242,24244],{"class":3998,"line":10552},[3996,24241,4078],{"class":4057},[3996,24243,24192],{"class":4064},[3996,24245,4123],{"class":4006},[3996,24247,24248],{"class":3998,"line":10587},[3996,24249,4129],{"class":4006},[3987,24251,24254],{"className":10127,"code":24252,"filename":24253,"language":10129,"meta":3992,"style":3992},"import type { Trip } from '.\u002Ftypes';\n\n\u002F**\n * Mock-стрічка поїздок. Більше за 3–5 елементів — щоб віртуалізація\n * (FlashList \u002F FlatList) мала сенс на домашньому екрані.\n *\u002F\nexport const mockTrips: Trip[] = [\n  {\n    id: '1',\n    title: 'Карпати на вихідні',\n    dateLabel: '12–14 бер. 2026',\n    description: 'Говерла, полонини й вечірній чай біля каміну в котеджі.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1464822759023-fed622ff2c3b?w=800&q=80',\n    region: 'Карпати',\n  },\n  {\n    id: '2',\n    title: 'Львівський вікенд',\n    dateLabel: '2–4 трав. 2026',\n    description: 'Кава, площа Ринок, закапелки й нічний трамвай.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555881400-74d7acaacd8b?w=800&q=80',\n    region: 'Захід',\n  },\n  {\n    id: '3',\n    title: 'Одеса біля моря',\n    dateLabel: '18–22 лип. 2026',\n    description: 'Схід сонця на набережній, рибний ринок і вечірній Привоз.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=800&q=80',\n    region: 'Південь',\n  },\n  {\n    id: '4',\n    title: 'Київ на три дні',\n    dateLabel: '5–7 черв. 2026',\n    description: 'Поділ, Андріївський узвіз, вечірня прогулянка Хрещатиком.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1565008576549-57569a49371d?w=800&q=80',\n    region: 'Центр',\n  },\n  {\n    id: '5',\n    title: 'Чернівці: університет і дворики',\n    dateLabel: '20–22 вер. 2026',\n    description: 'Резиденція митрополитів, кава на Кобилянській, нічний двір.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1519681393784-d120267933ba?w=800&q=80',\n    region: 'Захід',\n  },\n  {\n    id: '6',\n    title: 'Кам’янець-Подільський',\n    dateLabel: '11–13 квіт. 2026',\n    description: 'Фортеця, каньйон Смотрича, захід сонця з оглядового майданчика.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1506905925346-21bda4d32df4?w=800&q=80',\n    region: 'Захід',\n  },\n  {\n    id: '7',\n    title: 'Харків: місто й парки',\n    dateLabel: '8–10 серп. 2026',\n    description: 'Саржин яр, набережна, вечірні вогні Сумської.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1449824913935-59a10b8d2000?w=800&q=80',\n    region: 'Схід',\n  },\n  {\n    id: '8',\n    title: 'Дніпро: мости й пагорби',\n    dateLabel: '15–17 трав. 2026',\n    description: 'Мереживо мостів, прогулянка набережною, кава з видом на річку.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1476514525535-07fb3b4ae5f1?w=800&q=80',\n    region: 'Центр',\n  },\n  {\n    id: '9',\n    title: 'Ужгород і виноград',\n    dateLabel: '25–27 жовт. 2026',\n    description: 'Замок, липова алея, дегустація біля місцевих виноробів.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1500530855697-b586d89ba3ee?w=800&q=80',\n    region: 'Карпати',\n  },\n  {\n    id: '10',\n    title: 'Полтава: смаки й історія',\n    dateLabel: '3–5 лип. 2026',\n    description: 'Котлета по-київськи — ні, галушки; музей і тихі двори.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1469474968028-56623f02e42e?w=800&q=80',\n    region: 'Центр',\n  },\n  {\n    id: '11',\n    title: 'Затока: пісок і шторм',\n    dateLabel: '1–7 серп. 2026',\n    description: 'Ранкові купання, вечірній вітер, книжка під парасолькою.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=600&q=80',\n    region: 'Південь',\n  },\n  {\n    id: '12',\n    title: 'Яремче: водоспад і ліс',\n    dateLabel: '19–21 черв. 2026',\n    description: 'Прогулянка до водоспаду, гуцульська кухня, туман над смереками.',\n    coverUri:\n      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1441974231531-c6227db76b6e?w=800&q=80',\n    region: 'Карпати',\n  },\n];\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002FmockTrips.ts",[3747,24255,24256,24274,24278,24282,24287,24292,24296,24311,24315,24324,24333,24343,24352,24357,24364,24373,24377,24381,24390,24399,24408,24417,24421,24428,24437,24441,24445,24454,24463,24472,24481,24485,24492,24501,24505,24509,24518,24527,24536,24545,24549,24556,24565,24569,24573,24582,24591,24600,24609,24613,24620,24628,24632,24636,24645,24654,24663,24672,24676,24683,24691,24695,24699,24708,24717,24726,24735,24739,24746,24755,24759,24763,24772,24781,24790,24799,24803,24810,24818,24822,24826,24835,24844,24853,24862,24866,24873,24881,24885,24889,24898,24907,24916,24925,24929,24936,24944,24948,24952,24961,24970,24979,24988,24992,24999,25007,25011,25015,25024,25033,25042,25051,25055,25062,25070,25074],{"__ignoreMap":3992},[3996,24257,24258,24260,24262,24264,24266,24268,24270,24272],{"class":3998,"line":3999},[3996,24259,5501],{"class":4057},[3996,24261,10138],{"class":4057},[3996,24263,5504],{"class":4006},[3996,24265,16320],{"class":4064},[3996,24267,5509],{"class":4006},[3996,24269,5512],{"class":4057},[3996,24271,22538],{"class":4029},[3996,24273,4123],{"class":4006},[3996,24275,24276],{"class":3998,"line":4047},[3996,24277,4051],{"emptyLinePlaceholder":4050},[3996,24279,24280],{"class":3998,"line":4054},[3996,24281,14911],{"class":5783},[3996,24283,24284],{"class":3998,"line":4075},[3996,24285,24286],{"class":5783}," * Mock-стрічка поїздок. Більше за 3–5 елементів — щоб віртуалізація\n",[3996,24288,24289],{"class":3998,"line":4126},[3996,24290,24291],{"class":5783}," * (FlashList \u002F FlatList) мала сенс на домашньому екрані.\n",[3996,24293,24294],{"class":3998,"line":4132},[3996,24295,14926],{"class":5783},[3996,24297,24298,24300,24302,24305,24307,24309],{"class":3998,"line":4137},[3996,24299,5947],{"class":4057},[3996,24301,10214],{"class":4002},[3996,24303,24304],{"class":4010}," mockTrips",[3996,24306,8990],{"class":4006},[3996,24308,16320],{"class":4085},[3996,24310,10225],{"class":4006},[3996,24312,24313],{"class":3998,"line":4275},[3996,24314,10230],{"class":4006},[3996,24316,24317,24319,24322],{"class":3998,"line":4281},[3996,24318,10235],{"class":4064},[3996,24320,24321],{"class":4029}," '1'",[3996,24323,5720],{"class":4006},[3996,24325,24326,24328,24331],{"class":3998,"line":4287},[3996,24327,6856],{"class":4064},[3996,24329,24330],{"class":4029}," 'Карпати на вихідні'",[3996,24332,5720],{"class":4006},[3996,24334,24335,24338,24341],{"class":3998,"line":4293},[3996,24336,24337],{"class":4064},"    dateLabel:",[3996,24339,24340],{"class":4029}," '12–14 бер. 2026'",[3996,24342,5720],{"class":4006},[3996,24344,24345,24347,24350],{"class":3998,"line":4299},[3996,24346,22724],{"class":4064},[3996,24348,24349],{"class":4029}," 'Говерла, полонини й вечірній чай біля каміну в котеджі.'",[3996,24351,5720],{"class":4006},[3996,24353,24354],{"class":3998,"line":4305},[3996,24355,24356],{"class":4064},"    coverUri:\n",[3996,24358,24359,24362],{"class":3998,"line":4311},[3996,24360,24361],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1464822759023-fed622ff2c3b?w=800&q=80'",[3996,24363,5720],{"class":4006},[3996,24365,24366,24368,24371],{"class":3998,"line":4317},[3996,24367,10255],{"class":4064},[3996,24369,24370],{"class":4029}," 'Карпати'",[3996,24372,5720],{"class":4006},[3996,24374,24375],{"class":3998,"line":4323},[3996,24376,10287],{"class":4006},[3996,24378,24379],{"class":3998,"line":4329},[3996,24380,10230],{"class":4006},[3996,24382,24383,24385,24388],{"class":3998,"line":4335},[3996,24384,10235],{"class":4064},[3996,24386,24387],{"class":4029}," '2'",[3996,24389,5720],{"class":4006},[3996,24391,24392,24394,24397],{"class":3998,"line":4341},[3996,24393,6856],{"class":4064},[3996,24395,24396],{"class":4029}," 'Львівський вікенд'",[3996,24398,5720],{"class":4006},[3996,24400,24401,24403,24406],{"class":3998,"line":4347},[3996,24402,24337],{"class":4064},[3996,24404,24405],{"class":4029}," '2–4 трав. 2026'",[3996,24407,5720],{"class":4006},[3996,24409,24410,24412,24415],{"class":3998,"line":4352},[3996,24411,22724],{"class":4064},[3996,24413,24414],{"class":4029}," 'Кава, площа Ринок, закапелки й нічний трамвай.'",[3996,24416,5720],{"class":4006},[3996,24418,24419],{"class":3998,"line":4357},[3996,24420,24356],{"class":4064},[3996,24422,24423,24426],{"class":3998,"line":4363},[3996,24424,24425],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555881400-74d7acaacd8b?w=800&q=80'",[3996,24427,5720],{"class":4006},[3996,24429,24430,24432,24435],{"class":3998,"line":4369},[3996,24431,10255],{"class":4064},[3996,24433,24434],{"class":4029}," 'Захід'",[3996,24436,5720],{"class":4006},[3996,24438,24439],{"class":3998,"line":4375},[3996,24440,10287],{"class":4006},[3996,24442,24443],{"class":3998,"line":4381},[3996,24444,10230],{"class":4006},[3996,24446,24447,24449,24452],{"class":3998,"line":4387},[3996,24448,10235],{"class":4064},[3996,24450,24451],{"class":4029}," '3'",[3996,24453,5720],{"class":4006},[3996,24455,24456,24458,24461],{"class":3998,"line":4392},[3996,24457,6856],{"class":4064},[3996,24459,24460],{"class":4029}," 'Одеса біля моря'",[3996,24462,5720],{"class":4006},[3996,24464,24465,24467,24470],{"class":3998,"line":4398},[3996,24466,24337],{"class":4064},[3996,24468,24469],{"class":4029}," '18–22 лип. 2026'",[3996,24471,5720],{"class":4006},[3996,24473,24474,24476,24479],{"class":3998,"line":4404},[3996,24475,22724],{"class":4064},[3996,24477,24478],{"class":4029}," 'Схід сонця на набережній, рибний ринок і вечірній Привоз.'",[3996,24480,5720],{"class":4006},[3996,24482,24483],{"class":3998,"line":4410},[3996,24484,24356],{"class":4064},[3996,24486,24487,24490],{"class":3998,"line":4415},[3996,24488,24489],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=800&q=80'",[3996,24491,5720],{"class":4006},[3996,24493,24494,24496,24499],{"class":3998,"line":4420},[3996,24495,10255],{"class":4064},[3996,24497,24498],{"class":4029}," 'Південь'",[3996,24500,5720],{"class":4006},[3996,24502,24503],{"class":3998,"line":4426},[3996,24504,10287],{"class":4006},[3996,24506,24507],{"class":3998,"line":4432},[3996,24508,10230],{"class":4006},[3996,24510,24511,24513,24516],{"class":3998,"line":4438},[3996,24512,10235],{"class":4064},[3996,24514,24515],{"class":4029}," '4'",[3996,24517,5720],{"class":4006},[3996,24519,24520,24522,24525],{"class":3998,"line":4443},[3996,24521,6856],{"class":4064},[3996,24523,24524],{"class":4029}," 'Київ на три дні'",[3996,24526,5720],{"class":4006},[3996,24528,24529,24531,24534],{"class":3998,"line":4448},[3996,24530,24337],{"class":4064},[3996,24532,24533],{"class":4029}," '5–7 черв. 2026'",[3996,24535,5720],{"class":4006},[3996,24537,24538,24540,24543],{"class":3998,"line":4454},[3996,24539,22724],{"class":4064},[3996,24541,24542],{"class":4029}," 'Поділ, Андріївський узвіз, вечірня прогулянка Хрещатиком.'",[3996,24544,5720],{"class":4006},[3996,24546,24547],{"class":3998,"line":4460},[3996,24548,24356],{"class":4064},[3996,24550,24551,24554],{"class":3998,"line":4466},[3996,24552,24553],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1565008576549-57569a49371d?w=800&q=80'",[3996,24555,5720],{"class":4006},[3996,24557,24558,24560,24563],{"class":3998,"line":4472},[3996,24559,10255],{"class":4064},[3996,24561,24562],{"class":4029}," 'Центр'",[3996,24564,5720],{"class":4006},[3996,24566,24567],{"class":3998,"line":4477},[3996,24568,10287],{"class":4006},[3996,24570,24571],{"class":3998,"line":5066},[3996,24572,10230],{"class":4006},[3996,24574,24575,24577,24580],{"class":3998,"line":5072},[3996,24576,10235],{"class":4064},[3996,24578,24579],{"class":4029}," '5'",[3996,24581,5720],{"class":4006},[3996,24583,24584,24586,24589],{"class":3998,"line":5078},[3996,24585,6856],{"class":4064},[3996,24587,24588],{"class":4029}," 'Чернівці: університет і дворики'",[3996,24590,5720],{"class":4006},[3996,24592,24593,24595,24598],{"class":3998,"line":5084},[3996,24594,24337],{"class":4064},[3996,24596,24597],{"class":4029}," '20–22 вер. 2026'",[3996,24599,5720],{"class":4006},[3996,24601,24602,24604,24607],{"class":3998,"line":5090},[3996,24603,22724],{"class":4064},[3996,24605,24606],{"class":4029}," 'Резиденція митрополитів, кава на Кобилянській, нічний двір.'",[3996,24608,5720],{"class":4006},[3996,24610,24611],{"class":3998,"line":5096},[3996,24612,24356],{"class":4064},[3996,24614,24615,24618],{"class":3998,"line":10510},[3996,24616,24617],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1519681393784-d120267933ba?w=800&q=80'",[3996,24619,5720],{"class":4006},[3996,24621,24622,24624,24626],{"class":3998,"line":10516},[3996,24623,10255],{"class":4064},[3996,24625,24434],{"class":4029},[3996,24627,5720],{"class":4006},[3996,24629,24630],{"class":3998,"line":10521},[3996,24631,10287],{"class":4006},[3996,24633,24634],{"class":3998,"line":10552},[3996,24635,10230],{"class":4006},[3996,24637,24638,24640,24643],{"class":3998,"line":10587},[3996,24639,10235],{"class":4064},[3996,24641,24642],{"class":4029}," '6'",[3996,24644,5720],{"class":4006},[3996,24646,24647,24649,24652],{"class":3998,"line":12205},[3996,24648,6856],{"class":4064},[3996,24650,24651],{"class":4029}," 'Кам’янець-Подільський'",[3996,24653,5720],{"class":4006},[3996,24655,24656,24658,24661],{"class":3998,"line":12213},[3996,24657,24337],{"class":4064},[3996,24659,24660],{"class":4029}," '11–13 квіт. 2026'",[3996,24662,5720],{"class":4006},[3996,24664,24665,24667,24670],{"class":3998,"line":12223},[3996,24666,22724],{"class":4064},[3996,24668,24669],{"class":4029}," 'Фортеця, каньйон Смотрича, захід сонця з оглядового майданчика.'",[3996,24671,5720],{"class":4006},[3996,24673,24674],{"class":3998,"line":12233},[3996,24675,24356],{"class":4064},[3996,24677,24678,24681],{"class":3998,"line":12243},[3996,24679,24680],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1506905925346-21bda4d32df4?w=800&q=80'",[3996,24682,5720],{"class":4006},[3996,24684,24685,24687,24689],{"class":3998,"line":12253},[3996,24686,10255],{"class":4064},[3996,24688,24434],{"class":4029},[3996,24690,5720],{"class":4006},[3996,24692,24693],{"class":3998,"line":12258},[3996,24694,10287],{"class":4006},[3996,24696,24697],{"class":3998,"line":16645},[3996,24698,10230],{"class":4006},[3996,24700,24701,24703,24706],{"class":3998,"line":16656},[3996,24702,10235],{"class":4064},[3996,24704,24705],{"class":4029}," '7'",[3996,24707,5720],{"class":4006},[3996,24709,24710,24712,24715],{"class":3998,"line":16698},[3996,24711,6856],{"class":4064},[3996,24713,24714],{"class":4029}," 'Харків: місто й парки'",[3996,24716,5720],{"class":4006},[3996,24718,24719,24721,24724],{"class":3998,"line":16720},[3996,24720,24337],{"class":4064},[3996,24722,24723],{"class":4029}," '8–10 серп. 2026'",[3996,24725,5720],{"class":4006},[3996,24727,24728,24730,24733],{"class":3998,"line":16750},[3996,24729,22724],{"class":4064},[3996,24731,24732],{"class":4029}," 'Саржин яр, набережна, вечірні вогні Сумської.'",[3996,24734,5720],{"class":4006},[3996,24736,24737],{"class":3998,"line":16784},[3996,24738,24356],{"class":4064},[3996,24740,24741,24744],{"class":3998,"line":16791},[3996,24742,24743],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1449824913935-59a10b8d2000?w=800&q=80'",[3996,24745,5720],{"class":4006},[3996,24747,24748,24750,24753],{"class":3998,"line":16797},[3996,24749,10255],{"class":4064},[3996,24751,24752],{"class":4029}," 'Схід'",[3996,24754,5720],{"class":4006},[3996,24756,24757],{"class":3998,"line":16811},[3996,24758,10287],{"class":4006},[3996,24760,24761],{"class":3998,"line":16837},[3996,24762,10230],{"class":4006},[3996,24764,24765,24767,24770],{"class":3998,"line":16857},[3996,24766,10235],{"class":4064},[3996,24768,24769],{"class":4029}," '8'",[3996,24771,5720],{"class":4006},[3996,24773,24774,24776,24779],{"class":3998,"line":16889},[3996,24775,6856],{"class":4064},[3996,24777,24778],{"class":4029}," 'Дніпро: мости й пагорби'",[3996,24780,5720],{"class":4006},[3996,24782,24783,24785,24788],{"class":3998,"line":16897},[3996,24784,24337],{"class":4064},[3996,24786,24787],{"class":4029}," '15–17 трав. 2026'",[3996,24789,5720],{"class":4006},[3996,24791,24792,24794,24797],{"class":3998,"line":16908},[3996,24793,22724],{"class":4064},[3996,24795,24796],{"class":4029}," 'Мереживо мостів, прогулянка набережною, кава з видом на річку.'",[3996,24798,5720],{"class":4006},[3996,24800,24801],{"class":3998,"line":16951},[3996,24802,24356],{"class":4064},[3996,24804,24805,24808],{"class":3998,"line":16973},[3996,24806,24807],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1476514525535-07fb3b4ae5f1?w=800&q=80'",[3996,24809,5720],{"class":4006},[3996,24811,24812,24814,24816],{"class":3998,"line":16979},[3996,24813,10255],{"class":4064},[3996,24815,24562],{"class":4029},[3996,24817,5720],{"class":4006},[3996,24819,24820],{"class":3998,"line":16988},[3996,24821,10287],{"class":4006},[3996,24823,24824],{"class":3998,"line":16999},[3996,24825,10230],{"class":4006},[3996,24827,24828,24830,24833],{"class":3998,"line":17004},[3996,24829,10235],{"class":4064},[3996,24831,24832],{"class":4029}," '9'",[3996,24834,5720],{"class":4006},[3996,24836,24837,24839,24842],{"class":3998,"line":17038},[3996,24838,6856],{"class":4064},[3996,24840,24841],{"class":4029}," 'Ужгород і виноград'",[3996,24843,5720],{"class":4006},[3996,24845,24846,24848,24851],{"class":3998,"line":17047},[3996,24847,24337],{"class":4064},[3996,24849,24850],{"class":4029}," '25–27 жовт. 2026'",[3996,24852,5720],{"class":4006},[3996,24854,24855,24857,24860],{"class":3998,"line":17052},[3996,24856,22724],{"class":4064},[3996,24858,24859],{"class":4029}," 'Замок, липова алея, дегустація біля місцевих виноробів.'",[3996,24861,5720],{"class":4006},[3996,24863,24864],{"class":3998,"line":17057},[3996,24865,24356],{"class":4064},[3996,24867,24868,24871],{"class":3998,"line":17067},[3996,24869,24870],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1500530855697-b586d89ba3ee?w=800&q=80'",[3996,24872,5720],{"class":4006},[3996,24874,24875,24877,24879],{"class":3998,"line":17075},[3996,24876,10255],{"class":4064},[3996,24878,24370],{"class":4029},[3996,24880,5720],{"class":4006},[3996,24882,24883],{"class":3998,"line":17088},[3996,24884,10287],{"class":4006},[3996,24886,24887],{"class":3998,"line":17101},[3996,24888,10230],{"class":4006},[3996,24890,24891,24893,24896],{"class":3998,"line":17107},[3996,24892,10235],{"class":4064},[3996,24894,24895],{"class":4029}," '10'",[3996,24897,5720],{"class":4006},[3996,24899,24900,24902,24905],{"class":3998,"line":17121},[3996,24901,6856],{"class":4064},[3996,24903,24904],{"class":4029}," 'Полтава: смаки й історія'",[3996,24906,5720],{"class":4006},[3996,24908,24909,24911,24914],{"class":3998,"line":17136},[3996,24910,24337],{"class":4064},[3996,24912,24913],{"class":4029}," '3–5 лип. 2026'",[3996,24915,5720],{"class":4006},[3996,24917,24918,24920,24923],{"class":3998,"line":17150},[3996,24919,22724],{"class":4064},[3996,24921,24922],{"class":4029}," 'Котлета по-київськи — ні, галушки; музей і тихі двори.'",[3996,24924,5720],{"class":4006},[3996,24926,24927],{"class":3998,"line":17155},[3996,24928,24356],{"class":4064},[3996,24930,24931,24934],{"class":3998,"line":17163},[3996,24932,24933],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1469474968028-56623f02e42e?w=800&q=80'",[3996,24935,5720],{"class":4006},[3996,24937,24938,24940,24942],{"class":3998,"line":17168},[3996,24939,10255],{"class":4064},[3996,24941,24562],{"class":4029},[3996,24943,5720],{"class":4006},[3996,24945,24946],{"class":3998,"line":17200},[3996,24947,10287],{"class":4006},[3996,24949,24950],{"class":3998,"line":17206},[3996,24951,10230],{"class":4006},[3996,24953,24954,24956,24959],{"class":3998,"line":17215},[3996,24955,10235],{"class":4064},[3996,24957,24958],{"class":4029}," '11'",[3996,24960,5720],{"class":4006},[3996,24962,24963,24965,24968],{"class":3998,"line":17223},[3996,24964,6856],{"class":4064},[3996,24966,24967],{"class":4029}," 'Затока: пісок і шторм'",[3996,24969,5720],{"class":4006},[3996,24971,24972,24974,24977],{"class":3998,"line":17234},[3996,24973,24337],{"class":4064},[3996,24975,24976],{"class":4029}," '1–7 серп. 2026'",[3996,24978,5720],{"class":4006},[3996,24980,24981,24983,24986],{"class":3998,"line":17252},[3996,24982,22724],{"class":4064},[3996,24984,24985],{"class":4029}," 'Ранкові купання, вечірній вітер, книжка під парасолькою.'",[3996,24987,5720],{"class":4006},[3996,24989,24990],{"class":3998,"line":17271},[3996,24991,24356],{"class":4064},[3996,24993,24994,24997],{"class":3998,"line":17276},[3996,24995,24996],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=600&q=80'",[3996,24998,5720],{"class":4006},[3996,25000,25001,25003,25005],{"class":3998,"line":17282},[3996,25002,10255],{"class":4064},[3996,25004,24498],{"class":4029},[3996,25006,5720],{"class":4006},[3996,25008,25009],{"class":3998,"line":17291},[3996,25010,10287],{"class":4006},[3996,25012,25013],{"class":3998,"line":17300},[3996,25014,10230],{"class":4006},[3996,25016,25017,25019,25022],{"class":3998,"line":17305},[3996,25018,10235],{"class":4064},[3996,25020,25021],{"class":4029}," '12'",[3996,25023,5720],{"class":4006},[3996,25025,25026,25028,25031],{"class":3998,"line":17310},[3996,25027,6856],{"class":4064},[3996,25029,25030],{"class":4029}," 'Яремче: водоспад і ліс'",[3996,25032,5720],{"class":4006},[3996,25034,25035,25037,25040],{"class":3998,"line":17317},[3996,25036,24337],{"class":4064},[3996,25038,25039],{"class":4029}," '19–21 черв. 2026'",[3996,25041,5720],{"class":4006},[3996,25043,25044,25046,25049],{"class":3998,"line":17341},[3996,25045,22724],{"class":4064},[3996,25047,25048],{"class":4029}," 'Прогулянка до водоспаду, гуцульська кухня, туман над смереками.'",[3996,25050,5720],{"class":4006},[3996,25052,25053],{"class":3998,"line":17348},[3996,25054,24356],{"class":4064},[3996,25056,25057,25060],{"class":3998,"line":17359},[3996,25058,25059],{"class":4029},"      'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1441974231531-c6227db76b6e?w=800&q=80'",[3996,25061,5720],{"class":4006},[3996,25063,25064,25066,25068],{"class":3998,"line":17371},[3996,25065,10255],{"class":4064},[3996,25067,24370],{"class":4029},[3996,25069,5720],{"class":4006},[3996,25071,25072],{"class":3998,"line":17377},[3996,25073,10287],{"class":4006},[3996,25075,25076],{"class":3998,"line":17391},[3996,25077,10513],{"class":4006},[3987,25079,25082],{"className":10127,"code":25080,"filename":25081,"language":10129,"meta":3992,"style":3992},"import type { Place } from '.\u002Ftypes';\n\n\u002F** Місця всередині поїздок — для горизонтальної стрічки на home. *\u002F\nexport const mockPlaces: Place[] = [\n  {\n    id: 'p1',\n    tripId: '1',\n    name: 'Говерла',\n    city: 'Карпати',\n    note: 'Схід сонця з вершини',\n  },\n  {\n    id: 'p2',\n    tripId: '1',\n    name: 'Котедж біля полонини',\n    city: 'Карпати',\n    note: 'Вечірній чай і камін',\n  },\n  {\n    id: 'p3',\n    tripId: '2',\n    name: 'Площа Ринок',\n    city: 'Львів',\n    note: 'Ратуша й кав’ярні',\n  },\n  {\n    id: 'p4',\n    tripId: '2',\n    name: 'Високий Замок',\n    city: 'Львів',\n    note: 'Панорама міста',\n  },\n  {\n    id: 'p5',\n    tripId: '3',\n    name: 'Дерибасівська',\n    city: 'Одеса',\n    note: 'Прогулянка ввечері',\n  },\n  {\n    id: 'p6',\n    tripId: '3',\n    name: 'Ланжерон',\n    city: 'Одеса',\n    note: 'Пляж і набережна',\n  },\n  {\n    id: 'p7',\n    tripId: '4',\n    name: 'Андріївський узвіз',\n    city: 'Київ',\n    note: 'Галереї й бруківка',\n  },\n  {\n    id: 'p8',\n    tripId: '6',\n    name: 'Стара фортеця',\n    city: 'Кам’янець',\n    note: 'Фото з мосту',\n  },\n  {\n    id: 'p9',\n    tripId: '9',\n    name: 'Ужгородський замок',\n    city: 'Ужгород',\n    note: 'Музей і сад',\n  },\n  {\n    id: 'p10',\n    tripId: '12',\n    name: 'Водоспад Пробій',\n    city: 'Яремче',\n    note: 'Шум води й місток',\n  },\n];\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002FmockPlaces.ts",[3747,25083,25084,25102,25106,25111,25126,25130,25139,25148,25157,25166,25176,25180,25184,25193,25201,25210,25218,25227,25231,25235,25244,25252,25261,25269,25278,25282,25286,25295,25303,25312,25320,25329,25333,25337,25346,25354,25363,25371,25380,25384,25388,25397,25405,25414,25422,25431,25435,25439,25448,25456,25465,25473,25482,25486,25490,25499,25507,25516,25525,25534,25538,25542,25551,25559,25568,25577,25586,25590,25594,25603,25611,25620,25629,25638,25642],{"__ignoreMap":3992},[3996,25085,25086,25088,25090,25092,25094,25096,25098,25100],{"class":3998,"line":3999},[3996,25087,5501],{"class":4057},[3996,25089,10138],{"class":4057},[3996,25091,5504],{"class":4006},[3996,25093,16263],{"class":4064},[3996,25095,5509],{"class":4006},[3996,25097,5512],{"class":4057},[3996,25099,22538],{"class":4029},[3996,25101,4123],{"class":4006},[3996,25103,25104],{"class":3998,"line":4047},[3996,25105,4051],{"emptyLinePlaceholder":4050},[3996,25107,25108],{"class":3998,"line":4054},[3996,25109,25110],{"class":5783},"\u002F** Місця всередині поїздок — для горизонтальної стрічки на home. *\u002F\n",[3996,25112,25113,25115,25117,25120,25122,25124],{"class":3998,"line":4075},[3996,25114,5947],{"class":4057},[3996,25116,10214],{"class":4002},[3996,25118,25119],{"class":4010}," mockPlaces",[3996,25121,8990],{"class":4006},[3996,25123,16263],{"class":4085},[3996,25125,10225],{"class":4006},[3996,25127,25128],{"class":3998,"line":4126},[3996,25129,10230],{"class":4006},[3996,25131,25132,25134,25137],{"class":3998,"line":4132},[3996,25133,10235],{"class":4064},[3996,25135,25136],{"class":4029}," 'p1'",[3996,25138,5720],{"class":4006},[3996,25140,25141,25144,25146],{"class":3998,"line":4137},[3996,25142,25143],{"class":4064},"    tripId:",[3996,25145,24321],{"class":4029},[3996,25147,5720],{"class":4006},[3996,25149,25150,25152,25155],{"class":3998,"line":4275},[3996,25151,10245],{"class":4064},[3996,25153,25154],{"class":4029}," 'Говерла'",[3996,25156,5720],{"class":4006},[3996,25158,25159,25162,25164],{"class":3998,"line":4281},[3996,25160,25161],{"class":4064},"    city:",[3996,25163,24370],{"class":4029},[3996,25165,5720],{"class":4006},[3996,25167,25168,25171,25174],{"class":3998,"line":4287},[3996,25169,25170],{"class":4064},"    note:",[3996,25172,25173],{"class":4029}," 'Схід сонця з вершини'",[3996,25175,5720],{"class":4006},[3996,25177,25178],{"class":3998,"line":4293},[3996,25179,10287],{"class":4006},[3996,25181,25182],{"class":3998,"line":4299},[3996,25183,10230],{"class":4006},[3996,25185,25186,25188,25191],{"class":3998,"line":4305},[3996,25187,10235],{"class":4064},[3996,25189,25190],{"class":4029}," 'p2'",[3996,25192,5720],{"class":4006},[3996,25194,25195,25197,25199],{"class":3998,"line":4311},[3996,25196,25143],{"class":4064},[3996,25198,24321],{"class":4029},[3996,25200,5720],{"class":4006},[3996,25202,25203,25205,25208],{"class":3998,"line":4317},[3996,25204,10245],{"class":4064},[3996,25206,25207],{"class":4029}," 'Котедж біля полонини'",[3996,25209,5720],{"class":4006},[3996,25211,25212,25214,25216],{"class":3998,"line":4323},[3996,25213,25161],{"class":4064},[3996,25215,24370],{"class":4029},[3996,25217,5720],{"class":4006},[3996,25219,25220,25222,25225],{"class":3998,"line":4329},[3996,25221,25170],{"class":4064},[3996,25223,25224],{"class":4029}," 'Вечірній чай і камін'",[3996,25226,5720],{"class":4006},[3996,25228,25229],{"class":3998,"line":4335},[3996,25230,10287],{"class":4006},[3996,25232,25233],{"class":3998,"line":4341},[3996,25234,10230],{"class":4006},[3996,25236,25237,25239,25242],{"class":3998,"line":4347},[3996,25238,10235],{"class":4064},[3996,25240,25241],{"class":4029}," 'p3'",[3996,25243,5720],{"class":4006},[3996,25245,25246,25248,25250],{"class":3998,"line":4352},[3996,25247,25143],{"class":4064},[3996,25249,24387],{"class":4029},[3996,25251,5720],{"class":4006},[3996,25253,25254,25256,25259],{"class":3998,"line":4357},[3996,25255,10245],{"class":4064},[3996,25257,25258],{"class":4029}," 'Площа Ринок'",[3996,25260,5720],{"class":4006},[3996,25262,25263,25265,25267],{"class":3998,"line":4363},[3996,25264,25161],{"class":4064},[3996,25266,10307],{"class":4029},[3996,25268,5720],{"class":4006},[3996,25270,25271,25273,25276],{"class":3998,"line":4369},[3996,25272,25170],{"class":4064},[3996,25274,25275],{"class":4029}," 'Ратуша й кав’ярні'",[3996,25277,5720],{"class":4006},[3996,25279,25280],{"class":3998,"line":4375},[3996,25281,10287],{"class":4006},[3996,25283,25284],{"class":3998,"line":4381},[3996,25285,10230],{"class":4006},[3996,25287,25288,25290,25293],{"class":3998,"line":4387},[3996,25289,10235],{"class":4064},[3996,25291,25292],{"class":4029}," 'p4'",[3996,25294,5720],{"class":4006},[3996,25296,25297,25299,25301],{"class":3998,"line":4392},[3996,25298,25143],{"class":4064},[3996,25300,24387],{"class":4029},[3996,25302,5720],{"class":4006},[3996,25304,25305,25307,25310],{"class":3998,"line":4398},[3996,25306,10245],{"class":4064},[3996,25308,25309],{"class":4029}," 'Високий Замок'",[3996,25311,5720],{"class":4006},[3996,25313,25314,25316,25318],{"class":3998,"line":4404},[3996,25315,25161],{"class":4064},[3996,25317,10307],{"class":4029},[3996,25319,5720],{"class":4006},[3996,25321,25322,25324,25327],{"class":3998,"line":4410},[3996,25323,25170],{"class":4064},[3996,25325,25326],{"class":4029}," 'Панорама міста'",[3996,25328,5720],{"class":4006},[3996,25330,25331],{"class":3998,"line":4415},[3996,25332,10287],{"class":4006},[3996,25334,25335],{"class":3998,"line":4420},[3996,25336,10230],{"class":4006},[3996,25338,25339,25341,25344],{"class":3998,"line":4426},[3996,25340,10235],{"class":4064},[3996,25342,25343],{"class":4029}," 'p5'",[3996,25345,5720],{"class":4006},[3996,25347,25348,25350,25352],{"class":3998,"line":4432},[3996,25349,25143],{"class":4064},[3996,25351,24451],{"class":4029},[3996,25353,5720],{"class":4006},[3996,25355,25356,25358,25361],{"class":3998,"line":4438},[3996,25357,10245],{"class":4064},[3996,25359,25360],{"class":4029}," 'Дерибасівська'",[3996,25362,5720],{"class":4006},[3996,25364,25365,25367,25369],{"class":3998,"line":4443},[3996,25366,25161],{"class":4064},[3996,25368,10362],{"class":4029},[3996,25370,5720],{"class":4006},[3996,25372,25373,25375,25378],{"class":3998,"line":4448},[3996,25374,25170],{"class":4064},[3996,25376,25377],{"class":4029}," 'Прогулянка ввечері'",[3996,25379,5720],{"class":4006},[3996,25381,25382],{"class":3998,"line":4454},[3996,25383,10287],{"class":4006},[3996,25385,25386],{"class":3998,"line":4460},[3996,25387,10230],{"class":4006},[3996,25389,25390,25392,25395],{"class":3998,"line":4466},[3996,25391,10235],{"class":4064},[3996,25393,25394],{"class":4029}," 'p6'",[3996,25396,5720],{"class":4006},[3996,25398,25399,25401,25403],{"class":3998,"line":4472},[3996,25400,25143],{"class":4064},[3996,25402,24451],{"class":4029},[3996,25404,5720],{"class":4006},[3996,25406,25407,25409,25412],{"class":3998,"line":4477},[3996,25408,10245],{"class":4064},[3996,25410,25411],{"class":4029}," 'Ланжерон'",[3996,25413,5720],{"class":4006},[3996,25415,25416,25418,25420],{"class":3998,"line":5066},[3996,25417,25161],{"class":4064},[3996,25419,10362],{"class":4029},[3996,25421,5720],{"class":4006},[3996,25423,25424,25426,25429],{"class":3998,"line":5072},[3996,25425,25170],{"class":4064},[3996,25427,25428],{"class":4029}," 'Пляж і набережна'",[3996,25430,5720],{"class":4006},[3996,25432,25433],{"class":3998,"line":5078},[3996,25434,10287],{"class":4006},[3996,25436,25437],{"class":3998,"line":5084},[3996,25438,10230],{"class":4006},[3996,25440,25441,25443,25446],{"class":3998,"line":5090},[3996,25442,10235],{"class":4064},[3996,25444,25445],{"class":4029}," 'p7'",[3996,25447,5720],{"class":4006},[3996,25449,25450,25452,25454],{"class":3998,"line":5096},[3996,25451,25143],{"class":4064},[3996,25453,24515],{"class":4029},[3996,25455,5720],{"class":4006},[3996,25457,25458,25460,25463],{"class":3998,"line":10510},[3996,25459,10245],{"class":4064},[3996,25461,25462],{"class":4029}," 'Андріївський узвіз'",[3996,25464,5720],{"class":4006},[3996,25466,25467,25469,25471],{"class":3998,"line":10516},[3996,25468,25161],{"class":4064},[3996,25470,10248],{"class":4029},[3996,25472,5720],{"class":4006},[3996,25474,25475,25477,25480],{"class":3998,"line":10521},[3996,25476,25170],{"class":4064},[3996,25478,25479],{"class":4029}," 'Галереї й бруківка'",[3996,25481,5720],{"class":4006},[3996,25483,25484],{"class":3998,"line":10552},[3996,25485,10287],{"class":4006},[3996,25487,25488],{"class":3998,"line":10587},[3996,25489,10230],{"class":4006},[3996,25491,25492,25494,25497],{"class":3998,"line":12205},[3996,25493,10235],{"class":4064},[3996,25495,25496],{"class":4029}," 'p8'",[3996,25498,5720],{"class":4006},[3996,25500,25501,25503,25505],{"class":3998,"line":12213},[3996,25502,25143],{"class":4064},[3996,25504,24642],{"class":4029},[3996,25506,5720],{"class":4006},[3996,25508,25509,25511,25514],{"class":3998,"line":12223},[3996,25510,10245],{"class":4064},[3996,25512,25513],{"class":4029}," 'Стара фортеця'",[3996,25515,5720],{"class":4006},[3996,25517,25518,25520,25523],{"class":3998,"line":12233},[3996,25519,25161],{"class":4064},[3996,25521,25522],{"class":4029}," 'Кам’янець'",[3996,25524,5720],{"class":4006},[3996,25526,25527,25529,25532],{"class":3998,"line":12243},[3996,25528,25170],{"class":4064},[3996,25530,25531],{"class":4029}," 'Фото з мосту'",[3996,25533,5720],{"class":4006},[3996,25535,25536],{"class":3998,"line":12253},[3996,25537,10287],{"class":4006},[3996,25539,25540],{"class":3998,"line":12258},[3996,25541,10230],{"class":4006},[3996,25543,25544,25546,25549],{"class":3998,"line":16645},[3996,25545,10235],{"class":4064},[3996,25547,25548],{"class":4029}," 'p9'",[3996,25550,5720],{"class":4006},[3996,25552,25553,25555,25557],{"class":3998,"line":16656},[3996,25554,25143],{"class":4064},[3996,25556,24832],{"class":4029},[3996,25558,5720],{"class":4006},[3996,25560,25561,25563,25566],{"class":3998,"line":16698},[3996,25562,10245],{"class":4064},[3996,25564,25565],{"class":4029}," 'Ужгородський замок'",[3996,25567,5720],{"class":4006},[3996,25569,25570,25572,25575],{"class":3998,"line":16720},[3996,25571,25161],{"class":4064},[3996,25573,25574],{"class":4029}," 'Ужгород'",[3996,25576,5720],{"class":4006},[3996,25578,25579,25581,25584],{"class":3998,"line":16750},[3996,25580,25170],{"class":4064},[3996,25582,25583],{"class":4029}," 'Музей і сад'",[3996,25585,5720],{"class":4006},[3996,25587,25588],{"class":3998,"line":16784},[3996,25589,10287],{"class":4006},[3996,25591,25592],{"class":3998,"line":16791},[3996,25593,10230],{"class":4006},[3996,25595,25596,25598,25601],{"class":3998,"line":16797},[3996,25597,10235],{"class":4064},[3996,25599,25600],{"class":4029}," 'p10'",[3996,25602,5720],{"class":4006},[3996,25604,25605,25607,25609],{"class":3998,"line":16811},[3996,25606,25143],{"class":4064},[3996,25608,25021],{"class":4029},[3996,25610,5720],{"class":4006},[3996,25612,25613,25615,25618],{"class":3998,"line":16837},[3996,25614,10245],{"class":4064},[3996,25616,25617],{"class":4029}," 'Водоспад Пробій'",[3996,25619,5720],{"class":4006},[3996,25621,25622,25624,25627],{"class":3998,"line":16857},[3996,25623,25161],{"class":4064},[3996,25625,25626],{"class":4029}," 'Яремче'",[3996,25628,5720],{"class":4006},[3996,25630,25631,25633,25636],{"class":3998,"line":16889},[3996,25632,25170],{"class":4064},[3996,25634,25635],{"class":4029}," 'Шум води й місток'",[3996,25637,5720],{"class":4006},[3996,25639,25640],{"class":3998,"line":16897},[3996,25641,10287],{"class":4006},[3996,25643,25644],{"class":3998,"line":16908},[3996,25645,10513],{"class":4006},[3987,25647,25650],{"className":3989,"code":25648,"filename":25649,"language":3991,"meta":3992,"style":3992},"import { useState } from 'react';\nimport {\n  KeyboardAvoidingView,\n  Platform,\n  ScrollView,\n  StyleSheet,\n  Switch,\n  View,\n} from 'react-native';\nimport { Controller, useForm } from 'react-hook-form';\nimport { zodResolver } from '@hookform\u002Fresolvers\u002Fzod';\nimport { Picker } from '@react-native-picker\u002Fpicker';\nimport Checkbox from '@react-native-community\u002Fcheckbox';\nimport Slider from '@react-native-community\u002Fslider';\n\nimport {\n  createTripSchema,\n  type CreateTripFormValues,\n} from '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002FcreateTripSchema';\nimport { formatTripDateLabel } from '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002FformatTripDates';\nimport { TRIP_REGIONS, type Trip } from '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes';\nimport { DateField } from '@\u002Ffeatures\u002Ftrips\u002Fui\u002FDateField';\nimport { FormRow } from '@\u002Ffeatures\u002Ftrips\u002Fui\u002FFormRow';\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\nimport { AppText, Button, TextField } from '@\u002Fshared\u002Fui';\n\ntype CreateTripFormProps = {\n  onSubmitSuccess: (trip: Trip) => void;\n  onCancel?: () => void;\n};\n\nfunction startOfToday(): Date {\n  const d = new Date();\n  d.setHours(12, 0, 0, 0);\n  return d;\n}\n\nfunction addDays(base: Date, days: number): Date {\n  const d = new Date(base);\n  d.setDate(d.getDate() + days);\n  return d;\n}\n\n\u002F**\n * Форма «Нова поїздка»: усі основні form-контроли + RHF + Zod.\n * Не залежить від навігації — батько вирішує, куди піти після submit.\n *\u002F\nexport function CreateTripForm({\n  onSubmitSuccess,\n  onCancel,\n}: CreateTripFormProps) {\n  const { colors, spacing, radius } = useTheme();\n  const [submitting, setSubmitting] = useState(false);\n\n  const {\n    control,\n    handleSubmit,\n    watch,\n    formState: { errors },\n  } = useForm\u003CCreateTripFormValues>({\n    resolver: zodResolver(createTripSchema),\n    defaultValues: {\n      title: '',\n      region: 'Карпати',\n      description: '',\n      startDate: startOfToday(),\n      endDate: addDays(startOfToday(), 2),\n      isPrivate: false,\n      plannedDays: 3,\n      hasItinerary: false,\n      \u002F\u002F literal true — у default false, щоб користувач свідомо поставив галочку\n      acceptedLocalSave: false as unknown as true,\n    },\n    mode: 'onSubmit',\n    reValidateMode: 'onChange',\n  });\n\n  const startDate = watch('startDate');\n  const plannedDays = watch('plannedDays');\n\n  const onValid = (values: CreateTripFormValues) => {\n    setSubmitting(true);\n    const trip: Trip = {\n      id: `local-${Date.now()}`,\n      title: values.title,\n      region: values.region,\n      description: values.description,\n      dateLabel: formatTripDateLabel(values.startDate, values.endDate),\n      coverUri: `https:\u002F\u002Fpicsum.photos\u002Fseed\u002F${encodeURIComponent(values.title)}\u002F800\u002F400`,\n      isPrivate: values.isPrivate,\n      plannedDays: values.plannedDays,\n      hasItinerary: values.hasItinerary,\n    };\n    onSubmitSuccess(trip);\n    setSubmitting(false);\n  };\n\n  return (\n    \u003CKeyboardAvoidingView\n      style={styles.flex}\n      behavior={Platform.OS === 'ios' ? 'padding' : 'height'}\n      keyboardVerticalOffset={Platform.OS === 'ios' ? 8 : 0}\n    >\n      \u003CScrollView\n        style={styles.flex}\n        contentContainerStyle={[\n          styles.content,\n          { padding: spacing.md, gap: spacing.md, paddingBottom: spacing.xl },\n        ]}\n        keyboardShouldPersistTaps=\"handled\"\n        keyboardDismissMode=\"on-drag\"\n        showsVerticalScrollIndicator={false}\n      >\n        \u003CAppText variant=\"caption\" color={colors.textSecondary}>\n          Заповніть поля. Помилки з’являться після натискання «Створити», якщо\n          щось не так. Тут зібрані різні типи контролів: текст, список, дати,\n          перемикач, галочка, повзунок.\n        \u003C\u002FAppText>\n\n        {\u002F* ——— TextInput ——— *\u002F}\n        \u003CController\n          control={control}\n          name=\"title\"\n          render={({ field: { onChange, onBlur, value } }) => (\n            \u003CTextField\n              label=\"Назва поїздки\"\n              placeholder=\"Наприклад, Карпати на вихідні\"\n              value={value}\n              onChangeText={onChange}\n              onBlur={onBlur}\n              error={errors.title?.message}\n              autoCapitalize=\"sentences\"\n              returnKeyType=\"next\"\n              maxLength={80}\n            \u002F>\n          )}\n        \u002F>\n\n        {\u002F* ——— Picker ——— *\u002F}\n        \u003CController\n          control={control}\n          name=\"region\"\n          render={({ field: { onChange, value } }) => (\n            \u003CFormRow\n              label=\"Регіон\"\n              description=\"Оберіть зі списку (Picker), а не вводьте вручну\"\n              error={errors.region?.message}\n              stacked\n              control={\n                \u003CView\n                  style={[\n                    styles.pickerWrap,\n                    {\n                      borderColor: errors.region\n                        ? colors.danger\n                        : colors.border,\n                      backgroundColor: colors.surface,\n                      borderRadius: radius.md,\n                    },\n                  ]}\n                >\n                  \u003CPicker\n                    selectedValue={value}\n                    onValueChange={onChange}\n                    dropdownIconColor={colors.text}\n                    style={{ color: colors.text }}\n                  >\n                    {TRIP_REGIONS.map((region) => (\n                      \u003CPicker.Item\n                        key={region}\n                        label={region}\n                        value={region}\n                        color={colors.text}\n                      \u002F>\n                    ))}\n                  \u003C\u002FPicker>\n                \u003C\u002FView>\n              }\n            \u002F>\n          )}\n        \u002F>\n\n        {\u002F* ——— DateTimePicker через DateField ——— *\u002F}\n        \u003CController\n          control={control}\n          name=\"startDate\"\n          render={({ field: { onChange, onBlur, value } }) => (\n            \u003CDateField\n              label=\"Дата початку\"\n              value={value}\n              onChange={onChange}\n              onBlur={onBlur}\n              error={errors.startDate?.message}\n            \u002F>\n          )}\n        \u002F>\n\n        \u003CController\n          control={control}\n          name=\"endDate\"\n          render={({ field: { onChange, onBlur, value } }) => (\n            \u003CDateField\n              label=\"Дата завершення\"\n              value={value}\n              onChange={onChange}\n              onBlur={onBlur}\n              error={errors.endDate?.message}\n              minimumDate={startDate}\n            \u002F>\n          )}\n        \u002F>\n\n        {\u002F* ——— TextInput multiline ——— *\u002F}\n        \u003CController\n          control={control}\n          name=\"description\"\n          render={({ field: { onChange, onBlur, value } }) => (\n            \u003CTextField\n              label=\"Опис\"\n              placeholder=\"Коротко: що плануєте побачити, з ким їдете…\"\n              value={value}\n              onChangeText={onChange}\n              onBlur={onBlur}\n              error={errors.description?.message}\n              multiline\n              numberOfLines={4}\n              textAlignVertical=\"top\"\n              style={styles.multiline}\n              maxLength={500}\n              hint=\"Мінімум 10 символів\"\n            \u002F>\n          )}\n        \u002F>\n\n        {\u002F* ——— Slider ——— *\u002F}\n        \u003CController\n          control={control}\n          name=\"plannedDays\"\n          render={({ field: { onChange, value } }) => (\n            \u003CFormRow\n              label={`Тривалість: ${value} ${daysWord(value)}`}\n              description=\"Повзунок (Slider) — зручно для діапазону 1–14\"\n              error={errors.plannedDays?.message}\n              stacked\n              control={\n                \u003CSlider\n                  minimumValue={1}\n                  maximumValue={14}\n                  step={1}\n                  value={value}\n                  onValueChange={onChange}\n                  minimumTrackTintColor={colors.primary}\n                  maximumTrackTintColor={colors.border}\n                  thumbTintColor={colors.primary}\n                \u002F>\n              }\n            \u002F>\n          )}\n        \u002F>\n        \u003CAppText variant=\"caption\" color={colors.textSecondary}>\n          Зараз на слайдері: {plannedDays}{' '}\n          {daysWord(plannedDays ?? 1)} (можна не збігатися з датами — це\n          окреме «орієнтовне» поле для навчання).\n        \u003C\u002FAppText>\n\n        {\u002F* ——— Switch ——— *\u002F}\n        \u003CController\n          control={control}\n          name=\"isPrivate\"\n          render={({ field: { onChange, value } }) => (\n            \u003CFormRow\n              label=\"Приватна поїздка\"\n              description=\"Switch: увімкнено — мітка «приватна» на картці\"\n              error={errors.isPrivate?.message}\n              control={\n                \u003CSwitch\n                  value={value}\n                  onValueChange={onChange}\n                  trackColor={{\n                    false: colors.border,\n                    true: colors.primary,\n                  }}\n                  thumbColor={colors.onPrimary}\n                  ios_backgroundColor={colors.border}\n                \u002F>\n              }\n            \u002F>\n          )}\n        \u002F>\n\n        {\u002F* ——— Checkbox (опційний прапорець) ——— *\u002F}\n        \u003CController\n          control={control}\n          name=\"hasItinerary\"\n          render={({ field: { onChange, value } }) => (\n            \u003CFormRow\n              label=\"Є план маршруту\"\n              description=\"Checkbox: так \u002F ні, без обов’язковості\"\n              error={errors.hasItinerary?.message}\n              control={\n                \u003CCheckbox\n                  value={value}\n                  onValueChange={onChange}\n                  tintColors={{\n                    true: colors.primary,\n                    false: colors.border,\n                  }}\n                  onCheckColor={colors.onPrimary}\n                  onFillColor={colors.primary}\n                  onTintColor={colors.primary}\n                  boxType=\"square\"\n                \u002F>\n              }\n            \u002F>\n          )}\n        \u002F>\n\n        {\u002F* ——— Checkbox (обов’язкова згода) ——— *\u002F}\n        \u003CController\n          control={control}\n          name=\"acceptedLocalSave\"\n          render={({ field: { onChange, value } }) => (\n            \u003CFormRow\n              label=\"Згода на локальне збереження\"\n              description=\"Поки немає API: дані лишаються в пам’яті застосунку\"\n              error={errors.acceptedLocalSave?.message}\n              control={\n                \u003CCheckbox\n                  value={Boolean(value)}\n                  onValueChange={onChange}\n                  tintColors={{\n                    true: colors.primary,\n                    false: colors.border,\n                  }}\n                  onCheckColor={colors.onPrimary}\n                  onFillColor={colors.primary}\n                  onTintColor={colors.primary}\n                  boxType=\"square\"\n                \u002F>\n              }\n            \u002F>\n          )}\n        \u002F>\n\n        {\u002F* ——— Button (Pressable-обгортка з shared\u002Fui) ——— *\u002F}\n        \u003CView style={{ gap: spacing.sm, marginTop: spacing.sm }}>\n          \u003CButton\n            label={submitting ? 'Створюємо…' : 'Створити поїздку'}\n            onPress={handleSubmit(onValid)}\n            disabled={submitting}\n          \u002F>\n          {onCancel ? (\n            \u003CButton\n              label=\"Скасувати\"\n              variant=\"secondary\"\n              onPress={onCancel}\n              disabled={submitting}\n            \u002F>\n          ) : null}\n        \u003C\u002FView>\n      \u003C\u002FScrollView>\n    \u003C\u002FKeyboardAvoidingView>\n  );\n}\n\nfunction daysWord(n: number): string {\n  const abs = Math.abs(n) % 100;\n  const last = abs % 10;\n  if (abs > 10 && abs \u003C 20) return 'днів';\n  if (last === 1) return 'день';\n  if (last >= 2 && last \u003C= 4) return 'дні';\n  return 'днів';\n}\n\nconst styles = StyleSheet.create({\n  flex: {\n    flex: 1,\n  },\n  content: {\n    flexGrow: 1,\n  },\n  multiline: {\n    minHeight: 110,\n  },\n  pickerWrap: {\n    borderWidth: 1,\n    overflow: 'hidden',\n  },\n});\n","src\u002Ffeatures\u002Ftrips\u002Fui\u002FCreateTripForm.tsx",[3747,25651,25652,25668,25674,25681,25688,25695,25701,25708,25714,25724,25747,25765,25783,25798,25812,25816,25822,25828,25836,25847,25864,25887,25904,25921,25937,25962,25966,25975,25996,26010,26014,26018,26031,26048,26077,26085,26089,26093,26124,26142,26166,26174,26178,26182,26186,26191,26196,26200,26211,26217,26223,26233,26256,26280,26284,26290,26297,26304,26311,26323,26338,26353,26360,26369,26378,26387,26396,26415,26424,26434,26443,26448,26467,26471,26481,26491,26495,26499,26518,26536,26540,26562,26573,26586,26611,26624,26636,26648,26673,26703,26716,26729,26742,26747,26758,26768,26772,26776,26782,26789,26806,26840,26869,26873,26879,26895,26905,26916,26951,26957,26967,26977,26985,26989,27017,27022,27027,27032,27040,27044,27053,27060,27074,27083,27117,27124,27134,27144,27157,27170,27183,27206,27216,27226,27239,27243,27250,27254,27258,27267,27273,27285,27294,27320,27327,27336,27346,27366,27371,27380,27386,27396,27407,27411,27423,27435,27448,27460,27474,27478,27484,27488,27495,27508,27521,27538,27560,27564,27584,27592,27605,27618,27631,27648,27653,27660,27668,27676,27681,27685,27691,27695,27699,27708,27714,27726,27735,27765,27772,27781,27793,27806,27818,27838,27842,27848,27852,27856,27862,27874,27883,27913,27919,27928,27940,27952,27964,27984,27997,28001,28007,28011,28015,28024,28030,28042,28051,28081,28087,28096,28105,28117,28129,28141,28161,28166,28180,28190,28207,28219,28229,28233,28239,28243,28247,28256,28262,28274,28283,28309,28315,28349,28358,28378,28382,28390,28397,28410,28423,28436,28449,28462,28479,28496,28513,28518,28523,28528,28535,28540,28569,28586,28609,28615,28624,28629,28639,28646,28659,28669,28696,28703,28713,28723,28744,28753,28761,28774,28787,28799,28813,28827,28835,28853,28871,28876,28881,28886,28893,28898,28903,28913,28920,28933,28943,28970,28977,28987,28997,29018,29027,29035,29048,29061,29073,29086,29099,29106,29124,29142,29160,29171,29176,29181,29186,29193,29198,29203,29213,29220,29233,29243,29270,29277,29287,29297,29319,29328,29335,29355,29368,29379,29392,29405,29412,29429,29446,29463,29472,29477,29482,29487,29494,29499,29504,29514,29553,29560,29584,29606,29620,29625,29637,29644,29654,29665,29679,29693,29698,29708,29717,29726,29736,29741,29746,29751,29774,29804,29823,29856,29879,29911,29920,29925,29930,29947,29955,29964,29969,29977,29987,29992,30000,30011,30016,30024,30033,30044,30049],{"__ignoreMap":3992},[3996,25653,25654,25656,25658,25660,25662,25664,25666],{"class":3998,"line":3999},[3996,25655,5501],{"class":4057},[3996,25657,5504],{"class":4006},[3996,25659,4023],{"class":4064},[3996,25661,5509],{"class":4006},[3996,25663,5512],{"class":4057},[3996,25665,7869],{"class":4029},[3996,25667,4123],{"class":4006},[3996,25669,25670,25672],{"class":3998,"line":4047},[3996,25671,5501],{"class":4057},[3996,25673,7958],{"class":4006},[3996,25675,25676,25679],{"class":3998,"line":4054},[3996,25677,25678],{"class":4064},"  KeyboardAvoidingView",[3996,25680,5720],{"class":4006},[3996,25682,25683,25686],{"class":3998,"line":4075},[3996,25684,25685],{"class":4064},"  Platform",[3996,25687,5720],{"class":4006},[3996,25689,25690,25693],{"class":3998,"line":4126},[3996,25691,25692],{"class":4064},"  ScrollView",[3996,25694,5720],{"class":4006},[3996,25696,25697,25699],{"class":3998,"line":4132},[3996,25698,15898],{"class":4064},[3996,25700,5720],{"class":4006},[3996,25702,25703,25706],{"class":3998,"line":4137},[3996,25704,25705],{"class":4064},"  Switch",[3996,25707,5720],{"class":4006},[3996,25709,25710,25712],{"class":3998,"line":4275},[3996,25711,15905],{"class":4064},[3996,25713,5720],{"class":4006},[3996,25715,25716,25718,25720,25722],{"class":3998,"line":4281},[3996,25717,15912],{"class":4006},[3996,25719,5512],{"class":4057},[3996,25721,7908],{"class":4029},[3996,25723,4123],{"class":4006},[3996,25725,25726,25728,25730,25733,25735,25738,25740,25742,25745],{"class":3998,"line":4287},[3996,25727,5501],{"class":4057},[3996,25729,5504],{"class":4006},[3996,25731,25732],{"class":4064},"Controller",[3996,25734,3867],{"class":4006},[3996,25736,25737],{"class":4064},"useForm",[3996,25739,5509],{"class":4006},[3996,25741,5512],{"class":4057},[3996,25743,25744],{"class":4029}," 'react-hook-form'",[3996,25746,4123],{"class":4006},[3996,25748,25749,25751,25753,25756,25758,25760,25763],{"class":3998,"line":4293},[3996,25750,5501],{"class":4057},[3996,25752,5504],{"class":4006},[3996,25754,25755],{"class":4064},"zodResolver",[3996,25757,5509],{"class":4006},[3996,25759,5512],{"class":4057},[3996,25761,25762],{"class":4029}," '@hookform\u002Fresolvers\u002Fzod'",[3996,25764,4123],{"class":4006},[3996,25766,25767,25769,25771,25774,25776,25778,25781],{"class":3998,"line":4299},[3996,25768,5501],{"class":4057},[3996,25770,5504],{"class":4006},[3996,25772,25773],{"class":4064},"Picker",[3996,25775,5509],{"class":4006},[3996,25777,5512],{"class":4057},[3996,25779,25780],{"class":4029}," '@react-native-picker\u002Fpicker'",[3996,25782,4123],{"class":4006},[3996,25784,25785,25787,25790,25793,25796],{"class":3998,"line":4305},[3996,25786,5501],{"class":4057},[3996,25788,25789],{"class":4064}," Checkbox",[3996,25791,25792],{"class":4057}," from",[3996,25794,25795],{"class":4029}," '@react-native-community\u002Fcheckbox'",[3996,25797,4123],{"class":4006},[3996,25799,25800,25802,25805,25807,25810],{"class":3998,"line":4311},[3996,25801,5501],{"class":4057},[3996,25803,25804],{"class":4064}," Slider",[3996,25806,25792],{"class":4057},[3996,25808,25809],{"class":4029}," '@react-native-community\u002Fslider'",[3996,25811,4123],{"class":4006},[3996,25813,25814],{"class":3998,"line":4317},[3996,25815,4051],{"emptyLinePlaceholder":4050},[3996,25817,25818,25820],{"class":3998,"line":4323},[3996,25819,5501],{"class":4057},[3996,25821,7958],{"class":4006},[3996,25823,25824,25826],{"class":3998,"line":4329},[3996,25825,22143],{"class":4064},[3996,25827,5720],{"class":4006},[3996,25829,25830,25832,25834],{"class":3998,"line":4335},[3996,25831,15995],{"class":4057},[3996,25833,22152],{"class":4064},[3996,25835,5720],{"class":4006},[3996,25837,25838,25840,25842,25845],{"class":3998,"line":4341},[3996,25839,15912],{"class":4006},[3996,25841,5512],{"class":4057},[3996,25843,25844],{"class":4029}," '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002FcreateTripSchema'",[3996,25846,4123],{"class":4006},[3996,25848,25849,25851,25853,25855,25857,25859,25862],{"class":3998,"line":4347},[3996,25850,5501],{"class":4057},[3996,25852,5504],{"class":4006},[3996,25854,22174],{"class":4064},[3996,25856,5509],{"class":4006},[3996,25858,5512],{"class":4057},[3996,25860,25861],{"class":4029}," '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002FformatTripDates'",[3996,25863,4123],{"class":4006},[3996,25865,25866,25868,25870,25872,25874,25876,25878,25880,25882,25885],{"class":3998,"line":4352},[3996,25867,5501],{"class":4057},[3996,25869,5504],{"class":4006},[3996,25871,22016],{"class":4064},[3996,25873,3867],{"class":4006},[3996,25875,16032],{"class":4057},[3996,25877,16007],{"class":4064},[3996,25879,5509],{"class":4006},[3996,25881,5512],{"class":4057},[3996,25883,25884],{"class":4029}," '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes'",[3996,25886,4123],{"class":4006},[3996,25888,25889,25891,25893,25895,25897,25899,25902],{"class":3998,"line":4357},[3996,25890,5501],{"class":4057},[3996,25892,5504],{"class":4006},[3996,25894,22084],{"class":4064},[3996,25896,5509],{"class":4006},[3996,25898,5512],{"class":4057},[3996,25900,25901],{"class":4029}," '@\u002Ffeatures\u002Ftrips\u002Fui\u002FDateField'",[3996,25903,4123],{"class":4006},[3996,25905,25906,25908,25910,25912,25914,25916,25919],{"class":3998,"line":4363},[3996,25907,5501],{"class":4057},[3996,25909,5504],{"class":4006},[3996,25911,22102],{"class":4064},[3996,25913,5509],{"class":4006},[3996,25915,5512],{"class":4057},[3996,25917,25918],{"class":4029}," '@\u002Ffeatures\u002Ftrips\u002Fui\u002FFormRow'",[3996,25920,4123],{"class":4006},[3996,25922,25923,25925,25927,25929,25931,25933,25935],{"class":3998,"line":4369},[3996,25924,5501],{"class":4057},[3996,25926,5504],{"class":4006},[3996,25928,5564],{"class":4064},[3996,25930,5509],{"class":4006},[3996,25932,5512],{"class":4057},[3996,25934,5571],{"class":4029},[3996,25936,4123],{"class":4006},[3996,25938,25939,25941,25943,25945,25947,25949,25951,25954,25956,25958,25960],{"class":3998,"line":4375},[3996,25940,5501],{"class":4057},[3996,25942,5504],{"class":4006},[3996,25944,16052],{"class":4064},[3996,25946,3867],{"class":4006},[3996,25948,16057],{"class":4064},[3996,25950,3867],{"class":4006},[3996,25952,25953],{"class":4064},"TextField",[3996,25955,5509],{"class":4006},[3996,25957,5512],{"class":4057},[3996,25959,16068],{"class":4029},[3996,25961,4123],{"class":4006},[3996,25963,25964],{"class":3998,"line":4381},[3996,25965,4051],{"emptyLinePlaceholder":4050},[3996,25967,25968,25970,25973],{"class":3998,"line":4387},[3996,25969,16032],{"class":4002},[3996,25971,25972],{"class":4085}," CreateTripFormProps",[3996,25974,10144],{"class":4006},[3996,25976,25977,25980,25982,25984,25986,25988,25990,25992,25994],{"class":3998,"line":4392},[3996,25978,25979],{"class":4022},"  onSubmitSuccess",[3996,25981,23804],{"class":4006},[3996,25983,16315],{"class":4064},[3996,25985,8990],{"class":4006},[3996,25987,16320],{"class":4085},[3996,25989,8996],{"class":4006},[3996,25991,4103],{"class":4002},[3996,25993,23817],{"class":4085},[3996,25995,4123],{"class":4006},[3996,25997,25998,26001,26004,26006,26008],{"class":3998,"line":4398},[3996,25999,26000],{"class":4022},"  onCancel",[3996,26002,26003],{"class":4006},"?: () ",[3996,26005,4103],{"class":4002},[3996,26007,23817],{"class":4085},[3996,26009,4123],{"class":4006},[3996,26011,26012],{"class":3998,"line":4404},[3996,26013,10203],{"class":4006},[3996,26015,26016],{"class":3998,"line":4410},[3996,26017,4051],{"emptyLinePlaceholder":4050},[3996,26019,26020,26022,26025,26027,26029],{"class":3998,"line":4415},[3996,26021,5582],{"class":4002},[3996,26023,26024],{"class":4022}," startOfToday",[3996,26026,24181],{"class":4006},[3996,26028,23203],{"class":4085},[3996,26030,7958],{"class":4006},[3996,26032,26033,26035,26038,26040,26043,26046],{"class":3998,"line":4420},[3996,26034,5593],{"class":4002},[3996,26036,26037],{"class":4010}," d",[3996,26039,7937],{"class":4006},[3996,26041,26042],{"class":4002},"new",[3996,26044,26045],{"class":4022}," Date",[3996,26047,5611],{"class":4006},[3996,26049,26050,26053,26055,26058,26060,26063,26065,26067,26069,26071,26073,26075],{"class":3998,"line":4426},[3996,26051,26052],{"class":4064},"  d",[3996,26054,3821],{"class":4006},[3996,26056,26057],{"class":4022},"setHours",[3996,26059,4109],{"class":4006},[3996,26061,26062],{"class":11033},"12",[3996,26064,3867],{"class":4006},[3996,26066,12929],{"class":11033},[3996,26068,3867],{"class":4006},[3996,26070,12929],{"class":11033},[3996,26072,3867],{"class":4006},[3996,26074,12929],{"class":11033},[3996,26076,4044],{"class":4006},[3996,26078,26079,26081,26083],{"class":3998,"line":4432},[3996,26080,4078],{"class":4057},[3996,26082,26037],{"class":4064},[3996,26084,4123],{"class":4006},[3996,26086,26087],{"class":3998,"line":4438},[3996,26088,4129],{"class":4006},[3996,26090,26091],{"class":3998,"line":4443},[3996,26092,4051],{"emptyLinePlaceholder":4050},[3996,26094,26095,26097,26100,26102,26105,26107,26109,26111,26114,26116,26118,26120,26122],{"class":3998,"line":4448},[3996,26096,5582],{"class":4002},[3996,26098,26099],{"class":4022}," addDays",[3996,26101,4109],{"class":4006},[3996,26103,26104],{"class":4064},"base",[3996,26106,8990],{"class":4006},[3996,26108,23203],{"class":4085},[3996,26110,3867],{"class":4006},[3996,26112,26113],{"class":4064},"days",[3996,26115,8990],{"class":4006},[3996,26117,22299],{"class":4085},[3996,26119,10540],{"class":4006},[3996,26121,23203],{"class":4085},[3996,26123,7958],{"class":4006},[3996,26125,26126,26128,26130,26132,26134,26136,26138,26140],{"class":3998,"line":4454},[3996,26127,5593],{"class":4002},[3996,26129,26037],{"class":4010},[3996,26131,7937],{"class":4006},[3996,26133,26042],{"class":4002},[3996,26135,26045],{"class":4022},[3996,26137,4109],{"class":4006},[3996,26139,26104],{"class":4064},[3996,26141,4044],{"class":4006},[3996,26143,26144,26146,26148,26151,26153,26155,26157,26159,26162,26164],{"class":3998,"line":4460},[3996,26145,26052],{"class":4064},[3996,26147,3821],{"class":4006},[3996,26149,26150],{"class":4022},"setDate",[3996,26152,4109],{"class":4006},[3996,26154,23198],{"class":4064},[3996,26156,3821],{"class":4006},[3996,26158,23224],{"class":4022},[3996,26160,26161],{"class":4006},"() + ",[3996,26163,26113],{"class":4064},[3996,26165,4044],{"class":4006},[3996,26167,26168,26170,26172],{"class":3998,"line":4466},[3996,26169,4078],{"class":4057},[3996,26171,26037],{"class":4064},[3996,26173,4123],{"class":4006},[3996,26175,26176],{"class":3998,"line":4472},[3996,26177,4129],{"class":4006},[3996,26179,26180],{"class":3998,"line":4477},[3996,26181,4051],{"emptyLinePlaceholder":4050},[3996,26183,26184],{"class":3998,"line":5066},[3996,26185,14911],{"class":5783},[3996,26187,26188],{"class":3998,"line":5072},[3996,26189,26190],{"class":5783}," * Форма «Нова поїздка»: усі основні form-контроли + RHF + Zod.\n",[3996,26192,26193],{"class":3998,"line":5078},[3996,26194,26195],{"class":5783}," * Не залежить від навігації — батько вирішує, куди піти після submit.\n",[3996,26197,26198],{"class":3998,"line":5084},[3996,26199,14926],{"class":5783},[3996,26201,26202,26204,26206,26209],{"class":3998,"line":5090},[3996,26203,5947],{"class":4057},[3996,26205,5953],{"class":4002},[3996,26207,26208],{"class":4022}," CreateTripForm",[3996,26210,7971],{"class":4006},[3996,26212,26213,26215],{"class":3998,"line":5096},[3996,26214,25979],{"class":4064},[3996,26216,5720],{"class":4006},[3996,26218,26219,26221],{"class":3998,"line":10510},[3996,26220,26000],{"class":4064},[3996,26222,5720],{"class":4006},[3996,26224,26225,26228,26231],{"class":3998,"line":10516},[3996,26226,26227],{"class":4006},"}: ",[3996,26229,26230],{"class":4085},"CreateTripFormProps",[3996,26232,4072],{"class":4006},[3996,26234,26235,26237,26239,26241,26243,26245,26247,26250,26252,26254],{"class":3998,"line":10521},[3996,26236,5593],{"class":4002},[3996,26238,5504],{"class":4006},[3996,26240,5598],{"class":4010},[3996,26242,3867],{"class":4006},[3996,26244,16226],{"class":4010},[3996,26246,3867],{"class":4006},[3996,26248,26249],{"class":4010},"radius",[3996,26251,5606],{"class":4006},[3996,26253,5564],{"class":4022},[3996,26255,5611],{"class":4006},[3996,26257,26258,26260,26262,26265,26267,26270,26272,26274,26276,26278],{"class":3998,"line":10552},[3996,26259,5593],{"class":4002},[3996,26261,4007],{"class":4006},[3996,26263,26264],{"class":4010},"submitting",[3996,26266,3867],{"class":4006},[3996,26268,26269],{"class":4010},"setSubmitting",[3996,26271,4019],{"class":4006},[3996,26273,4023],{"class":4022},[3996,26275,4109],{"class":4006},[3996,26277,6495],{"class":4002},[3996,26279,4044],{"class":4006},[3996,26281,26282],{"class":3998,"line":10587},[3996,26283,4051],{"emptyLinePlaceholder":4050},[3996,26285,26286,26288],{"class":3998,"line":12205},[3996,26287,5593],{"class":4002},[3996,26289,7958],{"class":4006},[3996,26291,26292,26295],{"class":3998,"line":12213},[3996,26293,26294],{"class":4010},"    control",[3996,26296,5720],{"class":4006},[3996,26298,26299,26302],{"class":3998,"line":12223},[3996,26300,26301],{"class":4010},"    handleSubmit",[3996,26303,5720],{"class":4006},[3996,26305,26306,26309],{"class":3998,"line":12233},[3996,26307,26308],{"class":4010},"    watch",[3996,26310,5720],{"class":4006},[3996,26312,26313,26316,26318,26321],{"class":3998,"line":12243},[3996,26314,26315],{"class":4064},"    formState",[3996,26317,16084],{"class":4006},[3996,26319,26320],{"class":4010},"errors",[3996,26322,5705],{"class":4006},[3996,26324,26325,26328,26330,26332,26335],{"class":3998,"line":12253},[3996,26326,26327],{"class":4006},"  } = ",[3996,26329,25737],{"class":4022},[3996,26331,4026],{"class":4006},[3996,26333,26334],{"class":4085},"CreateTripFormValues",[3996,26336,26337],{"class":4006},">({\n",[3996,26339,26340,26343,26346,26348,26351],{"class":3998,"line":12258},[3996,26341,26342],{"class":4064},"    resolver:",[3996,26344,26345],{"class":4022}," zodResolver",[3996,26347,4109],{"class":4006},[3996,26349,26350],{"class":4064},"createTripSchema",[3996,26352,7824],{"class":4006},[3996,26354,26355,26358],{"class":3998,"line":16645},[3996,26356,26357],{"class":4064},"    defaultValues:",[3996,26359,7958],{"class":4006},[3996,26361,26362,26364,26367],{"class":3998,"line":16656},[3996,26363,7976],{"class":4064},[3996,26365,26366],{"class":4029}," ''",[3996,26368,5720],{"class":4006},[3996,26370,26371,26374,26376],{"class":3998,"line":16698},[3996,26372,26373],{"class":4064},"      region:",[3996,26375,24370],{"class":4029},[3996,26377,5720],{"class":4006},[3996,26379,26380,26383,26385],{"class":3998,"line":16720},[3996,26381,26382],{"class":4064},"      description:",[3996,26384,26366],{"class":4029},[3996,26386,5720],{"class":4006},[3996,26388,26389,26392,26394],{"class":3998,"line":16750},[3996,26390,26391],{"class":4064},"      startDate:",[3996,26393,26024],{"class":4022},[3996,26395,22840],{"class":4006},[3996,26397,26398,26401,26403,26405,26408,26411,26413],{"class":3998,"line":16784},[3996,26399,26400],{"class":4064},"      endDate:",[3996,26402,26099],{"class":4022},[3996,26404,4109],{"class":4006},[3996,26406,26407],{"class":4022},"startOfToday",[3996,26409,26410],{"class":4006},"(), ",[3996,26412,19532],{"class":11033},[3996,26414,7824],{"class":4006},[3996,26416,26417,26420,26422],{"class":3998,"line":16791},[3996,26418,26419],{"class":4064},"      isPrivate:",[3996,26421,5818],{"class":4002},[3996,26423,5720],{"class":4006},[3996,26425,26426,26429,26432],{"class":3998,"line":16797},[3996,26427,26428],{"class":4064},"      plannedDays:",[3996,26430,26431],{"class":11033}," 3",[3996,26433,5720],{"class":4006},[3996,26435,26436,26439,26441],{"class":3998,"line":16811},[3996,26437,26438],{"class":4064},"      hasItinerary:",[3996,26440,5818],{"class":4002},[3996,26442,5720],{"class":4006},[3996,26444,26445],{"class":3998,"line":16837},[3996,26446,26447],{"class":5783},"      \u002F\u002F literal true — у default false, щоб користувач свідомо поставив галочку\n",[3996,26449,26450,26453,26455,26458,26461,26463,26465],{"class":3998,"line":16857},[3996,26451,26452],{"class":4064},"      acceptedLocalSave:",[3996,26454,5818],{"class":4002},[3996,26456,26457],{"class":4057}," as",[3996,26459,26460],{"class":4085}," unknown",[3996,26462,26457],{"class":4057},[3996,26464,5880],{"class":4085},[3996,26466,5720],{"class":4006},[3996,26468,26469],{"class":3998,"line":16889},[3996,26470,14571],{"class":4006},[3996,26472,26473,26476,26479],{"class":3998,"line":16897},[3996,26474,26475],{"class":4064},"    mode:",[3996,26477,26478],{"class":4029}," 'onSubmit'",[3996,26480,5720],{"class":4006},[3996,26482,26483,26486,26489],{"class":3998,"line":16908},[3996,26484,26485],{"class":4064},"    reValidateMode:",[3996,26487,26488],{"class":4029}," 'onChange'",[3996,26490,5720],{"class":4006},[3996,26492,26493],{"class":3998,"line":16951},[3996,26494,23043],{"class":4006},[3996,26496,26497],{"class":3998,"line":16973},[3996,26498,4051],{"emptyLinePlaceholder":4050},[3996,26500,26501,26503,26506,26508,26511,26513,26516],{"class":3998,"line":16979},[3996,26502,5593],{"class":4002},[3996,26504,26505],{"class":4010}," startDate",[3996,26507,7937],{"class":4006},[3996,26509,26510],{"class":4022},"watch",[3996,26512,4109],{"class":4006},[3996,26514,26515],{"class":4029},"'startDate'",[3996,26517,4044],{"class":4006},[3996,26519,26520,26522,26525,26527,26529,26531,26534],{"class":3998,"line":16988},[3996,26521,5593],{"class":4002},[3996,26523,26524],{"class":4010}," plannedDays",[3996,26526,7937],{"class":4006},[3996,26528,26510],{"class":4022},[3996,26530,4109],{"class":4006},[3996,26532,26533],{"class":4029},"'plannedDays'",[3996,26535,4044],{"class":4006},[3996,26537,26538],{"class":3998,"line":16999},[3996,26539,4051],{"emptyLinePlaceholder":4050},[3996,26541,26542,26544,26547,26549,26552,26554,26556,26558,26560],{"class":3998,"line":17004},[3996,26543,5593],{"class":4002},[3996,26545,26546],{"class":4022}," onValid",[3996,26548,22483],{"class":4006},[3996,26550,26551],{"class":4064},"values",[3996,26553,8990],{"class":4006},[3996,26555,26334],{"class":4085},[3996,26557,8996],{"class":4006},[3996,26559,4103],{"class":4002},[3996,26561,7958],{"class":4006},[3996,26563,26564,26567,26569,26571],{"class":3998,"line":17038},[3996,26565,26566],{"class":4022},"    setSubmitting",[3996,26568,4109],{"class":4006},[3996,26570,7184],{"class":4002},[3996,26572,4044],{"class":4006},[3996,26574,26575,26578,26580,26582,26584],{"class":3998,"line":17047},[3996,26576,26577],{"class":4002},"    const",[3996,26579,16563],{"class":4010},[3996,26581,8990],{"class":4006},[3996,26583,16320],{"class":4085},[3996,26585,10144],{"class":4006},[3996,26587,26588,26591,26594,26596,26598,26600,26603,26605,26607,26609],{"class":3998,"line":17052},[3996,26589,26590],{"class":4064},"      id:",[3996,26592,26593],{"class":4029}," `local-",[3996,26595,11717],{"class":4002},[3996,26597,23203],{"class":4064},[3996,26599,3821],{"class":4099},[3996,26601,26602],{"class":4022},"now",[3996,26604,21874],{"class":4099},[3996,26606,4117],{"class":4002},[3996,26608,11728],{"class":4029},[3996,26610,5720],{"class":4006},[3996,26612,26613,26615,26618,26620,26622],{"class":3998,"line":17057},[3996,26614,7976],{"class":4064},[3996,26616,26617],{"class":4064}," values",[3996,26619,3821],{"class":4006},[3996,26621,7585],{"class":4064},[3996,26623,5720],{"class":4006},[3996,26625,26626,26628,26630,26632,26634],{"class":3998,"line":17067},[3996,26627,26373],{"class":4064},[3996,26629,26617],{"class":4064},[3996,26631,3821],{"class":4006},[3996,26633,11829],{"class":4064},[3996,26635,5720],{"class":4006},[3996,26637,26638,26640,26642,26644,26646],{"class":3998,"line":17075},[3996,26639,26382],{"class":4064},[3996,26641,26617],{"class":4064},[3996,26643,3821],{"class":4006},[3996,26645,13339],{"class":4064},[3996,26647,5720],{"class":4006},[3996,26649,26650,26653,26655,26657,26659,26661,26663,26665,26667,26669,26671],{"class":3998,"line":17088},[3996,26651,26652],{"class":4064},"      dateLabel:",[3996,26654,23287],{"class":4022},[3996,26656,4109],{"class":4006},[3996,26658,26551],{"class":4064},[3996,26660,3821],{"class":4006},[3996,26662,23009],{"class":4064},[3996,26664,3867],{"class":4006},[3996,26666,26551],{"class":4064},[3996,26668,3821],{"class":4006},[3996,26670,22994],{"class":4064},[3996,26672,7824],{"class":4006},[3996,26674,26675,26678,26681,26683,26686,26688,26690,26692,26694,26696,26698,26701],{"class":3998,"line":17101},[3996,26676,26677],{"class":4064},"      coverUri:",[3996,26679,26680],{"class":4029}," `https:\u002F\u002Fpicsum.photos\u002Fseed\u002F",[3996,26682,11717],{"class":4002},[3996,26684,26685],{"class":4022},"encodeURIComponent",[3996,26687,4109],{"class":4099},[3996,26689,26551],{"class":4064},[3996,26691,3821],{"class":4099},[3996,26693,7585],{"class":4064},[3996,26695,4114],{"class":4099},[3996,26697,4117],{"class":4002},[3996,26699,26700],{"class":4029},"\u002F800\u002F400`",[3996,26702,5720],{"class":4006},[3996,26704,26705,26707,26709,26711,26714],{"class":3998,"line":17107},[3996,26706,26419],{"class":4064},[3996,26708,26617],{"class":4064},[3996,26710,3821],{"class":4006},[3996,26712,26713],{"class":4064},"isPrivate",[3996,26715,5720],{"class":4006},[3996,26717,26718,26720,26722,26724,26727],{"class":3998,"line":17121},[3996,26719,26428],{"class":4064},[3996,26721,26617],{"class":4064},[3996,26723,3821],{"class":4006},[3996,26725,26726],{"class":4064},"plannedDays",[3996,26728,5720],{"class":4006},[3996,26730,26731,26733,26735,26737,26740],{"class":3998,"line":17136},[3996,26732,26438],{"class":4064},[3996,26734,26617],{"class":4064},[3996,26736,3821],{"class":4006},[3996,26738,26739],{"class":4064},"hasItinerary",[3996,26741,5720],{"class":4006},[3996,26743,26744],{"class":3998,"line":17150},[3996,26745,26746],{"class":4006},"    };\n",[3996,26748,26749,26752,26754,26756],{"class":3998,"line":17155},[3996,26750,26751],{"class":4022},"    onSubmitSuccess",[3996,26753,4109],{"class":4006},[3996,26755,16315],{"class":4064},[3996,26757,4044],{"class":4006},[3996,26759,26760,26762,26764,26766],{"class":3998,"line":17163},[3996,26761,26566],{"class":4022},[3996,26763,4109],{"class":4006},[3996,26765,6495],{"class":4002},[3996,26767,4044],{"class":4006},[3996,26769,26770],{"class":3998,"line":17168},[3996,26771,9091],{"class":4006},[3996,26773,26774],{"class":3998,"line":17200},[3996,26775,4051],{"emptyLinePlaceholder":4050},[3996,26777,26778,26780],{"class":3998,"line":17206},[3996,26779,4078],{"class":4057},[3996,26781,5622],{"class":4006},[3996,26783,26784,26786],{"class":3998,"line":17215},[3996,26785,5969],{"class":4081},[3996,26787,26788],{"class":4085},"KeyboardAvoidingView\n",[3996,26790,26791,26793,26795,26797,26799,26801,26804],{"class":3998,"line":17223},[3996,26792,17078],{"class":4089},[3996,26794,4093],{"class":4006},[3996,26796,4096],{"class":4002},[3996,26798,8789],{"class":4064},[3996,26800,3821],{"class":4099},[3996,26802,26803],{"class":4064},"flex",[3996,26805,4129],{"class":4002},[3996,26807,26808,26811,26813,26815,26818,26820,26823,26825,26828,26830,26833,26835,26838],{"class":3998,"line":17234},[3996,26809,26810],{"class":4089},"      behavior",[3996,26812,4093],{"class":4006},[3996,26814,4096],{"class":4002},[3996,26816,26817],{"class":4064},"Platform",[3996,26819,3821],{"class":4099},[3996,26821,26822],{"class":4010},"OS",[3996,26824,5646],{"class":4006},[3996,26826,26827],{"class":4029}," 'ios'",[3996,26829,5652],{"class":4006},[3996,26831,26832],{"class":4029}," 'padding'",[3996,26834,5658],{"class":4006},[3996,26836,26837],{"class":4029}," 'height'",[3996,26839,4129],{"class":4002},[3996,26841,26842,26845,26847,26849,26851,26853,26855,26857,26859,26861,26863,26865,26867],{"class":3998,"line":17252},[3996,26843,26844],{"class":4089},"      keyboardVerticalOffset",[3996,26846,4093],{"class":4006},[3996,26848,4096],{"class":4002},[3996,26850,26817],{"class":4064},[3996,26852,3821],{"class":4099},[3996,26854,26822],{"class":4010},[3996,26856,5646],{"class":4006},[3996,26858,26827],{"class":4029},[3996,26860,5652],{"class":4006},[3996,26862,11982],{"class":11033},[3996,26864,5658],{"class":4006},[3996,26866,16713],{"class":11033},[3996,26868,4129],{"class":4002},[3996,26870,26871],{"class":3998,"line":17271},[3996,26872,11054],{"class":4081},[3996,26874,26875,26877],{"class":3998,"line":17276},[3996,26876,5632],{"class":4081},[3996,26878,20277],{"class":4085},[3996,26880,26881,26883,26885,26887,26889,26891,26893],{"class":3998,"line":17282},[3996,26882,17255],{"class":4089},[3996,26884,4093],{"class":4006},[3996,26886,4096],{"class":4002},[3996,26888,8789],{"class":4064},[3996,26890,3821],{"class":4099},[3996,26892,26803],{"class":4064},[3996,26894,4129],{"class":4002},[3996,26896,26897,26899,26901,26903],{"class":3998,"line":17291},[3996,26898,11628],{"class":4089},[3996,26900,4093],{"class":4006},[3996,26902,4096],{"class":4002},[3996,26904,17085],{"class":4099},[3996,26906,26907,26909,26911,26914],{"class":3998,"line":17300},[3996,26908,17362],{"class":4064},[3996,26910,3821],{"class":4099},[3996,26912,26913],{"class":4064},"content",[3996,26915,5720],{"class":4099},[3996,26917,26918,26921,26923,26925,26927,26929,26931,26933,26935,26937,26939,26941,26943,26945,26947,26949],{"class":3998,"line":17305},[3996,26919,26920],{"class":4099},"          { ",[3996,26922,12080],{"class":4064},[3996,26924,16673],{"class":4064},[3996,26926,3821],{"class":4099},[3996,26928,16678],{"class":4064},[3996,26930,3867],{"class":4099},[3996,26932,12652],{"class":4064},[3996,26934,16673],{"class":4064},[3996,26936,3821],{"class":4099},[3996,26938,16678],{"class":4064},[3996,26940,3867],{"class":4099},[3996,26942,12087],{"class":4064},[3996,26944,16673],{"class":4064},[3996,26946,3821],{"class":4099},[3996,26948,17131],{"class":4064},[3996,26950,5705],{"class":4099},[3996,26952,26953,26955],{"class":3998,"line":17310},[3996,26954,17457],{"class":4099},[3996,26956,4129],{"class":4002},[3996,26958,26959,26962,26964],{"class":3998,"line":17317},[3996,26960,26961],{"class":4089},"        keyboardShouldPersistTaps",[3996,26963,4093],{"class":4006},[3996,26965,26966],{"class":4029},"\"handled\"\n",[3996,26968,26969,26972,26974],{"class":3998,"line":17341},[3996,26970,26971],{"class":4089},"        keyboardDismissMode",[3996,26973,4093],{"class":4006},[3996,26975,26976],{"class":4029},"\"on-drag\"\n",[3996,26978,26979,26981,26983],{"class":3998,"line":17348},[3996,26980,19856],{"class":4089},[3996,26982,4093],{"class":4006},[3996,26984,16905],{"class":4002},[3996,26986,26987],{"class":3998,"line":17359},[3996,26988,5775],{"class":4081},[3996,26990,26991,26993,26995,26997,26999,27001,27003,27005,27007,27009,27011,27013,27015],{"class":3998,"line":17371},[3996,26992,5791],{"class":4081},[3996,26994,16052],{"class":4085},[3996,26996,17175],{"class":4089},[3996,26998,4093],{"class":4006},[3996,27000,17503],{"class":4029},[3996,27002,6913],{"class":4089},[3996,27004,4093],{"class":4006},[3996,27006,4096],{"class":4002},[3996,27008,5598],{"class":4064},[3996,27010,3821],{"class":4099},[3996,27012,15445],{"class":4064},[3996,27014,4117],{"class":4002},[3996,27016,5924],{"class":4081},[3996,27018,27019],{"class":3998,"line":17377},[3996,27020,27021],{"class":4006},"          Заповніть поля. Помилки з’являться після натискання «Створити», якщо\n",[3996,27023,27024],{"class":3998,"line":17391},[3996,27025,27026],{"class":4006},"          щось не так. Тут зібрані різні типи контролів: текст, список, дати,\n",[3996,27028,27029],{"class":3998,"line":17405},[3996,27030,27031],{"class":4006},"          перемикач, галочка, повзунок.\n",[3996,27033,27034,27036,27038],{"class":3998,"line":17419},[3996,27035,8074],{"class":4081},[3996,27037,16052],{"class":4085},[3996,27039,5924],{"class":4081},[3996,27041,27042],{"class":3998,"line":17434},[3996,27043,4051],{"emptyLinePlaceholder":4050},[3996,27045,27046,27048,27051],{"class":3998,"line":17448},[3996,27047,5780],{"class":4002},[3996,27049,27050],{"class":5783},"\u002F* ——— TextInput ——— *\u002F",[3996,27052,4129],{"class":4002},[3996,27054,27055,27057],{"class":3998,"line":17454},[3996,27056,5791],{"class":4081},[3996,27058,27059],{"class":4085},"Controller\n",[3996,27061,27062,27065,27067,27069,27072],{"class":3998,"line":17462},[3996,27063,27064],{"class":4089},"          control",[3996,27066,4093],{"class":4006},[3996,27068,4096],{"class":4002},[3996,27070,27071],{"class":4064},"control",[3996,27073,4129],{"class":4002},[3996,27075,27076,27078,27080],{"class":3998,"line":17467},[3996,27077,5846],{"class":4089},[3996,27079,4093],{"class":4006},[3996,27081,27082],{"class":4029},"\"title\"\n",[3996,27084,27085,27088,27090,27092,27094,27096,27098,27101,27103,27106,27108,27110,27113,27115],{"class":3998,"line":17492},[3996,27086,27087],{"class":4089},"          render",[3996,27089,4093],{"class":4006},[3996,27091,4096],{"class":4002},[3996,27093,7759],{"class":4099},[3996,27095,5456],{"class":4064},[3996,27097,16084],{"class":4099},[3996,27099,27100],{"class":4064},"onChange",[3996,27102,3867],{"class":4099},[3996,27104,27105],{"class":4064},"onBlur",[3996,27107,3867],{"class":4099},[3996,27109,24141],{"class":4064},[3996,27111,27112],{"class":4099}," } }) ",[3996,27114,4103],{"class":4002},[3996,27116,5622],{"class":4099},[3996,27118,27119,27121],{"class":3998,"line":17528},[3996,27120,11117],{"class":4081},[3996,27122,27123],{"class":4085},"TextField\n",[3996,27125,27126,27129,27131],{"class":3998,"line":17554},[3996,27127,27128],{"class":4089},"              label",[3996,27130,4093],{"class":4006},[3996,27132,27133],{"class":4029},"\"Назва поїздки\"\n",[3996,27135,27136,27139,27141],{"class":3998,"line":17563},[3996,27137,27138],{"class":4089},"              placeholder",[3996,27140,4093],{"class":4006},[3996,27142,27143],{"class":4029},"\"Наприклад, Карпати на вихідні\"\n",[3996,27145,27146,27149,27151,27153,27155],{"class":3998,"line":17570},[3996,27147,27148],{"class":4089},"              value",[3996,27150,4093],{"class":4006},[3996,27152,4096],{"class":4002},[3996,27154,24141],{"class":4064},[3996,27156,4129],{"class":4002},[3996,27158,27159,27162,27164,27166,27168],{"class":3998,"line":17580},[3996,27160,27161],{"class":4089},"              onChangeText",[3996,27163,4093],{"class":4006},[3996,27165,4096],{"class":4002},[3996,27167,27100],{"class":4064},[3996,27169,4129],{"class":4002},[3996,27171,27172,27175,27177,27179,27181],{"class":3998,"line":17592},[3996,27173,27174],{"class":4089},"              onBlur",[3996,27176,4093],{"class":4006},[3996,27178,4096],{"class":4002},[3996,27180,27105],{"class":4064},[3996,27182,4129],{"class":4002},[3996,27184,27185,27188,27190,27192,27194,27196,27198,27201,27204],{"class":3998,"line":17606},[3996,27186,27187],{"class":4089},"              error",[3996,27189,4093],{"class":4006},[3996,27191,4096],{"class":4002},[3996,27193,26320],{"class":4064},[3996,27195,3821],{"class":4099},[3996,27197,7585],{"class":4064},[3996,27199,27200],{"class":4099},"?.",[3996,27202,27203],{"class":4064},"message",[3996,27205,4129],{"class":4002},[3996,27207,27208,27211,27213],{"class":3998,"line":17620},[3996,27209,27210],{"class":4089},"              autoCapitalize",[3996,27212,4093],{"class":4006},[3996,27214,27215],{"class":4029},"\"sentences\"\n",[3996,27217,27218,27221,27223],{"class":3998,"line":17630},[3996,27219,27220],{"class":4089},"              returnKeyType",[3996,27222,4093],{"class":4006},[3996,27224,27225],{"class":4029},"\"next\"\n",[3996,27227,27228,27231,27233,27235,27237],{"class":3998,"line":17637},[3996,27229,27230],{"class":4089},"              maxLength",[3996,27232,4093],{"class":4006},[3996,27234,4096],{"class":4002},[3996,27236,22678],{"class":11033},[3996,27238,4129],{"class":4002},[3996,27240,27241],{"class":3998,"line":17643},[3996,27242,11266],{"class":4081},[3996,27244,27245,27248],{"class":3998,"line":17660},[3996,27246,27247],{"class":4099},"          )",[3996,27249,4129],{"class":4002},[3996,27251,27252],{"class":3998,"line":17695},[3996,27253,5914],{"class":4081},[3996,27255,27256],{"class":3998,"line":17706},[3996,27257,4051],{"emptyLinePlaceholder":4050},[3996,27259,27260,27262,27265],{"class":3998,"line":17715},[3996,27261,5780],{"class":4002},[3996,27263,27264],{"class":5783},"\u002F* ——— Picker ——— *\u002F",[3996,27266,4129],{"class":4002},[3996,27268,27269,27271],{"class":3998,"line":17720},[3996,27270,5791],{"class":4081},[3996,27272,27059],{"class":4085},[3996,27274,27275,27277,27279,27281,27283],{"class":3998,"line":17770},[3996,27276,27064],{"class":4089},[3996,27278,4093],{"class":4006},[3996,27280,4096],{"class":4002},[3996,27282,27071],{"class":4064},[3996,27284,4129],{"class":4002},[3996,27286,27287,27289,27291],{"class":3998,"line":17793},[3996,27288,5846],{"class":4089},[3996,27290,4093],{"class":4006},[3996,27292,27293],{"class":4029},"\"region\"\n",[3996,27295,27296,27298,27300,27302,27304,27306,27308,27310,27312,27314,27316,27318],{"class":3998,"line":17819},[3996,27297,27087],{"class":4089},[3996,27299,4093],{"class":4006},[3996,27301,4096],{"class":4002},[3996,27303,7759],{"class":4099},[3996,27305,5456],{"class":4064},[3996,27307,16084],{"class":4099},[3996,27309,27100],{"class":4064},[3996,27311,3867],{"class":4099},[3996,27313,24141],{"class":4064},[3996,27315,27112],{"class":4099},[3996,27317,4103],{"class":4002},[3996,27319,5622],{"class":4099},[3996,27321,27322,27324],{"class":3998,"line":17827},[3996,27323,11117],{"class":4081},[3996,27325,27326],{"class":4085},"FormRow\n",[3996,27328,27329,27331,27333],{"class":3998,"line":17835},[3996,27330,27128],{"class":4089},[3996,27332,4093],{"class":4006},[3996,27334,27335],{"class":4029},"\"Регіон\"\n",[3996,27337,27338,27341,27343],{"class":3998,"line":17853},[3996,27339,27340],{"class":4089},"              description",[3996,27342,4093],{"class":4006},[3996,27344,27345],{"class":4029},"\"Оберіть зі списку (Picker), а не вводьте вручну\"\n",[3996,27347,27348,27350,27352,27354,27356,27358,27360,27362,27364],{"class":3998,"line":17882},[3996,27349,27187],{"class":4089},[3996,27351,4093],{"class":4006},[3996,27353,4096],{"class":4002},[3996,27355,26320],{"class":4064},[3996,27357,3821],{"class":4099},[3996,27359,11829],{"class":4064},[3996,27361,27200],{"class":4099},[3996,27363,27203],{"class":4064},[3996,27365,4129],{"class":4002},[3996,27367,27368],{"class":3998,"line":17894},[3996,27369,27370],{"class":4089},"              stacked\n",[3996,27372,27373,27376,27378],{"class":3998,"line":17907},[3996,27374,27375],{"class":4089},"              control",[3996,27377,4093],{"class":4006},[3996,27379,5684],{"class":4002},[3996,27381,27382,27384],{"class":3998,"line":17913},[3996,27383,18036],{"class":4081},[3996,27385,17072],{"class":4085},[3996,27387,27388,27390,27392,27394],{"class":3998,"line":17940},[3996,27389,18086],{"class":4089},[3996,27391,4093],{"class":4006},[3996,27393,4096],{"class":4002},[3996,27395,17085],{"class":4099},[3996,27397,27398,27400,27402,27405],{"class":3998,"line":17954},[3996,27399,20779],{"class":4064},[3996,27401,3821],{"class":4099},[3996,27403,27404],{"class":4064},"pickerWrap",[3996,27406,5720],{"class":4099},[3996,27408,27409],{"class":3998,"line":17960},[3996,27410,20790],{"class":4099},[3996,27412,27413,27415,27418,27420],{"class":3998,"line":17968},[3996,27414,20820],{"class":4064},[3996,27416,27417],{"class":4064}," errors",[3996,27419,3821],{"class":4099},[3996,27421,27422],{"class":4064},"region\n",[3996,27424,27425,27428,27430,27432],{"class":3998,"line":17979},[3996,27426,27427],{"class":4006},"                        ?",[3996,27429,5697],{"class":4064},[3996,27431,3821],{"class":4099},[3996,27433,27434],{"class":4064},"danger\n",[3996,27436,27437,27440,27442,27444,27446],{"class":3998,"line":18000},[3996,27438,27439],{"class":4006},"                        :",[3996,27441,5697],{"class":4064},[3996,27443,3821],{"class":4099},[3996,27445,15476],{"class":4064},[3996,27447,5720],{"class":4099},[3996,27449,27450,27452,27454,27456,27458],{"class":3998,"line":18027},[3996,27451,20795],{"class":4064},[3996,27453,5697],{"class":4064},[3996,27455,3821],{"class":4099},[3996,27457,17935],{"class":4064},[3996,27459,5720],{"class":4099},[3996,27461,27462,27465,27468,27470,27472],{"class":3998,"line":18033},[3996,27463,27464],{"class":4064},"                      borderRadius:",[3996,27466,27467],{"class":4064}," radius",[3996,27469,3821],{"class":4099},[3996,27471,16678],{"class":4064},[3996,27473,5720],{"class":4099},[3996,27475,27476],{"class":3998,"line":18041},[3996,27477,20833],{"class":4099},[3996,27479,27480,27482],{"class":3998,"line":18051},[3996,27481,20838],{"class":4099},[3996,27483,4129],{"class":4002},[3996,27485,27486],{"class":3998,"line":18083},[3996,27487,18105],{"class":4081},[3996,27489,27490,27492],{"class":3998,"line":18102},[3996,27491,20902],{"class":4081},[3996,27493,27494],{"class":4085},"Picker\n",[3996,27496,27497,27500,27502,27504,27506],{"class":3998,"line":18108},[3996,27498,27499],{"class":4089},"                    selectedValue",[3996,27501,4093],{"class":4006},[3996,27503,4096],{"class":4002},[3996,27505,24141],{"class":4064},[3996,27507,4129],{"class":4002},[3996,27509,27510,27513,27515,27517,27519],{"class":3998,"line":18122},[3996,27511,27512],{"class":4089},"                    onValueChange",[3996,27514,4093],{"class":4006},[3996,27516,4096],{"class":4002},[3996,27518,27100],{"class":4064},[3996,27520,4129],{"class":4002},[3996,27522,27523,27526,27528,27530,27532,27534,27536],{"class":3998,"line":18132},[3996,27524,27525],{"class":4089},"                    dropdownIconColor",[3996,27527,4093],{"class":4006},[3996,27529,4096],{"class":4002},[3996,27531,5598],{"class":4064},[3996,27533,3821],{"class":4099},[3996,27535,4227],{"class":4064},[3996,27537,4129],{"class":4002},[3996,27539,27540,27542,27544,27546,27548,27550,27552,27554,27556,27558],{"class":3998,"line":18142},[3996,27541,20947],{"class":4089},[3996,27543,4093],{"class":4006},[3996,27545,4096],{"class":4002},[3996,27547,5812],{"class":4099},[3996,27549,5730],{"class":4064},[3996,27551,5697],{"class":4064},[3996,27553,3821],{"class":4099},[3996,27555,4227],{"class":4064},[3996,27557,5821],{"class":4099},[3996,27559,4129],{"class":4002},[3996,27561,27562],{"class":3998,"line":18148},[3996,27563,20964],{"class":4081},[3996,27565,27566,27568,27570,27572,27574,27576,27578,27580,27582],{"class":3998,"line":18156},[3996,27567,20969],{"class":4002},[3996,27569,22016],{"class":4010},[3996,27571,3821],{"class":4099},[3996,27573,17780],{"class":4022},[3996,27575,10564],{"class":4099},[3996,27577,11829],{"class":4064},[3996,27579,8996],{"class":4099},[3996,27581,4103],{"class":4002},[3996,27583,5622],{"class":4099},[3996,27585,27586,27589],{"class":3998,"line":18165},[3996,27587,27588],{"class":4081},"                      \u003C",[3996,27590,27591],{"class":4085},"Picker.Item\n",[3996,27593,27594,27597,27599,27601,27603],{"class":3998,"line":18174},[3996,27595,27596],{"class":4089},"                        key",[3996,27598,4093],{"class":4006},[3996,27600,4096],{"class":4002},[3996,27602,11829],{"class":4064},[3996,27604,4129],{"class":4002},[3996,27606,27607,27610,27612,27614,27616],{"class":3998,"line":18179},[3996,27608,27609],{"class":4089},"                        label",[3996,27611,4093],{"class":4006},[3996,27613,4096],{"class":4002},[3996,27615,11829],{"class":4064},[3996,27617,4129],{"class":4002},[3996,27619,27620,27623,27625,27627,27629],{"class":3998,"line":18203},[3996,27621,27622],{"class":4089},"                        value",[3996,27624,4093],{"class":4006},[3996,27626,4096],{"class":4002},[3996,27628,11829],{"class":4064},[3996,27630,4129],{"class":4002},[3996,27632,27633,27636,27638,27640,27642,27644,27646],{"class":3998,"line":18211},[3996,27634,27635],{"class":4089},"                        color",[3996,27637,4093],{"class":4006},[3996,27639,4096],{"class":4002},[3996,27641,5598],{"class":4064},[3996,27643,3821],{"class":4099},[3996,27645,4227],{"class":4064},[3996,27647,4129],{"class":4002},[3996,27649,27650],{"class":3998,"line":18225},[3996,27651,27652],{"class":4081},"                      \u002F>\n",[3996,27654,27655,27658],{"class":3998,"line":18240},[3996,27656,27657],{"class":4099},"                    ))",[3996,27659,4129],{"class":4002},[3996,27661,27662,27664,27666],{"class":3998,"line":18255},[3996,27663,20982],{"class":4081},[3996,27665,25773],{"class":4085},[3996,27667,5924],{"class":4081},[3996,27669,27670,27672,27674],{"class":3998,"line":18270},[3996,27671,18125],{"class":4081},[3996,27673,11340],{"class":4085},[3996,27675,5924],{"class":4081},[3996,27677,27678],{"class":3998,"line":18285},[3996,27679,27680],{"class":4002},"              }\n",[3996,27682,27683],{"class":3998,"line":18297},[3996,27684,11266],{"class":4081},[3996,27686,27687,27689],{"class":3998,"line":18310},[3996,27688,27247],{"class":4099},[3996,27690,4129],{"class":4002},[3996,27692,27693],{"class":3998,"line":18323},[3996,27694,5914],{"class":4081},[3996,27696,27697],{"class":3998,"line":18336},[3996,27698,4051],{"emptyLinePlaceholder":4050},[3996,27700,27701,27703,27706],{"class":3998,"line":18343},[3996,27702,5780],{"class":4002},[3996,27704,27705],{"class":5783},"\u002F* ——— DateTimePicker через DateField ——— *\u002F",[3996,27707,4129],{"class":4002},[3996,27709,27710,27712],{"class":3998,"line":18385},[3996,27711,5791],{"class":4081},[3996,27713,27059],{"class":4085},[3996,27715,27716,27718,27720,27722,27724],{"class":3998,"line":18395},[3996,27717,27064],{"class":4089},[3996,27719,4093],{"class":4006},[3996,27721,4096],{"class":4002},[3996,27723,27071],{"class":4064},[3996,27725,4129],{"class":4002},[3996,27727,27728,27730,27732],{"class":3998,"line":18403},[3996,27729,5846],{"class":4089},[3996,27731,4093],{"class":4006},[3996,27733,27734],{"class":4029},"\"startDate\"\n",[3996,27736,27737,27739,27741,27743,27745,27747,27749,27751,27753,27755,27757,27759,27761,27763],{"class":3998,"line":18417},[3996,27738,27087],{"class":4089},[3996,27740,4093],{"class":4006},[3996,27742,4096],{"class":4002},[3996,27744,7759],{"class":4099},[3996,27746,5456],{"class":4064},[3996,27748,16084],{"class":4099},[3996,27750,27100],{"class":4064},[3996,27752,3867],{"class":4099},[3996,27754,27105],{"class":4064},[3996,27756,3867],{"class":4099},[3996,27758,24141],{"class":4064},[3996,27760,27112],{"class":4099},[3996,27762,4103],{"class":4002},[3996,27764,5622],{"class":4099},[3996,27766,27767,27769],{"class":3998,"line":18432},[3996,27768,11117],{"class":4081},[3996,27770,27771],{"class":4085},"DateField\n",[3996,27773,27774,27776,27778],{"class":3998,"line":18450},[3996,27775,27128],{"class":4089},[3996,27777,4093],{"class":4006},[3996,27779,27780],{"class":4029},"\"Дата початку\"\n",[3996,27782,27783,27785,27787,27789,27791],{"class":3998,"line":18472},[3996,27784,27148],{"class":4089},[3996,27786,4093],{"class":4006},[3996,27788,4096],{"class":4002},[3996,27790,24141],{"class":4064},[3996,27792,4129],{"class":4002},[3996,27794,27795,27798,27800,27802,27804],{"class":3998,"line":18477},[3996,27796,27797],{"class":4089},"              onChange",[3996,27799,4093],{"class":4006},[3996,27801,4096],{"class":4002},[3996,27803,27100],{"class":4064},[3996,27805,4129],{"class":4002},[3996,27807,27808,27810,27812,27814,27816],{"class":3998,"line":18482},[3996,27809,27174],{"class":4089},[3996,27811,4093],{"class":4006},[3996,27813,4096],{"class":4002},[3996,27815,27105],{"class":4064},[3996,27817,4129],{"class":4002},[3996,27819,27820,27822,27824,27826,27828,27830,27832,27834,27836],{"class":3998,"line":18492},[3996,27821,27187],{"class":4089},[3996,27823,4093],{"class":4006},[3996,27825,4096],{"class":4002},[3996,27827,26320],{"class":4064},[3996,27829,3821],{"class":4099},[3996,27831,23009],{"class":4064},[3996,27833,27200],{"class":4099},[3996,27835,27203],{"class":4064},[3996,27837,4129],{"class":4002},[3996,27839,27840],{"class":3998,"line":18497},[3996,27841,11266],{"class":4081},[3996,27843,27844,27846],{"class":3998,"line":18506},[3996,27845,27247],{"class":4099},[3996,27847,4129],{"class":4002},[3996,27849,27850],{"class":3998,"line":18511},[3996,27851,5914],{"class":4081},[3996,27853,27854],{"class":3998,"line":18518},[3996,27855,4051],{"emptyLinePlaceholder":4050},[3996,27857,27858,27860],{"class":3998,"line":18529},[3996,27859,5791],{"class":4081},[3996,27861,27059],{"class":4085},[3996,27863,27864,27866,27868,27870,27872],{"class":3998,"line":18541},[3996,27865,27064],{"class":4089},[3996,27867,4093],{"class":4006},[3996,27869,4096],{"class":4002},[3996,27871,27071],{"class":4064},[3996,27873,4129],{"class":4002},[3996,27875,27876,27878,27880],{"class":3998,"line":18546},[3996,27877,5846],{"class":4089},[3996,27879,4093],{"class":4006},[3996,27881,27882],{"class":4029},"\"endDate\"\n",[3996,27884,27885,27887,27889,27891,27893,27895,27897,27899,27901,27903,27905,27907,27909,27911],{"class":3998,"line":18559},[3996,27886,27087],{"class":4089},[3996,27888,4093],{"class":4006},[3996,27890,4096],{"class":4002},[3996,27892,7759],{"class":4099},[3996,27894,5456],{"class":4064},[3996,27896,16084],{"class":4099},[3996,27898,27100],{"class":4064},[3996,27900,3867],{"class":4099},[3996,27902,27105],{"class":4064},[3996,27904,3867],{"class":4099},[3996,27906,24141],{"class":4064},[3996,27908,27112],{"class":4099},[3996,27910,4103],{"class":4002},[3996,27912,5622],{"class":4099},[3996,27914,27915,27917],{"class":3998,"line":18572},[3996,27916,11117],{"class":4081},[3996,27918,27771],{"class":4085},[3996,27920,27921,27923,27925],{"class":3998,"line":18585},[3996,27922,27128],{"class":4089},[3996,27924,4093],{"class":4006},[3996,27926,27927],{"class":4029},"\"Дата завершення\"\n",[3996,27929,27930,27932,27934,27936,27938],{"class":3998,"line":18599},[3996,27931,27148],{"class":4089},[3996,27933,4093],{"class":4006},[3996,27935,4096],{"class":4002},[3996,27937,24141],{"class":4064},[3996,27939,4129],{"class":4002},[3996,27941,27942,27944,27946,27948,27950],{"class":3998,"line":18613},[3996,27943,27797],{"class":4089},[3996,27945,4093],{"class":4006},[3996,27947,4096],{"class":4002},[3996,27949,27100],{"class":4064},[3996,27951,4129],{"class":4002},[3996,27953,27954,27956,27958,27960,27962],{"class":3998,"line":18618},[3996,27955,27174],{"class":4089},[3996,27957,4093],{"class":4006},[3996,27959,4096],{"class":4002},[3996,27961,27105],{"class":4064},[3996,27963,4129],{"class":4002},[3996,27965,27966,27968,27970,27972,27974,27976,27978,27980,27982],{"class":3998,"line":18625},[3996,27967,27187],{"class":4089},[3996,27969,4093],{"class":4006},[3996,27971,4096],{"class":4002},[3996,27973,26320],{"class":4064},[3996,27975,3821],{"class":4099},[3996,27977,22994],{"class":4064},[3996,27979,27200],{"class":4099},[3996,27981,27203],{"class":4064},[3996,27983,4129],{"class":4002},[3996,27985,27986,27989,27991,27993,27995],{"class":3998,"line":18630},[3996,27987,27988],{"class":4089},"              minimumDate",[3996,27990,4093],{"class":4006},[3996,27992,4096],{"class":4002},[3996,27994,23009],{"class":4064},[3996,27996,4129],{"class":4002},[3996,27998,27999],{"class":3998,"line":18638},[3996,28000,11266],{"class":4081},[3996,28002,28003,28005],{"class":3998,"line":18649},[3996,28004,27247],{"class":4099},[3996,28006,4129],{"class":4002},[3996,28008,28009],{"class":3998,"line":18665},[3996,28010,5914],{"class":4081},[3996,28012,28013],{"class":3998,"line":18681},[3996,28014,4051],{"emptyLinePlaceholder":4050},[3996,28016,28017,28019,28022],{"class":3998,"line":18688},[3996,28018,5780],{"class":4002},[3996,28020,28021],{"class":5783},"\u002F* ——— TextInput multiline ——— *\u002F",[3996,28023,4129],{"class":4002},[3996,28025,28026,28028],{"class":3998,"line":18693},[3996,28027,5791],{"class":4081},[3996,28029,27059],{"class":4085},[3996,28031,28032,28034,28036,28038,28040],{"class":3998,"line":18702},[3996,28033,27064],{"class":4089},[3996,28035,4093],{"class":4006},[3996,28037,4096],{"class":4002},[3996,28039,27071],{"class":4064},[3996,28041,4129],{"class":4002},[3996,28043,28044,28046,28048],{"class":3998,"line":18711},[3996,28045,5846],{"class":4089},[3996,28047,4093],{"class":4006},[3996,28049,28050],{"class":4029},"\"description\"\n",[3996,28052,28053,28055,28057,28059,28061,28063,28065,28067,28069,28071,28073,28075,28077,28079],{"class":3998,"line":18716},[3996,28054,27087],{"class":4089},[3996,28056,4093],{"class":4006},[3996,28058,4096],{"class":4002},[3996,28060,7759],{"class":4099},[3996,28062,5456],{"class":4064},[3996,28064,16084],{"class":4099},[3996,28066,27100],{"class":4064},[3996,28068,3867],{"class":4099},[3996,28070,27105],{"class":4064},[3996,28072,3867],{"class":4099},[3996,28074,24141],{"class":4064},[3996,28076,27112],{"class":4099},[3996,28078,4103],{"class":4002},[3996,28080,5622],{"class":4099},[3996,28082,28083,28085],{"class":3998,"line":18721},[3996,28084,11117],{"class":4081},[3996,28086,27123],{"class":4085},[3996,28088,28089,28091,28093],{"class":3998,"line":18726},[3996,28090,27128],{"class":4089},[3996,28092,4093],{"class":4006},[3996,28094,28095],{"class":4029},"\"Опис\"\n",[3996,28097,28098,28100,28102],{"class":3998,"line":18743},[3996,28099,27138],{"class":4089},[3996,28101,4093],{"class":4006},[3996,28103,28104],{"class":4029},"\"Коротко: що плануєте побачити, з ким їдете…\"\n",[3996,28106,28107,28109,28111,28113,28115],{"class":3998,"line":18751},[3996,28108,27148],{"class":4089},[3996,28110,4093],{"class":4006},[3996,28112,4096],{"class":4002},[3996,28114,24141],{"class":4064},[3996,28116,4129],{"class":4002},[3996,28118,28119,28121,28123,28125,28127],{"class":3998,"line":18760},[3996,28120,27161],{"class":4089},[3996,28122,4093],{"class":4006},[3996,28124,4096],{"class":4002},[3996,28126,27100],{"class":4064},[3996,28128,4129],{"class":4002},[3996,28130,28131,28133,28135,28137,28139],{"class":3998,"line":18765},[3996,28132,27174],{"class":4089},[3996,28134,4093],{"class":4006},[3996,28136,4096],{"class":4002},[3996,28138,27105],{"class":4064},[3996,28140,4129],{"class":4002},[3996,28142,28143,28145,28147,28149,28151,28153,28155,28157,28159],{"class":3998,"line":18772},[3996,28144,27187],{"class":4089},[3996,28146,4093],{"class":4006},[3996,28148,4096],{"class":4002},[3996,28150,26320],{"class":4064},[3996,28152,3821],{"class":4099},[3996,28154,13339],{"class":4064},[3996,28156,27200],{"class":4099},[3996,28158,27203],{"class":4064},[3996,28160,4129],{"class":4002},[3996,28162,28163],{"class":3998,"line":18781},[3996,28164,28165],{"class":4089},"              multiline\n",[3996,28167,28168,28171,28173,28175,28178],{"class":3998,"line":18786},[3996,28169,28170],{"class":4089},"              numberOfLines",[3996,28172,4093],{"class":4006},[3996,28174,4096],{"class":4002},[3996,28176,28177],{"class":11033},"4",[3996,28179,4129],{"class":4002},[3996,28181,28182,28185,28187],{"class":3998,"line":18794},[3996,28183,28184],{"class":4089},"              textAlignVertical",[3996,28186,4093],{"class":4006},[3996,28188,28189],{"class":4029},"\"top\"\n",[3996,28191,28192,28194,28196,28198,28200,28202,28205],{"class":3998,"line":18805},[3996,28193,21229],{"class":4089},[3996,28195,4093],{"class":4006},[3996,28197,4096],{"class":4002},[3996,28199,8789],{"class":4064},[3996,28201,3821],{"class":4099},[3996,28203,28204],{"class":4064},"multiline",[3996,28206,4129],{"class":4002},[3996,28208,28209,28211,28213,28215,28217],{"class":3998,"line":18816},[3996,28210,27230],{"class":4089},[3996,28212,4093],{"class":4006},[3996,28214,4096],{"class":4002},[3996,28216,22771],{"class":11033},[3996,28218,4129],{"class":4002},[3996,28220,28221,28224,28226],{"class":3998,"line":18821},[3996,28222,28223],{"class":4089},"              hint",[3996,28225,4093],{"class":4006},[3996,28227,28228],{"class":4029},"\"Мінімум 10 символів\"\n",[3996,28230,28231],{"class":3998,"line":18829},[3996,28232,11266],{"class":4081},[3996,28234,28235,28237],{"class":3998,"line":18838},[3996,28236,27247],{"class":4099},[3996,28238,4129],{"class":4002},[3996,28240,28241],{"class":3998,"line":18848},[3996,28242,5914],{"class":4081},[3996,28244,28245],{"class":3998,"line":18857},[3996,28246,4051],{"emptyLinePlaceholder":4050},[3996,28248,28249,28251,28254],{"class":3998,"line":18866},[3996,28250,5780],{"class":4002},[3996,28252,28253],{"class":5783},"\u002F* ——— Slider ——— *\u002F",[3996,28255,4129],{"class":4002},[3996,28257,28258,28260],{"class":3998,"line":18871},[3996,28259,5791],{"class":4081},[3996,28261,27059],{"class":4085},[3996,28263,28264,28266,28268,28270,28272],{"class":3998,"line":18879},[3996,28265,27064],{"class":4089},[3996,28267,4093],{"class":4006},[3996,28269,4096],{"class":4002},[3996,28271,27071],{"class":4064},[3996,28273,4129],{"class":4002},[3996,28275,28276,28278,28280],{"class":3998,"line":18888},[3996,28277,5846],{"class":4089},[3996,28279,4093],{"class":4006},[3996,28281,28282],{"class":4029},"\"plannedDays\"\n",[3996,28284,28285,28287,28289,28291,28293,28295,28297,28299,28301,28303,28305,28307],{"class":3998,"line":18893},[3996,28286,27087],{"class":4089},[3996,28288,4093],{"class":4006},[3996,28290,4096],{"class":4002},[3996,28292,7759],{"class":4099},[3996,28294,5456],{"class":4064},[3996,28296,16084],{"class":4099},[3996,28298,27100],{"class":4064},[3996,28300,3867],{"class":4099},[3996,28302,24141],{"class":4064},[3996,28304,27112],{"class":4099},[3996,28306,4103],{"class":4002},[3996,28308,5622],{"class":4099},[3996,28310,28311,28313],{"class":3998,"line":18901},[3996,28312,11117],{"class":4081},[3996,28314,27326],{"class":4085},[3996,28316,28317,28319,28321,28323,28326,28328,28330,28332,28334,28337,28339,28341,28343,28345,28347],{"class":3998,"line":18910},[3996,28318,27128],{"class":4089},[3996,28320,4093],{"class":4006},[3996,28322,4096],{"class":4002},[3996,28324,28325],{"class":4029},"`Тривалість: ",[3996,28327,11717],{"class":4002},[3996,28329,24141],{"class":4064},[3996,28331,4117],{"class":4002},[3996,28333,23231],{"class":4002},[3996,28335,28336],{"class":4022},"daysWord",[3996,28338,4109],{"class":4099},[3996,28340,24141],{"class":4064},[3996,28342,4114],{"class":4099},[3996,28344,4117],{"class":4002},[3996,28346,11728],{"class":4029},[3996,28348,4129],{"class":4002},[3996,28350,28351,28353,28355],{"class":3998,"line":18915},[3996,28352,27340],{"class":4089},[3996,28354,4093],{"class":4006},[3996,28356,28357],{"class":4029},"\"Повзунок (Slider) — зручно для діапазону 1–14\"\n",[3996,28359,28360,28362,28364,28366,28368,28370,28372,28374,28376],{"class":3998,"line":18923},[3996,28361,27187],{"class":4089},[3996,28363,4093],{"class":4006},[3996,28365,4096],{"class":4002},[3996,28367,26320],{"class":4064},[3996,28369,3821],{"class":4099},[3996,28371,26726],{"class":4064},[3996,28373,27200],{"class":4099},[3996,28375,27203],{"class":4064},[3996,28377,4129],{"class":4002},[3996,28379,28380],{"class":3998,"line":18932},[3996,28381,27370],{"class":4089},[3996,28383,28384,28386,28388],{"class":3998,"line":18941},[3996,28385,27375],{"class":4089},[3996,28387,4093],{"class":4006},[3996,28389,5684],{"class":4002},[3996,28391,28392,28394],{"class":3998,"line":18946},[3996,28393,18036],{"class":4081},[3996,28395,28396],{"class":4085},"Slider\n",[3996,28398,28399,28402,28404,28406,28408],{"class":3998,"line":18954},[3996,28400,28401],{"class":4089},"                  minimumValue",[3996,28403,4093],{"class":4006},[3996,28405,4096],{"class":4002},[3996,28407,22871],{"class":11033},[3996,28409,4129],{"class":4002},[3996,28411,28412,28415,28417,28419,28421],{"class":3998,"line":18964},[3996,28413,28414],{"class":4089},"                  maximumValue",[3996,28416,4093],{"class":4006},[3996,28418,4096],{"class":4002},[3996,28420,22889],{"class":11033},[3996,28422,4129],{"class":4002},[3996,28424,28425,28428,28430,28432,28434],{"class":3998,"line":18969},[3996,28426,28427],{"class":4089},"                  step",[3996,28429,4093],{"class":4006},[3996,28431,4096],{"class":4002},[3996,28433,22871],{"class":11033},[3996,28435,4129],{"class":4002},[3996,28437,28438,28441,28443,28445,28447],{"class":3998,"line":18977},[3996,28439,28440],{"class":4089},"                  value",[3996,28442,4093],{"class":4006},[3996,28444,4096],{"class":4002},[3996,28446,24141],{"class":4064},[3996,28448,4129],{"class":4002},[3996,28450,28451,28454,28456,28458,28460],{"class":3998,"line":18986},[3996,28452,28453],{"class":4089},"                  onValueChange",[3996,28455,4093],{"class":4006},[3996,28457,4096],{"class":4002},[3996,28459,27100],{"class":4064},[3996,28461,4129],{"class":4002},[3996,28463,28464,28467,28469,28471,28473,28475,28477],{"class":3998,"line":18991},[3996,28465,28466],{"class":4089},"                  minimumTrackTintColor",[3996,28468,4093],{"class":4006},[3996,28470,4096],{"class":4002},[3996,28472,5598],{"class":4064},[3996,28474,3821],{"class":4099},[3996,28476,5717],{"class":4064},[3996,28478,4129],{"class":4002},[3996,28480,28481,28484,28486,28488,28490,28492,28494],{"class":3998,"line":18999},[3996,28482,28483],{"class":4089},"                  maximumTrackTintColor",[3996,28485,4093],{"class":4006},[3996,28487,4096],{"class":4002},[3996,28489,5598],{"class":4064},[3996,28491,3821],{"class":4099},[3996,28493,15476],{"class":4064},[3996,28495,4129],{"class":4002},[3996,28497,28498,28501,28503,28505,28507,28509,28511],{"class":3998,"line":19009},[3996,28499,28500],{"class":4089},"                  thumbTintColor",[3996,28502,4093],{"class":4006},[3996,28504,4096],{"class":4002},[3996,28506,5598],{"class":4064},[3996,28508,3821],{"class":4099},[3996,28510,5717],{"class":4064},[3996,28512,4129],{"class":4002},[3996,28514,28515],{"class":3998,"line":19014},[3996,28516,28517],{"class":4081},"                \u002F>\n",[3996,28519,28521],{"class":3998,"line":28520},256,[3996,28522,27680],{"class":4002},[3996,28524,28526],{"class":3998,"line":28525},257,[3996,28527,11266],{"class":4081},[3996,28529,28531,28533],{"class":3998,"line":28530},258,[3996,28532,27247],{"class":4099},[3996,28534,4129],{"class":4002},[3996,28536,28538],{"class":3998,"line":28537},259,[3996,28539,5914],{"class":4081},[3996,28541,28543,28545,28547,28549,28551,28553,28555,28557,28559,28561,28563,28565,28567],{"class":3998,"line":28542},260,[3996,28544,5791],{"class":4081},[3996,28546,16052],{"class":4085},[3996,28548,17175],{"class":4089},[3996,28550,4093],{"class":4006},[3996,28552,17503],{"class":4029},[3996,28554,6913],{"class":4089},[3996,28556,4093],{"class":4006},[3996,28558,4096],{"class":4002},[3996,28560,5598],{"class":4064},[3996,28562,3821],{"class":4099},[3996,28564,15445],{"class":4064},[3996,28566,4117],{"class":4002},[3996,28568,5924],{"class":4081},[3996,28570,28572,28575,28577,28579,28582,28584],{"class":3998,"line":28571},261,[3996,28573,28574],{"class":4006},"          Зараз на слайдері: ",[3996,28576,4096],{"class":4002},[3996,28578,26726],{"class":4064},[3996,28580,28581],{"class":4002},"}{",[3996,28583,20413],{"class":4029},[3996,28585,4129],{"class":4002},[3996,28587,28589,28591,28593,28595,28597,28600,28602,28604,28606],{"class":3998,"line":28588},262,[3996,28590,17646],{"class":4002},[3996,28592,28336],{"class":4022},[3996,28594,4109],{"class":4099},[3996,28596,26726],{"class":4064},[3996,28598,28599],{"class":4006}," ??",[3996,28601,11949],{"class":11033},[3996,28603,4114],{"class":4099},[3996,28605,4117],{"class":4002},[3996,28607,28608],{"class":4006}," (можна не збігатися з датами — це\n",[3996,28610,28612],{"class":3998,"line":28611},263,[3996,28613,28614],{"class":4006},"          окреме «орієнтовне» поле для навчання).\n",[3996,28616,28618,28620,28622],{"class":3998,"line":28617},264,[3996,28619,8074],{"class":4081},[3996,28621,16052],{"class":4085},[3996,28623,5924],{"class":4081},[3996,28625,28627],{"class":3998,"line":28626},265,[3996,28628,4051],{"emptyLinePlaceholder":4050},[3996,28630,28632,28634,28637],{"class":3998,"line":28631},266,[3996,28633,5780],{"class":4002},[3996,28635,28636],{"class":5783},"\u002F* ——— Switch ——— *\u002F",[3996,28638,4129],{"class":4002},[3996,28640,28642,28644],{"class":3998,"line":28641},267,[3996,28643,5791],{"class":4081},[3996,28645,27059],{"class":4085},[3996,28647,28649,28651,28653,28655,28657],{"class":3998,"line":28648},268,[3996,28650,27064],{"class":4089},[3996,28652,4093],{"class":4006},[3996,28654,4096],{"class":4002},[3996,28656,27071],{"class":4064},[3996,28658,4129],{"class":4002},[3996,28660,28662,28664,28666],{"class":3998,"line":28661},269,[3996,28663,5846],{"class":4089},[3996,28665,4093],{"class":4006},[3996,28667,28668],{"class":4029},"\"isPrivate\"\n",[3996,28670,28672,28674,28676,28678,28680,28682,28684,28686,28688,28690,28692,28694],{"class":3998,"line":28671},270,[3996,28673,27087],{"class":4089},[3996,28675,4093],{"class":4006},[3996,28677,4096],{"class":4002},[3996,28679,7759],{"class":4099},[3996,28681,5456],{"class":4064},[3996,28683,16084],{"class":4099},[3996,28685,27100],{"class":4064},[3996,28687,3867],{"class":4099},[3996,28689,24141],{"class":4064},[3996,28691,27112],{"class":4099},[3996,28693,4103],{"class":4002},[3996,28695,5622],{"class":4099},[3996,28697,28699,28701],{"class":3998,"line":28698},271,[3996,28700,11117],{"class":4081},[3996,28702,27326],{"class":4085},[3996,28704,28706,28708,28710],{"class":3998,"line":28705},272,[3996,28707,27128],{"class":4089},[3996,28709,4093],{"class":4006},[3996,28711,28712],{"class":4029},"\"Приватна поїздка\"\n",[3996,28714,28716,28718,28720],{"class":3998,"line":28715},273,[3996,28717,27340],{"class":4089},[3996,28719,4093],{"class":4006},[3996,28721,28722],{"class":4029},"\"Switch: увімкнено — мітка «приватна» на картці\"\n",[3996,28724,28726,28728,28730,28732,28734,28736,28738,28740,28742],{"class":3998,"line":28725},274,[3996,28727,27187],{"class":4089},[3996,28729,4093],{"class":4006},[3996,28731,4096],{"class":4002},[3996,28733,26320],{"class":4064},[3996,28735,3821],{"class":4099},[3996,28737,26713],{"class":4064},[3996,28739,27200],{"class":4099},[3996,28741,27203],{"class":4064},[3996,28743,4129],{"class":4002},[3996,28745,28747,28749,28751],{"class":3998,"line":28746},275,[3996,28748,27375],{"class":4089},[3996,28750,4093],{"class":4006},[3996,28752,5684],{"class":4002},[3996,28754,28756,28758],{"class":3998,"line":28755},276,[3996,28757,18036],{"class":4081},[3996,28759,28760],{"class":4085},"Switch\n",[3996,28762,28764,28766,28768,28770,28772],{"class":3998,"line":28763},277,[3996,28765,28440],{"class":4089},[3996,28767,4093],{"class":4006},[3996,28769,4096],{"class":4002},[3996,28771,24141],{"class":4064},[3996,28773,4129],{"class":4002},[3996,28775,28777,28779,28781,28783,28785],{"class":3998,"line":28776},278,[3996,28778,28453],{"class":4089},[3996,28780,4093],{"class":4006},[3996,28782,4096],{"class":4002},[3996,28784,27100],{"class":4064},[3996,28786,4129],{"class":4002},[3996,28788,28790,28793,28795,28797],{"class":3998,"line":28789},279,[3996,28791,28792],{"class":4089},"                  trackColor",[3996,28794,4093],{"class":4006},[3996,28796,4096],{"class":4002},[3996,28798,5684],{"class":4099},[3996,28800,28802,28805,28807,28809,28811],{"class":3998,"line":28801},280,[3996,28803,28804],{"class":4064},"                    false:",[3996,28806,5697],{"class":4064},[3996,28808,3821],{"class":4099},[3996,28810,15476],{"class":4064},[3996,28812,5720],{"class":4099},[3996,28814,28816,28819,28821,28823,28825],{"class":3998,"line":28815},281,[3996,28817,28818],{"class":4064},"                    true:",[3996,28820,5697],{"class":4064},[3996,28822,3821],{"class":4099},[3996,28824,5717],{"class":4064},[3996,28826,5720],{"class":4099},[3996,28828,28830,28833],{"class":3998,"line":28829},282,[3996,28831,28832],{"class":4099},"                  }",[3996,28834,4129],{"class":4002},[3996,28836,28838,28841,28843,28845,28847,28849,28851],{"class":3998,"line":28837},283,[3996,28839,28840],{"class":4089},"                  thumbColor",[3996,28842,4093],{"class":4006},[3996,28844,4096],{"class":4002},[3996,28846,5598],{"class":4064},[3996,28848,3821],{"class":4099},[3996,28850,18070],{"class":4064},[3996,28852,4129],{"class":4002},[3996,28854,28856,28859,28861,28863,28865,28867,28869],{"class":3998,"line":28855},284,[3996,28857,28858],{"class":4089},"                  ios_backgroundColor",[3996,28860,4093],{"class":4006},[3996,28862,4096],{"class":4002},[3996,28864,5598],{"class":4064},[3996,28866,3821],{"class":4099},[3996,28868,15476],{"class":4064},[3996,28870,4129],{"class":4002},[3996,28872,28874],{"class":3998,"line":28873},285,[3996,28875,28517],{"class":4081},[3996,28877,28879],{"class":3998,"line":28878},286,[3996,28880,27680],{"class":4002},[3996,28882,28884],{"class":3998,"line":28883},287,[3996,28885,11266],{"class":4081},[3996,28887,28889,28891],{"class":3998,"line":28888},288,[3996,28890,27247],{"class":4099},[3996,28892,4129],{"class":4002},[3996,28894,28896],{"class":3998,"line":28895},289,[3996,28897,5914],{"class":4081},[3996,28899,28901],{"class":3998,"line":28900},290,[3996,28902,4051],{"emptyLinePlaceholder":4050},[3996,28904,28906,28908,28911],{"class":3998,"line":28905},291,[3996,28907,5780],{"class":4002},[3996,28909,28910],{"class":5783},"\u002F* ——— Checkbox (опційний прапорець) ——— *\u002F",[3996,28912,4129],{"class":4002},[3996,28914,28916,28918],{"class":3998,"line":28915},292,[3996,28917,5791],{"class":4081},[3996,28919,27059],{"class":4085},[3996,28921,28923,28925,28927,28929,28931],{"class":3998,"line":28922},293,[3996,28924,27064],{"class":4089},[3996,28926,4093],{"class":4006},[3996,28928,4096],{"class":4002},[3996,28930,27071],{"class":4064},[3996,28932,4129],{"class":4002},[3996,28934,28936,28938,28940],{"class":3998,"line":28935},294,[3996,28937,5846],{"class":4089},[3996,28939,4093],{"class":4006},[3996,28941,28942],{"class":4029},"\"hasItinerary\"\n",[3996,28944,28946,28948,28950,28952,28954,28956,28958,28960,28962,28964,28966,28968],{"class":3998,"line":28945},295,[3996,28947,27087],{"class":4089},[3996,28949,4093],{"class":4006},[3996,28951,4096],{"class":4002},[3996,28953,7759],{"class":4099},[3996,28955,5456],{"class":4064},[3996,28957,16084],{"class":4099},[3996,28959,27100],{"class":4064},[3996,28961,3867],{"class":4099},[3996,28963,24141],{"class":4064},[3996,28965,27112],{"class":4099},[3996,28967,4103],{"class":4002},[3996,28969,5622],{"class":4099},[3996,28971,28973,28975],{"class":3998,"line":28972},296,[3996,28974,11117],{"class":4081},[3996,28976,27326],{"class":4085},[3996,28978,28980,28982,28984],{"class":3998,"line":28979},297,[3996,28981,27128],{"class":4089},[3996,28983,4093],{"class":4006},[3996,28985,28986],{"class":4029},"\"Є план маршруту\"\n",[3996,28988,28990,28992,28994],{"class":3998,"line":28989},298,[3996,28991,27340],{"class":4089},[3996,28993,4093],{"class":4006},[3996,28995,28996],{"class":4029},"\"Checkbox: так \u002F ні, без обов’язковості\"\n",[3996,28998,29000,29002,29004,29006,29008,29010,29012,29014,29016],{"class":3998,"line":28999},299,[3996,29001,27187],{"class":4089},[3996,29003,4093],{"class":4006},[3996,29005,4096],{"class":4002},[3996,29007,26320],{"class":4064},[3996,29009,3821],{"class":4099},[3996,29011,26739],{"class":4064},[3996,29013,27200],{"class":4099},[3996,29015,27203],{"class":4064},[3996,29017,4129],{"class":4002},[3996,29019,29021,29023,29025],{"class":3998,"line":29020},300,[3996,29022,27375],{"class":4089},[3996,29024,4093],{"class":4006},[3996,29026,5684],{"class":4002},[3996,29028,29030,29032],{"class":3998,"line":29029},301,[3996,29031,18036],{"class":4081},[3996,29033,29034],{"class":4085},"Checkbox\n",[3996,29036,29038,29040,29042,29044,29046],{"class":3998,"line":29037},302,[3996,29039,28440],{"class":4089},[3996,29041,4093],{"class":4006},[3996,29043,4096],{"class":4002},[3996,29045,24141],{"class":4064},[3996,29047,4129],{"class":4002},[3996,29049,29051,29053,29055,29057,29059],{"class":3998,"line":29050},303,[3996,29052,28453],{"class":4089},[3996,29054,4093],{"class":4006},[3996,29056,4096],{"class":4002},[3996,29058,27100],{"class":4064},[3996,29060,4129],{"class":4002},[3996,29062,29064,29067,29069,29071],{"class":3998,"line":29063},304,[3996,29065,29066],{"class":4089},"                  tintColors",[3996,29068,4093],{"class":4006},[3996,29070,4096],{"class":4002},[3996,29072,5684],{"class":4099},[3996,29074,29076,29078,29080,29082,29084],{"class":3998,"line":29075},305,[3996,29077,28818],{"class":4064},[3996,29079,5697],{"class":4064},[3996,29081,3821],{"class":4099},[3996,29083,5717],{"class":4064},[3996,29085,5720],{"class":4099},[3996,29087,29089,29091,29093,29095,29097],{"class":3998,"line":29088},306,[3996,29090,28804],{"class":4064},[3996,29092,5697],{"class":4064},[3996,29094,3821],{"class":4099},[3996,29096,15476],{"class":4064},[3996,29098,5720],{"class":4099},[3996,29100,29102,29104],{"class":3998,"line":29101},307,[3996,29103,28832],{"class":4099},[3996,29105,4129],{"class":4002},[3996,29107,29109,29112,29114,29116,29118,29120,29122],{"class":3998,"line":29108},308,[3996,29110,29111],{"class":4089},"                  onCheckColor",[3996,29113,4093],{"class":4006},[3996,29115,4096],{"class":4002},[3996,29117,5598],{"class":4064},[3996,29119,3821],{"class":4099},[3996,29121,18070],{"class":4064},[3996,29123,4129],{"class":4002},[3996,29125,29127,29130,29132,29134,29136,29138,29140],{"class":3998,"line":29126},309,[3996,29128,29129],{"class":4089},"                  onFillColor",[3996,29131,4093],{"class":4006},[3996,29133,4096],{"class":4002},[3996,29135,5598],{"class":4064},[3996,29137,3821],{"class":4099},[3996,29139,5717],{"class":4064},[3996,29141,4129],{"class":4002},[3996,29143,29145,29148,29150,29152,29154,29156,29158],{"class":3998,"line":29144},310,[3996,29146,29147],{"class":4089},"                  onTintColor",[3996,29149,4093],{"class":4006},[3996,29151,4096],{"class":4002},[3996,29153,5598],{"class":4064},[3996,29155,3821],{"class":4099},[3996,29157,5717],{"class":4064},[3996,29159,4129],{"class":4002},[3996,29161,29163,29166,29168],{"class":3998,"line":29162},311,[3996,29164,29165],{"class":4089},"                  boxType",[3996,29167,4093],{"class":4006},[3996,29169,29170],{"class":4029},"\"square\"\n",[3996,29172,29174],{"class":3998,"line":29173},312,[3996,29175,28517],{"class":4081},[3996,29177,29179],{"class":3998,"line":29178},313,[3996,29180,27680],{"class":4002},[3996,29182,29184],{"class":3998,"line":29183},314,[3996,29185,11266],{"class":4081},[3996,29187,29189,29191],{"class":3998,"line":29188},315,[3996,29190,27247],{"class":4099},[3996,29192,4129],{"class":4002},[3996,29194,29196],{"class":3998,"line":29195},316,[3996,29197,5914],{"class":4081},[3996,29199,29201],{"class":3998,"line":29200},317,[3996,29202,4051],{"emptyLinePlaceholder":4050},[3996,29204,29206,29208,29211],{"class":3998,"line":29205},318,[3996,29207,5780],{"class":4002},[3996,29209,29210],{"class":5783},"\u002F* ——— Checkbox (обов’язкова згода) ——— *\u002F",[3996,29212,4129],{"class":4002},[3996,29214,29216,29218],{"class":3998,"line":29215},319,[3996,29217,5791],{"class":4081},[3996,29219,27059],{"class":4085},[3996,29221,29223,29225,29227,29229,29231],{"class":3998,"line":29222},320,[3996,29224,27064],{"class":4089},[3996,29226,4093],{"class":4006},[3996,29228,4096],{"class":4002},[3996,29230,27071],{"class":4064},[3996,29232,4129],{"class":4002},[3996,29234,29236,29238,29240],{"class":3998,"line":29235},321,[3996,29237,5846],{"class":4089},[3996,29239,4093],{"class":4006},[3996,29241,29242],{"class":4029},"\"acceptedLocalSave\"\n",[3996,29244,29246,29248,29250,29252,29254,29256,29258,29260,29262,29264,29266,29268],{"class":3998,"line":29245},322,[3996,29247,27087],{"class":4089},[3996,29249,4093],{"class":4006},[3996,29251,4096],{"class":4002},[3996,29253,7759],{"class":4099},[3996,29255,5456],{"class":4064},[3996,29257,16084],{"class":4099},[3996,29259,27100],{"class":4064},[3996,29261,3867],{"class":4099},[3996,29263,24141],{"class":4064},[3996,29265,27112],{"class":4099},[3996,29267,4103],{"class":4002},[3996,29269,5622],{"class":4099},[3996,29271,29273,29275],{"class":3998,"line":29272},323,[3996,29274,11117],{"class":4081},[3996,29276,27326],{"class":4085},[3996,29278,29280,29282,29284],{"class":3998,"line":29279},324,[3996,29281,27128],{"class":4089},[3996,29283,4093],{"class":4006},[3996,29285,29286],{"class":4029},"\"Згода на локальне збереження\"\n",[3996,29288,29290,29292,29294],{"class":3998,"line":29289},325,[3996,29291,27340],{"class":4089},[3996,29293,4093],{"class":4006},[3996,29295,29296],{"class":4029},"\"Поки немає API: дані лишаються в пам’яті застосунку\"\n",[3996,29298,29300,29302,29304,29306,29308,29310,29313,29315,29317],{"class":3998,"line":29299},326,[3996,29301,27187],{"class":4089},[3996,29303,4093],{"class":4006},[3996,29305,4096],{"class":4002},[3996,29307,26320],{"class":4064},[3996,29309,3821],{"class":4099},[3996,29311,29312],{"class":4064},"acceptedLocalSave",[3996,29314,27200],{"class":4099},[3996,29316,27203],{"class":4064},[3996,29318,4129],{"class":4002},[3996,29320,29322,29324,29326],{"class":3998,"line":29321},327,[3996,29323,27375],{"class":4089},[3996,29325,4093],{"class":4006},[3996,29327,5684],{"class":4002},[3996,29329,29331,29333],{"class":3998,"line":29330},328,[3996,29332,18036],{"class":4081},[3996,29334,29034],{"class":4085},[3996,29336,29338,29340,29342,29344,29347,29349,29351,29353],{"class":3998,"line":29337},329,[3996,29339,28440],{"class":4089},[3996,29341,4093],{"class":4006},[3996,29343,4096],{"class":4002},[3996,29345,29346],{"class":4022},"Boolean",[3996,29348,4109],{"class":4099},[3996,29350,24141],{"class":4064},[3996,29352,4114],{"class":4099},[3996,29354,4129],{"class":4002},[3996,29356,29358,29360,29362,29364,29366],{"class":3998,"line":29357},330,[3996,29359,28453],{"class":4089},[3996,29361,4093],{"class":4006},[3996,29363,4096],{"class":4002},[3996,29365,27100],{"class":4064},[3996,29367,4129],{"class":4002},[3996,29369,29371,29373,29375,29377],{"class":3998,"line":29370},331,[3996,29372,29066],{"class":4089},[3996,29374,4093],{"class":4006},[3996,29376,4096],{"class":4002},[3996,29378,5684],{"class":4099},[3996,29380,29382,29384,29386,29388,29390],{"class":3998,"line":29381},332,[3996,29383,28818],{"class":4064},[3996,29385,5697],{"class":4064},[3996,29387,3821],{"class":4099},[3996,29389,5717],{"class":4064},[3996,29391,5720],{"class":4099},[3996,29393,29395,29397,29399,29401,29403],{"class":3998,"line":29394},333,[3996,29396,28804],{"class":4064},[3996,29398,5697],{"class":4064},[3996,29400,3821],{"class":4099},[3996,29402,15476],{"class":4064},[3996,29404,5720],{"class":4099},[3996,29406,29408,29410],{"class":3998,"line":29407},334,[3996,29409,28832],{"class":4099},[3996,29411,4129],{"class":4002},[3996,29413,29415,29417,29419,29421,29423,29425,29427],{"class":3998,"line":29414},335,[3996,29416,29111],{"class":4089},[3996,29418,4093],{"class":4006},[3996,29420,4096],{"class":4002},[3996,29422,5598],{"class":4064},[3996,29424,3821],{"class":4099},[3996,29426,18070],{"class":4064},[3996,29428,4129],{"class":4002},[3996,29430,29432,29434,29436,29438,29440,29442,29444],{"class":3998,"line":29431},336,[3996,29433,29129],{"class":4089},[3996,29435,4093],{"class":4006},[3996,29437,4096],{"class":4002},[3996,29439,5598],{"class":4064},[3996,29441,3821],{"class":4099},[3996,29443,5717],{"class":4064},[3996,29445,4129],{"class":4002},[3996,29447,29449,29451,29453,29455,29457,29459,29461],{"class":3998,"line":29448},337,[3996,29450,29147],{"class":4089},[3996,29452,4093],{"class":4006},[3996,29454,4096],{"class":4002},[3996,29456,5598],{"class":4064},[3996,29458,3821],{"class":4099},[3996,29460,5717],{"class":4064},[3996,29462,4129],{"class":4002},[3996,29464,29466,29468,29470],{"class":3998,"line":29465},338,[3996,29467,29165],{"class":4089},[3996,29469,4093],{"class":4006},[3996,29471,29170],{"class":4029},[3996,29473,29475],{"class":3998,"line":29474},339,[3996,29476,28517],{"class":4081},[3996,29478,29480],{"class":3998,"line":29479},340,[3996,29481,27680],{"class":4002},[3996,29483,29485],{"class":3998,"line":29484},341,[3996,29486,11266],{"class":4081},[3996,29488,29490,29492],{"class":3998,"line":29489},342,[3996,29491,27247],{"class":4099},[3996,29493,4129],{"class":4002},[3996,29495,29497],{"class":3998,"line":29496},343,[3996,29498,5914],{"class":4081},[3996,29500,29502],{"class":3998,"line":29501},344,[3996,29503,4051],{"emptyLinePlaceholder":4050},[3996,29505,29507,29509,29512],{"class":3998,"line":29506},345,[3996,29508,5780],{"class":4002},[3996,29510,29511],{"class":5783},"\u002F* ——— Button (Pressable-обгортка з shared\u002Fui) ——— *\u002F",[3996,29513,4129],{"class":4002},[3996,29515,29517,29519,29521,29523,29525,29527,29529,29531,29533,29535,29537,29539,29541,29543,29545,29547,29549,29551],{"class":3998,"line":29516},346,[3996,29518,5791],{"class":4081},[3996,29520,11340],{"class":4085},[3996,29522,5637],{"class":4089},[3996,29524,4093],{"class":4006},[3996,29526,4096],{"class":4002},[3996,29528,5812],{"class":4099},[3996,29530,12652],{"class":4064},[3996,29532,16673],{"class":4064},[3996,29534,3821],{"class":4099},[3996,29536,16741],{"class":4064},[3996,29538,3867],{"class":4099},[3996,29540,12052],{"class":4064},[3996,29542,16673],{"class":4064},[3996,29544,3821],{"class":4099},[3996,29546,16741],{"class":4064},[3996,29548,5821],{"class":4099},[3996,29550,4117],{"class":4002},[3996,29552,5924],{"class":4081},[3996,29554,29556,29558],{"class":3998,"line":29555},347,[3996,29557,8031],{"class":4081},[3996,29559,18635],{"class":4085},[3996,29561,29563,29566,29568,29570,29572,29574,29577,29579,29582],{"class":3998,"line":29562},348,[3996,29564,29565],{"class":4089},"            label",[3996,29567,4093],{"class":4006},[3996,29569,4096],{"class":4002},[3996,29571,26264],{"class":4064},[3996,29573,5652],{"class":4006},[3996,29575,29576],{"class":4029}," 'Створюємо…'",[3996,29578,5658],{"class":4006},[3996,29580,29581],{"class":4029}," 'Створити поїздку'",[3996,29583,4129],{"class":4002},[3996,29585,29587,29590,29592,29594,29597,29599,29602,29604],{"class":3998,"line":29586},349,[3996,29588,29589],{"class":4089},"            onPress",[3996,29591,4093],{"class":4006},[3996,29593,4096],{"class":4002},[3996,29595,29596],{"class":4022},"handleSubmit",[3996,29598,4109],{"class":4099},[3996,29600,29601],{"class":4064},"onValid",[3996,29603,4114],{"class":4099},[3996,29605,4129],{"class":4002},[3996,29607,29609,29612,29614,29616,29618],{"class":3998,"line":29608},350,[3996,29610,29611],{"class":4089},"            disabled",[3996,29613,4093],{"class":4006},[3996,29615,4096],{"class":4002},[3996,29617,26264],{"class":4064},[3996,29619,4129],{"class":4002},[3996,29621,29623],{"class":3998,"line":29622},351,[3996,29624,16976],{"class":4081},[3996,29626,29628,29630,29633,29635],{"class":3998,"line":29627},352,[3996,29629,17646],{"class":4002},[3996,29631,29632],{"class":4064},"onCancel",[3996,29634,5652],{"class":4006},[3996,29636,5622],{"class":4099},[3996,29638,29640,29642],{"class":3998,"line":29639},353,[3996,29641,11117],{"class":4081},[3996,29643,18635],{"class":4085},[3996,29645,29647,29649,29651],{"class":3998,"line":29646},354,[3996,29648,27128],{"class":4089},[3996,29650,4093],{"class":4006},[3996,29652,29653],{"class":4029},"\"Скасувати\"\n",[3996,29655,29657,29660,29662],{"class":3998,"line":29656},355,[3996,29658,29659],{"class":4089},"              variant",[3996,29661,4093],{"class":4006},[3996,29663,29664],{"class":4029},"\"secondary\"\n",[3996,29666,29668,29671,29673,29675,29677],{"class":3998,"line":29667},356,[3996,29669,29670],{"class":4089},"              onPress",[3996,29672,4093],{"class":4006},[3996,29674,4096],{"class":4002},[3996,29676,29632],{"class":4064},[3996,29678,4129],{"class":4002},[3996,29680,29682,29685,29687,29689,29691],{"class":3998,"line":29681},357,[3996,29683,29684],{"class":4089},"              disabled",[3996,29686,4093],{"class":4006},[3996,29688,4096],{"class":4002},[3996,29690,26264],{"class":4064},[3996,29692,4129],{"class":4002},[3996,29694,29696],{"class":3998,"line":29695},358,[3996,29697,11266],{"class":4081},[3996,29699,29701,29704,29706],{"class":3998,"line":29700},359,[3996,29702,29703],{"class":4099},"          ) ",[3996,29705,6869],{"class":4006},[3996,29707,16996],{"class":4002},[3996,29709,29711,29713,29715],{"class":3998,"line":29710},360,[3996,29712,8074],{"class":4081},[3996,29714,11340],{"class":4085},[3996,29716,5924],{"class":4081},[3996,29718,29720,29722,29724],{"class":3998,"line":29719},361,[3996,29721,5919],{"class":4081},[3996,29723,12290],{"class":4085},[3996,29725,5924],{"class":4081},[3996,29727,29729,29731,29734],{"class":3998,"line":29728},362,[3996,29730,6003],{"class":4081},[3996,29732,29733],{"class":4085},"KeyboardAvoidingView",[3996,29735,5924],{"class":4081},[3996,29737,29739],{"class":3998,"line":29738},363,[3996,29740,5934],{"class":4006},[3996,29742,29744],{"class":3998,"line":29743},364,[3996,29745,4129],{"class":4006},[3996,29747,29749],{"class":3998,"line":29748},365,[3996,29750,4051],{"emptyLinePlaceholder":4050},[3996,29752,29754,29756,29759,29761,29764,29766,29768,29770,29772],{"class":3998,"line":29753},366,[3996,29755,5582],{"class":4002},[3996,29757,29758],{"class":4022}," daysWord",[3996,29760,4109],{"class":4006},[3996,29762,29763],{"class":4064},"n",[3996,29765,8990],{"class":4006},[3996,29767,22299],{"class":4085},[3996,29769,10540],{"class":4006},[3996,29771,7692],{"class":4085},[3996,29773,7958],{"class":4006},[3996,29775,29777,29779,29782,29784,29787,29789,29792,29794,29796,29799,29802],{"class":3998,"line":29776},367,[3996,29778,5593],{"class":4002},[3996,29780,29781],{"class":4010}," abs",[3996,29783,7937],{"class":4006},[3996,29785,29786],{"class":4064},"Math",[3996,29788,3821],{"class":4006},[3996,29790,29791],{"class":4022},"abs",[3996,29793,4109],{"class":4006},[3996,29795,29763],{"class":4064},[3996,29797,29798],{"class":4006},") % ",[3996,29800,29801],{"class":11033},"100",[3996,29803,4123],{"class":4006},[3996,29805,29807,29809,29812,29814,29816,29819,29821],{"class":3998,"line":29806},368,[3996,29808,5593],{"class":4002},[3996,29810,29811],{"class":4010}," last",[3996,29813,7937],{"class":4006},[3996,29815,29791],{"class":4064},[3996,29817,29818],{"class":4006}," % ",[3996,29820,22753],{"class":11033},[3996,29822,4123],{"class":4006},[3996,29824,29826,29828,29830,29832,29835,29837,29839,29841,29844,29847,29849,29851,29854],{"class":3998,"line":29825},369,[3996,29827,12973],{"class":4057},[3996,29829,4061],{"class":4006},[3996,29831,29791],{"class":4064},[3996,29833,29834],{"class":4006}," > ",[3996,29836,22753],{"class":11033},[3996,29838,23435],{"class":4006},[3996,29840,29791],{"class":4064},[3996,29842,29843],{"class":4006}," \u003C ",[3996,29845,29846],{"class":11033},"20",[3996,29848,8996],{"class":4006},[3996,29850,4140],{"class":4057},[3996,29852,29853],{"class":4029}," 'днів'",[3996,29855,4123],{"class":4006},[3996,29857,29859,29861,29863,29866,29868,29870,29872,29874,29877],{"class":3998,"line":29858},370,[3996,29860,12973],{"class":4057},[3996,29862,4061],{"class":4006},[3996,29864,29865],{"class":4064},"last",[3996,29867,4067],{"class":4006},[3996,29869,22871],{"class":11033},[3996,29871,8996],{"class":4006},[3996,29873,4140],{"class":4057},[3996,29875,29876],{"class":4029}," 'день'",[3996,29878,4123],{"class":4006},[3996,29880,29882,29884,29886,29888,29891,29893,29895,29897,29900,29902,29904,29906,29909],{"class":3998,"line":29881},371,[3996,29883,12973],{"class":4057},[3996,29885,4061],{"class":4006},[3996,29887,29865],{"class":4064},[3996,29889,29890],{"class":4006}," >= ",[3996,29892,19532],{"class":11033},[3996,29894,23435],{"class":4006},[3996,29896,29865],{"class":4064},[3996,29898,29899],{"class":4006}," \u003C= ",[3996,29901,28177],{"class":11033},[3996,29903,8996],{"class":4006},[3996,29905,4140],{"class":4057},[3996,29907,29908],{"class":4029}," 'дні'",[3996,29910,4123],{"class":4006},[3996,29912,29914,29916,29918],{"class":3998,"line":29913},372,[3996,29915,4078],{"class":4057},[3996,29917,29853],{"class":4029},[3996,29919,4123],{"class":4006},[3996,29921,29923],{"class":3998,"line":29922},373,[3996,29924,4129],{"class":4006},[3996,29926,29928],{"class":3998,"line":29927},374,[3996,29929,4051],{"emptyLinePlaceholder":4050},[3996,29931,29933,29935,29937,29939,29941,29943,29945],{"class":3998,"line":29932},375,[3996,29934,4003],{"class":4002},[3996,29936,11925],{"class":4010},[3996,29938,7937],{"class":4006},[3996,29940,8741],{"class":4064},[3996,29942,3821],{"class":4006},[3996,29944,11934],{"class":4022},[3996,29946,7971],{"class":4006},[3996,29948,29950,29953],{"class":3998,"line":29949},376,[3996,29951,29952],{"class":4064},"  flex:",[3996,29954,7958],{"class":4006},[3996,29956,29958,29960,29962],{"class":3998,"line":29957},377,[3996,29959,13419],{"class":4064},[3996,29961,11949],{"class":11033},[3996,29963,5720],{"class":4006},[3996,29965,29967],{"class":3998,"line":29966},378,[3996,29968,10287],{"class":4006},[3996,29970,29972,29975],{"class":3998,"line":29971},379,[3996,29973,29974],{"class":4064},"  content:",[3996,29976,7958],{"class":4006},[3996,29978,29980,29983,29985],{"class":3998,"line":29979},380,[3996,29981,29982],{"class":4064},"    flexGrow:",[3996,29984,11949],{"class":11033},[3996,29986,5720],{"class":4006},[3996,29988,29990],{"class":3998,"line":29989},381,[3996,29991,10287],{"class":4006},[3996,29993,29995,29998],{"class":3998,"line":29994},382,[3996,29996,29997],{"class":4064},"  multiline:",[3996,29999,7958],{"class":4006},[3996,30001,30003,30006,30009],{"class":3998,"line":30002},383,[3996,30004,30005],{"class":4064},"    minHeight:",[3996,30007,30008],{"class":11033}," 110",[3996,30010,5720],{"class":4006},[3996,30012,30014],{"class":3998,"line":30013},384,[3996,30015,10287],{"class":4006},[3996,30017,30019,30022],{"class":3998,"line":30018},385,[3996,30020,30021],{"class":4064},"  pickerWrap:",[3996,30023,7958],{"class":4006},[3996,30025,30027,30029,30031],{"class":3998,"line":30026},386,[3996,30028,12123],{"class":4064},[3996,30030,11949],{"class":11033},[3996,30032,5720],{"class":4006},[3996,30034,30036,30039,30042],{"class":3998,"line":30035},387,[3996,30037,30038],{"class":4064},"    overflow:",[3996,30040,30041],{"class":4029}," 'hidden'",[3996,30043,5720],{"class":4006},[3996,30045,30047],{"class":3998,"line":30046},388,[3996,30048,10287],{"class":4006},[3996,30050,30052],{"class":3998,"line":30051},389,[3996,30053,12261],{"class":4006},[3987,30055,30058],{"className":3989,"code":30056,"filename":30057,"language":3991,"meta":3992,"style":3992},"import { useState } from 'react';\nimport {\n  Modal,\n  Platform,\n  Pressable,\n  StyleSheet,\n  View,\n} from 'react-native';\nimport DateTimePicker, {\n  type DateTimePickerEvent,\n} from '@react-native-community\u002Fdatetimepicker';\n\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\nimport { AppText, Button } from '@\u002Fshared\u002Fui';\n\ntype DateFieldProps = {\n  label: string;\n  value: Date;\n  onChange: (date: Date) => void;\n  onBlur?: () => void;\n  error?: string;\n  \u002F** Мінімальна дата (наприклад, endDate ≥ startDate). *\u002F\n  minimumDate?: Date;\n  maximumDate?: Date;\n};\n\n\u002F**\n * Поле дати: натискання відкриває системний date picker.\n * iOS — spinner у Modal; Android — нативний діалог.\n *\u002F\nexport function DateField({\n  label,\n  value,\n  onChange,\n  onBlur,\n  error,\n  minimumDate,\n  maximumDate,\n}: DateFieldProps) {\n  const { colors, spacing, radius } = useTheme();\n  const [open, setOpen] = useState(false);\n  \u002F** Тимчасове значення на iOS, поки користувач крутить spinner. *\u002F\n  const [draft, setDraft] = useState(value);\n\n  const hasError = Boolean(error);\n\n  const openPicker = () => {\n    setDraft(value);\n    setOpen(true);\n  };\n\n  const closePicker = () => {\n    setOpen(false);\n    onBlur?.();\n  };\n\n  const applyIos = () => {\n    onChange(draft);\n    closePicker();\n  };\n\n  const onAndroidChange = (event: DateTimePickerEvent, selected?: Date) => {\n    \u002F\u002F Android закриває діалог сам; event.type: set | dismissed\n    setOpen(false);\n    if (event.type === 'set' && selected) {\n      onChange(selected);\n    }\n    onBlur?.();\n  };\n\n  const onIosChange = (_event: DateTimePickerEvent, selected?: Date) => {\n    if (selected) {\n      setDraft(selected);\n    }\n  };\n\n  const display = formatDisplay(value);\n\n  return (\n    \u003CView style={{ gap: spacing.xs }}>\n      \u003CAppText variant=\"caption\" style={styles.label}>\n        {label}\n      \u003C\u002FAppText>\n      \u003CPressable\n        accessibilityRole=\"button\"\n        accessibilityLabel={`${label}: ${display}`}\n        onPress={openPicker}\n        style={[\n          styles.field,\n          {\n            borderColor: hasError ? colors.danger : colors.border,\n            backgroundColor: colors.surface,\n            borderRadius: radius.md,\n            paddingVertical: spacing.sm + 4,\n            paddingHorizontal: spacing.md,\n          },\n        ]}\n      >\n        \u003CAppText>{display}\u003C\u002FAppText>\n      \u003C\u002FPressable>\n      {hasError ? (\n        \u003CAppText variant=\"caption\" color={colors.danger}>\n          {error}\n        \u003C\u002FAppText>\n      ) : null}\n\n      {\u002F* Android: системний діалог; iOS\u002Fweb: spinner у Modal *\u002F}\n      {Platform.OS === 'android' && open ? (\n        \u003CDateTimePicker\n          value={value}\n          mode=\"date\"\n          display=\"default\"\n          onChange={onAndroidChange}\n          minimumDate={minimumDate}\n          maximumDate={maximumDate}\n        \u002F>\n      ) : null}\n\n      {Platform.OS !== 'android' ? (\n        \u003CModal\n          visible={open}\n          transparent\n          animationType=\"slide\"\n          onRequestClose={closePicker}\n        >\n          \u003CPressable style={styles.backdrop} onPress={closePicker} \u002F>\n          \u003CView\n            style={[\n              styles.sheet,\n              {\n                backgroundColor: colors.surface,\n                borderColor: colors.border,\n                paddingBottom: spacing.lg,\n              },\n            ]}\n          >\n            \u003CView\n              style={[\n                styles.sheetHeader,\n                { paddingHorizontal: spacing.md, paddingTop: spacing.md },\n              ]}\n            >\n              \u003CAppText variant=\"subtitle\">{label}\u003C\u002FAppText>\n            \u003C\u002FView>\n            \u003CDateTimePicker\n              value={draft}\n              mode=\"date\"\n              display=\"spinner\"\n              onChange={onIosChange}\n              minimumDate={minimumDate}\n              maximumDate={maximumDate}\n              style={{ alignSelf: 'center' }}\n            \u002F>\n            \u003CView\n              style={[\n                styles.sheetActions,\n                { paddingHorizontal: spacing.md, gap: spacing.sm },\n              ]}\n            >\n              \u003CButton label=\"Готово\" onPress={applyIos} \u002F>\n              \u003CPressable onPress={closePicker} style={styles.cancel}>\n                \u003CAppText color={colors.textSecondary}>Скасувати\u003C\u002FAppText>\n              \u003C\u002FPressable>\n            \u003C\u002FView>\n          \u003C\u002FView>\n        \u003C\u002FModal>\n      ) : null}\n    \u003C\u002FView>\n  );\n}\n\nfunction formatDisplay(d: Date): string {\n  const dd = String(d.getDate()).padStart(2, '0');\n  const mm = String(d.getMonth() + 1).padStart(2, '0');\n  const yyyy = d.getFullYear();\n  return `${dd}.${mm}.${yyyy}`;\n}\n\nconst styles = StyleSheet.create({\n  label: {\n    fontWeight: '600',\n  },\n  field: {\n    borderWidth: 1,\n    minHeight: 48,\n    justifyContent: 'center',\n  },\n  backdrop: {\n    flex: 1,\n    backgroundColor: 'rgba(0,0,0,0.35)',\n  },\n  sheet: {\n    borderTopLeftRadius: 16,\n    borderTopRightRadius: 16,\n    borderTopWidth: 1,\n  },\n  sheetHeader: {\n    alignItems: 'center',\n  },\n  sheetActions: {\n    marginTop: 8,\n  },\n  cancel: {\n    alignItems: 'center',\n    paddingVertical: 10,\n  },\n});\n","src\u002Ffeatures\u002Ftrips\u002Fui\u002FDateField.tsx",[3747,30059,30060,30076,30082,30089,30095,30101,30107,30113,30123,30132,30141,30152,30156,30172,30192,30196,30205,30216,30227,30248,30261,30272,30277,30288,30299,30303,30307,30311,30316,30321,30325,30336,30342,30348,30354,30360,30366,30372,30378,30387,30409,30433,30438,30462,30466,30484,30488,30502,30513,30524,30528,30532,30545,30555,30563,30567,30571,30584,30595,30602,30606,30610,30642,30647,30657,30680,30691,30695,30701,30705,30709,30739,30749,30760,30764,30768,30772,30790,30794,30800,30828,30856,30864,30872,30878,30887,30917,30931,30941,30951,30955,30981,30993,31006,31023,31035,31039,31045,31049,31069,31077,31088,31116,31124,31132,31140,31144,31153,31178,31185,31198,31208,31218,31232,31246,31260,31264,31272,31276,31295,31302,31315,31320,31330,31344,31348,31381,31387,31398,31410,31415,31428,31441,31455,31460,31467,31472,31478,31488,31499,31526,31532,31536,31562,31570,31576,31588,31597,31607,31620,31632,31645,31664,31668,31674,31684,31695,31719,31725,31729,31756,31789,31820,31828,31836,31844,31853,31861,31869,31873,31877,31881,31902,31938,31975,31992,32027,32031,32035,32051,32058,32066,32070,32077,32085,32094,32102,32106,32113,32121,32130,32134,32141,32150,32159,32167,32171,32178,32186,32190,32197,32205,32209,32216,32224,32232,32236],{"__ignoreMap":3992},[3996,30061,30062,30064,30066,30068,30070,30072,30074],{"class":3998,"line":3999},[3996,30063,5501],{"class":4057},[3996,30065,5504],{"class":4006},[3996,30067,4023],{"class":4064},[3996,30069,5509],{"class":4006},[3996,30071,5512],{"class":4057},[3996,30073,7869],{"class":4029},[3996,30075,4123],{"class":4006},[3996,30077,30078,30080],{"class":3998,"line":4047},[3996,30079,5501],{"class":4057},[3996,30081,7958],{"class":4006},[3996,30083,30084,30087],{"class":3998,"line":4054},[3996,30085,30086],{"class":4064},"  Modal",[3996,30088,5720],{"class":4006},[3996,30090,30091,30093],{"class":3998,"line":4075},[3996,30092,25685],{"class":4064},[3996,30094,5720],{"class":4006},[3996,30096,30097,30099],{"class":3998,"line":4126},[3996,30098,15884],{"class":4064},[3996,30100,5720],{"class":4006},[3996,30102,30103,30105],{"class":3998,"line":4132},[3996,30104,15898],{"class":4064},[3996,30106,5720],{"class":4006},[3996,30108,30109,30111],{"class":3998,"line":4137},[3996,30110,15905],{"class":4064},[3996,30112,5720],{"class":4006},[3996,30114,30115,30117,30119,30121],{"class":3998,"line":4275},[3996,30116,15912],{"class":4006},[3996,30118,5512],{"class":4057},[3996,30120,7908],{"class":4029},[3996,30122,4123],{"class":4006},[3996,30124,30125,30127,30130],{"class":3998,"line":4281},[3996,30126,5501],{"class":4057},[3996,30128,30129],{"class":4064}," DateTimePicker",[3996,30131,22704],{"class":4006},[3996,30133,30134,30136,30139],{"class":3998,"line":4287},[3996,30135,15995],{"class":4057},[3996,30137,30138],{"class":4064}," DateTimePickerEvent",[3996,30140,5720],{"class":4006},[3996,30142,30143,30145,30147,30150],{"class":3998,"line":4293},[3996,30144,15912],{"class":4006},[3996,30146,5512],{"class":4057},[3996,30148,30149],{"class":4029}," '@react-native-community\u002Fdatetimepicker'",[3996,30151,4123],{"class":4006},[3996,30153,30154],{"class":3998,"line":4299},[3996,30155,4051],{"emptyLinePlaceholder":4050},[3996,30157,30158,30160,30162,30164,30166,30168,30170],{"class":3998,"line":4305},[3996,30159,5501],{"class":4057},[3996,30161,5504],{"class":4006},[3996,30163,5564],{"class":4064},[3996,30165,5509],{"class":4006},[3996,30167,5512],{"class":4057},[3996,30169,5571],{"class":4029},[3996,30171,4123],{"class":4006},[3996,30173,30174,30176,30178,30180,30182,30184,30186,30188,30190],{"class":3998,"line":4311},[3996,30175,5501],{"class":4057},[3996,30177,5504],{"class":4006},[3996,30179,16052],{"class":4064},[3996,30181,3867],{"class":4006},[3996,30183,16057],{"class":4064},[3996,30185,5509],{"class":4006},[3996,30187,5512],{"class":4057},[3996,30189,16068],{"class":4029},[3996,30191,4123],{"class":4006},[3996,30193,30194],{"class":3998,"line":4317},[3996,30195,4051],{"emptyLinePlaceholder":4050},[3996,30197,30198,30200,30203],{"class":3998,"line":4323},[3996,30199,16032],{"class":4002},[3996,30201,30202],{"class":4085}," DateFieldProps",[3996,30204,10144],{"class":4006},[3996,30206,30207,30210,30212,30214],{"class":3998,"line":4329},[3996,30208,30209],{"class":4064},"  label",[3996,30211,8990],{"class":4006},[3996,30213,7692],{"class":4085},[3996,30215,4123],{"class":4006},[3996,30217,30218,30221,30223,30225],{"class":3998,"line":4335},[3996,30219,30220],{"class":4064},"  value",[3996,30222,8990],{"class":4006},[3996,30224,23203],{"class":4085},[3996,30226,4123],{"class":4006},[3996,30228,30229,30232,30234,30236,30238,30240,30242,30244,30246],{"class":3998,"line":4341},[3996,30230,30231],{"class":4022},"  onChange",[3996,30233,23804],{"class":4006},[3996,30235,22790],{"class":4064},[3996,30237,8990],{"class":4006},[3996,30239,23203],{"class":4085},[3996,30241,8996],{"class":4006},[3996,30243,4103],{"class":4002},[3996,30245,23817],{"class":4085},[3996,30247,4123],{"class":4006},[3996,30249,30250,30253,30255,30257,30259],{"class":3998,"line":4347},[3996,30251,30252],{"class":4022},"  onBlur",[3996,30254,26003],{"class":4006},[3996,30256,4103],{"class":4002},[3996,30258,23817],{"class":4085},[3996,30260,4123],{"class":4006},[3996,30262,30263,30266,30268,30270],{"class":3998,"line":4352},[3996,30264,30265],{"class":4064},"  error",[3996,30267,22280],{"class":4006},[3996,30269,7692],{"class":4085},[3996,30271,4123],{"class":4006},[3996,30273,30274],{"class":3998,"line":4357},[3996,30275,30276],{"class":5783},"  \u002F** Мінімальна дата (наприклад, endDate ≥ startDate). *\u002F\n",[3996,30278,30279,30282,30284,30286],{"class":3998,"line":4363},[3996,30280,30281],{"class":4064},"  minimumDate",[3996,30283,22280],{"class":4006},[3996,30285,23203],{"class":4085},[3996,30287,4123],{"class":4006},[3996,30289,30290,30293,30295,30297],{"class":3998,"line":4369},[3996,30291,30292],{"class":4064},"  maximumDate",[3996,30294,22280],{"class":4006},[3996,30296,23203],{"class":4085},[3996,30298,4123],{"class":4006},[3996,30300,30301],{"class":3998,"line":4375},[3996,30302,10203],{"class":4006},[3996,30304,30305],{"class":3998,"line":4381},[3996,30306,4051],{"emptyLinePlaceholder":4050},[3996,30308,30309],{"class":3998,"line":4387},[3996,30310,14911],{"class":5783},[3996,30312,30313],{"class":3998,"line":4392},[3996,30314,30315],{"class":5783}," * Поле дати: натискання відкриває системний date picker.\n",[3996,30317,30318],{"class":3998,"line":4398},[3996,30319,30320],{"class":5783}," * iOS — spinner у Modal; Android — нативний діалог.\n",[3996,30322,30323],{"class":3998,"line":4404},[3996,30324,14926],{"class":5783},[3996,30326,30327,30329,30331,30334],{"class":3998,"line":4410},[3996,30328,5947],{"class":4057},[3996,30330,5953],{"class":4002},[3996,30332,30333],{"class":4022}," DateField",[3996,30335,7971],{"class":4006},[3996,30337,30338,30340],{"class":3998,"line":4415},[3996,30339,30209],{"class":4064},[3996,30341,5720],{"class":4006},[3996,30343,30344,30346],{"class":3998,"line":4420},[3996,30345,30220],{"class":4064},[3996,30347,5720],{"class":4006},[3996,30349,30350,30352],{"class":3998,"line":4426},[3996,30351,30231],{"class":4064},[3996,30353,5720],{"class":4006},[3996,30355,30356,30358],{"class":3998,"line":4432},[3996,30357,30252],{"class":4064},[3996,30359,5720],{"class":4006},[3996,30361,30362,30364],{"class":3998,"line":4438},[3996,30363,30265],{"class":4064},[3996,30365,5720],{"class":4006},[3996,30367,30368,30370],{"class":3998,"line":4443},[3996,30369,30281],{"class":4064},[3996,30371,5720],{"class":4006},[3996,30373,30374,30376],{"class":3998,"line":4448},[3996,30375,30292],{"class":4064},[3996,30377,5720],{"class":4006},[3996,30379,30380,30382,30385],{"class":3998,"line":4454},[3996,30381,26227],{"class":4006},[3996,30383,30384],{"class":4085},"DateFieldProps",[3996,30386,4072],{"class":4006},[3996,30388,30389,30391,30393,30395,30397,30399,30401,30403,30405,30407],{"class":3998,"line":4460},[3996,30390,5593],{"class":4002},[3996,30392,5504],{"class":4006},[3996,30394,5598],{"class":4010},[3996,30396,3867],{"class":4006},[3996,30398,16226],{"class":4010},[3996,30400,3867],{"class":4006},[3996,30402,26249],{"class":4010},[3996,30404,5606],{"class":4006},[3996,30406,5564],{"class":4022},[3996,30408,5611],{"class":4006},[3996,30410,30411,30413,30415,30418,30420,30423,30425,30427,30429,30431],{"class":3998,"line":4466},[3996,30412,5593],{"class":4002},[3996,30414,4007],{"class":4006},[3996,30416,30417],{"class":4010},"open",[3996,30419,3867],{"class":4006},[3996,30421,30422],{"class":4010},"setOpen",[3996,30424,4019],{"class":4006},[3996,30426,4023],{"class":4022},[3996,30428,4109],{"class":4006},[3996,30430,6495],{"class":4002},[3996,30432,4044],{"class":4006},[3996,30434,30435],{"class":3998,"line":4472},[3996,30436,30437],{"class":5783},"  \u002F** Тимчасове значення на iOS, поки користувач крутить spinner. *\u002F\n",[3996,30439,30440,30442,30444,30447,30449,30452,30454,30456,30458,30460],{"class":3998,"line":4477},[3996,30441,5593],{"class":4002},[3996,30443,4007],{"class":4006},[3996,30445,30446],{"class":4010},"draft",[3996,30448,3867],{"class":4006},[3996,30450,30451],{"class":4010},"setDraft",[3996,30453,4019],{"class":4006},[3996,30455,4023],{"class":4022},[3996,30457,4109],{"class":4006},[3996,30459,24141],{"class":4064},[3996,30461,4044],{"class":4006},[3996,30463,30464],{"class":3998,"line":5066},[3996,30465,4051],{"emptyLinePlaceholder":4050},[3996,30467,30468,30470,30473,30475,30477,30479,30482],{"class":3998,"line":5072},[3996,30469,5593],{"class":4002},[3996,30471,30472],{"class":4010}," hasError",[3996,30474,7937],{"class":4006},[3996,30476,29346],{"class":4022},[3996,30478,4109],{"class":4006},[3996,30480,30481],{"class":4064},"error",[3996,30483,4044],{"class":4006},[3996,30485,30486],{"class":3998,"line":5078},[3996,30487,4051],{"emptyLinePlaceholder":4050},[3996,30489,30490,30492,30495,30498,30500],{"class":3998,"line":5084},[3996,30491,5593],{"class":4002},[3996,30493,30494],{"class":4022}," openPicker",[3996,30496,30497],{"class":4006}," = () ",[3996,30499,4103],{"class":4002},[3996,30501,7958],{"class":4006},[3996,30503,30504,30507,30509,30511],{"class":3998,"line":5090},[3996,30505,30506],{"class":4022},"    setDraft",[3996,30508,4109],{"class":4006},[3996,30510,24141],{"class":4064},[3996,30512,4044],{"class":4006},[3996,30514,30515,30518,30520,30522],{"class":3998,"line":5096},[3996,30516,30517],{"class":4022},"    setOpen",[3996,30519,4109],{"class":4006},[3996,30521,7184],{"class":4002},[3996,30523,4044],{"class":4006},[3996,30525,30526],{"class":3998,"line":10510},[3996,30527,9091],{"class":4006},[3996,30529,30530],{"class":3998,"line":10516},[3996,30531,4051],{"emptyLinePlaceholder":4050},[3996,30533,30534,30536,30539,30541,30543],{"class":3998,"line":10521},[3996,30535,5593],{"class":4002},[3996,30537,30538],{"class":4022}," closePicker",[3996,30540,30497],{"class":4006},[3996,30542,4103],{"class":4002},[3996,30544,7958],{"class":4006},[3996,30546,30547,30549,30551,30553],{"class":3998,"line":10552},[3996,30548,30517],{"class":4022},[3996,30550,4109],{"class":4006},[3996,30552,6495],{"class":4002},[3996,30554,4044],{"class":4006},[3996,30556,30557,30560],{"class":3998,"line":10587},[3996,30558,30559],{"class":4022},"    onBlur",[3996,30561,30562],{"class":4006},"?.();\n",[3996,30564,30565],{"class":3998,"line":12205},[3996,30566,9091],{"class":4006},[3996,30568,30569],{"class":3998,"line":12213},[3996,30570,4051],{"emptyLinePlaceholder":4050},[3996,30572,30573,30575,30578,30580,30582],{"class":3998,"line":12223},[3996,30574,5593],{"class":4002},[3996,30576,30577],{"class":4022}," applyIos",[3996,30579,30497],{"class":4006},[3996,30581,4103],{"class":4002},[3996,30583,7958],{"class":4006},[3996,30585,30586,30589,30591,30593],{"class":3998,"line":12233},[3996,30587,30588],{"class":4022},"    onChange",[3996,30590,4109],{"class":4006},[3996,30592,30446],{"class":4064},[3996,30594,4044],{"class":4006},[3996,30596,30597,30600],{"class":3998,"line":12243},[3996,30598,30599],{"class":4022},"    closePicker",[3996,30601,5611],{"class":4006},[3996,30603,30604],{"class":3998,"line":12253},[3996,30605,9091],{"class":4006},[3996,30607,30608],{"class":3998,"line":12258},[3996,30609,4051],{"emptyLinePlaceholder":4050},[3996,30611,30612,30614,30617,30619,30622,30624,30627,30629,30632,30634,30636,30638,30640],{"class":3998,"line":16645},[3996,30613,5593],{"class":4002},[3996,30615,30616],{"class":4022}," onAndroidChange",[3996,30618,22483],{"class":4006},[3996,30620,30621],{"class":4064},"event",[3996,30623,8990],{"class":4006},[3996,30625,30626],{"class":4085},"DateTimePickerEvent",[3996,30628,3867],{"class":4006},[3996,30630,30631],{"class":4064},"selected",[3996,30633,22280],{"class":4006},[3996,30635,23203],{"class":4085},[3996,30637,8996],{"class":4006},[3996,30639,4103],{"class":4002},[3996,30641,7958],{"class":4006},[3996,30643,30644],{"class":3998,"line":16656},[3996,30645,30646],{"class":5783},"    \u002F\u002F Android закриває діалог сам; event.type: set | dismissed\n",[3996,30648,30649,30651,30653,30655],{"class":3998,"line":16698},[3996,30650,30517],{"class":4022},[3996,30652,4109],{"class":4006},[3996,30654,6495],{"class":4002},[3996,30656,4044],{"class":4006},[3996,30658,30659,30661,30663,30665,30667,30669,30671,30674,30676,30678],{"class":3998,"line":16720},[3996,30660,9034],{"class":4057},[3996,30662,4061],{"class":4006},[3996,30664,30621],{"class":4064},[3996,30666,3821],{"class":4006},[3996,30668,16032],{"class":4064},[3996,30670,4067],{"class":4006},[3996,30672,30673],{"class":4029},"'set'",[3996,30675,23435],{"class":4006},[3996,30677,30631],{"class":4064},[3996,30679,4072],{"class":4006},[3996,30681,30682,30685,30687,30689],{"class":3998,"line":16750},[3996,30683,30684],{"class":4022},"      onChange",[3996,30686,4109],{"class":4006},[3996,30688,30631],{"class":4064},[3996,30690,4044],{"class":4006},[3996,30692,30693],{"class":3998,"line":16784},[3996,30694,5379],{"class":4006},[3996,30696,30697,30699],{"class":3998,"line":16791},[3996,30698,30559],{"class":4022},[3996,30700,30562],{"class":4006},[3996,30702,30703],{"class":3998,"line":16797},[3996,30704,9091],{"class":4006},[3996,30706,30707],{"class":3998,"line":16811},[3996,30708,4051],{"emptyLinePlaceholder":4050},[3996,30710,30711,30713,30716,30718,30721,30723,30725,30727,30729,30731,30733,30735,30737],{"class":3998,"line":16837},[3996,30712,5593],{"class":4002},[3996,30714,30715],{"class":4022}," onIosChange",[3996,30717,22483],{"class":4006},[3996,30719,30720],{"class":4064},"_event",[3996,30722,8990],{"class":4006},[3996,30724,30626],{"class":4085},[3996,30726,3867],{"class":4006},[3996,30728,30631],{"class":4064},[3996,30730,22280],{"class":4006},[3996,30732,23203],{"class":4085},[3996,30734,8996],{"class":4006},[3996,30736,4103],{"class":4002},[3996,30738,7958],{"class":4006},[3996,30740,30741,30743,30745,30747],{"class":3998,"line":16857},[3996,30742,9034],{"class":4057},[3996,30744,4061],{"class":4006},[3996,30746,30631],{"class":4064},[3996,30748,4072],{"class":4006},[3996,30750,30751,30754,30756,30758],{"class":3998,"line":16889},[3996,30752,30753],{"class":4022},"      setDraft",[3996,30755,4109],{"class":4006},[3996,30757,30631],{"class":4064},[3996,30759,4044],{"class":4006},[3996,30761,30762],{"class":3998,"line":16897},[3996,30763,5379],{"class":4006},[3996,30765,30766],{"class":3998,"line":16908},[3996,30767,9091],{"class":4006},[3996,30769,30770],{"class":3998,"line":16951},[3996,30771,4051],{"emptyLinePlaceholder":4050},[3996,30773,30774,30776,30779,30781,30784,30786,30788],{"class":3998,"line":16973},[3996,30775,5593],{"class":4002},[3996,30777,30778],{"class":4010}," display",[3996,30780,7937],{"class":4006},[3996,30782,30783],{"class":4022},"formatDisplay",[3996,30785,4109],{"class":4006},[3996,30787,24141],{"class":4064},[3996,30789,4044],{"class":4006},[3996,30791,30792],{"class":3998,"line":16979},[3996,30793,4051],{"emptyLinePlaceholder":4050},[3996,30795,30796,30798],{"class":3998,"line":16988},[3996,30797,4078],{"class":4057},[3996,30799,5622],{"class":4006},[3996,30801,30802,30804,30806,30808,30810,30812,30814,30816,30818,30820,30822,30824,30826],{"class":3998,"line":16999},[3996,30803,5969],{"class":4081},[3996,30805,11340],{"class":4085},[3996,30807,5637],{"class":4089},[3996,30809,4093],{"class":4006},[3996,30811,4096],{"class":4002},[3996,30813,5812],{"class":4099},[3996,30815,12652],{"class":4064},[3996,30817,16673],{"class":4064},[3996,30819,3821],{"class":4099},[3996,30821,17429],{"class":4064},[3996,30823,5821],{"class":4099},[3996,30825,4117],{"class":4002},[3996,30827,5924],{"class":4081},[3996,30829,30830,30832,30834,30836,30838,30840,30842,30844,30846,30848,30850,30852,30854],{"class":3998,"line":17004},[3996,30831,5632],{"class":4081},[3996,30833,16052],{"class":4085},[3996,30835,17175],{"class":4089},[3996,30837,4093],{"class":4006},[3996,30839,17503],{"class":4029},[3996,30841,5637],{"class":4089},[3996,30843,4093],{"class":4006},[3996,30845,4096],{"class":4002},[3996,30847,8789],{"class":4064},[3996,30849,3821],{"class":4099},[3996,30851,16097],{"class":4064},[3996,30853,4117],{"class":4002},[3996,30855,5924],{"class":4081},[3996,30857,30858,30860,30862],{"class":3998,"line":17038},[3996,30859,5780],{"class":4002},[3996,30861,16097],{"class":4064},[3996,30863,4129],{"class":4002},[3996,30865,30866,30868,30870],{"class":3998,"line":17047},[3996,30867,5919],{"class":4081},[3996,30869,16052],{"class":4085},[3996,30871,5924],{"class":4081},[3996,30873,30874,30876],{"class":3998,"line":17052},[3996,30875,5632],{"class":4081},[3996,30877,17832],{"class":4085},[3996,30879,30880,30883,30885],{"class":3998,"line":17057},[3996,30881,30882],{"class":4089},"        accessibilityRole",[3996,30884,4093],{"class":4006},[3996,30886,17976],{"class":4029},[3996,30888,30889,30892,30894,30896,30898,30900,30902,30904,30906,30908,30911,30913,30915],{"class":3998,"line":17067},[3996,30890,30891],{"class":4089},"        accessibilityLabel",[3996,30893,4093],{"class":4006},[3996,30895,4096],{"class":4002},[3996,30897,11728],{"class":4029},[3996,30899,11717],{"class":4002},[3996,30901,16097],{"class":4064},[3996,30903,4117],{"class":4002},[3996,30905,8990],{"class":4029},[3996,30907,11717],{"class":4002},[3996,30909,30910],{"class":4064},"display",[3996,30912,4117],{"class":4002},[3996,30914,11728],{"class":4029},[3996,30916,4129],{"class":4002},[3996,30918,30919,30922,30924,30926,30929],{"class":3998,"line":17075},[3996,30920,30921],{"class":4089},"        onPress",[3996,30923,4093],{"class":4006},[3996,30925,4096],{"class":4002},[3996,30927,30928],{"class":4064},"openPicker",[3996,30930,4129],{"class":4002},[3996,30932,30933,30935,30937,30939],{"class":3998,"line":17088},[3996,30934,17255],{"class":4089},[3996,30936,4093],{"class":4006},[3996,30938,4096],{"class":4002},[3996,30940,17085],{"class":4099},[3996,30942,30943,30945,30947,30949],{"class":3998,"line":17101},[3996,30944,17362],{"class":4064},[3996,30946,3821],{"class":4099},[3996,30948,5456],{"class":4064},[3996,30950,5720],{"class":4099},[3996,30952,30953],{"class":3998,"line":17107},[3996,30954,17374],{"class":4099},[3996,30956,30957,30960,30962,30964,30966,30968,30971,30973,30975,30977,30979],{"class":3998,"line":17121},[3996,30958,30959],{"class":4064},"            borderColor:",[3996,30961,30472],{"class":4064},[3996,30963,5652],{"class":4006},[3996,30965,5697],{"class":4064},[3996,30967,3821],{"class":4099},[3996,30969,30970],{"class":4064},"danger",[3996,30972,5658],{"class":4006},[3996,30974,5697],{"class":4064},[3996,30976,3821],{"class":4099},[3996,30978,15476],{"class":4064},[3996,30980,5720],{"class":4099},[3996,30982,30983,30985,30987,30989,30991],{"class":3998,"line":17136},[3996,30984,18602],{"class":4064},[3996,30986,5697],{"class":4064},[3996,30988,3821],{"class":4099},[3996,30990,17935],{"class":4064},[3996,30992,5720],{"class":4099},[3996,30994,30995,30998,31000,31002,31004],{"class":3998,"line":17150},[3996,30996,30997],{"class":4064},"            borderRadius:",[3996,30999,27467],{"class":4064},[3996,31001,3821],{"class":4099},[3996,31003,16678],{"class":4064},[3996,31005,5720],{"class":4099},[3996,31007,31008,31011,31013,31015,31017,31019,31021],{"class":3998,"line":17155},[3996,31009,31010],{"class":4064},"            paddingVertical:",[3996,31012,16673],{"class":4064},[3996,31014,3821],{"class":4099},[3996,31016,16741],{"class":4064},[3996,31018,21279],{"class":4006},[3996,31020,12055],{"class":11033},[3996,31022,5720],{"class":4099},[3996,31024,31025,31027,31029,31031,31033],{"class":3998,"line":17163},[3996,31026,17380],{"class":4064},[3996,31028,16673],{"class":4064},[3996,31030,3821],{"class":4099},[3996,31032,16678],{"class":4064},[3996,31034,5720],{"class":4099},[3996,31036,31037],{"class":3998,"line":17168},[3996,31038,17451],{"class":4099},[3996,31040,31041,31043],{"class":3998,"line":17200},[3996,31042,17457],{"class":4099},[3996,31044,4129],{"class":4002},[3996,31046,31047],{"class":3998,"line":17206},[3996,31048,5775],{"class":4081},[3996,31050,31051,31053,31055,31057,31059,31061,31063,31065,31067],{"class":3998,"line":17215},[3996,31052,5791],{"class":4081},[3996,31054,16052],{"class":4085},[3996,31056,8059],{"class":4081},[3996,31058,4096],{"class":4002},[3996,31060,30910],{"class":4064},[3996,31062,4117],{"class":4002},[3996,31064,8065],{"class":4081},[3996,31066,16052],{"class":4085},[3996,31068,5924],{"class":4081},[3996,31070,31071,31073,31075],{"class":3998,"line":17223},[3996,31072,5919],{"class":4081},[3996,31074,7896],{"class":4085},[3996,31076,5924],{"class":4081},[3996,31078,31079,31081,31084,31086],{"class":3998,"line":17234},[3996,31080,16701],{"class":4002},[3996,31082,31083],{"class":4064},"hasError",[3996,31085,5652],{"class":4006},[3996,31087,5622],{"class":4099},[3996,31089,31090,31092,31094,31096,31098,31100,31102,31104,31106,31108,31110,31112,31114],{"class":3998,"line":17252},[3996,31091,5791],{"class":4081},[3996,31093,16052],{"class":4085},[3996,31095,17175],{"class":4089},[3996,31097,4093],{"class":4006},[3996,31099,17503],{"class":4029},[3996,31101,6913],{"class":4089},[3996,31103,4093],{"class":4006},[3996,31105,4096],{"class":4002},[3996,31107,5598],{"class":4064},[3996,31109,3821],{"class":4099},[3996,31111,30970],{"class":4064},[3996,31113,4117],{"class":4002},[3996,31115,5924],{"class":4081},[3996,31117,31118,31120,31122],{"class":3998,"line":17271},[3996,31119,17646],{"class":4002},[3996,31121,30481],{"class":4064},[3996,31123,4129],{"class":4002},[3996,31125,31126,31128,31130],{"class":3998,"line":17276},[3996,31127,8074],{"class":4081},[3996,31129,16052],{"class":4085},[3996,31131,5924],{"class":4081},[3996,31133,31134,31136,31138],{"class":3998,"line":17282},[3996,31135,16991],{"class":4099},[3996,31137,6869],{"class":4006},[3996,31139,16996],{"class":4002},[3996,31141,31142],{"class":3998,"line":17291},[3996,31143,4051],{"emptyLinePlaceholder":4050},[3996,31145,31146,31148,31151],{"class":3998,"line":17300},[3996,31147,16701],{"class":4002},[3996,31149,31150],{"class":5783},"\u002F* Android: системний діалог; iOS\u002Fweb: spinner у Modal *\u002F",[3996,31152,4129],{"class":4002},[3996,31154,31155,31157,31159,31161,31163,31165,31168,31171,31174,31176],{"class":3998,"line":17305},[3996,31156,16701],{"class":4002},[3996,31158,26817],{"class":4064},[3996,31160,3821],{"class":4099},[3996,31162,26822],{"class":4010},[3996,31164,5646],{"class":4006},[3996,31166,31167],{"class":4029}," 'android'",[3996,31169,31170],{"class":4006}," &&",[3996,31172,31173],{"class":4064}," open",[3996,31175,5652],{"class":4006},[3996,31177,5622],{"class":4099},[3996,31179,31180,31182],{"class":3998,"line":17310},[3996,31181,5791],{"class":4081},[3996,31183,31184],{"class":4085},"DateTimePicker\n",[3996,31186,31187,31190,31192,31194,31196],{"class":3998,"line":17317},[3996,31188,31189],{"class":4089},"          value",[3996,31191,4093],{"class":4006},[3996,31193,4096],{"class":4002},[3996,31195,24141],{"class":4064},[3996,31197,4129],{"class":4002},[3996,31199,31200,31203,31205],{"class":3998,"line":17341},[3996,31201,31202],{"class":4089},"          mode",[3996,31204,4093],{"class":4006},[3996,31206,31207],{"class":4029},"\"date\"\n",[3996,31209,31210,31213,31215],{"class":3998,"line":17348},[3996,31211,31212],{"class":4089},"          display",[3996,31214,4093],{"class":4006},[3996,31216,31217],{"class":4029},"\"default\"\n",[3996,31219,31220,31223,31225,31227,31230],{"class":3998,"line":17359},[3996,31221,31222],{"class":4089},"          onChange",[3996,31224,4093],{"class":4006},[3996,31226,4096],{"class":4002},[3996,31228,31229],{"class":4064},"onAndroidChange",[3996,31231,4129],{"class":4002},[3996,31233,31234,31237,31239,31241,31244],{"class":3998,"line":17371},[3996,31235,31236],{"class":4089},"          minimumDate",[3996,31238,4093],{"class":4006},[3996,31240,4096],{"class":4002},[3996,31242,31243],{"class":4064},"minimumDate",[3996,31245,4129],{"class":4002},[3996,31247,31248,31251,31253,31255,31258],{"class":3998,"line":17377},[3996,31249,31250],{"class":4089},"          maximumDate",[3996,31252,4093],{"class":4006},[3996,31254,4096],{"class":4002},[3996,31256,31257],{"class":4064},"maximumDate",[3996,31259,4129],{"class":4002},[3996,31261,31262],{"class":3998,"line":17391},[3996,31263,5914],{"class":4081},[3996,31265,31266,31268,31270],{"class":3998,"line":17405},[3996,31267,16991],{"class":4099},[3996,31269,6869],{"class":4006},[3996,31271,16996],{"class":4002},[3996,31273,31274],{"class":3998,"line":17419},[3996,31275,4051],{"emptyLinePlaceholder":4050},[3996,31277,31278,31280,31282,31284,31286,31289,31291,31293],{"class":3998,"line":17434},[3996,31279,16701],{"class":4002},[3996,31281,26817],{"class":4064},[3996,31283,3821],{"class":4099},[3996,31285,26822],{"class":4010},[3996,31287,31288],{"class":4006}," !==",[3996,31290,31167],{"class":4029},[3996,31292,5652],{"class":4006},[3996,31294,5622],{"class":4099},[3996,31296,31297,31299],{"class":3998,"line":17448},[3996,31298,5791],{"class":4081},[3996,31300,31301],{"class":4085},"Modal\n",[3996,31303,31304,31307,31309,31311,31313],{"class":3998,"line":17454},[3996,31305,31306],{"class":4089},"          visible",[3996,31308,4093],{"class":4006},[3996,31310,4096],{"class":4002},[3996,31312,30417],{"class":4064},[3996,31314,4129],{"class":4002},[3996,31316,31317],{"class":3998,"line":17462},[3996,31318,31319],{"class":4089},"          transparent\n",[3996,31321,31322,31325,31327],{"class":3998,"line":17467},[3996,31323,31324],{"class":4089},"          animationType",[3996,31326,4093],{"class":4006},[3996,31328,31329],{"class":4029},"\"slide\"\n",[3996,31331,31332,31335,31337,31339,31342],{"class":3998,"line":17492},[3996,31333,31334],{"class":4089},"          onRequestClose",[3996,31336,4093],{"class":4006},[3996,31338,4096],{"class":4002},[3996,31340,31341],{"class":4064},"closePicker",[3996,31343,4129],{"class":4002},[3996,31345,31346],{"class":3998,"line":17528},[3996,31347,17640],{"class":4081},[3996,31349,31350,31352,31354,31356,31358,31360,31362,31364,31367,31369,31371,31373,31375,31377,31379],{"class":3998,"line":17554},[3996,31351,8031],{"class":4081},[3996,31353,7896],{"class":4085},[3996,31355,5637],{"class":4089},[3996,31357,4093],{"class":4006},[3996,31359,4096],{"class":4002},[3996,31361,8789],{"class":4064},[3996,31363,3821],{"class":4099},[3996,31365,31366],{"class":4064},"backdrop",[3996,31368,4117],{"class":4002},[3996,31370,8004],{"class":4089},[3996,31372,4093],{"class":4006},[3996,31374,4096],{"class":4002},[3996,31376,31341],{"class":4064},[3996,31378,4117],{"class":4002},[3996,31380,5665],{"class":4081},[3996,31382,31383,31385],{"class":3998,"line":17563},[3996,31384,8031],{"class":4081},[3996,31386,17072],{"class":4085},[3996,31388,31389,31392,31394,31396],{"class":3998,"line":17570},[3996,31390,31391],{"class":4089},"            style",[3996,31393,4093],{"class":4006},[3996,31395,4096],{"class":4002},[3996,31397,17085],{"class":4099},[3996,31399,31400,31403,31405,31408],{"class":3998,"line":17580},[3996,31401,31402],{"class":4064},"              styles",[3996,31404,3821],{"class":4099},[3996,31406,31407],{"class":4064},"sheet",[3996,31409,5720],{"class":4099},[3996,31411,31412],{"class":3998,"line":17592},[3996,31413,31414],{"class":4099},"              {\n",[3996,31416,31417,31420,31422,31424,31426],{"class":3998,"line":17606},[3996,31418,31419],{"class":4064},"                backgroundColor:",[3996,31421,5697],{"class":4064},[3996,31423,3821],{"class":4099},[3996,31425,17935],{"class":4064},[3996,31427,5720],{"class":4099},[3996,31429,31430,31433,31435,31437,31439],{"class":3998,"line":17620},[3996,31431,31432],{"class":4064},"                borderColor:",[3996,31434,5697],{"class":4064},[3996,31436,3821],{"class":4099},[3996,31438,15476],{"class":4064},[3996,31440,5720],{"class":4099},[3996,31442,31443,31446,31448,31450,31453],{"class":3998,"line":17630},[3996,31444,31445],{"class":4064},"                paddingBottom:",[3996,31447,16673],{"class":4064},[3996,31449,3821],{"class":4099},[3996,31451,31452],{"class":4064},"lg",[3996,31454,5720],{"class":4099},[3996,31456,31457],{"class":3998,"line":17637},[3996,31458,31459],{"class":4099},"              },\n",[3996,31461,31462,31465],{"class":3998,"line":17643},[3996,31463,31464],{"class":4099},"            ]",[3996,31466,4129],{"class":4002},[3996,31468,31469],{"class":3998,"line":17660},[3996,31470,31471],{"class":4081},"          >\n",[3996,31473,31474,31476],{"class":3998,"line":17695},[3996,31475,11117],{"class":4081},[3996,31477,17072],{"class":4085},[3996,31479,31480,31482,31484,31486],{"class":3998,"line":17706},[3996,31481,21229],{"class":4089},[3996,31483,4093],{"class":4006},[3996,31485,4096],{"class":4002},[3996,31487,17085],{"class":4099},[3996,31489,31490,31492,31494,31497],{"class":3998,"line":17715},[3996,31491,21240],{"class":4064},[3996,31493,3821],{"class":4099},[3996,31495,31496],{"class":4064},"sheetHeader",[3996,31498,5720],{"class":4099},[3996,31500,31501,31504,31507,31509,31511,31513,31515,31518,31520,31522,31524],{"class":3998,"line":17720},[3996,31502,31503],{"class":4099},"                { ",[3996,31505,31506],{"class":4064},"paddingHorizontal:",[3996,31508,16673],{"class":4064},[3996,31510,3821],{"class":4099},[3996,31512,16678],{"class":4064},[3996,31514,3867],{"class":4099},[3996,31516,31517],{"class":4064},"paddingTop:",[3996,31519,16673],{"class":4064},[3996,31521,3821],{"class":4099},[3996,31523,16678],{"class":4064},[3996,31525,5705],{"class":4099},[3996,31527,31528,31530],{"class":3998,"line":17770},[3996,31529,21302],{"class":4099},[3996,31531,4129],{"class":4002},[3996,31533,31534],{"class":3998,"line":17793},[3996,31535,21309],{"class":4081},[3996,31537,31538,31540,31542,31544,31546,31548,31550,31552,31554,31556,31558,31560],{"class":3998,"line":17819},[3996,31539,11762],{"class":4081},[3996,31541,16052],{"class":4085},[3996,31543,17175],{"class":4089},[3996,31545,4093],{"class":4006},[3996,31547,17180],{"class":4029},[3996,31549,8059],{"class":4081},[3996,31551,4096],{"class":4002},[3996,31553,16097],{"class":4064},[3996,31555,4117],{"class":4002},[3996,31557,8065],{"class":4081},[3996,31559,16052],{"class":4085},[3996,31561,5924],{"class":4081},[3996,31563,31564,31566,31568],{"class":3998,"line":17827},[3996,31565,11874],{"class":4081},[3996,31567,11340],{"class":4085},[3996,31569,5924],{"class":4081},[3996,31571,31572,31574],{"class":3998,"line":17835},[3996,31573,11117],{"class":4081},[3996,31575,31184],{"class":4085},[3996,31577,31578,31580,31582,31584,31586],{"class":3998,"line":17853},[3996,31579,27148],{"class":4089},[3996,31581,4093],{"class":4006},[3996,31583,4096],{"class":4002},[3996,31585,30446],{"class":4064},[3996,31587,4129],{"class":4002},[3996,31589,31590,31593,31595],{"class":3998,"line":17882},[3996,31591,31592],{"class":4089},"              mode",[3996,31594,4093],{"class":4006},[3996,31596,31207],{"class":4029},[3996,31598,31599,31602,31604],{"class":3998,"line":17894},[3996,31600,31601],{"class":4089},"              display",[3996,31603,4093],{"class":4006},[3996,31605,31606],{"class":4029},"\"spinner\"\n",[3996,31608,31609,31611,31613,31615,31618],{"class":3998,"line":17907},[3996,31610,27797],{"class":4089},[3996,31612,4093],{"class":4006},[3996,31614,4096],{"class":4002},[3996,31616,31617],{"class":4064},"onIosChange",[3996,31619,4129],{"class":4002},[3996,31621,31622,31624,31626,31628,31630],{"class":3998,"line":17913},[3996,31623,27988],{"class":4089},[3996,31625,4093],{"class":4006},[3996,31627,4096],{"class":4002},[3996,31629,31243],{"class":4064},[3996,31631,4129],{"class":4002},[3996,31633,31634,31637,31639,31641,31643],{"class":3998,"line":17940},[3996,31635,31636],{"class":4089},"              maximumDate",[3996,31638,4093],{"class":4006},[3996,31640,4096],{"class":4002},[3996,31642,31257],{"class":4064},[3996,31644,4129],{"class":4002},[3996,31646,31647,31649,31651,31653,31655,31658,31660,31662],{"class":3998,"line":17954},[3996,31648,21229],{"class":4089},[3996,31650,4093],{"class":4006},[3996,31652,4096],{"class":4002},[3996,31654,5812],{"class":4099},[3996,31656,31657],{"class":4064},"alignSelf:",[3996,31659,13439],{"class":4029},[3996,31661,5821],{"class":4099},[3996,31663,4129],{"class":4002},[3996,31665,31666],{"class":3998,"line":17960},[3996,31667,11266],{"class":4081},[3996,31669,31670,31672],{"class":3998,"line":17968},[3996,31671,11117],{"class":4081},[3996,31673,17072],{"class":4085},[3996,31675,31676,31678,31680,31682],{"class":3998,"line":17979},[3996,31677,21229],{"class":4089},[3996,31679,4093],{"class":4006},[3996,31681,4096],{"class":4002},[3996,31683,17085],{"class":4099},[3996,31685,31686,31688,31690,31693],{"class":3998,"line":18000},[3996,31687,21240],{"class":4064},[3996,31689,3821],{"class":4099},[3996,31691,31692],{"class":4064},"sheetActions",[3996,31694,5720],{"class":4099},[3996,31696,31697,31699,31701,31703,31705,31707,31709,31711,31713,31715,31717],{"class":3998,"line":18027},[3996,31698,31503],{"class":4099},[3996,31700,31506],{"class":4064},[3996,31702,16673],{"class":4064},[3996,31704,3821],{"class":4099},[3996,31706,16678],{"class":4064},[3996,31708,3867],{"class":4099},[3996,31710,12652],{"class":4064},[3996,31712,16673],{"class":4064},[3996,31714,3821],{"class":4099},[3996,31716,16741],{"class":4064},[3996,31718,5705],{"class":4099},[3996,31720,31721,31723],{"class":3998,"line":18033},[3996,31722,21302],{"class":4099},[3996,31724,4129],{"class":4002},[3996,31726,31727],{"class":3998,"line":18041},[3996,31728,21309],{"class":4081},[3996,31730,31731,31733,31735,31738,31740,31743,31745,31747,31749,31752,31754],{"class":3998,"line":18051},[3996,31732,11762],{"class":4081},[3996,31734,16057],{"class":4085},[3996,31736,31737],{"class":4089}," label",[3996,31739,4093],{"class":4006},[3996,31741,31742],{"class":4029},"\"Готово\"",[3996,31744,8004],{"class":4089},[3996,31746,4093],{"class":4006},[3996,31748,4096],{"class":4002},[3996,31750,31751],{"class":4064},"applyIos",[3996,31753,4117],{"class":4002},[3996,31755,5665],{"class":4081},[3996,31757,31758,31760,31762,31764,31766,31768,31770,31772,31774,31776,31778,31780,31782,31785,31787],{"class":3998,"line":18083},[3996,31759,11762],{"class":4081},[3996,31761,7896],{"class":4085},[3996,31763,8004],{"class":4089},[3996,31765,4093],{"class":4006},[3996,31767,4096],{"class":4002},[3996,31769,31341],{"class":4064},[3996,31771,4117],{"class":4002},[3996,31773,5637],{"class":4089},[3996,31775,4093],{"class":4006},[3996,31777,4096],{"class":4002},[3996,31779,8789],{"class":4064},[3996,31781,3821],{"class":4099},[3996,31783,31784],{"class":4064},"cancel",[3996,31786,4117],{"class":4002},[3996,31788,5924],{"class":4081},[3996,31790,31791,31793,31795,31797,31799,31801,31803,31805,31807,31809,31811,31814,31816,31818],{"class":3998,"line":18102},[3996,31792,18036],{"class":4081},[3996,31794,16052],{"class":4085},[3996,31796,6913],{"class":4089},[3996,31798,4093],{"class":4006},[3996,31800,4096],{"class":4002},[3996,31802,5598],{"class":4064},[3996,31804,3821],{"class":4099},[3996,31806,15445],{"class":4064},[3996,31808,4117],{"class":4002},[3996,31810,8059],{"class":4081},[3996,31812,31813],{"class":4099},"Скасувати",[3996,31815,8065],{"class":4081},[3996,31817,16052],{"class":4085},[3996,31819,5924],{"class":4081},[3996,31821,31822,31824,31826],{"class":3998,"line":18108},[3996,31823,18135],{"class":4081},[3996,31825,7896],{"class":4085},[3996,31827,5924],{"class":4081},[3996,31829,31830,31832,31834],{"class":3998,"line":18122},[3996,31831,11874],{"class":4081},[3996,31833,11340],{"class":4085},[3996,31835,5924],{"class":4081},[3996,31837,31838,31840,31842],{"class":3998,"line":18132},[3996,31839,11883],{"class":4081},[3996,31841,11340],{"class":4085},[3996,31843,5924],{"class":4081},[3996,31845,31846,31848,31851],{"class":3998,"line":18142},[3996,31847,8074],{"class":4081},[3996,31849,31850],{"class":4085},"Modal",[3996,31852,5924],{"class":4081},[3996,31854,31855,31857,31859],{"class":3998,"line":18148},[3996,31856,16991],{"class":4099},[3996,31858,6869],{"class":4006},[3996,31860,16996],{"class":4002},[3996,31862,31863,31865,31867],{"class":3998,"line":18156},[3996,31864,6003],{"class":4081},[3996,31866,11340],{"class":4085},[3996,31868,5924],{"class":4081},[3996,31870,31871],{"class":3998,"line":18165},[3996,31872,5934],{"class":4006},[3996,31874,31875],{"class":3998,"line":18174},[3996,31876,4129],{"class":4006},[3996,31878,31879],{"class":3998,"line":18179},[3996,31880,4051],{"emptyLinePlaceholder":4050},[3996,31882,31883,31885,31888,31890,31892,31894,31896,31898,31900],{"class":3998,"line":18203},[3996,31884,5582],{"class":4002},[3996,31886,31887],{"class":4022}," formatDisplay",[3996,31889,4109],{"class":4006},[3996,31891,23198],{"class":4064},[3996,31893,8990],{"class":4006},[3996,31895,23203],{"class":4085},[3996,31897,10540],{"class":4006},[3996,31899,7692],{"class":4085},[3996,31901,7958],{"class":4006},[3996,31903,31904,31906,31909,31911,31913,31915,31917,31919,31921,31924,31927,31929,31931,31933,31936],{"class":3998,"line":18211},[3996,31905,5593],{"class":4002},[3996,31907,31908],{"class":4010}," dd",[3996,31910,7937],{"class":4006},[3996,31912,13098],{"class":4022},[3996,31914,4109],{"class":4006},[3996,31916,23198],{"class":4064},[3996,31918,3821],{"class":4006},[3996,31920,23224],{"class":4022},[3996,31922,31923],{"class":4006},"()).",[3996,31925,31926],{"class":4022},"padStart",[3996,31928,4109],{"class":4006},[3996,31930,19532],{"class":11033},[3996,31932,3867],{"class":4006},[3996,31934,31935],{"class":4029},"'0'",[3996,31937,4044],{"class":4006},[3996,31939,31940,31942,31945,31947,31949,31951,31953,31955,31957,31959,31961,31963,31965,31967,31969,31971,31973],{"class":3998,"line":18225},[3996,31941,5593],{"class":4002},[3996,31943,31944],{"class":4010}," mm",[3996,31946,7937],{"class":4006},[3996,31948,13098],{"class":4022},[3996,31950,4109],{"class":4006},[3996,31952,23198],{"class":4064},[3996,31954,3821],{"class":4006},[3996,31956,23243],{"class":4022},[3996,31958,26161],{"class":4006},[3996,31960,22871],{"class":11033},[3996,31962,3877],{"class":4006},[3996,31964,31926],{"class":4022},[3996,31966,4109],{"class":4006},[3996,31968,19532],{"class":11033},[3996,31970,3867],{"class":4006},[3996,31972,31935],{"class":4029},[3996,31974,4044],{"class":4006},[3996,31976,31977,31979,31982,31984,31986,31988,31990],{"class":3998,"line":18240},[3996,31978,5593],{"class":4002},[3996,31980,31981],{"class":4010}," yyyy",[3996,31983,7937],{"class":4006},[3996,31985,23198],{"class":4064},[3996,31987,3821],{"class":4006},[3996,31989,23327],{"class":4022},[3996,31991,5611],{"class":4006},[3996,31993,31994,31996,31998,32000,32003,32005,32007,32009,32012,32014,32016,32018,32021,32023,32025],{"class":3998,"line":18255},[3996,31995,4078],{"class":4057},[3996,31997,17666],{"class":4029},[3996,31999,11717],{"class":4002},[3996,32001,32002],{"class":4064},"dd",[3996,32004,4117],{"class":4002},[3996,32006,3821],{"class":4029},[3996,32008,11717],{"class":4002},[3996,32010,32011],{"class":4064},"mm",[3996,32013,4117],{"class":4002},[3996,32015,3821],{"class":4029},[3996,32017,11717],{"class":4002},[3996,32019,32020],{"class":4064},"yyyy",[3996,32022,4117],{"class":4002},[3996,32024,11728],{"class":4029},[3996,32026,4123],{"class":4006},[3996,32028,32029],{"class":3998,"line":18270},[3996,32030,4129],{"class":4006},[3996,32032,32033],{"class":3998,"line":18285},[3996,32034,4051],{"emptyLinePlaceholder":4050},[3996,32036,32037,32039,32041,32043,32045,32047,32049],{"class":3998,"line":18297},[3996,32038,4003],{"class":4002},[3996,32040,11925],{"class":4010},[3996,32042,7937],{"class":4006},[3996,32044,8741],{"class":4064},[3996,32046,3821],{"class":4006},[3996,32048,11934],{"class":4022},[3996,32050,7971],{"class":4006},[3996,32052,32053,32056],{"class":3998,"line":18310},[3996,32054,32055],{"class":4064},"  label:",[3996,32057,7958],{"class":4006},[3996,32059,32060,32062,32064],{"class":3998,"line":18323},[3996,32061,12236],{"class":4064},[3996,32063,5744],{"class":4029},[3996,32065,5720],{"class":4006},[3996,32067,32068],{"class":3998,"line":18336},[3996,32069,10287],{"class":4006},[3996,32071,32072,32075],{"class":3998,"line":18343},[3996,32073,32074],{"class":4064},"  field:",[3996,32076,7958],{"class":4006},[3996,32078,32079,32081,32083],{"class":3998,"line":18385},[3996,32080,12123],{"class":4064},[3996,32082,11949],{"class":11033},[3996,32084,5720],{"class":4006},[3996,32086,32087,32089,32092],{"class":3998,"line":18395},[3996,32088,30005],{"class":4064},[3996,32090,32091],{"class":11033}," 48",[3996,32093,5720],{"class":4006},[3996,32095,32096,32098,32100],{"class":3998,"line":18403},[3996,32097,13436],{"class":4064},[3996,32099,13439],{"class":4029},[3996,32101,5720],{"class":4006},[3996,32103,32104],{"class":3998,"line":18417},[3996,32105,10287],{"class":4006},[3996,32107,32108,32111],{"class":3998,"line":18432},[3996,32109,32110],{"class":4064},"  backdrop:",[3996,32112,7958],{"class":4006},[3996,32114,32115,32117,32119],{"class":3998,"line":18450},[3996,32116,13419],{"class":4064},[3996,32118,11949],{"class":11033},[3996,32120,5720],{"class":4006},[3996,32122,32123,32125,32128],{"class":3998,"line":18472},[3996,32124,12104],{"class":4064},[3996,32126,32127],{"class":4029}," 'rgba(0,0,0,0.35)'",[3996,32129,5720],{"class":4006},[3996,32131,32132],{"class":3998,"line":18477},[3996,32133,10287],{"class":4006},[3996,32135,32136,32139],{"class":3998,"line":18482},[3996,32137,32138],{"class":4064},"  sheet:",[3996,32140,7958],{"class":4006},[3996,32142,32143,32146,32148],{"class":3998,"line":18492},[3996,32144,32145],{"class":4064},"    borderTopLeftRadius:",[3996,32147,11972],{"class":11033},[3996,32149,5720],{"class":4006},[3996,32151,32152,32155,32157],{"class":3998,"line":18497},[3996,32153,32154],{"class":4064},"    borderTopRightRadius:",[3996,32156,11972],{"class":11033},[3996,32158,5720],{"class":4006},[3996,32160,32161,32163,32165],{"class":3998,"line":18506},[3996,32162,19002],{"class":4064},[3996,32164,11949],{"class":11033},[3996,32166,5720],{"class":4006},[3996,32168,32169],{"class":3998,"line":18511},[3996,32170,10287],{"class":4006},[3996,32172,32173,32176],{"class":3998,"line":18518},[3996,32174,32175],{"class":4064},"  sheetHeader:",[3996,32177,7958],{"class":4006},[3996,32179,32180,32182,32184],{"class":3998,"line":18529},[3996,32181,13446],{"class":4064},[3996,32183,13439],{"class":4029},[3996,32185,5720],{"class":4006},[3996,32187,32188],{"class":3998,"line":18541},[3996,32189,10287],{"class":4006},[3996,32191,32192,32195],{"class":3998,"line":18546},[3996,32193,32194],{"class":4064},"  sheetActions:",[3996,32196,7958],{"class":4006},[3996,32198,32199,32201,32203],{"class":3998,"line":18559},[3996,32200,12216],{"class":4064},[3996,32202,11982],{"class":11033},[3996,32204,5720],{"class":4006},[3996,32206,32207],{"class":3998,"line":18572},[3996,32208,10287],{"class":4006},[3996,32210,32211,32214],{"class":3998,"line":18585},[3996,32212,32213],{"class":4064},"  cancel:",[3996,32215,7958],{"class":4006},[3996,32217,32218,32220,32222],{"class":3998,"line":18599},[3996,32219,13446],{"class":4064},[3996,32221,13439],{"class":4029},[3996,32223,5720],{"class":4006},[3996,32225,32226,32228,32230],{"class":3998,"line":18613},[3996,32227,18841],{"class":4064},[3996,32229,11672],{"class":11033},[3996,32231,5720],{"class":4006},[3996,32233,32234],{"class":3998,"line":18618},[3996,32235,10287],{"class":4006},[3996,32237,32238],{"class":3998,"line":18625},[3996,32239,12261],{"class":4006},[3987,32241,32244],{"className":3989,"code":32242,"filename":32243,"language":3991,"meta":3992,"style":3992},"import { ReactNode } from 'react';\nimport { StyleSheet, View } from 'react-native';\n\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\nimport { AppText } from '@\u002Fshared\u002Fui';\n\ntype FormRowProps = {\n  label: string;\n  \u002F** Короткий опис під label (для Switch \u002F Checkbox \u002F Slider). *\u002F\n  description?: string;\n  error?: string;\n  \u002F** Правий слот: Switch, Checkbox тощо. *\u002F\n  control: ReactNode;\n  \u002F** Якщо true — control під label на всю ширину (Slider, Picker). *\u002F\n  stacked?: boolean;\n};\n\n\u002F**\n * Рядок форми для не-текстових контролів:\n * label + опис зліва, control справа (або stacked).\n *\u002F\nexport function FormRow({\n  label,\n  description,\n  error,\n  control,\n  stacked = false,\n}: FormRowProps) {\n  const { colors, spacing } = useTheme();\n\n  return (\n    \u003CView style={[styles.wrap, { gap: spacing.xs }]}>\n      \u003CView\n        style={[\n          stacked ? styles.stacked : styles.row,\n          !stacked && { gap: spacing.md },\n        ]}\n      >\n        \u003CView style={styles.texts}>\n          \u003CAppText variant=\"caption\" style={styles.label}>\n            {label}\n          \u003C\u002FAppText>\n          {description ? (\n            \u003CAppText variant=\"caption\" color={colors.textSecondary}>\n              {description}\n            \u003C\u002FAppText>\n          ) : null}\n        \u003C\u002FView>\n        \u003CView style={stacked ? styles.fullControl : styles.sideControl}>\n          {control}\n        \u003C\u002FView>\n      \u003C\u002FView>\n      {error ? (\n        \u003CAppText variant=\"caption\" color={colors.danger}>\n          {error}\n        \u003C\u002FAppText>\n      ) : null}\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  wrap: {\n    width: '100%',\n  },\n  row: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    justifyContent: 'space-between',\n  },\n  stacked: {\n    flexDirection: 'column',\n    alignItems: 'stretch',\n  },\n  texts: {\n    flex: 1,\n    gap: 2,\n  },\n  label: {\n    fontWeight: '600',\n  },\n  sideControl: {\n    flexShrink: 0,\n  },\n  fullControl: {\n    marginTop: 8,\n    width: '100%',\n  },\n});\n","src\u002Ffeatures\u002Ftrips\u002Fui\u002FFormRow.tsx",[3747,32245,32246,32262,32282,32286,32302,32318,32322,32331,32341,32346,32356,32366,32371,32382,32387,32398,32402,32406,32410,32415,32420,32424,32435,32441,32447,32453,32459,32469,32478,32496,32500,32506,32543,32549,32559,32584,32605,32611,32615,32638,32666,32674,32682,32692,32720,32729,32737,32745,32753,32789,32797,32805,32813,32823,32851,32859,32867,32875,32883,32887,32891,32895,32911,32918,32928,32932,32939,32947,32955,32964,32968,32975,32984,32993,32997,33004,33012,33020,33024,33030,33038,33042,33049,33058,33062,33069,33077,33085,33089],{"__ignoreMap":3992},[3996,32247,32248,32250,32252,32254,32256,32258,32260],{"class":3998,"line":3999},[3996,32249,5501],{"class":4057},[3996,32251,5504],{"class":4006},[3996,32253,23897],{"class":4064},[3996,32255,5509],{"class":4006},[3996,32257,5512],{"class":4057},[3996,32259,7869],{"class":4029},[3996,32261,4123],{"class":4006},[3996,32263,32264,32266,32268,32270,32272,32274,32276,32278,32280],{"class":3998,"line":4047},[3996,32265,5501],{"class":4057},[3996,32267,5504],{"class":4006},[3996,32269,8741],{"class":4064},[3996,32271,3867],{"class":4006},[3996,32273,11340],{"class":4064},[3996,32275,5509],{"class":4006},[3996,32277,5512],{"class":4057},[3996,32279,7908],{"class":4029},[3996,32281,4123],{"class":4006},[3996,32283,32284],{"class":3998,"line":4054},[3996,32285,4051],{"emptyLinePlaceholder":4050},[3996,32287,32288,32290,32292,32294,32296,32298,32300],{"class":3998,"line":4075},[3996,32289,5501],{"class":4057},[3996,32291,5504],{"class":4006},[3996,32293,5564],{"class":4064},[3996,32295,5509],{"class":4006},[3996,32297,5512],{"class":4057},[3996,32299,5571],{"class":4029},[3996,32301,4123],{"class":4006},[3996,32303,32304,32306,32308,32310,32312,32314,32316],{"class":3998,"line":4126},[3996,32305,5501],{"class":4057},[3996,32307,5504],{"class":4006},[3996,32309,16052],{"class":4064},[3996,32311,5509],{"class":4006},[3996,32313,5512],{"class":4057},[3996,32315,16068],{"class":4029},[3996,32317,4123],{"class":4006},[3996,32319,32320],{"class":3998,"line":4132},[3996,32321,4051],{"emptyLinePlaceholder":4050},[3996,32323,32324,32326,32329],{"class":3998,"line":4137},[3996,32325,16032],{"class":4002},[3996,32327,32328],{"class":4085}," FormRowProps",[3996,32330,10144],{"class":4006},[3996,32332,32333,32335,32337,32339],{"class":3998,"line":4275},[3996,32334,30209],{"class":4064},[3996,32336,8990],{"class":4006},[3996,32338,7692],{"class":4085},[3996,32340,4123],{"class":4006},[3996,32342,32343],{"class":3998,"line":4281},[3996,32344,32345],{"class":5783},"  \u002F** Короткий опис під label (для Switch \u002F Checkbox \u002F Slider). *\u002F\n",[3996,32347,32348,32350,32352,32354],{"class":3998,"line":4287},[3996,32349,10192],{"class":4064},[3996,32351,22280],{"class":4006},[3996,32353,7692],{"class":4085},[3996,32355,4123],{"class":4006},[3996,32357,32358,32360,32362,32364],{"class":3998,"line":4293},[3996,32359,30265],{"class":4064},[3996,32361,22280],{"class":4006},[3996,32363,7692],{"class":4085},[3996,32365,4123],{"class":4006},[3996,32367,32368],{"class":3998,"line":4299},[3996,32369,32370],{"class":5783},"  \u002F** Правий слот: Switch, Checkbox тощо. *\u002F\n",[3996,32372,32373,32376,32378,32380],{"class":3998,"line":4305},[3996,32374,32375],{"class":4064},"  control",[3996,32377,8990],{"class":4006},[3996,32379,23897],{"class":4085},[3996,32381,4123],{"class":4006},[3996,32383,32384],{"class":3998,"line":4311},[3996,32385,32386],{"class":5783},"  \u002F** Якщо true — control під label на всю ширину (Slider, Picker). *\u002F\n",[3996,32388,32389,32392,32394,32396],{"class":3998,"line":4317},[3996,32390,32391],{"class":4064},"  stacked",[3996,32393,22280],{"class":4006},[3996,32395,6483],{"class":4085},[3996,32397,4123],{"class":4006},[3996,32399,32400],{"class":3998,"line":4323},[3996,32401,10203],{"class":4006},[3996,32403,32404],{"class":3998,"line":4329},[3996,32405,4051],{"emptyLinePlaceholder":4050},[3996,32407,32408],{"class":3998,"line":4335},[3996,32409,14911],{"class":5783},[3996,32411,32412],{"class":3998,"line":4341},[3996,32413,32414],{"class":5783}," * Рядок форми для не-текстових контролів:\n",[3996,32416,32417],{"class":3998,"line":4347},[3996,32418,32419],{"class":5783}," * label + опис зліва, control справа (або stacked).\n",[3996,32421,32422],{"class":3998,"line":4352},[3996,32423,14926],{"class":5783},[3996,32425,32426,32428,32430,32433],{"class":3998,"line":4357},[3996,32427,5947],{"class":4057},[3996,32429,5953],{"class":4002},[3996,32431,32432],{"class":4022}," FormRow",[3996,32434,7971],{"class":4006},[3996,32436,32437,32439],{"class":3998,"line":4363},[3996,32438,30209],{"class":4064},[3996,32440,5720],{"class":4006},[3996,32442,32443,32445],{"class":3998,"line":4369},[3996,32444,10192],{"class":4064},[3996,32446,5720],{"class":4006},[3996,32448,32449,32451],{"class":3998,"line":4375},[3996,32450,30265],{"class":4064},[3996,32452,5720],{"class":4006},[3996,32454,32455,32457],{"class":3998,"line":4381},[3996,32456,32375],{"class":4064},[3996,32458,5720],{"class":4006},[3996,32460,32461,32463,32465,32467],{"class":3998,"line":4387},[3996,32462,32391],{"class":4064},[3996,32464,7937],{"class":4006},[3996,32466,6495],{"class":4002},[3996,32468,5720],{"class":4006},[3996,32470,32471,32473,32476],{"class":3998,"line":4392},[3996,32472,26227],{"class":4006},[3996,32474,32475],{"class":4085},"FormRowProps",[3996,32477,4072],{"class":4006},[3996,32479,32480,32482,32484,32486,32488,32490,32492,32494],{"class":3998,"line":4398},[3996,32481,5593],{"class":4002},[3996,32483,5504],{"class":4006},[3996,32485,5598],{"class":4010},[3996,32487,3867],{"class":4006},[3996,32489,16226],{"class":4010},[3996,32491,5606],{"class":4006},[3996,32493,5564],{"class":4022},[3996,32495,5611],{"class":4006},[3996,32497,32498],{"class":3998,"line":4404},[3996,32499,4051],{"emptyLinePlaceholder":4050},[3996,32501,32502,32504],{"class":3998,"line":4410},[3996,32503,4078],{"class":4057},[3996,32505,5622],{"class":4006},[3996,32507,32508,32510,32512,32514,32516,32518,32520,32522,32524,32527,32529,32531,32533,32535,32537,32539,32541],{"class":3998,"line":4415},[3996,32509,5969],{"class":4081},[3996,32511,11340],{"class":4085},[3996,32513,5637],{"class":4089},[3996,32515,4093],{"class":4006},[3996,32517,4096],{"class":4002},[3996,32519,11457],{"class":4099},[3996,32521,8789],{"class":4064},[3996,32523,3821],{"class":4099},[3996,32525,32526],{"class":4064},"wrap",[3996,32528,17742],{"class":4099},[3996,32530,12652],{"class":4064},[3996,32532,16673],{"class":4064},[3996,32534,3821],{"class":4099},[3996,32536,17429],{"class":4064},[3996,32538,17763],{"class":4099},[3996,32540,4117],{"class":4002},[3996,32542,5924],{"class":4081},[3996,32544,32545,32547],{"class":3998,"line":4420},[3996,32546,5632],{"class":4081},[3996,32548,17072],{"class":4085},[3996,32550,32551,32553,32555,32557],{"class":3998,"line":4426},[3996,32552,17255],{"class":4089},[3996,32554,4093],{"class":4006},[3996,32556,4096],{"class":4002},[3996,32558,17085],{"class":4099},[3996,32560,32561,32564,32566,32568,32570,32573,32575,32577,32579,32582],{"class":3998,"line":4432},[3996,32562,32563],{"class":4064},"          stacked",[3996,32565,5652],{"class":4006},[3996,32567,11925],{"class":4064},[3996,32569,3821],{"class":4099},[3996,32571,32572],{"class":4064},"stacked",[3996,32574,5658],{"class":4006},[3996,32576,11925],{"class":4064},[3996,32578,3821],{"class":4099},[3996,32580,32581],{"class":4064},"row",[3996,32583,5720],{"class":4099},[3996,32585,32586,32589,32591,32593,32595,32597,32599,32601,32603],{"class":3998,"line":4438},[3996,32587,32588],{"class":4006},"          !",[3996,32590,32572],{"class":4064},[3996,32592,31170],{"class":4006},[3996,32594,5504],{"class":4099},[3996,32596,12652],{"class":4064},[3996,32598,16673],{"class":4064},[3996,32600,3821],{"class":4099},[3996,32602,16678],{"class":4064},[3996,32604,5705],{"class":4099},[3996,32606,32607,32609],{"class":3998,"line":4443},[3996,32608,17457],{"class":4099},[3996,32610,4129],{"class":4002},[3996,32612,32613],{"class":3998,"line":4448},[3996,32614,5775],{"class":4081},[3996,32616,32617,32619,32621,32623,32625,32627,32629,32631,32634,32636],{"class":3998,"line":4454},[3996,32618,5791],{"class":4081},[3996,32620,11340],{"class":4085},[3996,32622,5637],{"class":4089},[3996,32624,4093],{"class":4006},[3996,32626,4096],{"class":4002},[3996,32628,8789],{"class":4064},[3996,32630,3821],{"class":4099},[3996,32632,32633],{"class":4064},"texts",[3996,32635,4117],{"class":4002},[3996,32637,5924],{"class":4081},[3996,32639,32640,32642,32644,32646,32648,32650,32652,32654,32656,32658,32660,32662,32664],{"class":3998,"line":4460},[3996,32641,8031],{"class":4081},[3996,32643,16052],{"class":4085},[3996,32645,17175],{"class":4089},[3996,32647,4093],{"class":4006},[3996,32649,17503],{"class":4029},[3996,32651,5637],{"class":4089},[3996,32653,4093],{"class":4006},[3996,32655,4096],{"class":4002},[3996,32657,8789],{"class":4064},[3996,32659,3821],{"class":4099},[3996,32661,16097],{"class":4064},[3996,32663,4117],{"class":4002},[3996,32665,5924],{"class":4081},[3996,32667,32668,32670,32672],{"class":3998,"line":4466},[3996,32669,20670],{"class":4002},[3996,32671,16097],{"class":4064},[3996,32673,4129],{"class":4002},[3996,32675,32676,32678,32680],{"class":3998,"line":4472},[3996,32677,11883],{"class":4081},[3996,32679,16052],{"class":4085},[3996,32681,5924],{"class":4081},[3996,32683,32684,32686,32688,32690],{"class":3998,"line":4477},[3996,32685,17646],{"class":4002},[3996,32687,13339],{"class":4064},[3996,32689,5652],{"class":4006},[3996,32691,5622],{"class":4099},[3996,32693,32694,32696,32698,32700,32702,32704,32706,32708,32710,32712,32714,32716,32718],{"class":3998,"line":5066},[3996,32695,11117],{"class":4081},[3996,32697,16052],{"class":4085},[3996,32699,17175],{"class":4089},[3996,32701,4093],{"class":4006},[3996,32703,17503],{"class":4029},[3996,32705,6913],{"class":4089},[3996,32707,4093],{"class":4006},[3996,32709,4096],{"class":4002},[3996,32711,5598],{"class":4064},[3996,32713,3821],{"class":4099},[3996,32715,15445],{"class":4064},[3996,32717,4117],{"class":4002},[3996,32719,5924],{"class":4081},[3996,32721,32722,32725,32727],{"class":3998,"line":5072},[3996,32723,32724],{"class":4002},"              {",[3996,32726,13339],{"class":4064},[3996,32728,4129],{"class":4002},[3996,32730,32731,32733,32735],{"class":3998,"line":5078},[3996,32732,11874],{"class":4081},[3996,32734,16052],{"class":4085},[3996,32736,5924],{"class":4081},[3996,32738,32739,32741,32743],{"class":3998,"line":5084},[3996,32740,29703],{"class":4099},[3996,32742,6869],{"class":4006},[3996,32744,16996],{"class":4002},[3996,32746,32747,32749,32751],{"class":3998,"line":5090},[3996,32748,8074],{"class":4081},[3996,32750,11340],{"class":4085},[3996,32752,5924],{"class":4081},[3996,32754,32755,32757,32759,32761,32763,32765,32767,32769,32771,32773,32776,32778,32780,32782,32785,32787],{"class":3998,"line":5096},[3996,32756,5791],{"class":4081},[3996,32758,11340],{"class":4085},[3996,32760,5637],{"class":4089},[3996,32762,4093],{"class":4006},[3996,32764,4096],{"class":4002},[3996,32766,32572],{"class":4064},[3996,32768,5652],{"class":4006},[3996,32770,11925],{"class":4064},[3996,32772,3821],{"class":4099},[3996,32774,32775],{"class":4064},"fullControl",[3996,32777,5658],{"class":4006},[3996,32779,11925],{"class":4064},[3996,32781,3821],{"class":4099},[3996,32783,32784],{"class":4064},"sideControl",[3996,32786,4117],{"class":4002},[3996,32788,5924],{"class":4081},[3996,32790,32791,32793,32795],{"class":3998,"line":10510},[3996,32792,17646],{"class":4002},[3996,32794,27071],{"class":4064},[3996,32796,4129],{"class":4002},[3996,32798,32799,32801,32803],{"class":3998,"line":10516},[3996,32800,8074],{"class":4081},[3996,32802,11340],{"class":4085},[3996,32804,5924],{"class":4081},[3996,32806,32807,32809,32811],{"class":3998,"line":10521},[3996,32808,5919],{"class":4081},[3996,32810,11340],{"class":4085},[3996,32812,5924],{"class":4081},[3996,32814,32815,32817,32819,32821],{"class":3998,"line":10552},[3996,32816,16701],{"class":4002},[3996,32818,30481],{"class":4064},[3996,32820,5652],{"class":4006},[3996,32822,5622],{"class":4099},[3996,32824,32825,32827,32829,32831,32833,32835,32837,32839,32841,32843,32845,32847,32849],{"class":3998,"line":10587},[3996,32826,5791],{"class":4081},[3996,32828,16052],{"class":4085},[3996,32830,17175],{"class":4089},[3996,32832,4093],{"class":4006},[3996,32834,17503],{"class":4029},[3996,32836,6913],{"class":4089},[3996,32838,4093],{"class":4006},[3996,32840,4096],{"class":4002},[3996,32842,5598],{"class":4064},[3996,32844,3821],{"class":4099},[3996,32846,30970],{"class":4064},[3996,32848,4117],{"class":4002},[3996,32850,5924],{"class":4081},[3996,32852,32853,32855,32857],{"class":3998,"line":12205},[3996,32854,17646],{"class":4002},[3996,32856,30481],{"class":4064},[3996,32858,4129],{"class":4002},[3996,32860,32861,32863,32865],{"class":3998,"line":12213},[3996,32862,8074],{"class":4081},[3996,32864,16052],{"class":4085},[3996,32866,5924],{"class":4081},[3996,32868,32869,32871,32873],{"class":3998,"line":12223},[3996,32870,16991],{"class":4099},[3996,32872,6869],{"class":4006},[3996,32874,16996],{"class":4002},[3996,32876,32877,32879,32881],{"class":3998,"line":12233},[3996,32878,6003],{"class":4081},[3996,32880,11340],{"class":4085},[3996,32882,5924],{"class":4081},[3996,32884,32885],{"class":3998,"line":12243},[3996,32886,5934],{"class":4006},[3996,32888,32889],{"class":3998,"line":12253},[3996,32890,4129],{"class":4006},[3996,32892,32893],{"class":3998,"line":12258},[3996,32894,4051],{"emptyLinePlaceholder":4050},[3996,32896,32897,32899,32901,32903,32905,32907,32909],{"class":3998,"line":16645},[3996,32898,4003],{"class":4002},[3996,32900,11925],{"class":4010},[3996,32902,7937],{"class":4006},[3996,32904,8741],{"class":4064},[3996,32906,3821],{"class":4006},[3996,32908,11934],{"class":4022},[3996,32910,7971],{"class":4006},[3996,32912,32913,32916],{"class":3998,"line":16656},[3996,32914,32915],{"class":4064},"  wrap:",[3996,32917,7958],{"class":4006},[3996,32919,32920,32923,32926],{"class":3998,"line":16698},[3996,32921,32922],{"class":4064},"    width:",[3996,32924,32925],{"class":4029}," '100%'",[3996,32927,5720],{"class":4006},[3996,32929,32930],{"class":3998,"line":16720},[3996,32931,10287],{"class":4006},[3996,32933,32934,32937],{"class":3998,"line":16750},[3996,32935,32936],{"class":4064},"  row:",[3996,32938,7958],{"class":4006},[3996,32940,32941,32943,32945],{"class":3998,"line":16784},[3996,32942,18797],{"class":4064},[3996,32944,18800],{"class":4029},[3996,32946,5720],{"class":4006},[3996,32948,32949,32951,32953],{"class":3998,"line":16791},[3996,32950,13446],{"class":4064},[3996,32952,13439],{"class":4029},[3996,32954,5720],{"class":4006},[3996,32956,32957,32959,32962],{"class":3998,"line":16797},[3996,32958,13436],{"class":4064},[3996,32960,32961],{"class":4029}," 'space-between'",[3996,32963,5720],{"class":4006},[3996,32965,32966],{"class":3998,"line":16811},[3996,32967,10287],{"class":4006},[3996,32969,32970,32973],{"class":3998,"line":16837},[3996,32971,32972],{"class":4064},"  stacked:",[3996,32974,7958],{"class":4006},[3996,32976,32977,32979,32982],{"class":3998,"line":16857},[3996,32978,18797],{"class":4064},[3996,32980,32981],{"class":4029}," 'column'",[3996,32983,5720],{"class":4006},[3996,32985,32986,32988,32991],{"class":3998,"line":16889},[3996,32987,13446],{"class":4064},[3996,32989,32990],{"class":4029}," 'stretch'",[3996,32992,5720],{"class":4006},[3996,32994,32995],{"class":3998,"line":16897},[3996,32996,10287],{"class":4006},[3996,32998,32999,33002],{"class":3998,"line":16908},[3996,33000,33001],{"class":4064},"  texts:",[3996,33003,7958],{"class":4006},[3996,33005,33006,33008,33010],{"class":3998,"line":16951},[3996,33007,13419],{"class":4064},[3996,33009,11949],{"class":11033},[3996,33011,5720],{"class":4006},[3996,33013,33014,33016,33018],{"class":3998,"line":16973},[3996,33015,19974],{"class":4064},[3996,33017,16966],{"class":11033},[3996,33019,5720],{"class":4006},[3996,33021,33022],{"class":3998,"line":16979},[3996,33023,10287],{"class":4006},[3996,33025,33026,33028],{"class":3998,"line":16988},[3996,33027,32055],{"class":4064},[3996,33029,7958],{"class":4006},[3996,33031,33032,33034,33036],{"class":3998,"line":16999},[3996,33033,12236],{"class":4064},[3996,33035,5744],{"class":4029},[3996,33037,5720],{"class":4006},[3996,33039,33040],{"class":3998,"line":17004},[3996,33041,10287],{"class":4006},[3996,33043,33044,33047],{"class":3998,"line":17038},[3996,33045,33046],{"class":4064},"  sideControl:",[3996,33048,7958],{"class":4006},[3996,33050,33051,33054,33056],{"class":3998,"line":17047},[3996,33052,33053],{"class":4064},"    flexShrink:",[3996,33055,16713],{"class":11033},[3996,33057,5720],{"class":4006},[3996,33059,33060],{"class":3998,"line":17052},[3996,33061,10287],{"class":4006},[3996,33063,33064,33067],{"class":3998,"line":17057},[3996,33065,33066],{"class":4064},"  fullControl:",[3996,33068,7958],{"class":4006},[3996,33070,33071,33073,33075],{"class":3998,"line":17067},[3996,33072,12216],{"class":4064},[3996,33074,11982],{"class":11033},[3996,33076,5720],{"class":4006},[3996,33078,33079,33081,33083],{"class":3998,"line":17075},[3996,33080,32922],{"class":4064},[3996,33082,32925],{"class":4029},[3996,33084,5720],{"class":4006},[3996,33086,33087],{"class":3998,"line":17088},[3996,33088,10287],{"class":4006},[3996,33090,33091],{"class":3998,"line":17101},[3996,33092,12261],{"class":4006},[3987,33094,33097],{"className":3989,"code":33095,"filename":33096,"language":3991,"meta":3992,"style":3992},"import { memo } from 'react';\nimport { Image, Platform, Pressable, StyleSheet, View } from 'react-native';\n\nimport type { Trip } from '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes';\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\nimport { AppText } from '@\u002Fshared\u002Fui';\n\ntype TripCardProps = {\n  trip: Trip;\n  onPress?: (trip: Trip) => void;\n};\n\nfunction TripCardComponent({ trip, onPress }: TripCardProps) {\n  const { colors, spacing, radius } = useTheme();\n\n  return (\n    \u003CPressable\n      accessibilityRole=\"button\"\n      accessibilityLabel={`Поїздка ${trip.title}`}\n      onPress={() => onPress?.(trip)}\n      style={({ pressed }) => [\n        styles.card,\n        {\n          backgroundColor: colors.surface,\n          borderColor: colors.border,\n          borderRadius: radius.lg,\n        },\n        pressed && styles.cardPressed,\n      ]}\n    >\n      \u003CImage\n        source={{ uri: trip.coverUri }}\n        style={[styles.cover, { backgroundColor: colors.border }]}\n        resizeMode=\"cover\"\n        accessibilityIgnoresInvertColors\n      \u002F>\n      \u003CView style={[styles.body, { padding: spacing.md, gap: spacing.xs }]}>\n        \u003CView style={[styles.titleRow, { gap: spacing.sm }]}>\n          \u003CAppText variant=\"subtitle\" numberOfLines={1} style={styles.titleFlex}>\n            {trip.title}\n          \u003C\u002FAppText>\n          \u003CAppText variant=\"caption\" style={styles.dates}>\n            {trip.dateLabel}\n          \u003C\u002FAppText>\n        \u003C\u002FView>\n        \u003CAppText variant=\"caption\" color={colors.primary} style={styles.region}>\n          {trip.region}\n          {trip.plannedDays\n            ? ` · ${trip.plannedDays} ${trip.plannedDays === 1 ? 'день' : 'дні'}`\n            : ''}\n        \u003C\u002FAppText>\n        {(trip.isPrivate || trip.hasItinerary) && (\n          \u003CView style={[styles.badges, { gap: spacing.xs, marginTop: spacing.xs }]}>\n            {trip.isPrivate ? (\n              \u003CAppText\n                variant=\"caption\"\n                style={[styles.badge, { color: colors.textSecondary }]}\n              >\n                приватна\n              \u003C\u002FAppText>\n            ) : null}\n            {trip.hasItinerary ? (\n              \u003CAppText\n                variant=\"caption\"\n                style={[styles.badge, { color: colors.primary }]}\n              >\n                є план\n              \u003C\u002FAppText>\n            ) : null}\n          \u003C\u002FView>\n        )}\n        \u003CAppText\n          numberOfLines={2}\n          style={{ marginTop: spacing.xs, color: colors.textSecondary }}\n        >\n          {trip.description}\n        \u003C\u002FAppText>\n        \u003CView style={[styles.footer, { marginTop: spacing.sm }]}>\n          \u003CAppText variant=\"caption\" color={colors.primary}>\n            Відкрити\n          \u003C\u002FAppText>\n        \u003C\u002FView>\n      \u003C\u002FView>\n    \u003C\u002FPressable>\n  );\n}\n\n\u002F** memo: рядок списку не перемальовується, якщо props ті самі. *\u002F\nexport const TripCard = memo(TripCardComponent);\n\nconst styles = StyleSheet.create({\n  card: {\n    borderWidth: 1,\n    overflow: 'hidden',\n    ...Platform.select({\n      ios: {\n        shadowColor: '#000',\n        shadowOpacity: 0.08,\n        shadowRadius: 10,\n        shadowOffset: { width: 0, height: 4 },\n      },\n      android: {\n        elevation: 3,\n      },\n      default: {},\n    }),\n  },\n  cardPressed: {\n    opacity: 0.92,\n  },\n  cover: {\n    width: '100%',\n    height: 160,\n  },\n  body: {},\n  titleRow: {\n    flexDirection: 'row',\n    alignItems: 'center',\n  },\n  titleFlex: {\n    flex: 1,\n  },\n  dates: {\n    flexShrink: 0,\n  },\n  region: {\n    fontWeight: '600',\n  },\n  badges: {\n    flexDirection: 'row',\n    flexWrap: 'wrap',\n  },\n  badge: {\n    fontWeight: '600',\n    fontSize: 12,\n  },\n  footer: {\n    alignItems: 'flex-start',\n  },\n});\n","src\u002Ffeatures\u002Ftrips\u002Fui\u002FTripCard.tsx",[3747,33098,33099,33116,33149,33153,33171,33187,33203,33207,33216,33227,33249,33253,33257,33279,33301,33305,33311,33317,33326,33352,33376,33396,33406,33410,33422,33435,33448,33452,33468,33474,33478,33485,33510,33541,33551,33556,33560,33606,33643,33683,33695,33703,33732,33745,33753,33761,33803,33815,33826,33868,33876,33884,33912,33959,33973,33979,33988,34019,34023,34028,34036,34045,34059,34065,34073,34103,34107,34112,34120,34128,34136,34142,34148,34161,34193,34197,34209,34217,34253,34281,34286,34294,34302,34310,34318,34322,34326,34330,34335,34355,34359,34375,34381,34389,34397,34411,34418,34428,34438,34447,34466,34470,34477,34486,34490,34498,34502,34506,34513,34523,34527,34534,34542,34552,34556,34562,34569,34577,34585,34589,34596,34604,34608,34615,34623,34627,34634,34642,34646,34653,34661,34669,34673,34680,34688,34696,34700,34706,34715,34719],{"__ignoreMap":3992},[3996,33100,33101,33103,33105,33108,33110,33112,33114],{"class":3998,"line":3999},[3996,33102,5501],{"class":4057},[3996,33104,5504],{"class":4006},[3996,33106,33107],{"class":4064},"memo",[3996,33109,5509],{"class":4006},[3996,33111,5512],{"class":4057},[3996,33113,7869],{"class":4029},[3996,33115,4123],{"class":4006},[3996,33117,33118,33120,33122,33125,33127,33129,33131,33133,33135,33137,33139,33141,33143,33145,33147],{"class":3998,"line":4047},[3996,33119,5501],{"class":4057},[3996,33121,5504],{"class":4006},[3996,33123,33124],{"class":4064},"Image",[3996,33126,3867],{"class":4006},[3996,33128,26817],{"class":4064},[3996,33130,3867],{"class":4006},[3996,33132,7896],{"class":4064},[3996,33134,3867],{"class":4006},[3996,33136,8741],{"class":4064},[3996,33138,3867],{"class":4006},[3996,33140,11340],{"class":4064},[3996,33142,5509],{"class":4006},[3996,33144,5512],{"class":4057},[3996,33146,7908],{"class":4029},[3996,33148,4123],{"class":4006},[3996,33150,33151],{"class":3998,"line":4054},[3996,33152,4051],{"emptyLinePlaceholder":4050},[3996,33154,33155,33157,33159,33161,33163,33165,33167,33169],{"class":3998,"line":4075},[3996,33156,5501],{"class":4057},[3996,33158,10138],{"class":4057},[3996,33160,5504],{"class":4006},[3996,33162,16320],{"class":4064},[3996,33164,5509],{"class":4006},[3996,33166,5512],{"class":4057},[3996,33168,25884],{"class":4029},[3996,33170,4123],{"class":4006},[3996,33172,33173,33175,33177,33179,33181,33183,33185],{"class":3998,"line":4126},[3996,33174,5501],{"class":4057},[3996,33176,5504],{"class":4006},[3996,33178,5564],{"class":4064},[3996,33180,5509],{"class":4006},[3996,33182,5512],{"class":4057},[3996,33184,5571],{"class":4029},[3996,33186,4123],{"class":4006},[3996,33188,33189,33191,33193,33195,33197,33199,33201],{"class":3998,"line":4132},[3996,33190,5501],{"class":4057},[3996,33192,5504],{"class":4006},[3996,33194,16052],{"class":4064},[3996,33196,5509],{"class":4006},[3996,33198,5512],{"class":4057},[3996,33200,16068],{"class":4029},[3996,33202,4123],{"class":4006},[3996,33204,33205],{"class":3998,"line":4137},[3996,33206,4051],{"emptyLinePlaceholder":4050},[3996,33208,33209,33211,33214],{"class":3998,"line":4275},[3996,33210,16032],{"class":4002},[3996,33212,33213],{"class":4085}," TripCardProps",[3996,33215,10144],{"class":4006},[3996,33217,33218,33221,33223,33225],{"class":3998,"line":4281},[3996,33219,33220],{"class":4064},"  trip",[3996,33222,8990],{"class":4006},[3996,33224,16320],{"class":4085},[3996,33226,4123],{"class":4006},[3996,33228,33229,33232,33235,33237,33239,33241,33243,33245,33247],{"class":3998,"line":4287},[3996,33230,33231],{"class":4022},"  onPress",[3996,33233,33234],{"class":4006},"?: (",[3996,33236,16315],{"class":4064},[3996,33238,8990],{"class":4006},[3996,33240,16320],{"class":4085},[3996,33242,8996],{"class":4006},[3996,33244,4103],{"class":4002},[3996,33246,23817],{"class":4085},[3996,33248,4123],{"class":4006},[3996,33250,33251],{"class":3998,"line":4293},[3996,33252,10203],{"class":4006},[3996,33254,33255],{"class":3998,"line":4299},[3996,33256,4051],{"emptyLinePlaceholder":4050},[3996,33258,33259,33261,33264,33266,33268,33270,33272,33274,33277],{"class":3998,"line":4305},[3996,33260,5582],{"class":4002},[3996,33262,33263],{"class":4022}," TripCardComponent",[3996,33265,7759],{"class":4006},[3996,33267,16315],{"class":4064},[3996,33269,3867],{"class":4006},[3996,33271,8706],{"class":4064},[3996,33273,23924],{"class":4006},[3996,33275,33276],{"class":4085},"TripCardProps",[3996,33278,4072],{"class":4006},[3996,33280,33281,33283,33285,33287,33289,33291,33293,33295,33297,33299],{"class":3998,"line":4311},[3996,33282,5593],{"class":4002},[3996,33284,5504],{"class":4006},[3996,33286,5598],{"class":4010},[3996,33288,3867],{"class":4006},[3996,33290,16226],{"class":4010},[3996,33292,3867],{"class":4006},[3996,33294,26249],{"class":4010},[3996,33296,5606],{"class":4006},[3996,33298,5564],{"class":4022},[3996,33300,5611],{"class":4006},[3996,33302,33303],{"class":3998,"line":4317},[3996,33304,4051],{"emptyLinePlaceholder":4050},[3996,33306,33307,33309],{"class":3998,"line":4323},[3996,33308,4078],{"class":4057},[3996,33310,5622],{"class":4006},[3996,33312,33313,33315],{"class":3998,"line":4329},[3996,33314,5969],{"class":4081},[3996,33316,17832],{"class":4085},[3996,33318,33319,33322,33324],{"class":3998,"line":4335},[3996,33320,33321],{"class":4089},"      accessibilityRole",[3996,33323,4093],{"class":4006},[3996,33325,17976],{"class":4029},[3996,33327,33328,33331,33333,33335,33338,33340,33342,33344,33346,33348,33350],{"class":3998,"line":4341},[3996,33329,33330],{"class":4089},"      accessibilityLabel",[3996,33332,4093],{"class":4006},[3996,33334,4096],{"class":4002},[3996,33336,33337],{"class":4029},"`Поїздка ",[3996,33339,11717],{"class":4002},[3996,33341,16315],{"class":4064},[3996,33343,3821],{"class":4099},[3996,33345,7585],{"class":4064},[3996,33347,4117],{"class":4002},[3996,33349,11728],{"class":4029},[3996,33351,4129],{"class":4002},[3996,33353,33354,33357,33359,33361,33363,33365,33367,33370,33372,33374],{"class":3998,"line":4347},[3996,33355,33356],{"class":4089},"      onPress",[3996,33358,4093],{"class":4006},[3996,33360,4096],{"class":4002},[3996,33362,4100],{"class":4099},[3996,33364,4103],{"class":4002},[3996,33366,8004],{"class":4022},[3996,33368,33369],{"class":4099},"?.(",[3996,33371,16315],{"class":4064},[3996,33373,4114],{"class":4099},[3996,33375,4129],{"class":4002},[3996,33377,33378,33380,33382,33384,33386,33389,33391,33393],{"class":3998,"line":4352},[3996,33379,17078],{"class":4089},[3996,33381,4093],{"class":4006},[3996,33383,4096],{"class":4002},[3996,33385,7759],{"class":4099},[3996,33387,33388],{"class":4064},"pressed",[3996,33390,6881],{"class":4099},[3996,33392,4103],{"class":4002},[3996,33394,33395],{"class":4099}," [\n",[3996,33397,33398,33400,33402,33404],{"class":3998,"line":4357},[3996,33399,17091],{"class":4064},[3996,33401,3821],{"class":4099},[3996,33403,11753],{"class":4064},[3996,33405,5720],{"class":4099},[3996,33407,33408],{"class":3998,"line":4363},[3996,33409,17104],{"class":4099},[3996,33411,33412,33414,33416,33418,33420],{"class":3998,"line":4369},[3996,33413,11001],{"class":4064},[3996,33415,5697],{"class":4064},[3996,33417,3821],{"class":4099},[3996,33419,17935],{"class":4064},[3996,33421,5720],{"class":4099},[3996,33423,33424,33427,33429,33431,33433],{"class":3998,"line":4375},[3996,33425,33426],{"class":4064},"          borderColor:",[3996,33428,5697],{"class":4064},[3996,33430,3821],{"class":4099},[3996,33432,15476],{"class":4064},[3996,33434,5720],{"class":4099},[3996,33436,33437,33440,33442,33444,33446],{"class":3998,"line":4381},[3996,33438,33439],{"class":4064},"          borderRadius:",[3996,33441,27467],{"class":4064},[3996,33443,3821],{"class":4099},[3996,33445,31452],{"class":4064},[3996,33447,5720],{"class":4099},[3996,33449,33450],{"class":3998,"line":4387},[3996,33451,11020],{"class":4099},[3996,33453,33454,33457,33459,33461,33463,33466],{"class":3998,"line":4392},[3996,33455,33456],{"class":4064},"        pressed",[3996,33458,31170],{"class":4006},[3996,33460,11925],{"class":4064},[3996,33462,3821],{"class":4099},[3996,33464,33465],{"class":4064},"cardPressed",[3996,33467,5720],{"class":4099},[3996,33469,33470,33472],{"class":3998,"line":4398},[3996,33471,17158],{"class":4099},[3996,33473,4129],{"class":4002},[3996,33475,33476],{"class":3998,"line":4404},[3996,33477,11054],{"class":4081},[3996,33479,33480,33482],{"class":3998,"line":4410},[3996,33481,5632],{"class":4081},[3996,33483,33484],{"class":4085},"Image\n",[3996,33486,33487,33490,33492,33494,33496,33499,33501,33503,33506,33508],{"class":3998,"line":4415},[3996,33488,33489],{"class":4089},"        source",[3996,33491,4093],{"class":4006},[3996,33493,4096],{"class":4002},[3996,33495,5812],{"class":4099},[3996,33497,33498],{"class":4064},"uri:",[3996,33500,16563],{"class":4064},[3996,33502,3821],{"class":4099},[3996,33504,33505],{"class":4064},"coverUri",[3996,33507,5821],{"class":4099},[3996,33509,4129],{"class":4002},[3996,33511,33512,33514,33516,33518,33520,33522,33524,33527,33529,33531,33533,33535,33537,33539],{"class":3998,"line":4420},[3996,33513,17255],{"class":4089},[3996,33515,4093],{"class":4006},[3996,33517,4096],{"class":4002},[3996,33519,11457],{"class":4099},[3996,33521,8789],{"class":4064},[3996,33523,3821],{"class":4099},[3996,33525,33526],{"class":4064},"cover",[3996,33528,17742],{"class":4099},[3996,33530,5694],{"class":4064},[3996,33532,5697],{"class":4064},[3996,33534,3821],{"class":4099},[3996,33536,15476],{"class":4064},[3996,33538,17763],{"class":4099},[3996,33540,4129],{"class":4002},[3996,33542,33543,33546,33548],{"class":3998,"line":4426},[3996,33544,33545],{"class":4089},"        resizeMode",[3996,33547,4093],{"class":4006},[3996,33549,33550],{"class":4029},"\"cover\"\n",[3996,33552,33553],{"class":3998,"line":4432},[3996,33554,33555],{"class":4089},"        accessibilityIgnoresInvertColors\n",[3996,33557,33558],{"class":3998,"line":4438},[3996,33559,11164],{"class":4081},[3996,33561,33562,33564,33566,33568,33570,33572,33574,33576,33578,33580,33582,33584,33586,33588,33590,33592,33594,33596,33598,33600,33602,33604],{"class":3998,"line":4443},[3996,33563,5632],{"class":4081},[3996,33565,11340],{"class":4085},[3996,33567,5637],{"class":4089},[3996,33569,4093],{"class":4006},[3996,33571,4096],{"class":4002},[3996,33573,11457],{"class":4099},[3996,33575,8789],{"class":4064},[3996,33577,3821],{"class":4099},[3996,33579,12417],{"class":4064},[3996,33581,17742],{"class":4099},[3996,33583,12080],{"class":4064},[3996,33585,16673],{"class":4064},[3996,33587,3821],{"class":4099},[3996,33589,16678],{"class":4064},[3996,33591,3867],{"class":4099},[3996,33593,12652],{"class":4064},[3996,33595,16673],{"class":4064},[3996,33597,3821],{"class":4099},[3996,33599,17429],{"class":4064},[3996,33601,17763],{"class":4099},[3996,33603,4117],{"class":4002},[3996,33605,5924],{"class":4081},[3996,33607,33608,33610,33612,33614,33616,33618,33620,33622,33624,33627,33629,33631,33633,33635,33637,33639,33641],{"class":3998,"line":4448},[3996,33609,5791],{"class":4081},[3996,33611,11340],{"class":4085},[3996,33613,5637],{"class":4089},[3996,33615,4093],{"class":4006},[3996,33617,4096],{"class":4002},[3996,33619,11457],{"class":4099},[3996,33621,8789],{"class":4064},[3996,33623,3821],{"class":4099},[3996,33625,33626],{"class":4064},"titleRow",[3996,33628,17742],{"class":4099},[3996,33630,12652],{"class":4064},[3996,33632,16673],{"class":4064},[3996,33634,3821],{"class":4099},[3996,33636,16741],{"class":4064},[3996,33638,17763],{"class":4099},[3996,33640,4117],{"class":4002},[3996,33642,5924],{"class":4081},[3996,33644,33645,33647,33649,33651,33653,33655,33658,33660,33662,33664,33666,33668,33670,33672,33674,33676,33679,33681],{"class":3998,"line":4454},[3996,33646,8031],{"class":4081},[3996,33648,16052],{"class":4085},[3996,33650,17175],{"class":4089},[3996,33652,4093],{"class":4006},[3996,33654,17180],{"class":4029},[3996,33656,33657],{"class":4089}," numberOfLines",[3996,33659,4093],{"class":4006},[3996,33661,4096],{"class":4002},[3996,33663,22871],{"class":11033},[3996,33665,4117],{"class":4002},[3996,33667,5637],{"class":4089},[3996,33669,4093],{"class":4006},[3996,33671,4096],{"class":4002},[3996,33673,8789],{"class":4064},[3996,33675,3821],{"class":4099},[3996,33677,33678],{"class":4064},"titleFlex",[3996,33680,4117],{"class":4002},[3996,33682,5924],{"class":4081},[3996,33684,33685,33687,33689,33691,33693],{"class":3998,"line":4460},[3996,33686,20670],{"class":4002},[3996,33688,16315],{"class":4064},[3996,33690,3821],{"class":4099},[3996,33692,7585],{"class":4064},[3996,33694,4129],{"class":4002},[3996,33696,33697,33699,33701],{"class":3998,"line":4466},[3996,33698,11883],{"class":4081},[3996,33700,16052],{"class":4085},[3996,33702,5924],{"class":4081},[3996,33704,33705,33707,33709,33711,33713,33715,33717,33719,33721,33723,33725,33728,33730],{"class":3998,"line":4472},[3996,33706,8031],{"class":4081},[3996,33708,16052],{"class":4085},[3996,33710,17175],{"class":4089},[3996,33712,4093],{"class":4006},[3996,33714,17503],{"class":4029},[3996,33716,5637],{"class":4089},[3996,33718,4093],{"class":4006},[3996,33720,4096],{"class":4002},[3996,33722,8789],{"class":4064},[3996,33724,3821],{"class":4099},[3996,33726,33727],{"class":4064},"dates",[3996,33729,4117],{"class":4002},[3996,33731,5924],{"class":4081},[3996,33733,33734,33736,33738,33740,33743],{"class":3998,"line":4477},[3996,33735,20670],{"class":4002},[3996,33737,16315],{"class":4064},[3996,33739,3821],{"class":4099},[3996,33741,33742],{"class":4064},"dateLabel",[3996,33744,4129],{"class":4002},[3996,33746,33747,33749,33751],{"class":3998,"line":5066},[3996,33748,11883],{"class":4081},[3996,33750,16052],{"class":4085},[3996,33752,5924],{"class":4081},[3996,33754,33755,33757,33759],{"class":3998,"line":5072},[3996,33756,8074],{"class":4081},[3996,33758,11340],{"class":4085},[3996,33760,5924],{"class":4081},[3996,33762,33763,33765,33767,33769,33771,33773,33775,33777,33779,33781,33783,33785,33787,33789,33791,33793,33795,33797,33799,33801],{"class":3998,"line":5078},[3996,33764,5791],{"class":4081},[3996,33766,16052],{"class":4085},[3996,33768,17175],{"class":4089},[3996,33770,4093],{"class":4006},[3996,33772,17503],{"class":4029},[3996,33774,6913],{"class":4089},[3996,33776,4093],{"class":4006},[3996,33778,4096],{"class":4002},[3996,33780,5598],{"class":4064},[3996,33782,3821],{"class":4099},[3996,33784,5717],{"class":4064},[3996,33786,4117],{"class":4002},[3996,33788,5637],{"class":4089},[3996,33790,4093],{"class":4006},[3996,33792,4096],{"class":4002},[3996,33794,8789],{"class":4064},[3996,33796,3821],{"class":4099},[3996,33798,11829],{"class":4064},[3996,33800,4117],{"class":4002},[3996,33802,5924],{"class":4081},[3996,33804,33805,33807,33809,33811,33813],{"class":3998,"line":5084},[3996,33806,17646],{"class":4002},[3996,33808,16315],{"class":4064},[3996,33810,3821],{"class":4099},[3996,33812,11829],{"class":4064},[3996,33814,4129],{"class":4002},[3996,33816,33817,33819,33821,33823],{"class":3998,"line":5090},[3996,33818,17646],{"class":4002},[3996,33820,16315],{"class":4064},[3996,33822,3821],{"class":4099},[3996,33824,33825],{"class":4064},"plannedDays\n",[3996,33827,33828,33830,33833,33835,33837,33839,33841,33843,33845,33847,33849,33851,33853,33855,33857,33859,33861,33863,33865],{"class":3998,"line":5096},[3996,33829,17663],{"class":4006},[3996,33831,33832],{"class":4029}," ` · ",[3996,33834,11717],{"class":4002},[3996,33836,16315],{"class":4064},[3996,33838,3821],{"class":4099},[3996,33840,26726],{"class":4064},[3996,33842,4117],{"class":4002},[3996,33844,23231],{"class":4002},[3996,33846,16315],{"class":4064},[3996,33848,3821],{"class":4099},[3996,33850,26726],{"class":4064},[3996,33852,5646],{"class":4006},[3996,33854,11949],{"class":11033},[3996,33856,5652],{"class":4006},[3996,33858,29876],{"class":4029},[3996,33860,5658],{"class":4006},[3996,33862,29908],{"class":4029},[3996,33864,4117],{"class":4002},[3996,33866,33867],{"class":4029},"`\n",[3996,33869,33870,33872,33874],{"class":3998,"line":10510},[3996,33871,17698],{"class":4006},[3996,33873,26366],{"class":4029},[3996,33875,4129],{"class":4002},[3996,33877,33878,33880,33882],{"class":3998,"line":10516},[3996,33879,8074],{"class":4081},[3996,33881,16052],{"class":4085},[3996,33883,5924],{"class":4081},[3996,33885,33886,33888,33890,33892,33894,33896,33899,33901,33903,33905,33907,33910],{"class":3998,"line":10521},[3996,33887,5780],{"class":4002},[3996,33889,4109],{"class":4099},[3996,33891,16315],{"class":4064},[3996,33893,3821],{"class":4099},[3996,33895,26713],{"class":4064},[3996,33897,33898],{"class":4006}," ||",[3996,33900,16563],{"class":4064},[3996,33902,3821],{"class":4099},[3996,33904,26739],{"class":4064},[3996,33906,8996],{"class":4099},[3996,33908,33909],{"class":4006},"&&",[3996,33911,5622],{"class":4099},[3996,33913,33914,33916,33918,33920,33922,33924,33926,33928,33930,33933,33935,33937,33939,33941,33943,33945,33947,33949,33951,33953,33955,33957],{"class":3998,"line":10552},[3996,33915,8031],{"class":4081},[3996,33917,11340],{"class":4085},[3996,33919,5637],{"class":4089},[3996,33921,4093],{"class":4006},[3996,33923,4096],{"class":4002},[3996,33925,11457],{"class":4099},[3996,33927,8789],{"class":4064},[3996,33929,3821],{"class":4099},[3996,33931,33932],{"class":4064},"badges",[3996,33934,17742],{"class":4099},[3996,33936,12652],{"class":4064},[3996,33938,16673],{"class":4064},[3996,33940,3821],{"class":4099},[3996,33942,17429],{"class":4064},[3996,33944,3867],{"class":4099},[3996,33946,12052],{"class":4064},[3996,33948,16673],{"class":4064},[3996,33950,3821],{"class":4099},[3996,33952,17429],{"class":4064},[3996,33954,17763],{"class":4099},[3996,33956,4117],{"class":4002},[3996,33958,5924],{"class":4081},[3996,33960,33961,33963,33965,33967,33969,33971],{"class":3998,"line":10587},[3996,33962,20670],{"class":4002},[3996,33964,16315],{"class":4064},[3996,33966,3821],{"class":4099},[3996,33968,26713],{"class":4064},[3996,33970,5652],{"class":4006},[3996,33972,5622],{"class":4099},[3996,33974,33975,33977],{"class":3998,"line":12205},[3996,33976,11762],{"class":4081},[3996,33978,17220],{"class":4085},[3996,33980,33981,33984,33986],{"class":3998,"line":12213},[3996,33982,33983],{"class":4089},"                variant",[3996,33985,4093],{"class":4006},[3996,33987,17231],{"class":4029},[3996,33989,33990,33992,33994,33996,33998,34000,34002,34005,34007,34009,34011,34013,34015,34017],{"class":3998,"line":12223},[3996,33991,17885],{"class":4089},[3996,33993,4093],{"class":4006},[3996,33995,4096],{"class":4002},[3996,33997,11457],{"class":4099},[3996,33999,8789],{"class":4064},[3996,34001,3821],{"class":4099},[3996,34003,34004],{"class":4064},"badge",[3996,34006,17742],{"class":4099},[3996,34008,5730],{"class":4064},[3996,34010,5697],{"class":4064},[3996,34012,3821],{"class":4099},[3996,34014,15445],{"class":4064},[3996,34016,17763],{"class":4099},[3996,34018,4129],{"class":4002},[3996,34020,34021],{"class":3998,"line":12233},[3996,34022,18030],{"class":4081},[3996,34024,34025],{"class":3998,"line":12243},[3996,34026,34027],{"class":4099},"                приватна\n",[3996,34029,34030,34032,34034],{"class":3998,"line":12253},[3996,34031,18135],{"class":4081},[3996,34033,16052],{"class":4085},[3996,34035,5924],{"class":4081},[3996,34037,34038,34041,34043],{"class":3998,"line":12258},[3996,34039,34040],{"class":4099},"            ) ",[3996,34042,6869],{"class":4006},[3996,34044,16996],{"class":4002},[3996,34046,34047,34049,34051,34053,34055,34057],{"class":3998,"line":16645},[3996,34048,20670],{"class":4002},[3996,34050,16315],{"class":4064},[3996,34052,3821],{"class":4099},[3996,34054,26739],{"class":4064},[3996,34056,5652],{"class":4006},[3996,34058,5622],{"class":4099},[3996,34060,34061,34063],{"class":3998,"line":16656},[3996,34062,11762],{"class":4081},[3996,34064,17220],{"class":4085},[3996,34066,34067,34069,34071],{"class":3998,"line":16698},[3996,34068,33983],{"class":4089},[3996,34070,4093],{"class":4006},[3996,34072,17231],{"class":4029},[3996,34074,34075,34077,34079,34081,34083,34085,34087,34089,34091,34093,34095,34097,34099,34101],{"class":3998,"line":16720},[3996,34076,17885],{"class":4089},[3996,34078,4093],{"class":4006},[3996,34080,4096],{"class":4002},[3996,34082,11457],{"class":4099},[3996,34084,8789],{"class":4064},[3996,34086,3821],{"class":4099},[3996,34088,34004],{"class":4064},[3996,34090,17742],{"class":4099},[3996,34092,5730],{"class":4064},[3996,34094,5697],{"class":4064},[3996,34096,3821],{"class":4099},[3996,34098,5717],{"class":4064},[3996,34100,17763],{"class":4099},[3996,34102,4129],{"class":4002},[3996,34104,34105],{"class":3998,"line":16750},[3996,34106,18030],{"class":4081},[3996,34108,34109],{"class":3998,"line":16784},[3996,34110,34111],{"class":4099},"                є план\n",[3996,34113,34114,34116,34118],{"class":3998,"line":16791},[3996,34115,18135],{"class":4081},[3996,34117,16052],{"class":4085},[3996,34119,5924],{"class":4081},[3996,34121,34122,34124,34126],{"class":3998,"line":16797},[3996,34123,34040],{"class":4099},[3996,34125,6869],{"class":4006},[3996,34127,16996],{"class":4002},[3996,34129,34130,34132,34134],{"class":3998,"line":16811},[3996,34131,11883],{"class":4081},[3996,34133,11340],{"class":4085},[3996,34135,5924],{"class":4081},[3996,34137,34138,34140],{"class":3998,"line":16837},[3996,34139,11892],{"class":4099},[3996,34141,4129],{"class":4002},[3996,34143,34144,34146],{"class":3998,"line":16857},[3996,34145,5791],{"class":4081},[3996,34147,17220],{"class":4085},[3996,34149,34150,34153,34155,34157,34159],{"class":3998,"line":16889},[3996,34151,34152],{"class":4089},"          numberOfLines",[3996,34154,4093],{"class":4006},[3996,34156,4096],{"class":4002},[3996,34158,19532],{"class":11033},[3996,34160,4129],{"class":4002},[3996,34162,34163,34165,34167,34169,34171,34173,34175,34177,34179,34181,34183,34185,34187,34189,34191],{"class":3998,"line":16897},[3996,34164,17583],{"class":4089},[3996,34166,4093],{"class":4006},[3996,34168,4096],{"class":4002},[3996,34170,5812],{"class":4099},[3996,34172,12052],{"class":4064},[3996,34174,16673],{"class":4064},[3996,34176,3821],{"class":4099},[3996,34178,17429],{"class":4064},[3996,34180,3867],{"class":4099},[3996,34182,5730],{"class":4064},[3996,34184,5697],{"class":4064},[3996,34186,3821],{"class":4099},[3996,34188,15445],{"class":4064},[3996,34190,5821],{"class":4099},[3996,34192,4129],{"class":4002},[3996,34194,34195],{"class":3998,"line":16908},[3996,34196,17640],{"class":4081},[3996,34198,34199,34201,34203,34205,34207],{"class":3998,"line":16951},[3996,34200,17646],{"class":4002},[3996,34202,16315],{"class":4064},[3996,34204,3821],{"class":4099},[3996,34206,13339],{"class":4064},[3996,34208,4129],{"class":4002},[3996,34210,34211,34213,34215],{"class":3998,"line":16973},[3996,34212,8074],{"class":4081},[3996,34214,16052],{"class":4085},[3996,34216,5924],{"class":4081},[3996,34218,34219,34221,34223,34225,34227,34229,34231,34233,34235,34237,34239,34241,34243,34245,34247,34249,34251],{"class":3998,"line":16979},[3996,34220,5791],{"class":4081},[3996,34222,11340],{"class":4085},[3996,34224,5637],{"class":4089},[3996,34226,4093],{"class":4006},[3996,34228,4096],{"class":4002},[3996,34230,11457],{"class":4099},[3996,34232,8789],{"class":4064},[3996,34234,3821],{"class":4099},[3996,34236,18536],{"class":4064},[3996,34238,17742],{"class":4099},[3996,34240,12052],{"class":4064},[3996,34242,16673],{"class":4064},[3996,34244,3821],{"class":4099},[3996,34246,16741],{"class":4064},[3996,34248,17763],{"class":4099},[3996,34250,4117],{"class":4002},[3996,34252,5924],{"class":4081},[3996,34254,34255,34257,34259,34261,34263,34265,34267,34269,34271,34273,34275,34277,34279],{"class":3998,"line":16988},[3996,34256,8031],{"class":4081},[3996,34258,16052],{"class":4085},[3996,34260,17175],{"class":4089},[3996,34262,4093],{"class":4006},[3996,34264,17503],{"class":4029},[3996,34266,6913],{"class":4089},[3996,34268,4093],{"class":4006},[3996,34270,4096],{"class":4002},[3996,34272,5598],{"class":4064},[3996,34274,3821],{"class":4099},[3996,34276,5717],{"class":4064},[3996,34278,4117],{"class":4002},[3996,34280,5924],{"class":4081},[3996,34282,34283],{"class":3998,"line":16999},[3996,34284,34285],{"class":4006},"            Відкрити\n",[3996,34287,34288,34290,34292],{"class":3998,"line":17004},[3996,34289,11883],{"class":4081},[3996,34291,16052],{"class":4085},[3996,34293,5924],{"class":4081},[3996,34295,34296,34298,34300],{"class":3998,"line":17038},[3996,34297,8074],{"class":4081},[3996,34299,11340],{"class":4085},[3996,34301,5924],{"class":4081},[3996,34303,34304,34306,34308],{"class":3998,"line":17047},[3996,34305,5919],{"class":4081},[3996,34307,11340],{"class":4085},[3996,34309,5924],{"class":4081},[3996,34311,34312,34314,34316],{"class":3998,"line":17052},[3996,34313,6003],{"class":4081},[3996,34315,7896],{"class":4085},[3996,34317,5924],{"class":4081},[3996,34319,34320],{"class":3998,"line":17057},[3996,34321,5934],{"class":4006},[3996,34323,34324],{"class":3998,"line":17067},[3996,34325,4129],{"class":4006},[3996,34327,34328],{"class":3998,"line":17075},[3996,34329,4051],{"emptyLinePlaceholder":4050},[3996,34331,34332],{"class":3998,"line":17088},[3996,34333,34334],{"class":5783},"\u002F** memo: рядок списку не перемальовується, якщо props ті самі. *\u002F\n",[3996,34336,34337,34339,34341,34344,34346,34348,34350,34353],{"class":3998,"line":17101},[3996,34338,5947],{"class":4057},[3996,34340,10214],{"class":4002},[3996,34342,34343],{"class":4010}," TripCard",[3996,34345,7937],{"class":4006},[3996,34347,33107],{"class":4022},[3996,34349,4109],{"class":4006},[3996,34351,34352],{"class":4064},"TripCardComponent",[3996,34354,4044],{"class":4006},[3996,34356,34357],{"class":3998,"line":17107},[3996,34358,4051],{"emptyLinePlaceholder":4050},[3996,34360,34361,34363,34365,34367,34369,34371,34373],{"class":3998,"line":17121},[3996,34362,4003],{"class":4002},[3996,34364,11925],{"class":4010},[3996,34366,7937],{"class":4006},[3996,34368,8741],{"class":4064},[3996,34370,3821],{"class":4006},[3996,34372,11934],{"class":4022},[3996,34374,7971],{"class":4006},[3996,34376,34377,34379],{"class":3998,"line":17136},[3996,34378,12097],{"class":4064},[3996,34380,7958],{"class":4006},[3996,34382,34383,34385,34387],{"class":3998,"line":17150},[3996,34384,12123],{"class":4064},[3996,34386,11949],{"class":11033},[3996,34388,5720],{"class":4006},[3996,34390,34391,34393,34395],{"class":3998,"line":17155},[3996,34392,30038],{"class":4064},[3996,34394,30041],{"class":4029},[3996,34396,5720],{"class":4006},[3996,34398,34399,34402,34404,34406,34409],{"class":3998,"line":17163},[3996,34400,34401],{"class":4006},"    ...",[3996,34403,26817],{"class":4064},[3996,34405,3821],{"class":4006},[3996,34407,34408],{"class":4022},"select",[3996,34410,7971],{"class":4006},[3996,34412,34413,34416],{"class":3998,"line":17168},[3996,34414,34415],{"class":4064},"      ios:",[3996,34417,7958],{"class":4006},[3996,34419,34420,34423,34426],{"class":3998,"line":17200},[3996,34421,34422],{"class":4064},"        shadowColor:",[3996,34424,34425],{"class":4029}," '#000'",[3996,34427,5720],{"class":4006},[3996,34429,34430,34433,34436],{"class":3998,"line":17206},[3996,34431,34432],{"class":4064},"        shadowOpacity:",[3996,34434,34435],{"class":11033}," 0.08",[3996,34437,5720],{"class":4006},[3996,34439,34440,34443,34445],{"class":3998,"line":17215},[3996,34441,34442],{"class":4064},"        shadowRadius:",[3996,34444,11672],{"class":11033},[3996,34446,5720],{"class":4006},[3996,34448,34449,34452,34454,34456,34458,34460,34462,34464],{"class":3998,"line":17223},[3996,34450,34451],{"class":4064},"        shadowOffset:",[3996,34453,5504],{"class":4006},[3996,34455,16934],{"class":4064},[3996,34457,16713],{"class":11033},[3996,34459,3867],{"class":4006},[3996,34461,11669],{"class":4064},[3996,34463,12055],{"class":11033},[3996,34465,5705],{"class":4006},[3996,34467,34468],{"class":3998,"line":17234},[3996,34469,14629],{"class":4006},[3996,34471,34472,34475],{"class":3998,"line":17252},[3996,34473,34474],{"class":4064},"      android:",[3996,34476,7958],{"class":4006},[3996,34478,34479,34482,34484],{"class":3998,"line":17271},[3996,34480,34481],{"class":4064},"        elevation:",[3996,34483,26431],{"class":11033},[3996,34485,5720],{"class":4006},[3996,34487,34488],{"class":3998,"line":17276},[3996,34489,14629],{"class":4006},[3996,34491,34492,34495],{"class":3998,"line":17282},[3996,34493,34494],{"class":4064},"      default:",[3996,34496,34497],{"class":4006}," {},\n",[3996,34499,34500],{"class":3998,"line":17291},[3996,34501,22719],{"class":4006},[3996,34503,34504],{"class":3998,"line":17300},[3996,34505,10287],{"class":4006},[3996,34507,34508,34511],{"class":3998,"line":17305},[3996,34509,34510],{"class":4064},"  cardPressed:",[3996,34512,7958],{"class":4006},[3996,34514,34515,34518,34521],{"class":3998,"line":17310},[3996,34516,34517],{"class":4064},"    opacity:",[3996,34519,34520],{"class":11033}," 0.92",[3996,34522,5720],{"class":4006},[3996,34524,34525],{"class":3998,"line":17317},[3996,34526,10287],{"class":4006},[3996,34528,34529,34532],{"class":3998,"line":17341},[3996,34530,34531],{"class":4064},"  cover:",[3996,34533,7958],{"class":4006},[3996,34535,34536,34538,34540],{"class":3998,"line":17348},[3996,34537,32922],{"class":4064},[3996,34539,32925],{"class":4029},[3996,34541,5720],{"class":4006},[3996,34543,34544,34547,34550],{"class":3998,"line":17359},[3996,34545,34546],{"class":4064},"    height:",[3996,34548,34549],{"class":11033}," 160",[3996,34551,5720],{"class":4006},[3996,34553,34554],{"class":3998,"line":17371},[3996,34555,10287],{"class":4006},[3996,34557,34558,34560],{"class":3998,"line":17377},[3996,34559,12641],{"class":4064},[3996,34561,34497],{"class":4006},[3996,34563,34564,34567],{"class":3998,"line":17391},[3996,34565,34566],{"class":4064},"  titleRow:",[3996,34568,7958],{"class":4006},[3996,34570,34571,34573,34575],{"class":3998,"line":17405},[3996,34572,18797],{"class":4064},[3996,34574,18800],{"class":4029},[3996,34576,5720],{"class":4006},[3996,34578,34579,34581,34583],{"class":3998,"line":17419},[3996,34580,13446],{"class":4064},[3996,34582,13439],{"class":4029},[3996,34584,5720],{"class":4006},[3996,34586,34587],{"class":3998,"line":17434},[3996,34588,10287],{"class":4006},[3996,34590,34591,34594],{"class":3998,"line":17448},[3996,34592,34593],{"class":4064},"  titleFlex:",[3996,34595,7958],{"class":4006},[3996,34597,34598,34600,34602],{"class":3998,"line":17454},[3996,34599,13419],{"class":4064},[3996,34601,11949],{"class":11033},[3996,34603,5720],{"class":4006},[3996,34605,34606],{"class":3998,"line":17462},[3996,34607,10287],{"class":4006},[3996,34609,34610,34613],{"class":3998,"line":17467},[3996,34611,34612],{"class":4064},"  dates:",[3996,34614,7958],{"class":4006},[3996,34616,34617,34619,34621],{"class":3998,"line":17492},[3996,34618,33053],{"class":4064},[3996,34620,16713],{"class":11033},[3996,34622,5720],{"class":4006},[3996,34624,34625],{"class":3998,"line":17528},[3996,34626,10287],{"class":4006},[3996,34628,34629,34632],{"class":3998,"line":17554},[3996,34630,34631],{"class":4064},"  region:",[3996,34633,7958],{"class":4006},[3996,34635,34636,34638,34640],{"class":3998,"line":17563},[3996,34637,12236],{"class":4064},[3996,34639,5744],{"class":4029},[3996,34641,5720],{"class":4006},[3996,34643,34644],{"class":3998,"line":17570},[3996,34645,10287],{"class":4006},[3996,34647,34648,34651],{"class":3998,"line":17580},[3996,34649,34650],{"class":4064},"  badges:",[3996,34652,7958],{"class":4006},[3996,34654,34655,34657,34659],{"class":3998,"line":17592},[3996,34656,18797],{"class":4064},[3996,34658,18800],{"class":4029},[3996,34660,5720],{"class":4006},[3996,34662,34663,34665,34667],{"class":3998,"line":17606},[3996,34664,18808],{"class":4064},[3996,34666,18811],{"class":4029},[3996,34668,5720],{"class":4006},[3996,34670,34671],{"class":3998,"line":17620},[3996,34672,10287],{"class":4006},[3996,34674,34675,34678],{"class":3998,"line":17630},[3996,34676,34677],{"class":4064},"  badge:",[3996,34679,7958],{"class":4006},[3996,34681,34682,34684,34686],{"class":3998,"line":17637},[3996,34683,12236],{"class":4064},[3996,34685,5744],{"class":4029},[3996,34687,5720],{"class":4006},[3996,34689,34690,34692,34694],{"class":3998,"line":17643},[3996,34691,12246],{"class":4064},[3996,34693,11034],{"class":11033},[3996,34695,5720],{"class":4006},[3996,34697,34698],{"class":3998,"line":17660},[3996,34699,10287],{"class":4006},[3996,34701,34702,34704],{"class":3998,"line":17695},[3996,34703,18994],{"class":4064},[3996,34705,7958],{"class":4006},[3996,34707,34708,34710,34713],{"class":3998,"line":17706},[3996,34709,13446],{"class":4064},[3996,34711,34712],{"class":4029}," 'flex-start'",[3996,34714,5720],{"class":4006},[3996,34716,34717],{"class":3998,"line":17715},[3996,34718,10287],{"class":4006},[3996,34720,34721],{"class":3998,"line":17720},[3996,34722,12261],{"class":4006},[3987,34724,34727],{"className":3989,"code":34725,"filename":34726,"language":3991,"meta":3992,"style":3992},"import { memo } from 'react';\nimport { Pressable, StyleSheet } from 'react-native';\n\nimport type { Place } from '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes';\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\nimport { AppText } from '@\u002Fshared\u002Fui';\n\ntype PlaceChipProps = {\n  place: Place;\n  onPress?: (place: Place) => void;\n};\n\nfunction PlaceChipComponent({ place, onPress }: PlaceChipProps) {\n  const { colors, spacing, radius } = useTheme();\n\n  return (\n    \u003CPressable\n      accessibilityRole=\"button\"\n      accessibilityLabel={`Місце ${place.name}, ${place.city}`}\n      onPress={() => onPress?.(place)}\n      style={({ pressed }) => [\n        styles.chip,\n        {\n          backgroundColor: colors.surface,\n          borderColor: colors.border,\n          borderRadius: radius.md,\n          padding: spacing.sm,\n          opacity: pressed ? 0.9 : 1,\n        },\n      ]}\n    >\n      \u003CAppText variant=\"subtitle\" numberOfLines={1} style={styles.name}>\n        {place.name}\n      \u003C\u002FAppText>\n      \u003CAppText variant=\"caption\" color={colors.primary} style={styles.city}>\n        {place.city}\n      \u003C\u002FAppText>\n      \u003CAppText variant=\"caption\" numberOfLines={2} style={styles.note}>\n        {place.note}\n      \u003C\u002FAppText>\n    \u003C\u002FPressable>\n  );\n}\n\nexport const PlaceChip = memo(PlaceChipComponent);\n\nconst styles = StyleSheet.create({\n  chip: {\n    width: 160,\n    borderWidth: 1,\n    minHeight: 96,\n  },\n  name: {\n    fontSize: 16,\n  },\n  city: {\n    marginTop: 4,\n    fontWeight: '600',\n  },\n  note: {\n    marginTop: 6,\n  },\n});\n","src\u002Ffeatures\u002Ftrips\u002Fui\u002FPlaceChip.tsx",[3747,34728,34729,34745,34765,34769,34787,34803,34819,34823,34832,34843,34863,34867,34871,34893,34915,34919,34925,34931,34939,34976,34998,35016,35027,35031,35043,35055,35067,35080,35099,35103,35109,35113,35151,35163,35171,35213,35225,35233,35271,35283,35291,35299,35303,35307,35311,35331,35335,35351,35358,35366,35374,35383,35387,35394,35402,35406,35413,35421,35429,35433,35440,35449,35453],{"__ignoreMap":3992},[3996,34730,34731,34733,34735,34737,34739,34741,34743],{"class":3998,"line":3999},[3996,34732,5501],{"class":4057},[3996,34734,5504],{"class":4006},[3996,34736,33107],{"class":4064},[3996,34738,5509],{"class":4006},[3996,34740,5512],{"class":4057},[3996,34742,7869],{"class":4029},[3996,34744,4123],{"class":4006},[3996,34746,34747,34749,34751,34753,34755,34757,34759,34761,34763],{"class":3998,"line":4047},[3996,34748,5501],{"class":4057},[3996,34750,5504],{"class":4006},[3996,34752,7896],{"class":4064},[3996,34754,3867],{"class":4006},[3996,34756,8741],{"class":4064},[3996,34758,5509],{"class":4006},[3996,34760,5512],{"class":4057},[3996,34762,7908],{"class":4029},[3996,34764,4123],{"class":4006},[3996,34766,34767],{"class":3998,"line":4054},[3996,34768,4051],{"emptyLinePlaceholder":4050},[3996,34770,34771,34773,34775,34777,34779,34781,34783,34785],{"class":3998,"line":4075},[3996,34772,5501],{"class":4057},[3996,34774,10138],{"class":4057},[3996,34776,5504],{"class":4006},[3996,34778,16263],{"class":4064},[3996,34780,5509],{"class":4006},[3996,34782,5512],{"class":4057},[3996,34784,25884],{"class":4029},[3996,34786,4123],{"class":4006},[3996,34788,34789,34791,34793,34795,34797,34799,34801],{"class":3998,"line":4126},[3996,34790,5501],{"class":4057},[3996,34792,5504],{"class":4006},[3996,34794,5564],{"class":4064},[3996,34796,5509],{"class":4006},[3996,34798,5512],{"class":4057},[3996,34800,5571],{"class":4029},[3996,34802,4123],{"class":4006},[3996,34804,34805,34807,34809,34811,34813,34815,34817],{"class":3998,"line":4132},[3996,34806,5501],{"class":4057},[3996,34808,5504],{"class":4006},[3996,34810,16052],{"class":4064},[3996,34812,5509],{"class":4006},[3996,34814,5512],{"class":4057},[3996,34816,16068],{"class":4029},[3996,34818,4123],{"class":4006},[3996,34820,34821],{"class":3998,"line":4137},[3996,34822,4051],{"emptyLinePlaceholder":4050},[3996,34824,34825,34827,34830],{"class":3998,"line":4275},[3996,34826,16032],{"class":4002},[3996,34828,34829],{"class":4085}," PlaceChipProps",[3996,34831,10144],{"class":4006},[3996,34833,34834,34837,34839,34841],{"class":3998,"line":4281},[3996,34835,34836],{"class":4064},"  place",[3996,34838,8990],{"class":4006},[3996,34840,16263],{"class":4085},[3996,34842,4123],{"class":4006},[3996,34844,34845,34847,34849,34851,34853,34855,34857,34859,34861],{"class":3998,"line":4287},[3996,34846,33231],{"class":4022},[3996,34848,33234],{"class":4006},[3996,34850,16384],{"class":4064},[3996,34852,8990],{"class":4006},[3996,34854,16263],{"class":4085},[3996,34856,8996],{"class":4006},[3996,34858,4103],{"class":4002},[3996,34860,23817],{"class":4085},[3996,34862,4123],{"class":4006},[3996,34864,34865],{"class":3998,"line":4293},[3996,34866,10203],{"class":4006},[3996,34868,34869],{"class":3998,"line":4299},[3996,34870,4051],{"emptyLinePlaceholder":4050},[3996,34872,34873,34875,34878,34880,34882,34884,34886,34888,34891],{"class":3998,"line":4305},[3996,34874,5582],{"class":4002},[3996,34876,34877],{"class":4022}," PlaceChipComponent",[3996,34879,7759],{"class":4006},[3996,34881,16384],{"class":4064},[3996,34883,3867],{"class":4006},[3996,34885,8706],{"class":4064},[3996,34887,23924],{"class":4006},[3996,34889,34890],{"class":4085},"PlaceChipProps",[3996,34892,4072],{"class":4006},[3996,34894,34895,34897,34899,34901,34903,34905,34907,34909,34911,34913],{"class":3998,"line":4311},[3996,34896,5593],{"class":4002},[3996,34898,5504],{"class":4006},[3996,34900,5598],{"class":4010},[3996,34902,3867],{"class":4006},[3996,34904,16226],{"class":4010},[3996,34906,3867],{"class":4006},[3996,34908,26249],{"class":4010},[3996,34910,5606],{"class":4006},[3996,34912,5564],{"class":4022},[3996,34914,5611],{"class":4006},[3996,34916,34917],{"class":3998,"line":4317},[3996,34918,4051],{"emptyLinePlaceholder":4050},[3996,34920,34921,34923],{"class":3998,"line":4323},[3996,34922,4078],{"class":4057},[3996,34924,5622],{"class":4006},[3996,34926,34927,34929],{"class":3998,"line":4329},[3996,34928,5969],{"class":4081},[3996,34930,17832],{"class":4085},[3996,34932,34933,34935,34937],{"class":3998,"line":4335},[3996,34934,33321],{"class":4089},[3996,34936,4093],{"class":4006},[3996,34938,17976],{"class":4029},[3996,34940,34941,34943,34945,34947,34950,34952,34954,34956,34958,34960,34962,34964,34966,34968,34970,34972,34974],{"class":3998,"line":4341},[3996,34942,33330],{"class":4089},[3996,34944,4093],{"class":4006},[3996,34946,4096],{"class":4002},[3996,34948,34949],{"class":4029},"`Місце ",[3996,34951,11717],{"class":4002},[3996,34953,16384],{"class":4064},[3996,34955,3821],{"class":4099},[3996,34957,6457],{"class":4064},[3996,34959,4117],{"class":4002},[3996,34961,3867],{"class":4029},[3996,34963,11717],{"class":4002},[3996,34965,16384],{"class":4064},[3996,34967,3821],{"class":4099},[3996,34969,12979],{"class":4064},[3996,34971,4117],{"class":4002},[3996,34973,11728],{"class":4029},[3996,34975,4129],{"class":4002},[3996,34977,34978,34980,34982,34984,34986,34988,34990,34992,34994,34996],{"class":3998,"line":4347},[3996,34979,33356],{"class":4089},[3996,34981,4093],{"class":4006},[3996,34983,4096],{"class":4002},[3996,34985,4100],{"class":4099},[3996,34987,4103],{"class":4002},[3996,34989,8004],{"class":4022},[3996,34991,33369],{"class":4099},[3996,34993,16384],{"class":4064},[3996,34995,4114],{"class":4099},[3996,34997,4129],{"class":4002},[3996,34999,35000,35002,35004,35006,35008,35010,35012,35014],{"class":3998,"line":4352},[3996,35001,17078],{"class":4089},[3996,35003,4093],{"class":4006},[3996,35005,4096],{"class":4002},[3996,35007,7759],{"class":4099},[3996,35009,33388],{"class":4064},[3996,35011,6881],{"class":4099},[3996,35013,4103],{"class":4002},[3996,35015,33395],{"class":4099},[3996,35017,35018,35020,35022,35025],{"class":3998,"line":4357},[3996,35019,17091],{"class":4064},[3996,35021,3821],{"class":4099},[3996,35023,35024],{"class":4064},"chip",[3996,35026,5720],{"class":4099},[3996,35028,35029],{"class":3998,"line":4363},[3996,35030,17104],{"class":4099},[3996,35032,35033,35035,35037,35039,35041],{"class":3998,"line":4369},[3996,35034,11001],{"class":4064},[3996,35036,5697],{"class":4064},[3996,35038,3821],{"class":4099},[3996,35040,17935],{"class":4064},[3996,35042,5720],{"class":4099},[3996,35044,35045,35047,35049,35051,35053],{"class":3998,"line":4375},[3996,35046,33426],{"class":4064},[3996,35048,5697],{"class":4064},[3996,35050,3821],{"class":4099},[3996,35052,15476],{"class":4064},[3996,35054,5720],{"class":4099},[3996,35056,35057,35059,35061,35063,35065],{"class":3998,"line":4381},[3996,35058,33439],{"class":4064},[3996,35060,27467],{"class":4064},[3996,35062,3821],{"class":4099},[3996,35064,16678],{"class":4064},[3996,35066,5720],{"class":4099},[3996,35068,35069,35072,35074,35076,35078],{"class":3998,"line":4387},[3996,35070,35071],{"class":4064},"          padding:",[3996,35073,16673],{"class":4064},[3996,35075,3821],{"class":4099},[3996,35077,16741],{"class":4064},[3996,35079,5720],{"class":4099},[3996,35081,35082,35085,35088,35090,35093,35095,35097],{"class":3998,"line":4392},[3996,35083,35084],{"class":4064},"          opacity:",[3996,35086,35087],{"class":4064}," pressed",[3996,35089,5652],{"class":4006},[3996,35091,35092],{"class":11033}," 0.9",[3996,35094,5658],{"class":4006},[3996,35096,11949],{"class":11033},[3996,35098,5720],{"class":4099},[3996,35100,35101],{"class":3998,"line":4398},[3996,35102,11020],{"class":4099},[3996,35104,35105,35107],{"class":3998,"line":4404},[3996,35106,17158],{"class":4099},[3996,35108,4129],{"class":4002},[3996,35110,35111],{"class":3998,"line":4410},[3996,35112,11054],{"class":4081},[3996,35114,35115,35117,35119,35121,35123,35125,35127,35129,35131,35133,35135,35137,35139,35141,35143,35145,35147,35149],{"class":3998,"line":4415},[3996,35116,5632],{"class":4081},[3996,35118,16052],{"class":4085},[3996,35120,17175],{"class":4089},[3996,35122,4093],{"class":4006},[3996,35124,17180],{"class":4029},[3996,35126,33657],{"class":4089},[3996,35128,4093],{"class":4006},[3996,35130,4096],{"class":4002},[3996,35132,22871],{"class":11033},[3996,35134,4117],{"class":4002},[3996,35136,5637],{"class":4089},[3996,35138,4093],{"class":4006},[3996,35140,4096],{"class":4002},[3996,35142,8789],{"class":4064},[3996,35144,3821],{"class":4099},[3996,35146,6457],{"class":4064},[3996,35148,4117],{"class":4002},[3996,35150,5924],{"class":4081},[3996,35152,35153,35155,35157,35159,35161],{"class":3998,"line":4420},[3996,35154,5780],{"class":4002},[3996,35156,16384],{"class":4064},[3996,35158,3821],{"class":4099},[3996,35160,6457],{"class":4064},[3996,35162,4129],{"class":4002},[3996,35164,35165,35167,35169],{"class":3998,"line":4426},[3996,35166,5919],{"class":4081},[3996,35168,16052],{"class":4085},[3996,35170,5924],{"class":4081},[3996,35172,35173,35175,35177,35179,35181,35183,35185,35187,35189,35191,35193,35195,35197,35199,35201,35203,35205,35207,35209,35211],{"class":3998,"line":4432},[3996,35174,5632],{"class":4081},[3996,35176,16052],{"class":4085},[3996,35178,17175],{"class":4089},[3996,35180,4093],{"class":4006},[3996,35182,17503],{"class":4029},[3996,35184,6913],{"class":4089},[3996,35186,4093],{"class":4006},[3996,35188,4096],{"class":4002},[3996,35190,5598],{"class":4064},[3996,35192,3821],{"class":4099},[3996,35194,5717],{"class":4064},[3996,35196,4117],{"class":4002},[3996,35198,5637],{"class":4089},[3996,35200,4093],{"class":4006},[3996,35202,4096],{"class":4002},[3996,35204,8789],{"class":4064},[3996,35206,3821],{"class":4099},[3996,35208,12979],{"class":4064},[3996,35210,4117],{"class":4002},[3996,35212,5924],{"class":4081},[3996,35214,35215,35217,35219,35221,35223],{"class":3998,"line":4438},[3996,35216,5780],{"class":4002},[3996,35218,16384],{"class":4064},[3996,35220,3821],{"class":4099},[3996,35222,12979],{"class":4064},[3996,35224,4129],{"class":4002},[3996,35226,35227,35229,35231],{"class":3998,"line":4443},[3996,35228,5919],{"class":4081},[3996,35230,16052],{"class":4085},[3996,35232,5924],{"class":4081},[3996,35234,35235,35237,35239,35241,35243,35245,35247,35249,35251,35253,35255,35257,35259,35261,35263,35265,35267,35269],{"class":3998,"line":4448},[3996,35236,5632],{"class":4081},[3996,35238,16052],{"class":4085},[3996,35240,17175],{"class":4089},[3996,35242,4093],{"class":4006},[3996,35244,17503],{"class":4029},[3996,35246,33657],{"class":4089},[3996,35248,4093],{"class":4006},[3996,35250,4096],{"class":4002},[3996,35252,19532],{"class":11033},[3996,35254,4117],{"class":4002},[3996,35256,5637],{"class":4089},[3996,35258,4093],{"class":4006},[3996,35260,4096],{"class":4002},[3996,35262,8789],{"class":4064},[3996,35264,3821],{"class":4099},[3996,35266,3915],{"class":4064},[3996,35268,4117],{"class":4002},[3996,35270,5924],{"class":4081},[3996,35272,35273,35275,35277,35279,35281],{"class":3998,"line":4454},[3996,35274,5780],{"class":4002},[3996,35276,16384],{"class":4064},[3996,35278,3821],{"class":4099},[3996,35280,3915],{"class":4064},[3996,35282,4129],{"class":4002},[3996,35284,35285,35287,35289],{"class":3998,"line":4460},[3996,35286,5919],{"class":4081},[3996,35288,16052],{"class":4085},[3996,35290,5924],{"class":4081},[3996,35292,35293,35295,35297],{"class":3998,"line":4466},[3996,35294,6003],{"class":4081},[3996,35296,7896],{"class":4085},[3996,35298,5924],{"class":4081},[3996,35300,35301],{"class":3998,"line":4472},[3996,35302,5934],{"class":4006},[3996,35304,35305],{"class":3998,"line":4477},[3996,35306,4129],{"class":4006},[3996,35308,35309],{"class":3998,"line":5066},[3996,35310,4051],{"emptyLinePlaceholder":4050},[3996,35312,35313,35315,35317,35320,35322,35324,35326,35329],{"class":3998,"line":5072},[3996,35314,5947],{"class":4057},[3996,35316,10214],{"class":4002},[3996,35318,35319],{"class":4010}," PlaceChip",[3996,35321,7937],{"class":4006},[3996,35323,33107],{"class":4022},[3996,35325,4109],{"class":4006},[3996,35327,35328],{"class":4064},"PlaceChipComponent",[3996,35330,4044],{"class":4006},[3996,35332,35333],{"class":3998,"line":5078},[3996,35334,4051],{"emptyLinePlaceholder":4050},[3996,35336,35337,35339,35341,35343,35345,35347,35349],{"class":3998,"line":5084},[3996,35338,4003],{"class":4002},[3996,35340,11925],{"class":4010},[3996,35342,7937],{"class":4006},[3996,35344,8741],{"class":4064},[3996,35346,3821],{"class":4006},[3996,35348,11934],{"class":4022},[3996,35350,7971],{"class":4006},[3996,35352,35353,35356],{"class":3998,"line":5090},[3996,35354,35355],{"class":4064},"  chip:",[3996,35357,7958],{"class":4006},[3996,35359,35360,35362,35364],{"class":3998,"line":5096},[3996,35361,32922],{"class":4064},[3996,35363,34549],{"class":11033},[3996,35365,5720],{"class":4006},[3996,35367,35368,35370,35372],{"class":3998,"line":10510},[3996,35369,12123],{"class":4064},[3996,35371,11949],{"class":11033},[3996,35373,5720],{"class":4006},[3996,35375,35376,35378,35381],{"class":3998,"line":10516},[3996,35377,30005],{"class":4064},[3996,35379,35380],{"class":11033}," 96",[3996,35382,5720],{"class":4006},[3996,35384,35385],{"class":3998,"line":10521},[3996,35386,10287],{"class":4006},[3996,35388,35389,35392],{"class":3998,"line":10552},[3996,35390,35391],{"class":4064},"  name:",[3996,35393,7958],{"class":4006},[3996,35395,35396,35398,35400],{"class":3998,"line":10587},[3996,35397,12246],{"class":4064},[3996,35399,11972],{"class":11033},[3996,35401,5720],{"class":4006},[3996,35403,35404],{"class":3998,"line":12205},[3996,35405,10287],{"class":4006},[3996,35407,35408,35411],{"class":3998,"line":12213},[3996,35409,35410],{"class":4064},"  city:",[3996,35412,7958],{"class":4006},[3996,35414,35415,35417,35419],{"class":3998,"line":12223},[3996,35416,12216],{"class":4064},[3996,35418,12055],{"class":11033},[3996,35420,5720],{"class":4006},[3996,35422,35423,35425,35427],{"class":3998,"line":12233},[3996,35424,12236],{"class":4064},[3996,35426,5744],{"class":4029},[3996,35428,5720],{"class":4006},[3996,35430,35431],{"class":3998,"line":12243},[3996,35432,10287],{"class":4006},[3996,35434,35435,35438],{"class":3998,"line":12253},[3996,35436,35437],{"class":4064},"  note:",[3996,35439,7958],{"class":4006},[3996,35441,35442,35444,35447],{"class":3998,"line":12258},[3996,35443,12216],{"class":4064},[3996,35445,35446],{"class":11033}," 6",[3996,35448,5720],{"class":4006},[3996,35450,35451],{"class":3998,"line":16645},[3996,35452,10287],{"class":4006},[3996,35454,35455],{"class":3998,"line":16656},[3996,35456,12261],{"class":4006},[3987,35458,35461],{"className":10127,"code":35459,"filename":35460,"language":10129,"meta":3992,"style":3992},"\u002F**\n * Семантичні кольори: назва = роль на екрані, не «синій-500».\n * light \u002F dark — дві палітри з однаковими ключами.\n *\u002F\n\nexport const lightColors = {\n  background: '#F8FAFC',\n  surface: '#FFFFFF',\n  text: '#0F172A',\n  textSecondary: '#64748B',\n  primary: '#2563EB',\n  primaryPressed: '#1D4ED8',\n  border: '#E2E8F0',\n  danger: '#DC2626',\n  onPrimary: '#FFFFFF',\n} as const;\n\nexport const darkColors = {\n  background: '#000000',\n  surface: '#1C1C1E',\n  text: '#F5F5F7',\n  textSecondary: '#A1A1AA',\n  primary: '#3B82F6',\n  primaryPressed: '#2563EB',\n  border: '#3A3A3C',\n  danger: '#F87171',\n  onPrimary: '#FFFFFF',\n} as const;\n\nexport type ColorTokens = {\n  [K in keyof typeof lightColors]: string;\n};\n\nexport type ColorSchemeName = 'light' | 'dark';\n\nexport function colorsForScheme(scheme: ColorSchemeName): ColorTokens {\n  return scheme === 'dark' ? { ...darkColors } : { ...lightColors };\n}\n","src\u002Fshared\u002Ftheme\u002Fcolors.ts",[3747,35462,35463,35467,35472,35477,35481,35485,35496,35505,35514,35523,35532,35541,35551,35560,35570,35579,35589,35593,35604,35613,35622,35631,35640,35649,35657,35666,35675,35683,35693,35697,35708,35734,35738,35742,35761,35765,35790,35816],{"__ignoreMap":3992},[3996,35464,35465],{"class":3998,"line":3999},[3996,35466,14911],{"class":5783},[3996,35468,35469],{"class":3998,"line":4047},[3996,35470,35471],{"class":5783}," * Семантичні кольори: назва = роль на екрані, не «синій-500».\n",[3996,35473,35474],{"class":3998,"line":4054},[3996,35475,35476],{"class":5783}," * light \u002F dark — дві палітри з однаковими ключами.\n",[3996,35478,35479],{"class":3998,"line":4075},[3996,35480,14926],{"class":5783},[3996,35482,35483],{"class":3998,"line":4126},[3996,35484,4051],{"emptyLinePlaceholder":4050},[3996,35486,35487,35489,35491,35494],{"class":3998,"line":4132},[3996,35488,5947],{"class":4057},[3996,35490,10214],{"class":4002},[3996,35492,35493],{"class":4010}," lightColors",[3996,35495,10144],{"class":4006},[3996,35497,35498,35501,35503],{"class":3998,"line":4137},[3996,35499,35500],{"class":4064},"  background:",[3996,35502,10709],{"class":4029},[3996,35504,5720],{"class":4006},[3996,35506,35507,35510,35512],{"class":3998,"line":4275},[3996,35508,35509],{"class":4064},"  surface:",[3996,35511,12107],{"class":4029},[3996,35513,5720],{"class":4006},[3996,35515,35516,35519,35521],{"class":3998,"line":4281},[3996,35517,35518],{"class":4064},"  text:",[3996,35520,10737],{"class":4029},[3996,35522,5720],{"class":4006},[3996,35524,35525,35528,35530],{"class":3998,"line":4287},[3996,35526,35527],{"class":4064},"  textSecondary:",[3996,35529,10987],{"class":4029},[3996,35531,5720],{"class":4006},[3996,35533,35534,35537,35539],{"class":3998,"line":4293},[3996,35535,35536],{"class":4064},"  primary:",[3996,35538,10718],{"class":4029},[3996,35540,5720],{"class":4006},[3996,35542,35543,35546,35549],{"class":3998,"line":4299},[3996,35544,35545],{"class":4064},"  primaryPressed:",[3996,35547,35548],{"class":4029}," '#1D4ED8'",[3996,35550,5720],{"class":4006},[3996,35552,35553,35556,35558],{"class":3998,"line":4305},[3996,35554,35555],{"class":4064},"  border:",[3996,35557,11013],{"class":4029},[3996,35559,5720],{"class":4006},[3996,35561,35562,35565,35568],{"class":3998,"line":4311},[3996,35563,35564],{"class":4064},"  danger:",[3996,35566,35567],{"class":4029}," '#DC2626'",[3996,35569,5720],{"class":4006},[3996,35571,35572,35575,35577],{"class":3998,"line":4317},[3996,35573,35574],{"class":4064},"  onPrimary:",[3996,35576,12107],{"class":4029},[3996,35578,5720],{"class":4006},[3996,35580,35581,35583,35585,35587],{"class":3998,"line":4323},[3996,35582,15912],{"class":4006},[3996,35584,22463],{"class":4057},[3996,35586,10214],{"class":4002},[3996,35588,4123],{"class":4006},[3996,35590,35591],{"class":3998,"line":4329},[3996,35592,4051],{"emptyLinePlaceholder":4050},[3996,35594,35595,35597,35599,35602],{"class":3998,"line":4335},[3996,35596,5947],{"class":4057},[3996,35598,10214],{"class":4002},[3996,35600,35601],{"class":4010}," darkColors",[3996,35603,10144],{"class":4006},[3996,35605,35606,35608,35611],{"class":3998,"line":4341},[3996,35607,35500],{"class":4064},[3996,35609,35610],{"class":4029}," '#000000'",[3996,35612,5720],{"class":4006},[3996,35614,35615,35617,35620],{"class":3998,"line":4347},[3996,35616,35509],{"class":4064},[3996,35618,35619],{"class":4029}," '#1C1C1E'",[3996,35621,5720],{"class":4006},[3996,35623,35624,35626,35629],{"class":3998,"line":4352},[3996,35625,35518],{"class":4064},[3996,35627,35628],{"class":4029}," '#F5F5F7'",[3996,35630,5720],{"class":4006},[3996,35632,35633,35635,35638],{"class":3998,"line":4357},[3996,35634,35527],{"class":4064},[3996,35636,35637],{"class":4029}," '#A1A1AA'",[3996,35639,5720],{"class":4006},[3996,35641,35642,35644,35647],{"class":3998,"line":4363},[3996,35643,35536],{"class":4064},[3996,35645,35646],{"class":4029}," '#3B82F6'",[3996,35648,5720],{"class":4006},[3996,35650,35651,35653,35655],{"class":3998,"line":4369},[3996,35652,35545],{"class":4064},[3996,35654,10718],{"class":4029},[3996,35656,5720],{"class":4006},[3996,35658,35659,35661,35664],{"class":3998,"line":4375},[3996,35660,35555],{"class":4064},[3996,35662,35663],{"class":4029}," '#3A3A3C'",[3996,35665,5720],{"class":4006},[3996,35667,35668,35670,35673],{"class":3998,"line":4381},[3996,35669,35564],{"class":4064},[3996,35671,35672],{"class":4029}," '#F87171'",[3996,35674,5720],{"class":4006},[3996,35676,35677,35679,35681],{"class":3998,"line":4387},[3996,35678,35574],{"class":4064},[3996,35680,12107],{"class":4029},[3996,35682,5720],{"class":4006},[3996,35684,35685,35687,35689,35691],{"class":3998,"line":4392},[3996,35686,15912],{"class":4006},[3996,35688,22463],{"class":4057},[3996,35690,10214],{"class":4002},[3996,35692,4123],{"class":4006},[3996,35694,35695],{"class":3998,"line":4398},[3996,35696,4051],{"emptyLinePlaceholder":4050},[3996,35698,35699,35701,35703,35706],{"class":3998,"line":4404},[3996,35700,5947],{"class":4057},[3996,35702,10138],{"class":4002},[3996,35704,35705],{"class":4085}," ColorTokens",[3996,35707,10144],{"class":4006},[3996,35709,35710,35713,35716,35719,35722,35725,35727,35730,35732],{"class":3998,"line":4410},[3996,35711,35712],{"class":4006},"  [",[3996,35714,35715],{"class":4085},"K",[3996,35717,35718],{"class":4002}," in",[3996,35720,35721],{"class":4002}," keyof",[3996,35723,35724],{"class":4002}," typeof",[3996,35726,35493],{"class":4064},[3996,35728,35729],{"class":4006},"]: ",[3996,35731,7692],{"class":4085},[3996,35733,4123],{"class":4006},[3996,35735,35736],{"class":3998,"line":4415},[3996,35737,10203],{"class":4006},[3996,35739,35740],{"class":3998,"line":4420},[3996,35741,4051],{"emptyLinePlaceholder":4050},[3996,35743,35744,35746,35748,35751,35753,35755,35757,35759],{"class":3998,"line":4426},[3996,35745,5947],{"class":4057},[3996,35747,10138],{"class":4002},[3996,35749,35750],{"class":4085}," ColorSchemeName",[3996,35752,7937],{"class":4006},[3996,35754,7524],{"class":4029},[3996,35756,4033],{"class":4006},[3996,35758,7528],{"class":4029},[3996,35760,4123],{"class":4006},[3996,35762,35763],{"class":3998,"line":4432},[3996,35764,4051],{"emptyLinePlaceholder":4050},[3996,35766,35767,35769,35771,35774,35776,35778,35780,35783,35785,35788],{"class":3998,"line":4438},[3996,35768,5947],{"class":4057},[3996,35770,5953],{"class":4002},[3996,35772,35773],{"class":4022}," colorsForScheme",[3996,35775,4109],{"class":4006},[3996,35777,5603],{"class":4064},[3996,35779,8990],{"class":4006},[3996,35781,35782],{"class":4085},"ColorSchemeName",[3996,35784,10540],{"class":4006},[3996,35786,35787],{"class":4085},"ColorTokens",[3996,35789,7958],{"class":4006},[3996,35791,35792,35794,35797,35799,35801,35804,35807,35810,35813],{"class":3998,"line":4443},[3996,35793,4078],{"class":4057},[3996,35795,35796],{"class":4064}," scheme",[3996,35798,4067],{"class":4006},[3996,35800,7528],{"class":4029},[3996,35802,35803],{"class":4006}," ? { ...",[3996,35805,35806],{"class":4064},"darkColors",[3996,35808,35809],{"class":4006}," } : { ...",[3996,35811,35812],{"class":4064},"lightColors",[3996,35814,35815],{"class":4006}," };\n",[3996,35817,35818],{"class":3998,"line":4448},[3996,35819,4129],{"class":4006},[3987,35821,35824],{"className":10127,"code":35822,"filename":35823,"language":10129,"meta":3992,"style":3992},"\u002F**\n * Токени, що **не** залежать від light\u002Fdark:\n * відступи, радіуси, розміри шрифтів.\n * Кольори — у colors.ts + ThemeProvider.\n *\u002F\n\nexport const space = {\n  xs: 4,\n  sm: 8,\n  md: 16,\n  lg: 24,\n  xl: 32,\n} as const;\n\nexport const radius = {\n  sm: 8,\n  md: 12,\n  lg: 16,\n} as const;\n\nexport const fontSize = {\n  sm: 14,\n  md: 16,\n  lg: 20,\n  xl: 28,\n} as const;\n\n\u002F** @deprecated Використовуйте useTheme() для кольорів; space\u002Fradius\u002FfontSize — нижче. *\u002F\nexport const tokens = {\n  \u002F** Світла палітра (fallback, якщо хтось імпортує tokens.colors без теми). *\u002F\n  colors: {\n    background: '#F8FAFC',\n    surface: '#FFFFFF',\n    text: '#0F172A',\n    textSecondary: '#64748B',\n    primary: '#2563EB',\n    primaryPressed: '#1D4ED8',\n    border: '#E2E8F0',\n    danger: '#DC2626',\n    onPrimary: '#FFFFFF',\n  },\n  spacing: space,\n  radius,\n  fontSize,\n} as const;\n\nexport type Tokens = typeof tokens;\n","src\u002Fshared\u002Ftheme\u002Ftokens.ts",[3747,35825,35826,35830,35835,35840,35845,35849,35853,35864,35873,35882,35891,35900,35909,35919,35923,35933,35941,35949,35957,35967,35971,35982,35990,35998,36007,36016,36026,36030,36041,36052,36057,36064,36073,36082,36091,36100,36109,36118,36127,36136,36145,36149,36158,36165,36172,36182,36186],{"__ignoreMap":3992},[3996,35827,35828],{"class":3998,"line":3999},[3996,35829,14911],{"class":5783},[3996,35831,35832],{"class":3998,"line":4047},[3996,35833,35834],{"class":5783}," * Токени, що **не** залежать від light\u002Fdark:\n",[3996,35836,35837],{"class":3998,"line":4054},[3996,35838,35839],{"class":5783}," * відступи, радіуси, розміри шрифтів.\n",[3996,35841,35842],{"class":3998,"line":4075},[3996,35843,35844],{"class":5783}," * Кольори — у colors.ts + ThemeProvider.\n",[3996,35846,35847],{"class":3998,"line":4126},[3996,35848,14926],{"class":5783},[3996,35850,35851],{"class":3998,"line":4132},[3996,35852,4051],{"emptyLinePlaceholder":4050},[3996,35854,35855,35857,35859,35862],{"class":3998,"line":4137},[3996,35856,5947],{"class":4057},[3996,35858,10214],{"class":4002},[3996,35860,35861],{"class":4010}," space",[3996,35863,10144],{"class":4006},[3996,35865,35866,35869,35871],{"class":3998,"line":4275},[3996,35867,35868],{"class":4064},"  xs:",[3996,35870,12055],{"class":11033},[3996,35872,5720],{"class":4006},[3996,35874,35875,35878,35880],{"class":3998,"line":4281},[3996,35876,35877],{"class":4064},"  sm:",[3996,35879,11982],{"class":11033},[3996,35881,5720],{"class":4006},[3996,35883,35884,35887,35889],{"class":3998,"line":4287},[3996,35885,35886],{"class":4064},"  md:",[3996,35888,11972],{"class":11033},[3996,35890,5720],{"class":4006},[3996,35892,35893,35896,35898],{"class":3998,"line":4293},[3996,35894,35895],{"class":4064},"  lg:",[3996,35897,12027],{"class":11033},[3996,35899,5720],{"class":4006},[3996,35901,35902,35905,35907],{"class":3998,"line":4299},[3996,35903,35904],{"class":4064},"  xl:",[3996,35906,12090],{"class":11033},[3996,35908,5720],{"class":4006},[3996,35910,35911,35913,35915,35917],{"class":3998,"line":4305},[3996,35912,15912],{"class":4006},[3996,35914,22463],{"class":4057},[3996,35916,10214],{"class":4002},[3996,35918,4123],{"class":4006},[3996,35920,35921],{"class":3998,"line":4311},[3996,35922,4051],{"emptyLinePlaceholder":4050},[3996,35924,35925,35927,35929,35931],{"class":3998,"line":4317},[3996,35926,5947],{"class":4057},[3996,35928,10214],{"class":4002},[3996,35930,27467],{"class":4010},[3996,35932,10144],{"class":4006},[3996,35934,35935,35937,35939],{"class":3998,"line":4323},[3996,35936,35877],{"class":4064},[3996,35938,11982],{"class":11033},[3996,35940,5720],{"class":4006},[3996,35942,35943,35945,35947],{"class":3998,"line":4329},[3996,35944,35886],{"class":4064},[3996,35946,11034],{"class":11033},[3996,35948,5720],{"class":4006},[3996,35950,35951,35953,35955],{"class":3998,"line":4335},[3996,35952,35895],{"class":4064},[3996,35954,11972],{"class":11033},[3996,35956,5720],{"class":4006},[3996,35958,35959,35961,35963,35965],{"class":3998,"line":4341},[3996,35960,15912],{"class":4006},[3996,35962,22463],{"class":4057},[3996,35964,10214],{"class":4002},[3996,35966,4123],{"class":4006},[3996,35968,35969],{"class":3998,"line":4347},[3996,35970,4051],{"emptyLinePlaceholder":4050},[3996,35972,35973,35975,35977,35980],{"class":3998,"line":4352},[3996,35974,5947],{"class":4057},[3996,35976,10214],{"class":4002},[3996,35978,35979],{"class":4010}," fontSize",[3996,35981,10144],{"class":4006},[3996,35983,35984,35986,35988],{"class":3998,"line":4357},[3996,35985,35877],{"class":4064},[3996,35987,12144],{"class":11033},[3996,35989,5720],{"class":4006},[3996,35991,35992,35994,35996],{"class":3998,"line":4363},[3996,35993,35886],{"class":4064},[3996,35995,11972],{"class":11033},[3996,35997,5720],{"class":4006},[3996,35999,36000,36002,36005],{"class":3998,"line":4369},[3996,36001,35895],{"class":4064},[3996,36003,36004],{"class":11033}," 20",[3996,36006,5720],{"class":4006},[3996,36008,36009,36011,36014],{"class":3998,"line":4375},[3996,36010,35904],{"class":4064},[3996,36012,36013],{"class":11033}," 28",[3996,36015,5720],{"class":4006},[3996,36017,36018,36020,36022,36024],{"class":3998,"line":4381},[3996,36019,15912],{"class":4006},[3996,36021,22463],{"class":4057},[3996,36023,10214],{"class":4002},[3996,36025,4123],{"class":4006},[3996,36027,36028],{"class":3998,"line":4387},[3996,36029,4051],{"emptyLinePlaceholder":4050},[3996,36031,36032,36035,36038],{"class":3998,"line":4392},[3996,36033,36034],{"class":5783},"\u002F** ",[3996,36036,36037],{"class":4002},"@deprecated",[3996,36039,36040],{"class":5783}," Використовуйте useTheme() для кольорів; space\u002Fradius\u002FfontSize — нижче. *\u002F\n",[3996,36042,36043,36045,36047,36050],{"class":3998,"line":4398},[3996,36044,5947],{"class":4057},[3996,36046,10214],{"class":4002},[3996,36048,36049],{"class":4010}," tokens",[3996,36051,10144],{"class":4006},[3996,36053,36054],{"class":3998,"line":4404},[3996,36055,36056],{"class":5783},"  \u002F** Світла палітра (fallback, якщо хтось імпортує tokens.colors без теми). *\u002F\n",[3996,36058,36059,36062],{"class":3998,"line":4410},[3996,36060,36061],{"class":4064},"  colors:",[3996,36063,7958],{"class":4006},[3996,36065,36066,36069,36071],{"class":3998,"line":4415},[3996,36067,36068],{"class":4064},"    background:",[3996,36070,10709],{"class":4029},[3996,36072,5720],{"class":4006},[3996,36074,36075,36078,36080],{"class":3998,"line":4420},[3996,36076,36077],{"class":4064},"    surface:",[3996,36079,12107],{"class":4029},[3996,36081,5720],{"class":4006},[3996,36083,36084,36087,36089],{"class":3998,"line":4426},[3996,36085,36086],{"class":4064},"    text:",[3996,36088,10737],{"class":4029},[3996,36090,5720],{"class":4006},[3996,36092,36093,36096,36098],{"class":3998,"line":4432},[3996,36094,36095],{"class":4064},"    textSecondary:",[3996,36097,10987],{"class":4029},[3996,36099,5720],{"class":4006},[3996,36101,36102,36105,36107],{"class":3998,"line":4438},[3996,36103,36104],{"class":4064},"    primary:",[3996,36106,10718],{"class":4029},[3996,36108,5720],{"class":4006},[3996,36110,36111,36114,36116],{"class":3998,"line":4443},[3996,36112,36113],{"class":4064},"    primaryPressed:",[3996,36115,35548],{"class":4029},[3996,36117,5720],{"class":4006},[3996,36119,36120,36123,36125],{"class":3998,"line":4448},[3996,36121,36122],{"class":4064},"    border:",[3996,36124,11013],{"class":4029},[3996,36126,5720],{"class":4006},[3996,36128,36129,36132,36134],{"class":3998,"line":4454},[3996,36130,36131],{"class":4064},"    danger:",[3996,36133,35567],{"class":4029},[3996,36135,5720],{"class":4006},[3996,36137,36138,36141,36143],{"class":3998,"line":4460},[3996,36139,36140],{"class":4064},"    onPrimary:",[3996,36142,12107],{"class":4029},[3996,36144,5720],{"class":4006},[3996,36146,36147],{"class":3998,"line":4466},[3996,36148,10287],{"class":4006},[3996,36150,36151,36154,36156],{"class":3998,"line":4472},[3996,36152,36153],{"class":4064},"  spacing:",[3996,36155,35861],{"class":4064},[3996,36157,5720],{"class":4006},[3996,36159,36160,36163],{"class":3998,"line":4477},[3996,36161,36162],{"class":4064},"  radius",[3996,36164,5720],{"class":4006},[3996,36166,36167,36170],{"class":3998,"line":5066},[3996,36168,36169],{"class":4064},"  fontSize",[3996,36171,5720],{"class":4006},[3996,36173,36174,36176,36178,36180],{"class":3998,"line":5072},[3996,36175,15912],{"class":4006},[3996,36177,22463],{"class":4057},[3996,36179,10214],{"class":4002},[3996,36181,4123],{"class":4006},[3996,36183,36184],{"class":3998,"line":5078},[3996,36185,4051],{"emptyLinePlaceholder":4050},[3996,36187,36188,36190,36192,36195,36197,36199,36201],{"class":3998,"line":5084},[3996,36189,5947],{"class":4057},[3996,36191,10138],{"class":4002},[3996,36193,36194],{"class":4085}," Tokens",[3996,36196,7937],{"class":4006},[3996,36198,22486],{"class":4002},[3996,36200,36049],{"class":4064},[3996,36202,4123],{"class":4006},[3987,36204,36207],{"className":3989,"code":36205,"filename":36206,"language":3991,"meta":3992,"style":3992},"import {\n  createContext,\n  ReactNode,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n} from 'react';\nimport { useColorScheme as useSystemColorScheme } from 'react-native';\n\nimport {\n  colorsForScheme,\n  type ColorSchemeName,\n  type ColorTokens,\n} from '.\u002Fcolors';\nimport { fontSize, radius, space } from '.\u002Ftokens';\n\n\u002F** Що обрав користувач: слідувати системі або примусово light\u002Fdark. *\u002F\nexport type ThemePreference = 'system' | ColorSchemeName;\n\ntype ThemeContextValue = {\n  \u002F** Фактична схема, якою малюємо UI. *\u002F\n  scheme: ColorSchemeName;\n  preference: ThemePreference;\n  setPreference: (value: ThemePreference) => void;\n  colors: ColorTokens;\n  spacing: typeof space;\n  radius: typeof radius;\n  fontSize: typeof fontSize;\n};\n\nconst ThemeContext = createContext\u003CThemeContextValue | null>(null);\n\nfunction resolveScheme(\n  preference: ThemePreference,\n  system: string | null | undefined,\n): ColorSchemeName {\n  if (preference === 'light' || preference === 'dark') {\n    return preference;\n  }\n  return system === 'dark' ? 'dark' : 'light';\n}\n\ntype ThemeProviderProps = {\n  children: ReactNode;\n  \u002F** Початкова перевага (за замовчуванням — як у системі). *\u002F\n  initialPreference?: ThemePreference;\n};\n\nexport function ThemeProvider({\n  children,\n  initialPreference = 'system',\n}: ThemeProviderProps) {\n  const systemScheme = useSystemColorScheme();\n  const [preference, setPreferenceState] =\n    useState\u003CThemePreference>(initialPreference);\n\n  const setPreference = useCallback((value: ThemePreference) => {\n    setPreferenceState(value);\n  }, []);\n\n  const scheme = resolveScheme(preference, systemScheme);\n  const colors = useMemo(() => colorsForScheme(scheme), [scheme]);\n\n  const value = useMemo\u003CThemeContextValue>(\n    () => ({\n      scheme,\n      preference,\n      setPreference,\n      colors,\n      spacing: space,\n      radius,\n      fontSize,\n    }),\n    [scheme, preference, setPreference, colors],\n  );\n\n  return (\n    \u003CThemeContext.Provider value={value}>{children}\u003C\u002FThemeContext.Provider>\n  );\n}\n\nexport function useTheme(): ThemeContextValue {\n  const ctx = useContext(ThemeContext);\n  if (!ctx) {\n    throw new Error('useTheme() потрібно викликати всередині \u003CThemeProvider>.');\n  }\n  return ctx;\n}\n","src\u002Fshared\u002Ftheme\u002FThemeProvider.tsx",[3747,36208,36209,36215,36221,36227,36233,36239,36245,36251,36261,36283,36287,36293,36300,36308,36316,36327,36353,36357,36362,36381,36385,36394,36399,36410,36421,36442,36453,36466,36478,36490,36494,36498,36524,36528,36537,36547,36566,36574,36597,36605,36609,36631,36635,36639,36648,36658,36663,36674,36678,36682,36693,36699,36709,36718,36732,36748,36764,36768,36792,36803,36807,36811,36833,36860,36864,36881,36889,36896,36903,36910,36917,36926,36933,36940,36944,36964,36968,36972,36978,37009,37013,37017,37021,37036,37053,37063,37078,37082,37090],{"__ignoreMap":3992},[3996,36210,36211,36213],{"class":3998,"line":3999},[3996,36212,5501],{"class":4057},[3996,36214,7958],{"class":4006},[3996,36216,36217,36219],{"class":3998,"line":4047},[3996,36218,23680],{"class":4064},[3996,36220,5720],{"class":4006},[3996,36222,36223,36225],{"class":3998,"line":4054},[3996,36224,23687],{"class":4064},[3996,36226,5720],{"class":4006},[3996,36228,36229,36231],{"class":3998,"line":4075},[3996,36230,23694],{"class":4064},[3996,36232,5720],{"class":4006},[3996,36234,36235,36237],{"class":3998,"line":4126},[3996,36236,23701],{"class":4064},[3996,36238,5720],{"class":4006},[3996,36240,36241,36243],{"class":3998,"line":4132},[3996,36242,23708],{"class":4064},[3996,36244,5720],{"class":4006},[3996,36246,36247,36249],{"class":3998,"line":4137},[3996,36248,23715],{"class":4064},[3996,36250,5720],{"class":4006},[3996,36252,36253,36255,36257,36259],{"class":3998,"line":4275},[3996,36254,15912],{"class":4006},[3996,36256,5512],{"class":4057},[3996,36258,7869],{"class":4029},[3996,36260,4123],{"class":4006},[3996,36262,36263,36265,36267,36270,36272,36275,36277,36279,36281],{"class":3998,"line":4281},[3996,36264,5501],{"class":4057},[3996,36266,5504],{"class":4006},[3996,36268,36269],{"class":4064},"useColorScheme",[3996,36271,26457],{"class":4057},[3996,36273,36274],{"class":4064}," useSystemColorScheme",[3996,36276,5509],{"class":4006},[3996,36278,5512],{"class":4057},[3996,36280,7908],{"class":4029},[3996,36282,4123],{"class":4006},[3996,36284,36285],{"class":3998,"line":4287},[3996,36286,4051],{"emptyLinePlaceholder":4050},[3996,36288,36289,36291],{"class":3998,"line":4293},[3996,36290,5501],{"class":4057},[3996,36292,7958],{"class":4006},[3996,36294,36295,36298],{"class":3998,"line":4299},[3996,36296,36297],{"class":4064},"  colorsForScheme",[3996,36299,5720],{"class":4006},[3996,36301,36302,36304,36306],{"class":3998,"line":4305},[3996,36303,15995],{"class":4057},[3996,36305,35750],{"class":4064},[3996,36307,5720],{"class":4006},[3996,36309,36310,36312,36314],{"class":3998,"line":4311},[3996,36311,15995],{"class":4057},[3996,36313,35705],{"class":4064},[3996,36315,5720],{"class":4006},[3996,36317,36318,36320,36322,36325],{"class":3998,"line":4317},[3996,36319,15912],{"class":4006},[3996,36321,5512],{"class":4057},[3996,36323,36324],{"class":4029}," '.\u002Fcolors'",[3996,36326,4123],{"class":4006},[3996,36328,36329,36331,36333,36335,36337,36339,36341,36344,36346,36348,36351],{"class":3998,"line":4323},[3996,36330,5501],{"class":4057},[3996,36332,5504],{"class":4006},[3996,36334,7212],{"class":4064},[3996,36336,3867],{"class":4006},[3996,36338,26249],{"class":4064},[3996,36340,3867],{"class":4006},[3996,36342,36343],{"class":4064},"space",[3996,36345,5509],{"class":4006},[3996,36347,5512],{"class":4057},[3996,36349,36350],{"class":4029}," '.\u002Ftokens'",[3996,36352,4123],{"class":4006},[3996,36354,36355],{"class":3998,"line":4329},[3996,36356,4051],{"emptyLinePlaceholder":4050},[3996,36358,36359],{"class":3998,"line":4335},[3996,36360,36361],{"class":5783},"\u002F** Що обрав користувач: слідувати системі або примусово light\u002Fdark. *\u002F\n",[3996,36363,36364,36366,36368,36370,36372,36375,36377,36379],{"class":3998,"line":4341},[3996,36365,5947],{"class":4057},[3996,36367,10138],{"class":4002},[3996,36369,16035],{"class":4085},[3996,36371,7937],{"class":4006},[3996,36373,36374],{"class":4029},"'system'",[3996,36376,4033],{"class":4006},[3996,36378,35782],{"class":4085},[3996,36380,4123],{"class":4006},[3996,36382,36383],{"class":3998,"line":4347},[3996,36384,4051],{"emptyLinePlaceholder":4050},[3996,36386,36387,36389,36392],{"class":3998,"line":4352},[3996,36388,16032],{"class":4002},[3996,36390,36391],{"class":4085}," ThemeContextValue",[3996,36393,10144],{"class":4006},[3996,36395,36396],{"class":3998,"line":4357},[3996,36397,36398],{"class":5783},"  \u002F** Фактична схема, якою малюємо UI. *\u002F\n",[3996,36400,36401,36404,36406,36408],{"class":3998,"line":4363},[3996,36402,36403],{"class":4064},"  scheme",[3996,36405,8990],{"class":4006},[3996,36407,35782],{"class":4085},[3996,36409,4123],{"class":4006},[3996,36411,36412,36415,36417,36419],{"class":3998,"line":4369},[3996,36413,36414],{"class":4064},"  preference",[3996,36416,8990],{"class":4006},[3996,36418,16091],{"class":4085},[3996,36420,4123],{"class":4006},[3996,36422,36423,36426,36428,36430,36432,36434,36436,36438,36440],{"class":3998,"line":4375},[3996,36424,36425],{"class":4022},"  setPreference",[3996,36427,23804],{"class":4006},[3996,36429,24141],{"class":4064},[3996,36431,8990],{"class":4006},[3996,36433,16091],{"class":4085},[3996,36435,8996],{"class":4006},[3996,36437,4103],{"class":4002},[3996,36439,23817],{"class":4085},[3996,36441,4123],{"class":4006},[3996,36443,36444,36447,36449,36451],{"class":3998,"line":4381},[3996,36445,36446],{"class":4064},"  colors",[3996,36448,8990],{"class":4006},[3996,36450,35787],{"class":4085},[3996,36452,4123],{"class":4006},[3996,36454,36455,36458,36460,36462,36464],{"class":3998,"line":4387},[3996,36456,36457],{"class":4064},"  spacing",[3996,36459,8990],{"class":4006},[3996,36461,22486],{"class":4002},[3996,36463,35861],{"class":4064},[3996,36465,4123],{"class":4006},[3996,36467,36468,36470,36472,36474,36476],{"class":3998,"line":4392},[3996,36469,36162],{"class":4064},[3996,36471,8990],{"class":4006},[3996,36473,22486],{"class":4002},[3996,36475,27467],{"class":4064},[3996,36477,4123],{"class":4006},[3996,36479,36480,36482,36484,36486,36488],{"class":3998,"line":4398},[3996,36481,36169],{"class":4064},[3996,36483,8990],{"class":4006},[3996,36485,22486],{"class":4002},[3996,36487,35979],{"class":4064},[3996,36489,4123],{"class":4006},[3996,36491,36492],{"class":3998,"line":4404},[3996,36493,10203],{"class":4006},[3996,36495,36496],{"class":3998,"line":4410},[3996,36497,4051],{"emptyLinePlaceholder":4050},[3996,36499,36500,36502,36505,36507,36509,36511,36514,36516,36518,36520,36522],{"class":3998,"line":4415},[3996,36501,4003],{"class":4002},[3996,36503,36504],{"class":4010}," ThemeContext",[3996,36506,7937],{"class":4006},[3996,36508,23858],{"class":4022},[3996,36510,4026],{"class":4006},[3996,36512,36513],{"class":4085},"ThemeContextValue",[3996,36515,4033],{"class":4006},[3996,36517,23868],{"class":4085},[3996,36519,4039],{"class":4006},[3996,36521,23868],{"class":4002},[3996,36523,4044],{"class":4006},[3996,36525,36526],{"class":3998,"line":4420},[3996,36527,4051],{"emptyLinePlaceholder":4050},[3996,36529,36530,36532,36535],{"class":3998,"line":4426},[3996,36531,5582],{"class":4002},[3996,36533,36534],{"class":4022}," resolveScheme",[3996,36536,16531],{"class":4006},[3996,36538,36539,36541,36543,36545],{"class":3998,"line":4432},[3996,36540,36414],{"class":4064},[3996,36542,8990],{"class":4006},[3996,36544,16091],{"class":4085},[3996,36546,5720],{"class":4006},[3996,36548,36549,36552,36554,36556,36558,36560,36562,36564],{"class":3998,"line":4438},[3996,36550,36551],{"class":4064},"  system",[3996,36553,8990],{"class":4006},[3996,36555,7692],{"class":4085},[3996,36557,4033],{"class":4006},[3996,36559,23868],{"class":4085},[3996,36561,4033],{"class":4006},[3996,36563,10547],{"class":4085},[3996,36565,5720],{"class":4006},[3996,36567,36568,36570,36572],{"class":3998,"line":4443},[3996,36569,10540],{"class":4006},[3996,36571,35782],{"class":4085},[3996,36573,7958],{"class":4006},[3996,36575,36576,36578,36580,36582,36584,36586,36589,36591,36593,36595],{"class":3998,"line":4448},[3996,36577,12973],{"class":4057},[3996,36579,4061],{"class":4006},[3996,36581,16231],{"class":4064},[3996,36583,4067],{"class":4006},[3996,36585,7524],{"class":4029},[3996,36587,36588],{"class":4006}," || ",[3996,36590,16231],{"class":4064},[3996,36592,4067],{"class":4006},[3996,36594,7528],{"class":4029},[3996,36596,4072],{"class":4006},[3996,36598,36599,36601,36603],{"class":3998,"line":4454},[3996,36600,12986],{"class":4057},[3996,36602,17805],{"class":4064},[3996,36604,4123],{"class":4006},[3996,36606,36607],{"class":3998,"line":4460},[3996,36608,4384],{"class":4006},[3996,36610,36611,36613,36616,36618,36620,36622,36624,36627,36629],{"class":3998,"line":4466},[3996,36612,4078],{"class":4057},[3996,36614,36615],{"class":4064}," system",[3996,36617,4067],{"class":4006},[3996,36619,7528],{"class":4029},[3996,36621,12951],{"class":4006},[3996,36623,7528],{"class":4029},[3996,36625,36626],{"class":4006}," : ",[3996,36628,7524],{"class":4029},[3996,36630,4123],{"class":4006},[3996,36632,36633],{"class":3998,"line":4472},[3996,36634,4129],{"class":4006},[3996,36636,36637],{"class":3998,"line":4477},[3996,36638,4051],{"emptyLinePlaceholder":4050},[3996,36640,36641,36643,36646],{"class":3998,"line":5066},[3996,36642,16032],{"class":4002},[3996,36644,36645],{"class":4085}," ThemeProviderProps",[3996,36647,10144],{"class":4006},[3996,36649,36650,36652,36654,36656],{"class":3998,"line":5072},[3996,36651,23892],{"class":4064},[3996,36653,8990],{"class":4006},[3996,36655,23897],{"class":4085},[3996,36657,4123],{"class":4006},[3996,36659,36660],{"class":3998,"line":5078},[3996,36661,36662],{"class":5783},"  \u002F** Початкова перевага (за замовчуванням — як у системі). *\u002F\n",[3996,36664,36665,36668,36670,36672],{"class":3998,"line":5084},[3996,36666,36667],{"class":4064},"  initialPreference",[3996,36669,22280],{"class":4006},[3996,36671,16091],{"class":4085},[3996,36673,4123],{"class":4006},[3996,36675,36676],{"class":3998,"line":5090},[3996,36677,10203],{"class":4006},[3996,36679,36680],{"class":3998,"line":5096},[3996,36681,4051],{"emptyLinePlaceholder":4050},[3996,36683,36684,36686,36688,36691],{"class":3998,"line":10510},[3996,36685,5947],{"class":4057},[3996,36687,5953],{"class":4002},[3996,36689,36690],{"class":4022}," ThemeProvider",[3996,36692,7971],{"class":4006},[3996,36694,36695,36697],{"class":3998,"line":10516},[3996,36696,23892],{"class":4064},[3996,36698,5720],{"class":4006},[3996,36700,36701,36703,36705,36707],{"class":3998,"line":10521},[3996,36702,36667],{"class":4064},[3996,36704,7937],{"class":4006},[3996,36706,36374],{"class":4029},[3996,36708,5720],{"class":4006},[3996,36710,36711,36713,36716],{"class":3998,"line":10552},[3996,36712,26227],{"class":4006},[3996,36714,36715],{"class":4085},"ThemeProviderProps",[3996,36717,4072],{"class":4006},[3996,36719,36720,36722,36725,36727,36730],{"class":3998,"line":10587},[3996,36721,5593],{"class":4002},[3996,36723,36724],{"class":4010}," systemScheme",[3996,36726,7937],{"class":4006},[3996,36728,36729],{"class":4022},"useSystemColorScheme",[3996,36731,5611],{"class":4006},[3996,36733,36734,36736,36738,36740,36742,36745],{"class":3998,"line":12205},[3996,36735,5593],{"class":4002},[3996,36737,4007],{"class":4006},[3996,36739,16231],{"class":4010},[3996,36741,3867],{"class":4006},[3996,36743,36744],{"class":4010},"setPreferenceState",[3996,36746,36747],{"class":4006},"] =\n",[3996,36749,36750,36753,36755,36757,36759,36762],{"class":3998,"line":12213},[3996,36751,36752],{"class":4022},"    useState",[3996,36754,4026],{"class":4006},[3996,36756,16091],{"class":4085},[3996,36758,4039],{"class":4006},[3996,36760,36761],{"class":4064},"initialPreference",[3996,36763,4044],{"class":4006},[3996,36765,36766],{"class":3998,"line":12223},[3996,36767,4051],{"emptyLinePlaceholder":4050},[3996,36769,36770,36772,36774,36776,36778,36780,36782,36784,36786,36788,36790],{"class":3998,"line":12233},[3996,36771,5593],{"class":4002},[3996,36773,17867],{"class":4010},[3996,36775,7937],{"class":4006},[3996,36777,15854],{"class":4022},[3996,36779,10564],{"class":4006},[3996,36781,24141],{"class":4064},[3996,36783,8990],{"class":4006},[3996,36785,16091],{"class":4085},[3996,36787,8996],{"class":4006},[3996,36789,4103],{"class":4002},[3996,36791,7958],{"class":4006},[3996,36793,36794,36797,36799,36801],{"class":3998,"line":12243},[3996,36795,36796],{"class":4022},"    setPreferenceState",[3996,36798,4109],{"class":4006},[3996,36800,24141],{"class":4064},[3996,36802,4044],{"class":4006},[3996,36804,36805],{"class":3998,"line":12253},[3996,36806,16364],{"class":4006},[3996,36808,36809],{"class":3998,"line":12258},[3996,36810,4051],{"emptyLinePlaceholder":4050},[3996,36812,36813,36815,36817,36819,36822,36824,36826,36828,36831],{"class":3998,"line":16645},[3996,36814,5593],{"class":4002},[3996,36816,35796],{"class":4010},[3996,36818,7937],{"class":4006},[3996,36820,36821],{"class":4022},"resolveScheme",[3996,36823,4109],{"class":4006},[3996,36825,16231],{"class":4064},[3996,36827,3867],{"class":4006},[3996,36829,36830],{"class":4064},"systemScheme",[3996,36832,4044],{"class":4006},[3996,36834,36835,36837,36839,36841,36843,36845,36847,36849,36851,36853,36856,36858],{"class":3998,"line":16656},[3996,36836,5593],{"class":4002},[3996,36838,5697],{"class":4010},[3996,36840,7937],{"class":4006},[3996,36842,24072],{"class":4022},[3996,36844,7953],{"class":4006},[3996,36846,4103],{"class":4002},[3996,36848,35773],{"class":4022},[3996,36850,4109],{"class":4006},[3996,36852,5603],{"class":4064},[3996,36854,36855],{"class":4006},"), [",[3996,36857,5603],{"class":4064},[3996,36859,8098],{"class":4006},[3996,36861,36862],{"class":3998,"line":16698},[3996,36863,4051],{"emptyLinePlaceholder":4050},[3996,36865,36866,36868,36870,36872,36874,36876,36878],{"class":3998,"line":16720},[3996,36867,5593],{"class":4002},[3996,36869,24067],{"class":4010},[3996,36871,7937],{"class":4006},[3996,36873,24072],{"class":4022},[3996,36875,4026],{"class":4006},[3996,36877,36513],{"class":4085},[3996,36879,36880],{"class":4006},">(\n",[3996,36882,36883,36885,36887],{"class":3998,"line":16750},[3996,36884,24079],{"class":4006},[3996,36886,4103],{"class":4002},[3996,36888,7768],{"class":4006},[3996,36890,36891,36894],{"class":3998,"line":16784},[3996,36892,36893],{"class":4064},"      scheme",[3996,36895,5720],{"class":4006},[3996,36897,36898,36901],{"class":3998,"line":16791},[3996,36899,36900],{"class":4064},"      preference",[3996,36902,5720],{"class":4006},[3996,36904,36905,36908],{"class":3998,"line":16797},[3996,36906,36907],{"class":4064},"      setPreference",[3996,36909,5720],{"class":4006},[3996,36911,36912,36915],{"class":3998,"line":16811},[3996,36913,36914],{"class":4064},"      colors",[3996,36916,5720],{"class":4006},[3996,36918,36919,36922,36924],{"class":3998,"line":16837},[3996,36920,36921],{"class":4064},"      spacing:",[3996,36923,35861],{"class":4064},[3996,36925,5720],{"class":4006},[3996,36927,36928,36931],{"class":3998,"line":16857},[3996,36929,36930],{"class":4064},"      radius",[3996,36932,5720],{"class":4006},[3996,36934,36935,36938],{"class":3998,"line":16889},[3996,36936,36937],{"class":4064},"      fontSize",[3996,36939,5720],{"class":4006},[3996,36941,36942],{"class":3998,"line":16897},[3996,36943,22719],{"class":4006},[3996,36945,36946,36948,36950,36952,36954,36956,36958,36960,36962],{"class":3998,"line":16908},[3996,36947,16593],{"class":4006},[3996,36949,5603],{"class":4064},[3996,36951,3867],{"class":4006},[3996,36953,16231],{"class":4064},[3996,36955,3867],{"class":4006},[3996,36957,16236],{"class":4064},[3996,36959,3867],{"class":4006},[3996,36961,5598],{"class":4064},[3996,36963,16598],{"class":4006},[3996,36965,36966],{"class":3998,"line":16951},[3996,36967,5934],{"class":4006},[3996,36969,36970],{"class":3998,"line":16973},[3996,36971,4051],{"emptyLinePlaceholder":4050},[3996,36973,36974,36976],{"class":3998,"line":16979},[3996,36975,4078],{"class":4057},[3996,36977,5622],{"class":4006},[3996,36979,36980,36982,36985,36987,36989,36991,36993,36995,36997,36999,37001,37003,37005,37007],{"class":3998,"line":16988},[3996,36981,5969],{"class":4081},[3996,36983,36984],{"class":4085},"ThemeContext.Provider",[3996,36986,24067],{"class":4089},[3996,36988,4093],{"class":4006},[3996,36990,4096],{"class":4002},[3996,36992,24141],{"class":4064},[3996,36994,4117],{"class":4002},[3996,36996,8059],{"class":4081},[3996,36998,4096],{"class":4002},[3996,37000,23921],{"class":4064},[3996,37002,4117],{"class":4002},[3996,37004,8065],{"class":4081},[3996,37006,36984],{"class":4085},[3996,37008,5924],{"class":4081},[3996,37010,37011],{"class":3998,"line":16999},[3996,37012,5934],{"class":4006},[3996,37014,37015],{"class":3998,"line":17004},[3996,37016,4129],{"class":4006},[3996,37018,37019],{"class":3998,"line":17038},[3996,37020,4051],{"emptyLinePlaceholder":4050},[3996,37022,37023,37025,37027,37030,37032,37034],{"class":3998,"line":17047},[3996,37024,5947],{"class":4057},[3996,37026,5953],{"class":4002},[3996,37028,37029],{"class":4022}," useTheme",[3996,37031,24181],{"class":4006},[3996,37033,36513],{"class":4085},[3996,37035,7958],{"class":4006},[3996,37037,37038,37040,37042,37044,37046,37048,37051],{"class":3998,"line":17052},[3996,37039,5593],{"class":4002},[3996,37041,24192],{"class":4010},[3996,37043,7937],{"class":4006},[3996,37045,24197],{"class":4022},[3996,37047,4109],{"class":4006},[3996,37049,37050],{"class":4064},"ThemeContext",[3996,37052,4044],{"class":4006},[3996,37054,37055,37057,37059,37061],{"class":3998,"line":17057},[3996,37056,12973],{"class":4057},[3996,37058,12976],{"class":4006},[3996,37060,24213],{"class":4064},[3996,37062,4072],{"class":4006},[3996,37064,37065,37067,37069,37071,37073,37076],{"class":3998,"line":17067},[3996,37066,24220],{"class":4057},[3996,37068,24223],{"class":4002},[3996,37070,24226],{"class":4022},[3996,37072,4109],{"class":4006},[3996,37074,37075],{"class":4029},"'useTheme() потрібно викликати всередині \u003CThemeProvider>.'",[3996,37077,4044],{"class":4006},[3996,37079,37080],{"class":3998,"line":17075},[3996,37081,4384],{"class":4006},[3996,37083,37084,37086,37088],{"class":3998,"line":17088},[3996,37085,4078],{"class":4057},[3996,37087,24192],{"class":4064},[3996,37089,4123],{"class":4006},[3996,37091,37092],{"class":3998,"line":17101},[3996,37093,4129],{"class":4006},[3987,37095,37098],{"className":10127,"code":37096,"filename":37097,"language":10129,"meta":3992,"style":3992},"export { lightColors, darkColors, colorsForScheme } from '.\u002Fcolors';\nexport type { ColorTokens, ColorSchemeName } from '.\u002Fcolors';\nexport { tokens, space, radius, fontSize } from '.\u002Ftokens';\nexport type { Tokens } from '.\u002Ftokens';\nexport { ThemeProvider, useTheme } from '.\u002FThemeProvider';\nexport type { ThemePreference } from '.\u002FThemeProvider';\n","src\u002Fshared\u002Ftheme\u002Findex.ts",[3747,37099,37100,37125,37147,37176,37195,37216],{"__ignoreMap":3992},[3996,37101,37102,37104,37106,37108,37110,37112,37114,37117,37119,37121,37123],{"class":3998,"line":3999},[3996,37103,5947],{"class":4057},[3996,37105,5504],{"class":4006},[3996,37107,35812],{"class":4064},[3996,37109,3867],{"class":4006},[3996,37111,35806],{"class":4064},[3996,37113,3867],{"class":4006},[3996,37115,37116],{"class":4064},"colorsForScheme",[3996,37118,5509],{"class":4006},[3996,37120,5512],{"class":4057},[3996,37122,36324],{"class":4029},[3996,37124,4123],{"class":4006},[3996,37126,37127,37129,37131,37133,37135,37137,37139,37141,37143,37145],{"class":3998,"line":4047},[3996,37128,5947],{"class":4057},[3996,37130,10138],{"class":4057},[3996,37132,5504],{"class":4006},[3996,37134,35787],{"class":4064},[3996,37136,3867],{"class":4006},[3996,37138,35782],{"class":4064},[3996,37140,5509],{"class":4006},[3996,37142,5512],{"class":4057},[3996,37144,36324],{"class":4029},[3996,37146,4123],{"class":4006},[3996,37148,37149,37151,37153,37156,37158,37160,37162,37164,37166,37168,37170,37172,37174],{"class":3998,"line":4054},[3996,37150,5947],{"class":4057},[3996,37152,5504],{"class":4006},[3996,37154,37155],{"class":4064},"tokens",[3996,37157,3867],{"class":4006},[3996,37159,36343],{"class":4064},[3996,37161,3867],{"class":4006},[3996,37163,26249],{"class":4064},[3996,37165,3867],{"class":4006},[3996,37167,7212],{"class":4064},[3996,37169,5509],{"class":4006},[3996,37171,5512],{"class":4057},[3996,37173,36350],{"class":4029},[3996,37175,4123],{"class":4006},[3996,37177,37178,37180,37182,37184,37187,37189,37191,37193],{"class":3998,"line":4075},[3996,37179,5947],{"class":4057},[3996,37181,10138],{"class":4057},[3996,37183,5504],{"class":4006},[3996,37185,37186],{"class":4064},"Tokens",[3996,37188,5509],{"class":4006},[3996,37190,5512],{"class":4057},[3996,37192,36350],{"class":4029},[3996,37194,4123],{"class":4006},[3996,37196,37197,37199,37201,37203,37205,37207,37209,37211,37214],{"class":3998,"line":4126},[3996,37198,5947],{"class":4057},[3996,37200,5504],{"class":4006},[3996,37202,5202],{"class":4064},[3996,37204,3867],{"class":4006},[3996,37206,5564],{"class":4064},[3996,37208,5509],{"class":4006},[3996,37210,5512],{"class":4057},[3996,37212,37213],{"class":4029}," '.\u002FThemeProvider'",[3996,37215,4123],{"class":4006},[3996,37217,37218,37220,37222,37224,37226,37228,37230,37232],{"class":3998,"line":4132},[3996,37219,5947],{"class":4057},[3996,37221,10138],{"class":4057},[3996,37223,5504],{"class":4006},[3996,37225,16091],{"class":4064},[3996,37227,5509],{"class":4006},[3996,37229,5512],{"class":4057},[3996,37231,37213],{"class":4029},[3996,37233,4123],{"class":4006},[3987,37235,37238],{"className":3989,"code":37236,"filename":37237,"language":3991,"meta":3992,"style":3992},"import { ReactNode } from 'react';\nimport { StyleSheet, Text, TextProps, TextStyle } from 'react-native';\n\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\n\ntype AppTextVariant = 'body' | 'title' | 'subtitle' | 'caption';\n\ntype AppTextProps = TextProps & {\n  children: ReactNode;\n  variant?: AppTextVariant;\n  \u002F** Якщо не передано — body\u002Ftitle\u002Fsubtitle → text, caption → textSecondary. *\u002F\n  color?: string;\n  style?: TextStyle | TextStyle[];\n};\n\nexport function AppText({\n  children,\n  variant = 'body',\n  color,\n  style,\n  ...rest\n}: AppTextProps) {\n  const { colors, fontSize } = useTheme();\n  const resolvedColor =\n    color ??\n    (variant === 'caption' ? colors.textSecondary : colors.text);\n\n  return (\n    \u003CText\n      style={[\n        styles.base,\n        variant === 'body' && { fontSize: fontSize.md, lineHeight: 24 },\n        variant === 'title' && {\n          fontSize: fontSize.xl,\n          fontWeight: '700',\n          lineHeight: 34,\n        },\n        variant === 'subtitle' && {\n          fontSize: fontSize.lg,\n          fontWeight: '600',\n          lineHeight: 28,\n        },\n        variant === 'caption' && {\n          fontSize: fontSize.sm,\n          lineHeight: 20,\n        },\n        { color: resolvedColor },\n        style,\n      ]}\n      {...rest}\n    >\n      {children}\n    \u003C\u002FText>\n  );\n}\n\nconst styles = StyleSheet.create({\n  base: {},\n});\n","src\u002Fshared\u002Fui\u002FAppText.tsx",[3747,37239,37240,37256,37285,37289,37305,37309,37338,37342,37356,37366,37378,37383,37394,37409,37413,37417,37428,37434,37444,37450,37456,37464,37473,37491,37501,37509,37539,37543,37549,37556,37566,37576,37605,37618,37630,37638,37648,37652,37665,37677,37685,37693,37697,37710,37722,37730,37734,37745,37751,37757,37769,37773,37781,37789,37793,37797,37801,37817,37824],{"__ignoreMap":3992},[3996,37241,37242,37244,37246,37248,37250,37252,37254],{"class":3998,"line":3999},[3996,37243,5501],{"class":4057},[3996,37245,5504],{"class":4006},[3996,37247,23897],{"class":4064},[3996,37249,5509],{"class":4006},[3996,37251,5512],{"class":4057},[3996,37253,7869],{"class":4029},[3996,37255,4123],{"class":4006},[3996,37257,37258,37260,37262,37264,37266,37268,37270,37273,37275,37277,37279,37281,37283],{"class":3998,"line":4047},[3996,37259,5501],{"class":4057},[3996,37261,5504],{"class":4006},[3996,37263,8741],{"class":4064},[3996,37265,3867],{"class":4006},[3996,37267,7901],{"class":4064},[3996,37269,3867],{"class":4006},[3996,37271,37272],{"class":4064},"TextProps",[3996,37274,3867],{"class":4006},[3996,37276,7207],{"class":4064},[3996,37278,5509],{"class":4006},[3996,37280,5512],{"class":4057},[3996,37282,7908],{"class":4029},[3996,37284,4123],{"class":4006},[3996,37286,37287],{"class":3998,"line":4054},[3996,37288,4051],{"emptyLinePlaceholder":4050},[3996,37290,37291,37293,37295,37297,37299,37301,37303],{"class":3998,"line":4075},[3996,37292,5501],{"class":4057},[3996,37294,5504],{"class":4006},[3996,37296,5564],{"class":4064},[3996,37298,5509],{"class":4006},[3996,37300,5512],{"class":4057},[3996,37302,5571],{"class":4029},[3996,37304,4123],{"class":4006},[3996,37306,37307],{"class":3998,"line":4126},[3996,37308,4051],{"emptyLinePlaceholder":4050},[3996,37310,37311,37313,37316,37318,37321,37323,37326,37328,37331,37333,37336],{"class":3998,"line":4132},[3996,37312,16032],{"class":4002},[3996,37314,37315],{"class":4085}," AppTextVariant",[3996,37317,7937],{"class":4006},[3996,37319,37320],{"class":4029},"'body'",[3996,37322,4033],{"class":4006},[3996,37324,37325],{"class":4029},"'title'",[3996,37327,4033],{"class":4006},[3996,37329,37330],{"class":4029},"'subtitle'",[3996,37332,4033],{"class":4006},[3996,37334,37335],{"class":4029},"'caption'",[3996,37337,4123],{"class":4006},[3996,37339,37340],{"class":3998,"line":4137},[3996,37341,4051],{"emptyLinePlaceholder":4050},[3996,37343,37344,37346,37349,37351,37353],{"class":3998,"line":4275},[3996,37345,16032],{"class":4002},[3996,37347,37348],{"class":4085}," AppTextProps",[3996,37350,7937],{"class":4006},[3996,37352,37272],{"class":4085},[3996,37354,37355],{"class":4006}," & {\n",[3996,37357,37358,37360,37362,37364],{"class":3998,"line":4281},[3996,37359,23892],{"class":4064},[3996,37361,8990],{"class":4006},[3996,37363,23897],{"class":4085},[3996,37365,4123],{"class":4006},[3996,37367,37368,37371,37373,37376],{"class":3998,"line":4287},[3996,37369,37370],{"class":4064},"  variant",[3996,37372,22280],{"class":4006},[3996,37374,37375],{"class":4085},"AppTextVariant",[3996,37377,4123],{"class":4006},[3996,37379,37380],{"class":3998,"line":4293},[3996,37381,37382],{"class":5783},"  \u002F** Якщо не передано — body\u002Ftitle\u002Fsubtitle → text, caption → textSecondary. *\u002F\n",[3996,37384,37385,37388,37390,37392],{"class":3998,"line":4299},[3996,37386,37387],{"class":4064},"  color",[3996,37389,22280],{"class":4006},[3996,37391,7692],{"class":4085},[3996,37393,4123],{"class":4006},[3996,37395,37396,37399,37401,37403,37405,37407],{"class":3998,"line":4305},[3996,37397,37398],{"class":4064},"  style",[3996,37400,22280],{"class":4006},[3996,37402,7207],{"class":4085},[3996,37404,4033],{"class":4006},[3996,37406,7207],{"class":4085},[3996,37408,23791],{"class":4006},[3996,37410,37411],{"class":3998,"line":4311},[3996,37412,10203],{"class":4006},[3996,37414,37415],{"class":3998,"line":4317},[3996,37416,4051],{"emptyLinePlaceholder":4050},[3996,37418,37419,37421,37423,37426],{"class":3998,"line":4323},[3996,37420,5947],{"class":4057},[3996,37422,5953],{"class":4002},[3996,37424,37425],{"class":4022}," AppText",[3996,37427,7971],{"class":4006},[3996,37429,37430,37432],{"class":3998,"line":4329},[3996,37431,23892],{"class":4064},[3996,37433,5720],{"class":4006},[3996,37435,37436,37438,37440,37442],{"class":3998,"line":4335},[3996,37437,37370],{"class":4064},[3996,37439,7937],{"class":4006},[3996,37441,37320],{"class":4029},[3996,37443,5720],{"class":4006},[3996,37445,37446,37448],{"class":3998,"line":4341},[3996,37447,37387],{"class":4064},[3996,37449,5720],{"class":4006},[3996,37451,37452,37454],{"class":3998,"line":4347},[3996,37453,37398],{"class":4064},[3996,37455,5720],{"class":4006},[3996,37457,37458,37461],{"class":3998,"line":4352},[3996,37459,37460],{"class":4006},"  ...",[3996,37462,37463],{"class":4064},"rest\n",[3996,37465,37466,37468,37471],{"class":3998,"line":4357},[3996,37467,26227],{"class":4006},[3996,37469,37470],{"class":4085},"AppTextProps",[3996,37472,4072],{"class":4006},[3996,37474,37475,37477,37479,37481,37483,37485,37487,37489],{"class":3998,"line":4363},[3996,37476,5593],{"class":4002},[3996,37478,5504],{"class":4006},[3996,37480,5598],{"class":4010},[3996,37482,3867],{"class":4006},[3996,37484,7212],{"class":4010},[3996,37486,5606],{"class":4006},[3996,37488,5564],{"class":4022},[3996,37490,5611],{"class":4006},[3996,37492,37493,37495,37498],{"class":3998,"line":4369},[3996,37494,5593],{"class":4002},[3996,37496,37497],{"class":4010}," resolvedColor",[3996,37499,37500],{"class":4006}," =\n",[3996,37502,37503,37506],{"class":3998,"line":4375},[3996,37504,37505],{"class":4064},"    color",[3996,37507,37508],{"class":4006}," ??\n",[3996,37510,37511,37514,37517,37519,37521,37523,37525,37527,37529,37531,37533,37535,37537],{"class":3998,"line":4381},[3996,37512,37513],{"class":4006},"    (",[3996,37515,37516],{"class":4064},"variant",[3996,37518,4067],{"class":4006},[3996,37520,37335],{"class":4029},[3996,37522,12951],{"class":4006},[3996,37524,5598],{"class":4064},[3996,37526,3821],{"class":4006},[3996,37528,15445],{"class":4064},[3996,37530,36626],{"class":4006},[3996,37532,5598],{"class":4064},[3996,37534,3821],{"class":4006},[3996,37536,4227],{"class":4064},[3996,37538,4044],{"class":4006},[3996,37540,37541],{"class":3998,"line":4387},[3996,37542,4051],{"emptyLinePlaceholder":4050},[3996,37544,37545,37547],{"class":3998,"line":4392},[3996,37546,4078],{"class":4057},[3996,37548,5622],{"class":4006},[3996,37550,37551,37553],{"class":3998,"line":4398},[3996,37552,5969],{"class":4081},[3996,37554,37555],{"class":4085},"Text\n",[3996,37557,37558,37560,37562,37564],{"class":3998,"line":4404},[3996,37559,17078],{"class":4089},[3996,37561,4093],{"class":4006},[3996,37563,4096],{"class":4002},[3996,37565,17085],{"class":4099},[3996,37567,37568,37570,37572,37574],{"class":3998,"line":4410},[3996,37569,17091],{"class":4064},[3996,37571,3821],{"class":4099},[3996,37573,26104],{"class":4064},[3996,37575,5720],{"class":4099},[3996,37577,37578,37580,37582,37585,37587,37589,37591,37593,37595,37597,37599,37601,37603],{"class":3998,"line":4415},[3996,37579,17226],{"class":4064},[3996,37581,5646],{"class":4006},[3996,37583,37584],{"class":4029}," 'body'",[3996,37586,31170],{"class":4006},[3996,37588,5504],{"class":4099},[3996,37590,11030],{"class":4064},[3996,37592,35979],{"class":4064},[3996,37594,3821],{"class":4099},[3996,37596,16678],{"class":4064},[3996,37598,3867],{"class":4099},[3996,37600,12703],{"class":4064},[3996,37602,12027],{"class":11033},[3996,37604,5705],{"class":4099},[3996,37606,37607,37609,37611,37614,37616],{"class":3998,"line":4420},[3996,37608,17226],{"class":4064},[3996,37610,5646],{"class":4006},[3996,37612,37613],{"class":4029}," 'title'",[3996,37615,31170],{"class":4006},[3996,37617,7958],{"class":4099},[3996,37619,37620,37622,37624,37626,37628],{"class":3998,"line":4426},[3996,37621,15493],{"class":4064},[3996,37623,35979],{"class":4064},[3996,37625,3821],{"class":4099},[3996,37627,17131],{"class":4064},[3996,37629,5720],{"class":4099},[3996,37631,37632,37634,37636],{"class":3998,"line":4432},[3996,37633,15502],{"class":4064},[3996,37635,12169],{"class":4029},[3996,37637,5720],{"class":4099},[3996,37639,37640,37643,37646],{"class":3998,"line":4438},[3996,37641,37642],{"class":4064},"          lineHeight:",[3996,37644,37645],{"class":11033}," 34",[3996,37647,5720],{"class":4099},[3996,37649,37650],{"class":3998,"line":4443},[3996,37651,11020],{"class":4099},[3996,37653,37654,37656,37658,37661,37663],{"class":3998,"line":4448},[3996,37655,17226],{"class":4064},[3996,37657,5646],{"class":4006},[3996,37659,37660],{"class":4029}," 'subtitle'",[3996,37662,31170],{"class":4006},[3996,37664,7958],{"class":4099},[3996,37666,37667,37669,37671,37673,37675],{"class":3998,"line":4454},[3996,37668,15493],{"class":4064},[3996,37670,35979],{"class":4064},[3996,37672,3821],{"class":4099},[3996,37674,31452],{"class":4064},[3996,37676,5720],{"class":4099},[3996,37678,37679,37681,37683],{"class":3998,"line":4460},[3996,37680,15502],{"class":4064},[3996,37682,5744],{"class":4029},[3996,37684,5720],{"class":4099},[3996,37686,37687,37689,37691],{"class":3998,"line":4466},[3996,37688,37642],{"class":4064},[3996,37690,36013],{"class":11033},[3996,37692,5720],{"class":4099},[3996,37694,37695],{"class":3998,"line":4472},[3996,37696,11020],{"class":4099},[3996,37698,37699,37701,37703,37706,37708],{"class":3998,"line":4477},[3996,37700,17226],{"class":4064},[3996,37702,5646],{"class":4006},[3996,37704,37705],{"class":4029}," 'caption'",[3996,37707,31170],{"class":4006},[3996,37709,7958],{"class":4099},[3996,37711,37712,37714,37716,37718,37720],{"class":3998,"line":5066},[3996,37713,15493],{"class":4064},[3996,37715,35979],{"class":4064},[3996,37717,3821],{"class":4099},[3996,37719,16741],{"class":4064},[3996,37721,5720],{"class":4099},[3996,37723,37724,37726,37728],{"class":3998,"line":5072},[3996,37725,37642],{"class":4064},[3996,37727,36004],{"class":11033},[3996,37729,5720],{"class":4099},[3996,37731,37732],{"class":3998,"line":5078},[3996,37733,11020],{"class":4099},[3996,37735,37736,37739,37741,37743],{"class":3998,"line":5084},[3996,37737,37738],{"class":4099},"        { ",[3996,37740,5730],{"class":4064},[3996,37742,37497],{"class":4064},[3996,37744,5705],{"class":4099},[3996,37746,37747,37749],{"class":3998,"line":5090},[3996,37748,17255],{"class":4064},[3996,37750,5720],{"class":4099},[3996,37752,37753,37755],{"class":3998,"line":5096},[3996,37754,17158],{"class":4099},[3996,37756,4129],{"class":4002},[3996,37758,37759,37761,37764,37767],{"class":3998,"line":10510},[3996,37760,16701],{"class":4002},[3996,37762,37763],{"class":4006},"...",[3996,37765,37766],{"class":4064},"rest",[3996,37768,4129],{"class":4002},[3996,37770,37771],{"class":3998,"line":10516},[3996,37772,11054],{"class":4081},[3996,37774,37775,37777,37779],{"class":3998,"line":10521},[3996,37776,16701],{"class":4002},[3996,37778,23921],{"class":4064},[3996,37780,4129],{"class":4002},[3996,37782,37783,37785,37787],{"class":3998,"line":10552},[3996,37784,6003],{"class":4081},[3996,37786,7901],{"class":4085},[3996,37788,5924],{"class":4081},[3996,37790,37791],{"class":3998,"line":10587},[3996,37792,5934],{"class":4006},[3996,37794,37795],{"class":3998,"line":12205},[3996,37796,4129],{"class":4006},[3996,37798,37799],{"class":3998,"line":12213},[3996,37800,4051],{"emptyLinePlaceholder":4050},[3996,37802,37803,37805,37807,37809,37811,37813,37815],{"class":3998,"line":12223},[3996,37804,4003],{"class":4002},[3996,37806,11925],{"class":4010},[3996,37808,7937],{"class":4006},[3996,37810,8741],{"class":4064},[3996,37812,3821],{"class":4006},[3996,37814,11934],{"class":4022},[3996,37816,7971],{"class":4006},[3996,37818,37819,37822],{"class":3998,"line":12233},[3996,37820,37821],{"class":4064},"  base:",[3996,37823,34497],{"class":4006},[3996,37825,37826],{"class":3998,"line":12243},[3996,37827,12261],{"class":4006},[3987,37829,37832],{"className":3989,"code":37830,"filename":37831,"language":3991,"meta":3992,"style":3992},"import { Pressable, StyleSheet, Text, ViewStyle } from 'react-native';\n\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\n\ntype ButtonVariant = 'primary' | 'secondary';\n\ntype ButtonProps = {\n  label: string;\n  onPress: () => void;\n  disabled?: boolean;\n  style?: ViewStyle;\n  variant?: ButtonVariant;\n};\n\nexport function Button({\n  label,\n  onPress,\n  disabled = false,\n  style,\n  variant = 'primary',\n}: ButtonProps) {\n  const { colors, spacing, radius, fontSize } = useTheme();\n  const isPrimary = variant === 'primary';\n\n  return (\n    \u003CPressable\n      accessibilityRole=\"button\"\n      disabled={disabled}\n      onPress={onPress}\n      style={({ pressed }) => [\n        styles.base,\n        {\n          paddingVertical: spacing.sm + 4,\n          paddingHorizontal: spacing.md,\n          borderRadius: radius.md,\n          backgroundColor: isPrimary ? colors.primary : colors.surface,\n          borderWidth: isPrimary ? 0 : 1,\n          borderColor: colors.border,\n        },\n        pressed && !disabled\n          ? isPrimary\n            ? { backgroundColor: colors.primaryPressed }\n            : { opacity: 0.85 }\n          : null,\n        disabled ? styles.disabled : null,\n        style,\n      ]}\n    >\n      \u003CText\n        style={[\n          styles.label,\n          {\n            color: isPrimary ? colors.onPrimary : colors.text,\n            fontSize: fontSize.md,\n          },\n        ]}\n      >\n        {label}\n      \u003C\u002FText>\n    \u003C\u002FPressable>\n  );\n}\n\nconst styles = StyleSheet.create({\n  base: {\n    alignItems: 'center',\n  },\n  disabled: {\n    opacity: 0.5,\n  },\n  label: {\n    fontWeight: '600',\n  },\n});\n","src\u002Fshared\u002Fui\u002FButton.tsx",[3747,37833,37834,37862,37866,37882,37886,37905,37909,37918,37928,37940,37951,37961,37972,37976,37980,37991,37997,38003,38013,38019,38029,38038,38064,38081,38085,38091,38097,38105,38119,38131,38149,38159,38163,38179,38191,38203,38227,38244,38256,38260,38271,38279,38297,38311,38320,38339,38345,38351,38355,38361,38371,38381,38385,38409,38422,38426,38432,38436,38444,38452,38460,38464,38468,38472,38488,38494,38502,38506,38513,38522,38526,38532,38540,38544],{"__ignoreMap":3992},[3996,37835,37836,37838,37840,37842,37844,37846,37848,37850,37852,37854,37856,37858,37860],{"class":3998,"line":3999},[3996,37837,5501],{"class":4057},[3996,37839,5504],{"class":4006},[3996,37841,7896],{"class":4064},[3996,37843,3867],{"class":4006},[3996,37845,8741],{"class":4064},[3996,37847,3867],{"class":4006},[3996,37849,7901],{"class":4064},[3996,37851,3867],{"class":4006},[3996,37853,6778],{"class":4064},[3996,37855,5509],{"class":4006},[3996,37857,5512],{"class":4057},[3996,37859,7908],{"class":4029},[3996,37861,4123],{"class":4006},[3996,37863,37864],{"class":3998,"line":4047},[3996,37865,4051],{"emptyLinePlaceholder":4050},[3996,37867,37868,37870,37872,37874,37876,37878,37880],{"class":3998,"line":4054},[3996,37869,5501],{"class":4057},[3996,37871,5504],{"class":4006},[3996,37873,5564],{"class":4064},[3996,37875,5509],{"class":4006},[3996,37877,5512],{"class":4057},[3996,37879,5571],{"class":4029},[3996,37881,4123],{"class":4006},[3996,37883,37884],{"class":3998,"line":4075},[3996,37885,4051],{"emptyLinePlaceholder":4050},[3996,37887,37888,37890,37893,37895,37898,37900,37903],{"class":3998,"line":4126},[3996,37889,16032],{"class":4002},[3996,37891,37892],{"class":4085}," ButtonVariant",[3996,37894,7937],{"class":4006},[3996,37896,37897],{"class":4029},"'primary'",[3996,37899,4033],{"class":4006},[3996,37901,37902],{"class":4029},"'secondary'",[3996,37904,4123],{"class":4006},[3996,37906,37907],{"class":3998,"line":4132},[3996,37908,4051],{"emptyLinePlaceholder":4050},[3996,37910,37911,37913,37916],{"class":3998,"line":4137},[3996,37912,16032],{"class":4002},[3996,37914,37915],{"class":4085}," ButtonProps",[3996,37917,10144],{"class":4006},[3996,37919,37920,37922,37924,37926],{"class":3998,"line":4275},[3996,37921,30209],{"class":4064},[3996,37923,8990],{"class":4006},[3996,37925,7692],{"class":4085},[3996,37927,4123],{"class":4006},[3996,37929,37930,37932,37934,37936,37938],{"class":3998,"line":4281},[3996,37931,33231],{"class":4022},[3996,37933,23832],{"class":4006},[3996,37935,4103],{"class":4002},[3996,37937,23817],{"class":4085},[3996,37939,4123],{"class":4006},[3996,37941,37942,37945,37947,37949],{"class":3998,"line":4287},[3996,37943,37944],{"class":4064},"  disabled",[3996,37946,22280],{"class":4006},[3996,37948,6483],{"class":4085},[3996,37950,4123],{"class":4006},[3996,37952,37953,37955,37957,37959],{"class":3998,"line":4293},[3996,37954,37398],{"class":4064},[3996,37956,22280],{"class":4006},[3996,37958,6778],{"class":4085},[3996,37960,4123],{"class":4006},[3996,37962,37963,37965,37967,37970],{"class":3998,"line":4299},[3996,37964,37370],{"class":4064},[3996,37966,22280],{"class":4006},[3996,37968,37969],{"class":4085},"ButtonVariant",[3996,37971,4123],{"class":4006},[3996,37973,37974],{"class":3998,"line":4305},[3996,37975,10203],{"class":4006},[3996,37977,37978],{"class":3998,"line":4311},[3996,37979,4051],{"emptyLinePlaceholder":4050},[3996,37981,37982,37984,37986,37989],{"class":3998,"line":4317},[3996,37983,5947],{"class":4057},[3996,37985,5953],{"class":4002},[3996,37987,37988],{"class":4022}," Button",[3996,37990,7971],{"class":4006},[3996,37992,37993,37995],{"class":3998,"line":4323},[3996,37994,30209],{"class":4064},[3996,37996,5720],{"class":4006},[3996,37998,37999,38001],{"class":3998,"line":4329},[3996,38000,33231],{"class":4064},[3996,38002,5720],{"class":4006},[3996,38004,38005,38007,38009,38011],{"class":3998,"line":4335},[3996,38006,37944],{"class":4064},[3996,38008,7937],{"class":4006},[3996,38010,6495],{"class":4002},[3996,38012,5720],{"class":4006},[3996,38014,38015,38017],{"class":3998,"line":4341},[3996,38016,37398],{"class":4064},[3996,38018,5720],{"class":4006},[3996,38020,38021,38023,38025,38027],{"class":3998,"line":4347},[3996,38022,37370],{"class":4064},[3996,38024,7937],{"class":4006},[3996,38026,37897],{"class":4029},[3996,38028,5720],{"class":4006},[3996,38030,38031,38033,38036],{"class":3998,"line":4352},[3996,38032,26227],{"class":4006},[3996,38034,38035],{"class":4085},"ButtonProps",[3996,38037,4072],{"class":4006},[3996,38039,38040,38042,38044,38046,38048,38050,38052,38054,38056,38058,38060,38062],{"class":3998,"line":4357},[3996,38041,5593],{"class":4002},[3996,38043,5504],{"class":4006},[3996,38045,5598],{"class":4010},[3996,38047,3867],{"class":4006},[3996,38049,16226],{"class":4010},[3996,38051,3867],{"class":4006},[3996,38053,26249],{"class":4010},[3996,38055,3867],{"class":4006},[3996,38057,7212],{"class":4010},[3996,38059,5606],{"class":4006},[3996,38061,5564],{"class":4022},[3996,38063,5611],{"class":4006},[3996,38065,38066,38068,38071,38073,38075,38077,38079],{"class":3998,"line":4363},[3996,38067,5593],{"class":4002},[3996,38069,38070],{"class":4010}," isPrimary",[3996,38072,7937],{"class":4006},[3996,38074,37516],{"class":4064},[3996,38076,4067],{"class":4006},[3996,38078,37897],{"class":4029},[3996,38080,4123],{"class":4006},[3996,38082,38083],{"class":3998,"line":4369},[3996,38084,4051],{"emptyLinePlaceholder":4050},[3996,38086,38087,38089],{"class":3998,"line":4375},[3996,38088,4078],{"class":4057},[3996,38090,5622],{"class":4006},[3996,38092,38093,38095],{"class":3998,"line":4381},[3996,38094,5969],{"class":4081},[3996,38096,17832],{"class":4085},[3996,38098,38099,38101,38103],{"class":3998,"line":4387},[3996,38100,33321],{"class":4089},[3996,38102,4093],{"class":4006},[3996,38104,17976],{"class":4029},[3996,38106,38107,38110,38112,38114,38117],{"class":3998,"line":4392},[3996,38108,38109],{"class":4089},"      disabled",[3996,38111,4093],{"class":4006},[3996,38113,4096],{"class":4002},[3996,38115,38116],{"class":4064},"disabled",[3996,38118,4129],{"class":4002},[3996,38120,38121,38123,38125,38127,38129],{"class":3998,"line":4398},[3996,38122,33356],{"class":4089},[3996,38124,4093],{"class":4006},[3996,38126,4096],{"class":4002},[3996,38128,8706],{"class":4064},[3996,38130,4129],{"class":4002},[3996,38132,38133,38135,38137,38139,38141,38143,38145,38147],{"class":3998,"line":4404},[3996,38134,17078],{"class":4089},[3996,38136,4093],{"class":4006},[3996,38138,4096],{"class":4002},[3996,38140,7759],{"class":4099},[3996,38142,33388],{"class":4064},[3996,38144,6881],{"class":4099},[3996,38146,4103],{"class":4002},[3996,38148,33395],{"class":4099},[3996,38150,38151,38153,38155,38157],{"class":3998,"line":4410},[3996,38152,17091],{"class":4064},[3996,38154,3821],{"class":4099},[3996,38156,26104],{"class":4064},[3996,38158,5720],{"class":4099},[3996,38160,38161],{"class":3998,"line":4415},[3996,38162,17104],{"class":4099},[3996,38164,38165,38167,38169,38171,38173,38175,38177],{"class":3998,"line":4420},[3996,38166,17124],{"class":4064},[3996,38168,16673],{"class":4064},[3996,38170,3821],{"class":4099},[3996,38172,16741],{"class":4064},[3996,38174,21279],{"class":4006},[3996,38176,12055],{"class":11033},[3996,38178,5720],{"class":4099},[3996,38180,38181,38183,38185,38187,38189],{"class":3998,"line":4426},[3996,38182,17110],{"class":4064},[3996,38184,16673],{"class":4064},[3996,38186,3821],{"class":4099},[3996,38188,16678],{"class":4064},[3996,38190,5720],{"class":4099},[3996,38192,38193,38195,38197,38199,38201],{"class":3998,"line":4432},[3996,38194,33439],{"class":4064},[3996,38196,27467],{"class":4064},[3996,38198,3821],{"class":4099},[3996,38200,16678],{"class":4064},[3996,38202,5720],{"class":4099},[3996,38204,38205,38207,38209,38211,38213,38215,38217,38219,38221,38223,38225],{"class":3998,"line":4438},[3996,38206,11001],{"class":4064},[3996,38208,38070],{"class":4064},[3996,38210,5652],{"class":4006},[3996,38212,5697],{"class":4064},[3996,38214,3821],{"class":4099},[3996,38216,5717],{"class":4064},[3996,38218,5658],{"class":4006},[3996,38220,5697],{"class":4064},[3996,38222,3821],{"class":4099},[3996,38224,17935],{"class":4064},[3996,38226,5720],{"class":4099},[3996,38228,38229,38232,38234,38236,38238,38240,38242],{"class":3998,"line":4443},[3996,38230,38231],{"class":4064},"          borderWidth:",[3996,38233,38070],{"class":4064},[3996,38235,5652],{"class":4006},[3996,38237,16713],{"class":11033},[3996,38239,5658],{"class":4006},[3996,38241,11949],{"class":11033},[3996,38243,5720],{"class":4099},[3996,38245,38246,38248,38250,38252,38254],{"class":3998,"line":4448},[3996,38247,33426],{"class":4064},[3996,38249,5697],{"class":4064},[3996,38251,3821],{"class":4099},[3996,38253,15476],{"class":4064},[3996,38255,5720],{"class":4099},[3996,38257,38258],{"class":3998,"line":4454},[3996,38259,11020],{"class":4099},[3996,38261,38262,38264,38266,38268],{"class":3998,"line":4460},[3996,38263,33456],{"class":4064},[3996,38265,31170],{"class":4006},[3996,38267,7805],{"class":4006},[3996,38269,38270],{"class":4064},"disabled\n",[3996,38272,38273,38276],{"class":3998,"line":4466},[3996,38274,38275],{"class":4006},"          ?",[3996,38277,38278],{"class":4064}," isPrimary\n",[3996,38280,38281,38283,38285,38287,38289,38291,38294],{"class":3998,"line":4472},[3996,38282,17663],{"class":4006},[3996,38284,5504],{"class":4099},[3996,38286,5694],{"class":4064},[3996,38288,5697],{"class":4064},[3996,38290,3821],{"class":4099},[3996,38292,38293],{"class":4064},"primaryPressed",[3996,38295,38296],{"class":4099}," }\n",[3996,38298,38299,38301,38303,38306,38309],{"class":3998,"line":4477},[3996,38300,17698],{"class":4006},[3996,38302,5504],{"class":4099},[3996,38304,38305],{"class":4064},"opacity:",[3996,38307,38308],{"class":11033}," 0.85",[3996,38310,38296],{"class":4099},[3996,38312,38313,38316,38318],{"class":3998,"line":5066},[3996,38314,38315],{"class":4006},"          :",[3996,38317,8109],{"class":4002},[3996,38319,5720],{"class":4099},[3996,38321,38322,38325,38327,38329,38331,38333,38335,38337],{"class":3998,"line":5072},[3996,38323,38324],{"class":4064},"        disabled",[3996,38326,5652],{"class":4006},[3996,38328,11925],{"class":4064},[3996,38330,3821],{"class":4099},[3996,38332,38116],{"class":4064},[3996,38334,5658],{"class":4006},[3996,38336,8109],{"class":4002},[3996,38338,5720],{"class":4099},[3996,38340,38341,38343],{"class":3998,"line":5078},[3996,38342,17255],{"class":4064},[3996,38344,5720],{"class":4099},[3996,38346,38347,38349],{"class":3998,"line":5084},[3996,38348,17158],{"class":4099},[3996,38350,4129],{"class":4002},[3996,38352,38353],{"class":3998,"line":5090},[3996,38354,11054],{"class":4081},[3996,38356,38357,38359],{"class":3998,"line":5096},[3996,38358,5632],{"class":4081},[3996,38360,37555],{"class":4085},[3996,38362,38363,38365,38367,38369],{"class":3998,"line":10510},[3996,38364,17255],{"class":4089},[3996,38366,4093],{"class":4006},[3996,38368,4096],{"class":4002},[3996,38370,17085],{"class":4099},[3996,38372,38373,38375,38377,38379],{"class":3998,"line":10516},[3996,38374,17362],{"class":4064},[3996,38376,3821],{"class":4099},[3996,38378,16097],{"class":4064},[3996,38380,5720],{"class":4099},[3996,38382,38383],{"class":3998,"line":10521},[3996,38384,17374],{"class":4099},[3996,38386,38387,38389,38391,38393,38395,38397,38399,38401,38403,38405,38407],{"class":3998,"line":10552},[3996,38388,17609],{"class":4064},[3996,38390,38070],{"class":4064},[3996,38392,5652],{"class":4006},[3996,38394,5697],{"class":4064},[3996,38396,3821],{"class":4099},[3996,38398,18070],{"class":4064},[3996,38400,5658],{"class":4006},[3996,38402,5697],{"class":4064},[3996,38404,3821],{"class":4099},[3996,38406,4227],{"class":4064},[3996,38408,5720],{"class":4099},[3996,38410,38411,38414,38416,38418,38420],{"class":3998,"line":10587},[3996,38412,38413],{"class":4064},"            fontSize:",[3996,38415,35979],{"class":4064},[3996,38417,3821],{"class":4099},[3996,38419,16678],{"class":4064},[3996,38421,5720],{"class":4099},[3996,38423,38424],{"class":3998,"line":12205},[3996,38425,17451],{"class":4099},[3996,38427,38428,38430],{"class":3998,"line":12213},[3996,38429,17457],{"class":4099},[3996,38431,4129],{"class":4002},[3996,38433,38434],{"class":3998,"line":12223},[3996,38435,5775],{"class":4081},[3996,38437,38438,38440,38442],{"class":3998,"line":12233},[3996,38439,5780],{"class":4002},[3996,38441,16097],{"class":4064},[3996,38443,4129],{"class":4002},[3996,38445,38446,38448,38450],{"class":3998,"line":12243},[3996,38447,5919],{"class":4081},[3996,38449,7901],{"class":4085},[3996,38451,5924],{"class":4081},[3996,38453,38454,38456,38458],{"class":3998,"line":12253},[3996,38455,6003],{"class":4081},[3996,38457,7896],{"class":4085},[3996,38459,5924],{"class":4081},[3996,38461,38462],{"class":3998,"line":12258},[3996,38463,5934],{"class":4006},[3996,38465,38466],{"class":3998,"line":16645},[3996,38467,4129],{"class":4006},[3996,38469,38470],{"class":3998,"line":16656},[3996,38471,4051],{"emptyLinePlaceholder":4050},[3996,38473,38474,38476,38478,38480,38482,38484,38486],{"class":3998,"line":16698},[3996,38475,4003],{"class":4002},[3996,38477,11925],{"class":4010},[3996,38479,7937],{"class":4006},[3996,38481,8741],{"class":4064},[3996,38483,3821],{"class":4006},[3996,38485,11934],{"class":4022},[3996,38487,7971],{"class":4006},[3996,38489,38490,38492],{"class":3998,"line":16720},[3996,38491,37821],{"class":4064},[3996,38493,7958],{"class":4006},[3996,38495,38496,38498,38500],{"class":3998,"line":16750},[3996,38497,13446],{"class":4064},[3996,38499,13439],{"class":4029},[3996,38501,5720],{"class":4006},[3996,38503,38504],{"class":3998,"line":16784},[3996,38505,10287],{"class":4006},[3996,38507,38508,38511],{"class":3998,"line":16791},[3996,38509,38510],{"class":4064},"  disabled:",[3996,38512,7958],{"class":4006},[3996,38514,38515,38517,38520],{"class":3998,"line":16797},[3996,38516,34517],{"class":4064},[3996,38518,38519],{"class":11033}," 0.5",[3996,38521,5720],{"class":4006},[3996,38523,38524],{"class":3998,"line":16811},[3996,38525,10287],{"class":4006},[3996,38527,38528,38530],{"class":3998,"line":16837},[3996,38529,32055],{"class":4064},[3996,38531,7958],{"class":4006},[3996,38533,38534,38536,38538],{"class":3998,"line":16857},[3996,38535,12236],{"class":4064},[3996,38537,5744],{"class":4029},[3996,38539,5720],{"class":4006},[3996,38541,38542],{"class":3998,"line":16889},[3996,38543,10287],{"class":4006},[3996,38545,38546],{"class":3998,"line":16897},[3996,38547,12261],{"class":4006},[3987,38549,38552],{"className":3989,"code":38550,"filename":38551,"language":3991,"meta":3992,"style":3992},"import { ReactNode } from 'react';\nimport { StyleSheet, ViewStyle } from 'react-native';\nimport { SafeAreaView } from 'react-native-safe-area-context';\n\nimport { space, useTheme } from '@\u002Fshared\u002Ftheme';\n\ntype ScreenProps = {\n  children: ReactNode;\n  style?: ViewStyle;\n};\n\nexport function Screen({ children, style }: ScreenProps) {\n  const { colors } = useTheme();\n\n  return (\n    \u003CSafeAreaView\n      style={[styles.root, { backgroundColor: colors.background }, style]}\n    >\n      {children}\n    \u003C\u002FSafeAreaView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  root: {\n    flex: 1,\n    paddingHorizontal: space.md,\n  },\n});\n","src\u002Fshared\u002Fui\u002FScreen.tsx",[3747,38553,38554,38570,38590,38606,38610,38630,38634,38643,38653,38663,38667,38671,38696,38710,38714,38720,38727,38763,38767,38775,38783,38787,38791,38795,38811,38818,38826,38838,38842],{"__ignoreMap":3992},[3996,38555,38556,38558,38560,38562,38564,38566,38568],{"class":3998,"line":3999},[3996,38557,5501],{"class":4057},[3996,38559,5504],{"class":4006},[3996,38561,23897],{"class":4064},[3996,38563,5509],{"class":4006},[3996,38565,5512],{"class":4057},[3996,38567,7869],{"class":4029},[3996,38569,4123],{"class":4006},[3996,38571,38572,38574,38576,38578,38580,38582,38584,38586,38588],{"class":3998,"line":4047},[3996,38573,5501],{"class":4057},[3996,38575,5504],{"class":4006},[3996,38577,8741],{"class":4064},[3996,38579,3867],{"class":4006},[3996,38581,6778],{"class":4064},[3996,38583,5509],{"class":4006},[3996,38585,5512],{"class":4057},[3996,38587,7908],{"class":4029},[3996,38589,4123],{"class":4006},[3996,38591,38592,38594,38596,38598,38600,38602,38604],{"class":3998,"line":4054},[3996,38593,5501],{"class":4057},[3996,38595,5504],{"class":4006},[3996,38597,7191],{"class":4064},[3996,38599,5509],{"class":4006},[3996,38601,5512],{"class":4057},[3996,38603,11379],{"class":4029},[3996,38605,4123],{"class":4006},[3996,38607,38608],{"class":3998,"line":4075},[3996,38609,4051],{"emptyLinePlaceholder":4050},[3996,38611,38612,38614,38616,38618,38620,38622,38624,38626,38628],{"class":3998,"line":4126},[3996,38613,5501],{"class":4057},[3996,38615,5504],{"class":4006},[3996,38617,36343],{"class":4064},[3996,38619,3867],{"class":4006},[3996,38621,5564],{"class":4064},[3996,38623,5509],{"class":4006},[3996,38625,5512],{"class":4057},[3996,38627,5571],{"class":4029},[3996,38629,4123],{"class":4006},[3996,38631,38632],{"class":3998,"line":4132},[3996,38633,4051],{"emptyLinePlaceholder":4050},[3996,38635,38636,38638,38641],{"class":3998,"line":4137},[3996,38637,16032],{"class":4002},[3996,38639,38640],{"class":4085}," ScreenProps",[3996,38642,10144],{"class":4006},[3996,38644,38645,38647,38649,38651],{"class":3998,"line":4275},[3996,38646,23892],{"class":4064},[3996,38648,8990],{"class":4006},[3996,38650,23897],{"class":4085},[3996,38652,4123],{"class":4006},[3996,38654,38655,38657,38659,38661],{"class":3998,"line":4281},[3996,38656,37398],{"class":4064},[3996,38658,22280],{"class":4006},[3996,38660,6778],{"class":4085},[3996,38662,4123],{"class":4006},[3996,38664,38665],{"class":3998,"line":4287},[3996,38666,10203],{"class":4006},[3996,38668,38669],{"class":3998,"line":4293},[3996,38670,4051],{"emptyLinePlaceholder":4050},[3996,38672,38673,38675,38677,38680,38682,38684,38686,38689,38691,38694],{"class":3998,"line":4299},[3996,38674,5947],{"class":4057},[3996,38676,5953],{"class":4002},[3996,38678,38679],{"class":4022}," Screen",[3996,38681,7759],{"class":4006},[3996,38683,23921],{"class":4064},[3996,38685,3867],{"class":4006},[3996,38687,38688],{"class":4064},"style",[3996,38690,23924],{"class":4006},[3996,38692,38693],{"class":4085},"ScreenProps",[3996,38695,4072],{"class":4006},[3996,38697,38698,38700,38702,38704,38706,38708],{"class":3998,"line":4305},[3996,38699,5593],{"class":4002},[3996,38701,5504],{"class":4006},[3996,38703,5598],{"class":4010},[3996,38705,5606],{"class":4006},[3996,38707,5564],{"class":4022},[3996,38709,5611],{"class":4006},[3996,38711,38712],{"class":3998,"line":4311},[3996,38713,4051],{"emptyLinePlaceholder":4050},[3996,38715,38716,38718],{"class":3998,"line":4317},[3996,38717,4078],{"class":4057},[3996,38719,5622],{"class":4006},[3996,38721,38722,38724],{"class":3998,"line":4323},[3996,38723,5969],{"class":4081},[3996,38725,38726],{"class":4085},"SafeAreaView\n",[3996,38728,38729,38731,38733,38735,38737,38739,38741,38744,38746,38748,38750,38752,38754,38757,38759,38761],{"class":3998,"line":4329},[3996,38730,17078],{"class":4089},[3996,38732,4093],{"class":4006},[3996,38734,4096],{"class":4002},[3996,38736,11457],{"class":4099},[3996,38738,8789],{"class":4064},[3996,38740,3821],{"class":4099},[3996,38742,38743],{"class":4064},"root",[3996,38745,17742],{"class":4099},[3996,38747,5694],{"class":4064},[3996,38749,5697],{"class":4064},[3996,38751,3821],{"class":4099},[3996,38753,5702],{"class":4064},[3996,38755,38756],{"class":4099}," }, ",[3996,38758,38688],{"class":4064},[3996,38760,11463],{"class":4099},[3996,38762,4129],{"class":4002},[3996,38764,38765],{"class":3998,"line":4335},[3996,38766,11054],{"class":4081},[3996,38768,38769,38771,38773],{"class":3998,"line":4341},[3996,38770,16701],{"class":4002},[3996,38772,23921],{"class":4064},[3996,38774,4129],{"class":4002},[3996,38776,38777,38779,38781],{"class":3998,"line":4347},[3996,38778,6003],{"class":4081},[3996,38780,7191],{"class":4085},[3996,38782,5924],{"class":4081},[3996,38784,38785],{"class":3998,"line":4352},[3996,38786,5934],{"class":4006},[3996,38788,38789],{"class":3998,"line":4357},[3996,38790,4129],{"class":4006},[3996,38792,38793],{"class":3998,"line":4363},[3996,38794,4051],{"emptyLinePlaceholder":4050},[3996,38796,38797,38799,38801,38803,38805,38807,38809],{"class":3998,"line":4369},[3996,38798,4003],{"class":4002},[3996,38800,11925],{"class":4010},[3996,38802,7937],{"class":4006},[3996,38804,8741],{"class":4064},[3996,38806,3821],{"class":4006},[3996,38808,11934],{"class":4022},[3996,38810,7971],{"class":4006},[3996,38812,38813,38816],{"class":3998,"line":4375},[3996,38814,38815],{"class":4064},"  root:",[3996,38817,7958],{"class":4006},[3996,38819,38820,38822,38824],{"class":3998,"line":4381},[3996,38821,13419],{"class":4064},[3996,38823,11949],{"class":11033},[3996,38825,5720],{"class":4006},[3996,38827,38828,38830,38832,38834,38836],{"class":3998,"line":4387},[3996,38829,11969],{"class":4064},[3996,38831,35861],{"class":4064},[3996,38833,3821],{"class":4006},[3996,38835,16678],{"class":4064},[3996,38837,5720],{"class":4006},[3996,38839,38840],{"class":3998,"line":4392},[3996,38841,10287],{"class":4006},[3996,38843,38844],{"class":3998,"line":4398},[3996,38845,12261],{"class":4006},[3987,38847,38850],{"className":3989,"code":38848,"filename":38849,"language":3991,"meta":3992,"style":3992},"import { ReactNode } from 'react';\nimport {\n  StyleSheet,\n  TextInput,\n  TextInputProps,\n  View,\n  ViewStyle,\n} from 'react-native';\n\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\nimport { AppText } from '.\u002FAppText';\n\ntype TextFieldProps = TextInputProps & {\n  label: string;\n  error?: string;\n  \u002F** Допоміжний текст під полем (коли немає error). *\u002F\n  hint?: string;\n  containerStyle?: ViewStyle;\n  \u002F** Опційний правий слот (іконка, кнопка дати). *\u002F\n  rightSlot?: ReactNode;\n};\n\n\u002F**\n * Поле форми: label + TextInput + помилка\u002Fпідказка.\n * Контрольоване ззовні (value \u002F onChangeText) — зручно з RHF Controller.\n *\u002F\nexport function TextField({\n  label,\n  error,\n  hint,\n  containerStyle,\n  rightSlot,\n  style,\n  ...inputProps\n}: TextFieldProps) {\n  const { colors, spacing, radius, fontSize } = useTheme();\n  const hasError = Boolean(error);\n\n  return (\n    \u003CView style={[styles.wrap, { gap: spacing.xs }, containerStyle]}>\n      \u003CAppText variant=\"caption\" style={styles.label}>\n        {label}\n      \u003C\u002FAppText>\n      \u003CView\n        style={[\n          styles.row,\n          {\n            borderColor: hasError ? colors.danger : colors.border,\n            backgroundColor: colors.surface,\n            borderRadius: radius.md,\n          },\n        ]}\n      >\n        \u003CTextInput\n          placeholderTextColor={colors.textSecondary}\n          style={[\n            styles.input,\n            {\n              color: colors.text,\n              fontSize: fontSize.md,\n              paddingVertical: spacing.sm + 4,\n              paddingHorizontal: spacing.md,\n            },\n            style,\n          ]}\n          {...inputProps}\n        \u002F>\n        {rightSlot}\n      \u003C\u002FView>\n      {hasError ? (\n        \u003CAppText variant=\"caption\" color={colors.danger}>\n          {error}\n        \u003C\u002FAppText>\n      ) : hint ? (\n        \u003CAppText variant=\"caption\" color={colors.textSecondary}>\n          {hint}\n        \u003C\u002FAppText>\n      ) : null}\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  wrap: {\n    width: '100%',\n  },\n  label: {\n    fontWeight: '600',\n  },\n  row: {\n    flexDirection: 'row',\n    alignItems: 'center',\n    borderWidth: 1,\n    overflow: 'hidden',\n  },\n  input: {\n    flex: 1,\n    minHeight: 48,\n  },\n});\n","src\u002Fshared\u002Fui\u002FTextField.tsx",[3747,38851,38852,38868,38874,38880,38887,38894,38900,38907,38917,38921,38937,38954,38958,38972,38982,38992,38997,39008,39019,39024,39035,39039,39043,39047,39052,39057,39061,39072,39078,39084,39090,39096,39102,39108,39115,39124,39150,39166,39170,39176,39217,39245,39253,39261,39267,39277,39287,39291,39315,39327,39339,39343,39349,39353,39360,39377,39387,39397,39401,39414,39427,39444,39457,39461,39467,39473,39484,39488,39497,39505,39515,39543,39551,39559,39572,39600,39609,39617,39625,39633,39637,39641,39645,39661,39667,39675,39679,39685,39693,39697,39703,39711,39719,39727,39735,39739,39746,39754,39762,39766],{"__ignoreMap":3992},[3996,38853,38854,38856,38858,38860,38862,38864,38866],{"class":3998,"line":3999},[3996,38855,5501],{"class":4057},[3996,38857,5504],{"class":4006},[3996,38859,23897],{"class":4064},[3996,38861,5509],{"class":4006},[3996,38863,5512],{"class":4057},[3996,38865,7869],{"class":4029},[3996,38867,4123],{"class":4006},[3996,38869,38870,38872],{"class":3998,"line":4047},[3996,38871,5501],{"class":4057},[3996,38873,7958],{"class":4006},[3996,38875,38876,38878],{"class":3998,"line":4054},[3996,38877,15898],{"class":4064},[3996,38879,5720],{"class":4006},[3996,38881,38882,38885],{"class":3998,"line":4075},[3996,38883,38884],{"class":4064},"  TextInput",[3996,38886,5720],{"class":4006},[3996,38888,38889,38892],{"class":3998,"line":4126},[3996,38890,38891],{"class":4064},"  TextInputProps",[3996,38893,5720],{"class":4006},[3996,38895,38896,38898],{"class":3998,"line":4132},[3996,38897,15905],{"class":4064},[3996,38899,5720],{"class":4006},[3996,38901,38902,38905],{"class":3998,"line":4137},[3996,38903,38904],{"class":4064},"  ViewStyle",[3996,38906,5720],{"class":4006},[3996,38908,38909,38911,38913,38915],{"class":3998,"line":4275},[3996,38910,15912],{"class":4006},[3996,38912,5512],{"class":4057},[3996,38914,7908],{"class":4029},[3996,38916,4123],{"class":4006},[3996,38918,38919],{"class":3998,"line":4281},[3996,38920,4051],{"emptyLinePlaceholder":4050},[3996,38922,38923,38925,38927,38929,38931,38933,38935],{"class":3998,"line":4287},[3996,38924,5501],{"class":4057},[3996,38926,5504],{"class":4006},[3996,38928,5564],{"class":4064},[3996,38930,5509],{"class":4006},[3996,38932,5512],{"class":4057},[3996,38934,5571],{"class":4029},[3996,38936,4123],{"class":4006},[3996,38938,38939,38941,38943,38945,38947,38949,38952],{"class":3998,"line":4293},[3996,38940,5501],{"class":4057},[3996,38942,5504],{"class":4006},[3996,38944,16052],{"class":4064},[3996,38946,5509],{"class":4006},[3996,38948,5512],{"class":4057},[3996,38950,38951],{"class":4029}," '.\u002FAppText'",[3996,38953,4123],{"class":4006},[3996,38955,38956],{"class":3998,"line":4299},[3996,38957,4051],{"emptyLinePlaceholder":4050},[3996,38959,38960,38962,38965,38967,38970],{"class":3998,"line":4305},[3996,38961,16032],{"class":4002},[3996,38963,38964],{"class":4085}," TextFieldProps",[3996,38966,7937],{"class":4006},[3996,38968,38969],{"class":4085},"TextInputProps",[3996,38971,37355],{"class":4006},[3996,38973,38974,38976,38978,38980],{"class":3998,"line":4311},[3996,38975,30209],{"class":4064},[3996,38977,8990],{"class":4006},[3996,38979,7692],{"class":4085},[3996,38981,4123],{"class":4006},[3996,38983,38984,38986,38988,38990],{"class":3998,"line":4317},[3996,38985,30265],{"class":4064},[3996,38987,22280],{"class":4006},[3996,38989,7692],{"class":4085},[3996,38991,4123],{"class":4006},[3996,38993,38994],{"class":3998,"line":4323},[3996,38995,38996],{"class":5783},"  \u002F** Допоміжний текст під полем (коли немає error). *\u002F\n",[3996,38998,38999,39002,39004,39006],{"class":3998,"line":4329},[3996,39000,39001],{"class":4064},"  hint",[3996,39003,22280],{"class":4006},[3996,39005,7692],{"class":4085},[3996,39007,4123],{"class":4006},[3996,39009,39010,39013,39015,39017],{"class":3998,"line":4335},[3996,39011,39012],{"class":4064},"  containerStyle",[3996,39014,22280],{"class":4006},[3996,39016,6778],{"class":4085},[3996,39018,4123],{"class":4006},[3996,39020,39021],{"class":3998,"line":4341},[3996,39022,39023],{"class":5783},"  \u002F** Опційний правий слот (іконка, кнопка дати). *\u002F\n",[3996,39025,39026,39029,39031,39033],{"class":3998,"line":4347},[3996,39027,39028],{"class":4064},"  rightSlot",[3996,39030,22280],{"class":4006},[3996,39032,23897],{"class":4085},[3996,39034,4123],{"class":4006},[3996,39036,39037],{"class":3998,"line":4352},[3996,39038,10203],{"class":4006},[3996,39040,39041],{"class":3998,"line":4357},[3996,39042,4051],{"emptyLinePlaceholder":4050},[3996,39044,39045],{"class":3998,"line":4363},[3996,39046,14911],{"class":5783},[3996,39048,39049],{"class":3998,"line":4369},[3996,39050,39051],{"class":5783}," * Поле форми: label + TextInput + помилка\u002Fпідказка.\n",[3996,39053,39054],{"class":3998,"line":4375},[3996,39055,39056],{"class":5783}," * Контрольоване ззовні (value \u002F onChangeText) — зручно з RHF Controller.\n",[3996,39058,39059],{"class":3998,"line":4381},[3996,39060,14926],{"class":5783},[3996,39062,39063,39065,39067,39070],{"class":3998,"line":4387},[3996,39064,5947],{"class":4057},[3996,39066,5953],{"class":4002},[3996,39068,39069],{"class":4022}," TextField",[3996,39071,7971],{"class":4006},[3996,39073,39074,39076],{"class":3998,"line":4392},[3996,39075,30209],{"class":4064},[3996,39077,5720],{"class":4006},[3996,39079,39080,39082],{"class":3998,"line":4398},[3996,39081,30265],{"class":4064},[3996,39083,5720],{"class":4006},[3996,39085,39086,39088],{"class":3998,"line":4404},[3996,39087,39001],{"class":4064},[3996,39089,5720],{"class":4006},[3996,39091,39092,39094],{"class":3998,"line":4410},[3996,39093,39012],{"class":4064},[3996,39095,5720],{"class":4006},[3996,39097,39098,39100],{"class":3998,"line":4415},[3996,39099,39028],{"class":4064},[3996,39101,5720],{"class":4006},[3996,39103,39104,39106],{"class":3998,"line":4420},[3996,39105,37398],{"class":4064},[3996,39107,5720],{"class":4006},[3996,39109,39110,39112],{"class":3998,"line":4426},[3996,39111,37460],{"class":4006},[3996,39113,39114],{"class":4064},"inputProps\n",[3996,39116,39117,39119,39122],{"class":3998,"line":4432},[3996,39118,26227],{"class":4006},[3996,39120,39121],{"class":4085},"TextFieldProps",[3996,39123,4072],{"class":4006},[3996,39125,39126,39128,39130,39132,39134,39136,39138,39140,39142,39144,39146,39148],{"class":3998,"line":4438},[3996,39127,5593],{"class":4002},[3996,39129,5504],{"class":4006},[3996,39131,5598],{"class":4010},[3996,39133,3867],{"class":4006},[3996,39135,16226],{"class":4010},[3996,39137,3867],{"class":4006},[3996,39139,26249],{"class":4010},[3996,39141,3867],{"class":4006},[3996,39143,7212],{"class":4010},[3996,39145,5606],{"class":4006},[3996,39147,5564],{"class":4022},[3996,39149,5611],{"class":4006},[3996,39151,39152,39154,39156,39158,39160,39162,39164],{"class":3998,"line":4443},[3996,39153,5593],{"class":4002},[3996,39155,30472],{"class":4010},[3996,39157,7937],{"class":4006},[3996,39159,29346],{"class":4022},[3996,39161,4109],{"class":4006},[3996,39163,30481],{"class":4064},[3996,39165,4044],{"class":4006},[3996,39167,39168],{"class":3998,"line":4448},[3996,39169,4051],{"emptyLinePlaceholder":4050},[3996,39171,39172,39174],{"class":3998,"line":4454},[3996,39173,4078],{"class":4057},[3996,39175,5622],{"class":4006},[3996,39177,39178,39180,39182,39184,39186,39188,39190,39192,39194,39196,39198,39200,39202,39204,39206,39208,39211,39213,39215],{"class":3998,"line":4460},[3996,39179,5969],{"class":4081},[3996,39181,11340],{"class":4085},[3996,39183,5637],{"class":4089},[3996,39185,4093],{"class":4006},[3996,39187,4096],{"class":4002},[3996,39189,11457],{"class":4099},[3996,39191,8789],{"class":4064},[3996,39193,3821],{"class":4099},[3996,39195,32526],{"class":4064},[3996,39197,17742],{"class":4099},[3996,39199,12652],{"class":4064},[3996,39201,16673],{"class":4064},[3996,39203,3821],{"class":4099},[3996,39205,17429],{"class":4064},[3996,39207,38756],{"class":4099},[3996,39209,39210],{"class":4064},"containerStyle",[3996,39212,11463],{"class":4099},[3996,39214,4117],{"class":4002},[3996,39216,5924],{"class":4081},[3996,39218,39219,39221,39223,39225,39227,39229,39231,39233,39235,39237,39239,39241,39243],{"class":3998,"line":4466},[3996,39220,5632],{"class":4081},[3996,39222,16052],{"class":4085},[3996,39224,17175],{"class":4089},[3996,39226,4093],{"class":4006},[3996,39228,17503],{"class":4029},[3996,39230,5637],{"class":4089},[3996,39232,4093],{"class":4006},[3996,39234,4096],{"class":4002},[3996,39236,8789],{"class":4064},[3996,39238,3821],{"class":4099},[3996,39240,16097],{"class":4064},[3996,39242,4117],{"class":4002},[3996,39244,5924],{"class":4081},[3996,39246,39247,39249,39251],{"class":3998,"line":4472},[3996,39248,5780],{"class":4002},[3996,39250,16097],{"class":4064},[3996,39252,4129],{"class":4002},[3996,39254,39255,39257,39259],{"class":3998,"line":4477},[3996,39256,5919],{"class":4081},[3996,39258,16052],{"class":4085},[3996,39260,5924],{"class":4081},[3996,39262,39263,39265],{"class":3998,"line":5066},[3996,39264,5632],{"class":4081},[3996,39266,17072],{"class":4085},[3996,39268,39269,39271,39273,39275],{"class":3998,"line":5072},[3996,39270,17255],{"class":4089},[3996,39272,4093],{"class":4006},[3996,39274,4096],{"class":4002},[3996,39276,17085],{"class":4099},[3996,39278,39279,39281,39283,39285],{"class":3998,"line":5078},[3996,39280,17362],{"class":4064},[3996,39282,3821],{"class":4099},[3996,39284,32581],{"class":4064},[3996,39286,5720],{"class":4099},[3996,39288,39289],{"class":3998,"line":5084},[3996,39290,17374],{"class":4099},[3996,39292,39293,39295,39297,39299,39301,39303,39305,39307,39309,39311,39313],{"class":3998,"line":5090},[3996,39294,30959],{"class":4064},[3996,39296,30472],{"class":4064},[3996,39298,5652],{"class":4006},[3996,39300,5697],{"class":4064},[3996,39302,3821],{"class":4099},[3996,39304,30970],{"class":4064},[3996,39306,5658],{"class":4006},[3996,39308,5697],{"class":4064},[3996,39310,3821],{"class":4099},[3996,39312,15476],{"class":4064},[3996,39314,5720],{"class":4099},[3996,39316,39317,39319,39321,39323,39325],{"class":3998,"line":5096},[3996,39318,18602],{"class":4064},[3996,39320,5697],{"class":4064},[3996,39322,3821],{"class":4099},[3996,39324,17935],{"class":4064},[3996,39326,5720],{"class":4099},[3996,39328,39329,39331,39333,39335,39337],{"class":3998,"line":10510},[3996,39330,30997],{"class":4064},[3996,39332,27467],{"class":4064},[3996,39334,3821],{"class":4099},[3996,39336,16678],{"class":4064},[3996,39338,5720],{"class":4099},[3996,39340,39341],{"class":3998,"line":10516},[3996,39342,17451],{"class":4099},[3996,39344,39345,39347],{"class":3998,"line":10521},[3996,39346,17457],{"class":4099},[3996,39348,4129],{"class":4002},[3996,39350,39351],{"class":3998,"line":10552},[3996,39352,5775],{"class":4081},[3996,39354,39355,39357],{"class":3998,"line":10587},[3996,39356,5791],{"class":4081},[3996,39358,39359],{"class":4085},"TextInput\n",[3996,39361,39362,39365,39367,39369,39371,39373,39375],{"class":3998,"line":12205},[3996,39363,39364],{"class":4089},"          placeholderTextColor",[3996,39366,4093],{"class":4006},[3996,39368,4096],{"class":4002},[3996,39370,5598],{"class":4064},[3996,39372,3821],{"class":4099},[3996,39374,15445],{"class":4064},[3996,39376,4129],{"class":4002},[3996,39378,39379,39381,39383,39385],{"class":3998,"line":12213},[3996,39380,17583],{"class":4089},[3996,39382,4093],{"class":4006},[3996,39384,4096],{"class":4002},[3996,39386,17085],{"class":4099},[3996,39388,39389,39391,39393,39395],{"class":3998,"line":12223},[3996,39390,20471],{"class":4064},[3996,39392,3821],{"class":4099},[3996,39394,13703],{"class":4064},[3996,39396,5720],{"class":4099},[3996,39398,39399],{"class":3998,"line":12233},[3996,39400,20482],{"class":4099},[3996,39402,39403,39406,39408,39410,39412],{"class":3998,"line":12243},[3996,39404,39405],{"class":4064},"              color:",[3996,39407,5697],{"class":4064},[3996,39409,3821],{"class":4099},[3996,39411,4227],{"class":4064},[3996,39413,5720],{"class":4099},[3996,39415,39416,39419,39421,39423,39425],{"class":3998,"line":12253},[3996,39417,39418],{"class":4064},"              fontSize:",[3996,39420,35979],{"class":4064},[3996,39422,3821],{"class":4099},[3996,39424,16678],{"class":4064},[3996,39426,5720],{"class":4099},[3996,39428,39429,39432,39434,39436,39438,39440,39442],{"class":3998,"line":12258},[3996,39430,39431],{"class":4064},"              paddingVertical:",[3996,39433,16673],{"class":4064},[3996,39435,3821],{"class":4099},[3996,39437,16741],{"class":4064},[3996,39439,21279],{"class":4006},[3996,39441,12055],{"class":11033},[3996,39443,5720],{"class":4099},[3996,39445,39446,39449,39451,39453,39455],{"class":3998,"line":16645},[3996,39447,39448],{"class":4064},"              paddingHorizontal:",[3996,39450,16673],{"class":4064},[3996,39452,3821],{"class":4099},[3996,39454,16678],{"class":4064},[3996,39456,5720],{"class":4099},[3996,39458,39459],{"class":3998,"line":16656},[3996,39460,20539],{"class":4099},[3996,39462,39463,39465],{"class":3998,"line":16698},[3996,39464,31391],{"class":4064},[3996,39466,5720],{"class":4099},[3996,39468,39469,39471],{"class":3998,"line":16720},[3996,39470,20544],{"class":4099},[3996,39472,4129],{"class":4002},[3996,39474,39475,39477,39479,39482],{"class":3998,"line":16750},[3996,39476,17646],{"class":4002},[3996,39478,37763],{"class":4006},[3996,39480,39481],{"class":4064},"inputProps",[3996,39483,4129],{"class":4002},[3996,39485,39486],{"class":3998,"line":16784},[3996,39487,5914],{"class":4081},[3996,39489,39490,39492,39495],{"class":3998,"line":16791},[3996,39491,5780],{"class":4002},[3996,39493,39494],{"class":4064},"rightSlot",[3996,39496,4129],{"class":4002},[3996,39498,39499,39501,39503],{"class":3998,"line":16797},[3996,39500,5919],{"class":4081},[3996,39502,11340],{"class":4085},[3996,39504,5924],{"class":4081},[3996,39506,39507,39509,39511,39513],{"class":3998,"line":16811},[3996,39508,16701],{"class":4002},[3996,39510,31083],{"class":4064},[3996,39512,5652],{"class":4006},[3996,39514,5622],{"class":4099},[3996,39516,39517,39519,39521,39523,39525,39527,39529,39531,39533,39535,39537,39539,39541],{"class":3998,"line":16837},[3996,39518,5791],{"class":4081},[3996,39520,16052],{"class":4085},[3996,39522,17175],{"class":4089},[3996,39524,4093],{"class":4006},[3996,39526,17503],{"class":4029},[3996,39528,6913],{"class":4089},[3996,39530,4093],{"class":4006},[3996,39532,4096],{"class":4002},[3996,39534,5598],{"class":4064},[3996,39536,3821],{"class":4099},[3996,39538,30970],{"class":4064},[3996,39540,4117],{"class":4002},[3996,39542,5924],{"class":4081},[3996,39544,39545,39547,39549],{"class":3998,"line":16857},[3996,39546,17646],{"class":4002},[3996,39548,30481],{"class":4064},[3996,39550,4129],{"class":4002},[3996,39552,39553,39555,39557],{"class":3998,"line":16889},[3996,39554,8074],{"class":4081},[3996,39556,16052],{"class":4085},[3996,39558,5924],{"class":4081},[3996,39560,39561,39563,39565,39568,39570],{"class":3998,"line":16897},[3996,39562,16991],{"class":4099},[3996,39564,6869],{"class":4006},[3996,39566,39567],{"class":4064}," hint",[3996,39569,5652],{"class":4006},[3996,39571,5622],{"class":4099},[3996,39573,39574,39576,39578,39580,39582,39584,39586,39588,39590,39592,39594,39596,39598],{"class":3998,"line":16908},[3996,39575,5791],{"class":4081},[3996,39577,16052],{"class":4085},[3996,39579,17175],{"class":4089},[3996,39581,4093],{"class":4006},[3996,39583,17503],{"class":4029},[3996,39585,6913],{"class":4089},[3996,39587,4093],{"class":4006},[3996,39589,4096],{"class":4002},[3996,39591,5598],{"class":4064},[3996,39593,3821],{"class":4099},[3996,39595,15445],{"class":4064},[3996,39597,4117],{"class":4002},[3996,39599,5924],{"class":4081},[3996,39601,39602,39604,39607],{"class":3998,"line":16951},[3996,39603,17646],{"class":4002},[3996,39605,39606],{"class":4064},"hint",[3996,39608,4129],{"class":4002},[3996,39610,39611,39613,39615],{"class":3998,"line":16973},[3996,39612,8074],{"class":4081},[3996,39614,16052],{"class":4085},[3996,39616,5924],{"class":4081},[3996,39618,39619,39621,39623],{"class":3998,"line":16979},[3996,39620,16991],{"class":4099},[3996,39622,6869],{"class":4006},[3996,39624,16996],{"class":4002},[3996,39626,39627,39629,39631],{"class":3998,"line":16988},[3996,39628,6003],{"class":4081},[3996,39630,11340],{"class":4085},[3996,39632,5924],{"class":4081},[3996,39634,39635],{"class":3998,"line":16999},[3996,39636,5934],{"class":4006},[3996,39638,39639],{"class":3998,"line":17004},[3996,39640,4129],{"class":4006},[3996,39642,39643],{"class":3998,"line":17038},[3996,39644,4051],{"emptyLinePlaceholder":4050},[3996,39646,39647,39649,39651,39653,39655,39657,39659],{"class":3998,"line":17047},[3996,39648,4003],{"class":4002},[3996,39650,11925],{"class":4010},[3996,39652,7937],{"class":4006},[3996,39654,8741],{"class":4064},[3996,39656,3821],{"class":4006},[3996,39658,11934],{"class":4022},[3996,39660,7971],{"class":4006},[3996,39662,39663,39665],{"class":3998,"line":17052},[3996,39664,32915],{"class":4064},[3996,39666,7958],{"class":4006},[3996,39668,39669,39671,39673],{"class":3998,"line":17057},[3996,39670,32922],{"class":4064},[3996,39672,32925],{"class":4029},[3996,39674,5720],{"class":4006},[3996,39676,39677],{"class":3998,"line":17067},[3996,39678,10287],{"class":4006},[3996,39680,39681,39683],{"class":3998,"line":17075},[3996,39682,32055],{"class":4064},[3996,39684,7958],{"class":4006},[3996,39686,39687,39689,39691],{"class":3998,"line":17088},[3996,39688,12236],{"class":4064},[3996,39690,5744],{"class":4029},[3996,39692,5720],{"class":4006},[3996,39694,39695],{"class":3998,"line":17101},[3996,39696,10287],{"class":4006},[3996,39698,39699,39701],{"class":3998,"line":17107},[3996,39700,32936],{"class":4064},[3996,39702,7958],{"class":4006},[3996,39704,39705,39707,39709],{"class":3998,"line":17121},[3996,39706,18797],{"class":4064},[3996,39708,18800],{"class":4029},[3996,39710,5720],{"class":4006},[3996,39712,39713,39715,39717],{"class":3998,"line":17136},[3996,39714,13446],{"class":4064},[3996,39716,13439],{"class":4029},[3996,39718,5720],{"class":4006},[3996,39720,39721,39723,39725],{"class":3998,"line":17150},[3996,39722,12123],{"class":4064},[3996,39724,11949],{"class":11033},[3996,39726,5720],{"class":4006},[3996,39728,39729,39731,39733],{"class":3998,"line":17155},[3996,39730,30038],{"class":4064},[3996,39732,30041],{"class":4029},[3996,39734,5720],{"class":4006},[3996,39736,39737],{"class":3998,"line":17163},[3996,39738,10287],{"class":4006},[3996,39740,39741,39744],{"class":3998,"line":17168},[3996,39742,39743],{"class":4064},"  input:",[3996,39745,7958],{"class":4006},[3996,39747,39748,39750,39752],{"class":3998,"line":17200},[3996,39749,13419],{"class":4064},[3996,39751,11949],{"class":11033},[3996,39753,5720],{"class":4006},[3996,39755,39756,39758,39760],{"class":3998,"line":17206},[3996,39757,30005],{"class":4064},[3996,39759,32091],{"class":11033},[3996,39761,5720],{"class":4006},[3996,39763,39764],{"class":3998,"line":17215},[3996,39765,10287],{"class":4006},[3996,39767,39768],{"class":3998,"line":17223},[3996,39769,12261],{"class":4006},[3987,39771,39774],{"className":10127,"code":39772,"filename":39773,"language":10129,"meta":3992,"style":3992},"export { AppText } from '.\u002FAppText';\nexport { Button } from '.\u002FButton';\nexport { Screen } from '.\u002FScreen';\nexport { TextField } from '.\u002FTextField';\n","src\u002Fshared\u002Fui\u002Findex.ts",[3747,39775,39776,39792,39809,39826],{"__ignoreMap":3992},[3996,39777,39778,39780,39782,39784,39786,39788,39790],{"class":3998,"line":3999},[3996,39779,5947],{"class":4057},[3996,39781,5504],{"class":4006},[3996,39783,16052],{"class":4064},[3996,39785,5509],{"class":4006},[3996,39787,5512],{"class":4057},[3996,39789,38951],{"class":4029},[3996,39791,4123],{"class":4006},[3996,39793,39794,39796,39798,39800,39802,39804,39807],{"class":3998,"line":4047},[3996,39795,5947],{"class":4057},[3996,39797,5504],{"class":4006},[3996,39799,16057],{"class":4064},[3996,39801,5509],{"class":4006},[3996,39803,5512],{"class":4057},[3996,39805,39806],{"class":4029}," '.\u002FButton'",[3996,39808,4123],{"class":4006},[3996,39810,39811,39813,39815,39817,39819,39821,39824],{"class":3998,"line":4054},[3996,39812,5947],{"class":4057},[3996,39814,5504],{"class":4006},[3996,39816,9671],{"class":4064},[3996,39818,5509],{"class":4006},[3996,39820,5512],{"class":4057},[3996,39822,39823],{"class":4029}," '.\u002FScreen'",[3996,39825,4123],{"class":4006},[3996,39827,39828,39830,39832,39834,39836,39838,39841],{"class":3998,"line":4075},[3996,39829,5947],{"class":4057},[3996,39831,5504],{"class":4006},[3996,39833,25953],{"class":4064},[3996,39835,5509],{"class":4006},[3996,39837,5512],{"class":4057},[3996,39839,39840],{"class":4029}," '.\u002FTextField'",[3996,39842,4123],{"class":4006},[3801,39844,39846],{"id":39845},"перевірка","Перевірка",[3759,39848,39849,39859,39862,39869,39879,39882,39887],{},[3762,39850,39851,39852,3867,39854,3867,39856,39858],{},"Внизу три вкладки: ",[3765,39853,13857],{},[3765,39855,13863],{},[3765,39857,13869],{}," (іконки + підписи).",[3762,39860,39861],{},"На «Поїздки» — стрічка, тема, місця в header, sticky «Нова поїздка».",[3762,39863,39864,39865,39868],{},"«Нова поїздка» → екран із ",[3765,39866,39867],{},"системним"," заголовком і назад; форма як раніше.",[3762,39870,39871,39872,39874,39875,39878],{},"Успішне створення → ",[3747,39873,3870],{}," на вкладки, картка ",[3765,39876,39877],{},"зверху"," списку.",[3762,39880,39881],{},"«Місця» — сітка всіх mock-місць.",[3762,39883,39884,39885,13873],{},"«Ще» — текст + тема + ",[3747,39886,3852],{},[3762,39888,39889,39890,39893],{},"Перемикання вкладок ",[3765,39891,39892],{},"не"," губить тему (провайдер на корені).",[3801,39895,39897],{"id":39896},"коміт","Коміт",[3987,39899,39901],{"className":6797,"code":39900,"language":6799,"meta":3992,"style":3992},"cd \u002Fpath\u002Fto\u002Fnomad\ngit add -A\ngit commit -m \"$(cat \u003C\u003C'EOF'\nfeat: file-based navigation structure\n\nMaterial: content\u002F15.react-native\u002F11.expo-router-basics.md\nEOF\n)\"\ngit push\n",[3747,39902,39903,39909,39920,39942,39947,39951,39956,39961,39966],{"__ignoreMap":3992},[3996,39904,39905,39907],{"class":3998,"line":3999},[3996,39906,10056],{"class":4022},[3996,39908,14014],{"class":4029},[3996,39910,39911,39914,39917],{"class":3998,"line":4047},[3996,39912,39913],{"class":4022},"git",[3996,39915,39916],{"class":4029}," add",[3996,39918,39919],{"class":4002}," -A\n",[3996,39921,39922,39924,39927,39930,39933,39936,39939],{"class":3998,"line":4054},[3996,39923,39913],{"class":4022},[3996,39925,39926],{"class":4029}," commit",[3996,39928,39929],{"class":4002}," -m",[3996,39931,39932],{"class":4029}," \"$(",[3996,39934,39935],{"class":4022},"cat",[3996,39937,39938],{"class":4006}," \u003C\u003C",[3996,39940,39941],{"class":4029},"'EOF'\n",[3996,39943,39944],{"class":3998,"line":4075},[3996,39945,39946],{"class":4029},"feat: file-based navigation structure\n",[3996,39948,39949],{"class":3998,"line":4126},[3996,39950,4051],{"emptyLinePlaceholder":4050},[3996,39952,39953],{"class":3998,"line":4132},[3996,39954,39955],{"class":4029},"Material: content\u002F15.react-native\u002F11.expo-router-basics.md\n",[3996,39957,39958],{"class":3998,"line":4137},[3996,39959,39960],{"class":4029},"EOF\n",[3996,39962,39963],{"class":3998,"line":4275},[3996,39964,39965],{"class":4029},")\"\n",[3996,39967,39968,39970],{"class":3998,"line":4281},[3996,39969,39913],{"class":4022},[3996,39971,39972],{"class":4029}," push\n",[3801,39974,39976],{"id":39975},"превю-обмежене","Прев’ю (обмежене)",[3743,39978,39979,39980,39983],{},"У iframe Router немає. Нижче — ",[3765,39981,39982],{},"макет"," трьох «вкладок» на state (ідея UX). Повна поведінка — у Expo Go.",[39985,39986,39991],"react-native-preview",{"device":39987,"filename":39988,"height":39989,"title":39990},"iphone","NomadTabsMock.tsx",720,"Nomad · tabs shell (макет)",[3987,39992,39994],{"className":3989,"code":39993,"language":3991,"meta":3992,"style":3992},"import { useState } from 'react';\nimport { Pressable, StyleSheet, Text, View, useColorScheme } from 'react-native';\n\nconst light = { bg: '#F8FAFC', text: '#0f172a', muted: '#64748b', primary: '#2563eb', border: '#e2e8f0', surface: '#fff', on: '#fff' };\nconst dark = { bg: '#000', text: '#f5f5f7', muted: '#a1a1aa', primary: '#3b82f6', border: '#3a3a3c', surface: '#1c1c1e', on: '#fff' };\n\nexport default function App() {\n  const sys = useColorScheme() === 'dark';\n  const c = sys ? dark : light;\n  const [tab, setTab] = useState\u003C'trips' | 'places' | 'about'>('trips');\n\n  return (\n    \u003CView style={[styles.root, { backgroundColor: c.bg }]}>\n      \u003CView style={{ flex: 1, padding: 16 }}>\n        {tab === 'trips' && (\n          \u003C>\n            \u003CText style={[styles.h, { color: c.text }]}>Поїздки\u003C\u002FText>\n            \u003CText style={{ color: c.muted, marginTop: 8 }}>Стрічка · FlashList · CTA внизу (у репо)\u003C\u002FText>\n            \u003CView style={[styles.card, { backgroundColor: c.surface, borderColor: c.border }]}>\n              \u003CText style={{ color: c.text, fontWeight: '700' }}>Карпати на вихідні\u003C\u002FText>\n              \u003CText style={{ color: c.muted, marginTop: 4 }}>12–14 бер. 2026\u003C\u002FText>\n            \u003C\u002FView>\n          \u003C\u002F>\n        )}\n        {tab === 'places' && (\n          \u003C>\n            \u003CText style={[styles.h, { color: c.text }]}>Місця\u003C\u002FText>\n            \u003CText style={{ color: c.muted, marginTop: 8 }}>Окрема вкладка замість лише горизонтальної стрічки\u003C\u002FText>\n          \u003C\u002F>\n        )}\n        {tab === 'about' && (\n          \u003C>\n            \u003CText style={[styles.h, { color: c.text }]}>Ще\u003C\u002FText>\n            \u003CText style={{ color: c.muted, marginTop: 8 }}>Тема, Link, про застосунок — у репо на Expo Router\u003C\u002FText>\n          \u003C\u002F>\n        )}\n      \u003C\u002FView>\n      \u003CView style={[styles.bar, { borderColor: c.border, backgroundColor: c.bg }]}>\n        {([\n          ['trips', 'Поїздки'],\n          ['places', 'Місця'],\n          ['about', 'Ще'],\n        ] as const).map(([id, label]) => {\n          const on = tab === id;\n          return (\n            \u003CPressable key={id} onPress={() => setTab(id)} style={styles.tab}>\n              \u003CText style={{ color: on ? c.primary : c.muted, fontWeight: '700', fontSize: 12 }}>{label}\u003C\u002FText>\n            \u003C\u002FPressable>\n          );\n        })}\n      \u003C\u002FView>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  root: { flex: 1 },\n  h: { fontSize: 24, fontWeight: '800' },\n  card: { marginTop: 16, padding: 14, borderRadius: 12, borderWidth: 1 },\n  bar: { flexDirection: 'row', borderTopWidth: 1, paddingVertical: 10 },\n  tab: { flex: 1, alignItems: 'center', paddingVertical: 8 },\n});\n",[3747,39995,39996,40012,40044,40048,40111,40167,40171,40184,40202,40225,40264,40268,40274,40311,40341,40356,40361,40406,40449,40496,40539,40582,40590,40595,40601,40616,40620,40664,40707,40711,40717,40732,40736,40780,40823,40827,40833,40841,40888,40895,40909,40922,40935,40964,40984,40991,41045,41109,41117,41122,41129,41137,41145,41149,41153,41157,41173,41185,41204,41236,41263,41289],{"__ignoreMap":3992},[3996,39997,39998,40000,40002,40004,40006,40008,40010],{"class":3998,"line":3999},[3996,39999,5501],{"class":4057},[3996,40001,5504],{"class":4006},[3996,40003,4023],{"class":4064},[3996,40005,5509],{"class":4006},[3996,40007,5512],{"class":4057},[3996,40009,7869],{"class":4029},[3996,40011,4123],{"class":4006},[3996,40013,40014,40016,40018,40020,40022,40024,40026,40028,40030,40032,40034,40036,40038,40040,40042],{"class":3998,"line":4047},[3996,40015,5501],{"class":4057},[3996,40017,5504],{"class":4006},[3996,40019,7896],{"class":4064},[3996,40021,3867],{"class":4006},[3996,40023,8741],{"class":4064},[3996,40025,3867],{"class":4006},[3996,40027,7901],{"class":4064},[3996,40029,3867],{"class":4006},[3996,40031,11340],{"class":4064},[3996,40033,3867],{"class":4006},[3996,40035,36269],{"class":4064},[3996,40037,5509],{"class":4006},[3996,40039,5512],{"class":4057},[3996,40041,7908],{"class":4029},[3996,40043,4123],{"class":4006},[3996,40045,40046],{"class":3998,"line":4054},[3996,40047,4051],{"emptyLinePlaceholder":4050},[3996,40049,40050,40052,40055,40058,40061,40063,40065,40068,40071,40073,40076,40079,40081,40084,40086,40088,40091,40094,40096,40099,40102,40104,40107,40109],{"class":3998,"line":4075},[3996,40051,4003],{"class":4002},[3996,40053,40054],{"class":4010}," light",[3996,40056,40057],{"class":4006}," = { ",[3996,40059,40060],{"class":4064},"bg:",[3996,40062,10709],{"class":4029},[3996,40064,3867],{"class":4006},[3996,40066,40067],{"class":4064},"text:",[3996,40069,40070],{"class":4029}," '#0f172a'",[3996,40072,3867],{"class":4006},[3996,40074,40075],{"class":4064},"muted:",[3996,40077,40078],{"class":4029}," '#64748b'",[3996,40080,3867],{"class":4006},[3996,40082,40083],{"class":4064},"primary:",[3996,40085,8046],{"class":4029},[3996,40087,3867],{"class":4006},[3996,40089,40090],{"class":4064},"border:",[3996,40092,40093],{"class":4029}," '#e2e8f0'",[3996,40095,3867],{"class":4006},[3996,40097,40098],{"class":4064},"surface:",[3996,40100,40101],{"class":4029}," '#fff'",[3996,40103,3867],{"class":4006},[3996,40105,40106],{"class":4064},"on:",[3996,40108,40101],{"class":4029},[3996,40110,35815],{"class":4006},[3996,40112,40113,40115,40118,40120,40122,40124,40126,40128,40131,40133,40135,40138,40140,40142,40145,40147,40149,40152,40154,40156,40159,40161,40163,40165],{"class":3998,"line":4126},[3996,40114,4003],{"class":4002},[3996,40116,40117],{"class":4010}," dark",[3996,40119,40057],{"class":4006},[3996,40121,40060],{"class":4064},[3996,40123,34425],{"class":4029},[3996,40125,3867],{"class":4006},[3996,40127,40067],{"class":4064},[3996,40129,40130],{"class":4029}," '#f5f5f7'",[3996,40132,3867],{"class":4006},[3996,40134,40075],{"class":4064},[3996,40136,40137],{"class":4029}," '#a1a1aa'",[3996,40139,3867],{"class":4006},[3996,40141,40083],{"class":4064},[3996,40143,40144],{"class":4029}," '#3b82f6'",[3996,40146,3867],{"class":4006},[3996,40148,40090],{"class":4064},[3996,40150,40151],{"class":4029}," '#3a3a3c'",[3996,40153,3867],{"class":4006},[3996,40155,40098],{"class":4064},[3996,40157,40158],{"class":4029}," '#1c1c1e'",[3996,40160,3867],{"class":4006},[3996,40162,40106],{"class":4064},[3996,40164,40101],{"class":4029},[3996,40166,35815],{"class":4006},[3996,40168,40169],{"class":3998,"line":4132},[3996,40170,4051],{"emptyLinePlaceholder":4050},[3996,40172,40173,40175,40177,40179,40182],{"class":3998,"line":4137},[3996,40174,5947],{"class":4057},[3996,40176,5950],{"class":4057},[3996,40178,5953],{"class":4002},[3996,40180,40181],{"class":4022}," App",[3996,40183,5588],{"class":4006},[3996,40185,40186,40188,40191,40193,40195,40198,40200],{"class":3998,"line":4275},[3996,40187,5593],{"class":4002},[3996,40189,40190],{"class":4010}," sys",[3996,40192,7937],{"class":4006},[3996,40194,36269],{"class":4022},[3996,40196,40197],{"class":4006},"() === ",[3996,40199,7528],{"class":4029},[3996,40201,4123],{"class":4006},[3996,40203,40204,40206,40208,40210,40213,40215,40218,40220,40223],{"class":3998,"line":4281},[3996,40205,5593],{"class":4002},[3996,40207,10574],{"class":4010},[3996,40209,7937],{"class":4006},[3996,40211,40212],{"class":4064},"sys",[3996,40214,12951],{"class":4006},[3996,40216,40217],{"class":4064},"dark",[3996,40219,36626],{"class":4006},[3996,40221,40222],{"class":4064},"light",[3996,40224,4123],{"class":4006},[3996,40226,40227,40229,40231,40234,40236,40239,40241,40243,40245,40248,40250,40253,40255,40258,40260,40262],{"class":3998,"line":4287},[3996,40228,5593],{"class":4002},[3996,40230,4007],{"class":4006},[3996,40232,40233],{"class":4010},"tab",[3996,40235,3867],{"class":4006},[3996,40237,40238],{"class":4010},"setTab",[3996,40240,4019],{"class":4006},[3996,40242,4023],{"class":4022},[3996,40244,4026],{"class":4006},[3996,40246,40247],{"class":4029},"'trips'",[3996,40249,4033],{"class":4006},[3996,40251,40252],{"class":4029},"'places'",[3996,40254,4033],{"class":4006},[3996,40256,40257],{"class":4029},"'about'",[3996,40259,4039],{"class":4006},[3996,40261,40247],{"class":4029},[3996,40263,4044],{"class":4006},[3996,40265,40266],{"class":3998,"line":4293},[3996,40267,4051],{"emptyLinePlaceholder":4050},[3996,40269,40270,40272],{"class":3998,"line":4299},[3996,40271,4078],{"class":4057},[3996,40273,5622],{"class":4006},[3996,40275,40276,40278,40280,40282,40284,40286,40288,40290,40292,40294,40296,40298,40300,40302,40305,40307,40309],{"class":3998,"line":4305},[3996,40277,5969],{"class":4081},[3996,40279,11340],{"class":4085},[3996,40281,5637],{"class":4089},[3996,40283,4093],{"class":4006},[3996,40285,4096],{"class":4002},[3996,40287,11457],{"class":4099},[3996,40289,8789],{"class":4064},[3996,40291,3821],{"class":4099},[3996,40293,38743],{"class":4064},[3996,40295,17742],{"class":4099},[3996,40297,5694],{"class":4064},[3996,40299,10574],{"class":4064},[3996,40301,3821],{"class":4099},[3996,40303,40304],{"class":4064},"bg",[3996,40306,17763],{"class":4099},[3996,40308,4117],{"class":4002},[3996,40310,5924],{"class":4081},[3996,40312,40313,40315,40317,40319,40321,40323,40325,40327,40329,40331,40333,40335,40337,40339],{"class":3998,"line":4311},[3996,40314,5632],{"class":4081},[3996,40316,11340],{"class":4085},[3996,40318,5637],{"class":4089},[3996,40320,4093],{"class":4006},[3996,40322,4096],{"class":4002},[3996,40324,5812],{"class":4099},[3996,40326,11946],{"class":4064},[3996,40328,11949],{"class":11033},[3996,40330,3867],{"class":4099},[3996,40332,12080],{"class":4064},[3996,40334,11972],{"class":11033},[3996,40336,5821],{"class":4099},[3996,40338,4117],{"class":4002},[3996,40340,5924],{"class":4081},[3996,40342,40343,40345,40347,40349,40352,40354],{"class":3998,"line":4317},[3996,40344,5780],{"class":4002},[3996,40346,40233],{"class":4064},[3996,40348,5646],{"class":4006},[3996,40350,40351],{"class":4029}," 'trips'",[3996,40353,31170],{"class":4006},[3996,40355,5622],{"class":4099},[3996,40357,40358],{"class":3998,"line":4323},[3996,40359,40360],{"class":4081},"          \u003C>\n",[3996,40362,40363,40365,40367,40369,40371,40373,40375,40377,40379,40382,40384,40386,40388,40390,40392,40394,40396,40398,40400,40402,40404],{"class":3998,"line":4329},[3996,40364,11117],{"class":4081},[3996,40366,7901],{"class":4085},[3996,40368,5637],{"class":4089},[3996,40370,4093],{"class":4006},[3996,40372,4096],{"class":4002},[3996,40374,11457],{"class":4099},[3996,40376,8789],{"class":4064},[3996,40378,3821],{"class":4099},[3996,40380,40381],{"class":4064},"h",[3996,40383,17742],{"class":4099},[3996,40385,5730],{"class":4064},[3996,40387,10574],{"class":4064},[3996,40389,3821],{"class":4099},[3996,40391,4227],{"class":4064},[3996,40393,17763],{"class":4099},[3996,40395,4117],{"class":4002},[3996,40397,8059],{"class":4081},[3996,40399,13857],{"class":4099},[3996,40401,8065],{"class":4081},[3996,40403,7901],{"class":4085},[3996,40405,5924],{"class":4081},[3996,40407,40408,40410,40412,40414,40416,40418,40420,40422,40424,40426,40428,40430,40432,40434,40436,40438,40440,40443,40445,40447],{"class":3998,"line":4335},[3996,40409,11117],{"class":4081},[3996,40411,7901],{"class":4085},[3996,40413,5637],{"class":4089},[3996,40415,4093],{"class":4006},[3996,40417,4096],{"class":4002},[3996,40419,5812],{"class":4099},[3996,40421,5730],{"class":4064},[3996,40423,10574],{"class":4064},[3996,40425,3821],{"class":4099},[3996,40427,11540],{"class":4064},[3996,40429,3867],{"class":4099},[3996,40431,12052],{"class":4064},[3996,40433,11982],{"class":11033},[3996,40435,5821],{"class":4099},[3996,40437,4117],{"class":4002},[3996,40439,8059],{"class":4081},[3996,40441,40442],{"class":4099},"Стрічка · FlashList · CTA внизу (у репо)",[3996,40444,8065],{"class":4081},[3996,40446,7901],{"class":4085},[3996,40448,5924],{"class":4081},[3996,40450,40451,40453,40455,40457,40459,40461,40463,40465,40467,40469,40471,40473,40475,40477,40479,40481,40484,40486,40488,40490,40492,40494],{"class":3998,"line":4341},[3996,40452,11117],{"class":4081},[3996,40454,11340],{"class":4085},[3996,40456,5637],{"class":4089},[3996,40458,4093],{"class":4006},[3996,40460,4096],{"class":4002},[3996,40462,11457],{"class":4099},[3996,40464,8789],{"class":4064},[3996,40466,3821],{"class":4099},[3996,40468,11753],{"class":4064},[3996,40470,17742],{"class":4099},[3996,40472,5694],{"class":4064},[3996,40474,10574],{"class":4064},[3996,40476,3821],{"class":4099},[3996,40478,17935],{"class":4064},[3996,40480,3867],{"class":4099},[3996,40482,40483],{"class":4064},"borderColor:",[3996,40485,10574],{"class":4064},[3996,40487,3821],{"class":4099},[3996,40489,15476],{"class":4064},[3996,40491,17763],{"class":4099},[3996,40493,4117],{"class":4002},[3996,40495,5924],{"class":4081},[3996,40497,40498,40500,40502,40504,40506,40508,40510,40512,40514,40516,40518,40520,40522,40524,40526,40528,40530,40533,40535,40537],{"class":3998,"line":4347},[3996,40499,11762],{"class":4081},[3996,40501,7901],{"class":4085},[3996,40503,5637],{"class":4089},[3996,40505,4093],{"class":4006},[3996,40507,4096],{"class":4002},[3996,40509,5812],{"class":4099},[3996,40511,5730],{"class":4064},[3996,40513,10574],{"class":4064},[3996,40515,3821],{"class":4099},[3996,40517,4227],{"class":4064},[3996,40519,3867],{"class":4099},[3996,40521,5741],{"class":4064},[3996,40523,12169],{"class":4029},[3996,40525,5821],{"class":4099},[3996,40527,4117],{"class":4002},[3996,40529,8059],{"class":4081},[3996,40531,40532],{"class":4099},"Карпати на вихідні",[3996,40534,8065],{"class":4081},[3996,40536,7901],{"class":4085},[3996,40538,5924],{"class":4081},[3996,40540,40541,40543,40545,40547,40549,40551,40553,40555,40557,40559,40561,40563,40565,40567,40569,40571,40573,40576,40578,40580],{"class":3998,"line":4352},[3996,40542,11762],{"class":4081},[3996,40544,7901],{"class":4085},[3996,40546,5637],{"class":4089},[3996,40548,4093],{"class":4006},[3996,40550,4096],{"class":4002},[3996,40552,5812],{"class":4099},[3996,40554,5730],{"class":4064},[3996,40556,10574],{"class":4064},[3996,40558,3821],{"class":4099},[3996,40560,11540],{"class":4064},[3996,40562,3867],{"class":4099},[3996,40564,12052],{"class":4064},[3996,40566,12055],{"class":11033},[3996,40568,5821],{"class":4099},[3996,40570,4117],{"class":4002},[3996,40572,8059],{"class":4081},[3996,40574,40575],{"class":4099},"12–14 бер. 2026",[3996,40577,8065],{"class":4081},[3996,40579,7901],{"class":4085},[3996,40581,5924],{"class":4081},[3996,40583,40584,40586,40588],{"class":3998,"line":4357},[3996,40585,11874],{"class":4081},[3996,40587,11340],{"class":4085},[3996,40589,5924],{"class":4081},[3996,40591,40592],{"class":3998,"line":4363},[3996,40593,40594],{"class":4081},"          \u003C\u002F>\n",[3996,40596,40597,40599],{"class":3998,"line":4369},[3996,40598,11892],{"class":4099},[3996,40600,4129],{"class":4002},[3996,40602,40603,40605,40607,40609,40612,40614],{"class":3998,"line":4375},[3996,40604,5780],{"class":4002},[3996,40606,40233],{"class":4064},[3996,40608,5646],{"class":4006},[3996,40610,40611],{"class":4029}," 'places'",[3996,40613,31170],{"class":4006},[3996,40615,5622],{"class":4099},[3996,40617,40618],{"class":3998,"line":4381},[3996,40619,40360],{"class":4081},[3996,40621,40622,40624,40626,40628,40630,40632,40634,40636,40638,40640,40642,40644,40646,40648,40650,40652,40654,40656,40658,40660,40662],{"class":3998,"line":4387},[3996,40623,11117],{"class":4081},[3996,40625,7901],{"class":4085},[3996,40627,5637],{"class":4089},[3996,40629,4093],{"class":4006},[3996,40631,4096],{"class":4002},[3996,40633,11457],{"class":4099},[3996,40635,8789],{"class":4064},[3996,40637,3821],{"class":4099},[3996,40639,40381],{"class":4064},[3996,40641,17742],{"class":4099},[3996,40643,5730],{"class":4064},[3996,40645,10574],{"class":4064},[3996,40647,3821],{"class":4099},[3996,40649,4227],{"class":4064},[3996,40651,17763],{"class":4099},[3996,40653,4117],{"class":4002},[3996,40655,8059],{"class":4081},[3996,40657,13863],{"class":4099},[3996,40659,8065],{"class":4081},[3996,40661,7901],{"class":4085},[3996,40663,5924],{"class":4081},[3996,40665,40666,40668,40670,40672,40674,40676,40678,40680,40682,40684,40686,40688,40690,40692,40694,40696,40698,40701,40703,40705],{"class":3998,"line":4392},[3996,40667,11117],{"class":4081},[3996,40669,7901],{"class":4085},[3996,40671,5637],{"class":4089},[3996,40673,4093],{"class":4006},[3996,40675,4096],{"class":4002},[3996,40677,5812],{"class":4099},[3996,40679,5730],{"class":4064},[3996,40681,10574],{"class":4064},[3996,40683,3821],{"class":4099},[3996,40685,11540],{"class":4064},[3996,40687,3867],{"class":4099},[3996,40689,12052],{"class":4064},[3996,40691,11982],{"class":11033},[3996,40693,5821],{"class":4099},[3996,40695,4117],{"class":4002},[3996,40697,8059],{"class":4081},[3996,40699,40700],{"class":4099},"Окрема вкладка замість лише горизонтальної стрічки",[3996,40702,8065],{"class":4081},[3996,40704,7901],{"class":4085},[3996,40706,5924],{"class":4081},[3996,40708,40709],{"class":3998,"line":4398},[3996,40710,40594],{"class":4081},[3996,40712,40713,40715],{"class":3998,"line":4404},[3996,40714,11892],{"class":4099},[3996,40716,4129],{"class":4002},[3996,40718,40719,40721,40723,40725,40728,40730],{"class":3998,"line":4410},[3996,40720,5780],{"class":4002},[3996,40722,40233],{"class":4064},[3996,40724,5646],{"class":4006},[3996,40726,40727],{"class":4029}," 'about'",[3996,40729,31170],{"class":4006},[3996,40731,5622],{"class":4099},[3996,40733,40734],{"class":3998,"line":4415},[3996,40735,40360],{"class":4081},[3996,40737,40738,40740,40742,40744,40746,40748,40750,40752,40754,40756,40758,40760,40762,40764,40766,40768,40770,40772,40774,40776,40778],{"class":3998,"line":4420},[3996,40739,11117],{"class":4081},[3996,40741,7901],{"class":4085},[3996,40743,5637],{"class":4089},[3996,40745,4093],{"class":4006},[3996,40747,4096],{"class":4002},[3996,40749,11457],{"class":4099},[3996,40751,8789],{"class":4064},[3996,40753,3821],{"class":4099},[3996,40755,40381],{"class":4064},[3996,40757,17742],{"class":4099},[3996,40759,5730],{"class":4064},[3996,40761,10574],{"class":4064},[3996,40763,3821],{"class":4099},[3996,40765,4227],{"class":4064},[3996,40767,17763],{"class":4099},[3996,40769,4117],{"class":4002},[3996,40771,8059],{"class":4081},[3996,40773,13869],{"class":4099},[3996,40775,8065],{"class":4081},[3996,40777,7901],{"class":4085},[3996,40779,5924],{"class":4081},[3996,40781,40782,40784,40786,40788,40790,40792,40794,40796,40798,40800,40802,40804,40806,40808,40810,40812,40814,40817,40819,40821],{"class":3998,"line":4426},[3996,40783,11117],{"class":4081},[3996,40785,7901],{"class":4085},[3996,40787,5637],{"class":4089},[3996,40789,4093],{"class":4006},[3996,40791,4096],{"class":4002},[3996,40793,5812],{"class":4099},[3996,40795,5730],{"class":4064},[3996,40797,10574],{"class":4064},[3996,40799,3821],{"class":4099},[3996,40801,11540],{"class":4064},[3996,40803,3867],{"class":4099},[3996,40805,12052],{"class":4064},[3996,40807,11982],{"class":11033},[3996,40809,5821],{"class":4099},[3996,40811,4117],{"class":4002},[3996,40813,8059],{"class":4081},[3996,40815,40816],{"class":4099},"Тема, Link, про застосунок — у репо на Expo Router",[3996,40818,8065],{"class":4081},[3996,40820,7901],{"class":4085},[3996,40822,5924],{"class":4081},[3996,40824,40825],{"class":3998,"line":4432},[3996,40826,40594],{"class":4081},[3996,40828,40829,40831],{"class":3998,"line":4438},[3996,40830,11892],{"class":4099},[3996,40832,4129],{"class":4002},[3996,40834,40835,40837,40839],{"class":3998,"line":4443},[3996,40836,5919],{"class":4081},[3996,40838,11340],{"class":4085},[3996,40840,5924],{"class":4081},[3996,40842,40843,40845,40847,40849,40851,40853,40855,40857,40859,40862,40864,40866,40868,40870,40872,40874,40876,40878,40880,40882,40884,40886],{"class":3998,"line":4448},[3996,40844,5632],{"class":4081},[3996,40846,11340],{"class":4085},[3996,40848,5637],{"class":4089},[3996,40850,4093],{"class":4006},[3996,40852,4096],{"class":4002},[3996,40854,11457],{"class":4099},[3996,40856,8789],{"class":4064},[3996,40858,3821],{"class":4099},[3996,40860,40861],{"class":4064},"bar",[3996,40863,17742],{"class":4099},[3996,40865,40483],{"class":4064},[3996,40867,10574],{"class":4064},[3996,40869,3821],{"class":4099},[3996,40871,15476],{"class":4064},[3996,40873,3867],{"class":4099},[3996,40875,5694],{"class":4064},[3996,40877,10574],{"class":4064},[3996,40879,3821],{"class":4099},[3996,40881,40304],{"class":4064},[3996,40883,17763],{"class":4099},[3996,40885,4117],{"class":4002},[3996,40887,5924],{"class":4081},[3996,40889,40890,40892],{"class":3998,"line":4454},[3996,40891,5780],{"class":4002},[3996,40893,40894],{"class":4099},"([\n",[3996,40896,40897,40900,40902,40904,40907],{"class":3998,"line":4460},[3996,40898,40899],{"class":4099},"          [",[3996,40901,40247],{"class":4029},[3996,40903,3867],{"class":4099},[3996,40905,40906],{"class":4029},"'Поїздки'",[3996,40908,16598],{"class":4099},[3996,40910,40911,40913,40915,40917,40920],{"class":3998,"line":4466},[3996,40912,40899],{"class":4099},[3996,40914,40252],{"class":4029},[3996,40916,3867],{"class":4099},[3996,40918,40919],{"class":4029},"'Місця'",[3996,40921,16598],{"class":4099},[3996,40923,40924,40926,40928,40930,40933],{"class":3998,"line":4472},[3996,40925,40899],{"class":4099},[3996,40927,40257],{"class":4029},[3996,40929,3867],{"class":4099},[3996,40931,40932],{"class":4029},"'Ще'",[3996,40934,16598],{"class":4099},[3996,40936,40937,40940,40942,40944,40946,40948,40951,40953,40955,40957,40960,40962],{"class":3998,"line":4477},[3996,40938,40939],{"class":4099},"        ] ",[3996,40941,22463],{"class":4057},[3996,40943,10214],{"class":4002},[3996,40945,3877],{"class":4099},[3996,40947,17780],{"class":4022},[3996,40949,40950],{"class":4099},"(([",[3996,40952,10533],{"class":4064},[3996,40954,3867],{"class":4099},[3996,40956,16097],{"class":4064},[3996,40958,40959],{"class":4099},"]) ",[3996,40961,4103],{"class":4002},[3996,40963,7958],{"class":4099},[3996,40965,40966,40969,40972,40974,40977,40979,40982],{"class":3998,"line":5066},[3996,40967,40968],{"class":4002},"          const",[3996,40970,40971],{"class":4010}," on",[3996,40973,17802],{"class":4006},[3996,40975,40976],{"class":4064}," tab",[3996,40978,5646],{"class":4006},[3996,40980,40981],{"class":4064}," id",[3996,40983,4123],{"class":4099},[3996,40985,40986,40989],{"class":3998,"line":5072},[3996,40987,40988],{"class":4057},"          return",[3996,40990,5622],{"class":4099},[3996,40992,40993,40995,40997,41000,41002,41004,41006,41008,41010,41012,41014,41016,41018,41021,41023,41025,41027,41029,41031,41033,41035,41037,41039,41041,41043],{"class":3998,"line":5078},[3996,40994,11117],{"class":4081},[3996,40996,7896],{"class":4085},[3996,40998,40999],{"class":4089}," key",[3996,41001,4093],{"class":4006},[3996,41003,4096],{"class":4002},[3996,41005,10533],{"class":4064},[3996,41007,4117],{"class":4002},[3996,41009,8004],{"class":4089},[3996,41011,4093],{"class":4006},[3996,41013,4096],{"class":4002},[3996,41015,4100],{"class":4099},[3996,41017,4103],{"class":4002},[3996,41019,41020],{"class":4022}," setTab",[3996,41022,4109],{"class":4099},[3996,41024,10533],{"class":4064},[3996,41026,4114],{"class":4099},[3996,41028,4117],{"class":4002},[3996,41030,5637],{"class":4089},[3996,41032,4093],{"class":4006},[3996,41034,4096],{"class":4002},[3996,41036,8789],{"class":4064},[3996,41038,3821],{"class":4099},[3996,41040,40233],{"class":4064},[3996,41042,4117],{"class":4002},[3996,41044,5924],{"class":4081},[3996,41046,41047,41049,41051,41053,41055,41057,41059,41061,41063,41065,41067,41069,41071,41073,41075,41077,41079,41081,41083,41085,41087,41089,41091,41093,41095,41097,41099,41101,41103,41105,41107],{"class":3998,"line":5084},[3996,41048,11762],{"class":4081},[3996,41050,7901],{"class":4085},[3996,41052,5637],{"class":4089},[3996,41054,4093],{"class":4006},[3996,41056,4096],{"class":4002},[3996,41058,5812],{"class":4099},[3996,41060,5730],{"class":4064},[3996,41062,40971],{"class":4064},[3996,41064,5652],{"class":4006},[3996,41066,10574],{"class":4064},[3996,41068,3821],{"class":4099},[3996,41070,5717],{"class":4064},[3996,41072,5658],{"class":4006},[3996,41074,10574],{"class":4064},[3996,41076,3821],{"class":4099},[3996,41078,11540],{"class":4064},[3996,41080,3867],{"class":4099},[3996,41082,5741],{"class":4064},[3996,41084,12169],{"class":4029},[3996,41086,3867],{"class":4099},[3996,41088,11030],{"class":4064},[3996,41090,11034],{"class":11033},[3996,41092,5821],{"class":4099},[3996,41094,4117],{"class":4002},[3996,41096,8059],{"class":4081},[3996,41098,4096],{"class":4002},[3996,41100,16097],{"class":4064},[3996,41102,4117],{"class":4002},[3996,41104,8065],{"class":4081},[3996,41106,7901],{"class":4085},[3996,41108,5924],{"class":4081},[3996,41110,41111,41113,41115],{"class":3998,"line":5090},[3996,41112,11874],{"class":4081},[3996,41114,7896],{"class":4085},[3996,41116,5924],{"class":4081},[3996,41118,41119],{"class":3998,"line":5096},[3996,41120,41121],{"class":4099},"          );\n",[3996,41123,41124,41127],{"class":3998,"line":10510},[3996,41125,41126],{"class":4099},"        })",[3996,41128,4129],{"class":4002},[3996,41130,41131,41133,41135],{"class":3998,"line":10516},[3996,41132,5919],{"class":4081},[3996,41134,11340],{"class":4085},[3996,41136,5924],{"class":4081},[3996,41138,41139,41141,41143],{"class":3998,"line":10521},[3996,41140,6003],{"class":4081},[3996,41142,11340],{"class":4085},[3996,41144,5924],{"class":4081},[3996,41146,41147],{"class":3998,"line":10552},[3996,41148,5934],{"class":4006},[3996,41150,41151],{"class":3998,"line":10587},[3996,41152,4129],{"class":4006},[3996,41154,41155],{"class":3998,"line":12205},[3996,41156,4051],{"emptyLinePlaceholder":4050},[3996,41158,41159,41161,41163,41165,41167,41169,41171],{"class":3998,"line":12213},[3996,41160,4003],{"class":4002},[3996,41162,11925],{"class":4010},[3996,41164,7937],{"class":4006},[3996,41166,8741],{"class":4064},[3996,41168,3821],{"class":4006},[3996,41170,11934],{"class":4022},[3996,41172,7971],{"class":4006},[3996,41174,41175,41177,41179,41181,41183],{"class":3998,"line":12223},[3996,41176,38815],{"class":4064},[3996,41178,5504],{"class":4006},[3996,41180,11946],{"class":4064},[3996,41182,11949],{"class":11033},[3996,41184,5705],{"class":4006},[3996,41186,41187,41190,41192,41194,41196,41198,41200,41202],{"class":3998,"line":12233},[3996,41188,41189],{"class":4064},"  h:",[3996,41191,5504],{"class":4006},[3996,41193,11030],{"class":4064},[3996,41195,12027],{"class":11033},[3996,41197,3867],{"class":4006},[3996,41199,5741],{"class":4064},[3996,41201,12034],{"class":4029},[3996,41203,5705],{"class":4006},[3996,41205,41206,41208,41210,41212,41214,41216,41218,41220,41222,41225,41227,41229,41232,41234],{"class":3998,"line":12243},[3996,41207,12097],{"class":4064},[3996,41209,5504],{"class":4006},[3996,41211,12052],{"class":4064},[3996,41213,11972],{"class":11033},[3996,41215,3867],{"class":4006},[3996,41217,12080],{"class":4064},[3996,41219,12144],{"class":11033},[3996,41221,3867],{"class":4006},[3996,41223,41224],{"class":4064},"borderRadius:",[3996,41226,11034],{"class":11033},[3996,41228,3867],{"class":4006},[3996,41230,41231],{"class":4064},"borderWidth:",[3996,41233,11949],{"class":11033},[3996,41235,5705],{"class":4006},[3996,41237,41238,41241,41243,41246,41248,41250,41253,41255,41257,41259,41261],{"class":3998,"line":12253},[3996,41239,41240],{"class":4064},"  bar:",[3996,41242,5504],{"class":4006},[3996,41244,41245],{"class":4064},"flexDirection:",[3996,41247,18800],{"class":4029},[3996,41249,3867],{"class":4006},[3996,41251,41252],{"class":4064},"borderTopWidth:",[3996,41254,11949],{"class":11033},[3996,41256,3867],{"class":4006},[3996,41258,16963],{"class":4064},[3996,41260,11672],{"class":11033},[3996,41262,5705],{"class":4006},[3996,41264,41265,41268,41270,41272,41274,41276,41279,41281,41283,41285,41287],{"class":3998,"line":12258},[3996,41266,41267],{"class":4064},"  tab:",[3996,41269,5504],{"class":4006},[3996,41271,11946],{"class":4064},[3996,41273,11949],{"class":11033},[3996,41275,3867],{"class":4006},[3996,41277,41278],{"class":4064},"alignItems:",[3996,41280,13439],{"class":4029},[3996,41282,3867],{"class":4006},[3996,41284,16963],{"class":4064},[3996,41286,11982],{"class":11033},[3996,41288,5705],{"class":4006},[3996,41290,41291],{"class":3998,"line":16645},[3996,41292,12261],{"class":4006},[3966,41294],{},[3738,41296,41298],{"id":41297},"практичні-завдання","Практичні завдання",[3801,41300,41302],{"id":41301},"базовий-рівень","Базовий рівень",[3759,41304,41305,41308,41314],{},[3762,41306,41307],{},"Своїми словами: чим Stack відрізняється від Tabs для користувача.",[3762,41309,41310,41311,41313],{},"Пояснити, чому ",[3747,41312,6029],{}," не потрапляє в URL.",[3762,41315,41316,41317,3936,41319,3821],{},"Назвати різницю між ",[3747,41318,3852],{},[3747,41320,3753],{},[3801,41322,41324],{"id":41323},"середній-рівень","Середній рівень",[3759,41326,41327,41330,41337],{},[3762,41328,41329],{},"Міні-проєкт «Довідник міст».",[3762,41331,41332,41333,41336],{},"У Nomad додати четверту вкладку «Чернетки»-заглушку (екран з текстом) і прибрати її з tab bar через ",[3747,41334,41335],{},"href: null"," (див. docs) — або просто три вкладки без заглушки.",[3762,41338,41339,41340,41342,41343,13795,41345,41347],{},"Замінити один ",[3747,41341,3753],{}," на ",[3747,41344,3852],{},[3747,41346,3856],{}," на кнопці «Нова поїздка».",[3801,41349,41351],{"id":41350},"професійний-рівень","Професійний рівень",[3759,41353,41354,41360,41369],{},[3762,41355,41356,41357,41359],{},"Увімкнути typed routes і навмисно зламати ",[3747,41358,9206],{}," — показати помилку TS.",[3762,41361,41362,41363,41365,41366,41368],{},"Порівняти ",[3747,41364,3866],{}," vs ",[3747,41367,3873],{}," після create-trip (що з кнопкою «назад»).",[3762,41370,41371,41372,41374,41375,41378,41379,41381],{},"Нотатка: що станеться, якщо ",[3747,41373,5206],{}," покласти ",[3765,41376,41377],{},"всередину"," лише ",[3747,41380,6029],{}," layout, а не root — і чому форма тоді «не бачить» trips.",[3966,41383],{},[3738,41385,41387],{"id":41386},"часті-запитання","Часті запитання",[41389,41390,41391,41401,41414,41418,41426,41436],"accordion",{},[41392,41393,41396,41397,41400],"accordion-item",{"icon":41394,"label":41395},"i-lucide-circle-help","Expo Router — це заміна React Navigation?","Ні. Expo Router ",[3765,41398,41399],{},"використовує"," React Navigation під капотом і додає file-based шар, інтеграцію з Expo, deep linking. Ви все одно зустрінете терміни Stack\u002FTabs з екосистеми React Navigation.",[41392,41402,41404,41405,41407,41408,41410,41411,41413],{"icon":41394,"label":41403},"Чому екран білий \u002F не знаходить route?","Перевірте шлях файлу, ім’я ",[3747,41406,6049],{},", групу ",[3747,41409,6029],{},", перезапуск Metro. Опечатка в ",[3747,41412,9206],{}," — часта причина.",[41392,41415,41417],{"icon":41394,"label":41416},"header і SafeArea подвоюють відступ","Якщо Stack показує header, не додавайте зайвий top safe padding «як на екрані без header». Або вимкніть header і малюйте свій.",[41392,41419,41421,41422,41425],{"icon":41394,"label":41420},"Стан вкладки скидається","Залежить від unmount\u002Flazy. Для критичного стейту тримайте дані ",[3765,41423,41424],{},"вище"," (Context\u002FRedux), не лише в локальному state екрана, який можуть розмонтувати.",[41392,41427,41429,41430,41433,41434,3821],{"icon":41394,"label":41428},"Чи потрібен React Router з npm?","Для нативного Nomad — ",[3765,41431,41432],{},"ні",". Використовуйте ",[3747,41435,4613],{},[41392,41437,41439],{"icon":41394,"label":41438},"create-trip у URL як вкладка","Не кладіть форму як tab screen без сильної причини. Stack поверх tabs — звичніший патерн «відкрили → заповнили → назад».",[3966,41441],{},[3738,41443,41445],{"id":41444},"що-далі","Що далі",[3743,41447,41448,41449,41452,41453,41459,41460,41463,41464,3821],{},"Базова карта маршрутів готова: ",[3765,41450,41451],{},"tabs + stack",". Далі — ",[3959,41454,41456],{"href":41455},"\u002Freact-native\u002Fnested-navigators-and-modals",[3765,41457,41458],{},"вкладені навігатори та модалки",": Stack усередині вкладки, ",[3747,41461,41462],{},"presentation: 'modal'",", групи auth, guard на back. Потім — ",[3765,41465,41466],{},"params і deep links",[3743,41468,41469,41473,41474,41473,41478,41473,41482,41473,41487],{},[3959,41470,3785],{"href":41471,"rel":41472},"https:\u002F\u002Fdocs.expo.dev\u002Frouter\u002Fintroduction\u002F",[3963]," · ",[3959,41475,13770],{"href":41476,"rel":41477},"https:\u002F\u002Fdocs.expo.dev\u002Fdevelop\u002Ffile-based-routing\u002F",[3963],[3959,41479,3840],{"href":41480,"rel":41481},"https:\u002F\u002Fdocs.expo.dev\u002Frouter\u002Fadvanced\u002Ftabs\u002F",[3963],[3959,41483,41486],{"href":41484,"rel":41485},"https:\u002F\u002Fdocs.expo.dev\u002Frouter\u002Freference\u002Ftyped-routes\u002F",[3963],"Typed routes",[3959,41488,3912],{"href":3961,"rel":41489},[3963],[38688,41491,41492],{},"html pre.shiki code .su1O8, html code.shiki .su1O8{--shiki-light:#0000FF;--shiki-default:#569CD6;--shiki-dark:#569CD6}html pre.shiki code .sHH4Y, html code.shiki .sHH4Y{--shiki-light:#000000;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}html pre.shiki code .s-QsJ, html code.shiki .s-QsJ{--shiki-light:#0070C1;--shiki-default:#4FC1FF;--shiki-dark:#4FC1FF}html pre.shiki code .s8Opu, html code.shiki .s8Opu{--shiki-light:#795E26;--shiki-default:#DCDCAA;--shiki-dark:#DCDCAA}html pre.shiki code .sbdoH, html code.shiki .sbdoH{--shiki-light:#A31515;--shiki-default:#CE9178;--shiki-dark:#CE9178}html pre.shiki code .s8xlr, html code.shiki .s8xlr{--shiki-light:#AF00DB;--shiki-default:#C586C0;--shiki-dark:#C586C0}html pre.shiki code .siwwj, html code.shiki .siwwj{--shiki-light:#001080;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .s0P7L, html code.shiki .s0P7L{--shiki-light:#800000;--shiki-default:#808080;--shiki-dark:#808080}html pre.shiki code .sN1BT, html code.shiki .sN1BT{--shiki-light:#267F99;--shiki-default:#4EC9B0;--shiki-dark:#4EC9B0}html pre.shiki code .sa4r_, html code.shiki .sa4r_{--shiki-light:#E50000;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .sD7JJ, html code.shiki .sD7JJ{--shiki-light:#000000FF;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .spJ8K, html code.shiki .spJ8K{--shiki-light:#008000;--shiki-default:#6A9955;--shiki-dark:#6A9955}html pre.shiki code .sLwNe, html code.shiki .sLwNe{--shiki-light:#0451A5;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .sJj4R, html code.shiki .sJj4R{--shiki-light:#098658;--shiki-default:#B5CEA8;--shiki-dark:#B5CEA8}",{"title":3992,"searchDepth":4047,"depth":4047,"links":41494},[41495,41498,41501,41504,41506,41507,41514,41520,41524,41529,41538,41542,41550,41552,41556,41559,41571,41601,41610,41615,41616],{"id":3740,"depth":4047,"text":3741,"children":41496},[41497],{"id":3803,"depth":4054,"text":3804},{"id":3970,"depth":4047,"text":3971,"children":41499},[41500],{"id":4483,"depth":4054,"text":4484},{"id":4525,"depth":4047,"text":4526,"children":41502},[41503],{"id":4711,"depth":4054,"text":4712},{"id":4779,"depth":4047,"text":41505},"Фізична організація проєкту: Сегрегація директорій app\u002F та src\u002F",{"id":5103,"depth":4047,"text":5104},{"id":5149,"depth":4047,"text":41508,"children":41509},"_layout.tsx — Декларативна оболонка та межа сегмента",[41510,41512,41513],{"id":5186,"depth":4054,"text":41511},"Основні інженерні обов'язки кореневого макета (app\u002F_layout.tsx):",{"id":5232,"depth":4054,"text":5233},{"id":5487,"depth":4054,"text":5488},{"id":6045,"depth":4047,"text":41515,"children":41516},"Конвенції файлової структури та маршрутизація index",[41517,41519],{"id":6166,"depth":4054,"text":41518},"Семантична роль файлів index.tsx",{"id":6188,"depth":4054,"text":6189},{"id":6212,"depth":4047,"text":6213,"children":41521},[41522,41523],{"id":6407,"depth":4054,"text":6408},{"id":6503,"depth":4054,"text":6504},{"id":6544,"depth":4047,"text":6545,"children":41525},[41526,41527],{"id":6704,"depth":4054,"text":6705},{"id":6782,"depth":4054,"text":41528},"Інтеграція векторних іконок (@expo\u002Fvector-icons)",{"id":6945,"depth":4047,"text":41530,"children":41531},"Довідник screenOptions: Конфігурація заголовків, стека та вкладок",[41532,41533,41534,41535,41536],{"id":6978,"depth":4054,"text":6979},{"id":7163,"depth":4054,"text":7164},{"id":7388,"depth":4054,"text":7389},{"id":7559,"depth":4054,"text":7560},{"id":7712,"depth":4054,"text":41537},"4. Динамічна функціональна форма screenOptions та хук useNavigation",{"id":8120,"depth":4047,"text":41539,"children":41540},"Логічне групування маршрутів: Семантика директорій (group)",[41541],{"id":8359,"depth":4054,"text":8360},{"id":8406,"depth":4047,"text":41543,"children":41544},"Програмне та декларативне керування переходами: Link та useRouter",[41545,41547,41549],{"id":8575,"depth":4054,"text":41546},"1. Декларативний підхід: компонент Link",{"id":8850,"depth":4054,"text":41548},"2. Імперативний підхід: хук useRouter",{"id":9127,"depth":4054,"text":9128},{"id":9202,"depth":4047,"text":41551},"Структура посилань href та статичні шляхи",{"id":9279,"depth":4047,"text":9280,"children":41553},[41554],{"id":9306,"depth":4054,"text":41555},"Активація типізації у файлі app.json:",{"id":9445,"depth":4047,"text":9446,"children":41557},[41558],{"id":9628,"depth":4054,"text":9629},{"id":9681,"depth":4047,"text":9682,"children":41560},[41561,41563,41565,41567,41569,41570],{"id":9685,"depth":4054,"text":41562},"1. Емуляція навігації через локальний стан useState('screen')",{"id":9712,"depth":4054,"text":41564},"2. Концентрація складної бізнес-логіки у файлах маршрутів app\u002F",{"id":9742,"depth":4054,"text":41566},"3. Плутанина між логічними групами (group) та фізичними сегментами URL",{"id":9769,"depth":4054,"text":41568},"4. Виклик push('\u002F') замість back() після успішного збереження форми",{"id":9807,"depth":4054,"text":9808},{"id":9842,"depth":4054,"text":9843},{"id":9866,"depth":4047,"text":9867,"children":41572},[41573,41574,41575,41576,41577,41578,41579,41581,41583,41585,41587,41589,41591,41593,41594,41595,41596,41597,41598,41599,41600],{"id":9870,"depth":4054,"text":9871},{"id":9916,"depth":4054,"text":9917},{"id":10022,"depth":4054,"text":10023},{"id":10029,"depth":4054,"text":10030},{"id":10073,"depth":4054,"text":10074},{"id":10091,"depth":4054,"text":10092},{"id":10109,"depth":4054,"text":41580},"Крок 2. Дані — src\u002Fdata\u002Fcities.ts",{"id":10592,"depth":4054,"text":41582},"Крок 3. Корінь Stack — app\u002F_layout.tsx",{"id":10866,"depth":4054,"text":41584},"Крок 4. Tabs — app\u002F(tabs)\u002F_layout.tsx",{"id":11299,"depth":4054,"text":41586},"Крок 5. Список — app\u002F(tabs)\u002Findex.tsx",{"id":12264,"depth":4054,"text":41588},"Крок 6. «Про нас» — app\u002F(tabs)\u002Fabout.tsx",{"id":12764,"depth":4054,"text":41590},"Крок 7. Деталі — app\u002Fcity\u002F[id].tsx",{"id":13578,"depth":4054,"text":41592},"Крок 8. Прибрати зайве з шаблону tabs",{"id":13642,"depth":4054,"text":13643},{"id":13648,"depth":4054,"text":13649},{"id":13657,"depth":4054,"text":13658},{"id":13664,"depth":4054,"text":13665},{"id":13671,"depth":4054,"text":13672},{"id":13681,"depth":4054,"text":13682},{"id":13692,"depth":4054,"text":13693},{"id":13750,"depth":4054,"text":13751},{"id":13832,"depth":4047,"text":13833,"children":41602},[41603,41604,41605,41606,41607,41608,41609],{"id":13843,"depth":4054,"text":13844},{"id":13883,"depth":4054,"text":13884},{"id":14001,"depth":4054,"text":14002},{"id":14032,"depth":4054,"text":14033},{"id":39845,"depth":4054,"text":39846},{"id":39896,"depth":4054,"text":39897},{"id":39975,"depth":4054,"text":39976},{"id":41297,"depth":4047,"text":41298,"children":41611},[41612,41613,41614],{"id":41301,"depth":4054,"text":41302},{"id":41323,"depth":4054,"text":41324},{"id":41350,"depth":4054,"text":41351},{"id":41386,"depth":4047,"text":41387},{"id":41444,"depth":4047,"text":41445},"Архітектура File-based routing у Expo — сегрегація app\u002F та src\u002F, життєвий цикл макетів _layout, навігатори Stack і Tabs, декларативна та імперативна маршрутизація через Link та useRouter, механіка повернення назад, Typed Routes, міні-проєкт «Довідник міст» та навігаційна оболонка Nomad",null,{},{"title":3432,"description":41617},"KlEXoG4U6KEUsWMyOuiGVZSXiZ2PncCDr5MwzmFaQJY",[41623,41625],{"title":3428,"path":3429,"stem":3430,"description":41624,"children":-1},"Усі основні контроли форми в React Native — TextInput, Pressable, Button, Switch, Checkbox, Slider, Picker, date picker; клавіатура; React Hook Form і Zod; реєстрація на подію та створення поїздки в Nomad",{"title":3436,"path":3437,"stem":3438,"description":41626,"children":-1},"Архітектура ієрархічних навігаційних дерев у Expo Router — вкладені стеки у вкладках (Nested Stack in Tabs), модальні представлення (presentation modal), сегрегація маршрутів через групи (auth), перехоплення переходів через usePreventRemove, міні-проєкт «Нотатки» та екран деталей поїздки в Nomad",1788069961020]