[{"data":1,"prerenderedAt":32850},["ShallowReactive",2],{"navigation_docs":3,"-react-native-stylesheet-and-theming":3497,"-react-native-stylesheet-and-theming-surround":32845},[4,1707,1912,2366,2547,2673,2880,3002,3052,3109,3143,3269,3346,3360,3423,3440,3493],{"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},"React Native","\u002Freact-native","15.react-native",[3365,3367,3371,3375,3379,3383,3387,3391,3395,3399,3403,3407,3411,3415,3419],{"title":3361,"path":3362,"stem":3366},"15.react-native\u002Findex",{"title":3368,"path":3369,"stem":3370},"React Native — навіщо він потрібен","\u002Freact-native\u002Fwhy-react-native","15.react-native\u002F01.why-react-native",{"title":3372,"path":3373,"stem":3374},"Як влаштований React Native «під капотом»","\u002Freact-native\u002Freact-native-architecture","15.react-native\u002F02.react-native-architecture",{"title":3376,"path":3377,"stem":3378},"Expo і класичний React Native — два шляхи одного фреймворку","\u002Freact-native\u002Fexpo-vs-cli-landscape","15.react-native\u002F03.expo-vs-cli-landscape",{"title":3380,"path":3381,"stem":3382},"Середовище Expo — перший запуск","\u002Freact-native\u002Fexpo-setup-and-tooling","15.react-native\u002F04.expo-setup-and-tooling",{"title":3384,"path":3385,"stem":3386},"Структура проєкту та перші UI-примітиви","\u002Freact-native\u002Fproject-structure-and-conventions","15.react-native\u002F05.project-structure-and-conventions",{"title":3388,"path":3389,"stem":3390},"Базові компоненти React Native","\u002Freact-native\u002Fcore-components","15.react-native\u002F06.core-components",{"title":3392,"path":3393,"stem":3394},"Flexbox і layout у React Native","\u002Freact-native\u002Fflexbox-and-layout","15.react-native\u002F07.flexbox-and-layout",{"title":3396,"path":3397,"stem":3398},"StyleSheet і теми (light \u002F dark)","\u002Freact-native\u002Fstylesheet-and-theming","15.react-native\u002F08.stylesheet-and-theming",{"title":3400,"path":3401,"stem":3402},"Списки та віртуалізація","\u002Freact-native\u002Flists-and-virtualization","15.react-native\u002F09.lists-and-virtualization",{"title":3404,"path":3405,"stem":3406},"Форми, ввід і валідація","\u002Freact-native\u002Fforms-input-validation","15.react-native\u002F10.forms-input-validation",{"title":3408,"path":3409,"stem":3410},"Основи Expo Router","\u002Freact-native\u002Fexpo-router-basics","15.react-native\u002F11.expo-router-basics",{"title":3412,"path":3413,"stem":3414},"Вкладені навігатори та модалки","\u002Freact-native\u002Fnested-navigators-and-modals","15.react-native\u002F12.nested-navigators-and-modals",{"title":3416,"path":3417,"stem":3418},"Deep linking і параметри маршрутів","\u002Freact-native\u002Fdeep-linking-and-params","15.react-native\u002F13.deep-linking-and-params",{"title":3420,"path":3421,"stem":3422},"Робота з мережею та життєвий цикл застосунку","\u002Freact-native\u002Fnetworking-and-app-lifecycle","15.react-native\u002F14.networking-and-app-lifecycle",{"title":3424,"path":3425,"stem":3426,"children":3427,"page":59},"Ai Python","\u002Fai-python","16.ai-python",[3428,3432,3436],{"title":3429,"path":3430,"stem":3431},"Вступ до штучного інтелекту та машинного навчання","\u002Fai-python\u002Fintro-to-ai","16.ai-python\u002F01.intro-to-ai",{"title":3433,"path":3434,"stem":3435},"Знайомство з Jupyter Notebook та JupyterLab","\u002Fai-python\u002Fjupyter-notebook","16.ai-python\u002F02.jupyter-notebook",{"title":3437,"path":3438,"stem":3439},"Робота з даними з використанням NumPy і pandas","\u002Fai-python\u002Fnumpy-pandas","16.ai-python\u002F03.numpy-pandas",{"title":3441,"path":3442,"stem":3443,"children":3444,"page":59},"Tailwind","\u002Ftailwind","21.tailwind",[3445,3449,3453,3457,3461,3465,3469,3473,3477,3481,3485,3489],{"title":3446,"path":3447,"stem":3448},"Що таке Tailwind CSS і навіщо він потрібен","\u002Ftailwind\u002Ftailwind-intro-philosophy","21.tailwind\u002F01.tailwind-intro-philosophy",{"title":3450,"path":3451,"stem":3452},"Встановлення та налаштування Tailwind CSS v4","\u002Ftailwind\u002Ftailwind-installation-setup","21.tailwind\u002F02.tailwind-installation-setup",{"title":3454,"path":3455,"stem":3456},"Utility-класи: основи та система Tailwind","\u002Ftailwind\u002Ftailwind-utility-classes-core","21.tailwind\u002F03.tailwind-utility-classes-core",{"title":3458,"path":3459,"stem":3460},"Layout: Flexbox та Grid через Tailwind","\u002Ftailwind\u002Ftailwind-flexbox-grid","21.tailwind\u002F04.tailwind-flexbox-grid",{"title":3462,"path":3463,"stem":3464},"Кастомізація теми через @theme у Tailwind v4","\u002Ftailwind\u002Ftailwind-theme-customization","21.tailwind\u002F05.tailwind-theme-customization",{"title":3466,"path":3467,"stem":3468},"Варіанти: hover, focus, responsive, dark mode та нові v4","\u002Ftailwind\u002Ftailwind-variants-states","21.tailwind\u002F06.tailwind-variants-states",{"title":3470,"path":3471,"stem":3472},"Типографіка та система кольорів у Tailwind v4","\u002Ftailwind\u002Ftailwind-typography-colors","21.tailwind\u002F07.tailwind-typography-colors",{"title":3474,"path":3475,"stem":3476},"Компоненти та повторюваність: @apply, @utility та патерни","\u002Ftailwind\u002Ftailwind-components-patterns","21.tailwind\u002F08.tailwind-components-patterns",{"title":3478,"path":3479,"stem":3480},"Темна тема та система дизайн-токенів у Tailwind v4","\u002Ftailwind\u002Ftailwind-dark-mode-theming","21.tailwind\u002F09.tailwind-dark-mode-theming",{"title":3482,"path":3483,"stem":3484},"Довільні значення та контейнерні запити у Tailwind v4","\u002Ftailwind\u002Ftailwind-arbitrary-container-queries","21.tailwind\u002F10.tailwind-arbitrary-container-queries",{"title":3486,"path":3487,"stem":3488},"Анімації, трансформації та 3D у Tailwind v4","\u002Ftailwind\u002Ftailwind-animations-transforms","21.tailwind\u002F11.tailwind-animations-transforms",{"title":3490,"path":3491,"stem":3492},"Tailwind CLI, PostCSS та інтеграція з фреймворками","\u002Ftailwind\u002Ftailwind-cli-tooling","21.tailwind\u002F12.tailwind-cli-tooling",{"title":3494,"path":3495,"stem":3496},"Тестування компонентів діаграм","\u002Ftest-components","98.test-components",{"id":3498,"title":3396,"body":3499,"description":32840,"extension":17167,"links":32841,"meta":32842,"navigation":4565,"path":3397,"seo":32843,"stem":3398,"__hash__":32844},"docs\u002F15.react-native\u002F08.stylesheet-and-theming.md",{"type":3500,"value":3501,"toc":32730},"minimark",[3502,3506,3511,3521,3529,3557,3560,3588,3593,3610,3644,3681,3694,3708,3711,3759,3789,3792,3796,3799,3825,3843,3968,3972,4023,4046,4067,4069,4073,4076,4100,4111,4113,4119,4135,4139,4142,4213,4216,4249,4258,4266,4306,4333,4343,4349,4475,4482,4495,5223,5231,5246,5841,5851,5868,6665,6674,6684,7370,7387,7402,8933,8937,9056,9066,9115,9138,9142,9149,9212,9231,9256,9279,9286,9365,9375,9379,9402,9404,9408,9415,9419,9436,9439,9470,9480,9484,9567,9571,9586,9877,10156,10181,10185,10271,10393,10406,10413,10416,10510,10524,12664,12671,12694,12707,12711,12740,12742,12746,12755,12769,12774,12785,12802,12813,12820,12834,12837,12852,13303,13364,13384,13386,13394,13405,13431,13627,13630,13705,13719,13727,13747,13751,13776,13783,13802,13806,15052,15054,15064,15071,15106,15112,15171,15200,15207,15217,15221,15224,15290,15312,15321,15347,15359,15474,15478,15489,15494,15511,15554,15575,15752,15813,15817,16015,16026,16035,16048,16422,16451,16458,16470,16569,16578,16603,16613,16617,16630,16931,16950,16957,17049,17055,17059,17191,17206,17210,17227,19129,19132,19188,19195,19199,19205,19291,19315,19319,19335,19351,19363,19450,19453,19479,19494,19501,19503,19507,19514,19644,19646,19650,19656,19660,19689,19693,19735,19742,19745,21170,21174,21248,21252,21267,21271,22608,22610,22614,22621,22625,22632,22636,22646,22660,22665,22707,22711,22731,22767,30451,30455,30466,30470,30476,30550,30560,30564,32434,32436,32440,32443,32497,32534,32547,32549,32553,32557,32580,32584,32603,32607,32632,32634,32638,32727],[3503,3504,3396],"h1",{"id":3505},"stylesheet-і-теми-light-dark",[3507,3508,3510],"h2",{"id":3509},"навіщо-ця-стаття","Навіщо ця стаття",[3512,3513,3514],"p",{},[3515,3516],"img",{"alt":3517,"className":3518,"src":3520},"Стиль ≠ тема",[3519],"diagram-img","\u002Fimages\u002Freact-native\u002Fstylesheet-and-theming\u002F01.svg",[3512,3522,3523,3524,3528],{},"Уявіть вечір у метро: людина відкриває щоденник подорожей, у телефоні давно увімкнений ",[3525,3526,3527],"strong",{},"темний режим"," (Dark Mode). Системні екрани й більшість улюблених застосунків уже темні: фон глибокий, текст світлий, статус-бар читабельний. Якщо ваш застосунок лишається сліпучо-білим, користувач не думає «ой, у них ще не зробили StyleSheet.create». Він думає: «цей додаток виглядає застаріло» — і закриває його.",[3512,3530,3531,3532,3536,3537,3540,3541,3544,3545,3548,3549,3552,3553,3556],{},"У попередніх статтях стилі вже з’являлись: ",[3533,3534,3535],"code",{},"StyleSheet.create",", ",[3533,3538,3539],{},"tokens.colors.primary",", інколи ",[3533,3542,3543],{},"useColorScheme"," у демо. Але кольори в Nomad досі були ",[3525,3546,3547],{},"одні"," — світла палітра «намертво» вшита в об’єкт ",[3533,3550,3551],{},"tokens",". Перемикач системи ",[3525,3554,3555],{},"нічого"," не змінював на екрані, бо компоненти питали не «який зараз режим?», а «який hex записаний у файлі раз і назавжди?».",[3512,3558,3559],{},"Ця стаття з’єднує дві речі, які на вебі часто плутають:",[3561,3562,3563,3578],"ol",{},[3564,3565,3566,3569,3570,3573,3574,3577],"li",{},[3525,3567,3568],{},"Як описувати вигляд"," елемента в React Native (об’єкти стилів, ",[3533,3571,3572],{},"StyleSheet",", масиви) — аналог CSS, але ",[3525,3575,3576],{},"інший"," механізм.",[3564,3579,3580,3583,3584,3587],{},[3525,3581,3582],{},"Як міняти theme (тему) всього застосунку"," (світла \u002F темна тема, семантичні імена кольорів) — аналог CSS-змінних і ",[3533,3585,3586],{},"prefers-color-scheme",", своїми інструментами.",[3589,3590,3592],"h3",{"id":3591},"терміни-простими-словами","Терміни простими словами",[3512,3594,3595,3598,3599,3601,3602,3605,3606,3609],{},[3525,3596,3597],{},"Стиль (style)"," у React Native — звичайний JavaScript-об’єкт (або зареєстрований через ",[3533,3600,3572],{}," ідентифікатор), який каже нативному UI: «відступ 16, заокруглення 12, колір фону такий-то». Немає окремого файлу ",[3533,3603,3604],{},".css",", немає селекторів ",[3533,3607,3608],{},".card > .title",".",[3512,3611,3612,3615,3616,3619,3620,3623,3624,3627,3628,3632,3633,3627,3636,3639,3640,3643],{},[3525,3613,3614],{},"Тема (theme)"," — узгоджений ",[3525,3617,3618],{},"набір значень"," (передусім кольорів) для ",[3525,3621,3622],{},"режиму відображення",". Найчастіше два режими: ",[3525,3625,3626],{},"світлий"," (",[3629,3630,3631],"em",{},"light",") і ",[3525,3634,3635],{},"темний",[3629,3637,3638],{},"dark","). Тема — не «красивий шаблон з Figma», а ",[3525,3641,3642],{},"словник",", з якого всі екрани беруть одні й ті самі ролі кольорів.",[3512,3645,3646,3649,3650,3653,3654,3657,3658,3661,3662,3664,3665,3668,3669,3672,3673,3676,3677,3680],{},[3525,3647,3648],{},"Семантичний токен (semantic token)"," — ім’я за ",[3525,3651,3652],{},"роллю",", а не за відтінком.",[3655,3656],"br",{},"\nПриклад: ",[3533,3659,3660],{},"surface"," означає «поверхня картки \u002F панелі», а не «білий». У light ",[3533,3663,3660],{}," може бути ",[3533,3666,3667],{},"#FFFFFF",", у dark — ",[3533,3670,3671],{},"#1C1C1E",". Компонент пише ",[3533,3674,3675],{},"colors.surface"," і ",[3525,3678,3679],{},"не знає",", який саме hex підставлять сьогодні.",[3512,3682,3683,3686,3687,3689,3690,3693],{},[3525,3684,3685],{},"Схема кольорів (color scheme)"," — відповідь операційної системи (або вашого перемикача): зараз світлий чи темний інтерфейс. Хук ",[3533,3688,3543],{}," читає ",[3525,3691,3692],{},"системну"," схему.",[3512,3695,3696,3699,3700,3703,3704,3707],{},[3525,3697,3698],{},"Перевага користувача (preference)"," у нашому коді — що ",[3525,3701,3702],{},"обрав"," людина в застосунку: «як у системі», «завжди світла», «завжди темна». Це вже не чиста ОС, а ",[3525,3705,3706],{},"ваш"," стан (поки в пам’яті; збереження на диск — пізніше).",[3512,3709,3710],{},"Після статті ви зможете:",[3561,3712,3713,3718,3725,3735,3742],{},[3564,3714,3715,3716,3609],{},"Пояснити, чим RN-стилі відрізняються від CSS і навіщо ",[3533,3717,3535],{},[3564,3719,3720,3721,3724],{},"Складати ",[3533,3722,3723],{},"style={[…]}"," без сюрпризів із перекриттям.",[3564,3726,3727,3728,3731,3732,3609],{},"Відокремити ",[3525,3729,3730],{},"геометрію"," (padding, radius) від ",[3525,3733,3734],{},"кольорів теми",[3564,3736,3737,3738,3741],{},"Зчитати системну тему і ",[3525,3739,3740],{},"перевизначити"," її вибором користувача.",[3564,3743,3744,3747,3748,3751,3752,3755,3756,3609],{},[3525,3745,3746],{},"Самі"," зібрати ",[3533,3749,3750],{},"ThemeProvider"," + ",[3533,3753,3754],{},"useTheme"," на React Context і підключити light\u002Fdark у ",[3525,3757,3758],{},"Nomad",[3760,3761,3762,3765,3766,3769,3770,3773,3774,3777,3778,3781,3782,3785,3786,3788],"note",{},[3525,3763,3764],{},"Головна думка."," Стилі описують ",[3525,3767,3768],{},"форму"," (відступи, радіус, flex, розташування). Тема описує ",[3525,3771,3772],{},"забарвлення ролей"," (фон екрана, поверхня картки, основний текст, акцент кнопки). Якщо в компоненті написано ",[3533,3775,3776],{},"backgroundColor: '#fff'",", темна тема ",[3525,3779,3780],{},"ніколи"," «сама» не з’явиться — рядок уже вирішив колір назавжди. Якщо написано ",[3533,3783,3784],{},"backgroundColor: colors.surface",", достатньо підмінити ",[3525,3787,3642],{}," кольорів — компонент перемалюється з новою theme, без правок у десятках файлів.",[3790,3791],"hr",{},[3507,3793,3795],{"id":3794},"місток-з-web-react-css","Місток з web React \u002F CSS",[3512,3797,3798],{},"На вебі ви звикли до трьох шарів:",[3561,3800,3801,3807,3813],{},[3564,3802,3803,3806],{},[3525,3804,3805],{},"Розмітка"," (JSX \u002F HTML) — що є на сторінці.",[3564,3808,3809,3812],{},[3525,3810,3811],{},"CSS"," — як воно виглядає (часто в іншому файлі або через Tailwind-класи).",[3564,3814,3815,3818,3819,3536,3822,3824],{},[3525,3816,3817],{},"Тема"," — CSS variables, ",[3533,3820,3821],{},"data-theme",[3533,3823,3586],{},", інколи Context у React.",[3512,3826,3827,3828,3831,3832,3838,3839,3842],{},"У React Native ",[3525,3829,3830],{},"розмітка"," лишається JSX, але «CSS-файлу» немає. Замість нього — ",[3525,3833,3834,3835],{},"prop ",[3533,3836,3837],{},"style"," на майже кожному візуальному компоненті. Значення — об’єкт (або масив об’єктів \u002F зареєстрованих стилів). Під капотом RN перетворює це на властивості ",[3525,3840,3841],{},"нативних"," view (UIView \u002F android.view), а не на CSSOM браузера.",[3844,3845,3846,3862],"table",{},[3847,3848,3849],"thead",{},[3850,3851,3852,3856,3859],"tr",{},[3853,3854,3855],"th",{},"У браузері",[3853,3857,3858],{},"У React Native",[3853,3860,3861],{},"Що це означає для вас",[3863,3864,3865,3883,3902,3923,3941],"tbody",{},[3850,3866,3867,3871,3876],{},[3868,3869,3870],"td",{},"CSS-файл, CSS Modules, Tailwind",[3868,3872,3873,3874],{},"об’єкти + ",[3533,3875,3572],{},[3868,3877,3878,3879,3882],{},"Немає глобальних селекторів ",[3533,3880,3881],{},".card { }",", немає «каскаду по дереву HTML» у класичному сенсі",[3850,3884,3885,3890,3895],{},[3868,3886,3887],{},[3533,3888,3889],{},"className=\"card active\"",[3868,3891,3892],{},[3533,3893,3894],{},"style={[styles.card, active && styles.active]}",[3868,3896,3897,3898,3901],{},"Стани вмикаєте ",[3525,3899,3900],{},"в JSX"," умовами, не другим класом у рядку",[3850,3903,3904,3911,3917],{},[3868,3905,3906,3907,3910],{},"CSS variables (",[3533,3908,3909],{},"--bg",")",[3868,3912,3913,3916],{},[3525,3914,3915],{},"токени"," + тема (Context \u002F props)",[3868,3918,3919,3920],{},"«Змінні» — ваш TypeScript-об’єкт, не ",[3533,3921,3922],{},":root",[3850,3924,3925,3929,3938],{},[3868,3926,3927],{},[3533,3928,3586],{},[3868,3930,3931,3934,3935],{},[3533,3932,3933],{},"useColorScheme()"," \u002F модуль ",[3533,3936,3937],{},"Appearance",[3868,3939,3940],{},"Система повідомляє light\u002Fdark; підписка через хук",[3850,3942,3943,3952,3958],{},[3868,3944,3945,3948,3949],{},[3533,3946,3947],{},"color-scheme"," на ",[3533,3950,3951],{},"html",[3868,3953,3954,3957],{},[3533,3955,3956],{},"StatusBar"," + кольори екрана",[3868,3959,3960,3961,3964,3965],{},"Системні іконки зверху ",[3525,3962,3963],{},"не"," підлаштовуються самі лише від фону ",[3533,3966,3967],{},"View",[3589,3969,3971],{"id":3970},"що-ламається-якщо-мислити-як-у-css","Що ламається, якщо мислити «як у CSS»",[3973,3974,3975,3992,4014],"ul",{},[3564,3976,3977,3980,3981,3984,3985,3980,3988,3991],{},[3525,3978,3979],{},"Немає"," ",[3533,3982,3983],{},"!important",", немає специфічності селекторів. Є лише ",[3525,3986,3987],{},"порядок у масиві",[3533,3989,3990],{},"style={[a, b, c]}"," — хто правіше, той перемагає в конфлікті ключів.",[3564,3993,3994,3996,3997,4000,4001,4004,4005,4007,4008,4011,4012,3609],{},[3525,3995,3979],{}," успадкування ",[3533,3998,3999],{},"color"," \u002F ",[3533,4002,4003],{},"font-size"," на всі вкладені ",[3533,4006,3967],{}," як у HTML. Текст живе в ",[3533,4009,4010],{},"Text","; стилі тексту не «просочуються» в дочірні ",[3533,4013,3967],{},[3564,4015,4016,4018,4019,4022],{},[3525,4017,3979],{}," «підключив dark.css і все перефарбувалось». Поки компонент читає літерал ",[3533,4020,4021],{},"#fff",", ніякий Dark Mode ОС йому не допоможе.",[4024,4025,4026,4029,4030,4033,4034,4037,4038,4041,4042,4045],"warning",{},[3525,4027,4028],{},"Web-звичка."," Шукати ",[3533,4031,4032],{},"dark:"," як у Tailwind або ",[3533,4035,4036],{},":root[data-theme=dark]"," і чекати, що RN «зрозуміє». У нашому шляху (StyleSheet + токени, без NativeWind) темна тема — це ",[3525,4039,4040],{},"ваші"," дві палітри + хук\u002Fконтекст + дисципліна «не писати hex у компонентах». Це не гірше — просто ",[3525,4043,4044],{},"явніше",": ви бачите, звідки взявся колір.",[4047,4048,4049,4052,4053,4056,4057,4060,4061,4063,4064,4066],"tip",{},[3525,4050,4051],{},"Аналогія."," CSS на сайті — як загальні правила будинку («усі двері коричневі»). Стилі RN — як ",[3525,4054,4055],{},"наклейка на кожні двері окремо",": «ця — 16 px padding, ось такий колір». Тема — як ",[3525,4058,4059],{},"палітра фарб на складі",": сьогодні видаємо світлі банки з етикеткою ",[3533,4062,3660],{},", завтра — темні з тією ж етикеткою. Майстер (компонент) просить «банку ",[3533,4065,3660],{},"», а не «білу №12».",[3790,4068],{},[3507,4070,4072],{"id":4071},"як-rn-малює-вигляд","Як RN малює «вигляд»",[3512,4074,4075],{},"Коротко, щоб не здавалось магією:",[3561,4077,4078,4084,4091,4097],{},[3564,4079,4080,4081,3609],{},"Ви пишете ",[3533,4082,4083],{},"\u003CView style={…} \u002F>",[3564,4085,4086,4087,4090],{},"React Native (разом із нативним шаром) застосовує ці властивості до ",[3525,4088,4089],{},"платформенного"," прямокутника на екрані.",[3564,4092,4093,4094,3609],{},"Flexbox (попередня стаття) рахує ",[3525,4095,4096],{},"розміри й позиції",[3564,4098,4099],{},"Колір, бордер, тінь, прозорість — окремі властивості того ж стилю.",[3512,4101,4102,4103,4106,4107,4110],{},"Тому «стилізація» у мобільному React — це не «підключити stylesheet до сторінки», а ",[3525,4104,4105],{},"проп на конкретному елементі",", плюс домовленість команди, ",[3525,4108,4109],{},"звідки"," брати повторювані значення (токени, тема).",[3790,4112],{},[3507,4114,4116,4118],{"id":4115},"stylesheet-навіщо-цей-модуль",[3533,4117,3572],{}," — навіщо цей модуль",[3512,4120,4121,4125,4126,4131,4132,3609],{},[3525,4122,4123],{},[3533,4124,3572],{}," — вбудований модуль React Native для роботи зі стилями. Найчастіший виклик — ",[3525,4127,4128],{},[3533,4129,4130],{},"StyleSheet.create({ … })",": ви передаєте об’єкт «ім’я → опис вигляду», отримуєте об’єкт з тими ж ключами для ",[3533,4133,4134],{},"style={styles.card}",[3589,4136,4138],{"id":4137},"навіщо-не-писати-все-inline","Навіщо не писати все inline",[3512,4140,4141],{},"Технічно так можна:",[4143,4144,4149],"pre",{"className":4145,"code":4146,"language":4147,"meta":4148,"style":4148},"language-tsx shiki shiki-themes light-plus dark-plus dark-plus","\u003CView style={{ flex: 1, padding: 16, backgroundColor: '#F8FAFC' }} \u002F>\n","tsx","",[3533,4150,4151],{"__ignoreMap":4148},[4152,4153,4156,4160,4163,4167,4171,4175,4179,4183,4187,4189,4192,4195,4197,4200,4204,4207,4210],"span",{"class":4154,"line":4155},"line",1,[4152,4157,4159],{"class":4158},"s0P7L","\u003C",[4152,4161,3967],{"class":4162},"sN1BT",[4152,4164,4166],{"class":4165},"sa4r_"," style",[4152,4168,4170],{"class":4169},"sHH4Y","=",[4152,4172,4174],{"class":4173},"su1O8","{",[4152,4176,4178],{"class":4177},"sD7JJ","{ ",[4152,4180,4182],{"class":4181},"siwwj","flex:",[4152,4184,4186],{"class":4185},"sJj4R"," 1",[4152,4188,3536],{"class":4177},[4152,4190,4191],{"class":4181},"padding:",[4152,4193,4194],{"class":4185}," 16",[4152,4196,3536],{"class":4177},[4152,4198,4199],{"class":4181},"backgroundColor:",[4152,4201,4203],{"class":4202},"sbdoH"," '#F8FAFC'",[4152,4205,4206],{"class":4177}," }",[4152,4208,4209],{"class":4173},"}",[4152,4211,4212],{"class":4158}," \u002F>\n",[3512,4214,4215],{},"На маленькому демо це читабельно. У реальному екрані з’являються проблеми:",[3973,4217,4218,4225,4232],{},[3564,4219,4220,4221,4224],{},"JSX ",[3525,4222,4223],{},"роздувається",": важко побачити структуру «шапка \u002F список \u002F кнопка» серед об’єктів.",[3564,4226,4227,4228,4231],{},"Ті самі відступи й радіуси ",[3525,4229,4230],{},"копіюють"," у п’ять місць — потім міняєте «16» на «12» і забуваєте одне.",[3564,4233,4234,4235,3536,4238,3536,4241,4244,4245,4248],{},"Умови (",[3533,4236,4237],{},"pressed",[3533,4239,4240],{},"disabled",[3533,4242,4243],{},"error",") перетворюють ",[3533,4246,4247],{},"style={{…}}"," на важкий для читання вираз.",[3512,4250,4251,4253,4254,4257],{},[3533,4252,3535],{}," — домовленість «",[3525,4255,4256],{},"вигляд зібрано окремо",", JSX описує склад». Це схоже на CSS Modules: імена локальні, але без окремого синтаксису CSS.",[3589,4259,4261,4262,4265],{"id":4260},"що-реально-дає-create-на-практиці","Що реально дає ",[3533,4263,4264],{},"create"," на практиці",[3561,4267,4268,4278,4284,4293],{},[3564,4269,4270,4273,4274,4277],{},[3525,4271,4272],{},"Ясність"," — стилі внизу файлу (або в ",[3533,4275,4276],{},"Foo.styles.ts","); у JSX лишаються імена.",[3564,4279,4280,4283],{},[3525,4281,4282],{},"Підказки TypeScript \u002F dev"," — зайва властивість або неправильний тип частіше «світиться» раніше, ніж на пристрої.",[3564,4285,4286,4289,4290,4292],{},[3525,4287,4288],{},"Передбачуваний патерн у команді"," — новий розробник шукає ",[3533,4291,3535],{}," і одразу розуміє, де живе вигляд.",[3564,4294,4295,4298,4299,4301,4302,4305],{},[3525,4296,4297],{},"Оптимізації з боку RN"," (історично: реєстрація стилів, менше «сирих» об’єктів на мості). Деталі змінювались між версіями; ",[3525,4300,3963],{}," будуйте архітектуру заради мікробенчмарків. Будуйте заради ",[3525,4303,4304],{},"читабельності"," й єдиного місця правки.",[3760,4307,4308,3980,4311,3980,4313,4315,4316,3980,4319,4321,4322,4325,4326,4329,4330,3609],{},[3525,4309,4310],{},"Важливо.",[3533,4312,3535],{},[3525,4314,3963],{}," робить стилі «реактивними до теми» саме по собі. Якщо ",[3525,4317,4318],{},"всередині",[3533,4320,4264],{}," на рівні модуля ви написали ",[3533,4323,4324],{},"backgroundColor: '#F8FAFC'",", це значення зафіксоване в момент завантаження модуля. Темна тема підключається інакше: або різні об’єкти стилів, або (краще) ",[3525,4327,4328],{},"динамічний"," колір у render: ",[3533,4331,4332],{},"[styles.card, { backgroundColor: colors.surface }]",[3589,4334,4336,4337,4339,4340],{"id":4335},"api-stylesheet-що-це-і-що-видно-на-екрані","API ",[3533,4338,3572],{}," — що це і ",[3525,4341,4342],{},"що видно на екрані",[3512,4344,4345,4346,3609],{},"Нижче — коротко API, а одразу після — демо: спочатку по одному інструменту, потім ",[3525,4347,4348],{},"усе разом",[4350,4351,4352,4377,4414,4434,4457],"field-group",{},[4353,4354,4356,4357,4360,4361,4363,4366,4367,4369,4370,4372,4373,4376],"field",{"name":4355,"type":731},"StyleSheet.create(obj)","Приймає об’єкт ",[3533,4358,4359],{},"{ name: ViewStyle | TextStyle | ImageStyle }",", повертає об’єкт з тими ж ключами.",[3655,4362],{},[3525,4364,4365],{},"На екрані:"," JSX лишається коротким (",[3533,4368,4134],{},"), а «паспорт» вигляду — внизу файлу. Без ",[3533,4371,4264],{}," той самий UI виглядає ",[3525,4374,4375],{},"так само",", але код роздувається.",[4353,4378,4380,4381,4384,4385,4388,4389,4391,4393,4394,4396,4397,4400,4401,4403,4406,4407,4410,4411,3609],{"name":4379,"type":731},"StyleSheet.flatten(style)","Зводить масив \u002F вкладені стилі до ",[3525,4382,4383],{},"одного"," плоского об’єкта (",[3533,4386,4387],{},"{ fontSize: 18, color: '…', … }",").",[3655,4390],{},[3525,4392,4365],{}," користувач ",[3525,4395,3555],{}," не «бачить» окремо — flatten для ",[3525,4398,4399],{},"вас"," (тест, лог, дебаг). У звичайному JSX flatten робить сам RN.",[3655,4402],{},[3525,4404,4405],{},"Коли треба руками:"," «який підсумковий ",[3533,4408,4409],{},"fontSize"," після трьох шарів?» → ",[3533,4412,4413],{},"JSON.stringify(StyleSheet.flatten([…]))",[4353,4415,4418,4419,3751,4422,4425,4426,3609,4429,4431,4433],{"name":4416,"type":4417},"StyleSheet.absoluteFill","preset","Готовий стиль: ",[3533,4420,4421],{},"position: 'absolute'",[3533,4423,4424],{},"top\u002Fleft\u002Fright\u002Fbottom: 0"," — розтягнути на ",[3525,4427,4428],{},"всього батька",[3655,4430],{},[3525,4432,4365],{}," напівпрозорий шар поверх фото\u002Fкартки («Завантаження…», «Недоступно»), затемнення під модалкою.",[4353,4435,4437,4438,4441,4442,4444,4446,4447,4450,4451,4453,4456],{"name":4436,"type":4417},"StyleSheet.absoluteFillObject","Те саме ",[3525,4439,4440],{},"як звичайний JS-об’єкт"," (його можна спредити).",[3655,4443],{},[3525,4445,4365],{}," те саме, що ",[3533,4448,4449],{},"absoluteFill",", але ви пишете",[3655,4452],{},[3533,4454,4455],{},"{ ...StyleSheet.absoluteFillObject, backgroundColor: 'rgba(0,0,0,0.5)', zIndex: 2 }"," — один об’єкт, без другого шару в масиві.",[4353,4458,4461,4462,4464,4466,4467,4470,4471,4474],{"name":4459,"type":4460},"StyleSheet.hairlineWidth","number","Найтонша лінія, яку платформа ще малює акуратно (часто менше за 1 логічний піксель).",[3655,4463],{},[3525,4465,4365],{}," розділювачі списку «як у Налаштуваннях iOS», а не жирна смуга ",[3533,4468,4469],{},"borderWidth: 1",". Порівняйте hairline vs ",[3533,4472,4473],{},"1"," у демо нижче.",[3589,4476,4478,4479,4481],{"id":4477},"демо-1-create-масив-стилів","Демо 1: ",[3533,4480,4264],{}," + масив стилів",[3512,4483,4484,4486,4487,4490,4491,4494],{},[3533,4485,4264],{}," тримає ",[3525,4488,4489],{},"базу"," кнопки. Масив у ",[3533,4492,4493],{},"Pressable"," додає шари: «увімкнено» і «натиснуто». Порядок зліва направо — пізніший ключ перемагає.",[4496,4497,4501],"react-native-preview",{"device":4498,"filename":4499,"title":4500},"iphone","StyleSheetCreateArray.tsx","create + масив стилів",[4143,4502,4504],{"className":4145,"code":4503,"language":4147,"meta":4148,"style":4148},"import { useState } from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\n\nexport default function App() {\n  const [on, setOn] = useState(false);\n\n  return (\n    \u003CView style={styles.screen}>\n      \u003CText style={styles.title}>create + масив\u003C\u002FText>\n      \u003CText style={styles.hint}>\n        styles.btn → (on ? btnOn) → (pressed ? btnPressed)\n      \u003C\u002FText>\n      \u003CPressable\n        onPress={() => setOn((v) => !v)}\n        style={({ pressed }) => [\n          styles.btn,\n          on && styles.btnOn,\n          pressed && styles.btnPressed,\n        ]}\n      >\n        \u003CText style={styles.btnText}>{on ? 'Увімкнено' : 'Вимкнено'}\u003C\u002FText>\n      \u003C\u002FPressable>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: '#F8FAFC',\n    padding: 24,\n    justifyContent: 'center',\n    gap: 12,\n  },\n  title: { fontSize: 20, fontWeight: '700', color: '#0f172a' },\n  hint: { fontSize: 13, color: '#64748b', lineHeight: 18 },\n  btn: {\n    backgroundColor: '#94a3b8',\n    paddingVertical: 14,\n    borderRadius: 12,\n    alignItems: 'center',\n  },\n  btnOn: { backgroundColor: '#2563EB' },\n  btnPressed: { opacity: 0.85 },\n  btnText: { color: '#fff', fontWeight: '700', fontSize: 16 },\n});\n",[3533,4505,4506,4530,4560,4567,4586,4618,4623,4632,4659,4695,4719,4725,4735,4743,4783,4806,4820,4839,4856,4864,4870,4919,4928,4938,4944,4949,4954,4974,4983,4993,5003,5014,5025,5036,5042,5075,5105,5113,5123,5134,5144,5154,5159,5174,5190,5217],{"__ignoreMap":4148},[4152,4507,4508,4512,4515,4518,4521,4524,4527],{"class":4154,"line":4155},[4152,4509,4511],{"class":4510},"s8xlr","import",[4152,4513,4514],{"class":4169}," { ",[4152,4516,4517],{"class":4181},"useState",[4152,4519,4520],{"class":4169}," } ",[4152,4522,4523],{"class":4510},"from",[4152,4525,4526],{"class":4202}," 'react'",[4152,4528,4529],{"class":4169},";\n",[4152,4531,4533,4535,4537,4539,4541,4543,4545,4547,4549,4551,4553,4555,4558],{"class":4154,"line":4532},2,[4152,4534,4511],{"class":4510},[4152,4536,4514],{"class":4169},[4152,4538,3967],{"class":4181},[4152,4540,3536],{"class":4169},[4152,4542,4010],{"class":4181},[4152,4544,3536],{"class":4169},[4152,4546,4493],{"class":4181},[4152,4548,3536],{"class":4169},[4152,4550,3572],{"class":4181},[4152,4552,4520],{"class":4169},[4152,4554,4523],{"class":4510},[4152,4556,4557],{"class":4202}," 'react-native'",[4152,4559,4529],{"class":4169},[4152,4561,4563],{"class":4154,"line":4562},3,[4152,4564,4566],{"emptyLinePlaceholder":4565},true,"\n",[4152,4568,4570,4573,4576,4579,4583],{"class":4154,"line":4569},4,[4152,4571,4572],{"class":4510},"export",[4152,4574,4575],{"class":4510}," default",[4152,4577,4578],{"class":4173}," function",[4152,4580,4582],{"class":4581},"s8Opu"," App",[4152,4584,4585],{"class":4169},"() {\n",[4152,4587,4589,4592,4595,4599,4601,4604,4607,4609,4612,4615],{"class":4154,"line":4588},5,[4152,4590,4591],{"class":4173},"  const",[4152,4593,4594],{"class":4169}," [",[4152,4596,4598],{"class":4597},"s-QsJ","on",[4152,4600,3536],{"class":4169},[4152,4602,4603],{"class":4597},"setOn",[4152,4605,4606],{"class":4169},"] = ",[4152,4608,4517],{"class":4581},[4152,4610,4611],{"class":4169},"(",[4152,4613,4614],{"class":4173},"false",[4152,4616,4617],{"class":4169},");\n",[4152,4619,4621],{"class":4154,"line":4620},6,[4152,4622,4566],{"emptyLinePlaceholder":4565},[4152,4624,4626,4629],{"class":4154,"line":4625},7,[4152,4627,4628],{"class":4510},"  return",[4152,4630,4631],{"class":4169}," (\n",[4152,4633,4635,4638,4640,4642,4644,4646,4649,4651,4654,4656],{"class":4154,"line":4634},8,[4152,4636,4637],{"class":4158},"    \u003C",[4152,4639,3967],{"class":4162},[4152,4641,4166],{"class":4165},[4152,4643,4170],{"class":4169},[4152,4645,4174],{"class":4173},[4152,4647,4648],{"class":4181},"styles",[4152,4650,3609],{"class":4177},[4152,4652,4653],{"class":4181},"screen",[4152,4655,4209],{"class":4173},[4152,4657,4658],{"class":4158},">\n",[4152,4660,4662,4665,4667,4669,4671,4673,4675,4677,4680,4682,4685,4688,4691,4693],{"class":4154,"line":4661},9,[4152,4663,4664],{"class":4158},"      \u003C",[4152,4666,4010],{"class":4162},[4152,4668,4166],{"class":4165},[4152,4670,4170],{"class":4169},[4152,4672,4174],{"class":4173},[4152,4674,4648],{"class":4181},[4152,4676,3609],{"class":4177},[4152,4678,4679],{"class":4181},"title",[4152,4681,4209],{"class":4173},[4152,4683,4684],{"class":4158},">",[4152,4686,4687],{"class":4169},"create + масив",[4152,4689,4690],{"class":4158},"\u003C\u002F",[4152,4692,4010],{"class":4162},[4152,4694,4658],{"class":4158},[4152,4696,4698,4700,4702,4704,4706,4708,4710,4712,4715,4717],{"class":4154,"line":4697},10,[4152,4699,4664],{"class":4158},[4152,4701,4010],{"class":4162},[4152,4703,4166],{"class":4165},[4152,4705,4170],{"class":4169},[4152,4707,4174],{"class":4173},[4152,4709,4648],{"class":4181},[4152,4711,3609],{"class":4177},[4152,4713,4714],{"class":4181},"hint",[4152,4716,4209],{"class":4173},[4152,4718,4658],{"class":4158},[4152,4720,4722],{"class":4154,"line":4721},11,[4152,4723,4724],{"class":4169},"        styles.btn → (on ? btnOn) → (pressed ? btnPressed)\n",[4152,4726,4728,4731,4733],{"class":4154,"line":4727},12,[4152,4729,4730],{"class":4158},"      \u003C\u002F",[4152,4732,4010],{"class":4162},[4152,4734,4658],{"class":4158},[4152,4736,4738,4740],{"class":4154,"line":4737},13,[4152,4739,4664],{"class":4158},[4152,4741,4742],{"class":4162},"Pressable\n",[4152,4744,4746,4749,4751,4753,4756,4759,4762,4765,4768,4771,4773,4776,4778,4780],{"class":4154,"line":4745},14,[4152,4747,4748],{"class":4165},"        onPress",[4152,4750,4170],{"class":4169},[4152,4752,4174],{"class":4173},[4152,4754,4755],{"class":4177},"() ",[4152,4757,4758],{"class":4173},"=>",[4152,4760,4761],{"class":4581}," setOn",[4152,4763,4764],{"class":4177},"((",[4152,4766,4767],{"class":4181},"v",[4152,4769,4770],{"class":4177},") ",[4152,4772,4758],{"class":4173},[4152,4774,4775],{"class":4169}," !",[4152,4777,4767],{"class":4181},[4152,4779,3910],{"class":4177},[4152,4781,4782],{"class":4173},"}\n",[4152,4784,4786,4789,4791,4793,4796,4798,4801,4803],{"class":4154,"line":4785},15,[4152,4787,4788],{"class":4165},"        style",[4152,4790,4170],{"class":4169},[4152,4792,4174],{"class":4173},[4152,4794,4795],{"class":4177},"({ ",[4152,4797,4237],{"class":4181},[4152,4799,4800],{"class":4177}," }) ",[4152,4802,4758],{"class":4173},[4152,4804,4805],{"class":4177}," [\n",[4152,4807,4809,4812,4814,4817],{"class":4154,"line":4808},16,[4152,4810,4811],{"class":4181},"          styles",[4152,4813,3609],{"class":4177},[4152,4815,4816],{"class":4181},"btn",[4152,4818,4819],{"class":4177},",\n",[4152,4821,4823,4826,4829,4832,4834,4837],{"class":4154,"line":4822},17,[4152,4824,4825],{"class":4181},"          on",[4152,4827,4828],{"class":4169}," &&",[4152,4830,4831],{"class":4181}," styles",[4152,4833,3609],{"class":4177},[4152,4835,4836],{"class":4181},"btnOn",[4152,4838,4819],{"class":4177},[4152,4840,4842,4845,4847,4849,4851,4854],{"class":4154,"line":4841},18,[4152,4843,4844],{"class":4181},"          pressed",[4152,4846,4828],{"class":4169},[4152,4848,4831],{"class":4181},[4152,4850,3609],{"class":4177},[4152,4852,4853],{"class":4181},"btnPressed",[4152,4855,4819],{"class":4177},[4152,4857,4859,4862],{"class":4154,"line":4858},19,[4152,4860,4861],{"class":4177},"        ]",[4152,4863,4782],{"class":4173},[4152,4865,4867],{"class":4154,"line":4866},20,[4152,4868,4869],{"class":4158},"      >\n",[4152,4871,4873,4876,4878,4880,4882,4884,4886,4888,4891,4893,4895,4897,4899,4902,4905,4908,4911,4913,4915,4917],{"class":4154,"line":4872},21,[4152,4874,4875],{"class":4158},"        \u003C",[4152,4877,4010],{"class":4162},[4152,4879,4166],{"class":4165},[4152,4881,4170],{"class":4169},[4152,4883,4174],{"class":4173},[4152,4885,4648],{"class":4181},[4152,4887,3609],{"class":4177},[4152,4889,4890],{"class":4181},"btnText",[4152,4892,4209],{"class":4173},[4152,4894,4684],{"class":4158},[4152,4896,4174],{"class":4173},[4152,4898,4598],{"class":4181},[4152,4900,4901],{"class":4169}," ?",[4152,4903,4904],{"class":4202}," 'Увімкнено'",[4152,4906,4907],{"class":4169}," :",[4152,4909,4910],{"class":4202}," 'Вимкнено'",[4152,4912,4209],{"class":4173},[4152,4914,4690],{"class":4158},[4152,4916,4010],{"class":4162},[4152,4918,4658],{"class":4158},[4152,4920,4922,4924,4926],{"class":4154,"line":4921},22,[4152,4923,4730],{"class":4158},[4152,4925,4493],{"class":4162},[4152,4927,4658],{"class":4158},[4152,4929,4931,4934,4936],{"class":4154,"line":4930},23,[4152,4932,4933],{"class":4158},"    \u003C\u002F",[4152,4935,3967],{"class":4162},[4152,4937,4658],{"class":4158},[4152,4939,4941],{"class":4154,"line":4940},24,[4152,4942,4943],{"class":4169},"  );\n",[4152,4945,4947],{"class":4154,"line":4946},25,[4152,4948,4782],{"class":4169},[4152,4950,4952],{"class":4154,"line":4951},26,[4152,4953,4566],{"emptyLinePlaceholder":4565},[4152,4955,4957,4960,4962,4965,4967,4969,4971],{"class":4154,"line":4956},27,[4152,4958,4959],{"class":4173},"const",[4152,4961,4831],{"class":4597},[4152,4963,4964],{"class":4169}," = ",[4152,4966,3572],{"class":4181},[4152,4968,3609],{"class":4169},[4152,4970,4264],{"class":4581},[4152,4972,4973],{"class":4169},"({\n",[4152,4975,4977,4980],{"class":4154,"line":4976},28,[4152,4978,4979],{"class":4181},"  screen:",[4152,4981,4982],{"class":4169}," {\n",[4152,4984,4986,4989,4991],{"class":4154,"line":4985},29,[4152,4987,4988],{"class":4181},"    flex:",[4152,4990,4186],{"class":4185},[4152,4992,4819],{"class":4169},[4152,4994,4996,4999,5001],{"class":4154,"line":4995},30,[4152,4997,4998],{"class":4181},"    backgroundColor:",[4152,5000,4203],{"class":4202},[4152,5002,4819],{"class":4169},[4152,5004,5006,5009,5012],{"class":4154,"line":5005},31,[4152,5007,5008],{"class":4181},"    padding:",[4152,5010,5011],{"class":4185}," 24",[4152,5013,4819],{"class":4169},[4152,5015,5017,5020,5023],{"class":4154,"line":5016},32,[4152,5018,5019],{"class":4181},"    justifyContent:",[4152,5021,5022],{"class":4202}," 'center'",[4152,5024,4819],{"class":4169},[4152,5026,5028,5031,5034],{"class":4154,"line":5027},33,[4152,5029,5030],{"class":4181},"    gap:",[4152,5032,5033],{"class":4185}," 12",[4152,5035,4819],{"class":4169},[4152,5037,5039],{"class":4154,"line":5038},34,[4152,5040,5041],{"class":4169},"  },\n",[4152,5043,5045,5048,5050,5053,5056,5058,5061,5064,5066,5069,5072],{"class":4154,"line":5044},35,[4152,5046,5047],{"class":4181},"  title:",[4152,5049,4514],{"class":4169},[4152,5051,5052],{"class":4181},"fontSize:",[4152,5054,5055],{"class":4185}," 20",[4152,5057,3536],{"class":4169},[4152,5059,5060],{"class":4181},"fontWeight:",[4152,5062,5063],{"class":4202}," '700'",[4152,5065,3536],{"class":4169},[4152,5067,5068],{"class":4181},"color:",[4152,5070,5071],{"class":4202}," '#0f172a'",[4152,5073,5074],{"class":4169}," },\n",[4152,5076,5078,5081,5083,5085,5088,5090,5092,5095,5097,5100,5103],{"class":4154,"line":5077},36,[4152,5079,5080],{"class":4181},"  hint:",[4152,5082,4514],{"class":4169},[4152,5084,5052],{"class":4181},[4152,5086,5087],{"class":4185}," 13",[4152,5089,3536],{"class":4169},[4152,5091,5068],{"class":4181},[4152,5093,5094],{"class":4202}," '#64748b'",[4152,5096,3536],{"class":4169},[4152,5098,5099],{"class":4181},"lineHeight:",[4152,5101,5102],{"class":4185}," 18",[4152,5104,5074],{"class":4169},[4152,5106,5108,5111],{"class":4154,"line":5107},37,[4152,5109,5110],{"class":4181},"  btn:",[4152,5112,4982],{"class":4169},[4152,5114,5116,5118,5121],{"class":4154,"line":5115},38,[4152,5117,4998],{"class":4181},[4152,5119,5120],{"class":4202}," '#94a3b8'",[4152,5122,4819],{"class":4169},[4152,5124,5126,5129,5132],{"class":4154,"line":5125},39,[4152,5127,5128],{"class":4181},"    paddingVertical:",[4152,5130,5131],{"class":4185}," 14",[4152,5133,4819],{"class":4169},[4152,5135,5137,5140,5142],{"class":4154,"line":5136},40,[4152,5138,5139],{"class":4181},"    borderRadius:",[4152,5141,5033],{"class":4185},[4152,5143,4819],{"class":4169},[4152,5145,5147,5150,5152],{"class":4154,"line":5146},41,[4152,5148,5149],{"class":4181},"    alignItems:",[4152,5151,5022],{"class":4202},[4152,5153,4819],{"class":4169},[4152,5155,5157],{"class":4154,"line":5156},42,[4152,5158,5041],{"class":4169},[4152,5160,5162,5165,5167,5169,5172],{"class":4154,"line":5161},43,[4152,5163,5164],{"class":4181},"  btnOn:",[4152,5166,4514],{"class":4169},[4152,5168,4199],{"class":4181},[4152,5170,5171],{"class":4202}," '#2563EB'",[4152,5173,5074],{"class":4169},[4152,5175,5177,5180,5182,5185,5188],{"class":4154,"line":5176},44,[4152,5178,5179],{"class":4181},"  btnPressed:",[4152,5181,4514],{"class":4169},[4152,5183,5184],{"class":4181},"opacity:",[4152,5186,5187],{"class":4185}," 0.85",[4152,5189,5074],{"class":4169},[4152,5191,5193,5196,5198,5200,5203,5205,5207,5209,5211,5213,5215],{"class":4154,"line":5192},45,[4152,5194,5195],{"class":4181},"  btnText:",[4152,5197,4514],{"class":4169},[4152,5199,5068],{"class":4181},[4152,5201,5202],{"class":4202}," '#fff'",[4152,5204,3536],{"class":4169},[4152,5206,5060],{"class":4181},[4152,5208,5063],{"class":4202},[4152,5210,3536],{"class":4169},[4152,5212,5052],{"class":4181},[4152,5214,4194],{"class":4185},[4152,5216,5074],{"class":4169},[4152,5218,5220],{"class":4154,"line":5219},46,[4152,5221,5222],{"class":4169},"});\n",[3589,5224,5226,5227,5230],{"id":5225},"демо-2-flatten-що-вийшло-в-сумі","Демо 2: ",[3533,5228,5229],{},"flatten"," — «що вийшло в сумі»",[3512,5232,5233,5234,5237,5238,5241,5242,5245],{},"Два шари стилів заголовка + колір з теми. На екрані — текст ",[3525,5235,5236],{},"і"," JSON підсумкового об’єкта після ",[3533,5239,5240],{},"StyleSheet.flatten",". У продакшені UI так рідко показують; тут — щоб ",[3525,5243,5244],{},"побачити"," злиття ключів.",[4496,5247,5249],{"device":4498,"filename":5248,"title":5240},"StyleSheetFlatten.tsx",[4143,5250,5252],{"className":4145,"code":5251,"language":4147,"meta":4148,"style":4148},"import { View, Text, StyleSheet } from 'react-native';\n\nexport default function App() {\n  const flat = StyleSheet.flatten([\n    styles.titleBase,       \u002F\u002F fontSize: 16, color: gray\n    styles.titleEmphasis,   \u002F\u002F fontSize: 22, fontWeight — перекриває size\n    { color: '#2563EB' },   \u002F\u002F color перемагає\n  ]);\n\n  return (\n    \u003CView style={styles.screen}>\n      \u003CText style={flat}>Заголовок після flatten\u003C\u002FText>\n      \u003CView style={styles.panel}>\n        \u003CText style={styles.label}>StyleSheet.flatten([...]) →\u003C\u002FText>\n        \u003CText style={styles.code}>{JSON.stringify(flat, null, 2)}\u003C\u002FText>\n      \u003C\u002FView>\n      \u003CText style={styles.hint}>\n        fontSize: 22 (з emphasis), color: #2563EB (з останнього шару).\n      \u003C\u002FText>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, backgroundColor: '#F8FAFC', padding: 20, justifyContent: 'center', gap: 14 },\n  titleBase: { fontSize: 16, color: '#64748b' },\n  titleEmphasis: { fontSize: 22, fontWeight: '800' },\n  panel: {\n    backgroundColor: '#fff',\n    borderRadius: 12,\n    borderWidth: 1,\n    borderColor: '#E2E8F0',\n    padding: 12,\n  },\n  label: { fontSize: 12, fontWeight: '600', color: '#64748b', marginBottom: 6 },\n  code: { fontFamily: 'monospace', fontSize: 12, color: '#0f172a', lineHeight: 18 },\n  hint: { fontSize: 13, color: '#64748b', lineHeight: 18 },\n});\n",[3533,5253,5254,5278,5282,5294,5312,5329,5344,5359,5364,5368,5374,5396,5424,5447,5479,5535,5543,5565,5570,5578,5586,5590,5594,5598,5614,5652,5671,5692,5699,5707,5715,5724,5734,5742,5746,5780,5813,5837],{"__ignoreMap":4148},[4152,5255,5256,5258,5260,5262,5264,5266,5268,5270,5272,5274,5276],{"class":4154,"line":4155},[4152,5257,4511],{"class":4510},[4152,5259,4514],{"class":4169},[4152,5261,3967],{"class":4181},[4152,5263,3536],{"class":4169},[4152,5265,4010],{"class":4181},[4152,5267,3536],{"class":4169},[4152,5269,3572],{"class":4181},[4152,5271,4520],{"class":4169},[4152,5273,4523],{"class":4510},[4152,5275,4557],{"class":4202},[4152,5277,4529],{"class":4169},[4152,5279,5280],{"class":4154,"line":4532},[4152,5281,4566],{"emptyLinePlaceholder":4565},[4152,5283,5284,5286,5288,5290,5292],{"class":4154,"line":4562},[4152,5285,4572],{"class":4510},[4152,5287,4575],{"class":4510},[4152,5289,4578],{"class":4173},[4152,5291,4582],{"class":4581},[4152,5293,4585],{"class":4169},[4152,5295,5296,5298,5301,5303,5305,5307,5309],{"class":4154,"line":4569},[4152,5297,4591],{"class":4173},[4152,5299,5300],{"class":4597}," flat",[4152,5302,4964],{"class":4169},[4152,5304,3572],{"class":4181},[4152,5306,3609],{"class":4169},[4152,5308,5229],{"class":4581},[4152,5310,5311],{"class":4169},"([\n",[4152,5313,5314,5317,5319,5322,5325],{"class":4154,"line":4588},[4152,5315,5316],{"class":4181},"    styles",[4152,5318,3609],{"class":4169},[4152,5320,5321],{"class":4181},"titleBase",[4152,5323,5324],{"class":4169},",       ",[4152,5326,5328],{"class":5327},"spJ8K","\u002F\u002F fontSize: 16, color: gray\n",[4152,5330,5331,5333,5335,5338,5341],{"class":4154,"line":4620},[4152,5332,5316],{"class":4181},[4152,5334,3609],{"class":4169},[4152,5336,5337],{"class":4181},"titleEmphasis",[4152,5339,5340],{"class":4169},",   ",[4152,5342,5343],{"class":5327},"\u002F\u002F fontSize: 22, fontWeight — перекриває size\n",[4152,5345,5346,5349,5351,5353,5356],{"class":4154,"line":4625},[4152,5347,5348],{"class":4169},"    { ",[4152,5350,5068],{"class":4181},[4152,5352,5171],{"class":4202},[4152,5354,5355],{"class":4169}," },   ",[4152,5357,5358],{"class":5327},"\u002F\u002F color перемагає\n",[4152,5360,5361],{"class":4154,"line":4634},[4152,5362,5363],{"class":4169},"  ]);\n",[4152,5365,5366],{"class":4154,"line":4661},[4152,5367,4566],{"emptyLinePlaceholder":4565},[4152,5369,5370,5372],{"class":4154,"line":4697},[4152,5371,4628],{"class":4510},[4152,5373,4631],{"class":4169},[4152,5375,5376,5378,5380,5382,5384,5386,5388,5390,5392,5394],{"class":4154,"line":4721},[4152,5377,4637],{"class":4158},[4152,5379,3967],{"class":4162},[4152,5381,4166],{"class":4165},[4152,5383,4170],{"class":4169},[4152,5385,4174],{"class":4173},[4152,5387,4648],{"class":4181},[4152,5389,3609],{"class":4177},[4152,5391,4653],{"class":4181},[4152,5393,4209],{"class":4173},[4152,5395,4658],{"class":4158},[4152,5397,5398,5400,5402,5404,5406,5408,5411,5413,5415,5418,5420,5422],{"class":4154,"line":4727},[4152,5399,4664],{"class":4158},[4152,5401,4010],{"class":4162},[4152,5403,4166],{"class":4165},[4152,5405,4170],{"class":4169},[4152,5407,4174],{"class":4173},[4152,5409,5410],{"class":4181},"flat",[4152,5412,4209],{"class":4173},[4152,5414,4684],{"class":4158},[4152,5416,5417],{"class":4169},"Заголовок після flatten",[4152,5419,4690],{"class":4158},[4152,5421,4010],{"class":4162},[4152,5423,4658],{"class":4158},[4152,5425,5426,5428,5430,5432,5434,5436,5438,5440,5443,5445],{"class":4154,"line":4737},[4152,5427,4664],{"class":4158},[4152,5429,3967],{"class":4162},[4152,5431,4166],{"class":4165},[4152,5433,4170],{"class":4169},[4152,5435,4174],{"class":4173},[4152,5437,4648],{"class":4181},[4152,5439,3609],{"class":4177},[4152,5441,5442],{"class":4181},"panel",[4152,5444,4209],{"class":4173},[4152,5446,4658],{"class":4158},[4152,5448,5449,5451,5453,5455,5457,5459,5461,5463,5466,5468,5470,5473,5475,5477],{"class":4154,"line":4745},[4152,5450,4875],{"class":4158},[4152,5452,4010],{"class":4162},[4152,5454,4166],{"class":4165},[4152,5456,4170],{"class":4169},[4152,5458,4174],{"class":4173},[4152,5460,4648],{"class":4181},[4152,5462,3609],{"class":4177},[4152,5464,5465],{"class":4181},"label",[4152,5467,4209],{"class":4173},[4152,5469,4684],{"class":4158},[4152,5471,5472],{"class":4169},"StyleSheet.flatten([...]) →",[4152,5474,4690],{"class":4158},[4152,5476,4010],{"class":4162},[4152,5478,4658],{"class":4158},[4152,5480,5481,5483,5485,5487,5489,5491,5493,5495,5497,5499,5501,5503,5506,5508,5511,5513,5515,5517,5520,5522,5525,5527,5529,5531,5533],{"class":4154,"line":4785},[4152,5482,4875],{"class":4158},[4152,5484,4010],{"class":4162},[4152,5486,4166],{"class":4165},[4152,5488,4170],{"class":4169},[4152,5490,4174],{"class":4173},[4152,5492,4648],{"class":4181},[4152,5494,3609],{"class":4177},[4152,5496,3533],{"class":4181},[4152,5498,4209],{"class":4173},[4152,5500,4684],{"class":4158},[4152,5502,4174],{"class":4173},[4152,5504,5505],{"class":4597},"JSON",[4152,5507,3609],{"class":4177},[4152,5509,5510],{"class":4581},"stringify",[4152,5512,4611],{"class":4177},[4152,5514,5410],{"class":4181},[4152,5516,3536],{"class":4177},[4152,5518,5519],{"class":4173},"null",[4152,5521,3536],{"class":4177},[4152,5523,5524],{"class":4185},"2",[4152,5526,3910],{"class":4177},[4152,5528,4209],{"class":4173},[4152,5530,4690],{"class":4158},[4152,5532,4010],{"class":4162},[4152,5534,4658],{"class":4158},[4152,5536,5537,5539,5541],{"class":4154,"line":4808},[4152,5538,4730],{"class":4158},[4152,5540,3967],{"class":4162},[4152,5542,4658],{"class":4158},[4152,5544,5545,5547,5549,5551,5553,5555,5557,5559,5561,5563],{"class":4154,"line":4822},[4152,5546,4664],{"class":4158},[4152,5548,4010],{"class":4162},[4152,5550,4166],{"class":4165},[4152,5552,4170],{"class":4169},[4152,5554,4174],{"class":4173},[4152,5556,4648],{"class":4181},[4152,5558,3609],{"class":4177},[4152,5560,4714],{"class":4181},[4152,5562,4209],{"class":4173},[4152,5564,4658],{"class":4158},[4152,5566,5567],{"class":4154,"line":4841},[4152,5568,5569],{"class":4169},"        fontSize: 22 (з emphasis), color: #2563EB (з останнього шару).\n",[4152,5571,5572,5574,5576],{"class":4154,"line":4858},[4152,5573,4730],{"class":4158},[4152,5575,4010],{"class":4162},[4152,5577,4658],{"class":4158},[4152,5579,5580,5582,5584],{"class":4154,"line":4866},[4152,5581,4933],{"class":4158},[4152,5583,3967],{"class":4162},[4152,5585,4658],{"class":4158},[4152,5587,5588],{"class":4154,"line":4872},[4152,5589,4943],{"class":4169},[4152,5591,5592],{"class":4154,"line":4921},[4152,5593,4782],{"class":4169},[4152,5595,5596],{"class":4154,"line":4930},[4152,5597,4566],{"emptyLinePlaceholder":4565},[4152,5599,5600,5602,5604,5606,5608,5610,5612],{"class":4154,"line":4940},[4152,5601,4959],{"class":4173},[4152,5603,4831],{"class":4597},[4152,5605,4964],{"class":4169},[4152,5607,3572],{"class":4181},[4152,5609,3609],{"class":4169},[4152,5611,4264],{"class":4581},[4152,5613,4973],{"class":4169},[4152,5615,5616,5618,5620,5622,5624,5626,5628,5630,5632,5634,5636,5638,5641,5643,5645,5648,5650],{"class":4154,"line":4946},[4152,5617,4979],{"class":4181},[4152,5619,4514],{"class":4169},[4152,5621,4182],{"class":4181},[4152,5623,4186],{"class":4185},[4152,5625,3536],{"class":4169},[4152,5627,4199],{"class":4181},[4152,5629,4203],{"class":4202},[4152,5631,3536],{"class":4169},[4152,5633,4191],{"class":4181},[4152,5635,5055],{"class":4185},[4152,5637,3536],{"class":4169},[4152,5639,5640],{"class":4181},"justifyContent:",[4152,5642,5022],{"class":4202},[4152,5644,3536],{"class":4169},[4152,5646,5647],{"class":4181},"gap:",[4152,5649,5131],{"class":4185},[4152,5651,5074],{"class":4169},[4152,5653,5654,5657,5659,5661,5663,5665,5667,5669],{"class":4154,"line":4951},[4152,5655,5656],{"class":4181},"  titleBase:",[4152,5658,4514],{"class":4169},[4152,5660,5052],{"class":4181},[4152,5662,4194],{"class":4185},[4152,5664,3536],{"class":4169},[4152,5666,5068],{"class":4181},[4152,5668,5094],{"class":4202},[4152,5670,5074],{"class":4169},[4152,5672,5673,5676,5678,5680,5683,5685,5687,5690],{"class":4154,"line":4956},[4152,5674,5675],{"class":4181},"  titleEmphasis:",[4152,5677,4514],{"class":4169},[4152,5679,5052],{"class":4181},[4152,5681,5682],{"class":4185}," 22",[4152,5684,3536],{"class":4169},[4152,5686,5060],{"class":4181},[4152,5688,5689],{"class":4202}," '800'",[4152,5691,5074],{"class":4169},[4152,5693,5694,5697],{"class":4154,"line":4976},[4152,5695,5696],{"class":4181},"  panel:",[4152,5698,4982],{"class":4169},[4152,5700,5701,5703,5705],{"class":4154,"line":4985},[4152,5702,4998],{"class":4181},[4152,5704,5202],{"class":4202},[4152,5706,4819],{"class":4169},[4152,5708,5709,5711,5713],{"class":4154,"line":4995},[4152,5710,5139],{"class":4181},[4152,5712,5033],{"class":4185},[4152,5714,4819],{"class":4169},[4152,5716,5717,5720,5722],{"class":4154,"line":5005},[4152,5718,5719],{"class":4181},"    borderWidth:",[4152,5721,4186],{"class":4185},[4152,5723,4819],{"class":4169},[4152,5725,5726,5729,5732],{"class":4154,"line":5016},[4152,5727,5728],{"class":4181},"    borderColor:",[4152,5730,5731],{"class":4202}," '#E2E8F0'",[4152,5733,4819],{"class":4169},[4152,5735,5736,5738,5740],{"class":4154,"line":5027},[4152,5737,5008],{"class":4181},[4152,5739,5033],{"class":4185},[4152,5741,4819],{"class":4169},[4152,5743,5744],{"class":4154,"line":5038},[4152,5745,5041],{"class":4169},[4152,5747,5748,5751,5753,5755,5757,5759,5761,5764,5766,5768,5770,5772,5775,5778],{"class":4154,"line":5044},[4152,5749,5750],{"class":4181},"  label:",[4152,5752,4514],{"class":4169},[4152,5754,5052],{"class":4181},[4152,5756,5033],{"class":4185},[4152,5758,3536],{"class":4169},[4152,5760,5060],{"class":4181},[4152,5762,5763],{"class":4202}," '600'",[4152,5765,3536],{"class":4169},[4152,5767,5068],{"class":4181},[4152,5769,5094],{"class":4202},[4152,5771,3536],{"class":4169},[4152,5773,5774],{"class":4181},"marginBottom:",[4152,5776,5777],{"class":4185}," 6",[4152,5779,5074],{"class":4169},[4152,5781,5782,5785,5787,5790,5793,5795,5797,5799,5801,5803,5805,5807,5809,5811],{"class":4154,"line":5077},[4152,5783,5784],{"class":4181},"  code:",[4152,5786,4514],{"class":4169},[4152,5788,5789],{"class":4181},"fontFamily:",[4152,5791,5792],{"class":4202}," 'monospace'",[4152,5794,3536],{"class":4169},[4152,5796,5052],{"class":4181},[4152,5798,5033],{"class":4185},[4152,5800,3536],{"class":4169},[4152,5802,5068],{"class":4181},[4152,5804,5071],{"class":4202},[4152,5806,3536],{"class":4169},[4152,5808,5099],{"class":4181},[4152,5810,5102],{"class":4185},[4152,5812,5074],{"class":4169},[4152,5814,5815,5817,5819,5821,5823,5825,5827,5829,5831,5833,5835],{"class":4154,"line":5107},[4152,5816,5080],{"class":4181},[4152,5818,4514],{"class":4169},[4152,5820,5052],{"class":4181},[4152,5822,5087],{"class":4185},[4152,5824,3536],{"class":4169},[4152,5826,5068],{"class":4181},[4152,5828,5094],{"class":4202},[4152,5830,3536],{"class":4169},[4152,5832,5099],{"class":4181},[4152,5834,5102],{"class":4185},[4152,5836,5074],{"class":4169},[4152,5838,5839],{"class":4154,"line":5115},[4152,5840,5222],{"class":4169},[3589,5842,5844,5845,5847,5848],{"id":5843},"демо-3-absolutefill-vs-absolutefillobject","Демо 3: ",[3533,5846,4449],{}," vs ",[3533,5849,5850],{},"absoluteFillObject",[3512,5852,5853,5854,5856,5857,5860,5861,4000,5864,5867],{},"Обидві картки тягнуть шар на весь батько. Зліва — ",[3533,5855,4416],{}," + другий стиль у масиві. Справа — один об’єкт через ",[3533,5858,5859],{},"...absoluteFillObject"," (зручно додати ",[3533,5862,5863],{},"backgroundColor",[3533,5865,5866],{},"zIndex"," «на місці»).",[4496,5869,5874],{"device":5870,"filename":5871,"title":5872,"height":5873},"android","AbsoluteFillCompare.tsx","absoluteFill vs absoluteFillObject",560,[4143,5875,5877],{"className":4145,"code":5876,"language":4147,"meta":4148,"style":4148},"import { View, Text, StyleSheet } from 'react-native';\n\nexport default function App() {\n  return (\n    \u003CView style={styles.screen}>\n      \u003CText style={styles.h}>absoluteFill\u003C\u002FText>\n      \u003CView style={styles.card}>\n        \u003CText style={styles.cardText}>Фон картки\u003C\u002FText>\n        \u003CView style={[StyleSheet.absoluteFill, styles.overlayA]}>\n          \u003CText style={styles.overlayText}>Fill\u003C\u002FText>\n        \u003C\u002FView>\n      \u003C\u002FView>\n\n      \u003CText style={styles.h}>absoluteFillObject\u003C\u002FText>\n      \u003CView style={styles.card}>\n        \u003CText style={styles.cardText}>Фон картки\u003C\u002FText>\n        \u003CView\n          style={{\n            ...StyleSheet.absoluteFillObject,\n            backgroundColor: 'rgba(37, 99, 235, 0.55)',\n            alignItems: 'center',\n            justifyContent: 'center',\n          }}\n        >\n          \u003CText style={styles.overlayText}>Object\u003C\u002FText>\n        \u003C\u002FView>\n      \u003C\u002FView>\n\n      \u003CText style={styles.hint}>\n        Обидва покривають батька. Object зручний, коли хочете один style-об’єкт\n        зі спред-оператором.\n      \u003C\u002FText>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, backgroundColor: '#F8FAFC', padding: 20, justifyContent: 'center', gap: 10 },\n  h: { fontSize: 14, fontWeight: '700', color: '#0f172a' },\n  card: {\n    height: 100,\n    borderRadius: 14,\n    backgroundColor: '#dbeafe',\n    alignItems: 'center',\n    justifyContent: 'center',\n    overflow: 'hidden',\n  },\n  cardText: { fontSize: 15, fontWeight: '600', color: '#1e3a8a' },\n  overlayA: {\n    backgroundColor: 'rgba(15, 23, 42, 0.55)',\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  overlayText: { color: '#fff', fontWeight: '800', fontSize: 16 },\n  hint: { fontSize: 13, color: '#64748b', lineHeight: 18, marginTop: 4 },\n});\n",[3533,5878,5879,5903,5907,5919,5925,5947,5978,6001,6033,6070,6103,6112,6120,6124,6154,6176,6206,6213,6225,6238,6248,6257,6266,6273,6278,6309,6317,6325,6329,6351,6356,6361,6369,6377,6381,6385,6389,6405,6442,6467,6474,6484,6492,6501,6509,6517,6527,6532,6560,6568,6578,6587,6596,6601,6627,6660],{"__ignoreMap":4148},[4152,5880,5881,5883,5885,5887,5889,5891,5893,5895,5897,5899,5901],{"class":4154,"line":4155},[4152,5882,4511],{"class":4510},[4152,5884,4514],{"class":4169},[4152,5886,3967],{"class":4181},[4152,5888,3536],{"class":4169},[4152,5890,4010],{"class":4181},[4152,5892,3536],{"class":4169},[4152,5894,3572],{"class":4181},[4152,5896,4520],{"class":4169},[4152,5898,4523],{"class":4510},[4152,5900,4557],{"class":4202},[4152,5902,4529],{"class":4169},[4152,5904,5905],{"class":4154,"line":4532},[4152,5906,4566],{"emptyLinePlaceholder":4565},[4152,5908,5909,5911,5913,5915,5917],{"class":4154,"line":4562},[4152,5910,4572],{"class":4510},[4152,5912,4575],{"class":4510},[4152,5914,4578],{"class":4173},[4152,5916,4582],{"class":4581},[4152,5918,4585],{"class":4169},[4152,5920,5921,5923],{"class":4154,"line":4569},[4152,5922,4628],{"class":4510},[4152,5924,4631],{"class":4169},[4152,5926,5927,5929,5931,5933,5935,5937,5939,5941,5943,5945],{"class":4154,"line":4588},[4152,5928,4637],{"class":4158},[4152,5930,3967],{"class":4162},[4152,5932,4166],{"class":4165},[4152,5934,4170],{"class":4169},[4152,5936,4174],{"class":4173},[4152,5938,4648],{"class":4181},[4152,5940,3609],{"class":4177},[4152,5942,4653],{"class":4181},[4152,5944,4209],{"class":4173},[4152,5946,4658],{"class":4158},[4152,5948,5949,5951,5953,5955,5957,5959,5961,5963,5966,5968,5970,5972,5974,5976],{"class":4154,"line":4620},[4152,5950,4664],{"class":4158},[4152,5952,4010],{"class":4162},[4152,5954,4166],{"class":4165},[4152,5956,4170],{"class":4169},[4152,5958,4174],{"class":4173},[4152,5960,4648],{"class":4181},[4152,5962,3609],{"class":4177},[4152,5964,5965],{"class":4181},"h",[4152,5967,4209],{"class":4173},[4152,5969,4684],{"class":4158},[4152,5971,4449],{"class":4169},[4152,5973,4690],{"class":4158},[4152,5975,4010],{"class":4162},[4152,5977,4658],{"class":4158},[4152,5979,5980,5982,5984,5986,5988,5990,5992,5994,5997,5999],{"class":4154,"line":4625},[4152,5981,4664],{"class":4158},[4152,5983,3967],{"class":4162},[4152,5985,4166],{"class":4165},[4152,5987,4170],{"class":4169},[4152,5989,4174],{"class":4173},[4152,5991,4648],{"class":4181},[4152,5993,3609],{"class":4177},[4152,5995,5996],{"class":4181},"card",[4152,5998,4209],{"class":4173},[4152,6000,4658],{"class":4158},[4152,6002,6003,6005,6007,6009,6011,6013,6015,6017,6020,6022,6024,6027,6029,6031],{"class":4154,"line":4634},[4152,6004,4875],{"class":4158},[4152,6006,4010],{"class":4162},[4152,6008,4166],{"class":4165},[4152,6010,4170],{"class":4169},[4152,6012,4174],{"class":4173},[4152,6014,4648],{"class":4181},[4152,6016,3609],{"class":4177},[4152,6018,6019],{"class":4181},"cardText",[4152,6021,4209],{"class":4173},[4152,6023,4684],{"class":4158},[4152,6025,6026],{"class":4169},"Фон картки",[4152,6028,4690],{"class":4158},[4152,6030,4010],{"class":4162},[4152,6032,4658],{"class":4158},[4152,6034,6035,6037,6039,6041,6043,6045,6048,6050,6052,6054,6056,6058,6060,6063,6066,6068],{"class":4154,"line":4661},[4152,6036,4875],{"class":4158},[4152,6038,3967],{"class":4162},[4152,6040,4166],{"class":4165},[4152,6042,4170],{"class":4169},[4152,6044,4174],{"class":4173},[4152,6046,6047],{"class":4177},"[",[4152,6049,3572],{"class":4181},[4152,6051,3609],{"class":4177},[4152,6053,4449],{"class":4181},[4152,6055,3536],{"class":4177},[4152,6057,4648],{"class":4181},[4152,6059,3609],{"class":4177},[4152,6061,6062],{"class":4181},"overlayA",[4152,6064,6065],{"class":4177},"]",[4152,6067,4209],{"class":4173},[4152,6069,4658],{"class":4158},[4152,6071,6072,6075,6077,6079,6081,6083,6085,6087,6090,6092,6094,6097,6099,6101],{"class":4154,"line":4697},[4152,6073,6074],{"class":4158},"          \u003C",[4152,6076,4010],{"class":4162},[4152,6078,4166],{"class":4165},[4152,6080,4170],{"class":4169},[4152,6082,4174],{"class":4173},[4152,6084,4648],{"class":4181},[4152,6086,3609],{"class":4177},[4152,6088,6089],{"class":4181},"overlayText",[4152,6091,4209],{"class":4173},[4152,6093,4684],{"class":4158},[4152,6095,6096],{"class":4169},"Fill",[4152,6098,4690],{"class":4158},[4152,6100,4010],{"class":4162},[4152,6102,4658],{"class":4158},[4152,6104,6105,6108,6110],{"class":4154,"line":4721},[4152,6106,6107],{"class":4158},"        \u003C\u002F",[4152,6109,3967],{"class":4162},[4152,6111,4658],{"class":4158},[4152,6113,6114,6116,6118],{"class":4154,"line":4727},[4152,6115,4730],{"class":4158},[4152,6117,3967],{"class":4162},[4152,6119,4658],{"class":4158},[4152,6121,6122],{"class":4154,"line":4737},[4152,6123,4566],{"emptyLinePlaceholder":4565},[4152,6125,6126,6128,6130,6132,6134,6136,6138,6140,6142,6144,6146,6148,6150,6152],{"class":4154,"line":4745},[4152,6127,4664],{"class":4158},[4152,6129,4010],{"class":4162},[4152,6131,4166],{"class":4165},[4152,6133,4170],{"class":4169},[4152,6135,4174],{"class":4173},[4152,6137,4648],{"class":4181},[4152,6139,3609],{"class":4177},[4152,6141,5965],{"class":4181},[4152,6143,4209],{"class":4173},[4152,6145,4684],{"class":4158},[4152,6147,5850],{"class":4169},[4152,6149,4690],{"class":4158},[4152,6151,4010],{"class":4162},[4152,6153,4658],{"class":4158},[4152,6155,6156,6158,6160,6162,6164,6166,6168,6170,6172,6174],{"class":4154,"line":4785},[4152,6157,4664],{"class":4158},[4152,6159,3967],{"class":4162},[4152,6161,4166],{"class":4165},[4152,6163,4170],{"class":4169},[4152,6165,4174],{"class":4173},[4152,6167,4648],{"class":4181},[4152,6169,3609],{"class":4177},[4152,6171,5996],{"class":4181},[4152,6173,4209],{"class":4173},[4152,6175,4658],{"class":4158},[4152,6177,6178,6180,6182,6184,6186,6188,6190,6192,6194,6196,6198,6200,6202,6204],{"class":4154,"line":4808},[4152,6179,4875],{"class":4158},[4152,6181,4010],{"class":4162},[4152,6183,4166],{"class":4165},[4152,6185,4170],{"class":4169},[4152,6187,4174],{"class":4173},[4152,6189,4648],{"class":4181},[4152,6191,3609],{"class":4177},[4152,6193,6019],{"class":4181},[4152,6195,4209],{"class":4173},[4152,6197,4684],{"class":4158},[4152,6199,6026],{"class":4169},[4152,6201,4690],{"class":4158},[4152,6203,4010],{"class":4162},[4152,6205,4658],{"class":4158},[4152,6207,6208,6210],{"class":4154,"line":4822},[4152,6209,4875],{"class":4158},[4152,6211,6212],{"class":4162},"View\n",[4152,6214,6215,6218,6220,6222],{"class":4154,"line":4841},[4152,6216,6217],{"class":4165},"          style",[4152,6219,4170],{"class":4169},[4152,6221,4174],{"class":4173},[4152,6223,6224],{"class":4177},"{\n",[4152,6226,6227,6230,6232,6234,6236],{"class":4154,"line":4858},[4152,6228,6229],{"class":4169},"            ...",[4152,6231,3572],{"class":4181},[4152,6233,3609],{"class":4177},[4152,6235,5850],{"class":4181},[4152,6237,4819],{"class":4177},[4152,6239,6240,6243,6246],{"class":4154,"line":4866},[4152,6241,6242],{"class":4181},"            backgroundColor:",[4152,6244,6245],{"class":4202}," 'rgba(37, 99, 235, 0.55)'",[4152,6247,4819],{"class":4177},[4152,6249,6250,6253,6255],{"class":4154,"line":4872},[4152,6251,6252],{"class":4181},"            alignItems:",[4152,6254,5022],{"class":4202},[4152,6256,4819],{"class":4177},[4152,6258,6259,6262,6264],{"class":4154,"line":4921},[4152,6260,6261],{"class":4181},"            justifyContent:",[4152,6263,5022],{"class":4202},[4152,6265,4819],{"class":4177},[4152,6267,6268,6271],{"class":4154,"line":4930},[4152,6269,6270],{"class":4177},"          }",[4152,6272,4782],{"class":4173},[4152,6274,6275],{"class":4154,"line":4940},[4152,6276,6277],{"class":4158},"        >\n",[4152,6279,6280,6282,6284,6286,6288,6290,6292,6294,6296,6298,6300,6303,6305,6307],{"class":4154,"line":4946},[4152,6281,6074],{"class":4158},[4152,6283,4010],{"class":4162},[4152,6285,4166],{"class":4165},[4152,6287,4170],{"class":4169},[4152,6289,4174],{"class":4173},[4152,6291,4648],{"class":4181},[4152,6293,3609],{"class":4177},[4152,6295,6089],{"class":4181},[4152,6297,4209],{"class":4173},[4152,6299,4684],{"class":4158},[4152,6301,6302],{"class":4169},"Object",[4152,6304,4690],{"class":4158},[4152,6306,4010],{"class":4162},[4152,6308,4658],{"class":4158},[4152,6310,6311,6313,6315],{"class":4154,"line":4951},[4152,6312,6107],{"class":4158},[4152,6314,3967],{"class":4162},[4152,6316,4658],{"class":4158},[4152,6318,6319,6321,6323],{"class":4154,"line":4956},[4152,6320,4730],{"class":4158},[4152,6322,3967],{"class":4162},[4152,6324,4658],{"class":4158},[4152,6326,6327],{"class":4154,"line":4976},[4152,6328,4566],{"emptyLinePlaceholder":4565},[4152,6330,6331,6333,6335,6337,6339,6341,6343,6345,6347,6349],{"class":4154,"line":4985},[4152,6332,4664],{"class":4158},[4152,6334,4010],{"class":4162},[4152,6336,4166],{"class":4165},[4152,6338,4170],{"class":4169},[4152,6340,4174],{"class":4173},[4152,6342,4648],{"class":4181},[4152,6344,3609],{"class":4177},[4152,6346,4714],{"class":4181},[4152,6348,4209],{"class":4173},[4152,6350,4658],{"class":4158},[4152,6352,6353],{"class":4154,"line":4995},[4152,6354,6355],{"class":4169},"        Обидва покривають батька. Object зручний, коли хочете один style-об’єкт\n",[4152,6357,6358],{"class":4154,"line":5005},[4152,6359,6360],{"class":4169},"        зі спред-оператором.\n",[4152,6362,6363,6365,6367],{"class":4154,"line":5016},[4152,6364,4730],{"class":4158},[4152,6366,4010],{"class":4162},[4152,6368,4658],{"class":4158},[4152,6370,6371,6373,6375],{"class":4154,"line":5027},[4152,6372,4933],{"class":4158},[4152,6374,3967],{"class":4162},[4152,6376,4658],{"class":4158},[4152,6378,6379],{"class":4154,"line":5038},[4152,6380,4943],{"class":4169},[4152,6382,6383],{"class":4154,"line":5044},[4152,6384,4782],{"class":4169},[4152,6386,6387],{"class":4154,"line":5077},[4152,6388,4566],{"emptyLinePlaceholder":4565},[4152,6390,6391,6393,6395,6397,6399,6401,6403],{"class":4154,"line":5107},[4152,6392,4959],{"class":4173},[4152,6394,4831],{"class":4597},[4152,6396,4964],{"class":4169},[4152,6398,3572],{"class":4181},[4152,6400,3609],{"class":4169},[4152,6402,4264],{"class":4581},[4152,6404,4973],{"class":4169},[4152,6406,6407,6409,6411,6413,6415,6417,6419,6421,6423,6425,6427,6429,6431,6433,6435,6437,6440],{"class":4154,"line":5115},[4152,6408,4979],{"class":4181},[4152,6410,4514],{"class":4169},[4152,6412,4182],{"class":4181},[4152,6414,4186],{"class":4185},[4152,6416,3536],{"class":4169},[4152,6418,4199],{"class":4181},[4152,6420,4203],{"class":4202},[4152,6422,3536],{"class":4169},[4152,6424,4191],{"class":4181},[4152,6426,5055],{"class":4185},[4152,6428,3536],{"class":4169},[4152,6430,5640],{"class":4181},[4152,6432,5022],{"class":4202},[4152,6434,3536],{"class":4169},[4152,6436,5647],{"class":4181},[4152,6438,6439],{"class":4185}," 10",[4152,6441,5074],{"class":4169},[4152,6443,6444,6447,6449,6451,6453,6455,6457,6459,6461,6463,6465],{"class":4154,"line":5125},[4152,6445,6446],{"class":4181},"  h:",[4152,6448,4514],{"class":4169},[4152,6450,5052],{"class":4181},[4152,6452,5131],{"class":4185},[4152,6454,3536],{"class":4169},[4152,6456,5060],{"class":4181},[4152,6458,5063],{"class":4202},[4152,6460,3536],{"class":4169},[4152,6462,5068],{"class":4181},[4152,6464,5071],{"class":4202},[4152,6466,5074],{"class":4169},[4152,6468,6469,6472],{"class":4154,"line":5136},[4152,6470,6471],{"class":4181},"  card:",[4152,6473,4982],{"class":4169},[4152,6475,6476,6479,6482],{"class":4154,"line":5146},[4152,6477,6478],{"class":4181},"    height:",[4152,6480,6481],{"class":4185}," 100",[4152,6483,4819],{"class":4169},[4152,6485,6486,6488,6490],{"class":4154,"line":5156},[4152,6487,5139],{"class":4181},[4152,6489,5131],{"class":4185},[4152,6491,4819],{"class":4169},[4152,6493,6494,6496,6499],{"class":4154,"line":5161},[4152,6495,4998],{"class":4181},[4152,6497,6498],{"class":4202}," '#dbeafe'",[4152,6500,4819],{"class":4169},[4152,6502,6503,6505,6507],{"class":4154,"line":5176},[4152,6504,5149],{"class":4181},[4152,6506,5022],{"class":4202},[4152,6508,4819],{"class":4169},[4152,6510,6511,6513,6515],{"class":4154,"line":5192},[4152,6512,5019],{"class":4181},[4152,6514,5022],{"class":4202},[4152,6516,4819],{"class":4169},[4152,6518,6519,6522,6525],{"class":4154,"line":5219},[4152,6520,6521],{"class":4181},"    overflow:",[4152,6523,6524],{"class":4202}," 'hidden'",[4152,6526,4819],{"class":4169},[4152,6528,6530],{"class":4154,"line":6529},47,[4152,6531,5041],{"class":4169},[4152,6533,6535,6538,6540,6542,6545,6547,6549,6551,6553,6555,6558],{"class":4154,"line":6534},48,[4152,6536,6537],{"class":4181},"  cardText:",[4152,6539,4514],{"class":4169},[4152,6541,5052],{"class":4181},[4152,6543,6544],{"class":4185}," 15",[4152,6546,3536],{"class":4169},[4152,6548,5060],{"class":4181},[4152,6550,5763],{"class":4202},[4152,6552,3536],{"class":4169},[4152,6554,5068],{"class":4181},[4152,6556,6557],{"class":4202}," '#1e3a8a'",[4152,6559,5074],{"class":4169},[4152,6561,6563,6566],{"class":4154,"line":6562},49,[4152,6564,6565],{"class":4181},"  overlayA:",[4152,6567,4982],{"class":4169},[4152,6569,6571,6573,6576],{"class":4154,"line":6570},50,[4152,6572,4998],{"class":4181},[4152,6574,6575],{"class":4202}," 'rgba(15, 23, 42, 0.55)'",[4152,6577,4819],{"class":4169},[4152,6579,6581,6583,6585],{"class":4154,"line":6580},51,[4152,6582,5149],{"class":4181},[4152,6584,5022],{"class":4202},[4152,6586,4819],{"class":4169},[4152,6588,6590,6592,6594],{"class":4154,"line":6589},52,[4152,6591,5019],{"class":4181},[4152,6593,5022],{"class":4202},[4152,6595,4819],{"class":4169},[4152,6597,6599],{"class":4154,"line":6598},53,[4152,6600,5041],{"class":4169},[4152,6602,6604,6607,6609,6611,6613,6615,6617,6619,6621,6623,6625],{"class":4154,"line":6603},54,[4152,6605,6606],{"class":4181},"  overlayText:",[4152,6608,4514],{"class":4169},[4152,6610,5068],{"class":4181},[4152,6612,5202],{"class":4202},[4152,6614,3536],{"class":4169},[4152,6616,5060],{"class":4181},[4152,6618,5689],{"class":4202},[4152,6620,3536],{"class":4169},[4152,6622,5052],{"class":4181},[4152,6624,4194],{"class":4185},[4152,6626,5074],{"class":4169},[4152,6628,6630,6632,6634,6636,6638,6640,6642,6644,6646,6648,6650,6652,6655,6658],{"class":4154,"line":6629},55,[4152,6631,5080],{"class":4181},[4152,6633,4514],{"class":4169},[4152,6635,5052],{"class":4181},[4152,6637,5087],{"class":4185},[4152,6639,3536],{"class":4169},[4152,6641,5068],{"class":4181},[4152,6643,5094],{"class":4202},[4152,6645,3536],{"class":4169},[4152,6647,5099],{"class":4181},[4152,6649,5102],{"class":4185},[4152,6651,3536],{"class":4169},[4152,6653,6654],{"class":4181},"marginTop:",[4152,6656,6657],{"class":4185}," 4",[4152,6659,5074],{"class":4169},[4152,6661,6663],{"class":4154,"line":6662},56,[4152,6664,5222],{"class":4169},[3589,6666,6668,6669,5847,6672],{"id":6667},"демо-4-hairlinewidth-vs-1","Демо 4: ",[3533,6670,6671],{},"hairlineWidth",[3533,6673,4473],{},[3512,6675,6676,6677,6680,6681,6683],{},"Два рядки списку: зверху розділювач ",[3525,6678,6679],{},"hairline",", знизу — звичайна ",[3533,6682,4473],{},". На Retina\u002Fвисокій щільності hairline виглядає тоншою й «системнішою».",[4496,6685,6688],{"device":4498,"filename":6686,"title":6687},"HairlineDemo.tsx","hairlineWidth vs 1",[4143,6689,6691],{"className":4145,"code":6690,"language":4147,"meta":4148,"style":4148},"import { View, Text, StyleSheet } from 'react-native';\n\nexport default function App() {\n  return (\n    \u003CView style={styles.screen}>\n      \u003CText style={styles.title}>Розділювачі\u003C\u002FText>\n\n      \u003CView style={styles.list}>\n        \u003CText style={styles.row}>Рядок A\u003C\u002FText>\n        \u003CView style={styles.hairline} \u002F>\n        \u003CText style={styles.row}>Рядок B (після hairline)\u003C\u002FText>\n        \u003CView style={styles.thick} \u002F>\n        \u003CText style={styles.row}>Рядок C (після border 1)\u003C\u002FText>\n      \u003C\u002FView>\n\n      \u003CText style={styles.meta}>\n        hairlineWidth = {String(StyleSheet.hairlineWidth)} (залежить від екрана)\n      \u003C\u002FText>\n      \u003CText style={styles.hint}>\n        Верхня лінія — StyleSheet.hairlineWidth. Нижня — borderWidth: 1.\n      \u003C\u002FText>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, backgroundColor: '#F8FAFC', padding: 24, justifyContent: 'center', gap: 14 },\n  title: { fontSize: 20, fontWeight: '700', color: '#0f172a' },\n  list: {\n    backgroundColor: '#fff',\n    borderRadius: 12,\n    borderWidth: 1,\n    borderColor: '#E2E8F0',\n    overflow: 'hidden',\n  },\n  row: { paddingHorizontal: 16, paddingVertical: 14, fontSize: 16, color: '#0f172a' },\n  hairline: {\n    height: StyleSheet.hairlineWidth,\n    backgroundColor: '#94a3b8',\n    marginHorizontal: 16,\n  },\n  thick: {\n    height: 1,\n    backgroundColor: '#94a3b8',\n    marginHorizontal: 16,\n  },\n  meta: { fontSize: 13, fontWeight: '600', color: '#2563EB' },\n  hint: { fontSize: 13, color: '#64748b', lineHeight: 18 },\n});\n",[3533,6692,6693,6717,6721,6733,6739,6761,6792,6796,6819,6851,6873,6904,6927,6958,6966,6970,6993,7018,7026,7048,7053,7061,7069,7073,7077,7081,7097,7133,7157,7164,7172,7180,7188,7196,7204,7208,7241,7248,7261,7269,7278,7282,7289,7297,7305,7313,7317,7342,7366],{"__ignoreMap":4148},[4152,6694,6695,6697,6699,6701,6703,6705,6707,6709,6711,6713,6715],{"class":4154,"line":4155},[4152,6696,4511],{"class":4510},[4152,6698,4514],{"class":4169},[4152,6700,3967],{"class":4181},[4152,6702,3536],{"class":4169},[4152,6704,4010],{"class":4181},[4152,6706,3536],{"class":4169},[4152,6708,3572],{"class":4181},[4152,6710,4520],{"class":4169},[4152,6712,4523],{"class":4510},[4152,6714,4557],{"class":4202},[4152,6716,4529],{"class":4169},[4152,6718,6719],{"class":4154,"line":4532},[4152,6720,4566],{"emptyLinePlaceholder":4565},[4152,6722,6723,6725,6727,6729,6731],{"class":4154,"line":4562},[4152,6724,4572],{"class":4510},[4152,6726,4575],{"class":4510},[4152,6728,4578],{"class":4173},[4152,6730,4582],{"class":4581},[4152,6732,4585],{"class":4169},[4152,6734,6735,6737],{"class":4154,"line":4569},[4152,6736,4628],{"class":4510},[4152,6738,4631],{"class":4169},[4152,6740,6741,6743,6745,6747,6749,6751,6753,6755,6757,6759],{"class":4154,"line":4588},[4152,6742,4637],{"class":4158},[4152,6744,3967],{"class":4162},[4152,6746,4166],{"class":4165},[4152,6748,4170],{"class":4169},[4152,6750,4174],{"class":4173},[4152,6752,4648],{"class":4181},[4152,6754,3609],{"class":4177},[4152,6756,4653],{"class":4181},[4152,6758,4209],{"class":4173},[4152,6760,4658],{"class":4158},[4152,6762,6763,6765,6767,6769,6771,6773,6775,6777,6779,6781,6783,6786,6788,6790],{"class":4154,"line":4620},[4152,6764,4664],{"class":4158},[4152,6766,4010],{"class":4162},[4152,6768,4166],{"class":4165},[4152,6770,4170],{"class":4169},[4152,6772,4174],{"class":4173},[4152,6774,4648],{"class":4181},[4152,6776,3609],{"class":4177},[4152,6778,4679],{"class":4181},[4152,6780,4209],{"class":4173},[4152,6782,4684],{"class":4158},[4152,6784,6785],{"class":4169},"Розділювачі",[4152,6787,4690],{"class":4158},[4152,6789,4010],{"class":4162},[4152,6791,4658],{"class":4158},[4152,6793,6794],{"class":4154,"line":4625},[4152,6795,4566],{"emptyLinePlaceholder":4565},[4152,6797,6798,6800,6802,6804,6806,6808,6810,6812,6815,6817],{"class":4154,"line":4634},[4152,6799,4664],{"class":4158},[4152,6801,3967],{"class":4162},[4152,6803,4166],{"class":4165},[4152,6805,4170],{"class":4169},[4152,6807,4174],{"class":4173},[4152,6809,4648],{"class":4181},[4152,6811,3609],{"class":4177},[4152,6813,6814],{"class":4181},"list",[4152,6816,4209],{"class":4173},[4152,6818,4658],{"class":4158},[4152,6820,6821,6823,6825,6827,6829,6831,6833,6835,6838,6840,6842,6845,6847,6849],{"class":4154,"line":4661},[4152,6822,4875],{"class":4158},[4152,6824,4010],{"class":4162},[4152,6826,4166],{"class":4165},[4152,6828,4170],{"class":4169},[4152,6830,4174],{"class":4173},[4152,6832,4648],{"class":4181},[4152,6834,3609],{"class":4177},[4152,6836,6837],{"class":4181},"row",[4152,6839,4209],{"class":4173},[4152,6841,4684],{"class":4158},[4152,6843,6844],{"class":4169},"Рядок A",[4152,6846,4690],{"class":4158},[4152,6848,4010],{"class":4162},[4152,6850,4658],{"class":4158},[4152,6852,6853,6855,6857,6859,6861,6863,6865,6867,6869,6871],{"class":4154,"line":4697},[4152,6854,4875],{"class":4158},[4152,6856,3967],{"class":4162},[4152,6858,4166],{"class":4165},[4152,6860,4170],{"class":4169},[4152,6862,4174],{"class":4173},[4152,6864,4648],{"class":4181},[4152,6866,3609],{"class":4177},[4152,6868,6679],{"class":4181},[4152,6870,4209],{"class":4173},[4152,6872,4212],{"class":4158},[4152,6874,6875,6877,6879,6881,6883,6885,6887,6889,6891,6893,6895,6898,6900,6902],{"class":4154,"line":4721},[4152,6876,4875],{"class":4158},[4152,6878,4010],{"class":4162},[4152,6880,4166],{"class":4165},[4152,6882,4170],{"class":4169},[4152,6884,4174],{"class":4173},[4152,6886,4648],{"class":4181},[4152,6888,3609],{"class":4177},[4152,6890,6837],{"class":4181},[4152,6892,4209],{"class":4173},[4152,6894,4684],{"class":4158},[4152,6896,6897],{"class":4169},"Рядок B (після hairline)",[4152,6899,4690],{"class":4158},[4152,6901,4010],{"class":4162},[4152,6903,4658],{"class":4158},[4152,6905,6906,6908,6910,6912,6914,6916,6918,6920,6923,6925],{"class":4154,"line":4727},[4152,6907,4875],{"class":4158},[4152,6909,3967],{"class":4162},[4152,6911,4166],{"class":4165},[4152,6913,4170],{"class":4169},[4152,6915,4174],{"class":4173},[4152,6917,4648],{"class":4181},[4152,6919,3609],{"class":4177},[4152,6921,6922],{"class":4181},"thick",[4152,6924,4209],{"class":4173},[4152,6926,4212],{"class":4158},[4152,6928,6929,6931,6933,6935,6937,6939,6941,6943,6945,6947,6949,6952,6954,6956],{"class":4154,"line":4737},[4152,6930,4875],{"class":4158},[4152,6932,4010],{"class":4162},[4152,6934,4166],{"class":4165},[4152,6936,4170],{"class":4169},[4152,6938,4174],{"class":4173},[4152,6940,4648],{"class":4181},[4152,6942,3609],{"class":4177},[4152,6944,6837],{"class":4181},[4152,6946,4209],{"class":4173},[4152,6948,4684],{"class":4158},[4152,6950,6951],{"class":4169},"Рядок C (після border 1)",[4152,6953,4690],{"class":4158},[4152,6955,4010],{"class":4162},[4152,6957,4658],{"class":4158},[4152,6959,6960,6962,6964],{"class":4154,"line":4745},[4152,6961,4730],{"class":4158},[4152,6963,3967],{"class":4162},[4152,6965,4658],{"class":4158},[4152,6967,6968],{"class":4154,"line":4785},[4152,6969,4566],{"emptyLinePlaceholder":4565},[4152,6971,6972,6974,6976,6978,6980,6982,6984,6986,6989,6991],{"class":4154,"line":4808},[4152,6973,4664],{"class":4158},[4152,6975,4010],{"class":4162},[4152,6977,4166],{"class":4165},[4152,6979,4170],{"class":4169},[4152,6981,4174],{"class":4173},[4152,6983,4648],{"class":4181},[4152,6985,3609],{"class":4177},[4152,6987,6988],{"class":4181},"meta",[4152,6990,4209],{"class":4173},[4152,6992,4658],{"class":4158},[4152,6994,6995,6998,7000,7003,7005,7007,7009,7011,7013,7015],{"class":4154,"line":4822},[4152,6996,6997],{"class":4169},"        hairlineWidth = ",[4152,6999,4174],{"class":4173},[4152,7001,7002],{"class":4581},"String",[4152,7004,4611],{"class":4177},[4152,7006,3572],{"class":4181},[4152,7008,3609],{"class":4177},[4152,7010,6671],{"class":4181},[4152,7012,3910],{"class":4177},[4152,7014,4209],{"class":4173},[4152,7016,7017],{"class":4169}," (залежить від екрана)\n",[4152,7019,7020,7022,7024],{"class":4154,"line":4841},[4152,7021,4730],{"class":4158},[4152,7023,4010],{"class":4162},[4152,7025,4658],{"class":4158},[4152,7027,7028,7030,7032,7034,7036,7038,7040,7042,7044,7046],{"class":4154,"line":4858},[4152,7029,4664],{"class":4158},[4152,7031,4010],{"class":4162},[4152,7033,4166],{"class":4165},[4152,7035,4170],{"class":4169},[4152,7037,4174],{"class":4173},[4152,7039,4648],{"class":4181},[4152,7041,3609],{"class":4177},[4152,7043,4714],{"class":4181},[4152,7045,4209],{"class":4173},[4152,7047,4658],{"class":4158},[4152,7049,7050],{"class":4154,"line":4866},[4152,7051,7052],{"class":4169},"        Верхня лінія — StyleSheet.hairlineWidth. Нижня — borderWidth: 1.\n",[4152,7054,7055,7057,7059],{"class":4154,"line":4872},[4152,7056,4730],{"class":4158},[4152,7058,4010],{"class":4162},[4152,7060,4658],{"class":4158},[4152,7062,7063,7065,7067],{"class":4154,"line":4921},[4152,7064,4933],{"class":4158},[4152,7066,3967],{"class":4162},[4152,7068,4658],{"class":4158},[4152,7070,7071],{"class":4154,"line":4930},[4152,7072,4943],{"class":4169},[4152,7074,7075],{"class":4154,"line":4940},[4152,7076,4782],{"class":4169},[4152,7078,7079],{"class":4154,"line":4946},[4152,7080,4566],{"emptyLinePlaceholder":4565},[4152,7082,7083,7085,7087,7089,7091,7093,7095],{"class":4154,"line":4951},[4152,7084,4959],{"class":4173},[4152,7086,4831],{"class":4597},[4152,7088,4964],{"class":4169},[4152,7090,3572],{"class":4181},[4152,7092,3609],{"class":4169},[4152,7094,4264],{"class":4581},[4152,7096,4973],{"class":4169},[4152,7098,7099,7101,7103,7105,7107,7109,7111,7113,7115,7117,7119,7121,7123,7125,7127,7129,7131],{"class":4154,"line":4956},[4152,7100,4979],{"class":4181},[4152,7102,4514],{"class":4169},[4152,7104,4182],{"class":4181},[4152,7106,4186],{"class":4185},[4152,7108,3536],{"class":4169},[4152,7110,4199],{"class":4181},[4152,7112,4203],{"class":4202},[4152,7114,3536],{"class":4169},[4152,7116,4191],{"class":4181},[4152,7118,5011],{"class":4185},[4152,7120,3536],{"class":4169},[4152,7122,5640],{"class":4181},[4152,7124,5022],{"class":4202},[4152,7126,3536],{"class":4169},[4152,7128,5647],{"class":4181},[4152,7130,5131],{"class":4185},[4152,7132,5074],{"class":4169},[4152,7134,7135,7137,7139,7141,7143,7145,7147,7149,7151,7153,7155],{"class":4154,"line":4976},[4152,7136,5047],{"class":4181},[4152,7138,4514],{"class":4169},[4152,7140,5052],{"class":4181},[4152,7142,5055],{"class":4185},[4152,7144,3536],{"class":4169},[4152,7146,5060],{"class":4181},[4152,7148,5063],{"class":4202},[4152,7150,3536],{"class":4169},[4152,7152,5068],{"class":4181},[4152,7154,5071],{"class":4202},[4152,7156,5074],{"class":4169},[4152,7158,7159,7162],{"class":4154,"line":4985},[4152,7160,7161],{"class":4181},"  list:",[4152,7163,4982],{"class":4169},[4152,7165,7166,7168,7170],{"class":4154,"line":4995},[4152,7167,4998],{"class":4181},[4152,7169,5202],{"class":4202},[4152,7171,4819],{"class":4169},[4152,7173,7174,7176,7178],{"class":4154,"line":5005},[4152,7175,5139],{"class":4181},[4152,7177,5033],{"class":4185},[4152,7179,4819],{"class":4169},[4152,7181,7182,7184,7186],{"class":4154,"line":5016},[4152,7183,5719],{"class":4181},[4152,7185,4186],{"class":4185},[4152,7187,4819],{"class":4169},[4152,7189,7190,7192,7194],{"class":4154,"line":5027},[4152,7191,5728],{"class":4181},[4152,7193,5731],{"class":4202},[4152,7195,4819],{"class":4169},[4152,7197,7198,7200,7202],{"class":4154,"line":5038},[4152,7199,6521],{"class":4181},[4152,7201,6524],{"class":4202},[4152,7203,4819],{"class":4169},[4152,7205,7206],{"class":4154,"line":5044},[4152,7207,5041],{"class":4169},[4152,7209,7210,7213,7215,7218,7220,7222,7225,7227,7229,7231,7233,7235,7237,7239],{"class":4154,"line":5077},[4152,7211,7212],{"class":4181},"  row:",[4152,7214,4514],{"class":4169},[4152,7216,7217],{"class":4181},"paddingHorizontal:",[4152,7219,4194],{"class":4185},[4152,7221,3536],{"class":4169},[4152,7223,7224],{"class":4181},"paddingVertical:",[4152,7226,5131],{"class":4185},[4152,7228,3536],{"class":4169},[4152,7230,5052],{"class":4181},[4152,7232,4194],{"class":4185},[4152,7234,3536],{"class":4169},[4152,7236,5068],{"class":4181},[4152,7238,5071],{"class":4202},[4152,7240,5074],{"class":4169},[4152,7242,7243,7246],{"class":4154,"line":5107},[4152,7244,7245],{"class":4181},"  hairline:",[4152,7247,4982],{"class":4169},[4152,7249,7250,7252,7255,7257,7259],{"class":4154,"line":5115},[4152,7251,6478],{"class":4181},[4152,7253,7254],{"class":4181}," StyleSheet",[4152,7256,3609],{"class":4169},[4152,7258,6671],{"class":4181},[4152,7260,4819],{"class":4169},[4152,7262,7263,7265,7267],{"class":4154,"line":5125},[4152,7264,4998],{"class":4181},[4152,7266,5120],{"class":4202},[4152,7268,4819],{"class":4169},[4152,7270,7271,7274,7276],{"class":4154,"line":5136},[4152,7272,7273],{"class":4181},"    marginHorizontal:",[4152,7275,4194],{"class":4185},[4152,7277,4819],{"class":4169},[4152,7279,7280],{"class":4154,"line":5146},[4152,7281,5041],{"class":4169},[4152,7283,7284,7287],{"class":4154,"line":5156},[4152,7285,7286],{"class":4181},"  thick:",[4152,7288,4982],{"class":4169},[4152,7290,7291,7293,7295],{"class":4154,"line":5161},[4152,7292,6478],{"class":4181},[4152,7294,4186],{"class":4185},[4152,7296,4819],{"class":4169},[4152,7298,7299,7301,7303],{"class":4154,"line":5176},[4152,7300,4998],{"class":4181},[4152,7302,5120],{"class":4202},[4152,7304,4819],{"class":4169},[4152,7306,7307,7309,7311],{"class":4154,"line":5192},[4152,7308,7273],{"class":4181},[4152,7310,4194],{"class":4185},[4152,7312,4819],{"class":4169},[4152,7314,7315],{"class":4154,"line":5219},[4152,7316,5041],{"class":4169},[4152,7318,7319,7322,7324,7326,7328,7330,7332,7334,7336,7338,7340],{"class":4154,"line":6529},[4152,7320,7321],{"class":4181},"  meta:",[4152,7323,4514],{"class":4169},[4152,7325,5052],{"class":4181},[4152,7327,5087],{"class":4185},[4152,7329,3536],{"class":4169},[4152,7331,5060],{"class":4181},[4152,7333,5763],{"class":4202},[4152,7335,3536],{"class":4169},[4152,7337,5068],{"class":4181},[4152,7339,5171],{"class":4202},[4152,7341,5074],{"class":4169},[4152,7343,7344,7346,7348,7350,7352,7354,7356,7358,7360,7362,7364],{"class":4154,"line":6534},[4152,7345,5080],{"class":4181},[4152,7347,4514],{"class":4169},[4152,7349,5052],{"class":4181},[4152,7351,5087],{"class":4185},[4152,7353,3536],{"class":4169},[4152,7355,5068],{"class":4181},[4152,7357,5094],{"class":4202},[4152,7359,3536],{"class":4169},[4152,7361,5099],{"class":4181},[4152,7363,5102],{"class":4185},[4152,7365,5074],{"class":4169},[4152,7367,7368],{"class":4154,"line":6562},[4152,7369,5222],{"class":4169},[3589,7371,7373,7374,3627,7376,7378,7379,7378,7381,7378,7383,7378,7385,3910],{"id":7372},"демо-5-усе-разом-create-flatten-absolutefill-absolutefillobject-hairlinewidth","Демо 5: ",[3525,7375,4348],{},[3533,7377,4264],{}," · ",[3533,7380,5229],{},[3533,7382,4449],{},[3533,7384,5850],{},[3533,7386,6671],{},[3512,7388,7389,7390,7392,7393,7395,7396,7398,7399,7401],{},"Один екран-«візитка»: геометрія з ",[3533,7391,4264],{},", тонкі лінії hairline, підсумок ",[3533,7394,5229],{}," у підписі, кнопка відкриває оверлей через ",[3533,7397,4449],{},", бейдж «PRO» — через ",[3533,7400,5850],{}," у куті.",[4496,7403,7407],{"device":4498,"filename":7404,"title":7405,"height":7406},"StyleSheetAllApi.tsx","StyleSheet API · усе разом",700,[4143,7408,7410],{"className":4145,"code":7409,"language":4147,"meta":4148,"style":4148},"import { useState } from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\n\nexport default function App() {\n  const [locked, setLocked] = useState(false);\n\n  const titleFlat = StyleSheet.flatten([\n    styles.titleBase,\n    styles.titleStrong,\n    { color: '#0f172a' },\n  ]);\n\n  return (\n    \u003CView style={styles.screen}>\n      \u003CText style={titleFlat}>StyleSheet · all-in-one\u003C\u002FText>\n      \u003CText style={styles.sub}>\n        flatten title → fontSize {String((titleFlat as { fontSize?: number }).fontSize)}\n      \u003C\u002FText>\n\n      \u003CView style={styles.card}>\n        {\u002F* absoluteFillObject: кутовий бейдж *\u002F}\n        \u003CView\n          style={{\n            ...StyleSheet.absoluteFillObject,\n            top: 10,\n            left: undefined,\n            right: 10,\n            bottom: undefined,\n            width: 44,\n            height: 22,\n            borderRadius: 6,\n            backgroundColor: '#2563EB',\n            alignItems: 'center',\n            justifyContent: 'center',\n          }}\n        >\n          \u003CText style={styles.badgeText}>PRO\u003C\u002FText>\n        \u003C\u002FView>\n\n        \u003CText style={styles.name}>Карпати 2026\u003C\u002FText>\n        \u003CText style={styles.desc}>create тримає картку; hairline — розділювач.\u003C\u002FText>\n\n        \u003CView style={styles.hairline} \u002F>\n\n        \u003CText style={styles.meta}>12–18 червня · 6 днів\u003C\u002FText>\n\n        {\u002F* absoluteFill: затемнення поверх картки *\u002F}\n        {locked && (\n          \u003CView style={[StyleSheet.absoluteFill, styles.lockOverlay]}>\n            \u003CText style={styles.lockText}>Заблоковано\u003C\u002FText>\n          \u003C\u002FView>\n        )}\n      \u003C\u002FView>\n\n      \u003CPressable\n        onPress={() => setLocked((v) => !v)}\n        style={({ pressed }) => [\n          styles.btn,\n          locked && styles.btnOn,\n          pressed && styles.btnPressed,\n        ]}\n      >\n        \u003CText style={styles.btnText}>\n          {locked ? 'Зняти оверлей (absoluteFill)' : 'Накрити absoluteFill'}\n        \u003C\u002FText>\n      \u003C\u002FPressable>\n\n      \u003CText style={styles.hint}>\n        create · flatten · absoluteFill · absoluteFillObject · hairlineWidth\n      \u003C\u002FText>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: {\n    flex: 1,\n    backgroundColor: '#F8FAFC',\n    padding: 20,\n    justifyContent: 'center',\n    gap: 12,\n  },\n  titleBase: { fontSize: 16 },\n  titleStrong: { fontSize: 20, fontWeight: '800' },\n  sub: { fontSize: 12, color: '#64748b', marginTop: -4 },\n  card: {\n    backgroundColor: '#fff',\n    borderRadius: 16,\n    borderWidth: 1,\n    borderColor: '#E2E8F0',\n    padding: 16,\n    minHeight: 150,\n    overflow: 'hidden',\n  },\n  badgeText: { color: '#fff', fontSize: 11, fontWeight: '800' },\n  name: { fontSize: 18, fontWeight: '700', color: '#0f172a', marginTop: 4 },\n  desc: { fontSize: 14, color: '#64748b', marginTop: 6, lineHeight: 20 },\n  hairline: {\n    height: StyleSheet.hairlineWidth,\n    backgroundColor: '#cbd5e1',\n    marginVertical: 12,\n  },\n  meta: { fontSize: 13, color: '#64748b' },\n  lockOverlay: {\n    backgroundColor: 'rgba(15, 23, 42, 0.62)',\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  lockText: { color: '#fff', fontWeight: '800', fontSize: 16 },\n  btn: {\n    backgroundColor: '#94a3b8',\n    paddingVertical: 14,\n    borderRadius: 12,\n    alignItems: 'center',\n  },\n  btnOn: { backgroundColor: '#2563EB' },\n  btnPressed: { opacity: 0.85 },\n  btnText: { color: '#fff', fontWeight: '700', fontSize: 14 },\n  hint: { fontSize: 12, color: '#94a3b8', textAlign: 'center' },\n});\n",[3533,7411,7412,7428,7456,7460,7472,7496,7500,7517,7527,7538,7548,7552,7556,7562,7584,7612,7635,7670,7678,7682,7704,7714,7720,7730,7742,7751,7761,7770,7779,7789,7798,7807,7815,7823,7831,7837,7841,7873,7881,7885,7917,7949,7953,7975,7979,8010,8014,8023,8033,8068,8101,8110,8117,8125,8129,8135,8166,8185,8196,8212,8227,8234,8239,8262,8282,8291,8300,8305,8328,8334,8343,8352,8357,8362,8367,8384,8391,8400,8409,8418,8427,8436,8441,8454,8474,8504,8511,8520,8529,8538,8547,8556,8567,8576,8581,8608,8640,8672,8679,8692,8702,8712,8717,8736,8744,8754,8763,8772,8777,8803,8810,8819,8828,8837,8846,8851,8864,8877,8902,8928],{"__ignoreMap":4148},[4152,7413,7414,7416,7418,7420,7422,7424,7426],{"class":4154,"line":4155},[4152,7415,4511],{"class":4510},[4152,7417,4514],{"class":4169},[4152,7419,4517],{"class":4181},[4152,7421,4520],{"class":4169},[4152,7423,4523],{"class":4510},[4152,7425,4526],{"class":4202},[4152,7427,4529],{"class":4169},[4152,7429,7430,7432,7434,7436,7438,7440,7442,7444,7446,7448,7450,7452,7454],{"class":4154,"line":4532},[4152,7431,4511],{"class":4510},[4152,7433,4514],{"class":4169},[4152,7435,3967],{"class":4181},[4152,7437,3536],{"class":4169},[4152,7439,4010],{"class":4181},[4152,7441,3536],{"class":4169},[4152,7443,4493],{"class":4181},[4152,7445,3536],{"class":4169},[4152,7447,3572],{"class":4181},[4152,7449,4520],{"class":4169},[4152,7451,4523],{"class":4510},[4152,7453,4557],{"class":4202},[4152,7455,4529],{"class":4169},[4152,7457,7458],{"class":4154,"line":4562},[4152,7459,4566],{"emptyLinePlaceholder":4565},[4152,7461,7462,7464,7466,7468,7470],{"class":4154,"line":4569},[4152,7463,4572],{"class":4510},[4152,7465,4575],{"class":4510},[4152,7467,4578],{"class":4173},[4152,7469,4582],{"class":4581},[4152,7471,4585],{"class":4169},[4152,7473,7474,7476,7478,7481,7483,7486,7488,7490,7492,7494],{"class":4154,"line":4588},[4152,7475,4591],{"class":4173},[4152,7477,4594],{"class":4169},[4152,7479,7480],{"class":4597},"locked",[4152,7482,3536],{"class":4169},[4152,7484,7485],{"class":4597},"setLocked",[4152,7487,4606],{"class":4169},[4152,7489,4517],{"class":4581},[4152,7491,4611],{"class":4169},[4152,7493,4614],{"class":4173},[4152,7495,4617],{"class":4169},[4152,7497,7498],{"class":4154,"line":4620},[4152,7499,4566],{"emptyLinePlaceholder":4565},[4152,7501,7502,7504,7507,7509,7511,7513,7515],{"class":4154,"line":4625},[4152,7503,4591],{"class":4173},[4152,7505,7506],{"class":4597}," titleFlat",[4152,7508,4964],{"class":4169},[4152,7510,3572],{"class":4181},[4152,7512,3609],{"class":4169},[4152,7514,5229],{"class":4581},[4152,7516,5311],{"class":4169},[4152,7518,7519,7521,7523,7525],{"class":4154,"line":4634},[4152,7520,5316],{"class":4181},[4152,7522,3609],{"class":4169},[4152,7524,5321],{"class":4181},[4152,7526,4819],{"class":4169},[4152,7528,7529,7531,7533,7536],{"class":4154,"line":4661},[4152,7530,5316],{"class":4181},[4152,7532,3609],{"class":4169},[4152,7534,7535],{"class":4181},"titleStrong",[4152,7537,4819],{"class":4169},[4152,7539,7540,7542,7544,7546],{"class":4154,"line":4697},[4152,7541,5348],{"class":4169},[4152,7543,5068],{"class":4181},[4152,7545,5071],{"class":4202},[4152,7547,5074],{"class":4169},[4152,7549,7550],{"class":4154,"line":4721},[4152,7551,5363],{"class":4169},[4152,7553,7554],{"class":4154,"line":4727},[4152,7555,4566],{"emptyLinePlaceholder":4565},[4152,7557,7558,7560],{"class":4154,"line":4737},[4152,7559,4628],{"class":4510},[4152,7561,4631],{"class":4169},[4152,7563,7564,7566,7568,7570,7572,7574,7576,7578,7580,7582],{"class":4154,"line":4745},[4152,7565,4637],{"class":4158},[4152,7567,3967],{"class":4162},[4152,7569,4166],{"class":4165},[4152,7571,4170],{"class":4169},[4152,7573,4174],{"class":4173},[4152,7575,4648],{"class":4181},[4152,7577,3609],{"class":4177},[4152,7579,4653],{"class":4181},[4152,7581,4209],{"class":4173},[4152,7583,4658],{"class":4158},[4152,7585,7586,7588,7590,7592,7594,7596,7599,7601,7603,7606,7608,7610],{"class":4154,"line":4785},[4152,7587,4664],{"class":4158},[4152,7589,4010],{"class":4162},[4152,7591,4166],{"class":4165},[4152,7593,4170],{"class":4169},[4152,7595,4174],{"class":4173},[4152,7597,7598],{"class":4181},"titleFlat",[4152,7600,4209],{"class":4173},[4152,7602,4684],{"class":4158},[4152,7604,7605],{"class":4169},"StyleSheet · all-in-one",[4152,7607,4690],{"class":4158},[4152,7609,4010],{"class":4162},[4152,7611,4658],{"class":4158},[4152,7613,7614,7616,7618,7620,7622,7624,7626,7628,7631,7633],{"class":4154,"line":4808},[4152,7615,4664],{"class":4158},[4152,7617,4010],{"class":4162},[4152,7619,4166],{"class":4165},[4152,7621,4170],{"class":4169},[4152,7623,4174],{"class":4173},[4152,7625,4648],{"class":4181},[4152,7627,3609],{"class":4177},[4152,7629,7630],{"class":4181},"sub",[4152,7632,4209],{"class":4173},[4152,7634,4658],{"class":4158},[4152,7636,7637,7640,7642,7644,7646,7648,7651,7653,7655,7658,7661,7664,7666,7668],{"class":4154,"line":4822},[4152,7638,7639],{"class":4169},"        flatten title → fontSize ",[4152,7641,4174],{"class":4173},[4152,7643,7002],{"class":4581},[4152,7645,4764],{"class":4177},[4152,7647,7598],{"class":4181},[4152,7649,7650],{"class":4510}," as",[4152,7652,4514],{"class":4177},[4152,7654,4409],{"class":4181},[4152,7656,7657],{"class":4169},"?:",[4152,7659,7660],{"class":4162}," number",[4152,7662,7663],{"class":4177}," }).",[4152,7665,4409],{"class":4181},[4152,7667,3910],{"class":4177},[4152,7669,4782],{"class":4173},[4152,7671,7672,7674,7676],{"class":4154,"line":4841},[4152,7673,4730],{"class":4158},[4152,7675,4010],{"class":4162},[4152,7677,4658],{"class":4158},[4152,7679,7680],{"class":4154,"line":4858},[4152,7681,4566],{"emptyLinePlaceholder":4565},[4152,7683,7684,7686,7688,7690,7692,7694,7696,7698,7700,7702],{"class":4154,"line":4866},[4152,7685,4664],{"class":4158},[4152,7687,3967],{"class":4162},[4152,7689,4166],{"class":4165},[4152,7691,4170],{"class":4169},[4152,7693,4174],{"class":4173},[4152,7695,4648],{"class":4181},[4152,7697,3609],{"class":4177},[4152,7699,5996],{"class":4181},[4152,7701,4209],{"class":4173},[4152,7703,4658],{"class":4158},[4152,7705,7706,7709,7712],{"class":4154,"line":4872},[4152,7707,7708],{"class":4173},"        {",[4152,7710,7711],{"class":5327},"\u002F* absoluteFillObject: кутовий бейдж *\u002F",[4152,7713,4782],{"class":4173},[4152,7715,7716,7718],{"class":4154,"line":4921},[4152,7717,4875],{"class":4158},[4152,7719,6212],{"class":4162},[4152,7721,7722,7724,7726,7728],{"class":4154,"line":4930},[4152,7723,6217],{"class":4165},[4152,7725,4170],{"class":4169},[4152,7727,4174],{"class":4173},[4152,7729,6224],{"class":4177},[4152,7731,7732,7734,7736,7738,7740],{"class":4154,"line":4940},[4152,7733,6229],{"class":4169},[4152,7735,3572],{"class":4181},[4152,7737,3609],{"class":4177},[4152,7739,5850],{"class":4181},[4152,7741,4819],{"class":4177},[4152,7743,7744,7747,7749],{"class":4154,"line":4946},[4152,7745,7746],{"class":4181},"            top:",[4152,7748,6439],{"class":4185},[4152,7750,4819],{"class":4177},[4152,7752,7753,7756,7759],{"class":4154,"line":4951},[4152,7754,7755],{"class":4181},"            left:",[4152,7757,7758],{"class":4173}," undefined",[4152,7760,4819],{"class":4177},[4152,7762,7763,7766,7768],{"class":4154,"line":4956},[4152,7764,7765],{"class":4181},"            right:",[4152,7767,6439],{"class":4185},[4152,7769,4819],{"class":4177},[4152,7771,7772,7775,7777],{"class":4154,"line":4976},[4152,7773,7774],{"class":4181},"            bottom:",[4152,7776,7758],{"class":4173},[4152,7778,4819],{"class":4177},[4152,7780,7781,7784,7787],{"class":4154,"line":4985},[4152,7782,7783],{"class":4181},"            width:",[4152,7785,7786],{"class":4185}," 44",[4152,7788,4819],{"class":4177},[4152,7790,7791,7794,7796],{"class":4154,"line":4995},[4152,7792,7793],{"class":4181},"            height:",[4152,7795,5682],{"class":4185},[4152,7797,4819],{"class":4177},[4152,7799,7800,7803,7805],{"class":4154,"line":5005},[4152,7801,7802],{"class":4181},"            borderRadius:",[4152,7804,5777],{"class":4185},[4152,7806,4819],{"class":4177},[4152,7808,7809,7811,7813],{"class":4154,"line":5016},[4152,7810,6242],{"class":4181},[4152,7812,5171],{"class":4202},[4152,7814,4819],{"class":4177},[4152,7816,7817,7819,7821],{"class":4154,"line":5027},[4152,7818,6252],{"class":4181},[4152,7820,5022],{"class":4202},[4152,7822,4819],{"class":4177},[4152,7824,7825,7827,7829],{"class":4154,"line":5038},[4152,7826,6261],{"class":4181},[4152,7828,5022],{"class":4202},[4152,7830,4819],{"class":4177},[4152,7832,7833,7835],{"class":4154,"line":5044},[4152,7834,6270],{"class":4177},[4152,7836,4782],{"class":4173},[4152,7838,7839],{"class":4154,"line":5077},[4152,7840,6277],{"class":4158},[4152,7842,7843,7845,7847,7849,7851,7853,7855,7857,7860,7862,7864,7867,7869,7871],{"class":4154,"line":5107},[4152,7844,6074],{"class":4158},[4152,7846,4010],{"class":4162},[4152,7848,4166],{"class":4165},[4152,7850,4170],{"class":4169},[4152,7852,4174],{"class":4173},[4152,7854,4648],{"class":4181},[4152,7856,3609],{"class":4177},[4152,7858,7859],{"class":4181},"badgeText",[4152,7861,4209],{"class":4173},[4152,7863,4684],{"class":4158},[4152,7865,7866],{"class":4169},"PRO",[4152,7868,4690],{"class":4158},[4152,7870,4010],{"class":4162},[4152,7872,4658],{"class":4158},[4152,7874,7875,7877,7879],{"class":4154,"line":5115},[4152,7876,6107],{"class":4158},[4152,7878,3967],{"class":4162},[4152,7880,4658],{"class":4158},[4152,7882,7883],{"class":4154,"line":5125},[4152,7884,4566],{"emptyLinePlaceholder":4565},[4152,7886,7887,7889,7891,7893,7895,7897,7899,7901,7904,7906,7908,7911,7913,7915],{"class":4154,"line":5136},[4152,7888,4875],{"class":4158},[4152,7890,4010],{"class":4162},[4152,7892,4166],{"class":4165},[4152,7894,4170],{"class":4169},[4152,7896,4174],{"class":4173},[4152,7898,4648],{"class":4181},[4152,7900,3609],{"class":4177},[4152,7902,7903],{"class":4181},"name",[4152,7905,4209],{"class":4173},[4152,7907,4684],{"class":4158},[4152,7909,7910],{"class":4169},"Карпати 2026",[4152,7912,4690],{"class":4158},[4152,7914,4010],{"class":4162},[4152,7916,4658],{"class":4158},[4152,7918,7919,7921,7923,7925,7927,7929,7931,7933,7936,7938,7940,7943,7945,7947],{"class":4154,"line":5146},[4152,7920,4875],{"class":4158},[4152,7922,4010],{"class":4162},[4152,7924,4166],{"class":4165},[4152,7926,4170],{"class":4169},[4152,7928,4174],{"class":4173},[4152,7930,4648],{"class":4181},[4152,7932,3609],{"class":4177},[4152,7934,7935],{"class":4181},"desc",[4152,7937,4209],{"class":4173},[4152,7939,4684],{"class":4158},[4152,7941,7942],{"class":4169},"create тримає картку; hairline — розділювач.",[4152,7944,4690],{"class":4158},[4152,7946,4010],{"class":4162},[4152,7948,4658],{"class":4158},[4152,7950,7951],{"class":4154,"line":5156},[4152,7952,4566],{"emptyLinePlaceholder":4565},[4152,7954,7955,7957,7959,7961,7963,7965,7967,7969,7971,7973],{"class":4154,"line":5161},[4152,7956,4875],{"class":4158},[4152,7958,3967],{"class":4162},[4152,7960,4166],{"class":4165},[4152,7962,4170],{"class":4169},[4152,7964,4174],{"class":4173},[4152,7966,4648],{"class":4181},[4152,7968,3609],{"class":4177},[4152,7970,6679],{"class":4181},[4152,7972,4209],{"class":4173},[4152,7974,4212],{"class":4158},[4152,7976,7977],{"class":4154,"line":5176},[4152,7978,4566],{"emptyLinePlaceholder":4565},[4152,7980,7981,7983,7985,7987,7989,7991,7993,7995,7997,7999,8001,8004,8006,8008],{"class":4154,"line":5192},[4152,7982,4875],{"class":4158},[4152,7984,4010],{"class":4162},[4152,7986,4166],{"class":4165},[4152,7988,4170],{"class":4169},[4152,7990,4174],{"class":4173},[4152,7992,4648],{"class":4181},[4152,7994,3609],{"class":4177},[4152,7996,6988],{"class":4181},[4152,7998,4209],{"class":4173},[4152,8000,4684],{"class":4158},[4152,8002,8003],{"class":4169},"12–18 червня · 6 днів",[4152,8005,4690],{"class":4158},[4152,8007,4010],{"class":4162},[4152,8009,4658],{"class":4158},[4152,8011,8012],{"class":4154,"line":5219},[4152,8013,4566],{"emptyLinePlaceholder":4565},[4152,8015,8016,8018,8021],{"class":4154,"line":6529},[4152,8017,7708],{"class":4173},[4152,8019,8020],{"class":5327},"\u002F* absoluteFill: затемнення поверх картки *\u002F",[4152,8022,4782],{"class":4173},[4152,8024,8025,8027,8029,8031],{"class":4154,"line":6534},[4152,8026,7708],{"class":4173},[4152,8028,7480],{"class":4181},[4152,8030,4828],{"class":4169},[4152,8032,4631],{"class":4177},[4152,8034,8035,8037,8039,8041,8043,8045,8047,8049,8051,8053,8055,8057,8059,8062,8064,8066],{"class":4154,"line":6562},[4152,8036,6074],{"class":4158},[4152,8038,3967],{"class":4162},[4152,8040,4166],{"class":4165},[4152,8042,4170],{"class":4169},[4152,8044,4174],{"class":4173},[4152,8046,6047],{"class":4177},[4152,8048,3572],{"class":4181},[4152,8050,3609],{"class":4177},[4152,8052,4449],{"class":4181},[4152,8054,3536],{"class":4177},[4152,8056,4648],{"class":4181},[4152,8058,3609],{"class":4177},[4152,8060,8061],{"class":4181},"lockOverlay",[4152,8063,6065],{"class":4177},[4152,8065,4209],{"class":4173},[4152,8067,4658],{"class":4158},[4152,8069,8070,8073,8075,8077,8079,8081,8083,8085,8088,8090,8092,8095,8097,8099],{"class":4154,"line":6570},[4152,8071,8072],{"class":4158},"            \u003C",[4152,8074,4010],{"class":4162},[4152,8076,4166],{"class":4165},[4152,8078,4170],{"class":4169},[4152,8080,4174],{"class":4173},[4152,8082,4648],{"class":4181},[4152,8084,3609],{"class":4177},[4152,8086,8087],{"class":4181},"lockText",[4152,8089,4209],{"class":4173},[4152,8091,4684],{"class":4158},[4152,8093,8094],{"class":4177},"Заблоковано",[4152,8096,4690],{"class":4158},[4152,8098,4010],{"class":4162},[4152,8100,4658],{"class":4158},[4152,8102,8103,8106,8108],{"class":4154,"line":6580},[4152,8104,8105],{"class":4158},"          \u003C\u002F",[4152,8107,3967],{"class":4162},[4152,8109,4658],{"class":4158},[4152,8111,8112,8115],{"class":4154,"line":6589},[4152,8113,8114],{"class":4177},"        )",[4152,8116,4782],{"class":4173},[4152,8118,8119,8121,8123],{"class":4154,"line":6598},[4152,8120,4730],{"class":4158},[4152,8122,3967],{"class":4162},[4152,8124,4658],{"class":4158},[4152,8126,8127],{"class":4154,"line":6603},[4152,8128,4566],{"emptyLinePlaceholder":4565},[4152,8130,8131,8133],{"class":4154,"line":6629},[4152,8132,4664],{"class":4158},[4152,8134,4742],{"class":4162},[4152,8136,8137,8139,8141,8143,8145,8147,8150,8152,8154,8156,8158,8160,8162,8164],{"class":4154,"line":6662},[4152,8138,4748],{"class":4165},[4152,8140,4170],{"class":4169},[4152,8142,4174],{"class":4173},[4152,8144,4755],{"class":4177},[4152,8146,4758],{"class":4173},[4152,8148,8149],{"class":4581}," setLocked",[4152,8151,4764],{"class":4177},[4152,8153,4767],{"class":4181},[4152,8155,4770],{"class":4177},[4152,8157,4758],{"class":4173},[4152,8159,4775],{"class":4169},[4152,8161,4767],{"class":4181},[4152,8163,3910],{"class":4177},[4152,8165,4782],{"class":4173},[4152,8167,8169,8171,8173,8175,8177,8179,8181,8183],{"class":4154,"line":8168},57,[4152,8170,4788],{"class":4165},[4152,8172,4170],{"class":4169},[4152,8174,4174],{"class":4173},[4152,8176,4795],{"class":4177},[4152,8178,4237],{"class":4181},[4152,8180,4800],{"class":4177},[4152,8182,4758],{"class":4173},[4152,8184,4805],{"class":4177},[4152,8186,8188,8190,8192,8194],{"class":4154,"line":8187},58,[4152,8189,4811],{"class":4181},[4152,8191,3609],{"class":4177},[4152,8193,4816],{"class":4181},[4152,8195,4819],{"class":4177},[4152,8197,8199,8202,8204,8206,8208,8210],{"class":4154,"line":8198},59,[4152,8200,8201],{"class":4181},"          locked",[4152,8203,4828],{"class":4169},[4152,8205,4831],{"class":4181},[4152,8207,3609],{"class":4177},[4152,8209,4836],{"class":4181},[4152,8211,4819],{"class":4177},[4152,8213,8215,8217,8219,8221,8223,8225],{"class":4154,"line":8214},60,[4152,8216,4844],{"class":4181},[4152,8218,4828],{"class":4169},[4152,8220,4831],{"class":4181},[4152,8222,3609],{"class":4177},[4152,8224,4853],{"class":4181},[4152,8226,4819],{"class":4177},[4152,8228,8230,8232],{"class":4154,"line":8229},61,[4152,8231,4861],{"class":4177},[4152,8233,4782],{"class":4173},[4152,8235,8237],{"class":4154,"line":8236},62,[4152,8238,4869],{"class":4158},[4152,8240,8242,8244,8246,8248,8250,8252,8254,8256,8258,8260],{"class":4154,"line":8241},63,[4152,8243,4875],{"class":4158},[4152,8245,4010],{"class":4162},[4152,8247,4166],{"class":4165},[4152,8249,4170],{"class":4169},[4152,8251,4174],{"class":4173},[4152,8253,4648],{"class":4181},[4152,8255,3609],{"class":4177},[4152,8257,4890],{"class":4181},[4152,8259,4209],{"class":4173},[4152,8261,4658],{"class":4158},[4152,8263,8265,8268,8270,8272,8275,8277,8280],{"class":4154,"line":8264},64,[4152,8266,8267],{"class":4173},"          {",[4152,8269,7480],{"class":4181},[4152,8271,4901],{"class":4169},[4152,8273,8274],{"class":4202}," 'Зняти оверлей (absoluteFill)'",[4152,8276,4907],{"class":4169},[4152,8278,8279],{"class":4202}," 'Накрити absoluteFill'",[4152,8281,4782],{"class":4173},[4152,8283,8285,8287,8289],{"class":4154,"line":8284},65,[4152,8286,6107],{"class":4158},[4152,8288,4010],{"class":4162},[4152,8290,4658],{"class":4158},[4152,8292,8294,8296,8298],{"class":4154,"line":8293},66,[4152,8295,4730],{"class":4158},[4152,8297,4493],{"class":4162},[4152,8299,4658],{"class":4158},[4152,8301,8303],{"class":4154,"line":8302},67,[4152,8304,4566],{"emptyLinePlaceholder":4565},[4152,8306,8308,8310,8312,8314,8316,8318,8320,8322,8324,8326],{"class":4154,"line":8307},68,[4152,8309,4664],{"class":4158},[4152,8311,4010],{"class":4162},[4152,8313,4166],{"class":4165},[4152,8315,4170],{"class":4169},[4152,8317,4174],{"class":4173},[4152,8319,4648],{"class":4181},[4152,8321,3609],{"class":4177},[4152,8323,4714],{"class":4181},[4152,8325,4209],{"class":4173},[4152,8327,4658],{"class":4158},[4152,8329,8331],{"class":4154,"line":8330},69,[4152,8332,8333],{"class":4169},"        create · flatten · absoluteFill · absoluteFillObject · hairlineWidth\n",[4152,8335,8337,8339,8341],{"class":4154,"line":8336},70,[4152,8338,4730],{"class":4158},[4152,8340,4010],{"class":4162},[4152,8342,4658],{"class":4158},[4152,8344,8346,8348,8350],{"class":4154,"line":8345},71,[4152,8347,4933],{"class":4158},[4152,8349,3967],{"class":4162},[4152,8351,4658],{"class":4158},[4152,8353,8355],{"class":4154,"line":8354},72,[4152,8356,4943],{"class":4169},[4152,8358,8360],{"class":4154,"line":8359},73,[4152,8361,4782],{"class":4169},[4152,8363,8365],{"class":4154,"line":8364},74,[4152,8366,4566],{"emptyLinePlaceholder":4565},[4152,8368,8370,8372,8374,8376,8378,8380,8382],{"class":4154,"line":8369},75,[4152,8371,4959],{"class":4173},[4152,8373,4831],{"class":4597},[4152,8375,4964],{"class":4169},[4152,8377,3572],{"class":4181},[4152,8379,3609],{"class":4169},[4152,8381,4264],{"class":4581},[4152,8383,4973],{"class":4169},[4152,8385,8387,8389],{"class":4154,"line":8386},76,[4152,8388,4979],{"class":4181},[4152,8390,4982],{"class":4169},[4152,8392,8394,8396,8398],{"class":4154,"line":8393},77,[4152,8395,4988],{"class":4181},[4152,8397,4186],{"class":4185},[4152,8399,4819],{"class":4169},[4152,8401,8403,8405,8407],{"class":4154,"line":8402},78,[4152,8404,4998],{"class":4181},[4152,8406,4203],{"class":4202},[4152,8408,4819],{"class":4169},[4152,8410,8412,8414,8416],{"class":4154,"line":8411},79,[4152,8413,5008],{"class":4181},[4152,8415,5055],{"class":4185},[4152,8417,4819],{"class":4169},[4152,8419,8421,8423,8425],{"class":4154,"line":8420},80,[4152,8422,5019],{"class":4181},[4152,8424,5022],{"class":4202},[4152,8426,4819],{"class":4169},[4152,8428,8430,8432,8434],{"class":4154,"line":8429},81,[4152,8431,5030],{"class":4181},[4152,8433,5033],{"class":4185},[4152,8435,4819],{"class":4169},[4152,8437,8439],{"class":4154,"line":8438},82,[4152,8440,5041],{"class":4169},[4152,8442,8444,8446,8448,8450,8452],{"class":4154,"line":8443},83,[4152,8445,5656],{"class":4181},[4152,8447,4514],{"class":4169},[4152,8449,5052],{"class":4181},[4152,8451,4194],{"class":4185},[4152,8453,5074],{"class":4169},[4152,8455,8457,8460,8462,8464,8466,8468,8470,8472],{"class":4154,"line":8456},84,[4152,8458,8459],{"class":4181},"  titleStrong:",[4152,8461,4514],{"class":4169},[4152,8463,5052],{"class":4181},[4152,8465,5055],{"class":4185},[4152,8467,3536],{"class":4169},[4152,8469,5060],{"class":4181},[4152,8471,5689],{"class":4202},[4152,8473,5074],{"class":4169},[4152,8475,8477,8480,8482,8484,8486,8488,8490,8492,8494,8496,8499,8502],{"class":4154,"line":8476},85,[4152,8478,8479],{"class":4181},"  sub:",[4152,8481,4514],{"class":4169},[4152,8483,5052],{"class":4181},[4152,8485,5033],{"class":4185},[4152,8487,3536],{"class":4169},[4152,8489,5068],{"class":4181},[4152,8491,5094],{"class":4202},[4152,8493,3536],{"class":4169},[4152,8495,6654],{"class":4181},[4152,8497,8498],{"class":4169}," -",[4152,8500,8501],{"class":4185},"4",[4152,8503,5074],{"class":4169},[4152,8505,8507,8509],{"class":4154,"line":8506},86,[4152,8508,6471],{"class":4181},[4152,8510,4982],{"class":4169},[4152,8512,8514,8516,8518],{"class":4154,"line":8513},87,[4152,8515,4998],{"class":4181},[4152,8517,5202],{"class":4202},[4152,8519,4819],{"class":4169},[4152,8521,8523,8525,8527],{"class":4154,"line":8522},88,[4152,8524,5139],{"class":4181},[4152,8526,4194],{"class":4185},[4152,8528,4819],{"class":4169},[4152,8530,8532,8534,8536],{"class":4154,"line":8531},89,[4152,8533,5719],{"class":4181},[4152,8535,4186],{"class":4185},[4152,8537,4819],{"class":4169},[4152,8539,8541,8543,8545],{"class":4154,"line":8540},90,[4152,8542,5728],{"class":4181},[4152,8544,5731],{"class":4202},[4152,8546,4819],{"class":4169},[4152,8548,8550,8552,8554],{"class":4154,"line":8549},91,[4152,8551,5008],{"class":4181},[4152,8553,4194],{"class":4185},[4152,8555,4819],{"class":4169},[4152,8557,8559,8562,8565],{"class":4154,"line":8558},92,[4152,8560,8561],{"class":4181},"    minHeight:",[4152,8563,8564],{"class":4185}," 150",[4152,8566,4819],{"class":4169},[4152,8568,8570,8572,8574],{"class":4154,"line":8569},93,[4152,8571,6521],{"class":4181},[4152,8573,6524],{"class":4202},[4152,8575,4819],{"class":4169},[4152,8577,8579],{"class":4154,"line":8578},94,[4152,8580,5041],{"class":4169},[4152,8582,8584,8587,8589,8591,8593,8595,8597,8600,8602,8604,8606],{"class":4154,"line":8583},95,[4152,8585,8586],{"class":4181},"  badgeText:",[4152,8588,4514],{"class":4169},[4152,8590,5068],{"class":4181},[4152,8592,5202],{"class":4202},[4152,8594,3536],{"class":4169},[4152,8596,5052],{"class":4181},[4152,8598,8599],{"class":4185}," 11",[4152,8601,3536],{"class":4169},[4152,8603,5060],{"class":4181},[4152,8605,5689],{"class":4202},[4152,8607,5074],{"class":4169},[4152,8609,8611,8614,8616,8618,8620,8622,8624,8626,8628,8630,8632,8634,8636,8638],{"class":4154,"line":8610},96,[4152,8612,8613],{"class":4181},"  name:",[4152,8615,4514],{"class":4169},[4152,8617,5052],{"class":4181},[4152,8619,5102],{"class":4185},[4152,8621,3536],{"class":4169},[4152,8623,5060],{"class":4181},[4152,8625,5063],{"class":4202},[4152,8627,3536],{"class":4169},[4152,8629,5068],{"class":4181},[4152,8631,5071],{"class":4202},[4152,8633,3536],{"class":4169},[4152,8635,6654],{"class":4181},[4152,8637,6657],{"class":4185},[4152,8639,5074],{"class":4169},[4152,8641,8643,8646,8648,8650,8652,8654,8656,8658,8660,8662,8664,8666,8668,8670],{"class":4154,"line":8642},97,[4152,8644,8645],{"class":4181},"  desc:",[4152,8647,4514],{"class":4169},[4152,8649,5052],{"class":4181},[4152,8651,5131],{"class":4185},[4152,8653,3536],{"class":4169},[4152,8655,5068],{"class":4181},[4152,8657,5094],{"class":4202},[4152,8659,3536],{"class":4169},[4152,8661,6654],{"class":4181},[4152,8663,5777],{"class":4185},[4152,8665,3536],{"class":4169},[4152,8667,5099],{"class":4181},[4152,8669,5055],{"class":4185},[4152,8671,5074],{"class":4169},[4152,8673,8675,8677],{"class":4154,"line":8674},98,[4152,8676,7245],{"class":4181},[4152,8678,4982],{"class":4169},[4152,8680,8682,8684,8686,8688,8690],{"class":4154,"line":8681},99,[4152,8683,6478],{"class":4181},[4152,8685,7254],{"class":4181},[4152,8687,3609],{"class":4169},[4152,8689,6671],{"class":4181},[4152,8691,4819],{"class":4169},[4152,8693,8695,8697,8700],{"class":4154,"line":8694},100,[4152,8696,4998],{"class":4181},[4152,8698,8699],{"class":4202}," '#cbd5e1'",[4152,8701,4819],{"class":4169},[4152,8703,8705,8708,8710],{"class":4154,"line":8704},101,[4152,8706,8707],{"class":4181},"    marginVertical:",[4152,8709,5033],{"class":4185},[4152,8711,4819],{"class":4169},[4152,8713,8715],{"class":4154,"line":8714},102,[4152,8716,5041],{"class":4169},[4152,8718,8720,8722,8724,8726,8728,8730,8732,8734],{"class":4154,"line":8719},103,[4152,8721,7321],{"class":4181},[4152,8723,4514],{"class":4169},[4152,8725,5052],{"class":4181},[4152,8727,5087],{"class":4185},[4152,8729,3536],{"class":4169},[4152,8731,5068],{"class":4181},[4152,8733,5094],{"class":4202},[4152,8735,5074],{"class":4169},[4152,8737,8739,8742],{"class":4154,"line":8738},104,[4152,8740,8741],{"class":4181},"  lockOverlay:",[4152,8743,4982],{"class":4169},[4152,8745,8747,8749,8752],{"class":4154,"line":8746},105,[4152,8748,4998],{"class":4181},[4152,8750,8751],{"class":4202}," 'rgba(15, 23, 42, 0.62)'",[4152,8753,4819],{"class":4169},[4152,8755,8757,8759,8761],{"class":4154,"line":8756},106,[4152,8758,5149],{"class":4181},[4152,8760,5022],{"class":4202},[4152,8762,4819],{"class":4169},[4152,8764,8766,8768,8770],{"class":4154,"line":8765},107,[4152,8767,5019],{"class":4181},[4152,8769,5022],{"class":4202},[4152,8771,4819],{"class":4169},[4152,8773,8775],{"class":4154,"line":8774},108,[4152,8776,5041],{"class":4169},[4152,8778,8780,8783,8785,8787,8789,8791,8793,8795,8797,8799,8801],{"class":4154,"line":8779},109,[4152,8781,8782],{"class":4181},"  lockText:",[4152,8784,4514],{"class":4169},[4152,8786,5068],{"class":4181},[4152,8788,5202],{"class":4202},[4152,8790,3536],{"class":4169},[4152,8792,5060],{"class":4181},[4152,8794,5689],{"class":4202},[4152,8796,3536],{"class":4169},[4152,8798,5052],{"class":4181},[4152,8800,4194],{"class":4185},[4152,8802,5074],{"class":4169},[4152,8804,8806,8808],{"class":4154,"line":8805},110,[4152,8807,5110],{"class":4181},[4152,8809,4982],{"class":4169},[4152,8811,8813,8815,8817],{"class":4154,"line":8812},111,[4152,8814,4998],{"class":4181},[4152,8816,5120],{"class":4202},[4152,8818,4819],{"class":4169},[4152,8820,8822,8824,8826],{"class":4154,"line":8821},112,[4152,8823,5128],{"class":4181},[4152,8825,5131],{"class":4185},[4152,8827,4819],{"class":4169},[4152,8829,8831,8833,8835],{"class":4154,"line":8830},113,[4152,8832,5139],{"class":4181},[4152,8834,5033],{"class":4185},[4152,8836,4819],{"class":4169},[4152,8838,8840,8842,8844],{"class":4154,"line":8839},114,[4152,8841,5149],{"class":4181},[4152,8843,5022],{"class":4202},[4152,8845,4819],{"class":4169},[4152,8847,8849],{"class":4154,"line":8848},115,[4152,8850,5041],{"class":4169},[4152,8852,8854,8856,8858,8860,8862],{"class":4154,"line":8853},116,[4152,8855,5164],{"class":4181},[4152,8857,4514],{"class":4169},[4152,8859,4199],{"class":4181},[4152,8861,5171],{"class":4202},[4152,8863,5074],{"class":4169},[4152,8865,8867,8869,8871,8873,8875],{"class":4154,"line":8866},117,[4152,8868,5179],{"class":4181},[4152,8870,4514],{"class":4169},[4152,8872,5184],{"class":4181},[4152,8874,5187],{"class":4185},[4152,8876,5074],{"class":4169},[4152,8878,8880,8882,8884,8886,8888,8890,8892,8894,8896,8898,8900],{"class":4154,"line":8879},118,[4152,8881,5195],{"class":4181},[4152,8883,4514],{"class":4169},[4152,8885,5068],{"class":4181},[4152,8887,5202],{"class":4202},[4152,8889,3536],{"class":4169},[4152,8891,5060],{"class":4181},[4152,8893,5063],{"class":4202},[4152,8895,3536],{"class":4169},[4152,8897,5052],{"class":4181},[4152,8899,5131],{"class":4185},[4152,8901,5074],{"class":4169},[4152,8903,8905,8907,8909,8911,8913,8915,8917,8919,8921,8924,8926],{"class":4154,"line":8904},119,[4152,8906,5080],{"class":4181},[4152,8908,4514],{"class":4169},[4152,8910,5052],{"class":4181},[4152,8912,5033],{"class":4185},[4152,8914,3536],{"class":4169},[4152,8916,5068],{"class":4181},[4152,8918,5120],{"class":4202},[4152,8920,3536],{"class":4169},[4152,8922,8923],{"class":4181},"textAlign:",[4152,8925,5022],{"class":4202},[4152,8927,5074],{"class":4169},[4152,8929,8931],{"class":4154,"line":8930},120,[4152,8932,5222],{"class":4169},[3589,8934,8936],{"id":8935},"inline-vs-stylesheet-коли-що","Inline vs StyleSheet: коли що",[4143,8938,8940],{"className":4145,"code":8939,"language":4147,"meta":4148,"style":4148},"\u002F\u002F Працює, але шумно, якщо так на кожному елементі\n\u003CView style={{ flex: 1, padding: 16, backgroundColor: '#F8FAFC' }} \u002F>\n\n\u002F\u002F Звичка для геометрії\n\u003CView style={styles.screen} \u002F>\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 16 },\n});\n",[3533,8941,8942,8947,8983,8987,8992,9014,9018,9034,9052],{"__ignoreMap":4148},[4152,8943,8944],{"class":4154,"line":4155},[4152,8945,8946],{"class":5327},"\u002F\u002F Працює, але шумно, якщо так на кожному елементі\n",[4152,8948,8949,8951,8953,8955,8957,8959,8961,8963,8965,8967,8969,8971,8973,8975,8977,8979,8981],{"class":4154,"line":4532},[4152,8950,4159],{"class":4158},[4152,8952,3967],{"class":4162},[4152,8954,4166],{"class":4165},[4152,8956,4170],{"class":4169},[4152,8958,4174],{"class":4173},[4152,8960,4178],{"class":4177},[4152,8962,4182],{"class":4181},[4152,8964,4186],{"class":4185},[4152,8966,3536],{"class":4177},[4152,8968,4191],{"class":4181},[4152,8970,4194],{"class":4185},[4152,8972,3536],{"class":4177},[4152,8974,4199],{"class":4181},[4152,8976,4203],{"class":4202},[4152,8978,4206],{"class":4177},[4152,8980,4209],{"class":4173},[4152,8982,4212],{"class":4158},[4152,8984,8985],{"class":4154,"line":4562},[4152,8986,4566],{"emptyLinePlaceholder":4565},[4152,8988,8989],{"class":4154,"line":4569},[4152,8990,8991],{"class":5327},"\u002F\u002F Звичка для геометрії\n",[4152,8993,8994,8996,8998,9000,9002,9004,9006,9008,9010,9012],{"class":4154,"line":4588},[4152,8995,4159],{"class":4158},[4152,8997,3967],{"class":4162},[4152,8999,4166],{"class":4165},[4152,9001,4170],{"class":4169},[4152,9003,4174],{"class":4173},[4152,9005,4648],{"class":4181},[4152,9007,3609],{"class":4177},[4152,9009,4653],{"class":4181},[4152,9011,4209],{"class":4173},[4152,9013,4212],{"class":4158},[4152,9015,9016],{"class":4154,"line":4620},[4152,9017,4566],{"emptyLinePlaceholder":4565},[4152,9019,9020,9022,9024,9026,9028,9030,9032],{"class":4154,"line":4625},[4152,9021,4959],{"class":4173},[4152,9023,4831],{"class":4597},[4152,9025,4964],{"class":4169},[4152,9027,3572],{"class":4181},[4152,9029,3609],{"class":4169},[4152,9031,4264],{"class":4581},[4152,9033,4973],{"class":4169},[4152,9035,9036,9038,9040,9042,9044,9046,9048,9050],{"class":4154,"line":4634},[4152,9037,4979],{"class":4181},[4152,9039,4514],{"class":4169},[4152,9041,4182],{"class":4181},[4152,9043,4186],{"class":4185},[4152,9045,3536],{"class":4169},[4152,9047,4191],{"class":4181},[4152,9049,4194],{"class":4185},[4152,9051,5074],{"class":4169},[4152,9053,9054],{"class":4154,"line":4661},[4152,9055,5222],{"class":4169},[3512,9057,9058,9061,9062,9065],{},[3525,9059,9060],{},"Inline доречний",", коли значення ",[3525,9063,9064],{},"обчислюється зараз"," і не варте окремого імені:",[4143,9067,9069],{"className":4145,"code":9068,"language":4147,"meta":4148,"style":4148},"\u002F\u002F Колір з поточної теми — так і треба\n\u003CView style={[styles.card, { backgroundColor: colors.surface }]} \u002F>\n",[3533,9070,9071,9076],{"__ignoreMap":4148},[4152,9072,9073],{"class":4154,"line":4155},[4152,9074,9075],{"class":5327},"\u002F\u002F Колір з поточної теми — так і треба\n",[4152,9077,9078,9080,9082,9084,9086,9088,9090,9092,9094,9096,9099,9101,9104,9106,9108,9111,9113],{"class":4154,"line":4532},[4152,9079,4159],{"class":4158},[4152,9081,3967],{"class":4162},[4152,9083,4166],{"class":4165},[4152,9085,4170],{"class":4169},[4152,9087,4174],{"class":4173},[4152,9089,6047],{"class":4177},[4152,9091,4648],{"class":4181},[4152,9093,3609],{"class":4177},[4152,9095,5996],{"class":4181},[4152,9097,9098],{"class":4177},", { ",[4152,9100,4199],{"class":4181},[4152,9102,9103],{"class":4181}," colors",[4152,9105,3609],{"class":4177},[4152,9107,3660],{"class":4181},[4152,9109,9110],{"class":4177}," }]",[4152,9112,4209],{"class":4173},[4152,9114,4212],{"class":4158},[3512,9116,9117,9118,9121,9122,3536,9125,3536,9128,3609,9131,9133,9135,9136,3609],{},"Тут ",[3533,9119,9120],{},"styles.card"," тримає стабільне: ",[3533,9123,9124],{},"borderRadius",[3533,9126,9127],{},"borderWidth",[3533,9129,9130],{},"overflow",[3655,9132],{},[3533,9134,3675],{}," — з теми, може змінитись між light і dark без нового ",[3533,9137,3535],{},[3589,9139,9141],{"id":9140},"масив-стилів-каскад-у-мініатюрі","Масив стилів — «каскад у мініатюрі»",[3512,9143,9144,9145,9148],{},"У CSS кілька класів і специфічність. У RN ви ",[3525,9146,9147],{},"явно"," складаєте шари:",[4143,9150,9152],{"className":4145,"code":9151,"language":4147,"meta":4148,"style":4148},"style={[\n  styles.base,              \u002F\u002F 1. база\n  pressed && styles.pressed, \u002F\u002F 2. стан жесту\n  disabled && styles.disabled, \u002F\u002F 3. стан «вимкнено»\n  styleFromProps,           \u002F\u002F 4. те, що передав батько (часто перемагає)\n]}\n",[3533,9153,9154,9164,9172,9186,9199,9207],{"__ignoreMap":4148},[4152,9155,9156,9158,9161],{"class":4154,"line":4155},[4152,9157,3837],{"class":4181},[4152,9159,9160],{"class":4169},"={",[4152,9162,9163],{"class":4181},"[\n",[4152,9165,9166,9169],{"class":4154,"line":4532},[4152,9167,9168],{"class":4181},"  styles.base,              ",[4152,9170,9171],{"class":5327},"\u002F\u002F 1. база\n",[4152,9173,9174,9177,9180,9183],{"class":4154,"line":4562},[4152,9175,9176],{"class":4181},"  pressed ",[4152,9178,9179],{"class":4169},"&&",[4152,9181,9182],{"class":4181}," styles.pressed, ",[4152,9184,9185],{"class":5327},"\u002F\u002F 2. стан жесту\n",[4152,9187,9188,9191,9193,9196],{"class":4154,"line":4569},[4152,9189,9190],{"class":4181},"  disabled ",[4152,9192,9179],{"class":4169},[4152,9194,9195],{"class":4181}," styles.disabled, ",[4152,9197,9198],{"class":5327},"\u002F\u002F 3. стан «вимкнено»\n",[4152,9200,9201,9204],{"class":4154,"line":4588},[4152,9202,9203],{"class":4181},"  styleFromProps,           ",[4152,9205,9206],{"class":5327},"\u002F\u002F 4. те, що передав батько (часто перемагає)\n",[4152,9208,9209],{"class":4154,"line":4620},[4152,9210,9211],{"class":4181},"]}\n",[3512,9213,9214,9217,9218,9221,9222,9224,9225,9227,9228,3609],{},[3525,9215,9216],{},"Порядок:"," зліва направо. Якщо і ",[3533,9219,9220],{},"base",", і ",[3533,9223,4237],{}," задають ",[3533,9226,5863],{},", перемагає ",[3525,9229,9230],{},"пізніший",[3512,9232,9233,4000,9235,4000,9237,9240,9241,9244,9245,9248,9249,9252,9253,9255],{},[3533,9234,4614],{},[3533,9236,5519],{},[3533,9238,9239],{},"undefined"," у масиві ",[3525,9242,9243],{},"ігноруються",". Тому ",[3533,9246,9247],{},"cond && styles.x"," безпечний: коли ",[3533,9250,9251],{},"cond"," хибний, у масив потрапляє ",[3533,9254,4614],{},", і RN його відкидає.",[4047,9257,9258,9261,9262,9264,9265,9268,9269,3980,9272,9274,9275,9278],{},[3525,9259,9260],{},"Що бачить користувач."," Натискає кнопку — на мить темнішає (",[3533,9263,4237],{},"). Це не окремий «CSS ",[9266,9267],"active",{}," файл», а ",[3525,9270,9271],{},"той самий",[3533,9273,4493],{},", який у функціональному ",[3533,9276,9277],{},"style={({ pressed }) => […]}"," підмішує другий шар. Усі стани видно в коді поруч.",[3589,9280,9282,9283,9285],{"id":9281},"типова-помилка-create-всередині-компонента-на-кожен-render","Типова помилка: ",[3533,9284,4264],{}," всередині компонента на кожен render",[4143,9287,9289],{"className":4145,"code":9288,"language":4147,"meta":4148,"style":4148},"function Card() {\n  const styles = StyleSheet.create({ box: { padding: 16 } }); \u002F\u002F погана звичка\n  return \u003CView style={styles.box} \u002F>;\n}\n",[3533,9290,9291,9301,9332,9361],{"__ignoreMap":4148},[4152,9292,9293,9296,9299],{"class":4154,"line":4155},[4152,9294,9295],{"class":4173},"function",[4152,9297,9298],{"class":4581}," Card",[4152,9300,4585],{"class":4169},[4152,9302,9303,9305,9307,9309,9311,9313,9315,9317,9320,9322,9324,9326,9329],{"class":4154,"line":4532},[4152,9304,4591],{"class":4173},[4152,9306,4831],{"class":4597},[4152,9308,4964],{"class":4169},[4152,9310,3572],{"class":4181},[4152,9312,3609],{"class":4169},[4152,9314,4264],{"class":4581},[4152,9316,4795],{"class":4169},[4152,9318,9319],{"class":4181},"box:",[4152,9321,4514],{"class":4169},[4152,9323,4191],{"class":4181},[4152,9325,4194],{"class":4185},[4152,9327,9328],{"class":4169}," } }); ",[4152,9330,9331],{"class":5327},"\u002F\u002F погана звичка\n",[4152,9333,9334,9336,9339,9341,9343,9345,9347,9349,9351,9354,9356,9359],{"class":4154,"line":4562},[4152,9335,4628],{"class":4510},[4152,9337,9338],{"class":4158}," \u003C",[4152,9340,3967],{"class":4162},[4152,9342,4166],{"class":4165},[4152,9344,4170],{"class":4169},[4152,9346,4174],{"class":4173},[4152,9348,4648],{"class":4181},[4152,9350,3609],{"class":4177},[4152,9352,9353],{"class":4181},"box",[4152,9355,4209],{"class":4173},[4152,9357,9358],{"class":4158}," \u002F>",[4152,9360,4529],{"class":4169},[4152,9362,9363],{"class":4154,"line":4569},[4152,9364,4782],{"class":4169},[3512,9366,9367,9368,9370,9371,9374],{},"На кожному рендері створюється новий набір. Для теми це ",[3525,9369,3963],{}," вирішує light\u002Fdark. Виносьте ",[3525,9372,9373],{},"стабільну"," геометрію на рівень модуля; динаміку — у масив у JSX.",[3589,9376,9378],{"id":9377},"платформа-тіні-й-hairline","Платформа: тіні й hairline",[3512,9380,9381,9382,9385,9386,9389,9390,9393,9394,9397,9398,9401],{},"Уже бачили ",[3533,9383,9384],{},"Platform.select"," для тіні (iOS ",[3533,9387,9388],{},"shadow*",", Android ",[3533,9391,9392],{},"elevation","). Це ",[3525,9395,9396],{},"теж"," частина стилізації, не теми. Тема може змінити ",[3533,9399,9400],{},"shadowOpacity"," у dark (тінь на чорному майже невидима) — але спочатку відокремте: «як малюємо тінь» vs «які кольори ролей».",[3790,9403],{},[3507,9405,9407],{"id":9406},"семантичні-токени-не-синій-а-primary","Семантичні токени (не «синій», а «primary»)",[3512,9409,9410],{},[3515,9411],{"alt":9412,"className":9413,"src":9414},"Семантичні токени light\u002Fdark",[3519],"\u002Fimages\u002Freact-native\u002Fstylesheet-and-theming\u002F02.svg",[3589,9416,9418],{"id":9417},"звідки-взялась-ідея","Звідки взялась ідея",[3512,9420,9421,9422,9424,9425,3980,9428,9431,9432,9435],{},"У статті 05 з’явився файл ",[3525,9423,3551],{}," — словник відступів, радіусів, кольорів. Тоді мета була простіша: ",[3525,9426,9427],{},"не розмножувати",[3533,9429,9430],{},"#2563EB"," у десяти кнопках. Тепер додаємо другий вимір: той самий словник має вміти ",[3525,9433,9434],{},"дві themes"," (light і dark), не ламаючи компоненти.",[3512,9437,9438],{},"На вебі в дизайн-системах (і в Figma) розрізняють рівні приблизно так:",[3561,9440,9441,9454],{},[3564,9442,9443,9446,9447,3536,9450,9453],{},[3525,9444,9445],{},"Примітивні"," значення: ",[3533,9448,9449],{},"blue-600 = #2563EB",[3533,9451,9452],{},"gray-50 = #F8FAFC"," — «як у віялі фарб».",[3564,9455,9456,9459,9460,3536,9463,3536,9466,9469],{},[3525,9457,9458],{},"Семантичні"," ролі: ",[3533,9461,9462],{},"color.bg.canvas",[3533,9464,9465],{},"color.fg.default",[3533,9467,9468],{},"color.action.primary"," — «для чого ця фарба на екрані».",[3512,9471,9472,9473,9475,9476,9479],{},"У малому застосунку ми ",[3525,9474,3963],{}," будуємо повну трирівневу систему з сотнею токенів. Але правило одне: ",[3525,9477,9478],{},"у JSX компонентів живуть ролі",", а hex — лише в таблицях light\u002Fdark.",[3589,9481,9483],{"id":9482},"погано-vs-добре","Погано vs добре",[3844,9485,9486,9499],{},[3847,9487,9488],{},[3850,9489,9490,9493,9496],{},[3853,9491,9492],{},"Погано (прив’язка до відтінку)",[3853,9494,9495],{},"Краще (роль)",[3853,9497,9498],{},"Чому",[3863,9500,9501,9520,9534,9550],{},[3850,9502,9503,9512,9517],{},[3868,9504,9505,9508,9509],{},[3533,9506,9507],{},"blue500"," у ",[3533,9510,9511],{},"TripCard",[3868,9513,9514],{},[3533,9515,9516],{},"primary",[3868,9518,9519],{},"Бренд може змінити синій — роль «головна дія» лишається",[3850,9521,9522,9527,9531],{},[3868,9523,9524,9526],{},[3533,9525,4021],{}," у двадцяти файлах",[3868,9528,9529],{},[3533,9530,3675],{},[3868,9532,9533],{},"Dark не білий; одне місце правки",[3850,9535,9536,9542,9547],{},[3868,9537,9538,9541],{},[3533,9539,9540],{},"gray900"," для тексту",[3868,9543,9544],{},[3533,9545,9546],{},"colors.text",[3868,9548,9549],{},"У dark текст світлий, не «сірий-900»",[3850,9551,9552,9555,9561],{},[3868,9553,9554],{},"«темна тема = інвертувати все»",[3868,9556,9557,9560],{},[3525,9558,9559],{},"друга таблиця"," з тими ж ключами",[3868,9562,9563,9564,9566],{},"Фото, карта, логотип бренду ",[3525,9565,3963],{}," інвертують",[3589,9568,9570],{"id":9569},"популярні-схеми-імен-як-називають-у-світі","Популярні схеми імен (як називають «у світі»)",[3512,9572,9573,9574,9577,9578,9581,9582,9585],{},"Різні дизайн-системи кажуть ",[3525,9575,9576],{},"те саме різними словами",". Важливо не «вгадати священну назву», а ",[3525,9579,9580],{},"узгодити словник"," у команді й тримати ",[3525,9583,9584],{},"однакові ключі"," в light і dark.",[3844,9587,9588,9607],{},[3847,9589,9590],{},[3850,9591,9592,9595,9598,9601,9604],{},[3853,9593,9594],{},"Роль змістом",[3853,9596,9597],{},"Плоскі імена (як у Nomad)",[3853,9599,9600],{},"Material \u002F M3-ish",[3853,9602,9603],{},"«bg \u002F fg» (часто в web DS)",[3853,9605,9606],{},"Apple HIG-орієнтир",[3863,9608,9609,9636,9661,9684,9710,9734,9760,9783,9808,9832,9852],{},[3850,9610,9611,9614,9619,9625,9633],{},[3868,9612,9613],{},"Фон екрана",[3868,9615,9616],{},[3533,9617,9618],{},"background",[3868,9620,9621,4000,9623],{},[3533,9622,3660],{},[3533,9624,9618],{},[3868,9626,9627,4000,9630],{},[3533,9628,9629],{},"bg.canvas",[3533,9631,9632],{},"bg.app",[3868,9634,9635],{},"system background",[3850,9637,9638,9641,9645,9650,9658],{},[3868,9639,9640],{},"Картка, панель",[3868,9642,9643],{},[3533,9644,3660],{},[3868,9646,9647],{},[3533,9648,9649],{},"surfaceContainer",[3868,9651,9652,4000,9655],{},[3533,9653,9654],{},"bg.elevated",[3533,9656,9657],{},"bg.card",[3868,9659,9660],{},"secondary system background",[3850,9662,9663,9666,9671,9676,9681],{},[3868,9664,9665],{},"Основний текст",[3868,9667,9668],{},[3533,9669,9670],{},"text",[3868,9672,9673],{},[3533,9674,9675],{},"onSurface",[3868,9677,9678],{},[3533,9679,9680],{},"fg.default",[3868,9682,9683],{},"label (primary)",[3850,9685,9686,9689,9694,9699,9707],{},[3868,9687,9688],{},"Другорядний текст",[3868,9690,9691],{},[3533,9692,9693],{},"textSecondary",[3868,9695,9696],{},[3533,9697,9698],{},"onSurfaceVariant",[3868,9700,9701,4000,9704],{},[3533,9702,9703],{},"fg.muted",[3533,9705,9706],{},"fg.subtle",[3868,9708,9709],{},"secondary label",[3850,9711,9712,9715,9719,9723,9731],{},[3868,9713,9714],{},"Головна дія",[3868,9716,9717],{},[3533,9718,9516],{},[3868,9720,9721],{},[3533,9722,9516],{},[3868,9724,9725,4000,9728],{},[3533,9726,9727],{},"accent",[3533,9729,9730],{},"brand",[3868,9732,9733],{},"tintColor",[3850,9735,9736,9743,9748,9752,9757],{},[3868,9737,9738,9739,9742],{},"Текст ",[3525,9740,9741],{},"на"," primary",[3868,9744,9745],{},[3533,9746,9747],{},"onPrimary",[3868,9749,9750],{},[3533,9751,9747],{},[3868,9753,9754],{},[3533,9755,9756],{},"fg.onAccent",[3868,9758,9759],{},"(контраст на tint)",[3850,9761,9762,9765,9770,9775,9780],{},[3868,9763,9764],{},"Обводка \u002F розділювач",[3868,9766,9767],{},[3533,9768,9769],{},"border",[3868,9771,9772],{},[3533,9773,9774],{},"outline",[3868,9776,9777],{},[3533,9778,9779],{},"border.default",[3868,9781,9782],{},"separator",[3850,9784,9785,9788,9793,9797,9805],{},[3868,9786,9787],{},"Помилка \u002F небезпека",[3868,9789,9790],{},[3533,9791,9792],{},"danger",[3868,9794,9795],{},[3533,9796,4243],{},[3868,9798,9799,4000,9802],{},[3533,9800,9801],{},"fg.danger",[3533,9803,9804],{},"bg.danger",[3868,9806,9807],{},"system red (семантика)",[3850,9809,9810,9813,9818,9824,9829],{},[3868,9811,9812],{},"Успіх (опційно)",[3868,9814,9815],{},[3533,9816,9817],{},"success",[3868,9819,9820,9823],{},[3533,9821,9822],{},"tertiary"," \u002F custom",[3868,9825,9826],{},[3533,9827,9828],{},"fg.success",[3868,9830,9831],{},"system green",[3850,9833,9834,9837,9841,9844,9849],{},[3868,9835,9836],{},"Попередження (опційно)",[3868,9838,9839],{},[3533,9840,4024],{},[3868,9842,9843],{},"custom",[3868,9845,9846],{},[3533,9847,9848],{},"fg.warning",[3868,9850,9851],{},"system orange",[3850,9853,9854,9857,9864,9869,9874],{},[3868,9855,9856],{},"Приглушений \u002F disabled",[3868,9858,9859,4000,9862],{},[3533,9860,9861],{},"muted",[3533,9863,4240],{},[3868,9865,9866,9868],{},[3533,9867,9675],{}," + opacity",[3868,9870,9871],{},[3533,9872,9873],{},"fg.disabled",[3868,9875,9876],{},"quaternary label",[9878,9879,9880,9972,10064],"tabs",{},[9881,9882,9884,9887,9967],"tabs-item",{"label":9883},"Плоский словник (Nomad)",[3512,9885,9886],{},"Прості ключі в одному об’єкті — зручно на старті:",[4143,9888,9892],{"className":9889,"code":9890,"language":9891,"meta":4148,"style":4148},"language-ts shiki shiki-themes light-plus dark-plus dark-plus","colors.background\ncolors.surface\ncolors.text\ncolors.textSecondary\ncolors.primary\ncolors.onPrimary\ncolors.border\ncolors.danger\n","ts",[3533,9893,9894,9904,9913,9922,9931,9940,9949,9958],{"__ignoreMap":4148},[4152,9895,9896,9899,9901],{"class":4154,"line":4155},[4152,9897,9898],{"class":4181},"colors",[4152,9900,3609],{"class":4169},[4152,9902,9903],{"class":4181},"background\n",[4152,9905,9906,9908,9910],{"class":4154,"line":4532},[4152,9907,9898],{"class":4181},[4152,9909,3609],{"class":4169},[4152,9911,9912],{"class":4181},"surface\n",[4152,9914,9915,9917,9919],{"class":4154,"line":4562},[4152,9916,9898],{"class":4181},[4152,9918,3609],{"class":4169},[4152,9920,9921],{"class":4181},"text\n",[4152,9923,9924,9926,9928],{"class":4154,"line":4569},[4152,9925,9898],{"class":4181},[4152,9927,3609],{"class":4169},[4152,9929,9930],{"class":4181},"textSecondary\n",[4152,9932,9933,9935,9937],{"class":4154,"line":4588},[4152,9934,9898],{"class":4181},[4152,9936,3609],{"class":4169},[4152,9938,9939],{"class":4181},"primary\n",[4152,9941,9942,9944,9946],{"class":4154,"line":4620},[4152,9943,9898],{"class":4181},[4152,9945,3609],{"class":4169},[4152,9947,9948],{"class":4181},"onPrimary\n",[4152,9950,9951,9953,9955],{"class":4154,"line":4625},[4152,9952,9898],{"class":4181},[4152,9954,3609],{"class":4169},[4152,9956,9957],{"class":4181},"border\n",[4152,9959,9960,9962,9964],{"class":4154,"line":4634},[4152,9961,9898],{"class":4181},[4152,9963,3609],{"class":4169},[4152,9965,9966],{"class":4181},"danger\n",[3512,9968,9969,9970,3609],{},"Мало вкладеності, легко читати в JSX: ",[3533,9971,3675],{},[9881,9973,9975,9978,10061],{"label":9974},"Вкладений bg \u002F fg",[3512,9976,9977],{},"Часто на вебі (і в Figma-токенах):",[4143,9979,9981],{"className":9889,"code":9980,"language":9891,"meta":4148,"style":4148},"colors.bg.canvas\ncolors.bg.surface\ncolors.fg.default\ncolors.fg.muted\ncolors.border.default\ncolors.action.primary\n",[3533,9982,9983,9997,10009,10023,10036,10048],{"__ignoreMap":4148},[4152,9984,9985,9987,9989,9992,9994],{"class":4154,"line":4155},[4152,9986,9898],{"class":4181},[4152,9988,3609],{"class":4169},[4152,9990,9991],{"class":4181},"bg",[4152,9993,3609],{"class":4169},[4152,9995,9996],{"class":4181},"canvas\n",[4152,9998,9999,10001,10003,10005,10007],{"class":4154,"line":4532},[4152,10000,9898],{"class":4181},[4152,10002,3609],{"class":4169},[4152,10004,9991],{"class":4181},[4152,10006,3609],{"class":4169},[4152,10008,9912],{"class":4181},[4152,10010,10011,10013,10015,10018,10020],{"class":4154,"line":4562},[4152,10012,9898],{"class":4181},[4152,10014,3609],{"class":4169},[4152,10016,10017],{"class":4181},"fg",[4152,10019,3609],{"class":4169},[4152,10021,10022],{"class":4181},"default\n",[4152,10024,10025,10027,10029,10031,10033],{"class":4154,"line":4569},[4152,10026,9898],{"class":4181},[4152,10028,3609],{"class":4169},[4152,10030,10017],{"class":4181},[4152,10032,3609],{"class":4169},[4152,10034,10035],{"class":4181},"muted\n",[4152,10037,10038,10040,10042,10044,10046],{"class":4154,"line":4588},[4152,10039,9898],{"class":4181},[4152,10041,3609],{"class":4169},[4152,10043,9769],{"class":4181},[4152,10045,3609],{"class":4169},[4152,10047,10022],{"class":4181},[4152,10049,10050,10052,10054,10057,10059],{"class":4154,"line":4620},[4152,10051,9898],{"class":4181},[4152,10053,3609],{"class":4169},[4152,10055,10056],{"class":4181},"action",[4152,10058,3609],{"class":4169},[4152,10060,9939],{"class":4181},[3512,10062,10063],{},"Добре, коли ролей багато: «усі фони» vs «усі тексти» лежать у різних гілках.",[9881,10065,10067,10070,10144],{"label":10066},"Material-ish",[3512,10068,10069],{},"Близько до Material You \u002F M3:",[4143,10071,10073],{"className":9889,"code":10072,"language":9891,"meta":4148,"style":4148},"colors.surface\ncolors.surfaceContainer\ncolors.onSurface\ncolors.onSurfaceVariant\ncolors.primary\ncolors.onPrimary\ncolors.outline\ncolors.error\n",[3533,10074,10075,10083,10092,10101,10110,10118,10126,10135],{"__ignoreMap":4148},[4152,10076,10077,10079,10081],{"class":4154,"line":4155},[4152,10078,9898],{"class":4181},[4152,10080,3609],{"class":4169},[4152,10082,9912],{"class":4181},[4152,10084,10085,10087,10089],{"class":4154,"line":4532},[4152,10086,9898],{"class":4181},[4152,10088,3609],{"class":4169},[4152,10090,10091],{"class":4181},"surfaceContainer\n",[4152,10093,10094,10096,10098],{"class":4154,"line":4562},[4152,10095,9898],{"class":4181},[4152,10097,3609],{"class":4169},[4152,10099,10100],{"class":4181},"onSurface\n",[4152,10102,10103,10105,10107],{"class":4154,"line":4569},[4152,10104,9898],{"class":4181},[4152,10106,3609],{"class":4169},[4152,10108,10109],{"class":4181},"onSurfaceVariant\n",[4152,10111,10112,10114,10116],{"class":4154,"line":4588},[4152,10113,9898],{"class":4181},[4152,10115,3609],{"class":4169},[4152,10117,9939],{"class":4181},[4152,10119,10120,10122,10124],{"class":4154,"line":4620},[4152,10121,9898],{"class":4181},[4152,10123,3609],{"class":4169},[4152,10125,9948],{"class":4181},[4152,10127,10128,10130,10132],{"class":4154,"line":4625},[4152,10129,9898],{"class":4181},[4152,10131,3609],{"class":4169},[4152,10133,10134],{"class":4181},"outline\n",[4152,10136,10137,10139,10141],{"class":4154,"line":4634},[4152,10138,9898],{"class":4181},[4152,10140,3609],{"class":4169},[4152,10142,10143],{"class":4181},"error\n",[3512,10145,10146,10149,10150,10153,10154,3609],{},[3533,10147,10148],{},"onX"," = «колір контенту ",[3525,10151,10152],{},"поверх"," ролі X» — та сама ідея, що наш ",[3533,10155,9747],{},[4047,10157,10158,10161,10162,10165,10166,10169,10170,10173,10174,3676,10176,3676,10178,10180],{},[3525,10159,10160],{},"Що обрати."," Для Nomad і більшості навчальних \u002F середніх продуктів вистачає ",[3525,10163,10164],{},"плоского"," словника з 8–12 ключів. Вкладені ",[3533,10167,10168],{},"bg\u002Ffg"," або повний M3 мають сенс, коли ролей десятки й дизайн уже так назвав токени в Figma. ",[3525,10171,10172],{},"Не змішуйте"," в одному проєкті ",[3533,10175,9516],{},[3533,10177,9730],{},[3533,10179,9727],{}," для тієї ж кнопки.",[3589,10182,10184],{"id":10183},"ролі-які-реально-потрібні-на-старті-nomad","Ролі, які реально потрібні на старті Nomad",[4350,10186,10187,10198,10216,10228,10238,10249,10263],{},[4353,10188,10190,10191,10194,10195,10197],{"name":9618,"type":10189},"роль","Фон ",[3525,10192,10193],{},"екрана"," (background \u002F canvas). У light — світло-сірий\u002Foff-white, у dark — майже чорний. Користувач бачить «колір застосунку за картками». Синоніми в інших системах: ",[3533,10196,9629],{},", system background.",[4353,10199,10200,10201,10204,10205,10208,10209,10211,10212,3536,10214,3609],{"name":3660,"type":10189},"Поверхня ",[3525,10202,10203],{},"піднятого"," блоку: картка, модалка, нижня панель. Зазвичай трохи ",[3525,10206,10207],{},"інша",", ніж ",[3533,10210,9618],{},", щоб картка відділялась від полотна без обов’язкової жирної рамки. Синоніми: ",[3533,10213,9657],{},[3533,10215,9649],{},[4353,10217,10219,10220,4000,10222,3536,10224,4000,10226,3609],{"name":10218,"type":10189},"text \u002F textSecondary","Основний і другорядний текст. Secondary — підписи, дати, підказки: менший контраст, але все ще читабельний. Синоніми: ",[3533,10221,9675],{},[3533,10223,9698],{},[3533,10225,9680],{},[3533,10227,9703],{},[4353,10229,10231,10232,3536,10234,3536,10236,3609],{"name":10230,"type":10189},"primary \u002F primaryPressed","Акцент дій (кнопка «Нова поїздка», активний чіп). Pressed — трохи темніший\u002Fсвітліший відтінок на час дотику. Синоніми: ",[3533,10233,9730],{},[3533,10235,9727],{},[3533,10237,9733],{},[4353,10239,10240,10241,10244,10245,3536,10247,3609],{"name":9769,"type":10189},"Лінії розділення, обводка картки. У dark бордери часто ",[3525,10242,10243],{},"світліші за фон",", але не білі «як крейда». Синоніми: ",[3533,10246,9774],{},[3533,10248,9782],{},[4353,10250,10251,10252,10254,10255,10257,10258,10260,10261,3609],{"name":9747,"type":10189},"Текст\u002Fіконка ",[3525,10253,9741],{}," тлі ",[3533,10256,9516],{}," (зазвичай білий). Окрема роль, щоб не плутати з ",[3533,10259,9670],{}," екрана. Синонім у M3: ",[3533,10262,9747],{},[4353,10264,10265,10266,3536,10268,3609],{"name":9792,"type":10189},"Помилки, деструктивні дії. У dark часто трохи м’якший червоний, щоб не «палав» на чорному. Синоніми: ",[3533,10267,4243],{},[3533,10269,10270],{},"destructive",[10272,10273,10274],"plant-uml",{},[4143,10275,10279],{"className":10276,"code":10277,"language":10278,"meta":4148,"style":4148},"language-plantuml shiki shiki-themes light-plus dark-plus dark-plus","@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\nrectangle \"Компонент TripCard\\n(не знає hex)\" as C {\n  rectangle \"backgroundColor: colors.surface\" as S\n  rectangle \"color: colors.text\" as T\n  rectangle \"borderColor: colors.border\" as B\n}\n\nrectangle \"Тема light\" as L {\n  rectangle \"surface = #FFFFFF\" as L1\n  rectangle \"text = #0F172A\" as L2\n}\n\nrectangle \"Тема dark\" as D {\n  rectangle \"surface = #1C1C1E\" as D1\n  rectangle \"text = #F5F5F7\" as D2\n}\n\nC --> L : useTheme().colors\nC --> D : useTheme().colors\n\n@enduml\n","plantuml",[3533,10280,10281,10286,10291,10296,10300,10305,10310,10315,10320,10324,10328,10333,10338,10343,10347,10351,10356,10361,10366,10370,10374,10379,10384,10388],{"__ignoreMap":4148},[4152,10282,10283],{"class":4154,"line":4155},[4152,10284,10285],{},"@startuml\n",[4152,10287,10288],{"class":4154,"line":4532},[4152,10289,10290],{},"skinparam style plain\n",[4152,10292,10293],{"class":4154,"line":4562},[4152,10294,10295],{},"skinparam backgroundColor #ffffff\n",[4152,10297,10298],{"class":4154,"line":4569},[4152,10299,4566],{"emptyLinePlaceholder":4565},[4152,10301,10302],{"class":4154,"line":4588},[4152,10303,10304],{},"rectangle \"Компонент TripCard\\n(не знає hex)\" as C {\n",[4152,10306,10307],{"class":4154,"line":4620},[4152,10308,10309],{},"  rectangle \"backgroundColor: colors.surface\" as S\n",[4152,10311,10312],{"class":4154,"line":4625},[4152,10313,10314],{},"  rectangle \"color: colors.text\" as T\n",[4152,10316,10317],{"class":4154,"line":4634},[4152,10318,10319],{},"  rectangle \"borderColor: colors.border\" as B\n",[4152,10321,10322],{"class":4154,"line":4661},[4152,10323,4782],{},[4152,10325,10326],{"class":4154,"line":4697},[4152,10327,4566],{"emptyLinePlaceholder":4565},[4152,10329,10330],{"class":4154,"line":4721},[4152,10331,10332],{},"rectangle \"Тема light\" as L {\n",[4152,10334,10335],{"class":4154,"line":4727},[4152,10336,10337],{},"  rectangle \"surface = #FFFFFF\" as L1\n",[4152,10339,10340],{"class":4154,"line":4737},[4152,10341,10342],{},"  rectangle \"text = #0F172A\" as L2\n",[4152,10344,10345],{"class":4154,"line":4745},[4152,10346,4782],{},[4152,10348,10349],{"class":4154,"line":4785},[4152,10350,4566],{"emptyLinePlaceholder":4565},[4152,10352,10353],{"class":4154,"line":4808},[4152,10354,10355],{},"rectangle \"Тема dark\" as D {\n",[4152,10357,10358],{"class":4154,"line":4822},[4152,10359,10360],{},"  rectangle \"surface = #1C1C1E\" as D1\n",[4152,10362,10363],{"class":4154,"line":4841},[4152,10364,10365],{},"  rectangle \"text = #F5F5F7\" as D2\n",[4152,10367,10368],{"class":4154,"line":4858},[4152,10369,4782],{},[4152,10371,10372],{"class":4154,"line":4866},[4152,10373,4566],{"emptyLinePlaceholder":4565},[4152,10375,10376],{"class":4154,"line":4872},[4152,10377,10378],{},"C --> L : useTheme().colors\n",[4152,10380,10381],{"class":4154,"line":4921},[4152,10382,10383],{},"C --> D : useTheme().colors\n",[4152,10385,10386],{"class":4154,"line":4930},[4152,10387,4566],{"emptyLinePlaceholder":4565},[4152,10389,10390],{"class":4154,"line":4940},[4152,10391,10392],{},"@enduml\n",[3512,10394,10395,10398,10399,10401,10402,10405],{},[3525,10396,10397],{},"Правило однією фразою:"," компонент знає ",[3629,10400,10189],{}," («я поверхня картки»), тема знає ",[3629,10403,10404],{},"конкретний колір"," для light і dark.",[3589,10407,10409,10410,10412],{"id":10408},"демо-семантичні-ролі-весь-stylesheet-api","Демо: семантичні ролі + весь ",[3533,10411,3572],{}," API",[3512,10414,10415],{},"Нижче — один екран, де:",[3844,10417,10418,10428],{},[3847,10419,10420],{},[3850,10421,10422,10425],{},[3853,10423,10424],{},"Що",[3853,10426,10427],{},"Де в демо",[3863,10429,10430,10454,10466,10475,10484,10493,10502],{},[3850,10431,10432,10451],{},[3868,10433,10434,4000,10437,4000,10439,4000,10441,4000,10443,4000,10445,4000,10447,4000,10449],{},[3533,10435,10436],{},"colors.background",[3533,10438,3660],{},[3533,10440,9670],{},[3533,10442,9693],{},[3533,10444,9516],{},[3533,10446,9747],{},[3533,10448,9769],{},[3533,10450,9792],{},[3868,10452,10453],{},"фон, картка, тексти, кнопка, обводка, рядок помилки",[3850,10455,10456,10460],{},[3868,10457,10458],{},[3533,10459,3535],{},[3868,10461,10462,10463],{},"геометрія ",[3533,10464,10465],{},"styles.*",[3850,10467,10468,10472],{},[3868,10469,10470],{},[3533,10471,5240],{},[3868,10473,10474],{},"підпис «title fontSize = …»",[3850,10476,10477,10481],{},[3868,10478,10479],{},[3533,10480,4459],{},[3868,10482,10483],{},"лінія під заголовком картки",[3850,10485,10486,10490],{},[3868,10487,10488],{},[3533,10489,4436],{},[3868,10491,10492],{},"бейдж «NEW» у куті",[3850,10494,10495,10499],{},[3868,10496,10497],{},[3533,10498,4416],{},[3868,10500,10501],{},"оверлей «Видалення…» поверх картки",[3850,10503,10504,10507],{},[3868,10505,10506],{},"масив стилів",[3868,10508,10509],{},"кнопка primary \u002F pressed \u002F danger",[3512,10511,10512,10513,10516,10517,10520,10521,10523],{},"Перемикач light\u002Fdark змінює ",[3525,10514,10515],{},"лише"," словник ",[3533,10518,10519],{},"c"," — JSX і ",[3533,10522,4648],{}," ті самі.",[4496,10525,10529],{"device":4498,"filename":10526,"title":10527,"height":10528},"TokensAndStyleSheetAll.tsx","Токени + StyleSheet API",720,[4143,10530,10532],{"className":4145,"code":10531,"language":4147,"meta":4148,"style":4148},"import { useState } from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\n\nconst light = {\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\nconst dark = {\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};\n\nexport default function App() {\n  const [mode, setMode] = useState\u003C'light' | 'dark'>('light');\n  const [busy, setBusy] = useState(false);\n  const c = mode === 'dark' ? dark : light;\n\n  const titleFlat = StyleSheet.flatten([\n    styles.titleBase,\n    styles.titleStrong,\n    { color: c.text },\n  ]);\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: c.background }]}>\n      \u003CView style={styles.row}>\n        {(['light', 'dark'] as const).map((m) => {\n          const active = mode === m;\n          return (\n            \u003CPressable\n              key={m}\n              onPress={() => setMode(m)}\n              style={[\n                styles.chip,\n                {\n                  backgroundColor: active ? c.primary : c.surface,\n                  borderColor: c.border,\n                },\n              ]}\n            >\n              \u003CText\n                style={{\n                  color: active ? c.onPrimary : c.text,\n                  fontWeight: '600',\n                  fontSize: 13,\n                }}\n              >\n                {m === 'light' ? 'Світла' : 'Темна'}\n              \u003C\u002FText>\n            \u003C\u002FPressable>\n          );\n        })}\n      \u003C\u002FView>\n\n      \u003CText style={titleFlat}>Поїздка · токени\u003C\u002FText>\n      \u003CText style={{ color: c.textSecondary, fontSize: 12 }}>\n        flatten → fontSize {(titleFlat as { fontSize?: number }).fontSize}\n      \u003C\u002FText>\n\n      \u003CView\n        style={[\n          styles.card,\n          { backgroundColor: c.surface, borderColor: c.border },\n        ]}\n      >\n        {\u002F* absoluteFillObject — кутовий бейдж *\u002F}\n        \u003CView\n          style={{\n            ...StyleSheet.absoluteFillObject,\n            top: 10,\n            left: undefined,\n            right: 10,\n            bottom: undefined,\n            width: 40,\n            height: 22,\n            borderRadius: 6,\n            backgroundColor: c.primary,\n            alignItems: 'center',\n            justifyContent: 'center',\n          }}\n        >\n          \u003CText style={{ color: c.onPrimary, fontSize: 10, fontWeight: '800' }}>\n            NEW\n          \u003C\u002FText>\n        \u003C\u002FView>\n\n        \u003CText style={[styles.cardTitle, { color: c.text }]}>Київ — Карпати\u003C\u002FText>\n        \u003CText style={{ color: c.textSecondary, marginTop: 4, lineHeight: 18 }}>\n          surface + text + textSecondary. Hex лише в таблицях light\u002Fdark.\n        \u003C\u002FText>\n\n        {\u002F* hairlineWidth *\u002F}\n        \u003CView\n          style={{\n            height: StyleSheet.hairlineWidth,\n            backgroundColor: c.border,\n            marginVertical: 12,\n          }}\n        \u002F>\n\n        \u003CText style={{ color: c.danger, fontSize: 13, fontWeight: '600' }}>\n          danger · «Скасувати бронювання»\n        \u003C\u002FText>\n\n        {\u002F* absoluteFill — оверлей стану *\u002F}\n        {busy && (\n          \u003CView style={[StyleSheet.absoluteFill, styles.overlay]}>\n            \u003CText style={{ color: c.onPrimary, fontWeight: '800' }}>\n              Видалення…\n            \u003C\u002FText>\n          \u003C\u002FView>\n        )}\n      \u003C\u002FView>\n\n      \u003CPressable\n        onPress={() => setBusy((v) => !v)}\n        style={({ pressed }) => [\n          styles.btn,\n          { backgroundColor: pressed ? c.primaryPressed : c.primary },\n        ]}\n      >\n        \u003CText style={{ color: c.onPrimary, fontWeight: '700' }}>\n          {busy ? 'Сховати absoluteFill' : 'Показати absoluteFill'}\n        \u003C\u002FText>\n      \u003C\u002FPressable>\n\n      \u003CText style={{ color: c.textSecondary, fontSize: 12, lineHeight: 17 }}>\n        create · flatten · hairline · absoluteFill · absoluteFillObject ·\n        background\u002Fsurface\u002Ftext\u002Fprimary\u002Fborder\u002Fdanger\u002FonPrimary\n      \u003C\u002FText>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 18, justifyContent: 'center', gap: 10 },\n  row: { flexDirection: 'row', gap: 8 },\n  chip: {\n    paddingHorizontal: 12,\n    paddingVertical: 8,\n    borderRadius: 8,\n    borderWidth: 1,\n  },\n  titleBase: { fontSize: 16 },\n  titleStrong: { fontSize: 20, fontWeight: '800' },\n  card: {\n    borderRadius: 16,\n    borderWidth: 1,\n    padding: 16,\n    minHeight: 150,\n    overflow: 'hidden',\n  },\n  cardTitle: { fontSize: 17, fontWeight: '700', marginTop: 4 },\n  overlay: {\n    backgroundColor: 'rgba(15, 23, 42, 0.65)',\n    alignItems: 'center',\n    justifyContent: 'center',\n  },\n  btn: {\n    paddingVertical: 14,\n    borderRadius: 12,\n    alignItems: 'center',\n  },\n});\n",[3533,10533,10534,10550,10578,10582,10592,10601,10611,10621,10631,10640,10650,10659,10669,10678,10683,10687,10696,10705,10714,10723,10732,10741,10749,10758,10767,10775,10779,10783,10795,10831,10855,10883,10887,10903,10913,10923,10937,10941,10945,10951,10987,11009,11047,11069,11076,11082,11095,11119,11130,11142,11147,11172,11185,11190,11197,11202,11210,11221,11246,11255,11264,11271,11276,11300,11309,11318,11323,11330,11338,11342,11369,11403,11430,11438,11442,11448,11458,11468,11494,11500,11504,11513,11519,11529,11541,11549,11557,11565,11573,11582,11590,11598,11610,11618,11626,11632,11636,11676,11681,11689,11697,11701,11747,11787,11792,11800,11804,11813,11819,11829,11841,11853,11862,11868,11873,11877,11917,11922,11930,11934,11943,11954,11990,12025,12031,12040,12049,12056,12065,12070,12077,12109,12128,12139,12168,12175,12180,12215,12234,12243,12252,12257,12299,12305,12311,12320,12329,12334,12339,12344,12361,12392,12414,12422,12432,12441,12450,12459,12464,12477,12496,12503,12512,12521,12530,12539,12548,12553,12579,12587,12597,12606,12615,12620,12627,12636,12645,12654,12659],{"__ignoreMap":4148},[4152,10535,10536,10538,10540,10542,10544,10546,10548],{"class":4154,"line":4155},[4152,10537,4511],{"class":4510},[4152,10539,4514],{"class":4169},[4152,10541,4517],{"class":4181},[4152,10543,4520],{"class":4169},[4152,10545,4523],{"class":4510},[4152,10547,4526],{"class":4202},[4152,10549,4529],{"class":4169},[4152,10551,10552,10554,10556,10558,10560,10562,10564,10566,10568,10570,10572,10574,10576],{"class":4154,"line":4532},[4152,10553,4511],{"class":4510},[4152,10555,4514],{"class":4169},[4152,10557,3967],{"class":4181},[4152,10559,3536],{"class":4169},[4152,10561,4010],{"class":4181},[4152,10563,3536],{"class":4169},[4152,10565,4493],{"class":4181},[4152,10567,3536],{"class":4169},[4152,10569,3572],{"class":4181},[4152,10571,4520],{"class":4169},[4152,10573,4523],{"class":4510},[4152,10575,4557],{"class":4202},[4152,10577,4529],{"class":4169},[4152,10579,10580],{"class":4154,"line":4562},[4152,10581,4566],{"emptyLinePlaceholder":4565},[4152,10583,10584,10586,10589],{"class":4154,"line":4569},[4152,10585,4959],{"class":4173},[4152,10587,10588],{"class":4597}," light",[4152,10590,10591],{"class":4169}," = {\n",[4152,10593,10594,10597,10599],{"class":4154,"line":4588},[4152,10595,10596],{"class":4181},"  background:",[4152,10598,4203],{"class":4202},[4152,10600,4819],{"class":4169},[4152,10602,10603,10606,10609],{"class":4154,"line":4620},[4152,10604,10605],{"class":4181},"  surface:",[4152,10607,10608],{"class":4202}," '#FFFFFF'",[4152,10610,4819],{"class":4169},[4152,10612,10613,10616,10619],{"class":4154,"line":4625},[4152,10614,10615],{"class":4181},"  text:",[4152,10617,10618],{"class":4202}," '#0F172A'",[4152,10620,4819],{"class":4169},[4152,10622,10623,10626,10629],{"class":4154,"line":4634},[4152,10624,10625],{"class":4181},"  textSecondary:",[4152,10627,10628],{"class":4202}," '#64748B'",[4152,10630,4819],{"class":4169},[4152,10632,10633,10636,10638],{"class":4154,"line":4661},[4152,10634,10635],{"class":4181},"  primary:",[4152,10637,5171],{"class":4202},[4152,10639,4819],{"class":4169},[4152,10641,10642,10645,10648],{"class":4154,"line":4697},[4152,10643,10644],{"class":4181},"  primaryPressed:",[4152,10646,10647],{"class":4202}," '#1D4ED8'",[4152,10649,4819],{"class":4169},[4152,10651,10652,10655,10657],{"class":4154,"line":4721},[4152,10653,10654],{"class":4181},"  border:",[4152,10656,5731],{"class":4202},[4152,10658,4819],{"class":4169},[4152,10660,10661,10664,10667],{"class":4154,"line":4727},[4152,10662,10663],{"class":4181},"  danger:",[4152,10665,10666],{"class":4202}," '#DC2626'",[4152,10668,4819],{"class":4169},[4152,10670,10671,10674,10676],{"class":4154,"line":4737},[4152,10672,10673],{"class":4181},"  onPrimary:",[4152,10675,10608],{"class":4202},[4152,10677,4819],{"class":4169},[4152,10679,10680],{"class":4154,"line":4745},[4152,10681,10682],{"class":4169},"};\n",[4152,10684,10685],{"class":4154,"line":4785},[4152,10686,4566],{"emptyLinePlaceholder":4565},[4152,10688,10689,10691,10694],{"class":4154,"line":4808},[4152,10690,4959],{"class":4173},[4152,10692,10693],{"class":4597}," dark",[4152,10695,10591],{"class":4169},[4152,10697,10698,10700,10703],{"class":4154,"line":4822},[4152,10699,10596],{"class":4181},[4152,10701,10702],{"class":4202}," '#000000'",[4152,10704,4819],{"class":4169},[4152,10706,10707,10709,10712],{"class":4154,"line":4841},[4152,10708,10605],{"class":4181},[4152,10710,10711],{"class":4202}," '#1C1C1E'",[4152,10713,4819],{"class":4169},[4152,10715,10716,10718,10721],{"class":4154,"line":4858},[4152,10717,10615],{"class":4181},[4152,10719,10720],{"class":4202}," '#F5F5F7'",[4152,10722,4819],{"class":4169},[4152,10724,10725,10727,10730],{"class":4154,"line":4866},[4152,10726,10625],{"class":4181},[4152,10728,10729],{"class":4202}," '#A1A1AA'",[4152,10731,4819],{"class":4169},[4152,10733,10734,10736,10739],{"class":4154,"line":4872},[4152,10735,10635],{"class":4181},[4152,10737,10738],{"class":4202}," '#3B82F6'",[4152,10740,4819],{"class":4169},[4152,10742,10743,10745,10747],{"class":4154,"line":4921},[4152,10744,10644],{"class":4181},[4152,10746,5171],{"class":4202},[4152,10748,4819],{"class":4169},[4152,10750,10751,10753,10756],{"class":4154,"line":4930},[4152,10752,10654],{"class":4181},[4152,10754,10755],{"class":4202}," '#3A3A3C'",[4152,10757,4819],{"class":4169},[4152,10759,10760,10762,10765],{"class":4154,"line":4940},[4152,10761,10663],{"class":4181},[4152,10763,10764],{"class":4202}," '#F87171'",[4152,10766,4819],{"class":4169},[4152,10768,10769,10771,10773],{"class":4154,"line":4946},[4152,10770,10673],{"class":4181},[4152,10772,10608],{"class":4202},[4152,10774,4819],{"class":4169},[4152,10776,10777],{"class":4154,"line":4951},[4152,10778,10682],{"class":4169},[4152,10780,10781],{"class":4154,"line":4956},[4152,10782,4566],{"emptyLinePlaceholder":4565},[4152,10784,10785,10787,10789,10791,10793],{"class":4154,"line":4976},[4152,10786,4572],{"class":4510},[4152,10788,4575],{"class":4510},[4152,10790,4578],{"class":4173},[4152,10792,4582],{"class":4581},[4152,10794,4585],{"class":4169},[4152,10796,10797,10799,10801,10804,10806,10809,10811,10813,10815,10818,10821,10824,10827,10829],{"class":4154,"line":4985},[4152,10798,4591],{"class":4173},[4152,10800,4594],{"class":4169},[4152,10802,10803],{"class":4597},"mode",[4152,10805,3536],{"class":4169},[4152,10807,10808],{"class":4597},"setMode",[4152,10810,4606],{"class":4169},[4152,10812,4517],{"class":4581},[4152,10814,4159],{"class":4169},[4152,10816,10817],{"class":4202},"'light'",[4152,10819,10820],{"class":4169}," | ",[4152,10822,10823],{"class":4202},"'dark'",[4152,10825,10826],{"class":4169},">(",[4152,10828,10817],{"class":4202},[4152,10830,4617],{"class":4169},[4152,10832,10833,10835,10837,10840,10842,10845,10847,10849,10851,10853],{"class":4154,"line":4995},[4152,10834,4591],{"class":4173},[4152,10836,4594],{"class":4169},[4152,10838,10839],{"class":4597},"busy",[4152,10841,3536],{"class":4169},[4152,10843,10844],{"class":4597},"setBusy",[4152,10846,4606],{"class":4169},[4152,10848,4517],{"class":4581},[4152,10850,4611],{"class":4169},[4152,10852,4614],{"class":4173},[4152,10854,4617],{"class":4169},[4152,10856,10857,10859,10862,10864,10866,10869,10871,10874,10876,10879,10881],{"class":4154,"line":5005},[4152,10858,4591],{"class":4173},[4152,10860,10861],{"class":4597}," c",[4152,10863,4964],{"class":4169},[4152,10865,10803],{"class":4181},[4152,10867,10868],{"class":4169}," === ",[4152,10870,10823],{"class":4202},[4152,10872,10873],{"class":4169}," ? ",[4152,10875,3638],{"class":4181},[4152,10877,10878],{"class":4169}," : ",[4152,10880,3631],{"class":4181},[4152,10882,4529],{"class":4169},[4152,10884,10885],{"class":4154,"line":5016},[4152,10886,4566],{"emptyLinePlaceholder":4565},[4152,10888,10889,10891,10893,10895,10897,10899,10901],{"class":4154,"line":5027},[4152,10890,4591],{"class":4173},[4152,10892,7506],{"class":4597},[4152,10894,4964],{"class":4169},[4152,10896,3572],{"class":4181},[4152,10898,3609],{"class":4169},[4152,10900,5229],{"class":4581},[4152,10902,5311],{"class":4169},[4152,10904,10905,10907,10909,10911],{"class":4154,"line":5038},[4152,10906,5316],{"class":4181},[4152,10908,3609],{"class":4169},[4152,10910,5321],{"class":4181},[4152,10912,4819],{"class":4169},[4152,10914,10915,10917,10919,10921],{"class":4154,"line":5044},[4152,10916,5316],{"class":4181},[4152,10918,3609],{"class":4169},[4152,10920,7535],{"class":4181},[4152,10922,4819],{"class":4169},[4152,10924,10925,10927,10929,10931,10933,10935],{"class":4154,"line":5077},[4152,10926,5348],{"class":4169},[4152,10928,5068],{"class":4181},[4152,10930,10861],{"class":4181},[4152,10932,3609],{"class":4169},[4152,10934,9670],{"class":4181},[4152,10936,5074],{"class":4169},[4152,10938,10939],{"class":4154,"line":5107},[4152,10940,5363],{"class":4169},[4152,10942,10943],{"class":4154,"line":5115},[4152,10944,4566],{"emptyLinePlaceholder":4565},[4152,10946,10947,10949],{"class":4154,"line":5125},[4152,10948,4628],{"class":4510},[4152,10950,4631],{"class":4169},[4152,10952,10953,10955,10957,10959,10961,10963,10965,10967,10969,10971,10973,10975,10977,10979,10981,10983,10985],{"class":4154,"line":5136},[4152,10954,4637],{"class":4158},[4152,10956,3967],{"class":4162},[4152,10958,4166],{"class":4165},[4152,10960,4170],{"class":4169},[4152,10962,4174],{"class":4173},[4152,10964,6047],{"class":4177},[4152,10966,4648],{"class":4181},[4152,10968,3609],{"class":4177},[4152,10970,4653],{"class":4181},[4152,10972,9098],{"class":4177},[4152,10974,4199],{"class":4181},[4152,10976,10861],{"class":4181},[4152,10978,3609],{"class":4177},[4152,10980,9618],{"class":4181},[4152,10982,9110],{"class":4177},[4152,10984,4209],{"class":4173},[4152,10986,4658],{"class":4158},[4152,10988,10989,10991,10993,10995,10997,10999,11001,11003,11005,11007],{"class":4154,"line":5146},[4152,10990,4664],{"class":4158},[4152,10992,3967],{"class":4162},[4152,10994,4166],{"class":4165},[4152,10996,4170],{"class":4169},[4152,10998,4174],{"class":4173},[4152,11000,4648],{"class":4181},[4152,11002,3609],{"class":4177},[4152,11004,6837],{"class":4181},[4152,11006,4209],{"class":4173},[4152,11008,4658],{"class":4158},[4152,11010,11011,11013,11016,11018,11020,11022,11025,11028,11031,11033,11036,11038,11041,11043,11045],{"class":4154,"line":5156},[4152,11012,7708],{"class":4173},[4152,11014,11015],{"class":4177},"([",[4152,11017,10817],{"class":4202},[4152,11019,3536],{"class":4177},[4152,11021,10823],{"class":4202},[4152,11023,11024],{"class":4177},"] ",[4152,11026,11027],{"class":4510},"as",[4152,11029,11030],{"class":4173}," const",[4152,11032,4388],{"class":4177},[4152,11034,11035],{"class":4581},"map",[4152,11037,4764],{"class":4177},[4152,11039,11040],{"class":4181},"m",[4152,11042,4770],{"class":4177},[4152,11044,4758],{"class":4173},[4152,11046,4982],{"class":4177},[4152,11048,11049,11052,11055,11058,11061,11064,11067],{"class":4154,"line":5161},[4152,11050,11051],{"class":4173},"          const",[4152,11053,11054],{"class":4597}," active",[4152,11056,11057],{"class":4169}," =",[4152,11059,11060],{"class":4181}," mode",[4152,11062,11063],{"class":4169}," ===",[4152,11065,11066],{"class":4181}," m",[4152,11068,4529],{"class":4177},[4152,11070,11071,11074],{"class":4154,"line":5176},[4152,11072,11073],{"class":4510},"          return",[4152,11075,4631],{"class":4177},[4152,11077,11078,11080],{"class":4154,"line":5192},[4152,11079,8072],{"class":4158},[4152,11081,4742],{"class":4162},[4152,11083,11084,11087,11089,11091,11093],{"class":4154,"line":5219},[4152,11085,11086],{"class":4165},"              key",[4152,11088,4170],{"class":4169},[4152,11090,4174],{"class":4173},[4152,11092,11040],{"class":4181},[4152,11094,4782],{"class":4173},[4152,11096,11097,11100,11102,11104,11106,11108,11111,11113,11115,11117],{"class":4154,"line":6529},[4152,11098,11099],{"class":4165},"              onPress",[4152,11101,4170],{"class":4169},[4152,11103,4174],{"class":4173},[4152,11105,4755],{"class":4177},[4152,11107,4758],{"class":4173},[4152,11109,11110],{"class":4581}," setMode",[4152,11112,4611],{"class":4177},[4152,11114,11040],{"class":4181},[4152,11116,3910],{"class":4177},[4152,11118,4782],{"class":4173},[4152,11120,11121,11124,11126,11128],{"class":4154,"line":6534},[4152,11122,11123],{"class":4165},"              style",[4152,11125,4170],{"class":4169},[4152,11127,4174],{"class":4173},[4152,11129,9163],{"class":4177},[4152,11131,11132,11135,11137,11140],{"class":4154,"line":6562},[4152,11133,11134],{"class":4181},"                styles",[4152,11136,3609],{"class":4177},[4152,11138,11139],{"class":4181},"chip",[4152,11141,4819],{"class":4177},[4152,11143,11144],{"class":4154,"line":6570},[4152,11145,11146],{"class":4177},"                {\n",[4152,11148,11149,11152,11154,11156,11158,11160,11162,11164,11166,11168,11170],{"class":4154,"line":6580},[4152,11150,11151],{"class":4181},"                  backgroundColor:",[4152,11153,11054],{"class":4181},[4152,11155,4901],{"class":4169},[4152,11157,10861],{"class":4181},[4152,11159,3609],{"class":4177},[4152,11161,9516],{"class":4181},[4152,11163,4907],{"class":4169},[4152,11165,10861],{"class":4181},[4152,11167,3609],{"class":4177},[4152,11169,3660],{"class":4181},[4152,11171,4819],{"class":4177},[4152,11173,11174,11177,11179,11181,11183],{"class":4154,"line":6589},[4152,11175,11176],{"class":4181},"                  borderColor:",[4152,11178,10861],{"class":4181},[4152,11180,3609],{"class":4177},[4152,11182,9769],{"class":4181},[4152,11184,4819],{"class":4177},[4152,11186,11187],{"class":4154,"line":6598},[4152,11188,11189],{"class":4177},"                },\n",[4152,11191,11192,11195],{"class":4154,"line":6603},[4152,11193,11194],{"class":4177},"              ]",[4152,11196,4782],{"class":4173},[4152,11198,11199],{"class":4154,"line":6629},[4152,11200,11201],{"class":4158},"            >\n",[4152,11203,11204,11207],{"class":4154,"line":6662},[4152,11205,11206],{"class":4158},"              \u003C",[4152,11208,11209],{"class":4162},"Text\n",[4152,11211,11212,11215,11217,11219],{"class":4154,"line":8168},[4152,11213,11214],{"class":4165},"                style",[4152,11216,4170],{"class":4169},[4152,11218,4174],{"class":4173},[4152,11220,6224],{"class":4177},[4152,11222,11223,11226,11228,11230,11232,11234,11236,11238,11240,11242,11244],{"class":4154,"line":8187},[4152,11224,11225],{"class":4181},"                  color:",[4152,11227,11054],{"class":4181},[4152,11229,4901],{"class":4169},[4152,11231,10861],{"class":4181},[4152,11233,3609],{"class":4177},[4152,11235,9747],{"class":4181},[4152,11237,4907],{"class":4169},[4152,11239,10861],{"class":4181},[4152,11241,3609],{"class":4177},[4152,11243,9670],{"class":4181},[4152,11245,4819],{"class":4177},[4152,11247,11248,11251,11253],{"class":4154,"line":8198},[4152,11249,11250],{"class":4181},"                  fontWeight:",[4152,11252,5763],{"class":4202},[4152,11254,4819],{"class":4177},[4152,11256,11257,11260,11262],{"class":4154,"line":8214},[4152,11258,11259],{"class":4181},"                  fontSize:",[4152,11261,5087],{"class":4185},[4152,11263,4819],{"class":4177},[4152,11265,11266,11269],{"class":4154,"line":8229},[4152,11267,11268],{"class":4177},"                }",[4152,11270,4782],{"class":4173},[4152,11272,11273],{"class":4154,"line":8236},[4152,11274,11275],{"class":4158},"              >\n",[4152,11277,11278,11281,11283,11285,11288,11290,11293,11295,11298],{"class":4154,"line":8241},[4152,11279,11280],{"class":4173},"                {",[4152,11282,11040],{"class":4181},[4152,11284,11063],{"class":4169},[4152,11286,11287],{"class":4202}," 'light'",[4152,11289,4901],{"class":4169},[4152,11291,11292],{"class":4202}," 'Світла'",[4152,11294,4907],{"class":4169},[4152,11296,11297],{"class":4202}," 'Темна'",[4152,11299,4782],{"class":4173},[4152,11301,11302,11305,11307],{"class":4154,"line":8264},[4152,11303,11304],{"class":4158},"              \u003C\u002F",[4152,11306,4010],{"class":4162},[4152,11308,4658],{"class":4158},[4152,11310,11311,11314,11316],{"class":4154,"line":8284},[4152,11312,11313],{"class":4158},"            \u003C\u002F",[4152,11315,4493],{"class":4162},[4152,11317,4658],{"class":4158},[4152,11319,11320],{"class":4154,"line":8293},[4152,11321,11322],{"class":4177},"          );\n",[4152,11324,11325,11328],{"class":4154,"line":8302},[4152,11326,11327],{"class":4177},"        })",[4152,11329,4782],{"class":4173},[4152,11331,11332,11334,11336],{"class":4154,"line":8307},[4152,11333,4730],{"class":4158},[4152,11335,3967],{"class":4162},[4152,11337,4658],{"class":4158},[4152,11339,11340],{"class":4154,"line":8330},[4152,11341,4566],{"emptyLinePlaceholder":4565},[4152,11343,11344,11346,11348,11350,11352,11354,11356,11358,11360,11363,11365,11367],{"class":4154,"line":8336},[4152,11345,4664],{"class":4158},[4152,11347,4010],{"class":4162},[4152,11349,4166],{"class":4165},[4152,11351,4170],{"class":4169},[4152,11353,4174],{"class":4173},[4152,11355,7598],{"class":4181},[4152,11357,4209],{"class":4173},[4152,11359,4684],{"class":4158},[4152,11361,11362],{"class":4169},"Поїздка · токени",[4152,11364,4690],{"class":4158},[4152,11366,4010],{"class":4162},[4152,11368,4658],{"class":4158},[4152,11370,11371,11373,11375,11377,11379,11381,11383,11385,11387,11389,11391,11393,11395,11397,11399,11401],{"class":4154,"line":8345},[4152,11372,4664],{"class":4158},[4152,11374,4010],{"class":4162},[4152,11376,4166],{"class":4165},[4152,11378,4170],{"class":4169},[4152,11380,4174],{"class":4173},[4152,11382,4178],{"class":4177},[4152,11384,5068],{"class":4181},[4152,11386,10861],{"class":4181},[4152,11388,3609],{"class":4177},[4152,11390,9693],{"class":4181},[4152,11392,3536],{"class":4177},[4152,11394,5052],{"class":4181},[4152,11396,5033],{"class":4185},[4152,11398,4206],{"class":4177},[4152,11400,4209],{"class":4173},[4152,11402,4658],{"class":4158},[4152,11404,11405,11408,11410,11412,11414,11416,11418,11420,11422,11424,11426,11428],{"class":4154,"line":8354},[4152,11406,11407],{"class":4169},"        flatten → fontSize ",[4152,11409,4174],{"class":4173},[4152,11411,4611],{"class":4177},[4152,11413,7598],{"class":4181},[4152,11415,7650],{"class":4510},[4152,11417,4514],{"class":4177},[4152,11419,4409],{"class":4181},[4152,11421,7657],{"class":4169},[4152,11423,7660],{"class":4162},[4152,11425,7663],{"class":4177},[4152,11427,4409],{"class":4181},[4152,11429,4782],{"class":4173},[4152,11431,11432,11434,11436],{"class":4154,"line":8359},[4152,11433,4730],{"class":4158},[4152,11435,4010],{"class":4162},[4152,11437,4658],{"class":4158},[4152,11439,11440],{"class":4154,"line":8364},[4152,11441,4566],{"emptyLinePlaceholder":4565},[4152,11443,11444,11446],{"class":4154,"line":8369},[4152,11445,4664],{"class":4158},[4152,11447,6212],{"class":4162},[4152,11449,11450,11452,11454,11456],{"class":4154,"line":8386},[4152,11451,4788],{"class":4165},[4152,11453,4170],{"class":4169},[4152,11455,4174],{"class":4173},[4152,11457,9163],{"class":4177},[4152,11459,11460,11462,11464,11466],{"class":4154,"line":8393},[4152,11461,4811],{"class":4181},[4152,11463,3609],{"class":4177},[4152,11465,5996],{"class":4181},[4152,11467,4819],{"class":4177},[4152,11469,11470,11473,11475,11477,11479,11481,11483,11486,11488,11490,11492],{"class":4154,"line":8402},[4152,11471,11472],{"class":4177},"          { ",[4152,11474,4199],{"class":4181},[4152,11476,10861],{"class":4181},[4152,11478,3609],{"class":4177},[4152,11480,3660],{"class":4181},[4152,11482,3536],{"class":4177},[4152,11484,11485],{"class":4181},"borderColor:",[4152,11487,10861],{"class":4181},[4152,11489,3609],{"class":4177},[4152,11491,9769],{"class":4181},[4152,11493,5074],{"class":4177},[4152,11495,11496,11498],{"class":4154,"line":8411},[4152,11497,4861],{"class":4177},[4152,11499,4782],{"class":4173},[4152,11501,11502],{"class":4154,"line":8420},[4152,11503,4869],{"class":4158},[4152,11505,11506,11508,11511],{"class":4154,"line":8429},[4152,11507,7708],{"class":4173},[4152,11509,11510],{"class":5327},"\u002F* absoluteFillObject — кутовий бейдж *\u002F",[4152,11512,4782],{"class":4173},[4152,11514,11515,11517],{"class":4154,"line":8438},[4152,11516,4875],{"class":4158},[4152,11518,6212],{"class":4162},[4152,11520,11521,11523,11525,11527],{"class":4154,"line":8443},[4152,11522,6217],{"class":4165},[4152,11524,4170],{"class":4169},[4152,11526,4174],{"class":4173},[4152,11528,6224],{"class":4177},[4152,11530,11531,11533,11535,11537,11539],{"class":4154,"line":8456},[4152,11532,6229],{"class":4169},[4152,11534,3572],{"class":4181},[4152,11536,3609],{"class":4177},[4152,11538,5850],{"class":4181},[4152,11540,4819],{"class":4177},[4152,11542,11543,11545,11547],{"class":4154,"line":8476},[4152,11544,7746],{"class":4181},[4152,11546,6439],{"class":4185},[4152,11548,4819],{"class":4177},[4152,11550,11551,11553,11555],{"class":4154,"line":8506},[4152,11552,7755],{"class":4181},[4152,11554,7758],{"class":4173},[4152,11556,4819],{"class":4177},[4152,11558,11559,11561,11563],{"class":4154,"line":8513},[4152,11560,7765],{"class":4181},[4152,11562,6439],{"class":4185},[4152,11564,4819],{"class":4177},[4152,11566,11567,11569,11571],{"class":4154,"line":8522},[4152,11568,7774],{"class":4181},[4152,11570,7758],{"class":4173},[4152,11572,4819],{"class":4177},[4152,11574,11575,11577,11580],{"class":4154,"line":8531},[4152,11576,7783],{"class":4181},[4152,11578,11579],{"class":4185}," 40",[4152,11581,4819],{"class":4177},[4152,11583,11584,11586,11588],{"class":4154,"line":8540},[4152,11585,7793],{"class":4181},[4152,11587,5682],{"class":4185},[4152,11589,4819],{"class":4177},[4152,11591,11592,11594,11596],{"class":4154,"line":8549},[4152,11593,7802],{"class":4181},[4152,11595,5777],{"class":4185},[4152,11597,4819],{"class":4177},[4152,11599,11600,11602,11604,11606,11608],{"class":4154,"line":8558},[4152,11601,6242],{"class":4181},[4152,11603,10861],{"class":4181},[4152,11605,3609],{"class":4177},[4152,11607,9516],{"class":4181},[4152,11609,4819],{"class":4177},[4152,11611,11612,11614,11616],{"class":4154,"line":8569},[4152,11613,6252],{"class":4181},[4152,11615,5022],{"class":4202},[4152,11617,4819],{"class":4177},[4152,11619,11620,11622,11624],{"class":4154,"line":8578},[4152,11621,6261],{"class":4181},[4152,11623,5022],{"class":4202},[4152,11625,4819],{"class":4177},[4152,11627,11628,11630],{"class":4154,"line":8583},[4152,11629,6270],{"class":4177},[4152,11631,4782],{"class":4173},[4152,11633,11634],{"class":4154,"line":8610},[4152,11635,6277],{"class":4158},[4152,11637,11638,11640,11642,11644,11646,11648,11650,11652,11654,11656,11658,11660,11662,11664,11666,11668,11670,11672,11674],{"class":4154,"line":8642},[4152,11639,6074],{"class":4158},[4152,11641,4010],{"class":4162},[4152,11643,4166],{"class":4165},[4152,11645,4170],{"class":4169},[4152,11647,4174],{"class":4173},[4152,11649,4178],{"class":4177},[4152,11651,5068],{"class":4181},[4152,11653,10861],{"class":4181},[4152,11655,3609],{"class":4177},[4152,11657,9747],{"class":4181},[4152,11659,3536],{"class":4177},[4152,11661,5052],{"class":4181},[4152,11663,6439],{"class":4185},[4152,11665,3536],{"class":4177},[4152,11667,5060],{"class":4181},[4152,11669,5689],{"class":4202},[4152,11671,4206],{"class":4177},[4152,11673,4209],{"class":4173},[4152,11675,4658],{"class":4158},[4152,11677,11678],{"class":4154,"line":8674},[4152,11679,11680],{"class":4169},"            NEW\n",[4152,11682,11683,11685,11687],{"class":4154,"line":8681},[4152,11684,8105],{"class":4158},[4152,11686,4010],{"class":4162},[4152,11688,4658],{"class":4158},[4152,11690,11691,11693,11695],{"class":4154,"line":8694},[4152,11692,6107],{"class":4158},[4152,11694,3967],{"class":4162},[4152,11696,4658],{"class":4158},[4152,11698,11699],{"class":4154,"line":8704},[4152,11700,4566],{"emptyLinePlaceholder":4565},[4152,11702,11703,11705,11707,11709,11711,11713,11715,11717,11719,11722,11724,11726,11728,11730,11732,11734,11736,11738,11741,11743,11745],{"class":4154,"line":8714},[4152,11704,4875],{"class":4158},[4152,11706,4010],{"class":4162},[4152,11708,4166],{"class":4165},[4152,11710,4170],{"class":4169},[4152,11712,4174],{"class":4173},[4152,11714,6047],{"class":4177},[4152,11716,4648],{"class":4181},[4152,11718,3609],{"class":4177},[4152,11720,11721],{"class":4181},"cardTitle",[4152,11723,9098],{"class":4177},[4152,11725,5068],{"class":4181},[4152,11727,10861],{"class":4181},[4152,11729,3609],{"class":4177},[4152,11731,9670],{"class":4181},[4152,11733,9110],{"class":4177},[4152,11735,4209],{"class":4173},[4152,11737,4684],{"class":4158},[4152,11739,11740],{"class":4169},"Київ — Карпати",[4152,11742,4690],{"class":4158},[4152,11744,4010],{"class":4162},[4152,11746,4658],{"class":4158},[4152,11748,11749,11751,11753,11755,11757,11759,11761,11763,11765,11767,11769,11771,11773,11775,11777,11779,11781,11783,11785],{"class":4154,"line":8719},[4152,11750,4875],{"class":4158},[4152,11752,4010],{"class":4162},[4152,11754,4166],{"class":4165},[4152,11756,4170],{"class":4169},[4152,11758,4174],{"class":4173},[4152,11760,4178],{"class":4177},[4152,11762,5068],{"class":4181},[4152,11764,10861],{"class":4181},[4152,11766,3609],{"class":4177},[4152,11768,9693],{"class":4181},[4152,11770,3536],{"class":4177},[4152,11772,6654],{"class":4181},[4152,11774,6657],{"class":4185},[4152,11776,3536],{"class":4177},[4152,11778,5099],{"class":4181},[4152,11780,5102],{"class":4185},[4152,11782,4206],{"class":4177},[4152,11784,4209],{"class":4173},[4152,11786,4658],{"class":4158},[4152,11788,11789],{"class":4154,"line":8738},[4152,11790,11791],{"class":4169},"          surface + text + textSecondary. Hex лише в таблицях light\u002Fdark.\n",[4152,11793,11794,11796,11798],{"class":4154,"line":8746},[4152,11795,6107],{"class":4158},[4152,11797,4010],{"class":4162},[4152,11799,4658],{"class":4158},[4152,11801,11802],{"class":4154,"line":8756},[4152,11803,4566],{"emptyLinePlaceholder":4565},[4152,11805,11806,11808,11811],{"class":4154,"line":8765},[4152,11807,7708],{"class":4173},[4152,11809,11810],{"class":5327},"\u002F* hairlineWidth *\u002F",[4152,11812,4782],{"class":4173},[4152,11814,11815,11817],{"class":4154,"line":8774},[4152,11816,4875],{"class":4158},[4152,11818,6212],{"class":4162},[4152,11820,11821,11823,11825,11827],{"class":4154,"line":8779},[4152,11822,6217],{"class":4165},[4152,11824,4170],{"class":4169},[4152,11826,4174],{"class":4173},[4152,11828,6224],{"class":4177},[4152,11830,11831,11833,11835,11837,11839],{"class":4154,"line":8805},[4152,11832,7793],{"class":4181},[4152,11834,7254],{"class":4181},[4152,11836,3609],{"class":4177},[4152,11838,6671],{"class":4181},[4152,11840,4819],{"class":4177},[4152,11842,11843,11845,11847,11849,11851],{"class":4154,"line":8812},[4152,11844,6242],{"class":4181},[4152,11846,10861],{"class":4181},[4152,11848,3609],{"class":4177},[4152,11850,9769],{"class":4181},[4152,11852,4819],{"class":4177},[4152,11854,11855,11858,11860],{"class":4154,"line":8821},[4152,11856,11857],{"class":4181},"            marginVertical:",[4152,11859,5033],{"class":4185},[4152,11861,4819],{"class":4177},[4152,11863,11864,11866],{"class":4154,"line":8830},[4152,11865,6270],{"class":4177},[4152,11867,4782],{"class":4173},[4152,11869,11870],{"class":4154,"line":8839},[4152,11871,11872],{"class":4158},"        \u002F>\n",[4152,11874,11875],{"class":4154,"line":8848},[4152,11876,4566],{"emptyLinePlaceholder":4565},[4152,11878,11879,11881,11883,11885,11887,11889,11891,11893,11895,11897,11899,11901,11903,11905,11907,11909,11911,11913,11915],{"class":4154,"line":8853},[4152,11880,4875],{"class":4158},[4152,11882,4010],{"class":4162},[4152,11884,4166],{"class":4165},[4152,11886,4170],{"class":4169},[4152,11888,4174],{"class":4173},[4152,11890,4178],{"class":4177},[4152,11892,5068],{"class":4181},[4152,11894,10861],{"class":4181},[4152,11896,3609],{"class":4177},[4152,11898,9792],{"class":4181},[4152,11900,3536],{"class":4177},[4152,11902,5052],{"class":4181},[4152,11904,5087],{"class":4185},[4152,11906,3536],{"class":4177},[4152,11908,5060],{"class":4181},[4152,11910,5763],{"class":4202},[4152,11912,4206],{"class":4177},[4152,11914,4209],{"class":4173},[4152,11916,4658],{"class":4158},[4152,11918,11919],{"class":4154,"line":8866},[4152,11920,11921],{"class":4169},"          danger · «Скасувати бронювання»\n",[4152,11923,11924,11926,11928],{"class":4154,"line":8879},[4152,11925,6107],{"class":4158},[4152,11927,4010],{"class":4162},[4152,11929,4658],{"class":4158},[4152,11931,11932],{"class":4154,"line":8904},[4152,11933,4566],{"emptyLinePlaceholder":4565},[4152,11935,11936,11938,11941],{"class":4154,"line":8930},[4152,11937,7708],{"class":4173},[4152,11939,11940],{"class":5327},"\u002F* absoluteFill — оверлей стану *\u002F",[4152,11942,4782],{"class":4173},[4152,11944,11946,11948,11950,11952],{"class":4154,"line":11945},121,[4152,11947,7708],{"class":4173},[4152,11949,10839],{"class":4181},[4152,11951,4828],{"class":4169},[4152,11953,4631],{"class":4177},[4152,11955,11957,11959,11961,11963,11965,11967,11969,11971,11973,11975,11977,11979,11981,11984,11986,11988],{"class":4154,"line":11956},122,[4152,11958,6074],{"class":4158},[4152,11960,3967],{"class":4162},[4152,11962,4166],{"class":4165},[4152,11964,4170],{"class":4169},[4152,11966,4174],{"class":4173},[4152,11968,6047],{"class":4177},[4152,11970,3572],{"class":4181},[4152,11972,3609],{"class":4177},[4152,11974,4449],{"class":4181},[4152,11976,3536],{"class":4177},[4152,11978,4648],{"class":4181},[4152,11980,3609],{"class":4177},[4152,11982,11983],{"class":4181},"overlay",[4152,11985,6065],{"class":4177},[4152,11987,4209],{"class":4173},[4152,11989,4658],{"class":4158},[4152,11991,11993,11995,11997,11999,12001,12003,12005,12007,12009,12011,12013,12015,12017,12019,12021,12023],{"class":4154,"line":11992},123,[4152,11994,8072],{"class":4158},[4152,11996,4010],{"class":4162},[4152,11998,4166],{"class":4165},[4152,12000,4170],{"class":4169},[4152,12002,4174],{"class":4173},[4152,12004,4178],{"class":4177},[4152,12006,5068],{"class":4181},[4152,12008,10861],{"class":4181},[4152,12010,3609],{"class":4177},[4152,12012,9747],{"class":4181},[4152,12014,3536],{"class":4177},[4152,12016,5060],{"class":4181},[4152,12018,5689],{"class":4202},[4152,12020,4206],{"class":4177},[4152,12022,4209],{"class":4173},[4152,12024,4658],{"class":4158},[4152,12026,12028],{"class":4154,"line":12027},124,[4152,12029,12030],{"class":4177},"              Видалення…\n",[4152,12032,12034,12036,12038],{"class":4154,"line":12033},125,[4152,12035,11313],{"class":4158},[4152,12037,4010],{"class":4162},[4152,12039,4658],{"class":4158},[4152,12041,12043,12045,12047],{"class":4154,"line":12042},126,[4152,12044,8105],{"class":4158},[4152,12046,3967],{"class":4162},[4152,12048,4658],{"class":4158},[4152,12050,12052,12054],{"class":4154,"line":12051},127,[4152,12053,8114],{"class":4177},[4152,12055,4782],{"class":4173},[4152,12057,12059,12061,12063],{"class":4154,"line":12058},128,[4152,12060,4730],{"class":4158},[4152,12062,3967],{"class":4162},[4152,12064,4658],{"class":4158},[4152,12066,12068],{"class":4154,"line":12067},129,[4152,12069,4566],{"emptyLinePlaceholder":4565},[4152,12071,12073,12075],{"class":4154,"line":12072},130,[4152,12074,4664],{"class":4158},[4152,12076,4742],{"class":4162},[4152,12078,12080,12082,12084,12086,12088,12090,12093,12095,12097,12099,12101,12103,12105,12107],{"class":4154,"line":12079},131,[4152,12081,4748],{"class":4165},[4152,12083,4170],{"class":4169},[4152,12085,4174],{"class":4173},[4152,12087,4755],{"class":4177},[4152,12089,4758],{"class":4173},[4152,12091,12092],{"class":4581}," setBusy",[4152,12094,4764],{"class":4177},[4152,12096,4767],{"class":4181},[4152,12098,4770],{"class":4177},[4152,12100,4758],{"class":4173},[4152,12102,4775],{"class":4169},[4152,12104,4767],{"class":4181},[4152,12106,3910],{"class":4177},[4152,12108,4782],{"class":4173},[4152,12110,12112,12114,12116,12118,12120,12122,12124,12126],{"class":4154,"line":12111},132,[4152,12113,4788],{"class":4165},[4152,12115,4170],{"class":4169},[4152,12117,4174],{"class":4173},[4152,12119,4795],{"class":4177},[4152,12121,4237],{"class":4181},[4152,12123,4800],{"class":4177},[4152,12125,4758],{"class":4173},[4152,12127,4805],{"class":4177},[4152,12129,12131,12133,12135,12137],{"class":4154,"line":12130},133,[4152,12132,4811],{"class":4181},[4152,12134,3609],{"class":4177},[4152,12136,4816],{"class":4181},[4152,12138,4819],{"class":4177},[4152,12140,12142,12144,12146,12149,12151,12153,12155,12158,12160,12162,12164,12166],{"class":4154,"line":12141},134,[4152,12143,11472],{"class":4177},[4152,12145,4199],{"class":4181},[4152,12147,12148],{"class":4181}," pressed",[4152,12150,4901],{"class":4169},[4152,12152,10861],{"class":4181},[4152,12154,3609],{"class":4177},[4152,12156,12157],{"class":4181},"primaryPressed",[4152,12159,4907],{"class":4169},[4152,12161,10861],{"class":4181},[4152,12163,3609],{"class":4177},[4152,12165,9516],{"class":4181},[4152,12167,5074],{"class":4177},[4152,12169,12171,12173],{"class":4154,"line":12170},135,[4152,12172,4861],{"class":4177},[4152,12174,4782],{"class":4173},[4152,12176,12178],{"class":4154,"line":12177},136,[4152,12179,4869],{"class":4158},[4152,12181,12183,12185,12187,12189,12191,12193,12195,12197,12199,12201,12203,12205,12207,12209,12211,12213],{"class":4154,"line":12182},137,[4152,12184,4875],{"class":4158},[4152,12186,4010],{"class":4162},[4152,12188,4166],{"class":4165},[4152,12190,4170],{"class":4169},[4152,12192,4174],{"class":4173},[4152,12194,4178],{"class":4177},[4152,12196,5068],{"class":4181},[4152,12198,10861],{"class":4181},[4152,12200,3609],{"class":4177},[4152,12202,9747],{"class":4181},[4152,12204,3536],{"class":4177},[4152,12206,5060],{"class":4181},[4152,12208,5063],{"class":4202},[4152,12210,4206],{"class":4177},[4152,12212,4209],{"class":4173},[4152,12214,4658],{"class":4158},[4152,12216,12218,12220,12222,12224,12227,12229,12232],{"class":4154,"line":12217},138,[4152,12219,8267],{"class":4173},[4152,12221,10839],{"class":4181},[4152,12223,4901],{"class":4169},[4152,12225,12226],{"class":4202}," 'Сховати absoluteFill'",[4152,12228,4907],{"class":4169},[4152,12230,12231],{"class":4202}," 'Показати absoluteFill'",[4152,12233,4782],{"class":4173},[4152,12235,12237,12239,12241],{"class":4154,"line":12236},139,[4152,12238,6107],{"class":4158},[4152,12240,4010],{"class":4162},[4152,12242,4658],{"class":4158},[4152,12244,12246,12248,12250],{"class":4154,"line":12245},140,[4152,12247,4730],{"class":4158},[4152,12249,4493],{"class":4162},[4152,12251,4658],{"class":4158},[4152,12253,12255],{"class":4154,"line":12254},141,[4152,12256,4566],{"emptyLinePlaceholder":4565},[4152,12258,12260,12262,12264,12266,12268,12270,12272,12274,12276,12278,12280,12282,12284,12286,12288,12290,12293,12295,12297],{"class":4154,"line":12259},142,[4152,12261,4664],{"class":4158},[4152,12263,4010],{"class":4162},[4152,12265,4166],{"class":4165},[4152,12267,4170],{"class":4169},[4152,12269,4174],{"class":4173},[4152,12271,4178],{"class":4177},[4152,12273,5068],{"class":4181},[4152,12275,10861],{"class":4181},[4152,12277,3609],{"class":4177},[4152,12279,9693],{"class":4181},[4152,12281,3536],{"class":4177},[4152,12283,5052],{"class":4181},[4152,12285,5033],{"class":4185},[4152,12287,3536],{"class":4177},[4152,12289,5099],{"class":4181},[4152,12291,12292],{"class":4185}," 17",[4152,12294,4206],{"class":4177},[4152,12296,4209],{"class":4173},[4152,12298,4658],{"class":4158},[4152,12300,12302],{"class":4154,"line":12301},143,[4152,12303,12304],{"class":4169},"        create · flatten · hairline · absoluteFill · absoluteFillObject ·\n",[4152,12306,12308],{"class":4154,"line":12307},144,[4152,12309,12310],{"class":4169},"        background\u002Fsurface\u002Ftext\u002Fprimary\u002Fborder\u002Fdanger\u002FonPrimary\n",[4152,12312,12314,12316,12318],{"class":4154,"line":12313},145,[4152,12315,4730],{"class":4158},[4152,12317,4010],{"class":4162},[4152,12319,4658],{"class":4158},[4152,12321,12323,12325,12327],{"class":4154,"line":12322},146,[4152,12324,4933],{"class":4158},[4152,12326,3967],{"class":4162},[4152,12328,4658],{"class":4158},[4152,12330,12332],{"class":4154,"line":12331},147,[4152,12333,4943],{"class":4169},[4152,12335,12337],{"class":4154,"line":12336},148,[4152,12338,4782],{"class":4169},[4152,12340,12342],{"class":4154,"line":12341},149,[4152,12343,4566],{"emptyLinePlaceholder":4565},[4152,12345,12347,12349,12351,12353,12355,12357,12359],{"class":4154,"line":12346},150,[4152,12348,4959],{"class":4173},[4152,12350,4831],{"class":4597},[4152,12352,4964],{"class":4169},[4152,12354,3572],{"class":4181},[4152,12356,3609],{"class":4169},[4152,12358,4264],{"class":4581},[4152,12360,4973],{"class":4169},[4152,12362,12364,12366,12368,12370,12372,12374,12376,12378,12380,12382,12384,12386,12388,12390],{"class":4154,"line":12363},151,[4152,12365,4979],{"class":4181},[4152,12367,4514],{"class":4169},[4152,12369,4182],{"class":4181},[4152,12371,4186],{"class":4185},[4152,12373,3536],{"class":4169},[4152,12375,4191],{"class":4181},[4152,12377,5102],{"class":4185},[4152,12379,3536],{"class":4169},[4152,12381,5640],{"class":4181},[4152,12383,5022],{"class":4202},[4152,12385,3536],{"class":4169},[4152,12387,5647],{"class":4181},[4152,12389,6439],{"class":4185},[4152,12391,5074],{"class":4169},[4152,12393,12395,12397,12399,12402,12405,12407,12409,12412],{"class":4154,"line":12394},152,[4152,12396,7212],{"class":4181},[4152,12398,4514],{"class":4169},[4152,12400,12401],{"class":4181},"flexDirection:",[4152,12403,12404],{"class":4202}," 'row'",[4152,12406,3536],{"class":4169},[4152,12408,5647],{"class":4181},[4152,12410,12411],{"class":4185}," 8",[4152,12413,5074],{"class":4169},[4152,12415,12417,12420],{"class":4154,"line":12416},153,[4152,12418,12419],{"class":4181},"  chip:",[4152,12421,4982],{"class":4169},[4152,12423,12425,12428,12430],{"class":4154,"line":12424},154,[4152,12426,12427],{"class":4181},"    paddingHorizontal:",[4152,12429,5033],{"class":4185},[4152,12431,4819],{"class":4169},[4152,12433,12435,12437,12439],{"class":4154,"line":12434},155,[4152,12436,5128],{"class":4181},[4152,12438,12411],{"class":4185},[4152,12440,4819],{"class":4169},[4152,12442,12444,12446,12448],{"class":4154,"line":12443},156,[4152,12445,5139],{"class":4181},[4152,12447,12411],{"class":4185},[4152,12449,4819],{"class":4169},[4152,12451,12453,12455,12457],{"class":4154,"line":12452},157,[4152,12454,5719],{"class":4181},[4152,12456,4186],{"class":4185},[4152,12458,4819],{"class":4169},[4152,12460,12462],{"class":4154,"line":12461},158,[4152,12463,5041],{"class":4169},[4152,12465,12467,12469,12471,12473,12475],{"class":4154,"line":12466},159,[4152,12468,5656],{"class":4181},[4152,12470,4514],{"class":4169},[4152,12472,5052],{"class":4181},[4152,12474,4194],{"class":4185},[4152,12476,5074],{"class":4169},[4152,12478,12480,12482,12484,12486,12488,12490,12492,12494],{"class":4154,"line":12479},160,[4152,12481,8459],{"class":4181},[4152,12483,4514],{"class":4169},[4152,12485,5052],{"class":4181},[4152,12487,5055],{"class":4185},[4152,12489,3536],{"class":4169},[4152,12491,5060],{"class":4181},[4152,12493,5689],{"class":4202},[4152,12495,5074],{"class":4169},[4152,12497,12499,12501],{"class":4154,"line":12498},161,[4152,12500,6471],{"class":4181},[4152,12502,4982],{"class":4169},[4152,12504,12506,12508,12510],{"class":4154,"line":12505},162,[4152,12507,5139],{"class":4181},[4152,12509,4194],{"class":4185},[4152,12511,4819],{"class":4169},[4152,12513,12515,12517,12519],{"class":4154,"line":12514},163,[4152,12516,5719],{"class":4181},[4152,12518,4186],{"class":4185},[4152,12520,4819],{"class":4169},[4152,12522,12524,12526,12528],{"class":4154,"line":12523},164,[4152,12525,5008],{"class":4181},[4152,12527,4194],{"class":4185},[4152,12529,4819],{"class":4169},[4152,12531,12533,12535,12537],{"class":4154,"line":12532},165,[4152,12534,8561],{"class":4181},[4152,12536,8564],{"class":4185},[4152,12538,4819],{"class":4169},[4152,12540,12542,12544,12546],{"class":4154,"line":12541},166,[4152,12543,6521],{"class":4181},[4152,12545,6524],{"class":4202},[4152,12547,4819],{"class":4169},[4152,12549,12551],{"class":4154,"line":12550},167,[4152,12552,5041],{"class":4169},[4152,12554,12556,12559,12561,12563,12565,12567,12569,12571,12573,12575,12577],{"class":4154,"line":12555},168,[4152,12557,12558],{"class":4181},"  cardTitle:",[4152,12560,4514],{"class":4169},[4152,12562,5052],{"class":4181},[4152,12564,12292],{"class":4185},[4152,12566,3536],{"class":4169},[4152,12568,5060],{"class":4181},[4152,12570,5063],{"class":4202},[4152,12572,3536],{"class":4169},[4152,12574,6654],{"class":4181},[4152,12576,6657],{"class":4185},[4152,12578,5074],{"class":4169},[4152,12580,12582,12585],{"class":4154,"line":12581},169,[4152,12583,12584],{"class":4181},"  overlay:",[4152,12586,4982],{"class":4169},[4152,12588,12590,12592,12595],{"class":4154,"line":12589},170,[4152,12591,4998],{"class":4181},[4152,12593,12594],{"class":4202}," 'rgba(15, 23, 42, 0.65)'",[4152,12596,4819],{"class":4169},[4152,12598,12600,12602,12604],{"class":4154,"line":12599},171,[4152,12601,5149],{"class":4181},[4152,12603,5022],{"class":4202},[4152,12605,4819],{"class":4169},[4152,12607,12609,12611,12613],{"class":4154,"line":12608},172,[4152,12610,5019],{"class":4181},[4152,12612,5022],{"class":4202},[4152,12614,4819],{"class":4169},[4152,12616,12618],{"class":4154,"line":12617},173,[4152,12619,5041],{"class":4169},[4152,12621,12623,12625],{"class":4154,"line":12622},174,[4152,12624,5110],{"class":4181},[4152,12626,4982],{"class":4169},[4152,12628,12630,12632,12634],{"class":4154,"line":12629},175,[4152,12631,5128],{"class":4181},[4152,12633,5131],{"class":4185},[4152,12635,4819],{"class":4169},[4152,12637,12639,12641,12643],{"class":4154,"line":12638},176,[4152,12640,5139],{"class":4181},[4152,12642,5033],{"class":4185},[4152,12644,4819],{"class":4169},[4152,12646,12648,12650,12652],{"class":4154,"line":12647},177,[4152,12649,5149],{"class":4181},[4152,12651,5022],{"class":4202},[4152,12653,4819],{"class":4169},[4152,12655,12657],{"class":4154,"line":12656},178,[4152,12658,5041],{"class":4169},[4152,12660,12662],{"class":4154,"line":12661},179,[4152,12663,5222],{"class":4169},[3589,12665,12667,12668,12670],{"id":12666},"що-зазвичай-не-міняють-між-темами","Що зазвичай ",[3525,12669,3963],{}," міняють між темами",[3973,12672,12673,12682,12688],{},[3564,12674,12675,3627,12678,12681],{},[3525,12676,12677],{},"Відступи",[3533,12679,12680],{},"spacing",": 4, 8, 16…) — ритм сітки той самий.",[3564,12683,12684,12687],{},[3525,12685,12686],{},"Радіуси"," карток і кнопок.",[3564,12689,12690,12693],{},[3525,12691,12692],{},"Розміри шрифтів"," (інколи в dark трохи збільшують міжрядковість, але це вже полірування).",[3512,12695,12696,12697,12700,12701,12704,12705,4388],{},"Міняються переважно ",[3525,12698,12699],{},"кольори"," і інколи ",[3525,12702,12703],{},"тіні"," (на темному тлі важка тінь майже невидима — інколи зменшують opacity або покладаються на ",[3533,12706,9769],{},[3589,12708,12710],{"id":12709},"що-бачить-користувач-що-ламається","Що бачить користувач \u002F що ламається",[3973,12712,12713,12722],{},[3564,12714,12715,12718,12719,12721],{},[3525,12716,12717],{},"Добре:"," перемкнув тему — екран і картки узгоджено змінили theme, кнопка лишилась «головною дією» (primary), фото обкладинки поїздки ",[3525,12720,3963],{}," інвертувалось.",[3564,12723,12724,12727,12728,12731,12732,12735,12736,12739],{},[3525,12725,12726],{},"Погано:"," фон став чорним, а текст у ",[3533,12729,12730],{},"AppText"," лишився ",[3533,12733,12734],{},"#0F172A"," — майже невидимий. Причина: десь лишився зашитий hex або ",[3533,12737,12738],{},"tokens.colors"," зі старої світлої-only таблиці.",[3790,12741],{},[3507,12743,12745],{"id":12744},"системна-тема-що-це-в-житті","Системна тема: що це в житті",[3512,12747,12748,12749,3609,12752,12754],{},"На iPhone: ",[3525,12750,12751],{},"Налаштування → Екран і яскравість → Світлий \u002F Темний \u002F Авто",[3655,12753],{},"\nНа Android: схожий перемикач у налаштуваннях дисплея (назви залежать від виробника).",[3512,12756,12757,12758,12761,12762,12764,12765,3609],{},"Коли користувач обирає темний режим, ",[3525,12759,12760],{},"система"," повідомляє застосункам: «зараз dark». Багато системних екранів і якісних застосунків підлаштовуються. Ваш код отримає це через API ",[3525,12763,3937],{}," \u002F хук ",[3525,12766,12767],{},[3533,12768,3543],{},[3589,12770,12772],{"id":12771},"usecolorscheme",[3533,12773,3933],{},[3512,12775,12776,12780,12781,12784],{},[3525,12777,12778],{},[3533,12779,3933],{}," — хук React Native, який повертає поточну ",[3525,12782,12783],{},"схему кольорів",":",[3973,12786,12787,12792,12797],{},[3564,12788,12789,12791],{},[3533,12790,10817],{}," — світла;",[3564,12793,12794,12796],{},[3533,12795,10823],{}," — темна;",[3564,12798,12799,12801],{},[3533,12800,5519],{}," — модуль Appearance недоступний (рідко на реальному телефоні; трапляється в нестандартних середовищах).",[3512,12803,12804,12805,12808,12809,12812],{},"Хук ",[3525,12806,12807],{},"підписується"," на зміни: користувач увімкнув Dark Mode — компонент ",[3525,12810,12811],{},"перерендериться"," з новим значенням. Вам не треба самим крутити таймери чи «перевіряти раз на хвилину».",[3512,12814,12815,12816,12784],{},"Під капотом — модуль ",[3525,12817,12818],{},[3533,12819,3937],{},[3973,12821,12822,12828],{},[3564,12823,12824,12827],{},[3533,12825,12826],{},"Appearance.getColorScheme()"," — зчитати зараз (без підписки);",[3564,12829,12830,12833],{},[3533,12831,12832],{},"Appearance.addChangeListener(...)"," — імперативна підписка.",[3512,12835,12836],{},"У UI-коді достатньо хука: він уже підписаний і зручний у функційних компонентах.",[4047,12838,12839,3980,12842,12845,12846,12848,12849,3609],{},[3525,12840,12841],{},"Аналогія з вебом.",[3533,12843,12844],{},"window.matchMedia('(prefers-color-scheme: dark)')"," + listener. У RN — ",[3533,12847,3933],{},", без ручного ",[3533,12850,12851],{},"matchMedia",[4496,12853,12855],{"device":4498,"filename":12854,"title":3543},"UseColorSchemeDemo.tsx",[4143,12856,12858],{"className":4145,"code":12857,"language":4147,"meta":4148,"style":4148},"import { View, Text, StyleSheet, useColorScheme } from 'react-native';\n\nexport default function App() {\n  const scheme = useColorScheme();\n  const isDark = scheme === 'dark';\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: isDark ? '#000' : '#F8FAFC' }]}>\n      \u003CText style={[styles.label, { color: isDark ? '#a1a1aa' : '#64748b' }]}>\n        useColorScheme()\n      \u003C\u002FText>\n      \u003CText style={[styles.value, { color: isDark ? '#f5f5f7' : '#0f172a' }]}>\n        {scheme ?? 'null'}\n      \u003C\u002FText>\n      \u003CText style={[styles.hint, { color: isDark ? '#a1a1aa' : '#64748b' }]}>\n        Змініть тему ОС (або тему сайту в браузері) — значення може оновитись.\n        У Expo Go перемикайте appearance симулятора \u002F телефону.\n      \u003C\u002FText>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 24, justifyContent: 'center', gap: 8 },\n  label: { fontSize: 13, fontWeight: '600', textTransform: 'uppercase' },\n  value: { fontSize: 32, fontWeight: '800' },\n  hint: { fontSize: 13, lineHeight: 18, marginTop: 8 },\n});\n",[3533,12859,12860,12888,12892,12904,12918,12936,12940,12946,12987,13028,13033,13041,13083,13097,13105,13145,13150,13155,13163,13171,13175,13179,13183,13199,13229,13255,13275,13299],{"__ignoreMap":4148},[4152,12861,12862,12864,12866,12868,12870,12872,12874,12876,12878,12880,12882,12884,12886],{"class":4154,"line":4155},[4152,12863,4511],{"class":4510},[4152,12865,4514],{"class":4169},[4152,12867,3967],{"class":4181},[4152,12869,3536],{"class":4169},[4152,12871,4010],{"class":4181},[4152,12873,3536],{"class":4169},[4152,12875,3572],{"class":4181},[4152,12877,3536],{"class":4169},[4152,12879,3543],{"class":4181},[4152,12881,4520],{"class":4169},[4152,12883,4523],{"class":4510},[4152,12885,4557],{"class":4202},[4152,12887,4529],{"class":4169},[4152,12889,12890],{"class":4154,"line":4532},[4152,12891,4566],{"emptyLinePlaceholder":4565},[4152,12893,12894,12896,12898,12900,12902],{"class":4154,"line":4562},[4152,12895,4572],{"class":4510},[4152,12897,4575],{"class":4510},[4152,12899,4578],{"class":4173},[4152,12901,4582],{"class":4581},[4152,12903,4585],{"class":4169},[4152,12905,12906,12908,12911,12913,12915],{"class":4154,"line":4569},[4152,12907,4591],{"class":4173},[4152,12909,12910],{"class":4597}," scheme",[4152,12912,4964],{"class":4169},[4152,12914,3543],{"class":4581},[4152,12916,12917],{"class":4169},"();\n",[4152,12919,12920,12922,12925,12927,12930,12932,12934],{"class":4154,"line":4588},[4152,12921,4591],{"class":4173},[4152,12923,12924],{"class":4597}," isDark",[4152,12926,4964],{"class":4169},[4152,12928,12929],{"class":4181},"scheme",[4152,12931,10868],{"class":4169},[4152,12933,10823],{"class":4202},[4152,12935,4529],{"class":4169},[4152,12937,12938],{"class":4154,"line":4620},[4152,12939,4566],{"emptyLinePlaceholder":4565},[4152,12941,12942,12944],{"class":4154,"line":4625},[4152,12943,4628],{"class":4510},[4152,12945,4631],{"class":4169},[4152,12947,12948,12950,12952,12954,12956,12958,12960,12962,12964,12966,12968,12970,12972,12974,12977,12979,12981,12983,12985],{"class":4154,"line":4634},[4152,12949,4637],{"class":4158},[4152,12951,3967],{"class":4162},[4152,12953,4166],{"class":4165},[4152,12955,4170],{"class":4169},[4152,12957,4174],{"class":4173},[4152,12959,6047],{"class":4177},[4152,12961,4648],{"class":4181},[4152,12963,3609],{"class":4177},[4152,12965,4653],{"class":4181},[4152,12967,9098],{"class":4177},[4152,12969,4199],{"class":4181},[4152,12971,12924],{"class":4181},[4152,12973,4901],{"class":4169},[4152,12975,12976],{"class":4202}," '#000'",[4152,12978,4907],{"class":4169},[4152,12980,4203],{"class":4202},[4152,12982,9110],{"class":4177},[4152,12984,4209],{"class":4173},[4152,12986,4658],{"class":4158},[4152,12988,12989,12991,12993,12995,12997,12999,13001,13003,13005,13007,13009,13011,13013,13015,13018,13020,13022,13024,13026],{"class":4154,"line":4661},[4152,12990,4664],{"class":4158},[4152,12992,4010],{"class":4162},[4152,12994,4166],{"class":4165},[4152,12996,4170],{"class":4169},[4152,12998,4174],{"class":4173},[4152,13000,6047],{"class":4177},[4152,13002,4648],{"class":4181},[4152,13004,3609],{"class":4177},[4152,13006,5465],{"class":4181},[4152,13008,9098],{"class":4177},[4152,13010,5068],{"class":4181},[4152,13012,12924],{"class":4181},[4152,13014,4901],{"class":4169},[4152,13016,13017],{"class":4202}," '#a1a1aa'",[4152,13019,4907],{"class":4169},[4152,13021,5094],{"class":4202},[4152,13023,9110],{"class":4177},[4152,13025,4209],{"class":4173},[4152,13027,4658],{"class":4158},[4152,13029,13030],{"class":4154,"line":4697},[4152,13031,13032],{"class":4169},"        useColorScheme()\n",[4152,13034,13035,13037,13039],{"class":4154,"line":4721},[4152,13036,4730],{"class":4158},[4152,13038,4010],{"class":4162},[4152,13040,4658],{"class":4158},[4152,13042,13043,13045,13047,13049,13051,13053,13055,13057,13059,13062,13064,13066,13068,13070,13073,13075,13077,13079,13081],{"class":4154,"line":4727},[4152,13044,4664],{"class":4158},[4152,13046,4010],{"class":4162},[4152,13048,4166],{"class":4165},[4152,13050,4170],{"class":4169},[4152,13052,4174],{"class":4173},[4152,13054,6047],{"class":4177},[4152,13056,4648],{"class":4181},[4152,13058,3609],{"class":4177},[4152,13060,13061],{"class":4181},"value",[4152,13063,9098],{"class":4177},[4152,13065,5068],{"class":4181},[4152,13067,12924],{"class":4181},[4152,13069,4901],{"class":4169},[4152,13071,13072],{"class":4202}," '#f5f5f7'",[4152,13074,4907],{"class":4169},[4152,13076,5071],{"class":4202},[4152,13078,9110],{"class":4177},[4152,13080,4209],{"class":4173},[4152,13082,4658],{"class":4158},[4152,13084,13085,13087,13089,13092,13095],{"class":4154,"line":4737},[4152,13086,7708],{"class":4173},[4152,13088,12929],{"class":4181},[4152,13090,13091],{"class":4169}," ??",[4152,13093,13094],{"class":4202}," 'null'",[4152,13096,4782],{"class":4173},[4152,13098,13099,13101,13103],{"class":4154,"line":4745},[4152,13100,4730],{"class":4158},[4152,13102,4010],{"class":4162},[4152,13104,4658],{"class":4158},[4152,13106,13107,13109,13111,13113,13115,13117,13119,13121,13123,13125,13127,13129,13131,13133,13135,13137,13139,13141,13143],{"class":4154,"line":4785},[4152,13108,4664],{"class":4158},[4152,13110,4010],{"class":4162},[4152,13112,4166],{"class":4165},[4152,13114,4170],{"class":4169},[4152,13116,4174],{"class":4173},[4152,13118,6047],{"class":4177},[4152,13120,4648],{"class":4181},[4152,13122,3609],{"class":4177},[4152,13124,4714],{"class":4181},[4152,13126,9098],{"class":4177},[4152,13128,5068],{"class":4181},[4152,13130,12924],{"class":4181},[4152,13132,4901],{"class":4169},[4152,13134,13017],{"class":4202},[4152,13136,4907],{"class":4169},[4152,13138,5094],{"class":4202},[4152,13140,9110],{"class":4177},[4152,13142,4209],{"class":4173},[4152,13144,4658],{"class":4158},[4152,13146,13147],{"class":4154,"line":4808},[4152,13148,13149],{"class":4169},"        Змініть тему ОС (або тему сайту в браузері) — значення може оновитись.\n",[4152,13151,13152],{"class":4154,"line":4822},[4152,13153,13154],{"class":4169},"        У Expo Go перемикайте appearance симулятора \u002F телефону.\n",[4152,13156,13157,13159,13161],{"class":4154,"line":4841},[4152,13158,4730],{"class":4158},[4152,13160,4010],{"class":4162},[4152,13162,4658],{"class":4158},[4152,13164,13165,13167,13169],{"class":4154,"line":4858},[4152,13166,4933],{"class":4158},[4152,13168,3967],{"class":4162},[4152,13170,4658],{"class":4158},[4152,13172,13173],{"class":4154,"line":4866},[4152,13174,4943],{"class":4169},[4152,13176,13177],{"class":4154,"line":4872},[4152,13178,4782],{"class":4169},[4152,13180,13181],{"class":4154,"line":4921},[4152,13182,4566],{"emptyLinePlaceholder":4565},[4152,13184,13185,13187,13189,13191,13193,13195,13197],{"class":4154,"line":4930},[4152,13186,4959],{"class":4173},[4152,13188,4831],{"class":4597},[4152,13190,4964],{"class":4169},[4152,13192,3572],{"class":4181},[4152,13194,3609],{"class":4169},[4152,13196,4264],{"class":4581},[4152,13198,4973],{"class":4169},[4152,13200,13201,13203,13205,13207,13209,13211,13213,13215,13217,13219,13221,13223,13225,13227],{"class":4154,"line":4940},[4152,13202,4979],{"class":4181},[4152,13204,4514],{"class":4169},[4152,13206,4182],{"class":4181},[4152,13208,4186],{"class":4185},[4152,13210,3536],{"class":4169},[4152,13212,4191],{"class":4181},[4152,13214,5011],{"class":4185},[4152,13216,3536],{"class":4169},[4152,13218,5640],{"class":4181},[4152,13220,5022],{"class":4202},[4152,13222,3536],{"class":4169},[4152,13224,5647],{"class":4181},[4152,13226,12411],{"class":4185},[4152,13228,5074],{"class":4169},[4152,13230,13231,13233,13235,13237,13239,13241,13243,13245,13247,13250,13253],{"class":4154,"line":4946},[4152,13232,5750],{"class":4181},[4152,13234,4514],{"class":4169},[4152,13236,5052],{"class":4181},[4152,13238,5087],{"class":4185},[4152,13240,3536],{"class":4169},[4152,13242,5060],{"class":4181},[4152,13244,5763],{"class":4202},[4152,13246,3536],{"class":4169},[4152,13248,13249],{"class":4181},"textTransform:",[4152,13251,13252],{"class":4202}," 'uppercase'",[4152,13254,5074],{"class":4169},[4152,13256,13257,13260,13262,13264,13267,13269,13271,13273],{"class":4154,"line":4951},[4152,13258,13259],{"class":4181},"  value:",[4152,13261,4514],{"class":4169},[4152,13263,5052],{"class":4181},[4152,13265,13266],{"class":4185}," 32",[4152,13268,3536],{"class":4169},[4152,13270,5060],{"class":4181},[4152,13272,5689],{"class":4202},[4152,13274,5074],{"class":4169},[4152,13276,13277,13279,13281,13283,13285,13287,13289,13291,13293,13295,13297],{"class":4154,"line":4956},[4152,13278,5080],{"class":4181},[4152,13280,4514],{"class":4169},[4152,13282,5052],{"class":4181},[4152,13284,5087],{"class":4185},[4152,13286,3536],{"class":4169},[4152,13288,5099],{"class":4181},[4152,13290,5102],{"class":4185},[4152,13292,3536],{"class":4169},[4152,13294,6654],{"class":4181},[4152,13296,12411],{"class":4185},[4152,13298,5074],{"class":4169},[4152,13300,13301],{"class":4154,"line":4976},[4152,13302,5222],{"class":4169},[4047,13304,13305,13315,13344],{},[3512,13306,13307,13310,13311,13314],{},[3525,13308,13309],{},"Лише система — мало для продукту."," Багато людей хочуть: «телефон у мене темний, але ",[3525,13312,13313],{},"цей"," застосунок лиши світлим» (наприклад, читати при денному світлі) або навпаки. Тому зрілі продукти дають вибір:",[3973,13316,13317,13329,13337],{},[3564,13318,13319,3627,13322,13325,13326,13328],{},[3525,13320,13321],{},"Як у системі",[3629,13323,13324],{},"system",") — слухаємо ",[3533,13327,3543],{},";",[3564,13330,13331,3627,13334,13336],{},[3525,13332,13333],{},"Завжди світла",[3629,13335,3631],{},");",[3564,13338,13339,3627,13342,4388],{},[3525,13340,13341],{},"Завжди темна",[3629,13343,3638],{},[3512,13345,13346,13347,13349,13350,13353,13354,13356,13357,13360,13361,3609],{},"Тоді ",[3533,13348,3543],{}," — ",[3525,13351,13352],{},"один із входів"," для режиму ",[3533,13355,13324],{},", а не єдине джерело істини для всього UI. Нижче з’явиться ",[3533,13358,13359],{},"preference"," + функція ",[3533,13362,13363],{},"resolve",[4024,13365,13366,13369,13370,3980,13373,13375,13376,13379,13380,13383],{},[3525,13367,13368],{},"Браузер ≠ телефон."," У ",[3533,13371,13372],{},"::react-native-preview",[3533,13374,3543],{}," може йти від теми ",[3525,13377,13378],{},"сайту"," або браузера. У Expo Go — від ",[3525,13381,13382],{},"симулятора\u002Fтелефона",". Завжди перевіряйте Dark Mode там, де користувач реально відкриє застосунок.",[3790,13385],{},[3507,13387,13389,13390,13393],{"id":13388},"дві-палітри-з-однаковими-ключами","Дві палітри з ",[3525,13391,13392],{},"однаковими"," ключами",[3512,13395,13396,13397,13400,13401,13404],{},"Чому саме ",[3525,13398,13399],{},"дві таблиці",", а не ",[3533,13402,13403],{},"isDark ? '#000' : '#fff'"," у кожному рядку?",[3561,13406,13407,13416,13422],{},[3564,13408,13409,13349,13412,13415],{},[3525,13410,13411],{},"Один контракт для TypeScript",[3533,13413,13414],{},"ColorTokens"," з тими ж полями; забутий ключ у dark видно одразу.",[3564,13417,13418,13421],{},[3525,13419,13420],{},"Дизайн узгоджує набори",", а не «випадкові тернарники» в 40 файлах.",[3564,13423,13424,13427,13428,3609],{},[3525,13425,13426],{},"Компонент не розгалужується"," на light\u002Fdark — лише читає ",[3533,13429,13430],{},"colors.X",[4143,13432,13434],{"className":9889,"code":13433,"language":9891,"meta":4148,"style":4148},"export 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",[3533,13435,13436,13447,13455,13463,13471,13479,13487,13495,13503,13511,13519,13530,13534,13545,13553,13561,13569,13577,13585,13593,13601,13609,13617],{"__ignoreMap":4148},[4152,13437,13438,13440,13442,13445],{"class":4154,"line":4155},[4152,13439,4572],{"class":4510},[4152,13441,11030],{"class":4173},[4152,13443,13444],{"class":4597}," lightColors",[4152,13446,10591],{"class":4169},[4152,13448,13449,13451,13453],{"class":4154,"line":4532},[4152,13450,10596],{"class":4181},[4152,13452,4203],{"class":4202},[4152,13454,4819],{"class":4169},[4152,13456,13457,13459,13461],{"class":4154,"line":4562},[4152,13458,10605],{"class":4181},[4152,13460,10608],{"class":4202},[4152,13462,4819],{"class":4169},[4152,13464,13465,13467,13469],{"class":4154,"line":4569},[4152,13466,10615],{"class":4181},[4152,13468,10618],{"class":4202},[4152,13470,4819],{"class":4169},[4152,13472,13473,13475,13477],{"class":4154,"line":4588},[4152,13474,10625],{"class":4181},[4152,13476,10628],{"class":4202},[4152,13478,4819],{"class":4169},[4152,13480,13481,13483,13485],{"class":4154,"line":4620},[4152,13482,10635],{"class":4181},[4152,13484,5171],{"class":4202},[4152,13486,4819],{"class":4169},[4152,13488,13489,13491,13493],{"class":4154,"line":4625},[4152,13490,10644],{"class":4181},[4152,13492,10647],{"class":4202},[4152,13494,4819],{"class":4169},[4152,13496,13497,13499,13501],{"class":4154,"line":4634},[4152,13498,10654],{"class":4181},[4152,13500,5731],{"class":4202},[4152,13502,4819],{"class":4169},[4152,13504,13505,13507,13509],{"class":4154,"line":4661},[4152,13506,10663],{"class":4181},[4152,13508,10666],{"class":4202},[4152,13510,4819],{"class":4169},[4152,13512,13513,13515,13517],{"class":4154,"line":4697},[4152,13514,10673],{"class":4181},[4152,13516,10608],{"class":4202},[4152,13518,4819],{"class":4169},[4152,13520,13521,13524,13526,13528],{"class":4154,"line":4721},[4152,13522,13523],{"class":4169},"} ",[4152,13525,11027],{"class":4510},[4152,13527,11030],{"class":4173},[4152,13529,4529],{"class":4169},[4152,13531,13532],{"class":4154,"line":4727},[4152,13533,4566],{"emptyLinePlaceholder":4565},[4152,13535,13536,13538,13540,13543],{"class":4154,"line":4737},[4152,13537,4572],{"class":4510},[4152,13539,11030],{"class":4173},[4152,13541,13542],{"class":4597}," darkColors",[4152,13544,10591],{"class":4169},[4152,13546,13547,13549,13551],{"class":4154,"line":4745},[4152,13548,10596],{"class":4181},[4152,13550,10702],{"class":4202},[4152,13552,4819],{"class":4169},[4152,13554,13555,13557,13559],{"class":4154,"line":4785},[4152,13556,10605],{"class":4181},[4152,13558,10711],{"class":4202},[4152,13560,4819],{"class":4169},[4152,13562,13563,13565,13567],{"class":4154,"line":4808},[4152,13564,10615],{"class":4181},[4152,13566,10720],{"class":4202},[4152,13568,4819],{"class":4169},[4152,13570,13571,13573,13575],{"class":4154,"line":4822},[4152,13572,10625],{"class":4181},[4152,13574,10729],{"class":4202},[4152,13576,4819],{"class":4169},[4152,13578,13579,13581,13583],{"class":4154,"line":4841},[4152,13580,10635],{"class":4181},[4152,13582,10738],{"class":4202},[4152,13584,4819],{"class":4169},[4152,13586,13587,13589,13591],{"class":4154,"line":4858},[4152,13588,10644],{"class":4181},[4152,13590,5171],{"class":4202},[4152,13592,4819],{"class":4169},[4152,13594,13595,13597,13599],{"class":4154,"line":4866},[4152,13596,10654],{"class":4181},[4152,13598,10755],{"class":4202},[4152,13600,4819],{"class":4169},[4152,13602,13603,13605,13607],{"class":4154,"line":4872},[4152,13604,10663],{"class":4181},[4152,13606,10764],{"class":4202},[4152,13608,4819],{"class":4169},[4152,13610,13611,13613,13615],{"class":4154,"line":4921},[4152,13612,10673],{"class":4181},[4152,13614,10608],{"class":4202},[4152,13616,4819],{"class":4169},[4152,13618,13619,13621,13623,13625],{"class":4154,"line":4930},[4152,13620,13523],{"class":4169},[4152,13622,11027],{"class":4510},[4152,13624,11030],{"class":4173},[4152,13626,4529],{"class":4169},[3512,13628,13629],{},"Перемикання в одному місці:",[4143,13631,13633],{"className":9889,"code":13632,"language":9891,"meta":4148,"style":4148},"function colorsForScheme(scheme: 'light' | 'dark') {\n  return scheme === 'dark' ? darkColors : lightColors;\n}\n\nconst colors = colorsForScheme(scheme);\n",[3533,13634,13635,13658,13680,13684,13688],{"__ignoreMap":4148},[4152,13636,13637,13639,13642,13644,13646,13649,13651,13653,13655],{"class":4154,"line":4155},[4152,13638,9295],{"class":4173},[4152,13640,13641],{"class":4581}," colorsForScheme",[4152,13643,4611],{"class":4169},[4152,13645,12929],{"class":4181},[4152,13647,13648],{"class":4169},": ",[4152,13650,10817],{"class":4202},[4152,13652,10820],{"class":4169},[4152,13654,10823],{"class":4202},[4152,13656,13657],{"class":4169},") {\n",[4152,13659,13660,13662,13664,13666,13668,13670,13673,13675,13678],{"class":4154,"line":4532},[4152,13661,4628],{"class":4510},[4152,13663,12910],{"class":4181},[4152,13665,10868],{"class":4169},[4152,13667,10823],{"class":4202},[4152,13669,10873],{"class":4169},[4152,13671,13672],{"class":4181},"darkColors",[4152,13674,10878],{"class":4169},[4152,13676,13677],{"class":4181},"lightColors",[4152,13679,4529],{"class":4169},[4152,13681,13682],{"class":4154,"line":4562},[4152,13683,4782],{"class":4169},[4152,13685,13686],{"class":4154,"line":4569},[4152,13687,4566],{"emptyLinePlaceholder":4565},[4152,13689,13690,13692,13694,13696,13699,13701,13703],{"class":4154,"line":4588},[4152,13691,4959],{"class":4173},[4152,13693,9103],{"class":4597},[4152,13695,4964],{"class":4169},[4152,13697,13698],{"class":4581},"colorsForScheme",[4152,13700,4611],{"class":4169},[4152,13702,12929],{"class":4181},[4152,13704,4617],{"class":4169},[3512,13706,13707,13708,13349,13711,3980,13714,9508,13717,3609],{},"Усі екрани читають ",[3533,13709,13710],{},"colors.*",[3525,13712,13713],{},"жодного",[3533,13715,13716],{},"#F8FAFC",[3533,13718,9511],{},[3589,13720,13722,5847,13724,13726],{"id":13721},"background-vs-surface-навіщо-два-темні-два-світлі",[3533,13723,9618],{},[3533,13725,3660],{}," — навіщо два «темні» \u002F два «світлі»",[3512,13728,13729,13730,13733,13734,13736,13737,13739,13740,13742,13743,13746],{},"Якщо і екран, і картка одного кольору, список ",[3525,13731,13732],{},"зливається"," в одну пляму. У світлій темі часто: фон екрана злегка сірий (",[3533,13735,9618],{},"), картка біла (",[3533,13738,3660],{},"). У темній: фон чорний, картка темно-сіра (",[3533,13741,3671],{}," тощо). Користувач ",[3525,13744,13745],{},"відчуває глибину"," без важких тіней.",[3589,13748,13750],{"id":13749},"контраст-і-доступність-на-рівні-інтуїції","Контраст і доступність (на рівні інтуїції)",[4024,13752,13753,13756,13757,3948,13760,13763,13764,13767,13768,13771,13772,13775],{},[3525,13754,13755],{},"Контраст."," У dark не достатньо «зробити фон чорним». Сірий текст ",[3533,13758,13759],{},"#64748B",[3533,13761,13762],{},"#000"," може стати ",[3525,13765,13766],{},"занадто"," тьмяним; інколи secondary у dark роблять світлішим (",[3533,13769,13770],{},"#A1A1AA","). Перевіряйте на реальному екрані (яскравість, OLED). Повний аудит a11y — окрема тема пізніше; зараз мінімум: ",[3525,13773,13774],{},"прочитати"," заголовок і підпис очима.",[3589,13777,13779,13780,13782],{"id":13778},"чого-не-класти-в-палітру-теми","Чого ",[3525,13781,3963],{}," класти в палітру теми",[3973,13784,13785,13788,13793],{},[3564,13786,13787],{},"URL фото обкладинки;",[3564,13789,13790,13791,13336],{},"«магічні» відступи layout (вони в ",[3533,13792,12680],{},[3564,13794,13795,13796,13799,13800,4388],{},"колір, який ",[3525,13797,13798],{},"завжди"," білий на логотипі вендора (окремий виняток, не ",[3533,13801,9670],{},[3589,13803,13805],{"id":13804},"приклад-перемикач-семантичні-кольори","Приклад: перемикач + семантичні кольори",[4496,13807,13810],{"device":4498,"filename":13808,"title":13809},"ThemeTogglePlayground.tsx","Семантичні кольори · toggle",[4143,13811,13813],{"className":4145,"code":13812,"language":4147,"meta":4148,"style":4148},"import { useState } from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\n\nconst light = {\n  background: '#F8FAFC',\n  surface: '#FFFFFF',\n  text: '#0F172A',\n  textSecondary: '#64748B',\n  primary: '#2563EB',\n  border: '#E2E8F0',\n  onPrimary: '#FFFFFF',\n};\n\nconst dark = {\n  background: '#000000',\n  surface: '#1C1C1E',\n  text: '#F5F5F7',\n  textSecondary: '#A1A1AA',\n  primary: '#3B82F6',\n  border: '#3A3A3C',\n  onPrimary: '#FFFFFF',\n};\n\nexport default function App() {\n  const [mode, setMode] = useState\u003C'light' | 'dark'>('light');\n  const c = mode === 'dark' ? dark : light;\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: c.background }]}>\n      \u003CView style={styles.row}>\n        \u003CPressable\n          onPress={() => setMode('light')}\n          style={[\n            styles.chip,\n            {\n              backgroundColor: mode === 'light' ? c.primary : c.surface,\n              borderColor: c.border,\n            },\n          ]}\n        >\n          \u003CText\n            style={{\n              color: mode === 'light' ? c.onPrimary : c.text,\n              fontWeight: '600',\n            }}\n          >\n            Світла\n          \u003C\u002FText>\n        \u003C\u002FPressable>\n        \u003CPressable\n          onPress={() => setMode('dark')}\n          style={[\n            styles.chip,\n            {\n              backgroundColor: mode === 'dark' ? c.primary : c.surface,\n              borderColor: c.border,\n            },\n          ]}\n        >\n          \u003CText\n            style={{\n              color: mode === 'dark' ? c.onPrimary : c.text,\n              fontWeight: '600',\n            }}\n          >\n            Темна\n          \u003C\u002FText>\n        \u003C\u002FPressable>\n      \u003C\u002FView>\n\n      \u003CView\n        style={[\n          styles.card,\n          { backgroundColor: c.surface, borderColor: c.border },\n        ]}\n      >\n        \u003CText style={[styles.cardTitle, { color: c.text }]}>Карпати 2026\u003C\u002FText>\n        \u003CText style={{ color: c.textSecondary, marginTop: 6, lineHeight: 20 }}>\n          Кольори з палітри «{mode}». Той самий JSX — інші значення токенів.\n        \u003C\u002FText>\n        \u003CView style={[styles.badge, { backgroundColor: c.primary }]}>\n          \u003CText style={{ color: c.onPrimary, fontWeight: '700', fontSize: 12 }}>\n            primary\n          \u003C\u002FText>\n        \u003C\u002FView>\n      \u003C\u002FView>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 20, gap: 16, justifyContent: 'center' },\n  row: { flexDirection: 'row', gap: 8 },\n  chip: {\n    paddingHorizontal: 14,\n    paddingVertical: 10,\n    borderRadius: 10,\n    borderWidth: 1,\n  },\n  card: {\n    borderRadius: 16,\n    borderWidth: 1,\n    padding: 16,\n  },\n  cardTitle: { fontSize: 18, fontWeight: '700' },\n  badge: {\n    alignSelf: 'flex-start',\n    marginTop: 12,\n    paddingHorizontal: 10,\n    paddingVertical: 6,\n    borderRadius: 8,\n  },\n});\n",[3533,13814,13815,13831,13859,13863,13871,13879,13887,13895,13903,13911,13919,13927,13931,13935,13943,13951,13959,13967,13975,13983,13991,13999,14003,14007,14019,14049,14073,14077,14083,14119,14141,14147,14170,14180,14191,14196,14225,14238,14243,14250,14254,14260,14271,14300,14309,14316,14321,14326,14334,14342,14348,14370,14380,14390,14394,14423,14435,14439,14445,14449,14455,14465,14493,14501,14507,14511,14516,14524,14532,14540,14544,14550,14560,14570,14594,14600,14604,14648,14688,14702,14710,14747,14787,14792,14800,14808,14816,14824,14828,14832,14836,14852,14882,14900,14906,14914,14922,14930,14938,14942,14948,14956,14964,14972,14976,14994,15001,15011,15020,15028,15036,15044,15048],{"__ignoreMap":4148},[4152,13816,13817,13819,13821,13823,13825,13827,13829],{"class":4154,"line":4155},[4152,13818,4511],{"class":4510},[4152,13820,4514],{"class":4169},[4152,13822,4517],{"class":4181},[4152,13824,4520],{"class":4169},[4152,13826,4523],{"class":4510},[4152,13828,4526],{"class":4202},[4152,13830,4529],{"class":4169},[4152,13832,13833,13835,13837,13839,13841,13843,13845,13847,13849,13851,13853,13855,13857],{"class":4154,"line":4532},[4152,13834,4511],{"class":4510},[4152,13836,4514],{"class":4169},[4152,13838,3967],{"class":4181},[4152,13840,3536],{"class":4169},[4152,13842,4010],{"class":4181},[4152,13844,3536],{"class":4169},[4152,13846,4493],{"class":4181},[4152,13848,3536],{"class":4169},[4152,13850,3572],{"class":4181},[4152,13852,4520],{"class":4169},[4152,13854,4523],{"class":4510},[4152,13856,4557],{"class":4202},[4152,13858,4529],{"class":4169},[4152,13860,13861],{"class":4154,"line":4562},[4152,13862,4566],{"emptyLinePlaceholder":4565},[4152,13864,13865,13867,13869],{"class":4154,"line":4569},[4152,13866,4959],{"class":4173},[4152,13868,10588],{"class":4597},[4152,13870,10591],{"class":4169},[4152,13872,13873,13875,13877],{"class":4154,"line":4588},[4152,13874,10596],{"class":4181},[4152,13876,4203],{"class":4202},[4152,13878,4819],{"class":4169},[4152,13880,13881,13883,13885],{"class":4154,"line":4620},[4152,13882,10605],{"class":4181},[4152,13884,10608],{"class":4202},[4152,13886,4819],{"class":4169},[4152,13888,13889,13891,13893],{"class":4154,"line":4625},[4152,13890,10615],{"class":4181},[4152,13892,10618],{"class":4202},[4152,13894,4819],{"class":4169},[4152,13896,13897,13899,13901],{"class":4154,"line":4634},[4152,13898,10625],{"class":4181},[4152,13900,10628],{"class":4202},[4152,13902,4819],{"class":4169},[4152,13904,13905,13907,13909],{"class":4154,"line":4661},[4152,13906,10635],{"class":4181},[4152,13908,5171],{"class":4202},[4152,13910,4819],{"class":4169},[4152,13912,13913,13915,13917],{"class":4154,"line":4697},[4152,13914,10654],{"class":4181},[4152,13916,5731],{"class":4202},[4152,13918,4819],{"class":4169},[4152,13920,13921,13923,13925],{"class":4154,"line":4721},[4152,13922,10673],{"class":4181},[4152,13924,10608],{"class":4202},[4152,13926,4819],{"class":4169},[4152,13928,13929],{"class":4154,"line":4727},[4152,13930,10682],{"class":4169},[4152,13932,13933],{"class":4154,"line":4737},[4152,13934,4566],{"emptyLinePlaceholder":4565},[4152,13936,13937,13939,13941],{"class":4154,"line":4745},[4152,13938,4959],{"class":4173},[4152,13940,10693],{"class":4597},[4152,13942,10591],{"class":4169},[4152,13944,13945,13947,13949],{"class":4154,"line":4785},[4152,13946,10596],{"class":4181},[4152,13948,10702],{"class":4202},[4152,13950,4819],{"class":4169},[4152,13952,13953,13955,13957],{"class":4154,"line":4808},[4152,13954,10605],{"class":4181},[4152,13956,10711],{"class":4202},[4152,13958,4819],{"class":4169},[4152,13960,13961,13963,13965],{"class":4154,"line":4822},[4152,13962,10615],{"class":4181},[4152,13964,10720],{"class":4202},[4152,13966,4819],{"class":4169},[4152,13968,13969,13971,13973],{"class":4154,"line":4841},[4152,13970,10625],{"class":4181},[4152,13972,10729],{"class":4202},[4152,13974,4819],{"class":4169},[4152,13976,13977,13979,13981],{"class":4154,"line":4858},[4152,13978,10635],{"class":4181},[4152,13980,10738],{"class":4202},[4152,13982,4819],{"class":4169},[4152,13984,13985,13987,13989],{"class":4154,"line":4866},[4152,13986,10654],{"class":4181},[4152,13988,10755],{"class":4202},[4152,13990,4819],{"class":4169},[4152,13992,13993,13995,13997],{"class":4154,"line":4872},[4152,13994,10673],{"class":4181},[4152,13996,10608],{"class":4202},[4152,13998,4819],{"class":4169},[4152,14000,14001],{"class":4154,"line":4921},[4152,14002,10682],{"class":4169},[4152,14004,14005],{"class":4154,"line":4930},[4152,14006,4566],{"emptyLinePlaceholder":4565},[4152,14008,14009,14011,14013,14015,14017],{"class":4154,"line":4940},[4152,14010,4572],{"class":4510},[4152,14012,4575],{"class":4510},[4152,14014,4578],{"class":4173},[4152,14016,4582],{"class":4581},[4152,14018,4585],{"class":4169},[4152,14020,14021,14023,14025,14027,14029,14031,14033,14035,14037,14039,14041,14043,14045,14047],{"class":4154,"line":4946},[4152,14022,4591],{"class":4173},[4152,14024,4594],{"class":4169},[4152,14026,10803],{"class":4597},[4152,14028,3536],{"class":4169},[4152,14030,10808],{"class":4597},[4152,14032,4606],{"class":4169},[4152,14034,4517],{"class":4581},[4152,14036,4159],{"class":4169},[4152,14038,10817],{"class":4202},[4152,14040,10820],{"class":4169},[4152,14042,10823],{"class":4202},[4152,14044,10826],{"class":4169},[4152,14046,10817],{"class":4202},[4152,14048,4617],{"class":4169},[4152,14050,14051,14053,14055,14057,14059,14061,14063,14065,14067,14069,14071],{"class":4154,"line":4951},[4152,14052,4591],{"class":4173},[4152,14054,10861],{"class":4597},[4152,14056,4964],{"class":4169},[4152,14058,10803],{"class":4181},[4152,14060,10868],{"class":4169},[4152,14062,10823],{"class":4202},[4152,14064,10873],{"class":4169},[4152,14066,3638],{"class":4181},[4152,14068,10878],{"class":4169},[4152,14070,3631],{"class":4181},[4152,14072,4529],{"class":4169},[4152,14074,14075],{"class":4154,"line":4956},[4152,14076,4566],{"emptyLinePlaceholder":4565},[4152,14078,14079,14081],{"class":4154,"line":4976},[4152,14080,4628],{"class":4510},[4152,14082,4631],{"class":4169},[4152,14084,14085,14087,14089,14091,14093,14095,14097,14099,14101,14103,14105,14107,14109,14111,14113,14115,14117],{"class":4154,"line":4985},[4152,14086,4637],{"class":4158},[4152,14088,3967],{"class":4162},[4152,14090,4166],{"class":4165},[4152,14092,4170],{"class":4169},[4152,14094,4174],{"class":4173},[4152,14096,6047],{"class":4177},[4152,14098,4648],{"class":4181},[4152,14100,3609],{"class":4177},[4152,14102,4653],{"class":4181},[4152,14104,9098],{"class":4177},[4152,14106,4199],{"class":4181},[4152,14108,10861],{"class":4181},[4152,14110,3609],{"class":4177},[4152,14112,9618],{"class":4181},[4152,14114,9110],{"class":4177},[4152,14116,4209],{"class":4173},[4152,14118,4658],{"class":4158},[4152,14120,14121,14123,14125,14127,14129,14131,14133,14135,14137,14139],{"class":4154,"line":4995},[4152,14122,4664],{"class":4158},[4152,14124,3967],{"class":4162},[4152,14126,4166],{"class":4165},[4152,14128,4170],{"class":4169},[4152,14130,4174],{"class":4173},[4152,14132,4648],{"class":4181},[4152,14134,3609],{"class":4177},[4152,14136,6837],{"class":4181},[4152,14138,4209],{"class":4173},[4152,14140,4658],{"class":4158},[4152,14142,14143,14145],{"class":4154,"line":5005},[4152,14144,4875],{"class":4158},[4152,14146,4742],{"class":4162},[4152,14148,14149,14152,14154,14156,14158,14160,14162,14164,14166,14168],{"class":4154,"line":5016},[4152,14150,14151],{"class":4165},"          onPress",[4152,14153,4170],{"class":4169},[4152,14155,4174],{"class":4173},[4152,14157,4755],{"class":4177},[4152,14159,4758],{"class":4173},[4152,14161,11110],{"class":4581},[4152,14163,4611],{"class":4177},[4152,14165,10817],{"class":4202},[4152,14167,3910],{"class":4177},[4152,14169,4782],{"class":4173},[4152,14171,14172,14174,14176,14178],{"class":4154,"line":5027},[4152,14173,6217],{"class":4165},[4152,14175,4170],{"class":4169},[4152,14177,4174],{"class":4173},[4152,14179,9163],{"class":4177},[4152,14181,14182,14185,14187,14189],{"class":4154,"line":5038},[4152,14183,14184],{"class":4181},"            styles",[4152,14186,3609],{"class":4177},[4152,14188,11139],{"class":4181},[4152,14190,4819],{"class":4177},[4152,14192,14193],{"class":4154,"line":5044},[4152,14194,14195],{"class":4177},"            {\n",[4152,14197,14198,14201,14203,14205,14207,14209,14211,14213,14215,14217,14219,14221,14223],{"class":4154,"line":5077},[4152,14199,14200],{"class":4181},"              backgroundColor:",[4152,14202,11060],{"class":4181},[4152,14204,11063],{"class":4169},[4152,14206,11287],{"class":4202},[4152,14208,4901],{"class":4169},[4152,14210,10861],{"class":4181},[4152,14212,3609],{"class":4177},[4152,14214,9516],{"class":4181},[4152,14216,4907],{"class":4169},[4152,14218,10861],{"class":4181},[4152,14220,3609],{"class":4177},[4152,14222,3660],{"class":4181},[4152,14224,4819],{"class":4177},[4152,14226,14227,14230,14232,14234,14236],{"class":4154,"line":5107},[4152,14228,14229],{"class":4181},"              borderColor:",[4152,14231,10861],{"class":4181},[4152,14233,3609],{"class":4177},[4152,14235,9769],{"class":4181},[4152,14237,4819],{"class":4177},[4152,14239,14240],{"class":4154,"line":5115},[4152,14241,14242],{"class":4177},"            },\n",[4152,14244,14245,14248],{"class":4154,"line":5125},[4152,14246,14247],{"class":4177},"          ]",[4152,14249,4782],{"class":4173},[4152,14251,14252],{"class":4154,"line":5136},[4152,14253,6277],{"class":4158},[4152,14255,14256,14258],{"class":4154,"line":5146},[4152,14257,6074],{"class":4158},[4152,14259,11209],{"class":4162},[4152,14261,14262,14265,14267,14269],{"class":4154,"line":5156},[4152,14263,14264],{"class":4165},"            style",[4152,14266,4170],{"class":4169},[4152,14268,4174],{"class":4173},[4152,14270,6224],{"class":4177},[4152,14272,14273,14276,14278,14280,14282,14284,14286,14288,14290,14292,14294,14296,14298],{"class":4154,"line":5161},[4152,14274,14275],{"class":4181},"              color:",[4152,14277,11060],{"class":4181},[4152,14279,11063],{"class":4169},[4152,14281,11287],{"class":4202},[4152,14283,4901],{"class":4169},[4152,14285,10861],{"class":4181},[4152,14287,3609],{"class":4177},[4152,14289,9747],{"class":4181},[4152,14291,4907],{"class":4169},[4152,14293,10861],{"class":4181},[4152,14295,3609],{"class":4177},[4152,14297,9670],{"class":4181},[4152,14299,4819],{"class":4177},[4152,14301,14302,14305,14307],{"class":4154,"line":5176},[4152,14303,14304],{"class":4181},"              fontWeight:",[4152,14306,5763],{"class":4202},[4152,14308,4819],{"class":4177},[4152,14310,14311,14314],{"class":4154,"line":5192},[4152,14312,14313],{"class":4177},"            }",[4152,14315,4782],{"class":4173},[4152,14317,14318],{"class":4154,"line":5219},[4152,14319,14320],{"class":4158},"          >\n",[4152,14322,14323],{"class":4154,"line":6529},[4152,14324,14325],{"class":4169},"            Світла\n",[4152,14327,14328,14330,14332],{"class":4154,"line":6534},[4152,14329,8105],{"class":4158},[4152,14331,4010],{"class":4162},[4152,14333,4658],{"class":4158},[4152,14335,14336,14338,14340],{"class":4154,"line":6562},[4152,14337,6107],{"class":4158},[4152,14339,4493],{"class":4162},[4152,14341,4658],{"class":4158},[4152,14343,14344,14346],{"class":4154,"line":6570},[4152,14345,4875],{"class":4158},[4152,14347,4742],{"class":4162},[4152,14349,14350,14352,14354,14356,14358,14360,14362,14364,14366,14368],{"class":4154,"line":6580},[4152,14351,14151],{"class":4165},[4152,14353,4170],{"class":4169},[4152,14355,4174],{"class":4173},[4152,14357,4755],{"class":4177},[4152,14359,4758],{"class":4173},[4152,14361,11110],{"class":4581},[4152,14363,4611],{"class":4177},[4152,14365,10823],{"class":4202},[4152,14367,3910],{"class":4177},[4152,14369,4782],{"class":4173},[4152,14371,14372,14374,14376,14378],{"class":4154,"line":6589},[4152,14373,6217],{"class":4165},[4152,14375,4170],{"class":4169},[4152,14377,4174],{"class":4173},[4152,14379,9163],{"class":4177},[4152,14381,14382,14384,14386,14388],{"class":4154,"line":6598},[4152,14383,14184],{"class":4181},[4152,14385,3609],{"class":4177},[4152,14387,11139],{"class":4181},[4152,14389,4819],{"class":4177},[4152,14391,14392],{"class":4154,"line":6603},[4152,14393,14195],{"class":4177},[4152,14395,14396,14398,14400,14402,14405,14407,14409,14411,14413,14415,14417,14419,14421],{"class":4154,"line":6629},[4152,14397,14200],{"class":4181},[4152,14399,11060],{"class":4181},[4152,14401,11063],{"class":4169},[4152,14403,14404],{"class":4202}," 'dark'",[4152,14406,4901],{"class":4169},[4152,14408,10861],{"class":4181},[4152,14410,3609],{"class":4177},[4152,14412,9516],{"class":4181},[4152,14414,4907],{"class":4169},[4152,14416,10861],{"class":4181},[4152,14418,3609],{"class":4177},[4152,14420,3660],{"class":4181},[4152,14422,4819],{"class":4177},[4152,14424,14425,14427,14429,14431,14433],{"class":4154,"line":6662},[4152,14426,14229],{"class":4181},[4152,14428,10861],{"class":4181},[4152,14430,3609],{"class":4177},[4152,14432,9769],{"class":4181},[4152,14434,4819],{"class":4177},[4152,14436,14437],{"class":4154,"line":8168},[4152,14438,14242],{"class":4177},[4152,14440,14441,14443],{"class":4154,"line":8187},[4152,14442,14247],{"class":4177},[4152,14444,4782],{"class":4173},[4152,14446,14447],{"class":4154,"line":8198},[4152,14448,6277],{"class":4158},[4152,14450,14451,14453],{"class":4154,"line":8214},[4152,14452,6074],{"class":4158},[4152,14454,11209],{"class":4162},[4152,14456,14457,14459,14461,14463],{"class":4154,"line":8229},[4152,14458,14264],{"class":4165},[4152,14460,4170],{"class":4169},[4152,14462,4174],{"class":4173},[4152,14464,6224],{"class":4177},[4152,14466,14467,14469,14471,14473,14475,14477,14479,14481,14483,14485,14487,14489,14491],{"class":4154,"line":8236},[4152,14468,14275],{"class":4181},[4152,14470,11060],{"class":4181},[4152,14472,11063],{"class":4169},[4152,14474,14404],{"class":4202},[4152,14476,4901],{"class":4169},[4152,14478,10861],{"class":4181},[4152,14480,3609],{"class":4177},[4152,14482,9747],{"class":4181},[4152,14484,4907],{"class":4169},[4152,14486,10861],{"class":4181},[4152,14488,3609],{"class":4177},[4152,14490,9670],{"class":4181},[4152,14492,4819],{"class":4177},[4152,14494,14495,14497,14499],{"class":4154,"line":8241},[4152,14496,14304],{"class":4181},[4152,14498,5763],{"class":4202},[4152,14500,4819],{"class":4177},[4152,14502,14503,14505],{"class":4154,"line":8264},[4152,14504,14313],{"class":4177},[4152,14506,4782],{"class":4173},[4152,14508,14509],{"class":4154,"line":8284},[4152,14510,14320],{"class":4158},[4152,14512,14513],{"class":4154,"line":8293},[4152,14514,14515],{"class":4169},"            Темна\n",[4152,14517,14518,14520,14522],{"class":4154,"line":8302},[4152,14519,8105],{"class":4158},[4152,14521,4010],{"class":4162},[4152,14523,4658],{"class":4158},[4152,14525,14526,14528,14530],{"class":4154,"line":8307},[4152,14527,6107],{"class":4158},[4152,14529,4493],{"class":4162},[4152,14531,4658],{"class":4158},[4152,14533,14534,14536,14538],{"class":4154,"line":8330},[4152,14535,4730],{"class":4158},[4152,14537,3967],{"class":4162},[4152,14539,4658],{"class":4158},[4152,14541,14542],{"class":4154,"line":8336},[4152,14543,4566],{"emptyLinePlaceholder":4565},[4152,14545,14546,14548],{"class":4154,"line":8345},[4152,14547,4664],{"class":4158},[4152,14549,6212],{"class":4162},[4152,14551,14552,14554,14556,14558],{"class":4154,"line":8354},[4152,14553,4788],{"class":4165},[4152,14555,4170],{"class":4169},[4152,14557,4174],{"class":4173},[4152,14559,9163],{"class":4177},[4152,14561,14562,14564,14566,14568],{"class":4154,"line":8359},[4152,14563,4811],{"class":4181},[4152,14565,3609],{"class":4177},[4152,14567,5996],{"class":4181},[4152,14569,4819],{"class":4177},[4152,14571,14572,14574,14576,14578,14580,14582,14584,14586,14588,14590,14592],{"class":4154,"line":8364},[4152,14573,11472],{"class":4177},[4152,14575,4199],{"class":4181},[4152,14577,10861],{"class":4181},[4152,14579,3609],{"class":4177},[4152,14581,3660],{"class":4181},[4152,14583,3536],{"class":4177},[4152,14585,11485],{"class":4181},[4152,14587,10861],{"class":4181},[4152,14589,3609],{"class":4177},[4152,14591,9769],{"class":4181},[4152,14593,5074],{"class":4177},[4152,14595,14596,14598],{"class":4154,"line":8369},[4152,14597,4861],{"class":4177},[4152,14599,4782],{"class":4173},[4152,14601,14602],{"class":4154,"line":8386},[4152,14603,4869],{"class":4158},[4152,14605,14606,14608,14610,14612,14614,14616,14618,14620,14622,14624,14626,14628,14630,14632,14634,14636,14638,14640,14642,14644,14646],{"class":4154,"line":8393},[4152,14607,4875],{"class":4158},[4152,14609,4010],{"class":4162},[4152,14611,4166],{"class":4165},[4152,14613,4170],{"class":4169},[4152,14615,4174],{"class":4173},[4152,14617,6047],{"class":4177},[4152,14619,4648],{"class":4181},[4152,14621,3609],{"class":4177},[4152,14623,11721],{"class":4181},[4152,14625,9098],{"class":4177},[4152,14627,5068],{"class":4181},[4152,14629,10861],{"class":4181},[4152,14631,3609],{"class":4177},[4152,14633,9670],{"class":4181},[4152,14635,9110],{"class":4177},[4152,14637,4209],{"class":4173},[4152,14639,4684],{"class":4158},[4152,14641,7910],{"class":4169},[4152,14643,4690],{"class":4158},[4152,14645,4010],{"class":4162},[4152,14647,4658],{"class":4158},[4152,14649,14650,14652,14654,14656,14658,14660,14662,14664,14666,14668,14670,14672,14674,14676,14678,14680,14682,14684,14686],{"class":4154,"line":8402},[4152,14651,4875],{"class":4158},[4152,14653,4010],{"class":4162},[4152,14655,4166],{"class":4165},[4152,14657,4170],{"class":4169},[4152,14659,4174],{"class":4173},[4152,14661,4178],{"class":4177},[4152,14663,5068],{"class":4181},[4152,14665,10861],{"class":4181},[4152,14667,3609],{"class":4177},[4152,14669,9693],{"class":4181},[4152,14671,3536],{"class":4177},[4152,14673,6654],{"class":4181},[4152,14675,5777],{"class":4185},[4152,14677,3536],{"class":4177},[4152,14679,5099],{"class":4181},[4152,14681,5055],{"class":4185},[4152,14683,4206],{"class":4177},[4152,14685,4209],{"class":4173},[4152,14687,4658],{"class":4158},[4152,14689,14690,14693,14695,14697,14699],{"class":4154,"line":8411},[4152,14691,14692],{"class":4169},"          Кольори з палітри «",[4152,14694,4174],{"class":4173},[4152,14696,10803],{"class":4181},[4152,14698,4209],{"class":4173},[4152,14700,14701],{"class":4169},"». Той самий JSX — інші значення токенів.\n",[4152,14703,14704,14706,14708],{"class":4154,"line":8420},[4152,14705,6107],{"class":4158},[4152,14707,4010],{"class":4162},[4152,14709,4658],{"class":4158},[4152,14711,14712,14714,14716,14718,14720,14722,14724,14726,14728,14731,14733,14735,14737,14739,14741,14743,14745],{"class":4154,"line":8429},[4152,14713,4875],{"class":4158},[4152,14715,3967],{"class":4162},[4152,14717,4166],{"class":4165},[4152,14719,4170],{"class":4169},[4152,14721,4174],{"class":4173},[4152,14723,6047],{"class":4177},[4152,14725,4648],{"class":4181},[4152,14727,3609],{"class":4177},[4152,14729,14730],{"class":4181},"badge",[4152,14732,9098],{"class":4177},[4152,14734,4199],{"class":4181},[4152,14736,10861],{"class":4181},[4152,14738,3609],{"class":4177},[4152,14740,9516],{"class":4181},[4152,14742,9110],{"class":4177},[4152,14744,4209],{"class":4173},[4152,14746,4658],{"class":4158},[4152,14748,14749,14751,14753,14755,14757,14759,14761,14763,14765,14767,14769,14771,14773,14775,14777,14779,14781,14783,14785],{"class":4154,"line":8438},[4152,14750,6074],{"class":4158},[4152,14752,4010],{"class":4162},[4152,14754,4166],{"class":4165},[4152,14756,4170],{"class":4169},[4152,14758,4174],{"class":4173},[4152,14760,4178],{"class":4177},[4152,14762,5068],{"class":4181},[4152,14764,10861],{"class":4181},[4152,14766,3609],{"class":4177},[4152,14768,9747],{"class":4181},[4152,14770,3536],{"class":4177},[4152,14772,5060],{"class":4181},[4152,14774,5063],{"class":4202},[4152,14776,3536],{"class":4177},[4152,14778,5052],{"class":4181},[4152,14780,5033],{"class":4185},[4152,14782,4206],{"class":4177},[4152,14784,4209],{"class":4173},[4152,14786,4658],{"class":4158},[4152,14788,14789],{"class":4154,"line":8443},[4152,14790,14791],{"class":4169},"            primary\n",[4152,14793,14794,14796,14798],{"class":4154,"line":8456},[4152,14795,8105],{"class":4158},[4152,14797,4010],{"class":4162},[4152,14799,4658],{"class":4158},[4152,14801,14802,14804,14806],{"class":4154,"line":8476},[4152,14803,6107],{"class":4158},[4152,14805,3967],{"class":4162},[4152,14807,4658],{"class":4158},[4152,14809,14810,14812,14814],{"class":4154,"line":8506},[4152,14811,4730],{"class":4158},[4152,14813,3967],{"class":4162},[4152,14815,4658],{"class":4158},[4152,14817,14818,14820,14822],{"class":4154,"line":8513},[4152,14819,4933],{"class":4158},[4152,14821,3967],{"class":4162},[4152,14823,4658],{"class":4158},[4152,14825,14826],{"class":4154,"line":8522},[4152,14827,4943],{"class":4169},[4152,14829,14830],{"class":4154,"line":8531},[4152,14831,4782],{"class":4169},[4152,14833,14834],{"class":4154,"line":8540},[4152,14835,4566],{"emptyLinePlaceholder":4565},[4152,14837,14838,14840,14842,14844,14846,14848,14850],{"class":4154,"line":8549},[4152,14839,4959],{"class":4173},[4152,14841,4831],{"class":4597},[4152,14843,4964],{"class":4169},[4152,14845,3572],{"class":4181},[4152,14847,3609],{"class":4169},[4152,14849,4264],{"class":4581},[4152,14851,4973],{"class":4169},[4152,14853,14854,14856,14858,14860,14862,14864,14866,14868,14870,14872,14874,14876,14878,14880],{"class":4154,"line":8558},[4152,14855,4979],{"class":4181},[4152,14857,4514],{"class":4169},[4152,14859,4182],{"class":4181},[4152,14861,4186],{"class":4185},[4152,14863,3536],{"class":4169},[4152,14865,4191],{"class":4181},[4152,14867,5055],{"class":4185},[4152,14869,3536],{"class":4169},[4152,14871,5647],{"class":4181},[4152,14873,4194],{"class":4185},[4152,14875,3536],{"class":4169},[4152,14877,5640],{"class":4181},[4152,14879,5022],{"class":4202},[4152,14881,5074],{"class":4169},[4152,14883,14884,14886,14888,14890,14892,14894,14896,14898],{"class":4154,"line":8569},[4152,14885,7212],{"class":4181},[4152,14887,4514],{"class":4169},[4152,14889,12401],{"class":4181},[4152,14891,12404],{"class":4202},[4152,14893,3536],{"class":4169},[4152,14895,5647],{"class":4181},[4152,14897,12411],{"class":4185},[4152,14899,5074],{"class":4169},[4152,14901,14902,14904],{"class":4154,"line":8578},[4152,14903,12419],{"class":4181},[4152,14905,4982],{"class":4169},[4152,14907,14908,14910,14912],{"class":4154,"line":8583},[4152,14909,12427],{"class":4181},[4152,14911,5131],{"class":4185},[4152,14913,4819],{"class":4169},[4152,14915,14916,14918,14920],{"class":4154,"line":8610},[4152,14917,5128],{"class":4181},[4152,14919,6439],{"class":4185},[4152,14921,4819],{"class":4169},[4152,14923,14924,14926,14928],{"class":4154,"line":8642},[4152,14925,5139],{"class":4181},[4152,14927,6439],{"class":4185},[4152,14929,4819],{"class":4169},[4152,14931,14932,14934,14936],{"class":4154,"line":8674},[4152,14933,5719],{"class":4181},[4152,14935,4186],{"class":4185},[4152,14937,4819],{"class":4169},[4152,14939,14940],{"class":4154,"line":8681},[4152,14941,5041],{"class":4169},[4152,14943,14944,14946],{"class":4154,"line":8694},[4152,14945,6471],{"class":4181},[4152,14947,4982],{"class":4169},[4152,14949,14950,14952,14954],{"class":4154,"line":8704},[4152,14951,5139],{"class":4181},[4152,14953,4194],{"class":4185},[4152,14955,4819],{"class":4169},[4152,14957,14958,14960,14962],{"class":4154,"line":8714},[4152,14959,5719],{"class":4181},[4152,14961,4186],{"class":4185},[4152,14963,4819],{"class":4169},[4152,14965,14966,14968,14970],{"class":4154,"line":8719},[4152,14967,5008],{"class":4181},[4152,14969,4194],{"class":4185},[4152,14971,4819],{"class":4169},[4152,14973,14974],{"class":4154,"line":8738},[4152,14975,5041],{"class":4169},[4152,14977,14978,14980,14982,14984,14986,14988,14990,14992],{"class":4154,"line":8746},[4152,14979,12558],{"class":4181},[4152,14981,4514],{"class":4169},[4152,14983,5052],{"class":4181},[4152,14985,5102],{"class":4185},[4152,14987,3536],{"class":4169},[4152,14989,5060],{"class":4181},[4152,14991,5063],{"class":4202},[4152,14993,5074],{"class":4169},[4152,14995,14996,14999],{"class":4154,"line":8756},[4152,14997,14998],{"class":4181},"  badge:",[4152,15000,4982],{"class":4169},[4152,15002,15003,15006,15009],{"class":4154,"line":8765},[4152,15004,15005],{"class":4181},"    alignSelf:",[4152,15007,15008],{"class":4202}," 'flex-start'",[4152,15010,4819],{"class":4169},[4152,15012,15013,15016,15018],{"class":4154,"line":8774},[4152,15014,15015],{"class":4181},"    marginTop:",[4152,15017,5033],{"class":4185},[4152,15019,4819],{"class":4169},[4152,15021,15022,15024,15026],{"class":4154,"line":8779},[4152,15023,12427],{"class":4181},[4152,15025,6439],{"class":4185},[4152,15027,4819],{"class":4169},[4152,15029,15030,15032,15034],{"class":4154,"line":8805},[4152,15031,5128],{"class":4181},[4152,15033,5777],{"class":4185},[4152,15035,4819],{"class":4169},[4152,15037,15038,15040,15042],{"class":4154,"line":8812},[4152,15039,5139],{"class":4181},[4152,15041,12411],{"class":4185},[4152,15043,4819],{"class":4169},[4152,15045,15046],{"class":4154,"line":8821},[4152,15047,5041],{"class":4169},[4152,15049,15050],{"class":4154,"line":8830},[4152,15051,5222],{"class":4169},[3790,15053],{},[3507,15055,15057,15058,15061,15062],{"id":15056},"тема-в-усьому-застосунку-ми-самі-пишемо-themeprovider","Тема в усьому застосунку: ми ",[3525,15059,15060],{},"самі"," пишемо ",[3533,15063,3750],{},[3512,15065,15066],{},[3515,15067],{"alt":15068,"className":15069,"src":15070},"preference → scheme → colors",[3519],"\u002Fimages\u002Freact-native\u002Fstylesheet-and-theming\u002F03.svg",[3760,15072,15073,15076,15078,3676,15080,13349,15082,15084,15085,15087,15088,15091,15092,4388,15095,15097,15098,15101,15102,15105],{},[3525,15074,15075],{},"Головне, щоб не загубитись.",[3655,15077],{},[3533,15079,3750],{},[3533,15081,3754],{},[3525,15083,3963],{}," готові API з React Native і ",[3525,15086,3963],{}," «магія Expo». Їх ",[3525,15089,15090],{},"пишемо ми"," (у Nomad — файли в ",[3533,15093,15094],{},"src\u002Fshared\u002Ftheme\u002F",[3655,15096],{},"\nReact дає лише загальний механізм ",[3525,15099,15100],{},"Context"," («коробка зі значенням для нащадків»). Ми кладемо в цю коробку ",[3525,15103,15104],{},"тему"," і даємо зручні імена: Provider і хук.",[3512,15107,15108,15109,12784],{},"Досі в демо тема жила ",[3525,15110,15111],{},"всередині одного екрана",[4143,15113,15115],{"className":4145,"code":15114,"language":4147,"meta":4148,"style":4148},"const [mode, setMode] = useState\u003C'light' | 'dark'>('light');\nconst c = mode === 'dark' ? dark : light;\n",[3533,15116,15117,15147],{"__ignoreMap":4148},[4152,15118,15119,15121,15123,15125,15127,15129,15131,15133,15135,15137,15139,15141,15143,15145],{"class":4154,"line":4155},[4152,15120,4959],{"class":4173},[4152,15122,4594],{"class":4169},[4152,15124,10803],{"class":4597},[4152,15126,3536],{"class":4169},[4152,15128,10808],{"class":4597},[4152,15130,4606],{"class":4169},[4152,15132,4517],{"class":4581},[4152,15134,4159],{"class":4169},[4152,15136,10817],{"class":4202},[4152,15138,10820],{"class":4169},[4152,15140,10823],{"class":4202},[4152,15142,10826],{"class":4169},[4152,15144,10817],{"class":4202},[4152,15146,4617],{"class":4169},[4152,15148,15149,15151,15153,15155,15157,15159,15161,15163,15165,15167,15169],{"class":4154,"line":4532},[4152,15150,4959],{"class":4173},[4152,15152,10861],{"class":4597},[4152,15154,4964],{"class":4169},[4152,15156,10803],{"class":4181},[4152,15158,10868],{"class":4169},[4152,15160,10823],{"class":4202},[4152,15162,10873],{"class":4169},[4152,15164,3638],{"class":4181},[4152,15166,10878],{"class":4169},[4152,15168,3631],{"class":4181},[4152,15170,4529],{"class":4169},[3512,15172,15173,15174,3536,15177,3536,15179,3536,15182,3536,15184,15187,15188,3980,15190,15192,15193,15195,15196,15199],{},"Це нормально для однієї сторінки. У реальному застосунку з’являються ",[3533,15175,15176],{},"Home",[3533,15178,9511],{},[3533,15180,15181],{},"Button",[3533,15183,12730],{},[3533,15185,15186],{},"Screen"," — і всім потрібен ",[3525,15189,9271],{},[3533,15191,9898],{},". Якщо передавати ",[3533,15194,9898],{}," пропсом зверху вниз через п’ять рівнів — це ",[3525,15197,15198],{},"prop drilling"," (prop drilling): «прокидання» даних лише заради того, щоб дістатися до далекого нащадка.",[4143,15201,15205],{"className":15202,"code":15204,"language":9670,"meta":4148},[15203],"language-text","App\n └─ colors={c} → Layout\n      └─ colors={c} → Home\n           └─ colors={c} → TripCard   ← насправді колір потрібен лише тут і в Button\n",[3533,15206,15204],{"__ignoreMap":4148},[3512,15208,15209,15210,15213,15214,15216],{},"Хочеться інакше: ",[3525,15211,15212],{},"один"," раз покласти тему «зверху», а будь-який компонент глибоко в дереві сказав: «дай мені поточні ",[3533,15215,9898],{},"».",[3589,15218,15220],{"id":15219},"звідки-береться-ідея-react-context-коротко-з-нуля","Звідки береться ідея: React Context (коротко з нуля)",[3512,15222,15223],{},"У React (і на вебі, і в RN) є три цеглини:",[3844,15225,15226,15239],{},[3847,15227,15228],{},[3850,15229,15230,15233,15236],{},[3853,15231,15232],{},"Цеглина",[3853,15234,15235],{},"Що це",[3853,15237,15238],{},"Аналогія",[3863,15240,15241,15258,15274],{},[3850,15242,15243,15248,15255],{},[3868,15244,15245],{},[3533,15246,15247],{},"createContext",[3868,15249,15250,15251,15254],{},"Створює ",[3525,15252,15253],{},"канал"," (контекст) — «про що ми говоримо» (тема, мова, user…)",[3868,15256,15257],{},"Спільний «канал» ThemeContext",[3850,15259,15260,15265,15271],{},[3868,15261,15262],{},[3533,15263,15264],{},"\u003CContext.Provider value={…}>",[3868,15266,15267,15270],{},[3525,15268,15269],{},"Кладе"," значення в канал для всіх нащадків усередині",[3868,15272,15273],{},"Кладете value у Provider",[3850,15275,15276,15281,15287],{},[3868,15277,15278],{},[3533,15279,15280],{},"useContext(Context)",[3868,15282,15283,15286],{},[3525,15284,15285],{},"Читає"," значення з найближчого Provider вище по дереву",[3868,15288,15289],{},"Будь-який нащадок читає value",[4024,15291,15292,15295,15296,15299,15300,4770,15302,3980,15305,15308,15309,15311],{},[3525,15293,15294],{},"Без Provider читати нічого."," Якщо викликати ",[3533,15297,15298],{},"useContext"," (або наш майбутній ",[3533,15301,3754],{},[3525,15303,15304],{},"поза",[3533,15306,15307],{},"\u003CProvider>",", отримаєте ",[3533,15310,5519],{}," \u002F дефолт \u002F помилку — бо Provider вище по дереву немає. Це найчастіша помилка новачка.",[3512,15313,15314,15316,15317,15320],{},[3533,15315,3750],{}," у нашому коді — це ",[3525,15318,15319],{},"звичайний React-компонент",", який:",[3561,15322,15323,15326,15331,15338],{},[3564,15324,15325],{},"тримає стан (що обрав користувач: system \u002F light \u002F dark);",[3564,15327,15328,15329,13328],{},"читає систему через ",[3533,15330,3543],{},[3564,15332,15333,15334,3676,15336,13328],{},"рахує ",[3533,15335,12929],{},[3533,15337,9898],{},[3564,15339,15340,15341,9508,15344,3609],{},"обгортає ",[3533,15342,15343],{},"children",[3533,15345,15346],{},"\u003CThemeContext.Provider value={…}>",[3512,15348,15349,13349,15351,15354,15355,15358],{},[3533,15350,3754],{},[3525,15352,15353],{},"короткий хук",", який робить ",[3533,15356,15357],{},"useContext(ThemeContext)"," і кидає зрозумілу помилку, якщо Provider немає.",[10272,15360,15361],{},[4143,15362,15364],{"className":10276,"code":15363,"language":10278,"meta":4148,"style":4148},"@startuml\nskinparam style plain\nskinparam backgroundColor #ffffff\n\nrectangle \"Ви пишете файл theme.tsx\" as YOU {\n  rectangle \"1. createContext → ThemeContext\" as C1\n  rectangle \"2. function ThemeProvider\" as C2\n  rectangle \"3. function useTheme\" as C3\n}\n\nrectangle \"Корінь застосунку\\n(app\u002F_layout.tsx)\" as ROOT {\n  rectangle \"ThemeProvider\\nобгортає дерево нащадків\" as P\n}\n\nrectangle \"Будь-який нащадок\" as CHILD {\n  rectangle \"const { colors } = useTheme()\" as U\n}\n\nYOU --> ROOT : імпорт ThemeProvider, useTheme\nROOT --> P\nP --> CHILD : value з colors, scheme, …\nCHILD --> U\n\n@enduml\n",[3533,15365,15366,15370,15374,15378,15382,15387,15392,15397,15402,15406,15410,15415,15420,15424,15428,15433,15438,15442,15446,15451,15456,15461,15466,15470],{"__ignoreMap":4148},[4152,15367,15368],{"class":4154,"line":4155},[4152,15369,10285],{},[4152,15371,15372],{"class":4154,"line":4532},[4152,15373,10290],{},[4152,15375,15376],{"class":4154,"line":4562},[4152,15377,10295],{},[4152,15379,15380],{"class":4154,"line":4569},[4152,15381,4566],{"emptyLinePlaceholder":4565},[4152,15383,15384],{"class":4154,"line":4588},[4152,15385,15386],{},"rectangle \"Ви пишете файл theme.tsx\" as YOU {\n",[4152,15388,15389],{"class":4154,"line":4620},[4152,15390,15391],{},"  rectangle \"1. createContext → ThemeContext\" as C1\n",[4152,15393,15394],{"class":4154,"line":4625},[4152,15395,15396],{},"  rectangle \"2. function ThemeProvider\" as C2\n",[4152,15398,15399],{"class":4154,"line":4634},[4152,15400,15401],{},"  rectangle \"3. function useTheme\" as C3\n",[4152,15403,15404],{"class":4154,"line":4661},[4152,15405,4782],{},[4152,15407,15408],{"class":4154,"line":4697},[4152,15409,4566],{"emptyLinePlaceholder":4565},[4152,15411,15412],{"class":4154,"line":4721},[4152,15413,15414],{},"rectangle \"Корінь застосунку\\n(app\u002F_layout.tsx)\" as ROOT {\n",[4152,15416,15417],{"class":4154,"line":4727},[4152,15418,15419],{},"  rectangle \"ThemeProvider\\nобгортає дерево нащадків\" as P\n",[4152,15421,15422],{"class":4154,"line":4737},[4152,15423,4782],{},[4152,15425,15426],{"class":4154,"line":4745},[4152,15427,4566],{"emptyLinePlaceholder":4565},[4152,15429,15430],{"class":4154,"line":4785},[4152,15431,15432],{},"rectangle \"Будь-який нащадок\" as CHILD {\n",[4152,15434,15435],{"class":4154,"line":4808},[4152,15436,15437],{},"  rectangle \"const { colors } = useTheme()\" as U\n",[4152,15439,15440],{"class":4154,"line":4822},[4152,15441,4782],{},[4152,15443,15444],{"class":4154,"line":4841},[4152,15445,4566],{"emptyLinePlaceholder":4565},[4152,15447,15448],{"class":4154,"line":4858},[4152,15449,15450],{},"YOU --> ROOT : імпорт ThemeProvider, useTheme\n",[4152,15452,15453],{"class":4154,"line":4866},[4152,15454,15455],{},"ROOT --> P\n",[4152,15457,15458],{"class":4154,"line":4872},[4152,15459,15460],{},"P --> CHILD : value з colors, scheme, …\n",[4152,15462,15463],{"class":4154,"line":4921},[4152,15464,15465],{},"CHILD --> U\n",[4152,15467,15468],{"class":4154,"line":4930},[4152,15469,4566],{"emptyLinePlaceholder":4565},[4152,15471,15472],{"class":4154,"line":4940},[4152,15473,10392],{},[3589,15475,15477],{"id":15476},"крок-за-кроком-збираємо-тему-самі","Крок за кроком: збираємо тему самі",[3512,15479,15480,15481,15484,15485,15488],{},"Нижче — ",[3525,15482,15483],{},"логіка того самого коду",", що потім ляже в ",[3533,15486,15487],{},"src\u002Fshared\u002Ftheme\u002FThemeProvider.tsx"," у Nomad. Читайте по порядку: кожен крок додає одну ідею.",[15490,15491,15493],"h4",{"id":15492},"крок-1-палітри-й-resolve-уже-були","Крок 1. Палітри й resolve (уже були)",[3512,15495,15496,15497,3536,15499,3536,15501,3609,15504,15506,15507,15510],{},"Ми вже маємо ",[3533,15498,13677],{},[3533,15500,13672],{},[3533,15502,15503],{},"colorsForScheme(scheme)",[3655,15505],{},"\nДодаємо ",[3525,15508,15509],{},"два"," поняття, які часто плутають:",[3844,15512,15513,15523],{},[3847,15514,15515],{},[3850,15516,15517,15520],{},[3853,15518,15519],{},"Слово",[3853,15521,15522],{},"Значення",[3863,15524,15525,15539],{},[3850,15526,15527,15531],{},[3868,15528,15529],{},[3525,15530,13359],{},[3868,15532,15533,3980,15536],{},[3629,15534,15535],{},"Що обрав користувач у застосунку:",[3533,15537,15538],{},"'system' | 'light' | 'dark'",[3850,15540,15541,15545],{},[3868,15542,15543],{},[3525,15544,12929],{},[3868,15546,15547,15550,15551],{},[3629,15548,15549],{},"Яка theme зараз фактично на екрані:"," тільки ",[3533,15552,15553],{},"'light' | 'dark'",[3512,15555,15556,15557,15559,15560,3609,15562,15564,15565,15567,15568,15570,15571,15574],{},"Якщо preference = ",[3533,15558,13324],{},", scheme береться з ",[3533,15561,3933],{},[3655,15563],{},"\nЯкщо preference = ",[3533,15566,3631],{}," або ",[3533,15569,3638],{},", scheme ",[3525,15572,15573],{},"дорівнює"," preference — система ігнорується.",[4143,15576,15578],{"className":9889,"code":15577,"language":9891,"meta":4148,"style":4148},"type ThemePreference = 'system' | 'light' | 'dark';\ntype ColorSchemeName = 'light' | 'dark';\n\nfunction resolveScheme(\n  preference: ThemePreference,\n  system: string | null | undefined,\n): ColorSchemeName {\n  if (preference === 'light' || preference === 'dark') {\n    return preference; \u002F\u002F користувач примусово\n  }\n  \u002F\u002F preference === 'system'\n  return system === 'dark' ? 'dark' : 'light'; \u002F\u002F null → light\n}\n",[3533,15579,15580,15603,15620,15624,15634,15646,15666,15676,15700,15714,15719,15724,15748],{"__ignoreMap":4148},[4152,15581,15582,15585,15588,15590,15593,15595,15597,15599,15601],{"class":4154,"line":4155},[4152,15583,15584],{"class":4173},"type",[4152,15586,15587],{"class":4162}," ThemePreference",[4152,15589,4964],{"class":4169},[4152,15591,15592],{"class":4202},"'system'",[4152,15594,10820],{"class":4169},[4152,15596,10817],{"class":4202},[4152,15598,10820],{"class":4169},[4152,15600,10823],{"class":4202},[4152,15602,4529],{"class":4169},[4152,15604,15605,15607,15610,15612,15614,15616,15618],{"class":4154,"line":4532},[4152,15606,15584],{"class":4173},[4152,15608,15609],{"class":4162}," ColorSchemeName",[4152,15611,4964],{"class":4169},[4152,15613,10817],{"class":4202},[4152,15615,10820],{"class":4169},[4152,15617,10823],{"class":4202},[4152,15619,4529],{"class":4169},[4152,15621,15622],{"class":4154,"line":4562},[4152,15623,4566],{"emptyLinePlaceholder":4565},[4152,15625,15626,15628,15631],{"class":4154,"line":4569},[4152,15627,9295],{"class":4173},[4152,15629,15630],{"class":4581}," resolveScheme",[4152,15632,15633],{"class":4169},"(\n",[4152,15635,15636,15639,15641,15644],{"class":4154,"line":4588},[4152,15637,15638],{"class":4181},"  preference",[4152,15640,13648],{"class":4169},[4152,15642,15643],{"class":4162},"ThemePreference",[4152,15645,4819],{"class":4169},[4152,15647,15648,15651,15653,15656,15658,15660,15662,15664],{"class":4154,"line":4620},[4152,15649,15650],{"class":4181},"  system",[4152,15652,13648],{"class":4169},[4152,15654,15655],{"class":4162},"string",[4152,15657,10820],{"class":4169},[4152,15659,5519],{"class":4162},[4152,15661,10820],{"class":4169},[4152,15663,9239],{"class":4162},[4152,15665,4819],{"class":4169},[4152,15667,15668,15671,15674],{"class":4154,"line":4625},[4152,15669,15670],{"class":4169},"): ",[4152,15672,15673],{"class":4162},"ColorSchemeName",[4152,15675,4982],{"class":4169},[4152,15677,15678,15681,15683,15685,15687,15689,15692,15694,15696,15698],{"class":4154,"line":4634},[4152,15679,15680],{"class":4510},"  if",[4152,15682,3627],{"class":4169},[4152,15684,13359],{"class":4181},[4152,15686,10868],{"class":4169},[4152,15688,10817],{"class":4202},[4152,15690,15691],{"class":4169}," || ",[4152,15693,13359],{"class":4181},[4152,15695,10868],{"class":4169},[4152,15697,10823],{"class":4202},[4152,15699,13657],{"class":4169},[4152,15701,15702,15705,15708,15711],{"class":4154,"line":4661},[4152,15703,15704],{"class":4510},"    return",[4152,15706,15707],{"class":4181}," preference",[4152,15709,15710],{"class":4169},"; ",[4152,15712,15713],{"class":5327},"\u002F\u002F користувач примусово\n",[4152,15715,15716],{"class":4154,"line":4697},[4152,15717,15718],{"class":4169},"  }\n",[4152,15720,15721],{"class":4154,"line":4721},[4152,15722,15723],{"class":5327},"  \u002F\u002F preference === 'system'\n",[4152,15725,15726,15728,15731,15733,15735,15737,15739,15741,15743,15745],{"class":4154,"line":4727},[4152,15727,4628],{"class":4510},[4152,15729,15730],{"class":4181}," system",[4152,15732,10868],{"class":4169},[4152,15734,10823],{"class":4202},[4152,15736,10873],{"class":4169},[4152,15738,10823],{"class":4202},[4152,15740,10878],{"class":4169},[4152,15742,10817],{"class":4202},[4152,15744,15710],{"class":4169},[4152,15746,15747],{"class":5327},"\u002F\u002F null → light\n",[4152,15749,15750],{"class":4154,"line":4737},[4152,15751,4782],{"class":4169},[15753,15754,15755,15759,15768,15772,15780,15784,15789,15793,15799,15803],"steps",{},[3589,15756,15758],{"id":15757},"користувач-тисне-чіп","Користувач тисне чіп",[3512,15760,15761,4000,15764,4000,15766,3609],{},[3533,15762,15763],{},"setPreference('dark')",[3533,15765,10817],{},[3533,15767,15592],{},[3589,15769,15771],{"id":15770},"provider-читає-ос","Provider читає ОС",[3512,15773,15774,13349,15777,3609],{},[3533,15775,15776],{},"const system = useColorScheme()",[3533,15778,15779],{},"'light' | 'dark' | null",[3589,15781,15783],{"id":15782},"рахуємо-scheme","Рахуємо scheme",[3512,15785,15786,3609],{},[3533,15787,15788],{},"resolveScheme(preference, system)",[3589,15790,15792],{"id":15791},"рахуємо-colors","Рахуємо colors",[3512,15794,15795,15798],{},[3533,15796,15797],{},"colors = colorsForScheme(scheme)"," — словник hex за ролями.",[3589,15800,15802],{"id":15801},"нащадки-лише-читають","Нащадки лише читають",[3512,15804,15805,15808,15809,15812],{},[3533,15806,15807],{},"const { colors, scheme } = useTheme()"," — без знання, ",[3629,15810,15811],{},"чому"," зараз dark.",[15490,15814,15816],{"id":15815},"крок-2-створюємо-context-канал-теми","Крок 2. Створюємо Context — «канал теми»",[4143,15818,15820],{"className":4145,"code":15819,"language":4147,"meta":4148,"style":4148},"import { createContext, useContext, useMemo, useState, useCallback, ReactNode } from 'react';\nimport { useColorScheme } from 'react-native';\n\n\u002F\u002F що лежить у «скриньці» для всіх нащадків\ntype ThemeContextValue = {\n  scheme: 'light' | 'dark';\n  preference: 'system' | 'light' | 'dark';\n  setPreference: (value: 'system' | 'light' | 'dark') => void;\n  colors: typeof lightColors; \u002F\u002F той самий набір ключів\n};\n\n\u002F\u002F null = «Provider ще не обгорнув» (так ми зловимо помилку в useTheme)\nconst ThemeContext = createContext\u003CThemeContextValue | null>(null);\n",[3533,15821,15822,15861,15877,15881,15886,15895,15910,15928,15959,15976,15980,15984,15989],{"__ignoreMap":4148},[4152,15823,15824,15826,15828,15830,15832,15834,15836,15839,15841,15843,15845,15848,15850,15853,15855,15857,15859],{"class":4154,"line":4155},[4152,15825,4511],{"class":4510},[4152,15827,4514],{"class":4169},[4152,15829,15247],{"class":4181},[4152,15831,3536],{"class":4169},[4152,15833,15298],{"class":4181},[4152,15835,3536],{"class":4169},[4152,15837,15838],{"class":4181},"useMemo",[4152,15840,3536],{"class":4169},[4152,15842,4517],{"class":4181},[4152,15844,3536],{"class":4169},[4152,15846,15847],{"class":4181},"useCallback",[4152,15849,3536],{"class":4169},[4152,15851,15852],{"class":4181},"ReactNode",[4152,15854,4520],{"class":4169},[4152,15856,4523],{"class":4510},[4152,15858,4526],{"class":4202},[4152,15860,4529],{"class":4169},[4152,15862,15863,15865,15867,15869,15871,15873,15875],{"class":4154,"line":4532},[4152,15864,4511],{"class":4510},[4152,15866,4514],{"class":4169},[4152,15868,3543],{"class":4181},[4152,15870,4520],{"class":4169},[4152,15872,4523],{"class":4510},[4152,15874,4557],{"class":4202},[4152,15876,4529],{"class":4169},[4152,15878,15879],{"class":4154,"line":4562},[4152,15880,4566],{"emptyLinePlaceholder":4565},[4152,15882,15883],{"class":4154,"line":4569},[4152,15884,15885],{"class":5327},"\u002F\u002F що лежить у «скриньці» для всіх нащадків\n",[4152,15887,15888,15890,15893],{"class":4154,"line":4588},[4152,15889,15584],{"class":4173},[4152,15891,15892],{"class":4162}," ThemeContextValue",[4152,15894,10591],{"class":4169},[4152,15896,15897,15900,15902,15904,15906,15908],{"class":4154,"line":4620},[4152,15898,15899],{"class":4181},"  scheme",[4152,15901,13648],{"class":4169},[4152,15903,10817],{"class":4202},[4152,15905,10820],{"class":4169},[4152,15907,10823],{"class":4202},[4152,15909,4529],{"class":4169},[4152,15911,15912,15914,15916,15918,15920,15922,15924,15926],{"class":4154,"line":4625},[4152,15913,15638],{"class":4181},[4152,15915,13648],{"class":4169},[4152,15917,15592],{"class":4202},[4152,15919,10820],{"class":4169},[4152,15921,10817],{"class":4202},[4152,15923,10820],{"class":4169},[4152,15925,10823],{"class":4202},[4152,15927,4529],{"class":4169},[4152,15929,15930,15933,15936,15938,15940,15942,15944,15946,15948,15950,15952,15954,15957],{"class":4154,"line":4634},[4152,15931,15932],{"class":4581},"  setPreference",[4152,15934,15935],{"class":4169},": (",[4152,15937,13061],{"class":4181},[4152,15939,13648],{"class":4169},[4152,15941,15592],{"class":4202},[4152,15943,10820],{"class":4169},[4152,15945,10817],{"class":4202},[4152,15947,10820],{"class":4169},[4152,15949,10823],{"class":4202},[4152,15951,4770],{"class":4169},[4152,15953,4758],{"class":4173},[4152,15955,15956],{"class":4162}," void",[4152,15958,4529],{"class":4169},[4152,15960,15961,15964,15966,15969,15971,15973],{"class":4154,"line":4661},[4152,15962,15963],{"class":4181},"  colors",[4152,15965,13648],{"class":4169},[4152,15967,15968],{"class":4173},"typeof",[4152,15970,13444],{"class":4181},[4152,15972,15710],{"class":4169},[4152,15974,15975],{"class":5327},"\u002F\u002F той самий набір ключів\n",[4152,15977,15978],{"class":4154,"line":4697},[4152,15979,10682],{"class":4169},[4152,15981,15982],{"class":4154,"line":4721},[4152,15983,4566],{"emptyLinePlaceholder":4565},[4152,15985,15986],{"class":4154,"line":4727},[4152,15987,15988],{"class":5327},"\u002F\u002F null = «Provider ще не обгорнув» (так ми зловимо помилку в useTheme)\n",[4152,15990,15991,15993,15996,15998,16000,16002,16005,16007,16009,16011,16013],{"class":4154,"line":4737},[4152,15992,4959],{"class":4173},[4152,15994,15995],{"class":4597}," ThemeContext",[4152,15997,4964],{"class":4169},[4152,15999,15247],{"class":4581},[4152,16001,4159],{"class":4169},[4152,16003,16004],{"class":4162},"ThemeContextValue",[4152,16006,10820],{"class":4169},[4152,16008,5519],{"class":4162},[4152,16010,10826],{"class":4169},[4152,16012,5519],{"class":4173},[4152,16014,4617],{"class":4169},[3512,16016,16017,13349,16020,16022,16023,3609],{},[3533,16018,16019],{},"ThemeContext",[3525,16021,3963],{}," компонент. Це об’єкт-канал. Компонент — ",[3533,16024,16025],{},"ThemeContext.Provider",[15490,16027,16029,16030,13349,16032],{"id":16028},"крок-3-пишемо-компонент-themeprovider-ми-його-створюємо","Крок 3. Пишемо компонент ",[3533,16031,3750],{},[3525,16033,16034],{},"ми його створюємо",[3512,16036,16037,16038,16040,16041,3536,16044,16047],{},"Ім’я ",[3533,16039,3750],{}," — домовленість (як ",[3533,16042,16043],{},"AuthProvider",[3533,16045,16046],{},"StoreProvider","). React його «не знає», поки ви не оголосите функцію:",[4143,16049,16051],{"className":4145,"code":16050,"language":4147,"meta":4148,"style":4148},"export function ThemeProvider({\n  children,\n  initialPreference = 'system',\n}: {\n  children: ReactNode;\n  initialPreference?: 'system' | 'light' | 'dark';\n}) {\n  \u002F\u002F 1) що обрав користувач у застосунку\n  const [preference, setPreferenceState] = useState(initialPreference);\n\n  \u002F\u002F 2) що каже операційна система\n  const systemScheme = useColorScheme();\n\n  \u002F\u002F 3) фактична theme (scheme)\n  const scheme = resolveScheme(preference, systemScheme);\n\n  \u002F\u002F 4) словник кольорів для цього scheme\n  const colors = useMemo(() => colorsForScheme(scheme), [scheme]);\n\n  const setPreference = useCallback((value: typeof preference) => {\n    setPreferenceState(value);\n  }, []);\n\n  \u002F\u002F 5) пакуємо все, що віддамо нащадкам\n  const value = useMemo(\n    () => ({ scheme, preference, setPreference, colors }),\n    [scheme, preference, setPreference, colors],\n  );\n\n  \u002F\u002F 6) кладемо value у Context і рендеримо `children`\n  return (\n    \u003CThemeContext.Provider value={value}>\n      {children}\n    \u003C\u002FThemeContext.Provider>\n  );\n}\n",[3533,16052,16053,16064,16071,16082,16087,16097,16116,16121,16126,16150,16154,16159,16172,16176,16181,16203,16207,16212,16241,16245,16272,16283,16288,16292,16297,16310,16338,16360,16364,16368,16373,16379,16397,16406,16414,16418],{"__ignoreMap":4148},[4152,16054,16055,16057,16059,16062],{"class":4154,"line":4155},[4152,16056,4572],{"class":4510},[4152,16058,4578],{"class":4173},[4152,16060,16061],{"class":4581}," ThemeProvider",[4152,16063,4973],{"class":4169},[4152,16065,16066,16069],{"class":4154,"line":4532},[4152,16067,16068],{"class":4181},"  children",[4152,16070,4819],{"class":4169},[4152,16072,16073,16076,16078,16080],{"class":4154,"line":4562},[4152,16074,16075],{"class":4181},"  initialPreference",[4152,16077,4964],{"class":4169},[4152,16079,15592],{"class":4202},[4152,16081,4819],{"class":4169},[4152,16083,16084],{"class":4154,"line":4569},[4152,16085,16086],{"class":4169},"}: {\n",[4152,16088,16089,16091,16093,16095],{"class":4154,"line":4588},[4152,16090,16068],{"class":4181},[4152,16092,13648],{"class":4169},[4152,16094,15852],{"class":4162},[4152,16096,4529],{"class":4169},[4152,16098,16099,16101,16104,16106,16108,16110,16112,16114],{"class":4154,"line":4620},[4152,16100,16075],{"class":4181},[4152,16102,16103],{"class":4169},"?: ",[4152,16105,15592],{"class":4202},[4152,16107,10820],{"class":4169},[4152,16109,10817],{"class":4202},[4152,16111,10820],{"class":4169},[4152,16113,10823],{"class":4202},[4152,16115,4529],{"class":4169},[4152,16117,16118],{"class":4154,"line":4625},[4152,16119,16120],{"class":4169},"}) {\n",[4152,16122,16123],{"class":4154,"line":4634},[4152,16124,16125],{"class":5327},"  \u002F\u002F 1) що обрав користувач у застосунку\n",[4152,16127,16128,16130,16132,16134,16136,16139,16141,16143,16145,16148],{"class":4154,"line":4661},[4152,16129,4591],{"class":4173},[4152,16131,4594],{"class":4169},[4152,16133,13359],{"class":4597},[4152,16135,3536],{"class":4169},[4152,16137,16138],{"class":4597},"setPreferenceState",[4152,16140,4606],{"class":4169},[4152,16142,4517],{"class":4581},[4152,16144,4611],{"class":4169},[4152,16146,16147],{"class":4181},"initialPreference",[4152,16149,4617],{"class":4169},[4152,16151,16152],{"class":4154,"line":4697},[4152,16153,4566],{"emptyLinePlaceholder":4565},[4152,16155,16156],{"class":4154,"line":4721},[4152,16157,16158],{"class":5327},"  \u002F\u002F 2) що каже операційна система\n",[4152,16160,16161,16163,16166,16168,16170],{"class":4154,"line":4727},[4152,16162,4591],{"class":4173},[4152,16164,16165],{"class":4597}," systemScheme",[4152,16167,4964],{"class":4169},[4152,16169,3543],{"class":4581},[4152,16171,12917],{"class":4169},[4152,16173,16174],{"class":4154,"line":4737},[4152,16175,4566],{"emptyLinePlaceholder":4565},[4152,16177,16178],{"class":4154,"line":4745},[4152,16179,16180],{"class":5327},"  \u002F\u002F 3) фактична theme (scheme)\n",[4152,16182,16183,16185,16187,16189,16192,16194,16196,16198,16201],{"class":4154,"line":4785},[4152,16184,4591],{"class":4173},[4152,16186,12910],{"class":4597},[4152,16188,4964],{"class":4169},[4152,16190,16191],{"class":4581},"resolveScheme",[4152,16193,4611],{"class":4169},[4152,16195,13359],{"class":4181},[4152,16197,3536],{"class":4169},[4152,16199,16200],{"class":4181},"systemScheme",[4152,16202,4617],{"class":4169},[4152,16204,16205],{"class":4154,"line":4808},[4152,16206,4566],{"emptyLinePlaceholder":4565},[4152,16208,16209],{"class":4154,"line":4822},[4152,16210,16211],{"class":5327},"  \u002F\u002F 4) словник кольорів для цього scheme\n",[4152,16213,16214,16216,16218,16220,16222,16225,16227,16229,16231,16233,16236,16238],{"class":4154,"line":4841},[4152,16215,4591],{"class":4173},[4152,16217,9103],{"class":4597},[4152,16219,4964],{"class":4169},[4152,16221,15838],{"class":4581},[4152,16223,16224],{"class":4169},"(() ",[4152,16226,4758],{"class":4173},[4152,16228,13641],{"class":4581},[4152,16230,4611],{"class":4169},[4152,16232,12929],{"class":4181},[4152,16234,16235],{"class":4169},"), [",[4152,16237,12929],{"class":4181},[4152,16239,16240],{"class":4169},"]);\n",[4152,16242,16243],{"class":4154,"line":4858},[4152,16244,4566],{"emptyLinePlaceholder":4565},[4152,16246,16247,16249,16252,16254,16256,16258,16260,16262,16264,16266,16268,16270],{"class":4154,"line":4866},[4152,16248,4591],{"class":4173},[4152,16250,16251],{"class":4597}," setPreference",[4152,16253,4964],{"class":4169},[4152,16255,15847],{"class":4581},[4152,16257,4764],{"class":4169},[4152,16259,13061],{"class":4181},[4152,16261,13648],{"class":4169},[4152,16263,15968],{"class":4173},[4152,16265,15707],{"class":4181},[4152,16267,4770],{"class":4169},[4152,16269,4758],{"class":4173},[4152,16271,4982],{"class":4169},[4152,16273,16274,16277,16279,16281],{"class":4154,"line":4872},[4152,16275,16276],{"class":4581},"    setPreferenceState",[4152,16278,4611],{"class":4169},[4152,16280,13061],{"class":4181},[4152,16282,4617],{"class":4169},[4152,16284,16285],{"class":4154,"line":4921},[4152,16286,16287],{"class":4169},"  }, []);\n",[4152,16289,16290],{"class":4154,"line":4930},[4152,16291,4566],{"emptyLinePlaceholder":4565},[4152,16293,16294],{"class":4154,"line":4940},[4152,16295,16296],{"class":5327},"  \u002F\u002F 5) пакуємо все, що віддамо нащадкам\n",[4152,16298,16299,16301,16304,16306,16308],{"class":4154,"line":4946},[4152,16300,4591],{"class":4173},[4152,16302,16303],{"class":4597}," value",[4152,16305,4964],{"class":4169},[4152,16307,15838],{"class":4581},[4152,16309,15633],{"class":4169},[4152,16311,16312,16315,16317,16320,16322,16324,16326,16328,16331,16333,16335],{"class":4154,"line":4951},[4152,16313,16314],{"class":4169},"    () ",[4152,16316,4758],{"class":4173},[4152,16318,16319],{"class":4169}," ({ ",[4152,16321,12929],{"class":4181},[4152,16323,3536],{"class":4169},[4152,16325,13359],{"class":4181},[4152,16327,3536],{"class":4169},[4152,16329,16330],{"class":4181},"setPreference",[4152,16332,3536],{"class":4169},[4152,16334,9898],{"class":4181},[4152,16336,16337],{"class":4169}," }),\n",[4152,16339,16340,16343,16345,16347,16349,16351,16353,16355,16357],{"class":4154,"line":4956},[4152,16341,16342],{"class":4169},"    [",[4152,16344,12929],{"class":4181},[4152,16346,3536],{"class":4169},[4152,16348,13359],{"class":4181},[4152,16350,3536],{"class":4169},[4152,16352,16330],{"class":4181},[4152,16354,3536],{"class":4169},[4152,16356,9898],{"class":4181},[4152,16358,16359],{"class":4169},"],\n",[4152,16361,16362],{"class":4154,"line":4976},[4152,16363,4943],{"class":4169},[4152,16365,16366],{"class":4154,"line":4985},[4152,16367,4566],{"emptyLinePlaceholder":4565},[4152,16369,16370],{"class":4154,"line":4995},[4152,16371,16372],{"class":5327},"  \u002F\u002F 6) кладемо value у Context і рендеримо `children`\n",[4152,16374,16375,16377],{"class":4154,"line":5005},[4152,16376,4628],{"class":4510},[4152,16378,4631],{"class":4169},[4152,16380,16381,16383,16385,16387,16389,16391,16393,16395],{"class":4154,"line":5016},[4152,16382,4637],{"class":4158},[4152,16384,16025],{"class":4162},[4152,16386,16303],{"class":4165},[4152,16388,4170],{"class":4169},[4152,16390,4174],{"class":4173},[4152,16392,13061],{"class":4181},[4152,16394,4209],{"class":4173},[4152,16396,4658],{"class":4158},[4152,16398,16399,16402,16404],{"class":4154,"line":5027},[4152,16400,16401],{"class":4173},"      {",[4152,16403,15343],{"class":4181},[4152,16405,4782],{"class":4173},[4152,16407,16408,16410,16412],{"class":4154,"line":5038},[4152,16409,4933],{"class":4158},[4152,16411,16025],{"class":4162},[4152,16413,4658],{"class":4158},[4152,16415,16416],{"class":4154,"line":5044},[4152,16417,4943],{"class":4169},[4152,16419,16420],{"class":4154,"line":5077},[4152,16421,4782],{"class":4169},[3512,16423,16424,16427,16428,16431,16432,16434,16437,16438,3609,16441,16443,16444,16446,16447,16450],{},[3525,16425,16426],{},"Хто «створює» ThemeProvider?"," Ви — у файлі ",[3533,16429,16430],{},"ThemeProvider.tsx"," (або поруч із палітрами).",[3655,16433],{},[3525,16435,16436],{},"Хто його «вмикає»?"," Корінь застосунку — обгортає дерево: ",[3533,16439,16440],{},"\u003CThemeProvider>…\u003C\u002FThemeProvider>",[3655,16442],{},"\nБез цієї обгортки ",[3533,16445,3754],{}," нижче ",[3525,16448,16449],{},"немає звідки"," взяти value.",[15490,16452,16454,16455,16457],{"id":16453},"крок-4-пишемо-usetheme-зручне-читання-context","Крок 4. Пишемо ",[3533,16456,3754],{}," — зручне читання Context",[3512,16459,16460,16461,16463,16464,16466,16467,16469],{},"Замість того щоб у кожному файлі писати ",[3533,16462,15357],{}," і перевіряти ",[3533,16465,5519],{},", робимо ",[3525,16468,15212],{}," хук:",[4143,16471,16473],{"className":4145,"code":16472,"language":4147,"meta":4148,"style":4148},"export function useTheme(): ThemeContextValue {\n  const ctx = useContext(ThemeContext);\n  if (!ctx) {\n    throw new Error(\n      'useTheme() потрібно викликати всередині \u003CThemeProvider>. ' +\n        'Обгорніть корінь застосунку в ThemeProvider.',\n    );\n  }\n  return ctx;\n}\n",[3533,16474,16475,16491,16508,16520,16533,16541,16548,16553,16557,16565],{"__ignoreMap":4148},[4152,16476,16477,16479,16481,16484,16487,16489],{"class":4154,"line":4155},[4152,16478,4572],{"class":4510},[4152,16480,4578],{"class":4173},[4152,16482,16483],{"class":4581}," useTheme",[4152,16485,16486],{"class":4169},"(): ",[4152,16488,16004],{"class":4162},[4152,16490,4982],{"class":4169},[4152,16492,16493,16495,16498,16500,16502,16504,16506],{"class":4154,"line":4532},[4152,16494,4591],{"class":4173},[4152,16496,16497],{"class":4597}," ctx",[4152,16499,4964],{"class":4169},[4152,16501,15298],{"class":4581},[4152,16503,4611],{"class":4169},[4152,16505,16019],{"class":4181},[4152,16507,4617],{"class":4169},[4152,16509,16510,16512,16515,16518],{"class":4154,"line":4562},[4152,16511,15680],{"class":4510},[4152,16513,16514],{"class":4169}," (!",[4152,16516,16517],{"class":4181},"ctx",[4152,16519,13657],{"class":4169},[4152,16521,16522,16525,16528,16531],{"class":4154,"line":4569},[4152,16523,16524],{"class":4510},"    throw",[4152,16526,16527],{"class":4173}," new",[4152,16529,16530],{"class":4581}," Error",[4152,16532,15633],{"class":4169},[4152,16534,16535,16538],{"class":4154,"line":4588},[4152,16536,16537],{"class":4202},"      'useTheme() потрібно викликати всередині \u003CThemeProvider>. '",[4152,16539,16540],{"class":4169}," +\n",[4152,16542,16543,16546],{"class":4154,"line":4620},[4152,16544,16545],{"class":4202},"        'Обгорніть корінь застосунку в ThemeProvider.'",[4152,16547,4819],{"class":4169},[4152,16549,16550],{"class":4154,"line":4625},[4152,16551,16552],{"class":4169},"    );\n",[4152,16554,16555],{"class":4154,"line":4634},[4152,16556,15718],{"class":4169},[4152,16558,16559,16561,16563],{"class":4154,"line":4661},[4152,16560,4628],{"class":4510},[4152,16562,16497],{"class":4181},[4152,16564,4529],{"class":4169},[4152,16566,16567],{"class":4154,"line":4697},[4152,16568,4782],{"class":4169},[3512,16570,16571,16572,3536,16574,3536,16576,12784],{},"Тепер у ",[3533,16573,9511],{},[3533,16575,15181],{},[3533,16577,15186],{},[4143,16579,16581],{"className":4145,"code":16580,"language":4147,"meta":4148,"style":4148},"const { colors } = useTheme();\n\u002F\u002F colors.surface, colors.text, …\n",[3533,16582,16583,16598],{"__ignoreMap":4148},[4152,16584,16585,16587,16589,16591,16594,16596],{"class":4154,"line":4155},[4152,16586,4959],{"class":4173},[4152,16588,4514],{"class":4169},[4152,16590,9898],{"class":4597},[4152,16592,16593],{"class":4169}," } = ",[4152,16595,3754],{"class":4581},[4152,16597,12917],{"class":4169},[4152,16599,16600],{"class":4154,"line":4532},[4152,16601,16602],{"class":5327},"\u002F\u002F colors.surface, colors.text, …\n",[3512,16604,16605,3980,16607,16610,16611,3609],{},[3533,16606,3754],{},[3525,16608,16609],{},"з’являється не з повітря"," — це 5 рядків, які ви експортуєте з того ж модуля, що й ",[3533,16612,3750],{},[15490,16614,16616],{"id":16615},"крок-5-підключаємо-в-корені-expo-router","Крок 5. Підключаємо в корені (Expo Router)",[3512,16618,16619,16620,16623,16624,16627,16628,3609],{},"У Expo Router корінь екранів — ",[3533,16621,16622],{},"app\u002F_layout.tsx",". Саме тут Provider має ",[3525,16625,16626],{},"обгорнути"," все, що викликає ",[3533,16629,3754],{},[9878,16631,16632,16735],{},[9881,16633,16635,16715],{"label":16634},"Погано",[4143,16636,16638],{"className":4145,"code":16637,"language":4147,"meta":4148,"style":4148},"\u002F\u002F useTheme у тому ж компоненті, де Provider ще «не вище себе»\nexport default function RootLayout() {\n  const { colors } = useTheme(); \u002F\u002F 💥 немає Provider-предка\n  return (\n    \u003CThemeProvider>\n      \u003CStack \u002F>\n    \u003C\u002FThemeProvider>\n  );\n}\n",[3533,16639,16640,16645,16658,16676,16682,16690,16699,16707,16711],{"__ignoreMap":4148},[4152,16641,16642],{"class":4154,"line":4155},[4152,16643,16644],{"class":5327},"\u002F\u002F useTheme у тому ж компоненті, де Provider ще «не вище себе»\n",[4152,16646,16647,16649,16651,16653,16656],{"class":4154,"line":4532},[4152,16648,4572],{"class":4510},[4152,16650,4575],{"class":4510},[4152,16652,4578],{"class":4173},[4152,16654,16655],{"class":4581}," RootLayout",[4152,16657,4585],{"class":4169},[4152,16659,16660,16662,16664,16666,16668,16670,16673],{"class":4154,"line":4562},[4152,16661,4591],{"class":4173},[4152,16663,4514],{"class":4169},[4152,16665,9898],{"class":4597},[4152,16667,16593],{"class":4169},[4152,16669,3754],{"class":4581},[4152,16671,16672],{"class":4169},"(); ",[4152,16674,16675],{"class":5327},"\u002F\u002F 💥 немає Provider-предка\n",[4152,16677,16678,16680],{"class":4154,"line":4569},[4152,16679,4628],{"class":4510},[4152,16681,4631],{"class":4169},[4152,16683,16684,16686,16688],{"class":4154,"line":4588},[4152,16685,4637],{"class":4158},[4152,16687,3750],{"class":4162},[4152,16689,4658],{"class":4158},[4152,16691,16692,16694,16697],{"class":4154,"line":4620},[4152,16693,4664],{"class":4158},[4152,16695,16696],{"class":4162},"Stack",[4152,16698,4212],{"class":4158},[4152,16700,16701,16703,16705],{"class":4154,"line":4625},[4152,16702,4933],{"class":4158},[4152,16704,3750],{"class":4162},[4152,16706,4658],{"class":4158},[4152,16708,16709],{"class":4154,"line":4634},[4152,16710,4943],{"class":4169},[4152,16712,16713],{"class":4154,"line":4661},[4152,16714,4782],{"class":4169},[3512,16716,16717,16718,16721,16722,3980,16725,16727,16728,16731,16732,3609],{},"Хук дивиться ",[3525,16719,16720],{},"вгору"," по дереву. Сам ",[3533,16723,16724],{},"RootLayout",[3525,16726,3963],{}," є дитиною свого ",[3533,16729,16730],{},"return"," — Provider з’являється лише для ",[3533,16733,16734],{},"\u003CStack \u002F>",[9881,16736,16738],{"label":16737},"Добре",[4143,16739,16741],{"className":4145,"code":16740,"language":4147,"meta":4148,"style":4148},"export default function RootLayout() {\n  return (\n    \u003CThemeProvider>\n      \u003CRootNavigator \u002F>\n    \u003C\u002FThemeProvider>\n  );\n}\n\n\u002F\u002F Окремий компонент — уже ВСЕРЕДИНІ Provider\nfunction RootNavigator() {\n  const { colors, scheme } = useTheme();\n  return (\n    \u003C>\n      \u003CStatusBar style={scheme === 'dark' ? 'light' : 'dark'} \u002F>\n      \u003CStack\n        screenOptions={{\n          contentStyle: { backgroundColor: colors.background },\n        }}\n      \u002F>\n    \u003C\u002F>\n  );\n}\n",[3533,16742,16743,16755,16761,16769,16778,16786,16790,16794,16798,16803,16812,16830,16836,16841,16871,16878,16889,16906,16913,16918,16923,16927],{"__ignoreMap":4148},[4152,16744,16745,16747,16749,16751,16753],{"class":4154,"line":4155},[4152,16746,4572],{"class":4510},[4152,16748,4575],{"class":4510},[4152,16750,4578],{"class":4173},[4152,16752,16655],{"class":4581},[4152,16754,4585],{"class":4169},[4152,16756,16757,16759],{"class":4154,"line":4532},[4152,16758,4628],{"class":4510},[4152,16760,4631],{"class":4169},[4152,16762,16763,16765,16767],{"class":4154,"line":4562},[4152,16764,4637],{"class":4158},[4152,16766,3750],{"class":4162},[4152,16768,4658],{"class":4158},[4152,16770,16771,16773,16776],{"class":4154,"line":4569},[4152,16772,4664],{"class":4158},[4152,16774,16775],{"class":4162},"RootNavigator",[4152,16777,4212],{"class":4158},[4152,16779,16780,16782,16784],{"class":4154,"line":4588},[4152,16781,4933],{"class":4158},[4152,16783,3750],{"class":4162},[4152,16785,4658],{"class":4158},[4152,16787,16788],{"class":4154,"line":4620},[4152,16789,4943],{"class":4169},[4152,16791,16792],{"class":4154,"line":4625},[4152,16793,4782],{"class":4169},[4152,16795,16796],{"class":4154,"line":4634},[4152,16797,4566],{"emptyLinePlaceholder":4565},[4152,16799,16800],{"class":4154,"line":4661},[4152,16801,16802],{"class":5327},"\u002F\u002F Окремий компонент — уже ВСЕРЕДИНІ Provider\n",[4152,16804,16805,16807,16810],{"class":4154,"line":4697},[4152,16806,9295],{"class":4173},[4152,16808,16809],{"class":4581}," RootNavigator",[4152,16811,4585],{"class":4169},[4152,16813,16814,16816,16818,16820,16822,16824,16826,16828],{"class":4154,"line":4721},[4152,16815,4591],{"class":4173},[4152,16817,4514],{"class":4169},[4152,16819,9898],{"class":4597},[4152,16821,3536],{"class":4169},[4152,16823,12929],{"class":4597},[4152,16825,16593],{"class":4169},[4152,16827,3754],{"class":4581},[4152,16829,12917],{"class":4169},[4152,16831,16832,16834],{"class":4154,"line":4727},[4152,16833,4628],{"class":4510},[4152,16835,4631],{"class":4169},[4152,16837,16838],{"class":4154,"line":4737},[4152,16839,16840],{"class":4158},"    \u003C>\n",[4152,16842,16843,16845,16847,16849,16851,16853,16855,16857,16859,16861,16863,16865,16867,16869],{"class":4154,"line":4745},[4152,16844,4664],{"class":4158},[4152,16846,3956],{"class":4162},[4152,16848,4166],{"class":4165},[4152,16850,4170],{"class":4169},[4152,16852,4174],{"class":4173},[4152,16854,12929],{"class":4181},[4152,16856,11063],{"class":4169},[4152,16858,14404],{"class":4202},[4152,16860,4901],{"class":4169},[4152,16862,11287],{"class":4202},[4152,16864,4907],{"class":4169},[4152,16866,14404],{"class":4202},[4152,16868,4209],{"class":4173},[4152,16870,4212],{"class":4158},[4152,16872,16873,16875],{"class":4154,"line":4785},[4152,16874,4664],{"class":4158},[4152,16876,16877],{"class":4162},"Stack\n",[4152,16879,16880,16883,16885,16887],{"class":4154,"line":4808},[4152,16881,16882],{"class":4165},"        screenOptions",[4152,16884,4170],{"class":4169},[4152,16886,4174],{"class":4173},[4152,16888,6224],{"class":4177},[4152,16890,16891,16894,16896,16898,16900,16902,16904],{"class":4154,"line":4822},[4152,16892,16893],{"class":4181},"          contentStyle:",[4152,16895,4514],{"class":4177},[4152,16897,4199],{"class":4181},[4152,16899,9103],{"class":4181},[4152,16901,3609],{"class":4177},[4152,16903,9618],{"class":4181},[4152,16905,5074],{"class":4177},[4152,16907,16908,16911],{"class":4154,"line":4841},[4152,16909,16910],{"class":4177},"        }",[4152,16912,4782],{"class":4173},[4152,16914,16915],{"class":4154,"line":4858},[4152,16916,16917],{"class":4158},"      \u002F>\n",[4152,16919,16920],{"class":4154,"line":4866},[4152,16921,16922],{"class":4158},"    \u003C\u002F>\n",[4152,16924,16925],{"class":4154,"line":4872},[4152,16926,4943],{"class":4169},[4152,16928,16929],{"class":4154,"line":4921},[4152,16930,4782],{"class":4169},[4047,16932,16933,3980,16936,16939,16940,3980,16943,16946,16947,16949],{},[3525,16934,16935],{},"Правило.",[3533,16937,16938],{},"useTheme()"," — лише в компонентах, які ",[3525,16941,16942],{},"рендеряться як нащадки",[3533,16944,16945],{},"\u003CThemeProvider>",". Якщо треба тема в корені — винесіть «внутрішній» компонент під Provider (як ",[3533,16948,16775],{}," вище).",[3589,16951,16953,16954,16956],{"id":16952},"що-саме-лежить-у-usetheme-контракт","Що саме лежить у ",[3533,16955,16938],{}," (контракт)",[3844,16958,16959,16972],{},[3847,16960,16961],{},[3850,16962,16963,16966,16969],{},[3853,16964,16965],{},"Поле",[3853,16967,16968],{},"Тип (ідея)",[3853,16970,16971],{},"Навіщо",[3863,16973,16974,16987,17000,17012,17032],{},[3850,16975,16976,16980,16984],{},[3868,16977,16978],{},[3533,16979,12929],{},[3868,16981,16982],{},[3533,16983,15553],{},[3868,16985,16986],{},"Фактичний scheme: StatusBar, підпис «зараз темна»",[3850,16988,16989,16993,16997],{},[3868,16990,16991],{},[3533,16992,13359],{},[3868,16994,16995],{},[3533,16996,15538],{},[3868,16998,16999],{},"Що обрано в UI (який чіп підсвітити)",[3850,17001,17002,17006,17009],{},[3868,17003,17004],{},[3533,17005,16330],{},[3868,17007,17008],{},"функція",[3868,17010,17011],{},"Змінити вибір (чіпи на домашньому екрані)",[3850,17013,17014,17018,17021],{},[3868,17015,17016],{},[3533,17017,9898],{},[3868,17019,17020],{},"словник ролей",[3868,17022,17023,3536,17025,3536,17027,3536,17029,17031],{},[3533,17024,9618],{},[3533,17026,3660],{},[3533,17028,9670],{},[3533,17030,9516],{},"…",[3850,17033,17034,17043,17046],{},[3868,17035,17036,4000,17038,4000,17041],{},[3533,17037,12680],{},[3533,17039,17040],{},"radius",[3533,17042,4409],{},[3868,17044,17045],{},"(у Nomad)",[3868,17047,17048],{},"Токени форми — спільні для light і dark",[3512,17050,17051,17052,3609],{},"У мінімальному варіанті достатньо перших чотирьох полів; spacing можна додати, коли вже є ",[3533,17053,17054],{},"tokens.ts",[3589,17056,17058],{"id":17057},"stylesheet-тема-разом-формула","StyleSheet + тема разом (формула)",[4143,17060,17062],{"className":4145,"code":17061,"language":4147,"meta":4148,"style":4148},"const { colors, spacing } = useTheme();\n\n\u002F\u002F геометрія — зі styles (модуль, один раз)\n\u002F\u002F колір — з теми (на кожен render, якщо scheme змінився)\n\u003CView\n  style={[\n    styles.card,\n    {\n      backgroundColor: colors.surface,\n      borderColor: colors.border,\n      padding: spacing?.md ?? 16,\n    },\n  ]}\n\u002F>\n",[3533,17063,17064,17082,17086,17091,17096,17102,17113,17123,17128,17141,17154,17174,17179,17186],{"__ignoreMap":4148},[4152,17065,17066,17068,17070,17072,17074,17076,17078,17080],{"class":4154,"line":4155},[4152,17067,4959],{"class":4173},[4152,17069,4514],{"class":4169},[4152,17071,9898],{"class":4597},[4152,17073,3536],{"class":4169},[4152,17075,12680],{"class":4597},[4152,17077,16593],{"class":4169},[4152,17079,3754],{"class":4581},[4152,17081,12917],{"class":4169},[4152,17083,17084],{"class":4154,"line":4532},[4152,17085,4566],{"emptyLinePlaceholder":4565},[4152,17087,17088],{"class":4154,"line":4562},[4152,17089,17090],{"class":5327},"\u002F\u002F геометрія — зі styles (модуль, один раз)\n",[4152,17092,17093],{"class":4154,"line":4569},[4152,17094,17095],{"class":5327},"\u002F\u002F колір — з теми (на кожен render, якщо scheme змінився)\n",[4152,17097,17098,17100],{"class":4154,"line":4588},[4152,17099,4159],{"class":4158},[4152,17101,6212],{"class":4162},[4152,17103,17104,17107,17109,17111],{"class":4154,"line":4620},[4152,17105,17106],{"class":4165},"  style",[4152,17108,4170],{"class":4169},[4152,17110,4174],{"class":4173},[4152,17112,9163],{"class":4177},[4152,17114,17115,17117,17119,17121],{"class":4154,"line":4625},[4152,17116,5316],{"class":4181},[4152,17118,3609],{"class":4177},[4152,17120,5996],{"class":4181},[4152,17122,4819],{"class":4177},[4152,17124,17125],{"class":4154,"line":4634},[4152,17126,17127],{"class":4177},"    {\n",[4152,17129,17130,17133,17135,17137,17139],{"class":4154,"line":4661},[4152,17131,17132],{"class":4181},"      backgroundColor:",[4152,17134,9103],{"class":4181},[4152,17136,3609],{"class":4177},[4152,17138,3660],{"class":4181},[4152,17140,4819],{"class":4177},[4152,17142,17143,17146,17148,17150,17152],{"class":4154,"line":4697},[4152,17144,17145],{"class":4181},"      borderColor:",[4152,17147,9103],{"class":4181},[4152,17149,3609],{"class":4177},[4152,17151,9769],{"class":4181},[4152,17153,4819],{"class":4177},[4152,17155,17156,17159,17162,17165,17168,17170,17172],{"class":4154,"line":4721},[4152,17157,17158],{"class":4181},"      padding:",[4152,17160,17161],{"class":4181}," spacing",[4152,17163,17164],{"class":4177},"?.",[4152,17166,17167],{"class":4181},"md",[4152,17169,13091],{"class":4169},[4152,17171,4194],{"class":4185},[4152,17173,4819],{"class":4177},[4152,17175,17176],{"class":4154,"line":4727},[4152,17177,17178],{"class":4177},"    },\n",[4152,17180,17181,17184],{"class":4154,"line":4737},[4152,17182,17183],{"class":4177},"  ]",[4152,17185,4782],{"class":4173},[4152,17187,17188],{"class":4154,"line":4745},[4152,17189,17190],{"class":4158},"\u002F>\n",[3512,17192,17193,17194,17196,17197,17199,17200,17202,17203,17205],{},"Так ви ",[3525,17195,3963],{}," пересоздаєте ",[3533,17198,3572],{}," на кожну зміну теми і ",[3525,17201,3963],{}," ховаєте hex у ",[3533,17204,4264],{}," на рівні файлу.",[3589,17207,17209],{"id":17208},"демо-мінімальний-themeprovider-з-нуля-в-одному-файлі","Демо: мінімальний ThemeProvider «з нуля» в одному файлі",[3512,17211,15480,17212,17215,17216,17218,17219,17218,17221,17223,17224,4388],{},[3525,17213,17214],{},"повний"," цикл у demо: ",[3533,17217,15247],{}," → ",[3533,17220,3750],{},[3533,17222,3754],{}," → екран з чіпами. Це та сама ідея, що в Nomad, лише без окремих файлів і без Router (у прев’ю немає ",[3533,17225,17226],{},"@\u002F…",[4496,17228,17231],{"device":4498,"filename":17229,"title":17230,"height":7406},"MiniThemeProvider.tsx","ThemeProvider · збираємо самі",[4143,17232,17234],{"className":4145,"code":17233,"language":4147,"meta":4148,"style":4148},"import {\n  createContext,\n  useCallback,\n  useContext,\n  useMemo,\n  useState,\n  type ReactNode,\n} from 'react';\nimport {\n  View,\n  Text,\n  Pressable,\n  StyleSheet,\n  useColorScheme,\n} from 'react-native';\n\n\u002F\u002F ——— 1. Палітри (у Nomad: colors.ts) ———\nconst lightColors = {\n  background: '#F8FAFC',\n  surface: '#FFFFFF',\n  text: '#0F172A',\n  textSecondary: '#64748B',\n  primary: '#2563EB',\n  border: '#E2E8F0',\n  onPrimary: '#FFFFFF',\n};\n\nconst darkColors = {\n  background: '#000000',\n  surface: '#1C1C1E',\n  text: '#F5F5F7',\n  textSecondary: '#A1A1AA',\n  primary: '#3B82F6',\n  border: '#3A3A3C',\n  onPrimary: '#FFFFFF',\n};\n\ntype Colors = typeof lightColors;\ntype Preference = 'system' | 'light' | 'dark';\ntype Scheme = 'light' | 'dark';\n\nfunction colorsForScheme(scheme: Scheme): Colors {\n  return scheme === 'dark' ? darkColors : lightColors;\n}\n\nfunction resolveScheme(\n  preference: Preference,\n  system: string | null | undefined,\n): Scheme {\n  if (preference === 'light' || preference === 'dark') return preference;\n  return system === 'dark' ? 'dark' : 'light';\n}\n\n\u002F\u002F ——— 2. Context + Provider + useTheme (у Nomad: ThemeProvider.tsx) ———\ntype ThemeValue = {\n  scheme: Scheme;\n  preference: Preference;\n  setPreference: (p: Preference) => void;\n  colors: Colors;\n};\n\nconst ThemeContext = createContext\u003CThemeValue | null>(null);\n\nfunction ThemeProvider({ children }: { children: ReactNode }) {\n  const system = useColorScheme();\n  const [preference, setPreferenceState] = useState\u003CPreference>('system');\n\n  const setPreference = useCallback((p: Preference) => {\n    setPreferenceState(p);\n  }, []);\n\n  const scheme = resolveScheme(preference, system);\n  const colors = useMemo(() => colorsForScheme(scheme), [scheme]);\n\n  const value = useMemo(\n    () => ({ scheme, preference, setPreference, colors }),\n    [scheme, preference, setPreference, colors],\n  );\n\n  return (\n    \u003CThemeContext.Provider value={value}>{children}\u003C\u002FThemeContext.Provider>\n  );\n}\n\nfunction useTheme(): ThemeValue {\n  const ctx = useContext(ThemeContext);\n  if (!ctx) {\n    throw new Error('useTheme() лише всередині \u003CThemeProvider>');\n  }\n  return ctx;\n}\n\n\u002F\u002F ——— 3. UI читає тему через хук (у Nomad: Screen, TripCard, …) ———\nfunction HomeScreen() {\n  const { colors, scheme, preference, setPreference } = useTheme();\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: colors.background }]}>\n      \u003CText style={[styles.title, { color: colors.text }]}>Мій ThemeProvider\u003C\u002FText>\n      \u003CText style={{ color: colors.textSecondary, marginBottom: 12 }}>\n        preference: {preference} · scheme: {scheme}\n      \u003C\u002FText>\n\n      \u003CView style={styles.row}>\n        {(['system', 'light', 'dark'] as Preference[]).map((p) => {\n          const active = preference === p;\n          return (\n            \u003CPressable\n              key={p}\n              onPress={() => setPreference(p)}\n              style={[\n                styles.chip,\n                {\n                  backgroundColor: active ? colors.primary : colors.surface,\n                  borderColor: colors.border,\n                },\n              ]}\n            >\n              \u003CText\n                style={{\n                  color: active ? colors.onPrimary : colors.text,\n                  fontWeight: '600',\n                  fontSize: 13,\n                }}\n              >\n                {p === 'system' ? 'Система' : p === 'light' ? 'Світла' : 'Темна'}\n              \u003C\u002FText>\n            \u003C\u002FPressable>\n          );\n        })}\n      \u003C\u002FView>\n\n      \u003CView\n        style={[\n          styles.card,\n          { backgroundColor: colors.surface, borderColor: colors.border },\n        ]}\n      >\n        \u003CText style={[styles.cardTitle, { color: colors.text }]}>\n          Картка через useTheme()\n        \u003C\u002FText>\n        \u003CText style={{ color: colors.textSecondary, marginTop: 6, lineHeight: 20 }}>\n          Цей екран не знає hex. Він просить colors у Context, який наповнив\n          ThemeProvider вище по дереву.\n        \u003C\u002FText>\n      \u003C\u002FView>\n    \u003C\u002FView>\n  );\n}\n\n\u002F\u002F ——— 4. Корінь: ОБОВʼЯЗКОВО обгорнути Provider ———\nexport default function App() {\n  return (\n    \u003CThemeProvider>\n      \u003CHomeScreen \u002F>\n    \u003C\u002FThemeProvider>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1, padding: 20, justifyContent: 'center', gap: 8 },\n  title: { fontSize: 22, fontWeight: '800' },\n  row: { flexDirection: 'row', flexWrap: 'wrap', gap: 8, marginBottom: 8 },\n  chip: {\n    paddingHorizontal: 12,\n    paddingVertical: 10,\n    borderRadius: 10,\n    borderWidth: 1,\n  },\n  card: { borderRadius: 16, borderWidth: 1, padding: 16, marginTop: 8 },\n  cardTitle: { fontSize: 17, fontWeight: '700' },\n});\n",[3533,17235,17236,17242,17249,17256,17263,17270,17277,17287,17297,17303,17310,17317,17324,17331,17338,17348,17352,17357,17365,17373,17381,17389,17397,17405,17413,17421,17425,17429,17437,17445,17453,17461,17469,17477,17485,17493,17497,17501,17516,17537,17554,17558,17580,17600,17604,17608,17616,17627,17645,17653,17681,17701,17705,17709,17714,17723,17733,17743,17763,17773,17777,17781,17806,17810,17832,17844,17870,17874,17898,17908,17912,17916,17936,17962,17966,17978,18002,18022,18026,18030,18036,18066,18070,18074,18078,18090,18106,18116,18131,18135,18143,18147,18151,18156,18165,18191,18195,18201,18237,18282,18316,18336,18344,18348,18370,18407,18424,18430,18436,18448,18470,18480,18490,18494,18518,18530,18534,18540,18544,18550,18560,18584,18592,18600,18606,18610,18644,18652,18660,18664,18670,18678,18682,18688,18698,18708,18732,18738,18742,18778,18783,18791,18831,18836,18841,18849,18857,18865,18869,18873,18877,18882,18894,18900,18908,18917,18925,18929,18933,18937,18953,18983,19001,19033,19039,19047,19055,19063,19071,19075,19107,19125],{"__ignoreMap":4148},[4152,17237,17238,17240],{"class":4154,"line":4155},[4152,17239,4511],{"class":4510},[4152,17241,4982],{"class":4169},[4152,17243,17244,17247],{"class":4154,"line":4532},[4152,17245,17246],{"class":4181},"  createContext",[4152,17248,4819],{"class":4169},[4152,17250,17251,17254],{"class":4154,"line":4562},[4152,17252,17253],{"class":4181},"  useCallback",[4152,17255,4819],{"class":4169},[4152,17257,17258,17261],{"class":4154,"line":4569},[4152,17259,17260],{"class":4181},"  useContext",[4152,17262,4819],{"class":4169},[4152,17264,17265,17268],{"class":4154,"line":4588},[4152,17266,17267],{"class":4181},"  useMemo",[4152,17269,4819],{"class":4169},[4152,17271,17272,17275],{"class":4154,"line":4620},[4152,17273,17274],{"class":4181},"  useState",[4152,17276,4819],{"class":4169},[4152,17278,17279,17282,17285],{"class":4154,"line":4625},[4152,17280,17281],{"class":4510},"  type",[4152,17283,17284],{"class":4181}," ReactNode",[4152,17286,4819],{"class":4169},[4152,17288,17289,17291,17293,17295],{"class":4154,"line":4634},[4152,17290,13523],{"class":4169},[4152,17292,4523],{"class":4510},[4152,17294,4526],{"class":4202},[4152,17296,4529],{"class":4169},[4152,17298,17299,17301],{"class":4154,"line":4661},[4152,17300,4511],{"class":4510},[4152,17302,4982],{"class":4169},[4152,17304,17305,17308],{"class":4154,"line":4697},[4152,17306,17307],{"class":4181},"  View",[4152,17309,4819],{"class":4169},[4152,17311,17312,17315],{"class":4154,"line":4721},[4152,17313,17314],{"class":4181},"  Text",[4152,17316,4819],{"class":4169},[4152,17318,17319,17322],{"class":4154,"line":4727},[4152,17320,17321],{"class":4181},"  Pressable",[4152,17323,4819],{"class":4169},[4152,17325,17326,17329],{"class":4154,"line":4737},[4152,17327,17328],{"class":4181},"  StyleSheet",[4152,17330,4819],{"class":4169},[4152,17332,17333,17336],{"class":4154,"line":4745},[4152,17334,17335],{"class":4181},"  useColorScheme",[4152,17337,4819],{"class":4169},[4152,17339,17340,17342,17344,17346],{"class":4154,"line":4785},[4152,17341,13523],{"class":4169},[4152,17343,4523],{"class":4510},[4152,17345,4557],{"class":4202},[4152,17347,4529],{"class":4169},[4152,17349,17350],{"class":4154,"line":4808},[4152,17351,4566],{"emptyLinePlaceholder":4565},[4152,17353,17354],{"class":4154,"line":4822},[4152,17355,17356],{"class":5327},"\u002F\u002F ——— 1. Палітри (у Nomad: colors.ts) ———\n",[4152,17358,17359,17361,17363],{"class":4154,"line":4841},[4152,17360,4959],{"class":4173},[4152,17362,13444],{"class":4597},[4152,17364,10591],{"class":4169},[4152,17366,17367,17369,17371],{"class":4154,"line":4858},[4152,17368,10596],{"class":4181},[4152,17370,4203],{"class":4202},[4152,17372,4819],{"class":4169},[4152,17374,17375,17377,17379],{"class":4154,"line":4866},[4152,17376,10605],{"class":4181},[4152,17378,10608],{"class":4202},[4152,17380,4819],{"class":4169},[4152,17382,17383,17385,17387],{"class":4154,"line":4872},[4152,17384,10615],{"class":4181},[4152,17386,10618],{"class":4202},[4152,17388,4819],{"class":4169},[4152,17390,17391,17393,17395],{"class":4154,"line":4921},[4152,17392,10625],{"class":4181},[4152,17394,10628],{"class":4202},[4152,17396,4819],{"class":4169},[4152,17398,17399,17401,17403],{"class":4154,"line":4930},[4152,17400,10635],{"class":4181},[4152,17402,5171],{"class":4202},[4152,17404,4819],{"class":4169},[4152,17406,17407,17409,17411],{"class":4154,"line":4940},[4152,17408,10654],{"class":4181},[4152,17410,5731],{"class":4202},[4152,17412,4819],{"class":4169},[4152,17414,17415,17417,17419],{"class":4154,"line":4946},[4152,17416,10673],{"class":4181},[4152,17418,10608],{"class":4202},[4152,17420,4819],{"class":4169},[4152,17422,17423],{"class":4154,"line":4951},[4152,17424,10682],{"class":4169},[4152,17426,17427],{"class":4154,"line":4956},[4152,17428,4566],{"emptyLinePlaceholder":4565},[4152,17430,17431,17433,17435],{"class":4154,"line":4976},[4152,17432,4959],{"class":4173},[4152,17434,13542],{"class":4597},[4152,17436,10591],{"class":4169},[4152,17438,17439,17441,17443],{"class":4154,"line":4985},[4152,17440,10596],{"class":4181},[4152,17442,10702],{"class":4202},[4152,17444,4819],{"class":4169},[4152,17446,17447,17449,17451],{"class":4154,"line":4995},[4152,17448,10605],{"class":4181},[4152,17450,10711],{"class":4202},[4152,17452,4819],{"class":4169},[4152,17454,17455,17457,17459],{"class":4154,"line":5005},[4152,17456,10615],{"class":4181},[4152,17458,10720],{"class":4202},[4152,17460,4819],{"class":4169},[4152,17462,17463,17465,17467],{"class":4154,"line":5016},[4152,17464,10625],{"class":4181},[4152,17466,10729],{"class":4202},[4152,17468,4819],{"class":4169},[4152,17470,17471,17473,17475],{"class":4154,"line":5027},[4152,17472,10635],{"class":4181},[4152,17474,10738],{"class":4202},[4152,17476,4819],{"class":4169},[4152,17478,17479,17481,17483],{"class":4154,"line":5038},[4152,17480,10654],{"class":4181},[4152,17482,10755],{"class":4202},[4152,17484,4819],{"class":4169},[4152,17486,17487,17489,17491],{"class":4154,"line":5044},[4152,17488,10673],{"class":4181},[4152,17490,10608],{"class":4202},[4152,17492,4819],{"class":4169},[4152,17494,17495],{"class":4154,"line":5077},[4152,17496,10682],{"class":4169},[4152,17498,17499],{"class":4154,"line":5107},[4152,17500,4566],{"emptyLinePlaceholder":4565},[4152,17502,17503,17505,17508,17510,17512,17514],{"class":4154,"line":5115},[4152,17504,15584],{"class":4173},[4152,17506,17507],{"class":4162}," Colors",[4152,17509,4964],{"class":4169},[4152,17511,15968],{"class":4173},[4152,17513,13444],{"class":4181},[4152,17515,4529],{"class":4169},[4152,17517,17518,17520,17523,17525,17527,17529,17531,17533,17535],{"class":4154,"line":5125},[4152,17519,15584],{"class":4173},[4152,17521,17522],{"class":4162}," Preference",[4152,17524,4964],{"class":4169},[4152,17526,15592],{"class":4202},[4152,17528,10820],{"class":4169},[4152,17530,10817],{"class":4202},[4152,17532,10820],{"class":4169},[4152,17534,10823],{"class":4202},[4152,17536,4529],{"class":4169},[4152,17538,17539,17541,17544,17546,17548,17550,17552],{"class":4154,"line":5136},[4152,17540,15584],{"class":4173},[4152,17542,17543],{"class":4162}," Scheme",[4152,17545,4964],{"class":4169},[4152,17547,10817],{"class":4202},[4152,17549,10820],{"class":4169},[4152,17551,10823],{"class":4202},[4152,17553,4529],{"class":4169},[4152,17555,17556],{"class":4154,"line":5146},[4152,17557,4566],{"emptyLinePlaceholder":4565},[4152,17559,17560,17562,17564,17566,17568,17570,17573,17575,17578],{"class":4154,"line":5156},[4152,17561,9295],{"class":4173},[4152,17563,13641],{"class":4581},[4152,17565,4611],{"class":4169},[4152,17567,12929],{"class":4181},[4152,17569,13648],{"class":4169},[4152,17571,17572],{"class":4162},"Scheme",[4152,17574,15670],{"class":4169},[4152,17576,17577],{"class":4162},"Colors",[4152,17579,4982],{"class":4169},[4152,17581,17582,17584,17586,17588,17590,17592,17594,17596,17598],{"class":4154,"line":5161},[4152,17583,4628],{"class":4510},[4152,17585,12910],{"class":4181},[4152,17587,10868],{"class":4169},[4152,17589,10823],{"class":4202},[4152,17591,10873],{"class":4169},[4152,17593,13672],{"class":4181},[4152,17595,10878],{"class":4169},[4152,17597,13677],{"class":4181},[4152,17599,4529],{"class":4169},[4152,17601,17602],{"class":4154,"line":5176},[4152,17603,4782],{"class":4169},[4152,17605,17606],{"class":4154,"line":5192},[4152,17607,4566],{"emptyLinePlaceholder":4565},[4152,17609,17610,17612,17614],{"class":4154,"line":5219},[4152,17611,9295],{"class":4173},[4152,17613,15630],{"class":4581},[4152,17615,15633],{"class":4169},[4152,17617,17618,17620,17622,17625],{"class":4154,"line":6529},[4152,17619,15638],{"class":4181},[4152,17621,13648],{"class":4169},[4152,17623,17624],{"class":4162},"Preference",[4152,17626,4819],{"class":4169},[4152,17628,17629,17631,17633,17635,17637,17639,17641,17643],{"class":4154,"line":6534},[4152,17630,15650],{"class":4181},[4152,17632,13648],{"class":4169},[4152,17634,15655],{"class":4162},[4152,17636,10820],{"class":4169},[4152,17638,5519],{"class":4162},[4152,17640,10820],{"class":4169},[4152,17642,9239],{"class":4162},[4152,17644,4819],{"class":4169},[4152,17646,17647,17649,17651],{"class":4154,"line":6562},[4152,17648,15670],{"class":4169},[4152,17650,17572],{"class":4162},[4152,17652,4982],{"class":4169},[4152,17654,17655,17657,17659,17661,17663,17665,17667,17669,17671,17673,17675,17677,17679],{"class":4154,"line":6570},[4152,17656,15680],{"class":4510},[4152,17658,3627],{"class":4169},[4152,17660,13359],{"class":4181},[4152,17662,10868],{"class":4169},[4152,17664,10817],{"class":4202},[4152,17666,15691],{"class":4169},[4152,17668,13359],{"class":4181},[4152,17670,10868],{"class":4169},[4152,17672,10823],{"class":4202},[4152,17674,4770],{"class":4169},[4152,17676,16730],{"class":4510},[4152,17678,15707],{"class":4181},[4152,17680,4529],{"class":4169},[4152,17682,17683,17685,17687,17689,17691,17693,17695,17697,17699],{"class":4154,"line":6580},[4152,17684,4628],{"class":4510},[4152,17686,15730],{"class":4181},[4152,17688,10868],{"class":4169},[4152,17690,10823],{"class":4202},[4152,17692,10873],{"class":4169},[4152,17694,10823],{"class":4202},[4152,17696,10878],{"class":4169},[4152,17698,10817],{"class":4202},[4152,17700,4529],{"class":4169},[4152,17702,17703],{"class":4154,"line":6589},[4152,17704,4782],{"class":4169},[4152,17706,17707],{"class":4154,"line":6598},[4152,17708,4566],{"emptyLinePlaceholder":4565},[4152,17710,17711],{"class":4154,"line":6603},[4152,17712,17713],{"class":5327},"\u002F\u002F ——— 2. Context + Provider + useTheme (у Nomad: ThemeProvider.tsx) ———\n",[4152,17715,17716,17718,17721],{"class":4154,"line":6629},[4152,17717,15584],{"class":4173},[4152,17719,17720],{"class":4162}," ThemeValue",[4152,17722,10591],{"class":4169},[4152,17724,17725,17727,17729,17731],{"class":4154,"line":6662},[4152,17726,15899],{"class":4181},[4152,17728,13648],{"class":4169},[4152,17730,17572],{"class":4162},[4152,17732,4529],{"class":4169},[4152,17734,17735,17737,17739,17741],{"class":4154,"line":8168},[4152,17736,15638],{"class":4181},[4152,17738,13648],{"class":4169},[4152,17740,17624],{"class":4162},[4152,17742,4529],{"class":4169},[4152,17744,17745,17747,17749,17751,17753,17755,17757,17759,17761],{"class":4154,"line":8187},[4152,17746,15932],{"class":4581},[4152,17748,15935],{"class":4169},[4152,17750,3512],{"class":4181},[4152,17752,13648],{"class":4169},[4152,17754,17624],{"class":4162},[4152,17756,4770],{"class":4169},[4152,17758,4758],{"class":4173},[4152,17760,15956],{"class":4162},[4152,17762,4529],{"class":4169},[4152,17764,17765,17767,17769,17771],{"class":4154,"line":8198},[4152,17766,15963],{"class":4181},[4152,17768,13648],{"class":4169},[4152,17770,17577],{"class":4162},[4152,17772,4529],{"class":4169},[4152,17774,17775],{"class":4154,"line":8214},[4152,17776,10682],{"class":4169},[4152,17778,17779],{"class":4154,"line":8229},[4152,17780,4566],{"emptyLinePlaceholder":4565},[4152,17782,17783,17785,17787,17789,17791,17793,17796,17798,17800,17802,17804],{"class":4154,"line":8236},[4152,17784,4959],{"class":4173},[4152,17786,15995],{"class":4597},[4152,17788,4964],{"class":4169},[4152,17790,15247],{"class":4581},[4152,17792,4159],{"class":4169},[4152,17794,17795],{"class":4162},"ThemeValue",[4152,17797,10820],{"class":4169},[4152,17799,5519],{"class":4162},[4152,17801,10826],{"class":4169},[4152,17803,5519],{"class":4173},[4152,17805,4617],{"class":4169},[4152,17807,17808],{"class":4154,"line":8241},[4152,17809,4566],{"emptyLinePlaceholder":4565},[4152,17811,17812,17814,17816,17818,17820,17823,17825,17827,17829],{"class":4154,"line":8264},[4152,17813,9295],{"class":4173},[4152,17815,16061],{"class":4581},[4152,17817,4795],{"class":4169},[4152,17819,15343],{"class":4181},[4152,17821,17822],{"class":4169}," }: { ",[4152,17824,15343],{"class":4181},[4152,17826,13648],{"class":4169},[4152,17828,15852],{"class":4162},[4152,17830,17831],{"class":4169}," }) {\n",[4152,17833,17834,17836,17838,17840,17842],{"class":4154,"line":8284},[4152,17835,4591],{"class":4173},[4152,17837,15730],{"class":4597},[4152,17839,4964],{"class":4169},[4152,17841,3543],{"class":4581},[4152,17843,12917],{"class":4169},[4152,17845,17846,17848,17850,17852,17854,17856,17858,17860,17862,17864,17866,17868],{"class":4154,"line":8293},[4152,17847,4591],{"class":4173},[4152,17849,4594],{"class":4169},[4152,17851,13359],{"class":4597},[4152,17853,3536],{"class":4169},[4152,17855,16138],{"class":4597},[4152,17857,4606],{"class":4169},[4152,17859,4517],{"class":4581},[4152,17861,4159],{"class":4169},[4152,17863,17624],{"class":4162},[4152,17865,10826],{"class":4169},[4152,17867,15592],{"class":4202},[4152,17869,4617],{"class":4169},[4152,17871,17872],{"class":4154,"line":8302},[4152,17873,4566],{"emptyLinePlaceholder":4565},[4152,17875,17876,17878,17880,17882,17884,17886,17888,17890,17892,17894,17896],{"class":4154,"line":8307},[4152,17877,4591],{"class":4173},[4152,17879,16251],{"class":4597},[4152,17881,4964],{"class":4169},[4152,17883,15847],{"class":4581},[4152,17885,4764],{"class":4169},[4152,17887,3512],{"class":4181},[4152,17889,13648],{"class":4169},[4152,17891,17624],{"class":4162},[4152,17893,4770],{"class":4169},[4152,17895,4758],{"class":4173},[4152,17897,4982],{"class":4169},[4152,17899,17900,17902,17904,17906],{"class":4154,"line":8330},[4152,17901,16276],{"class":4581},[4152,17903,4611],{"class":4169},[4152,17905,3512],{"class":4181},[4152,17907,4617],{"class":4169},[4152,17909,17910],{"class":4154,"line":8336},[4152,17911,16287],{"class":4169},[4152,17913,17914],{"class":4154,"line":8345},[4152,17915,4566],{"emptyLinePlaceholder":4565},[4152,17917,17918,17920,17922,17924,17926,17928,17930,17932,17934],{"class":4154,"line":8354},[4152,17919,4591],{"class":4173},[4152,17921,12910],{"class":4597},[4152,17923,4964],{"class":4169},[4152,17925,16191],{"class":4581},[4152,17927,4611],{"class":4169},[4152,17929,13359],{"class":4181},[4152,17931,3536],{"class":4169},[4152,17933,13324],{"class":4181},[4152,17935,4617],{"class":4169},[4152,17937,17938,17940,17942,17944,17946,17948,17950,17952,17954,17956,17958,17960],{"class":4154,"line":8359},[4152,17939,4591],{"class":4173},[4152,17941,9103],{"class":4597},[4152,17943,4964],{"class":4169},[4152,17945,15838],{"class":4581},[4152,17947,16224],{"class":4169},[4152,17949,4758],{"class":4173},[4152,17951,13641],{"class":4581},[4152,17953,4611],{"class":4169},[4152,17955,12929],{"class":4181},[4152,17957,16235],{"class":4169},[4152,17959,12929],{"class":4181},[4152,17961,16240],{"class":4169},[4152,17963,17964],{"class":4154,"line":8364},[4152,17965,4566],{"emptyLinePlaceholder":4565},[4152,17967,17968,17970,17972,17974,17976],{"class":4154,"line":8369},[4152,17969,4591],{"class":4173},[4152,17971,16303],{"class":4597},[4152,17973,4964],{"class":4169},[4152,17975,15838],{"class":4581},[4152,17977,15633],{"class":4169},[4152,17979,17980,17982,17984,17986,17988,17990,17992,17994,17996,17998,18000],{"class":4154,"line":8386},[4152,17981,16314],{"class":4169},[4152,17983,4758],{"class":4173},[4152,17985,16319],{"class":4169},[4152,17987,12929],{"class":4181},[4152,17989,3536],{"class":4169},[4152,17991,13359],{"class":4181},[4152,17993,3536],{"class":4169},[4152,17995,16330],{"class":4181},[4152,17997,3536],{"class":4169},[4152,17999,9898],{"class":4181},[4152,18001,16337],{"class":4169},[4152,18003,18004,18006,18008,18010,18012,18014,18016,18018,18020],{"class":4154,"line":8393},[4152,18005,16342],{"class":4169},[4152,18007,12929],{"class":4181},[4152,18009,3536],{"class":4169},[4152,18011,13359],{"class":4181},[4152,18013,3536],{"class":4169},[4152,18015,16330],{"class":4181},[4152,18017,3536],{"class":4169},[4152,18019,9898],{"class":4181},[4152,18021,16359],{"class":4169},[4152,18023,18024],{"class":4154,"line":8402},[4152,18025,4943],{"class":4169},[4152,18027,18028],{"class":4154,"line":8411},[4152,18029,4566],{"emptyLinePlaceholder":4565},[4152,18031,18032,18034],{"class":4154,"line":8420},[4152,18033,4628],{"class":4510},[4152,18035,4631],{"class":4169},[4152,18037,18038,18040,18042,18044,18046,18048,18050,18052,18054,18056,18058,18060,18062,18064],{"class":4154,"line":8429},[4152,18039,4637],{"class":4158},[4152,18041,16025],{"class":4162},[4152,18043,16303],{"class":4165},[4152,18045,4170],{"class":4169},[4152,18047,4174],{"class":4173},[4152,18049,13061],{"class":4181},[4152,18051,4209],{"class":4173},[4152,18053,4684],{"class":4158},[4152,18055,4174],{"class":4173},[4152,18057,15343],{"class":4181},[4152,18059,4209],{"class":4173},[4152,18061,4690],{"class":4158},[4152,18063,16025],{"class":4162},[4152,18065,4658],{"class":4158},[4152,18067,18068],{"class":4154,"line":8438},[4152,18069,4943],{"class":4169},[4152,18071,18072],{"class":4154,"line":8443},[4152,18073,4782],{"class":4169},[4152,18075,18076],{"class":4154,"line":8456},[4152,18077,4566],{"emptyLinePlaceholder":4565},[4152,18079,18080,18082,18084,18086,18088],{"class":4154,"line":8476},[4152,18081,9295],{"class":4173},[4152,18083,16483],{"class":4581},[4152,18085,16486],{"class":4169},[4152,18087,17795],{"class":4162},[4152,18089,4982],{"class":4169},[4152,18091,18092,18094,18096,18098,18100,18102,18104],{"class":4154,"line":8506},[4152,18093,4591],{"class":4173},[4152,18095,16497],{"class":4597},[4152,18097,4964],{"class":4169},[4152,18099,15298],{"class":4581},[4152,18101,4611],{"class":4169},[4152,18103,16019],{"class":4181},[4152,18105,4617],{"class":4169},[4152,18107,18108,18110,18112,18114],{"class":4154,"line":8513},[4152,18109,15680],{"class":4510},[4152,18111,16514],{"class":4169},[4152,18113,16517],{"class":4181},[4152,18115,13657],{"class":4169},[4152,18117,18118,18120,18122,18124,18126,18129],{"class":4154,"line":8522},[4152,18119,16524],{"class":4510},[4152,18121,16527],{"class":4173},[4152,18123,16530],{"class":4581},[4152,18125,4611],{"class":4169},[4152,18127,18128],{"class":4202},"'useTheme() лише всередині \u003CThemeProvider>'",[4152,18130,4617],{"class":4169},[4152,18132,18133],{"class":4154,"line":8531},[4152,18134,15718],{"class":4169},[4152,18136,18137,18139,18141],{"class":4154,"line":8540},[4152,18138,4628],{"class":4510},[4152,18140,16497],{"class":4181},[4152,18142,4529],{"class":4169},[4152,18144,18145],{"class":4154,"line":8549},[4152,18146,4782],{"class":4169},[4152,18148,18149],{"class":4154,"line":8558},[4152,18150,4566],{"emptyLinePlaceholder":4565},[4152,18152,18153],{"class":4154,"line":8569},[4152,18154,18155],{"class":5327},"\u002F\u002F ——— 3. UI читає тему через хук (у Nomad: Screen, TripCard, …) ———\n",[4152,18157,18158,18160,18163],{"class":4154,"line":8578},[4152,18159,9295],{"class":4173},[4152,18161,18162],{"class":4581}," HomeScreen",[4152,18164,4585],{"class":4169},[4152,18166,18167,18169,18171,18173,18175,18177,18179,18181,18183,18185,18187,18189],{"class":4154,"line":8583},[4152,18168,4591],{"class":4173},[4152,18170,4514],{"class":4169},[4152,18172,9898],{"class":4597},[4152,18174,3536],{"class":4169},[4152,18176,12929],{"class":4597},[4152,18178,3536],{"class":4169},[4152,18180,13359],{"class":4597},[4152,18182,3536],{"class":4169},[4152,18184,16330],{"class":4597},[4152,18186,16593],{"class":4169},[4152,18188,3754],{"class":4581},[4152,18190,12917],{"class":4169},[4152,18192,18193],{"class":4154,"line":8610},[4152,18194,4566],{"emptyLinePlaceholder":4565},[4152,18196,18197,18199],{"class":4154,"line":8642},[4152,18198,4628],{"class":4510},[4152,18200,4631],{"class":4169},[4152,18202,18203,18205,18207,18209,18211,18213,18215,18217,18219,18221,18223,18225,18227,18229,18231,18233,18235],{"class":4154,"line":8674},[4152,18204,4637],{"class":4158},[4152,18206,3967],{"class":4162},[4152,18208,4166],{"class":4165},[4152,18210,4170],{"class":4169},[4152,18212,4174],{"class":4173},[4152,18214,6047],{"class":4177},[4152,18216,4648],{"class":4181},[4152,18218,3609],{"class":4177},[4152,18220,4653],{"class":4181},[4152,18222,9098],{"class":4177},[4152,18224,4199],{"class":4181},[4152,18226,9103],{"class":4181},[4152,18228,3609],{"class":4177},[4152,18230,9618],{"class":4181},[4152,18232,9110],{"class":4177},[4152,18234,4209],{"class":4173},[4152,18236,4658],{"class":4158},[4152,18238,18239,18241,18243,18245,18247,18249,18251,18253,18255,18257,18259,18261,18263,18265,18267,18269,18271,18273,18276,18278,18280],{"class":4154,"line":8681},[4152,18240,4664],{"class":4158},[4152,18242,4010],{"class":4162},[4152,18244,4166],{"class":4165},[4152,18246,4170],{"class":4169},[4152,18248,4174],{"class":4173},[4152,18250,6047],{"class":4177},[4152,18252,4648],{"class":4181},[4152,18254,3609],{"class":4177},[4152,18256,4679],{"class":4181},[4152,18258,9098],{"class":4177},[4152,18260,5068],{"class":4181},[4152,18262,9103],{"class":4181},[4152,18264,3609],{"class":4177},[4152,18266,9670],{"class":4181},[4152,18268,9110],{"class":4177},[4152,18270,4209],{"class":4173},[4152,18272,4684],{"class":4158},[4152,18274,18275],{"class":4169},"Мій ThemeProvider",[4152,18277,4690],{"class":4158},[4152,18279,4010],{"class":4162},[4152,18281,4658],{"class":4158},[4152,18283,18284,18286,18288,18290,18292,18294,18296,18298,18300,18302,18304,18306,18308,18310,18312,18314],{"class":4154,"line":8694},[4152,18285,4664],{"class":4158},[4152,18287,4010],{"class":4162},[4152,18289,4166],{"class":4165},[4152,18291,4170],{"class":4169},[4152,18293,4174],{"class":4173},[4152,18295,4178],{"class":4177},[4152,18297,5068],{"class":4181},[4152,18299,9103],{"class":4181},[4152,18301,3609],{"class":4177},[4152,18303,9693],{"class":4181},[4152,18305,3536],{"class":4177},[4152,18307,5774],{"class":4181},[4152,18309,5033],{"class":4185},[4152,18311,4206],{"class":4177},[4152,18313,4209],{"class":4173},[4152,18315,4658],{"class":4158},[4152,18317,18318,18321,18323,18325,18327,18330,18332,18334],{"class":4154,"line":8704},[4152,18319,18320],{"class":4169},"        preference: ",[4152,18322,4174],{"class":4173},[4152,18324,13359],{"class":4181},[4152,18326,4209],{"class":4173},[4152,18328,18329],{"class":4169}," · scheme: ",[4152,18331,4174],{"class":4173},[4152,18333,12929],{"class":4181},[4152,18335,4782],{"class":4173},[4152,18337,18338,18340,18342],{"class":4154,"line":8714},[4152,18339,4730],{"class":4158},[4152,18341,4010],{"class":4162},[4152,18343,4658],{"class":4158},[4152,18345,18346],{"class":4154,"line":8719},[4152,18347,4566],{"emptyLinePlaceholder":4565},[4152,18349,18350,18352,18354,18356,18358,18360,18362,18364,18366,18368],{"class":4154,"line":8738},[4152,18351,4664],{"class":4158},[4152,18353,3967],{"class":4162},[4152,18355,4166],{"class":4165},[4152,18357,4170],{"class":4169},[4152,18359,4174],{"class":4173},[4152,18361,4648],{"class":4181},[4152,18363,3609],{"class":4177},[4152,18365,6837],{"class":4181},[4152,18367,4209],{"class":4173},[4152,18369,4658],{"class":4158},[4152,18371,18372,18374,18376,18378,18380,18382,18384,18386,18388,18390,18392,18395,18397,18399,18401,18403,18405],{"class":4154,"line":8746},[4152,18373,7708],{"class":4173},[4152,18375,11015],{"class":4177},[4152,18377,15592],{"class":4202},[4152,18379,3536],{"class":4177},[4152,18381,10817],{"class":4202},[4152,18383,3536],{"class":4177},[4152,18385,10823],{"class":4202},[4152,18387,11024],{"class":4177},[4152,18389,11027],{"class":4510},[4152,18391,17522],{"class":4162},[4152,18393,18394],{"class":4177},"[]).",[4152,18396,11035],{"class":4581},[4152,18398,4764],{"class":4177},[4152,18400,3512],{"class":4181},[4152,18402,4770],{"class":4177},[4152,18404,4758],{"class":4173},[4152,18406,4982],{"class":4177},[4152,18408,18409,18411,18413,18415,18417,18419,18422],{"class":4154,"line":8756},[4152,18410,11051],{"class":4173},[4152,18412,11054],{"class":4597},[4152,18414,11057],{"class":4169},[4152,18416,15707],{"class":4181},[4152,18418,11063],{"class":4169},[4152,18420,18421],{"class":4181}," p",[4152,18423,4529],{"class":4177},[4152,18425,18426,18428],{"class":4154,"line":8765},[4152,18427,11073],{"class":4510},[4152,18429,4631],{"class":4177},[4152,18431,18432,18434],{"class":4154,"line":8774},[4152,18433,8072],{"class":4158},[4152,18435,4742],{"class":4162},[4152,18437,18438,18440,18442,18444,18446],{"class":4154,"line":8779},[4152,18439,11086],{"class":4165},[4152,18441,4170],{"class":4169},[4152,18443,4174],{"class":4173},[4152,18445,3512],{"class":4181},[4152,18447,4782],{"class":4173},[4152,18449,18450,18452,18454,18456,18458,18460,18462,18464,18466,18468],{"class":4154,"line":8805},[4152,18451,11099],{"class":4165},[4152,18453,4170],{"class":4169},[4152,18455,4174],{"class":4173},[4152,18457,4755],{"class":4177},[4152,18459,4758],{"class":4173},[4152,18461,16251],{"class":4581},[4152,18463,4611],{"class":4177},[4152,18465,3512],{"class":4181},[4152,18467,3910],{"class":4177},[4152,18469,4782],{"class":4173},[4152,18471,18472,18474,18476,18478],{"class":4154,"line":8812},[4152,18473,11123],{"class":4165},[4152,18475,4170],{"class":4169},[4152,18477,4174],{"class":4173},[4152,18479,9163],{"class":4177},[4152,18481,18482,18484,18486,18488],{"class":4154,"line":8821},[4152,18483,11134],{"class":4181},[4152,18485,3609],{"class":4177},[4152,18487,11139],{"class":4181},[4152,18489,4819],{"class":4177},[4152,18491,18492],{"class":4154,"line":8830},[4152,18493,11146],{"class":4177},[4152,18495,18496,18498,18500,18502,18504,18506,18508,18510,18512,18514,18516],{"class":4154,"line":8839},[4152,18497,11151],{"class":4181},[4152,18499,11054],{"class":4181},[4152,18501,4901],{"class":4169},[4152,18503,9103],{"class":4181},[4152,18505,3609],{"class":4177},[4152,18507,9516],{"class":4181},[4152,18509,4907],{"class":4169},[4152,18511,9103],{"class":4181},[4152,18513,3609],{"class":4177},[4152,18515,3660],{"class":4181},[4152,18517,4819],{"class":4177},[4152,18519,18520,18522,18524,18526,18528],{"class":4154,"line":8848},[4152,18521,11176],{"class":4181},[4152,18523,9103],{"class":4181},[4152,18525,3609],{"class":4177},[4152,18527,9769],{"class":4181},[4152,18529,4819],{"class":4177},[4152,18531,18532],{"class":4154,"line":8853},[4152,18533,11189],{"class":4177},[4152,18535,18536,18538],{"class":4154,"line":8866},[4152,18537,11194],{"class":4177},[4152,18539,4782],{"class":4173},[4152,18541,18542],{"class":4154,"line":8879},[4152,18543,11201],{"class":4158},[4152,18545,18546,18548],{"class":4154,"line":8904},[4152,18547,11206],{"class":4158},[4152,18549,11209],{"class":4162},[4152,18551,18552,18554,18556,18558],{"class":4154,"line":8930},[4152,18553,11214],{"class":4165},[4152,18555,4170],{"class":4169},[4152,18557,4174],{"class":4173},[4152,18559,6224],{"class":4177},[4152,18561,18562,18564,18566,18568,18570,18572,18574,18576,18578,18580,18582],{"class":4154,"line":11945},[4152,18563,11225],{"class":4181},[4152,18565,11054],{"class":4181},[4152,18567,4901],{"class":4169},[4152,18569,9103],{"class":4181},[4152,18571,3609],{"class":4177},[4152,18573,9747],{"class":4181},[4152,18575,4907],{"class":4169},[4152,18577,9103],{"class":4181},[4152,18579,3609],{"class":4177},[4152,18581,9670],{"class":4181},[4152,18583,4819],{"class":4177},[4152,18585,18586,18588,18590],{"class":4154,"line":11956},[4152,18587,11250],{"class":4181},[4152,18589,5763],{"class":4202},[4152,18591,4819],{"class":4177},[4152,18593,18594,18596,18598],{"class":4154,"line":11992},[4152,18595,11259],{"class":4181},[4152,18597,5087],{"class":4185},[4152,18599,4819],{"class":4177},[4152,18601,18602,18604],{"class":4154,"line":12027},[4152,18603,11268],{"class":4177},[4152,18605,4782],{"class":4173},[4152,18607,18608],{"class":4154,"line":12033},[4152,18609,11275],{"class":4158},[4152,18611,18612,18614,18616,18618,18621,18623,18626,18628,18630,18632,18634,18636,18638,18640,18642],{"class":4154,"line":12042},[4152,18613,11280],{"class":4173},[4152,18615,3512],{"class":4181},[4152,18617,11063],{"class":4169},[4152,18619,18620],{"class":4202}," 'system'",[4152,18622,4901],{"class":4169},[4152,18624,18625],{"class":4202}," 'Система'",[4152,18627,4907],{"class":4169},[4152,18629,18421],{"class":4181},[4152,18631,11063],{"class":4169},[4152,18633,11287],{"class":4202},[4152,18635,4901],{"class":4169},[4152,18637,11292],{"class":4202},[4152,18639,4907],{"class":4169},[4152,18641,11297],{"class":4202},[4152,18643,4782],{"class":4173},[4152,18645,18646,18648,18650],{"class":4154,"line":12051},[4152,18647,11304],{"class":4158},[4152,18649,4010],{"class":4162},[4152,18651,4658],{"class":4158},[4152,18653,18654,18656,18658],{"class":4154,"line":12058},[4152,18655,11313],{"class":4158},[4152,18657,4493],{"class":4162},[4152,18659,4658],{"class":4158},[4152,18661,18662],{"class":4154,"line":12067},[4152,18663,11322],{"class":4177},[4152,18665,18666,18668],{"class":4154,"line":12072},[4152,18667,11327],{"class":4177},[4152,18669,4782],{"class":4173},[4152,18671,18672,18674,18676],{"class":4154,"line":12079},[4152,18673,4730],{"class":4158},[4152,18675,3967],{"class":4162},[4152,18677,4658],{"class":4158},[4152,18679,18680],{"class":4154,"line":12111},[4152,18681,4566],{"emptyLinePlaceholder":4565},[4152,18683,18684,18686],{"class":4154,"line":12130},[4152,18685,4664],{"class":4158},[4152,18687,6212],{"class":4162},[4152,18689,18690,18692,18694,18696],{"class":4154,"line":12141},[4152,18691,4788],{"class":4165},[4152,18693,4170],{"class":4169},[4152,18695,4174],{"class":4173},[4152,18697,9163],{"class":4177},[4152,18699,18700,18702,18704,18706],{"class":4154,"line":12170},[4152,18701,4811],{"class":4181},[4152,18703,3609],{"class":4177},[4152,18705,5996],{"class":4181},[4152,18707,4819],{"class":4177},[4152,18709,18710,18712,18714,18716,18718,18720,18722,18724,18726,18728,18730],{"class":4154,"line":12177},[4152,18711,11472],{"class":4177},[4152,18713,4199],{"class":4181},[4152,18715,9103],{"class":4181},[4152,18717,3609],{"class":4177},[4152,18719,3660],{"class":4181},[4152,18721,3536],{"class":4177},[4152,18723,11485],{"class":4181},[4152,18725,9103],{"class":4181},[4152,18727,3609],{"class":4177},[4152,18729,9769],{"class":4181},[4152,18731,5074],{"class":4177},[4152,18733,18734,18736],{"class":4154,"line":12182},[4152,18735,4861],{"class":4177},[4152,18737,4782],{"class":4173},[4152,18739,18740],{"class":4154,"line":12217},[4152,18741,4869],{"class":4158},[4152,18743,18744,18746,18748,18750,18752,18754,18756,18758,18760,18762,18764,18766,18768,18770,18772,18774,18776],{"class":4154,"line":12236},[4152,18745,4875],{"class":4158},[4152,18747,4010],{"class":4162},[4152,18749,4166],{"class":4165},[4152,18751,4170],{"class":4169},[4152,18753,4174],{"class":4173},[4152,18755,6047],{"class":4177},[4152,18757,4648],{"class":4181},[4152,18759,3609],{"class":4177},[4152,18761,11721],{"class":4181},[4152,18763,9098],{"class":4177},[4152,18765,5068],{"class":4181},[4152,18767,9103],{"class":4181},[4152,18769,3609],{"class":4177},[4152,18771,9670],{"class":4181},[4152,18773,9110],{"class":4177},[4152,18775,4209],{"class":4173},[4152,18777,4658],{"class":4158},[4152,18779,18780],{"class":4154,"line":12245},[4152,18781,18782],{"class":4169},"          Картка через useTheme()\n",[4152,18784,18785,18787,18789],{"class":4154,"line":12254},[4152,18786,6107],{"class":4158},[4152,18788,4010],{"class":4162},[4152,18790,4658],{"class":4158},[4152,18792,18793,18795,18797,18799,18801,18803,18805,18807,18809,18811,18813,18815,18817,18819,18821,18823,18825,18827,18829],{"class":4154,"line":12259},[4152,18794,4875],{"class":4158},[4152,18796,4010],{"class":4162},[4152,18798,4166],{"class":4165},[4152,18800,4170],{"class":4169},[4152,18802,4174],{"class":4173},[4152,18804,4178],{"class":4177},[4152,18806,5068],{"class":4181},[4152,18808,9103],{"class":4181},[4152,18810,3609],{"class":4177},[4152,18812,9693],{"class":4181},[4152,18814,3536],{"class":4177},[4152,18816,6654],{"class":4181},[4152,18818,5777],{"class":4185},[4152,18820,3536],{"class":4177},[4152,18822,5099],{"class":4181},[4152,18824,5055],{"class":4185},[4152,18826,4206],{"class":4177},[4152,18828,4209],{"class":4173},[4152,18830,4658],{"class":4158},[4152,18832,18833],{"class":4154,"line":12301},[4152,18834,18835],{"class":4169},"          Цей екран не знає hex. Він просить colors у Context, який наповнив\n",[4152,18837,18838],{"class":4154,"line":12307},[4152,18839,18840],{"class":4169},"          ThemeProvider вище по дереву.\n",[4152,18842,18843,18845,18847],{"class":4154,"line":12313},[4152,18844,6107],{"class":4158},[4152,18846,4010],{"class":4162},[4152,18848,4658],{"class":4158},[4152,18850,18851,18853,18855],{"class":4154,"line":12322},[4152,18852,4730],{"class":4158},[4152,18854,3967],{"class":4162},[4152,18856,4658],{"class":4158},[4152,18858,18859,18861,18863],{"class":4154,"line":12331},[4152,18860,4933],{"class":4158},[4152,18862,3967],{"class":4162},[4152,18864,4658],{"class":4158},[4152,18866,18867],{"class":4154,"line":12336},[4152,18868,4943],{"class":4169},[4152,18870,18871],{"class":4154,"line":12341},[4152,18872,4782],{"class":4169},[4152,18874,18875],{"class":4154,"line":12346},[4152,18876,4566],{"emptyLinePlaceholder":4565},[4152,18878,18879],{"class":4154,"line":12363},[4152,18880,18881],{"class":5327},"\u002F\u002F ——— 4. Корінь: ОБОВʼЯЗКОВО обгорнути Provider ———\n",[4152,18883,18884,18886,18888,18890,18892],{"class":4154,"line":12394},[4152,18885,4572],{"class":4510},[4152,18887,4575],{"class":4510},[4152,18889,4578],{"class":4173},[4152,18891,4582],{"class":4581},[4152,18893,4585],{"class":4169},[4152,18895,18896,18898],{"class":4154,"line":12416},[4152,18897,4628],{"class":4510},[4152,18899,4631],{"class":4169},[4152,18901,18902,18904,18906],{"class":4154,"line":12424},[4152,18903,4637],{"class":4158},[4152,18905,3750],{"class":4162},[4152,18907,4658],{"class":4158},[4152,18909,18910,18912,18915],{"class":4154,"line":12434},[4152,18911,4664],{"class":4158},[4152,18913,18914],{"class":4162},"HomeScreen",[4152,18916,4212],{"class":4158},[4152,18918,18919,18921,18923],{"class":4154,"line":12443},[4152,18920,4933],{"class":4158},[4152,18922,3750],{"class":4162},[4152,18924,4658],{"class":4158},[4152,18926,18927],{"class":4154,"line":12452},[4152,18928,4943],{"class":4169},[4152,18930,18931],{"class":4154,"line":12461},[4152,18932,4782],{"class":4169},[4152,18934,18935],{"class":4154,"line":12466},[4152,18936,4566],{"emptyLinePlaceholder":4565},[4152,18938,18939,18941,18943,18945,18947,18949,18951],{"class":4154,"line":12479},[4152,18940,4959],{"class":4173},[4152,18942,4831],{"class":4597},[4152,18944,4964],{"class":4169},[4152,18946,3572],{"class":4181},[4152,18948,3609],{"class":4169},[4152,18950,4264],{"class":4581},[4152,18952,4973],{"class":4169},[4152,18954,18955,18957,18959,18961,18963,18965,18967,18969,18971,18973,18975,18977,18979,18981],{"class":4154,"line":12498},[4152,18956,4979],{"class":4181},[4152,18958,4514],{"class":4169},[4152,18960,4182],{"class":4181},[4152,18962,4186],{"class":4185},[4152,18964,3536],{"class":4169},[4152,18966,4191],{"class":4181},[4152,18968,5055],{"class":4185},[4152,18970,3536],{"class":4169},[4152,18972,5640],{"class":4181},[4152,18974,5022],{"class":4202},[4152,18976,3536],{"class":4169},[4152,18978,5647],{"class":4181},[4152,18980,12411],{"class":4185},[4152,18982,5074],{"class":4169},[4152,18984,18985,18987,18989,18991,18993,18995,18997,18999],{"class":4154,"line":12505},[4152,18986,5047],{"class":4181},[4152,18988,4514],{"class":4169},[4152,18990,5052],{"class":4181},[4152,18992,5682],{"class":4185},[4152,18994,3536],{"class":4169},[4152,18996,5060],{"class":4181},[4152,18998,5689],{"class":4202},[4152,19000,5074],{"class":4169},[4152,19002,19003,19005,19007,19009,19011,19013,19016,19019,19021,19023,19025,19027,19029,19031],{"class":4154,"line":12514},[4152,19004,7212],{"class":4181},[4152,19006,4514],{"class":4169},[4152,19008,12401],{"class":4181},[4152,19010,12404],{"class":4202},[4152,19012,3536],{"class":4169},[4152,19014,19015],{"class":4181},"flexWrap:",[4152,19017,19018],{"class":4202}," 'wrap'",[4152,19020,3536],{"class":4169},[4152,19022,5647],{"class":4181},[4152,19024,12411],{"class":4185},[4152,19026,3536],{"class":4169},[4152,19028,5774],{"class":4181},[4152,19030,12411],{"class":4185},[4152,19032,5074],{"class":4169},[4152,19034,19035,19037],{"class":4154,"line":12523},[4152,19036,12419],{"class":4181},[4152,19038,4982],{"class":4169},[4152,19040,19041,19043,19045],{"class":4154,"line":12532},[4152,19042,12427],{"class":4181},[4152,19044,5033],{"class":4185},[4152,19046,4819],{"class":4169},[4152,19048,19049,19051,19053],{"class":4154,"line":12541},[4152,19050,5128],{"class":4181},[4152,19052,6439],{"class":4185},[4152,19054,4819],{"class":4169},[4152,19056,19057,19059,19061],{"class":4154,"line":12550},[4152,19058,5139],{"class":4181},[4152,19060,6439],{"class":4185},[4152,19062,4819],{"class":4169},[4152,19064,19065,19067,19069],{"class":4154,"line":12555},[4152,19066,5719],{"class":4181},[4152,19068,4186],{"class":4185},[4152,19070,4819],{"class":4169},[4152,19072,19073],{"class":4154,"line":12581},[4152,19074,5041],{"class":4169},[4152,19076,19077,19079,19081,19084,19086,19088,19091,19093,19095,19097,19099,19101,19103,19105],{"class":4154,"line":12589},[4152,19078,6471],{"class":4181},[4152,19080,4514],{"class":4169},[4152,19082,19083],{"class":4181},"borderRadius:",[4152,19085,4194],{"class":4185},[4152,19087,3536],{"class":4169},[4152,19089,19090],{"class":4181},"borderWidth:",[4152,19092,4186],{"class":4185},[4152,19094,3536],{"class":4169},[4152,19096,4191],{"class":4181},[4152,19098,4194],{"class":4185},[4152,19100,3536],{"class":4169},[4152,19102,6654],{"class":4181},[4152,19104,12411],{"class":4185},[4152,19106,5074],{"class":4169},[4152,19108,19109,19111,19113,19115,19117,19119,19121,19123],{"class":4154,"line":12599},[4152,19110,12558],{"class":4181},[4152,19112,4514],{"class":4169},[4152,19114,5052],{"class":4181},[4152,19116,12292],{"class":4185},[4152,19118,3536],{"class":4169},[4152,19120,5060],{"class":4181},[4152,19122,5063],{"class":4202},[4152,19124,5074],{"class":4169},[4152,19126,19127],{"class":4154,"line":12608},[4152,19128,5222],{"class":4169},[3512,19130,19131],{},"Розбір демо:",[3561,19133,19134,19142,19154,19161,19174],{},[3564,19135,19136,19141],{},[3525,19137,19138],{},[3533,19139,19140],{},"ThemeContext = createContext(null)"," — порожній канал.",[3564,19143,19144,19148,19149,3751,19151,3609],{},[3525,19145,19146],{},[3533,19147,3750],{}," — ваш компонент: state + ",[3533,19150,3543],{},[3533,19152,19153],{},"Provider value={…}",[3564,19155,19156,19160],{},[3525,19157,19158],{},[3533,19159,3754],{}," — читає канал; без Provider кине помилку.",[3564,19162,19163,19167,19168,19170,19171,3609],{},[3525,19164,19165],{},[3533,19166,18914],{}," — ніколи не імпортує ",[3533,19169,13677],{}," напряму; лише ",[3533,19172,19173],{},"useTheme().colors",[3564,19175,19176,13349,19181,19184,19185,3609],{},[3525,19177,19178],{},[3533,19179,19180],{},"export default function App",[3525,19182,19183],{},"єдине"," місце, де з’являється обгортка ",[3533,19186,19187],{},"\u003CThemeProvider>\u003CHomeScreen \u002F>\u003C\u002FThemeProvider>",[3512,19189,19190,19191,19194],{},"Якщо прибрати обгортку й лишити лише ",[3533,19192,19193],{},"\u003CHomeScreen \u002F>"," — червоний екран: «useTheme() лише всередині ThemeProvider».",[3589,19196,19198],{"id":19197},"звязок-з-файлами-nomad","Зв’язок з файлами Nomad",[3512,19200,19201,19202,12784],{},"У проєкті те саме розкладають по файлах (читабельність), але ",[3525,19203,19204],{},"суть ідентична",[3844,19206,19207,19217],{},[3847,19208,19209],{},[3850,19210,19211,19214],{},[3853,19212,19213],{},"Файл",[3853,19215,19216],{},"Відповідальність",[3863,19218,19219,19234,19251,19264,19277],{},[3850,19220,19221,19226],{},[3868,19222,19223],{},[3533,19224,19225],{},"src\u002Fshared\u002Ftheme\u002Fcolors.ts",[3868,19227,19228,3536,19230,3536,19232],{},[3533,19229,13677],{},[3533,19231,13672],{},[3533,19233,13698],{},[3850,19235,19236,19241],{},[3868,19237,19238],{},[3533,19239,19240],{},"src\u002Fshared\u002Ftheme\u002Ftokens.ts",[3868,19242,19243,3536,19246,3536,19248,19250],{},[3533,19244,19245],{},"space",[3533,19247,17040],{},[3533,19249,4409],{}," (форма, не light\u002Fdark)",[3850,19252,19253,19257],{},[3868,19254,19255],{},[3533,19256,15487],{},[3868,19258,19259,19260,3751,19262],{},"Context + ",[3533,19261,3750],{},[3533,19263,3754],{},[3850,19265,19266,19271],{},[3868,19267,19268],{},[3533,19269,19270],{},"src\u002Fshared\u002Ftheme\u002Findex.ts",[3868,19272,19273,19274],{},"реекспорт, щоб імпортувати ",[3533,19275,19276],{},"@\u002Fshared\u002Ftheme",[3850,19278,19279,19283],{},[3868,19280,19281],{},[3533,19282,16622],{},[3868,19284,19285,3980,19288,19290],{},[3525,19286,19287],{},"вмикає",[3533,19289,16945],{}," навколо навігації",[3760,19292,19293,19296,19297,19300,19301,3676,19303,15710,19305,19308,19309,3689,19312,19314],{},[3525,19294,19295],{},"Підсумок одним реченням."," React дає Context; ",[3525,19298,19299],{},"ви"," створюєте ",[3533,19302,3750],{},[3533,19304,3754],{},[3525,19306,19307],{},"корінь застосунку"," один раз обгортає дерево; ",[3525,19310,19311],{},"кожен екран\u002Fкнопка",[3533,19313,19173],{}," замість hex і замість prop drillingу.",[3589,19316,19318],{"id":19317},"statusbar-окремий-шар-системного-хрома","StatusBar — окремий шар «системного хрома»",[3512,19320,19321,19324,19325,19327,19328,19330,19331,19334],{},[3525,19322,19323],{},"Status bar"," (рядок стану) — зона зверху з годинником, батареєю, сигналом. Її малює ",[3525,19326,12760],{},", не ваш ",[3533,19329,3967],{},". Колір ",[3525,19332,19333],{},"іконок"," на ній треба узгодити з фоном:",[3973,19336,19337,19344],{},[3564,19338,19339,19340,19343],{},"темний фон екрана → ",[3525,19341,19342],{},"світлі"," іконки;",[3564,19345,19346,19347,19350],{},"світлий фон → ",[3525,19348,19349],{},"темні"," іконки.",[3512,19352,19353,19354,19359,19360,19362],{},"З пакетом ",[3525,19355,19356],{},[3533,19357,19358],{},"expo-status-bar"," (уже в Expo-проєктах), у компоненті ",[3525,19361,4318],{}," Provider:",[4143,19364,19366],{"className":4145,"code":19365,"language":4147,"meta":4148,"style":4148},"import { StatusBar } from 'expo-status-bar';\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\n\nconst { scheme } = useTheme();\n\u003CStatusBar style={scheme === 'dark' ? 'light' : 'dark'} \u002F>\n",[3533,19367,19368,19385,19402,19406,19420],{"__ignoreMap":4148},[4152,19369,19370,19372,19374,19376,19378,19380,19383],{"class":4154,"line":4155},[4152,19371,4511],{"class":4510},[4152,19373,4514],{"class":4169},[4152,19375,3956],{"class":4181},[4152,19377,4520],{"class":4169},[4152,19379,4523],{"class":4510},[4152,19381,19382],{"class":4202}," 'expo-status-bar'",[4152,19384,4529],{"class":4169},[4152,19386,19387,19389,19391,19393,19395,19397,19400],{"class":4154,"line":4532},[4152,19388,4511],{"class":4510},[4152,19390,4514],{"class":4169},[4152,19392,3754],{"class":4181},[4152,19394,4520],{"class":4169},[4152,19396,4523],{"class":4510},[4152,19398,19399],{"class":4202}," '@\u002Fshared\u002Ftheme'",[4152,19401,4529],{"class":4169},[4152,19403,19404],{"class":4154,"line":4562},[4152,19405,4566],{"emptyLinePlaceholder":4565},[4152,19407,19408,19410,19412,19414,19416,19418],{"class":4154,"line":4569},[4152,19409,4959],{"class":4173},[4152,19411,4514],{"class":4169},[4152,19413,12929],{"class":4597},[4152,19415,16593],{"class":4169},[4152,19417,3754],{"class":4581},[4152,19419,12917],{"class":4169},[4152,19421,19422,19424,19426,19428,19430,19432,19434,19436,19438,19440,19442,19444,19446,19448],{"class":4154,"line":4588},[4152,19423,4159],{"class":4158},[4152,19425,3956],{"class":4162},[4152,19427,4166],{"class":4165},[4152,19429,4170],{"class":4169},[4152,19431,4174],{"class":4173},[4152,19433,12929],{"class":4181},[4152,19435,11063],{"class":4169},[4152,19437,14404],{"class":4202},[4152,19439,4901],{"class":4169},[4152,19441,11287],{"class":4202},[4152,19443,4907],{"class":4169},[4152,19445,14404],{"class":4202},[4152,19447,4209],{"class":4173},[4152,19449,4212],{"class":4158},[3512,19451,19452],{},"Плутанина в назвах:",[3973,19454,19455,19468],{},[3564,19456,19457,19460,19461,19463,19464,19467],{},[3533,19458,19459],{},"style=\"light\""," означає ",[3525,19462,19342],{}," іконки (для ",[3525,19465,19466],{},"темного"," фону);",[3564,19469,19470,13349,19473,19463,19475,19478],{},[3533,19471,19472],{},"style=\"dark\"",[3525,19474,19349],{},[3525,19476,19477],{},"світлого"," фону).",[3512,19480,19481,19482,19484,19485,13648,19488,19491,19492,3609],{},"У core API ",[3533,19483,3956],{}," з ",[3533,19486,19487],{},"react-native",[3533,19489,19490],{},"barStyle=\"light-content\" | \"dark-content\""," — той самий сенс, інші слова. У міні-проєкті blank можна core; у Nomad зручніше ",[3533,19493,19358],{},[19495,19496,19497,19500],"caution",{},[3525,19498,19499],{},"Що ламається."," Забули StatusBar при dark: чорний фон + чорні іконки → користувач не бачить час і батарею. Це виглядає як «зламаний» застосунок, хоча «основний» UI ок.",[3790,19502],{},[3507,19504,19506],{"id":19505},"антипатерни-і-що-замість","Антипатерни (і що замість)",[3512,19508,19509,19510,19513],{},"Ці помилки з’являються не тому, що хтось «не знає API», а тому, що тема ",[3525,19511,19512],{},"роз’їжджається"," (дублюється) по проєкту без єдиного правила.",[19515,19516,19517,19545,19567,19588,19605,19620,19631],"accordion",{},[19518,19519,19522,19525,19526,19528,19531,19532,19534,19537,19538,4000,19540,19542,19543,3609],"accordion-item",{"icon":19520,"label":19521},"i-lucide-bug","Hex у кожному компоненті",[3525,19523,19524],{},"Симптом:"," темна тема = PR на 40 файлів.",[3655,19527],{},[3525,19529,19530],{},"Чому болить:"," колір продублювали, половину забули.",[3655,19533],{},[3525,19535,19536],{},"Замість:"," hex лише в ",[3533,19539,13677],{},[3533,19541,13672],{},". У JSX — ",[3533,19544,13710],{},[19518,19546,19548,19550,19551,19553,19555,19556,19558,19560,19561,19563,19564,3609],{"icon":19520,"label":19547},"StyleSheet.create усередині render",[3525,19549,19524],{}," «я створюю create від isDark на кожен render».",[3655,19552],{},[3525,19554,19530],{}," зайва робота, складно дебажити, все одно дублюєте палітри.",[3655,19557],{},[3525,19559,19536],{}," геометрія в ",[3533,19562,4264],{}," на рівні модуля; кольори — ",[3533,19565,19566],{},"[styles.x, { color: colors.text }]",[19518,19568,19570,3980,19572,19575,19576,19578,19580,19581,19584,19585,19587],{"icon":19520,"label":19569},"colors зашиті в create на рівні файлу",[3525,19571,19524],{},[3533,19573,19574],{},"StyleSheet.create({ box: { backgroundColor: tokens.colors.background } })"," раз при імпорті — dark не підхоплюється.",[3655,19577],{},[3525,19579,19536],{}," не класти ",[3525,19582,19583],{},"темозалежні"," кольори в модульний ",[3533,19586,4264],{},"; динаміка — у масиві в JSX.",[19518,19589,19591,19593,19594,19596,3980,19598,4000,19600,19602,19603,3609],{"icon":19520,"label":19590},"Забути StatusBar",[3525,19592,19524],{}," темний UI, «немає» годинника.",[3655,19595],{},[3525,19597,19536],{},[3533,19599,3956],{},[3533,19601,19358],{}," від ",[3533,19604,12929],{},[19518,19606,19608,19610,19611,19613,3980,19615,3751,19617,19619],{"icon":19520,"label":19607},"Лише isDark && styles.dark у 30 місцях",[3525,19609,19524],{}," кожен екран винаходить свій dark.",[3655,19612],{},[3525,19614,19536],{},[3533,19616,13698],{},[3533,19618,16938],{}," один раз.",[19518,19621,19623,19625,19626,19628,19630],{"icon":19520,"label":19622},"Інверсія «всіх» кольорів фільтром",[3525,19624,19524],{}," фото поїздки виглядає як негатив; логотип бренду «перекинувся».",[3655,19627],{},[3525,19629,19536],{}," семантичні ролі; контентні зображення не чіпати.",[19518,19632,19634,19636,19637,19639,3980,19641,19643],{"icon":19520,"label":19633},"useTheme поза Provider",[3525,19635,19524],{}," червоний екран \u002F throw при старті.",[3655,19638],{},[3525,19640,19536],{},[3533,19642,3750],{}," у корені; хук лише в нащадках.",[3790,19645],{},[3507,19647,19649],{"id":19648},"міні-проєкт-theme-lab","Міні-проєкт: Theme Lab",[3512,19651,19652,19653,19655],{},"Окремий blank-проєкт (не Nomad). Мета — ",[3525,19654,15212],{}," екран з карткою профілю й перемикачем appearance.",[3589,19657,19659],{"id":19658},"постановка","Постановка",[3561,19661,19662,19665,19673,19680,19686],{},[3564,19663,19664],{},"Expo blank TypeScript.",[3564,19666,19667,19668,4000,19670,19672],{},"Дві палітри ",[3533,19669,3631],{},[3533,19671,3638],{}," з однаковими ключами.",[3564,19674,19675,19676,19679],{},"Стан ",[3533,19677,19678],{},"mode: 'light' | 'dark'"," (для міні-проєкту без «system» достатньо; system додасте в Nomad).",[3564,19681,19682,19683,19685],{},"Картка й фон беруть кольори ",[3525,19684,10515],{}," з палітри.",[3564,19687,19688],{},"Підпис показує поточний режим.",[3589,19690,19692],{"id":19691},"крок-1-проєкт","Крок 1. Проєкт",[4143,19694,19698],{"className":19695,"code":19696,"language":19697,"meta":4148,"style":4148},"language-bash shiki shiki-themes light-plus dark-plus dark-plus","npx create-expo-app@latest theme-lab -t blank-typescript@sdk-54\ncd theme-lab\nnpx expo start\n","bash",[3533,19699,19700,19717,19725],{"__ignoreMap":4148},[4152,19701,19702,19705,19708,19711,19714],{"class":4154,"line":4155},[4152,19703,19704],{"class":4581},"npx",[4152,19706,19707],{"class":4202}," create-expo-app@latest",[4152,19709,19710],{"class":4202}," theme-lab",[4152,19712,19713],{"class":4173}," -t",[4152,19715,19716],{"class":4202}," blank-typescript@sdk-54\n",[4152,19718,19719,19722],{"class":4154,"line":4532},[4152,19720,19721],{"class":4581},"cd",[4152,19723,19724],{"class":4202}," theme-lab\n",[4152,19726,19727,19729,19732],{"class":4154,"line":4562},[4152,19728,19704],{"class":4581},[4152,19730,19731],{"class":4202}," expo",[4152,19733,19734],{"class":4202}," start\n",[3589,19736,19738,19739],{"id":19737},"крок-2-замінити-apptsx","Крок 2. Замінити ",[3533,19740,19741],{},"App.tsx",[3512,19743,19744],{},"Повний лістинг згорнуто — розгорніть, щоб скопіювати.",[19746,19747,19749],"collapsible",{"title":19748},"Повний код App.tsx — розгорнути за потреби",[4143,19750,19752],{"className":4145,"code":19751,"language":4147,"meta":4148,"style":4148},"import { useState } from 'react';\nimport {\n  View,\n  Text,\n  Pressable,\n  StyleSheet,\n  SafeAreaView,\n  StatusBar,\n} from 'react-native';\n\nconst light = {\n  background: '#F8FAFC',\n  surface: '#FFFFFF',\n  text: '#0F172A',\n  textSecondary: '#64748B',\n  primary: '#2563EB',\n  border: '#E2E8F0',\n  onPrimary: '#FFFFFF',\n};\n\nconst dark = {\n  background: '#000000',\n  surface: '#1C1C1E',\n  text: '#F5F5F7',\n  textSecondary: '#A1A1AA',\n  primary: '#3B82F6',\n  border: '#3A3A3C',\n  onPrimary: '#FFFFFF',\n};\n\ntype Mode = 'light' | 'dark';\n\nexport default function App() {\n  const [mode, setMode] = useState\u003CMode>('light');\n  const c = mode === 'dark' ? dark : light;\n\n  return (\n    \u003CSafeAreaView style={[styles.safe, { backgroundColor: c.background }]}>\n      \u003CStatusBar barStyle={mode === 'dark' ? 'light-content' : 'dark-content'} \u002F>\n\n      \u003CView style={styles.header}>\n        \u003CText style={[styles.title, { color: c.text }]}>Theme Lab\u003C\u002FText>\n        \u003CText style={{ color: c.textSecondary, marginTop: 4 }}>\n          Зараз: {mode === 'dark' ? 'темна' : 'світла'} тема\n        \u003C\u002FText>\n      \u003C\u002FView>\n\n      \u003CView style={styles.row}>\n        {(['light', 'dark'] as Mode[]).map((m) => {\n          const active = mode === m;\n          return (\n            \u003CPressable\n              key={m}\n              onPress={() => setMode(m)}\n              style={[\n                styles.chip,\n                {\n                  backgroundColor: active ? c.primary : c.surface,\n                  borderColor: c.border,\n                },\n              ]}\n            >\n              \u003CText\n                style={{\n                  color: active ? c.onPrimary : c.text,\n                  fontWeight: '700',\n                }}\n              >\n                {m === 'light' ? 'Світла' : 'Темна'}\n              \u003C\u002FText>\n            \u003C\u002FPressable>\n          );\n        })}\n      \u003C\u002FView>\n\n      \u003CView\n        style={[\n          styles.card,\n          { backgroundColor: c.surface, borderColor: c.border },\n        ]}\n      >\n        \u003CView style={[styles.avatar, { backgroundColor: c.primary }]}>\n          \u003CText style={{ color: c.onPrimary, fontWeight: '800', fontSize: 22 }}>Н\u003C\u002FText>\n        \u003C\u002FView>\n        \u003CText style={[styles.name, { color: c.text }]}>Мандрівник Nomad\u003C\u002FText>\n        \u003CText style={{ color: c.textSecondary, marginTop: 6, lineHeight: 20 }}>\n          Кольори картки — семантичні токени. Перемкніть тему: та сама розмітка,\n          інша палітра.\n        \u003C\u002FText>\n      \u003C\u002FView>\n    \u003C\u002FSafeAreaView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  safe: { flex: 1 },\n  header: { paddingHorizontal: 20, paddingTop: 12 },\n  title: { fontSize: 28, fontWeight: '800' },\n  row: {\n    flexDirection: 'row',\n    gap: 10,\n    paddingHorizontal: 20,\n    marginTop: 20,\n  },\n  chip: {\n    paddingHorizontal: 16,\n    paddingVertical: 12,\n    borderRadius: 12,\n    borderWidth: 1,\n  },\n  card: {\n    margin: 20,\n    marginTop: 24,\n    padding: 20,\n    borderRadius: 16,\n    borderWidth: 1,\n  },\n  avatar: {\n    width: 56,\n    height: 56,\n    borderRadius: 28,\n    alignItems: 'center',\n    justifyContent: 'center',\n    marginBottom: 12,\n  },\n  name: { fontSize: 20, fontWeight: '700' },\n});\n",[3533,19753,19754,19770,19776,19782,19788,19794,19800,19807,19814,19824,19828,19836,19844,19852,19860,19868,19876,19884,19892,19896,19900,19908,19916,19924,19932,19940,19948,19956,19964,19968,19972,19989,19993,20005,20032,20056,20060,20066,20104,20137,20141,20164,20209,20243,20271,20279,20287,20291,20313,20345,20361,20367,20373,20385,20407,20417,20427,20431,20455,20467,20471,20477,20481,20487,20497,20521,20529,20535,20539,20559,20567,20575,20579,20585,20593,20597,20603,20613,20623,20647,20653,20657,20694,20743,20751,20796,20836,20841,20846,20854,20862,20870,20874,20878,20882,20898,20911,20931,20950,20956,20965,20973,20981,20989,20993,20999,21007,21015,21023,21031,21035,21041,21050,21058,21066,21074,21082,21086,21093,21103,21111,21119,21127,21135,21144,21148,21166],{"__ignoreMap":4148},[4152,19755,19756,19758,19760,19762,19764,19766,19768],{"class":4154,"line":4155},[4152,19757,4511],{"class":4510},[4152,19759,4514],{"class":4169},[4152,19761,4517],{"class":4181},[4152,19763,4520],{"class":4169},[4152,19765,4523],{"class":4510},[4152,19767,4526],{"class":4202},[4152,19769,4529],{"class":4169},[4152,19771,19772,19774],{"class":4154,"line":4532},[4152,19773,4511],{"class":4510},[4152,19775,4982],{"class":4169},[4152,19777,19778,19780],{"class":4154,"line":4562},[4152,19779,17307],{"class":4181},[4152,19781,4819],{"class":4169},[4152,19783,19784,19786],{"class":4154,"line":4569},[4152,19785,17314],{"class":4181},[4152,19787,4819],{"class":4169},[4152,19789,19790,19792],{"class":4154,"line":4588},[4152,19791,17321],{"class":4181},[4152,19793,4819],{"class":4169},[4152,19795,19796,19798],{"class":4154,"line":4620},[4152,19797,17328],{"class":4181},[4152,19799,4819],{"class":4169},[4152,19801,19802,19805],{"class":4154,"line":4625},[4152,19803,19804],{"class":4181},"  SafeAreaView",[4152,19806,4819],{"class":4169},[4152,19808,19809,19812],{"class":4154,"line":4634},[4152,19810,19811],{"class":4181},"  StatusBar",[4152,19813,4819],{"class":4169},[4152,19815,19816,19818,19820,19822],{"class":4154,"line":4661},[4152,19817,13523],{"class":4169},[4152,19819,4523],{"class":4510},[4152,19821,4557],{"class":4202},[4152,19823,4529],{"class":4169},[4152,19825,19826],{"class":4154,"line":4697},[4152,19827,4566],{"emptyLinePlaceholder":4565},[4152,19829,19830,19832,19834],{"class":4154,"line":4721},[4152,19831,4959],{"class":4173},[4152,19833,10588],{"class":4597},[4152,19835,10591],{"class":4169},[4152,19837,19838,19840,19842],{"class":4154,"line":4727},[4152,19839,10596],{"class":4181},[4152,19841,4203],{"class":4202},[4152,19843,4819],{"class":4169},[4152,19845,19846,19848,19850],{"class":4154,"line":4737},[4152,19847,10605],{"class":4181},[4152,19849,10608],{"class":4202},[4152,19851,4819],{"class":4169},[4152,19853,19854,19856,19858],{"class":4154,"line":4745},[4152,19855,10615],{"class":4181},[4152,19857,10618],{"class":4202},[4152,19859,4819],{"class":4169},[4152,19861,19862,19864,19866],{"class":4154,"line":4785},[4152,19863,10625],{"class":4181},[4152,19865,10628],{"class":4202},[4152,19867,4819],{"class":4169},[4152,19869,19870,19872,19874],{"class":4154,"line":4808},[4152,19871,10635],{"class":4181},[4152,19873,5171],{"class":4202},[4152,19875,4819],{"class":4169},[4152,19877,19878,19880,19882],{"class":4154,"line":4822},[4152,19879,10654],{"class":4181},[4152,19881,5731],{"class":4202},[4152,19883,4819],{"class":4169},[4152,19885,19886,19888,19890],{"class":4154,"line":4841},[4152,19887,10673],{"class":4181},[4152,19889,10608],{"class":4202},[4152,19891,4819],{"class":4169},[4152,19893,19894],{"class":4154,"line":4858},[4152,19895,10682],{"class":4169},[4152,19897,19898],{"class":4154,"line":4866},[4152,19899,4566],{"emptyLinePlaceholder":4565},[4152,19901,19902,19904,19906],{"class":4154,"line":4872},[4152,19903,4959],{"class":4173},[4152,19905,10693],{"class":4597},[4152,19907,10591],{"class":4169},[4152,19909,19910,19912,19914],{"class":4154,"line":4921},[4152,19911,10596],{"class":4181},[4152,19913,10702],{"class":4202},[4152,19915,4819],{"class":4169},[4152,19917,19918,19920,19922],{"class":4154,"line":4930},[4152,19919,10605],{"class":4181},[4152,19921,10711],{"class":4202},[4152,19923,4819],{"class":4169},[4152,19925,19926,19928,19930],{"class":4154,"line":4940},[4152,19927,10615],{"class":4181},[4152,19929,10720],{"class":4202},[4152,19931,4819],{"class":4169},[4152,19933,19934,19936,19938],{"class":4154,"line":4946},[4152,19935,10625],{"class":4181},[4152,19937,10729],{"class":4202},[4152,19939,4819],{"class":4169},[4152,19941,19942,19944,19946],{"class":4154,"line":4951},[4152,19943,10635],{"class":4181},[4152,19945,10738],{"class":4202},[4152,19947,4819],{"class":4169},[4152,19949,19950,19952,19954],{"class":4154,"line":4956},[4152,19951,10654],{"class":4181},[4152,19953,10755],{"class":4202},[4152,19955,4819],{"class":4169},[4152,19957,19958,19960,19962],{"class":4154,"line":4976},[4152,19959,10673],{"class":4181},[4152,19961,10608],{"class":4202},[4152,19963,4819],{"class":4169},[4152,19965,19966],{"class":4154,"line":4985},[4152,19967,10682],{"class":4169},[4152,19969,19970],{"class":4154,"line":4995},[4152,19971,4566],{"emptyLinePlaceholder":4565},[4152,19973,19974,19976,19979,19981,19983,19985,19987],{"class":4154,"line":5005},[4152,19975,15584],{"class":4173},[4152,19977,19978],{"class":4162}," Mode",[4152,19980,4964],{"class":4169},[4152,19982,10817],{"class":4202},[4152,19984,10820],{"class":4169},[4152,19986,10823],{"class":4202},[4152,19988,4529],{"class":4169},[4152,19990,19991],{"class":4154,"line":5016},[4152,19992,4566],{"emptyLinePlaceholder":4565},[4152,19994,19995,19997,19999,20001,20003],{"class":4154,"line":5027},[4152,19996,4572],{"class":4510},[4152,19998,4575],{"class":4510},[4152,20000,4578],{"class":4173},[4152,20002,4582],{"class":4581},[4152,20004,4585],{"class":4169},[4152,20006,20007,20009,20011,20013,20015,20017,20019,20021,20023,20026,20028,20030],{"class":4154,"line":5038},[4152,20008,4591],{"class":4173},[4152,20010,4594],{"class":4169},[4152,20012,10803],{"class":4597},[4152,20014,3536],{"class":4169},[4152,20016,10808],{"class":4597},[4152,20018,4606],{"class":4169},[4152,20020,4517],{"class":4581},[4152,20022,4159],{"class":4169},[4152,20024,20025],{"class":4162},"Mode",[4152,20027,10826],{"class":4169},[4152,20029,10817],{"class":4202},[4152,20031,4617],{"class":4169},[4152,20033,20034,20036,20038,20040,20042,20044,20046,20048,20050,20052,20054],{"class":4154,"line":5044},[4152,20035,4591],{"class":4173},[4152,20037,10861],{"class":4597},[4152,20039,4964],{"class":4169},[4152,20041,10803],{"class":4181},[4152,20043,10868],{"class":4169},[4152,20045,10823],{"class":4202},[4152,20047,10873],{"class":4169},[4152,20049,3638],{"class":4181},[4152,20051,10878],{"class":4169},[4152,20053,3631],{"class":4181},[4152,20055,4529],{"class":4169},[4152,20057,20058],{"class":4154,"line":5077},[4152,20059,4566],{"emptyLinePlaceholder":4565},[4152,20061,20062,20064],{"class":4154,"line":5107},[4152,20063,4628],{"class":4510},[4152,20065,4631],{"class":4169},[4152,20067,20068,20070,20073,20075,20077,20079,20081,20083,20085,20088,20090,20092,20094,20096,20098,20100,20102],{"class":4154,"line":5115},[4152,20069,4637],{"class":4158},[4152,20071,20072],{"class":4162},"SafeAreaView",[4152,20074,4166],{"class":4165},[4152,20076,4170],{"class":4169},[4152,20078,4174],{"class":4173},[4152,20080,6047],{"class":4177},[4152,20082,4648],{"class":4181},[4152,20084,3609],{"class":4177},[4152,20086,20087],{"class":4181},"safe",[4152,20089,9098],{"class":4177},[4152,20091,4199],{"class":4181},[4152,20093,10861],{"class":4181},[4152,20095,3609],{"class":4177},[4152,20097,9618],{"class":4181},[4152,20099,9110],{"class":4177},[4152,20101,4209],{"class":4173},[4152,20103,4658],{"class":4158},[4152,20105,20106,20108,20110,20113,20115,20117,20119,20121,20123,20125,20128,20130,20133,20135],{"class":4154,"line":5125},[4152,20107,4664],{"class":4158},[4152,20109,3956],{"class":4162},[4152,20111,20112],{"class":4165}," barStyle",[4152,20114,4170],{"class":4169},[4152,20116,4174],{"class":4173},[4152,20118,10803],{"class":4181},[4152,20120,11063],{"class":4169},[4152,20122,14404],{"class":4202},[4152,20124,4901],{"class":4169},[4152,20126,20127],{"class":4202}," 'light-content'",[4152,20129,4907],{"class":4169},[4152,20131,20132],{"class":4202}," 'dark-content'",[4152,20134,4209],{"class":4173},[4152,20136,4212],{"class":4158},[4152,20138,20139],{"class":4154,"line":5136},[4152,20140,4566],{"emptyLinePlaceholder":4565},[4152,20142,20143,20145,20147,20149,20151,20153,20155,20157,20160,20162],{"class":4154,"line":5146},[4152,20144,4664],{"class":4158},[4152,20146,3967],{"class":4162},[4152,20148,4166],{"class":4165},[4152,20150,4170],{"class":4169},[4152,20152,4174],{"class":4173},[4152,20154,4648],{"class":4181},[4152,20156,3609],{"class":4177},[4152,20158,20159],{"class":4181},"header",[4152,20161,4209],{"class":4173},[4152,20163,4658],{"class":4158},[4152,20165,20166,20168,20170,20172,20174,20176,20178,20180,20182,20184,20186,20188,20190,20192,20194,20196,20198,20200,20203,20205,20207],{"class":4154,"line":5156},[4152,20167,4875],{"class":4158},[4152,20169,4010],{"class":4162},[4152,20171,4166],{"class":4165},[4152,20173,4170],{"class":4169},[4152,20175,4174],{"class":4173},[4152,20177,6047],{"class":4177},[4152,20179,4648],{"class":4181},[4152,20181,3609],{"class":4177},[4152,20183,4679],{"class":4181},[4152,20185,9098],{"class":4177},[4152,20187,5068],{"class":4181},[4152,20189,10861],{"class":4181},[4152,20191,3609],{"class":4177},[4152,20193,9670],{"class":4181},[4152,20195,9110],{"class":4177},[4152,20197,4209],{"class":4173},[4152,20199,4684],{"class":4158},[4152,20201,20202],{"class":4169},"Theme Lab",[4152,20204,4690],{"class":4158},[4152,20206,4010],{"class":4162},[4152,20208,4658],{"class":4158},[4152,20210,20211,20213,20215,20217,20219,20221,20223,20225,20227,20229,20231,20233,20235,20237,20239,20241],{"class":4154,"line":5161},[4152,20212,4875],{"class":4158},[4152,20214,4010],{"class":4162},[4152,20216,4166],{"class":4165},[4152,20218,4170],{"class":4169},[4152,20220,4174],{"class":4173},[4152,20222,4178],{"class":4177},[4152,20224,5068],{"class":4181},[4152,20226,10861],{"class":4181},[4152,20228,3609],{"class":4177},[4152,20230,9693],{"class":4181},[4152,20232,3536],{"class":4177},[4152,20234,6654],{"class":4181},[4152,20236,6657],{"class":4185},[4152,20238,4206],{"class":4177},[4152,20240,4209],{"class":4173},[4152,20242,4658],{"class":4158},[4152,20244,20245,20248,20250,20252,20254,20256,20258,20261,20263,20266,20268],{"class":4154,"line":5176},[4152,20246,20247],{"class":4169},"          Зараз: ",[4152,20249,4174],{"class":4173},[4152,20251,10803],{"class":4181},[4152,20253,11063],{"class":4169},[4152,20255,14404],{"class":4202},[4152,20257,4901],{"class":4169},[4152,20259,20260],{"class":4202}," 'темна'",[4152,20262,4907],{"class":4169},[4152,20264,20265],{"class":4202}," 'світла'",[4152,20267,4209],{"class":4173},[4152,20269,20270],{"class":4169}," тема\n",[4152,20272,20273,20275,20277],{"class":4154,"line":5192},[4152,20274,6107],{"class":4158},[4152,20276,4010],{"class":4162},[4152,20278,4658],{"class":4158},[4152,20280,20281,20283,20285],{"class":4154,"line":5219},[4152,20282,4730],{"class":4158},[4152,20284,3967],{"class":4162},[4152,20286,4658],{"class":4158},[4152,20288,20289],{"class":4154,"line":6529},[4152,20290,4566],{"emptyLinePlaceholder":4565},[4152,20292,20293,20295,20297,20299,20301,20303,20305,20307,20309,20311],{"class":4154,"line":6534},[4152,20294,4664],{"class":4158},[4152,20296,3967],{"class":4162},[4152,20298,4166],{"class":4165},[4152,20300,4170],{"class":4169},[4152,20302,4174],{"class":4173},[4152,20304,4648],{"class":4181},[4152,20306,3609],{"class":4177},[4152,20308,6837],{"class":4181},[4152,20310,4209],{"class":4173},[4152,20312,4658],{"class":4158},[4152,20314,20315,20317,20319,20321,20323,20325,20327,20329,20331,20333,20335,20337,20339,20341,20343],{"class":4154,"line":6562},[4152,20316,7708],{"class":4173},[4152,20318,11015],{"class":4177},[4152,20320,10817],{"class":4202},[4152,20322,3536],{"class":4177},[4152,20324,10823],{"class":4202},[4152,20326,11024],{"class":4177},[4152,20328,11027],{"class":4510},[4152,20330,19978],{"class":4162},[4152,20332,18394],{"class":4177},[4152,20334,11035],{"class":4581},[4152,20336,4764],{"class":4177},[4152,20338,11040],{"class":4181},[4152,20340,4770],{"class":4177},[4152,20342,4758],{"class":4173},[4152,20344,4982],{"class":4177},[4152,20346,20347,20349,20351,20353,20355,20357,20359],{"class":4154,"line":6570},[4152,20348,11051],{"class":4173},[4152,20350,11054],{"class":4597},[4152,20352,11057],{"class":4169},[4152,20354,11060],{"class":4181},[4152,20356,11063],{"class":4169},[4152,20358,11066],{"class":4181},[4152,20360,4529],{"class":4177},[4152,20362,20363,20365],{"class":4154,"line":6580},[4152,20364,11073],{"class":4510},[4152,20366,4631],{"class":4177},[4152,20368,20369,20371],{"class":4154,"line":6589},[4152,20370,8072],{"class":4158},[4152,20372,4742],{"class":4162},[4152,20374,20375,20377,20379,20381,20383],{"class":4154,"line":6598},[4152,20376,11086],{"class":4165},[4152,20378,4170],{"class":4169},[4152,20380,4174],{"class":4173},[4152,20382,11040],{"class":4181},[4152,20384,4782],{"class":4173},[4152,20386,20387,20389,20391,20393,20395,20397,20399,20401,20403,20405],{"class":4154,"line":6603},[4152,20388,11099],{"class":4165},[4152,20390,4170],{"class":4169},[4152,20392,4174],{"class":4173},[4152,20394,4755],{"class":4177},[4152,20396,4758],{"class":4173},[4152,20398,11110],{"class":4581},[4152,20400,4611],{"class":4177},[4152,20402,11040],{"class":4181},[4152,20404,3910],{"class":4177},[4152,20406,4782],{"class":4173},[4152,20408,20409,20411,20413,20415],{"class":4154,"line":6629},[4152,20410,11123],{"class":4165},[4152,20412,4170],{"class":4169},[4152,20414,4174],{"class":4173},[4152,20416,9163],{"class":4177},[4152,20418,20419,20421,20423,20425],{"class":4154,"line":6662},[4152,20420,11134],{"class":4181},[4152,20422,3609],{"class":4177},[4152,20424,11139],{"class":4181},[4152,20426,4819],{"class":4177},[4152,20428,20429],{"class":4154,"line":8168},[4152,20430,11146],{"class":4177},[4152,20432,20433,20435,20437,20439,20441,20443,20445,20447,20449,20451,20453],{"class":4154,"line":8187},[4152,20434,11151],{"class":4181},[4152,20436,11054],{"class":4181},[4152,20438,4901],{"class":4169},[4152,20440,10861],{"class":4181},[4152,20442,3609],{"class":4177},[4152,20444,9516],{"class":4181},[4152,20446,4907],{"class":4169},[4152,20448,10861],{"class":4181},[4152,20450,3609],{"class":4177},[4152,20452,3660],{"class":4181},[4152,20454,4819],{"class":4177},[4152,20456,20457,20459,20461,20463,20465],{"class":4154,"line":8198},[4152,20458,11176],{"class":4181},[4152,20460,10861],{"class":4181},[4152,20462,3609],{"class":4177},[4152,20464,9769],{"class":4181},[4152,20466,4819],{"class":4177},[4152,20468,20469],{"class":4154,"line":8214},[4152,20470,11189],{"class":4177},[4152,20472,20473,20475],{"class":4154,"line":8229},[4152,20474,11194],{"class":4177},[4152,20476,4782],{"class":4173},[4152,20478,20479],{"class":4154,"line":8236},[4152,20480,11201],{"class":4158},[4152,20482,20483,20485],{"class":4154,"line":8241},[4152,20484,11206],{"class":4158},[4152,20486,11209],{"class":4162},[4152,20488,20489,20491,20493,20495],{"class":4154,"line":8264},[4152,20490,11214],{"class":4165},[4152,20492,4170],{"class":4169},[4152,20494,4174],{"class":4173},[4152,20496,6224],{"class":4177},[4152,20498,20499,20501,20503,20505,20507,20509,20511,20513,20515,20517,20519],{"class":4154,"line":8284},[4152,20500,11225],{"class":4181},[4152,20502,11054],{"class":4181},[4152,20504,4901],{"class":4169},[4152,20506,10861],{"class":4181},[4152,20508,3609],{"class":4177},[4152,20510,9747],{"class":4181},[4152,20512,4907],{"class":4169},[4152,20514,10861],{"class":4181},[4152,20516,3609],{"class":4177},[4152,20518,9670],{"class":4181},[4152,20520,4819],{"class":4177},[4152,20522,20523,20525,20527],{"class":4154,"line":8293},[4152,20524,11250],{"class":4181},[4152,20526,5063],{"class":4202},[4152,20528,4819],{"class":4177},[4152,20530,20531,20533],{"class":4154,"line":8302},[4152,20532,11268],{"class":4177},[4152,20534,4782],{"class":4173},[4152,20536,20537],{"class":4154,"line":8307},[4152,20538,11275],{"class":4158},[4152,20540,20541,20543,20545,20547,20549,20551,20553,20555,20557],{"class":4154,"line":8330},[4152,20542,11280],{"class":4173},[4152,20544,11040],{"class":4181},[4152,20546,11063],{"class":4169},[4152,20548,11287],{"class":4202},[4152,20550,4901],{"class":4169},[4152,20552,11292],{"class":4202},[4152,20554,4907],{"class":4169},[4152,20556,11297],{"class":4202},[4152,20558,4782],{"class":4173},[4152,20560,20561,20563,20565],{"class":4154,"line":8336},[4152,20562,11304],{"class":4158},[4152,20564,4010],{"class":4162},[4152,20566,4658],{"class":4158},[4152,20568,20569,20571,20573],{"class":4154,"line":8345},[4152,20570,11313],{"class":4158},[4152,20572,4493],{"class":4162},[4152,20574,4658],{"class":4158},[4152,20576,20577],{"class":4154,"line":8354},[4152,20578,11322],{"class":4177},[4152,20580,20581,20583],{"class":4154,"line":8359},[4152,20582,11327],{"class":4177},[4152,20584,4782],{"class":4173},[4152,20586,20587,20589,20591],{"class":4154,"line":8364},[4152,20588,4730],{"class":4158},[4152,20590,3967],{"class":4162},[4152,20592,4658],{"class":4158},[4152,20594,20595],{"class":4154,"line":8369},[4152,20596,4566],{"emptyLinePlaceholder":4565},[4152,20598,20599,20601],{"class":4154,"line":8386},[4152,20600,4664],{"class":4158},[4152,20602,6212],{"class":4162},[4152,20604,20605,20607,20609,20611],{"class":4154,"line":8393},[4152,20606,4788],{"class":4165},[4152,20608,4170],{"class":4169},[4152,20610,4174],{"class":4173},[4152,20612,9163],{"class":4177},[4152,20614,20615,20617,20619,20621],{"class":4154,"line":8402},[4152,20616,4811],{"class":4181},[4152,20618,3609],{"class":4177},[4152,20620,5996],{"class":4181},[4152,20622,4819],{"class":4177},[4152,20624,20625,20627,20629,20631,20633,20635,20637,20639,20641,20643,20645],{"class":4154,"line":8411},[4152,20626,11472],{"class":4177},[4152,20628,4199],{"class":4181},[4152,20630,10861],{"class":4181},[4152,20632,3609],{"class":4177},[4152,20634,3660],{"class":4181},[4152,20636,3536],{"class":4177},[4152,20638,11485],{"class":4181},[4152,20640,10861],{"class":4181},[4152,20642,3609],{"class":4177},[4152,20644,9769],{"class":4181},[4152,20646,5074],{"class":4177},[4152,20648,20649,20651],{"class":4154,"line":8420},[4152,20650,4861],{"class":4177},[4152,20652,4782],{"class":4173},[4152,20654,20655],{"class":4154,"line":8429},[4152,20656,4869],{"class":4158},[4152,20658,20659,20661,20663,20665,20667,20669,20671,20673,20675,20678,20680,20682,20684,20686,20688,20690,20692],{"class":4154,"line":8438},[4152,20660,4875],{"class":4158},[4152,20662,3967],{"class":4162},[4152,20664,4166],{"class":4165},[4152,20666,4170],{"class":4169},[4152,20668,4174],{"class":4173},[4152,20670,6047],{"class":4177},[4152,20672,4648],{"class":4181},[4152,20674,3609],{"class":4177},[4152,20676,20677],{"class":4181},"avatar",[4152,20679,9098],{"class":4177},[4152,20681,4199],{"class":4181},[4152,20683,10861],{"class":4181},[4152,20685,3609],{"class":4177},[4152,20687,9516],{"class":4181},[4152,20689,9110],{"class":4177},[4152,20691,4209],{"class":4173},[4152,20693,4658],{"class":4158},[4152,20695,20696,20698,20700,20702,20704,20706,20708,20710,20712,20714,20716,20718,20720,20722,20724,20726,20728,20730,20732,20734,20737,20739,20741],{"class":4154,"line":8443},[4152,20697,6074],{"class":4158},[4152,20699,4010],{"class":4162},[4152,20701,4166],{"class":4165},[4152,20703,4170],{"class":4169},[4152,20705,4174],{"class":4173},[4152,20707,4178],{"class":4177},[4152,20709,5068],{"class":4181},[4152,20711,10861],{"class":4181},[4152,20713,3609],{"class":4177},[4152,20715,9747],{"class":4181},[4152,20717,3536],{"class":4177},[4152,20719,5060],{"class":4181},[4152,20721,5689],{"class":4202},[4152,20723,3536],{"class":4177},[4152,20725,5052],{"class":4181},[4152,20727,5682],{"class":4185},[4152,20729,4206],{"class":4177},[4152,20731,4209],{"class":4173},[4152,20733,4684],{"class":4158},[4152,20735,20736],{"class":4169},"Н",[4152,20738,4690],{"class":4158},[4152,20740,4010],{"class":4162},[4152,20742,4658],{"class":4158},[4152,20744,20745,20747,20749],{"class":4154,"line":8456},[4152,20746,6107],{"class":4158},[4152,20748,3967],{"class":4162},[4152,20750,4658],{"class":4158},[4152,20752,20753,20755,20757,20759,20761,20763,20765,20767,20769,20771,20773,20775,20777,20779,20781,20783,20785,20787,20790,20792,20794],{"class":4154,"line":8476},[4152,20754,4875],{"class":4158},[4152,20756,4010],{"class":4162},[4152,20758,4166],{"class":4165},[4152,20760,4170],{"class":4169},[4152,20762,4174],{"class":4173},[4152,20764,6047],{"class":4177},[4152,20766,4648],{"class":4181},[4152,20768,3609],{"class":4177},[4152,20770,7903],{"class":4181},[4152,20772,9098],{"class":4177},[4152,20774,5068],{"class":4181},[4152,20776,10861],{"class":4181},[4152,20778,3609],{"class":4177},[4152,20780,9670],{"class":4181},[4152,20782,9110],{"class":4177},[4152,20784,4209],{"class":4173},[4152,20786,4684],{"class":4158},[4152,20788,20789],{"class":4169},"Мандрівник Nomad",[4152,20791,4690],{"class":4158},[4152,20793,4010],{"class":4162},[4152,20795,4658],{"class":4158},[4152,20797,20798,20800,20802,20804,20806,20808,20810,20812,20814,20816,20818,20820,20822,20824,20826,20828,20830,20832,20834],{"class":4154,"line":8506},[4152,20799,4875],{"class":4158},[4152,20801,4010],{"class":4162},[4152,20803,4166],{"class":4165},[4152,20805,4170],{"class":4169},[4152,20807,4174],{"class":4173},[4152,20809,4178],{"class":4177},[4152,20811,5068],{"class":4181},[4152,20813,10861],{"class":4181},[4152,20815,3609],{"class":4177},[4152,20817,9693],{"class":4181},[4152,20819,3536],{"class":4177},[4152,20821,6654],{"class":4181},[4152,20823,5777],{"class":4185},[4152,20825,3536],{"class":4177},[4152,20827,5099],{"class":4181},[4152,20829,5055],{"class":4185},[4152,20831,4206],{"class":4177},[4152,20833,4209],{"class":4173},[4152,20835,4658],{"class":4158},[4152,20837,20838],{"class":4154,"line":8513},[4152,20839,20840],{"class":4169},"          Кольори картки — семантичні токени. Перемкніть тему: та сама розмітка,\n",[4152,20842,20843],{"class":4154,"line":8522},[4152,20844,20845],{"class":4169},"          інша палітра.\n",[4152,20847,20848,20850,20852],{"class":4154,"line":8531},[4152,20849,6107],{"class":4158},[4152,20851,4010],{"class":4162},[4152,20853,4658],{"class":4158},[4152,20855,20856,20858,20860],{"class":4154,"line":8540},[4152,20857,4730],{"class":4158},[4152,20859,3967],{"class":4162},[4152,20861,4658],{"class":4158},[4152,20863,20864,20866,20868],{"class":4154,"line":8549},[4152,20865,4933],{"class":4158},[4152,20867,20072],{"class":4162},[4152,20869,4658],{"class":4158},[4152,20871,20872],{"class":4154,"line":8558},[4152,20873,4943],{"class":4169},[4152,20875,20876],{"class":4154,"line":8569},[4152,20877,4782],{"class":4169},[4152,20879,20880],{"class":4154,"line":8578},[4152,20881,4566],{"emptyLinePlaceholder":4565},[4152,20883,20884,20886,20888,20890,20892,20894,20896],{"class":4154,"line":8583},[4152,20885,4959],{"class":4173},[4152,20887,4831],{"class":4597},[4152,20889,4964],{"class":4169},[4152,20891,3572],{"class":4181},[4152,20893,3609],{"class":4169},[4152,20895,4264],{"class":4581},[4152,20897,4973],{"class":4169},[4152,20899,20900,20903,20905,20907,20909],{"class":4154,"line":8610},[4152,20901,20902],{"class":4181},"  safe:",[4152,20904,4514],{"class":4169},[4152,20906,4182],{"class":4181},[4152,20908,4186],{"class":4185},[4152,20910,5074],{"class":4169},[4152,20912,20913,20916,20918,20920,20922,20924,20927,20929],{"class":4154,"line":8642},[4152,20914,20915],{"class":4181},"  header:",[4152,20917,4514],{"class":4169},[4152,20919,7217],{"class":4181},[4152,20921,5055],{"class":4185},[4152,20923,3536],{"class":4169},[4152,20925,20926],{"class":4181},"paddingTop:",[4152,20928,5033],{"class":4185},[4152,20930,5074],{"class":4169},[4152,20932,20933,20935,20937,20939,20942,20944,20946,20948],{"class":4154,"line":8674},[4152,20934,5047],{"class":4181},[4152,20936,4514],{"class":4169},[4152,20938,5052],{"class":4181},[4152,20940,20941],{"class":4185}," 28",[4152,20943,3536],{"class":4169},[4152,20945,5060],{"class":4181},[4152,20947,5689],{"class":4202},[4152,20949,5074],{"class":4169},[4152,20951,20952,20954],{"class":4154,"line":8681},[4152,20953,7212],{"class":4181},[4152,20955,4982],{"class":4169},[4152,20957,20958,20961,20963],{"class":4154,"line":8694},[4152,20959,20960],{"class":4181},"    flexDirection:",[4152,20962,12404],{"class":4202},[4152,20964,4819],{"class":4169},[4152,20966,20967,20969,20971],{"class":4154,"line":8704},[4152,20968,5030],{"class":4181},[4152,20970,6439],{"class":4185},[4152,20972,4819],{"class":4169},[4152,20974,20975,20977,20979],{"class":4154,"line":8714},[4152,20976,12427],{"class":4181},[4152,20978,5055],{"class":4185},[4152,20980,4819],{"class":4169},[4152,20982,20983,20985,20987],{"class":4154,"line":8719},[4152,20984,15015],{"class":4181},[4152,20986,5055],{"class":4185},[4152,20988,4819],{"class":4169},[4152,20990,20991],{"class":4154,"line":8738},[4152,20992,5041],{"class":4169},[4152,20994,20995,20997],{"class":4154,"line":8746},[4152,20996,12419],{"class":4181},[4152,20998,4982],{"class":4169},[4152,21000,21001,21003,21005],{"class":4154,"line":8756},[4152,21002,12427],{"class":4181},[4152,21004,4194],{"class":4185},[4152,21006,4819],{"class":4169},[4152,21008,21009,21011,21013],{"class":4154,"line":8765},[4152,21010,5128],{"class":4181},[4152,21012,5033],{"class":4185},[4152,21014,4819],{"class":4169},[4152,21016,21017,21019,21021],{"class":4154,"line":8774},[4152,21018,5139],{"class":4181},[4152,21020,5033],{"class":4185},[4152,21022,4819],{"class":4169},[4152,21024,21025,21027,21029],{"class":4154,"line":8779},[4152,21026,5719],{"class":4181},[4152,21028,4186],{"class":4185},[4152,21030,4819],{"class":4169},[4152,21032,21033],{"class":4154,"line":8805},[4152,21034,5041],{"class":4169},[4152,21036,21037,21039],{"class":4154,"line":8812},[4152,21038,6471],{"class":4181},[4152,21040,4982],{"class":4169},[4152,21042,21043,21046,21048],{"class":4154,"line":8821},[4152,21044,21045],{"class":4181},"    margin:",[4152,21047,5055],{"class":4185},[4152,21049,4819],{"class":4169},[4152,21051,21052,21054,21056],{"class":4154,"line":8830},[4152,21053,15015],{"class":4181},[4152,21055,5011],{"class":4185},[4152,21057,4819],{"class":4169},[4152,21059,21060,21062,21064],{"class":4154,"line":8839},[4152,21061,5008],{"class":4181},[4152,21063,5055],{"class":4185},[4152,21065,4819],{"class":4169},[4152,21067,21068,21070,21072],{"class":4154,"line":8848},[4152,21069,5139],{"class":4181},[4152,21071,4194],{"class":4185},[4152,21073,4819],{"class":4169},[4152,21075,21076,21078,21080],{"class":4154,"line":8853},[4152,21077,5719],{"class":4181},[4152,21079,4186],{"class":4185},[4152,21081,4819],{"class":4169},[4152,21083,21084],{"class":4154,"line":8866},[4152,21085,5041],{"class":4169},[4152,21087,21088,21091],{"class":4154,"line":8879},[4152,21089,21090],{"class":4181},"  avatar:",[4152,21092,4982],{"class":4169},[4152,21094,21095,21098,21101],{"class":4154,"line":8904},[4152,21096,21097],{"class":4181},"    width:",[4152,21099,21100],{"class":4185}," 56",[4152,21102,4819],{"class":4169},[4152,21104,21105,21107,21109],{"class":4154,"line":8930},[4152,21106,6478],{"class":4181},[4152,21108,21100],{"class":4185},[4152,21110,4819],{"class":4169},[4152,21112,21113,21115,21117],{"class":4154,"line":11945},[4152,21114,5139],{"class":4181},[4152,21116,20941],{"class":4185},[4152,21118,4819],{"class":4169},[4152,21120,21121,21123,21125],{"class":4154,"line":11956},[4152,21122,5149],{"class":4181},[4152,21124,5022],{"class":4202},[4152,21126,4819],{"class":4169},[4152,21128,21129,21131,21133],{"class":4154,"line":11992},[4152,21130,5019],{"class":4181},[4152,21132,5022],{"class":4202},[4152,21134,4819],{"class":4169},[4152,21136,21137,21140,21142],{"class":4154,"line":12027},[4152,21138,21139],{"class":4181},"    marginBottom:",[4152,21141,5033],{"class":4185},[4152,21143,4819],{"class":4169},[4152,21145,21146],{"class":4154,"line":12033},[4152,21147,5041],{"class":4169},[4152,21149,21150,21152,21154,21156,21158,21160,21162,21164],{"class":4154,"line":12042},[4152,21151,8613],{"class":4181},[4152,21153,4514],{"class":4169},[4152,21155,5052],{"class":4181},[4152,21157,5055],{"class":4185},[4152,21159,3536],{"class":4169},[4152,21161,5060],{"class":4181},[4152,21163,5063],{"class":4202},[4152,21165,5074],{"class":4169},[4152,21167,21168],{"class":4154,"line":12051},[4152,21169,5222],{"class":4169},[3589,21171,21173],{"id":21172},"крок-3-анатомія","Крок 3. Анатомія",[15753,21175,21176,21180,21190,21196,21208,21212,21228,21231],{},[3589,21177,21179],{"id":21178},"дві-палітри-одні-ключі","Дві палітри, одні ключі",[3512,21181,21182,3676,21184,21186,21187,21189],{},[3533,21183,3631],{},[3533,21185,3638],{}," — однакові поля. Компонент ніколи не пише ",[3533,21188,13762],{}," напряму для фону екрана.",[3589,21191,21193],{"id":21192},"const-c-mode-dark-dark-light",[3533,21194,21195],{},"const c = mode === 'dark' ? dark : light",[3512,21197,21198,21199,21201,21202,3536,21205,3609],{},"Один об’єкт ",[3533,21200,10519],{}," на рендер — усі ",[3533,21203,21204],{},"c.surface",[3533,21206,21207],{},"c.text",[3589,21209,21211],{"id":21210},"stylesheet-для-геометрії","StyleSheet для геометрії",[3512,21213,21214,3536,21217,3536,21219,21222,21223,21225,21226,3609],{},[3533,21215,21216],{},"padding",[3533,21218,9124],{},[3533,21220,21221],{},"flex"," — у ",[3533,21224,4648],{},". Кольори — у масиві \u002F inline від ",[3533,21227,10519],{},[3589,21229,3956],{"id":21230},"statusbar",[3512,21232,21233,21236,21237,21239,21240,21242,21243,19484,21245,4388],{},[3533,21234,21235],{},"barStyle"," залежить від ",[3533,21238,10803],{}," (у core ",[3533,21241,3956],{},"; у Expo-проєктах часто ",[3533,21244,19358],{},[3533,21246,21247],{},"style=\"light\" | \"dark\"",[3589,21249,21251],{"id":21250},"критерій-готово","Критерій «готово»",[3973,21253,21254,21257,21264],{},[3564,21255,21256],{},"Перемикач реально змінює фон, картку, текст.",[3564,21258,21259,21260,21263],{},"У JSX картки ",[3525,21261,21262],{},"немає"," hex поза палітрами.",[3564,21265,21266],{},"Статус-бар читабельний в обох режимах.",[3589,21268,21270],{"id":21269},"результат-міні-проєкту","Результат міні-проєкту",[4496,21272,21275],{"device":4498,"filename":21273,"title":20202,"height":21274},"ThemeLab.tsx",640,[4143,21276,21278],{"className":4145,"code":21277,"language":4147,"meta":4148,"style":4148},"import { useState } from 'react';\nimport { View, Text, Pressable, StyleSheet } from 'react-native';\n\nconst light = {\n  background: '#F8FAFC',\n  surface: '#FFFFFF',\n  text: '#0F172A',\n  textSecondary: '#64748B',\n  primary: '#2563EB',\n  border: '#E2E8F0',\n  onPrimary: '#FFFFFF',\n};\n\nconst dark = {\n  background: '#000000',\n  surface: '#1C1C1E',\n  text: '#F5F5F7',\n  textSecondary: '#A1A1AA',\n  primary: '#3B82F6',\n  border: '#3A3A3C',\n  onPrimary: '#FFFFFF',\n};\n\ntype Mode = 'light' | 'dark';\n\nexport default function App() {\n  const [mode, setMode] = useState\u003CMode>('light');\n  const c = mode === 'dark' ? dark : light;\n\n  return (\n    \u003CView style={[styles.safe, { backgroundColor: c.background }]}>\n      \u003CView style={styles.header}>\n        \u003CText style={[styles.title, { color: c.text }]}>Theme Lab\u003C\u002FText>\n        \u003CText style={{ color: c.textSecondary, marginTop: 4 }}>\n          Зараз: {mode === 'dark' ? 'темна' : 'світла'} тема\n        \u003C\u002FText>\n      \u003C\u002FView>\n\n      \u003CView style={styles.row}>\n        {(['light', 'dark'] as Mode[]).map((m) => {\n          const active = mode === m;\n          return (\n            \u003CPressable\n              key={m}\n              onPress={() => setMode(m)}\n              style={[\n                styles.chip,\n                {\n                  backgroundColor: active ? c.primary : c.surface,\n                  borderColor: c.border,\n                },\n              ]}\n            >\n              \u003CText\n                style={{\n                  color: active ? c.onPrimary : c.text,\n                  fontWeight: '700',\n                }}\n              >\n                {m === 'light' ? 'Світла' : 'Темна'}\n              \u003C\u002FText>\n            \u003C\u002FPressable>\n          );\n        })}\n      \u003C\u002FView>\n\n      \u003CView\n        style={[\n          styles.card,\n          { backgroundColor: c.surface, borderColor: c.border },\n        ]}\n      >\n        \u003CView style={[styles.avatar, { backgroundColor: c.primary }]}>\n          \u003CText style={{ color: c.onPrimary, fontWeight: '800', fontSize: 22 }}>Н\u003C\u002FText>\n        \u003C\u002FView>\n        \u003CText style={[styles.name, { color: c.text }]}>Мандрівник Nomad\u003C\u002FText>\n        \u003CText style={{ color: c.textSecondary, marginTop: 6, lineHeight: 20 }}>\n          Кольори картки — семантичні токени. Перемкніть тему: та сама розмітка,\n          інша палітра.\n        \u003C\u002FText>\n      \u003C\u002FView>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  safe: { flex: 1 },\n  header: { paddingHorizontal: 20, paddingTop: 12 },\n  title: { fontSize: 28, fontWeight: '800' },\n  row: {\n    flexDirection: 'row',\n    gap: 10,\n    paddingHorizontal: 20,\n    marginTop: 20,\n  },\n  chip: {\n    paddingHorizontal: 16,\n    paddingVertical: 12,\n    borderRadius: 12,\n    borderWidth: 1,\n  },\n  card: {\n    margin: 20,\n    marginTop: 24,\n    padding: 20,\n    borderRadius: 16,\n    borderWidth: 1,\n  },\n  avatar: {\n    width: 56,\n    height: 56,\n    borderRadius: 28,\n    alignItems: 'center',\n    justifyContent: 'center',\n    marginBottom: 12,\n  },\n  name: { fontSize: 20, fontWeight: '700' },\n});\n",[3533,21279,21280,21296,21324,21328,21336,21344,21352,21360,21368,21376,21384,21392,21396,21400,21408,21416,21424,21432,21440,21448,21456,21464,21468,21472,21488,21492,21504,21530,21554,21558,21564,21600,21622,21666,21700,21724,21732,21740,21744,21766,21798,21814,21820,21826,21838,21860,21870,21880,21884,21908,21920,21924,21930,21934,21940,21950,21974,21982,21988,21992,22012,22020,22028,22032,22038,22046,22050,22056,22066,22076,22100,22106,22110,22146,22194,22202,22246,22286,22290,22294,22302,22310,22318,22322,22326,22330,22346,22358,22376,22394,22400,22408,22416,22424,22432,22436,22442,22450,22458,22466,22474,22478,22484,22492,22500,22508,22516,22524,22528,22534,22542,22550,22558,22566,22574,22582,22586,22604],{"__ignoreMap":4148},[4152,21281,21282,21284,21286,21288,21290,21292,21294],{"class":4154,"line":4155},[4152,21283,4511],{"class":4510},[4152,21285,4514],{"class":4169},[4152,21287,4517],{"class":4181},[4152,21289,4520],{"class":4169},[4152,21291,4523],{"class":4510},[4152,21293,4526],{"class":4202},[4152,21295,4529],{"class":4169},[4152,21297,21298,21300,21302,21304,21306,21308,21310,21312,21314,21316,21318,21320,21322],{"class":4154,"line":4532},[4152,21299,4511],{"class":4510},[4152,21301,4514],{"class":4169},[4152,21303,3967],{"class":4181},[4152,21305,3536],{"class":4169},[4152,21307,4010],{"class":4181},[4152,21309,3536],{"class":4169},[4152,21311,4493],{"class":4181},[4152,21313,3536],{"class":4169},[4152,21315,3572],{"class":4181},[4152,21317,4520],{"class":4169},[4152,21319,4523],{"class":4510},[4152,21321,4557],{"class":4202},[4152,21323,4529],{"class":4169},[4152,21325,21326],{"class":4154,"line":4562},[4152,21327,4566],{"emptyLinePlaceholder":4565},[4152,21329,21330,21332,21334],{"class":4154,"line":4569},[4152,21331,4959],{"class":4173},[4152,21333,10588],{"class":4597},[4152,21335,10591],{"class":4169},[4152,21337,21338,21340,21342],{"class":4154,"line":4588},[4152,21339,10596],{"class":4181},[4152,21341,4203],{"class":4202},[4152,21343,4819],{"class":4169},[4152,21345,21346,21348,21350],{"class":4154,"line":4620},[4152,21347,10605],{"class":4181},[4152,21349,10608],{"class":4202},[4152,21351,4819],{"class":4169},[4152,21353,21354,21356,21358],{"class":4154,"line":4625},[4152,21355,10615],{"class":4181},[4152,21357,10618],{"class":4202},[4152,21359,4819],{"class":4169},[4152,21361,21362,21364,21366],{"class":4154,"line":4634},[4152,21363,10625],{"class":4181},[4152,21365,10628],{"class":4202},[4152,21367,4819],{"class":4169},[4152,21369,21370,21372,21374],{"class":4154,"line":4661},[4152,21371,10635],{"class":4181},[4152,21373,5171],{"class":4202},[4152,21375,4819],{"class":4169},[4152,21377,21378,21380,21382],{"class":4154,"line":4697},[4152,21379,10654],{"class":4181},[4152,21381,5731],{"class":4202},[4152,21383,4819],{"class":4169},[4152,21385,21386,21388,21390],{"class":4154,"line":4721},[4152,21387,10673],{"class":4181},[4152,21389,10608],{"class":4202},[4152,21391,4819],{"class":4169},[4152,21393,21394],{"class":4154,"line":4727},[4152,21395,10682],{"class":4169},[4152,21397,21398],{"class":4154,"line":4737},[4152,21399,4566],{"emptyLinePlaceholder":4565},[4152,21401,21402,21404,21406],{"class":4154,"line":4745},[4152,21403,4959],{"class":4173},[4152,21405,10693],{"class":4597},[4152,21407,10591],{"class":4169},[4152,21409,21410,21412,21414],{"class":4154,"line":4785},[4152,21411,10596],{"class":4181},[4152,21413,10702],{"class":4202},[4152,21415,4819],{"class":4169},[4152,21417,21418,21420,21422],{"class":4154,"line":4808},[4152,21419,10605],{"class":4181},[4152,21421,10711],{"class":4202},[4152,21423,4819],{"class":4169},[4152,21425,21426,21428,21430],{"class":4154,"line":4822},[4152,21427,10615],{"class":4181},[4152,21429,10720],{"class":4202},[4152,21431,4819],{"class":4169},[4152,21433,21434,21436,21438],{"class":4154,"line":4841},[4152,21435,10625],{"class":4181},[4152,21437,10729],{"class":4202},[4152,21439,4819],{"class":4169},[4152,21441,21442,21444,21446],{"class":4154,"line":4858},[4152,21443,10635],{"class":4181},[4152,21445,10738],{"class":4202},[4152,21447,4819],{"class":4169},[4152,21449,21450,21452,21454],{"class":4154,"line":4866},[4152,21451,10654],{"class":4181},[4152,21453,10755],{"class":4202},[4152,21455,4819],{"class":4169},[4152,21457,21458,21460,21462],{"class":4154,"line":4872},[4152,21459,10673],{"class":4181},[4152,21461,10608],{"class":4202},[4152,21463,4819],{"class":4169},[4152,21465,21466],{"class":4154,"line":4921},[4152,21467,10682],{"class":4169},[4152,21469,21470],{"class":4154,"line":4930},[4152,21471,4566],{"emptyLinePlaceholder":4565},[4152,21473,21474,21476,21478,21480,21482,21484,21486],{"class":4154,"line":4940},[4152,21475,15584],{"class":4173},[4152,21477,19978],{"class":4162},[4152,21479,4964],{"class":4169},[4152,21481,10817],{"class":4202},[4152,21483,10820],{"class":4169},[4152,21485,10823],{"class":4202},[4152,21487,4529],{"class":4169},[4152,21489,21490],{"class":4154,"line":4946},[4152,21491,4566],{"emptyLinePlaceholder":4565},[4152,21493,21494,21496,21498,21500,21502],{"class":4154,"line":4951},[4152,21495,4572],{"class":4510},[4152,21497,4575],{"class":4510},[4152,21499,4578],{"class":4173},[4152,21501,4582],{"class":4581},[4152,21503,4585],{"class":4169},[4152,21505,21506,21508,21510,21512,21514,21516,21518,21520,21522,21524,21526,21528],{"class":4154,"line":4956},[4152,21507,4591],{"class":4173},[4152,21509,4594],{"class":4169},[4152,21511,10803],{"class":4597},[4152,21513,3536],{"class":4169},[4152,21515,10808],{"class":4597},[4152,21517,4606],{"class":4169},[4152,21519,4517],{"class":4581},[4152,21521,4159],{"class":4169},[4152,21523,20025],{"class":4162},[4152,21525,10826],{"class":4169},[4152,21527,10817],{"class":4202},[4152,21529,4617],{"class":4169},[4152,21531,21532,21534,21536,21538,21540,21542,21544,21546,21548,21550,21552],{"class":4154,"line":4976},[4152,21533,4591],{"class":4173},[4152,21535,10861],{"class":4597},[4152,21537,4964],{"class":4169},[4152,21539,10803],{"class":4181},[4152,21541,10868],{"class":4169},[4152,21543,10823],{"class":4202},[4152,21545,10873],{"class":4169},[4152,21547,3638],{"class":4181},[4152,21549,10878],{"class":4169},[4152,21551,3631],{"class":4181},[4152,21553,4529],{"class":4169},[4152,21555,21556],{"class":4154,"line":4985},[4152,21557,4566],{"emptyLinePlaceholder":4565},[4152,21559,21560,21562],{"class":4154,"line":4995},[4152,21561,4628],{"class":4510},[4152,21563,4631],{"class":4169},[4152,21565,21566,21568,21570,21572,21574,21576,21578,21580,21582,21584,21586,21588,21590,21592,21594,21596,21598],{"class":4154,"line":5005},[4152,21567,4637],{"class":4158},[4152,21569,3967],{"class":4162},[4152,21571,4166],{"class":4165},[4152,21573,4170],{"class":4169},[4152,21575,4174],{"class":4173},[4152,21577,6047],{"class":4177},[4152,21579,4648],{"class":4181},[4152,21581,3609],{"class":4177},[4152,21583,20087],{"class":4181},[4152,21585,9098],{"class":4177},[4152,21587,4199],{"class":4181},[4152,21589,10861],{"class":4181},[4152,21591,3609],{"class":4177},[4152,21593,9618],{"class":4181},[4152,21595,9110],{"class":4177},[4152,21597,4209],{"class":4173},[4152,21599,4658],{"class":4158},[4152,21601,21602,21604,21606,21608,21610,21612,21614,21616,21618,21620],{"class":4154,"line":5016},[4152,21603,4664],{"class":4158},[4152,21605,3967],{"class":4162},[4152,21607,4166],{"class":4165},[4152,21609,4170],{"class":4169},[4152,21611,4174],{"class":4173},[4152,21613,4648],{"class":4181},[4152,21615,3609],{"class":4177},[4152,21617,20159],{"class":4181},[4152,21619,4209],{"class":4173},[4152,21621,4658],{"class":4158},[4152,21623,21624,21626,21628,21630,21632,21634,21636,21638,21640,21642,21644,21646,21648,21650,21652,21654,21656,21658,21660,21662,21664],{"class":4154,"line":5027},[4152,21625,4875],{"class":4158},[4152,21627,4010],{"class":4162},[4152,21629,4166],{"class":4165},[4152,21631,4170],{"class":4169},[4152,21633,4174],{"class":4173},[4152,21635,6047],{"class":4177},[4152,21637,4648],{"class":4181},[4152,21639,3609],{"class":4177},[4152,21641,4679],{"class":4181},[4152,21643,9098],{"class":4177},[4152,21645,5068],{"class":4181},[4152,21647,10861],{"class":4181},[4152,21649,3609],{"class":4177},[4152,21651,9670],{"class":4181},[4152,21653,9110],{"class":4177},[4152,21655,4209],{"class":4173},[4152,21657,4684],{"class":4158},[4152,21659,20202],{"class":4169},[4152,21661,4690],{"class":4158},[4152,21663,4010],{"class":4162},[4152,21665,4658],{"class":4158},[4152,21667,21668,21670,21672,21674,21676,21678,21680,21682,21684,21686,21688,21690,21692,21694,21696,21698],{"class":4154,"line":5038},[4152,21669,4875],{"class":4158},[4152,21671,4010],{"class":4162},[4152,21673,4166],{"class":4165},[4152,21675,4170],{"class":4169},[4152,21677,4174],{"class":4173},[4152,21679,4178],{"class":4177},[4152,21681,5068],{"class":4181},[4152,21683,10861],{"class":4181},[4152,21685,3609],{"class":4177},[4152,21687,9693],{"class":4181},[4152,21689,3536],{"class":4177},[4152,21691,6654],{"class":4181},[4152,21693,6657],{"class":4185},[4152,21695,4206],{"class":4177},[4152,21697,4209],{"class":4173},[4152,21699,4658],{"class":4158},[4152,21701,21702,21704,21706,21708,21710,21712,21714,21716,21718,21720,21722],{"class":4154,"line":5044},[4152,21703,20247],{"class":4169},[4152,21705,4174],{"class":4173},[4152,21707,10803],{"class":4181},[4152,21709,11063],{"class":4169},[4152,21711,14404],{"class":4202},[4152,21713,4901],{"class":4169},[4152,21715,20260],{"class":4202},[4152,21717,4907],{"class":4169},[4152,21719,20265],{"class":4202},[4152,21721,4209],{"class":4173},[4152,21723,20270],{"class":4169},[4152,21725,21726,21728,21730],{"class":4154,"line":5077},[4152,21727,6107],{"class":4158},[4152,21729,4010],{"class":4162},[4152,21731,4658],{"class":4158},[4152,21733,21734,21736,21738],{"class":4154,"line":5107},[4152,21735,4730],{"class":4158},[4152,21737,3967],{"class":4162},[4152,21739,4658],{"class":4158},[4152,21741,21742],{"class":4154,"line":5115},[4152,21743,4566],{"emptyLinePlaceholder":4565},[4152,21745,21746,21748,21750,21752,21754,21756,21758,21760,21762,21764],{"class":4154,"line":5125},[4152,21747,4664],{"class":4158},[4152,21749,3967],{"class":4162},[4152,21751,4166],{"class":4165},[4152,21753,4170],{"class":4169},[4152,21755,4174],{"class":4173},[4152,21757,4648],{"class":4181},[4152,21759,3609],{"class":4177},[4152,21761,6837],{"class":4181},[4152,21763,4209],{"class":4173},[4152,21765,4658],{"class":4158},[4152,21767,21768,21770,21772,21774,21776,21778,21780,21782,21784,21786,21788,21790,21792,21794,21796],{"class":4154,"line":5136},[4152,21769,7708],{"class":4173},[4152,21771,11015],{"class":4177},[4152,21773,10817],{"class":4202},[4152,21775,3536],{"class":4177},[4152,21777,10823],{"class":4202},[4152,21779,11024],{"class":4177},[4152,21781,11027],{"class":4510},[4152,21783,19978],{"class":4162},[4152,21785,18394],{"class":4177},[4152,21787,11035],{"class":4581},[4152,21789,4764],{"class":4177},[4152,21791,11040],{"class":4181},[4152,21793,4770],{"class":4177},[4152,21795,4758],{"class":4173},[4152,21797,4982],{"class":4177},[4152,21799,21800,21802,21804,21806,21808,21810,21812],{"class":4154,"line":5146},[4152,21801,11051],{"class":4173},[4152,21803,11054],{"class":4597},[4152,21805,11057],{"class":4169},[4152,21807,11060],{"class":4181},[4152,21809,11063],{"class":4169},[4152,21811,11066],{"class":4181},[4152,21813,4529],{"class":4177},[4152,21815,21816,21818],{"class":4154,"line":5156},[4152,21817,11073],{"class":4510},[4152,21819,4631],{"class":4177},[4152,21821,21822,21824],{"class":4154,"line":5161},[4152,21823,8072],{"class":4158},[4152,21825,4742],{"class":4162},[4152,21827,21828,21830,21832,21834,21836],{"class":4154,"line":5176},[4152,21829,11086],{"class":4165},[4152,21831,4170],{"class":4169},[4152,21833,4174],{"class":4173},[4152,21835,11040],{"class":4181},[4152,21837,4782],{"class":4173},[4152,21839,21840,21842,21844,21846,21848,21850,21852,21854,21856,21858],{"class":4154,"line":5192},[4152,21841,11099],{"class":4165},[4152,21843,4170],{"class":4169},[4152,21845,4174],{"class":4173},[4152,21847,4755],{"class":4177},[4152,21849,4758],{"class":4173},[4152,21851,11110],{"class":4581},[4152,21853,4611],{"class":4177},[4152,21855,11040],{"class":4181},[4152,21857,3910],{"class":4177},[4152,21859,4782],{"class":4173},[4152,21861,21862,21864,21866,21868],{"class":4154,"line":5219},[4152,21863,11123],{"class":4165},[4152,21865,4170],{"class":4169},[4152,21867,4174],{"class":4173},[4152,21869,9163],{"class":4177},[4152,21871,21872,21874,21876,21878],{"class":4154,"line":6529},[4152,21873,11134],{"class":4181},[4152,21875,3609],{"class":4177},[4152,21877,11139],{"class":4181},[4152,21879,4819],{"class":4177},[4152,21881,21882],{"class":4154,"line":6534},[4152,21883,11146],{"class":4177},[4152,21885,21886,21888,21890,21892,21894,21896,21898,21900,21902,21904,21906],{"class":4154,"line":6562},[4152,21887,11151],{"class":4181},[4152,21889,11054],{"class":4181},[4152,21891,4901],{"class":4169},[4152,21893,10861],{"class":4181},[4152,21895,3609],{"class":4177},[4152,21897,9516],{"class":4181},[4152,21899,4907],{"class":4169},[4152,21901,10861],{"class":4181},[4152,21903,3609],{"class":4177},[4152,21905,3660],{"class":4181},[4152,21907,4819],{"class":4177},[4152,21909,21910,21912,21914,21916,21918],{"class":4154,"line":6570},[4152,21911,11176],{"class":4181},[4152,21913,10861],{"class":4181},[4152,21915,3609],{"class":4177},[4152,21917,9769],{"class":4181},[4152,21919,4819],{"class":4177},[4152,21921,21922],{"class":4154,"line":6580},[4152,21923,11189],{"class":4177},[4152,21925,21926,21928],{"class":4154,"line":6589},[4152,21927,11194],{"class":4177},[4152,21929,4782],{"class":4173},[4152,21931,21932],{"class":4154,"line":6598},[4152,21933,11201],{"class":4158},[4152,21935,21936,21938],{"class":4154,"line":6603},[4152,21937,11206],{"class":4158},[4152,21939,11209],{"class":4162},[4152,21941,21942,21944,21946,21948],{"class":4154,"line":6629},[4152,21943,11214],{"class":4165},[4152,21945,4170],{"class":4169},[4152,21947,4174],{"class":4173},[4152,21949,6224],{"class":4177},[4152,21951,21952,21954,21956,21958,21960,21962,21964,21966,21968,21970,21972],{"class":4154,"line":6662},[4152,21953,11225],{"class":4181},[4152,21955,11054],{"class":4181},[4152,21957,4901],{"class":4169},[4152,21959,10861],{"class":4181},[4152,21961,3609],{"class":4177},[4152,21963,9747],{"class":4181},[4152,21965,4907],{"class":4169},[4152,21967,10861],{"class":4181},[4152,21969,3609],{"class":4177},[4152,21971,9670],{"class":4181},[4152,21973,4819],{"class":4177},[4152,21975,21976,21978,21980],{"class":4154,"line":8168},[4152,21977,11250],{"class":4181},[4152,21979,5063],{"class":4202},[4152,21981,4819],{"class":4177},[4152,21983,21984,21986],{"class":4154,"line":8187},[4152,21985,11268],{"class":4177},[4152,21987,4782],{"class":4173},[4152,21989,21990],{"class":4154,"line":8198},[4152,21991,11275],{"class":4158},[4152,21993,21994,21996,21998,22000,22002,22004,22006,22008,22010],{"class":4154,"line":8214},[4152,21995,11280],{"class":4173},[4152,21997,11040],{"class":4181},[4152,21999,11063],{"class":4169},[4152,22001,11287],{"class":4202},[4152,22003,4901],{"class":4169},[4152,22005,11292],{"class":4202},[4152,22007,4907],{"class":4169},[4152,22009,11297],{"class":4202},[4152,22011,4782],{"class":4173},[4152,22013,22014,22016,22018],{"class":4154,"line":8229},[4152,22015,11304],{"class":4158},[4152,22017,4010],{"class":4162},[4152,22019,4658],{"class":4158},[4152,22021,22022,22024,22026],{"class":4154,"line":8236},[4152,22023,11313],{"class":4158},[4152,22025,4493],{"class":4162},[4152,22027,4658],{"class":4158},[4152,22029,22030],{"class":4154,"line":8241},[4152,22031,11322],{"class":4177},[4152,22033,22034,22036],{"class":4154,"line":8264},[4152,22035,11327],{"class":4177},[4152,22037,4782],{"class":4173},[4152,22039,22040,22042,22044],{"class":4154,"line":8284},[4152,22041,4730],{"class":4158},[4152,22043,3967],{"class":4162},[4152,22045,4658],{"class":4158},[4152,22047,22048],{"class":4154,"line":8293},[4152,22049,4566],{"emptyLinePlaceholder":4565},[4152,22051,22052,22054],{"class":4154,"line":8302},[4152,22053,4664],{"class":4158},[4152,22055,6212],{"class":4162},[4152,22057,22058,22060,22062,22064],{"class":4154,"line":8307},[4152,22059,4788],{"class":4165},[4152,22061,4170],{"class":4169},[4152,22063,4174],{"class":4173},[4152,22065,9163],{"class":4177},[4152,22067,22068,22070,22072,22074],{"class":4154,"line":8330},[4152,22069,4811],{"class":4181},[4152,22071,3609],{"class":4177},[4152,22073,5996],{"class":4181},[4152,22075,4819],{"class":4177},[4152,22077,22078,22080,22082,22084,22086,22088,22090,22092,22094,22096,22098],{"class":4154,"line":8336},[4152,22079,11472],{"class":4177},[4152,22081,4199],{"class":4181},[4152,22083,10861],{"class":4181},[4152,22085,3609],{"class":4177},[4152,22087,3660],{"class":4181},[4152,22089,3536],{"class":4177},[4152,22091,11485],{"class":4181},[4152,22093,10861],{"class":4181},[4152,22095,3609],{"class":4177},[4152,22097,9769],{"class":4181},[4152,22099,5074],{"class":4177},[4152,22101,22102,22104],{"class":4154,"line":8345},[4152,22103,4861],{"class":4177},[4152,22105,4782],{"class":4173},[4152,22107,22108],{"class":4154,"line":8354},[4152,22109,4869],{"class":4158},[4152,22111,22112,22114,22116,22118,22120,22122,22124,22126,22128,22130,22132,22134,22136,22138,22140,22142,22144],{"class":4154,"line":8359},[4152,22113,4875],{"class":4158},[4152,22115,3967],{"class":4162},[4152,22117,4166],{"class":4165},[4152,22119,4170],{"class":4169},[4152,22121,4174],{"class":4173},[4152,22123,6047],{"class":4177},[4152,22125,4648],{"class":4181},[4152,22127,3609],{"class":4177},[4152,22129,20677],{"class":4181},[4152,22131,9098],{"class":4177},[4152,22133,4199],{"class":4181},[4152,22135,10861],{"class":4181},[4152,22137,3609],{"class":4177},[4152,22139,9516],{"class":4181},[4152,22141,9110],{"class":4177},[4152,22143,4209],{"class":4173},[4152,22145,4658],{"class":4158},[4152,22147,22148,22150,22152,22154,22156,22158,22160,22162,22164,22166,22168,22170,22172,22174,22176,22178,22180,22182,22184,22186,22188,22190,22192],{"class":4154,"line":8364},[4152,22149,6074],{"class":4158},[4152,22151,4010],{"class":4162},[4152,22153,4166],{"class":4165},[4152,22155,4170],{"class":4169},[4152,22157,4174],{"class":4173},[4152,22159,4178],{"class":4177},[4152,22161,5068],{"class":4181},[4152,22163,10861],{"class":4181},[4152,22165,3609],{"class":4177},[4152,22167,9747],{"class":4181},[4152,22169,3536],{"class":4177},[4152,22171,5060],{"class":4181},[4152,22173,5689],{"class":4202},[4152,22175,3536],{"class":4177},[4152,22177,5052],{"class":4181},[4152,22179,5682],{"class":4185},[4152,22181,4206],{"class":4177},[4152,22183,4209],{"class":4173},[4152,22185,4684],{"class":4158},[4152,22187,20736],{"class":4169},[4152,22189,4690],{"class":4158},[4152,22191,4010],{"class":4162},[4152,22193,4658],{"class":4158},[4152,22195,22196,22198,22200],{"class":4154,"line":8369},[4152,22197,6107],{"class":4158},[4152,22199,3967],{"class":4162},[4152,22201,4658],{"class":4158},[4152,22203,22204,22206,22208,22210,22212,22214,22216,22218,22220,22222,22224,22226,22228,22230,22232,22234,22236,22238,22240,22242,22244],{"class":4154,"line":8386},[4152,22205,4875],{"class":4158},[4152,22207,4010],{"class":4162},[4152,22209,4166],{"class":4165},[4152,22211,4170],{"class":4169},[4152,22213,4174],{"class":4173},[4152,22215,6047],{"class":4177},[4152,22217,4648],{"class":4181},[4152,22219,3609],{"class":4177},[4152,22221,7903],{"class":4181},[4152,22223,9098],{"class":4177},[4152,22225,5068],{"class":4181},[4152,22227,10861],{"class":4181},[4152,22229,3609],{"class":4177},[4152,22231,9670],{"class":4181},[4152,22233,9110],{"class":4177},[4152,22235,4209],{"class":4173},[4152,22237,4684],{"class":4158},[4152,22239,20789],{"class":4169},[4152,22241,4690],{"class":4158},[4152,22243,4010],{"class":4162},[4152,22245,4658],{"class":4158},[4152,22247,22248,22250,22252,22254,22256,22258,22260,22262,22264,22266,22268,22270,22272,22274,22276,22278,22280,22282,22284],{"class":4154,"line":8393},[4152,22249,4875],{"class":4158},[4152,22251,4010],{"class":4162},[4152,22253,4166],{"class":4165},[4152,22255,4170],{"class":4169},[4152,22257,4174],{"class":4173},[4152,22259,4178],{"class":4177},[4152,22261,5068],{"class":4181},[4152,22263,10861],{"class":4181},[4152,22265,3609],{"class":4177},[4152,22267,9693],{"class":4181},[4152,22269,3536],{"class":4177},[4152,22271,6654],{"class":4181},[4152,22273,5777],{"class":4185},[4152,22275,3536],{"class":4177},[4152,22277,5099],{"class":4181},[4152,22279,5055],{"class":4185},[4152,22281,4206],{"class":4177},[4152,22283,4209],{"class":4173},[4152,22285,4658],{"class":4158},[4152,22287,22288],{"class":4154,"line":8402},[4152,22289,20840],{"class":4169},[4152,22291,22292],{"class":4154,"line":8411},[4152,22293,20845],{"class":4169},[4152,22295,22296,22298,22300],{"class":4154,"line":8420},[4152,22297,6107],{"class":4158},[4152,22299,4010],{"class":4162},[4152,22301,4658],{"class":4158},[4152,22303,22304,22306,22308],{"class":4154,"line":8429},[4152,22305,4730],{"class":4158},[4152,22307,3967],{"class":4162},[4152,22309,4658],{"class":4158},[4152,22311,22312,22314,22316],{"class":4154,"line":8438},[4152,22313,4933],{"class":4158},[4152,22315,3967],{"class":4162},[4152,22317,4658],{"class":4158},[4152,22319,22320],{"class":4154,"line":8443},[4152,22321,4943],{"class":4169},[4152,22323,22324],{"class":4154,"line":8456},[4152,22325,4782],{"class":4169},[4152,22327,22328],{"class":4154,"line":8476},[4152,22329,4566],{"emptyLinePlaceholder":4565},[4152,22331,22332,22334,22336,22338,22340,22342,22344],{"class":4154,"line":8506},[4152,22333,4959],{"class":4173},[4152,22335,4831],{"class":4597},[4152,22337,4964],{"class":4169},[4152,22339,3572],{"class":4181},[4152,22341,3609],{"class":4169},[4152,22343,4264],{"class":4581},[4152,22345,4973],{"class":4169},[4152,22347,22348,22350,22352,22354,22356],{"class":4154,"line":8513},[4152,22349,20902],{"class":4181},[4152,22351,4514],{"class":4169},[4152,22353,4182],{"class":4181},[4152,22355,4186],{"class":4185},[4152,22357,5074],{"class":4169},[4152,22359,22360,22362,22364,22366,22368,22370,22372,22374],{"class":4154,"line":8522},[4152,22361,20915],{"class":4181},[4152,22363,4514],{"class":4169},[4152,22365,7217],{"class":4181},[4152,22367,5055],{"class":4185},[4152,22369,3536],{"class":4169},[4152,22371,20926],{"class":4181},[4152,22373,5033],{"class":4185},[4152,22375,5074],{"class":4169},[4152,22377,22378,22380,22382,22384,22386,22388,22390,22392],{"class":4154,"line":8531},[4152,22379,5047],{"class":4181},[4152,22381,4514],{"class":4169},[4152,22383,5052],{"class":4181},[4152,22385,20941],{"class":4185},[4152,22387,3536],{"class":4169},[4152,22389,5060],{"class":4181},[4152,22391,5689],{"class":4202},[4152,22393,5074],{"class":4169},[4152,22395,22396,22398],{"class":4154,"line":8540},[4152,22397,7212],{"class":4181},[4152,22399,4982],{"class":4169},[4152,22401,22402,22404,22406],{"class":4154,"line":8549},[4152,22403,20960],{"class":4181},[4152,22405,12404],{"class":4202},[4152,22407,4819],{"class":4169},[4152,22409,22410,22412,22414],{"class":4154,"line":8558},[4152,22411,5030],{"class":4181},[4152,22413,6439],{"class":4185},[4152,22415,4819],{"class":4169},[4152,22417,22418,22420,22422],{"class":4154,"line":8569},[4152,22419,12427],{"class":4181},[4152,22421,5055],{"class":4185},[4152,22423,4819],{"class":4169},[4152,22425,22426,22428,22430],{"class":4154,"line":8578},[4152,22427,15015],{"class":4181},[4152,22429,5055],{"class":4185},[4152,22431,4819],{"class":4169},[4152,22433,22434],{"class":4154,"line":8583},[4152,22435,5041],{"class":4169},[4152,22437,22438,22440],{"class":4154,"line":8610},[4152,22439,12419],{"class":4181},[4152,22441,4982],{"class":4169},[4152,22443,22444,22446,22448],{"class":4154,"line":8642},[4152,22445,12427],{"class":4181},[4152,22447,4194],{"class":4185},[4152,22449,4819],{"class":4169},[4152,22451,22452,22454,22456],{"class":4154,"line":8674},[4152,22453,5128],{"class":4181},[4152,22455,5033],{"class":4185},[4152,22457,4819],{"class":4169},[4152,22459,22460,22462,22464],{"class":4154,"line":8681},[4152,22461,5139],{"class":4181},[4152,22463,5033],{"class":4185},[4152,22465,4819],{"class":4169},[4152,22467,22468,22470,22472],{"class":4154,"line":8694},[4152,22469,5719],{"class":4181},[4152,22471,4186],{"class":4185},[4152,22473,4819],{"class":4169},[4152,22475,22476],{"class":4154,"line":8704},[4152,22477,5041],{"class":4169},[4152,22479,22480,22482],{"class":4154,"line":8714},[4152,22481,6471],{"class":4181},[4152,22483,4982],{"class":4169},[4152,22485,22486,22488,22490],{"class":4154,"line":8719},[4152,22487,21045],{"class":4181},[4152,22489,5055],{"class":4185},[4152,22491,4819],{"class":4169},[4152,22493,22494,22496,22498],{"class":4154,"line":8738},[4152,22495,15015],{"class":4181},[4152,22497,5011],{"class":4185},[4152,22499,4819],{"class":4169},[4152,22501,22502,22504,22506],{"class":4154,"line":8746},[4152,22503,5008],{"class":4181},[4152,22505,5055],{"class":4185},[4152,22507,4819],{"class":4169},[4152,22509,22510,22512,22514],{"class":4154,"line":8756},[4152,22511,5139],{"class":4181},[4152,22513,4194],{"class":4185},[4152,22515,4819],{"class":4169},[4152,22517,22518,22520,22522],{"class":4154,"line":8765},[4152,22519,5719],{"class":4181},[4152,22521,4186],{"class":4185},[4152,22523,4819],{"class":4169},[4152,22525,22526],{"class":4154,"line":8774},[4152,22527,5041],{"class":4169},[4152,22529,22530,22532],{"class":4154,"line":8779},[4152,22531,21090],{"class":4181},[4152,22533,4982],{"class":4169},[4152,22535,22536,22538,22540],{"class":4154,"line":8805},[4152,22537,21097],{"class":4181},[4152,22539,21100],{"class":4185},[4152,22541,4819],{"class":4169},[4152,22543,22544,22546,22548],{"class":4154,"line":8812},[4152,22545,6478],{"class":4181},[4152,22547,21100],{"class":4185},[4152,22549,4819],{"class":4169},[4152,22551,22552,22554,22556],{"class":4154,"line":8821},[4152,22553,5139],{"class":4181},[4152,22555,20941],{"class":4185},[4152,22557,4819],{"class":4169},[4152,22559,22560,22562,22564],{"class":4154,"line":8830},[4152,22561,5149],{"class":4181},[4152,22563,5022],{"class":4202},[4152,22565,4819],{"class":4169},[4152,22567,22568,22570,22572],{"class":4154,"line":8839},[4152,22569,5019],{"class":4181},[4152,22571,5022],{"class":4202},[4152,22573,4819],{"class":4169},[4152,22575,22576,22578,22580],{"class":4154,"line":8848},[4152,22577,21139],{"class":4181},[4152,22579,5033],{"class":4185},[4152,22581,4819],{"class":4169},[4152,22583,22584],{"class":4154,"line":8853},[4152,22585,5041],{"class":4169},[4152,22587,22588,22590,22592,22594,22596,22598,22600,22602],{"class":4154,"line":8866},[4152,22589,8613],{"class":4181},[4152,22591,4514],{"class":4169},[4152,22593,5052],{"class":4181},[4152,22595,5055],{"class":4185},[4152,22597,3536],{"class":4169},[4152,22599,5060],{"class":4181},[4152,22601,5063],{"class":4202},[4152,22603,5074],{"class":4169},[4152,22605,22606],{"class":4154,"line":8879},[4152,22607,5222],{"class":4169},[3790,22609],{},[3507,22611,22613],{"id":22612},"nomad-light-dark-семантичні-токени","Nomad: light \u002F dark + семантичні токени",[3512,22615,22616],{},[3515,22617],{"alt":22618,"className":22619,"src":22620},"Чіпи теми на home Nomad",[3519],"\u002Fimages\u002Freact-native\u002Fstylesheet-and-theming\u002F04.svg",[3589,22622,22624],{"id":22623},"навіщо-користувачу","Навіщо користувачу",[3512,22626,22627,22628,22631],{},"У метро ввечері білий екран сліпить. Nomad має слідувати системі або примусовій light\u002Fdark і малювати UI з ",[3525,22629,22630],{},"однієї"," семантичної палітри.",[3589,22633,22635],{"id":22634},"нитка-проєкту","Нитка проєкту",[3512,22637,22638,22641,22642,22645],{},[3525,22639,22640],{},"Уже є"," (з попередніх статей — ",[3525,22643,22644],{},"не викидаємо","):",[3973,22647,22648,22651],{},[3564,22649,22650],{},"Shell home: header + ScrollView зі стрічкою + sticky «Нова поїздка» (07).",[3564,22652,22653,22654,22656,22657,22659],{},"Кольори з ",[3525,22655,22630],{}," світлої палітри в ",[3533,22658,3551],{}," (темна тема ще не працювала).",[3512,22661,22662],{},[3525,22663,22664],{},"Додаємо в цій статті:",[3973,22666,22667,22677,22692,22699],{},[3564,22668,22669,22672,22673,3751,22675,3609],{},[3533,22670,22671],{},"colors.ts"," — light\u002Fdark палітри; ",[3533,22674,3750],{},[3533,22676,3754],{},[3564,22678,22679,22680,3536,22682,3536,22684,3632,22686,22688,22689,22691],{},"Примітиви (",[3533,22681,15186],{},[3533,22683,12730],{},[3533,22685,15181],{},[3533,22687,9511],{}," читають ",[3533,22690,13710],{}," з теми.",[3564,22693,22694,22695,22698],{},"На home — ",[3525,22696,22697],{},"чіпи"," Система \u002F Світла \u002F Темна (лишаються в шапці).",[3564,22700,22701,22703,22704,3609],{},[3533,22702,3956],{}," підлаштовується під scheme у ",[3533,22705,22706],{},"_layout",[3589,22708,22710],{"id":22709},"повний-знімок-проєкту-після-цієї-статті","Повний знімок проєкту після цієї статті",[4047,22712,22713,19484,22716,22722,22723,22726,22727,22730],{},[3525,22714,22715],{},"Готовий код 1:1",[22717,22718,3758],"a",{"href":22719,"rel":22720},"https:\u002F\u002Fgithub.com\u002Farakviel\u002Fnomad",[22721],"nofollow",". Найшвидший шлях: ",[3533,22724,22725],{},"git pull"," у клоні репо. Нижче — ",[3525,22728,22729],{},"весь"," проєкт на момент цієї статті (усі файли з кодом), не фрагмент «лише нові папки». Клік по файлу в дереві → повний вміст для копіпасту.",[4143,22732,22734],{"className":19695,"code":22733,"language":19697,"meta":4148,"style":4148},"cd \u002Fpath\u002Fto\u002Fnomad\ngit pull\nnpm install\nnpx expo start\n",[3533,22735,22736,22743,22751,22759],{"__ignoreMap":4148},[4152,22737,22738,22740],{"class":4154,"line":4155},[4152,22739,19721],{"class":4581},[4152,22741,22742],{"class":4202}," \u002Fpath\u002Fto\u002Fnomad\n",[4152,22744,22745,22748],{"class":4154,"line":4532},[4152,22746,22747],{"class":4581},"git",[4152,22749,22750],{"class":4202}," pull\n",[4152,22752,22753,22756],{"class":4154,"line":4562},[4152,22754,22755],{"class":4581},"npm",[4152,22757,22758],{"class":4202}," install\n",[4152,22760,22761,22763,22765],{"class":4154,"line":4569},[4152,22762,19704],{"class":4581},[4152,22764,19731],{"class":4202},[4152,22766,19734],{"class":4202},[22768,22769,22770,23041,23321,23423,23677,25718,25778,25992,26067,27217,28088,28424,28561,28937,29534,30096,30394],"code-tree",{},[4143,22771,22776],{"className":22772,"code":22773,"filename":22774,"language":22775,"meta":4148,"style":4148},"language-json shiki shiki-themes light-plus dark-plus dark-plus","{\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\": \"~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-native\": \"0.81.5\",\n    \"react-native-safe-area-context\": \"~5.6.0\",\n    \"react-native-screens\": \"~4.16.0\"\n  },\n  \"devDependencies\": {\n    \"@types\u002Freact\": \"~19.1.0\",\n    \"typescript\": \"~5.9.2\"\n  },\n  \"private\": true\n}\n","package.json","json",[3533,22777,22778,22782,22795,22807,22819,22827,22839,22851,22863,22873,22877,22884,22896,22908,22920,22932,22944,22956,22968,22980,22990,22994,23001,23013,23023,23027,23037],{"__ignoreMap":4148},[4152,22779,22780],{"class":4154,"line":4155},[4152,22781,6224],{"class":4169},[4152,22783,22784,22788,22790,22793],{"class":4154,"line":4532},[4152,22785,22787],{"class":22786},"sLwNe","  \"name\"",[4152,22789,13648],{"class":4169},[4152,22791,22792],{"class":4202},"\"nomad\"",[4152,22794,4819],{"class":4169},[4152,22796,22797,22800,22802,22805],{"class":4154,"line":4562},[4152,22798,22799],{"class":22786},"  \"version\"",[4152,22801,13648],{"class":4169},[4152,22803,22804],{"class":4202},"\"1.0.0\"",[4152,22806,4819],{"class":4169},[4152,22808,22809,22812,22814,22817],{"class":4154,"line":4569},[4152,22810,22811],{"class":22786},"  \"main\"",[4152,22813,13648],{"class":4169},[4152,22815,22816],{"class":4202},"\"expo-router\u002Fentry\"",[4152,22818,4819],{"class":4169},[4152,22820,22821,22824],{"class":4154,"line":4588},[4152,22822,22823],{"class":22786},"  \"scripts\"",[4152,22825,22826],{"class":4169},": {\n",[4152,22828,22829,22832,22834,22837],{"class":4154,"line":4620},[4152,22830,22831],{"class":22786},"    \"start\"",[4152,22833,13648],{"class":4169},[4152,22835,22836],{"class":4202},"\"expo start\"",[4152,22838,4819],{"class":4169},[4152,22840,22841,22844,22846,22849],{"class":4154,"line":4625},[4152,22842,22843],{"class":22786},"    \"android\"",[4152,22845,13648],{"class":4169},[4152,22847,22848],{"class":4202},"\"expo start --android\"",[4152,22850,4819],{"class":4169},[4152,22852,22853,22856,22858,22861],{"class":4154,"line":4634},[4152,22854,22855],{"class":22786},"    \"ios\"",[4152,22857,13648],{"class":4169},[4152,22859,22860],{"class":4202},"\"expo start --ios\"",[4152,22862,4819],{"class":4169},[4152,22864,22865,22868,22870],{"class":4154,"line":4661},[4152,22866,22867],{"class":22786},"    \"web\"",[4152,22869,13648],{"class":4169},[4152,22871,22872],{"class":4202},"\"expo start --web\"\n",[4152,22874,22875],{"class":4154,"line":4697},[4152,22876,5041],{"class":4169},[4152,22878,22879,22882],{"class":4154,"line":4721},[4152,22880,22881],{"class":22786},"  \"dependencies\"",[4152,22883,22826],{"class":4169},[4152,22885,22886,22889,22891,22894],{"class":4154,"line":4727},[4152,22887,22888],{"class":22786},"    \"expo\"",[4152,22890,13648],{"class":4169},[4152,22892,22893],{"class":4202},"\"~54.0.35\"",[4152,22895,4819],{"class":4169},[4152,22897,22898,22901,22903,22906],{"class":4154,"line":4737},[4152,22899,22900],{"class":22786},"    \"expo-constants\"",[4152,22902,13648],{"class":4169},[4152,22904,22905],{"class":4202},"\"~18.0.13\"",[4152,22907,4819],{"class":4169},[4152,22909,22910,22913,22915,22918],{"class":4154,"line":4745},[4152,22911,22912],{"class":22786},"    \"expo-linking\"",[4152,22914,13648],{"class":4169},[4152,22916,22917],{"class":4202},"\"~8.0.12\"",[4152,22919,4819],{"class":4169},[4152,22921,22922,22925,22927,22930],{"class":4154,"line":4785},[4152,22923,22924],{"class":22786},"    \"expo-router\"",[4152,22926,13648],{"class":4169},[4152,22928,22929],{"class":4202},"\"~6.0.24\"",[4152,22931,4819],{"class":4169},[4152,22933,22934,22937,22939,22942],{"class":4154,"line":4808},[4152,22935,22936],{"class":22786},"    \"expo-status-bar\"",[4152,22938,13648],{"class":4169},[4152,22940,22941],{"class":4202},"\"~3.0.9\"",[4152,22943,4819],{"class":4169},[4152,22945,22946,22949,22951,22954],{"class":4154,"line":4822},[4152,22947,22948],{"class":22786},"    \"react\"",[4152,22950,13648],{"class":4169},[4152,22952,22953],{"class":4202},"\"19.1.0\"",[4152,22955,4819],{"class":4169},[4152,22957,22958,22961,22963,22966],{"class":4154,"line":4841},[4152,22959,22960],{"class":22786},"    \"react-native\"",[4152,22962,13648],{"class":4169},[4152,22964,22965],{"class":4202},"\"0.81.5\"",[4152,22967,4819],{"class":4169},[4152,22969,22970,22973,22975,22978],{"class":4154,"line":4858},[4152,22971,22972],{"class":22786},"    \"react-native-safe-area-context\"",[4152,22974,13648],{"class":4169},[4152,22976,22977],{"class":4202},"\"~5.6.0\"",[4152,22979,4819],{"class":4169},[4152,22981,22982,22985,22987],{"class":4154,"line":4866},[4152,22983,22984],{"class":22786},"    \"react-native-screens\"",[4152,22986,13648],{"class":4169},[4152,22988,22989],{"class":4202},"\"~4.16.0\"\n",[4152,22991,22992],{"class":4154,"line":4872},[4152,22993,5041],{"class":4169},[4152,22995,22996,22999],{"class":4154,"line":4921},[4152,22997,22998],{"class":22786},"  \"devDependencies\"",[4152,23000,22826],{"class":4169},[4152,23002,23003,23006,23008,23011],{"class":4154,"line":4930},[4152,23004,23005],{"class":22786},"    \"@types\u002Freact\"",[4152,23007,13648],{"class":4169},[4152,23009,23010],{"class":4202},"\"~19.1.0\"",[4152,23012,4819],{"class":4169},[4152,23014,23015,23018,23020],{"class":4154,"line":4940},[4152,23016,23017],{"class":22786},"    \"typescript\"",[4152,23019,13648],{"class":4169},[4152,23021,23022],{"class":4202},"\"~5.9.2\"\n",[4152,23024,23025],{"class":4154,"line":4946},[4152,23026,5041],{"class":4169},[4152,23028,23029,23032,23034],{"class":4154,"line":4951},[4152,23030,23031],{"class":22786},"  \"private\"",[4152,23033,13648],{"class":4169},[4152,23035,23036],{"class":4173},"true\n",[4152,23038,23039],{"class":4154,"line":4956},[4152,23040,4782],{"class":4169},[4143,23042,23045],{"className":22772,"code":23043,"filename":23044,"language":22775,"meta":4148,"style":4148},"{\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\": [\"expo-router\"]\n  }\n}\n","app.json",[3533,23046,23047,23051,23058,23070,23081,23092,23104,23116,23128,23139,23151,23158,23170,23182,23192,23196,23202,23211,23215,23221,23228,23240,23249,23254,23265,23275,23279,23285,23295,23299,23313,23317],{"__ignoreMap":4148},[4152,23048,23049],{"class":4154,"line":4155},[4152,23050,6224],{"class":4169},[4152,23052,23053,23056],{"class":4154,"line":4532},[4152,23054,23055],{"class":22786},"  \"expo\"",[4152,23057,22826],{"class":4169},[4152,23059,23060,23063,23065,23068],{"class":4154,"line":4562},[4152,23061,23062],{"class":22786},"    \"name\"",[4152,23064,13648],{"class":4169},[4152,23066,23067],{"class":4202},"\"Nomad\"",[4152,23069,4819],{"class":4169},[4152,23071,23072,23075,23077,23079],{"class":4154,"line":4569},[4152,23073,23074],{"class":22786},"    \"slug\"",[4152,23076,13648],{"class":4169},[4152,23078,22792],{"class":4202},[4152,23080,4819],{"class":4169},[4152,23082,23083,23086,23088,23090],{"class":4154,"line":4588},[4152,23084,23085],{"class":22786},"    \"version\"",[4152,23087,13648],{"class":4169},[4152,23089,22804],{"class":4202},[4152,23091,4819],{"class":4169},[4152,23093,23094,23097,23099,23102],{"class":4154,"line":4620},[4152,23095,23096],{"class":22786},"    \"orientation\"",[4152,23098,13648],{"class":4169},[4152,23100,23101],{"class":4202},"\"portrait\"",[4152,23103,4819],{"class":4169},[4152,23105,23106,23109,23111,23114],{"class":4154,"line":4625},[4152,23107,23108],{"class":22786},"    \"icon\"",[4152,23110,13648],{"class":4169},[4152,23112,23113],{"class":4202},"\".\u002Fassets\u002Ficon.png\"",[4152,23115,4819],{"class":4169},[4152,23117,23118,23121,23123,23126],{"class":4154,"line":4634},[4152,23119,23120],{"class":22786},"    \"userInterfaceStyle\"",[4152,23122,13648],{"class":4169},[4152,23124,23125],{"class":4202},"\"light\"",[4152,23127,4819],{"class":4169},[4152,23129,23130,23133,23135,23137],{"class":4154,"line":4661},[4152,23131,23132],{"class":22786},"    \"scheme\"",[4152,23134,13648],{"class":4169},[4152,23136,22792],{"class":4202},[4152,23138,4819],{"class":4169},[4152,23140,23141,23144,23146,23149],{"class":4154,"line":4697},[4152,23142,23143],{"class":22786},"    \"newArchEnabled\"",[4152,23145,13648],{"class":4169},[4152,23147,23148],{"class":4173},"true",[4152,23150,4819],{"class":4169},[4152,23152,23153,23156],{"class":4154,"line":4721},[4152,23154,23155],{"class":22786},"    \"splash\"",[4152,23157,22826],{"class":4169},[4152,23159,23160,23163,23165,23168],{"class":4154,"line":4727},[4152,23161,23162],{"class":22786},"      \"image\"",[4152,23164,13648],{"class":4169},[4152,23166,23167],{"class":4202},"\".\u002Fassets\u002Fsplash-icon.png\"",[4152,23169,4819],{"class":4169},[4152,23171,23172,23175,23177,23180],{"class":4154,"line":4737},[4152,23173,23174],{"class":22786},"      \"resizeMode\"",[4152,23176,13648],{"class":4169},[4152,23178,23179],{"class":4202},"\"contain\"",[4152,23181,4819],{"class":4169},[4152,23183,23184,23187,23189],{"class":4154,"line":4745},[4152,23185,23186],{"class":22786},"      \"backgroundColor\"",[4152,23188,13648],{"class":4169},[4152,23190,23191],{"class":4202},"\"#ffffff\"\n",[4152,23193,23194],{"class":4154,"line":4785},[4152,23195,17178],{"class":4169},[4152,23197,23198,23200],{"class":4154,"line":4808},[4152,23199,22855],{"class":22786},[4152,23201,22826],{"class":4169},[4152,23203,23204,23207,23209],{"class":4154,"line":4822},[4152,23205,23206],{"class":22786},"      \"supportsTablet\"",[4152,23208,13648],{"class":4169},[4152,23210,23036],{"class":4173},[4152,23212,23213],{"class":4154,"line":4841},[4152,23214,17178],{"class":4169},[4152,23216,23217,23219],{"class":4154,"line":4858},[4152,23218,22843],{"class":22786},[4152,23220,22826],{"class":4169},[4152,23222,23223,23226],{"class":4154,"line":4866},[4152,23224,23225],{"class":22786},"      \"adaptiveIcon\"",[4152,23227,22826],{"class":4169},[4152,23229,23230,23233,23235,23238],{"class":4154,"line":4872},[4152,23231,23232],{"class":22786},"        \"foregroundImage\"",[4152,23234,13648],{"class":4169},[4152,23236,23237],{"class":4202},"\".\u002Fassets\u002Fadaptive-icon.png\"",[4152,23239,4819],{"class":4169},[4152,23241,23242,23245,23247],{"class":4154,"line":4921},[4152,23243,23244],{"class":22786},"        \"backgroundColor\"",[4152,23246,13648],{"class":4169},[4152,23248,23191],{"class":4202},[4152,23250,23251],{"class":4154,"line":4930},[4152,23252,23253],{"class":4169},"      },\n",[4152,23255,23256,23259,23261,23263],{"class":4154,"line":4940},[4152,23257,23258],{"class":22786},"      \"edgeToEdgeEnabled\"",[4152,23260,13648],{"class":4169},[4152,23262,23148],{"class":4173},[4152,23264,4819],{"class":4169},[4152,23266,23267,23270,23272],{"class":4154,"line":4946},[4152,23268,23269],{"class":22786},"      \"predictiveBackGestureEnabled\"",[4152,23271,13648],{"class":4169},[4152,23273,23274],{"class":4173},"false\n",[4152,23276,23277],{"class":4154,"line":4951},[4152,23278,17178],{"class":4169},[4152,23280,23281,23283],{"class":4154,"line":4956},[4152,23282,22867],{"class":22786},[4152,23284,22826],{"class":4169},[4152,23286,23287,23290,23292],{"class":4154,"line":4976},[4152,23288,23289],{"class":22786},"      \"favicon\"",[4152,23291,13648],{"class":4169},[4152,23293,23294],{"class":4202},"\".\u002Fassets\u002Ffavicon.png\"\n",[4152,23296,23297],{"class":4154,"line":4985},[4152,23298,17178],{"class":4169},[4152,23300,23301,23304,23307,23310],{"class":4154,"line":4995},[4152,23302,23303],{"class":22786},"    \"plugins\"",[4152,23305,23306],{"class":4169},": [",[4152,23308,23309],{"class":4202},"\"expo-router\"",[4152,23311,23312],{"class":4169},"]\n",[4152,23314,23315],{"class":4154,"line":5005},[4152,23316,15718],{"class":4169},[4152,23318,23319],{"class":4154,"line":5016},[4152,23320,4782],{"class":4169},[4143,23322,23325],{"className":22772,"code":23323,"filename":23324,"language":22775,"meta":4148,"style":4148},"{\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",[3533,23326,23327,23331,23343,23350,23361,23368,23376,23381,23386,23391,23395,23402,23409,23414,23419],{"__ignoreMap":4148},[4152,23328,23329],{"class":4154,"line":4155},[4152,23330,6224],{"class":4169},[4152,23332,23333,23336,23338,23341],{"class":4154,"line":4532},[4152,23334,23335],{"class":22786},"  \"extends\"",[4152,23337,13648],{"class":4169},[4152,23339,23340],{"class":4202},"\"expo\u002Ftsconfig.base\"",[4152,23342,4819],{"class":4169},[4152,23344,23345,23348],{"class":4154,"line":4562},[4152,23346,23347],{"class":22786},"  \"compilerOptions\"",[4152,23349,22826],{"class":4169},[4152,23351,23352,23355,23357,23359],{"class":4154,"line":4569},[4152,23353,23354],{"class":22786},"    \"strict\"",[4152,23356,13648],{"class":4169},[4152,23358,23148],{"class":4173},[4152,23360,4819],{"class":4169},[4152,23362,23363,23366],{"class":4154,"line":4588},[4152,23364,23365],{"class":22786},"    \"paths\"",[4152,23367,22826],{"class":4169},[4152,23369,23370,23373],{"class":4154,"line":4620},[4152,23371,23372],{"class":22786},"      \"@\u002F*\"",[4152,23374,23375],{"class":4169},": [\n",[4152,23377,23378],{"class":4154,"line":4625},[4152,23379,23380],{"class":4202},"        \".\u002Fsrc\u002F*\"\n",[4152,23382,23383],{"class":4154,"line":4634},[4152,23384,23385],{"class":4169},"      ]\n",[4152,23387,23388],{"class":4154,"line":4661},[4152,23389,23390],{"class":4169},"    }\n",[4152,23392,23393],{"class":4154,"line":4697},[4152,23394,5041],{"class":4169},[4152,23396,23397,23400],{"class":4154,"line":4721},[4152,23398,23399],{"class":22786},"  \"include\"",[4152,23401,23375],{"class":4169},[4152,23403,23404,23407],{"class":4154,"line":4727},[4152,23405,23406],{"class":4202},"    \"**\u002F*.ts\"",[4152,23408,4819],{"class":4169},[4152,23410,23411],{"class":4154,"line":4737},[4152,23412,23413],{"class":4202},"    \"**\u002F*.tsx\"\n",[4152,23415,23416],{"class":4154,"line":4745},[4152,23417,23418],{"class":4169},"  ]\n",[4152,23420,23421],{"class":4154,"line":4785},[4152,23422,4782],{"class":4169},[4143,23424,23426],{"className":4145,"code":23425,"filename":16622,"language":4147,"meta":4148,"style":4148},"import { Stack } from 'expo-router';\nimport { StatusBar } from 'expo-status-bar';\n\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          headerShown: false,\n          contentStyle: { backgroundColor: colors.background },\n        }}\n      \u002F>\n    \u003C\u002F>\n  );\n}\n\nexport default function RootLayout() {\n  return (\n    \u003CThemeProvider>\n      \u003CRootNavigator \u002F>\n    \u003C\u002FThemeProvider>\n  );\n}\n",[3533,23427,23428,23445,23461,23465,23485,23489,23497,23515,23519,23525,23529,23559,23565,23575,23585,23601,23607,23611,23615,23619,23623,23627,23639,23645,23653,23661,23669,23673],{"__ignoreMap":4148},[4152,23429,23430,23432,23434,23436,23438,23440,23443],{"class":4154,"line":4155},[4152,23431,4511],{"class":4510},[4152,23433,4514],{"class":4169},[4152,23435,16696],{"class":4181},[4152,23437,4520],{"class":4169},[4152,23439,4523],{"class":4510},[4152,23441,23442],{"class":4202}," 'expo-router'",[4152,23444,4529],{"class":4169},[4152,23446,23447,23449,23451,23453,23455,23457,23459],{"class":4154,"line":4532},[4152,23448,4511],{"class":4510},[4152,23450,4514],{"class":4169},[4152,23452,3956],{"class":4181},[4152,23454,4520],{"class":4169},[4152,23456,4523],{"class":4510},[4152,23458,19382],{"class":4202},[4152,23460,4529],{"class":4169},[4152,23462,23463],{"class":4154,"line":4562},[4152,23464,4566],{"emptyLinePlaceholder":4565},[4152,23466,23467,23469,23471,23473,23475,23477,23479,23481,23483],{"class":4154,"line":4569},[4152,23468,4511],{"class":4510},[4152,23470,4514],{"class":4169},[4152,23472,3750],{"class":4181},[4152,23474,3536],{"class":4169},[4152,23476,3754],{"class":4181},[4152,23478,4520],{"class":4169},[4152,23480,4523],{"class":4510},[4152,23482,19399],{"class":4202},[4152,23484,4529],{"class":4169},[4152,23486,23487],{"class":4154,"line":4588},[4152,23488,4566],{"emptyLinePlaceholder":4565},[4152,23490,23491,23493,23495],{"class":4154,"line":4620},[4152,23492,9295],{"class":4173},[4152,23494,16809],{"class":4581},[4152,23496,4585],{"class":4169},[4152,23498,23499,23501,23503,23505,23507,23509,23511,23513],{"class":4154,"line":4625},[4152,23500,4591],{"class":4173},[4152,23502,4514],{"class":4169},[4152,23504,9898],{"class":4597},[4152,23506,3536],{"class":4169},[4152,23508,12929],{"class":4597},[4152,23510,16593],{"class":4169},[4152,23512,3754],{"class":4581},[4152,23514,12917],{"class":4169},[4152,23516,23517],{"class":4154,"line":4634},[4152,23518,4566],{"emptyLinePlaceholder":4565},[4152,23520,23521,23523],{"class":4154,"line":4661},[4152,23522,4628],{"class":4510},[4152,23524,4631],{"class":4169},[4152,23526,23527],{"class":4154,"line":4697},[4152,23528,16840],{"class":4158},[4152,23530,23531,23533,23535,23537,23539,23541,23543,23545,23547,23549,23551,23553,23555,23557],{"class":4154,"line":4721},[4152,23532,4664],{"class":4158},[4152,23534,3956],{"class":4162},[4152,23536,4166],{"class":4165},[4152,23538,4170],{"class":4169},[4152,23540,4174],{"class":4173},[4152,23542,12929],{"class":4181},[4152,23544,11063],{"class":4169},[4152,23546,14404],{"class":4202},[4152,23548,4901],{"class":4169},[4152,23550,11287],{"class":4202},[4152,23552,4907],{"class":4169},[4152,23554,14404],{"class":4202},[4152,23556,4209],{"class":4173},[4152,23558,4212],{"class":4158},[4152,23560,23561,23563],{"class":4154,"line":4727},[4152,23562,4664],{"class":4158},[4152,23564,16877],{"class":4162},[4152,23566,23567,23569,23571,23573],{"class":4154,"line":4737},[4152,23568,16882],{"class":4165},[4152,23570,4170],{"class":4169},[4152,23572,4174],{"class":4173},[4152,23574,6224],{"class":4177},[4152,23576,23577,23580,23583],{"class":4154,"line":4745},[4152,23578,23579],{"class":4181},"          headerShown:",[4152,23581,23582],{"class":4173}," false",[4152,23584,4819],{"class":4177},[4152,23586,23587,23589,23591,23593,23595,23597,23599],{"class":4154,"line":4785},[4152,23588,16893],{"class":4181},[4152,23590,4514],{"class":4177},[4152,23592,4199],{"class":4181},[4152,23594,9103],{"class":4181},[4152,23596,3609],{"class":4177},[4152,23598,9618],{"class":4181},[4152,23600,5074],{"class":4177},[4152,23602,23603,23605],{"class":4154,"line":4808},[4152,23604,16910],{"class":4177},[4152,23606,4782],{"class":4173},[4152,23608,23609],{"class":4154,"line":4822},[4152,23610,16917],{"class":4158},[4152,23612,23613],{"class":4154,"line":4841},[4152,23614,16922],{"class":4158},[4152,23616,23617],{"class":4154,"line":4858},[4152,23618,4943],{"class":4169},[4152,23620,23621],{"class":4154,"line":4866},[4152,23622,4782],{"class":4169},[4152,23624,23625],{"class":4154,"line":4872},[4152,23626,4566],{"emptyLinePlaceholder":4565},[4152,23628,23629,23631,23633,23635,23637],{"class":4154,"line":4921},[4152,23630,4572],{"class":4510},[4152,23632,4575],{"class":4510},[4152,23634,4578],{"class":4173},[4152,23636,16655],{"class":4581},[4152,23638,4585],{"class":4169},[4152,23640,23641,23643],{"class":4154,"line":4930},[4152,23642,4628],{"class":4510},[4152,23644,4631],{"class":4169},[4152,23646,23647,23649,23651],{"class":4154,"line":4940},[4152,23648,4637],{"class":4158},[4152,23650,3750],{"class":4162},[4152,23652,4658],{"class":4158},[4152,23654,23655,23657,23659],{"class":4154,"line":4946},[4152,23656,4664],{"class":4158},[4152,23658,16775],{"class":4162},[4152,23660,4212],{"class":4158},[4152,23662,23663,23665,23667],{"class":4154,"line":4951},[4152,23664,4933],{"class":4158},[4152,23666,3750],{"class":4162},[4152,23668,4658],{"class":4158},[4152,23670,23671],{"class":4154,"line":4956},[4152,23672,4943],{"class":4169},[4152,23674,23675],{"class":4154,"line":4976},[4152,23676,4782],{"class":4169},[4143,23678,23681],{"className":4145,"code":23679,"filename":23680,"language":4147,"meta":4148,"style":4148},"import { Pressable, ScrollView, StyleSheet, View } from 'react-native';\n\nimport { mockTrips, TripCard, type Trip } 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 { colors, spacing, preference, setPreference, scheme } = useTheme();\n\n  const handleOpenTrip = (trip: Trip) => {\n    console.log('TODO: відкрити поїздку', trip.id, trip.title);\n  };\n\n  const hasTrips = mockTrips.length > 0;\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          {hasTrips ? `${mockTrips.length} поїздки у списку` : 'Список порожній'}\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      {hasTrips ? (\n        \u003CScrollView\n          style={styles.list}\n          contentContainerStyle={{\n            paddingHorizontal: spacing.md,\n            paddingTop: spacing.md,\n            paddingBottom: spacing.md,\n          }}\n          showsVerticalScrollIndicator={false}\n        >\n          \u003CAppText style={{ marginBottom: spacing.sm, fontWeight: '600' }}>\n            Ваші поїздки\n          \u003C\u002FAppText>\n          \u003CView style={{ gap: spacing.md }}>\n            {mockTrips.map((trip) => (\n              \u003CTripCard key={trip.id} trip={trip} onPress={handleOpenTrip} \u002F>\n            ))}\n          \u003C\u002FView>\n        \u003C\u002FScrollView>\n      ) : (\n        \u003CView\n          style={[\n            styles.empty,\n            {\n              paddingHorizontal: 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      \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            console.log('TODO: відкрити створення поїздки');\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  list: {\n    flex: 1,\n  },\n  empty: {\n    flex: 1,\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","app\u002Findex.tsx",[3533,23682,23683,23712,23716,23745,23767,23792,23796,23824,23843,23859,23875,23880,23884,23896,23926,23930,23954,23987,23992,23996,24020,24024,24030,24052,24058,24068,24078,24083,24096,24110,24123,24137,24150,24155,24161,24165,24190,24225,24248,24256,24263,24273,24283,24296,24309,24318,24324,24328,24361,24369,24373,24420,24441,24462,24469,24475,24492,24519,24529,24541,24546,24571,24584,24589,24596,24606,24626,24653,24657,24664,24673,24702,24720,24725,24738,24747,24755,24760,24767,24775,24783,24787,24797,24804,24820,24831,24843,24855,24867,24873,24883,24887,24921,24926,24934,24962,24983,25029,25036,25044,25052,25061,25067,25077,25088,25092,25106,25119,25123,25129,25133,25163,25168,25176,25182,25191,25208,25225,25229,25234,25242,25250,25257,25261,25267,25277,25288,25292,25304,25316,25328,25341,25353,25357,25363,25367,25374,25384,25398,25414,25420,25424,25432,25440,25444,25448,25452,25468,25474,25483,25487,25493,25502,25506,25513,25521,25530,25534,25541,25549,25557,25565,25573,25577,25584,25593,25597,25603,25611,25615,25622,25630,25638,25646,25650,25657,25666,25670,25677,25685,25690,25698,25708,25713],{"__ignoreMap":4148},[4152,23684,23685,23687,23689,23691,23693,23696,23698,23700,23702,23704,23706,23708,23710],{"class":4154,"line":4155},[4152,23686,4511],{"class":4510},[4152,23688,4514],{"class":4169},[4152,23690,4493],{"class":4181},[4152,23692,3536],{"class":4169},[4152,23694,23695],{"class":4181},"ScrollView",[4152,23697,3536],{"class":4169},[4152,23699,3572],{"class":4181},[4152,23701,3536],{"class":4169},[4152,23703,3967],{"class":4181},[4152,23705,4520],{"class":4169},[4152,23707,4523],{"class":4510},[4152,23709,4557],{"class":4202},[4152,23711,4529],{"class":4169},[4152,23713,23714],{"class":4154,"line":4532},[4152,23715,4566],{"emptyLinePlaceholder":4565},[4152,23717,23718,23720,23722,23725,23727,23729,23731,23733,23736,23738,23740,23743],{"class":4154,"line":4562},[4152,23719,4511],{"class":4510},[4152,23721,4514],{"class":4169},[4152,23723,23724],{"class":4181},"mockTrips",[4152,23726,3536],{"class":4169},[4152,23728,9511],{"class":4181},[4152,23730,3536],{"class":4169},[4152,23732,15584],{"class":4510},[4152,23734,23735],{"class":4181}," Trip",[4152,23737,4520],{"class":4169},[4152,23739,4523],{"class":4510},[4152,23741,23742],{"class":4202}," '@\u002Ffeatures\u002Ftrips'",[4152,23744,4529],{"class":4169},[4152,23746,23747,23749,23751,23753,23755,23757,23759,23761,23763,23765],{"class":4154,"line":4569},[4152,23748,4511],{"class":4510},[4152,23750,4514],{"class":4169},[4152,23752,3754],{"class":4181},[4152,23754,3536],{"class":4169},[4152,23756,15584],{"class":4510},[4152,23758,15587],{"class":4181},[4152,23760,4520],{"class":4169},[4152,23762,4523],{"class":4510},[4152,23764,19399],{"class":4202},[4152,23766,4529],{"class":4169},[4152,23768,23769,23771,23773,23775,23777,23779,23781,23783,23785,23787,23790],{"class":4154,"line":4588},[4152,23770,4511],{"class":4510},[4152,23772,4514],{"class":4169},[4152,23774,12730],{"class":4181},[4152,23776,3536],{"class":4169},[4152,23778,15181],{"class":4181},[4152,23780,3536],{"class":4169},[4152,23782,15186],{"class":4181},[4152,23784,4520],{"class":4169},[4152,23786,4523],{"class":4510},[4152,23788,23789],{"class":4202}," '@\u002Fshared\u002Fui'",[4152,23791,4529],{"class":4169},[4152,23793,23794],{"class":4154,"line":4620},[4152,23795,4566],{"emptyLinePlaceholder":4565},[4152,23797,23798,23800,23803,23806,23809,23811,23813,23815,23817,23819,23821],{"class":4154,"line":4625},[4152,23799,4959],{"class":4173},[4152,23801,23802],{"class":4597}," PREFS",[4152,23804,23805],{"class":4169},": { ",[4152,23807,23808],{"class":4181},"id",[4152,23810,13648],{"class":4169},[4152,23812,15643],{"class":4162},[4152,23814,15710],{"class":4169},[4152,23816,5465],{"class":4181},[4152,23818,13648],{"class":4169},[4152,23820,15655],{"class":4162},[4152,23822,23823],{"class":4169}," }[] = [\n",[4152,23825,23826,23829,23832,23834,23836,23839,23841],{"class":4154,"line":4634},[4152,23827,23828],{"class":4169},"  { ",[4152,23830,23831],{"class":4181},"id:",[4152,23833,18620],{"class":4202},[4152,23835,3536],{"class":4169},[4152,23837,23838],{"class":4181},"label:",[4152,23840,18625],{"class":4202},[4152,23842,5074],{"class":4169},[4152,23844,23845,23847,23849,23851,23853,23855,23857],{"class":4154,"line":4661},[4152,23846,23828],{"class":4169},[4152,23848,23831],{"class":4181},[4152,23850,11287],{"class":4202},[4152,23852,3536],{"class":4169},[4152,23854,23838],{"class":4181},[4152,23856,11292],{"class":4202},[4152,23858,5074],{"class":4169},[4152,23860,23861,23863,23865,23867,23869,23871,23873],{"class":4154,"line":4697},[4152,23862,23828],{"class":4169},[4152,23864,23831],{"class":4181},[4152,23866,14404],{"class":4202},[4152,23868,3536],{"class":4169},[4152,23870,23838],{"class":4181},[4152,23872,11297],{"class":4202},[4152,23874,5074],{"class":4169},[4152,23876,23877],{"class":4154,"line":4721},[4152,23878,23879],{"class":4169},"];\n",[4152,23881,23882],{"class":4154,"line":4727},[4152,23883,4566],{"emptyLinePlaceholder":4565},[4152,23885,23886,23888,23890,23892,23894],{"class":4154,"line":4737},[4152,23887,4572],{"class":4510},[4152,23889,4575],{"class":4510},[4152,23891,4578],{"class":4173},[4152,23893,18162],{"class":4581},[4152,23895,4585],{"class":4169},[4152,23897,23898,23900,23902,23904,23906,23908,23910,23912,23914,23916,23918,23920,23922,23924],{"class":4154,"line":4745},[4152,23899,4591],{"class":4173},[4152,23901,4514],{"class":4169},[4152,23903,9898],{"class":4597},[4152,23905,3536],{"class":4169},[4152,23907,12680],{"class":4597},[4152,23909,3536],{"class":4169},[4152,23911,13359],{"class":4597},[4152,23913,3536],{"class":4169},[4152,23915,16330],{"class":4597},[4152,23917,3536],{"class":4169},[4152,23919,12929],{"class":4597},[4152,23921,16593],{"class":4169},[4152,23923,3754],{"class":4581},[4152,23925,12917],{"class":4169},[4152,23927,23928],{"class":4154,"line":4785},[4152,23929,4566],{"emptyLinePlaceholder":4565},[4152,23931,23932,23934,23937,23940,23943,23945,23948,23950,23952],{"class":4154,"line":4808},[4152,23933,4591],{"class":4173},[4152,23935,23936],{"class":4581}," handleOpenTrip",[4152,23938,23939],{"class":4169}," = (",[4152,23941,23942],{"class":4181},"trip",[4152,23944,13648],{"class":4169},[4152,23946,23947],{"class":4162},"Trip",[4152,23949,4770],{"class":4169},[4152,23951,4758],{"class":4173},[4152,23953,4982],{"class":4169},[4152,23955,23956,23959,23961,23964,23966,23969,23971,23973,23975,23977,23979,23981,23983,23985],{"class":4154,"line":4822},[4152,23957,23958],{"class":4181},"    console",[4152,23960,3609],{"class":4169},[4152,23962,23963],{"class":4581},"log",[4152,23965,4611],{"class":4169},[4152,23967,23968],{"class":4202},"'TODO: відкрити поїздку'",[4152,23970,3536],{"class":4169},[4152,23972,23942],{"class":4181},[4152,23974,3609],{"class":4169},[4152,23976,23808],{"class":4181},[4152,23978,3536],{"class":4169},[4152,23980,23942],{"class":4181},[4152,23982,3609],{"class":4169},[4152,23984,4679],{"class":4181},[4152,23986,4617],{"class":4169},[4152,23988,23989],{"class":4154,"line":4841},[4152,23990,23991],{"class":4169},"  };\n",[4152,23993,23994],{"class":4154,"line":4858},[4152,23995,4566],{"emptyLinePlaceholder":4565},[4152,23997,23998,24000,24003,24005,24007,24009,24012,24015,24018],{"class":4154,"line":4866},[4152,23999,4591],{"class":4173},[4152,24001,24002],{"class":4597}," hasTrips",[4152,24004,4964],{"class":4169},[4152,24006,23724],{"class":4181},[4152,24008,3609],{"class":4169},[4152,24010,24011],{"class":4181},"length",[4152,24013,24014],{"class":4169}," > ",[4152,24016,24017],{"class":4185},"0",[4152,24019,4529],{"class":4169},[4152,24021,24022],{"class":4154,"line":4872},[4152,24023,4566],{"emptyLinePlaceholder":4565},[4152,24025,24026,24028],{"class":4154,"line":4921},[4152,24027,4628],{"class":4510},[4152,24029,4631],{"class":4169},[4152,24031,24032,24034,24036,24038,24040,24042,24044,24046,24048,24050],{"class":4154,"line":4930},[4152,24033,4637],{"class":4158},[4152,24035,15186],{"class":4162},[4152,24037,4166],{"class":4165},[4152,24039,4170],{"class":4169},[4152,24041,4174],{"class":4173},[4152,24043,4648],{"class":4181},[4152,24045,3609],{"class":4177},[4152,24047,4653],{"class":4181},[4152,24049,4209],{"class":4173},[4152,24051,4658],{"class":4158},[4152,24053,24054,24056],{"class":4154,"line":4940},[4152,24055,4664],{"class":4158},[4152,24057,6212],{"class":4162},[4152,24059,24060,24062,24064,24066],{"class":4154,"line":4946},[4152,24061,4788],{"class":4165},[4152,24063,4170],{"class":4169},[4152,24065,4174],{"class":4173},[4152,24067,9163],{"class":4177},[4152,24069,24070,24072,24074,24076],{"class":4154,"line":4951},[4152,24071,4811],{"class":4181},[4152,24073,3609],{"class":4177},[4152,24075,20159],{"class":4181},[4152,24077,4819],{"class":4177},[4152,24079,24080],{"class":4154,"line":4956},[4152,24081,24082],{"class":4177},"          {\n",[4152,24084,24085,24088,24090,24092,24094],{"class":4154,"line":4976},[4152,24086,24087],{"class":4181},"            paddingHorizontal:",[4152,24089,17161],{"class":4181},[4152,24091,3609],{"class":4177},[4152,24093,17167],{"class":4181},[4152,24095,4819],{"class":4177},[4152,24097,24098,24101,24103,24105,24108],{"class":4154,"line":4985},[4152,24099,24100],{"class":4181},"            paddingTop:",[4152,24102,17161],{"class":4181},[4152,24104,3609],{"class":4177},[4152,24106,24107],{"class":4181},"sm",[4152,24109,4819],{"class":4177},[4152,24111,24112,24115,24117,24119,24121],{"class":4154,"line":4995},[4152,24113,24114],{"class":4181},"            paddingBottom:",[4152,24116,17161],{"class":4181},[4152,24118,3609],{"class":4177},[4152,24120,17167],{"class":4181},[4152,24122,4819],{"class":4177},[4152,24124,24125,24128,24130,24132,24135],{"class":4154,"line":5005},[4152,24126,24127],{"class":4181},"            gap:",[4152,24129,17161],{"class":4181},[4152,24131,3609],{"class":4177},[4152,24133,24134],{"class":4181},"xs",[4152,24136,4819],{"class":4177},[4152,24138,24139,24142,24144,24146,24148],{"class":4154,"line":5016},[4152,24140,24141],{"class":4181},"            borderBottomColor:",[4152,24143,9103],{"class":4181},[4152,24145,3609],{"class":4177},[4152,24147,9769],{"class":4181},[4152,24149,4819],{"class":4177},[4152,24151,24152],{"class":4154,"line":5027},[4152,24153,24154],{"class":4177},"          },\n",[4152,24156,24157,24159],{"class":4154,"line":5038},[4152,24158,4861],{"class":4177},[4152,24160,4782],{"class":4173},[4152,24162,24163],{"class":4154,"line":5044},[4152,24164,4869],{"class":4158},[4152,24166,24167,24169,24171,24174,24176,24179,24181,24184,24186,24188],{"class":4154,"line":5077},[4152,24168,4875],{"class":4158},[4152,24170,12730],{"class":4162},[4152,24172,24173],{"class":4165}," variant",[4152,24175,4170],{"class":4169},[4152,24177,24178],{"class":4202},"\"title\"",[4152,24180,4684],{"class":4158},[4152,24182,24183],{"class":4169},"Мандрівник",[4152,24185,4690],{"class":4158},[4152,24187,12730],{"class":4162},[4152,24189,4658],{"class":4158},[4152,24191,24192,24194,24196,24198,24200,24203,24205,24207,24209,24211,24213,24215,24217,24219,24221,24223],{"class":4154,"line":5107},[4152,24193,4875],{"class":4158},[4152,24195,12730],{"class":4162},[4152,24197,24173],{"class":4165},[4152,24199,4170],{"class":4169},[4152,24201,24202],{"class":4202},"\"caption\"",[4152,24204,4166],{"class":4165},[4152,24206,4170],{"class":4169},[4152,24208,4174],{"class":4173},[4152,24210,4178],{"class":4177},[4152,24212,6654],{"class":4181},[4152,24214,17161],{"class":4181},[4152,24216,3609],{"class":4177},[4152,24218,24134],{"class":4181},[4152,24220,4206],{"class":4177},[4152,24222,4209],{"class":4173},[4152,24224,4658],{"class":4158},[4152,24226,24227,24230,24232,24234,24236,24238,24240,24242,24244,24246],{"class":4154,"line":5115},[4152,24228,24229],{"class":4169},"          Щоденник подорожей · тема: ",[4152,24231,4174],{"class":4173},[4152,24233,12929],{"class":4181},[4152,24235,11063],{"class":4169},[4152,24237,14404],{"class":4202},[4152,24239,4901],{"class":4169},[4152,24241,20260],{"class":4202},[4152,24243,4907],{"class":4169},[4152,24245,20265],{"class":4202},[4152,24247,4782],{"class":4173},[4152,24249,24250,24252,24254],{"class":4154,"line":5125},[4152,24251,6107],{"class":4158},[4152,24253,12730],{"class":4162},[4152,24255,4658],{"class":4158},[4152,24257,24258,24260],{"class":4154,"line":5136},[4152,24259,4875],{"class":4158},[4152,24261,24262],{"class":4162},"AppText\n",[4152,24264,24265,24268,24270],{"class":4154,"line":5146},[4152,24266,24267],{"class":4165},"          variant",[4152,24269,4170],{"class":4169},[4152,24271,24272],{"class":4202},"\"caption\"\n",[4152,24274,24275,24277,24279,24281],{"class":4154,"line":5156},[4152,24276,6217],{"class":4165},[4152,24278,4170],{"class":4169},[4152,24280,4174],{"class":4173},[4152,24282,6224],{"class":4177},[4152,24284,24285,24288,24290,24292,24294],{"class":4154,"line":5161},[4152,24286,24287],{"class":4181},"            marginTop:",[4152,24289,17161],{"class":4181},[4152,24291,3609],{"class":4177},[4152,24293,24134],{"class":4181},[4152,24295,4819],{"class":4177},[4152,24297,24298,24301,24303,24305,24307],{"class":4154,"line":5176},[4152,24299,24300],{"class":4181},"            color:",[4152,24302,9103],{"class":4181},[4152,24304,3609],{"class":4177},[4152,24306,9516],{"class":4181},[4152,24308,4819],{"class":4177},[4152,24310,24311,24314,24316],{"class":4154,"line":5192},[4152,24312,24313],{"class":4181},"            fontWeight:",[4152,24315,5763],{"class":4202},[4152,24317,4819],{"class":4177},[4152,24319,24320,24322],{"class":4154,"line":5219},[4152,24321,6270],{"class":4177},[4152,24323,4782],{"class":4173},[4152,24325,24326],{"class":4154,"line":6529},[4152,24327,6277],{"class":4158},[4152,24329,24330,24332,24335,24337,24340,24343,24345,24347,24349,24351,24354,24356,24359],{"class":4154,"line":6534},[4152,24331,8267],{"class":4173},[4152,24333,24334],{"class":4181},"hasTrips",[4152,24336,4901],{"class":4169},[4152,24338,24339],{"class":4202}," `",[4152,24341,24342],{"class":4173},"${",[4152,24344,23724],{"class":4181},[4152,24346,3609],{"class":4177},[4152,24348,24011],{"class":4181},[4152,24350,4209],{"class":4173},[4152,24352,24353],{"class":4202}," поїздки у списку`",[4152,24355,4907],{"class":4169},[4152,24357,24358],{"class":4202}," 'Список порожній'",[4152,24360,4782],{"class":4173},[4152,24362,24363,24365,24367],{"class":4154,"line":6562},[4152,24364,6107],{"class":4158},[4152,24366,12730],{"class":4162},[4152,24368,4658],{"class":4158},[4152,24370,24371],{"class":4154,"line":6570},[4152,24372,4566],{"emptyLinePlaceholder":4565},[4152,24374,24375,24377,24379,24381,24383,24385,24387,24389,24391,24394,24396,24398,24400,24402,24404,24406,24408,24410,24412,24414,24416,24418],{"class":4154,"line":6580},[4152,24376,4875],{"class":4158},[4152,24378,3967],{"class":4162},[4152,24380,4166],{"class":4165},[4152,24382,4170],{"class":4169},[4152,24384,4174],{"class":4173},[4152,24386,6047],{"class":4177},[4152,24388,4648],{"class":4181},[4152,24390,3609],{"class":4177},[4152,24392,24393],{"class":4181},"themeRow",[4152,24395,9098],{"class":4177},[4152,24397,5647],{"class":4181},[4152,24399,17161],{"class":4181},[4152,24401,3609],{"class":4177},[4152,24403,24107],{"class":4181},[4152,24405,3536],{"class":4177},[4152,24407,6654],{"class":4181},[4152,24409,17161],{"class":4181},[4152,24411,3609],{"class":4177},[4152,24413,24107],{"class":4181},[4152,24415,9110],{"class":4177},[4152,24417,4209],{"class":4173},[4152,24419,4658],{"class":4158},[4152,24421,24422,24424,24427,24429,24431,24433,24435,24437,24439],{"class":4154,"line":6589},[4152,24423,8267],{"class":4173},[4152,24425,24426],{"class":4597},"PREFS",[4152,24428,3609],{"class":4177},[4152,24430,11035],{"class":4581},[4152,24432,4764],{"class":4177},[4152,24434,3512],{"class":4181},[4152,24436,4770],{"class":4177},[4152,24438,4758],{"class":4173},[4152,24440,4982],{"class":4177},[4152,24442,24443,24446,24448,24450,24452,24454,24456,24458,24460],{"class":4154,"line":6598},[4152,24444,24445],{"class":4173},"            const",[4152,24447,11054],{"class":4597},[4152,24449,11057],{"class":4169},[4152,24451,15707],{"class":4181},[4152,24453,11063],{"class":4169},[4152,24455,18421],{"class":4181},[4152,24457,3609],{"class":4177},[4152,24459,23808],{"class":4181},[4152,24461,4529],{"class":4177},[4152,24463,24464,24467],{"class":4154,"line":6603},[4152,24465,24466],{"class":4510},"            return",[4152,24468,4631],{"class":4177},[4152,24470,24471,24473],{"class":4154,"line":6629},[4152,24472,11206],{"class":4158},[4152,24474,4742],{"class":4162},[4152,24476,24477,24480,24482,24484,24486,24488,24490],{"class":4154,"line":6662},[4152,24478,24479],{"class":4165},"                key",[4152,24481,4170],{"class":4169},[4152,24483,4174],{"class":4173},[4152,24485,3512],{"class":4181},[4152,24487,3609],{"class":4177},[4152,24489,23808],{"class":4181},[4152,24491,4782],{"class":4173},[4152,24493,24494,24497,24499,24501,24503,24505,24507,24509,24511,24513,24515,24517],{"class":4154,"line":8168},[4152,24495,24496],{"class":4165},"                onPress",[4152,24498,4170],{"class":4169},[4152,24500,4174],{"class":4173},[4152,24502,4755],{"class":4177},[4152,24504,4758],{"class":4173},[4152,24506,16251],{"class":4581},[4152,24508,4611],{"class":4177},[4152,24510,3512],{"class":4181},[4152,24512,3609],{"class":4177},[4152,24514,23808],{"class":4181},[4152,24516,3910],{"class":4177},[4152,24518,4782],{"class":4173},[4152,24520,24521,24523,24525,24527],{"class":4154,"line":8187},[4152,24522,11214],{"class":4165},[4152,24524,4170],{"class":4169},[4152,24526,4174],{"class":4173},[4152,24528,9163],{"class":4177},[4152,24530,24531,24534,24536,24539],{"class":4154,"line":8198},[4152,24532,24533],{"class":4181},"                  styles",[4152,24535,3609],{"class":4177},[4152,24537,24538],{"class":4181},"themeChip",[4152,24540,4819],{"class":4177},[4152,24542,24543],{"class":4154,"line":8214},[4152,24544,24545],{"class":4177},"                  {\n",[4152,24547,24548,24551,24553,24555,24557,24559,24561,24563,24565,24567,24569],{"class":4154,"line":8229},[4152,24549,24550],{"class":4181},"                    backgroundColor:",[4152,24552,11054],{"class":4181},[4152,24554,4901],{"class":4169},[4152,24556,9103],{"class":4181},[4152,24558,3609],{"class":4177},[4152,24560,9516],{"class":4181},[4152,24562,4907],{"class":4169},[4152,24564,9103],{"class":4181},[4152,24566,3609],{"class":4177},[4152,24568,3660],{"class":4181},[4152,24570,4819],{"class":4177},[4152,24572,24573,24576,24578,24580,24582],{"class":4154,"line":8236},[4152,24574,24575],{"class":4181},"                    borderColor:",[4152,24577,9103],{"class":4181},[4152,24579,3609],{"class":4177},[4152,24581,9769],{"class":4181},[4152,24583,4819],{"class":4177},[4152,24585,24586],{"class":4154,"line":8241},[4152,24587,24588],{"class":4177},"                  },\n",[4152,24590,24591,24594],{"class":4154,"line":8264},[4152,24592,24593],{"class":4177},"                ]",[4152,24595,4782],{"class":4173},[4152,24597,24598,24601,24603],{"class":4154,"line":8284},[4152,24599,24600],{"class":4165},"                accessibilityRole",[4152,24602,4170],{"class":4169},[4152,24604,24605],{"class":4202},"\"button\"\n",[4152,24607,24608,24611,24613,24615,24617,24620,24622,24624],{"class":4154,"line":8293},[4152,24609,24610],{"class":4165},"                accessibilityState",[4152,24612,4170],{"class":4169},[4152,24614,4174],{"class":4173},[4152,24616,4178],{"class":4177},[4152,24618,24619],{"class":4181},"selected:",[4152,24621,11054],{"class":4181},[4152,24623,4206],{"class":4177},[4152,24625,4782],{"class":4173},[4152,24627,24628,24631,24633,24635,24638,24640,24642,24644,24646,24648,24651],{"class":4154,"line":8302},[4152,24629,24630],{"class":4165},"                accessibilityLabel",[4152,24632,4170],{"class":4169},[4152,24634,4174],{"class":4173},[4152,24636,24637],{"class":4202},"`Тема: ",[4152,24639,24342],{"class":4173},[4152,24641,3512],{"class":4181},[4152,24643,3609],{"class":4177},[4152,24645,5465],{"class":4181},[4152,24647,4209],{"class":4173},[4152,24649,24650],{"class":4202},"`",[4152,24652,4782],{"class":4173},[4152,24654,24655],{"class":4154,"line":8307},[4152,24656,11275],{"class":4158},[4152,24658,24659,24662],{"class":4154,"line":8330},[4152,24660,24661],{"class":4158},"                \u003C",[4152,24663,24262],{"class":4162},[4152,24665,24666,24669,24671],{"class":4154,"line":8336},[4152,24667,24668],{"class":4165},"                  variant",[4152,24670,4170],{"class":4169},[4152,24672,24272],{"class":4202},[4152,24674,24675,24678,24680,24682,24684,24686,24688,24690,24692,24694,24696,24698,24700],{"class":4154,"line":8345},[4152,24676,24677],{"class":4165},"                  color",[4152,24679,4170],{"class":4169},[4152,24681,4174],{"class":4173},[4152,24683,9266],{"class":4181},[4152,24685,4901],{"class":4169},[4152,24687,9103],{"class":4181},[4152,24689,3609],{"class":4177},[4152,24691,9747],{"class":4181},[4152,24693,4907],{"class":4169},[4152,24695,9103],{"class":4181},[4152,24697,3609],{"class":4177},[4152,24699,9670],{"class":4181},[4152,24701,4782],{"class":4173},[4152,24703,24704,24707,24709,24711,24713,24715,24718],{"class":4154,"line":8354},[4152,24705,24706],{"class":4165},"                  style",[4152,24708,4170],{"class":4169},[4152,24710,4174],{"class":4173},[4152,24712,4648],{"class":4181},[4152,24714,3609],{"class":4177},[4152,24716,24717],{"class":4181},"themeChipText",[4152,24719,4782],{"class":4173},[4152,24721,24722],{"class":4154,"line":8359},[4152,24723,24724],{"class":4158},"                >\n",[4152,24726,24727,24730,24732,24734,24736],{"class":4154,"line":8364},[4152,24728,24729],{"class":4173},"                  {",[4152,24731,3512],{"class":4181},[4152,24733,3609],{"class":4177},[4152,24735,5465],{"class":4181},[4152,24737,4782],{"class":4173},[4152,24739,24740,24743,24745],{"class":4154,"line":8369},[4152,24741,24742],{"class":4158},"                \u003C\u002F",[4152,24744,12730],{"class":4162},[4152,24746,4658],{"class":4158},[4152,24748,24749,24751,24753],{"class":4154,"line":8386},[4152,24750,11304],{"class":4158},[4152,24752,4493],{"class":4162},[4152,24754,4658],{"class":4158},[4152,24756,24757],{"class":4154,"line":8393},[4152,24758,24759],{"class":4177},"            );\n",[4152,24761,24762,24765],{"class":4154,"line":8402},[4152,24763,24764],{"class":4177},"          })",[4152,24766,4782],{"class":4173},[4152,24768,24769,24771,24773],{"class":4154,"line":8411},[4152,24770,6107],{"class":4158},[4152,24772,3967],{"class":4162},[4152,24774,4658],{"class":4158},[4152,24776,24777,24779,24781],{"class":4154,"line":8420},[4152,24778,4730],{"class":4158},[4152,24780,3967],{"class":4162},[4152,24782,4658],{"class":4158},[4152,24784,24785],{"class":4154,"line":8429},[4152,24786,4566],{"emptyLinePlaceholder":4565},[4152,24788,24789,24791,24793,24795],{"class":4154,"line":8438},[4152,24790,16401],{"class":4173},[4152,24792,24334],{"class":4181},[4152,24794,4901],{"class":4169},[4152,24796,4631],{"class":4177},[4152,24798,24799,24801],{"class":4154,"line":8443},[4152,24800,4875],{"class":4158},[4152,24802,24803],{"class":4162},"ScrollView\n",[4152,24805,24806,24808,24810,24812,24814,24816,24818],{"class":4154,"line":8456},[4152,24807,6217],{"class":4165},[4152,24809,4170],{"class":4169},[4152,24811,4174],{"class":4173},[4152,24813,4648],{"class":4181},[4152,24815,3609],{"class":4177},[4152,24817,6814],{"class":4181},[4152,24819,4782],{"class":4173},[4152,24821,24822,24825,24827,24829],{"class":4154,"line":8476},[4152,24823,24824],{"class":4165},"          contentContainerStyle",[4152,24826,4170],{"class":4169},[4152,24828,4174],{"class":4173},[4152,24830,6224],{"class":4177},[4152,24832,24833,24835,24837,24839,24841],{"class":4154,"line":8506},[4152,24834,24087],{"class":4181},[4152,24836,17161],{"class":4181},[4152,24838,3609],{"class":4177},[4152,24840,17167],{"class":4181},[4152,24842,4819],{"class":4177},[4152,24844,24845,24847,24849,24851,24853],{"class":4154,"line":8513},[4152,24846,24100],{"class":4181},[4152,24848,17161],{"class":4181},[4152,24850,3609],{"class":4177},[4152,24852,17167],{"class":4181},[4152,24854,4819],{"class":4177},[4152,24856,24857,24859,24861,24863,24865],{"class":4154,"line":8522},[4152,24858,24114],{"class":4181},[4152,24860,17161],{"class":4181},[4152,24862,3609],{"class":4177},[4152,24864,17167],{"class":4181},[4152,24866,4819],{"class":4177},[4152,24868,24869,24871],{"class":4154,"line":8531},[4152,24870,6270],{"class":4177},[4152,24872,4782],{"class":4173},[4152,24874,24875,24878,24880],{"class":4154,"line":8540},[4152,24876,24877],{"class":4165},"          showsVerticalScrollIndicator",[4152,24879,4170],{"class":4169},[4152,24881,24882],{"class":4173},"{false}\n",[4152,24884,24885],{"class":4154,"line":8549},[4152,24886,6277],{"class":4158},[4152,24888,24889,24891,24893,24895,24897,24899,24901,24903,24905,24907,24909,24911,24913,24915,24917,24919],{"class":4154,"line":8558},[4152,24890,6074],{"class":4158},[4152,24892,12730],{"class":4162},[4152,24894,4166],{"class":4165},[4152,24896,4170],{"class":4169},[4152,24898,4174],{"class":4173},[4152,24900,4178],{"class":4177},[4152,24902,5774],{"class":4181},[4152,24904,17161],{"class":4181},[4152,24906,3609],{"class":4177},[4152,24908,24107],{"class":4181},[4152,24910,3536],{"class":4177},[4152,24912,5060],{"class":4181},[4152,24914,5763],{"class":4202},[4152,24916,4206],{"class":4177},[4152,24918,4209],{"class":4173},[4152,24920,4658],{"class":4158},[4152,24922,24923],{"class":4154,"line":8569},[4152,24924,24925],{"class":4177},"            Ваші поїздки\n",[4152,24927,24928,24930,24932],{"class":4154,"line":8578},[4152,24929,8105],{"class":4158},[4152,24931,12730],{"class":4162},[4152,24933,4658],{"class":4158},[4152,24935,24936,24938,24940,24942,24944,24946,24948,24950,24952,24954,24956,24958,24960],{"class":4154,"line":8583},[4152,24937,6074],{"class":4158},[4152,24939,3967],{"class":4162},[4152,24941,4166],{"class":4165},[4152,24943,4170],{"class":4169},[4152,24945,4174],{"class":4173},[4152,24947,4178],{"class":4177},[4152,24949,5647],{"class":4181},[4152,24951,17161],{"class":4181},[4152,24953,3609],{"class":4177},[4152,24955,17167],{"class":4181},[4152,24957,4206],{"class":4177},[4152,24959,4209],{"class":4173},[4152,24961,4658],{"class":4158},[4152,24963,24964,24967,24969,24971,24973,24975,24977,24979,24981],{"class":4154,"line":8610},[4152,24965,24966],{"class":4173},"            {",[4152,24968,23724],{"class":4181},[4152,24970,3609],{"class":4177},[4152,24972,11035],{"class":4581},[4152,24974,4764],{"class":4177},[4152,24976,23942],{"class":4181},[4152,24978,4770],{"class":4177},[4152,24980,4758],{"class":4173},[4152,24982,4631],{"class":4177},[4152,24984,24985,24987,24989,24992,24994,24996,24998,25000,25002,25004,25007,25009,25011,25013,25015,25018,25020,25022,25025,25027],{"class":4154,"line":8642},[4152,24986,11206],{"class":4158},[4152,24988,9511],{"class":4162},[4152,24990,24991],{"class":4165}," key",[4152,24993,4170],{"class":4169},[4152,24995,4174],{"class":4173},[4152,24997,23942],{"class":4181},[4152,24999,3609],{"class":4177},[4152,25001,23808],{"class":4181},[4152,25003,4209],{"class":4173},[4152,25005,25006],{"class":4165}," trip",[4152,25008,4170],{"class":4169},[4152,25010,4174],{"class":4173},[4152,25012,23942],{"class":4181},[4152,25014,4209],{"class":4173},[4152,25016,25017],{"class":4165}," onPress",[4152,25019,4170],{"class":4169},[4152,25021,4174],{"class":4173},[4152,25023,25024],{"class":4181},"handleOpenTrip",[4152,25026,4209],{"class":4173},[4152,25028,4212],{"class":4158},[4152,25030,25031,25034],{"class":4154,"line":8674},[4152,25032,25033],{"class":4177},"            ))",[4152,25035,4782],{"class":4173},[4152,25037,25038,25040,25042],{"class":4154,"line":8681},[4152,25039,8105],{"class":4158},[4152,25041,3967],{"class":4162},[4152,25043,4658],{"class":4158},[4152,25045,25046,25048,25050],{"class":4154,"line":8694},[4152,25047,6107],{"class":4158},[4152,25049,23695],{"class":4162},[4152,25051,4658],{"class":4158},[4152,25053,25054,25057,25059],{"class":4154,"line":8704},[4152,25055,25056],{"class":4177},"      ) ",[4152,25058,12784],{"class":4169},[4152,25060,4631],{"class":4177},[4152,25062,25063,25065],{"class":4154,"line":8714},[4152,25064,4875],{"class":4158},[4152,25066,6212],{"class":4162},[4152,25068,25069,25071,25073,25075],{"class":4154,"line":8719},[4152,25070,6217],{"class":4165},[4152,25072,4170],{"class":4169},[4152,25074,4174],{"class":4173},[4152,25076,9163],{"class":4177},[4152,25078,25079,25081,25083,25086],{"class":4154,"line":8738},[4152,25080,14184],{"class":4181},[4152,25082,3609],{"class":4177},[4152,25084,25085],{"class":4181},"empty",[4152,25087,4819],{"class":4177},[4152,25089,25090],{"class":4154,"line":8746},[4152,25091,14195],{"class":4177},[4152,25093,25094,25097,25099,25101,25104],{"class":4154,"line":8756},[4152,25095,25096],{"class":4181},"              paddingHorizontal:",[4152,25098,17161],{"class":4181},[4152,25100,3609],{"class":4177},[4152,25102,25103],{"class":4181},"xl",[4152,25105,4819],{"class":4177},[4152,25107,25108,25111,25113,25115,25117],{"class":4154,"line":8765},[4152,25109,25110],{"class":4181},"              gap:",[4152,25112,17161],{"class":4181},[4152,25114,3609],{"class":4177},[4152,25116,24107],{"class":4181},[4152,25118,4819],{"class":4177},[4152,25120,25121],{"class":4154,"line":8774},[4152,25122,14242],{"class":4177},[4152,25124,25125,25127],{"class":4154,"line":8779},[4152,25126,14247],{"class":4177},[4152,25128,4782],{"class":4173},[4152,25130,25131],{"class":4154,"line":8805},[4152,25132,6277],{"class":4158},[4152,25134,25135,25137,25139,25141,25143,25146,25148,25150,25152,25154,25156,25159,25161],{"class":4154,"line":8812},[4152,25136,6074],{"class":4158},[4152,25138,12730],{"class":4162},[4152,25140,24173],{"class":4165},[4152,25142,4170],{"class":4169},[4152,25144,25145],{"class":4202},"\"subtitle\"",[4152,25147,4166],{"class":4165},[4152,25149,4170],{"class":4169},[4152,25151,4174],{"class":4173},[4152,25153,4648],{"class":4181},[4152,25155,3609],{"class":4177},[4152,25157,25158],{"class":4181},"emptyTitle",[4152,25160,4209],{"class":4173},[4152,25162,4658],{"class":4158},[4152,25164,25165],{"class":4154,"line":8821},[4152,25166,25167],{"class":4177},"            Поки немає поїздок\n",[4152,25169,25170,25172,25174],{"class":4154,"line":8830},[4152,25171,8105],{"class":4158},[4152,25173,12730],{"class":4162},[4152,25175,4658],{"class":4158},[4152,25177,25178,25180],{"class":4154,"line":8839},[4152,25179,6074],{"class":4158},[4152,25181,24262],{"class":4162},[4152,25183,25184,25187,25189],{"class":4154,"line":8848},[4152,25185,25186],{"class":4165},"            variant",[4152,25188,4170],{"class":4169},[4152,25190,24272],{"class":4202},[4152,25192,25193,25196,25198,25200,25202,25204,25206],{"class":4154,"line":8853},[4152,25194,25195],{"class":4165},"            color",[4152,25197,4170],{"class":4169},[4152,25199,4174],{"class":4173},[4152,25201,9898],{"class":4181},[4152,25203,3609],{"class":4177},[4152,25205,9693],{"class":4181},[4152,25207,4782],{"class":4173},[4152,25209,25210,25212,25214,25216,25218,25220,25223],{"class":4154,"line":8866},[4152,25211,14264],{"class":4165},[4152,25213,4170],{"class":4169},[4152,25215,4174],{"class":4173},[4152,25217,4648],{"class":4181},[4152,25219,3609],{"class":4177},[4152,25221,25222],{"class":4181},"emptyDesc",[4152,25224,4782],{"class":4173},[4152,25226,25227],{"class":4154,"line":8879},[4152,25228,14320],{"class":4158},[4152,25230,25231],{"class":4154,"line":8904},[4152,25232,25233],{"class":4177},"            Створіть першу — і тут з’явиться стрічка з датами та обкладинками.\n",[4152,25235,25236,25238,25240],{"class":4154,"line":8930},[4152,25237,8105],{"class":4158},[4152,25239,12730],{"class":4162},[4152,25241,4658],{"class":4158},[4152,25243,25244,25246,25248],{"class":4154,"line":11945},[4152,25245,6107],{"class":4158},[4152,25247,3967],{"class":4162},[4152,25249,4658],{"class":4158},[4152,25251,25252,25255],{"class":4154,"line":11956},[4152,25253,25254],{"class":4177},"      )",[4152,25256,4782],{"class":4173},[4152,25258,25259],{"class":4154,"line":11992},[4152,25260,4566],{"emptyLinePlaceholder":4565},[4152,25262,25263,25265],{"class":4154,"line":12027},[4152,25264,4664],{"class":4158},[4152,25266,6212],{"class":4162},[4152,25268,25269,25271,25273,25275],{"class":4154,"line":12033},[4152,25270,4788],{"class":4165},[4152,25272,4170],{"class":4169},[4152,25274,4174],{"class":4173},[4152,25276,9163],{"class":4177},[4152,25278,25279,25281,25283,25286],{"class":4154,"line":12042},[4152,25280,4811],{"class":4181},[4152,25282,3609],{"class":4177},[4152,25284,25285],{"class":4181},"footer",[4152,25287,4819],{"class":4177},[4152,25289,25290],{"class":4154,"line":12051},[4152,25291,24082],{"class":4177},[4152,25293,25294,25296,25298,25300,25302],{"class":4154,"line":12058},[4152,25295,24087],{"class":4181},[4152,25297,17161],{"class":4181},[4152,25299,3609],{"class":4177},[4152,25301,17167],{"class":4181},[4152,25303,4819],{"class":4177},[4152,25305,25306,25308,25310,25312,25314],{"class":4154,"line":12067},[4152,25307,24100],{"class":4181},[4152,25309,17161],{"class":4181},[4152,25311,3609],{"class":4177},[4152,25313,24107],{"class":4181},[4152,25315,4819],{"class":4177},[4152,25317,25318,25320,25322,25324,25326],{"class":4154,"line":12072},[4152,25319,24114],{"class":4181},[4152,25321,17161],{"class":4181},[4152,25323,3609],{"class":4177},[4152,25325,17167],{"class":4181},[4152,25327,4819],{"class":4177},[4152,25329,25330,25333,25335,25337,25339],{"class":4154,"line":12079},[4152,25331,25332],{"class":4181},"            borderTopColor:",[4152,25334,9103],{"class":4181},[4152,25336,3609],{"class":4177},[4152,25338,9769],{"class":4181},[4152,25340,4819],{"class":4177},[4152,25342,25343,25345,25347,25349,25351],{"class":4154,"line":12111},[4152,25344,6242],{"class":4181},[4152,25346,9103],{"class":4181},[4152,25348,3609],{"class":4177},[4152,25350,9618],{"class":4181},[4152,25352,4819],{"class":4177},[4152,25354,25355],{"class":4154,"line":12130},[4152,25356,24154],{"class":4177},[4152,25358,25359,25361],{"class":4154,"line":12141},[4152,25360,4861],{"class":4177},[4152,25362,4782],{"class":4173},[4152,25364,25365],{"class":4154,"line":12170},[4152,25366,4869],{"class":4158},[4152,25368,25369,25371],{"class":4154,"line":12177},[4152,25370,4875],{"class":4158},[4152,25372,25373],{"class":4162},"Button\n",[4152,25375,25376,25379,25381],{"class":4154,"line":12182},[4152,25377,25378],{"class":4165},"          label",[4152,25380,4170],{"class":4169},[4152,25382,25383],{"class":4202},"\"Нова поїздка\"\n",[4152,25385,25386,25388,25390,25392,25394,25396],{"class":4154,"line":12217},[4152,25387,14151],{"class":4165},[4152,25389,4170],{"class":4169},[4152,25391,4174],{"class":4173},[4152,25393,4755],{"class":4177},[4152,25395,4758],{"class":4173},[4152,25397,4982],{"class":4177},[4152,25399,25400,25403,25405,25407,25409,25412],{"class":4154,"line":12236},[4152,25401,25402],{"class":4181},"            console",[4152,25404,3609],{"class":4177},[4152,25406,23963],{"class":4581},[4152,25408,4611],{"class":4177},[4152,25410,25411],{"class":4202},"'TODO: відкрити створення поїздки'",[4152,25413,4617],{"class":4177},[4152,25415,25416,25418],{"class":4154,"line":12245},[4152,25417,6270],{"class":4177},[4152,25419,4782],{"class":4173},[4152,25421,25422],{"class":4154,"line":12254},[4152,25423,11872],{"class":4158},[4152,25425,25426,25428,25430],{"class":4154,"line":12259},[4152,25427,4730],{"class":4158},[4152,25429,3967],{"class":4162},[4152,25431,4658],{"class":4158},[4152,25433,25434,25436,25438],{"class":4154,"line":12301},[4152,25435,4933],{"class":4158},[4152,25437,15186],{"class":4162},[4152,25439,4658],{"class":4158},[4152,25441,25442],{"class":4154,"line":12307},[4152,25443,4943],{"class":4169},[4152,25445,25446],{"class":4154,"line":12313},[4152,25447,4782],{"class":4169},[4152,25449,25450],{"class":4154,"line":12322},[4152,25451,4566],{"emptyLinePlaceholder":4565},[4152,25453,25454,25456,25458,25460,25462,25464,25466],{"class":4154,"line":12331},[4152,25455,4959],{"class":4173},[4152,25457,4831],{"class":4597},[4152,25459,4964],{"class":4169},[4152,25461,3572],{"class":4181},[4152,25463,3609],{"class":4169},[4152,25465,4264],{"class":4581},[4152,25467,4973],{"class":4169},[4152,25469,25470,25472],{"class":4154,"line":12336},[4152,25471,4979],{"class":4181},[4152,25473,4982],{"class":4169},[4152,25475,25476,25478,25481],{"class":4154,"line":12341},[4152,25477,12427],{"class":4181},[4152,25479,25480],{"class":4185}," 0",[4152,25482,4819],{"class":4169},[4152,25484,25485],{"class":4154,"line":12346},[4152,25486,5041],{"class":4169},[4152,25488,25489,25491],{"class":4154,"line":12363},[4152,25490,20915],{"class":4181},[4152,25492,4982],{"class":4169},[4152,25494,25495,25498,25500],{"class":4154,"line":12394},[4152,25496,25497],{"class":4181},"    borderBottomWidth:",[4152,25499,4186],{"class":4185},[4152,25501,4819],{"class":4169},[4152,25503,25504],{"class":4154,"line":12416},[4152,25505,5041],{"class":4169},[4152,25507,25508,25511],{"class":4154,"line":12424},[4152,25509,25510],{"class":4181},"  themeRow:",[4152,25512,4982],{"class":4169},[4152,25514,25515,25517,25519],{"class":4154,"line":12434},[4152,25516,20960],{"class":4181},[4152,25518,12404],{"class":4202},[4152,25520,4819],{"class":4169},[4152,25522,25523,25526,25528],{"class":4154,"line":12443},[4152,25524,25525],{"class":4181},"    flexWrap:",[4152,25527,19018],{"class":4202},[4152,25529,4819],{"class":4169},[4152,25531,25532],{"class":4154,"line":12452},[4152,25533,5041],{"class":4169},[4152,25535,25536,25539],{"class":4154,"line":12461},[4152,25537,25538],{"class":4181},"  themeChip:",[4152,25540,4982],{"class":4169},[4152,25542,25543,25545,25547],{"class":4154,"line":12466},[4152,25544,12427],{"class":4181},[4152,25546,5033],{"class":4185},[4152,25548,4819],{"class":4169},[4152,25550,25551,25553,25555],{"class":4154,"line":12479},[4152,25552,5128],{"class":4181},[4152,25554,12411],{"class":4185},[4152,25556,4819],{"class":4169},[4152,25558,25559,25561,25563],{"class":4154,"line":12498},[4152,25560,5139],{"class":4181},[4152,25562,12411],{"class":4185},[4152,25564,4819],{"class":4169},[4152,25566,25567,25569,25571],{"class":4154,"line":12505},[4152,25568,5719],{"class":4181},[4152,25570,4186],{"class":4185},[4152,25572,4819],{"class":4169},[4152,25574,25575],{"class":4154,"line":12514},[4152,25576,5041],{"class":4169},[4152,25578,25579,25582],{"class":4154,"line":12523},[4152,25580,25581],{"class":4181},"  themeChipText:",[4152,25583,4982],{"class":4169},[4152,25585,25586,25589,25591],{"class":4154,"line":12532},[4152,25587,25588],{"class":4181},"    fontWeight:",[4152,25590,5763],{"class":4202},[4152,25592,4819],{"class":4169},[4152,25594,25595],{"class":4154,"line":12541},[4152,25596,5041],{"class":4169},[4152,25598,25599,25601],{"class":4154,"line":12550},[4152,25600,7161],{"class":4181},[4152,25602,4982],{"class":4169},[4152,25604,25605,25607,25609],{"class":4154,"line":12555},[4152,25606,4988],{"class":4181},[4152,25608,4186],{"class":4185},[4152,25610,4819],{"class":4169},[4152,25612,25613],{"class":4154,"line":12581},[4152,25614,5041],{"class":4169},[4152,25616,25617,25620],{"class":4154,"line":12589},[4152,25618,25619],{"class":4181},"  empty:",[4152,25621,4982],{"class":4169},[4152,25623,25624,25626,25628],{"class":4154,"line":12599},[4152,25625,4988],{"class":4181},[4152,25627,4186],{"class":4185},[4152,25629,4819],{"class":4169},[4152,25631,25632,25634,25636],{"class":4154,"line":12608},[4152,25633,5149],{"class":4181},[4152,25635,5022],{"class":4202},[4152,25637,4819],{"class":4169},[4152,25639,25640,25642,25644],{"class":4154,"line":12617},[4152,25641,5019],{"class":4181},[4152,25643,5022],{"class":4202},[4152,25645,4819],{"class":4169},[4152,25647,25648],{"class":4154,"line":12622},[4152,25649,5041],{"class":4169},[4152,25651,25652,25655],{"class":4154,"line":12629},[4152,25653,25654],{"class":4181},"  emptyTitle:",[4152,25656,4982],{"class":4169},[4152,25658,25659,25662,25664],{"class":4154,"line":12638},[4152,25660,25661],{"class":4181},"    textAlign:",[4152,25663,5022],{"class":4202},[4152,25665,4819],{"class":4169},[4152,25667,25668],{"class":4154,"line":12647},[4152,25669,5041],{"class":4169},[4152,25671,25672,25675],{"class":4154,"line":12656},[4152,25673,25674],{"class":4181},"  emptyDesc:",[4152,25676,4982],{"class":4169},[4152,25678,25679,25681,25683],{"class":4154,"line":12661},[4152,25680,25661],{"class":4181},[4152,25682,5022],{"class":4202},[4152,25684,4819],{"class":4169},[4152,25686,25688],{"class":4154,"line":25687},180,[4152,25689,5041],{"class":4169},[4152,25691,25693,25696],{"class":4154,"line":25692},181,[4152,25694,25695],{"class":4181},"  footer:",[4152,25697,4982],{"class":4169},[4152,25699,25701,25704,25706],{"class":4154,"line":25700},182,[4152,25702,25703],{"class":4181},"    borderTopWidth:",[4152,25705,4186],{"class":4185},[4152,25707,4819],{"class":4169},[4152,25709,25711],{"class":4154,"line":25710},183,[4152,25712,5041],{"class":4169},[4152,25714,25716],{"class":4154,"line":25715},184,[4152,25717,5222],{"class":4169},[4143,25719,25722],{"className":9889,"code":25720,"filename":25721,"language":9891,"meta":4148,"style":4148},"export { mockTrips } from '.\u002Fmodel\u002FmockTrips';\nexport type { Trip } from '.\u002Fmodel\u002Ftypes';\nexport { TripCard } from '.\u002Fui\u002FTripCard';\n","src\u002Ffeatures\u002Ftrips\u002Findex.ts",[3533,25723,25724,25741,25761],{"__ignoreMap":4148},[4152,25725,25726,25728,25730,25732,25734,25736,25739],{"class":4154,"line":4155},[4152,25727,4572],{"class":4510},[4152,25729,4514],{"class":4169},[4152,25731,23724],{"class":4181},[4152,25733,4520],{"class":4169},[4152,25735,4523],{"class":4510},[4152,25737,25738],{"class":4202}," '.\u002Fmodel\u002FmockTrips'",[4152,25740,4529],{"class":4169},[4152,25742,25743,25745,25748,25750,25752,25754,25756,25759],{"class":4154,"line":4532},[4152,25744,4572],{"class":4510},[4152,25746,25747],{"class":4510}," type",[4152,25749,4514],{"class":4169},[4152,25751,23947],{"class":4181},[4152,25753,4520],{"class":4169},[4152,25755,4523],{"class":4510},[4152,25757,25758],{"class":4202}," '.\u002Fmodel\u002Ftypes'",[4152,25760,4529],{"class":4169},[4152,25762,25763,25765,25767,25769,25771,25773,25776],{"class":4154,"line":4562},[4152,25764,4572],{"class":4510},[4152,25766,4514],{"class":4169},[4152,25768,9511],{"class":4181},[4152,25770,4520],{"class":4169},[4152,25772,4523],{"class":4510},[4152,25774,25775],{"class":4202}," '.\u002Fui\u002FTripCard'",[4152,25777,4529],{"class":4169},[4143,25779,25782],{"className":9889,"code":25780,"filename":25781,"language":9891,"meta":4148,"style":4148},"import type { Trip } from '.\u002Ftypes';\n\nexport const mockTrips: Trip[] = [\n  {\n    id: '1',\n    title: 'Карпати на вихідні',\n    dateLabel: '12–14 бер. 2026',\n    description: 'Говерла, полонини й вечірній чай біля каміну в котеджі.',\n    coverUri: 'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1464822759023-fed622ff2c3b?w=800&q=80',\n  },\n  {\n    id: '2',\n    title: 'Львівський вікенд',\n    dateLabel: '2–4 трав. 2026',\n    description: 'Кава, площа Ринок, закапелки й нічний трамвай.',\n    coverUri: 'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555881400-74d7acaacd8b?w=800&q=80',\n  },\n  {\n    id: '3',\n    title: 'Одеса біля моря',\n    dateLabel: '18–22 лип. 2026',\n    description: 'Схід сонця на набережній, рибний ринок і вечірній Привоз.',\n    coverUri: 'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=800&q=80',\n  },\n];\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002FmockTrips.ts",[3533,25783,25784,25803,25807,25823,25828,25838,25848,25858,25868,25878,25882,25886,25895,25904,25913,25922,25931,25935,25939,25948,25957,25966,25975,25984,25988],{"__ignoreMap":4148},[4152,25785,25786,25788,25790,25792,25794,25796,25798,25801],{"class":4154,"line":4155},[4152,25787,4511],{"class":4510},[4152,25789,25747],{"class":4510},[4152,25791,4514],{"class":4169},[4152,25793,23947],{"class":4181},[4152,25795,4520],{"class":4169},[4152,25797,4523],{"class":4510},[4152,25799,25800],{"class":4202}," '.\u002Ftypes'",[4152,25802,4529],{"class":4169},[4152,25804,25805],{"class":4154,"line":4532},[4152,25806,4566],{"emptyLinePlaceholder":4565},[4152,25808,25809,25811,25813,25816,25818,25820],{"class":4154,"line":4562},[4152,25810,4572],{"class":4510},[4152,25812,11030],{"class":4173},[4152,25814,25815],{"class":4597}," mockTrips",[4152,25817,13648],{"class":4169},[4152,25819,23947],{"class":4162},[4152,25821,25822],{"class":4169},"[] = [\n",[4152,25824,25825],{"class":4154,"line":4569},[4152,25826,25827],{"class":4169},"  {\n",[4152,25829,25830,25833,25836],{"class":4154,"line":4588},[4152,25831,25832],{"class":4181},"    id:",[4152,25834,25835],{"class":4202}," '1'",[4152,25837,4819],{"class":4169},[4152,25839,25840,25843,25846],{"class":4154,"line":4620},[4152,25841,25842],{"class":4181},"    title:",[4152,25844,25845],{"class":4202}," 'Карпати на вихідні'",[4152,25847,4819],{"class":4169},[4152,25849,25850,25853,25856],{"class":4154,"line":4625},[4152,25851,25852],{"class":4181},"    dateLabel:",[4152,25854,25855],{"class":4202}," '12–14 бер. 2026'",[4152,25857,4819],{"class":4169},[4152,25859,25860,25863,25866],{"class":4154,"line":4634},[4152,25861,25862],{"class":4181},"    description:",[4152,25864,25865],{"class":4202}," 'Говерла, полонини й вечірній чай біля каміну в котеджі.'",[4152,25867,4819],{"class":4169},[4152,25869,25870,25873,25876],{"class":4154,"line":4661},[4152,25871,25872],{"class":4181},"    coverUri:",[4152,25874,25875],{"class":4202}," 'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1464822759023-fed622ff2c3b?w=800&q=80'",[4152,25877,4819],{"class":4169},[4152,25879,25880],{"class":4154,"line":4697},[4152,25881,5041],{"class":4169},[4152,25883,25884],{"class":4154,"line":4721},[4152,25885,25827],{"class":4169},[4152,25887,25888,25890,25893],{"class":4154,"line":4727},[4152,25889,25832],{"class":4181},[4152,25891,25892],{"class":4202}," '2'",[4152,25894,4819],{"class":4169},[4152,25896,25897,25899,25902],{"class":4154,"line":4737},[4152,25898,25842],{"class":4181},[4152,25900,25901],{"class":4202}," 'Львівський вікенд'",[4152,25903,4819],{"class":4169},[4152,25905,25906,25908,25911],{"class":4154,"line":4745},[4152,25907,25852],{"class":4181},[4152,25909,25910],{"class":4202}," '2–4 трав. 2026'",[4152,25912,4819],{"class":4169},[4152,25914,25915,25917,25920],{"class":4154,"line":4785},[4152,25916,25862],{"class":4181},[4152,25918,25919],{"class":4202}," 'Кава, площа Ринок, закапелки й нічний трамвай.'",[4152,25921,4819],{"class":4169},[4152,25923,25924,25926,25929],{"class":4154,"line":4808},[4152,25925,25872],{"class":4181},[4152,25927,25928],{"class":4202}," 'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555881400-74d7acaacd8b?w=800&q=80'",[4152,25930,4819],{"class":4169},[4152,25932,25933],{"class":4154,"line":4822},[4152,25934,5041],{"class":4169},[4152,25936,25937],{"class":4154,"line":4841},[4152,25938,25827],{"class":4169},[4152,25940,25941,25943,25946],{"class":4154,"line":4858},[4152,25942,25832],{"class":4181},[4152,25944,25945],{"class":4202}," '3'",[4152,25947,4819],{"class":4169},[4152,25949,25950,25952,25955],{"class":4154,"line":4866},[4152,25951,25842],{"class":4181},[4152,25953,25954],{"class":4202}," 'Одеса біля моря'",[4152,25956,4819],{"class":4169},[4152,25958,25959,25961,25964],{"class":4154,"line":4872},[4152,25960,25852],{"class":4181},[4152,25962,25963],{"class":4202}," '18–22 лип. 2026'",[4152,25965,4819],{"class":4169},[4152,25967,25968,25970,25973],{"class":4154,"line":4921},[4152,25969,25862],{"class":4181},[4152,25971,25972],{"class":4202}," 'Схід сонця на набережній, рибний ринок і вечірній Привоз.'",[4152,25974,4819],{"class":4169},[4152,25976,25977,25979,25982],{"class":4154,"line":4930},[4152,25978,25872],{"class":4181},[4152,25980,25981],{"class":4202}," 'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1507525428034-b723cf961d3e?w=800&q=80'",[4152,25983,4819],{"class":4169},[4152,25985,25986],{"class":4154,"line":4940},[4152,25987,5041],{"class":4169},[4152,25989,25990],{"class":4154,"line":4946},[4152,25991,23879],{"class":4169},[4143,25993,25996],{"className":9889,"code":25994,"filename":25995,"language":9891,"meta":4148,"style":4148},"export type Trip = {\n  id: string;\n  title: string;\n  dateLabel: string;\n  description: string;\n  coverUri: string;\n};\n","src\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes.ts",[3533,25997,25998,26008,26019,26030,26041,26052,26063],{"__ignoreMap":4148},[4152,25999,26000,26002,26004,26006],{"class":4154,"line":4155},[4152,26001,4572],{"class":4510},[4152,26003,25747],{"class":4173},[4152,26005,23735],{"class":4162},[4152,26007,10591],{"class":4169},[4152,26009,26010,26013,26015,26017],{"class":4154,"line":4532},[4152,26011,26012],{"class":4181},"  id",[4152,26014,13648],{"class":4169},[4152,26016,15655],{"class":4162},[4152,26018,4529],{"class":4169},[4152,26020,26021,26024,26026,26028],{"class":4154,"line":4562},[4152,26022,26023],{"class":4181},"  title",[4152,26025,13648],{"class":4169},[4152,26027,15655],{"class":4162},[4152,26029,4529],{"class":4169},[4152,26031,26032,26035,26037,26039],{"class":4154,"line":4569},[4152,26033,26034],{"class":4181},"  dateLabel",[4152,26036,13648],{"class":4169},[4152,26038,15655],{"class":4162},[4152,26040,4529],{"class":4169},[4152,26042,26043,26046,26048,26050],{"class":4154,"line":4588},[4152,26044,26045],{"class":4181},"  description",[4152,26047,13648],{"class":4169},[4152,26049,15655],{"class":4162},[4152,26051,4529],{"class":4169},[4152,26053,26054,26057,26059,26061],{"class":4154,"line":4620},[4152,26055,26056],{"class":4181},"  coverUri",[4152,26058,13648],{"class":4169},[4152,26060,15655],{"class":4162},[4152,26062,4529],{"class":4169},[4152,26064,26065],{"class":4154,"line":4625},[4152,26066,10682],{"class":4169},[4143,26068,26071],{"className":4145,"code":26069,"filename":26070,"language":4147,"meta":4148,"style":4148},"import { 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\nexport function TripCard({ 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\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\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  footer: {\n    alignItems: 'flex-start',\n  },\n});\n","src\u002Ffeatures\u002Ftrips\u002Fui\u002FTripCard.tsx",[3533,26072,26073,26107,26111,26130,26146,26162,26166,26175,26186,26208,26212,26216,26242,26264,26268,26274,26280,26289,26315,26339,26358,26369,26374,26387,26400,26415,26420,26436,26443,26448,26455,26480,26511,26521,26526,26530,26577,26614,26654,26666,26674,26703,26716,26724,26732,26738,26751,26783,26787,26800,26808,26844,26873,26878,26886,26894,26902,26910,26914,26918,26922,26938,26944,26952,26960,26974,26981,26990,27000,27009,27030,27034,27041,27051,27055,27063,27068,27072,27079,27089,27093,27100,27109,27118,27122,27129,27136,27144,27152,27156,27163,27171,27175,27182,27191,27195,27201,27209,27213],{"__ignoreMap":4148},[4152,26074,26075,26077,26079,26082,26084,26087,26089,26091,26093,26095,26097,26099,26101,26103,26105],{"class":4154,"line":4155},[4152,26076,4511],{"class":4510},[4152,26078,4514],{"class":4169},[4152,26080,26081],{"class":4181},"Image",[4152,26083,3536],{"class":4169},[4152,26085,26086],{"class":4181},"Platform",[4152,26088,3536],{"class":4169},[4152,26090,4493],{"class":4181},[4152,26092,3536],{"class":4169},[4152,26094,3572],{"class":4181},[4152,26096,3536],{"class":4169},[4152,26098,3967],{"class":4181},[4152,26100,4520],{"class":4169},[4152,26102,4523],{"class":4510},[4152,26104,4557],{"class":4202},[4152,26106,4529],{"class":4169},[4152,26108,26109],{"class":4154,"line":4532},[4152,26110,4566],{"emptyLinePlaceholder":4565},[4152,26112,26113,26115,26117,26119,26121,26123,26125,26128],{"class":4154,"line":4562},[4152,26114,4511],{"class":4510},[4152,26116,25747],{"class":4510},[4152,26118,4514],{"class":4169},[4152,26120,23947],{"class":4181},[4152,26122,4520],{"class":4169},[4152,26124,4523],{"class":4510},[4152,26126,26127],{"class":4202}," '@\u002Ffeatures\u002Ftrips\u002Fmodel\u002Ftypes'",[4152,26129,4529],{"class":4169},[4152,26131,26132,26134,26136,26138,26140,26142,26144],{"class":4154,"line":4569},[4152,26133,4511],{"class":4510},[4152,26135,4514],{"class":4169},[4152,26137,3754],{"class":4181},[4152,26139,4520],{"class":4169},[4152,26141,4523],{"class":4510},[4152,26143,19399],{"class":4202},[4152,26145,4529],{"class":4169},[4152,26147,26148,26150,26152,26154,26156,26158,26160],{"class":4154,"line":4588},[4152,26149,4511],{"class":4510},[4152,26151,4514],{"class":4169},[4152,26153,12730],{"class":4181},[4152,26155,4520],{"class":4169},[4152,26157,4523],{"class":4510},[4152,26159,23789],{"class":4202},[4152,26161,4529],{"class":4169},[4152,26163,26164],{"class":4154,"line":4620},[4152,26165,4566],{"emptyLinePlaceholder":4565},[4152,26167,26168,26170,26173],{"class":4154,"line":4625},[4152,26169,15584],{"class":4173},[4152,26171,26172],{"class":4162}," TripCardProps",[4152,26174,10591],{"class":4169},[4152,26176,26177,26180,26182,26184],{"class":4154,"line":4634},[4152,26178,26179],{"class":4181},"  trip",[4152,26181,13648],{"class":4169},[4152,26183,23947],{"class":4162},[4152,26185,4529],{"class":4169},[4152,26187,26188,26191,26194,26196,26198,26200,26202,26204,26206],{"class":4154,"line":4661},[4152,26189,26190],{"class":4581},"  onPress",[4152,26192,26193],{"class":4169},"?: (",[4152,26195,23942],{"class":4181},[4152,26197,13648],{"class":4169},[4152,26199,23947],{"class":4162},[4152,26201,4770],{"class":4169},[4152,26203,4758],{"class":4173},[4152,26205,15956],{"class":4162},[4152,26207,4529],{"class":4169},[4152,26209,26210],{"class":4154,"line":4697},[4152,26211,10682],{"class":4169},[4152,26213,26214],{"class":4154,"line":4721},[4152,26215,4566],{"emptyLinePlaceholder":4565},[4152,26217,26218,26220,26222,26225,26227,26229,26231,26234,26237,26240],{"class":4154,"line":4727},[4152,26219,4572],{"class":4510},[4152,26221,4578],{"class":4173},[4152,26223,26224],{"class":4581}," TripCard",[4152,26226,4795],{"class":4169},[4152,26228,23942],{"class":4181},[4152,26230,3536],{"class":4169},[4152,26232,26233],{"class":4181},"onPress",[4152,26235,26236],{"class":4169}," }: ",[4152,26238,26239],{"class":4162},"TripCardProps",[4152,26241,13657],{"class":4169},[4152,26243,26244,26246,26248,26250,26252,26254,26256,26258,26260,26262],{"class":4154,"line":4737},[4152,26245,4591],{"class":4173},[4152,26247,4514],{"class":4169},[4152,26249,9898],{"class":4597},[4152,26251,3536],{"class":4169},[4152,26253,12680],{"class":4597},[4152,26255,3536],{"class":4169},[4152,26257,17040],{"class":4597},[4152,26259,16593],{"class":4169},[4152,26261,3754],{"class":4581},[4152,26263,12917],{"class":4169},[4152,26265,26266],{"class":4154,"line":4745},[4152,26267,4566],{"emptyLinePlaceholder":4565},[4152,26269,26270,26272],{"class":4154,"line":4785},[4152,26271,4628],{"class":4510},[4152,26273,4631],{"class":4169},[4152,26275,26276,26278],{"class":4154,"line":4808},[4152,26277,4637],{"class":4158},[4152,26279,4742],{"class":4162},[4152,26281,26282,26285,26287],{"class":4154,"line":4822},[4152,26283,26284],{"class":4165},"      accessibilityRole",[4152,26286,4170],{"class":4169},[4152,26288,24605],{"class":4202},[4152,26290,26291,26294,26296,26298,26301,26303,26305,26307,26309,26311,26313],{"class":4154,"line":4841},[4152,26292,26293],{"class":4165},"      accessibilityLabel",[4152,26295,4170],{"class":4169},[4152,26297,4174],{"class":4173},[4152,26299,26300],{"class":4202},"`Поїздка ",[4152,26302,24342],{"class":4173},[4152,26304,23942],{"class":4181},[4152,26306,3609],{"class":4177},[4152,26308,4679],{"class":4181},[4152,26310,4209],{"class":4173},[4152,26312,24650],{"class":4202},[4152,26314,4782],{"class":4173},[4152,26316,26317,26320,26322,26324,26326,26328,26330,26333,26335,26337],{"class":4154,"line":4858},[4152,26318,26319],{"class":4165},"      onPress",[4152,26321,4170],{"class":4169},[4152,26323,4174],{"class":4173},[4152,26325,4755],{"class":4177},[4152,26327,4758],{"class":4173},[4152,26329,25017],{"class":4581},[4152,26331,26332],{"class":4177},"?.(",[4152,26334,23942],{"class":4181},[4152,26336,3910],{"class":4177},[4152,26338,4782],{"class":4173},[4152,26340,26341,26344,26346,26348,26350,26352,26354,26356],{"class":4154,"line":4866},[4152,26342,26343],{"class":4165},"      style",[4152,26345,4170],{"class":4169},[4152,26347,4174],{"class":4173},[4152,26349,4795],{"class":4177},[4152,26351,4237],{"class":4181},[4152,26353,4800],{"class":4177},[4152,26355,4758],{"class":4173},[4152,26357,4805],{"class":4177},[4152,26359,26360,26363,26365,26367],{"class":4154,"line":4872},[4152,26361,26362],{"class":4181},"        styles",[4152,26364,3609],{"class":4177},[4152,26366,5996],{"class":4181},[4152,26368,4819],{"class":4177},[4152,26370,26371],{"class":4154,"line":4921},[4152,26372,26373],{"class":4177},"        {\n",[4152,26375,26376,26379,26381,26383,26385],{"class":4154,"line":4930},[4152,26377,26378],{"class":4181},"          backgroundColor:",[4152,26380,9103],{"class":4181},[4152,26382,3609],{"class":4177},[4152,26384,3660],{"class":4181},[4152,26386,4819],{"class":4177},[4152,26388,26389,26392,26394,26396,26398],{"class":4154,"line":4940},[4152,26390,26391],{"class":4181},"          borderColor:",[4152,26393,9103],{"class":4181},[4152,26395,3609],{"class":4177},[4152,26397,9769],{"class":4181},[4152,26399,4819],{"class":4177},[4152,26401,26402,26405,26408,26410,26413],{"class":4154,"line":4946},[4152,26403,26404],{"class":4181},"          borderRadius:",[4152,26406,26407],{"class":4181}," radius",[4152,26409,3609],{"class":4177},[4152,26411,26412],{"class":4181},"lg",[4152,26414,4819],{"class":4177},[4152,26416,26417],{"class":4154,"line":4951},[4152,26418,26419],{"class":4177},"        },\n",[4152,26421,26422,26425,26427,26429,26431,26434],{"class":4154,"line":4956},[4152,26423,26424],{"class":4181},"        pressed",[4152,26426,4828],{"class":4169},[4152,26428,4831],{"class":4181},[4152,26430,3609],{"class":4177},[4152,26432,26433],{"class":4181},"cardPressed",[4152,26435,4819],{"class":4177},[4152,26437,26438,26441],{"class":4154,"line":4976},[4152,26439,26440],{"class":4177},"      ]",[4152,26442,4782],{"class":4173},[4152,26444,26445],{"class":4154,"line":4985},[4152,26446,26447],{"class":4158},"    >\n",[4152,26449,26450,26452],{"class":4154,"line":4995},[4152,26451,4664],{"class":4158},[4152,26453,26454],{"class":4162},"Image\n",[4152,26456,26457,26460,26462,26464,26466,26469,26471,26473,26476,26478],{"class":4154,"line":5005},[4152,26458,26459],{"class":4165},"        source",[4152,26461,4170],{"class":4169},[4152,26463,4174],{"class":4173},[4152,26465,4178],{"class":4177},[4152,26467,26468],{"class":4181},"uri:",[4152,26470,25006],{"class":4181},[4152,26472,3609],{"class":4177},[4152,26474,26475],{"class":4181},"coverUri",[4152,26477,4206],{"class":4177},[4152,26479,4782],{"class":4173},[4152,26481,26482,26484,26486,26488,26490,26492,26494,26497,26499,26501,26503,26505,26507,26509],{"class":4154,"line":5016},[4152,26483,4788],{"class":4165},[4152,26485,4170],{"class":4169},[4152,26487,4174],{"class":4173},[4152,26489,6047],{"class":4177},[4152,26491,4648],{"class":4181},[4152,26493,3609],{"class":4177},[4152,26495,26496],{"class":4181},"cover",[4152,26498,9098],{"class":4177},[4152,26500,4199],{"class":4181},[4152,26502,9103],{"class":4181},[4152,26504,3609],{"class":4177},[4152,26506,9769],{"class":4181},[4152,26508,9110],{"class":4177},[4152,26510,4782],{"class":4173},[4152,26512,26513,26516,26518],{"class":4154,"line":5027},[4152,26514,26515],{"class":4165},"        resizeMode",[4152,26517,4170],{"class":4169},[4152,26519,26520],{"class":4202},"\"cover\"\n",[4152,26522,26523],{"class":4154,"line":5038},[4152,26524,26525],{"class":4165},"        accessibilityIgnoresInvertColors\n",[4152,26527,26528],{"class":4154,"line":5044},[4152,26529,16917],{"class":4158},[4152,26531,26532,26534,26536,26538,26540,26542,26544,26546,26548,26551,26553,26555,26557,26559,26561,26563,26565,26567,26569,26571,26573,26575],{"class":4154,"line":5077},[4152,26533,4664],{"class":4158},[4152,26535,3967],{"class":4162},[4152,26537,4166],{"class":4165},[4152,26539,4170],{"class":4169},[4152,26541,4174],{"class":4173},[4152,26543,6047],{"class":4177},[4152,26545,4648],{"class":4181},[4152,26547,3609],{"class":4177},[4152,26549,26550],{"class":4181},"body",[4152,26552,9098],{"class":4177},[4152,26554,4191],{"class":4181},[4152,26556,17161],{"class":4181},[4152,26558,3609],{"class":4177},[4152,26560,17167],{"class":4181},[4152,26562,3536],{"class":4177},[4152,26564,5647],{"class":4181},[4152,26566,17161],{"class":4181},[4152,26568,3609],{"class":4177},[4152,26570,24134],{"class":4181},[4152,26572,9110],{"class":4177},[4152,26574,4209],{"class":4173},[4152,26576,4658],{"class":4158},[4152,26578,26579,26581,26583,26585,26587,26589,26591,26593,26595,26598,26600,26602,26604,26606,26608,26610,26612],{"class":4154,"line":5107},[4152,26580,4875],{"class":4158},[4152,26582,3967],{"class":4162},[4152,26584,4166],{"class":4165},[4152,26586,4170],{"class":4169},[4152,26588,4174],{"class":4173},[4152,26590,6047],{"class":4177},[4152,26592,4648],{"class":4181},[4152,26594,3609],{"class":4177},[4152,26596,26597],{"class":4181},"titleRow",[4152,26599,9098],{"class":4177},[4152,26601,5647],{"class":4181},[4152,26603,17161],{"class":4181},[4152,26605,3609],{"class":4177},[4152,26607,24107],{"class":4181},[4152,26609,9110],{"class":4177},[4152,26611,4209],{"class":4173},[4152,26613,4658],{"class":4158},[4152,26615,26616,26618,26620,26622,26624,26626,26629,26631,26633,26635,26637,26639,26641,26643,26645,26647,26650,26652],{"class":4154,"line":5115},[4152,26617,6074],{"class":4158},[4152,26619,12730],{"class":4162},[4152,26621,24173],{"class":4165},[4152,26623,4170],{"class":4169},[4152,26625,25145],{"class":4202},[4152,26627,26628],{"class":4165}," numberOfLines",[4152,26630,4170],{"class":4169},[4152,26632,4174],{"class":4173},[4152,26634,4473],{"class":4185},[4152,26636,4209],{"class":4173},[4152,26638,4166],{"class":4165},[4152,26640,4170],{"class":4169},[4152,26642,4174],{"class":4173},[4152,26644,4648],{"class":4181},[4152,26646,3609],{"class":4177},[4152,26648,26649],{"class":4181},"titleFlex",[4152,26651,4209],{"class":4173},[4152,26653,4658],{"class":4158},[4152,26655,26656,26658,26660,26662,26664],{"class":4154,"line":5125},[4152,26657,24966],{"class":4173},[4152,26659,23942],{"class":4181},[4152,26661,3609],{"class":4177},[4152,26663,4679],{"class":4181},[4152,26665,4782],{"class":4173},[4152,26667,26668,26670,26672],{"class":4154,"line":5136},[4152,26669,8105],{"class":4158},[4152,26671,12730],{"class":4162},[4152,26673,4658],{"class":4158},[4152,26675,26676,26678,26680,26682,26684,26686,26688,26690,26692,26694,26696,26699,26701],{"class":4154,"line":5146},[4152,26677,6074],{"class":4158},[4152,26679,12730],{"class":4162},[4152,26681,24173],{"class":4165},[4152,26683,4170],{"class":4169},[4152,26685,24202],{"class":4202},[4152,26687,4166],{"class":4165},[4152,26689,4170],{"class":4169},[4152,26691,4174],{"class":4173},[4152,26693,4648],{"class":4181},[4152,26695,3609],{"class":4177},[4152,26697,26698],{"class":4181},"dates",[4152,26700,4209],{"class":4173},[4152,26702,4658],{"class":4158},[4152,26704,26705,26707,26709,26711,26714],{"class":4154,"line":5156},[4152,26706,24966],{"class":4173},[4152,26708,23942],{"class":4181},[4152,26710,3609],{"class":4177},[4152,26712,26713],{"class":4181},"dateLabel",[4152,26715,4782],{"class":4173},[4152,26717,26718,26720,26722],{"class":4154,"line":5161},[4152,26719,8105],{"class":4158},[4152,26721,12730],{"class":4162},[4152,26723,4658],{"class":4158},[4152,26725,26726,26728,26730],{"class":4154,"line":5176},[4152,26727,6107],{"class":4158},[4152,26729,3967],{"class":4162},[4152,26731,4658],{"class":4158},[4152,26733,26734,26736],{"class":4154,"line":5192},[4152,26735,4875],{"class":4158},[4152,26737,24262],{"class":4162},[4152,26739,26740,26743,26745,26747,26749],{"class":4154,"line":5219},[4152,26741,26742],{"class":4165},"          numberOfLines",[4152,26744,4170],{"class":4169},[4152,26746,4174],{"class":4173},[4152,26748,5524],{"class":4185},[4152,26750,4782],{"class":4173},[4152,26752,26753,26755,26757,26759,26761,26763,26765,26767,26769,26771,26773,26775,26777,26779,26781],{"class":4154,"line":6529},[4152,26754,6217],{"class":4165},[4152,26756,4170],{"class":4169},[4152,26758,4174],{"class":4173},[4152,26760,4178],{"class":4177},[4152,26762,6654],{"class":4181},[4152,26764,17161],{"class":4181},[4152,26766,3609],{"class":4177},[4152,26768,24134],{"class":4181},[4152,26770,3536],{"class":4177},[4152,26772,5068],{"class":4181},[4152,26774,9103],{"class":4181},[4152,26776,3609],{"class":4177},[4152,26778,9693],{"class":4181},[4152,26780,4206],{"class":4177},[4152,26782,4782],{"class":4173},[4152,26784,26785],{"class":4154,"line":6534},[4152,26786,6277],{"class":4158},[4152,26788,26789,26791,26793,26795,26798],{"class":4154,"line":6562},[4152,26790,8267],{"class":4173},[4152,26792,23942],{"class":4181},[4152,26794,3609],{"class":4177},[4152,26796,26797],{"class":4181},"description",[4152,26799,4782],{"class":4173},[4152,26801,26802,26804,26806],{"class":4154,"line":6570},[4152,26803,6107],{"class":4158},[4152,26805,12730],{"class":4162},[4152,26807,4658],{"class":4158},[4152,26809,26810,26812,26814,26816,26818,26820,26822,26824,26826,26828,26830,26832,26834,26836,26838,26840,26842],{"class":4154,"line":6580},[4152,26811,4875],{"class":4158},[4152,26813,3967],{"class":4162},[4152,26815,4166],{"class":4165},[4152,26817,4170],{"class":4169},[4152,26819,4174],{"class":4173},[4152,26821,6047],{"class":4177},[4152,26823,4648],{"class":4181},[4152,26825,3609],{"class":4177},[4152,26827,25285],{"class":4181},[4152,26829,9098],{"class":4177},[4152,26831,6654],{"class":4181},[4152,26833,17161],{"class":4181},[4152,26835,3609],{"class":4177},[4152,26837,24107],{"class":4181},[4152,26839,9110],{"class":4177},[4152,26841,4209],{"class":4173},[4152,26843,4658],{"class":4158},[4152,26845,26846,26848,26850,26852,26854,26856,26859,26861,26863,26865,26867,26869,26871],{"class":4154,"line":6589},[4152,26847,6074],{"class":4158},[4152,26849,12730],{"class":4162},[4152,26851,24173],{"class":4165},[4152,26853,4170],{"class":4169},[4152,26855,24202],{"class":4202},[4152,26857,26858],{"class":4165}," color",[4152,26860,4170],{"class":4169},[4152,26862,4174],{"class":4173},[4152,26864,9898],{"class":4181},[4152,26866,3609],{"class":4177},[4152,26868,9516],{"class":4181},[4152,26870,4209],{"class":4173},[4152,26872,4658],{"class":4158},[4152,26874,26875],{"class":4154,"line":6598},[4152,26876,26877],{"class":4169},"            Відкрити\n",[4152,26879,26880,26882,26884],{"class":4154,"line":6603},[4152,26881,8105],{"class":4158},[4152,26883,12730],{"class":4162},[4152,26885,4658],{"class":4158},[4152,26887,26888,26890,26892],{"class":4154,"line":6629},[4152,26889,6107],{"class":4158},[4152,26891,3967],{"class":4162},[4152,26893,4658],{"class":4158},[4152,26895,26896,26898,26900],{"class":4154,"line":6662},[4152,26897,4730],{"class":4158},[4152,26899,3967],{"class":4162},[4152,26901,4658],{"class":4158},[4152,26903,26904,26906,26908],{"class":4154,"line":8168},[4152,26905,4933],{"class":4158},[4152,26907,4493],{"class":4162},[4152,26909,4658],{"class":4158},[4152,26911,26912],{"class":4154,"line":8187},[4152,26913,4943],{"class":4169},[4152,26915,26916],{"class":4154,"line":8198},[4152,26917,4782],{"class":4169},[4152,26919,26920],{"class":4154,"line":8214},[4152,26921,4566],{"emptyLinePlaceholder":4565},[4152,26923,26924,26926,26928,26930,26932,26934,26936],{"class":4154,"line":8229},[4152,26925,4959],{"class":4173},[4152,26927,4831],{"class":4597},[4152,26929,4964],{"class":4169},[4152,26931,3572],{"class":4181},[4152,26933,3609],{"class":4169},[4152,26935,4264],{"class":4581},[4152,26937,4973],{"class":4169},[4152,26939,26940,26942],{"class":4154,"line":8236},[4152,26941,6471],{"class":4181},[4152,26943,4982],{"class":4169},[4152,26945,26946,26948,26950],{"class":4154,"line":8241},[4152,26947,5719],{"class":4181},[4152,26949,4186],{"class":4185},[4152,26951,4819],{"class":4169},[4152,26953,26954,26956,26958],{"class":4154,"line":8264},[4152,26955,6521],{"class":4181},[4152,26957,6524],{"class":4202},[4152,26959,4819],{"class":4169},[4152,26961,26962,26965,26967,26969,26972],{"class":4154,"line":8284},[4152,26963,26964],{"class":4169},"    ...",[4152,26966,26086],{"class":4181},[4152,26968,3609],{"class":4169},[4152,26970,26971],{"class":4581},"select",[4152,26973,4973],{"class":4169},[4152,26975,26976,26979],{"class":4154,"line":8293},[4152,26977,26978],{"class":4181},"      ios:",[4152,26980,4982],{"class":4169},[4152,26982,26983,26986,26988],{"class":4154,"line":8302},[4152,26984,26985],{"class":4181},"        shadowColor:",[4152,26987,12976],{"class":4202},[4152,26989,4819],{"class":4169},[4152,26991,26992,26995,26998],{"class":4154,"line":8307},[4152,26993,26994],{"class":4181},"        shadowOpacity:",[4152,26996,26997],{"class":4185}," 0.08",[4152,26999,4819],{"class":4169},[4152,27001,27002,27005,27007],{"class":4154,"line":8330},[4152,27003,27004],{"class":4181},"        shadowRadius:",[4152,27006,6439],{"class":4185},[4152,27008,4819],{"class":4169},[4152,27010,27011,27014,27016,27019,27021,27023,27026,27028],{"class":4154,"line":8336},[4152,27012,27013],{"class":4181},"        shadowOffset:",[4152,27015,4514],{"class":4169},[4152,27017,27018],{"class":4181},"width:",[4152,27020,25480],{"class":4185},[4152,27022,3536],{"class":4169},[4152,27024,27025],{"class":4181},"height:",[4152,27027,6657],{"class":4185},[4152,27029,5074],{"class":4169},[4152,27031,27032],{"class":4154,"line":8345},[4152,27033,23253],{"class":4169},[4152,27035,27036,27039],{"class":4154,"line":8354},[4152,27037,27038],{"class":4181},"      android:",[4152,27040,4982],{"class":4169},[4152,27042,27043,27046,27049],{"class":4154,"line":8359},[4152,27044,27045],{"class":4181},"        elevation:",[4152,27047,27048],{"class":4185}," 3",[4152,27050,4819],{"class":4169},[4152,27052,27053],{"class":4154,"line":8364},[4152,27054,23253],{"class":4169},[4152,27056,27057,27060],{"class":4154,"line":8369},[4152,27058,27059],{"class":4181},"      default:",[4152,27061,27062],{"class":4169}," {},\n",[4152,27064,27065],{"class":4154,"line":8386},[4152,27066,27067],{"class":4169},"    }),\n",[4152,27069,27070],{"class":4154,"line":8393},[4152,27071,5041],{"class":4169},[4152,27073,27074,27077],{"class":4154,"line":8402},[4152,27075,27076],{"class":4181},"  cardPressed:",[4152,27078,4982],{"class":4169},[4152,27080,27081,27084,27087],{"class":4154,"line":8411},[4152,27082,27083],{"class":4181},"    opacity:",[4152,27085,27086],{"class":4185}," 0.92",[4152,27088,4819],{"class":4169},[4152,27090,27091],{"class":4154,"line":8420},[4152,27092,5041],{"class":4169},[4152,27094,27095,27098],{"class":4154,"line":8429},[4152,27096,27097],{"class":4181},"  cover:",[4152,27099,4982],{"class":4169},[4152,27101,27102,27104,27107],{"class":4154,"line":8438},[4152,27103,21097],{"class":4181},[4152,27105,27106],{"class":4202}," '100%'",[4152,27108,4819],{"class":4169},[4152,27110,27111,27113,27116],{"class":4154,"line":8443},[4152,27112,6478],{"class":4181},[4152,27114,27115],{"class":4185}," 160",[4152,27117,4819],{"class":4169},[4152,27119,27120],{"class":4154,"line":8456},[4152,27121,5041],{"class":4169},[4152,27123,27124,27127],{"class":4154,"line":8476},[4152,27125,27126],{"class":4181},"  body:",[4152,27128,27062],{"class":4169},[4152,27130,27131,27134],{"class":4154,"line":8506},[4152,27132,27133],{"class":4181},"  titleRow:",[4152,27135,4982],{"class":4169},[4152,27137,27138,27140,27142],{"class":4154,"line":8513},[4152,27139,20960],{"class":4181},[4152,27141,12404],{"class":4202},[4152,27143,4819],{"class":4169},[4152,27145,27146,27148,27150],{"class":4154,"line":8522},[4152,27147,5149],{"class":4181},[4152,27149,5022],{"class":4202},[4152,27151,4819],{"class":4169},[4152,27153,27154],{"class":4154,"line":8531},[4152,27155,5041],{"class":4169},[4152,27157,27158,27161],{"class":4154,"line":8540},[4152,27159,27160],{"class":4181},"  titleFlex:",[4152,27162,4982],{"class":4169},[4152,27164,27165,27167,27169],{"class":4154,"line":8549},[4152,27166,4988],{"class":4181},[4152,27168,4186],{"class":4185},[4152,27170,4819],{"class":4169},[4152,27172,27173],{"class":4154,"line":8558},[4152,27174,5041],{"class":4169},[4152,27176,27177,27180],{"class":4154,"line":8569},[4152,27178,27179],{"class":4181},"  dates:",[4152,27181,4982],{"class":4169},[4152,27183,27184,27187,27189],{"class":4154,"line":8578},[4152,27185,27186],{"class":4181},"    flexShrink:",[4152,27188,25480],{"class":4185},[4152,27190,4819],{"class":4169},[4152,27192,27193],{"class":4154,"line":8583},[4152,27194,5041],{"class":4169},[4152,27196,27197,27199],{"class":4154,"line":8610},[4152,27198,25695],{"class":4181},[4152,27200,4982],{"class":4169},[4152,27202,27203,27205,27207],{"class":4154,"line":8642},[4152,27204,5149],{"class":4181},[4152,27206,15008],{"class":4202},[4152,27208,4819],{"class":4169},[4152,27210,27211],{"class":4154,"line":8674},[4152,27212,5041],{"class":4169},[4152,27214,27215],{"class":4154,"line":8681},[4152,27216,5222],{"class":4169},[4143,27218,27220],{"className":4145,"code":27219,"filename":15487,"language":4147,"meta":4148,"style":4148},"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",[3533,27221,27222,27228,27234,27241,27247,27253,27259,27265,27275,27296,27300,27306,27313,27321,27330,27341,27366,27370,27375,27393,27397,27405,27410,27420,27430,27450,27460,27474,27487,27501,27505,27509,27533,27537,27545,27555,27573,27581,27603,27611,27615,27635,27639,27643,27652,27662,27667,27677,27681,27685,27695,27701,27711,27721,27734,27749,27764,27768,27792,27802,27806,27810,27830,27856,27860,27877,27886,27893,27900,27907,27914,27923,27930,27937,27941,27961,27965,27969,27975,28005,28009,28013,28017,28031,28047,28057,28072,28076,28084],{"__ignoreMap":4148},[4152,27223,27224,27226],{"class":4154,"line":4155},[4152,27225,4511],{"class":4510},[4152,27227,4982],{"class":4169},[4152,27229,27230,27232],{"class":4154,"line":4532},[4152,27231,17246],{"class":4181},[4152,27233,4819],{"class":4169},[4152,27235,27236,27239],{"class":4154,"line":4562},[4152,27237,27238],{"class":4181},"  ReactNode",[4152,27240,4819],{"class":4169},[4152,27242,27243,27245],{"class":4154,"line":4569},[4152,27244,17253],{"class":4181},[4152,27246,4819],{"class":4169},[4152,27248,27249,27251],{"class":4154,"line":4588},[4152,27250,17260],{"class":4181},[4152,27252,4819],{"class":4169},[4152,27254,27255,27257],{"class":4154,"line":4620},[4152,27256,17267],{"class":4181},[4152,27258,4819],{"class":4169},[4152,27260,27261,27263],{"class":4154,"line":4625},[4152,27262,17274],{"class":4181},[4152,27264,4819],{"class":4169},[4152,27266,27267,27269,27271,27273],{"class":4154,"line":4634},[4152,27268,13523],{"class":4169},[4152,27270,4523],{"class":4510},[4152,27272,4526],{"class":4202},[4152,27274,4529],{"class":4169},[4152,27276,27277,27279,27281,27283,27285,27288,27290,27292,27294],{"class":4154,"line":4661},[4152,27278,4511],{"class":4510},[4152,27280,4514],{"class":4169},[4152,27282,3543],{"class":4181},[4152,27284,7650],{"class":4510},[4152,27286,27287],{"class":4181}," useSystemColorScheme",[4152,27289,4520],{"class":4169},[4152,27291,4523],{"class":4510},[4152,27293,4557],{"class":4202},[4152,27295,4529],{"class":4169},[4152,27297,27298],{"class":4154,"line":4697},[4152,27299,4566],{"emptyLinePlaceholder":4565},[4152,27301,27302,27304],{"class":4154,"line":4721},[4152,27303,4511],{"class":4510},[4152,27305,4982],{"class":4169},[4152,27307,27308,27311],{"class":4154,"line":4727},[4152,27309,27310],{"class":4181},"  colorsForScheme",[4152,27312,4819],{"class":4169},[4152,27314,27315,27317,27319],{"class":4154,"line":4737},[4152,27316,17281],{"class":4510},[4152,27318,15609],{"class":4181},[4152,27320,4819],{"class":4169},[4152,27322,27323,27325,27328],{"class":4154,"line":4745},[4152,27324,17281],{"class":4510},[4152,27326,27327],{"class":4181}," ColorTokens",[4152,27329,4819],{"class":4169},[4152,27331,27332,27334,27336,27339],{"class":4154,"line":4785},[4152,27333,13523],{"class":4169},[4152,27335,4523],{"class":4510},[4152,27337,27338],{"class":4202}," '.\u002Fcolors'",[4152,27340,4529],{"class":4169},[4152,27342,27343,27345,27347,27349,27351,27353,27355,27357,27359,27361,27364],{"class":4154,"line":4808},[4152,27344,4511],{"class":4510},[4152,27346,4514],{"class":4169},[4152,27348,4409],{"class":4181},[4152,27350,3536],{"class":4169},[4152,27352,17040],{"class":4181},[4152,27354,3536],{"class":4169},[4152,27356,19245],{"class":4181},[4152,27358,4520],{"class":4169},[4152,27360,4523],{"class":4510},[4152,27362,27363],{"class":4202}," '.\u002Ftokens'",[4152,27365,4529],{"class":4169},[4152,27367,27368],{"class":4154,"line":4822},[4152,27369,4566],{"emptyLinePlaceholder":4565},[4152,27371,27372],{"class":4154,"line":4841},[4152,27373,27374],{"class":5327},"\u002F** Що обрав користувач: слідувати системі або примусово light\u002Fdark. *\u002F\n",[4152,27376,27377,27379,27381,27383,27385,27387,27389,27391],{"class":4154,"line":4858},[4152,27378,4572],{"class":4510},[4152,27380,25747],{"class":4173},[4152,27382,15587],{"class":4162},[4152,27384,4964],{"class":4169},[4152,27386,15592],{"class":4202},[4152,27388,10820],{"class":4169},[4152,27390,15673],{"class":4162},[4152,27392,4529],{"class":4169},[4152,27394,27395],{"class":4154,"line":4866},[4152,27396,4566],{"emptyLinePlaceholder":4565},[4152,27398,27399,27401,27403],{"class":4154,"line":4872},[4152,27400,15584],{"class":4173},[4152,27402,15892],{"class":4162},[4152,27404,10591],{"class":4169},[4152,27406,27407],{"class":4154,"line":4921},[4152,27408,27409],{"class":5327},"  \u002F** Фактична схема, якою малюємо UI. *\u002F\n",[4152,27411,27412,27414,27416,27418],{"class":4154,"line":4930},[4152,27413,15899],{"class":4181},[4152,27415,13648],{"class":4169},[4152,27417,15673],{"class":4162},[4152,27419,4529],{"class":4169},[4152,27421,27422,27424,27426,27428],{"class":4154,"line":4940},[4152,27423,15638],{"class":4181},[4152,27425,13648],{"class":4169},[4152,27427,15643],{"class":4162},[4152,27429,4529],{"class":4169},[4152,27431,27432,27434,27436,27438,27440,27442,27444,27446,27448],{"class":4154,"line":4946},[4152,27433,15932],{"class":4581},[4152,27435,15935],{"class":4169},[4152,27437,13061],{"class":4181},[4152,27439,13648],{"class":4169},[4152,27441,15643],{"class":4162},[4152,27443,4770],{"class":4169},[4152,27445,4758],{"class":4173},[4152,27447,15956],{"class":4162},[4152,27449,4529],{"class":4169},[4152,27451,27452,27454,27456,27458],{"class":4154,"line":4951},[4152,27453,15963],{"class":4181},[4152,27455,13648],{"class":4169},[4152,27457,13414],{"class":4162},[4152,27459,4529],{"class":4169},[4152,27461,27462,27465,27467,27469,27472],{"class":4154,"line":4956},[4152,27463,27464],{"class":4181},"  spacing",[4152,27466,13648],{"class":4169},[4152,27468,15968],{"class":4173},[4152,27470,27471],{"class":4181}," space",[4152,27473,4529],{"class":4169},[4152,27475,27476,27479,27481,27483,27485],{"class":4154,"line":4976},[4152,27477,27478],{"class":4181},"  radius",[4152,27480,13648],{"class":4169},[4152,27482,15968],{"class":4173},[4152,27484,26407],{"class":4181},[4152,27486,4529],{"class":4169},[4152,27488,27489,27492,27494,27496,27499],{"class":4154,"line":4985},[4152,27490,27491],{"class":4181},"  fontSize",[4152,27493,13648],{"class":4169},[4152,27495,15968],{"class":4173},[4152,27497,27498],{"class":4181}," fontSize",[4152,27500,4529],{"class":4169},[4152,27502,27503],{"class":4154,"line":4995},[4152,27504,10682],{"class":4169},[4152,27506,27507],{"class":4154,"line":5005},[4152,27508,4566],{"emptyLinePlaceholder":4565},[4152,27510,27511,27513,27515,27517,27519,27521,27523,27525,27527,27529,27531],{"class":4154,"line":5016},[4152,27512,4959],{"class":4173},[4152,27514,15995],{"class":4597},[4152,27516,4964],{"class":4169},[4152,27518,15247],{"class":4581},[4152,27520,4159],{"class":4169},[4152,27522,16004],{"class":4162},[4152,27524,10820],{"class":4169},[4152,27526,5519],{"class":4162},[4152,27528,10826],{"class":4169},[4152,27530,5519],{"class":4173},[4152,27532,4617],{"class":4169},[4152,27534,27535],{"class":4154,"line":5027},[4152,27536,4566],{"emptyLinePlaceholder":4565},[4152,27538,27539,27541,27543],{"class":4154,"line":5038},[4152,27540,9295],{"class":4173},[4152,27542,15630],{"class":4581},[4152,27544,15633],{"class":4169},[4152,27546,27547,27549,27551,27553],{"class":4154,"line":5044},[4152,27548,15638],{"class":4181},[4152,27550,13648],{"class":4169},[4152,27552,15643],{"class":4162},[4152,27554,4819],{"class":4169},[4152,27556,27557,27559,27561,27563,27565,27567,27569,27571],{"class":4154,"line":5077},[4152,27558,15650],{"class":4181},[4152,27560,13648],{"class":4169},[4152,27562,15655],{"class":4162},[4152,27564,10820],{"class":4169},[4152,27566,5519],{"class":4162},[4152,27568,10820],{"class":4169},[4152,27570,9239],{"class":4162},[4152,27572,4819],{"class":4169},[4152,27574,27575,27577,27579],{"class":4154,"line":5107},[4152,27576,15670],{"class":4169},[4152,27578,15673],{"class":4162},[4152,27580,4982],{"class":4169},[4152,27582,27583,27585,27587,27589,27591,27593,27595,27597,27599,27601],{"class":4154,"line":5115},[4152,27584,15680],{"class":4510},[4152,27586,3627],{"class":4169},[4152,27588,13359],{"class":4181},[4152,27590,10868],{"class":4169},[4152,27592,10817],{"class":4202},[4152,27594,15691],{"class":4169},[4152,27596,13359],{"class":4181},[4152,27598,10868],{"class":4169},[4152,27600,10823],{"class":4202},[4152,27602,13657],{"class":4169},[4152,27604,27605,27607,27609],{"class":4154,"line":5125},[4152,27606,15704],{"class":4510},[4152,27608,15707],{"class":4181},[4152,27610,4529],{"class":4169},[4152,27612,27613],{"class":4154,"line":5136},[4152,27614,15718],{"class":4169},[4152,27616,27617,27619,27621,27623,27625,27627,27629,27631,27633],{"class":4154,"line":5146},[4152,27618,4628],{"class":4510},[4152,27620,15730],{"class":4181},[4152,27622,10868],{"class":4169},[4152,27624,10823],{"class":4202},[4152,27626,10873],{"class":4169},[4152,27628,10823],{"class":4202},[4152,27630,10878],{"class":4169},[4152,27632,10817],{"class":4202},[4152,27634,4529],{"class":4169},[4152,27636,27637],{"class":4154,"line":5156},[4152,27638,4782],{"class":4169},[4152,27640,27641],{"class":4154,"line":5161},[4152,27642,4566],{"emptyLinePlaceholder":4565},[4152,27644,27645,27647,27650],{"class":4154,"line":5176},[4152,27646,15584],{"class":4173},[4152,27648,27649],{"class":4162}," ThemeProviderProps",[4152,27651,10591],{"class":4169},[4152,27653,27654,27656,27658,27660],{"class":4154,"line":5192},[4152,27655,16068],{"class":4181},[4152,27657,13648],{"class":4169},[4152,27659,15852],{"class":4162},[4152,27661,4529],{"class":4169},[4152,27663,27664],{"class":4154,"line":5219},[4152,27665,27666],{"class":5327},"  \u002F** Початкова перевага (за замовчуванням — як у системі). *\u002F\n",[4152,27668,27669,27671,27673,27675],{"class":4154,"line":6529},[4152,27670,16075],{"class":4181},[4152,27672,16103],{"class":4169},[4152,27674,15643],{"class":4162},[4152,27676,4529],{"class":4169},[4152,27678,27679],{"class":4154,"line":6534},[4152,27680,10682],{"class":4169},[4152,27682,27683],{"class":4154,"line":6562},[4152,27684,4566],{"emptyLinePlaceholder":4565},[4152,27686,27687,27689,27691,27693],{"class":4154,"line":6570},[4152,27688,4572],{"class":4510},[4152,27690,4578],{"class":4173},[4152,27692,16061],{"class":4581},[4152,27694,4973],{"class":4169},[4152,27696,27697,27699],{"class":4154,"line":6580},[4152,27698,16068],{"class":4181},[4152,27700,4819],{"class":4169},[4152,27702,27703,27705,27707,27709],{"class":4154,"line":6589},[4152,27704,16075],{"class":4181},[4152,27706,4964],{"class":4169},[4152,27708,15592],{"class":4202},[4152,27710,4819],{"class":4169},[4152,27712,27713,27716,27719],{"class":4154,"line":6598},[4152,27714,27715],{"class":4169},"}: ",[4152,27717,27718],{"class":4162},"ThemeProviderProps",[4152,27720,13657],{"class":4169},[4152,27722,27723,27725,27727,27729,27732],{"class":4154,"line":6603},[4152,27724,4591],{"class":4173},[4152,27726,16165],{"class":4597},[4152,27728,4964],{"class":4169},[4152,27730,27731],{"class":4581},"useSystemColorScheme",[4152,27733,12917],{"class":4169},[4152,27735,27736,27738,27740,27742,27744,27746],{"class":4154,"line":6629},[4152,27737,4591],{"class":4173},[4152,27739,4594],{"class":4169},[4152,27741,13359],{"class":4597},[4152,27743,3536],{"class":4169},[4152,27745,16138],{"class":4597},[4152,27747,27748],{"class":4169},"] =\n",[4152,27750,27751,27754,27756,27758,27760,27762],{"class":4154,"line":6662},[4152,27752,27753],{"class":4581},"    useState",[4152,27755,4159],{"class":4169},[4152,27757,15643],{"class":4162},[4152,27759,10826],{"class":4169},[4152,27761,16147],{"class":4181},[4152,27763,4617],{"class":4169},[4152,27765,27766],{"class":4154,"line":8168},[4152,27767,4566],{"emptyLinePlaceholder":4565},[4152,27769,27770,27772,27774,27776,27778,27780,27782,27784,27786,27788,27790],{"class":4154,"line":8187},[4152,27771,4591],{"class":4173},[4152,27773,16251],{"class":4597},[4152,27775,4964],{"class":4169},[4152,27777,15847],{"class":4581},[4152,27779,4764],{"class":4169},[4152,27781,13061],{"class":4181},[4152,27783,13648],{"class":4169},[4152,27785,15643],{"class":4162},[4152,27787,4770],{"class":4169},[4152,27789,4758],{"class":4173},[4152,27791,4982],{"class":4169},[4152,27793,27794,27796,27798,27800],{"class":4154,"line":8198},[4152,27795,16276],{"class":4581},[4152,27797,4611],{"class":4169},[4152,27799,13061],{"class":4181},[4152,27801,4617],{"class":4169},[4152,27803,27804],{"class":4154,"line":8214},[4152,27805,16287],{"class":4169},[4152,27807,27808],{"class":4154,"line":8229},[4152,27809,4566],{"emptyLinePlaceholder":4565},[4152,27811,27812,27814,27816,27818,27820,27822,27824,27826,27828],{"class":4154,"line":8236},[4152,27813,4591],{"class":4173},[4152,27815,12910],{"class":4597},[4152,27817,4964],{"class":4169},[4152,27819,16191],{"class":4581},[4152,27821,4611],{"class":4169},[4152,27823,13359],{"class":4181},[4152,27825,3536],{"class":4169},[4152,27827,16200],{"class":4181},[4152,27829,4617],{"class":4169},[4152,27831,27832,27834,27836,27838,27840,27842,27844,27846,27848,27850,27852,27854],{"class":4154,"line":8241},[4152,27833,4591],{"class":4173},[4152,27835,9103],{"class":4597},[4152,27837,4964],{"class":4169},[4152,27839,15838],{"class":4581},[4152,27841,16224],{"class":4169},[4152,27843,4758],{"class":4173},[4152,27845,13641],{"class":4581},[4152,27847,4611],{"class":4169},[4152,27849,12929],{"class":4181},[4152,27851,16235],{"class":4169},[4152,27853,12929],{"class":4181},[4152,27855,16240],{"class":4169},[4152,27857,27858],{"class":4154,"line":8264},[4152,27859,4566],{"emptyLinePlaceholder":4565},[4152,27861,27862,27864,27866,27868,27870,27872,27874],{"class":4154,"line":8284},[4152,27863,4591],{"class":4173},[4152,27865,16303],{"class":4597},[4152,27867,4964],{"class":4169},[4152,27869,15838],{"class":4581},[4152,27871,4159],{"class":4169},[4152,27873,16004],{"class":4162},[4152,27875,27876],{"class":4169},">(\n",[4152,27878,27879,27881,27883],{"class":4154,"line":8293},[4152,27880,16314],{"class":4169},[4152,27882,4758],{"class":4173},[4152,27884,27885],{"class":4169}," ({\n",[4152,27887,27888,27891],{"class":4154,"line":8302},[4152,27889,27890],{"class":4181},"      scheme",[4152,27892,4819],{"class":4169},[4152,27894,27895,27898],{"class":4154,"line":8307},[4152,27896,27897],{"class":4181},"      preference",[4152,27899,4819],{"class":4169},[4152,27901,27902,27905],{"class":4154,"line":8330},[4152,27903,27904],{"class":4181},"      setPreference",[4152,27906,4819],{"class":4169},[4152,27908,27909,27912],{"class":4154,"line":8336},[4152,27910,27911],{"class":4181},"      colors",[4152,27913,4819],{"class":4169},[4152,27915,27916,27919,27921],{"class":4154,"line":8345},[4152,27917,27918],{"class":4181},"      spacing:",[4152,27920,27471],{"class":4181},[4152,27922,4819],{"class":4169},[4152,27924,27925,27928],{"class":4154,"line":8354},[4152,27926,27927],{"class":4181},"      radius",[4152,27929,4819],{"class":4169},[4152,27931,27932,27935],{"class":4154,"line":8359},[4152,27933,27934],{"class":4181},"      fontSize",[4152,27936,4819],{"class":4169},[4152,27938,27939],{"class":4154,"line":8364},[4152,27940,27067],{"class":4169},[4152,27942,27943,27945,27947,27949,27951,27953,27955,27957,27959],{"class":4154,"line":8369},[4152,27944,16342],{"class":4169},[4152,27946,12929],{"class":4181},[4152,27948,3536],{"class":4169},[4152,27950,13359],{"class":4181},[4152,27952,3536],{"class":4169},[4152,27954,16330],{"class":4181},[4152,27956,3536],{"class":4169},[4152,27958,9898],{"class":4181},[4152,27960,16359],{"class":4169},[4152,27962,27963],{"class":4154,"line":8386},[4152,27964,4943],{"class":4169},[4152,27966,27967],{"class":4154,"line":8393},[4152,27968,4566],{"emptyLinePlaceholder":4565},[4152,27970,27971,27973],{"class":4154,"line":8402},[4152,27972,4628],{"class":4510},[4152,27974,4631],{"class":4169},[4152,27976,27977,27979,27981,27983,27985,27987,27989,27991,27993,27995,27997,27999,28001,28003],{"class":4154,"line":8411},[4152,27978,4637],{"class":4158},[4152,27980,16025],{"class":4162},[4152,27982,16303],{"class":4165},[4152,27984,4170],{"class":4169},[4152,27986,4174],{"class":4173},[4152,27988,13061],{"class":4181},[4152,27990,4209],{"class":4173},[4152,27992,4684],{"class":4158},[4152,27994,4174],{"class":4173},[4152,27996,15343],{"class":4181},[4152,27998,4209],{"class":4173},[4152,28000,4690],{"class":4158},[4152,28002,16025],{"class":4162},[4152,28004,4658],{"class":4158},[4152,28006,28007],{"class":4154,"line":8420},[4152,28008,4943],{"class":4169},[4152,28010,28011],{"class":4154,"line":8429},[4152,28012,4782],{"class":4169},[4152,28014,28015],{"class":4154,"line":8438},[4152,28016,4566],{"emptyLinePlaceholder":4565},[4152,28018,28019,28021,28023,28025,28027,28029],{"class":4154,"line":8443},[4152,28020,4572],{"class":4510},[4152,28022,4578],{"class":4173},[4152,28024,16483],{"class":4581},[4152,28026,16486],{"class":4169},[4152,28028,16004],{"class":4162},[4152,28030,4982],{"class":4169},[4152,28032,28033,28035,28037,28039,28041,28043,28045],{"class":4154,"line":8456},[4152,28034,4591],{"class":4173},[4152,28036,16497],{"class":4597},[4152,28038,4964],{"class":4169},[4152,28040,15298],{"class":4581},[4152,28042,4611],{"class":4169},[4152,28044,16019],{"class":4181},[4152,28046,4617],{"class":4169},[4152,28048,28049,28051,28053,28055],{"class":4154,"line":8476},[4152,28050,15680],{"class":4510},[4152,28052,16514],{"class":4169},[4152,28054,16517],{"class":4181},[4152,28056,13657],{"class":4169},[4152,28058,28059,28061,28063,28065,28067,28070],{"class":4154,"line":8506},[4152,28060,16524],{"class":4510},[4152,28062,16527],{"class":4173},[4152,28064,16530],{"class":4581},[4152,28066,4611],{"class":4169},[4152,28068,28069],{"class":4202},"'useTheme() потрібно викликати всередині \u003CThemeProvider>.'",[4152,28071,4617],{"class":4169},[4152,28073,28074],{"class":4154,"line":8513},[4152,28075,15718],{"class":4169},[4152,28077,28078,28080,28082],{"class":4154,"line":8522},[4152,28079,4628],{"class":4510},[4152,28081,16497],{"class":4181},[4152,28083,4529],{"class":4169},[4152,28085,28086],{"class":4154,"line":8531},[4152,28087,4782],{"class":4169},[4143,28089,28091],{"className":9889,"code":28090,"filename":19225,"language":9891,"meta":4148,"style":4148},"\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",[3533,28092,28093,28098,28103,28108,28113,28117,28127,28135,28143,28151,28159,28167,28175,28183,28191,28199,28209,28213,28223,28231,28239,28247,28255,28263,28271,28279,28287,28295,28305,28309,28319,28345,28349,28353,28371,28375,28397,28420],{"__ignoreMap":4148},[4152,28094,28095],{"class":4154,"line":4155},[4152,28096,28097],{"class":5327},"\u002F**\n",[4152,28099,28100],{"class":4154,"line":4532},[4152,28101,28102],{"class":5327}," * Семантичні кольори: назва = роль на екрані, не «синій-500».\n",[4152,28104,28105],{"class":4154,"line":4562},[4152,28106,28107],{"class":5327}," * light \u002F dark — дві палітри з однаковими ключами.\n",[4152,28109,28110],{"class":4154,"line":4569},[4152,28111,28112],{"class":5327}," *\u002F\n",[4152,28114,28115],{"class":4154,"line":4588},[4152,28116,4566],{"emptyLinePlaceholder":4565},[4152,28118,28119,28121,28123,28125],{"class":4154,"line":4620},[4152,28120,4572],{"class":4510},[4152,28122,11030],{"class":4173},[4152,28124,13444],{"class":4597},[4152,28126,10591],{"class":4169},[4152,28128,28129,28131,28133],{"class":4154,"line":4625},[4152,28130,10596],{"class":4181},[4152,28132,4203],{"class":4202},[4152,28134,4819],{"class":4169},[4152,28136,28137,28139,28141],{"class":4154,"line":4634},[4152,28138,10605],{"class":4181},[4152,28140,10608],{"class":4202},[4152,28142,4819],{"class":4169},[4152,28144,28145,28147,28149],{"class":4154,"line":4661},[4152,28146,10615],{"class":4181},[4152,28148,10618],{"class":4202},[4152,28150,4819],{"class":4169},[4152,28152,28153,28155,28157],{"class":4154,"line":4697},[4152,28154,10625],{"class":4181},[4152,28156,10628],{"class":4202},[4152,28158,4819],{"class":4169},[4152,28160,28161,28163,28165],{"class":4154,"line":4721},[4152,28162,10635],{"class":4181},[4152,28164,5171],{"class":4202},[4152,28166,4819],{"class":4169},[4152,28168,28169,28171,28173],{"class":4154,"line":4727},[4152,28170,10644],{"class":4181},[4152,28172,10647],{"class":4202},[4152,28174,4819],{"class":4169},[4152,28176,28177,28179,28181],{"class":4154,"line":4737},[4152,28178,10654],{"class":4181},[4152,28180,5731],{"class":4202},[4152,28182,4819],{"class":4169},[4152,28184,28185,28187,28189],{"class":4154,"line":4745},[4152,28186,10663],{"class":4181},[4152,28188,10666],{"class":4202},[4152,28190,4819],{"class":4169},[4152,28192,28193,28195,28197],{"class":4154,"line":4785},[4152,28194,10673],{"class":4181},[4152,28196,10608],{"class":4202},[4152,28198,4819],{"class":4169},[4152,28200,28201,28203,28205,28207],{"class":4154,"line":4808},[4152,28202,13523],{"class":4169},[4152,28204,11027],{"class":4510},[4152,28206,11030],{"class":4173},[4152,28208,4529],{"class":4169},[4152,28210,28211],{"class":4154,"line":4822},[4152,28212,4566],{"emptyLinePlaceholder":4565},[4152,28214,28215,28217,28219,28221],{"class":4154,"line":4841},[4152,28216,4572],{"class":4510},[4152,28218,11030],{"class":4173},[4152,28220,13542],{"class":4597},[4152,28222,10591],{"class":4169},[4152,28224,28225,28227,28229],{"class":4154,"line":4858},[4152,28226,10596],{"class":4181},[4152,28228,10702],{"class":4202},[4152,28230,4819],{"class":4169},[4152,28232,28233,28235,28237],{"class":4154,"line":4866},[4152,28234,10605],{"class":4181},[4152,28236,10711],{"class":4202},[4152,28238,4819],{"class":4169},[4152,28240,28241,28243,28245],{"class":4154,"line":4872},[4152,28242,10615],{"class":4181},[4152,28244,10720],{"class":4202},[4152,28246,4819],{"class":4169},[4152,28248,28249,28251,28253],{"class":4154,"line":4921},[4152,28250,10625],{"class":4181},[4152,28252,10729],{"class":4202},[4152,28254,4819],{"class":4169},[4152,28256,28257,28259,28261],{"class":4154,"line":4930},[4152,28258,10635],{"class":4181},[4152,28260,10738],{"class":4202},[4152,28262,4819],{"class":4169},[4152,28264,28265,28267,28269],{"class":4154,"line":4940},[4152,28266,10644],{"class":4181},[4152,28268,5171],{"class":4202},[4152,28270,4819],{"class":4169},[4152,28272,28273,28275,28277],{"class":4154,"line":4946},[4152,28274,10654],{"class":4181},[4152,28276,10755],{"class":4202},[4152,28278,4819],{"class":4169},[4152,28280,28281,28283,28285],{"class":4154,"line":4951},[4152,28282,10663],{"class":4181},[4152,28284,10764],{"class":4202},[4152,28286,4819],{"class":4169},[4152,28288,28289,28291,28293],{"class":4154,"line":4956},[4152,28290,10673],{"class":4181},[4152,28292,10608],{"class":4202},[4152,28294,4819],{"class":4169},[4152,28296,28297,28299,28301,28303],{"class":4154,"line":4976},[4152,28298,13523],{"class":4169},[4152,28300,11027],{"class":4510},[4152,28302,11030],{"class":4173},[4152,28304,4529],{"class":4169},[4152,28306,28307],{"class":4154,"line":4985},[4152,28308,4566],{"emptyLinePlaceholder":4565},[4152,28310,28311,28313,28315,28317],{"class":4154,"line":4995},[4152,28312,4572],{"class":4510},[4152,28314,25747],{"class":4173},[4152,28316,27327],{"class":4162},[4152,28318,10591],{"class":4169},[4152,28320,28321,28324,28327,28330,28333,28336,28338,28341,28343],{"class":4154,"line":5005},[4152,28322,28323],{"class":4169},"  [",[4152,28325,28326],{"class":4162},"K",[4152,28328,28329],{"class":4173}," in",[4152,28331,28332],{"class":4173}," keyof",[4152,28334,28335],{"class":4173}," typeof",[4152,28337,13444],{"class":4181},[4152,28339,28340],{"class":4169},"]: ",[4152,28342,15655],{"class":4162},[4152,28344,4529],{"class":4169},[4152,28346,28347],{"class":4154,"line":5016},[4152,28348,10682],{"class":4169},[4152,28350,28351],{"class":4154,"line":5027},[4152,28352,4566],{"emptyLinePlaceholder":4565},[4152,28354,28355,28357,28359,28361,28363,28365,28367,28369],{"class":4154,"line":5038},[4152,28356,4572],{"class":4510},[4152,28358,25747],{"class":4173},[4152,28360,15609],{"class":4162},[4152,28362,4964],{"class":4169},[4152,28364,10817],{"class":4202},[4152,28366,10820],{"class":4169},[4152,28368,10823],{"class":4202},[4152,28370,4529],{"class":4169},[4152,28372,28373],{"class":4154,"line":5044},[4152,28374,4566],{"emptyLinePlaceholder":4565},[4152,28376,28377,28379,28381,28383,28385,28387,28389,28391,28393,28395],{"class":4154,"line":5077},[4152,28378,4572],{"class":4510},[4152,28380,4578],{"class":4173},[4152,28382,13641],{"class":4581},[4152,28384,4611],{"class":4169},[4152,28386,12929],{"class":4181},[4152,28388,13648],{"class":4169},[4152,28390,15673],{"class":4162},[4152,28392,15670],{"class":4169},[4152,28394,13414],{"class":4162},[4152,28396,4982],{"class":4169},[4152,28398,28399,28401,28403,28405,28407,28410,28412,28415,28417],{"class":4154,"line":5107},[4152,28400,4628],{"class":4510},[4152,28402,12910],{"class":4181},[4152,28404,10868],{"class":4169},[4152,28406,10823],{"class":4202},[4152,28408,28409],{"class":4169}," ? { ...",[4152,28411,13672],{"class":4181},[4152,28413,28414],{"class":4169}," } : { ...",[4152,28416,13677],{"class":4181},[4152,28418,28419],{"class":4169}," };\n",[4152,28421,28422],{"class":4154,"line":5115},[4152,28423,4782],{"class":4169},[4143,28425,28427],{"className":9889,"code":28426,"filename":19270,"language":9891,"meta":4148,"style":4148},"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",[3533,28428,28429,28453,28475,28503,28522,28543],{"__ignoreMap":4148},[4152,28430,28431,28433,28435,28437,28439,28441,28443,28445,28447,28449,28451],{"class":4154,"line":4155},[4152,28432,4572],{"class":4510},[4152,28434,4514],{"class":4169},[4152,28436,13677],{"class":4181},[4152,28438,3536],{"class":4169},[4152,28440,13672],{"class":4181},[4152,28442,3536],{"class":4169},[4152,28444,13698],{"class":4181},[4152,28446,4520],{"class":4169},[4152,28448,4523],{"class":4510},[4152,28450,27338],{"class":4202},[4152,28452,4529],{"class":4169},[4152,28454,28455,28457,28459,28461,28463,28465,28467,28469,28471,28473],{"class":4154,"line":4532},[4152,28456,4572],{"class":4510},[4152,28458,25747],{"class":4510},[4152,28460,4514],{"class":4169},[4152,28462,13414],{"class":4181},[4152,28464,3536],{"class":4169},[4152,28466,15673],{"class":4181},[4152,28468,4520],{"class":4169},[4152,28470,4523],{"class":4510},[4152,28472,27338],{"class":4202},[4152,28474,4529],{"class":4169},[4152,28476,28477,28479,28481,28483,28485,28487,28489,28491,28493,28495,28497,28499,28501],{"class":4154,"line":4562},[4152,28478,4572],{"class":4510},[4152,28480,4514],{"class":4169},[4152,28482,3551],{"class":4181},[4152,28484,3536],{"class":4169},[4152,28486,19245],{"class":4181},[4152,28488,3536],{"class":4169},[4152,28490,17040],{"class":4181},[4152,28492,3536],{"class":4169},[4152,28494,4409],{"class":4181},[4152,28496,4520],{"class":4169},[4152,28498,4523],{"class":4510},[4152,28500,27363],{"class":4202},[4152,28502,4529],{"class":4169},[4152,28504,28505,28507,28509,28511,28514,28516,28518,28520],{"class":4154,"line":4569},[4152,28506,4572],{"class":4510},[4152,28508,25747],{"class":4510},[4152,28510,4514],{"class":4169},[4152,28512,28513],{"class":4181},"Tokens",[4152,28515,4520],{"class":4169},[4152,28517,4523],{"class":4510},[4152,28519,27363],{"class":4202},[4152,28521,4529],{"class":4169},[4152,28523,28524,28526,28528,28530,28532,28534,28536,28538,28541],{"class":4154,"line":4588},[4152,28525,4572],{"class":4510},[4152,28527,4514],{"class":4169},[4152,28529,3750],{"class":4181},[4152,28531,3536],{"class":4169},[4152,28533,3754],{"class":4181},[4152,28535,4520],{"class":4169},[4152,28537,4523],{"class":4510},[4152,28539,28540],{"class":4202}," '.\u002FThemeProvider'",[4152,28542,4529],{"class":4169},[4152,28544,28545,28547,28549,28551,28553,28555,28557,28559],{"class":4154,"line":4620},[4152,28546,4572],{"class":4510},[4152,28548,25747],{"class":4510},[4152,28550,4514],{"class":4169},[4152,28552,15643],{"class":4181},[4152,28554,4520],{"class":4169},[4152,28556,4523],{"class":4510},[4152,28558,28540],{"class":4202},[4152,28560,4529],{"class":4169},[4143,28562,28564],{"className":9889,"code":28563,"filename":19240,"language":9891,"meta":4148,"style":4148},"\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",[3533,28565,28566,28570,28575,28580,28585,28589,28593,28603,28612,28621,28630,28639,28648,28658,28662,28672,28680,28688,28696,28706,28710,28720,28728,28736,28744,28752,28762,28766,28777,28788,28793,28800,28809,28818,28827,28836,28845,28854,28863,28872,28881,28885,28894,28900,28906,28916,28920],{"__ignoreMap":4148},[4152,28567,28568],{"class":4154,"line":4155},[4152,28569,28097],{"class":5327},[4152,28571,28572],{"class":4154,"line":4532},[4152,28573,28574],{"class":5327}," * Токени, що **не** залежать від light\u002Fdark:\n",[4152,28576,28577],{"class":4154,"line":4562},[4152,28578,28579],{"class":5327}," * відступи, радіуси, розміри шрифтів.\n",[4152,28581,28582],{"class":4154,"line":4569},[4152,28583,28584],{"class":5327}," * Кольори — у colors.ts + ThemeProvider.\n",[4152,28586,28587],{"class":4154,"line":4588},[4152,28588,28112],{"class":5327},[4152,28590,28591],{"class":4154,"line":4620},[4152,28592,4566],{"emptyLinePlaceholder":4565},[4152,28594,28595,28597,28599,28601],{"class":4154,"line":4625},[4152,28596,4572],{"class":4510},[4152,28598,11030],{"class":4173},[4152,28600,27471],{"class":4597},[4152,28602,10591],{"class":4169},[4152,28604,28605,28608,28610],{"class":4154,"line":4634},[4152,28606,28607],{"class":4181},"  xs:",[4152,28609,6657],{"class":4185},[4152,28611,4819],{"class":4169},[4152,28613,28614,28617,28619],{"class":4154,"line":4661},[4152,28615,28616],{"class":4181},"  sm:",[4152,28618,12411],{"class":4185},[4152,28620,4819],{"class":4169},[4152,28622,28623,28626,28628],{"class":4154,"line":4697},[4152,28624,28625],{"class":4181},"  md:",[4152,28627,4194],{"class":4185},[4152,28629,4819],{"class":4169},[4152,28631,28632,28635,28637],{"class":4154,"line":4721},[4152,28633,28634],{"class":4181},"  lg:",[4152,28636,5011],{"class":4185},[4152,28638,4819],{"class":4169},[4152,28640,28641,28644,28646],{"class":4154,"line":4727},[4152,28642,28643],{"class":4181},"  xl:",[4152,28645,13266],{"class":4185},[4152,28647,4819],{"class":4169},[4152,28649,28650,28652,28654,28656],{"class":4154,"line":4737},[4152,28651,13523],{"class":4169},[4152,28653,11027],{"class":4510},[4152,28655,11030],{"class":4173},[4152,28657,4529],{"class":4169},[4152,28659,28660],{"class":4154,"line":4745},[4152,28661,4566],{"emptyLinePlaceholder":4565},[4152,28663,28664,28666,28668,28670],{"class":4154,"line":4785},[4152,28665,4572],{"class":4510},[4152,28667,11030],{"class":4173},[4152,28669,26407],{"class":4597},[4152,28671,10591],{"class":4169},[4152,28673,28674,28676,28678],{"class":4154,"line":4808},[4152,28675,28616],{"class":4181},[4152,28677,12411],{"class":4185},[4152,28679,4819],{"class":4169},[4152,28681,28682,28684,28686],{"class":4154,"line":4822},[4152,28683,28625],{"class":4181},[4152,28685,5033],{"class":4185},[4152,28687,4819],{"class":4169},[4152,28689,28690,28692,28694],{"class":4154,"line":4841},[4152,28691,28634],{"class":4181},[4152,28693,4194],{"class":4185},[4152,28695,4819],{"class":4169},[4152,28697,28698,28700,28702,28704],{"class":4154,"line":4858},[4152,28699,13523],{"class":4169},[4152,28701,11027],{"class":4510},[4152,28703,11030],{"class":4173},[4152,28705,4529],{"class":4169},[4152,28707,28708],{"class":4154,"line":4866},[4152,28709,4566],{"emptyLinePlaceholder":4565},[4152,28711,28712,28714,28716,28718],{"class":4154,"line":4872},[4152,28713,4572],{"class":4510},[4152,28715,11030],{"class":4173},[4152,28717,27498],{"class":4597},[4152,28719,10591],{"class":4169},[4152,28721,28722,28724,28726],{"class":4154,"line":4921},[4152,28723,28616],{"class":4181},[4152,28725,5131],{"class":4185},[4152,28727,4819],{"class":4169},[4152,28729,28730,28732,28734],{"class":4154,"line":4930},[4152,28731,28625],{"class":4181},[4152,28733,4194],{"class":4185},[4152,28735,4819],{"class":4169},[4152,28737,28738,28740,28742],{"class":4154,"line":4940},[4152,28739,28634],{"class":4181},[4152,28741,5055],{"class":4185},[4152,28743,4819],{"class":4169},[4152,28745,28746,28748,28750],{"class":4154,"line":4946},[4152,28747,28643],{"class":4181},[4152,28749,20941],{"class":4185},[4152,28751,4819],{"class":4169},[4152,28753,28754,28756,28758,28760],{"class":4154,"line":4951},[4152,28755,13523],{"class":4169},[4152,28757,11027],{"class":4510},[4152,28759,11030],{"class":4173},[4152,28761,4529],{"class":4169},[4152,28763,28764],{"class":4154,"line":4956},[4152,28765,4566],{"emptyLinePlaceholder":4565},[4152,28767,28768,28771,28774],{"class":4154,"line":4976},[4152,28769,28770],{"class":5327},"\u002F** ",[4152,28772,28773],{"class":4173},"@deprecated",[4152,28775,28776],{"class":5327}," Використовуйте useTheme() для кольорів; space\u002Fradius\u002FfontSize — нижче. *\u002F\n",[4152,28778,28779,28781,28783,28786],{"class":4154,"line":4985},[4152,28780,4572],{"class":4510},[4152,28782,11030],{"class":4173},[4152,28784,28785],{"class":4597}," tokens",[4152,28787,10591],{"class":4169},[4152,28789,28790],{"class":4154,"line":4995},[4152,28791,28792],{"class":5327},"  \u002F** Світла палітра (fallback, якщо хтось імпортує tokens.colors без теми). *\u002F\n",[4152,28794,28795,28798],{"class":4154,"line":5005},[4152,28796,28797],{"class":4181},"  colors:",[4152,28799,4982],{"class":4169},[4152,28801,28802,28805,28807],{"class":4154,"line":5016},[4152,28803,28804],{"class":4181},"    background:",[4152,28806,4203],{"class":4202},[4152,28808,4819],{"class":4169},[4152,28810,28811,28814,28816],{"class":4154,"line":5027},[4152,28812,28813],{"class":4181},"    surface:",[4152,28815,10608],{"class":4202},[4152,28817,4819],{"class":4169},[4152,28819,28820,28823,28825],{"class":4154,"line":5038},[4152,28821,28822],{"class":4181},"    text:",[4152,28824,10618],{"class":4202},[4152,28826,4819],{"class":4169},[4152,28828,28829,28832,28834],{"class":4154,"line":5044},[4152,28830,28831],{"class":4181},"    textSecondary:",[4152,28833,10628],{"class":4202},[4152,28835,4819],{"class":4169},[4152,28837,28838,28841,28843],{"class":4154,"line":5077},[4152,28839,28840],{"class":4181},"    primary:",[4152,28842,5171],{"class":4202},[4152,28844,4819],{"class":4169},[4152,28846,28847,28850,28852],{"class":4154,"line":5107},[4152,28848,28849],{"class":4181},"    primaryPressed:",[4152,28851,10647],{"class":4202},[4152,28853,4819],{"class":4169},[4152,28855,28856,28859,28861],{"class":4154,"line":5115},[4152,28857,28858],{"class":4181},"    border:",[4152,28860,5731],{"class":4202},[4152,28862,4819],{"class":4169},[4152,28864,28865,28868,28870],{"class":4154,"line":5125},[4152,28866,28867],{"class":4181},"    danger:",[4152,28869,10666],{"class":4202},[4152,28871,4819],{"class":4169},[4152,28873,28874,28877,28879],{"class":4154,"line":5136},[4152,28875,28876],{"class":4181},"    onPrimary:",[4152,28878,10608],{"class":4202},[4152,28880,4819],{"class":4169},[4152,28882,28883],{"class":4154,"line":5146},[4152,28884,5041],{"class":4169},[4152,28886,28887,28890,28892],{"class":4154,"line":5156},[4152,28888,28889],{"class":4181},"  spacing:",[4152,28891,27471],{"class":4181},[4152,28893,4819],{"class":4169},[4152,28895,28896,28898],{"class":4154,"line":5161},[4152,28897,27478],{"class":4181},[4152,28899,4819],{"class":4169},[4152,28901,28902,28904],{"class":4154,"line":5176},[4152,28903,27491],{"class":4181},[4152,28905,4819],{"class":4169},[4152,28907,28908,28910,28912,28914],{"class":4154,"line":5192},[4152,28909,13523],{"class":4169},[4152,28911,11027],{"class":4510},[4152,28913,11030],{"class":4173},[4152,28915,4529],{"class":4169},[4152,28917,28918],{"class":4154,"line":5219},[4152,28919,4566],{"emptyLinePlaceholder":4565},[4152,28921,28922,28924,28926,28929,28931,28933,28935],{"class":4154,"line":6529},[4152,28923,4572],{"class":4510},[4152,28925,25747],{"class":4173},[4152,28927,28928],{"class":4162}," Tokens",[4152,28930,4964],{"class":4169},[4152,28932,15968],{"class":4173},[4152,28934,28785],{"class":4181},[4152,28936,4529],{"class":4169},[4143,28938,28941],{"className":4145,"code":28939,"filename":28940,"language":4147,"meta":4148,"style":4148},"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",[3533,28942,28943,28959,28989,28993,29009,29013,29042,29046,29060,29070,29082,29087,29098,29113,29117,29121,29132,29138,29148,29154,29160,29168,29177,29195,29205,29213,29243,29247,29253,29259,29269,29279,29309,29322,29335,29344,29354,29358,29371,29383,29391,29399,29403,29416,29428,29436,29440,29451,29457,29463,29475,29479,29487,29495,29499,29503,29507,29523,29530],{"__ignoreMap":4148},[4152,28944,28945,28947,28949,28951,28953,28955,28957],{"class":4154,"line":4155},[4152,28946,4511],{"class":4510},[4152,28948,4514],{"class":4169},[4152,28950,15852],{"class":4181},[4152,28952,4520],{"class":4169},[4152,28954,4523],{"class":4510},[4152,28956,4526],{"class":4202},[4152,28958,4529],{"class":4169},[4152,28960,28961,28963,28965,28967,28969,28971,28973,28976,28978,28981,28983,28985,28987],{"class":4154,"line":4532},[4152,28962,4511],{"class":4510},[4152,28964,4514],{"class":4169},[4152,28966,3572],{"class":4181},[4152,28968,3536],{"class":4169},[4152,28970,4010],{"class":4181},[4152,28972,3536],{"class":4169},[4152,28974,28975],{"class":4181},"TextProps",[4152,28977,3536],{"class":4169},[4152,28979,28980],{"class":4181},"TextStyle",[4152,28982,4520],{"class":4169},[4152,28984,4523],{"class":4510},[4152,28986,4557],{"class":4202},[4152,28988,4529],{"class":4169},[4152,28990,28991],{"class":4154,"line":4562},[4152,28992,4566],{"emptyLinePlaceholder":4565},[4152,28994,28995,28997,28999,29001,29003,29005,29007],{"class":4154,"line":4569},[4152,28996,4511],{"class":4510},[4152,28998,4514],{"class":4169},[4152,29000,3754],{"class":4181},[4152,29002,4520],{"class":4169},[4152,29004,4523],{"class":4510},[4152,29006,19399],{"class":4202},[4152,29008,4529],{"class":4169},[4152,29010,29011],{"class":4154,"line":4588},[4152,29012,4566],{"emptyLinePlaceholder":4565},[4152,29014,29015,29017,29020,29022,29025,29027,29030,29032,29035,29037,29040],{"class":4154,"line":4620},[4152,29016,15584],{"class":4173},[4152,29018,29019],{"class":4162}," AppTextVariant",[4152,29021,4964],{"class":4169},[4152,29023,29024],{"class":4202},"'body'",[4152,29026,10820],{"class":4169},[4152,29028,29029],{"class":4202},"'title'",[4152,29031,10820],{"class":4169},[4152,29033,29034],{"class":4202},"'subtitle'",[4152,29036,10820],{"class":4169},[4152,29038,29039],{"class":4202},"'caption'",[4152,29041,4529],{"class":4169},[4152,29043,29044],{"class":4154,"line":4625},[4152,29045,4566],{"emptyLinePlaceholder":4565},[4152,29047,29048,29050,29053,29055,29057],{"class":4154,"line":4634},[4152,29049,15584],{"class":4173},[4152,29051,29052],{"class":4162}," AppTextProps",[4152,29054,4964],{"class":4169},[4152,29056,28975],{"class":4162},[4152,29058,29059],{"class":4169}," & {\n",[4152,29061,29062,29064,29066,29068],{"class":4154,"line":4661},[4152,29063,16068],{"class":4181},[4152,29065,13648],{"class":4169},[4152,29067,15852],{"class":4162},[4152,29069,4529],{"class":4169},[4152,29071,29072,29075,29077,29080],{"class":4154,"line":4697},[4152,29073,29074],{"class":4181},"  variant",[4152,29076,16103],{"class":4169},[4152,29078,29079],{"class":4162},"AppTextVariant",[4152,29081,4529],{"class":4169},[4152,29083,29084],{"class":4154,"line":4721},[4152,29085,29086],{"class":5327},"  \u002F** Якщо не передано — body\u002Ftitle\u002Fsubtitle → text, caption → textSecondary. *\u002F\n",[4152,29088,29089,29092,29094,29096],{"class":4154,"line":4727},[4152,29090,29091],{"class":4181},"  color",[4152,29093,16103],{"class":4169},[4152,29095,15655],{"class":4162},[4152,29097,4529],{"class":4169},[4152,29099,29100,29102,29104,29106,29108,29110],{"class":4154,"line":4737},[4152,29101,17106],{"class":4181},[4152,29103,16103],{"class":4169},[4152,29105,28980],{"class":4162},[4152,29107,10820],{"class":4169},[4152,29109,28980],{"class":4162},[4152,29111,29112],{"class":4169},"[];\n",[4152,29114,29115],{"class":4154,"line":4745},[4152,29116,10682],{"class":4169},[4152,29118,29119],{"class":4154,"line":4785},[4152,29120,4566],{"emptyLinePlaceholder":4565},[4152,29122,29123,29125,29127,29130],{"class":4154,"line":4808},[4152,29124,4572],{"class":4510},[4152,29126,4578],{"class":4173},[4152,29128,29129],{"class":4581}," AppText",[4152,29131,4973],{"class":4169},[4152,29133,29134,29136],{"class":4154,"line":4822},[4152,29135,16068],{"class":4181},[4152,29137,4819],{"class":4169},[4152,29139,29140,29142,29144,29146],{"class":4154,"line":4841},[4152,29141,29074],{"class":4181},[4152,29143,4964],{"class":4169},[4152,29145,29024],{"class":4202},[4152,29147,4819],{"class":4169},[4152,29149,29150,29152],{"class":4154,"line":4858},[4152,29151,29091],{"class":4181},[4152,29153,4819],{"class":4169},[4152,29155,29156,29158],{"class":4154,"line":4866},[4152,29157,17106],{"class":4181},[4152,29159,4819],{"class":4169},[4152,29161,29162,29165],{"class":4154,"line":4872},[4152,29163,29164],{"class":4169},"  ...",[4152,29166,29167],{"class":4181},"rest\n",[4152,29169,29170,29172,29175],{"class":4154,"line":4921},[4152,29171,27715],{"class":4169},[4152,29173,29174],{"class":4162},"AppTextProps",[4152,29176,13657],{"class":4169},[4152,29178,29179,29181,29183,29185,29187,29189,29191,29193],{"class":4154,"line":4930},[4152,29180,4591],{"class":4173},[4152,29182,4514],{"class":4169},[4152,29184,9898],{"class":4597},[4152,29186,3536],{"class":4169},[4152,29188,4409],{"class":4597},[4152,29190,16593],{"class":4169},[4152,29192,3754],{"class":4581},[4152,29194,12917],{"class":4169},[4152,29196,29197,29199,29202],{"class":4154,"line":4940},[4152,29198,4591],{"class":4173},[4152,29200,29201],{"class":4597}," resolvedColor",[4152,29203,29204],{"class":4169}," =\n",[4152,29206,29207,29210],{"class":4154,"line":4946},[4152,29208,29209],{"class":4181},"    color",[4152,29211,29212],{"class":4169}," ??\n",[4152,29214,29215,29218,29221,29223,29225,29227,29229,29231,29233,29235,29237,29239,29241],{"class":4154,"line":4951},[4152,29216,29217],{"class":4169},"    (",[4152,29219,29220],{"class":4181},"variant",[4152,29222,10868],{"class":4169},[4152,29224,29039],{"class":4202},[4152,29226,10873],{"class":4169},[4152,29228,9898],{"class":4181},[4152,29230,3609],{"class":4169},[4152,29232,9693],{"class":4181},[4152,29234,10878],{"class":4169},[4152,29236,9898],{"class":4181},[4152,29238,3609],{"class":4169},[4152,29240,9670],{"class":4181},[4152,29242,4617],{"class":4169},[4152,29244,29245],{"class":4154,"line":4956},[4152,29246,4566],{"emptyLinePlaceholder":4565},[4152,29248,29249,29251],{"class":4154,"line":4976},[4152,29250,4628],{"class":4510},[4152,29252,4631],{"class":4169},[4152,29254,29255,29257],{"class":4154,"line":4985},[4152,29256,4637],{"class":4158},[4152,29258,11209],{"class":4162},[4152,29260,29261,29263,29265,29267],{"class":4154,"line":4995},[4152,29262,26343],{"class":4165},[4152,29264,4170],{"class":4169},[4152,29266,4174],{"class":4173},[4152,29268,9163],{"class":4177},[4152,29270,29271,29273,29275,29277],{"class":4154,"line":5005},[4152,29272,26362],{"class":4181},[4152,29274,3609],{"class":4177},[4152,29276,9220],{"class":4181},[4152,29278,4819],{"class":4177},[4152,29280,29281,29284,29286,29289,29291,29293,29295,29297,29299,29301,29303,29305,29307],{"class":4154,"line":5016},[4152,29282,29283],{"class":4181},"        variant",[4152,29285,11063],{"class":4169},[4152,29287,29288],{"class":4202}," 'body'",[4152,29290,4828],{"class":4169},[4152,29292,4514],{"class":4177},[4152,29294,5052],{"class":4181},[4152,29296,27498],{"class":4181},[4152,29298,3609],{"class":4177},[4152,29300,17167],{"class":4181},[4152,29302,3536],{"class":4177},[4152,29304,5099],{"class":4181},[4152,29306,5011],{"class":4185},[4152,29308,5074],{"class":4177},[4152,29310,29311,29313,29315,29318,29320],{"class":4154,"line":5027},[4152,29312,29283],{"class":4181},[4152,29314,11063],{"class":4169},[4152,29316,29317],{"class":4202}," 'title'",[4152,29319,4828],{"class":4169},[4152,29321,4982],{"class":4177},[4152,29323,29324,29327,29329,29331,29333],{"class":4154,"line":5038},[4152,29325,29326],{"class":4181},"          fontSize:",[4152,29328,27498],{"class":4181},[4152,29330,3609],{"class":4177},[4152,29332,25103],{"class":4181},[4152,29334,4819],{"class":4177},[4152,29336,29337,29340,29342],{"class":4154,"line":5044},[4152,29338,29339],{"class":4181},"          fontWeight:",[4152,29341,5063],{"class":4202},[4152,29343,4819],{"class":4177},[4152,29345,29346,29349,29352],{"class":4154,"line":5077},[4152,29347,29348],{"class":4181},"          lineHeight:",[4152,29350,29351],{"class":4185}," 34",[4152,29353,4819],{"class":4177},[4152,29355,29356],{"class":4154,"line":5107},[4152,29357,26419],{"class":4177},[4152,29359,29360,29362,29364,29367,29369],{"class":4154,"line":5115},[4152,29361,29283],{"class":4181},[4152,29363,11063],{"class":4169},[4152,29365,29366],{"class":4202}," 'subtitle'",[4152,29368,4828],{"class":4169},[4152,29370,4982],{"class":4177},[4152,29372,29373,29375,29377,29379,29381],{"class":4154,"line":5125},[4152,29374,29326],{"class":4181},[4152,29376,27498],{"class":4181},[4152,29378,3609],{"class":4177},[4152,29380,26412],{"class":4181},[4152,29382,4819],{"class":4177},[4152,29384,29385,29387,29389],{"class":4154,"line":5136},[4152,29386,29339],{"class":4181},[4152,29388,5763],{"class":4202},[4152,29390,4819],{"class":4177},[4152,29392,29393,29395,29397],{"class":4154,"line":5146},[4152,29394,29348],{"class":4181},[4152,29396,20941],{"class":4185},[4152,29398,4819],{"class":4177},[4152,29400,29401],{"class":4154,"line":5156},[4152,29402,26419],{"class":4177},[4152,29404,29405,29407,29409,29412,29414],{"class":4154,"line":5161},[4152,29406,29283],{"class":4181},[4152,29408,11063],{"class":4169},[4152,29410,29411],{"class":4202}," 'caption'",[4152,29413,4828],{"class":4169},[4152,29415,4982],{"class":4177},[4152,29417,29418,29420,29422,29424,29426],{"class":4154,"line":5176},[4152,29419,29326],{"class":4181},[4152,29421,27498],{"class":4181},[4152,29423,3609],{"class":4177},[4152,29425,24107],{"class":4181},[4152,29427,4819],{"class":4177},[4152,29429,29430,29432,29434],{"class":4154,"line":5192},[4152,29431,29348],{"class":4181},[4152,29433,5055],{"class":4185},[4152,29435,4819],{"class":4177},[4152,29437,29438],{"class":4154,"line":5219},[4152,29439,26419],{"class":4177},[4152,29441,29442,29445,29447,29449],{"class":4154,"line":6529},[4152,29443,29444],{"class":4177},"        { ",[4152,29446,5068],{"class":4181},[4152,29448,29201],{"class":4181},[4152,29450,5074],{"class":4177},[4152,29452,29453,29455],{"class":4154,"line":6534},[4152,29454,4788],{"class":4181},[4152,29456,4819],{"class":4177},[4152,29458,29459,29461],{"class":4154,"line":6562},[4152,29460,26440],{"class":4177},[4152,29462,4782],{"class":4173},[4152,29464,29465,29467,29470,29473],{"class":4154,"line":6570},[4152,29466,16401],{"class":4173},[4152,29468,29469],{"class":4169},"...",[4152,29471,29472],{"class":4181},"rest",[4152,29474,4782],{"class":4173},[4152,29476,29477],{"class":4154,"line":6580},[4152,29478,26447],{"class":4158},[4152,29480,29481,29483,29485],{"class":4154,"line":6589},[4152,29482,16401],{"class":4173},[4152,29484,15343],{"class":4181},[4152,29486,4782],{"class":4173},[4152,29488,29489,29491,29493],{"class":4154,"line":6598},[4152,29490,4933],{"class":4158},[4152,29492,4010],{"class":4162},[4152,29494,4658],{"class":4158},[4152,29496,29497],{"class":4154,"line":6603},[4152,29498,4943],{"class":4169},[4152,29500,29501],{"class":4154,"line":6629},[4152,29502,4782],{"class":4169},[4152,29504,29505],{"class":4154,"line":6662},[4152,29506,4566],{"emptyLinePlaceholder":4565},[4152,29508,29509,29511,29513,29515,29517,29519,29521],{"class":4154,"line":8168},[4152,29510,4959],{"class":4173},[4152,29512,4831],{"class":4597},[4152,29514,4964],{"class":4169},[4152,29516,3572],{"class":4181},[4152,29518,3609],{"class":4169},[4152,29520,4264],{"class":4581},[4152,29522,4973],{"class":4169},[4152,29524,29525,29528],{"class":4154,"line":8187},[4152,29526,29527],{"class":4181},"  base:",[4152,29529,27062],{"class":4169},[4152,29531,29532],{"class":4154,"line":8198},[4152,29533,5222],{"class":4169},[4143,29535,29538],{"className":4145,"code":29536,"filename":29537,"language":4147,"meta":4148,"style":4148},"import { Pressable, StyleSheet, Text, ViewStyle } from 'react-native';\n\nimport { useTheme } from '@\u002Fshared\u002Ftheme';\n\ntype ButtonProps = {\n  label: string;\n  onPress: () => void;\n  disabled?: boolean;\n  style?: ViewStyle;\n};\n\nexport function Button({ label, onPress, disabled = false, style }: ButtonProps) {\n  const { colors, spacing, radius, fontSize } = useTheme();\n\n  return (\n    \u003CPressable\n      accessibilityRole=\"button\"\n      disabled={disabled}\n      onPress={onPress}\n      style={({ pressed }) => [\n        styles.base,\n        {\n          backgroundColor: colors.primary,\n          paddingVertical: spacing.sm + 4,\n          paddingHorizontal: spacing.md,\n          borderRadius: radius.md,\n        },\n        pressed && !disabled ? { backgroundColor: colors.primaryPressed } : null,\n        disabled ? styles.disabled : null,\n        style,\n      ]}\n    >\n      \u003CText\n        style={[\n          styles.label,\n          { color: colors.onPrimary, fontSize: fontSize.md },\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",[3533,29539,29540,29569,29573,29589,29593,29602,29613,29626,29638,29648,29652,29656,29692,29718,29722,29728,29734,29742,29755,29767,29785,29795,29799,29811,29829,29842,29854,29858,29889,29908,29914,29920,29924,29930,29940,29950,29974,29980,29984,29992,30000,30008,30012,30016,30020,30036,30042,30050,30054,30061,30070,30074,30080,30088,30092],{"__ignoreMap":4148},[4152,29541,29542,29544,29546,29548,29550,29552,29554,29556,29558,29561,29563,29565,29567],{"class":4154,"line":4155},[4152,29543,4511],{"class":4510},[4152,29545,4514],{"class":4169},[4152,29547,4493],{"class":4181},[4152,29549,3536],{"class":4169},[4152,29551,3572],{"class":4181},[4152,29553,3536],{"class":4169},[4152,29555,4010],{"class":4181},[4152,29557,3536],{"class":4169},[4152,29559,29560],{"class":4181},"ViewStyle",[4152,29562,4520],{"class":4169},[4152,29564,4523],{"class":4510},[4152,29566,4557],{"class":4202},[4152,29568,4529],{"class":4169},[4152,29570,29571],{"class":4154,"line":4532},[4152,29572,4566],{"emptyLinePlaceholder":4565},[4152,29574,29575,29577,29579,29581,29583,29585,29587],{"class":4154,"line":4562},[4152,29576,4511],{"class":4510},[4152,29578,4514],{"class":4169},[4152,29580,3754],{"class":4181},[4152,29582,4520],{"class":4169},[4152,29584,4523],{"class":4510},[4152,29586,19399],{"class":4202},[4152,29588,4529],{"class":4169},[4152,29590,29591],{"class":4154,"line":4569},[4152,29592,4566],{"emptyLinePlaceholder":4565},[4152,29594,29595,29597,29600],{"class":4154,"line":4588},[4152,29596,15584],{"class":4173},[4152,29598,29599],{"class":4162}," ButtonProps",[4152,29601,10591],{"class":4169},[4152,29603,29604,29607,29609,29611],{"class":4154,"line":4620},[4152,29605,29606],{"class":4181},"  label",[4152,29608,13648],{"class":4169},[4152,29610,15655],{"class":4162},[4152,29612,4529],{"class":4169},[4152,29614,29615,29617,29620,29622,29624],{"class":4154,"line":4625},[4152,29616,26190],{"class":4581},[4152,29618,29619],{"class":4169},": () ",[4152,29621,4758],{"class":4173},[4152,29623,15956],{"class":4162},[4152,29625,4529],{"class":4169},[4152,29627,29628,29631,29633,29636],{"class":4154,"line":4634},[4152,29629,29630],{"class":4181},"  disabled",[4152,29632,16103],{"class":4169},[4152,29634,29635],{"class":4162},"boolean",[4152,29637,4529],{"class":4169},[4152,29639,29640,29642,29644,29646],{"class":4154,"line":4661},[4152,29641,17106],{"class":4181},[4152,29643,16103],{"class":4169},[4152,29645,29560],{"class":4162},[4152,29647,4529],{"class":4169},[4152,29649,29650],{"class":4154,"line":4697},[4152,29651,10682],{"class":4169},[4152,29653,29654],{"class":4154,"line":4721},[4152,29655,4566],{"emptyLinePlaceholder":4565},[4152,29657,29658,29660,29662,29665,29667,29669,29671,29673,29675,29677,29679,29681,29683,29685,29687,29690],{"class":4154,"line":4727},[4152,29659,4572],{"class":4510},[4152,29661,4578],{"class":4173},[4152,29663,29664],{"class":4581}," Button",[4152,29666,4795],{"class":4169},[4152,29668,5465],{"class":4181},[4152,29670,3536],{"class":4169},[4152,29672,26233],{"class":4181},[4152,29674,3536],{"class":4169},[4152,29676,4240],{"class":4181},[4152,29678,4964],{"class":4169},[4152,29680,4614],{"class":4173},[4152,29682,3536],{"class":4169},[4152,29684,3837],{"class":4181},[4152,29686,26236],{"class":4169},[4152,29688,29689],{"class":4162},"ButtonProps",[4152,29691,13657],{"class":4169},[4152,29693,29694,29696,29698,29700,29702,29704,29706,29708,29710,29712,29714,29716],{"class":4154,"line":4737},[4152,29695,4591],{"class":4173},[4152,29697,4514],{"class":4169},[4152,29699,9898],{"class":4597},[4152,29701,3536],{"class":4169},[4152,29703,12680],{"class":4597},[4152,29705,3536],{"class":4169},[4152,29707,17040],{"class":4597},[4152,29709,3536],{"class":4169},[4152,29711,4409],{"class":4597},[4152,29713,16593],{"class":4169},[4152,29715,3754],{"class":4581},[4152,29717,12917],{"class":4169},[4152,29719,29720],{"class":4154,"line":4745},[4152,29721,4566],{"emptyLinePlaceholder":4565},[4152,29723,29724,29726],{"class":4154,"line":4785},[4152,29725,4628],{"class":4510},[4152,29727,4631],{"class":4169},[4152,29729,29730,29732],{"class":4154,"line":4808},[4152,29731,4637],{"class":4158},[4152,29733,4742],{"class":4162},[4152,29735,29736,29738,29740],{"class":4154,"line":4822},[4152,29737,26284],{"class":4165},[4152,29739,4170],{"class":4169},[4152,29741,24605],{"class":4202},[4152,29743,29744,29747,29749,29751,29753],{"class":4154,"line":4841},[4152,29745,29746],{"class":4165},"      disabled",[4152,29748,4170],{"class":4169},[4152,29750,4174],{"class":4173},[4152,29752,4240],{"class":4181},[4152,29754,4782],{"class":4173},[4152,29756,29757,29759,29761,29763,29765],{"class":4154,"line":4858},[4152,29758,26319],{"class":4165},[4152,29760,4170],{"class":4169},[4152,29762,4174],{"class":4173},[4152,29764,26233],{"class":4181},[4152,29766,4782],{"class":4173},[4152,29768,29769,29771,29773,29775,29777,29779,29781,29783],{"class":4154,"line":4866},[4152,29770,26343],{"class":4165},[4152,29772,4170],{"class":4169},[4152,29774,4174],{"class":4173},[4152,29776,4795],{"class":4177},[4152,29778,4237],{"class":4181},[4152,29780,4800],{"class":4177},[4152,29782,4758],{"class":4173},[4152,29784,4805],{"class":4177},[4152,29786,29787,29789,29791,29793],{"class":4154,"line":4872},[4152,29788,26362],{"class":4181},[4152,29790,3609],{"class":4177},[4152,29792,9220],{"class":4181},[4152,29794,4819],{"class":4177},[4152,29796,29797],{"class":4154,"line":4921},[4152,29798,26373],{"class":4177},[4152,29800,29801,29803,29805,29807,29809],{"class":4154,"line":4930},[4152,29802,26378],{"class":4181},[4152,29804,9103],{"class":4181},[4152,29806,3609],{"class":4177},[4152,29808,9516],{"class":4181},[4152,29810,4819],{"class":4177},[4152,29812,29813,29816,29818,29820,29822,29825,29827],{"class":4154,"line":4940},[4152,29814,29815],{"class":4181},"          paddingVertical:",[4152,29817,17161],{"class":4181},[4152,29819,3609],{"class":4177},[4152,29821,24107],{"class":4181},[4152,29823,29824],{"class":4169}," +",[4152,29826,6657],{"class":4185},[4152,29828,4819],{"class":4177},[4152,29830,29831,29834,29836,29838,29840],{"class":4154,"line":4946},[4152,29832,29833],{"class":4181},"          paddingHorizontal:",[4152,29835,17161],{"class":4181},[4152,29837,3609],{"class":4177},[4152,29839,17167],{"class":4181},[4152,29841,4819],{"class":4177},[4152,29843,29844,29846,29848,29850,29852],{"class":4154,"line":4951},[4152,29845,26404],{"class":4181},[4152,29847,26407],{"class":4181},[4152,29849,3609],{"class":4177},[4152,29851,17167],{"class":4181},[4152,29853,4819],{"class":4177},[4152,29855,29856],{"class":4154,"line":4956},[4152,29857,26419],{"class":4177},[4152,29859,29860,29862,29864,29866,29868,29870,29872,29874,29876,29878,29880,29882,29884,29887],{"class":4154,"line":4976},[4152,29861,26424],{"class":4181},[4152,29863,4828],{"class":4169},[4152,29865,4775],{"class":4169},[4152,29867,4240],{"class":4181},[4152,29869,4901],{"class":4169},[4152,29871,4514],{"class":4177},[4152,29873,4199],{"class":4181},[4152,29875,9103],{"class":4181},[4152,29877,3609],{"class":4177},[4152,29879,12157],{"class":4181},[4152,29881,4520],{"class":4177},[4152,29883,12784],{"class":4169},[4152,29885,29886],{"class":4173}," null",[4152,29888,4819],{"class":4177},[4152,29890,29891,29894,29896,29898,29900,29902,29904,29906],{"class":4154,"line":4985},[4152,29892,29893],{"class":4181},"        disabled",[4152,29895,4901],{"class":4169},[4152,29897,4831],{"class":4181},[4152,29899,3609],{"class":4177},[4152,29901,4240],{"class":4181},[4152,29903,4907],{"class":4169},[4152,29905,29886],{"class":4173},[4152,29907,4819],{"class":4177},[4152,29909,29910,29912],{"class":4154,"line":4995},[4152,29911,4788],{"class":4181},[4152,29913,4819],{"class":4177},[4152,29915,29916,29918],{"class":4154,"line":5005},[4152,29917,26440],{"class":4177},[4152,29919,4782],{"class":4173},[4152,29921,29922],{"class":4154,"line":5016},[4152,29923,26447],{"class":4158},[4152,29925,29926,29928],{"class":4154,"line":5027},[4152,29927,4664],{"class":4158},[4152,29929,11209],{"class":4162},[4152,29931,29932,29934,29936,29938],{"class":4154,"line":5038},[4152,29933,4788],{"class":4165},[4152,29935,4170],{"class":4169},[4152,29937,4174],{"class":4173},[4152,29939,9163],{"class":4177},[4152,29941,29942,29944,29946,29948],{"class":4154,"line":5044},[4152,29943,4811],{"class":4181},[4152,29945,3609],{"class":4177},[4152,29947,5465],{"class":4181},[4152,29949,4819],{"class":4177},[4152,29951,29952,29954,29956,29958,29960,29962,29964,29966,29968,29970,29972],{"class":4154,"line":5077},[4152,29953,11472],{"class":4177},[4152,29955,5068],{"class":4181},[4152,29957,9103],{"class":4181},[4152,29959,3609],{"class":4177},[4152,29961,9747],{"class":4181},[4152,29963,3536],{"class":4177},[4152,29965,5052],{"class":4181},[4152,29967,27498],{"class":4181},[4152,29969,3609],{"class":4177},[4152,29971,17167],{"class":4181},[4152,29973,5074],{"class":4177},[4152,29975,29976,29978],{"class":4154,"line":5107},[4152,29977,4861],{"class":4177},[4152,29979,4782],{"class":4173},[4152,29981,29982],{"class":4154,"line":5115},[4152,29983,4869],{"class":4158},[4152,29985,29986,29988,29990],{"class":4154,"line":5125},[4152,29987,7708],{"class":4173},[4152,29989,5465],{"class":4181},[4152,29991,4782],{"class":4173},[4152,29993,29994,29996,29998],{"class":4154,"line":5136},[4152,29995,4730],{"class":4158},[4152,29997,4010],{"class":4162},[4152,29999,4658],{"class":4158},[4152,30001,30002,30004,30006],{"class":4154,"line":5146},[4152,30003,4933],{"class":4158},[4152,30005,4493],{"class":4162},[4152,30007,4658],{"class":4158},[4152,30009,30010],{"class":4154,"line":5156},[4152,30011,4943],{"class":4169},[4152,30013,30014],{"class":4154,"line":5161},[4152,30015,4782],{"class":4169},[4152,30017,30018],{"class":4154,"line":5176},[4152,30019,4566],{"emptyLinePlaceholder":4565},[4152,30021,30022,30024,30026,30028,30030,30032,30034],{"class":4154,"line":5192},[4152,30023,4959],{"class":4173},[4152,30025,4831],{"class":4597},[4152,30027,4964],{"class":4169},[4152,30029,3572],{"class":4181},[4152,30031,3609],{"class":4169},[4152,30033,4264],{"class":4581},[4152,30035,4973],{"class":4169},[4152,30037,30038,30040],{"class":4154,"line":5219},[4152,30039,29527],{"class":4181},[4152,30041,4982],{"class":4169},[4152,30043,30044,30046,30048],{"class":4154,"line":6529},[4152,30045,5149],{"class":4181},[4152,30047,5022],{"class":4202},[4152,30049,4819],{"class":4169},[4152,30051,30052],{"class":4154,"line":6534},[4152,30053,5041],{"class":4169},[4152,30055,30056,30059],{"class":4154,"line":6562},[4152,30057,30058],{"class":4181},"  disabled:",[4152,30060,4982],{"class":4169},[4152,30062,30063,30065,30068],{"class":4154,"line":6570},[4152,30064,27083],{"class":4181},[4152,30066,30067],{"class":4185}," 0.5",[4152,30069,4819],{"class":4169},[4152,30071,30072],{"class":4154,"line":6580},[4152,30073,5041],{"class":4169},[4152,30075,30076,30078],{"class":4154,"line":6589},[4152,30077,5750],{"class":4181},[4152,30079,4982],{"class":4169},[4152,30081,30082,30084,30086],{"class":4154,"line":6598},[4152,30083,25588],{"class":4181},[4152,30085,5763],{"class":4202},[4152,30087,4819],{"class":4169},[4152,30089,30090],{"class":4154,"line":6603},[4152,30091,5041],{"class":4169},[4152,30093,30094],{"class":4154,"line":6629},[4152,30095,5222],{"class":4169},[4143,30097,30100],{"className":4145,"code":30098,"filename":30099,"language":4147,"meta":4148,"style":4148},"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",[3533,30101,30102,30118,30138,30155,30159,30179,30183,30192,30202,30212,30216,30220,30244,30258,30262,30268,30275,30311,30315,30323,30331,30335,30339,30343,30359,30366,30374,30386,30390],{"__ignoreMap":4148},[4152,30103,30104,30106,30108,30110,30112,30114,30116],{"class":4154,"line":4155},[4152,30105,4511],{"class":4510},[4152,30107,4514],{"class":4169},[4152,30109,15852],{"class":4181},[4152,30111,4520],{"class":4169},[4152,30113,4523],{"class":4510},[4152,30115,4526],{"class":4202},[4152,30117,4529],{"class":4169},[4152,30119,30120,30122,30124,30126,30128,30130,30132,30134,30136],{"class":4154,"line":4532},[4152,30121,4511],{"class":4510},[4152,30123,4514],{"class":4169},[4152,30125,3572],{"class":4181},[4152,30127,3536],{"class":4169},[4152,30129,29560],{"class":4181},[4152,30131,4520],{"class":4169},[4152,30133,4523],{"class":4510},[4152,30135,4557],{"class":4202},[4152,30137,4529],{"class":4169},[4152,30139,30140,30142,30144,30146,30148,30150,30153],{"class":4154,"line":4562},[4152,30141,4511],{"class":4510},[4152,30143,4514],{"class":4169},[4152,30145,20072],{"class":4181},[4152,30147,4520],{"class":4169},[4152,30149,4523],{"class":4510},[4152,30151,30152],{"class":4202}," 'react-native-safe-area-context'",[4152,30154,4529],{"class":4169},[4152,30156,30157],{"class":4154,"line":4569},[4152,30158,4566],{"emptyLinePlaceholder":4565},[4152,30160,30161,30163,30165,30167,30169,30171,30173,30175,30177],{"class":4154,"line":4588},[4152,30162,4511],{"class":4510},[4152,30164,4514],{"class":4169},[4152,30166,19245],{"class":4181},[4152,30168,3536],{"class":4169},[4152,30170,3754],{"class":4181},[4152,30172,4520],{"class":4169},[4152,30174,4523],{"class":4510},[4152,30176,19399],{"class":4202},[4152,30178,4529],{"class":4169},[4152,30180,30181],{"class":4154,"line":4620},[4152,30182,4566],{"emptyLinePlaceholder":4565},[4152,30184,30185,30187,30190],{"class":4154,"line":4625},[4152,30186,15584],{"class":4173},[4152,30188,30189],{"class":4162}," ScreenProps",[4152,30191,10591],{"class":4169},[4152,30193,30194,30196,30198,30200],{"class":4154,"line":4634},[4152,30195,16068],{"class":4181},[4152,30197,13648],{"class":4169},[4152,30199,15852],{"class":4162},[4152,30201,4529],{"class":4169},[4152,30203,30204,30206,30208,30210],{"class":4154,"line":4661},[4152,30205,17106],{"class":4181},[4152,30207,16103],{"class":4169},[4152,30209,29560],{"class":4162},[4152,30211,4529],{"class":4169},[4152,30213,30214],{"class":4154,"line":4697},[4152,30215,10682],{"class":4169},[4152,30217,30218],{"class":4154,"line":4721},[4152,30219,4566],{"emptyLinePlaceholder":4565},[4152,30221,30222,30224,30226,30229,30231,30233,30235,30237,30239,30242],{"class":4154,"line":4727},[4152,30223,4572],{"class":4510},[4152,30225,4578],{"class":4173},[4152,30227,30228],{"class":4581}," Screen",[4152,30230,4795],{"class":4169},[4152,30232,15343],{"class":4181},[4152,30234,3536],{"class":4169},[4152,30236,3837],{"class":4181},[4152,30238,26236],{"class":4169},[4152,30240,30241],{"class":4162},"ScreenProps",[4152,30243,13657],{"class":4169},[4152,30245,30246,30248,30250,30252,30254,30256],{"class":4154,"line":4737},[4152,30247,4591],{"class":4173},[4152,30249,4514],{"class":4169},[4152,30251,9898],{"class":4597},[4152,30253,16593],{"class":4169},[4152,30255,3754],{"class":4581},[4152,30257,12917],{"class":4169},[4152,30259,30260],{"class":4154,"line":4745},[4152,30261,4566],{"emptyLinePlaceholder":4565},[4152,30263,30264,30266],{"class":4154,"line":4785},[4152,30265,4628],{"class":4510},[4152,30267,4631],{"class":4169},[4152,30269,30270,30272],{"class":4154,"line":4808},[4152,30271,4637],{"class":4158},[4152,30273,30274],{"class":4162},"SafeAreaView\n",[4152,30276,30277,30279,30281,30283,30285,30287,30289,30292,30294,30296,30298,30300,30302,30305,30307,30309],{"class":4154,"line":4822},[4152,30278,26343],{"class":4165},[4152,30280,4170],{"class":4169},[4152,30282,4174],{"class":4173},[4152,30284,6047],{"class":4177},[4152,30286,4648],{"class":4181},[4152,30288,3609],{"class":4177},[4152,30290,30291],{"class":4181},"root",[4152,30293,9098],{"class":4177},[4152,30295,4199],{"class":4181},[4152,30297,9103],{"class":4181},[4152,30299,3609],{"class":4177},[4152,30301,9618],{"class":4181},[4152,30303,30304],{"class":4177}," }, ",[4152,30306,3837],{"class":4181},[4152,30308,6065],{"class":4177},[4152,30310,4782],{"class":4173},[4152,30312,30313],{"class":4154,"line":4841},[4152,30314,26447],{"class":4158},[4152,30316,30317,30319,30321],{"class":4154,"line":4858},[4152,30318,16401],{"class":4173},[4152,30320,15343],{"class":4181},[4152,30322,4782],{"class":4173},[4152,30324,30325,30327,30329],{"class":4154,"line":4866},[4152,30326,4933],{"class":4158},[4152,30328,20072],{"class":4162},[4152,30330,4658],{"class":4158},[4152,30332,30333],{"class":4154,"line":4872},[4152,30334,4943],{"class":4169},[4152,30336,30337],{"class":4154,"line":4921},[4152,30338,4782],{"class":4169},[4152,30340,30341],{"class":4154,"line":4930},[4152,30342,4566],{"emptyLinePlaceholder":4565},[4152,30344,30345,30347,30349,30351,30353,30355,30357],{"class":4154,"line":4940},[4152,30346,4959],{"class":4173},[4152,30348,4831],{"class":4597},[4152,30350,4964],{"class":4169},[4152,30352,3572],{"class":4181},[4152,30354,3609],{"class":4169},[4152,30356,4264],{"class":4581},[4152,30358,4973],{"class":4169},[4152,30360,30361,30364],{"class":4154,"line":4946},[4152,30362,30363],{"class":4181},"  root:",[4152,30365,4982],{"class":4169},[4152,30367,30368,30370,30372],{"class":4154,"line":4951},[4152,30369,4988],{"class":4181},[4152,30371,4186],{"class":4185},[4152,30373,4819],{"class":4169},[4152,30375,30376,30378,30380,30382,30384],{"class":4154,"line":4956},[4152,30377,12427],{"class":4181},[4152,30379,27471],{"class":4181},[4152,30381,3609],{"class":4169},[4152,30383,17167],{"class":4181},[4152,30385,4819],{"class":4169},[4152,30387,30388],{"class":4154,"line":4976},[4152,30389,5041],{"class":4169},[4152,30391,30392],{"class":4154,"line":4985},[4152,30393,5222],{"class":4169},[4143,30395,30398],{"className":9889,"code":30396,"filename":30397,"language":9891,"meta":4148,"style":4148},"export { AppText } from '.\u002FAppText';\nexport { Button } from '.\u002FButton';\nexport { Screen } from '.\u002FScreen';\n","src\u002Fshared\u002Fui\u002Findex.ts",[3533,30399,30400,30417,30434],{"__ignoreMap":4148},[4152,30401,30402,30404,30406,30408,30410,30412,30415],{"class":4154,"line":4155},[4152,30403,4572],{"class":4510},[4152,30405,4514],{"class":4169},[4152,30407,12730],{"class":4181},[4152,30409,4520],{"class":4169},[4152,30411,4523],{"class":4510},[4152,30413,30414],{"class":4202}," '.\u002FAppText'",[4152,30416,4529],{"class":4169},[4152,30418,30419,30421,30423,30425,30427,30429,30432],{"class":4154,"line":4532},[4152,30420,4572],{"class":4510},[4152,30422,4514],{"class":4169},[4152,30424,15181],{"class":4181},[4152,30426,4520],{"class":4169},[4152,30428,4523],{"class":4510},[4152,30430,30431],{"class":4202}," '.\u002FButton'",[4152,30433,4529],{"class":4169},[4152,30435,30436,30438,30440,30442,30444,30446,30449],{"class":4154,"line":4562},[4152,30437,4572],{"class":4510},[4152,30439,4514],{"class":4169},[4152,30441,15186],{"class":4181},[4152,30443,4520],{"class":4169},[4152,30445,4523],{"class":4510},[4152,30447,30448],{"class":4202}," '.\u002FScreen'",[4152,30450,4529],{"class":4169},[3589,30452,30454],{"id":30453},"перевірка","Перевірка",[3561,30456,30457,30460,30463],{},[3564,30458,30459],{},"Чіп «Темна» — темний фон, світлий текст, темні картки.",[3564,30461,30462],{},"«Світла» \u002F «Система» працюють як очікується.",[3564,30464,30465],{},"Статус-бар не зливається з фоном.",[3589,30467,30469],{"id":30468},"коміт","Коміт",[3512,30471,30472,30473,30475],{},"Якщо збирали вручну (не через ",[3533,30474,22725],{}," на вже запушений репо):",[4143,30477,30479],{"className":19695,"code":30478,"language":19697,"meta":4148,"style":4148},"cd \u002Fpath\u002Fto\u002Fnomad\ngit add -A\ngit commit -m \"$(cat \u003C\u003C'EOF'\nfeat: light\u002Fdark theme with semantic color tokens\n\nMaterial: content\u002F15.react-native\u002F08.stylesheet-and-theming.md\nEOF\n)\"\ngit push\n",[3533,30480,30481,30487,30497,30519,30524,30528,30533,30538,30543],{"__ignoreMap":4148},[4152,30482,30483,30485],{"class":4154,"line":4155},[4152,30484,19721],{"class":4581},[4152,30486,22742],{"class":4202},[4152,30488,30489,30491,30494],{"class":4154,"line":4532},[4152,30490,22747],{"class":4581},[4152,30492,30493],{"class":4202}," add",[4152,30495,30496],{"class":4173}," -A\n",[4152,30498,30499,30501,30504,30507,30510,30513,30516],{"class":4154,"line":4562},[4152,30500,22747],{"class":4581},[4152,30502,30503],{"class":4202}," commit",[4152,30505,30506],{"class":4173}," -m",[4152,30508,30509],{"class":4202}," \"$(",[4152,30511,30512],{"class":4581},"cat",[4152,30514,30515],{"class":4169}," \u003C\u003C",[4152,30517,30518],{"class":4202},"'EOF'\n",[4152,30520,30521],{"class":4154,"line":4569},[4152,30522,30523],{"class":4202},"feat: light\u002Fdark theme with semantic color tokens\n",[4152,30525,30526],{"class":4154,"line":4588},[4152,30527,4566],{"emptyLinePlaceholder":4565},[4152,30529,30530],{"class":4154,"line":4620},[4152,30531,30532],{"class":4202},"Material: content\u002F15.react-native\u002F08.stylesheet-and-theming.md\n",[4152,30534,30535],{"class":4154,"line":4625},[4152,30536,30537],{"class":4202},"EOF\n",[4152,30539,30540],{"class":4154,"line":4634},[4152,30541,30542],{"class":4202},")\"\n",[4152,30544,30545,30547],{"class":4154,"line":4661},[4152,30546,22747],{"class":4581},[4152,30548,30549],{"class":4202}," push\n",[3512,30551,30552,30553,30556,30557,30559],{},"У публічному репо цей коміт ",[3525,30554,30555],{},"уже є"," — після ",[3533,30558,22725],{}," повторно комітити не потрібно, якщо ви не змінювали код локально.",[3589,30561,30563],{"id":30562},"результат-чіпи-теми-стрічка","Результат: чіпи теми + стрічка",[4496,30565,30568],{"device":4498,"filename":30566,"title":30567,"height":7406},"NomadTheme.tsx","Nomad · theme chips",[4143,30569,30571],{"className":4145,"code":30570,"language":4147,"meta":4148,"style":4148},"import { useState } from 'react';\nimport { View, Text, Pressable, ScrollView, StyleSheet, Image } from 'react-native';\n\nconst light = {\n  background: '#F8FAFC',\n  surface: '#FFFFFF',\n  text: '#0F172A',\n  textSecondary: '#64748B',\n  primary: '#2563EB',\n  border: '#E2E8F0',\n  onPrimary: '#FFFFFF',\n};\n\nconst dark = {\n  background: '#000000',\n  surface: '#1C1C1E',\n  text: '#F5F5F7',\n  textSecondary: '#A1A1AA',\n  primary: '#3B82F6',\n  border: '#3A3A3C',\n  onPrimary: '#FFFFFF',\n};\n\ntype Pref = 'system' | 'light' | 'dark';\n\nconst TRIPS = [\n  {\n    title: 'Київ — Карпати',\n    date: '12–18 черв. 2026',\n    desc: 'Гори, полонини і ранки з кавою.',\n    cover: 'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1464822759023-fed622ff2c3b?w=800&q=80',\n  },\n  {\n    title: 'Львівський вікенд',\n    date: '2–4 трав. 2026',\n    desc: 'Кава, площа Ринок, закапелки.',\n    cover: 'https:\u002F\u002Fimages.unsplash.com\u002Fphoto-1555881400-74d7acaacd8b?w=800&q=80',\n  },\n];\n\nexport default function App() {\n  \u002F\u002F У демо «system» ≈ light (немає реального Appearance)\n  const [pref, setPref] = useState\u003CPref>('light');\n  const scheme = pref === 'dark' ? 'dark' : 'light';\n  const c = scheme === 'dark' ? dark : light;\n\n  return (\n    \u003CView style={[styles.screen, { backgroundColor: c.background }]}>\n      \u003CView style={[styles.header, { borderBottomColor: c.border }]}>\n        \u003CText style={[styles.title, { color: c.text }]}>Мандрівник\u003C\u002FText>\n        \u003CText style={{ color: c.textSecondary, marginTop: 4 }}>\n          Тема: {scheme === 'dark' ? 'темна' : 'світла'}\n        \u003C\u002FText>\n        \u003CView style={styles.chips}>\n          {(\n            [\n              ['system', 'Система'],\n              ['light', 'Світла'],\n              ['dark', 'Темна'],\n            ] as const\n          ).map(([id, label]) => {\n            const active = pref === id;\n            return (\n              \u003CPressable\n                key={id}\n                onPress={() => setPref(id)}\n                style={[\n                  styles.chip,\n                  {\n                    backgroundColor: active ? c.primary : c.surface,\n                    borderColor: c.border,\n                  },\n                ]}\n              >\n                \u003CText\n                  style={{\n                    color: active ? c.onPrimary : c.text,\n                    fontWeight: '600',\n                    fontSize: 13,\n                  }}\n                >\n                  {label}\n                \u003C\u002FText>\n              \u003C\u002FPressable>\n            );\n          })}\n        \u003C\u002FView>\n      \u003C\u002FView>\n\n      \u003CScrollView contentContainerStyle={styles.list}>\n        {TRIPS.map((t) => (\n          \u003CView\n            key={t.title}\n            style={[styles.card, { backgroundColor: c.surface, borderColor: c.border }]}\n          >\n            \u003CImage source={{ uri: t.cover }} style={styles.cover} \u002F>\n            \u003CView style={styles.body}>\n              \u003CText style={[styles.cardTitle, { color: c.text }]} numberOfLines={1}>\n                {t.title}\n              \u003C\u002FText>\n              \u003CText style={{ color: c.textSecondary, fontSize: 12, marginTop: 4 }}>\n                {t.date}\n              \u003C\u002FText>\n              \u003CText style={{ color: c.textSecondary, marginTop: 6 }} numberOfLines={2}>\n                {t.desc}\n              \u003C\u002FText>\n            \u003C\u002FView>\n          \u003C\u002FView>\n        ))}\n      \u003C\u002FScrollView>\n\n      \u003CView style={[styles.footer, { borderTopColor: c.border, backgroundColor: c.background }]}>\n        \u003CPressable style={[styles.cta, { backgroundColor: c.primary }]}>\n          \u003CText style={{ color: c.onPrimary, fontWeight: '700' }}>Нова поїздка\u003C\u002FText>\n        \u003C\u002FPressable>\n      \u003C\u002FView>\n    \u003C\u002FView>\n  );\n}\n\nconst styles = StyleSheet.create({\n  screen: { flex: 1 },\n  header: { padding: 16, borderBottomWidth: 1, gap: 4 },\n  title: { fontSize: 28, fontWeight: '700' },\n  chips: { flexDirection: 'row', flexWrap: 'wrap', gap: 8, marginTop: 10 },\n  chip: {\n    paddingHorizontal: 12,\n    paddingVertical: 8,\n    borderRadius: 8,\n    borderWidth: 1,\n  },\n  list: { padding: 16, gap: 14, paddingBottom: 24 },\n  card: { borderRadius: 16, borderWidth: 1, overflow: 'hidden' },\n  cover: { width: '100%', height: 120, backgroundColor: '#ccc' },\n  body: { padding: 14 },\n  cardTitle: { fontSize: 17, fontWeight: '700' },\n  footer: { padding: 16, borderTopWidth: 1 },\n  cta: {\n    borderRadius: 12,\n    paddingVertical: 14,\n    alignItems: 'center',\n  },\n});\n",[3533,30572,30573,30589,30625,30629,30637,30645,30653,30661,30669,30677,30685,30693,30697,30701,30709,30717,30725,30733,30741,30749,30757,30765,30769,30773,30794,30798,30808,30812,30821,30831,30841,30850,30854,30858,30866,30874,30883,30891,30895,30899,30903,30915,30920,30949,30973,30997,31001,31007,31043,31080,31124,31158,31181,31189,31212,31218,31223,31237,31250,31263,31273,31296,31314,31320,31326,31338,31361,31371,31381,31385,31409,31421,31425,31431,31435,31441,31451,31476,31485,31494,31501,31505,31513,31521,31529,31533,31539,31547,31555,31559,31582,31604,31610,31627,31667,31671,31715,31737,31783,31795,31803,31843,31856,31864,31908,31920,31928,31936,31944,31951,31959,31963,32010,32047,32090,32098,32106,32114,32118,32122,32126,32142,32154,32179,32197,32228,32234,32242,32250,32258,32266,32270,32295,32320,32346,32358,32376,32395,32402,32410,32418,32426,32430],{"__ignoreMap":4148},[4152,30574,30575,30577,30579,30581,30583,30585,30587],{"class":4154,"line":4155},[4152,30576,4511],{"class":4510},[4152,30578,4514],{"class":4169},[4152,30580,4517],{"class":4181},[4152,30582,4520],{"class":4169},[4152,30584,4523],{"class":4510},[4152,30586,4526],{"class":4202},[4152,30588,4529],{"class":4169},[4152,30590,30591,30593,30595,30597,30599,30601,30603,30605,30607,30609,30611,30613,30615,30617,30619,30621,30623],{"class":4154,"line":4532},[4152,30592,4511],{"class":4510},[4152,30594,4514],{"class":4169},[4152,30596,3967],{"class":4181},[4152,30598,3536],{"class":4169},[4152,30600,4010],{"class":4181},[4152,30602,3536],{"class":4169},[4152,30604,4493],{"class":4181},[4152,30606,3536],{"class":4169},[4152,30608,23695],{"class":4181},[4152,30610,3536],{"class":4169},[4152,30612,3572],{"class":4181},[4152,30614,3536],{"class":4169},[4152,30616,26081],{"class":4181},[4152,30618,4520],{"class":4169},[4152,30620,4523],{"class":4510},[4152,30622,4557],{"class":4202},[4152,30624,4529],{"class":4169},[4152,30626,30627],{"class":4154,"line":4562},[4152,30628,4566],{"emptyLinePlaceholder":4565},[4152,30630,30631,30633,30635],{"class":4154,"line":4569},[4152,30632,4959],{"class":4173},[4152,30634,10588],{"class":4597},[4152,30636,10591],{"class":4169},[4152,30638,30639,30641,30643],{"class":4154,"line":4588},[4152,30640,10596],{"class":4181},[4152,30642,4203],{"class":4202},[4152,30644,4819],{"class":4169},[4152,30646,30647,30649,30651],{"class":4154,"line":4620},[4152,30648,10605],{"class":4181},[4152,30650,10608],{"class":4202},[4152,30652,4819],{"class":4169},[4152,30654,30655,30657,30659],{"class":4154,"line":4625},[4152,30656,10615],{"class":4181},[4152,30658,10618],{"class":4202},[4152,30660,4819],{"class":4169},[4152,30662,30663,30665,30667],{"class":4154,"line":4634},[4152,30664,10625],{"class":4181},[4152,30666,10628],{"class":4202},[4152,30668,4819],{"class":4169},[4152,30670,30671,30673,30675],{"class":4154,"line":4661},[4152,30672,10635],{"class":4181},[4152,30674,5171],{"class":4202},[4152,30676,4819],{"class":4169},[4152,30678,30679,30681,30683],{"class":4154,"line":4697},[4152,30680,10654],{"class":4181},[4152,30682,5731],{"class":4202},[4152,30684,4819],{"class":4169},[4152,30686,30687,30689,30691],{"class":4154,"line":4721},[4152,30688,10673],{"class":4181},[4152,30690,10608],{"class":4202},[4152,30692,4819],{"class":4169},[4152,30694,30695],{"class":4154,"line":4727},[4152,30696,10682],{"class":4169},[4152,30698,30699],{"class":4154,"line":4737},[4152,30700,4566],{"emptyLinePlaceholder":4565},[4152,30702,30703,30705,30707],{"class":4154,"line":4745},[4152,30704,4959],{"class":4173},[4152,30706,10693],{"class":4597},[4152,30708,10591],{"class":4169},[4152,30710,30711,30713,30715],{"class":4154,"line":4785},[4152,30712,10596],{"class":4181},[4152,30714,10702],{"class":4202},[4152,30716,4819],{"class":4169},[4152,30718,30719,30721,30723],{"class":4154,"line":4808},[4152,30720,10605],{"class":4181},[4152,30722,10711],{"class":4202},[4152,30724,4819],{"class":4169},[4152,30726,30727,30729,30731],{"class":4154,"line":4822},[4152,30728,10615],{"class":4181},[4152,30730,10720],{"class":4202},[4152,30732,4819],{"class":4169},[4152,30734,30735,30737,30739],{"class":4154,"line":4841},[4152,30736,10625],{"class":4181},[4152,30738,10729],{"class":4202},[4152,30740,4819],{"class":4169},[4152,30742,30743,30745,30747],{"class":4154,"line":4858},[4152,30744,10635],{"class":4181},[4152,30746,10738],{"class":4202},[4152,30748,4819],{"class":4169},[4152,30750,30751,30753,30755],{"class":4154,"line":4866},[4152,30752,10654],{"class":4181},[4152,30754,10755],{"class":4202},[4152,30756,4819],{"class":4169},[4152,30758,30759,30761,30763],{"class":4154,"line":4872},[4152,30760,10673],{"class":4181},[4152,30762,10608],{"class":4202},[4152,30764,4819],{"class":4169},[4152,30766,30767],{"class":4154,"line":4921},[4152,30768,10682],{"class":4169},[4152,30770,30771],{"class":4154,"line":4930},[4152,30772,4566],{"emptyLinePlaceholder":4565},[4152,30774,30775,30777,30780,30782,30784,30786,30788,30790,30792],{"class":4154,"line":4940},[4152,30776,15584],{"class":4173},[4152,30778,30779],{"class":4162}," Pref",[4152,30781,4964],{"class":4169},[4152,30783,15592],{"class":4202},[4152,30785,10820],{"class":4169},[4152,30787,10817],{"class":4202},[4152,30789,10820],{"class":4169},[4152,30791,10823],{"class":4202},[4152,30793,4529],{"class":4169},[4152,30795,30796],{"class":4154,"line":4946},[4152,30797,4566],{"emptyLinePlaceholder":4565},[4152,30799,30800,30802,30805],{"class":4154,"line":4951},[4152,30801,4959],{"class":4173},[4152,30803,30804],{"class":4597}," TRIPS",[4152,30806,30807],{"class":4169}," = [\n",[4152,30809,30810],{"class":4154,"line":4956},[4152,30811,25827],{"class":4169},[4152,30813,30814,30816,30819],{"class":4154,"line":4976},[4152,30815,25842],{"class":4181},[4152,30817,30818],{"class":4202}," 'Київ — Карпати'",[4152,30820,4819],{"class":4169},[4152,30822,30823,30826,30829],{"class":4154,"line":4985},[4152,30824,30825],{"class":4181},"    date:",[4152,30827,30828],{"class":4202}," '12–18 черв. 2026'",[4152,30830,4819],{"class":4169},[4152,30832,30833,30836,30839],{"class":4154,"line":4995},[4152,30834,30835],{"class":4181},"    desc:",[4152,30837,30838],{"class":4202}," 'Гори, полонини і ранки з кавою.'",[4152,30840,4819],{"class":4169},[4152,30842,30843,30846,30848],{"class":4154,"line":5005},[4152,30844,30845],{"class":4181},"    cover:",[4152,30847,25875],{"class":4202},[4152,30849,4819],{"class":4169},[4152,30851,30852],{"class":4154,"line":5016},[4152,30853,5041],{"class":4169},[4152,30855,30856],{"class":4154,"line":5027},[4152,30857,25827],{"class":4169},[4152,30859,30860,30862,30864],{"class":4154,"line":5038},[4152,30861,25842],{"class":4181},[4152,30863,25901],{"class":4202},[4152,30865,4819],{"class":4169},[4152,30867,30868,30870,30872],{"class":4154,"line":5044},[4152,30869,30825],{"class":4181},[4152,30871,25910],{"class":4202},[4152,30873,4819],{"class":4169},[4152,30875,30876,30878,30881],{"class":4154,"line":5077},[4152,30877,30835],{"class":4181},[4152,30879,30880],{"class":4202}," 'Кава, площа Ринок, закапелки.'",[4152,30882,4819],{"class":4169},[4152,30884,30885,30887,30889],{"class":4154,"line":5107},[4152,30886,30845],{"class":4181},[4152,30888,25928],{"class":4202},[4152,30890,4819],{"class":4169},[4152,30892,30893],{"class":4154,"line":5115},[4152,30894,5041],{"class":4169},[4152,30896,30897],{"class":4154,"line":5125},[4152,30898,23879],{"class":4169},[4152,30900,30901],{"class":4154,"line":5136},[4152,30902,4566],{"emptyLinePlaceholder":4565},[4152,30904,30905,30907,30909,30911,30913],{"class":4154,"line":5146},[4152,30906,4572],{"class":4510},[4152,30908,4575],{"class":4510},[4152,30910,4578],{"class":4173},[4152,30912,4582],{"class":4581},[4152,30914,4585],{"class":4169},[4152,30916,30917],{"class":4154,"line":5156},[4152,30918,30919],{"class":5327},"  \u002F\u002F У демо «system» ≈ light (немає реального Appearance)\n",[4152,30921,30922,30924,30926,30929,30931,30934,30936,30938,30940,30943,30945,30947],{"class":4154,"line":5161},[4152,30923,4591],{"class":4173},[4152,30925,4594],{"class":4169},[4152,30927,30928],{"class":4597},"pref",[4152,30930,3536],{"class":4169},[4152,30932,30933],{"class":4597},"setPref",[4152,30935,4606],{"class":4169},[4152,30937,4517],{"class":4581},[4152,30939,4159],{"class":4169},[4152,30941,30942],{"class":4162},"Pref",[4152,30944,10826],{"class":4169},[4152,30946,10817],{"class":4202},[4152,30948,4617],{"class":4169},[4152,30950,30951,30953,30955,30957,30959,30961,30963,30965,30967,30969,30971],{"class":4154,"line":5176},[4152,30952,4591],{"class":4173},[4152,30954,12910],{"class":4597},[4152,30956,4964],{"class":4169},[4152,30958,30928],{"class":4181},[4152,30960,10868],{"class":4169},[4152,30962,10823],{"class":4202},[4152,30964,10873],{"class":4169},[4152,30966,10823],{"class":4202},[4152,30968,10878],{"class":4169},[4152,30970,10817],{"class":4202},[4152,30972,4529],{"class":4169},[4152,30974,30975,30977,30979,30981,30983,30985,30987,30989,30991,30993,30995],{"class":4154,"line":5192},[4152,30976,4591],{"class":4173},[4152,30978,10861],{"class":4597},[4152,30980,4964],{"class":4169},[4152,30982,12929],{"class":4181},[4152,30984,10868],{"class":4169},[4152,30986,10823],{"class":4202},[4152,30988,10873],{"class":4169},[4152,30990,3638],{"class":4181},[4152,30992,10878],{"class":4169},[4152,30994,3631],{"class":4181},[4152,30996,4529],{"class":4169},[4152,30998,30999],{"class":4154,"line":5219},[4152,31000,4566],{"emptyLinePlaceholder":4565},[4152,31002,31003,31005],{"class":4154,"line":6529},[4152,31004,4628],{"class":4510},[4152,31006,4631],{"class":4169},[4152,31008,31009,31011,31013,31015,31017,31019,31021,31023,31025,31027,31029,31031,31033,31035,31037,31039,31041],{"class":4154,"line":6534},[4152,31010,4637],{"class":4158},[4152,31012,3967],{"class":4162},[4152,31014,4166],{"class":4165},[4152,31016,4170],{"class":4169},[4152,31018,4174],{"class":4173},[4152,31020,6047],{"class":4177},[4152,31022,4648],{"class":4181},[4152,31024,3609],{"class":4177},[4152,31026,4653],{"class":4181},[4152,31028,9098],{"class":4177},[4152,31030,4199],{"class":4181},[4152,31032,10861],{"class":4181},[4152,31034,3609],{"class":4177},[4152,31036,9618],{"class":4181},[4152,31038,9110],{"class":4177},[4152,31040,4209],{"class":4173},[4152,31042,4658],{"class":4158},[4152,31044,31045,31047,31049,31051,31053,31055,31057,31059,31061,31063,31065,31068,31070,31072,31074,31076,31078],{"class":4154,"line":6562},[4152,31046,4664],{"class":4158},[4152,31048,3967],{"class":4162},[4152,31050,4166],{"class":4165},[4152,31052,4170],{"class":4169},[4152,31054,4174],{"class":4173},[4152,31056,6047],{"class":4177},[4152,31058,4648],{"class":4181},[4152,31060,3609],{"class":4177},[4152,31062,20159],{"class":4181},[4152,31064,9098],{"class":4177},[4152,31066,31067],{"class":4181},"borderBottomColor:",[4152,31069,10861],{"class":4181},[4152,31071,3609],{"class":4177},[4152,31073,9769],{"class":4181},[4152,31075,9110],{"class":4177},[4152,31077,4209],{"class":4173},[4152,31079,4658],{"class":4158},[4152,31081,31082,31084,31086,31088,31090,31092,31094,31096,31098,31100,31102,31104,31106,31108,31110,31112,31114,31116,31118,31120,31122],{"class":4154,"line":6570},[4152,31083,4875],{"class":4158},[4152,31085,4010],{"class":4162},[4152,31087,4166],{"class":4165},[4152,31089,4170],{"class":4169},[4152,31091,4174],{"class":4173},[4152,31093,6047],{"class":4177},[4152,31095,4648],{"class":4181},[4152,31097,3609],{"class":4177},[4152,31099,4679],{"class":4181},[4152,31101,9098],{"class":4177},[4152,31103,5068],{"class":4181},[4152,31105,10861],{"class":4181},[4152,31107,3609],{"class":4177},[4152,31109,9670],{"class":4181},[4152,31111,9110],{"class":4177},[4152,31113,4209],{"class":4173},[4152,31115,4684],{"class":4158},[4152,31117,24183],{"class":4169},[4152,31119,4690],{"class":4158},[4152,31121,4010],{"class":4162},[4152,31123,4658],{"class":4158},[4152,31125,31126,31128,31130,31132,31134,31136,31138,31140,31142,31144,31146,31148,31150,31152,31154,31156],{"class":4154,"line":6580},[4152,31127,4875],{"class":4158},[4152,31129,4010],{"class":4162},[4152,31131,4166],{"class":4165},[4152,31133,4170],{"class":4169},[4152,31135,4174],{"class":4173},[4152,31137,4178],{"class":4177},[4152,31139,5068],{"class":4181},[4152,31141,10861],{"class":4181},[4152,31143,3609],{"class":4177},[4152,31145,9693],{"class":4181},[4152,31147,3536],{"class":4177},[4152,31149,6654],{"class":4181},[4152,31151,6657],{"class":4185},[4152,31153,4206],{"class":4177},[4152,31155,4209],{"class":4173},[4152,31157,4658],{"class":4158},[4152,31159,31160,31163,31165,31167,31169,31171,31173,31175,31177,31179],{"class":4154,"line":6589},[4152,31161,31162],{"class":4169},"          Тема: ",[4152,31164,4174],{"class":4173},[4152,31166,12929],{"class":4181},[4152,31168,11063],{"class":4169},[4152,31170,14404],{"class":4202},[4152,31172,4901],{"class":4169},[4152,31174,20260],{"class":4202},[4152,31176,4907],{"class":4169},[4152,31178,20265],{"class":4202},[4152,31180,4782],{"class":4173},[4152,31182,31183,31185,31187],{"class":4154,"line":6598},[4152,31184,6107],{"class":4158},[4152,31186,4010],{"class":4162},[4152,31188,4658],{"class":4158},[4152,31190,31191,31193,31195,31197,31199,31201,31203,31205,31208,31210],{"class":4154,"line":6603},[4152,31192,4875],{"class":4158},[4152,31194,3967],{"class":4162},[4152,31196,4166],{"class":4165},[4152,31198,4170],{"class":4169},[4152,31200,4174],{"class":4173},[4152,31202,4648],{"class":4181},[4152,31204,3609],{"class":4177},[4152,31206,31207],{"class":4181},"chips",[4152,31209,4209],{"class":4173},[4152,31211,4658],{"class":4158},[4152,31213,31214,31216],{"class":4154,"line":6629},[4152,31215,8267],{"class":4173},[4152,31217,15633],{"class":4177},[4152,31219,31220],{"class":4154,"line":6662},[4152,31221,31222],{"class":4177},"            [\n",[4152,31224,31225,31228,31230,31232,31235],{"class":4154,"line":8168},[4152,31226,31227],{"class":4177},"              [",[4152,31229,15592],{"class":4202},[4152,31231,3536],{"class":4177},[4152,31233,31234],{"class":4202},"'Система'",[4152,31236,16359],{"class":4177},[4152,31238,31239,31241,31243,31245,31248],{"class":4154,"line":8187},[4152,31240,31227],{"class":4177},[4152,31242,10817],{"class":4202},[4152,31244,3536],{"class":4177},[4152,31246,31247],{"class":4202},"'Світла'",[4152,31249,16359],{"class":4177},[4152,31251,31252,31254,31256,31258,31261],{"class":4154,"line":8198},[4152,31253,31227],{"class":4177},[4152,31255,10823],{"class":4202},[4152,31257,3536],{"class":4177},[4152,31259,31260],{"class":4202},"'Темна'",[4152,31262,16359],{"class":4177},[4152,31264,31265,31268,31270],{"class":4154,"line":8214},[4152,31266,31267],{"class":4177},"            ] ",[4152,31269,11027],{"class":4510},[4152,31271,31272],{"class":4173}," const\n",[4152,31274,31275,31278,31280,31283,31285,31287,31289,31292,31294],{"class":4154,"line":8229},[4152,31276,31277],{"class":4177},"          ).",[4152,31279,11035],{"class":4581},[4152,31281,31282],{"class":4177},"(([",[4152,31284,23808],{"class":4181},[4152,31286,3536],{"class":4177},[4152,31288,5465],{"class":4181},[4152,31290,31291],{"class":4177},"]) ",[4152,31293,4758],{"class":4173},[4152,31295,4982],{"class":4177},[4152,31297,31298,31300,31302,31304,31307,31309,31312],{"class":4154,"line":8236},[4152,31299,24445],{"class":4173},[4152,31301,11054],{"class":4597},[4152,31303,11057],{"class":4169},[4152,31305,31306],{"class":4181}," pref",[4152,31308,11063],{"class":4169},[4152,31310,31311],{"class":4181}," id",[4152,31313,4529],{"class":4177},[4152,31315,31316,31318],{"class":4154,"line":8241},[4152,31317,24466],{"class":4510},[4152,31319,4631],{"class":4177},[4152,31321,31322,31324],{"class":4154,"line":8264},[4152,31323,11206],{"class":4158},[4152,31325,4742],{"class":4162},[4152,31327,31328,31330,31332,31334,31336],{"class":4154,"line":8284},[4152,31329,24479],{"class":4165},[4152,31331,4170],{"class":4169},[4152,31333,4174],{"class":4173},[4152,31335,23808],{"class":4181},[4152,31337,4782],{"class":4173},[4152,31339,31340,31342,31344,31346,31348,31350,31353,31355,31357,31359],{"class":4154,"line":8293},[4152,31341,24496],{"class":4165},[4152,31343,4170],{"class":4169},[4152,31345,4174],{"class":4173},[4152,31347,4755],{"class":4177},[4152,31349,4758],{"class":4173},[4152,31351,31352],{"class":4581}," setPref",[4152,31354,4611],{"class":4177},[4152,31356,23808],{"class":4181},[4152,31358,3910],{"class":4177},[4152,31360,4782],{"class":4173},[4152,31362,31363,31365,31367,31369],{"class":4154,"line":8302},[4152,31364,11214],{"class":4165},[4152,31366,4170],{"class":4169},[4152,31368,4174],{"class":4173},[4152,31370,9163],{"class":4177},[4152,31372,31373,31375,31377,31379],{"class":4154,"line":8307},[4152,31374,24533],{"class":4181},[4152,31376,3609],{"class":4177},[4152,31378,11139],{"class":4181},[4152,31380,4819],{"class":4177},[4152,31382,31383],{"class":4154,"line":8330},[4152,31384,24545],{"class":4177},[4152,31386,31387,31389,31391,31393,31395,31397,31399,31401,31403,31405,31407],{"class":4154,"line":8336},[4152,31388,24550],{"class":4181},[4152,31390,11054],{"class":4181},[4152,31392,4901],{"class":4169},[4152,31394,10861],{"class":4181},[4152,31396,3609],{"class":4177},[4152,31398,9516],{"class":4181},[4152,31400,4907],{"class":4169},[4152,31402,10861],{"class":4181},[4152,31404,3609],{"class":4177},[4152,31406,3660],{"class":4181},[4152,31408,4819],{"class":4177},[4152,31410,31411,31413,31415,31417,31419],{"class":4154,"line":8345},[4152,31412,24575],{"class":4181},[4152,31414,10861],{"class":4181},[4152,31416,3609],{"class":4177},[4152,31418,9769],{"class":4181},[4152,31420,4819],{"class":4177},[4152,31422,31423],{"class":4154,"line":8354},[4152,31424,24588],{"class":4177},[4152,31426,31427,31429],{"class":4154,"line":8359},[4152,31428,24593],{"class":4177},[4152,31430,4782],{"class":4173},[4152,31432,31433],{"class":4154,"line":8364},[4152,31434,11275],{"class":4158},[4152,31436,31437,31439],{"class":4154,"line":8369},[4152,31438,24661],{"class":4158},[4152,31440,11209],{"class":4162},[4152,31442,31443,31445,31447,31449],{"class":4154,"line":8386},[4152,31444,24706],{"class":4165},[4152,31446,4170],{"class":4169},[4152,31448,4174],{"class":4173},[4152,31450,6224],{"class":4177},[4152,31452,31453,31456,31458,31460,31462,31464,31466,31468,31470,31472,31474],{"class":4154,"line":8393},[4152,31454,31455],{"class":4181},"                    color:",[4152,31457,11054],{"class":4181},[4152,31459,4901],{"class":4169},[4152,31461,10861],{"class":4181},[4152,31463,3609],{"class":4177},[4152,31465,9747],{"class":4181},[4152,31467,4907],{"class":4169},[4152,31469,10861],{"class":4181},[4152,31471,3609],{"class":4177},[4152,31473,9670],{"class":4181},[4152,31475,4819],{"class":4177},[4152,31477,31478,31481,31483],{"class":4154,"line":8402},[4152,31479,31480],{"class":4181},"                    fontWeight:",[4152,31482,5763],{"class":4202},[4152,31484,4819],{"class":4177},[4152,31486,31487,31490,31492],{"class":4154,"line":8411},[4152,31488,31489],{"class":4181},"                    fontSize:",[4152,31491,5087],{"class":4185},[4152,31493,4819],{"class":4177},[4152,31495,31496,31499],{"class":4154,"line":8420},[4152,31497,31498],{"class":4177},"                  }",[4152,31500,4782],{"class":4173},[4152,31502,31503],{"class":4154,"line":8429},[4152,31504,24724],{"class":4158},[4152,31506,31507,31509,31511],{"class":4154,"line":8438},[4152,31508,24729],{"class":4173},[4152,31510,5465],{"class":4181},[4152,31512,4782],{"class":4173},[4152,31514,31515,31517,31519],{"class":4154,"line":8443},[4152,31516,24742],{"class":4158},[4152,31518,4010],{"class":4162},[4152,31520,4658],{"class":4158},[4152,31522,31523,31525,31527],{"class":4154,"line":8456},[4152,31524,11304],{"class":4158},[4152,31526,4493],{"class":4162},[4152,31528,4658],{"class":4158},[4152,31530,31531],{"class":4154,"line":8476},[4152,31532,24759],{"class":4177},[4152,31534,31535,31537],{"class":4154,"line":8506},[4152,31536,24764],{"class":4177},[4152,31538,4782],{"class":4173},[4152,31540,31541,31543,31545],{"class":4154,"line":8513},[4152,31542,6107],{"class":4158},[4152,31544,3967],{"class":4162},[4152,31546,4658],{"class":4158},[4152,31548,31549,31551,31553],{"class":4154,"line":8522},[4152,31550,4730],{"class":4158},[4152,31552,3967],{"class":4162},[4152,31554,4658],{"class":4158},[4152,31556,31557],{"class":4154,"line":8531},[4152,31558,4566],{"emptyLinePlaceholder":4565},[4152,31560,31561,31563,31565,31568,31570,31572,31574,31576,31578,31580],{"class":4154,"line":8540},[4152,31562,4664],{"class":4158},[4152,31564,23695],{"class":4162},[4152,31566,31567],{"class":4165}," contentContainerStyle",[4152,31569,4170],{"class":4169},[4152,31571,4174],{"class":4173},[4152,31573,4648],{"class":4181},[4152,31575,3609],{"class":4177},[4152,31577,6814],{"class":4181},[4152,31579,4209],{"class":4173},[4152,31581,4658],{"class":4158},[4152,31583,31584,31586,31589,31591,31593,31595,31598,31600,31602],{"class":4154,"line":8549},[4152,31585,7708],{"class":4173},[4152,31587,31588],{"class":4597},"TRIPS",[4152,31590,3609],{"class":4177},[4152,31592,11035],{"class":4581},[4152,31594,4764],{"class":4177},[4152,31596,31597],{"class":4181},"t",[4152,31599,4770],{"class":4177},[4152,31601,4758],{"class":4173},[4152,31603,4631],{"class":4177},[4152,31605,31606,31608],{"class":4154,"line":8558},[4152,31607,6074],{"class":4158},[4152,31609,6212],{"class":4162},[4152,31611,31612,31615,31617,31619,31621,31623,31625],{"class":4154,"line":8569},[4152,31613,31614],{"class":4165},"            key",[4152,31616,4170],{"class":4169},[4152,31618,4174],{"class":4173},[4152,31620,31597],{"class":4181},[4152,31622,3609],{"class":4177},[4152,31624,4679],{"class":4181},[4152,31626,4782],{"class":4173},[4152,31628,31629,31631,31633,31635,31637,31639,31641,31643,31645,31647,31649,31651,31653,31655,31657,31659,31661,31663,31665],{"class":4154,"line":8578},[4152,31630,14264],{"class":4165},[4152,31632,4170],{"class":4169},[4152,31634,4174],{"class":4173},[4152,31636,6047],{"class":4177},[4152,31638,4648],{"class":4181},[4152,31640,3609],{"class":4177},[4152,31642,5996],{"class":4181},[4152,31644,9098],{"class":4177},[4152,31646,4199],{"class":4181},[4152,31648,10861],{"class":4181},[4152,31650,3609],{"class":4177},[4152,31652,3660],{"class":4181},[4152,31654,3536],{"class":4177},[4152,31656,11485],{"class":4181},[4152,31658,10861],{"class":4181},[4152,31660,3609],{"class":4177},[4152,31662,9769],{"class":4181},[4152,31664,9110],{"class":4177},[4152,31666,4782],{"class":4173},[4152,31668,31669],{"class":4154,"line":8583},[4152,31670,14320],{"class":4158},[4152,31672,31673,31675,31677,31680,31682,31684,31686,31688,31691,31693,31695,31697,31699,31701,31703,31705,31707,31709,31711,31713],{"class":4154,"line":8610},[4152,31674,8072],{"class":4158},[4152,31676,26081],{"class":4162},[4152,31678,31679],{"class":4165}," source",[4152,31681,4170],{"class":4169},[4152,31683,4174],{"class":4173},[4152,31685,4178],{"class":4177},[4152,31687,26468],{"class":4181},[4152,31689,31690],{"class":4181}," t",[4152,31692,3609],{"class":4177},[4152,31694,26496],{"class":4181},[4152,31696,4206],{"class":4177},[4152,31698,4209],{"class":4173},[4152,31700,4166],{"class":4165},[4152,31702,4170],{"class":4169},[4152,31704,4174],{"class":4173},[4152,31706,4648],{"class":4181},[4152,31708,3609],{"class":4177},[4152,31710,26496],{"class":4181},[4152,31712,4209],{"class":4173},[4152,31714,4212],{"class":4158},[4152,31716,31717,31719,31721,31723,31725,31727,31729,31731,31733,31735],{"class":4154,"line":8642},[4152,31718,8072],{"class":4158},[4152,31720,3967],{"class":4162},[4152,31722,4166],{"class":4165},[4152,31724,4170],{"class":4169},[4152,31726,4174],{"class":4173},[4152,31728,4648],{"class":4181},[4152,31730,3609],{"class":4177},[4152,31732,26550],{"class":4181},[4152,31734,4209],{"class":4173},[4152,31736,4658],{"class":4158},[4152,31738,31739,31741,31743,31745,31747,31749,31751,31753,31755,31757,31759,31761,31763,31765,31767,31769,31771,31773,31775,31777,31779,31781],{"class":4154,"line":8674},[4152,31740,11206],{"class":4158},[4152,31742,4010],{"class":4162},[4152,31744,4166],{"class":4165},[4152,31746,4170],{"class":4169},[4152,31748,4174],{"class":4173},[4152,31750,6047],{"class":4177},[4152,31752,4648],{"class":4181},[4152,31754,3609],{"class":4177},[4152,31756,11721],{"class":4181},[4152,31758,9098],{"class":4177},[4152,31760,5068],{"class":4181},[4152,31762,10861],{"class":4181},[4152,31764,3609],{"class":4177},[4152,31766,9670],{"class":4181},[4152,31768,9110],{"class":4177},[4152,31770,4209],{"class":4173},[4152,31772,26628],{"class":4165},[4152,31774,4170],{"class":4169},[4152,31776,4174],{"class":4173},[4152,31778,4473],{"class":4185},[4152,31780,4209],{"class":4173},[4152,31782,4658],{"class":4158},[4152,31784,31785,31787,31789,31791,31793],{"class":4154,"line":8681},[4152,31786,11280],{"class":4173},[4152,31788,31597],{"class":4181},[4152,31790,3609],{"class":4177},[4152,31792,4679],{"class":4181},[4152,31794,4782],{"class":4173},[4152,31796,31797,31799,31801],{"class":4154,"line":8694},[4152,31798,11304],{"class":4158},[4152,31800,4010],{"class":4162},[4152,31802,4658],{"class":4158},[4152,31804,31805,31807,31809,31811,31813,31815,31817,31819,31821,31823,31825,31827,31829,31831,31833,31835,31837,31839,31841],{"class":4154,"line":8704},[4152,31806,11206],{"class":4158},[4152,31808,4010],{"class":4162},[4152,31810,4166],{"class":4165},[4152,31812,4170],{"class":4169},[4152,31814,4174],{"class":4173},[4152,31816,4178],{"class":4177},[4152,31818,5068],{"class":4181},[4152,31820,10861],{"class":4181},[4152,31822,3609],{"class":4177},[4152,31824,9693],{"class":4181},[4152,31826,3536],{"class":4177},[4152,31828,5052],{"class":4181},[4152,31830,5033],{"class":4185},[4152,31832,3536],{"class":4177},[4152,31834,6654],{"class":4181},[4152,31836,6657],{"class":4185},[4152,31838,4206],{"class":4177},[4152,31840,4209],{"class":4173},[4152,31842,4658],{"class":4158},[4152,31844,31845,31847,31849,31851,31854],{"class":4154,"line":8714},[4152,31846,11280],{"class":4173},[4152,31848,31597],{"class":4181},[4152,31850,3609],{"class":4177},[4152,31852,31853],{"class":4181},"date",[4152,31855,4782],{"class":4173},[4152,31857,31858,31860,31862],{"class":4154,"line":8719},[4152,31859,11304],{"class":4158},[4152,31861,4010],{"class":4162},[4152,31863,4658],{"class":4158},[4152,31865,31866,31868,31870,31872,31874,31876,31878,31880,31882,31884,31886,31888,31890,31892,31894,31896,31898,31900,31902,31904,31906],{"class":4154,"line":8738},[4152,31867,11206],{"class":4158},[4152,31869,4010],{"class":4162},[4152,31871,4166],{"class":4165},[4152,31873,4170],{"class":4169},[4152,31875,4174],{"class":4173},[4152,31877,4178],{"class":4177},[4152,31879,5068],{"class":4181},[4152,31881,10861],{"class":4181},[4152,31883,3609],{"class":4177},[4152,31885,9693],{"class":4181},[4152,31887,3536],{"class":4177},[4152,31889,6654],{"class":4181},[4152,31891,5777],{"class":4185},[4152,31893,4206],{"class":4177},[4152,31895,4209],{"class":4173},[4152,31897,26628],{"class":4165},[4152,31899,4170],{"class":4169},[4152,31901,4174],{"class":4173},[4152,31903,5524],{"class":4185},[4152,31905,4209],{"class":4173},[4152,31907,4658],{"class":4158},[4152,31909,31910,31912,31914,31916,31918],{"class":4154,"line":8746},[4152,31911,11280],{"class":4173},[4152,31913,31597],{"class":4181},[4152,31915,3609],{"class":4177},[4152,31917,7935],{"class":4181},[4152,31919,4782],{"class":4173},[4152,31921,31922,31924,31926],{"class":4154,"line":8756},[4152,31923,11304],{"class":4158},[4152,31925,4010],{"class":4162},[4152,31927,4658],{"class":4158},[4152,31929,31930,31932,31934],{"class":4154,"line":8765},[4152,31931,11313],{"class":4158},[4152,31933,3967],{"class":4162},[4152,31935,4658],{"class":4158},[4152,31937,31938,31940,31942],{"class":4154,"line":8774},[4152,31939,8105],{"class":4158},[4152,31941,3967],{"class":4162},[4152,31943,4658],{"class":4158},[4152,31945,31946,31949],{"class":4154,"line":8779},[4152,31947,31948],{"class":4177},"        ))",[4152,31950,4782],{"class":4173},[4152,31952,31953,31955,31957],{"class":4154,"line":8805},[4152,31954,4730],{"class":4158},[4152,31956,23695],{"class":4162},[4152,31958,4658],{"class":4158},[4152,31960,31961],{"class":4154,"line":8812},[4152,31962,4566],{"emptyLinePlaceholder":4565},[4152,31964,31965,31967,31969,31971,31973,31975,31977,31979,31981,31983,31985,31988,31990,31992,31994,31996,31998,32000,32002,32004,32006,32008],{"class":4154,"line":8821},[4152,31966,4664],{"class":4158},[4152,31968,3967],{"class":4162},[4152,31970,4166],{"class":4165},[4152,31972,4170],{"class":4169},[4152,31974,4174],{"class":4173},[4152,31976,6047],{"class":4177},[4152,31978,4648],{"class":4181},[4152,31980,3609],{"class":4177},[4152,31982,25285],{"class":4181},[4152,31984,9098],{"class":4177},[4152,31986,31987],{"class":4181},"borderTopColor:",[4152,31989,10861],{"class":4181},[4152,31991,3609],{"class":4177},[4152,31993,9769],{"class":4181},[4152,31995,3536],{"class":4177},[4152,31997,4199],{"class":4181},[4152,31999,10861],{"class":4181},[4152,32001,3609],{"class":4177},[4152,32003,9618],{"class":4181},[4152,32005,9110],{"class":4177},[4152,32007,4209],{"class":4173},[4152,32009,4658],{"class":4158},[4152,32011,32012,32014,32016,32018,32020,32022,32024,32026,32028,32031,32033,32035,32037,32039,32041,32043,32045],{"class":4154,"line":8830},[4152,32013,4875],{"class":4158},[4152,32015,4493],{"class":4162},[4152,32017,4166],{"class":4165},[4152,32019,4170],{"class":4169},[4152,32021,4174],{"class":4173},[4152,32023,6047],{"class":4177},[4152,32025,4648],{"class":4181},[4152,32027,3609],{"class":4177},[4152,32029,32030],{"class":4181},"cta",[4152,32032,9098],{"class":4177},[4152,32034,4199],{"class":4181},[4152,32036,10861],{"class":4181},[4152,32038,3609],{"class":4177},[4152,32040,9516],{"class":4181},[4152,32042,9110],{"class":4177},[4152,32044,4209],{"class":4173},[4152,32046,4658],{"class":4158},[4152,32048,32049,32051,32053,32055,32057,32059,32061,32063,32065,32067,32069,32071,32073,32075,32077,32079,32081,32084,32086,32088],{"class":4154,"line":8839},[4152,32050,6074],{"class":4158},[4152,32052,4010],{"class":4162},[4152,32054,4166],{"class":4165},[4152,32056,4170],{"class":4169},[4152,32058,4174],{"class":4173},[4152,32060,4178],{"class":4177},[4152,32062,5068],{"class":4181},[4152,32064,10861],{"class":4181},[4152,32066,3609],{"class":4177},[4152,32068,9747],{"class":4181},[4152,32070,3536],{"class":4177},[4152,32072,5060],{"class":4181},[4152,32074,5063],{"class":4202},[4152,32076,4206],{"class":4177},[4152,32078,4209],{"class":4173},[4152,32080,4684],{"class":4158},[4152,32082,32083],{"class":4169},"Нова поїздка",[4152,32085,4690],{"class":4158},[4152,32087,4010],{"class":4162},[4152,32089,4658],{"class":4158},[4152,32091,32092,32094,32096],{"class":4154,"line":8848},[4152,32093,6107],{"class":4158},[4152,32095,4493],{"class":4162},[4152,32097,4658],{"class":4158},[4152,32099,32100,32102,32104],{"class":4154,"line":8853},[4152,32101,4730],{"class":4158},[4152,32103,3967],{"class":4162},[4152,32105,4658],{"class":4158},[4152,32107,32108,32110,32112],{"class":4154,"line":8866},[4152,32109,4933],{"class":4158},[4152,32111,3967],{"class":4162},[4152,32113,4658],{"class":4158},[4152,32115,32116],{"class":4154,"line":8879},[4152,32117,4943],{"class":4169},[4152,32119,32120],{"class":4154,"line":8904},[4152,32121,4782],{"class":4169},[4152,32123,32124],{"class":4154,"line":8930},[4152,32125,4566],{"emptyLinePlaceholder":4565},[4152,32127,32128,32130,32132,32134,32136,32138,32140],{"class":4154,"line":11945},[4152,32129,4959],{"class":4173},[4152,32131,4831],{"class":4597},[4152,32133,4964],{"class":4169},[4152,32135,3572],{"class":4181},[4152,32137,3609],{"class":4169},[4152,32139,4264],{"class":4581},[4152,32141,4973],{"class":4169},[4152,32143,32144,32146,32148,32150,32152],{"class":4154,"line":11956},[4152,32145,4979],{"class":4181},[4152,32147,4514],{"class":4169},[4152,32149,4182],{"class":4181},[4152,32151,4186],{"class":4185},[4152,32153,5074],{"class":4169},[4152,32155,32156,32158,32160,32162,32164,32166,32169,32171,32173,32175,32177],{"class":4154,"line":11992},[4152,32157,20915],{"class":4181},[4152,32159,4514],{"class":4169},[4152,32161,4191],{"class":4181},[4152,32163,4194],{"class":4185},[4152,32165,3536],{"class":4169},[4152,32167,32168],{"class":4181},"borderBottomWidth:",[4152,32170,4186],{"class":4185},[4152,32172,3536],{"class":4169},[4152,32174,5647],{"class":4181},[4152,32176,6657],{"class":4185},[4152,32178,5074],{"class":4169},[4152,32180,32181,32183,32185,32187,32189,32191,32193,32195],{"class":4154,"line":12027},[4152,32182,5047],{"class":4181},[4152,32184,4514],{"class":4169},[4152,32186,5052],{"class":4181},[4152,32188,20941],{"class":4185},[4152,32190,3536],{"class":4169},[4152,32192,5060],{"class":4181},[4152,32194,5063],{"class":4202},[4152,32196,5074],{"class":4169},[4152,32198,32199,32202,32204,32206,32208,32210,32212,32214,32216,32218,32220,32222,32224,32226],{"class":4154,"line":12033},[4152,32200,32201],{"class":4181},"  chips:",[4152,32203,4514],{"class":4169},[4152,32205,12401],{"class":4181},[4152,32207,12404],{"class":4202},[4152,32209,3536],{"class":4169},[4152,32211,19015],{"class":4181},[4152,32213,19018],{"class":4202},[4152,32215,3536],{"class":4169},[4152,32217,5647],{"class":4181},[4152,32219,12411],{"class":4185},[4152,32221,3536],{"class":4169},[4152,32223,6654],{"class":4181},[4152,32225,6439],{"class":4185},[4152,32227,5074],{"class":4169},[4152,32229,32230,32232],{"class":4154,"line":12042},[4152,32231,12419],{"class":4181},[4152,32233,4982],{"class":4169},[4152,32235,32236,32238,32240],{"class":4154,"line":12051},[4152,32237,12427],{"class":4181},[4152,32239,5033],{"class":4185},[4152,32241,4819],{"class":4169},[4152,32243,32244,32246,32248],{"class":4154,"line":12058},[4152,32245,5128],{"class":4181},[4152,32247,12411],{"class":4185},[4152,32249,4819],{"class":4169},[4152,32251,32252,32254,32256],{"class":4154,"line":12067},[4152,32253,5139],{"class":4181},[4152,32255,12411],{"class":4185},[4152,32257,4819],{"class":4169},[4152,32259,32260,32262,32264],{"class":4154,"line":12072},[4152,32261,5719],{"class":4181},[4152,32263,4186],{"class":4185},[4152,32265,4819],{"class":4169},[4152,32267,32268],{"class":4154,"line":12079},[4152,32269,5041],{"class":4169},[4152,32271,32272,32274,32276,32278,32280,32282,32284,32286,32288,32291,32293],{"class":4154,"line":12111},[4152,32273,7161],{"class":4181},[4152,32275,4514],{"class":4169},[4152,32277,4191],{"class":4181},[4152,32279,4194],{"class":4185},[4152,32281,3536],{"class":4169},[4152,32283,5647],{"class":4181},[4152,32285,5131],{"class":4185},[4152,32287,3536],{"class":4169},[4152,32289,32290],{"class":4181},"paddingBottom:",[4152,32292,5011],{"class":4185},[4152,32294,5074],{"class":4169},[4152,32296,32297,32299,32301,32303,32305,32307,32309,32311,32313,32316,32318],{"class":4154,"line":12130},[4152,32298,6471],{"class":4181},[4152,32300,4514],{"class":4169},[4152,32302,19083],{"class":4181},[4152,32304,4194],{"class":4185},[4152,32306,3536],{"class":4169},[4152,32308,19090],{"class":4181},[4152,32310,4186],{"class":4185},[4152,32312,3536],{"class":4169},[4152,32314,32315],{"class":4181},"overflow:",[4152,32317,6524],{"class":4202},[4152,32319,5074],{"class":4169},[4152,32321,32322,32324,32326,32328,32330,32332,32334,32337,32339,32341,32344],{"class":4154,"line":12141},[4152,32323,27097],{"class":4181},[4152,32325,4514],{"class":4169},[4152,32327,27018],{"class":4181},[4152,32329,27106],{"class":4202},[4152,32331,3536],{"class":4169},[4152,32333,27025],{"class":4181},[4152,32335,32336],{"class":4185}," 120",[4152,32338,3536],{"class":4169},[4152,32340,4199],{"class":4181},[4152,32342,32343],{"class":4202}," '#ccc'",[4152,32345,5074],{"class":4169},[4152,32347,32348,32350,32352,32354,32356],{"class":4154,"line":12170},[4152,32349,27126],{"class":4181},[4152,32351,4514],{"class":4169},[4152,32353,4191],{"class":4181},[4152,32355,5131],{"class":4185},[4152,32357,5074],{"class":4169},[4152,32359,32360,32362,32364,32366,32368,32370,32372,32374],{"class":4154,"line":12177},[4152,32361,12558],{"class":4181},[4152,32363,4514],{"class":4169},[4152,32365,5052],{"class":4181},[4152,32367,12292],{"class":4185},[4152,32369,3536],{"class":4169},[4152,32371,5060],{"class":4181},[4152,32373,5063],{"class":4202},[4152,32375,5074],{"class":4169},[4152,32377,32378,32380,32382,32384,32386,32388,32391,32393],{"class":4154,"line":12182},[4152,32379,25695],{"class":4181},[4152,32381,4514],{"class":4169},[4152,32383,4191],{"class":4181},[4152,32385,4194],{"class":4185},[4152,32387,3536],{"class":4169},[4152,32389,32390],{"class":4181},"borderTopWidth:",[4152,32392,4186],{"class":4185},[4152,32394,5074],{"class":4169},[4152,32396,32397,32400],{"class":4154,"line":12217},[4152,32398,32399],{"class":4181},"  cta:",[4152,32401,4982],{"class":4169},[4152,32403,32404,32406,32408],{"class":4154,"line":12236},[4152,32405,5139],{"class":4181},[4152,32407,5033],{"class":4185},[4152,32409,4819],{"class":4169},[4152,32411,32412,32414,32416],{"class":4154,"line":12245},[4152,32413,5128],{"class":4181},[4152,32415,5131],{"class":4185},[4152,32417,4819],{"class":4169},[4152,32419,32420,32422,32424],{"class":4154,"line":12254},[4152,32421,5149],{"class":4181},[4152,32423,5022],{"class":4202},[4152,32425,4819],{"class":4169},[4152,32427,32428],{"class":4154,"line":12259},[4152,32429,5041],{"class":4169},[4152,32431,32432],{"class":4154,"line":12301},[4152,32433,5222],{"class":4169},[3790,32435],{},[3507,32437,32439],{"id":32438},"підсумок","Підсумок",[3512,32441,32442],{},"Якщо стиснути статтю до ланцюжка рішень:",[3561,32444,32445,32454,32463,32473,32484,32492],{},[3564,32446,32447,32450,32451,32453],{},[3525,32448,32449],{},"Форма"," екрана — Flexbox + ",[3533,32452,3572],{}," (відступи, радіуси, flex).",[3564,32455,32456,32459,32460,32462],{},[3525,32457,32458],{},"Theme"," — словник ролей ",[3533,32461,13710],{},", не розкиданий hex.",[3564,32464,32465,32468,32469,17218,32471,3609],{},[3525,32466,32467],{},"Звідки theme"," — system (ОС) і\u002Fабо вибір користувача → один ",[3533,32470,12929],{},[3533,32472,13698],{},[3564,32474,32475,32478,32479,3751,32481,32483],{},[3525,32476,32477],{},"Як рознести по дереву"," — ми пишемо ",[3533,32480,3750],{},[3533,32482,3754],{}," на React Context (без prop-drilling).",[3564,32485,32486,32489,32490,3609],{},[3525,32487,32488],{},"Системний хром"," — StatusBar узгодити з ",[3533,32491,12929],{},[3564,32493,32494,32496],{},[3525,32495,30454],{}," — очима на телефоні в light і dark.",[15753,32498,32499,32503,32507,32511,32515,32519,32527],{},[3589,32500,32502],{"id":32501},"stylesheetcreate-геометрія-й-дисципліна-стилів","StyleSheet.create — геометрія й дисципліна стилів",[3589,32504,32506],{"id":32505},"масив-style-умовні-стани-порядок-перекриття-зліва-направо","Масив style — умовні стани, порядок перекриття зліва направо",[3589,32508,32510],{"id":32509},"семантичні-токени-role-surfacetextprimary-не-hex-у-jsx","Семантичні токени — role (surface\u002Ftext\u002Fprimary), не hex у JSX",[3589,32512,32514],{"id":32513},"usecolorscheme-appearance-що-каже-операційна-система","useColorScheme \u002F Appearance — що каже операційна система",[3589,32516,32518],{"id":32517},"preference-systemlightdark-resolve-colorsforscheme","preference system|light|dark + resolve + colorsForScheme",[3589,32520,32522,32523,32526],{"id":32521},"themeprovider-usetheme-наш-код-на-context-обгортка-в-корені-statusbar-від-scheme","ThemeProvider \u002F useTheme — ",[3525,32524,32525],{},"наш"," код на Context; обгортка в корені; StatusBar від scheme",[3589,32528,32530,32531],{"id":32529},"у-компонентах-stylesgeometry-color-from-theme","У компонентах: ",[4152,32532,32533],{},"styles.geometry, { color from theme }",[3512,32535,32536,32537,13648,32540,32543,32544,32546],{},"Далі — ",[3525,32538,32539],{},"списки й віртуалізація",[3533,32541,32542],{},"FlatList",", секції, pull-to-refresh — коли карток стає багато. Тема лишиться з вами: віртуалізований список теж малює ",[3533,32545,3675],{}," на рядках.",[3790,32548],{},[3507,32550,32552],{"id":32551},"практичні-завдання","Практичні завдання",[3589,32554,32556],{"id":32555},"базовий-рівень","Базовий рівень",[3561,32558,32559,32567,32574],{},[3564,32560,32561,32562,3676,32564,32566],{},"Пояснити різницю між ",[3533,32563,3675],{},[3533,32565,3667],{}," у коді компонента.",[3564,32568,32569,32570,32573],{},"Зібрати ",[3533,32571,32572],{},"style={[styles.base, on && styles.on]}"," на кнопці.",[3564,32575,32576,32577,32579],{},"Показати ",[3533,32578,3933],{}," текстом на екрані.",[3589,32581,32583],{"id":32582},"середній-рівень","Середній рівень",[3561,32585,32586,32591,32597],{},[3564,32587,32588,32589,3609],{},"У theme-lab додати третій режим «system» через ",[3533,32590,3543],{},[3564,32592,32593,32594,32596],{},"У Nomad змінити ",[3533,32595,9516],{}," у dark-палітрі й перевірити кнопку + чіпи.",[3564,32598,32599,32600,32602],{},"Винести ",[3533,32601,6671],{}," на розділювач header\u002Ffooter.",[3589,32604,32606],{"id":32605},"професійний-рівень","Професійний рівень",[3561,32608,32609,32618,32626],{},[3564,32610,32611,32612,9508,32614,32617],{},"Зберегти ",[3533,32613,13359],{},[3533,32615,32616],{},"AsyncStorage"," (або MMKV пізніше) між перезапусками.",[3564,32619,32620,32621,32623,32624,4388],{},"Додати ",[3533,32622,9392],{}," \u002F тінь, що слабшає в dark (окремі токени ",[3533,32625,9400],{},[3564,32627,32628,32629,3609],{},"Порівняти (абзац) Context-тему vs майбутній RTK slice ",[3533,32630,32631],{},"settings.theme",[3790,32633],{},[3507,32635,32637],{"id":32636},"часті-запитання","Часті запитання",[19515,32639,32640,32658,32662,32669,32697,32719],{},[19518,32641,32644,32646,32647,32650,32651,32654,32655,32657],{"icon":32642,"label":32643},"i-lucide-circle-help","Чому colors у StyleSheet.create на модулі «не темнішають»?",[3533,32645,3535],{}," на рівні файлу виконується ",[3525,32648,32649],{},"один раз",". Якщо туди зашили ",[3533,32652,32653],{},"tokens.colors.background"," зі світлої палітри, dark не підхопиться. Динамічні кольори — з ",[3533,32656,16938],{}," у render (inline \u002F масив).",[19518,32659,32661],{"icon":32642,"label":32660},"Чи потрібен NativeWind \u002F Tailwind для теми?","Ні для цього шляху. Utility-CSS можливий окремо; тут — StyleSheet + семантичні токени.",[19518,32663,32665,32666,32668],{"icon":32642,"label":32664},"preference скидається після reload","Поки стан лише в ",[3533,32667,4517],{},". Персист — завдання Pro \u002F пізніші статті про storage.",[19518,32670,32672,32673,3980,32675,32677,32678,32681,32682,32684,32685,32687,32688,32690,32691,32693,32694,3609],{"icon":32642,"label":32671},"useTheme кидає помилку","Компонент рендериться ",[3525,32674,15304],{},[3533,32676,3750],{}," (або Provider взагалі не підключили в ",[3533,32679,32680],{},"_layout.tsx","). ",[3533,32683,3754],{}," — це ваш хук над ",[3533,32686,15298],{},": без ",[3533,32689,16945],{}," вище по дереву в Context лежить ",[3533,32692,5519],{}," → throw. Обгорніть корінь і викликайте хук лише в ",[3525,32695,32696],{},"нащадках",[19518,32698,32700,32701,32703,32704,32706,32707,4000,32709,32711,32712,3676,32714,13349,32716,32718],{"icon":32642,"label":32699},"ThemeProvider — це з бібліотеки?","Ні. У React Native ",[3525,32702,21262],{}," готового ",[3533,32705,3750],{}," для ваших семантичних кольорів. Є лише ",[3533,32708,3543],{},[3533,32710,3937],{},". ",[3533,32713,3750],{},[3533,32715,3754],{},[3525,32717,3706],{}," код на React Context (див. розділ «Тема в усьому застосунку»).",[19518,32720,32722,32723,32726],{"icon":32642,"label":32721},"Фото на картці «не темніє»","Так і має бути: зображення контенту не інвертують. Темнішають ",[3525,32724,32725],{},"chrome"," UI (фон, текст, бордери).",[3837,32728,32729],{},"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 .sHH4Y, html code.shiki .sHH4Y{--shiki-light:#000000;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}html pre.shiki code .su1O8, html code.shiki .su1O8{--shiki-light:#0000FF;--shiki-default:#569CD6;--shiki-dark:#569CD6}html pre.shiki code .sD7JJ, html code.shiki .sD7JJ{--shiki-light:#000000FF;--shiki-default:#D4D4D4;--shiki-dark:#D4D4D4}html pre.shiki code .siwwj, html code.shiki .siwwj{--shiki-light:#001080;--shiki-default:#9CDCFE;--shiki-dark:#9CDCFE}html pre.shiki code .sJj4R, html code.shiki .sJj4R{--shiki-light:#098658;--shiki-default:#B5CEA8;--shiki-dark:#B5CEA8}html pre.shiki code .sbdoH, html code.shiki .sbdoH{--shiki-light:#A31515;--shiki-default:#CE9178;--shiki-dark:#CE9178}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 .s8xlr, html code.shiki .s8xlr{--shiki-light:#AF00DB;--shiki-default:#C586C0;--shiki-dark:#C586C0}html pre.shiki code .s8Opu, html code.shiki .s8Opu{--shiki-light:#795E26;--shiki-default:#DCDCAA;--shiki-dark:#DCDCAA}html pre.shiki code .s-QsJ, html code.shiki .s-QsJ{--shiki-light:#0070C1;--shiki-default:#4FC1FF;--shiki-dark:#4FC1FF}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}",{"title":4148,"searchDepth":4532,"depth":4532,"links":32731},[32732,32735,32738,32739,32762,32773,32776,32785,32801,32802,32815,32823,32834,32839],{"id":3509,"depth":4532,"text":3510,"children":32733},[32734],{"id":3591,"depth":4562,"text":3592},{"id":3794,"depth":4532,"text":3795,"children":32736},[32737],{"id":3970,"depth":4562,"text":3971},{"id":4071,"depth":4532,"text":4072},{"id":4115,"depth":4532,"text":32740,"children":32741},"StyleSheet — навіщо цей модуль",[32742,32743,32745,32747,32749,32751,32753,32755,32757,32758,32759,32761],{"id":4137,"depth":4562,"text":4138},{"id":4260,"depth":4562,"text":32744},"Що реально дає create на практиці",{"id":4335,"depth":4562,"text":32746},"API StyleSheet — що це і що видно на екрані",{"id":4477,"depth":4562,"text":32748},"Демо 1: create + масив стилів",{"id":5225,"depth":4562,"text":32750},"Демо 2: flatten — «що вийшло в сумі»",{"id":5843,"depth":4562,"text":32752},"Демо 3: absoluteFill vs absoluteFillObject",{"id":6667,"depth":4562,"text":32754},"Демо 4: hairlineWidth vs 1",{"id":7372,"depth":4562,"text":32756},"Демо 5: усе разом (create · flatten · absoluteFill · absoluteFillObject · hairlineWidth)",{"id":8935,"depth":4562,"text":8936},{"id":9140,"depth":4562,"text":9141},{"id":9281,"depth":4562,"text":32760},"Типова помилка: create всередині компонента на кожен render",{"id":9377,"depth":4562,"text":9378},{"id":9406,"depth":4532,"text":9407,"children":32763},[32764,32765,32766,32767,32768,32770,32772],{"id":9417,"depth":4562,"text":9418},{"id":9482,"depth":4562,"text":9483},{"id":9569,"depth":4562,"text":9570},{"id":10183,"depth":4562,"text":10184},{"id":10408,"depth":4562,"text":32769},"Демо: семантичні ролі + весь StyleSheet API",{"id":12666,"depth":4562,"text":32771},"Що зазвичай не міняють між темами",{"id":12709,"depth":4562,"text":12710},{"id":12744,"depth":4532,"text":12745,"children":32774},[32775],{"id":12771,"depth":4562,"text":3933},{"id":13388,"depth":4532,"text":32777,"children":32778},"Дві палітри з однаковими ключами",[32779,32781,32782,32784],{"id":13721,"depth":4562,"text":32780},"background vs surface — навіщо два «темні» \u002F два «світлі»",{"id":13749,"depth":4562,"text":13750},{"id":13778,"depth":4562,"text":32783},"Чого не класти в палітру теми",{"id":13804,"depth":4562,"text":13805},{"id":15056,"depth":4532,"text":32786,"children":32787},"Тема в усьому застосунку: ми самі пишемо ThemeProvider",[32788,32789,32790,32791,32792,32793,32794,32795,32797,32798,32799,32800],{"id":15219,"depth":4562,"text":15220},{"id":15476,"depth":4562,"text":15477},{"id":15757,"depth":4562,"text":15758},{"id":15770,"depth":4562,"text":15771},{"id":15782,"depth":4562,"text":15783},{"id":15791,"depth":4562,"text":15792},{"id":15801,"depth":4562,"text":15802},{"id":16952,"depth":4562,"text":32796},"Що саме лежить у useTheme() (контракт)",{"id":17057,"depth":4562,"text":17058},{"id":17208,"depth":4562,"text":17209},{"id":19197,"depth":4562,"text":19198},{"id":19317,"depth":4562,"text":19318},{"id":19505,"depth":4532,"text":19506},{"id":19648,"depth":4532,"text":19649,"children":32803},[32804,32805,32806,32808,32809,32810,32811,32812,32813,32814],{"id":19658,"depth":4562,"text":19659},{"id":19691,"depth":4562,"text":19692},{"id":19737,"depth":4562,"text":32807},"Крок 2. Замінити App.tsx",{"id":21172,"depth":4562,"text":21173},{"id":21178,"depth":4562,"text":21179},{"id":21192,"depth":4562,"text":21195},{"id":21210,"depth":4562,"text":21211},{"id":21230,"depth":4562,"text":3956},{"id":21250,"depth":4562,"text":21251},{"id":21269,"depth":4562,"text":21270},{"id":22612,"depth":4532,"text":22613,"children":32816},[32817,32818,32819,32820,32821,32822],{"id":22623,"depth":4562,"text":22624},{"id":22634,"depth":4562,"text":22635},{"id":22709,"depth":4562,"text":22710},{"id":30453,"depth":4562,"text":30454},{"id":30468,"depth":4562,"text":30469},{"id":30562,"depth":4562,"text":30563},{"id":32438,"depth":4532,"text":32439,"children":32824},[32825,32826,32827,32828,32829,32830,32832],{"id":32501,"depth":4562,"text":32502},{"id":32505,"depth":4562,"text":32506},{"id":32509,"depth":4562,"text":32510},{"id":32513,"depth":4562,"text":32514},{"id":32517,"depth":4562,"text":32518},{"id":32521,"depth":4562,"text":32831},"ThemeProvider \u002F useTheme — наш код на Context; обгортка в корені; StatusBar від scheme",{"id":32529,"depth":4562,"text":32833},"У компонентах: styles.geometry, { color from theme }",{"id":32551,"depth":4532,"text":32552,"children":32835},[32836,32837,32838],{"id":32555,"depth":4562,"text":32556},{"id":32582,"depth":4562,"text":32583},{"id":32605,"depth":4562,"text":32606},{"id":32636,"depth":4532,"text":32637},"StyleSheet.create, масиви стилів, семантичні токени кольорів, useColorScheme і перемикач світлої\u002Fтемної теми в Nomad",null,{},{"title":3396,"description":32840},"54RBXGOjxFjZPWyJgXKv8NsXSfyMztTUacaUz5k_6l4",[32846,32848],{"title":3392,"path":3393,"stem":3394,"description":32847,"children":-1},"Колонка за замовчуванням, осі, align\u002Fjustify, flex і gap, safe area, клавіатура — і п’ять типових екранів для мобільної верстки",{"title":3400,"path":3401,"stem":3402,"description":32849,"children":-1},"FlatList, SectionList, FlashList, pull-to-refresh, порожній і помилковий стан, пагінація UI — каталог книг і стрічки поїздок\u002Fмісць у Nomad",1785915328000]