ВозможностиОрганизации
Документация
    Ring Platform

    Децентрализованное самостроящееся будущее

    Войти
    Организации
    Возможности
    Магазин
    Документация
    Концепции платформы
    RING ЭкономикаSonoratek LLCГлобальное влияниеAI встречает Web3
    Начать
    Быстрый стартКалькуляторДорожная карта
    Конфиденциальность|Контакты
    v1.104.23|Sonoratek LLC

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    AI Matcher
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Быстрый старт — ваш первый клон Ring
    Руководство по кастомизации
    Vertical Presets (SSOT)
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Интеграция платёжного шлюза
    Референсные деплои Ring
    Конфигурация проекта
    Публичные переменные окружения
    Секреты Order Lab
    Project ID WalletConnect (Reown Cloud)
    Поддерживаемые сервисы
    Вики NODUS (знания проекта)
    Плейбук конфигурации
    Web3
    Token launch jurisdictions
    Кошелёк
    Советы по безопасности кошелька
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Self-hosted развёртывание
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Архитектура PaymentConductor
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    AI Matcher
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Быстрый старт — ваш первый клон Ring
    Руководство по кастомизации
    Vertical Presets (SSOT)
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Интеграция платёжного шлюза
    Референсные деплои Ring
    Конфигурация проекта
    Публичные переменные окружения
    Секреты Order Lab
    Project ID WalletConnect (Reown Cloud)
    Поддерживаемые сервисы
    Вики NODUS (знания проекта)
    Плейбук конфигурации
    Web3
    Token launch jurisdictions
    Кошелёк
    Советы по безопасности кошелька
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Self-hosted развёртывание
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Архитектура PaymentConductor
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)

    Documentation

    Концепции, ценность и типичные сценарии клонирования — меньше кода.

    Добро пожаловать в Ring
    Краткий справочник
    С чего начать
    Предварительные требования
    Установка
    Первый успех
    Следующие шаги
    Функции
    Store
    Склад и остатки
    Управление вендорами
    Комиссии и расчёты
    SubscriptionConductor
    PaymentConductor
    Интеграция платежей
    Интеграция WayForPay
    Web3 Кошелек
    Реферальные коды (Refcodes)
    NFT Exhibition Marketplace
    Система Стейкинга Токенов
    Entities
    Opportunities
    AI Matcher
    Real-Time Messaging
    Peer Games
    Модуль Новостей - Цифровой Газетный Опыт
    Блоги участников
    Система Резервирования Имён Пользователей
    Научный редактор
    Notifications
    Push-уведомления через FCM (Ring)
    Email AI-CRM
    Протокол Tunnel
    Authentication
    Безопасность и соответствие
    Система локалей
    Мобильный Опыт
    Паттерны Оптимизации Производительности
    Примеры
    Quick Start
    Базовая настройка
    White Label
    Custom Branding
    Интеграция Web3
    Реальные Проекты
    Advanced Features
    Кастомизация
    Быстрый старт — ваш первый клон Ring
    Руководство по кастомизации
    Vertical Presets (SSOT)
    Руководство по Ringization
    Branding
    Темы оформления
    Features
    Localization
    Настройка токеномики
    Интеграция платёжного шлюза
    Референсные деплои Ring
    Конфигурация проекта
    Публичные переменные окружения
    Секреты Order Lab
    Project ID WalletConnect (Reown Cloud)
    Поддерживаемые сервисы
    Вики NODUS (знания проекта)
    Плейбук конфигурации
    Web3
    Token launch jurisdictions
    Кошелёк
    Советы по безопасности кошелька
    Интеграции
    Ethereum-кошельки (Wagmi v3)
    Развёртывание
    Self-hosted развёртывание
    Vercel
    Docker
    Конфигурация Окружения
    Мониторинг и аналитика
    Оптимизация производительности
    Резервное копирование и восстановление
    Архитектура
    Data Model
    Security
    Real Time
    Архитектура PaymentConductor
    Бекенд Сервисы
    Интеграция Firebase
    Разработка
    Ring MCP Server

    Быстрый вход (CTO · аудиторы · агенты)

    Приветствие — миссия и аудитории
    Краткий справочник
    С чего начать
    Архитектура и Auth.js
    Режимы бэкенда и базы данных (DB_BACKEND_MODE)
    Self-hosted
    Ring MCP Tools
    Ring MCP Server
    Token economics
    Token launch jurisdictions
    Деплой (Docker · k8s)
    Безопасность и соответствие требованиям
    ringdom.org — база LegioX
    Исходный код — лицензия MIT (GitHub)
    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Ring Logo

    Loading documentation...

    Preparing Ring content

    Whitelabel-навигация

    Используйте вкладки Founder / Developer в боковой панели docs, чтобы фильтровать эту страницу. Общие разделы относятся к обеим аудиториям.

    Статус: Layer1 chrome — это data manifest + закрытая карта иконок, а не варианты *-desktop-navigation.tsx на клон. Файла config/navigation.config.ts нет. Пакеты перезаписывают lib/navigation/primary-nav.ts. Клоны ремапят существующие id слотов в lib/navigation/primary-nav-overlay.ts. Неизвестные icon id рендерят глиф users.

    Прежняя привычкаЭквивалент в Ring
    Форкать vikka-desktop-navigation.tsx / greenfood-navigation.tsxL2 пак перезаписывает lib/navigation/primary-nav.ts (слоты, hrefs, icon ids)
    Импортировать вертикально-именованную Lucide-иконку в chromeДобавить generic id в PRIMARY_NAV_ICONS на Layer1, затем ссылаться на этот id
    Overlay новой mobile tab из клонаOverlay не может добавлять, скрывать или менять порядок слотов — меняйте манифест пака
    Копировать desktop-sidebar.tsx на клонДержите chrome на Layer1; ремапьте только iconById / labelKeysById / hrefById

    Архитектура

    Primary nav layers

    home.preset не выбирает меню. Overflow-модули (каталог [...]) живут в lib/navigation/platform-menu.ts плюс ring-config.navigation.platformMenu. Пакеты не должны перезаписывать platform-menu.ts; вертикальные дефолты принадлежат в PACK.json.platformMenu и копируются на ring-config клона.

    Что можно менять без форка chrome

    • Подписи — ключи next-intl на каждом слоте (labelKeys). pack.json пака и overlay клона могут переопределять листья. См. Localization.
    • Какой глиф Lucide — выберите id, который уже есть в закрытой карте (таблица ниже). Новый глиф — это изменение Layer1, не файл клона.
    • Href существующего слота — L3 hrefById на id этого слота (тот же контракт locale → string, что и у items пака).
    • Форма mobile bar — первые два href из манифеста, center plus (add opportunity), далее остальное. Пак, который перечисляет три href плюс overflow (и пропускает docs-or-admin), получает этот bar из тех же chrome slices. Overlay не может добавлять или скрывать эти слоты.

    Не просите интегратора класть кастомный sidebar-компонент в components/navigation/ ради brand icons.

    Закрытая карта иконок

    Путь: lib/navigation/primary-nav-icons.ts. Chrome вызывает getPrimaryNavIcon(id). Пакеты и overlays передают только string ids.

    IdLucide export
    usersUsers (fallback for unknown ids)
    briefcaseBriefcase
    storeStore
    userUserRound
    file-textFileText
    ellipsisCircleEllipsis
    more-horizontalMoreHorizontal

    Часто задаваемые вопросы

    Влияние

    Может ли клон скрыть вкладку Store только через overlay?

    Нет. Уберите или замените слот в pack primary-nav.ts (compose overwrite). Overlay только патчит icon / labelKeys / href на id, которые уже существуют.

    Что будет, если пак использует sun, прежде чем Layer1 его перечислит?

    getPrimaryNavIcon возвращает Users. Bar не падает; глиф неправильный, пока Layer1 не завезёт id.

    Миграция

    У нас всё ещё есть clone-local sidebar-компонент. Что вместо?

    Удалите форк. Направьте compose на pack primary-nav.ts + empty-or-remap primary-nav-overlay.ts. Файлы chrome остаются на Layer1.

    Ops

    Кто владеет platform-menu.ts?

    Layer1. Пакеты не должны rsync поверх него. Clone ring-config.navigation.platformMenu (items / exclude / extra) — это рычаг overflow-каталога.

    Связанная документация

    Related documentation

    Vertical Presets (SSOT)

    Depends-on: L1 / L2 pack / L3 overlay compose and pack.json socket.

    Localization

    Same-workflow: nav labelKeys resolve through Layer1 → pack → overlay messages.

    Ringization playbook

    Prerequisite: chrome stays on Layer1; product stays on pack or clone overlay.

    Customization Guide

    See-also: ring-config feature flags that hide routes from nav.

    1. Документация
    2. /Разработка
    3. /Whitelabel-навигация

    Обновлено 9 сент. 2026 г.5 мин прослушивания

    Whitelabel-навигация

    Используйте вкладки Founder / Developer в боковой панели docs, чтобы фильтровать эту страницу. Общие разделы относятся к обеим аудиториям.

    Статус: Layer1 chrome — это data manifest + закрытая карта иконок, а не варианты *-desktop-navigation.tsx на клон. Файла config/navigation.config.ts нет. Пакеты перезаписывают lib/navigation/primary-nav.ts. Клоны ремапят существующие id слотов в lib/navigation/primary-nav-overlay.ts. Неизвестные icon id рендерят глиф users.

    Прежняя привычкаЭквивалент в Ring
    Форкать vikka-desktop-navigation.tsx / greenfood-navigation.tsxL2 пак перезаписывает lib/navigation/primary-nav.ts (слоты, hrefs, icon ids)
    Импортировать вертикально-именованную Lucide-иконку в chromeДобавить generic id в PRIMARY_NAV_ICONS на Layer1, затем ссылаться на этот id
    Overlay новой mobile tab из клонаOverlay не может добавлять, скрывать или менять порядок слотов — меняйте манифест пака
    Копировать desktop-sidebar.tsx на клонДержите chrome на Layer1; ремапьте только iconById / labelKeysById / hrefById

    Архитектура

    Primary nav layers

    home.preset не выбирает меню. Overflow-модули (каталог [...]) живут в lib/navigation/platform-menu.ts плюс ring-config.navigation.platformMenu. Пакеты не должны перезаписывать platform-menu.ts; вертикальные дефолты принадлежат в PACK.json.platformMenu и копируются на ring-config клона.

    Что можно менять без форка chrome

    • Подписи — ключи next-intl на каждом слоте (labelKeys). pack.json пака и overlay клона могут переопределять листья. См. Localization.
    • Какой глиф Lucide — выберите id, который уже есть в закрытой карте (таблица ниже). Новый глиф — это изменение Layer1, не файл клона.
    • Href существующего слота — L3 hrefById на id этого слота (тот же контракт locale → string, что и у items пака).
    • Форма mobile bar — первые два href из манифеста, center plus (add opportunity), далее остальное. Пак, который перечисляет три href плюс overflow (и пропускает docs-or-admin), получает этот bar из тех же chrome slices. Overlay не может добавлять или скрывать эти слоты.

    Не просите интегратора класть кастомный sidebar-компонент в components/navigation/ ради brand icons.

    Закрытая карта иконок

    Путь: lib/navigation/primary-nav-icons.ts. Chrome вызывает getPrimaryNavIcon(id). Пакеты и overlays передают только string ids.

    IdLucide export
    usersUsers (fallback for unknown ids)
    briefcaseBriefcase
    storeStore
    userUserRound
    file-textFileText
    ellipsisCircleEllipsis
    more-horizontalMoreHorizontal

    Часто задаваемые вопросы

    Влияние

    Может ли клон скрыть вкладку Store только через overlay?

    Нет. Уберите или замените слот в pack primary-nav.ts (compose overwrite). Overlay только патчит icon / labelKeys / href на id, которые уже существуют.

    Что будет, если пак использует sun, прежде чем Layer1 его перечислит?

    getPrimaryNavIcon возвращает Users. Bar не падает; глиф неправильный, пока Layer1 не завезёт id.

    Миграция

    У нас всё ещё есть clone-local sidebar-компонент. Что вместо?

    Удалите форк. Направьте compose на pack primary-nav.ts + empty-or-remap primary-nav-overlay.ts. Файлы chrome остаются на Layer1.

    Ops

    Кто владеет platform-menu.ts?

    Layer1. Пакеты не должны rsync поверх него. Clone ring-config.navigation.platformMenu (items / exclude / extra) — это рычаг overflow-каталога.

    Связанная документация

    Related documentation

    Vertical Presets (SSOT)

    Depends-on: L1 / L2 pack / L3 overlay compose and pack.json socket.

    Localization

    Same-workflow: nav labelKeys resolve through Layer1 → pack → overlay messages.

    Ringization playbook

    Prerequisite: chrome stays on Layer1; product stays on pack or clone overlay.

    Customization Guide

    See-also: ring-config feature flags that hide routes from nav.

    1. Документация
    2. /Разработка
    3. /Whitelabel-навигация

    Обновлено 9 сент. 2026 г.5 мин прослушивания

    Whitelabel-навигация

    Используйте вкладки Founder / Developer в боковой панели docs, чтобы фильтровать эту страницу. Общие разделы относятся к обеим аудиториям.

    Статус: Layer1 chrome — это data manifest + закрытая карта иконок, а не варианты *-desktop-navigation.tsx на клон. Файла config/navigation.config.ts нет. Пакеты перезаписывают lib/navigation/primary-nav.ts. Клоны ремапят существующие id слотов в lib/navigation/primary-nav-overlay.ts. Неизвестные icon id рендерят глиф users.

    Прежняя привычкаЭквивалент в Ring
    Форкать vikka-desktop-navigation.tsx / greenfood-navigation.tsxL2 пак перезаписывает lib/navigation/primary-nav.ts (слоты, hrefs, icon ids)
    Импортировать вертикально-именованную Lucide-иконку в chromeДобавить generic id в PRIMARY_NAV_ICONS на Layer1, затем ссылаться на этот id
    Overlay новой mobile tab из клонаOverlay не может добавлять, скрывать или менять порядок слотов — меняйте манифест пака
    Копировать desktop-sidebar.tsx на клонДержите chrome на Layer1; ремапьте только iconById / labelKeysById / hrefById

    Архитектура

    Primary nav layers

    home.preset не выбирает меню. Overflow-модули (каталог [...]) живут в lib/navigation/platform-menu.ts плюс ring-config.navigation.platformMenu. Пакеты не должны перезаписывать platform-menu.ts; вертикальные дефолты принадлежат в PACK.json.platformMenu и копируются на ring-config клона.

    Что можно менять без форка chrome

    • Подписи — ключи next-intl на каждом слоте (labelKeys). pack.json пака и overlay клона могут переопределять листья. См. Localization.
    • Какой глиф Lucide — выберите id, который уже есть в закрытой карте (таблица ниже). Новый глиф — это изменение Layer1, не файл клона.
    • Href существующего слота — L3 hrefById на id этого слота (тот же контракт locale → string, что и у items пака).
    • Форма mobile bar — первые два href из манифеста, center plus (add opportunity), далее остальное. Пак, который перечисляет три href плюс overflow (и пропускает docs-or-admin), получает этот bar из тех же chrome slices. Overlay не может добавлять или скрывать эти слоты.

    Не просите интегратора класть кастомный sidebar-компонент в components/navigation/ ради brand icons.

    Закрытая карта иконок

    Путь: lib/navigation/primary-nav-icons.ts. Chrome вызывает getPrimaryNavIcon(id). Пакеты и overlays передают только string ids.

    IdLucide export
    usersUsers (fallback for unknown ids)
    briefcaseBriefcase
    storeStore
    userUserRound
    file-textFileText
    ellipsisCircleEllipsis
    more-horizontalMoreHorizontal

    Часто задаваемые вопросы

    Влияние

    Может ли клон скрыть вкладку Store только через overlay?

    Нет. Уберите или замените слот в pack primary-nav.ts (compose overwrite). Overlay только патчит icon / labelKeys / href на id, которые уже существуют.

    Что будет, если пак использует sun, прежде чем Layer1 его перечислит?

    getPrimaryNavIcon возвращает Users. Bar не падает; глиф неправильный, пока Layer1 не завезёт id.

    Миграция

    У нас всё ещё есть clone-local sidebar-компонент. Что вместо?

    Удалите форк. Направьте compose на pack primary-nav.ts + empty-or-remap primary-nav-overlay.ts. Файлы chrome остаются на Layer1.

    Ops

    Кто владеет platform-menu.ts?

    Layer1. Пакеты не должны rsync поверх него. Clone ring-config.navigation.platformMenu (items / exclude / extra) — это рычаг overflow-каталога.

    Связанная документация

    Related documentation

    Vertical Presets (SSOT)

    Depends-on: L1 / L2 pack / L3 overlay compose and pack.json socket.

    Localization

    Same-workflow: nav labelKeys resolve through Layer1 → pack → overlay messages.

    Ringization playbook

    Prerequisite: chrome stays on Layer1; product stays on pack or clone overlay.

    Customization Guide

    See-also: ring-config feature flags that hide routes from nav.

    1. Документация
    2. /Разработка
    3. /Whitelabel-навигация

    Обновлено 9 сент. 2026 г.5 мин прослушивания

    shopping-basketShoppingBasket
    shopping-bagShoppingBag
    buildingBuilding2
    newspaperNewspaper
    tvTv
    sparklesSparkles
    gamepadGamepad2
    hexagonHexagon
    mapMap
    layout-gridLayoutGrid
    walletWallet
    bellBell
    heartHeart
    shopping-cartShoppingCart
    message-circleMessageCircle
    list-todoListTodo
    settingsSettings
    sunSun
    orbitOrbit
    calendarCalendar
    scaleScale
    hashHash
    typeType
    moonMoon
    compassCompass

    Добавьте generic глиф сюда, прежде чем пак или overlay сошлётся на новый id. Не накладывайте этот файл иконками с именами клона.

    Overlay socket (только remap)

    Layer1 поставляет export const PRIMARY_NAV_OVERLAY = {} в lib/navigation/primary-nav-overlay.ts, чтобы webpack всегда резолвил импорт. Клон перезаписывает этот файл (не primary-nav.ts) так:

    getPrimaryNavManifest() прогоняет BASE_MANIFEST через applyHrefOverlay / applyMobileOverlay. Id, которых нет в манифесте пака/L1, игнорируются.

    Mobile chrome

    components/navigation/bottom-navigation.tsx рендерит navItems.slice(0, 2), затем center add control, затем navItems.slice(2). Компоненты иконок берутся из getPrimaryNavIcon. Desktop rail: sidebar-rail.tsx и sidebar-synced-layout.tsx используют тот же helper.

    Оркестратор: components/navigation/navigation.tsx динамически импортирует desktop-sidebar.tsx и bottom-navigation.tsx. Публичного реестра вариантов DesktopNavigation нет.

    Рекомендуемый путь

    Нужен новый глиф? Сначала зафиксируйте его на Layer1 (ring/web/lib/navigation/primary-nav-icons.ts), затем укажите id в слоте пака. Cursor skill layer2-preset-operator владеет pack primary-nav.ts; ringization-implementer владеет L3 overlay remap. Никто не должен копировать chrome.

    Стартовый промпт (ничего не меняет, пока вы не одобрите):

    Add generic Lucide id <id> to Layer1 lib/navigation/primary-nav-icons.ts before pack <pack> references it. Do not import vertical-named icons in chrome. Overlay may only remap existing slot ids in primary-nav-overlay.ts.

    Ручной путь

    1. 1

      Подтвердите, что id слота существует в составленном манифесте primary-nav.ts (массивы mobile / desktop). Overlay не может изобретать id.

    2. 2

      Если icon id отсутствует в PRIMARY_NAV_ICONS, добавьте Lucide-импорт и запись карты на Layer1. Неизвестные id тихо падают обратно на users.

    3. 3

      Установите icon на слоте пака или PRIMARY_NAV_OVERLAY.iconById[slotId] на клоне. Держите platform-menu.ts на Layer1; вертикальные overflow-дефолты кладите в PACK.json.platformMenu.

    Locale System

    Next-step: locale env used by href builders and next-intl.

    shopping-basketShoppingBasket
    shopping-bagShoppingBag
    buildingBuilding2
    newspaperNewspaper
    tvTv
    sparklesSparkles
    gamepadGamepad2
    hexagonHexagon
    mapMap
    layout-gridLayoutGrid
    walletWallet
    bellBell
    heartHeart
    shopping-cartShoppingCart
    message-circleMessageCircle
    list-todoListTodo
    settingsSettings
    sunSun
    orbitOrbit
    calendarCalendar
    scaleScale
    hashHash
    typeType
    moonMoon
    compassCompass

    Добавьте generic глиф сюда, прежде чем пак или overlay сошлётся на новый id. Не накладывайте этот файл иконками с именами клона.

    Overlay socket (только remap)

    Layer1 поставляет export const PRIMARY_NAV_OVERLAY = {} в lib/navigation/primary-nav-overlay.ts, чтобы webpack всегда резолвил импорт. Клон перезаписывает этот файл (не primary-nav.ts) так:

    getPrimaryNavManifest() прогоняет BASE_MANIFEST через applyHrefOverlay / applyMobileOverlay. Id, которых нет в манифесте пака/L1, игнорируются.

    Mobile chrome

    components/navigation/bottom-navigation.tsx рендерит navItems.slice(0, 2), затем center add control, затем navItems.slice(2). Компоненты иконок берутся из getPrimaryNavIcon. Desktop rail: sidebar-rail.tsx и sidebar-synced-layout.tsx используют тот же helper.

    Оркестратор: components/navigation/navigation.tsx динамически импортирует desktop-sidebar.tsx и bottom-navigation.tsx. Публичного реестра вариантов DesktopNavigation нет.

    Рекомендуемый путь

    Нужен новый глиф? Сначала зафиксируйте его на Layer1 (ring/web/lib/navigation/primary-nav-icons.ts), затем укажите id в слоте пака. Cursor skill layer2-preset-operator владеет pack primary-nav.ts; ringization-implementer владеет L3 overlay remap. Никто не должен копировать chrome.

    Стартовый промпт (ничего не меняет, пока вы не одобрите):

    Add generic Lucide id <id> to Layer1 lib/navigation/primary-nav-icons.ts before pack <pack> references it. Do not import vertical-named icons in chrome. Overlay may only remap existing slot ids in primary-nav-overlay.ts.

    Ручной путь

    1. 1

      Подтвердите, что id слота существует в составленном манифесте primary-nav.ts (массивы mobile / desktop). Overlay не может изобретать id.

    2. 2

      Если icon id отсутствует в PRIMARY_NAV_ICONS, добавьте Lucide-импорт и запись карты на Layer1. Неизвестные id тихо падают обратно на users.

    3. 3

      Установите icon на слоте пака или PRIMARY_NAV_OVERLAY.iconById[slotId] на клоне. Держите platform-menu.ts на Layer1; вертикальные overflow-дефолты кладите в PACK.json.platformMenu.

    Locale System

    Next-step: locale env used by href builders and next-intl.

    shopping-basketShoppingBasket
    shopping-bagShoppingBag
    buildingBuilding2
    newspaperNewspaper
    tvTv
    sparklesSparkles
    gamepadGamepad2
    hexagonHexagon
    mapMap
    layout-gridLayoutGrid
    walletWallet
    bellBell
    heartHeart
    shopping-cartShoppingCart
    message-circleMessageCircle
    list-todoListTodo
    settingsSettings
    sunSun
    orbitOrbit
    calendarCalendar
    scaleScale
    hashHash
    typeType
    moonMoon
    compassCompass

    Добавьте generic глиф сюда, прежде чем пак или overlay сошлётся на новый id. Не накладывайте этот файл иконками с именами клона.

    Overlay socket (только remap)

    Layer1 поставляет export const PRIMARY_NAV_OVERLAY = {} в lib/navigation/primary-nav-overlay.ts, чтобы webpack всегда резолвил импорт. Клон перезаписывает этот файл (не primary-nav.ts) так:

    getPrimaryNavManifest() прогоняет BASE_MANIFEST через applyHrefOverlay / applyMobileOverlay. Id, которых нет в манифесте пака/L1, игнорируются.

    Mobile chrome

    components/navigation/bottom-navigation.tsx рендерит navItems.slice(0, 2), затем center add control, затем navItems.slice(2). Компоненты иконок берутся из getPrimaryNavIcon. Desktop rail: sidebar-rail.tsx и sidebar-synced-layout.tsx используют тот же helper.

    Оркестратор: components/navigation/navigation.tsx динамически импортирует desktop-sidebar.tsx и bottom-navigation.tsx. Публичного реестра вариантов DesktopNavigation нет.

    Рекомендуемый путь

    Нужен новый глиф? Сначала зафиксируйте его на Layer1 (ring/web/lib/navigation/primary-nav-icons.ts), затем укажите id в слоте пака. Cursor skill layer2-preset-operator владеет pack primary-nav.ts; ringization-implementer владеет L3 overlay remap. Никто не должен копировать chrome.

    Стартовый промпт (ничего не меняет, пока вы не одобрите):

    Add generic Lucide id <id> to Layer1 lib/navigation/primary-nav-icons.ts before pack <pack> references it. Do not import vertical-named icons in chrome. Overlay may only remap existing slot ids in primary-nav-overlay.ts.

    Ручной путь

    1. 1

      Подтвердите, что id слота существует в составленном манифесте primary-nav.ts (массивы mobile / desktop). Overlay не может изобретать id.

    2. 2

      Если icon id отсутствует в PRIMARY_NAV_ICONS, добавьте Lucide-импорт и запись карты на Layer1. Неизвестные id тихо падают обратно на users.

    3. 3

      Установите icon на слоте пака или PRIMARY_NAV_OVERLAY.iconById[slotId] на клоне. Держите platform-menu.ts на Layer1; вертикальные overflow-дефолты кладите в PACK.json.platformMenu.

    Locale System

    Next-step: locale env used by href builders and next-intl.