From 2218cf08c2a153431ade0a0ccc2beed169b93589 Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Mon, 29 Jun 2026 21:51:46 +0000 Subject: [PATCH] docs(arch): add C4 architecture document and reference it in wiki + devportal - Adiciona documento interativo C4 (Contexto, Containers, Componentes, mapa de dominios, sequencias) em frontend/devportal/architecture/ (espelhado em wwwroot para a API) - Link 'Arquitetura C4' no header do DevPortal - Nova pagina docs/14_C4_ARCHITECTURE.md no wiki com resumo e diagramas, wired na sidebar e no indice de docs - Atualiza referencia em 10_ARCHITECTURE_DECISIONS.md para o novo doc C4 - Diagramas (webp) em frontend/wiki/public/architecture/ Co-authored-by: Rapha --- .../devportal/architecture/_ds/README.md | 159 + .../architecture/_ds/_adherence.oxlintrc.json | 263 + .../devportal/architecture/_ds/_ds_bundle.js | 13090 ++++++++++++++++ .../architecture/_ds/_ds_manifest.json | 1 + .../architecture/_ds/assets/arah-logo.png | Bin 0 -> 2156951 bytes .../architecture/_ds/colors_and_type.css | 233 + .../_ds/fonts/Geist-VariableFont_wght.ttf | Bin 0 -> 148832 bytes .../_ds/fonts/Sora-VariableFont_wght.ttf | Bin 0 -> 110224 bytes .../devportal/architecture/_ds/styles.css | 10 + .../wwwroot/devportal/architecture/index.html | 1337 ++ .../wwwroot/devportal/architecture/support.js | 1648 ++ docs/10_ARCHITECTURE_DECISIONS.md | 2 +- docs/14_C4_ARCHITECTURE.md | 116 + frontend/devportal/architecture/_ds/README.md | 159 + .../architecture/_ds/_adherence.oxlintrc.json | 263 + .../devportal/architecture/_ds/_ds_bundle.js | 13090 ++++++++++++++++ .../architecture/_ds/_ds_manifest.json | 1 + .../architecture/_ds/assets/arah-logo.png | Bin 0 -> 2156951 bytes .../architecture/_ds/colors_and_type.css | 233 + .../_ds/fonts/Geist-VariableFont_wght.ttf | Bin 0 -> 148832 bytes .../_ds/fonts/Sora-VariableFont_wght.ttf | Bin 0 -> 110224 bytes .../devportal/architecture/_ds/styles.css | 10 + frontend/devportal/architecture/index.html | 1337 ++ frontend/devportal/architecture/support.js | 1648 ++ frontend/devportal/index.html | 5 + frontend/wiki/app/docs/page.tsx | 1 + frontend/wiki/components/layout/Sidebar.tsx | 1 + .../architecture/c4-components-api.webp | Bin 0 -> 64828 bytes .../architecture/c4-components-app.webp | Bin 0 -> 70246 bytes .../public/architecture/c4-containers.webp | Bin 0 -> 64900 bytes .../wiki/public/architecture/c4-context.webp | Bin 0 -> 64716 bytes .../public/architecture/c4-domain-map.webp | Bin 0 -> 66340 bytes frontend/wiki/public/search-index.json | 8 + 33 files changed, 33614 insertions(+), 1 deletion(-) create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/_ds/README.md create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/_ds/_adherence.oxlintrc.json create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/_ds/_ds_bundle.js create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/_ds/_ds_manifest.json create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/_ds/assets/arah-logo.png create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/_ds/colors_and_type.css create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/_ds/fonts/Geist-VariableFont_wght.ttf create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/_ds/fonts/Sora-VariableFont_wght.ttf create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/_ds/styles.css create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/index.html create mode 100644 backend/Arah.Api/wwwroot/devportal/architecture/support.js create mode 100644 docs/14_C4_ARCHITECTURE.md create mode 100644 frontend/devportal/architecture/_ds/README.md create mode 100644 frontend/devportal/architecture/_ds/_adherence.oxlintrc.json create mode 100644 frontend/devportal/architecture/_ds/_ds_bundle.js create mode 100644 frontend/devportal/architecture/_ds/_ds_manifest.json create mode 100644 frontend/devportal/architecture/_ds/assets/arah-logo.png create mode 100644 frontend/devportal/architecture/_ds/colors_and_type.css create mode 100644 frontend/devportal/architecture/_ds/fonts/Geist-VariableFont_wght.ttf create mode 100644 frontend/devportal/architecture/_ds/fonts/Sora-VariableFont_wght.ttf create mode 100644 frontend/devportal/architecture/_ds/styles.css create mode 100644 frontend/devportal/architecture/index.html create mode 100644 frontend/devportal/architecture/support.js create mode 100644 frontend/wiki/public/architecture/c4-components-api.webp create mode 100644 frontend/wiki/public/architecture/c4-components-app.webp create mode 100644 frontend/wiki/public/architecture/c4-containers.webp create mode 100644 frontend/wiki/public/architecture/c4-context.webp create mode 100644 frontend/wiki/public/architecture/c4-domain-map.webp diff --git a/backend/Arah.Api/wwwroot/devportal/architecture/_ds/README.md b/backend/Arah.Api/wwwroot/devportal/architecture/_ds/README.md new file mode 100644 index 00000000..59b2c773 --- /dev/null +++ b/backend/Arah.Api/wwwroot/devportal/architecture/_ds/README.md @@ -0,0 +1,159 @@ +# Arah — Design System + +**Arah** (também **Araponga**, sua identidade na web) é uma plataforma digital comunitária **orientada ao território**: tecnologia a serviço da vida local, da convivência e da autonomia das comunidades. Não é mais uma rede social — é uma *extensão digital do território vivo*. O nome vem do **araponga**, o "pássaro-ferreiro" das florestas brasileiras, cujo canto metálico e ressonante simboliza comunicação clara e presença no lugar. + +> **Território como referência. Comunidade como prioridade. Tecnologia como ferramenta — não como fim.** + +Este design system foi construído a partir do repositório **`sraphaz/arah`**. Ele captura a marca em dois produtos reais e dá a um agente de design tudo o que é preciso para produzir interfaces, mocks e materiais bem-marcados da Arah. + +--- + +## Sources + +Tudo aqui foi extraído do repositório oficial. Explore-os para fazer um trabalho ainda melhor projetando para a Arah: + +- **Repositório:** https://github.com/sraphaz/arah +- **Portal web (voz da marca):** `frontend/portal/` — site Next.js. Paleta floresta, glass cards, fontes Geist + Sora. → `tailwind.config.ts`, `app/globals.css`, `app/fonts.ts`, `components/sections/*`, `content/landing.md` +- **App mobile (o produto):** `frontend/arah.app/` — Flutter, Material 3, tema verde escuro por padrão. → `lib/core/theme/app_design_tokens.dart`, `app_theme.dart`, `core/config/constants.dart`, `lib/features/*`, `docs/DESIGN_SYSTEM.md` +- **Copy / tom de voz:** `frontend/portal/content/landing.md`, `README.md` do repositório, `lib/l10n/app_pt.arb` + +> O leitor **não** precisa ter acesso ao repositório — todo token e regra necessários estão reproduzidos aqui. Os links ficam guardados caso você tenha. + +--- + +## Dois produtos, uma natureza + +| | **Portal web** ("Araponga") | **App mobile** ("Arah / Ará") | +|---|---|---| +| Stack | Next.js + Tailwind | Flutter + Material 3 | +| Papel | Marketing / manifesto | O produto em si | +| Modo padrão | **Claro**, sobre textura de floresta | **Escuro** (`#121212`) | +| Assinatura | **Glass cards** sobre imagens da natureza | Cards Material, feed, mapa, bottom-nav | +| Tipo | **Sora** (display) + **Geist** (corpo) | Escala Material 3 + verde da marca | +| Primária | Floresta `#377B57` | Copa `#81C784` (escuro) / `#1B5E20` (claro) | + +O fio que conecta os dois é **verde-floresta quente, calmo e enraizado** — e o compromisso território-primeiro. + +> **Sobre este DS:** o foco do trabalho foi o **app mobile, reinterpretado em uma versão premium, moderna e minimalista** (ver `ui_kits/app/`). A versão premium adota as fontes da marca (Sora + Geist) em vez do Roboto padrão do Material, e refina espaçamento, contraste e hierarquia — mantendo todas as features e diretrizes do app original (tema escuro, verde copa, território-primeiro, bottom-nav de 5 abas). + +--- + +## Features do app (verificadas no código) + +O app implementa, hoje: + +- **Autenticação** — login com Google (social) e e-mail/senha; cadastro. +- **Onboarding** — localização → mapa → territórios próximos (`suggested-territories`) → "Continuar como visitante". +- **MainShell** com bottom-nav de **5 abas**: Início/Feed · Explorar · Publicar · Notificações · Perfil. +- **Feed territorial** — posts da região, pull-to-refresh, paginação, barra indicadora do território, cards de post (tipos **General** e **Alert**; visibilidade **Public** / **ResidentsOnly**). +- **Explorar** — lista de territórios + seletor; entrar em um território (`{id}/enter`). +- **Mapa** — tiles OpenStreetMap, contorno do território (polígono/círculo), pins (entity / post / event / asset / alert / media). +- **Publicar** — título, conteúdo, tipo, visibilidade. +- **Notificações** — lista in-app, marcar como lida, tipos (alert / post / event / connection). +- **Perfil** — `me/profile`, edição em bottom sheet, interesses, preferências de notificação. +- **Eventos** — eventos do território, "tenho interesse" / "confirmar presença". + +--- + +## CONTENT FUNDAMENTALS + +**Idioma:** Português do Brasil é o padrão (`pt`), com inglês (`en`) como secundário. **Sempre escreva em pt-BR.** + +**Pessoa & tom.** A marca fala com **"você"** (informal, direto, acolhedor) e usa **"nós/nosso"** para reforçar pertencimento — *"cuidar do **nosso** território juntos"*. O tom é **comunitário, caloroso e prático**, nunca corporativo ou tecnocrático. Convoca à ação concreta e local. + +**Casing.** Frases em *sentence case* — nada de Title Case em botões ou títulos. Rótulos de seção/eyebrow aparecem em **MAIÚSCULAS com tracking** (ex.: `TERRITÓRIO-PRIMEIRO`, `PRÓXIMOS A VOCÊ`). Botões usam verbos no infinitivo: *Entrar, Publicar, Continuar, Salvar, Sair*. + +**Vocabulário próprio** (use estes termos): **território**, **comunidade**, **morador** vs **visitante**, **vila**, **costão**, **mutirão**, **conselho de moradores**, **feed da região**, **pesca artesanal**, **caiçara**. O território nunca é "feed" genérico — é *"o feed de Camburi"*, *"a vila"*, *"a região"*. + +**Exemplos reais de copy** (do `app_pt.arb` e do app): +- Onboarding: *"Para ver o feed e participar da comunidade, escolha um território próximo a você."* +- Privacidade: *"Sua localização é privada e não fica visível para outros usuários."* +- Visitante: *"Ao continuar, você entrará como visitante neste território e poderá ver o feed da região."* +- Feed vazio: *"Nenhum post nesta região"* / *"Seja o primeiro a publicar aqui."* +- Erro: *"Erro ao carregar."* / *"Tentar de novo"* + +**Emoji.** Uso **raríssimo e orgânico** — só quando um morador escreveria assim (ex.: 🐟 num post sobre peixe fresco). Nunca em UI de sistema, botões ou rótulos. + +**Vibe.** Sossego de vila litorânea: prático, solidário, pé no chão. Mensagens curtas, sem jargão de produto. A tecnologia desaparece; o território aparece. + +--- + +## VISUAL FOUNDATIONS + +**Paleta.** Verde-floresta é tudo. A escala vai de `#E2F1E8` (claro) a `#173525` (profundo), com `#377B57` como primária do portal. No app (escuro), a copa clareada é o acento sobre superfícies quase-pretas. Acentos semânticos são poucos e naturais. Nada de roxo, nada de gradiente arco-íris. + +> **Duas paletas de app, documentadas em `colors_and_type.css`:** os tokens **canônicos do Flutter** (fiéis ao repositório: primária `#81C784`, surface `#121212`, alerta `#C0492F`, evento `#2A6FDB`) e a **evolução premium do UI kit** (`--premium-*`: base mais profunda `#0B0C0A`, copa `#A6D6B9`, alerta âmbar `#E8A06A`, evento `#86AEEA`, água `#6FC5D6`, com degradês de profundidade). Use a premium ao construir mocks de alta fidelidade; a canônica ao tocar no código real. + +**Tipografia.** **Sora** (display, 600–700) para títulos, nomes e números — geométrica, contemporânea, com leve personalidade. **Geist** (400–600) para corpo, rótulos e UI — neutra e altamente legível. Títulos com tracking negativo (`-0.2` a `-1px`); eyebrows em maiúsculas com `+1.2px`. + +**Fundos.** No app: superfície escura sólida (`#0E0F0D`/`#121212`) com um leve *radial glow* verde no topo. No portal: textura aquarela de floresta sob glass cards. **Sem** gradientes chamativos; **sem** imagens de banco corporativas. Mapas usam **tiles OSM reais** (no app premium, estilizados em escuro com leve tom verde). + +**Cards.** Superfície `#191B17`, **hairline** de `rgba(255,255,255,0.07)`, raio **18–20px**. Sem sombra pesada no escuro — a separação vem do contraste de superfície e da borda fina. No portal, o card é **glass**: `rgba(255,255,255,0.88)`, `backdrop-filter: blur(16px)`, raio **32px**, sombra suave `0 20px 50px rgba(20,40,28,0.15)`. + +**Cantos.** Escala: `8` (sm), `12` (md), `16` (lg), `18–20` (cards), `999` (pills). Generoso mas não infantil. + +**Espaçamento.** Base **4 / 8 / 16 / 24 / 32** (constantes do app). Alvo de toque mínimo **44px**. Densidade confortável, respiro generoso — minimalismo vem do espaço, não da falta de conteúdo. + +**Sombras / elevação.** Discretas. No escuro, evite drop-shadows; use bordas e tons de superfície. Exceção: a ação central **Publicar** ganha um glow verde (`0 6px 18px rgba(129,199,132,0.35)`), e superfícies **glass** flutuantes (sheets, legendas de mapa) usam `0 10px 30px rgba(0,0,0,0.4)` + blur. + +**Bordas & transparência.** Hairlines brancas a baixíssima opacidade (`0.07`–`0.12`). Blur reservado para *overlays* (bottom sheets, barra de legenda do mapa, toasts) — nunca decorativo. + +**Estados.** *Hover/press*: leve `scale(0.975)` + mudança de preenchimento (chips/segmented trocam de fundo transparente para `tint` verde a ~14% e o ícone passa a `FILL 1`). Acentos selecionados usam o verde sólido com texto escuro (`#0E1F12`). *Press* nunca muda o layout, só a escala/cor. + +**Movimento.** Calmo e curto: `150ms` (rápido), `250ms` (normal), easing `cubic-bezier(0.16,1,0.3,1)`. Entradas com fade + leve translate-up (`12–20px`). **Sem** bounce, sem loops decorativos. Toasts deslizam de baixo. + +**Imagery.** Quente, natural, à luz do dia — folhas, mata, mar, vila caiçara. Nunca frio, monocromático ou stock corporativo. + +**Layout fixo.** Top bar território-primeiro sempre presente (o território ativo é o âncora da experiência). Bottom-nav fixa com a ação **Publicar** elevada ao centro. + +--- + +## ICONOGRAPHY + +O app é **Flutter + Material 3**, então o sistema nativo de ícones é **Material Icons**. Para web/HTML, este DS usa **Material Symbols Rounded** (variante arredondada, que combina com a suavidade da marca) via Google Fonts CDN — a correspondência fiel e gratuita do conjunto Material. + +- **Estilo:** Rounded, peso 400–500, eixo `FILL` alternando entre **0** (inativo/outline) e **1** (ativo/selecionado). Tamanhos padrão: 18 / 20 / 24 px; constantes do app: `iconSizeSm/Md/Lg`. +- **Ícones-chave por feature:** `forest`/`eco` (território/feed), `explore` (explorar), `add` (publicar), `notifications` (avisos), `person` (perfil), `map`/`place`/`my_location` (mapa/localização), `event` (eventos), `warning` (alerta), `group` (conexões), `favorite`/`mode_comment`/`ios_share` (ações de post), `storefront`/`article`/`photo_camera` (pins). +- **SVGs / PNGs:** não há sprite ou icon-font próprio no repositório além do Material; o logo da Araponga é um **PNG transparingente** (`assets/arah-logo.png`) e a imagem-marca é uma foto (`assets/app-icon-leaf.png`). +- **Emoji como ícone:** não. **Unicode como ícone:** não. Use sempre Material Symbols. + +> Ao montar slides ou mocks, **copie os ícones via Material Symbols** (link CDN no ``) — nunca desenhe SVGs à mão nem use emoji no lugar de ícones. + +**Substituição sinalizada:** o app real usa Material Icons (empacotado no Flutter). Na web reproduzimos com **Material Symbols Rounded** (CDN). É a correspondência oficial do mesmo conjunto; nenhuma fonte de ícone foi inventada. + +--- + +## Index — manifesto da pasta + +**Raiz:** +- `README.md` — este arquivo. +- `colors_and_type.css` — todos os tokens (cores, fontes, escala de tipo, espaçamento, raios, sombras, motion) como CSS vars + `@font-face`. **Importe este arquivo** ao construir qualquer artefato. +- `SKILL.md` — instruções para uso como Agent Skill. + +**Pastas:** +- `fonts/` — `Geist-VariableFont_wght.ttf`, `Sora-VariableFont_wght.ttf`. +- `assets/` — `arah-logo.png` (logo araponga, transparente), `app-icon-leaf.png`, `cover-rainforest.png`, `app-banner.png`, `texture-bukeh.jpg`. +- `preview/` — cards do Design System (cores, tipo, espaçamento, componentes, brand). Conteúdo de referência rápida. +- `ui_kits/app/` — **UI Kit do app mobile premium** (interativo). Ver `ui_kits/app/README.md`. +- `site/` — **Site institucional do Arah** (movimento de soberania digital, modelo território-primeiro, app embarcado ao vivo, funcionalidades, roadmap de 48 fases, chamado às comunidades, contribuidores). Abra `site/index.html`. +- `handoff/` — **Especificação de handoff de desenvolvimento** (frontend): papéis, navegação, catálogo de telas, todas as jornadas passo-a-passo com endpoints, estados de UI, cache/offline, gaps backend-first, design system e definição de pronto. Abra `handoff/Especificacao-Arah.html`. +- `wiki/` — **Documentação viva** (hub navegável com sidebar + busca): visão, manifesto, modelo território-primeiro, glossário, papéis, domínio, funcionalidades, arquitetura, roadmap e contribuir. Abra `wiki/index.html`. +- `screenshots/` — capturas de apoio. + +**UI Kits disponíveis:** +- `ui_kits/app/` — **App mobile Arah** (premium, minimalista, território-primeiro). Cobre o produto atual e pré-visualiza **todo o backlog** (48 fases): + - **Núcleo:** Login · Onboarding (geolocalização) · Feed (+ detalhe com comentários, fotos) · Publicar (+ mídia) · Explorar · Mapa (entidades + pins) · Notificações · Perfil · Configurações. + - **Hub de Serviços** por categoria: Mercado · Minha loja (pagamento PIX) · Compra coletiva · Hospedagem · Demandas & ofertas · Trocas · Entregas · Carteira (Aratá) · Babás · Bem-estar · Aluguéis · Hub digital · Eleições & votação · Gestão/curadoria · Assinaturas · Saúde do território · Métricas · Banco de sementes · Aprendizado · Assistente IA · Conquistas. + - **Papéis** (visitante / morador / curador) com seletor "Ver como". + - **Jornadas navegáveis** (fluxos multi-passo com progresso + sucesso) para reserva, babá, bem-estar, checkout, carteira, assinatura, residência, demanda/troca/semente, aluguel, entrega, curso e serviço digital. + - Conteúdo **por território** (trocar de território muda feed, mapa, eventos, saúde). + - Abra `index.html`. + +**Site:** +- `site/index.html` — site institucional completo (light editorial + momentos escuros cinematográficos), com o app premium embarcado ao vivo. Linguagem do movimento de soberania digital, modelo território-primeiro, funcionalidades, transparência/código aberto, roadmap e chamado às comunidades. Estilos em `site/site.css`, interações em `site/site.js`. + +**Handoff:** +- `handoff/Especificacao-Arah.html` — especificação de desenvolvimento (frontend) imprimível, com TOC fixa: visão & princípios, papéis & permissões, arquitetura de navegação, catálogo de 33 telas, **todas as jornadas passo-a-passo com endpoints**, estados de UI, cache/offline, **gaps backend-first** priorizados, design system, acessibilidade/i18n e definição de pronto. + +**Wiki:** +- `wiki/index.html` — **documentação viva** do Arah (hub navegável com sidebar + busca), 13 páginas: visão geral, manifesto & princípios, modelo território-primeiro, glossário, papéis & permissões, modelo de domínio, feed & mapa, mercado & economia, governança & curadoria, comunicação, arquitetura, roadmap (48 fases) e contribuir. Linguagem harmoniosa do movimento, fiel à documentação do repositório. Estilos em `wiki/wiki.css`, navegação em `wiki/wiki.js`. diff --git a/backend/Arah.Api/wwwroot/devportal/architecture/_ds/_adherence.oxlintrc.json b/backend/Arah.Api/wwwroot/devportal/architecture/_ds/_adherence.oxlintrc.json new file mode 100644 index 00000000..0256a9cf --- /dev/null +++ b/backend/Arah.Api/wwwroot/devportal/architecture/_ds/_adherence.oxlintrc.json @@ -0,0 +1,263 @@ +{ + "plugins": [ + "react", + "import" + ], + "rules": { + "react/forbid-elements": [ + "warn", + { + "forbid": [] + } + ], + "no-restricted-imports": [ + "warn", + { + "patterns": [ + { + "group": [ + "site/**", + "ui_kits/app/**", + "wiki/**" + ], + "message": "Import design-system components from 'index.js', not component internals." + } + ] + } + ], + "no-restricted-syntax": [ + "warn", + { + "selector": "Literal[value=/#[0-9a-fA-F]{3,8}\\b/]", + "message": "Raw hex color — use a design-system color token via var()." + }, + { + "selector": "Literal[value=/\\b\\d+px\\b/]", + "message": "Raw px value — use a design-system spacing token via var()." + }, + { + "selector": "Literal[value=/font-family\\s*:\\s*(?!['\\\"]?(?:Geist|Sora))/i]", + "message": "Font not provided by the design system. Available: Geist, Sora." + } + ] + }, + "overrides": [ + { + "files": [ + "**/index.js" + ], + "rules": { + "no-restricted-imports": "off" + } + } + ], + "x-omelette": { + "components": {}, + "tokens": [ + "--app-on-surface-dark", + "--app-on-surface-light", + "--app-on-surface-var-dark", + "--app-on-surface-var-light", + "--app-outline-dark", + "--app-outline-light", + "--app-primary-dark", + "--app-primary-light", + "--app-surface-container-light", + "--app-surface-dark", + "--app-surface-light", + "--app-surface-variant-dark", + "--bg", + "--border", + "--border-strong", + "--check", + "--dur-fast", + "--dur-normal", + "--dur-reveal", + "--ease-smooth", + "--feed-alert", + "--feed-event", + "--feed-general", + "--feed-tip", + "--fg", + "--fg-muted", + "--fg-strong", + "--fg-subtle", + "--font-display", + "--font-mono", + "--font-sans", + "--forest-100", + "--forest-200", + "--forest-300", + "--forest-400", + "--forest-50", + "--forest-500", + "--forest-600", + "--forest-700", + "--forest-800", + "--forest-900", + "--forest-950", + "--glass-bg", + "--glass-bg-soft", + "--glass-blur", + "--glass-border", + "--glass-hover-shadow", + "--glass-radius", + "--glass-shadow", + "--on-primary", + "--premium-alert", + "--premium-bg", + "--premium-canopy", + "--premium-canopy-solid", + "--premium-card", + "--premium-card-grad", + "--premium-card-hi", + "--premium-event", + "--premium-fg", + "--premium-fg2", + "--premium-fg3", + "--premium-green-glow", + "--premium-green-grad", + "--premium-line", + "--premium-line-hi", + "--premium-surface", + "--premium-water", + "--primary", + "--primary-strong", + "--radius-2xl", + "--radius-lg", + "--radius-md", + "--radius-pill", + "--radius-sm", + "--radius-xl", + "--reveal-translate", + "--shadow-image", + "--shadow-lg", + "--shadow-md", + "--shadow-sm", + "--space-2xl", + "--space-3xl", + "--space-lg", + "--space-md", + "--space-sm", + "--space-xl", + "--space-xs", + "--text-body", + "--text-h1", + "--text-h2", + "--text-h3", + "--text-hero", + "--text-lead", + "--text-sm", + "--text-xs", + "--touch-target", + "--tracking-tight", + "--tracking-wide", + "--transition-smooth" + ], + "tokenKinds": { + "--forest-50": "color", + "--forest-100": "color", + "--forest-200": "color", + "--forest-300": "color", + "--forest-400": "color", + "--forest-500": "color", + "--forest-600": "color", + "--forest-700": "color", + "--forest-800": "color", + "--forest-900": "color", + "--forest-950": "color", + "--app-primary-dark": "color", + "--app-surface-dark": "color", + "--app-surface-variant-dark": "color", + "--app-on-surface-dark": "color", + "--app-on-surface-var-dark": "color", + "--app-outline-dark": "color", + "--app-primary-light": "color", + "--app-surface-light": "color", + "--app-surface-container-light": "color", + "--app-on-surface-light": "color", + "--app-on-surface-var-light": "color", + "--app-outline-light": "color", + "--feed-general": "color", + "--feed-event": "color", + "--feed-tip": "color", + "--feed-alert": "color", + "--premium-bg": "color", + "--premium-surface": "color", + "--premium-card": "color", + "--premium-card-hi": "color", + "--premium-card-grad": "color", + "--premium-line": "color", + "--premium-line-hi": "color", + "--premium-fg": "color", + "--premium-fg2": "color", + "--premium-fg3": "color", + "--premium-canopy": "color", + "--premium-canopy-solid": "color", + "--premium-green-grad": "color", + "--premium-green-glow": "shadow", + "--premium-alert": "color", + "--premium-event": "color", + "--premium-water": "color", + "--bg": "color", + "--fg": "color", + "--fg-strong": "color", + "--fg-muted": "color", + "--fg-subtle": "color", + "--primary": "color", + "--primary-strong": "color", + "--on-primary": "color", + "--border": "color", + "--border-strong": "color", + "--check": "color", + "--glass-bg": "color", + "--glass-bg-soft": "color", + "--glass-border": "color", + "--glass-shadow": "shadow", + "--glass-hover-shadow": "shadow", + "--glass-radius": "radius", + "--glass-blur": "spacing", + "--radius-sm": "radius", + "--radius-md": "radius", + "--radius-lg": "radius", + "--radius-xl": "radius", + "--radius-2xl": "radius", + "--radius-pill": "radius", + "--space-xs": "spacing", + "--space-sm": "spacing", + "--space-md": "spacing", + "--space-lg": "spacing", + "--space-xl": "spacing", + "--space-2xl": "spacing", + "--space-3xl": "spacing", + "--touch-target": "spacing", + "--shadow-sm": "shadow", + "--shadow-md": "shadow", + "--shadow-lg": "shadow", + "--shadow-image": "shadow", + "--ease-smooth": "other", + "--dur-fast": "other", + "--dur-normal": "other", + "--dur-reveal": "other", + "--reveal-translate": "spacing", + "--transition-smooth": "color", + "--font-display": "font", + "--font-sans": "font", + "--font-mono": "font", + "--text-hero": "font", + "--text-h1": "font", + "--text-h2": "font", + "--text-h3": "font", + "--text-lead": "font", + "--text-body": "font", + "--text-sm": "font", + "--text-xs": "font", + "--tracking-tight": "font", + "--tracking-wide": "font" + }, + "fontFamilies": [ + "Geist", + "Sora" + ] + } +} \ No newline at end of file diff --git a/backend/Arah.Api/wwwroot/devportal/architecture/_ds/_ds_bundle.js b/backend/Arah.Api/wwwroot/devportal/architecture/_ds/_ds_bundle.js new file mode 100644 index 00000000..fc95417c --- /dev/null +++ b/backend/Arah.Api/wwwroot/devportal/architecture/_ds/_ds_bundle.js @@ -0,0 +1,13090 @@ +/* @ds-bundle: {"format":3,"namespace":"ArahDesignSystem_c7fa51","components":[],"sourceHashes":{"site/site.js":"8354e657b587","ui_kits/app/app.jsx":"9225df8294fe","ui_kits/app/chrome.jsx":"2f67336b329c","ui_kits/app/components.jsx":"fa71d352ad20","ui_kits/app/data.jsx":"5b21881ad46a","ui_kits/app/ios-frame.jsx":"be3343be4b51","ui_kits/app/persist.jsx":"1dd533b834b0","ui_kits/app/screens1.jsx":"82911d280b8c","ui_kits/app/screens10.jsx":"53821cdd9596","ui_kits/app/screens11.jsx":"bc529e1d5b99","ui_kits/app/screens12.jsx":"cd1ce13f4819","ui_kits/app/screens13.jsx":"7cdd990cfb9a","ui_kits/app/screens14.jsx":"017cd6964218","ui_kits/app/screens15.jsx":"48b8a7ed87ae","ui_kits/app/screens16.jsx":"160f890ba039","ui_kits/app/screens17.jsx":"6c6915ebef83","ui_kits/app/screens18.jsx":"e0cc8d218035","ui_kits/app/screens2.jsx":"7c3377358571","ui_kits/app/screens3.jsx":"76cc7e29119e","ui_kits/app/screens4.jsx":"ec22bc55dc3b","ui_kits/app/screens5.jsx":"7b96f8e713f6","ui_kits/app/screens6.jsx":"e548b2c34ec6","ui_kits/app/screens7.jsx":"45f3084f27f5","ui_kits/app/screens8.jsx":"9b72c4d61414","ui_kits/app/screens9.jsx":"1b653fbf9fc8","wiki/wiki.js":"7779f5f1fe26"},"inlinedExternals":[],"unexposedExports":[]} */ + +(() => { + +const __ds_ns = (window.ArahDesignSystem_c7fa51 = window.ArahDesignSystem_c7fa51 || {}); + +const __ds_scope = {}; + +(__ds_ns.__errors = __ds_ns.__errors || []); + +// site/site.js +try { (() => { +// site.js — Arah site interactions: nav scroll state, hero theme, reveal-on-scroll, form. +(function () { + 'use strict'; + + var nav = document.getElementById('nav'); + var hero = document.getElementById('top'); + + // Nav background on scroll + function onScroll() { + var y = window.scrollY || window.pageYOffset; + if (y > 24) nav.classList.add('scrolled');else nav.classList.remove('scrolled'); + // hero theme: nav transparent while over hero + if (hero) { + var h = hero.offsetHeight - 90; + if (y < h) nav.classList.add('on-hero');else nav.classList.remove('on-hero'); + } + } + window.addEventListener('scroll', onScroll, { + passive: true + }); + onScroll(); + + // Reveal on scroll — opt-in only when JS runs, so content is never stuck hidden. + document.documentElement.classList.add('reveal-on'); + var revealEls = [].slice.call(document.querySelectorAll('.reveal')); + if ('IntersectionObserver' in window && revealEls.length) { + var io = new IntersectionObserver(function (entries) { + entries.forEach(function (e) { + if (e.isIntersecting) { + e.target.classList.add('in'); + io.unobserve(e.target); + } + }); + }, { + threshold: 0.12, + rootMargin: '0px 0px -8% 0px' + }); + revealEls.forEach(function (el) { + io.observe(el); + }); + // Safety: reveal anything still hidden after 2.4s (e.g. if observer misfires) + setTimeout(function () { + revealEls.forEach(function (el) { + el.classList.add('in'); + }); + }, 2400); + } else { + revealEls.forEach(function (el) { + el.classList.add('in'); + }); + } + + // Smooth-scroll for in-page anchors with fixed-nav offset (respects reduced motion) + var reduce = window.matchMedia('(prefers-reduced-motion: reduce)').matches; + document.querySelectorAll('a[href^="#"]').forEach(function (a) { + a.addEventListener('click', function (ev) { + var id = a.getAttribute('href'); + if (id === '#' || id.length < 2) return; + var target = document.querySelector(id); + if (!target) return; + ev.preventDefault(); + var navH = nav ? nav.offsetHeight : 0; + var y = target.getBoundingClientRect().top + (window.scrollY || window.pageYOffset) - navH - 8; + window.scrollTo({ + top: id === '#top' ? 0 : y, + behavior: reduce ? 'auto' : 'smooth' + }); + history.replaceState(null, '', id); + }); + }); + + // Community form (demo — no backend) + window.arahSubmit = function (e) { + e.preventDefault(); + var form = e.target; + var note = document.getElementById('formNote'); + var nome = (form.querySelector('[name="nome"]') || {}).value || ''; + var first = nome.trim().split(' ')[0]; + note.innerHTML = '\u2713 Recebido' + (first ? ', ' + first : '') + '. Entraremos em contato para iniciar a implementa\u00e7\u00e3o no seu territ\u00f3rio. \uD83C\uDF31'; + note.style.color = '#A6D6B9'; + form.reset(); + return false; + }; +})(); +})(); } catch (e) { __ds_ns.__errors.push({ path: "site/site.js", error: String((e && e.message) || e) }); } + +// ui_kits/app/app.jsx +try { (() => { +function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } +// app.jsx — Arah orchestrator. Stages, tabs, overlay stack, roles, smooth transitions. + +function App() { + const _saved = window.arahLoadApp && window.arahLoadApp() || {}; + const [stage, setStage] = React.useState(_saved.stage || 'login'); // login | onboarding | app + const [tab, setTab] = React.useState('feed'); // feed|explore|post|market|profile + const [stack, setStack] = React.useState([]); // overlay stack: {type, param} + const [sheet, setSheet] = React.useState(false); + const [territoryId, setTerritoryId] = React.useState(_saved.territoryId || 't1'); + const [role, setRole] = React.useState(_saved.role || 'visitante'); // visitante | morador | curador + const [likes, setLikes] = React.useState(_saved.likes || { + p1: true + }); + const [interests, setInterests] = React.useState(_saved.interests || [...window.ARAH.profile.interests]); + const [notifs, setNotifs] = React.useState(() => { + const reads = _saved.notifReads || []; + return window.ARAH.notifications.map(n => reads.includes(n.id) ? { + ...n, + read: true + } : n); + }); + const [joinedGroups, setJoinedGroups] = React.useState(_saved.joinedGroups || {}); + const [journey, setJourney] = React.useState(null); // {id, ctx} + const [toast, setToast] = React.useState(null); + const [, forceTick] = React.useReducer(x => x + 1, 0); + + // Global bridges — any deep screen can navigate or mutate session data + React.useEffect(() => { + window.openJourney = (id, ctx) => setJourney({ + id, + ctx + }); + window.arahMutate = fn => { + try { + fn && fn(); + } finally { + window.arahSnapshot && window.arahSnapshot(); + forceTick(); + } + }; + window.arahToast = (msg, icon) => { + setToast({ + msg, + icon: icon || 'check_circle' + }); + setTimeout(() => setToast(null), 2200); + }; + window.appNav = { + goTab: t => { + setStack([]); + setTab(t); + }, + push: (type, param) => setStack(s => [...s, { + type, + param + }]), + openChat: (name, avatar) => { + let c = window.ARAH.chats.find(x => x.name === name); + if (!c) { + c = { + id: 'ch' + Date.now(), + name, + avatar: avatar || '#4F956F', + role: 'morador', + last: '', + time: 'agora', + unread: 0, + thread: [] + }; + window.ARAH.chats.unshift(c); + } + setStack(s => [...s, { + type: 'chat', + param: c.id + }]); + } + }; + return () => { + delete window.openJourney; + delete window.arahMutate; + delete window.arahToast; + delete window.appNav; + }; + }, []); + + // Persist session prefs whenever they change + React.useEffect(() => { + if (stage === 'login') return; + window.arahSaveApp && window.arahSaveApp({ + stage, + territoryId, + role, + likes, + interests, + joinedGroups, + notifReads: notifs.filter(n => n.read).map(n => n.id) + }); + }, [stage, territoryId, role, likes, interests, joinedGroups, notifs]); + const territory = window.ARAH.territories.find(t => t.id === territoryId); + const content = window.ARAH.getContent(territoryId); + const unread = notifs.filter(n => !n.read).length; + const chatUnread = window.ARAH.chats.reduce((s, c) => s + c.unread, 0); + const top = stack[stack.length - 1] || null; + const showToast = (msg, icon = 'check_circle') => { + setToast({ + msg, + icon + }); + setTimeout(() => setToast(null), 2200); + }; + const push = (type, param) => setStack(s => [...s, { + type, + param + }]); + const pop = () => setStack(s => s.slice(0, -1)); + const goTab = t => { + setStack([]); + setTab(t); + }; + const toggleLike = id => setLikes(l => ({ + ...l, + [id]: !l[id] + })); + const toggleInterest = i => setInterests(s => s.includes(i) ? s.filter(x => x !== i) : [...s, i]); + const readNotif = id => setNotifs(ns => ns.map(n => n.id === id ? { + ...n, + read: true + } : n)); + const enterTerritory = id => { + setTerritoryId(id); + goTab('feed'); + showToast(`Você está em ${window.ARAH.territories.find(t => t.id === id).name}`, 'forest'); + }; + const setRoleAndToast = r => { + setRole(r); + const m = { + visitante: 'Vendo como visitante', + morador: 'Você confirmou residência', + curador: 'Vendo como curador' + }; + showToast(m[r], r === 'morador' ? 'verified' : 'switch_account'); + }; + const openLink = link => { + if (!link) return; + if (link.startsWith('post:')) push('post', link.slice(5));else if (link.startsWith('map:')) push('map', link.slice(4));else if (link === 'events') push('events');else if (link === 'profile') goTab('profile'); + }; + const openTool = id => { + if (id === 'logout') { + setStage('login'); + setTab('feed'); + setStack([]); + setRole('visitante'); + return; + } + if (id === 'chat') { + push('chats'); + return; + } + if (id === 'market') { + push('market'); + return; + } + push(id); + }; + + // ---- Stage screens ---- + if (stage === 'login') return /*#__PURE__*/React.createElement(Device, { + viewKey: "login" + }, /*#__PURE__*/React.createElement(LoginScreen, { + onLogin: () => setStage('onboarding') + })); + if (stage === 'onboarding') return /*#__PURE__*/React.createElement(Device, { + viewKey: "onb", + scroll: true, + header: { + kind: 'back', + title: 'Entrar no território', + onBack: () => setStage('login') + } + }, /*#__PURE__*/React.createElement(OnboardingScreen, { + onContinue: id => { + setTerritoryId(id); + setStage('app'); + setRole('visitante'); + showToast('Bem-vinda a Camburi', 'forest'); + } + })); + + // ---- Overlay (pushed) screens ---- + if (top) { + const titles = { + map: 'Mapa', + events: 'Eventos', + health: 'Saúde do território', + settings: 'Configurações', + elections: 'Eleições & votação', + manage: 'Gestão do território', + chats: 'Mensagens', + post: 'Publicação', + notifications: 'Notificações', + store: 'Minha loja', + saved: 'Salvos', + market: 'Mercado', + groupbuy: 'Compra coletiva', + hosting: 'Hospedagem', + demands: 'Demandas & ofertas', + trades: 'Trocas comunitárias', + delivery: 'Entregas', + wallet: 'Carteira territorial', + sitters: 'Babás', + wellness: 'Bem-estar', + rental: 'Aluguéis', + digital: 'Hub digital', + moderation: 'Moderação', + subscriptions: 'Assinaturas', + metrics: 'Painel de métricas', + seeds: 'Banco de sementes', + learning: 'Aprendizado', + ai: 'Assistente IA', + achievements: 'Conquistas' + }; + const chat = top.type === 'chat' ? window.ARAH.chats.find(c => c.id === top.param) : null; + const title = chat ? chat.name : titles[top.type]; + const noPad = top.type === 'map' || top.type === 'post' || top.type === 'chat' || top.type === 'ai'; + let inner; + if (top.type === 'map') inner = /*#__PURE__*/React.createElement(MapScreen, { + territory: territory, + content: content, + focusId: top.param + }); + if (top.type === 'events') inner = /*#__PURE__*/React.createElement(EventsScreen, { + territory: territory, + content: content, + role: role + }); + if (top.type === 'health') inner = /*#__PURE__*/React.createElement(HealthScreen, { + territory: territory, + content: content + }); + if (top.type === 'settings') inner = /*#__PURE__*/React.createElement(SettingsScreen, null); + if (top.type === 'store') inner = /*#__PURE__*/React.createElement(StoreScreen, null); + if (top.type === 'saved') inner = /*#__PURE__*/React.createElement(SavedScreen, null); + if (top.type === 'elections') inner = /*#__PURE__*/React.createElement(ElectionsScreen, { + role: role + }); + if (top.type === 'manage') inner = /*#__PURE__*/React.createElement(ManageScreen, { + territory: territory + }); + if (top.type === 'moderation') inner = /*#__PURE__*/React.createElement(ManageScreen, { + territory: territory + }); + if (top.type === 'chats') inner = /*#__PURE__*/React.createElement(ChatListScreen, { + onOpen: id => push('chat', id) + }); + if (top.type === 'chat') inner = /*#__PURE__*/React.createElement(ChatThreadScreen, { + chatId: top.param + }); + if (top.type === 'post') inner = /*#__PURE__*/React.createElement(PostDetailScreen, { + postId: top.param, + likes: likes, + onLike: toggleLike + }); + if (top.type === 'notifications') inner = /*#__PURE__*/React.createElement(NotificationsScreen, { + items: notifs, + onRead: readNotif, + onOpen: openLink + }); + if (top.type === 'market') inner = /*#__PURE__*/React.createElement(MarketScreen, { + joinedGroups: joinedGroups, + onJoinGroup: id => setJoinedGroups(g => ({ + ...g, + [id]: !g[id] + })) + }); + if (top.type === 'groupbuy') inner = /*#__PURE__*/React.createElement(GroupBuyScreen, null); + if (top.type === 'hosting') inner = /*#__PURE__*/React.createElement(HostingScreen, null); + if (top.type === 'demands') inner = /*#__PURE__*/React.createElement(DemandsScreen, null); + if (top.type === 'trades') inner = /*#__PURE__*/React.createElement(TradesScreen, null); + if (top.type === 'delivery') inner = /*#__PURE__*/React.createElement(DeliveryScreen, null); + if (top.type === 'wallet') inner = /*#__PURE__*/React.createElement(WalletScreen, null); + if (top.type === 'sitters') inner = /*#__PURE__*/React.createElement(SittersScreen, null); + if (top.type === 'wellness') inner = /*#__PURE__*/React.createElement(WellnessScreen, null); + if (top.type === 'rental') inner = /*#__PURE__*/React.createElement(RentalScreen, null); + if (top.type === 'digital') inner = /*#__PURE__*/React.createElement(DigitalScreen, null); + if (top.type === 'metrics') inner = /*#__PURE__*/React.createElement(MetricsScreen, { + territory: territory + }); + if (top.type === 'seeds') inner = /*#__PURE__*/React.createElement(SeedsScreen, null); + if (top.type === 'learning') inner = /*#__PURE__*/React.createElement(LearningScreen, null); + if (top.type === 'ai') inner = /*#__PURE__*/React.createElement(AIScreen, { + territory: territory + }); + if (top.type === 'achievements') inner = /*#__PURE__*/React.createElement(AchievementsScreen, null); + if (top.type === 'subscriptions') inner = /*#__PURE__*/React.createElement(SubscriptionsScreen, null); + const action = top.type === 'notifications' && unread ? { + icon: 'done_all', + onClick: () => setNotifs(ns => ns.map(n => ({ + ...n, + read: true + }))) + } : null; + return /*#__PURE__*/React.createElement(Device, { + viewKey: 'ov' + stack.length + top.type + (top.param || ''), + scroll: !noPad, + noPad: noPad, + journey: journey, + onCloseJourney: () => setJourney(null), + onApproveResidencia: () => setRoleAndToast('morador'), + header: { + kind: 'back', + title, + onBack: pop, + action + } + }, inner); + } + + // ---- Main shell tabs ---- + const titles = { + explore: 'Explorar', + post: 'Publicar', + services: 'Serviços do território', + profile: 'Perfil' + }; + let body, header; + if (tab === 'feed') { + header = { + kind: 'territory' + }; + body = /*#__PURE__*/React.createElement(FeedScreen, { + territory: territory, + content: content, + role: role, + likes: likes, + onLike: toggleLike, + onOpen: id => push('post', id) + }); + } else { + header = { + kind: 'title', + title: titles[tab] + }; + if (tab === 'explore') body = /*#__PURE__*/React.createElement(ExploreScreen, { + territory: territory, + activeId: territoryId, + role: role, + onEnter: enterTerritory, + onMap: () => push('map'), + onTool: openTool + }); + if (tab === 'post') body = /*#__PURE__*/React.createElement(CreatePostScreen, { + territory: territory, + onPublish: data => { + const c = window.ARAH.content[territoryId]; + if (c) c.feed.unshift({ + id: 'np' + Date.now(), + author: window.ARAH.profile.name, + handle: window.ARAH.profile.handle, + avatar: window.ARAH.profile.avatar, + role: role === 'visitante' ? 'visitante' : 'morador', + time: 'agora', + type: data.type, + visibility: data.vis, + title: data.title || 'Sem título', + body: data.body || '', + photo: data.photo, + likes: 0, + comments: 0 + }); + window.arahSnapshot && window.arahSnapshot(); + goTab('feed'); + showToast('Post publicado no território'); + } + }); + if (tab === 'services') body = /*#__PURE__*/React.createElement(ServicesHubScreen, { + territory: territory, + role: role, + onOpen: openTool + }); + if (tab === 'profile') body = /*#__PURE__*/React.createElement(ProfileScreen, { + role: role, + onSetRole: setRoleAndToast, + onOpen: openTool, + interests: interests, + onToggleInterest: toggleInterest + }); + } + return /*#__PURE__*/React.createElement(Device, { + viewKey: 'tab-' + tab, + scroll: true, + header: header, + territory: territory, + onTerritoryTap: () => setSheet(true), + onChat: () => push('chats'), + onNotif: () => push('notifications'), + unread: unread, + chatUnread: chatUnread, + bottom: /*#__PURE__*/React.createElement(BottomNav, { + active: tab, + onNav: goTab + }), + toast: toast, + journey: journey, + onCloseJourney: () => setJourney(null), + onApproveResidencia: () => setRoleAndToast('morador') + }, body, sheet && /*#__PURE__*/React.createElement(TerritorySheet, { + activeId: territoryId, + onPick: id => { + setSheet(false); + enterTerritory(id); + }, + onClose: () => setSheet(false) + })); +} + +// Device wrapper with smooth crossfade between views (keyed on viewKey). +function Device({ + children, + viewKey, + header, + bottom, + scroll, + noPad, + territory, + onTerritoryTap, + onChat, + onNotif, + unread, + chatUnread, + toast, + journey, + onCloseJourney, + onApproveResidencia +}) { + return /*#__PURE__*/React.createElement(IOSDevice, { + dark: true, + width: 390, + height: 844 + }, /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + background: `radial-gradient(130% 80% at 50% -8%, #15201A 0%, ${T.bg} 58%)`, + display: 'flex', + flexDirection: 'column' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + height: 56, + flexShrink: 0 + } + }), header && /*#__PURE__*/React.createElement(Header, _extends({}, header, { + territory: territory, + onTerritoryTap: onTerritoryTap, + onChat: onChat, + onNotif: onNotif, + unread: unread, + chatUnread: chatUnread + })), /*#__PURE__*/React.createElement("div", { + key: viewKey, + className: "screen-fade", + style: { + flex: 1, + minHeight: 0, + display: 'flex', + flexDirection: 'column' + } + }, noPad ? /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minHeight: 0, + overflow: 'hidden', + position: 'relative' + } + }, children) : /*#__PURE__*/React.createElement("div", { + className: "appscroll", + style: { + flex: 1, + overflowY: scroll ? 'auto' : 'hidden', + overflowX: 'hidden', + position: 'relative' + } + }, children, scroll && bottom && /*#__PURE__*/React.createElement("div", { + style: { + height: 96 + } + }))), bottom && /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + left: 0, + right: 0, + bottom: 0, + zIndex: 30 + } + }, bottom), toast && /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + left: 18, + right: 18, + bottom: bottom ? 108 : 40, + zIndex: 200, + display: 'flex', + alignItems: 'center', + gap: 10, + padding: '13px 16px', + background: T.glassGrad, + backdropFilter: 'blur(14px)', + WebkitBackdropFilter: 'blur(14px)', + borderRadius: 15, + border: `1px solid ${T.lineHi}`, + boxShadow: '0 12px 30px rgba(0,0,0,0.45)', + animation: 'toastIn .3s cubic-bezier(.16,1,.3,1)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: toast.icon, + size: 20, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 14, + color: T.fg, + fontWeight: 500 + } + }, toast.msg)), journey && /*#__PURE__*/React.createElement(JourneyHost, { + journey: journey, + onClose: onCloseJourney, + onApprove: onApproveResidencia + }))); +} +function Header({ + kind, + title, + action, + onBack, + territory, + onTerritoryTap, + onChat, + onNotif, + unread, + chatUnread +}) { + if (kind === 'territory') return /*#__PURE__*/React.createElement(TopBar, { + territory: territory, + onTerritoryTap: onTerritoryTap, + onChat: onChat, + onNotif: onNotif, + unread: unread, + chatUnread: chatUnread + }); + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 12, + padding: '6px 16px 14px' + } + }, kind === 'back' && /*#__PURE__*/React.createElement("button", { + onClick: onBack, + style: iconBtn + }, /*#__PURE__*/React.createElement(Icon, { + name: "arrow_back", + size: 22, + color: T.fg + })), /*#__PURE__*/React.createElement("h2", { + style: { + margin: 0, + flex: 1, + fontFamily: T.display, + fontWeight: 600, + fontSize: 21, + color: T.fg, + letterSpacing: -0.4, + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis' + } + }, title), action && /*#__PURE__*/React.createElement("button", { + onClick: action.onClick, + style: iconBtn + }, /*#__PURE__*/React.createElement(Icon, { + name: action.icon, + size: 21, + color: T.green + }))); +} +ReactDOM.createRoot(document.getElementById('root')).render(/*#__PURE__*/React.createElement(App, null)); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/app.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/chrome.jsx +try { (() => { +// chrome.jsx — Arah app shell: territory top bar (logo + chat + notifications) + bottom nav. + +function TopBar({ + territory, + onTerritoryTap, + onChat, + onNotif, + unread = 0, + chatUnread = 0 +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 10, + padding: '6px 16px 14px', + position: 'relative', + zIndex: 5 + } + }, /*#__PURE__*/React.createElement("button", { + onClick: onTerritoryTap, + style: { + display: 'flex', + alignItems: 'center', + gap: 10, + flex: 1, + minWidth: 0, + background: 'transparent', + border: 'none', + cursor: 'pointer', + padding: 0, + textAlign: 'left', + WebkitTapHighlightColor: 'transparent' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 40, + height: 40, + borderRadius: 13, + flexShrink: 0, + overflow: 'hidden', + background: 'linear-gradient(150deg, #1F2A22, #141A15)', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + border: `1px solid ${T.lineHi}`, + boxShadow: T.shadowSoft + } + }, /*#__PURE__*/React.createElement(Logo, { + size: 28, + mark: "png" + })), /*#__PURE__*/React.createElement("div", { + style: { + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 10.5, + fontWeight: 600, + letterSpacing: 1.2, + textTransform: 'uppercase', + color: T.fg3, + marginBottom: 1 + } + }, "Territ\xF3rio"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 5 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontSize: 19, + fontWeight: 600, + color: T.fg, + letterSpacing: -0.3, + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis' + } + }, territory.name), /*#__PURE__*/React.createElement(Icon, { + name: "unfold_more", + size: 17, + color: T.fg3 + })))), /*#__PURE__*/React.createElement("button", { + onClick: onChat, + style: topIconBtn + }, /*#__PURE__*/React.createElement(Icon, { + name: "forum", + size: 21, + color: T.fg2 + }), chatUnread > 0 && /*#__PURE__*/React.createElement(Dot, null)), /*#__PURE__*/React.createElement("button", { + onClick: onNotif, + style: topIconBtn + }, /*#__PURE__*/React.createElement(Icon, { + name: "notifications", + size: 21, + color: T.fg2 + }), unread > 0 && /*#__PURE__*/React.createElement(Dot, null))); +} +function Dot() { + return /*#__PURE__*/React.createElement("span", { + style: { + position: 'absolute', + top: 7, + right: 8, + width: 8, + height: 8, + borderRadius: '50%', + background: T.alert, + border: `1.5px solid ${T.bg2}` + } + }); +} +const topIconBtn = { + width: 40, + height: 40, + borderRadius: 12, + flexShrink: 0, + position: 'relative', + background: 'transparent', + border: `1px solid ${T.line}`, + cursor: 'pointer', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + WebkitTapHighlightColor: 'transparent' +}; +const iconBtn = topIconBtn; +window.iconBtn = iconBtn; + +// Bottom nav — 5 tabs. Center "Publicar" is an elevated gradient action. +function BottomNav({ + active, + onNav +}) { + const tabs = [{ + id: 'feed', + icon: 'eco', + label: 'Feed' + }, { + id: 'explore', + icon: 'explore', + label: 'Explorar' + }, { + id: 'post', + icon: 'add', + label: 'Publicar', + center: true + }, { + id: 'services', + icon: 'grid_view', + label: 'Serviços' + }, { + id: 'profile', + icon: 'person', + label: 'Perfil' + }]; + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'flex-end', + justifyContent: 'space-around', + padding: '10px 12px 30px', + position: 'relative', + background: 'linear-gradient(to top, #0B0C0A 64%, rgba(11,12,10,0))', + borderTop: `1px solid ${T.line}` + } + }, tabs.map(t => { + const on = active === t.id; + if (t.center) { + return /*#__PURE__*/React.createElement("button", { + key: t.id, + onClick: () => onNav(t.id), + style: navBtn + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 54, + height: 40, + borderRadius: 16, + background: T.greenGrad, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + boxShadow: T.greenGlow + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "add", + size: 26, + color: "#0C1B10", + weight: 500 + })), /*#__PURE__*/React.createElement("span", { + style: navLabel(false) + }, t.label)); + } + return /*#__PURE__*/React.createElement("button", { + key: t.id, + onClick: () => onNav(t.id), + style: { + ...navBtn, + flex: 1 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: t.icon, + size: 25, + color: on ? T.green : T.fg3, + fill: on ? 1 : 0, + weight: on ? 500 : 400 + }), /*#__PURE__*/React.createElement("span", { + style: navLabel(on) + }, t.label)); + })); +} +const navBtn = { + background: 'none', + border: 'none', + cursor: 'pointer', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + gap: 5, + WebkitTapHighlightColor: 'transparent' +}; +const navLabel = on => ({ + fontFamily: T.sans, + fontSize: 10.5, + fontWeight: on ? 600 : 500, + color: on ? T.green : T.fg3, + letterSpacing: 0.1 +}); +Object.assign(window, { + TopBar, + BottomNav +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/chrome.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/components.jsx +try { (() => { +// components.jsx — Arah shared UI primitives. Premium minimalist, dark-default. +// v2: depth via subtle gradients, real araponga logo, richer surfaces. +// Material Symbols Rounded icons (the app's native icon system is Material Icons). + +const T = { + bg: '#0B0C0A', + // deepest base + bg2: '#0E100D', + // app surface + card: '#16181400', + // (placeholder) + // gradient surfaces (depth) + cardGrad: 'linear-gradient(160deg, #1C201A 0%, #161814 100%)', + cardHiGrad: 'linear-gradient(160deg, #242821 0%, #1C201A 100%)', + cardFlat: '#191B17', + cardHi: '#20231E', + glassGrad: 'linear-gradient(160deg, rgba(32,36,30,0.92), rgba(20,23,18,0.88))', + line: 'rgba(255,255,255,0.07)', + lineHi: 'rgba(255,255,255,0.13)', + fg: '#F2F4EE', + fg2: '#A6AC9E', + // muted + fg3: '#6B7164', + // subtle + green: '#A6D6B9', + // canopy accent (light, for dark UI) + greenSolid: '#81C784', + greenGrad: 'linear-gradient(150deg, #93D29C 0%, #6FB98C 100%)', + // primary button depth + greenDeep: '#2B6246', + greenDim: 'rgba(129,199,132,0.13)', + greenGlow: '0 8px 24px rgba(129,199,132,0.30)', + // elevated depth shadows (modern, layered) + shadowSoft: '0 1px 0 rgba(255,255,255,0.05) inset, 0 8px 22px rgba(0,0,0,0.30)', + shadowCard: '0 1px 0 rgba(255,255,255,0.05) inset, 0 14px 34px rgba(0,0,0,0.40)', + shadowFloat: '0 18px 44px rgba(0,0,0,0.50)', + alert: '#E8A06A', + // warm terracotta-amber + alertDim: 'rgba(232,160,106,0.14)', + blue: '#86AEEA', + blueDim: 'rgba(134,174,234,0.14)', + water: '#6FC5D6', + // território health: água + display: '"Sora", system-ui, sans-serif', + sans: '"Geist", system-ui, sans-serif' +}; +window.T = T; + +// Material Symbols Rounded icon +function Icon({ + name, + size = 24, + color = 'currentColor', + fill = 0, + weight = 400, + grade = 0, + style = {} +}) { + return /*#__PURE__*/React.createElement("span", { + className: "msr", + style: { + fontSize: size, + color, + lineHeight: 1, + userSelect: 'none', + fontVariationSettings: `'FILL' ${fill}, 'wght' ${weight}, 'GRAD' ${grade}, 'opsz' 24`, + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0, + ...style + } + }, name); +} + +// Premium brand mark — leaf-wing fusion (araponga in flight + território vivo). +// tone: 'canopy' (gradient) | 'ink' | 'white' (flat, for mono use). +let _logoSeq = 0; +function LogoMark({ + size = 32, + variant = 'wingleaf', + tone = 'canopy' +}) { + const uid = React.useMemo(() => 'lg' + ++_logoSeq, []); + const flat = tone === 'ink' ? '#0E1F12' : tone === 'white' ? '#F2F4EE' : null; + const light = flat || '#A6D6B9'; + const deep = flat || '#5FB07F'; + const solid = flat || '#81C784'; + const bodyFill = flat || `url(#${uid}b)`; + const barbCol = tone === 'ink' ? '#A6D6B9' : tone === 'white' ? '#1A2D20' : '#0E2117'; + const paths = { + // leaf-wing fusion — a tilted leaf whose central vein sprouts feather barbs + wingleaf: /*#__PURE__*/React.createElement(React.Fragment, null, !flat && /*#__PURE__*/React.createElement("defs", null, /*#__PURE__*/React.createElement("linearGradient", { + id: uid + 'b', + x1: "0.1", + y1: "0.05", + x2: "0.85", + y2: "0.95" + }, /*#__PURE__*/React.createElement("stop", { + offset: "0", + stopColor: "#D2EFDD" + }), /*#__PURE__*/React.createElement("stop", { + offset: "0.5", + stopColor: "#93D2A8" + }), /*#__PURE__*/React.createElement("stop", { + offset: "1", + stopColor: "#56A877" + }))), /*#__PURE__*/React.createElement("path", { + d: "M11.5 40.5 C6.5 26 16 11.5 40.5 7.5 C33 23 26 35.5 11.5 40.5 Z", + fill: deep, + opacity: flat ? 0.45 : 0.9 + }), /*#__PURE__*/React.createElement("path", { + d: "M14.5 37.8 C12.4 27 19 16.3 35.4 11.2 C29.6 23 22.6 32.6 14.5 37.8 Z", + fill: bodyFill + }), !flat && /*#__PURE__*/React.createElement("path", { + d: "M35.4 11.2 C24.5 14.5 17.8 21.5 14.9 30.5", + stroke: "rgba(255,255,255,0.55)", + strokeWidth: "1.1", + strokeLinecap: "round", + fill: "none", + opacity: "0.7" + }), /*#__PURE__*/React.createElement("g", { + stroke: barbCol, + strokeWidth: "1.5", + strokeLinecap: "round", + opacity: flat ? 0.5 : 0.42, + fill: "none" + }, /*#__PURE__*/React.createElement("path", { + d: "M15.4 36.6 L33.2 13.4" + }), /*#__PURE__*/React.createElement("path", { + d: "M19.4 31.4 L27.6 28.6" + }), /*#__PURE__*/React.createElement("path", { + d: "M22.4 26.6 L30.4 23.8" + }), /*#__PURE__*/React.createElement("path", { + d: "M25.4 21.6 L32.4 18.8" + }))), + // two leaf-wings meeting at the base — reads as flight and canopy growth + wing: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("path", { + d: "M24 43 C12 35 7 21 13 8 C23 15 28 30 24 43 Z", + fill: deep + }), /*#__PURE__*/React.createElement("path", { + d: "M24 43 C36 35 41 21 35 8 C25 15 20 30 24 43 Z", + fill: light + })), + leaf: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("path", { + d: "M24 5 C37 15 37 33 24 44 C11 33 11 15 24 5 Z", + fill: light + }), /*#__PURE__*/React.createElement("path", { + d: "M24 11 L24 39", + stroke: tone === 'ink' ? '#0E1F12' : '#13241A', + strokeWidth: "2", + strokeLinecap: "round", + opacity: "0.5" + })), + pin: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("path", { + d: "M24 4 C15 4 8 11 8 20 C8 31 24 44 24 44 C24 44 40 31 40 20 C40 11 33 4 24 4 Z", + fill: solid + }), /*#__PURE__*/React.createElement("path", { + d: "M24 12 C30 16 30 25 24 30 C18 25 18 16 24 12 Z", + fill: tone === 'ink' ? '#A6D6B9' : '#0E1F12' + })) + }; + return /*#__PURE__*/React.createElement("svg", { + width: size, + height: size, + viewBox: "0 0 48 48", + fill: "none", + style: { + display: 'block' + }, + "aria-label": "Arah" + }, paths[variant] || paths.wing); +} + +// Brand logo. variant: 'mark' | 'lockup'. mark: 'wing' | 'leaf' | 'pin' | 'png'. +function Logo({ + size = 32, + lockup = false, + color = T.fg, + mark = 'png' +}) { + const glyph = mark === 'png' ? /*#__PURE__*/React.createElement("img", { + src: "../../assets/arah-logo.png", + alt: "Arah", + style: { + height: size, + width: 'auto', + display: 'block' + } + }) : /*#__PURE__*/React.createElement(LogoMark, { + size: size, + variant: mark + }); + if (!lockup) return glyph; + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 10 + } + }, glyph, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: size * 0.7, + color, + letterSpacing: -0.6 + } + }, "Arah")); +} + +// Circular avatar with initials +function Avatar({ + color = T.greenDeep, + name = '', + size = 40, + ring = false, + resident = false +}) { + const initials = name.split(/[ .]/).filter(Boolean).slice(0, 2).map(w => w[0]?.toUpperCase()).join(''); + return /*#__PURE__*/React.createElement("div", { + style: { + position: 'relative', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: size, + height: size, + borderRadius: '50%', + background: `linear-gradient(150deg, ${color}, ${color}bb)`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + color: '#fff', + fontFamily: T.display, + fontWeight: 600, + fontSize: size * 0.36, + boxShadow: ring ? `0 0 0 2px ${T.bg2}, 0 0 0 3.5px ${T.green}` : 'inset 0 1px 0 rgba(255,255,255,0.15)', + letterSpacing: 0.2 + } + }, initials), resident && /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + bottom: -1, + right: -1, + width: size * 0.4, + height: size * 0.4, + borderRadius: '50%', + background: T.greenSolid, + border: `2px solid ${T.bg2}`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "verified", + size: size * 0.26, + color: "#0E1F12", + fill: 1 + }))); +} + +// Role pill: morador vs visitante +function RoleBadge({ + role, + size = 'sm' +}) { + const resident = role === 'morador'; + const fs = size === 'sm' ? 10.5 : 12; + return /*#__PURE__*/React.createElement("span", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4, + padding: size === 'sm' ? '2px 7px' : '4px 10px', + borderRadius: 999, + fontFamily: T.sans, + fontWeight: 600, + fontSize: fs, + letterSpacing: 0.2, + background: resident ? T.greenDim : 'rgba(166,172,158,0.12)', + color: resident ? T.green : T.fg2 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: resident ? 'cottage' : 'explore', + size: fs + 2, + fill: resident ? 1 : 0 + }), resident ? 'Morador' : 'Visitante'); +} + +// Primary / secondary / ghost button +function Btn({ + children, + kind = 'primary', + icon, + iconEnd, + onClick, + full = false, + size = 'md', + style = {} +}) { + const pad = size === 'lg' ? '15px 22px' : size === 'sm' ? '8px 14px' : '12px 18px'; + const fs = size === 'lg' ? 16 : size === 'sm' ? 13.5 : 15; + const kinds = { + primary: { + background: T.greenGrad, + color: '#0C1B10', + border: 'none', + boxShadow: T.greenGlow + }, + secondary: { + background: 'transparent', + color: T.fg, + border: `1px solid ${T.lineHi}` + }, + ghost: { + background: 'transparent', + color: T.green, + border: 'none' + }, + dark: { + background: T.cardFlat, + color: T.fg, + border: `1px solid ${T.line}` + } + }; + return /*#__PURE__*/React.createElement("button", { + onClick: onClick, + style: { + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', + gap: 8, + padding: pad, + borderRadius: 14, + fontFamily: T.sans, + fontWeight: 600, + fontSize: fs, + cursor: 'pointer', + width: full ? '100%' : undefined, + letterSpacing: -0.1, + transition: 'transform .12s, filter .18s', + WebkitTapHighlightColor: 'transparent', + ...kinds[kind], + ...style + }, + onMouseDown: e => e.currentTarget.style.transform = 'scale(0.975)', + onMouseUp: e => e.currentTarget.style.transform = 'scale(1)', + onMouseLeave: e => e.currentTarget.style.transform = 'scale(1)' + }, icon && /*#__PURE__*/React.createElement(Icon, { + name: icon, + size: fs + 4, + fill: kind === 'primary' ? 1 : 0, + weight: 500 + }), children, iconEnd && /*#__PURE__*/React.createElement(Icon, { + name: iconEnd, + size: fs + 4, + fill: kind === 'primary' ? 1 : 0, + weight: 500 + })); +} + +// Pill chip +function Chip({ + children, + active = false, + onClick, + icon, + tone = 'green' +}) { + const toneColor = tone === 'alert' ? T.alert : T.green; + const toneDim = tone === 'alert' ? T.alertDim : T.greenDim; + return /*#__PURE__*/React.createElement("button", { + onClick: onClick, + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 6, + flexShrink: 0, + padding: '7px 13px', + borderRadius: 999, + cursor: 'pointer', + fontFamily: T.sans, + fontWeight: 500, + fontSize: 13, + letterSpacing: -0.1, + background: active ? toneDim : 'transparent', + color: active ? toneColor : T.fg2, + border: `1px solid ${active ? 'transparent' : T.line}`, + transition: 'all .15s', + WebkitTapHighlightColor: 'transparent' + } + }, icon && /*#__PURE__*/React.createElement(Icon, { + name: icon, + size: 15, + fill: active ? 1 : 0 + }), children); +} +function Eyebrow({ + children, + color = T.green, + style = {} +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11, + fontWeight: 600, + letterSpacing: 1.4, + textTransform: 'uppercase', + color, + ...style + } + }, children); +} + +// Card surface with depth gradient + layered elevation +function Card({ + children, + style = {}, + onClick, + hi = false, + glow = false +}) { + return /*#__PURE__*/React.createElement("div", { + onClick: onClick, + style: { + background: hi ? T.cardHiGrad : T.cardGrad, + border: `1px solid ${T.line}`, + borderRadius: 20, + boxShadow: glow ? T.shadowCard : T.shadowSoft, + cursor: onClick ? 'pointer' : undefined, + WebkitTapHighlightColor: 'transparent', + ...style + } + }, children); +} +Object.assign(window, { + Icon, + Logo, + LogoMark, + Avatar, + RoleBadge, + Btn, + Chip, + Eyebrow, + Card +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/components.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/data.jsx +try { (() => { +// data.jsx — Arah mock content. Território-primeiro, comunidade-primeiro. pt-BR. +// v3: content scoped PER TERRITORY (feed, events, map entities, health, members), +// comments, photo posts, marketplace, compra coletiva, chat, store, roles. + +const ARAH = { + me: { + name: 'Ana Ribeiro', + handle: 'ana.ribeiro', + avatar: '#4F956F', + role: 'visitante' + }, + territories: [{ + id: 't1', + name: 'Camburi', + region: 'São Sebastião · SP', + members: 1284, + distance: 0.4, + desc: 'Vila caiçara entre a mata e o mar.', + active: true + }, { + id: 't2', + name: 'Maresias', + region: 'São Sebastião · SP', + members: 2106, + distance: 6.2, + desc: 'Praia, surfe e comércio local.' + }, { + id: 't3', + name: 'Boiçucanga', + region: 'São Sebastião · SP', + members: 1740, + distance: 9.1, + desc: 'Comunidade ativa e feira de domingo.' + }, { + id: 't4', + name: 'Juquehy', + region: 'São Sebastião · SP', + members: 980, + distance: 12.7, + desc: 'Rio, mangue e trilhas.' + }, { + id: 't5', + name: 'Barra do Una', + region: 'São Sebastião · SP', + members: 612, + distance: 18.3, + desc: 'Reserva e pesca artesanal.' + }], + // ---- Per-territory content ---- + content: { + t1: { + tile: { + x: 3057, + y: 4652 + }, + health: { + agua: 92, + nativas: 78, + nascentes: 6, + mirantes: 4, + santuarios: 2 + }, + feed: [{ + id: 'p1', + author: 'Conselho de Moradores', + handle: 'conselho.camburi', + avatar: '#4F956F', + role: 'morador', + time: '2h', + type: 'Alert', + visibility: 'Public', + pinned: true, + title: 'Mutirão de limpeza no costão neste sábado', + body: 'Encontro às 8h na praça da capela. Traga luvas e água. Vamos cuidar do nosso território juntos — café da manhã comunitário ao final.', + likes: 64, + comments: 12 + }, { + id: 'p2', + author: 'Dona Marta', + handle: 'marta.peixaria', + avatar: '#C9962B', + role: 'morador', + time: '5h', + type: 'General', + visibility: 'Public', + photo: '../../assets/cover-rainforest.png', + title: 'Chegou robalo fresco na peixaria', + body: 'Pescado da manhã pelo seu Tião. Quem quiser, é só passar até as 18h. Apoiem a pesca artesanal da vila 🐟', + likes: 38, + comments: 7 + }, { + id: 'p3', + author: 'Coletivo Maré', + handle: 'coletivo.mare', + avatar: '#2A6FDB', + role: 'morador', + time: '1d', + type: 'General', + visibility: 'ResidentsOnly', + title: 'Roda de conversa: água e saneamento', + body: 'Próxima terça, 19h, no centro comunitário. Vamos discutir a captação da nascente e os próximos passos com a associação.', + likes: 91, + comments: 28 + }, { + id: 'p4', + author: 'Bruno Caiçara', + handle: 'bruno.trilhas', + avatar: '#377B57', + role: 'visitante', + time: '2d', + type: 'General', + visibility: 'Public', + title: 'Trilha da Cachoeira reaberta', + body: 'Galho caído foi removido pelo mutirão. Caminho liberado, mas atenção no trecho de pedra após a chuva.', + likes: 47, + comments: 5 + }], + events: [{ + id: 'e1', + day: '07', + mon: 'JUN', + title: 'Mutirão de limpeza do costão', + time: 'Sáb · 08:00', + place: 'Praça da Capela', + going: 42, + tag: 'Comunidade', + status: 'interested', + desc: 'Limpeza coletiva do costão e da faixa de areia. Traga luvas e garrafa de água.' + }, { + id: 'e2', + day: '10', + mon: 'JUN', + title: 'Roda de conversa: água e saneamento', + time: 'Ter · 19:00', + place: 'Centro Comunitário', + going: 28, + tag: 'Assembleia', + status: 'confirmed', + desc: 'Discussão aberta sobre a captação da nascente e o saneamento da vila.' + }, { + id: 'e3', + day: '15', + mon: 'JUN', + title: 'Feira de produtores da vila', + time: 'Dom · 09:00', + place: 'Largo da Igreja', + going: 130, + tag: 'Feira', + desc: 'Produtores locais, agroecologia e artesanato caiçara.' + }], + entities: [{ + id: 'm_peixaria', + x: 38, + y: 38, + kind: 'place', + icon: 'storefront', + color: '#A6D6B9', + label: 'Peixaria da Marta', + sub: 'Comércio local · aberto', + confirmed: true + }, { + id: 'm_evento', + x: 60, + y: 30, + kind: 'event', + icon: 'event', + color: '#86AEEA', + label: 'Mutirão do costão', + sub: 'Sáb · 08:00', + confirmed: true + }, { + id: 'm_alerta', + x: 30, + y: 62, + kind: 'alert', + icon: 'warning', + color: '#E8A06A', + label: 'Trecho escorregadio', + sub: 'Trilha · após a chuva', + confirmed: true + }, { + id: 'm_cachoeira', + x: 70, + y: 60, + kind: 'waterfall', + icon: 'water_drop', + color: '#6FC5D6', + label: 'Cachoeira do Bracuí', + sub: 'Banho · trilha 40min', + confirmed: true + }, { + id: 'm_nascente', + x: 52, + y: 72, + kind: 'spring', + icon: 'water', + color: '#6FC5D6', + label: 'Nascente do Bracuí', + sub: 'Água potável · confirmada', + confirmed: true + }, { + id: 'm_mirante', + x: 46, + y: 24, + kind: 'viewpoint', + icon: 'landscape', + color: '#A6D6B9', + label: 'Mirante da Pedra', + sub: 'Vista 360° · trilha 20min', + confirmed: false + }] + }, + t2: { + tile: { + x: 3059, + y: 4653 + }, + health: { + agua: 74, + nativas: 52, + nascentes: 3, + mirantes: 5, + santuarios: 1 + }, + feed: [{ + id: 'm2p1', + author: 'Escola de Surfe Maresias', + handle: 'surf.maresias', + avatar: '#2A6FDB', + role: 'morador', + time: '1h', + type: 'General', + visibility: 'Public', + photo: '../../assets/cover-rainforest.png', + title: 'Aula aberta de surfe neste domingo', + body: 'Aula gratuita pra moradores às 7h, antes do movimento. Pranchas emprestadas. Bora pegar onda com responsabilidade 🌊', + likes: 112, + comments: 19 + }, { + id: 'm2p2', + author: 'Defesa Civil', + handle: 'defesa.maresias', + avatar: '#E8A06A', + role: 'morador', + time: '3h', + type: 'Alert', + visibility: 'Public', + pinned: true, + title: 'Trânsito intenso na entrada da praia', + body: 'Feriado prolongado lotou a Rio-Santos. Evitem a rua da praia entre 10h e 14h. Usem o estacionamento do largo.', + likes: 58, + comments: 8 + }, { + id: 'm2p3', + author: 'Restaurante da Praia', + handle: 'restaurante.maresias', + avatar: '#C9962B', + role: 'morador', + time: '6h', + type: 'General', + visibility: 'Public', + title: 'Menu caiçara de inverno', + body: 'Caldo de peixe, moqueca e pastel de camarão. Moradores têm 15% no almoço durante a semana 🍲', + likes: 44, + comments: 6 + }, { + id: 'm2p4', + author: 'Coletivo Praia Limpa', + handle: 'praialimpa', + avatar: '#377B57', + role: 'morador', + time: '1d', + type: 'General', + visibility: 'ResidentsOnly', + title: 'Coleta de guimbas na areia', + body: 'Sábado de manhã. Vamos mapear os pontos mais sujos e instalar cinzeiros ecológicos na orla.', + likes: 73, + comments: 14 + }], + events: [{ + id: 'm2e1', + day: '08', + mon: 'JUN', + title: 'Campeonato de surfe amador', + time: 'Dom · 07:00', + place: 'Praia de Maresias', + going: 214, + tag: 'Esporte', + desc: 'Etapa local do circuito caiçara. Categorias mirim, amador e master.' + }, { + id: 'm2e2', + day: '14', + mon: 'JUN', + title: 'Feira gastronômica da orla', + time: 'Sáb · 17:00', + place: 'Calçadão da Praia', + going: 156, + tag: 'Feira', + status: 'interested', + desc: 'Food trucks, produtores e música ao vivo.' + }], + entities: [{ + id: 'm2_pico', + x: 44, + y: 42, + kind: 'place', + icon: 'surfing', + color: '#86AEEA', + label: 'Pico do Surfe', + sub: 'Ondas · nível intermediário', + confirmed: true + }, { + id: 'm2_quiosque', + x: 62, + y: 36, + kind: 'place', + icon: 'storefront', + color: '#A6D6B9', + label: 'Quiosque do Zé', + sub: 'Comércio · aberto', + confirmed: true + }, { + id: 'm2_alerta', + x: 34, + y: 58, + kind: 'alert', + icon: 'warning', + color: '#E8A06A', + label: 'Trânsito intenso', + sub: 'Entrada da praia · 10h–14h', + confirmed: true + }, { + id: 'm2_mirante', + x: 56, + y: 66, + kind: 'viewpoint', + icon: 'landscape', + color: '#A6D6B9', + label: 'Mirante do Pontal', + sub: 'Pôr do sol · trilha 15min', + confirmed: true + }] + }, + t3: { + tile: { + x: 3060, + y: 4654 + }, + health: { + agua: 81, + nativas: 69, + nascentes: 4, + mirantes: 2, + santuarios: 3 + }, + feed: [{ + id: 'm3p1', + author: 'Associação de Boiçucanga', + handle: 'assoc.boicucanga', + avatar: '#4F956F', + role: 'morador', + time: '2h', + type: 'General', + visibility: 'Public', + pinned: true, + title: 'Feira de domingo confirmada', + body: 'Das 8h às 13h no largo. Hortaliças, peixe, pães e artesanato. Tragam suas sacolas retornáveis 🧺', + likes: 88, + comments: 21 + }, { + id: 'm3p2', + author: 'Escola da Vila', + handle: 'escola.boicucanga', + avatar: '#C9962B', + role: 'morador', + time: '7h', + type: 'General', + visibility: 'Public', + title: 'Aulas de reforço abertas', + body: 'Voluntários dão reforço de matemática e leitura às quartas e sextas. Inscrições na secretaria.', + likes: 52, + comments: 9 + }, { + id: 'm3p3', + author: 'Defesa Civil', + handle: 'defesa.boicucanga', + avatar: '#E8A06A', + role: 'morador', + time: '1d', + type: 'Alert', + visibility: 'Public', + title: 'Rio cheio após a chuva', + body: 'Nível do rio subiu. Evitem a travessia na ponte velha até segunda. Usem a passarela nova.', + likes: 41, + comments: 4 + }], + events: [{ + id: 'm3e1', + day: '09', + mon: 'JUN', + title: 'Feira de domingo', + time: 'Dom · 08:00', + place: 'Largo da Vila', + going: 190, + tag: 'Feira', + status: 'confirmed', + desc: 'Feira semanal de produtores e artesãos de Boiçucanga.' + }, { + id: 'm3e2', + day: '16', + mon: 'JUN', + title: 'Plantio de mudas nativas', + time: 'Sáb · 09:00', + place: 'Margem do Rio', + going: 64, + tag: 'Comunidade', + desc: 'Recuperação da mata ciliar com mudas do viveiro comunitário.' + }], + entities: [{ + id: 'm3_feira', + x: 48, + y: 40, + kind: 'event', + icon: 'storefront', + color: '#A6D6B9', + label: 'Feira da Vila', + sub: 'Dom · 08h–13h', + confirmed: true + }, { + id: 'm3_igreja', + x: 60, + y: 50, + kind: 'place', + icon: 'church', + color: '#A6D6B9', + label: 'Igreja Matriz', + sub: 'Centro histórico', + confirmed: true + }, { + id: 'm3_rio', + x: 36, + y: 64, + kind: 'alert', + icon: 'warning', + color: '#E8A06A', + label: 'Ponte velha', + sub: 'Rio cheio · evitar', + confirmed: true + }, { + id: 'm3_cachoeira', + x: 68, + y: 62, + kind: 'waterfall', + icon: 'water_drop', + color: '#6FC5D6', + label: 'Cachoeira do Sertão', + sub: 'Trilha 50min', + confirmed: false + }] + } + }, + // Fallback content for territories without bespoke data (t4, t5) + fallbackContent: t => ({ + tile: { + x: 3058, + y: 4655 + }, + health: { + agua: 70, + nativas: 60, + nascentes: 2, + mirantes: 1, + santuarios: 1 + }, + feed: [{ + id: t.id + 'fp1', + author: 'Associação Local', + handle: 'assoc.' + t.name.toLowerCase().replace(/\s/g, ''), + avatar: '#4F956F', + role: 'morador', + time: '4h', + type: 'General', + visibility: 'Public', + title: `Bem-vindo a ${t.name}`, + body: `O território de ${t.name} ainda está se organizando na Arah. Seja um dos primeiros a publicar e fortalecer a comunidade local.`, + likes: 12, + comments: 2 + }, { + id: t.id + 'fp2', + author: 'Moradores de ' + t.name, + handle: 'moradores', + avatar: '#377B57', + role: 'morador', + time: '2d', + type: 'General', + visibility: 'Public', + title: 'Grupo de WhatsApp migrando pra cá', + body: 'Estamos trazendo os avisos da vila pro app. Em breve mais conteúdo do território por aqui.', + likes: 8, + comments: 1 + }], + events: [{ + id: t.id + 'fe1', + day: '21', + mon: 'JUN', + title: 'Encontro de moradores', + time: 'Sáb · 16:00', + place: 'Centro da Vila', + going: 18, + tag: 'Comunidade', + desc: `Primeiro encontro de moradores de ${t.name} para organizar o território na Arah.` + }], + entities: [{ + id: t.id + '_centro', + x: 50, + y: 46, + kind: 'place', + icon: 'place', + color: '#A6D6B9', + label: 'Centro da Vila', + sub: 'Ponto de encontro', + confirmed: true + }, { + id: t.id + '_praia', + x: 60, + y: 60, + kind: 'place', + icon: 'beach_access', + color: '#86AEEA', + label: 'Praia', + sub: 'Acesso público', + confirmed: false + }] + }), + getContent(tid) { + if (this.content[tid]) return this.content[tid]; + return this.fallbackContent(this.territories.find(t => t.id === tid)); + }, + comments: { + p1: [{ + id: 'c1', + author: 'Bruno Caiçara', + avatar: '#377B57', + role: 'visitante', + time: '1h', + body: 'Vou levar dois sacos extras e luvas. Bora!' + }, { + id: 'c2', + author: 'Dona Marta', + avatar: '#C9962B', + role: 'morador', + time: '1h', + body: 'Levo o café e os bolos da padaria 🙌' + }, { + id: 'c3', + author: 'Seu Tião', + avatar: '#4F956F', + role: 'morador', + time: '40min', + body: 'Confirmado. Levo o caminhão pra recolher o lixo pesado.' + }] + }, + notifications: [{ + id: 'n1', + kind: 'alert', + read: false, + link: 'post:p1', + title: 'Novo alerta no seu território', + body: 'Conselho de Moradores publicou um aviso sobre o mutirão de sábado.', + time: 'há 2h' + }, { + id: 'n2', + kind: 'event', + read: false, + link: 'events', + title: 'Lembrete de evento', + body: 'Roda de conversa sobre água começa em 1 dia.', + time: 'há 5h' + }, { + id: 'n3', + kind: 'map', + read: false, + link: 'map:m_nascente', + title: 'Nova entidade no mapa', + body: 'Nascente do Bracuí foi confirmada pela curadoria. Ver no mapa.', + time: 'há 8h' + }, { + id: 'n4', + kind: 'connection', + read: true, + link: 'profile', + title: 'Bruno Caiçara entrou em Camburi', + body: 'Agora faz parte do seu território.', + time: 'ontem' + }, { + id: 'n5', + kind: 'post', + read: true, + link: 'post:p4', + title: 'Seu post recebeu 12 comentários', + body: '“Trilha da Cachoeira reaberta” está movimentando a vila.', + time: 'há 2 dias' + }], + market: [{ + id: 'mk1', + title: 'Robalo fresco (kg)', + seller: 'Peixaria da Marta', + price: 'R$ 42', + tag: 'Alimento', + avatar: '#C9962B', + icon: 'set_meal' + }, { + id: 'mk2', + title: 'Passeio de canoa no mangue', + seller: 'Bruno Caiçara', + price: 'R$ 80', + tag: 'Serviço', + avatar: '#377B57', + icon: 'kayaking' + }, { + id: 'mk3', + title: 'Cestas de orgânicos da feira', + seller: 'Coletivo Maré', + price: 'R$ 55', + tag: 'Alimento', + avatar: '#2A6FDB', + icon: 'shopping_basket' + }, { + id: 'mk4', + title: 'Artesanato em fibra de bananeira', + seller: 'Dona Lurdes', + price: 'R$ 35', + tag: 'Artesanato', + avatar: '#4F956F', + icon: 'redeem' + }], + groupBuys: [{ + id: 'gb1', + title: 'Compra coletiva de placas solares', + org: 'Conselho de Moradores', + goal: 30, + joined: 22, + unit: 'famílias', + deadline: 'até 20/jun', + icon: 'solar_power' + }, { + id: 'gb2', + title: 'Cisternas de captação de chuva', + org: 'Coletivo Maré', + goal: 15, + joined: 9, + unit: 'casas', + deadline: 'até 30/jun', + icon: 'water_drop' + }], + // My store (net-new): seller products + payment config + myStore: { + open: false, + name: 'Ateliê da Ana', + products: [{ + id: 'sp1', + title: 'Aulas de reforço (hora)', + price: 'R$ 40', + tag: 'Serviço', + icon: 'school', + active: true + }, { + id: 'sp2', + title: 'Doce de banana caseiro', + price: 'R$ 18', + tag: 'Alimento', + icon: 'lunch_dining', + active: true + }], + sales: { + month: 'R$ 1.240', + orders: 31 + }, + payment: { + pix: 'ana.ribeiro@email.com', + methods: ['PIX', 'Cartão', 'Dinheiro'], + fee: '0%', + payout: 'Banco do Brasil ····2207' + } + }, + chats: [{ + id: 'ch1', + name: 'Conselho de Moradores', + avatar: '#4F956F', + role: 'morador', + last: 'Confirmado o caminhão pro mutirão.', + time: '10:24', + unread: 2, + thread: [{ + me: false, + body: 'Oi Ana! Você confirma presença no mutirão de sábado?', + time: '10:20' + }, { + me: true, + body: 'Confirmo sim! Posso levar luvas extras.', + time: '10:22' + }, { + me: false, + body: 'Perfeito. Confirmado o caminhão pro mutirão.', + time: '10:24' + }] + }, { + id: 'ch2', + name: 'Dona Marta', + avatar: '#C9962B', + role: 'morador', + last: 'Separei o robalo, viu?', + time: 'ontem', + unread: 0, + thread: [{ + me: true, + body: 'Dona Marta, ainda tem robalo pra hoje?', + time: 'ontem' + }, { + me: false, + body: 'Separei o robalo, viu? Pode passar até as 18h.', + time: 'ontem' + }] + }, { + id: 'ch3', + name: 'Coletivo Maré', + avatar: '#2A6FDB', + role: 'morador', + last: 'Te vejo na roda de conversa 💧', + time: 'seg', + unread: 0, + thread: [{ + me: false, + body: 'Te vejo na roda de conversa 💧', + time: 'seg' + }] + }], + profile: { + name: 'Ana Ribeiro', + handle: 'ana.ribeiro', + avatar: '#4F956F', + bio: 'Caiçara, professora e voluntária no coletivo de águas. Território é casa.', + posts: 23, + territories: 2, + since: '2024', + interests: ['Meio ambiente', 'Pesca artesanal', 'Educação', 'Cultura caiçara', 'Saneamento'] + }, + interestPool: ['Meio ambiente', 'Pesca artesanal', 'Educação', 'Cultura caiçara', 'Saneamento', 'Turismo de base', 'Agroecologia', 'Saúde', 'Esporte', 'Artesanato', 'Música', 'Trilhas'], + // ============================================================ + // BACKLOG DOMAINS — visual preview of the full roadmap (48 fases / 10 ondas) + // status: 'live' (implemented MVP) | 'soon' (planned roadmap) + // ============================================================ + serviceCategories: [{ + id: 'economia', + label: 'Economia local', + icon: 'payments', + color: '#A6D6B9', + desc: 'Mercado, compras coletivas e renda no território.', + items: [{ + id: 'market', + icon: 'storefront', + label: 'Mercado', + sub: 'Lojas, itens e checkout', + status: 'live' + }, { + id: 'groupbuy', + icon: 'groups_2', + label: 'Compra coletiva', + sub: 'Unir pedidos da vila', + status: 'soon', + phase: 'Fase 17' + }, { + id: 'hosting', + icon: 'cottage', + label: 'Hospedagem', + sub: 'Estadias no território', + status: 'soon', + phase: 'Fase 18' + }, { + id: 'demands', + icon: 'swap_horiz', + label: 'Demandas & ofertas', + sub: 'Quem precisa, quem oferece', + status: 'soon', + phase: 'Fase 19' + }, { + id: 'trades', + icon: 'handshake', + label: 'Trocas comunitárias', + sub: 'Escambo e doações', + status: 'soon', + phase: 'Fase 20' + }, { + id: 'delivery', + icon: 'local_shipping', + label: 'Entregas', + sub: 'Logística local', + status: 'soon', + phase: 'Fase 21' + }, { + id: 'wallet', + icon: 'account_balance_wallet', + label: 'Moeda territorial', + sub: 'Carteira e créditos', + status: 'soon', + phase: 'Fase 22' + }] + }, { + id: 'servicos', + label: 'Serviços territoriais', + icon: 'concierge', + color: '#86AEEA', + desc: 'Profissionais e espaços de confiança local.', + items: [{ + id: 'sitters', + icon: 'child_care', + label: 'Babás', + sub: 'Cuidado infantil verificado', + status: 'soon', + phase: 'Épico 10' + }, { + id: 'wellness', + icon: 'self_improvement', + label: 'Bem-estar', + sub: 'Yoga, terapias e espaços', + status: 'soon', + phase: 'Épico 10' + }, { + id: 'rental', + icon: 'category', + label: 'Aluguéis', + sub: 'Equipamentos e espaços', + status: 'soon', + phase: 'Fase 46' + }, { + id: 'digital', + icon: 'apps', + label: 'Hub digital', + sub: 'Serviços digitais locais', + status: 'soon', + phase: 'Fase 26' + }] + }, { + id: 'governanca', + label: 'Governança', + icon: 'how_to_vote', + color: '#E8A06A', + desc: 'Decisões coletivas e cuidado comunitário.', + items: [{ + id: 'elections', + icon: 'how_to_vote', + label: 'Eleições & votação', + sub: 'Conselho e consultas', + status: 'live' + }, { + id: 'manage', + icon: 'shield_person', + label: 'Gestão & curadoria', + sub: 'Moderação comunitária', + status: 'live' + }, { + id: 'moderation', + icon: 'gavel', + label: 'Moderação & denúncias', + sub: 'Reports, bloqueios, sanções', + status: 'live' + }, { + id: 'subscriptions', + icon: 'card_membership', + label: 'Assinaturas', + sub: 'Apoio recorrente ao território', + status: 'soon', + phase: 'Fase 15' + }] + }, { + id: 'territorio', + label: 'Vida no território', + icon: 'eco', + color: '#A6D6B9', + desc: 'Saúde, cultura e regeneração do lugar.', + items: [{ + id: 'health', + icon: 'water_drop', + label: 'Saúde do território', + sub: 'Indicadores vivos', + status: 'soon', + phase: 'Fase 24' + }, { + id: 'metrics', + icon: 'monitoring', + label: 'Painel de métricas', + sub: 'Pulso da comunidade', + status: 'soon', + phase: 'Fase 25' + }, { + id: 'seeds', + icon: 'potted_plant', + label: 'Banco de sementes', + sub: 'Mudas e troca de sementes', + status: 'soon', + phase: 'Fase 48' + }, { + id: 'learning', + icon: 'school', + label: 'Aprendizado', + sub: 'Saberes e oficinas locais', + status: 'soon', + phase: 'Fase 45' + }, { + id: 'ai', + icon: 'auto_awesome', + label: 'Assistente IA', + sub: 'Apoio inteligente do território', + status: 'soon', + phase: 'Fase 27' + }, { + id: 'achievements', + icon: 'workspace_premium', + label: 'Conquistas', + sub: 'Reconhecimento comunitário', + status: 'soon', + phase: 'Fase 42' + }] + }], + groupBuyDetail: { + title: 'Compra coletiva de placas solares', + org: 'Conselho de Moradores', + icon: 'solar_power', + goal: 30, + joined: 22, + unit: 'famílias', + deadline: 'até 20/jun', + price: 'R$ 2.400', + saved: 'R$ 1.100', + desc: 'Quanto mais famílias entram, menor o preço por placa. Negociação coletiva direto com o fornecedor regional.', + tiers: [{ + n: 10, + price: 'R$ 3.500' + }, { + n: 20, + price: 'R$ 2.400' + }, { + n: 30, + price: 'R$ 1.900' + }], + participants: ['#C9962B', '#377B57', '#2A6FDB', '#4F956F', '#E8A06A'] + }, + hosting: [{ + id: 'h1', + title: 'Casa caiçara à beira-mar', + host: 'Dona Marta', + avatar: '#C9962B', + price: 'R$ 180', + unit: 'noite', + rating: 4.9, + reviews: 32, + tag: 'Casa inteira', + guests: 4, + icon: 'cottage' + }, { + id: 'h2', + title: 'Quarto na vila, perto da trilha', + host: 'Bruno Caiçara', + avatar: '#377B57', + price: 'R$ 90', + unit: 'noite', + rating: 4.8, + reviews: 18, + tag: 'Quarto privativo', + guests: 2, + icon: 'bedroom_parent' + }, { + id: 'h3', + title: 'Camping ecológico do rio', + host: 'Coletivo Maré', + avatar: '#2A6FDB', + price: 'R$ 45', + unit: 'noite', + rating: 4.7, + reviews: 41, + tag: 'Camping', + guests: 6, + icon: 'camping' + }], + demands: [{ + id: 'd1', + kind: 'demanda', + title: 'Preciso de pedreiro para muro', + who: 'Seu Tião', + avatar: '#4F956F', + tag: 'Construção', + time: '2h', + icon: 'construction' + }, { + id: 'd2', + kind: 'oferta', + title: 'Ofereço aulas de violão', + who: 'Bruno Caiçara', + avatar: '#377B57', + tag: 'Educação', + time: '4h', + icon: 'music_note' + }, { + id: 'd3', + kind: 'demanda', + title: 'Procuro carona para São Sebastião', + who: 'Ana Ribeiro', + avatar: '#4F956F', + tag: 'Transporte', + time: '6h', + icon: 'directions_car' + }, { + id: 'd4', + kind: 'oferta', + title: 'Conserto de redes de pesca', + who: 'Dona Marta', + avatar: '#C9962B', + tag: 'Serviço', + time: '1d', + icon: 'phishing' + }], + trades: [{ + id: 'tr1', + title: 'Troco mudas de ipê por adubo', + who: 'Coletivo Maré', + avatar: '#2A6FDB', + want: 'Adubo orgânico', + icon: 'potted_plant' + }, { + id: 'tr2', + title: 'Doação: roupas infantis', + who: 'Dona Lurdes', + avatar: '#4F956F', + want: 'Doação', + icon: 'volunteer_activism' + }, { + id: 'tr3', + title: 'Troco peixe por hortaliças', + who: 'Seu Tião', + avatar: '#4F956F', + want: 'Hortaliças', + icon: 'set_meal' + }], + deliveries: [{ + id: 'dl1', + from: 'Peixaria da Marta', + to: 'Praça da Capela', + status: 'a caminho', + courier: 'Bruno', + eta: '15 min', + icon: 'two_wheeler' + }, { + id: 'dl2', + from: 'Feira da Vila', + to: 'Rua das Conchas, 12', + status: 'entregue', + courier: 'Ana', + eta: 'concluído', + icon: 'check_circle' + }], + wallet: { + balance: 'A̧ 340', + brl: 'R$ 340,00', + name: 'Aratá', + symbol: 'A̧', + transactions: [{ + id: 'w1', + label: 'Feira da Vila', + sub: 'Compra de orgânicos', + val: '- A̧ 55', + icon: 'shopping_basket', + neg: true + }, { + id: 'w2', + label: 'Mutirão do costão', + sub: 'Crédito por participação', + val: '+ A̧ 30', + icon: 'volunteer_activism', + neg: false + }, { + id: 'w3', + label: 'Aulas de violão', + sub: 'Recebido de Marina', + val: '+ A̧ 80', + icon: 'music_note', + neg: false + }, { + id: 'w4', + label: 'Peixaria da Marta', + sub: 'Robalo fresco', + val: '- A̧ 42', + icon: 'set_meal', + neg: true + }] + }, + sitters: [{ + id: 's1', + name: 'Marina Souza', + avatar: '#E8A06A', + rating: 4.9, + reviews: 27, + price: 'R$ 35/h', + exp: '8 anos', + verified: true, + badges: ['Primeiros socorros', 'Verificada'], + dist: '0.6 km', + ages: '0–6 anos' + }, { + id: 's2', + name: 'Júlia Caiçara', + avatar: '#377B57', + rating: 4.8, + reviews: 14, + price: 'R$ 30/h', + exp: '5 anos', + verified: true, + badges: ['Curso de babá'], + dist: '1.2 km', + ages: '2–10 anos' + }, { + id: 's3', + name: 'Rosa Maria', + avatar: '#C9962B', + rating: 5.0, + reviews: 41, + price: 'R$ 40/h', + exp: '12 anos', + verified: true, + badges: ['Primeiros socorros', 'Pedagogia'], + dist: '2.0 km', + ages: '0–12 anos' + }], + wellness: { + spaces: [{ + id: 'ws1', + name: 'Espaço Maré Yoga', + type: 'Estúdio de yoga', + icon: 'self_improvement', + avatar: '#A6D6B9', + slots: '6 horários livres', + cap: '12 pessoas' + }, { + id: 'ws2', + name: 'Casa Holística da Vila', + type: 'Terapias integrativas', + icon: 'spa', + avatar: '#86AEEA', + slots: '3 horários livres', + cap: '8 pessoas' + }], + providers: [{ + id: 'wp1', + name: 'Clara Ventos', + spec: 'Professora de Yoga', + avatar: '#377B57', + rating: 4.9, + price: 'R$ 60', + icon: 'self_improvement', + verified: true + }, { + id: 'wp2', + name: 'Tomás Lua', + spec: 'Terapia sonora', + avatar: '#2A6FDB', + rating: 4.8, + price: 'R$ 90', + icon: 'music_note', + verified: true + }] + }, + courses: [{ + id: 'co1', + title: 'Pesca artesanal sustentável', + teacher: 'Seu Tião', + avatar: '#4F956F', + lessons: 6, + level: 'Iniciante', + tag: 'Saberes locais', + icon: 'phishing' + }, { + id: 'co2', + title: 'Agroecologia no quintal', + teacher: 'Coletivo Maré', + avatar: '#2A6FDB', + lessons: 8, + level: 'Todos', + tag: 'Agroecologia', + icon: 'eco' + }, { + id: 'co3', + title: 'Construção com bioconstrução', + teacher: 'Bruno Caiçara', + avatar: '#377B57', + lessons: 5, + level: 'Intermediário', + tag: 'Ofícios', + icon: 'handyman' + }], + seeds: [{ + id: 'se1', + name: 'Ipê-amarelo', + who: 'Coletivo Maré', + qty: '20 sementes', + tag: 'Nativa', + icon: 'park' + }, { + id: 'se2', + name: 'Manjericão', + who: 'Dona Lurdes', + qty: '15 mudas', + tag: 'Tempero', + icon: 'potted_plant' + }, { + id: 'se3', + name: 'Juçara (palmito)', + who: 'Seu Tião', + qty: '8 mudas', + tag: 'Nativa', + icon: 'forest' + }, { + id: 'se4', + name: 'Hortelã', + who: 'Ana Ribeiro', + qty: '12 mudas', + tag: 'Medicinal', + icon: 'eco' + }], + achievements: [{ + id: 'a1', + label: 'Guardião do território', + sub: '5 mutirões', + icon: 'shield', + got: true + }, { + id: 'a2', + label: 'Semeador', + sub: '10 mudas doadas', + icon: 'potted_plant', + got: true + }, { + id: 'a3', + label: 'Voz ativa', + sub: 'Votou em 3 eleições', + icon: 'how_to_vote', + got: true + }, { + id: 'a4', + label: 'Vizinho presente', + sub: '20 eventos', + icon: 'groups', + got: false, + progress: 70 + }, { + id: 'a5', + label: 'Comerciante local', + sub: 'Loja com 50 vendas', + icon: 'storefront', + got: false, + progress: 62 + }, { + id: 'a6', + label: 'Mestre de ofício', + sub: 'Ensinou 1 curso', + icon: 'school', + got: false, + progress: 0 + }], + subscriptionTiers: [{ + id: 'sub1', + name: 'Apoiador', + price: 'R$ 9', + period: '/mês', + perks: ['Selo de apoiador', 'Acesso a relatórios do território'], + popular: false + }, { + id: 'sub2', + name: 'Guardião', + price: 'R$ 29', + period: '/mês', + perks: ['Tudo do Apoiador', 'Prioridade em compras coletivas', 'Voz nas consultas'], + popular: true + }, { + id: 'sub3', + name: 'Mantenedor', + price: 'R$ 79', + period: '/mês', + perks: ['Tudo do Guardião', 'Reconhecimento público', 'Reunião mensal com o conselho'], + popular: false + }], + aiPrompts: ['O que está acontecendo em Camburi hoje?', 'Onde encontro peixe fresco agora?', 'Resumir a última assembleia', 'Quais trilhas estão abertas?'], + metrics: { + engagement: 78, + posts: 142, + events: 12, + newMembers: 34, + bars: [{ + label: 'Seg', + v: 40 + }, { + label: 'Ter', + v: 65 + }, { + label: 'Qua', + v: 52 + }, { + label: 'Qui', + v: 80 + }, { + label: 'Sex', + v: 72 + }, { + label: 'Sáb', + v: 95 + }, { + label: 'Dom', + v: 88 + }] + }, + rentals: [{ + id: 'rt1', + title: 'Caiaque duplo', + owner: 'Bruno Caiçara', + avatar: '#377B57', + price: 'R$ 40', + unit: 'dia', + tag: 'Lazer', + icon: 'kayaking' + }, { + id: 'rt2', + title: 'Furadeira + kit', + owner: 'Seu Tião', + avatar: '#4F956F', + price: 'R$ 25', + unit: 'dia', + tag: 'Ferramenta', + icon: 'handyman' + }, { + id: 'rt3', + title: 'Barraca 4 pessoas', + owner: 'Coletivo Maré', + avatar: '#2A6FDB', + price: 'R$ 35', + unit: 'dia', + tag: 'Camping', + icon: 'camping' + }, { + id: 'rt4', + title: 'Som + microfone', + owner: 'Dona Marta', + avatar: '#C9962B', + price: 'R$ 60', + unit: 'dia', + tag: 'Eventos', + icon: 'speaker' + }], + digitalServices: [{ + id: 'ds1', + title: 'Criação de logo e identidade', + who: 'Marina Designer', + avatar: '#E8A06A', + price: 'R$ 250', + tag: 'Design', + icon: 'palette' + }, { + id: 'ds2', + title: 'Site para comércio local', + who: 'Bruno Dev', + avatar: '#377B57', + price: 'R$ 800', + tag: 'Web', + icon: 'language' + }, { + id: 'ds3', + title: 'Gestão de redes sociais', + who: 'Coletivo Maré', + avatar: '#2A6FDB', + price: 'R$ 180/mês', + tag: 'Marketing', + icon: 'campaign' + }, { + id: 'ds4', + title: 'Edição de vídeos', + who: 'Júlia Filma', + avatar: '#C9962B', + price: 'R$ 120', + tag: 'Vídeo', + icon: 'movie' + }] +}; +window.ARAH = ARAH; +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/data.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/ios-frame.jsx +try { (() => { +// @ds-adherence-ignore -- omelette starter scaffold (raw elements/hex/px by design) + +/* BEGIN USAGE */ +// iOS.jsx — Simplified iOS 26 (Liquid Glass) device frame +// Based on the iOS 26 UI Kit + Figma status bar spec. No assets, no deps. +// Exports (to window): IOSDevice, IOSStatusBar, IOSNavBar, IOSGlassPill, IOSList, IOSListRow, IOSKeyboard +// +// Usage — wrap your screen content in to get the bezel, status bar +// and home indicator (props: title, dark, keyboard): +// +// +// ...your screen content... +// +// +/* END USAGE */ + +// ───────────────────────────────────────────────────────────── +// Status bar +// ───────────────────────────────────────────────────────────── +function IOSStatusBar({ + dark = false, + time = '9:41' +}) { + const c = dark ? '#fff' : '#000'; + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 154, + alignItems: 'center', + justifyContent: 'center', + padding: '21px 24px 19px', + boxSizing: 'border-box', + position: 'relative', + zIndex: 20, + width: '100%' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + height: 22, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + paddingTop: 1.5 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: '-apple-system, "SF Pro", system-ui', + fontWeight: 590, + fontSize: 17, + lineHeight: '22px', + color: c + } + }, time)), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + height: 22, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + gap: 7, + paddingTop: 1, + paddingRight: 1 + } + }, /*#__PURE__*/React.createElement("svg", { + width: "19", + height: "12", + viewBox: "0 0 19 12" + }, /*#__PURE__*/React.createElement("rect", { + x: "0", + y: "7.5", + width: "3.2", + height: "4.5", + rx: "0.7", + fill: c + }), /*#__PURE__*/React.createElement("rect", { + x: "4.8", + y: "5", + width: "3.2", + height: "7", + rx: "0.7", + fill: c + }), /*#__PURE__*/React.createElement("rect", { + x: "9.6", + y: "2.5", + width: "3.2", + height: "9.5", + rx: "0.7", + fill: c + }), /*#__PURE__*/React.createElement("rect", { + x: "14.4", + y: "0", + width: "3.2", + height: "12", + rx: "0.7", + fill: c + })), /*#__PURE__*/React.createElement("svg", { + width: "17", + height: "12", + viewBox: "0 0 17 12" + }, /*#__PURE__*/React.createElement("path", { + d: "M8.5 3.2C10.8 3.2 12.9 4.1 14.4 5.6L15.5 4.5C13.7 2.7 11.2 1.5 8.5 1.5C5.8 1.5 3.3 2.7 1.5 4.5L2.6 5.6C4.1 4.1 6.2 3.2 8.5 3.2Z", + fill: c + }), /*#__PURE__*/React.createElement("path", { + d: "M8.5 6.8C9.9 6.8 11.1 7.3 12 8.2L13.1 7.1C11.8 5.9 10.2 5.1 8.5 5.1C6.8 5.1 5.2 5.9 3.9 7.1L5 8.2C5.9 7.3 7.1 6.8 8.5 6.8Z", + fill: c + }), /*#__PURE__*/React.createElement("circle", { + cx: "8.5", + cy: "10.5", + r: "1.5", + fill: c + })), /*#__PURE__*/React.createElement("svg", { + width: "27", + height: "13", + viewBox: "0 0 27 13" + }, /*#__PURE__*/React.createElement("rect", { + x: "0.5", + y: "0.5", + width: "23", + height: "12", + rx: "3.5", + stroke: c, + strokeOpacity: "0.35", + fill: "none" + }), /*#__PURE__*/React.createElement("rect", { + x: "2", + y: "2", + width: "20", + height: "9", + rx: "2", + fill: c + }), /*#__PURE__*/React.createElement("path", { + d: "M25 4.5V8.5C25.8 8.2 26.5 7.2 26.5 6.5C26.5 5.8 25.8 4.8 25 4.5Z", + fill: c, + fillOpacity: "0.4" + })))); +} + +// ───────────────────────────────────────────────────────────── +// Liquid glass pill — blur + tint + shine +// ───────────────────────────────────────────────────────────── +function IOSGlassPill({ + children, + dark = false, + style = {} +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + height: 44, + minWidth: 44, + borderRadius: 9999, + position: 'relative', + overflow: 'hidden', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + boxShadow: dark ? '0 2px 6px rgba(0,0,0,0.35), 0 6px 16px rgba(0,0,0,0.2)' : '0 1px 3px rgba(0,0,0,0.07), 0 3px 10px rgba(0,0,0,0.06)', + ...style + } + }, /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + borderRadius: 9999, + backdropFilter: 'blur(12px) saturate(180%)', + WebkitBackdropFilter: 'blur(12px) saturate(180%)', + background: dark ? 'rgba(120,120,128,0.28)' : 'rgba(255,255,255,0.5)' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + borderRadius: 9999, + boxShadow: dark ? 'inset 1.5px 1.5px 1px rgba(255,255,255,0.15), inset -1px -1px 1px rgba(255,255,255,0.08)' : 'inset 1.5px 1.5px 1px rgba(255,255,255,0.7), inset -1px -1px 1px rgba(255,255,255,0.4)', + border: dark ? '0.5px solid rgba(255,255,255,0.15)' : '0.5px solid rgba(0,0,0,0.06)' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'relative', + zIndex: 1, + display: 'flex', + alignItems: 'center', + padding: '0 4px' + } + }, children)); +} + +// ───────────────────────────────────────────────────────────── +// Navigation bar — glass pills + large title +// ───────────────────────────────────────────────────────────── +function IOSNavBar({ + title = 'Title', + dark = false, + trailingIcon = true +}) { + const muted = dark ? 'rgba(255,255,255,0.6)' : '#404040'; + const text = dark ? '#fff' : '#000'; + const pillIcon = content => /*#__PURE__*/React.createElement(IOSGlassPill, { + dark: dark + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 36, + height: 36, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, content)); + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 10, + paddingTop: 62, + paddingBottom: 10, + position: 'relative', + zIndex: 5 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + padding: '0 16px' + } + }, pillIcon(/*#__PURE__*/React.createElement("svg", { + width: "12", + height: "20", + viewBox: "0 0 12 20", + fill: "none", + style: { + marginLeft: -1 + } + }, /*#__PURE__*/React.createElement("path", { + d: "M10 2L2 10l8 8", + stroke: muted, + strokeWidth: "2.5", + strokeLinecap: "round", + strokeLinejoin: "round" + }))), trailingIcon && pillIcon(/*#__PURE__*/React.createElement("svg", { + width: "22", + height: "6", + viewBox: "0 0 22 6" + }, /*#__PURE__*/React.createElement("circle", { + cx: "3", + cy: "3", + r: "2.5", + fill: muted + }), /*#__PURE__*/React.createElement("circle", { + cx: "11", + cy: "3", + r: "2.5", + fill: muted + }), /*#__PURE__*/React.createElement("circle", { + cx: "19", + cy: "3", + r: "2.5", + fill: muted + })))), /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 16px', + fontFamily: '-apple-system, system-ui', + fontSize: 34, + fontWeight: 700, + lineHeight: '41px', + color: text, + letterSpacing: 0.4 + } + }, title)); +} + +// ───────────────────────────────────────────────────────────── +// Grouped list (inset card, r:26) + row (52px) +// ───────────────────────────────────────────────────────────── +function IOSListRow({ + title, + detail, + icon, + chevron = true, + isLast = false, + dark = false +}) { + const text = dark ? '#fff' : '#000'; + const sec = dark ? 'rgba(235,235,245,0.6)' : 'rgba(60,60,67,0.6)'; + const ter = dark ? 'rgba(235,235,245,0.3)' : 'rgba(60,60,67,0.3)'; + const sep = dark ? 'rgba(84,84,88,0.65)' : 'rgba(60,60,67,0.12)'; + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + minHeight: 52, + padding: '0 16px', + position: 'relative', + fontFamily: '-apple-system, system-ui', + fontSize: 17, + letterSpacing: -0.43 + } + }, icon && /*#__PURE__*/React.createElement("div", { + style: { + width: 30, + height: 30, + borderRadius: 7, + background: icon, + marginRight: 12, + flexShrink: 0 + } + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + color: text + } + }, title), detail && /*#__PURE__*/React.createElement("span", { + style: { + color: sec, + marginRight: 6 + } + }, detail), chevron && /*#__PURE__*/React.createElement("svg", { + width: "8", + height: "14", + viewBox: "0 0 8 14", + style: { + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement("path", { + d: "M1 1l6 6-6 6", + stroke: ter, + strokeWidth: "2", + fill: "none", + strokeLinecap: "round", + strokeLinejoin: "round" + })), !isLast && /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + bottom: 0, + right: 0, + left: icon ? 58 : 16, + height: 0.5, + background: sep + } + })); +} +function IOSList({ + header, + children, + dark = false +}) { + const hc = dark ? 'rgba(235,235,245,0.6)' : 'rgba(60,60,67,0.6)'; + const bg = dark ? '#1C1C1E' : '#fff'; + return /*#__PURE__*/React.createElement("div", null, header && /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: '-apple-system, system-ui', + fontSize: 13, + color: hc, + textTransform: 'uppercase', + padding: '8px 36px 6px', + letterSpacing: -0.08 + } + }, header), /*#__PURE__*/React.createElement("div", { + style: { + background: bg, + borderRadius: 26, + margin: '0 16px', + overflow: 'hidden' + } + }, children)); +} + +// ───────────────────────────────────────────────────────────── +// Device frame +// ───────────────────────────────────────────────────────────── +function IOSDevice({ + children, + width = 402, + height = 874, + dark = false, + title, + keyboard = false +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + width, + height, + borderRadius: 48, + overflow: 'hidden', + position: 'relative', + background: dark ? '#000' : '#F2F2F7', + boxShadow: '0 40px 80px rgba(0,0,0,0.18), 0 0 0 1px rgba(0,0,0,0.12)', + fontFamily: '-apple-system, system-ui, sans-serif', + WebkitFontSmoothing: 'antialiased' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + top: 11, + left: '50%', + transform: 'translateX(-50%)', + width: 126, + height: 37, + borderRadius: 24, + background: '#000', + zIndex: 50 + } + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + top: 0, + left: 0, + right: 0, + zIndex: 10 + } + }, /*#__PURE__*/React.createElement(IOSStatusBar, { + dark: dark + })), /*#__PURE__*/React.createElement("div", { + style: { + height: '100%', + display: 'flex', + flexDirection: 'column' + } + }, title !== undefined && /*#__PURE__*/React.createElement(IOSNavBar, { + title: title, + dark: dark + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + overflow: 'auto' + } + }, children), keyboard && /*#__PURE__*/React.createElement(IOSKeyboard, { + dark: dark + })), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + bottom: 0, + left: 0, + right: 0, + zIndex: 60, + height: 34, + display: 'flex', + justifyContent: 'center', + alignItems: 'flex-end', + paddingBottom: 8, + pointerEvents: 'none' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 139, + height: 5, + borderRadius: 100, + background: dark ? 'rgba(255,255,255,0.7)' : 'rgba(0,0,0,0.25)' + } + }))); +} + +// ───────────────────────────────────────────────────────────── +// Keyboard — iOS 26 liquid glass +// ───────────────────────────────────────────────────────────── +function IOSKeyboard({ + dark = false +}) { + const glyph = dark ? 'rgba(255,255,255,0.7)' : '#595959'; + const sugg = dark ? 'rgba(255,255,255,0.6)' : '#333'; + const keyBg = dark ? 'rgba(255,255,255,0.22)' : 'rgba(255,255,255,0.85)'; + + // special-key icons + const icons = { + shift: /*#__PURE__*/React.createElement("svg", { + width: "19", + height: "17", + viewBox: "0 0 19 17" + }, /*#__PURE__*/React.createElement("path", { + d: "M9.5 1L1 9.5h4.5V16h8V9.5H18L9.5 1z", + fill: glyph + })), + del: /*#__PURE__*/React.createElement("svg", { + width: "23", + height: "17", + viewBox: "0 0 23 17" + }, /*#__PURE__*/React.createElement("path", { + d: "M7 1h13a2 2 0 012 2v11a2 2 0 01-2 2H7l-6-7.5L7 1z", + fill: "none", + stroke: glyph, + strokeWidth: "1.6", + strokeLinejoin: "round" + }), /*#__PURE__*/React.createElement("path", { + d: "M10 5l7 7M17 5l-7 7", + stroke: glyph, + strokeWidth: "1.6", + strokeLinecap: "round" + })), + ret: /*#__PURE__*/React.createElement("svg", { + width: "20", + height: "14", + viewBox: "0 0 20 14" + }, /*#__PURE__*/React.createElement("path", { + d: "M18 1v6H4m0 0l4-4M4 7l4 4", + fill: "none", + stroke: "#fff", + strokeWidth: "1.8", + strokeLinecap: "round", + strokeLinejoin: "round" + })) + }; + const key = (content, { + w, + flex, + ret, + fs = 25, + k + } = {}) => /*#__PURE__*/React.createElement("div", { + key: k, + style: { + height: 42, + borderRadius: 8.5, + flex: flex ? 1 : undefined, + width: w, + minWidth: 0, + background: ret ? '#08f' : keyBg, + boxShadow: '0 1px 0 rgba(0,0,0,0.075)', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + fontFamily: '-apple-system, "SF Compact", system-ui', + fontSize: fs, + fontWeight: 458, + color: ret ? '#fff' : glyph + } + }, content); + const row = (keys, pad = 0) => /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 6.5, + justifyContent: 'center', + padding: `0 ${pad}px` + } + }, keys.map(l => key(l, { + flex: true, + k: l + }))); + return /*#__PURE__*/React.createElement("div", { + style: { + position: 'relative', + zIndex: 15, + borderRadius: 27, + overflow: 'hidden', + padding: '11px 0 2px', + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + boxShadow: dark ? '0 -2px 20px rgba(0,0,0,0.09)' : '0 -1px 6px rgba(0,0,0,0.018), 0 -3px 20px rgba(0,0,0,0.012)' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + borderRadius: 27, + backdropFilter: 'blur(12px) saturate(180%)', + WebkitBackdropFilter: 'blur(12px) saturate(180%)', + background: dark ? 'rgba(120,120,128,0.14)' : 'rgba(255,255,255,0.25)' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + borderRadius: 27, + boxShadow: dark ? 'inset 1.5px 1.5px 1px rgba(255,255,255,0.15)' : 'inset 1.5px 1.5px 1px rgba(255,255,255,0.7), inset -1px -1px 1px rgba(255,255,255,0.4)', + border: dark ? '0.5px solid rgba(255,255,255,0.15)' : '0.5px solid rgba(0,0,0,0.06)', + pointerEvents: 'none' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 20, + alignItems: 'center', + padding: '8px 22px 13px', + width: '100%', + boxSizing: 'border-box', + position: 'relative' + } + }, ['"The"', 'the', 'to'].map((w, i) => /*#__PURE__*/React.createElement(React.Fragment, { + key: i + }, i > 0 && /*#__PURE__*/React.createElement("div", { + style: { + width: 1, + height: 25, + background: '#ccc', + opacity: 0.3 + } + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + textAlign: 'center', + fontFamily: '-apple-system, system-ui', + fontSize: 17, + color: sugg, + letterSpacing: -0.43, + lineHeight: '22px' + } + }, w)))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 13, + padding: '0 6.5px', + width: '100%', + boxSizing: 'border-box', + position: 'relative' + } + }, row(['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p']), row(['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'], 20), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 14.25, + alignItems: 'center' + } + }, key(icons.shift, { + w: 45, + k: 'shift' + }), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 6.5, + flex: 1 + } + }, ['z', 'x', 'c', 'v', 'b', 'n', 'm'].map(l => key(l, { + flex: true, + k: l + }))), key(icons.del, { + w: 45, + k: 'del' + })), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 6, + alignItems: 'center' + } + }, key('ABC', { + w: 92.25, + fs: 18, + k: 'abc' + }), key('', { + flex: true, + k: 'space' + }), key(icons.ret, { + w: 92.25, + ret: true, + k: 'ret' + }))), /*#__PURE__*/React.createElement("div", { + style: { + height: 56, + width: '100%', + position: 'relative' + } + })); +} +Object.assign(window, { + IOSDevice, + IOSStatusBar, + IOSNavBar, + IOSGlassPill, + IOSList, + IOSListRow, + IOSKeyboard +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/ios-frame.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/persist.jsx +try { (() => { +// persist.jsx — lightweight localStorage persistence for the Arah app demo. +// Survives reload: feed posts, store products, wallet, chats, and session prefs. +// Loads right after data.jsx so window.ARAH is hydrated before any screen renders. + +(function () { + const KEY = 'arah_app_v1'; + window.arahLoad = function () { + try { + return JSON.parse(localStorage.getItem(KEY)) || {}; + } catch (e) { + return {}; + } + }; + window.arahSave = function (patch) { + try { + const cur = window.arahLoad(); + localStorage.setItem(KEY, JSON.stringify(Object.assign({}, cur, patch))); + } catch (e) {/* quota / private mode — ignore */} + }; + + // Snapshot the mutable slices of window.ARAH (no functions — content/wallet/store/chats are plain) + window.arahSnapshot = function () { + const A = window.ARAH; + if (!A) return; + window.arahSave({ + data: { + content: A.content, + // per-territory feed/events (t1–t3) + myStore: A.myStore, + wallet: A.wallet, + chats: A.chats + } + }); + }; + + // Apply saved slices back onto window.ARAH + window.arahHydrate = function () { + const saved = window.arahLoad(); + const d = saved && saved.data; + if (!d || !window.ARAH) return; + if (d.content) { + // merge per-territory (keep territories that weren't saved) + Object.keys(d.content).forEach(function (k) { + window.ARAH.content[k] = d.content[k]; + }); + } + if (d.myStore) window.ARAH.myStore = d.myStore; + if (d.wallet) window.ARAH.wallet = d.wallet; + if (d.chats) window.ARAH.chats = d.chats; + }; + + // Save / read the React-session slice (prefs that live in App state) + window.arahSaveApp = function (appSlice) { + window.arahSave({ + app: appSlice + }); + }; + window.arahLoadApp = function () { + return window.arahLoad().app || {}; + }; + + // Clear everything (used by a "limpar dados" affordance / logout-reset if desired) + window.arahReset = function () { + try { + localStorage.removeItem(KEY); + } catch (e) {} + }; + + // Hydrate immediately at load (data.jsx already ran) + window.arahHydrate(); +})(); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/persist.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens1.jsx +try { (() => { +// screens1.jsx — Feed, PostCard, PostDetail (comments), Explore. + +function PostCard({ + post, + onLike, + liked, + onOpen +}) { + const isAlert = post.type === 'Alert'; + const accent = isAlert ? T.alert : T.green; + return /*#__PURE__*/React.createElement(Card, { + glow: true, + style: { + padding: 16, + marginBottom: 12, + border: post.pinned ? `1px solid rgba(232,160,106,0.28)` : `1px solid ${T.line}` + } + }, post.pinned && /*#__PURE__*/React.createElement("div", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 5, + marginBottom: 11, + color: T.alert, + fontFamily: T.sans, + fontSize: 11.5, + fontWeight: 600, + letterSpacing: 0.2 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "push_pin", + size: 14, + fill: 1 + }), " Fixado pelo conselho"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 11, + marginBottom: 13 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: post.avatar, + name: post.author, + size: 42, + resident: post.role === 'morador' + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 7 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg, + letterSpacing: -0.2 + } + }, post.author), /*#__PURE__*/React.createElement(RoleBadge, { + role: post.role + })), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6, + color: T.fg3, + fontFamily: T.sans, + fontSize: 12.5, + marginTop: 1 + } + }, /*#__PURE__*/React.createElement("span", null, "@", post.handle), /*#__PURE__*/React.createElement("span", { + style: { + opacity: 0.5 + } + }, "\xB7"), /*#__PURE__*/React.createElement("span", null, post.time), post.visibility === 'ResidentsOnly' && /*#__PURE__*/React.createElement("span", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 3, + color: T.green + } + }, /*#__PURE__*/React.createElement("span", { + style: { + opacity: 0.5, + color: T.fg3 + } + }, "\xB7"), /*#__PURE__*/React.createElement(Icon, { + name: "lock", + size: 12 + }), " s\xF3 moradores"))), isAlert && /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 5, + padding: '5px 10px', + borderRadius: 999, + background: T.alertDim, + color: T.alert, + fontFamily: T.sans, + fontSize: 11.5, + fontWeight: 600 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "warning", + size: 14, + fill: 1 + }), " Alerta")), /*#__PURE__*/React.createElement("div", { + onClick: onOpen, + style: { + cursor: 'pointer' + } + }, /*#__PURE__*/React.createElement("h3", { + style: { + margin: '0 0 6px', + fontFamily: T.display, + fontWeight: 600, + fontSize: 17, + color: T.fg, + lineHeight: 1.3, + letterSpacing: -0.3 + } + }, post.title), /*#__PURE__*/React.createElement("p", { + style: { + margin: 0, + fontFamily: T.sans, + fontSize: 14.5, + lineHeight: 1.55, + color: T.fg2, + textWrap: 'pretty' + } + }, post.body), post.photo && /*#__PURE__*/React.createElement("div", { + style: { + marginTop: 13, + borderRadius: 14, + overflow: 'hidden', + border: `1px solid ${T.line}`, + position: 'relative' + } + }, /*#__PURE__*/React.createElement("img", { + src: post.photo, + alt: "", + style: { + width: '100%', + height: 168, + objectFit: 'cover', + display: 'block' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + background: 'linear-gradient(to top, rgba(11,12,10,0.35), transparent 50%)' + } + }))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 22, + marginTop: 14 + } + }, /*#__PURE__*/React.createElement("button", { + onClick: onLike, + style: postAction(liked ? accent : T.fg3) + }, /*#__PURE__*/React.createElement(Icon, { + name: "favorite", + size: 19, + fill: liked ? 1 : 0, + color: liked ? accent : T.fg3 + }), post.likes + (liked ? 1 : 0)), /*#__PURE__*/React.createElement("button", { + onClick: onOpen, + style: postAction(T.fg3) + }, /*#__PURE__*/React.createElement(Icon, { + name: "mode_comment", + size: 18 + }), " ", post.comments), /*#__PURE__*/React.createElement("button", { + style: postAction(T.fg3) + }, /*#__PURE__*/React.createElement(Icon, { + name: "ios_share", + size: 18 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }), /*#__PURE__*/React.createElement("button", { + style: { + ...postAction(T.fg3), + gap: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "bookmark_border", + size: 19 + })))); +} +const postAction = color => ({ + display: 'inline-flex', + alignItems: 'center', + gap: 6, + background: 'none', + border: 'none', + cursor: 'pointer', + color, + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 500, + WebkitTapHighlightColor: 'transparent', + padding: 0 +}); +function FeedScreen({ + territory, + content, + likes, + onLike, + onOpen, + role +}) { + const [filter, setFilter] = React.useState('Tudo'); + const filters = ['Tudo', 'Avisos', 'Vizinhança']; + let posts = content.feed; + if (filter === 'Avisos') posts = posts.filter(p => p.type === 'Alert'); + if (filter === 'Vizinhança') posts = posts.filter(p => p.visibility !== 'ResidentsOnly'); + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", { + style: { + padding: '2px 18px 12px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 8, + overflowX: 'auto', + paddingBottom: 2 + }, + className: "noscroll" + }, filters.map(f => /*#__PURE__*/React.createElement(Chip, { + key: f, + active: filter === f, + onClick: () => setFilter(f) + }, f)))), role === 'visitante' && /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 12px' + } + }, /*#__PURE__*/React.createElement(Card, { + onClick: () => window.openJourney('residencia'), + style: { + padding: 14, + display: 'flex', + alignItems: 'center', + gap: 12, + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 38, + height: 38, + borderRadius: 11, + background: T.greenDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "cottage", + size: 20, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 600, + color: T.fg + } + }, "Voc\xEA \xE9 visitante de ", territory.name), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 1 + } + }, "Confirme resid\xEAncia para ver posts e votar.")), /*#__PURE__*/React.createElement(Icon, { + name: "chevron_right", + size: 20, + color: T.fg3 + }))), /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 8px' + } + }, posts.map(p => /*#__PURE__*/React.createElement(PostCard, { + key: p.id, + post: p, + liked: !!likes[p.id], + onLike: () => onLike(p.id), + onOpen: () => onOpen(p.id) + })), /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center', + color: T.fg3, + fontFamily: T.sans, + fontSize: 12.5, + padding: '14px 0 4px', + letterSpacing: 0.2 + } + }, "Voc\xEA viu tudo de ", territory.name, " \xB7 ", territory.members.toLocaleString('pt-BR'), " moradores"))); +} + +// Post detail with comments + composer +function PostDetailScreen({ + postId, + likes, + onLike +}) { + const allPosts = Object.values(window.ARAH.content).flatMap(c => c.feed); + const post = allPosts.find(p => p.id === postId) || window.ARAH.content.t1.feed[0]; + const [comments, setComments] = React.useState(window.ARAH.comments[postId] || []); + const [draft, setDraft] = React.useState(''); + const send = () => { + if (!draft.trim()) return; + setComments(c => [...c, { + id: 'cx' + Date.now(), + author: 'Ana Ribeiro', + avatar: '#4F956F', + role: 'visitante', + time: 'agora', + body: draft.trim() + }]); + setDraft(''); + }; + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + height: '100%' + } + }, /*#__PURE__*/React.createElement("div", { + className: "appscroll", + style: { + flex: 1, + overflowY: 'auto', + padding: '0 18px 12px' + } + }, /*#__PURE__*/React.createElement(PostCard, { + post: post, + liked: !!likes[postId], + onLike: () => onLike(postId), + onOpen: () => {} + }), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + fontWeight: 600, + letterSpacing: 0.6, + textTransform: 'uppercase', + color: T.fg3, + margin: '4px 2px 12px' + } + }, comments.length, " coment\xE1rios"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 14 + } + }, comments.map(c => /*#__PURE__*/React.createElement("div", { + key: c.id, + style: { + display: 'flex', + gap: 11 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: c.avatar, + name: c.author, + size: 34, + resident: c.role === 'morador' + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 7 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 13.5, + color: T.fg + } + }, c.author), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3 + } + }, c.time)), /*#__PURE__*/React.createElement("p", { + style: { + margin: '3px 0 0', + fontFamily: T.sans, + fontSize: 14, + lineHeight: 1.5, + color: T.fg2 + } + }, c.body)))))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 9, + padding: '12px 16px 16px', + borderTop: `1px solid ${T.line}`, + background: T.bg2 + } + }, /*#__PURE__*/React.createElement("input", { + value: draft, + onChange: e => setDraft(e.target.value), + onKeyDown: e => e.key === 'Enter' && send(), + placeholder: "Comentar como visitante\u2026", + style: { + flex: 1, + background: T.cardFlat, + color: T.fg, + border: `1px solid ${T.line}`, + borderRadius: 999, + padding: '11px 16px', + fontFamily: T.sans, + fontSize: 14, + outline: 'none' + } + }), /*#__PURE__*/React.createElement("button", { + onClick: send, + style: { + width: 42, + height: 42, + borderRadius: '50%', + border: 'none', + background: T.greenGrad, + cursor: 'pointer', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + boxShadow: T.greenGlow, + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "send", + size: 19, + color: "#0C1B10", + fill: 1 + })))); +} +function ExploreScreen({ + territory, + activeId, + onEnter, + onMap, + onTool, + role +}) { + const list = window.ARAH.territories; + const content = window.ARAH.getContent(activeId); + const tools = [{ + id: 'map', + icon: 'map', + label: 'Mapa', + color: T.green + }, { + id: 'events', + icon: 'event', + label: 'Eventos', + color: T.blue + }, { + id: 'health', + icon: 'eco', + label: 'Saúde do território', + color: T.green + }, { + id: 'elections', + icon: 'how_to_vote', + label: 'Eleições', + color: T.alert, + badge: 'Novo' + }, ...(role === 'curador' ? [{ + id: 'manage', + icon: 'shield_person', + label: 'Gestão', + color: T.alert, + badge: 'Curador' + }] : [])]; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 12px' + } + }, /*#__PURE__*/React.createElement(Card, { + onClick: onMap, + hi: true, + style: { + padding: 0, + overflow: 'hidden', + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + position: 'relative', + height: 116 + } + }, /*#__PURE__*/React.createElement(MapCanvas, { + height: 116, + mini: true, + tile: content.tile + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + display: 'flex', + alignItems: 'center', + gap: 11, + padding: 16, + background: 'linear-gradient(to right, rgba(11,12,10,0.85), rgba(11,12,10,0.2))' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 42, + height: 42, + borderRadius: 12, + background: T.greenDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "map", + size: 22, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg + } + }, "Mapa do territ\xF3rio"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2 + } + }, "Lugares, trilhas, nascentes e mirantes")), /*#__PURE__*/React.createElement(Icon, { + name: "arrow_forward", + size: 20, + color: T.fg2 + })))), /*#__PURE__*/React.createElement(SectionLabel, { + icon: "apps" + }, "Ferramentas de ", territory.name), /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gap: 10, + marginTop: 11, + marginBottom: 20 + } + }, tools.map(t => /*#__PURE__*/React.createElement(Card, { + key: t.id, + onClick: () => onTool(t.id), + style: { + display: 'flex', + alignItems: 'center', + gap: 11, + padding: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 38, + height: 38, + borderRadius: 11, + background: `${t.color}1f`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: t.icon, + size: 20, + color: t.color, + fill: 1 + })), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 500, + color: T.fg, + lineHeight: 1.2 + } + }, t.label), t.badge && /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 9.5, + fontWeight: 700, + color: t.color, + background: `${t.color}1f`, + padding: '2px 6px', + borderRadius: 999, + letterSpacing: 0.3 + } + }, t.badge)))), /*#__PURE__*/React.createElement(SectionLabel, { + icon: "travel_explore" + }, "Trocar de territ\xF3rio"), /*#__PURE__*/React.createElement("p", { + style: { + margin: '11px 0 12px', + fontFamily: T.sans, + fontSize: 13.5, + color: T.fg2 + } + }, "Toque em um territ\xF3rio para ver o feed da regi\xE3o ou trocar de comunidade."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 10 + } + }, list.map(t => { + const on = t.id === activeId; + return /*#__PURE__*/React.createElement(Card, { + key: t.id, + onClick: () => onEnter(t.id), + hi: on, + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: 14, + border: `1px solid ${on ? 'rgba(166,214,185,0.32)' : T.line}` + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 46, + height: 46, + borderRadius: 14, + flexShrink: 0, + background: on ? T.greenGrad : T.cardHi, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: on ? 'location_on' : 'forest', + size: 24, + color: on ? '#0C1B10' : T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg, + letterSpacing: -0.2 + } + }, t.name), on && /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 10.5, + fontWeight: 600, + color: T.green, + background: 'rgba(166,214,185,0.15)', + padding: '2px 8px', + borderRadius: 999 + } + }, "ATIVO")), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3, + marginTop: 2 + } + }, t.region, " \xB7 ", t.distance, " km"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg2, + marginTop: 5 + } + }, t.desc)), /*#__PURE__*/React.createElement(Icon, { + name: on ? 'check_circle' : 'chevron_right', + size: on ? 22 : 20, + color: on ? T.green : T.fg3, + fill: on ? 1 : 0 + })); + }))); +} +Object.assign(window, { + PostCard, + FeedScreen, + PostDetailScreen, + ExploreScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens1.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens10.jsx +try { (() => { +// screens10.jsx — Trocas, Entregas, Carteira / Moeda Territorial. + +function TradesScreen() { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 20" + }, "Trocas comunit\xE1rias \u2014 escambo e doa\xE7\xF5es sem dinheiro. Vis\xE3o de produto."), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "md", + icon: "add", + style: { + marginBottom: 14 + }, + onClick: () => window.openJourney('create', window.JOURNEY_PRESETS.troca) + }, "Propor uma troca"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 10 + } + }, window.ARAH.trades.map(t => /*#__PURE__*/React.createElement(Card, { + key: t.id, + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 44, + height: 44, + borderRadius: 12, + background: T.greenDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: t.icon, + size: 22, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14.5, + color: T.fg, + letterSpacing: -0.2 + } + }, t.title), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6, + marginTop: 5 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: t.avatar, + name: t.who, + size: 18 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, t.who), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 11, + color: T.green, + background: T.greenDim, + padding: '2px 8px', + borderRadius: 999 + } + }, "quer: ", t.want))), /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + size: "sm", + icon: "swap_horiz", + onClick: () => window.openJourney('create', window.JOURNEY_PRESETS.troca) + }, "Propor"))))); +} +function DeliveryScreen() { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 21" + }, "Entregas territoriais \u2014 log\xEDstica local entre vizinhos. Vis\xE3o de produto."), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "md", + icon: "add", + style: { + marginBottom: 14 + }, + onClick: () => window.openJourney('deliveryReq') + }, "Solicitar entrega"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 0, + overflow: 'hidden', + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + position: 'relative', + height: 150 + } + }, /*#__PURE__*/React.createElement(MapCanvas, { + height: 150, + mini: true, + tile: window.ARAH.content.t1.tile + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + left: '34%', + top: '52%', + transform: 'translate(-50%,-50%)' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 30, + height: 30, + borderRadius: '50%', + background: T.green, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + boxShadow: T.greenGlow + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "two_wheeler", + size: 17, + color: "#0C1B10", + fill: 1 + }))))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 10 + } + }, window.ARAH.deliveries.map(d => { + const done = d.status === 'entregue'; + return /*#__PURE__*/React.createElement(Card, { + key: d.id, + style: { + padding: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 11 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 42, + height: 42, + borderRadius: 12, + background: done ? T.greenDim : T.blueDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: d.icon, + size: 21, + color: done ? T.green : T.blue, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14, + color: T.fg + } + }, d.from, " \u2192 ", d.to), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 2 + } + }, "Entregador: ", d.courier)), /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'right', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4, + fontFamily: T.sans, + fontSize: 11.5, + fontWeight: 600, + color: done ? T.green : T.blue, + background: done ? T.greenDim : T.blueDim, + padding: '4px 10px', + borderRadius: 999 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: done ? 'check' : 'schedule', + size: 13, + fill: 1 + }), " ", d.status), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11, + color: T.fg3, + marginTop: 4 + } + }, d.eta)))); + }))); +} +function WalletScreen() { + const w = window.ARAH.wallet; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 22" + }, "Moeda territorial \u2014 cr\xE9ditos que circulam dentro da comunidade. Vis\xE3o de produto."), /*#__PURE__*/React.createElement(Card, { + glow: true, + style: { + padding: 20, + marginBottom: 16, + background: 'linear-gradient(155deg, #1E3A2A, #14241A)', + border: '1px solid rgba(166,214,185,0.2)' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8, + marginBottom: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 30, + height: 30, + borderRadius: 9, + background: T.greenSolid, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + fontFamily: T.display, + fontWeight: 700, + fontSize: 16, + color: '#0C1B10' + } + }, w.symbol), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.green, + fontWeight: 600 + } + }, w.name, " \xB7 moeda de Camburi")), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 38, + color: '#fff', + letterSpacing: -1 + } + }, w.balance), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: 'rgba(255,255,255,0.6)', + marginTop: 2 + } + }, "\u2248 ", w.brl), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 9, + marginTop: 18 + } + }, /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + size: "sm", + icon: "north_east", + style: { + flex: 1, + background: T.greenSolid, + color: '#0C1B10' + }, + onClick: () => window.openJourney('walletSend') + }, "Enviar"), /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + size: "sm", + icon: "south_west", + style: { + flex: 1, + color: '#fff', + borderColor: 'rgba(255,255,255,0.18)' + }, + onClick: () => window.openJourney('walletReceive') + }, "Receber"), /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + size: "sm", + icon: "add", + style: { + flex: 1, + color: '#fff', + borderColor: 'rgba(255,255,255,0.18)' + }, + onClick: () => window.openJourney('walletTopup') + }, "Adicionar"))), /*#__PURE__*/React.createElement(SubHead, { + icon: "receipt_long" + }, "Movimenta\xE7\xF5es"), /*#__PURE__*/React.createElement(Card, { + style: { + overflow: 'hidden' + } + }, w.transactions.map((tx, i) => /*#__PURE__*/React.createElement("div", { + key: tx.id, + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: '13px 15px', + borderBottom: i === w.transactions.length - 1 ? 'none' : `1px solid ${T.line}` + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 38, + height: 38, + borderRadius: 11, + background: T.cardHi, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: tx.icon, + size: 19, + color: tx.neg ? T.fg2 : T.green, + fill: tx.neg ? 0 : 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 14, + fontWeight: 500, + color: T.fg + } + }, tx.label), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 1 + } + }, tx.sub)), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 14.5, + color: tx.neg ? T.fg2 : T.green + } + }, tx.val))))); +} +Object.assign(window, { + TradesScreen, + DeliveryScreen, + WalletScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens10.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens11.jsx +try { (() => { +// screens11.jsx — Serviços pessoais: Babás, Bem-estar (espaços + prestadores). + +function SittersScreen() { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "\xC9pico 10" + }, "Bab\xE1s verificadas do territ\xF3rio \u2014 confian\xE7a entre vizinhos. Vis\xE3o de produto."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 12 + } + }, window.ARAH.sitters.map(s => /*#__PURE__*/React.createElement(Card, { + key: s.id, + glow: true, + style: { + padding: 15 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 13 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: s.avatar, + name: s.name, + size: 56, + resident: s.verified + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg, + letterSpacing: -0.2 + } + }, s.name), s.verified && /*#__PURE__*/React.createElement(Icon, { + name: "verified", + size: 15, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 9, + marginTop: 3, + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 3, + color: T.fg2 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "star", + size: 14, + color: "#F5C451", + fill: 1 + }), s.rating, " ", /*#__PURE__*/React.createElement("span", { + style: { + color: T.fg3 + } + }, "(", s.reviews, ")")), /*#__PURE__*/React.createElement("span", null, "\xB7 ", s.exp), /*#__PURE__*/React.createElement("span", null, "\xB7 ", s.dist)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexWrap: 'wrap', + gap: 6, + marginTop: 9 + } + }, s.badges.map(b => /*#__PURE__*/React.createElement("span", { + key: b, + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4, + fontFamily: T.sans, + fontSize: 11, + color: T.green, + background: T.greenDim, + padding: '3px 9px', + borderRadius: 999 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "check", + size: 12 + }), b)), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 11, + color: T.fg2, + background: T.cardHi, + padding: '3px 9px', + borderRadius: 999 + } + }, s.ages)))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + marginTop: 14, + paddingTop: 13, + borderTop: `1px solid ${T.line}` + } + }, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("strong", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 17, + color: T.fg + } + }, s.price)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 9 + } + }, /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + size: "sm", + icon: "chat", + onClick: () => window.appNav.openChat(s.name, s.avatar) + }, "Conversar"), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + size: "sm", + icon: "event_available", + onClick: () => window.openJourney('sitter', s) + }, "Solicitar"))))))); +} +function WellnessScreen() { + const [tab, setTab] = React.useState('espacos'); + const w = window.ARAH.wellness; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "\xC9pico 10" + }, "Bem-estar local \u2014 espa\xE7os e profissionais com agenda compartilhada. Vis\xE3o de produto."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 8, + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(SegTab, { + active: tab === 'espacos', + onClick: () => setTab('espacos'), + icon: "spa" + }, "Espa\xE7os"), /*#__PURE__*/React.createElement(SegTab, { + active: tab === 'prestadores', + onClick: () => setTab('prestadores'), + icon: "self_improvement" + }, "Profissionais")), tab === 'espacos' ? /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 12 + } + }, w.spaces.map(s => /*#__PURE__*/React.createElement(Card, { + key: s.id, + glow: true, + style: { + padding: 0, + overflow: 'hidden' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + height: 104, + background: `linear-gradient(150deg, ${s.avatar}40, ${s.avatar}12)`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: s.icon, + size: 44, + color: T.fg, + fill: 0, + style: { + opacity: 0.85 + } + })), /*#__PURE__*/React.createElement("div", { + style: { + padding: 15 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg, + letterSpacing: -0.2 + } + }, s.name), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3, + marginTop: 2 + } + }, s.type, " \xB7 ", s.cap), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + marginTop: 13 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 5, + fontFamily: T.sans, + fontSize: 12.5, + color: T.green + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "event_available", + size: 15, + fill: 1 + }), " ", s.slots), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + size: "sm", + icon: "calendar_month", + onClick: () => window.openJourney('wellness', s) + }, "Ver agenda")))))) : /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 11 + } + }, w.providers.map(p => /*#__PURE__*/React.createElement(Card, { + key: p.id, + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: 14 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: p.avatar, + name: p.name, + size: 48, + resident: p.verified + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg + } + }, p.name), p.verified && /*#__PURE__*/React.createElement(Icon, { + name: "verified", + size: 14, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3, + marginTop: 2 + } + }, p.spec), /*#__PURE__*/React.createElement("div", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4, + marginTop: 5, + fontFamily: T.sans, + fontSize: 12, + color: T.fg2 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "star", + size: 13, + color: "#F5C451", + fill: 1 + }), " ", p.rating, " \xB7 a partir de ", /*#__PURE__*/React.createElement("strong", { + style: { + color: T.fg, + fontWeight: 600 + } + }, p.price))), /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + size: "sm", + icon: "calendar_month", + style: { + flexShrink: 0 + }, + onClick: () => window.openJourney('wellness', p) + }, "Agendar"))))); +} +Object.assign(window, { + SittersScreen, + WellnessScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens11.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens12.jsx +try { (() => { +// screens12.jsx — Painel de métricas, Banco de sementes, Learning Hub. + +function MetricsScreen({ + territory +}) { + const m = window.ARAH.metrics; + const max = Math.max(...m.bars.map(b => b.v)); + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 25" + }, "Painel de m\xE9tricas \u2014 o pulso vivo do territ\xF3rio. Vis\xE3o de produto."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gap: 10, + marginBottom: 14 + } + }, [['Engajamento', m.engagement + '%', 'trending_up', T.green], ['Posts no mês', m.posts, 'article', T.blue], ['Eventos', m.events, 'event', T.amber || '#E8A06A'], ['Novos membros', '+' + m.newMembers, 'group_add', T.green]].map(([k, v, ic, c]) => /*#__PURE__*/React.createElement(Card, { + key: k, + style: { + padding: 15 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: ic, + size: 20, + color: c, + fill: 1 + }), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 24, + color: T.fg, + marginTop: 8, + letterSpacing: -0.5 + } + }, v), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginTop: 1 + } + }, k)))), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 16 + } + }, /*#__PURE__*/React.createElement(SubHead, { + icon: "bar_chart" + }, "Atividade na semana"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'flex-end', + gap: 8, + height: 130, + marginTop: 4 + } + }, m.bars.map(b => /*#__PURE__*/React.createElement("div", { + key: b.label, + style: { + flex: 1, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + gap: 6 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: '100%', + height: `${b.v / max * 100}%`, + minHeight: 6, + borderRadius: '7px 7px 3px 3px', + background: T.greenGrad + } + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 10.5, + color: T.fg3 + } + }, b.label)))))); +} +function SeedsScreen() { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 48" + }, "Banco de sementes e mudas \u2014 regenerar o territ\xF3rio, juntos. Vis\xE3o de produto."), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 16, + marginBottom: 16, + display: 'flex', + alignItems: 'center', + gap: 13, + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 46, + height: 46, + borderRadius: 13, + background: T.greenDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "forest", + size: 24, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 18, + color: T.fg + } + }, "43 esp\xE9cies"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3 + } + }, "dispon\xEDveis para troca em Camburi")), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + size: "sm", + icon: "add", + onClick: () => window.openJourney('create', window.JOURNEY_PRESETS.semente) + }, "Doar")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gap: 11 + } + }, window.ARAH.seeds.map(s => /*#__PURE__*/React.createElement(Card, { + key: s.id, + style: { + padding: 15 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 42, + height: 42, + borderRadius: 12, + background: T.greenDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + marginBottom: 11 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: s.icon, + size: 22, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg + } + }, s.name), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginTop: 2 + } + }, s.qty), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6, + marginTop: 9 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 10.5, + color: T.green, + background: T.greenDim, + padding: '2px 8px', + borderRadius: 999 + } + }, s.tag)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6, + marginTop: 10, + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: "#4F956F", + name: s.who, + size: 16 + }), " ", s.who))))); +} +function LearningScreen() { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 45" + }, "Aprendizado \u2014 saberes e of\xEDcios que vivem no territ\xF3rio. Vis\xE3o de produto."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 12 + } + }, window.ARAH.courses.map(c => /*#__PURE__*/React.createElement(Card, { + key: c.id, + glow: true, + onClick: () => window.openJourney('course', c), + style: { + padding: 0, + overflow: 'hidden' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 92, + flexShrink: 0, + background: `linear-gradient(150deg, ${c.avatar}40, ${c.avatar}12)`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: c.icon, + size: 34, + color: T.fg, + fill: 0, + style: { + opacity: 0.85 + } + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0, + padding: 15 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 10, + fontWeight: 700, + letterSpacing: 0.6, + textTransform: 'uppercase', + color: T.green + } + }, c.tag), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15.5, + color: T.fg, + marginTop: 3, + letterSpacing: -0.2, + lineHeight: 1.25 + } + }, c.title), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8, + marginTop: 8, + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "play_lesson", + size: 14 + }), " ", c.lessons, " aulas"), /*#__PURE__*/React.createElement("span", null, "\xB7 ", c.level)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6, + marginTop: 9 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: c.avatar, + name: c.teacher, + size: 18, + resident: true + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg2 + } + }, c.teacher)))))))); +} +Object.assign(window, { + MetricsScreen, + SeedsScreen, + LearningScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens12.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens13.jsx +try { (() => { +// screens13.jsx — Assistente IA, Conquistas/Gamificação, Assinaturas. + +function AIScreen({ + territory +}) { + const [msgs, setMsgs] = React.useState([{ + me: false, + body: `Oi! Sou o assistente de ${territory.name}. Posso te ajudar a navegar o território, encontrar serviços e resumir o que está acontecendo. O que você precisa?` + }]); + const [draft, setDraft] = React.useState(''); + const scrollRef = React.useRef(null); + const ask = text => { + const q = (text || draft).trim(); + if (!q) return; + setMsgs(m => [...m, { + me: true, + body: q + }]); + setDraft(''); + setTimeout(() => { + setMsgs(m => [...m, { + me: false, + body: 'Aqui está o que encontrei no território — em breve, com respostas reais conectadas aos dados de Camburi. 🌿', + typing: false + }]); + }, 600); + }; + React.useEffect(() => { + if (scrollRef.current) scrollRef.current.scrollTop = scrollRef.current.scrollHeight; + }, [msgs]); + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + height: '100%' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 27" + }, "Assistente IA do territ\xF3rio \u2014 vis\xE3o de produto.")), /*#__PURE__*/React.createElement("div", { + ref: scrollRef, + className: "appscroll", + style: { + flex: 1, + overflowY: 'auto', + padding: '0 16px 12px', + display: 'flex', + flexDirection: 'column', + gap: 11 + } + }, msgs.map((m, i) => /*#__PURE__*/React.createElement("div", { + key: i, + style: { + alignSelf: m.me ? 'flex-end' : 'flex-start', + maxWidth: '84%', + display: 'flex', + gap: 9, + flexDirection: m.me ? 'row-reverse' : 'row' + } + }, !m.me && /*#__PURE__*/React.createElement("div", { + style: { + width: 32, + height: 32, + borderRadius: 10, + background: T.greenGrad, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "auto_awesome", + size: 17, + color: "#0C1B10", + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + padding: '11px 14px', + borderRadius: m.me ? '16px 16px 4px 16px' : '16px 16px 16px 4px', + background: m.me ? T.greenGrad : T.cardGrad, + color: m.me ? '#0C1B10' : T.fg, + border: m.me ? 'none' : `1px solid ${T.line}`, + fontFamily: T.sans, + fontSize: 14.5, + lineHeight: 1.5 + } + }, m.body))), msgs.length <= 1 && /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexWrap: 'wrap', + gap: 8, + marginTop: 6 + } + }, window.ARAH.aiPrompts.map(p => /*#__PURE__*/React.createElement("button", { + key: p, + onClick: () => ask(p), + style: { + textAlign: 'left', + padding: '9px 13px', + borderRadius: 13, + cursor: 'pointer', + background: T.cardFlat, + border: `1px solid ${T.line}`, + color: T.fg2, + fontFamily: T.sans, + fontSize: 13, + WebkitTapHighlightColor: 'transparent' + } + }, p)))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 9, + padding: '12px 16px 16px', + borderTop: `1px solid ${T.line}`, + background: T.bg2 + } + }, /*#__PURE__*/React.createElement("input", { + value: draft, + onChange: e => setDraft(e.target.value), + onKeyDown: e => e.key === 'Enter' && ask(), + placeholder: "Pergunte sobre o territ\xF3rio\u2026", + style: { + flex: 1, + background: T.cardFlat, + color: T.fg, + border: `1px solid ${T.line}`, + borderRadius: 999, + padding: '11px 16px', + fontFamily: T.sans, + fontSize: 14, + outline: 'none' + } + }), /*#__PURE__*/React.createElement("button", { + onClick: () => ask(), + style: { + width: 42, + height: 42, + borderRadius: '50%', + border: 'none', + background: T.greenGrad, + cursor: 'pointer', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + boxShadow: T.greenGlow, + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "arrow_upward", + size: 20, + color: "#0C1B10", + fill: 1 + })))); +} +function AchievementsScreen() { + const list = window.ARAH.achievements; + const got = list.filter(a => a.got).length; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 42" + }, "Conquistas \u2014 reconhecimento do cuidado com o territ\xF3rio. Vis\xE3o de produto."), /*#__PURE__*/React.createElement(Card, { + glow: true, + style: { + padding: 18, + marginBottom: 16, + textAlign: 'center', + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 60, + height: 60, + borderRadius: 18, + background: T.greenDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + margin: '0 auto 12px' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "workspace_premium", + size: 32, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 20, + color: T.fg + } + }, got, " de ", list.length, " conquistas"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg3, + marginTop: 3 + } + }, "Guardi\xE3 ativa de Camburi")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gap: 11 + } + }, list.map(a => /*#__PURE__*/React.createElement(Card, { + key: a.id, + style: { + padding: 15, + textAlign: 'center', + opacity: a.got ? 1 : 0.72 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 48, + height: 48, + borderRadius: 14, + background: a.got ? T.greenDim : T.cardHi, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + margin: '0 auto 11px', + position: 'relative' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: a.icon, + size: 24, + color: a.got ? T.green : T.fg3, + fill: a.got ? 1 : 0 + }), a.got && /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + bottom: -3, + right: -3, + width: 20, + height: 20, + borderRadius: '50%', + background: T.greenSolid, + border: `2px solid ${T.cardFlat}`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "check", + size: 12, + color: "#0C1B10" + }))), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 13.5, + color: T.fg, + lineHeight: 1.2 + } + }, a.label), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginTop: 3 + } + }, a.sub), !a.got && a.progress > 0 && /*#__PURE__*/React.createElement("div", { + style: { + height: 5, + borderRadius: 999, + background: T.cardHi, + overflow: 'hidden', + marginTop: 9 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: `${a.progress}%`, + height: '100%', + borderRadius: 999, + background: T.greenGrad + } + })))))); +} +function SubscriptionsScreen() { + const [sel, setSel] = React.useState('sub2'); + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 15" + }, "Assinaturas \u2014 sustente o territ\xF3rio que te sustenta. Vis\xE3o de produto."), /*#__PURE__*/React.createElement("p", { + style: { + margin: '0 0 16px', + fontFamily: T.sans, + fontSize: 14, + lineHeight: 1.5, + color: T.fg2 + } + }, "Apoio recorrente que mant\xE9m a infraestrutura comunit\xE1ria viva e independente."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 12 + } + }, window.ARAH.subscriptionTiers.map(t => { + const on = sel === t.id; + return /*#__PURE__*/React.createElement(Card, { + key: t.id, + onClick: () => setSel(t.id), + glow: on, + style: { + padding: 18, + position: 'relative', + border: `1.5px solid ${on ? T.green : T.line}` + } + }, t.popular && /*#__PURE__*/React.createElement("span", { + style: { + position: 'absolute', + top: -10, + right: 16, + fontFamily: T.sans, + fontSize: 10.5, + fontWeight: 700, + letterSpacing: 0.4, + color: '#0C1B10', + background: T.greenSolid, + padding: '4px 11px', + borderRadius: 999 + } + }, "MAIS ESCOLHIDO"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'baseline', + gap: 8 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 18, + color: T.fg + } + }, t.name), /*#__PURE__*/React.createElement("span", { + style: { + marginLeft: 'auto', + fontFamily: T.display, + fontWeight: 700, + fontSize: 22, + color: on ? T.green : T.fg + } + }, t.price), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg3 + } + }, t.period)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 8, + marginTop: 13 + } + }, t.perks.map(p => /*#__PURE__*/React.createElement("div", { + key: p, + style: { + display: 'flex', + alignItems: 'center', + gap: 9, + fontFamily: T.sans, + fontSize: 13.5, + color: T.fg2 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "check_circle", + size: 17, + color: T.green, + fill: 1 + }), " ", p)))); + })), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: "favorite", + style: { + marginTop: 18 + }, + onClick: () => window.openJourney('subscribe', window.ARAH.subscriptionTiers.find(t => t.id === sel)) + }, "Apoiar o territ\xF3rio")); +} +Object.assign(window, { + AIScreen, + AchievementsScreen, + SubscriptionsScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens13.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens14.jsx +try { (() => { +// screens14.jsx — Journey framework: full-screen multi-step flows + shared field helpers. + +// Full-screen journey overlay with progress, header and sticky footer CTA. +function JourneyShell({ + title, + step, + steps, + onBack, + onClose, + footer, + children +}) { + const pct = Math.round((step + 1) / steps * 100); + return /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + zIndex: 300, + background: `radial-gradient(130% 80% at 50% -8%, #15201A 0%, ${T.bg} 58%)`, + display: 'flex', + flexDirection: 'column', + animation: 'sheetUp .32s cubic-bezier(.16,1,.3,1)' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + height: 56, + flexShrink: 0 + } + }), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 12, + padding: '6px 16px 12px' + } + }, /*#__PURE__*/React.createElement("button", { + onClick: step === 0 ? onClose : onBack, + style: iconBtn + }, /*#__PURE__*/React.createElement(Icon, { + name: step === 0 ? 'close' : 'arrow_back', + size: 22, + color: T.fg + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 17, + color: T.fg, + letterSpacing: -0.3, + whiteSpace: 'nowrap', + overflow: 'hidden', + textOverflow: 'ellipsis' + } + }, title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginTop: 1 + } + }, "Passo ", step + 1, " de ", steps))), /*#__PURE__*/React.createElement("div", { + style: { + height: 4, + background: T.cardHi, + margin: '0 16px', + borderRadius: 999, + overflow: 'hidden', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: `${pct}%`, + height: '100%', + background: T.greenGrad, + borderRadius: 999, + transition: 'width .35s var(--ease, ease)' + } + })), /*#__PURE__*/React.createElement("div", { + key: step, + className: "appscroll screen-fade", + style: { + flex: 1, + overflowY: 'auto', + padding: '20px 18px 16px' + } + }, children), footer && /*#__PURE__*/React.createElement("div", { + style: { + padding: '12px 18px 30px', + borderTop: `1px solid ${T.line}`, + background: T.bg2, + flexShrink: 0 + } + }, footer)); +} + +// Success / confirmation state +function SuccessView({ + icon = 'check_circle', + title, + msg, + primaryLabel = 'Concluir', + onPrimary, + secondaryLabel, + onSecondary, + accent = T.green +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + zIndex: 300, + background: `radial-gradient(130% 80% at 50% -8%, #15201A 0%, ${T.bg} 58%)`, + display: 'flex', + flexDirection: 'column', + animation: 'fadeIn .3s ease' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + textAlign: 'center', + padding: '0 36px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 88, + height: 88, + borderRadius: '50%', + background: `${accent}1f`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + marginBottom: 22, + animation: 'pop .4s cubic-bezier(.16,1.4,.5,1)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: icon, + size: 48, + color: accent, + fill: 1 + })), /*#__PURE__*/React.createElement("h2", { + style: { + margin: 0, + fontFamily: T.display, + fontWeight: 700, + fontSize: 24, + color: T.fg, + letterSpacing: -0.5 + } + }, title), /*#__PURE__*/React.createElement("p", { + style: { + margin: '12px 0 0', + fontFamily: T.sans, + fontSize: 15, + lineHeight: 1.55, + color: T.fg2, + maxWidth: 300 + } + }, msg)), /*#__PURE__*/React.createElement("div", { + style: { + padding: '12px 18px 32px', + display: 'flex', + flexDirection: 'column', + gap: 10 + } + }, /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: "check", + onClick: onPrimary + }, primaryLabel), secondaryLabel && /*#__PURE__*/React.createElement(Btn, { + kind: "secondary", + full: true, + size: "md", + onClick: onSecondary + }, secondaryLabel))); +} + +// ---- shared field helpers ---- +function JField({ + label, + hint, + children +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + marginBottom: 18 + } + }, label && /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + fontWeight: 600, + color: T.fg2, + marginBottom: 9, + letterSpacing: 0.1 + } + }, label), children, hint && /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginTop: 7 + } + }, hint)); +} +const jInput = { + width: '100%', + boxSizing: 'border-box', + background: T.cardFlat, + color: T.fg, + border: `1px solid ${T.line}`, + borderRadius: 14, + padding: '13px 15px', + fontFamily: T.sans, + fontSize: 15, + outline: 'none' +}; +window.jInput = jInput; + +// horizontal selectable pills +function PillSelect({ + options, + value, + onChange, + cols +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + display: cols ? 'grid' : 'flex', + gridTemplateColumns: cols ? `repeat(${cols},1fr)` : undefined, + gap: 8, + flexWrap: 'wrap' + } + }, options.map(o => { + const v = typeof o === 'string' ? o : o.value; + const lbl = typeof o === 'string' ? o : o.label; + const on = value === v; + return /*#__PURE__*/React.createElement("button", { + key: v, + onClick: () => onChange(v), + style: { + padding: '11px 14px', + borderRadius: 13, + cursor: 'pointer', + WebkitTapHighlightColor: 'transparent', + background: on ? T.greenDim : T.cardFlat, + color: on ? T.green : T.fg2, + border: `1px solid ${on ? 'transparent' : T.line}`, + fontFamily: T.sans, + fontSize: 14, + fontWeight: 500, + textAlign: 'center', + transition: 'all .15s' + } + }, lbl); + })); +} + +// − N + counter +function Counter({ + value, + onChange, + min = 0, + max = 20, + suffix = '' +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 16, + background: T.cardFlat, + border: `1px solid ${T.line}`, + borderRadius: 14, + padding: '8px 14px', + width: 'fit-content' + } + }, /*#__PURE__*/React.createElement("button", { + onClick: () => onChange(Math.max(min, value - 1)), + style: counterBtn + }, /*#__PURE__*/React.createElement(Icon, { + name: "remove", + size: 20, + color: T.fg + })), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 17, + color: T.fg, + minWidth: 28, + textAlign: 'center' + } + }, value, suffix), /*#__PURE__*/React.createElement("button", { + onClick: () => onChange(Math.min(max, value + 1)), + style: counterBtn + }, /*#__PURE__*/React.createElement(Icon, { + name: "add", + size: 20, + color: T.fg + }))); +} +const counterBtn = { + width: 34, + height: 34, + borderRadius: 10, + border: `1px solid ${T.line}`, + background: T.cardHi, + cursor: 'pointer', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + WebkitTapHighlightColor: 'transparent' +}; + +// review summary rows +function ReviewRow({ + icon, + label, + value, + accent +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 12, + padding: '13px 0', + borderBottom: `1px solid ${T.line}` + } + }, icon && /*#__PURE__*/React.createElement(Icon, { + name: icon, + size: 19, + color: T.fg3 + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 14, + color: T.fg2 + } + }, label), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 14, + fontWeight: 600, + color: accent || T.fg, + textAlign: 'right' + } + }, value)); +} + +// PIX payment block +function PixPay({ + amount +}) { + const [copied, setCopied] = React.useState(false); + return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 10, + padding: '13px 15px', + borderRadius: 14, + background: 'rgba(111,197,214,0.1)', + border: '1px solid rgba(111,197,214,0.22)', + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "pix", + size: 22, + color: T.water, + fill: 1 + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 600, + color: T.fg + } + }, "Pague com PIX"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, "Aprova\xE7\xE3o na hora \xB7 sem taxa entre moradores"))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + padding: '22px', + borderRadius: 16, + background: '#fff', + marginBottom: 14 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "qr_code_2", + size: 132, + color: "#0E2117", + fill: 0 + })), /*#__PURE__*/React.createElement("button", { + onClick: () => { + setCopied(true); + setTimeout(() => setCopied(false), 1600); + }, + style: { + width: '100%', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + gap: 8, + padding: '13px', + borderRadius: 14, + cursor: 'pointer', + background: T.cardFlat, + border: `1px solid ${T.line}`, + color: copied ? T.green : T.fg, + fontFamily: T.sans, + fontSize: 14, + fontWeight: 600, + WebkitTapHighlightColor: 'transparent' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: copied ? 'check' : 'content_copy', + size: 17 + }), " ", copied ? 'Código PIX copiado' : 'Copiar código PIX'), /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center', + marginTop: 14, + fontFamily: T.display, + fontWeight: 700, + fontSize: 22, + color: T.fg + } + }, amount)); +} +function JStepTitle({ + children, + sub +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + marginBottom: 18 + } + }, /*#__PURE__*/React.createElement("h2", { + style: { + margin: 0, + fontFamily: T.display, + fontWeight: 700, + fontSize: 21, + color: T.fg, + letterSpacing: -0.4 + } + }, children), sub && /*#__PURE__*/React.createElement("p", { + style: { + margin: '7px 0 0', + fontFamily: T.sans, + fontSize: 14, + lineHeight: 1.5, + color: T.fg2 + } + }, sub)); +} +Object.assign(window, { + JourneyShell, + SuccessView, + JField, + PillSelect, + Counter, + ReviewRow, + PixPay, + JStepTitle +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens14.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens15.jsx +try { (() => { +// screens15.jsx — Booking journeys: Reserva (hospedagem), Babá, Bem-estar, Checkout mercado. + +function ReservaJourney({ + ctx, + onClose +}) { + const h = ctx || window.ARAH.hosting[0]; + const [step, setStep] = React.useState(0); + const [date, setDate] = React.useState('Sex, 13/jun'); + const [nights, setNights] = React.useState(2); + const [guests, setGuests] = React.useState(2); + const [done, setDone] = React.useState(false); + const total = `R$ ${parseInt(h.price.replace(/\D/g, '')) * nights}`; + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + title: "Reserva confirmada!", + msg: `Sua estadia em "${h.title}" está reservada. ${h.host} já foi avisado e vai te receber.`, + primaryLabel: "Ver minhas reservas", + onPrimary: onClose, + secondaryLabel: "Voltar", + onSecondary: onClose + }); + const next = () => step < 2 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 2 ? 'lock' : 'arrow_forward', + onClick: next + }, step === 2 ? `Pagar ${total}` : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Reservar estadia", + step: step, + steps: 3, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: `${h.title} · ${h.host}` + }, "Quando voc\xEA vem?"), /*#__PURE__*/React.createElement(JField, { + label: "Data de entrada" + }, /*#__PURE__*/React.createElement(PillSelect, { + cols: 2, + value: date, + onChange: setDate, + options: ['Sex, 13/jun', 'Sáb, 14/jun', 'Sex, 20/jun', 'Sáb, 21/jun'] + })), /*#__PURE__*/React.createElement(JField, { + label: "Noites" + }, /*#__PURE__*/React.createElement(Counter, { + value: nights, + onChange: setNights, + min: 1, + max: 30 + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: `Até ${h.guests} hóspedes nesta acomodação` + }, "Quantas pessoas?"), /*#__PURE__*/React.createElement(JField, { + label: "H\xF3spedes" + }, /*#__PURE__*/React.createElement(Counter, { + value: guests, + onChange: setGuests, + min: 1, + max: h.guests + })), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 14, + display: 'flex', + gap: 11, + alignItems: 'center', + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: h.avatar, + name: h.host, + size: 40, + resident: true + }), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 600, + color: T.fg + } + }, "Anfitri\xE3o: ", h.host), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, "Morador verificado \xB7 ", h.reviews, " avalia\xE7\xF5es")))), step === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Revise e pague"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px', + marginBottom: 18 + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "cottage", + label: h.title, + value: h.tag + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "calendar_month", + label: "Entrada", + value: date + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "bedtime", + label: "Noites", + value: `${nights} × ${h.price}` + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "group", + label: "H\xF3spedes", + value: guests + }), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + padding: '14px 0 4px' + } + }, /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg + } + }, "Total"), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 19, + color: T.green + } + }, total))), /*#__PURE__*/React.createElement(PixPay, { + amount: total + }))); +} +function SitterJourney({ + ctx, + onClose +}) { + const s = ctx || window.ARAH.sitters[0]; + const [step, setStep] = React.useState(0); + const [day, setDay] = React.useState('Sáb, 14/jun'); + const [time, setTime] = React.useState('14:00'); + const [hours, setHours] = React.useState(4); + const [kids, setKids] = React.useState(1); + const [done, setDone] = React.useState(false); + const total = `R$ ${parseInt(s.price.replace(/\D/g, '')) * hours}`; + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + title: "Solicita\xE7\xE3o enviada!", + msg: `${s.name} recebeu seu pedido e vai confirmar em instantes. Você pode combinar os detalhes pelo chat.`, + primaryLabel: "Abrir conversa", + onPrimary: onClose, + secondaryLabel: "Voltar", + onSecondary: onClose + }); + const next = () => step < 2 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 2 ? 'send' : 'arrow_forward', + onClick: next + }, step === 2 ? 'Enviar solicitação' : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Contratar bab\xE1", + step: step, + steps: 3, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 12, + alignItems: 'center', + marginBottom: 20 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: s.avatar, + name: s.name, + size: 52, + resident: true + }), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 17, + color: T.fg + } + }, s.name), /*#__PURE__*/React.createElement("div", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4, + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "star", + size: 14, + color: "#F5C451", + fill: 1 + }), " ", s.rating, " \xB7 ", s.price, " \xB7 ", s.ages))), /*#__PURE__*/React.createElement(JStepTitle, null, "Quando voc\xEA precisa?"), /*#__PURE__*/React.createElement(JField, { + label: "Dia" + }, /*#__PURE__*/React.createElement(PillSelect, { + cols: 2, + value: day, + onChange: setDay, + options: ['Sex, 13/jun', 'Sáb, 14/jun', 'Dom, 15/jun', 'Seg, 16/jun'] + })), /*#__PURE__*/React.createElement(JField, { + label: "Hor\xE1rio de in\xEDcio" + }, /*#__PURE__*/React.createElement(PillSelect, { + value: time, + onChange: setTime, + options: ['08:00', '14:00', '18:00', '20:00'] + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Para a bab\xE1 se preparar melhor" + }, "Detalhes do cuidado"), /*#__PURE__*/React.createElement(JField, { + label: "Dura\xE7\xE3o (horas)" + }, /*#__PURE__*/React.createElement(Counter, { + value: hours, + onChange: setHours, + min: 1, + max: 12, + suffix: "h" + })), /*#__PURE__*/React.createElement(JField, { + label: "Quantas crian\xE7as" + }, /*#__PURE__*/React.createElement(Counter, { + value: kids, + onChange: setKids, + min: 1, + max: 6 + })), /*#__PURE__*/React.createElement(JField, { + label: "Observa\xE7\xF5es" + }, /*#__PURE__*/React.createElement("textarea", { + placeholder: "Idades, rotina, alergias, necessidades especiais\u2026", + rows: 3, + style: { + ...jInput, + resize: 'none', + lineHeight: 1.5 + } + }))), step === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Revise o pedido"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px', + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "person", + label: "Bab\xE1", + value: s.name + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "calendar_month", + label: "Quando", + value: `${day} · ${time}` + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "schedule", + label: "Dura\xE7\xE3o", + value: `${hours}h` + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "child_care", + label: "Crian\xE7as", + value: kids + }), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + padding: '14px 0 4px' + } + }, /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg + } + }, "Estimativa"), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 19, + color: T.green + } + }, total))), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 13, + display: 'flex', + gap: 10, + alignItems: 'center', + background: 'rgba(166,214,185,0.08)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "verified_user", + size: 19, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2, + lineHeight: 1.4 + } + }, "Pagamento liberado s\xF3 ap\xF3s o servi\xE7o, pela plataforma.")))); +} +function WellnessJourney({ + ctx, + onClose +}) { + const [step, setStep] = React.useState(0); + const [service, setService] = React.useState('Yoga em grupo'); + const [slot, setSlot] = React.useState('Qua · 07:00'); + const [done, setDone] = React.useState(false); + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + title: "Sess\xE3o agendada!", + msg: "Seu hor\xE1rio est\xE1 reservado. Voc\xEA recebeu a confirma\xE7\xE3o e um lembrete ser\xE1 enviado no dia.", + primaryLabel: "Ver agenda", + onPrimary: onClose, + secondaryLabel: "Voltar", + onSecondary: onClose + }); + const next = () => step < 1 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 1 ? 'event_available' : 'arrow_forward', + onClick: next + }, step === 1 ? 'Confirmar agendamento' : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Agendar bem-estar", + step: step, + steps: 2, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: ctx?.name || 'Espaço Maré Yoga' + }, "Escolha o servi\xE7o"), /*#__PURE__*/React.createElement(JField, null, /*#__PURE__*/React.createElement(PillSelect, { + cols: 2, + value: service, + onChange: setService, + options: ['Yoga em grupo', 'Yoga individual', 'Terapia sonora', 'Meditação'] + })), /*#__PURE__*/React.createElement(JField, { + label: "Hor\xE1rios dispon\xEDveis" + }, /*#__PURE__*/React.createElement(PillSelect, { + cols: 2, + value: slot, + onChange: setSlot, + options: ['Qua · 07:00', 'Qua · 18:00', 'Sex · 07:00', 'Sáb · 09:00'] + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Confirme"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px' + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "self_improvement", + label: "Servi\xE7o", + value: service + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "spa", + label: "Local", + value: ctx?.name || 'Espaço Maré Yoga' + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "schedule", + label: "Hor\xE1rio", + value: slot + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "payments", + label: "Valor", + value: "R$ 60", + accent: T.green + })))); +} +function CheckoutJourney({ + ctx, + onClose +}) { + const item = ctx || { + title: 'Robalo fresco (kg)', + price: 'R$ 42', + seller: 'Peixaria da Marta', + avatar: '#C9962B', + icon: 'set_meal' + }; + const [step, setStep] = React.useState(0); + const [qty, setQty] = React.useState(1); + const [fulfil, setFulfil] = React.useState('Retirar no local'); + const [done, setDone] = React.useState(false); + const unit = parseInt(item.price.replace(/\D/g, '')); + const delivery = fulfil === 'Entrega local' ? 8 : 0; + const total = `R$ ${unit * qty + delivery}`; + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + title: "Pedido confirmado!", + msg: `${item.seller} recebeu seu pedido. ${fulfil === 'Entrega local' ? 'Um entregador da vila vai levar até você.' : 'É só retirar no local quando quiser.'}`, + primaryLabel: "Acompanhar pedido", + onPrimary: onClose, + secondaryLabel: "Voltar ao mercado", + onSecondary: onClose + }); + const next = () => step < 2 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 2 ? 'lock' : 'arrow_forward', + onClick: next + }, step === 2 ? `Pagar ${total}` : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Finalizar compra", + step: step, + steps: 3, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Sua sacola"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 14, + display: 'flex', + gap: 12, + alignItems: 'center', + marginBottom: 18 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 48, + height: 48, + borderRadius: 12, + background: `${item.avatar}22`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: item.icon || 'shopping_basket', + size: 24, + color: T.green + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg + } + }, item.title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3 + } + }, item.seller, " \xB7 ", item.price))), /*#__PURE__*/React.createElement(JField, { + label: "Quantidade" + }, /*#__PURE__*/React.createElement(Counter, { + value: qty, + onChange: setQty, + min: 1, + max: 20 + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Como voc\xEA quer receber?"), /*#__PURE__*/React.createElement(JField, null, /*#__PURE__*/React.createElement(PillSelect, { + cols: 1, + value: fulfil, + onChange: setFulfil, + options: ['Retirar no local', 'Entrega local'] + })), fulfil === 'Entrega local' && /*#__PURE__*/React.createElement(JField, { + label: "Endere\xE7o" + }, /*#__PURE__*/React.createElement("input", { + defaultValue: "Rua das Conchas, 12 \u2014 Camburi", + style: jInput + })), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 13, + display: 'flex', + gap: 10, + alignItems: 'center', + background: 'rgba(166,214,185,0.08)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: fulfil === 'Entrega local' ? 'local_shipping' : 'storefront', + size: 19, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2 + } + }, fulfil === 'Entrega local' ? 'Entrega por um vizinho · R$ 8' : 'Retirada gratuita com o vendedor'))), step === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Pagamento"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px', + marginBottom: 18 + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + label: `${item.title} × ${qty}`, + value: `R$ ${unit * qty}` + }), /*#__PURE__*/React.createElement(ReviewRow, { + label: "Entrega", + value: delivery ? `R$ ${delivery}` : 'Grátis' + }), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + padding: '14px 0 4px' + } + }, /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg + } + }, "Total"), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 19, + color: T.green + } + }, total))), /*#__PURE__*/React.createElement(PixPay, { + amount: total + }))); +} +Object.assign(window, { + ReservaJourney, + SitterJourney, + WellnessJourney, + CheckoutJourney +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens15.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens16.jsx +try { (() => { +// screens16.jsx — Transaction/create journeys + JourneyHost router. + +function WalletSendJourney({ + onClose +}) { + const [step, setStep] = React.useState(0); + const [amount, setAmount] = React.useState('80'); + const [to, setTo] = React.useState(null); + const [done, setDone] = React.useState(false); + const people = [{ + n: 'Dona Marta', + a: '#C9962B' + }, { + n: 'Bruno Caiçara', + a: '#377B57' + }, { + n: 'Seu Tião', + a: '#4F956F' + }, { + n: 'Coletivo Maré', + a: '#2A6FDB' + }]; + const confirm = () => { + window.arahMutate && window.arahMutate(() => { + const w = window.ARAH.wallet; + const cur = parseInt(String(w.balance).replace(/\D/g, '')) || 0; + const n = Math.max(0, cur - parseInt(amount)); + w.balance = 'A̧ ' + n; + w.brl = 'R$ ' + n + ',00'; + w.transactions.unshift({ + id: 'ws' + Date.now(), + label: to?.n || 'Envio', + sub: 'Transferência enviada', + val: '- A̧ ' + amount, + icon: 'north_east', + neg: true + }); + }); + setDone(true); + }; + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + title: "Arat\xE1 enviado!", + msg: `A̧ ${amount} foram transferidos para ${to?.n}. A moeda continua circulando em Camburi.`, + primaryLabel: "Ver carteira", + onPrimary: onClose + }); + const next = () => step < 2 ? setStep(step + 1) : confirm(); + const canNext = step === 1 ? !!to : true; + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 2 ? 'north_east' : 'arrow_forward', + onClick: () => canNext && next(), + style: { + opacity: canNext ? 1 : 0.5 + } + }, step === 2 ? 'Confirmar envio' : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Enviar Arat\xE1", + step: step, + steps: 3, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: `Saldo disponível: ${window.ARAH.wallet.balance}` + }, "Quanto enviar?"), /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center', + padding: '20px 0' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 52, + color: T.fg, + letterSpacing: -2 + } + }, "A\u0327 ", amount || '0')), /*#__PURE__*/React.createElement(PillSelect, { + cols: 4, + value: amount, + onChange: setAmount, + options: ['20', '50', '80', '120'] + })), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Para quem?"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 9 + } + }, people.map(p => { + const on = to?.n === p.n; + return /*#__PURE__*/React.createElement(Card, { + key: p.n, + onClick: () => setTo(p), + hi: on, + style: { + display: 'flex', + alignItems: 'center', + gap: 12, + padding: 12, + border: `1px solid ${on ? T.green : T.line}` + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: p.a, + name: p.n, + size: 40, + resident: true + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg + } + }, p.n), /*#__PURE__*/React.createElement(Icon, { + name: on ? 'check_circle' : 'radio_button_unchecked', + size: 21, + color: on ? T.green : T.fg3, + fill: on ? 1 : 0 + })); + }))), step === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Confirme o envio"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 22, + textAlign: 'center', + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 40, + color: T.green, + letterSpacing: -1 + } + }, "A\u0327 ", amount), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg3, + margin: '6px 0 16px' + } + }, "\u2248 R$ ", amount, ",00"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + gap: 9 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: to?.a, + name: to?.n || '', + size: 32, + resident: true + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 14, + color: T.fg + } + }, "para ", /*#__PURE__*/React.createElement("strong", { + style: { + fontWeight: 600 + } + }, to?.n)))))); +} +function SubscriptionJourney({ + ctx, + onClose +}) { + const tier = ctx || window.ARAH.subscriptionTiers[1]; + const [step, setStep] = React.useState(0); + const [done, setDone] = React.useState(false); + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + icon: "favorite", + title: "Voc\xEA \xE9 Guardi\xE3o!", + msg: `Obrigado por sustentar Camburi. Sua assinatura ${tier.name} mantém a infraestrutura comunitária viva e independente.`, + primaryLabel: "Concluir", + onPrimary: onClose + }); + const next = () => step < 1 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 1 ? 'lock' : 'arrow_forward', + onClick: next + }, step === 1 ? `Assinar · ${tier.price}${tier.period}` : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Apoiar o territ\xF3rio", + step: step, + steps: 2, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Apoio recorrente ao territ\xF3rio" + }, "Plano ", tier.name), /*#__PURE__*/React.createElement(Card, { + glow: true, + style: { + padding: 18 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'baseline' + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 18, + color: T.fg + } + }, tier.name), /*#__PURE__*/React.createElement("span", { + style: { + marginLeft: 'auto', + fontFamily: T.display, + fontWeight: 700, + fontSize: 24, + color: T.green + } + }, tier.price), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg3 + } + }, tier.period)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 9, + marginTop: 15 + } + }, tier.perks.map(p => /*#__PURE__*/React.createElement("div", { + key: p, + style: { + display: 'flex', + alignItems: 'center', + gap: 9, + fontFamily: T.sans, + fontSize: 13.5, + color: T.fg2 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "check_circle", + size: 17, + color: T.green, + fill: 1 + }), " ", p))))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Pagamento"), /*#__PURE__*/React.createElement(PixPay, { + amount: `${tier.price}${tier.period}` + }))); +} +function ResidenciaJourney({ + onClose, + onApprove +}) { + const [step, setStep] = React.useState(0); + const [done, setDone] = React.useState(false); + const [proof, setProof] = React.useState(false); + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + icon: "how_to_reg", + title: "Solicita\xE7\xE3o enviada!", + msg: "A curadoria do territ\xF3rio vai analisar seu comprovante. Voc\xEA ser\xE1 avisado assim que sua resid\xEAncia for confirmada.", + primaryLabel: "Entendi", + onPrimary: () => { + onApprove && onApprove(); + onClose(); + } + }); + const next = () => step < 2 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 2 ? 'send' : 'arrow_forward', + onClick: next + }, step === 2 ? 'Enviar solicitação' : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Confirmar resid\xEAncia", + step: step, + steps: 3, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Moradores acessam conte\xFAdo restrito, votam e participam da gest\xE3o." + }, "Torne-se morador de Camburi"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 14, + display: 'flex', + gap: 11, + alignItems: 'center', + marginBottom: 11, + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "my_location", + size: 20, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 600, + color: T.fg + } + }, "Presen\xE7a no territ\xF3rio"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, "Confirmada por GPS \xB7 privada")), /*#__PURE__*/React.createElement(Icon, { + name: "check_circle", + size: 20, + color: T.green, + fill: 1 + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Conta de luz, \xE1gua, contrato ou declara\xE7\xE3o da associa\xE7\xE3o." + }, "Envie um comprovante"), /*#__PURE__*/React.createElement("button", { + onClick: () => setProof(true), + style: { + width: '100%', + padding: '30px', + borderRadius: 16, + cursor: 'pointer', + background: T.cardFlat, + border: `1.5px dashed ${proof ? T.green : T.lineHi}`, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + gap: 10, + WebkitTapHighlightColor: 'transparent' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: proof ? 'check_circle' : 'upload_file', + size: 34, + color: proof ? T.green : T.fg2, + fill: proof ? 1 : 0 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 14, + fontWeight: 500, + color: proof ? T.green : T.fg2 + } + }, proof ? 'comprovante-residencia.pdf' : 'Anexar comprovante'))), step === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Revise"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px' + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "forest", + label: "Territ\xF3rio", + value: "Camburi" + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "my_location", + label: "Presen\xE7a GPS", + value: "Confirmada", + accent: T.green + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "description", + label: "Comprovante", + value: "Anexado", + accent: T.green + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "shield_person", + label: "An\xE1lise", + value: "Curadoria local" + })))); +} + +// Generic "create / propose" journey (demanda, oferta, semente, troca) +function CreateJourney({ + ctx, + onClose +}) { + const cfg = ctx || {}; + const [step, setStep] = React.useState(0); + const [done, setDone] = React.useState(false); + const [kind, setKind] = React.useState(cfg.kinds ? cfg.kinds[0] : null); + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + title: cfg.successTitle, + msg: cfg.successMsg, + primaryLabel: "Ver no territ\xF3rio", + onPrimary: onClose, + secondaryLabel: "Voltar", + onSecondary: onClose + }); + const next = () => step < 1 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 1 ? 'send' : 'arrow_forward', + onClick: next + }, step === 1 ? cfg.cta : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: cfg.title, + step: step, + steps: 2, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: cfg.sub + }, cfg.heading), cfg.kinds && /*#__PURE__*/React.createElement(JField, { + label: cfg.kindLabel + }, /*#__PURE__*/React.createElement(PillSelect, { + cols: cfg.kinds.length, + value: kind, + onChange: setKind, + options: cfg.kinds + })), /*#__PURE__*/React.createElement(JField, { + label: cfg.f1 + }, /*#__PURE__*/React.createElement("input", { + placeholder: cfg.f1ph, + style: jInput + })), cfg.f2 && /*#__PURE__*/React.createElement(JField, { + label: cfg.f2 + }, /*#__PURE__*/React.createElement("input", { + placeholder: cfg.f2ph, + style: jInput + })), /*#__PURE__*/React.createElement(JField, { + label: "Descri\xE7\xE3o" + }, /*#__PURE__*/React.createElement("textarea", { + placeholder: cfg.descPh, + rows: 3, + style: { + ...jInput, + resize: 'none', + lineHeight: 1.5 + } + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Confira antes de publicar no territ\xF3rio." + }, "Tudo certo?"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px' + } + }, kind && /*#__PURE__*/React.createElement(ReviewRow, { + icon: cfg.icon, + label: cfg.kindLabel, + value: kind, + accent: T.green + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "forest", + label: "Territ\xF3rio", + value: "Camburi" + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "visibility", + label: "Vis\xEDvel para", + value: "Moradores e visitantes" + })), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 13, + display: 'flex', + gap: 10, + alignItems: 'center', + background: 'rgba(166,214,185,0.08)', + marginTop: 14 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "groups", + size: 19, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2, + lineHeight: 1.4 + } + }, cfg.note)))); +} + +// Course enrollment (single confirm) +function CourseJourney({ + ctx, + onClose +}) { + const c = ctx || window.ARAH.courses[0]; + const [done, setDone] = React.useState(false); + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + icon: "school", + title: "Matr\xEDcula feita!", + msg: `Você entrou em "${c.title}". ${c.teacher} vai te avisar quando a próxima oficina começar.`, + primaryLabel: "Concluir", + onPrimary: onClose + }); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Participar da oficina", + step: 0, + steps: 1, + onClose: onClose, + footer: /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: "how_to_reg", + onClick: () => setDone(true) + }, "Confirmar participa\xE7\xE3o") + }, /*#__PURE__*/React.createElement(JStepTitle, { + sub: c.tag + }, c.title), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px' + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "person", + label: "Quem ensina", + value: c.teacher + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "play_lesson", + label: "Aulas", + value: `${c.lessons} encontros` + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "signal_cellular_alt", + label: "N\xEDvel", + value: c.level + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "payments", + label: "Valor", + value: "Gratuito \xB7 saber comunit\xE1rio", + accent: T.green + }))); +} + +// ---- Router ---- +function JourneyHost({ + journey, + onClose, + onApprove +}) { + if (!journey) return null; + const { + id, + ctx + } = journey; + switch (id) { + case 'reserva': + return /*#__PURE__*/React.createElement(ReservaJourney, { + ctx: ctx, + onClose: onClose + }); + case 'sitter': + return /*#__PURE__*/React.createElement(SitterJourney, { + ctx: ctx, + onClose: onClose + }); + case 'wellness': + return /*#__PURE__*/React.createElement(WellnessJourney, { + ctx: ctx, + onClose: onClose + }); + case 'checkout': + return /*#__PURE__*/React.createElement(CheckoutJourney, { + ctx: ctx, + onClose: onClose + }); + case 'walletSend': + return /*#__PURE__*/React.createElement(WalletSendJourney, { + onClose: onClose + }); + case 'subscribe': + return /*#__PURE__*/React.createElement(SubscriptionJourney, { + ctx: ctx, + onClose: onClose + }); + case 'residencia': + return /*#__PURE__*/React.createElement(ResidenciaJourney, { + onClose: onClose, + onApprove: onApprove + }); + case 'course': + return /*#__PURE__*/React.createElement(CourseJourney, { + ctx: ctx, + onClose: onClose + }); + case 'rental': + return /*#__PURE__*/React.createElement(RentalJourney, { + ctx: ctx, + onClose: onClose + }); + case 'deliveryReq': + return /*#__PURE__*/React.createElement(DeliveryRequestJourney, { + onClose: onClose + }); + case 'vote': + return /*#__PURE__*/React.createElement(VoteJourney, { + ctx: ctx, + onClose: onClose + }); + case 'groupBuy': + return /*#__PURE__*/React.createElement(GroupBuyJoinJourney, { + ctx: ctx, + onClose: onClose + }); + case 'addProduct': + return /*#__PURE__*/React.createElement(AddProductJourney, { + ctx: ctx, + onClose: onClose + }); + case 'walletReceive': + return /*#__PURE__*/React.createElement(WalletReceiveJourney, { + onClose: onClose + }); + case 'walletTopup': + return /*#__PURE__*/React.createElement(WalletTopupJourney, { + onClose: onClose + }); + case 'joinEvent': + return /*#__PURE__*/React.createElement(JoinEventJourney, { + ctx: ctx, + onClose: onClose + }); + case 'createElection': + return /*#__PURE__*/React.createElement(CreateElectionJourney, { + onClose: onClose + }); + case 'create': + return /*#__PURE__*/React.createElement(CreateJourney, { + ctx: ctx, + onClose: onClose + }); + default: + return null; + } +} + +// Context presets for the generic create journey +const JOURNEY_PRESETS = { + demanda: { + title: 'Nova demanda ou oferta', + heading: 'O que você quer divulgar?', + sub: 'Peça uma mão ou ofereça o que você faz.', + icon: 'swap_horiz', + kindLabel: 'Tipo', + kinds: ['Demanda', 'Oferta'], + f1: 'Título', + f1ph: 'Ex.: Preciso de pedreiro', + f2: 'Categoria', + f2ph: 'Construção, transporte…', + descPh: 'Detalhe o que precisa ou oferece…', + cta: 'Publicar', + successTitle: 'Publicado!', + successMsg: 'Sua demanda está no território. Vizinhos podem responder pelo chat.', + note: 'Quem puder ajudar fala com você pelo chat do território.' + }, + semente: { + title: 'Doar muda ou semente', + heading: 'O que você quer compartilhar?', + sub: 'Fortaleça a regeneração de Camburi.', + icon: 'potted_plant', + f1: 'Espécie', + f1ph: 'Ex.: Ipê-amarelo', + f2: 'Quantidade', + f2ph: 'Ex.: 20 sementes', + descPh: 'Origem, época de plantio, cuidados…', + cta: 'Doar ao banco', + successTitle: 'Doação registrada!', + successMsg: 'Sua espécie entrou no banco de sementes do território. Outros moradores já podem solicitar.', + note: 'A muda fica disponível para troca com outros moradores.' + }, + troca: { + title: 'Propor troca', + heading: 'O que você oferece?', + sub: 'Escambo e doações entre vizinhos.', + icon: 'handshake', + f1: 'Ofereço', + f1ph: 'Ex.: Mudas de ipê', + f2: 'Quero em troca', + f2ph: 'Ex.: Adubo orgânico', + descPh: 'Detalhes da troca…', + cta: 'Publicar troca', + successTitle: 'Troca publicada!', + successMsg: 'Sua proposta está no território. Quem topar fala com você pelo chat.', + note: 'Combine os detalhes da troca diretamente pelo chat.' + }, + digital: { + title: 'Contratar serviço digital', + heading: 'O que você precisa?', + sub: 'Talentos digitais do território.', + icon: 'apps', + f1: 'Serviço', + f1ph: 'Ex.: Logo para minha loja', + f2: 'Prazo', + f2ph: 'Ex.: 2 semanas', + descPh: 'Descreva o que você precisa…', + cta: 'Enviar pedido', + successTitle: 'Pedido enviado!', + successMsg: 'O profissional do território vai responder com uma proposta pelo chat.', + note: 'A proposta e o pagamento são combinados pelo chat do território.' + } +}; +window.JOURNEY_PRESETS = JOURNEY_PRESETS; +Object.assign(window, { + WalletSendJourney, + SubscriptionJourney, + ResidenciaJourney, + CreateJourney, + CourseJourney, + JourneyHost +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens16.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens17.jsx +try { (() => { +// screens17.jsx — Aluguéis, Hub digital (screens) + Rental/Delivery journeys. + +function RentalScreen() { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 46" + }, "Alugu\xE9is \u2014 equipamentos e espa\xE7os entre vizinhos. Vis\xE3o de produto."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gap: 11 + } + }, window.ARAH.rentals.map(r => /*#__PURE__*/React.createElement(Card, { + key: r.id, + glow: true, + onClick: () => window.openJourney('rental', r), + style: { + padding: 0, + overflow: 'hidden' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + height: 84, + background: `linear-gradient(150deg, ${r.avatar}40, ${r.avatar}12)`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: r.icon, + size: 32, + color: T.fg, + fill: 0, + style: { + opacity: 0.9 + } + }), /*#__PURE__*/React.createElement("span", { + style: { + position: 'absolute', + top: 8, + left: 8, + fontFamily: T.sans, + fontSize: 10, + fontWeight: 600, + color: T.fg, + background: 'rgba(11,12,10,0.5)', + backdropFilter: 'blur(4px)', + padding: '3px 8px', + borderRadius: 999 + } + }, r.tag)), /*#__PURE__*/React.createElement("div", { + style: { + padding: 12 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14, + color: T.fg, + lineHeight: 1.25, + letterSpacing: -0.2 + } + }, r.title), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 5, + marginTop: 6, + color: T.fg3, + fontFamily: T.sans, + fontSize: 11.5 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: r.avatar, + name: r.owner, + size: 16, + resident: true + }), " ", r.owner), /*#__PURE__*/React.createElement("div", { + style: { + marginTop: 9 + } + }, /*#__PURE__*/React.createElement("strong", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 15, + color: T.green + } + }, r.price), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, " / ", r.unit))))))); +} +function DigitalScreen() { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 26" + }, "Hub de servi\xE7os digitais \u2014 talentos do territ\xF3rio para o territ\xF3rio. Vis\xE3o de produto."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 11 + } + }, window.ARAH.digitalServices.map(s => /*#__PURE__*/React.createElement(Card, { + key: s.id, + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 46, + height: 46, + borderRadius: 13, + background: T.greenDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: s.icon, + size: 23, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 10, + fontWeight: 700, + letterSpacing: 0.6, + textTransform: 'uppercase', + color: T.green + } + }, s.tag), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14.5, + color: T.fg, + marginTop: 2, + letterSpacing: -0.2, + lineHeight: 1.2 + } + }, s.title), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6, + marginTop: 5 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: s.avatar, + name: s.who, + size: 18 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, s.who, " \xB7 ", s.price))), /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + size: "sm", + icon: "bookmark_add", + style: { + flexShrink: 0 + }, + onClick: () => window.openJourney('create', window.JOURNEY_PRESETS.digital) + }, "Contratar"))))); +} + +// ---- Rental journey: item → período → PIX → success ---- +function RentalJourney({ + ctx, + onClose +}) { + const r = ctx || window.ARAH.rentals[0]; + const [step, setStep] = React.useState(0); + const [from, setFrom] = React.useState('Sex, 13/jun'); + const [days, setDays] = React.useState(2); + const [done, setDone] = React.useState(false); + const unit = parseInt(r.price.replace(/\D/g, '')); + const total = `R$ ${unit * days}`; + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + title: "Aluguel confirmado!", + msg: `Você reservou "${r.title}" com ${r.owner}. Combine a retirada pelo chat do território.`, + primaryLabel: "Abrir conversa", + onPrimary: onClose, + secondaryLabel: "Voltar", + onSecondary: onClose + }); + const next = () => step < 2 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 2 ? 'lock' : 'arrow_forward', + onClick: next + }, step === 2 ? `Pagar ${total}` : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Alugar item", + step: step, + steps: 3, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Card, { + style: { + padding: 14, + display: 'flex', + gap: 12, + alignItems: 'center', + marginBottom: 18 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 48, + height: 48, + borderRadius: 12, + background: `${r.avatar}22`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: r.icon, + size: 24, + color: T.green + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg + } + }, r.title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3 + } + }, r.owner, " \xB7 ", r.price, "/", r.unit))), /*#__PURE__*/React.createElement(JStepTitle, null, "Quando voc\xEA precisa?"), /*#__PURE__*/React.createElement(JField, { + label: "In\xEDcio" + }, /*#__PURE__*/React.createElement(PillSelect, { + cols: 2, + value: from, + onChange: setFrom, + options: ['Sex, 13/jun', 'Sáb, 14/jun', 'Dom, 15/jun', 'Seg, 16/jun'] + })), /*#__PURE__*/React.createElement(JField, { + label: "Dias" + }, /*#__PURE__*/React.createElement(Counter, { + value: days, + onChange: setDays, + min: 1, + max: 30 + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Combine a retirada com o dono pelo chat." + }, "Retirada"), /*#__PURE__*/React.createElement(JField, null, /*#__PURE__*/React.createElement(PillSelect, { + cols: 1, + value: 'Retirar com o dono', + onChange: () => {}, + options: ['Retirar com o dono'] + })), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 13, + display: 'flex', + gap: 10, + alignItems: 'center', + background: 'rgba(166,214,185,0.08)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "verified_user", + size: 19, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2, + lineHeight: 1.4 + } + }, "Cau\xE7\xE3o opcional combinada entre vizinhos do territ\xF3rio."))), step === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Revise e pague"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px', + marginBottom: 18 + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "category", + label: r.title, + value: r.tag + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "calendar_month", + label: "In\xEDcio", + value: from + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "schedule", + label: "Per\xEDodo", + value: `${days} ${days > 1 ? 'dias' : 'dia'} × ${r.price}` + }), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + padding: '14px 0 4px' + } + }, /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg + } + }, "Total"), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 19, + color: T.green + } + }, total))), /*#__PURE__*/React.createElement(PixPay, { + amount: total + }))); +} + +// ---- Delivery request journey: item → endereços → confirmar → success ---- +function DeliveryRequestJourney({ + onClose +}) { + const [step, setStep] = React.useState(0); + const [done, setDone] = React.useState(false); + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + icon: "local_shipping", + title: "Entrega solicitada!", + msg: "Um entregador da vila vai aceitar e levar seu pedido. Voc\xEA acompanha o trajeto em tempo real.", + primaryLabel: "Acompanhar", + onPrimary: onClose, + secondaryLabel: "Voltar", + onSecondary: onClose + }); + const next = () => step < 1 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 1 ? 'send' : 'arrow_forward', + onClick: next + }, step === 1 ? 'Solicitar entrega' : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Solicitar entrega", + step: step, + steps: 2, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Um vizinho leva pra voc\xEA." + }, "O que vai ser entregue?"), /*#__PURE__*/React.createElement(JField, { + label: "Item / pedido" + }, /*#__PURE__*/React.createElement("input", { + placeholder: "Ex.: 2kg de peixe da Peixaria da Marta", + style: jInput + })), /*#__PURE__*/React.createElement(JField, { + label: "Retirar em" + }, /*#__PURE__*/React.createElement("input", { + defaultValue: "Peixaria da Marta", + style: jInput + })), /*#__PURE__*/React.createElement(JField, { + label: "Entregar em" + }, /*#__PURE__*/React.createElement("input", { + defaultValue: "Rua das Conchas, 12 \u2014 Camburi", + style: jInput + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Confirme"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px', + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "inventory_2", + label: "Pedido", + value: "Peixe fresco" + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "storefront", + label: "Retirada", + value: "Peixaria da Marta" + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "home", + label: "Entrega", + value: "Rua das Conchas, 12" + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "payments", + label: "Frete local", + value: "R$ 8", + accent: T.green + })), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 13, + display: 'flex', + gap: 10, + alignItems: 'center', + background: 'rgba(166,214,185,0.08)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "two_wheeler", + size: 19, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2, + lineHeight: 1.4 + } + }, "Entregadores s\xE3o moradores do territ\xF3rio \u2014 renda que fica na vila.")))); +} +Object.assign(window, { + RentalScreen, + DigitalScreen, + RentalJourney, + DeliveryRequestJourney +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens17.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens18.jsx +try { (() => { +// screens18.jsx — Missing journeys: voto, compra coletiva, produto, carteira (receber/adicionar), +// participar de evento, abrir eleição (curador). Reuses the JourneyShell framework. + +// ---- Votar em eleição ---- +function VoteJourney({ + ctx, + onClose +}) { + const c = ctx?.candidate || { + name: 'Dona Marta', + avatar: '#C9962B', + pitch: 'Pesca artesanal e feira' + }; + const el = ctx?.election || { + title: 'Conselho de Moradores 2026' + }; + const [step, setStep] = React.useState(0); + const [done, setDone] = React.useState(false); + const protocolo = 'ARH-' + Math.random().toString(36).slice(2, 8).toUpperCase(); + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + icon: "how_to_vote", + title: "Voto registrado!", + msg: `Seu voto em ${c.name} foi computado de forma secreta e auditável. Protocolo ${protocolo}.`, + primaryLabel: "Ver resultados parciais", + onPrimary: () => { + ctx?.onConfirm && ctx.onConfirm(); + onClose(); + }, + secondaryLabel: "Fechar", + onSecondary: onClose + }); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 1 ? 'how_to_vote' : 'arrow_forward', + onClick: () => step < 1 ? setStep(1) : setDone(true) + }, step === 1 ? 'Confirmar voto' : 'Revisar voto'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Votar", + step: step, + steps: 2, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: el.title + }, "Confira seu candidato"), /*#__PURE__*/React.createElement(Card, { + glow: true, + style: { + padding: 18, + display: 'flex', + gap: 14, + alignItems: 'center', + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: c.avatar, + name: c.name, + size: 56, + resident: true + }), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 17, + color: T.fg + } + }, c.name), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg2, + marginTop: 2 + } + }, c.pitch))), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 13, + display: 'flex', + gap: 10, + alignItems: 'center', + background: 'rgba(166,214,185,0.08)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "lock", + size: 19, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2, + lineHeight: 1.4 + } + }, "Seu voto \xE9 secreto. Cada morador vota uma vez por elei\xE7\xE3o."))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Esta a\xE7\xE3o n\xE3o pode ser desfeita." + }, "Confirmar voto"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px' + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "how_to_vote", + label: "Elei\xE7\xE3o", + value: el.title + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "person", + label: "Candidato", + value: c.name, + accent: T.green + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "verified", + label: "Valida\xE7\xE3o", + value: "1 morador \xB7 1 voto" + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "lock", + label: "Sigilo", + value: "Voto secreto" + })))); +} + +// ---- Entrar na compra coletiva (com pagamento) ---- +function GroupBuyJoinJourney({ + ctx, + onClose +}) { + const g = ctx || window.ARAH.groupBuyDetail || { + title: 'Compra coletiva', + icon: 'groups_2', + price: 'R$ 2.400', + saved: 'R$ 1.100' + }; + const [step, setStep] = React.useState(0); + const [qty, setQty] = React.useState(1); + const [done, setDone] = React.useState(false); + const unit = parseInt((g.price || 'R$ 2400').replace(/\D/g, '')) || 2400; + const total = `R$ ${(unit * qty).toLocaleString('pt-BR')}`; + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + icon: "groups_2", + title: "Voc\xEA entrou!", + msg: `Sua reserva na "${g.title}" está confirmada. Quando a meta for atingida, o pedido é fechado e você é avisado.`, + primaryLabel: "Acompanhar", + onPrimary: () => { + ctx?.onConfirm && ctx.onConfirm(); + onClose(); + }, + secondaryLabel: "Fechar", + onSecondary: onClose + }); + const next = () => step < 2 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 2 ? 'lock' : 'arrow_forward', + onClick: next + }, step === 2 ? `Reservar ${total}` : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Entrar na compra coletiva", + step: step, + steps: 3, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: g.title + }, "Quantas unidades?"), /*#__PURE__*/React.createElement(JField, { + label: "Sua reserva" + }, /*#__PURE__*/React.createElement(Counter, { + value: qty, + onChange: setQty, + min: 1, + max: 5 + })), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 13, + display: 'flex', + gap: 10, + alignItems: 'center', + background: 'rgba(166,214,185,0.08)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "savings", + size: 19, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2 + } + }, "Economia estimada de ", /*#__PURE__*/React.createElement("strong", { + style: { + color: T.green, + fontWeight: 700 + } + }, g.saved), " por unidade na meta."))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Como funciona" + }, "Pagamento garantido"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 16 + } + }, ['O valor fica reservado até a meta ser atingida.', 'Se a meta não for batida no prazo, você é reembolsado.', 'Atingida a meta, o pedido é fechado com o fornecedor.'].map((t, i) => /*#__PURE__*/React.createElement("div", { + key: i, + style: { + display: 'flex', + gap: 11, + alignItems: 'flex-start', + padding: '9px 0' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "check_circle", + size: 18, + color: T.green, + fill: 1, + style: { + marginTop: 1 + } + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 14, + color: T.fg2, + lineHeight: 1.45 + } + }, t))))), step === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Reserve sua vaga"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px', + marginBottom: 18 + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + label: `Unidades`, + value: qty + }), /*#__PURE__*/React.createElement(ReviewRow, { + label: "Pre\xE7o na meta", + value: g.price + }), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + padding: '14px 0 4px' + } + }, /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg + } + }, "Total reservado"), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 19, + color: T.green + } + }, total))), /*#__PURE__*/React.createElement(PixPay, { + amount: total + }))); +} + +// ---- Adicionar produto à loja ---- +function AddProductJourney({ + ctx, + onClose +}) { + const [step, setStep] = React.useState(0); + const [name, setName] = React.useState(''); + const [price, setPrice] = React.useState(''); + const [cat, setCat] = React.useState('Alimento'); + const [avail, setAvail] = React.useState('Disponível'); + const [photo, setPhoto] = React.useState(false); + const [done, setDone] = React.useState(false); + const iconFor = { + Alimento: 'lunch_dining', + Serviço: 'handyman', + Artesanato: 'redeem', + Aluguel: 'category' + }; + const publish = () => { + const prod = { + id: 'sp' + Date.now(), + title: name || 'Novo produto', + price: price ? price.startsWith('R$') ? price : 'R$ ' + price : 'R$ 0', + tag: cat, + icon: iconFor[cat] || 'sell', + active: true + }; + ctx?.onConfirm && ctx.onConfirm(prod); + setDone(true); + }; + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + icon: "storefront", + title: "Produto publicado!", + msg: "Seu item j\xE1 aparece no mercado do territ\xF3rio. Vizinhos podem comprar e falar com voc\xEA pelo chat.", + primaryLabel: "Ver minha loja", + onPrimary: onClose, + secondaryLabel: "Adicionar outro", + onSecondary: () => { + setStep(0); + setDone(false); + setPhoto(false); + setName(''); + setPrice(''); + } + }); + const next = () => step < 2 ? setStep(step + 1) : publish(); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 2 ? 'publish' : 'arrow_forward', + onClick: next + }, step === 2 ? 'Publicar produto' : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Novo produto", + step: step, + steps: 3, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "O que voc\xEA quer vender no territ\xF3rio?" + }, "Detalhes"), /*#__PURE__*/React.createElement(JField, { + label: "Nome do produto" + }, /*#__PURE__*/React.createElement("input", { + value: name, + onChange: e => setName(e.target.value), + placeholder: "Ex.: Doce de banana caseiro", + style: jInput + })), /*#__PURE__*/React.createElement(JField, { + label: "Categoria" + }, /*#__PURE__*/React.createElement(PillSelect, { + cols: 2, + value: cat, + onChange: setCat, + options: ['Alimento', 'Serviço', 'Artesanato', 'Aluguel'] + })), /*#__PURE__*/React.createElement(JField, { + label: "Pre\xE7o" + }, /*#__PURE__*/React.createElement("input", { + value: price, + onChange: e => setPrice(e.target.value), + placeholder: "R$ 0,00", + inputMode: "numeric", + style: jInput + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Foto e descri\xE7\xE3o"), /*#__PURE__*/React.createElement(JField, { + label: "Foto do produto" + }, /*#__PURE__*/React.createElement("button", { + onClick: () => setPhoto(true), + style: { + width: '100%', + padding: '26px', + borderRadius: 16, + cursor: 'pointer', + background: T.cardFlat, + border: `1.5px dashed ${photo ? T.green : T.lineHi}`, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + gap: 9, + WebkitTapHighlightColor: 'transparent' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: photo ? 'check_circle' : 'add_a_photo', + size: 30, + color: photo ? T.green : T.fg2, + fill: photo ? 1 : 0 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 500, + color: photo ? T.green : T.fg2 + } + }, photo ? 'foto-produto.jpg' : 'Adicionar foto'))), /*#__PURE__*/React.createElement(JField, { + label: "Descri\xE7\xE3o" + }, /*#__PURE__*/React.createElement("textarea", { + placeholder: "Ingredientes, tamanho, prazo de entrega\u2026", + rows: 3, + style: { + ...jInput, + resize: 'none', + lineHeight: 1.5 + } + })), /*#__PURE__*/React.createElement(JField, { + label: "Disponibilidade" + }, /*#__PURE__*/React.createElement(PillSelect, { + value: avail, + onChange: setAvail, + options: ['Disponível', 'Sob encomenda'] + }))), step === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Confira antes de publicar." + }, "Tudo certo?"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px' + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "sell", + label: "Produto", + value: name || '—', + accent: T.green + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "category", + label: "Categoria", + value: cat + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "payments", + label: "Pre\xE7o", + value: price ? price.startsWith('R$') ? price : 'R$ ' + price : '—' + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "image", + label: "Foto", + value: photo ? 'Anexada' : 'Sem foto', + accent: photo ? T.green : T.fg3 + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "inventory", + label: "Disponibilidade", + value: avail + })))); +} + +// ---- Receber Aratá (QR + chave) ---- +function WalletReceiveJourney({ + onClose +}) { + const w = window.ARAH.wallet; + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Receber Arat\xE1", + step: 0, + steps: 1, + onClose: onClose, + footer: /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: "ios_share", + onClick: onClose + }, "Compartilhar cobran\xE7a") + }, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Mostre o c\xF3digo para quem vai te pagar" + }, "Sua cobran\xE7a"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + padding: '22px', + borderRadius: 16, + background: '#fff', + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "qr_code_2", + size: 150, + color: "#0E2117", + fill: 0 + })), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px' + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "account_circle", + label: "Recebedor", + value: "Ana Ribeiro" + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "tag", + label: "Carteira", + value: `${w.name} · Camburi` + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "account_balance_wallet", + label: "Saldo atual", + value: w.balance, + accent: T.green + }))); +} + +// ---- Adicionar Aratá (top-up) ---- +function WalletTopupJourney({ + onClose +}) { + const [step, setStep] = React.useState(0); + const [amount, setAmount] = React.useState('100'); + const [done, setDone] = React.useState(false); + const confirm = () => { + window.arahMutate(() => { + const w = window.ARAH.wallet; + const cur = parseInt(String(w.balance).replace(/\D/g, '')) || 0; + const n = cur + parseInt(amount); + w.balance = 'A̧ ' + n; + w.brl = 'R$ ' + n + ',00'; + w.transactions.unshift({ + id: 'wt' + Date.now(), + label: 'Recarga de Aratá', + sub: 'via PIX', + val: '+ A̧ ' + amount, + icon: 'add', + neg: false + }); + }); + setDone(true); + }; + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + title: "Arat\xE1 adicionado!", + msg: `A̧ ${amount} entraram na sua carteira. A moeda circula só dentro do território de Camburi.`, + primaryLabel: "Ver carteira", + onPrimary: onClose, + accent: T.green + }); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 1 ? 'lock' : 'arrow_forward', + onClick: () => step < 1 ? setStep(1) : confirm() + }, step === 1 ? `Pagar R$ ${amount}` : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Adicionar Arat\xE1", + step: step, + steps: 2, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "1 Arat\xE1 = R$ 1,00 \xB7 lastreado pelo fundo comunit\xE1rio" + }, "Quanto adicionar?"), /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center', + padding: '18px 0' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 52, + color: T.fg, + letterSpacing: -2 + } + }, "A\u0327 ", amount || '0')), /*#__PURE__*/React.createElement(PillSelect, { + cols: 4, + value: amount, + onChange: setAmount, + options: ['50', '100', '200', '500'] + })), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Pague via PIX para creditar sua carteira." + }, "Pagamento"), /*#__PURE__*/React.createElement(PixPay, { + amount: `R$ ${amount},00` + }))); +} + +// ---- Participar de evento ---- +function JoinEventJourney({ + ctx, + onClose +}) { + const e = ctx || { + title: 'Mutirão de limpeza', + time: 'Sáb · 08:00', + place: 'Praça da Capela' + }; + const [going, setGoing] = React.useState('1'); + const [cal, setCal] = React.useState(true); + const [done, setDone] = React.useState(false); + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + icon: "event_available", + title: "Presen\xE7a confirmada!", + msg: `Te esperamos no "${e.title}". ${cal ? 'O evento foi adicionado à sua agenda e ' : ''}você receberá um lembrete no dia.`, + primaryLabel: "Concluir", + onPrimary: () => { + ctx?.onConfirm && ctx.onConfirm(); + onClose(); + }, + secondaryLabel: "Fechar", + onSecondary: onClose + }); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Participar do evento", + step: 0, + steps: 1, + onClose: onClose, + footer: /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: "event_available", + onClick: () => setDone(true) + }, "Confirmar presen\xE7a") + }, /*#__PURE__*/React.createElement(JStepTitle, { + sub: `${e.time} · ${e.place}` + }, e.title), /*#__PURE__*/React.createElement(JField, { + label: "Quantas pessoas v\xE3o com voc\xEA?" + }, /*#__PURE__*/React.createElement(PillSelect, { + cols: 4, + value: going, + onChange: setGoing, + options: ['Só eu', '1', '2', '3+'] + })), /*#__PURE__*/React.createElement("button", { + onClick: () => setCal(!cal), + style: { + width: '100%', + display: 'flex', + alignItems: 'center', + gap: 12, + padding: '14px 15px', + borderRadius: 14, + cursor: 'pointer', + background: T.cardFlat, + border: `1px solid ${T.line}`, + WebkitTapHighlightColor: 'transparent' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "calendar_add_on", + size: 20, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + textAlign: 'left', + fontFamily: T.sans, + fontSize: 14, + color: T.fg + } + }, "Adicionar \xE0 minha agenda"), /*#__PURE__*/React.createElement("div", { + style: { + width: 44, + height: 26, + borderRadius: 999, + background: cal ? T.greenSolid : T.cardHi, + position: 'relative', + transition: 'background .2s' + } + }, /*#__PURE__*/React.createElement("span", { + style: { + position: 'absolute', + top: 3, + left: cal ? 21 : 3, + width: 20, + height: 20, + borderRadius: '50%', + background: '#fff', + transition: 'left .2s' + } + })))); +} + +// ---- Abrir nova eleição (curador) ---- +function CreateElectionJourney({ + onClose +}) { + const [step, setStep] = React.useState(0); + const [type, setType] = React.useState('Conselho'); + const [deadline, setDeadline] = React.useState('7 dias'); + const [done, setDone] = React.useState(false); + if (done) return /*#__PURE__*/React.createElement(SuccessView, { + icon: "how_to_vote", + title: "Elei\xE7\xE3o aberta!", + msg: "A vota\xE7\xE3o foi publicada para todos os moradores de Camburi. Voc\xEA acompanha os resultados em tempo real na gest\xE3o.", + primaryLabel: "Concluir", + onPrimary: onClose, + accent: T.alert + }); + const next = () => step < 2 ? setStep(step + 1) : setDone(true); + const footer = /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: step === 2 ? 'how_to_vote' : 'arrow_forward', + onClick: next + }, step === 2 ? 'Abrir votação' : 'Continuar'); + return /*#__PURE__*/React.createElement(JourneyShell, { + title: "Abrir elei\xE7\xE3o", + step: step, + steps: 3, + onBack: () => setStep(step - 1), + onClose: onClose, + footer: footer + }, step === 0 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Governan\xE7a comunit\xE1ria do territ\xF3rio" + }, "Tipo de vota\xE7\xE3o"), /*#__PURE__*/React.createElement(JField, null, /*#__PURE__*/React.createElement(PillSelect, { + cols: 1, + value: type, + onChange: setType, + options: ['Conselho', 'Representante de tema', 'Consulta pública'] + })), /*#__PURE__*/React.createElement(JField, { + label: "T\xEDtulo" + }, /*#__PURE__*/React.createElement("input", { + placeholder: "Ex.: Conselho de Moradores 2026", + style: jInput + }))), step === 1 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, { + sub: "Quem pode se candidatar e por quanto tempo." + }, "Regras"), /*#__PURE__*/React.createElement(JField, { + label: "Prazo de vota\xE7\xE3o" + }, /*#__PURE__*/React.createElement(PillSelect, { + cols: 3, + value: deadline, + onChange: setDeadline, + options: ['3 dias', '7 dias', '15 dias'] + })), /*#__PURE__*/React.createElement(JField, { + label: "Candidatos", + hint: "No app real, moradores se inscrevem ou s\xE3o indicados." + }, /*#__PURE__*/React.createElement(Card, { + style: { + padding: 12 + } + }, ['Dona Marta', 'Seu Tião', 'Bruno Caiçara'].map(n => /*#__PURE__*/React.createElement("div", { + key: n, + style: { + display: 'flex', + alignItems: 'center', + gap: 10, + padding: '7px 0' + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: "#4F956F", + name: n, + size: 30, + resident: true + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 14, + color: T.fg + } + }, n), /*#__PURE__*/React.createElement(Icon, { + name: "check_circle", + size: 18, + color: T.green, + fill: 1 + })))))), step === 2 && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(JStepTitle, null, "Revise e abra"), /*#__PURE__*/React.createElement(Card, { + style: { + padding: '4px 16px' + } + }, /*#__PURE__*/React.createElement(ReviewRow, { + icon: "how_to_vote", + label: "Tipo", + value: type, + accent: T.alert + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "schedule", + label: "Prazo", + value: deadline + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "groups", + label: "Candidatos", + value: "3 moradores" + }), /*#__PURE__*/React.createElement(ReviewRow, { + icon: "visibility", + label: "Quem vota", + value: "Moradores de Camburi" + })))); +} +Object.assign(window, { + VoteJourney, + GroupBuyJoinJourney, + AddProductJourney, + WalletReceiveJourney, + WalletTopupJourney, + JoinEventJourney, + CreateElectionJourney +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens18.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens2.jsx +try { (() => { +// screens2.jsx — Create Post (with photo), Notifications. + +function CreatePostScreen({ + territory, + onPublish +}) { + const [type, setType] = React.useState('General'); + const [vis, setVis] = React.useState('Public'); + const [title, setTitle] = React.useState(''); + const [body, setBody] = React.useState(''); + const [photo, setPhoto] = React.useState(null); + const fileRef = React.useRef(null); + const pickPhoto = e => { + const f = e.target.files?.[0]; + if (f) setPhoto(URL.createObjectURL(f)); + }; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(Card, { + style: { + display: 'flex', + alignItems: 'center', + gap: 10, + padding: '11px 14px', + marginBottom: 16, + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement(Logo, { + size: 22 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + color: T.fg + } + }, "Publicando em ", /*#__PURE__*/React.createElement("strong", { + style: { + color: T.green, + fontWeight: 600 + } + }, territory.name))), /*#__PURE__*/React.createElement(Field, { + label: "T\xEDtulo" + }, /*#__PURE__*/React.createElement("input", { + value: title, + onChange: e => setTitle(e.target.value), + placeholder: "D\xEA um t\xEDtulo ao seu post", + style: inputStyle + })), /*#__PURE__*/React.createElement(Field, { + label: "Conte\xFAdo" + }, /*#__PURE__*/React.createElement("textarea", { + value: body, + onChange: e => setBody(e.target.value), + rows: 4, + placeholder: "O que voc\xEA quer compartilhar com a vila?", + style: { + ...inputStyle, + resize: 'none', + lineHeight: 1.5 + } + })), /*#__PURE__*/React.createElement(Field, { + label: "M\xEDdia" + }, /*#__PURE__*/React.createElement("input", { + ref: fileRef, + type: "file", + accept: "image/*", + onChange: pickPhoto, + style: { + display: 'none' + } + }), photo ? /*#__PURE__*/React.createElement("div", { + style: { + position: 'relative', + borderRadius: 14, + overflow: 'hidden', + border: `1px solid ${T.line}` + } + }, /*#__PURE__*/React.createElement("img", { + src: photo, + alt: "", + style: { + width: '100%', + height: 170, + objectFit: 'cover', + display: 'block' + } + }), /*#__PURE__*/React.createElement("button", { + onClick: () => setPhoto(null), + style: { + position: 'absolute', + top: 10, + right: 10, + width: 34, + height: 34, + borderRadius: '50%', + border: 'none', + background: 'rgba(11,12,10,0.7)', + backdropFilter: 'blur(6px)', + cursor: 'pointer', + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "close", + size: 19, + color: "#fff" + }))) : /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 9 + } + }, /*#__PURE__*/React.createElement(MediaBtn, { + icon: "image", + label: "Foto", + onClick: () => fileRef.current?.click() + }), /*#__PURE__*/React.createElement(MediaBtn, { + icon: "photo_camera", + label: "C\xE2mera", + onClick: () => fileRef.current?.click() + }), /*#__PURE__*/React.createElement(MediaBtn, { + icon: "location_on", + label: "Local", + onClick: () => {} + }))), /*#__PURE__*/React.createElement(Field, { + label: "Tipo" + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 9 + } + }, /*#__PURE__*/React.createElement(SegOption, { + active: type === 'General', + onClick: () => setType('General'), + icon: "chat_bubble", + tone: "green" + }, "Geral"), /*#__PURE__*/React.createElement(SegOption, { + active: type === 'Alert', + onClick: () => setType('Alert'), + icon: "warning", + tone: "alert" + }, "Alerta"))), /*#__PURE__*/React.createElement(Field, { + label: "Visibilidade" + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 9 + } + }, /*#__PURE__*/React.createElement(SegOption, { + active: vis === 'Public', + onClick: () => setVis('Public'), + icon: "public", + tone: "green" + }, "P\xFAblico"), /*#__PURE__*/React.createElement(SegOption, { + active: vis === 'ResidentsOnly', + onClick: () => setVis('ResidentsOnly'), + icon: "lock", + tone: "green" + }, "S\xF3 moradores"))), /*#__PURE__*/React.createElement("div", { + style: { + marginTop: 22 + } + }, /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: "send", + onClick: () => onPublish({ + type, + vis, + title, + body, + photo + }) + }, "Publicar no territ\xF3rio"))); +} +function MediaBtn({ + icon, + label, + onClick +}) { + return /*#__PURE__*/React.createElement("button", { + onClick: onClick, + style: { + flex: 1, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + gap: 7, + padding: '16px 8px', + borderRadius: 14, + cursor: 'pointer', + WebkitTapHighlightColor: 'transparent', + background: T.cardFlat, + border: `1px dashed ${T.lineHi}`, + color: T.fg2, + fontFamily: T.sans, + fontSize: 12.5, + fontWeight: 500 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: icon, + size: 22, + color: T.green + }), " ", label); +} +function Field({ + label, + children +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement("label", { + style: { + display: 'block', + fontFamily: T.sans, + fontSize: 12.5, + fontWeight: 600, + color: T.fg2, + marginBottom: 8, + letterSpacing: 0.1 + } + }, label), children); +} +const inputStyle = { + width: '100%', + boxSizing: 'border-box', + background: T.cardFlat, + color: T.fg, + border: `1px solid ${T.line}`, + borderRadius: 14, + padding: '13px 15px', + fontFamily: T.sans, + fontSize: 15, + outline: 'none' +}; +function SegOption({ + children, + active, + onClick, + icon, + tone +}) { + const c = tone === 'alert' ? T.alert : T.green; + const dim = tone === 'alert' ? T.alertDim : T.greenDim; + return /*#__PURE__*/React.createElement("button", { + onClick: onClick, + style: { + flex: 1, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + gap: 7, + padding: '12px', + borderRadius: 13, + cursor: 'pointer', + WebkitTapHighlightColor: 'transparent', + background: active ? dim : T.cardFlat, + color: active ? c : T.fg2, + border: `1px solid ${active ? 'transparent' : T.line}`, + fontFamily: T.sans, + fontSize: 14, + fontWeight: 500, + transition: 'all .15s' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: icon, + size: 17, + fill: active ? 1 : 0 + }), " ", children); +} +function NotificationsScreen({ + items, + onRead, + onOpen +}) { + const kindMeta = { + alert: { + icon: 'warning', + color: T.alert, + dim: T.alertDim + }, + event: { + icon: 'event', + color: T.blue, + dim: T.blueDim + }, + map: { + icon: 'map', + color: T.water, + dim: 'rgba(111,197,214,0.14)' + }, + connection: { + icon: 'group', + color: T.green, + dim: T.greenDim + }, + post: { + icon: 'article', + color: T.green, + dim: T.greenDim + } + }; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 12px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 8 + } + }, items.map(n => { + const m = kindMeta[n.kind] || kindMeta.post; + return /*#__PURE__*/React.createElement(Card, { + key: n.id, + onClick: () => { + onRead(n.id); + onOpen(n.link); + }, + style: { + display: 'flex', + gap: 13, + padding: 14, + position: 'relative', + background: n.read ? 'transparent' : T.cardGrad, + border: `1px solid ${n.read ? T.line : 'rgba(166,214,185,0.18)'}` + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 42, + height: 42, + borderRadius: 12, + flexShrink: 0, + background: m.dim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: m.icon, + size: 21, + color: m.color, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: n.read ? 500 : 600, + fontSize: 14.5, + color: T.fg, + letterSpacing: -0.2, + lineHeight: 1.3 + } + }, n.title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg2, + marginTop: 3, + lineHeight: 1.45 + } + }, n.body), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginTop: 6 + } + }, n.time)), !n.read && /*#__PURE__*/React.createElement("div", { + style: { + width: 8, + height: 8, + borderRadius: '50%', + background: T.green, + flexShrink: 0, + marginTop: 4 + } + })); + }))); +} +Object.assign(window, { + CreatePostScreen, + NotificationsScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens2.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens3.jsx +try { (() => { +// screens3.jsx — Profile hub (role switcher), Events (join/cancel), Settings, Território Health. + +function ProfileScreen({ + role, + onSetRole, + onOpen, + interests, + onToggleInterest +}) { + const p = window.ARAH.profile; + const roleLabel = { + visitante: 'Visitante', + morador: 'Morador', + curador: 'Curador' + }; + const tools = [{ + id: 'store', + icon: 'storefront', + label: 'Minha loja', + color: T.green, + badge: 'Novo' + }, { + id: 'chat', + icon: 'forum', + label: 'Mensagens', + color: T.green + }, { + id: 'saved', + icon: 'bookmark', + label: 'Salvos', + color: T.blue + }, { + id: 'settings', + icon: 'settings', + label: 'Configurações', + color: T.fg2 + }]; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 15, + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: p.avatar, + name: p.name, + size: 68, + resident: role !== 'visitante' + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 21, + color: T.fg, + letterSpacing: -0.4 + } + }, p.name), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 7, + marginTop: 4 + } + }, /*#__PURE__*/React.createElement(RoleBadge, { + role: role === 'visitante' ? 'visitante' : 'morador', + size: "md" + }), role === 'curador' && /*#__PURE__*/React.createElement("span", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4, + padding: '4px 10px', + borderRadius: 999, + background: T.alertDim, + color: T.alert, + fontFamily: T.sans, + fontSize: 12, + fontWeight: 600 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "shield_person", + size: 14, + fill: 1 + }), " Curador")))), /*#__PURE__*/React.createElement("p", { + style: { + margin: '0 0 14px', + fontFamily: T.sans, + fontSize: 14, + lineHeight: 1.55, + color: T.fg2 + } + }, p.bio), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 14, + marginBottom: 16, + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 7, + marginBottom: 10 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "switch_account", + size: 17, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + fontWeight: 600, + color: T.fg + } + }, "Ver como (demonstra\xE7\xE3o de jornada)")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 8 + } + }, ['visitante', 'morador', 'curador'].map(r => /*#__PURE__*/React.createElement("button", { + key: r, + onClick: () => onSetRole(r), + style: { + flex: 1, + padding: '9px 6px', + borderRadius: 11, + cursor: 'pointer', + WebkitTapHighlightColor: 'transparent', + background: role === r ? T.greenDim : T.cardFlat, + color: role === r ? T.green : T.fg2, + border: `1px solid ${role === r ? 'transparent' : T.line}`, + fontFamily: T.sans, + fontSize: 12.5, + fontWeight: 600, + transition: 'all .15s' + } + }, roleLabel[r]))), role === 'visitante' && /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "sm", + icon: "how_to_reg", + style: { + marginTop: 11 + }, + onClick: () => window.openJourney('residencia') + }, "Confirmar resid\xEAncia")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 10, + marginBottom: 18 + } + }, [['Posts', p.posts], ['Territórios', p.territories], ['Desde', p.since]].map(([k, v]) => /*#__PURE__*/React.createElement(Card, { + key: k, + style: { + flex: 1, + padding: '13px 10px', + textAlign: 'center' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 19, + color: T.fg + } + }, v), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginTop: 2, + letterSpacing: 0.2 + } + }, k)))), /*#__PURE__*/React.createElement(SectionLabel, { + icon: "account_circle" + }, "Minha conta"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gap: 10, + marginTop: 11, + marginBottom: 22 + } + }, tools.map(t => /*#__PURE__*/React.createElement(Card, { + key: t.id, + onClick: () => onOpen(t.id), + style: { + display: 'flex', + alignItems: 'center', + gap: 11, + padding: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 38, + height: 38, + borderRadius: 11, + background: `${t.color}1f`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: t.icon, + size: 20, + color: t.color, + fill: 1 + })), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 500, + color: T.fg, + lineHeight: 1.2 + } + }, t.label), t.badge && /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 9.5, + fontWeight: 700, + color: t.color, + background: `${t.color}1f`, + padding: '2px 6px', + borderRadius: 999, + letterSpacing: 0.3 + } + }, t.badge)))), /*#__PURE__*/React.createElement(SectionLabel, { + icon: "interests" + }, "Meus interesses"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3, + margin: '0 0 11px' + } + }, "Interesses personalizam o feed do territ\xF3rio."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexWrap: 'wrap', + gap: 8, + marginBottom: 22 + } + }, window.ARAH.interestPool.map(i => /*#__PURE__*/React.createElement(Chip, { + key: i, + active: interests.includes(i), + onClick: () => onToggleInterest(i), + icon: interests.includes(i) ? 'check' : 'add' + }, i))), /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + full: true, + icon: "logout", + onClick: () => onOpen('logout'), + style: { + color: T.alert, + borderColor: 'rgba(232,160,106,0.2)' + } + }, "Sair da conta")); +} +function SectionLabel({ + children, + icon +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: icon, + size: 18, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg, + letterSpacing: -0.2 + } + }, children)); +} +function EventsScreen({ + territory, + content, + role +}) { + const [status, setStatus] = React.useState(Object.fromEntries(content.events.map(e => [e.id, e.status]))); + const toggle = id => setStatus(s => ({ + ...s, + [id]: s[id] === 'confirmed' ? null : 'confirmed' + })); + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement("p", { + style: { + margin: '0 0 16px', + fontFamily: T.sans, + fontSize: 14, + color: T.fg2, + lineHeight: 1.5 + } + }, "Acontecendo em ", /*#__PURE__*/React.createElement("strong", { + style: { + color: T.green, + fontWeight: 600 + } + }, territory.name)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 11 + } + }, content.events.map(e => { + const confirmed = status[e.id] === 'confirmed'; + return /*#__PURE__*/React.createElement(Card, { + key: e.id, + glow: true, + style: { + display: 'flex', + gap: 14, + padding: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 52, + flexShrink: 0, + borderRadius: 13, + background: T.greenDim, + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'center', + padding: '8px 0' + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 21, + color: T.green, + lineHeight: 1 + } + }, e.day), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 10.5, + fontWeight: 600, + color: T.green, + letterSpacing: 1, + marginTop: 3 + } + }, e.mon)), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'inline-block', + fontFamily: T.sans, + fontSize: 10.5, + fontWeight: 600, + color: T.fg3, + letterSpacing: 0.8, + textTransform: 'uppercase', + marginBottom: 3 + } + }, e.tag), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15.5, + color: T.fg, + letterSpacing: -0.2, + lineHeight: 1.3 + } + }, e.title), /*#__PURE__*/React.createElement("p", { + style: { + margin: '5px 0 0', + fontFamily: T.sans, + fontSize: 13, + color: T.fg2, + lineHeight: 1.45 + } + }, e.desc), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 10, + marginTop: 8, + color: T.fg3, + fontFamily: T.sans, + fontSize: 12.5 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "schedule", + size: 14 + }), " ", e.time), /*#__PURE__*/React.createElement("span", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "place", + size: 14 + }), " ", e.place)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 10, + marginTop: 11 + } + }, /*#__PURE__*/React.createElement(Btn, { + kind: confirmed ? 'dark' : 'primary', + size: "sm", + icon: confirmed ? 'check_circle' : 'event_available', + onClick: () => { + if (!confirmed) window.openJourney('joinEvent', { + ...e, + onConfirm: () => toggle(e.id) + }); + }, + style: confirmed ? { + color: T.green, + borderColor: 'rgba(166,214,185,0.3)' + } : {} + }, confirmed ? 'Presença confirmada' : 'Participar'), confirmed && /*#__PURE__*/React.createElement("button", { + onClick: () => toggle(e.id), + style: { + background: 'none', + border: 'none', + cursor: 'pointer', + color: T.fg3, + fontFamily: T.sans, + fontSize: 12.5, + fontWeight: 500 + } + }, "Cancelar"), /*#__PURE__*/React.createElement("span", { + style: { + marginLeft: 'auto', + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, e.going + (confirmed ? 1 : 0), " v\xE3o")))); + }))); +} +function HealthScreen({ + territory, + content +}) { + const h = content.health; + const meters = [{ + label: 'Água potável', + val: h.agua, + icon: 'water_drop', + color: T.water, + unit: '%' + }, { + label: 'Árvores nativas', + val: h.nativas, + icon: 'park', + color: T.green, + unit: '%' + }]; + const counts = [{ + label: 'Nascentes', + val: h.nascentes, + icon: 'water', + color: T.water + }, { + label: 'Mirantes', + val: h.mirantes, + icon: 'landscape', + color: T.green + }, { + label: 'Santuários', + val: h.santuarios, + icon: 'forest', + color: T.green + }]; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement("p", { + style: { + margin: '0 0 16px', + fontFamily: T.sans, + fontSize: 14, + color: T.fg2, + lineHeight: 1.5 + } + }, "Indicadores vivos de ", /*#__PURE__*/React.createElement("strong", { + style: { + color: T.green, + fontWeight: 600 + } + }, territory.name), ", mantidos pela comunidade."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 11, + marginBottom: 14 + } + }, meters.map(m => /*#__PURE__*/React.createElement(Card, { + key: m.label, + style: { + padding: 16 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 10, + marginBottom: 11 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: m.icon, + size: 20, + color: m.color, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 14, + fontWeight: 500, + color: T.fg + } + }, m.label), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 18, + color: m.color + } + }, m.val, m.unit)), /*#__PURE__*/React.createElement("div", { + style: { + height: 8, + borderRadius: 999, + background: T.cardHi, + overflow: 'hidden' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: `${m.val}%`, + height: '100%', + borderRadius: 999, + background: `linear-gradient(90deg, ${m.color}aa, ${m.color})` + } + }))))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr 1fr', + gap: 10 + } + }, counts.map(c => /*#__PURE__*/React.createElement(Card, { + key: c.label, + style: { + padding: '16px 8px', + textAlign: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: c.icon, + size: 24, + color: c.color, + fill: 1 + }), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 22, + color: T.fg, + marginTop: 7 + } + }, c.val), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11, + color: T.fg3, + marginTop: 1 + } + }, c.label))))); +} +function SettingsScreen() { + const groups = [{ + title: 'Conta', + rows: [{ + icon: 'person', + label: 'Editar perfil', + detail: '' + }, { + icon: 'verified_user', + label: 'Confirmar residência', + detail: 'Visitante', + green: true + }] + }, { + title: 'Preferências', + rows: [{ + icon: 'notifications', + label: 'Notificações', + detail: 'Posts · Eventos · Alertas' + }, { + icon: 'public', + label: 'Idioma', + detail: 'Português' + }, { + icon: 'my_location', + label: 'Localização', + detail: 'Ativa', + green: true + }, { + icon: 'dark_mode', + label: 'Tema', + detail: 'Escuro' + }] + }, { + title: 'Privacidade', + rows: [{ + icon: 'shield', + label: 'Privacidade e dados', + detail: '' + }, { + icon: 'block', + label: 'Contas bloqueadas', + detail: '' + }] + }]; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, groups.map(g => /*#__PURE__*/React.createElement("div", { + key: g.title, + style: { + marginBottom: 18 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + fontWeight: 600, + letterSpacing: 0.8, + textTransform: 'uppercase', + color: T.fg3, + margin: '0 2px 9px' + } + }, g.title), /*#__PURE__*/React.createElement(Card, { + style: { + overflow: 'hidden' + } + }, g.rows.map((r, i) => /*#__PURE__*/React.createElement("div", { + key: r.label, + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: '14px 15px', + borderBottom: i === g.rows.length - 1 ? 'none' : `1px solid ${T.line}`, + cursor: 'pointer' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: r.icon, + size: 20, + color: T.fg2 + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 14.5, + color: T.fg + } + }, r.label), r.detail && /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: r.green ? T.green : T.fg3 + } + }, r.detail), /*#__PURE__*/React.createElement(Icon, { + name: "chevron_right", + size: 19, + color: T.fg3 + }))))))); +} +Object.assign(window, { + ProfileScreen, + EventsScreen, + HealthScreen, + SettingsScreen, + SectionLabel +}); + +// Saved / bookmarked content (posts + market items) +function SavedScreen() { + const [tab, setTab] = React.useState('posts'); + const posts = window.ARAH.content.t1.feed.slice(0, 2); + const items = window.ARAH.market.slice(0, 2); + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 8, + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(SegTab, { + active: tab === 'posts', + onClick: () => setTab('posts'), + icon: "article" + }, "Posts"), /*#__PURE__*/React.createElement(SegTab, { + active: tab === 'items', + onClick: () => setTab('items'), + icon: "storefront" + }, "Mercado")), tab === 'posts' ? /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 10 + } + }, posts.map(p => /*#__PURE__*/React.createElement(Card, { + key: p.id, + style: { + padding: 14, + display: 'flex', + gap: 12, + alignItems: 'flex-start' + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: p.avatar, + name: p.author, + size: 38, + resident: p.role === 'morador' + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14.5, + color: T.fg, + letterSpacing: -0.2, + lineHeight: 1.3 + } + }, p.title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 3 + } + }, p.author, " \xB7 ", p.time)), /*#__PURE__*/React.createElement(Icon, { + name: "bookmark", + size: 20, + color: T.green, + fill: 1 + })))) : /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 10 + } + }, items.map(m => /*#__PURE__*/React.createElement(Card, { + key: m.id, + style: { + padding: 14, + display: 'flex', + gap: 12, + alignItems: 'center' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 44, + height: 44, + borderRadius: 12, + background: `${m.avatar}22`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: m.icon, + size: 22, + color: T.green + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14.5, + color: T.fg, + letterSpacing: -0.2 + } + }, m.title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 2 + } + }, m.seller, " \xB7 ", m.price)), /*#__PURE__*/React.createElement(Icon, { + name: "bookmark", + size: 20, + color: T.green, + fill: 1 + })))), /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center', + color: T.fg3, + fontFamily: T.sans, + fontSize: 12.5, + padding: '18px 0 4px' + } + }, "Toque no marcador em qualquer post ou item para salvar aqui.")); +} +Object.assign(window, { + SavedScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens3.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens4.jsx +try { (() => { +// screens4.jsx — Map (geolocation + entities + health), Login, Onboarding, Territory sheet. + +// Slippy-tile math: lat/lng → tile x/y at zoom z +function lngLatToTile(lng, lat, z) { + const n = Math.pow(2, z); + const x = Math.floor((lng + 180) / 360 * n); + const latRad = lat * Math.PI / 180; + const y = Math.floor((1 - Math.log(Math.tan(latRad) + 1 / Math.cos(latRad)) / Math.PI) / 2 * n); + return { + x, + y + }; +} + +// Dark-styled OpenStreetMap tile mosaic. coords (geo) override tile; else tile prop; else Camburi. +function MapCanvas({ + height = 220, + coords = null, + tile = null, + mini = false, + entities = [], + onPin +}) { + const z = 13; + const center = coords ? lngLatToTile(coords.lng, coords.lat, z) : tile || { + x: 3057, + y: 4652 + }; + const tiles = []; + for (let dy = -1; dy <= 1; dy++) for (let dx = -1; dx <= 1; dx++) tiles.push({ + url: `https://tile.openstreetmap.org/${z}/${center.x + dx}/${center.y + dy}.png` + }); + return /*#__PURE__*/React.createElement("div", { + style: { + position: 'relative', + height, + overflow: 'hidden', + background: '#0a120d' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + width: 768, + height: 768, + left: '50%', + top: '50%', + transform: 'translate(-50%, -50%)', + display: 'grid', + gridTemplateColumns: 'repeat(3, 256px)', + gridTemplateRows: 'repeat(3, 256px)', + filter: 'invert(0.91) hue-rotate(165deg) saturate(0.55) brightness(0.92) contrast(0.98)' + } + }, tiles.map((t, i) => /*#__PURE__*/React.createElement("img", { + key: i, + src: t.url, + width: 256, + height: 256, + alt: "", + loading: "lazy", + style: { + display: 'block' + }, + crossOrigin: "anonymous" + }))), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + background: 'radial-gradient(120% 100% at 50% 50%, transparent 40%, rgba(11,18,13,0.55))', + mixBlendMode: 'multiply' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + left: '50%', + top: '50%', + transform: 'translate(-50%,-50%)', + width: height * 0.7, + height: height * 0.7, + borderRadius: '50%', + border: `2px solid ${T.green}`, + background: 'rgba(166,214,185,0.10)' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + left: '50%', + top: '50%', + transform: 'translate(-50%,-50%)', + display: 'flex', + flexDirection: 'column', + alignItems: 'center' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 16, + height: 16, + borderRadius: '50%', + background: T.alert, + border: '3px solid #fff', + boxShadow: '0 0 0 6px rgba(232,160,106,0.25)' + } + })), !mini && entities.map(e => /*#__PURE__*/React.createElement("button", { + key: e.id, + onClick: () => onPin && onPin(e), + style: { + position: 'absolute', + left: `${e.x}%`, + top: `${e.y}%`, + transform: 'translate(-50%,-100%)', + background: 'none', + border: 'none', + cursor: 'pointer', + padding: 0, + WebkitTapHighlightColor: 'transparent' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 34, + height: 34, + borderRadius: '50% 50% 50% 2px', + transform: 'rotate(45deg)', + background: 'rgba(16,20,16,0.85)', + backdropFilter: 'blur(4px)', + border: `1.5px solid ${e.color}`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + boxShadow: '0 6px 14px rgba(0,0,0,0.4)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: e.icon, + size: 16, + color: e.color, + fill: 1, + style: { + transform: 'rotate(-45deg)' + } + }))))); +} +function MapScreen({ + territory, + content, + focusId +}) { + const ents = content.entities; + const [coords, setCoords] = React.useState(null); + const [geoState, setGeoState] = React.useState('idle'); // idle|loading|ok|denied + const [sel, setSel] = React.useState(focusId ? ents.find(e => e.id === focusId) : null); + const locate = () => { + setGeoState('loading'); + if (!navigator.geolocation) { + setGeoState('denied'); + return; + } + navigator.geolocation.getCurrentPosition(pos => { + setCoords({ + lat: pos.coords.latitude, + lng: pos.coords.longitude + }); + setGeoState('ok'); + }, () => setGeoState('denied'), { + timeout: 8000 + }); + }; + return /*#__PURE__*/React.createElement("div", { + style: { + position: 'relative', + height: '100%' + } + }, /*#__PURE__*/React.createElement(MapCanvas, { + height: 760, + coords: coords, + tile: content.tile, + entities: ents, + onPin: setSel + }), /*#__PURE__*/React.createElement("button", { + onClick: locate, + style: { + position: 'absolute', + top: 14, + right: 16, + width: 44, + height: 44, + borderRadius: 14, + cursor: 'pointer', + background: T.glassGrad, + backdropFilter: 'blur(14px)', + WebkitBackdropFilter: 'blur(14px)', + border: `1px solid ${T.lineHi}`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: geoState === 'loading' ? 'sync' : 'my_location', + size: 22, + color: geoState === 'ok' ? T.green : T.fg, + fill: geoState === 'ok' ? 1 : 0, + style: geoState === 'loading' ? { + animation: 'spin 1s linear infinite' + } : {} + })), geoState !== 'idle' && /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + top: 16, + left: 16, + padding: '8px 13px', + borderRadius: 999, + background: T.glassGrad, + backdropFilter: 'blur(14px)', + border: `1px solid ${T.lineHi}`, + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg, + display: 'flex', + alignItems: 'center', + gap: 6 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "place", + size: 15, + color: T.alert, + fill: 1 + }), geoState === 'loading' ? 'Localizando…' : geoState === 'denied' ? 'Mostrando Camburi' : coords ? `${coords.lat.toFixed(3)}, ${coords.lng.toFixed(3)}` : ''), sel ? /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + left: 16, + right: 16, + bottom: 16, + padding: 16, + background: T.glassGrad, + backdropFilter: 'blur(16px)', + WebkitBackdropFilter: 'blur(16px)', + borderRadius: 20, + border: `1px solid ${T.lineHi}`, + boxShadow: '0 12px 30px rgba(0,0,0,0.45)' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 12 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 44, + height: 44, + borderRadius: 13, + background: `${sel.color}22`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: sel.icon, + size: 23, + color: sel.color, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 7 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg + } + }, sel.label), sel.confirmed ? /*#__PURE__*/React.createElement(Icon, { + name: "verified", + size: 16, + color: T.green, + fill: 1 + }) : /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 10.5, + color: T.alert, + background: T.alertDim, + padding: '2px 7px', + borderRadius: 999, + fontWeight: 600 + } + }, "em curadoria")), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg2, + marginTop: 2 + } + }, sel.sub)), /*#__PURE__*/React.createElement("button", { + onClick: () => setSel(null), + style: { + ...iconBtn, + width: 34, + height: 34 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "close", + size: 18, + color: T.fg2 + }))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 9, + marginTop: 13 + } + }, /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + size: "sm", + icon: "directions", + style: { + flex: 1 + } + }, "Rotas"), /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + size: "sm", + icon: sel.confirmed ? 'thumb_up' : 'how_to_reg', + style: { + flex: 1 + } + }, sel.confirmed ? 'Confirmar' : 'Validar'))) : /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + left: 16, + right: 16, + bottom: 16, + padding: 16, + background: T.glassGrad, + backdropFilter: 'blur(16px)', + WebkitBackdropFilter: 'blur(16px)', + borderRadius: 20, + border: `1px solid ${T.lineHi}`, + boxShadow: '0 12px 30px rgba(0,0,0,0.45)' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8, + marginBottom: 11 + } + }, /*#__PURE__*/React.createElement(Logo, { + size: 18, + mark: "png" + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg + } + }, territory.name), /*#__PURE__*/React.createElement("span", { + style: { + marginLeft: 'auto', + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, ents.length, " pontos")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexWrap: 'wrap', + gap: 12 + } + }, [['storefront', 'Lugares', T.green], ['water', 'Nascentes', T.water], ['landscape', 'Mirantes', T.green], ['event', 'Eventos', T.blue], ['warning', 'Alertas', T.alert]].map(([ic, lb, c]) => /*#__PURE__*/React.createElement("div", { + key: lb, + style: { + display: 'flex', + alignItems: 'center', + gap: 6 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: ic, + size: 16, + color: c, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2 + } + }, lb)))))); +} +function LoginScreen({ + onLogin +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + height: '100%', + display: 'flex', + flexDirection: 'column', + padding: '0 26px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + display: 'flex', + flexDirection: 'column', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 92, + marginBottom: 22 + } + }, /*#__PURE__*/React.createElement(Logo, { + size: 92, + mark: "png" + })), /*#__PURE__*/React.createElement(Eyebrow, null, "Territ\xF3rio-primeiro"), /*#__PURE__*/React.createElement("h1", { + style: { + margin: '10px 0 0', + fontFamily: T.display, + fontWeight: 700, + fontSize: 44, + lineHeight: 1.02, + color: T.fg, + letterSpacing: -1.2 + } + }, "Arah"), /*#__PURE__*/React.createElement("p", { + style: { + margin: '14px 0 0', + fontFamily: T.sans, + fontSize: 16, + lineHeight: 1.5, + color: T.fg2, + maxWidth: 300 + } + }, "A vida da sua comunidade, organizada pelo territ\xF3rio. Conecte-se com quem est\xE1 perto.")), /*#__PURE__*/React.createElement("div", { + style: { + paddingBottom: 40, + display: 'flex', + flexDirection: 'column', + gap: 11 + } + }, /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: "login", + onClick: onLogin + }, "Entrar com Google"), /*#__PURE__*/React.createElement(Btn, { + kind: "secondary", + full: true, + size: "lg", + icon: "mail", + onClick: onLogin + }, "Entrar com e-mail"), /*#__PURE__*/React.createElement("div", { + style: { + textAlign: 'center', + marginTop: 8, + fontFamily: T.sans, + fontSize: 13, + color: T.fg3 + } + }, "N\xE3o tem conta? ", /*#__PURE__*/React.createElement("span", { + style: { + color: T.green, + fontWeight: 600 + } + }, "Criar conta")))); +} +function OnboardingScreen({ + onContinue +}) { + const [sel, setSel] = React.useState('t1'); + const [coords, setCoords] = React.useState(null); + const [geo, setGeo] = React.useState('idle'); + const list = window.ARAH.territories; + const selT = list.find(t => t.id === sel); + React.useEffect(() => { + if (!navigator.geolocation) { + setGeo('denied'); + return; + } + setGeo('loading'); + navigator.geolocation.getCurrentPosition(pos => { + setCoords({ + lat: pos.coords.latitude, + lng: pos.coords.longitude + }); + setGeo('ok'); + }, () => setGeo('denied'), { + timeout: 8000 + }); + }, []); + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement("h1", { + style: { + margin: '4px 0 6px', + fontFamily: T.display, + fontWeight: 700, + fontSize: 25, + color: T.fg, + letterSpacing: -0.5 + } + }, "Escolha seu territ\xF3rio"), /*#__PURE__*/React.createElement("p", { + style: { + margin: '0 0 16px', + fontFamily: T.sans, + fontSize: 14, + lineHeight: 1.5, + color: T.fg2 + } + }, "Para ver o feed e participar, escolha um territ\xF3rio pr\xF3ximo a voc\xEA."), /*#__PURE__*/React.createElement(Card, { + style: { + display: 'flex', + alignItems: 'center', + gap: 11, + padding: '12px 14px', + marginBottom: 14 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: geo === 'ok' ? 'my_location' : geo === 'loading' ? 'sync' : 'location_off', + size: 20, + color: geo === 'denied' ? T.fg3 : T.green, + fill: geo === 'ok' ? 1 : 0, + style: geo === 'loading' ? { + animation: 'spin 1s linear infinite' + } : {} + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 600, + color: T.fg + } + }, geo === 'ok' ? 'Localização ativa' : geo === 'loading' ? 'Buscando localização…' : 'Localização indisponível'), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginTop: 1 + } + }, geo === 'ok' && coords ? `${coords.lat.toFixed(3)}, ${coords.lng.toFixed(3)} · privada` : 'Privada — não fica visível para outros.'))), /*#__PURE__*/React.createElement("div", { + style: { + borderRadius: 18, + overflow: 'hidden', + border: `1px solid ${T.line}`, + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(MapCanvas, { + height: 180, + coords: coords, + tile: window.ARAH.content.t1.tile, + entities: window.ARAH.content.t1.entities.slice(0, 3) + })), /*#__PURE__*/React.createElement(Eyebrow, { + style: { + marginBottom: 10 + } + }, "Pr\xF3ximos a voc\xEA"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 9, + marginBottom: 18 + } + }, list.slice(0, 3).map(t => { + const on = t.id === sel; + return /*#__PURE__*/React.createElement(Card, { + key: t.id, + onClick: () => setSel(t.id), + hi: on, + style: { + display: 'flex', + alignItems: 'center', + gap: 12, + padding: 13, + border: `1.5px solid ${on ? T.green : T.line}` + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "place", + size: 22, + color: on ? T.green : T.fg3, + fill: on ? 1 : 0 + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg + } + }, t.name), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 1 + } + }, t.distance, " km de dist\xE2ncia")), /*#__PURE__*/React.createElement(Icon, { + name: on ? 'check_circle' : 'radio_button_unchecked', + size: 21, + color: on ? T.green : T.fg3, + fill: on ? 1 : 0 + })); + })), /*#__PURE__*/React.createElement("p", { + style: { + margin: '0 0 12px', + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + lineHeight: 1.5 + } + }, "Ao continuar, voc\xEA entrar\xE1 como visitante deste territ\xF3rio."), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: "arrow_forward", + onClick: () => onContinue(sel) + }, "Continuar com ", selT.name)); +} +function TerritorySheet({ + activeId, + onPick, + onClose +}) { + return /*#__PURE__*/React.createElement(Sheet, { + onClose: onClose, + title: "Trocar de territ\xF3rio", + subtitle: "Voc\xEA participa como morador ou visitante." + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 9 + } + }, window.ARAH.territories.map(t => { + const on = t.id === activeId; + return /*#__PURE__*/React.createElement(Card, { + key: t.id, + onClick: () => onPick(t.id), + hi: on, + style: { + display: 'flex', + alignItems: 'center', + gap: 12, + padding: 13, + border: `1px solid ${on ? 'rgba(166,214,185,0.35)' : T.line}` + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 40, + height: 40, + borderRadius: 12, + flexShrink: 0, + background: on ? T.greenGrad : T.cardHi, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "forest", + size: 20, + color: on ? '#0C1B10' : T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg + } + }, t.name), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, t.region)), on && /*#__PURE__*/React.createElement(Icon, { + name: "check_circle", + size: 21, + color: T.green, + fill: 1 + })); + }))); +} + +// Reusable bottom sheet +function Sheet({ + children, + title, + subtitle, + onClose +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + zIndex: 100 + } + }, /*#__PURE__*/React.createElement("div", { + onClick: onClose, + style: { + position: 'absolute', + inset: 0, + background: 'rgba(0,0,0,0.6)', + backdropFilter: 'blur(2px)', + animation: 'fadeIn .25s ease' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + left: 0, + right: 0, + bottom: 0, + background: 'linear-gradient(180deg, #1A1D17, #131510)', + borderRadius: '26px 26px 0 0', + padding: '12px 18px 34px', + maxHeight: '80%', + overflow: 'auto', + border: `1px solid ${T.lineHi}`, + borderBottom: 'none', + animation: 'sheetUp .32s cubic-bezier(.16,1,.3,1)' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 38, + height: 4, + borderRadius: 999, + background: T.lineHi, + margin: '0 auto 16px' + } + }), title && /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 19, + color: T.fg, + marginBottom: 4, + letterSpacing: -0.3 + } + }, title), subtitle && /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg3, + marginBottom: 16 + } + }, subtitle), children)); +} +Object.assign(window, { + MapCanvas, + MapScreen, + LoginScreen, + OnboardingScreen, + TerritorySheet, + Sheet +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens4.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens5.jsx +try { (() => { +// screens5.jsx — Mercado (marketplace + compra coletiva) + Mensagens (chat). NEW (proposed). + +function MarketScreen({ + onJoinGroup, + joinedGroups +}) { + const [tab, setTab] = React.useState('mercado'); + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 12px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 8, + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(SegTab, { + active: tab === 'mercado', + onClick: () => setTab('mercado'), + icon: "storefront" + }, "Mercado local"), /*#__PURE__*/React.createElement(SegTab, { + active: tab === 'coletiva', + onClick: () => setTab('coletiva'), + icon: "groups" + }, "Compra coletiva")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8, + marginBottom: 14, + padding: '9px 12px', + borderRadius: 12, + background: T.blueDim + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "auto_awesome", + size: 16, + color: T.blue, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg2, + lineHeight: 1.4 + } + }, "Novo na Arah \u2014 economia local do territ\xF3rio.")), tab === 'mercado' ? /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gap: 11 + } + }, window.ARAH.market.map(m => /*#__PURE__*/React.createElement(Card, { + key: m.id, + glow: true, + onClick: () => window.openJourney('checkout', m), + style: { + padding: 0, + overflow: 'hidden' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + height: 84, + background: `linear-gradient(150deg, ${m.avatar}66, ${m.avatar}22)`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: m.icon, + size: 34, + color: T.fg, + fill: 0, + style: { + opacity: 0.9 + } + }), /*#__PURE__*/React.createElement("span", { + style: { + position: 'absolute', + top: 8, + left: 8, + fontFamily: T.sans, + fontSize: 10, + fontWeight: 600, + color: T.fg, + background: 'rgba(11,12,10,0.5)', + backdropFilter: 'blur(4px)', + padding: '3px 8px', + borderRadius: 999 + } + }, m.tag)), /*#__PURE__*/React.createElement("div", { + style: { + padding: 12 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14, + color: T.fg, + lineHeight: 1.25, + letterSpacing: -0.2 + } + }, m.title), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 5, + marginTop: 6, + color: T.fg3, + fontFamily: T.sans, + fontSize: 11.5 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: m.avatar, + name: m.seller, + size: 16 + }), " ", m.seller), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + marginTop: 10 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 15, + color: T.green + } + }, m.price), /*#__PURE__*/React.createElement("button", { + onClick: e => { + e.stopPropagation(); + window.openJourney('checkout', m); + }, + style: { + width: 32, + height: 32, + borderRadius: 10, + border: 'none', + background: T.greenDim, + cursor: 'pointer', + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "add_shopping_cart", + size: 17, + color: T.green + }))))))) : /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 12 + } + }, window.ARAH.groupBuys.map(g => { + const joined = joinedGroups[g.id]; + const count = g.joined + (joined ? 1 : 0); + const pct = Math.min(100, Math.round(count / g.goal * 100)); + return /*#__PURE__*/React.createElement(Card, { + key: g.id, + glow: true, + style: { + padding: 16 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 12, + marginBottom: 13 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 46, + height: 46, + borderRadius: 13, + background: T.greenDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: g.icon, + size: 24, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15.5, + color: T.fg, + letterSpacing: -0.2, + lineHeight: 1.25 + } + }, g.title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 2 + } + }, "Organizado por ", g.org, " \xB7 ", g.deadline))), /*#__PURE__*/React.createElement("div", { + style: { + height: 8, + borderRadius: 999, + background: T.cardHi, + overflow: 'hidden' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: `${pct}%`, + height: '100%', + borderRadius: 999, + background: T.greenGrad, + transition: 'width .4s var(--ease)' + } + })), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + marginTop: 9 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2 + } + }, /*#__PURE__*/React.createElement("strong", { + style: { + color: T.fg, + fontWeight: 600 + } + }, count), " de ", g.goal, " ", g.unit, " \xB7 ", pct, "%"), /*#__PURE__*/React.createElement(Btn, { + kind: joined ? 'dark' : 'primary', + size: "sm", + icon: joined ? 'check' : 'group_add', + onClick: () => window.openJourney('groupBuy', { + ...window.ARAH.groupBuyDetail, + title: g.title, + icon: g.icon, + onConfirm: () => onJoinGroup(g.id) + }) + }, joined ? 'Participando' : 'Participar'))); + }))); +} +function SegTab({ + children, + active, + onClick, + icon +}) { + return /*#__PURE__*/React.createElement("button", { + onClick: onClick, + style: { + flex: 1, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + gap: 7, + padding: '11px', + borderRadius: 13, + cursor: 'pointer', + WebkitTapHighlightColor: 'transparent', + background: active ? T.greenDim : T.cardFlat, + color: active ? T.green : T.fg2, + border: `1px solid ${active ? 'transparent' : T.line}`, + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 600, + transition: 'all .15s' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: icon, + size: 17, + fill: active ? 1 : 0 + }), " ", children); +} + +// Chat list +function ChatListScreen({ + onOpen +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 12px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 4 + } + }, window.ARAH.chats.map(c => /*#__PURE__*/React.createElement("button", { + key: c.id, + onClick: () => onOpen(c.id), + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: '12px 6px', + textAlign: 'left', + cursor: 'pointer', + background: 'none', + border: 'none', + borderBottom: `1px solid ${T.line}`, + WebkitTapHighlightColor: 'transparent' + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: c.avatar, + name: c.name, + size: 48, + resident: c.role === 'morador' + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 7 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15, + color: T.fg, + letterSpacing: -0.2 + } + }, c.name), /*#__PURE__*/React.createElement("span", { + style: { + marginLeft: 'auto', + fontFamily: T.sans, + fontSize: 11.5, + color: c.unread ? T.green : T.fg3 + } + }, c.time)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8, + marginTop: 2 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 13, + color: c.unread ? T.fg : T.fg3, + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + fontWeight: c.unread ? 500 : 400 + } + }, c.last), c.unread > 0 && /*#__PURE__*/React.createElement("span", { + style: { + minWidth: 18, + height: 18, + padding: '0 5px', + borderRadius: 999, + background: T.greenSolid, + color: '#0C1B10', + fontFamily: T.sans, + fontSize: 11, + fontWeight: 700, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, c.unread))))))); +} + +// Chat thread +function ChatThreadScreen({ + chatId +}) { + const chat = window.ARAH.chats.find(c => c.id === chatId); + const [msgs, setMsgs] = React.useState(chat.thread); + const [draft, setDraft] = React.useState(''); + const scrollRef = React.useRef(null); + const send = () => { + if (!draft.trim()) return; + setMsgs(m => [...m, { + me: true, + body: draft.trim(), + time: 'agora' + }]); + setDraft(''); + }; + React.useEffect(() => { + if (scrollRef.current) scrollRef.current.scrollTop = scrollRef.current.scrollHeight; + }, [msgs]); + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + height: '100%' + } + }, /*#__PURE__*/React.createElement("div", { + ref: scrollRef, + className: "appscroll", + style: { + flex: 1, + overflowY: 'auto', + padding: '4px 16px 12px', + display: 'flex', + flexDirection: 'column', + gap: 9 + } + }, msgs.map((m, i) => /*#__PURE__*/React.createElement("div", { + key: i, + style: { + alignSelf: m.me ? 'flex-end' : 'flex-start', + maxWidth: '78%' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + padding: '10px 14px', + borderRadius: m.me ? '16px 16px 4px 16px' : '16px 16px 16px 4px', + background: m.me ? T.greenGrad : T.cardGrad, + color: m.me ? '#0C1B10' : T.fg, + border: m.me ? 'none' : `1px solid ${T.line}`, + fontFamily: T.sans, + fontSize: 14.5, + lineHeight: 1.45 + } + }, m.body), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 10.5, + color: T.fg3, + marginTop: 3, + textAlign: m.me ? 'right' : 'left', + padding: '0 4px' + } + }, m.time)))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 9, + padding: '12px 16px 16px', + borderTop: `1px solid ${T.line}`, + background: T.bg2 + } + }, /*#__PURE__*/React.createElement("button", { + style: { + ...iconBtn, + width: 42, + height: 42, + borderRadius: '50%' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "add", + size: 22, + color: T.fg2 + })), /*#__PURE__*/React.createElement("input", { + value: draft, + onChange: e => setDraft(e.target.value), + onKeyDown: e => e.key === 'Enter' && send(), + placeholder: "Mensagem\u2026", + style: { + flex: 1, + background: T.cardFlat, + color: T.fg, + border: `1px solid ${T.line}`, + borderRadius: 999, + padding: '11px 16px', + fontFamily: T.sans, + fontSize: 14, + outline: 'none' + } + }), /*#__PURE__*/React.createElement("button", { + onClick: send, + style: { + width: 42, + height: 42, + borderRadius: '50%', + border: 'none', + background: T.greenGrad, + cursor: 'pointer', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + boxShadow: T.greenGlow, + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "send", + size: 19, + color: "#0C1B10", + fill: 1 + })))); +} +Object.assign(window, { + MarketScreen, + ChatListScreen, + ChatThreadScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens5.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens6.jsx +try { (() => { +// screens6.jsx — Eleições/Votação (NEW, visual) + Gestão do território (curador journey). + +function ElectionsScreen({ + role +}) { + const [choice, setChoice] = React.useState({}); // selected candidate per election (not yet final) + const [voted, setVoted] = React.useState({}); // confirmed votes per election + const elections = [{ + id: 'el1', + title: 'Conselho de Moradores 2026', + status: 'open', + ends: 'encerra em 3 dias', + voters: 412, + desc: 'Escolha 1 representante para o conselho do território.', + candidates: [{ + id: 'c1', + name: 'Dona Marta', + avatar: '#C9962B', + role: 'morador', + pitch: 'Pesca artesanal e feira', + pct: 38 + }, { + id: 'c2', + name: 'Seu Tião', + avatar: '#4F956F', + role: 'morador', + pitch: 'Saneamento e águas', + pct: 34 + }, { + id: 'c3', + name: 'Bruno Caiçara', + avatar: '#377B57', + role: 'morador', + pitch: 'Trilhas e turismo de base', + pct: 28 + }] + }, { + id: 'el2', + title: 'Representante de águas', + status: 'closed', + ends: 'encerrada', + voters: 388, + desc: 'Resultado final da votação.', + winner: 'Coletivo Maré', + candidates: [{ + id: 'c4', + name: 'Coletivo Maré', + avatar: '#2A6FDB', + role: 'morador', + pitch: 'Captação da nascente', + pct: 61, + won: true + }, { + id: 'c5', + name: 'Assoc. de Pescadores', + avatar: '#4F956F', + role: 'morador', + pitch: 'Poços comunitários', + pct: 39 + }] + }]; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8, + marginBottom: 14, + padding: '9px 12px', + borderRadius: 12, + background: T.alertDim + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "auto_awesome", + size: 16, + color: T.alert, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg2, + lineHeight: 1.4 + } + }, "Nova feature \u2014 governan\xE7a comunit\xE1ria do territ\xF3rio.")), role === 'visitante' && /*#__PURE__*/React.createElement(Card, { + style: { + padding: 13, + marginBottom: 14, + display: 'flex', + alignItems: 'center', + gap: 10, + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "lock", + size: 18, + color: T.fg3 + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2 + } + }, "S\xF3 moradores votam. Confirme resid\xEAncia para participar.")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 14 + } + }, elections.map(el => { + const myVote = choice[el.id]; + const hasVoted = !!voted[el.id]; + const showResults = el.status === 'closed' || hasVoted; + const canVote = role !== 'visitante' && el.status === 'open'; + return /*#__PURE__*/React.createElement(Card, { + key: el.id, + glow: true, + style: { + padding: 16 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'flex-start', + gap: 10, + marginBottom: 4 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 16.5, + color: T.fg, + letterSpacing: -0.3 + } + }, el.title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2, + marginTop: 3 + } + }, el.desc)), /*#__PURE__*/React.createElement("span", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4, + padding: '4px 10px', + borderRadius: 999, + flexShrink: 0, + background: el.status === 'open' ? T.greenDim : 'rgba(166,172,158,0.12)', + color: el.status === 'open' ? T.green : T.fg3, + fontFamily: T.sans, + fontSize: 11, + fontWeight: 600 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: el.status === 'open' ? 'how_to_vote' : 'lock', + size: 13, + fill: 1 + }), " ", el.status === 'open' ? 'Aberta' : 'Encerrada')), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginBottom: 13 + } + }, el.ends, " \xB7 ", el.voters, " votos"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 9 + } + }, el.candidates.map(c => { + const selected = myVote === c.id; + return /*#__PURE__*/React.createElement("button", { + key: c.id, + disabled: !canVote || hasVoted, + onClick: () => canVote && !hasVoted && setChoice(v => ({ + ...v, + [el.id]: c.id + })), + style: { + position: 'relative', + display: 'flex', + alignItems: 'center', + gap: 11, + padding: 11, + textAlign: 'left', + borderRadius: 13, + cursor: canVote ? 'pointer' : 'default', + WebkitTapHighlightColor: 'transparent', + overflow: 'hidden', + background: T.cardFlat, + border: `1px solid ${selected || c.won ? c.won ? T.green : 'rgba(166,214,185,0.4)' : T.line}` + } + }, showResults && /*#__PURE__*/React.createElement("div", { + style: { + position: 'absolute', + inset: 0, + width: `${c.pct}%`, + background: c.won ? 'rgba(166,214,185,0.16)' : 'rgba(166,214,185,0.08)' + } + }), /*#__PURE__*/React.createElement(Avatar, { + color: c.avatar, + name: c.name, + size: 38, + resident: true, + style: { + position: 'relative' + } + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0, + position: 'relative' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14, + color: T.fg + } + }, c.name), c.won && /*#__PURE__*/React.createElement(Icon, { + name: "emoji_events", + size: 15, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 1 + } + }, c.pitch)), /*#__PURE__*/React.createElement("div", { + style: { + position: 'relative', + display: 'flex', + alignItems: 'center', + gap: 8 + } + }, showResults && /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 15, + color: c.won ? T.green : T.fg2 + } + }, c.pct, "%"), canVote && /*#__PURE__*/React.createElement(Icon, { + name: selected ? 'radio_button_checked' : 'radio_button_unchecked', + size: 22, + color: selected ? T.green : T.fg3, + fill: selected ? 1 : 0 + }))); + })), canVote && /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "md", + icon: hasVoted ? 'check_circle' : 'how_to_vote', + style: { + marginTop: 13, + opacity: hasVoted || myVote ? 1 : 0.5 + }, + onClick: () => { + if (hasVoted || !myVote) return; + const cand = el.candidates.find(x => x.id === myVote); + window.openJourney('vote', { + election: el, + candidate: cand, + onConfirm: () => setVoted(v => ({ + ...v, + [el.id]: true + })) + }); + } + }, hasVoted ? 'Voto registrado' : myVote ? 'Confirmar voto' : 'Escolha um candidato')); + }))); +} + +// Território management — curador journey +function ManageScreen({ + territory +}) { + const [done, setDone] = React.useState({}); + const queue = [{ + id: 'q1', + kind: 'Entidade', + icon: 'landscape', + label: 'Mirante da Pedra', + sub: 'Sugerido por Bruno · validar local', + color: T.green + }, { + id: 'q2', + kind: 'Post', + icon: 'flag', + label: 'Post sinalizado', + sub: 'Possível spam · revisar', + color: T.alert + }, { + id: 'q3', + kind: 'Membro', + icon: 'how_to_reg', + label: 'Confirmar residência', + sub: 'Ana Ribeiro · comprovante enviado', + color: T.blue + }]; + const stats = [{ + label: 'Moradores', + val: '1.284', + icon: 'groups' + }, { + label: 'Na curadoria', + val: '3', + icon: 'pending_actions' + }, { + label: 'Entidades', + val: '6', + icon: 'location_on' + }]; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(Card, { + style: { + display: 'flex', + alignItems: 'center', + gap: 11, + padding: 14, + marginBottom: 16, + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 40, + height: 40, + borderRadius: 12, + background: T.alertDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "shield_person", + size: 21, + color: T.alert, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 600, + color: T.fg + } + }, "Voc\xEA \xE9 curador de ", territory.name), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 1 + } + }, "Cuide do feed, do mapa e da comunidade."))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr 1fr', + gap: 10, + marginBottom: 20 + } + }, stats.map(s => /*#__PURE__*/React.createElement(Card, { + key: s.label, + style: { + padding: '14px 8px', + textAlign: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: s.icon, + size: 20, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 19, + color: T.fg, + marginTop: 6 + } + }, s.val), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 10.5, + color: T.fg3, + marginTop: 1 + } + }, s.label)))), /*#__PURE__*/React.createElement(SectionLabel, { + icon: "rule" + }, "Fila de curadoria"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 10, + marginTop: 11, + marginBottom: 20 + } + }, queue.filter(q => !done[q.id]).map(q => /*#__PURE__*/React.createElement(Card, { + key: q.id, + style: { + padding: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 11, + marginBottom: 12 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 38, + height: 38, + borderRadius: 11, + background: `${q.color}1f`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: q.icon, + size: 20, + color: q.color, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 10, + fontWeight: 600, + letterSpacing: 0.6, + textTransform: 'uppercase', + color: q.color + } + }, q.kind)), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14.5, + color: T.fg, + marginTop: 1 + } + }, q.label), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 1 + } + }, q.sub))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 9 + } + }, /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + size: "sm", + icon: "check", + style: { + flex: 1 + }, + onClick: () => setDone(d => ({ + ...d, + [q.id]: true + })) + }, "Aprovar"), /*#__PURE__*/React.createElement(Btn, { + kind: "dark", + size: "sm", + icon: "close", + style: { + flex: 1, + color: T.alert + }, + onClick: () => setDone(d => ({ + ...d, + [q.id]: true + })) + }, "Recusar")))), queue.every(q => done[q.id]) && /*#__PURE__*/React.createElement(Card, { + style: { + padding: 22, + textAlign: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "task_alt", + size: 28, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + color: T.fg2, + marginTop: 8 + } + }, "Fila de curadoria zerada. Bom trabalho!"))), /*#__PURE__*/React.createElement(SectionLabel, { + icon: "how_to_vote" + }, "Elei\xE7\xF5es do territ\xF3rio"), /*#__PURE__*/React.createElement(Card, { + onClick: () => window.openJourney('createElection'), + style: { + padding: 14, + marginTop: 11, + display: 'flex', + alignItems: 'center', + gap: 11 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 38, + height: 38, + borderRadius: 11, + background: T.alertDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "add", + size: 20, + color: T.alert + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 13.5, + fontWeight: 600, + color: T.fg + } + }, "Abrir nova elei\xE7\xE3o"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, "Conselho \xB7 representantes \xB7 consultas")), /*#__PURE__*/React.createElement(Icon, { + name: "chevron_right", + size: 20, + color: T.fg3 + }))); +} +Object.assign(window, { + ElectionsScreen, + ManageScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens6.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens7.jsx +try { (() => { +// screens7.jsx — Minha loja: abrir loja, vender produtos, configuração de pagamento. NEW (proposed). + +function StoreScreen() { + const store = window.ARAH.myStore; + const [open, setOpen] = React.useState(store.open); + const [products, setProducts] = React.useState(store.products); + const [pay, setPay] = React.useState(store.payment); + if (!open) { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8, + marginBottom: 16, + padding: '9px 12px', + borderRadius: 12, + background: T.greenDim + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "auto_awesome", + size: 16, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg2, + lineHeight: 1.4 + } + }, "Novo na Arah \u2014 venda no mercado do seu territ\xF3rio.")), /*#__PURE__*/React.createElement(Card, { + glow: true, + style: { + padding: 22, + textAlign: 'center', + marginBottom: 18 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 64, + height: 64, + borderRadius: 18, + background: T.greenDim, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + margin: '0 auto 14px' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "storefront", + size: 32, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 21, + color: T.fg, + letterSpacing: -0.4 + } + }, "Abra sua loja"), /*#__PURE__*/React.createElement("p", { + style: { + margin: '8px auto 0', + fontFamily: T.sans, + fontSize: 14, + lineHeight: 1.5, + color: T.fg2, + maxWidth: 290 + } + }, "Venda produtos e servi\xE7os direto para a sua comunidade. Sem intermedi\xE1rio, com pagamento via PIX.")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 11, + marginBottom: 22 + } + }, [['sell', 'Anuncie produtos e serviços', 'Comida, artesanato, passeios, aulas.'], ['account_balance_wallet', 'Receba via PIX', 'Sem taxa entre moradores do território.'], ['verified_user', 'Confiança local', 'Compradores e vendedores do mesmo território.']].map(([ic, t, s]) => /*#__PURE__*/React.createElement("div", { + key: t, + style: { + display: 'flex', + gap: 13, + alignItems: 'center' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 40, + height: 40, + borderRadius: 12, + background: T.cardHi, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: ic, + size: 20, + color: T.green, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 14, + fontWeight: 600, + color: T.fg + } + }, t), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3, + marginTop: 1 + } + }, s))))), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "lg", + icon: "add_business", + onClick: () => setOpen(true) + }, "Abrir minha loja")); + } + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(Card, { + glow: true, + style: { + padding: 16, + marginBottom: 16, + background: T.cardHiGrad + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 12 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 52, + height: 52, + borderRadius: 15, + background: T.greenGrad, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "storefront", + size: 26, + color: "#0C1B10", + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 17, + color: T.fg, + letterSpacing: -0.3 + } + }, store.name), /*#__PURE__*/React.createElement("div", { + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 4, + marginTop: 3, + fontFamily: T.sans, + fontSize: 12, + color: T.green + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "circle", + size: 9, + fill: 1 + }), " Loja ativa em Camburi"))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 10, + marginTop: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + background: 'rgba(0,0,0,0.18)', + borderRadius: 13, + padding: '11px 12px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 17, + color: T.fg + } + }, store.sales.month), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11, + color: T.fg3, + marginTop: 1 + } + }, "Vendas no m\xEAs")), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + background: 'rgba(0,0,0,0.18)', + borderRadius: 13, + padding: '11px 12px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 17, + color: T.fg + } + }, store.sales.orders), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11, + color: T.fg3, + marginTop: 1 + } + }, "Pedidos")))), /*#__PURE__*/React.createElement(SectionLabel, { + icon: "account_balance_wallet" + }, "Pagamento"), /*#__PURE__*/React.createElement(Card, { + style: { + overflow: 'hidden', + margin: '11px 0 22px' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: '14px 15px', + borderBottom: `1px solid ${T.line}` + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "pix", + size: 20, + color: T.water, + fill: 1 + }), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 14, + color: T.fg + } + }, "Chave PIX"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.mono || 'monospace', + fontSize: 12, + color: T.fg3, + marginTop: 1 + } + }, pay.pix)), /*#__PURE__*/React.createElement(Icon, { + name: "edit", + size: 18, + color: T.fg3 + })), /*#__PURE__*/React.createElement("div", { + style: { + padding: '14px 15px', + borderBottom: `1px solid ${T.line}` + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 14, + color: T.fg, + marginBottom: 9 + } + }, "Formas de pagamento"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 8, + flexWrap: 'wrap' + } + }, ['PIX', 'Cartão', 'Dinheiro'].map(m => { + const on = pay.methods.includes(m); + return /*#__PURE__*/React.createElement("button", { + key: m, + onClick: () => setPay(p => ({ + ...p, + methods: on ? p.methods.filter(x => x !== m) : [...p.methods, m] + })), + style: { + display: 'inline-flex', + alignItems: 'center', + gap: 6, + padding: '7px 13px', + borderRadius: 999, + cursor: 'pointer', + background: on ? T.greenDim : T.cardFlat, + color: on ? T.green : T.fg2, + border: `1px solid ${on ? 'transparent' : T.line}`, + fontFamily: T.sans, + fontSize: 13, + fontWeight: 500 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: on ? 'check' : 'add', + size: 15 + }), " ", m); + }))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: '14px 15px', + borderBottom: `1px solid ${T.line}` + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "percent", + size: 20, + color: T.fg2 + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 14, + color: T.fg + } + }, "Taxa entre moradores"), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 14, + color: T.green + } + }, pay.fee)), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: '14px 15px' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "account_balance", + size: 20, + color: T.fg2 + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 14, + color: T.fg + } + }, "Conta de repasse"), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3 + } + }, pay.payout))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + marginBottom: 11 + } + }, /*#__PURE__*/React.createElement(SectionLabel, { + icon: "inventory_2" + }, "Meus produtos"), /*#__PURE__*/React.createElement("button", { + onClick: () => window.openJourney('addProduct', { + onConfirm: prod => { + setProducts(p => [prod, ...p]); + window.arahMutate(() => { + window.ARAH.myStore.products.unshift(prod); + }); + } + }), + style: { + marginLeft: 'auto', + display: 'inline-flex', + alignItems: 'center', + gap: 5, + background: 'none', + border: 'none', + cursor: 'pointer', + color: T.green, + fontFamily: T.sans, + fontSize: 13, + fontWeight: 600 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "add", + size: 17 + }), " Adicionar")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 10 + } + }, products.map(p => /*#__PURE__*/React.createElement(Card, { + key: p.id, + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: 13 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 44, + height: 44, + borderRadius: 12, + background: T.cardHi, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: p.icon, + size: 22, + color: T.green, + fill: 0 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14.5, + color: T.fg, + letterSpacing: -0.2 + } + }, p.title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3, + marginTop: 1 + } + }, p.tag, " \xB7 ", p.price)), /*#__PURE__*/React.createElement("button", { + onClick: () => setProducts(ps => ps.map(x => x.id === p.id ? { + ...x, + active: !x.active + } : x)), + style: { + width: 46, + height: 27, + borderRadius: 999, + border: 'none', + cursor: 'pointer', + position: 'relative', + flexShrink: 0, + background: p.active ? T.greenSolid : T.cardHi, + transition: 'background .2s' + } + }, /*#__PURE__*/React.createElement("span", { + style: { + position: 'absolute', + top: 3, + left: p.active ? 22 : 3, + width: 21, + height: 21, + borderRadius: '50%', + background: '#fff', + transition: 'left .2s' + } + })))))); +} +Object.assign(window, { + StoreScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens7.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens8.jsx +try { (() => { +// screens8.jsx — Serviços hub: full feature directory by category + status badges. +// The gateway to the entire backlog, visually previewed. + +function ServicesHubScreen({ + territory, + onOpen, + role +}) { + const cats = window.ARAH.serviceCategories; + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 14px' + } + }, /*#__PURE__*/React.createElement("p", { + style: { + margin: '0 0 18px', + fontFamily: T.sans, + fontSize: 14, + lineHeight: 1.5, + color: T.fg2 + } + }, "Tudo que a vida em ", /*#__PURE__*/React.createElement("strong", { + style: { + color: T.green, + fontWeight: 600 + } + }, territory.name), " precisa \u2014 economia, servi\xE7os, governan\xE7a e cuidado com o lugar."), cats.map(cat => /*#__PURE__*/React.createElement("div", { + key: cat.id, + style: { + marginBottom: 24 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 10, + marginBottom: 13 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 34, + height: 34, + borderRadius: 10, + background: `${cat.color}1f`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: cat.icon, + size: 19, + color: cat.color, + fill: 1 + })), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg, + letterSpacing: -0.2 + } + }, cat.label), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3 + } + }, cat.desc))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'grid', + gridTemplateColumns: '1fr 1fr', + gap: 10 + } + }, cat.items.map(it => /*#__PURE__*/React.createElement(Card, { + key: it.id, + onClick: () => onOpen(it.id), + style: { + padding: 13, + position: 'relative' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 9, + marginBottom: 9 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 34, + height: 34, + borderRadius: 10, + background: it.status === 'live' ? T.greenDim : 'rgba(255,255,255,0.05)', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: it.icon, + size: 19, + color: it.status === 'live' ? T.green : T.fg2, + fill: it.status === 'live' ? 1 : 0 + })), it.status === 'live' ? /*#__PURE__*/React.createElement("span", { + style: statusPill(T.green, T.greenDim) + }, /*#__PURE__*/React.createElement(Icon, { + name: "check", + size: 11 + }), "No ar") : /*#__PURE__*/React.createElement("span", { + style: statusPill(T.amber || '#E8A06A', T.alertDim) + }, "Em breve")), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 13.5, + color: T.fg, + letterSpacing: -0.2, + lineHeight: 1.2 + } + }, it.label), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 11.5, + color: T.fg3, + marginTop: 2 + } + }, it.sub), it.phase && /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 10, + color: T.fg3, + marginTop: 6, + opacity: 0.8 + } + }, it.phase)))))), /*#__PURE__*/React.createElement(Card, { + style: { + padding: 15, + display: 'flex', + alignItems: 'center', + gap: 11, + background: T.cardHiGrad, + marginTop: 4 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "map", + size: 20, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg2, + lineHeight: 1.4 + } + }, "Roadmap aberto: 16 de 48 fases entregues. As funcionalidades chegam em ondas, no ritmo da comunidade."))); +} +function statusPill(color, bg) { + return { + marginLeft: 'auto', + display: 'inline-flex', + alignItems: 'center', + gap: 3, + padding: '3px 8px', + borderRadius: 999, + background: bg, + color, + fontFamily: T.sans, + fontSize: 10, + fontWeight: 700, + letterSpacing: 0.2 + }; +} + +// Reusable "preview / roadmap" banner shown atop soon-features +function SoonBanner({ + phase, + children +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 9, + marginBottom: 16, + padding: '10px 13px', + borderRadius: 13, + background: T.alertDim + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "auto_awesome", + size: 16, + color: T.amber || '#E8A06A', + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + flex: 1, + fontFamily: T.sans, + fontSize: 12, + color: T.fg2, + lineHeight: 1.4 + } + }, children), phase && /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 10, + fontWeight: 700, + color: T.amber || '#E8A06A', + background: 'rgba(232,160,106,0.16)', + padding: '3px 8px', + borderRadius: 999, + flexShrink: 0 + } + }, phase)); +} + +// Generic section sub-header reused across feature screens +function SubHead({ + children, + icon +}) { + return /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8, + margin: '4px 0 12px' + } + }, icon && /*#__PURE__*/React.createElement(Icon, { + name: icon, + size: 18, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 15.5, + color: T.fg, + letterSpacing: -0.2 + } + }, children)); +} +Object.assign(window, { + ServicesHubScreen, + SoonBanner, + SubHead +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens8.jsx", error: String((e && e.message) || e) }); } + +// ui_kits/app/screens9.jsx +try { (() => { +// screens9.jsx — Economia: Compra Coletiva, Hospedagem, Demandas & Ofertas. + +function GroupBuyScreen() { + const g = window.ARAH.groupBuyDetail; + const [joined, setJoined] = React.useState(false); + const count = g.joined + (joined ? 1 : 0); + const pct = Math.min(100, Math.round(count / g.goal * 100)); + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 17" + }, "Compra coletiva \u2014 quanto mais gente, menor o pre\xE7o. Vis\xE3o de produto."), /*#__PURE__*/React.createElement(Card, { + glow: true, + style: { + padding: 0, + overflow: 'hidden', + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + height: 130, + background: 'linear-gradient(150deg, rgba(166,214,185,0.25), rgba(129,199,132,0.08))', + display: 'flex', + alignItems: 'center', + justifyContent: 'center' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: g.icon, + size: 56, + color: T.green, + fill: 1, + style: { + opacity: 0.9 + } + })), /*#__PURE__*/React.createElement("div", { + style: { + padding: 18 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 19, + color: T.fg, + letterSpacing: -0.4, + lineHeight: 1.2 + } + }, g.title), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3, + marginTop: 4 + } + }, "Organizado por ", g.org, " \xB7 ", g.deadline), /*#__PURE__*/React.createElement("p", { + style: { + margin: '12px 0 0', + fontFamily: T.sans, + fontSize: 14, + lineHeight: 1.5, + color: T.fg2 + } + }, g.desc), /*#__PURE__*/React.createElement("div", { + style: { + marginTop: 16, + height: 10, + borderRadius: 999, + background: T.cardHi, + overflow: 'hidden' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: `${pct}%`, + height: '100%', + borderRadius: 999, + background: T.greenGrad, + transition: 'width .4s' + } + })), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + marginTop: 9 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg2 + } + }, /*#__PURE__*/React.createElement("strong", { + style: { + color: T.fg, + fontWeight: 700 + } + }, count), "/", g.goal, " ", g.unit), /*#__PURE__*/React.createElement("span", { + style: { + display: 'flex', + alignItems: 'center' + } + }, g.participants.map((c, i) => /*#__PURE__*/React.createElement("span", { + key: i, + style: { + marginLeft: i ? -8 : 0 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: c, + name: "A B", + size: 24 + }))), /*#__PURE__*/React.createElement("span", { + style: { + marginLeft: 6, + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, "+", count - g.participants.length))), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 8, + marginTop: 16 + } + }, g.tiers.map((t, i) => { + const active = count >= t.n; + return /*#__PURE__*/React.createElement("div", { + key: i, + style: { + flex: 1, + padding: '11px 8px', + borderRadius: 13, + textAlign: 'center', + background: active ? T.greenDim : T.cardFlat, + border: `1px solid ${active ? 'rgba(166,214,185,0.35)' : T.line}` + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.sans, + fontSize: 10.5, + color: T.fg3 + } + }, t.n, "+ fam\xEDlias"), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 15, + color: active ? T.green : T.fg, + marginTop: 3 + } + }, t.price)); + })), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 8, + marginTop: 14, + padding: '10px 13px', + borderRadius: 12, + background: 'rgba(166,214,185,0.1)' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "savings", + size: 18, + color: T.green, + fill: 1 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg2 + } + }, "Economia estimada de ", /*#__PURE__*/React.createElement("strong", { + style: { + color: T.green, + fontWeight: 700 + } + }, g.saved), " por fam\xEDlia.")), /*#__PURE__*/React.createElement(Btn, { + kind: joined ? 'dark' : 'primary', + full: true, + size: "lg", + icon: joined ? 'check_circle' : 'group_add', + style: { + marginTop: 16 + }, + onClick: () => setJoined(j => !j) + }, joined ? 'Você está participando' : 'Entrar na compra coletiva')))); +} +function HostingScreen() { + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 18" + }, "Hospedagem no territ\xF3rio \u2014 estadias com quem \xE9 da vila. Vis\xE3o de produto."), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 13 + } + }, window.ARAH.hosting.map(h => /*#__PURE__*/React.createElement(Card, { + key: h.id, + glow: true, + style: { + padding: 0, + overflow: 'hidden' + } + }, /*#__PURE__*/React.createElement("div", { + style: { + height: 128, + background: `linear-gradient(150deg, ${h.avatar}40, ${h.avatar}12)`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + position: 'relative' + } + }, /*#__PURE__*/React.createElement(Icon, { + name: h.icon, + size: 48, + color: T.fg, + fill: 0, + style: { + opacity: 0.85 + } + }), /*#__PURE__*/React.createElement("span", { + style: { + position: 'absolute', + top: 10, + left: 10, + fontFamily: T.sans, + fontSize: 11, + fontWeight: 600, + color: T.fg, + background: 'rgba(11,12,10,0.55)', + backdropFilter: 'blur(4px)', + padding: '4px 10px', + borderRadius: 999 + } + }, h.tag), /*#__PURE__*/React.createElement("span", { + style: { + position: 'absolute', + top: 10, + right: 10, + display: 'inline-flex', + alignItems: 'center', + gap: 3, + fontFamily: T.sans, + fontSize: 11.5, + fontWeight: 600, + color: T.fg, + background: 'rgba(11,12,10,0.55)', + backdropFilter: 'blur(4px)', + padding: '4px 10px', + borderRadius: 999 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "star", + size: 13, + color: "#F5C451", + fill: 1 + }), " ", h.rating)), /*#__PURE__*/React.createElement("div", { + style: { + padding: 15 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 16, + color: T.fg, + letterSpacing: -0.3 + } + }, h.title), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 7, + marginTop: 7 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: h.avatar, + name: h.host, + size: 22, + resident: true + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12.5, + color: T.fg3 + } + }, h.host, " \xB7 ", h.guests, " h\xF3spedes \xB7 ", h.reviews, " avalia\xE7\xF5es")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + marginTop: 13 + } + }, /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement("strong", { + style: { + fontFamily: T.display, + fontWeight: 700, + fontSize: 18, + color: T.fg + } + }, h.price), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 13, + color: T.fg3 + } + }, " / ", h.unit)), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + size: "sm", + icon: "calendar_month", + onClick: () => window.openJourney('reserva', h) + }, "Reservar"))))))); +} +function DemandsScreen() { + const [tab, setTab] = React.useState('todos'); + let list = window.ARAH.demands; + if (tab !== 'todos') list = list.filter(d => d.kind === tab); + return /*#__PURE__*/React.createElement("div", { + style: { + padding: '0 18px 16px' + } + }, /*#__PURE__*/React.createElement(SoonBanner, { + phase: "Fase 19" + }, "Demandas & ofertas \u2014 quem precisa encontra quem oferece. Vis\xE3o de produto."), /*#__PURE__*/React.createElement(Btn, { + kind: "primary", + full: true, + size: "md", + icon: "add", + style: { + marginBottom: 14 + }, + onClick: () => window.openJourney('create', window.JOURNEY_PRESETS.demanda) + }, "Publicar demanda ou oferta"), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + gap: 8, + marginBottom: 16 + } + }, /*#__PURE__*/React.createElement(SegTab, { + active: tab === 'todos', + onClick: () => setTab('todos'), + icon: "swap_horiz" + }, "Tudo"), /*#__PURE__*/React.createElement(SegTab, { + active: tab === 'demanda', + onClick: () => setTab('demanda'), + icon: "pan_tool" + }, "Demandas"), /*#__PURE__*/React.createElement(SegTab, { + active: tab === 'oferta', + onClick: () => setTab('oferta'), + icon: "handshake" + }, "Ofertas")), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + flexDirection: 'column', + gap: 10 + } + }, list.map(d => { + const isDemand = d.kind === 'demanda'; + const c = isDemand ? T.blue : T.green; + return /*#__PURE__*/React.createElement(Card, { + key: d.id, + style: { + display: 'flex', + alignItems: 'center', + gap: 13, + padding: 14 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + width: 44, + height: 44, + borderRadius: 12, + background: `${c}1f`, + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: d.icon, + size: 22, + color: c, + fill: 1 + })), /*#__PURE__*/React.createElement("div", { + style: { + flex: 1, + minWidth: 0 + } + }, /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 7 + } + }, /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 9.5, + fontWeight: 700, + letterSpacing: 0.6, + textTransform: 'uppercase', + color: c + } + }, isDemand ? 'Demanda' : 'Oferta'), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 11, + color: T.fg3 + } + }, "\xB7 ", d.tag, " \xB7 ", d.time)), /*#__PURE__*/React.createElement("div", { + style: { + fontFamily: T.display, + fontWeight: 600, + fontSize: 14.5, + color: T.fg, + marginTop: 2, + letterSpacing: -0.2 + } + }, d.title), /*#__PURE__*/React.createElement("div", { + style: { + display: 'flex', + alignItems: 'center', + gap: 6, + marginTop: 5 + } + }, /*#__PURE__*/React.createElement(Avatar, { + color: d.avatar, + name: d.who, + size: 18 + }), /*#__PURE__*/React.createElement("span", { + style: { + fontFamily: T.sans, + fontSize: 12, + color: T.fg3 + } + }, d.who))), /*#__PURE__*/React.createElement("button", { + onClick: () => window.openJourney('create', window.JOURNEY_PRESETS.demanda), + style: { + width: 38, + height: 38, + borderRadius: 11, + border: `1px solid ${T.line}`, + background: T.cardFlat, + cursor: 'pointer', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + flexShrink: 0 + } + }, /*#__PURE__*/React.createElement(Icon, { + name: "chat", + size: 18, + color: T.green + }))); + }))); +} +Object.assign(window, { + GroupBuyScreen, + HostingScreen, + DemandsScreen +}); +})(); } catch (e) { __ds_ns.__errors.push({ path: "ui_kits/app/screens9.jsx", error: String((e && e.message) || e) }); } + +// wiki/wiki.js +try { (() => { +// wiki.js — Arah wiki: hash router, sidebar active state, mobile toggle, search filter. +(function () { + 'use strict'; + + var docs = [].slice.call(document.querySelectorAll('.doc')); + var links = [].slice.call(document.querySelectorAll('.nav a[data-doc]')); + var side = document.getElementById('side'); + var scrim = document.getElementById('scrim'); + function show(id) { + var found = false; + docs.forEach(function (d) { + var on = d.id === 'doc-' + id; + d.classList.toggle('active', on); + if (on) found = true; + }); + if (!found && docs.length) { + docs[0].classList.add('active'); + id = docs[0].id.replace('doc-', ''); + } + links.forEach(function (a) { + a.classList.toggle('active', a.getAttribute('data-doc') === id); + }); + window.scrollTo({ + top: 0, + behavior: 'auto' + }); + closeSide(); + } + function openSide() { + side.classList.add('open'); + scrim.classList.add('show'); + } + function closeSide() { + side.classList.remove('open'); + scrim.classList.remove('show'); + } + + // routing + function onHash() { + var id = (location.hash || '#visao-geral').replace('#', ''); + show(id); + } + window.addEventListener('hashchange', onHash); + + // mobile toggle + var burger = document.getElementById('burger'); + if (burger) burger.addEventListener('click', openSide); + if (scrim) scrim.addEventListener('click', closeSide); + + // search filter (filters sidebar links by text) + var search = document.getElementById('search'); + if (search) { + search.addEventListener('input', function () { + var q = search.value.trim().toLowerCase(); + links.forEach(function (a) { + var t = a.textContent.toLowerCase(); + a.classList.toggle('hidden', q && t.indexOf(q) === -1); + }); + // hide empty groups + document.querySelectorAll('.nav .grp').forEach(function (g) { + var next = g.nextElementSibling, + anyVisible = false; + while (next && !next.classList.contains('grp')) { + if (next.matches('a') && !next.classList.contains('hidden')) anyVisible = true; + next = next.nextElementSibling; + } + g.style.display = q && !anyVisible ? 'none' : ''; + }); + }); + } + onHash(); +})(); +})(); } catch (e) { __ds_ns.__errors.push({ path: "wiki/wiki.js", error: String((e && e.message) || e) }); } + +})(); diff --git a/backend/Arah.Api/wwwroot/devportal/architecture/_ds/_ds_manifest.json b/backend/Arah.Api/wwwroot/devportal/architecture/_ds/_ds_manifest.json new file mode 100644 index 00000000..facae598 --- /dev/null +++ b/backend/Arah.Api/wwwroot/devportal/architecture/_ds/_ds_manifest.json @@ -0,0 +1 @@ +{"namespace":"ArahDesignSystem_c7fa51","components":[],"startingPoints":[],"cards":[{"path":"preview/brand-appicon.html","group":"Brand","viewport":"700x180","subtitle":"Warm forest photography","name":"App icon & imagery"},{"path":"preview/brand-icons.html","group":"Brand","viewport":"700x180","subtitle":"Material Symbols Rounded","name":"Iconography"},{"path":"preview/brand-logo.html","group":"Brand","viewport":"700x180","subtitle":"The araponga bird mark","name":"Logo — Araponga"},{"path":"site/index.html","group":"Brand","viewport":"1280x1200","subtitle":"Site institucional do movimento Arah — território-primeiro","name":"Arah Site"},{"path":"preview/colors-app-dark.html","group":"Colors","viewport":"700x150","subtitle":"Dark-default surfaces + canopy primary","name":"App surfaces (dark)"},{"path":"preview/colors-forest.html","group":"Colors","viewport":"700x150","subtitle":"Brand green palette 100–900","name":"Forest scale"},{"path":"preview/colors-semantic.html","group":"Colors","viewport":"700x150","subtitle":"General / Alert / Event tones","name":"Semantic & feed accents"},{"path":"preview/comp-bottomnav.html","group":"Components","viewport":"700x110","subtitle":"5 tabs, elevated Publicar","name":"Bottom navigation"},{"path":"preview/comp-buttons.html","group":"Components","viewport":"700x130","subtitle":"Primary, secondary, destructive","name":"Buttons"},{"path":"preview/comp-chips.html","group":"Components","viewport":"700x120","subtitle":"Interests, filters, type toggles","name":"Chips & segmented"},{"path":"preview/comp-listrow.html","group":"Components","viewport":"700x180","subtitle":"Notification + preference rows","name":"List rows"},{"path":"preview/comp-postcard.html","group":"Components","viewport":"700x220","subtitle":"Author, alert badge, actions","name":"Feed post card"},{"path":"preview/spacing-elevation.html","group":"Spacing","viewport":"700x170","subtitle":"Surface, hairline card, glass","name":"Elevation & surfaces"},{"path":"preview/spacing-radii.html","group":"Spacing","viewport":"700x150","subtitle":"8 / 12 / 16 / 20 / pill","name":"Corner radii"},{"path":"preview/spacing-scale.html","group":"Spacing","viewport":"700x140","subtitle":"4 / 8 / 16 / 24 / 32","name":"Spacing scale"},{"path":"preview/type-body.html","group":"Type","viewport":"700x170","subtitle":"Geist 400–600 for body, labels, UI","name":"Body type — Geist"},{"path":"preview/type-display.html","group":"Type","viewport":"700x170","subtitle":"Sora 600–700 for headings, titles, numerals","name":"Display type — Sora"},{"path":"preview/type-scale.html","group":"Type","viewport":"700x220","subtitle":"H1 → label hierarchy","name":"Type scale"},{"path":"ui_kits/app/index.html","group":"UI Kit — App","viewport":"390x844","subtitle":"Interactive premium mobile app — full flow","name":"Arah App UI Kit"}],"templates":[],"globalCssPaths":["colors_and_type.css","styles.css"],"tokens":[{"name":"--forest-50","value":"#F1F8F4","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-100","value":"#E2F1E8","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-200","value":"#C6E3D2","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-300","value":"#9FCEB4","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-400","value":"#6FB28C","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-500","value":"#4F956F","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-600","value":"#377B57","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-700","value":"#2B6246","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-800","value":"#214D37","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-900","value":"#173525","kind":"color","definedIn":"colors_and_type.css"},{"name":"--forest-950","value":"#0E2117","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-primary-dark","value":"#81C784","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-surface-dark","value":"#121212","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-surface-variant-dark","value":"#1E1E1E","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-on-surface-dark","value":"#E8E8E8","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-on-surface-var-dark","value":"#B0B0B0","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-outline-dark","value":"#404040","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-primary-light","value":"#1B5E20","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-surface-light","value":"#FAFAFA","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-surface-container-light","value":"#F5F5F5","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-on-surface-light","value":"#1C1C1C","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-on-surface-var-light","value":"#5C5C5C","kind":"color","definedIn":"colors_and_type.css"},{"name":"--app-outline-light","value":"#E0E0E0","kind":"color","definedIn":"colors_and_type.css"},{"name":"--feed-general","value":"#4F956F","kind":"color","definedIn":"colors_and_type.css"},{"name":"--feed-event","value":"#2A6FDB","kind":"color","definedIn":"colors_and_type.css"},{"name":"--feed-tip","value":"#C9962B","kind":"color","definedIn":"colors_and_type.css"},{"name":"--feed-alert","value":"#C0492F","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-bg","value":"#0B0C0A","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-surface","value":"#0E100D","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-card","value":"#191B17","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-card-hi","value":"#20231E","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-card-grad","value":"linear-gradient(160deg, #1C201A 0%, #161814 100%)","kind":"color","definedIn":"colors_and_type.css","annotation":"color"},{"name":"--premium-line","value":"rgba(255,255,255,0.07)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-line-hi","value":"rgba(255,255,255,0.13)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-fg","value":"#F2F4EE","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-fg2","value":"#A6AC9E","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-fg3","value":"#6B7164","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-canopy","value":"#A6D6B9","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-canopy-solid","value":"#81C784","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-green-grad","value":"linear-gradient(150deg, #93D29C 0%, #6FB98C 100%)","kind":"color","definedIn":"colors_and_type.css","annotation":"color"},{"name":"--premium-green-glow","value":"0 8px 24px rgba(129,199,132,0.30)","kind":"shadow","definedIn":"colors_and_type.css"},{"name":"--premium-alert","value":"#E8A06A","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-event","value":"#86AEEA","kind":"color","definedIn":"colors_and_type.css"},{"name":"--premium-water","value":"#6FC5D6","kind":"color","definedIn":"colors_and_type.css"},{"name":"--bg","value":"var(--forest-50)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--fg","value":"var(--forest-900)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--fg-strong","value":"var(--forest-950)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--fg-muted","value":"var(--forest-700)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--fg-subtle","value":"var(--forest-600)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--primary","value":"var(--forest-600)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--primary-strong","value":"var(--forest-800)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--on-primary","value":"#FFFFFF","kind":"color","definedIn":"colors_and_type.css"},{"name":"--border","value":"rgba(23, 53, 37, 0.12)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--border-strong","value":"rgba(23, 53, 37, 0.22)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--check","value":"var(--forest-600)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--glass-bg","value":"rgba(255, 255, 255, 0.88)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--glass-bg-soft","value":"rgba(255, 255, 255, 0.65)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--glass-border","value":"rgba(255, 255, 255, 0.70)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--glass-shadow","value":"0 20px 50px rgba(20, 40, 28, 0.15)","kind":"shadow","definedIn":"colors_and_type.css"},{"name":"--glass-hover-shadow","value":"0 24px 60px rgba(20, 40, 28, 0.20)","kind":"shadow","definedIn":"colors_and_type.css"},{"name":"--glass-radius","value":"32px","kind":"radius","definedIn":"colors_and_type.css"},{"name":"--glass-blur","value":"16px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--radius-sm","value":"8px","kind":"radius","definedIn":"colors_and_type.css"},{"name":"--radius-md","value":"12px","kind":"radius","definedIn":"colors_and_type.css"},{"name":"--radius-lg","value":"16px","kind":"radius","definedIn":"colors_and_type.css"},{"name":"--radius-xl","value":"24px","kind":"radius","definedIn":"colors_and_type.css"},{"name":"--radius-2xl","value":"32px","kind":"radius","definedIn":"colors_and_type.css"},{"name":"--radius-pill","value":"999px","kind":"radius","definedIn":"colors_and_type.css"},{"name":"--space-xs","value":"4px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--space-sm","value":"8px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--space-md","value":"16px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--space-lg","value":"24px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--space-xl","value":"32px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--space-2xl","value":"48px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--space-3xl","value":"64px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--touch-target","value":"44px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--shadow-sm","value":"0 1px 2px rgba(20, 40, 28, 0.08)","kind":"shadow","definedIn":"colors_and_type.css"},{"name":"--shadow-md","value":"0 8px 24px rgba(20, 40, 28, 0.12)","kind":"shadow","definedIn":"colors_and_type.css"},{"name":"--shadow-lg","value":"0 20px 50px rgba(20, 40, 28, 0.15)","kind":"shadow","definedIn":"colors_and_type.css"},{"name":"--shadow-image","value":"0 10px 30px rgba(20, 40, 28, 0.18)","kind":"shadow","definedIn":"colors_and_type.css"},{"name":"--ease-smooth","value":"cubic-bezier(0.16, 1, 0.3, 1)","kind":"other","definedIn":"colors_and_type.css","annotation":"other"},{"name":"--dur-fast","value":"150ms","kind":"other","definedIn":"colors_and_type.css","annotation":"other"},{"name":"--dur-normal","value":"250ms","kind":"other","definedIn":"colors_and_type.css","annotation":"other"},{"name":"--dur-reveal","value":"800ms","kind":"other","definedIn":"colors_and_type.css","annotation":"other"},{"name":"--reveal-translate","value":"20px","kind":"spacing","definedIn":"colors_and_type.css"},{"name":"--transition-smooth","value":"all 0.3s var(--ease-smooth)","kind":"color","definedIn":"colors_and_type.css"},{"name":"--font-display","value":"\"Sora\", ui-sans-serif, system-ui, sans-serif","kind":"font","definedIn":"colors_and_type.css","annotation":"font"},{"name":"--font-sans","value":"\"Geist\", ui-sans-serif, system-ui, -apple-system, sans-serif","kind":"font","definedIn":"colors_and_type.css","annotation":"font"},{"name":"--font-mono","value":"ui-monospace, \"SF Mono\", Menlo, Consolas, monospace","kind":"font","definedIn":"colors_and_type.css","annotation":"font"},{"name":"--text-hero","value":"700 clamp(3rem, 6vw, 4.5rem)/1.04 var(--font-display)","kind":"font","definedIn":"colors_and_type.css"},{"name":"--text-h1","value":"600 clamp(2rem, 3.5vw, 2.5rem)/1.1 var(--font-display)","kind":"font","definedIn":"colors_and_type.css"},{"name":"--text-h2","value":"600 clamp(1.5rem, 2.4vw, 1.875rem)/1.15 var(--font-display)","kind":"font","definedIn":"colors_and_type.css"},{"name":"--text-h3","value":"600 1.125rem/1.3 var(--font-display)","kind":"font","definedIn":"colors_and_type.css"},{"name":"--text-lead","value":"400 1.25rem/1.6 var(--font-sans)","kind":"font","definedIn":"colors_and_type.css"},{"name":"--text-body","value":"400 1rem/1.65 var(--font-sans)","kind":"font","definedIn":"colors_and_type.css"},{"name":"--text-sm","value":"400 0.875rem/1.6 var(--font-sans)","kind":"font","definedIn":"colors_and_type.css"},{"name":"--text-xs","value":"500 0.75rem/1.4 var(--font-sans)","kind":"font","definedIn":"colors_and_type.css"},{"name":"--tracking-tight","value":"-0.02em","kind":"font","definedIn":"colors_and_type.css"},{"name":"--tracking-wide","value":"0.08em","kind":"font","definedIn":"colors_and_type.css"},{"name":"--bg","value":"var(--app-surface-dark)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--fg","value":"var(--app-on-surface-dark)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--fg-strong","value":"#FFFFFF","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--fg-muted","value":"var(--app-on-surface-var-dark)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--fg-subtle","value":"var(--app-on-surface-var-dark)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--primary","value":"var(--app-primary-dark)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--primary-strong","value":"var(--app-primary-dark)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--on-primary","value":"#102016","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--border","value":"var(--app-outline-dark)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--border-strong","value":"#555","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--glass-bg","value":"rgba(30, 30, 30, 0.86)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--glass-bg-soft","value":"rgba(40, 40, 40, 0.6)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"},{"name":"--glass-border","value":"rgba(255, 255, 255, 0.08)","kind":"color","definedIn":"colors_and_type.css","scope":"[data-theme=\"dark\"]"}],"themes":[{"selector":"[data-theme=\"dark\"]","label":"Dark"}],"fonts":[{"family":"Geist","weight":"100 900","style":"normal","cssPath":"colors_and_type.css","files":["fonts/Geist-VariableFont_wght.ttf"]},{"family":"Sora","weight":"100 800","style":"normal","cssPath":"colors_and_type.css","files":["fonts/Sora-VariableFont_wght.ttf"]}],"brandFonts":[{"family":"Geist","status":"ok","tokens":["--font-sans"],"path":"colors_and_type.css"},{"family":"Sora","status":"ok","tokens":["--font-display"],"path":"colors_and_type.css"}],"source":"spa"} \ No newline at end of file diff --git a/backend/Arah.Api/wwwroot/devportal/architecture/_ds/assets/arah-logo.png b/backend/Arah.Api/wwwroot/devportal/architecture/_ds/assets/arah-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..efb67f374b274fff8c48a5ae0b3537399834c58a GIT binary patch literal 2156951 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%0Akr03 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 z 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