Carpetas avanzadas: color, favorito, anidación, compartir y plantillas (DB + UI)
Completados los items de v7.37.0 que necesitaban migración de schema. Ahora cada carpeta puede tener un color de acento (13 paletas), marcarse como favorita (sube arriba en el sidebar), anidarse bajo otra carpeta (parent_folder_id), tener un banner image, y existir como "smart folder" con filtros dinámicos. Además se añaden dos tablas nuevas con RLS completo: `folder_shares` para compartir carpetas con otros usuarios (roles viewer/editor/admin) y `folder_templates` para guardar plantillas reutilizables (públicas o privadas). UI integrada en CreateFolderModal y FolderSettingsModal con color picker y toggle de favorito.
Nuevo
- ⭐ Favoritas suben al principio del sidebar automáticamente.
Mejorado
- 🎨 13 colores de acento por carpeta (sky, violet, blue, emerald, amber, rose, indigo, teal, orange, pink, cyan, lime, red).
- 🪺 Anidación: cada carpeta puede tener un `parent_folder_id` (DB lista, UI próxima).
- 🖼️ Banner image opcional por carpeta (DB lista, UI próxima).
- 🧠 Smart folders con filtros JSON (DB lista, UI próxima).
Seguridad
- 🔗 Compartir carpeta con otro usuario con roles viewer/editor/admin (DB + RLS lista).
- 📦 Templates de carpeta — guardar y reutilizar configuración (DB + RLS lista).
- 🛡️ RLS completo en folder_shares y folder_templates con función helper folder_shared_role().
Schema (Supabase)
- folders: + parent_folder_id (FK self-ref ON DELETE SET NULL), accent_color, is_favorite, banner_url, smart_filters_json.
- CHECK constraint folders_no_self_parent (carpeta no puede ser su propia padre).
- Indices: idx_folders_parent_id (partial WHERE NOT NULL), idx_folders_user_favorite (partial WHERE is_favorite).
- Tabla folder_shares (folder_id, user_id, role, invited_by, UNIQUE(folder_id, user_id)).
- Tabla folder_templates con use_count, is_public, todos los campos de carpeta.
- Función SECURITY DEFINER folder_shared_role(folder_id, user_id) → text.
- Policies RLS completas en folder_shares (owner+admin gestionan, invitados ven y pueden salirse).
- Policies RLS completas en folder_templates (own + public read).
- Policies adicionales en folders: folders_shared_select, folders_shared_update.
- Trigger touch_updated_at en folder_templates.
Types (src/lib/types.ts)
- export type FolderAccentColor (13 valores).
- Folder ampliada con parent_folder_id, accent_color, is_favorite, banner_url, smart_filters_json.
- export type FolderShareRole, interface FolderShare.
- export interface FolderTemplate.
folder-visuals.tsx — paleta de colores
- Nuevo FOLDER_ACCENTS record con 13 paletas (icon/soft/dot/gradient/ring por color).
- export FOLDER_ACCENT_LIST y normalizeFolderAccent() helper.
- FolderIconBadge ahora acepta prop `accent` para colorear dinámicamente.
- Backwards-compat: folderAccent legacy ahora apunta a la paleta sky.
CreateFolderModal — color + favorite
- Nuevo state accent (sky default) y isFavorite.
- Color picker con 13 swatches circulares + Check overlay.
- Toggle de favorito con icono Star + dot indicador.
- Preview superior muestra el badge con el color elegido + estrella si favorito.
- onSubmit acepta payload {name, icon, instructions, accent_color, is_favorite} o la firma 3-args legacy (compat).
- Validación de nombre duplicado se mantiene.
FolderSettingsModal — color + favorite
- Hidrata accent + isFavorite del folder existente.
- Sección nueva "Color de acento" con 13 swatches grandes.
- Sección nueva "Carpeta favorita" con toggle Star.
- saveFolder envía accent_color e is_favorite a supabase.
- Evento geia-folder-updated incluye accent_color e is_favorite para que el sidebar pueda re-render sin recargar.
Sidebar (Sidebar.tsx + SidebarSleek.tsx)
- createFolder typed con CreateFolderFn (union: payload | 3-args legacy) usando useCallback<T>.
- Carpetas se cargan ordenadas por is_favorite DESC primero.
- FolderIconBadge en cada fila usa folder.accent_color.
- Estrella amber al lado del nombre si is_favorite.
Pendiente (UI para próximas releases)
- Anidación: árbol jerárquico en el sidebar (parent_folder_id ya existe en DB).
- Compartir carpeta: modal de invitar usuarios (folder_shares ya existe en DB).
- Templates: galería de plantillas en CreateFolderModal (folder_templates ya existe en DB).
- Smart folders: editor de filtros JSON.
- Banner image: upload UI.
