forlogic-core 2.2.1 → 2.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/docs-BEwTKYu3.css +1 -0
- package/dist/assets/docs-Bgpz6ETN.js +10752 -0
- package/dist/assets/index-SqMwTzMJ.js +97 -0
- package/dist/components/ui/combobox.d.ts +2 -1
- package/dist/exports/ui.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.html +34 -0
- package/dist/index.js +1 -1
- package/dist/mind-map/components/MindMap.d.ts +23 -0
- package/dist/mind-map/components/MindMapConnection.d.ts +12 -0
- package/dist/mind-map/components/MindMapNodeView.d.ts +24 -0
- package/dist/mind-map/components/MindMapToolbar.d.ts +26 -0
- package/dist/mind-map/hooks/useMindMapKeyboard.d.ts +15 -0
- package/dist/mind-map/hooks/useMindMapLayout.d.ts +5 -0
- package/dist/mind-map/hooks/useMindMapPanZoom.d.ts +21 -0
- package/dist/mind-map/hooks/useMindMapState.d.ts +32 -0
- package/dist/mind-map/index.d.ts +4 -0
- package/dist/mind-map/types.d.ts +91 -0
- package/dist/mind-map/utils/export-image.d.ts +9 -0
- package/dist/mind-map/utils/layout.d.ts +15 -0
- package/dist/mind-map/utils/nodeOps.d.ts +66 -0
- package/dist/mind-map/utils/serialize.d.ts +10 -0
- package/dist/supabase/legacyKeyGuard.d.ts +19 -0
- package/docs/STORAGE_BUCKETS.md +179 -107
- package/docs/SUPABASE_SECRETS.md +122 -0
- package/docs/WORKSPACE_KNOWLEDGE.md +34 -0
- package/docs/design-system/README.md +2 -2
- package/docs/design-system/patterns/feature-flags.md +57 -0
- package/docs/design-system/patterns/vite-tailwind-setup.md +1 -0
- package/docs/design-system/selectors.md +17 -0
- package/package.json +3 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { MindMapNode, MindMapProps } from '../types';
|
|
3
|
+
/**
|
|
4
|
+
* Componente de mapa mental controlado/uncontrolled inspirado no FreeMind.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* <MindMap defaultValue={{ id: 'root', text: 'Ideia Central' }} />
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* Atalhos:
|
|
12
|
+
* - `Enter` cria um nó irmão
|
|
13
|
+
* - `Insert` ou `Tab` cria um filho
|
|
14
|
+
* - `Delete` remove o nó (e descendentes)
|
|
15
|
+
* - `F2` renomeia
|
|
16
|
+
* - `Espaço` colapsa/expande
|
|
17
|
+
* - `Ctrl+Z` / `Ctrl+Shift+Z` undo/redo
|
|
18
|
+
* - Setas para navegar
|
|
19
|
+
*
|
|
20
|
+
* Pan: arrastar o fundo. Zoom: `Ctrl/⌘ + scroll` ou botões da toolbar.
|
|
21
|
+
*/
|
|
22
|
+
export declare const MindMap: React.FC<MindMapProps>;
|
|
23
|
+
export type { MindMapNode, MindMapProps };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { MindMapLayoutNode } from '../types';
|
|
3
|
+
interface MindMapConnectionProps {
|
|
4
|
+
parent: MindMapLayoutNode;
|
|
5
|
+
child: MindMapLayoutNode;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Renderiza uma curva Bézier conectando o pai a um filho. Usa coordenadas
|
|
9
|
+
* absolutas dentro do `<svg>` do canvas.
|
|
10
|
+
*/
|
|
11
|
+
export declare const MindMapConnection: React.FC<MindMapConnectionProps>;
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { MindMapLayoutNode, MindMapNode } from '../types';
|
|
3
|
+
interface MindMapNodeViewProps {
|
|
4
|
+
layout: MindMapLayoutNode;
|
|
5
|
+
selected: boolean;
|
|
6
|
+
editing: boolean;
|
|
7
|
+
readOnly: boolean;
|
|
8
|
+
onSelect: () => void;
|
|
9
|
+
onStartEditing: () => void;
|
|
10
|
+
onFinishEditing: (newText: string | null) => void;
|
|
11
|
+
onToggle: () => void;
|
|
12
|
+
onDragStart?: (e: React.DragEvent) => void;
|
|
13
|
+
onDragOver?: (e: React.DragEvent) => void;
|
|
14
|
+
onDragLeave?: (e: React.DragEvent) => void;
|
|
15
|
+
onDrop?: (e: React.DragEvent) => void;
|
|
16
|
+
isDropTarget?: boolean;
|
|
17
|
+
renderNodeContent?: (node: MindMapNode) => React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Renderiza a "caixa" de um nó do mapa mental: ícone opcional, texto, indicador
|
|
21
|
+
* de filhos colapsados e tooltip de nota.
|
|
22
|
+
*/
|
|
23
|
+
export declare const MindMapNodeView: React.FC<MindMapNodeViewProps>;
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
interface MindMapToolbarProps {
|
|
3
|
+
canAddChild: boolean;
|
|
4
|
+
canAddSibling: boolean;
|
|
5
|
+
canDelete: boolean;
|
|
6
|
+
canUndo: boolean;
|
|
7
|
+
canRedo: boolean;
|
|
8
|
+
onAddChild: () => void;
|
|
9
|
+
onAddSibling: () => void;
|
|
10
|
+
onDelete: () => void;
|
|
11
|
+
onExpandAll: () => void;
|
|
12
|
+
onCollapseAll: () => void;
|
|
13
|
+
onFit: () => void;
|
|
14
|
+
onZoomIn: () => void;
|
|
15
|
+
onZoomOut: () => void;
|
|
16
|
+
onUndo: () => void;
|
|
17
|
+
onRedo: () => void;
|
|
18
|
+
onExportJson: () => void;
|
|
19
|
+
onExportImage: () => void;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Toolbar superior do MindMap. Botões agrupados por função: edição, visualização,
|
|
23
|
+
* histórico e exportação.
|
|
24
|
+
*/
|
|
25
|
+
export declare const MindMapToolbar: React.FC<MindMapToolbarProps>;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MindMapLayoutResult, MindMapShortcut } from '../types';
|
|
2
|
+
import type { MindMapStateApi } from './useMindMapState';
|
|
3
|
+
export interface UseMindMapKeyboardOptions {
|
|
4
|
+
api: MindMapStateApi;
|
|
5
|
+
layout: MindMapLayoutResult;
|
|
6
|
+
containerRef: React.RefObject<HTMLElement>;
|
|
7
|
+
onStartEditing: (id: string) => void;
|
|
8
|
+
readOnly?: boolean;
|
|
9
|
+
extraShortcuts?: MindMapShortcut[];
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Atalhos de teclado estilo FreeMind. Disparado apenas quando o foco está
|
|
13
|
+
* dentro do container do MindMap (e não em um input contentEditable em edição).
|
|
14
|
+
*/
|
|
15
|
+
export declare function useMindMapKeyboard({ api, layout, containerRef, onStartEditing, readOnly, extraShortcuts, }: UseMindMapKeyboardOptions): void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface PanZoomState {
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
scale: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Pan + zoom para o canvas do mapa mental. Pan via arrasto no fundo (botão esquerdo
|
|
8
|
+
* do mouse + tecla espaço, ou botão do meio); zoom via Ctrl/Meta + scroll, ou botões.
|
|
9
|
+
*/
|
|
10
|
+
export declare function useMindMapPanZoom(initial?: Partial<PanZoomState>): {
|
|
11
|
+
transform: PanZoomState;
|
|
12
|
+
setTransform: import("react").Dispatch<import("react").SetStateAction<PanZoomState>>;
|
|
13
|
+
zoomIn: () => void;
|
|
14
|
+
zoomOut: () => void;
|
|
15
|
+
reset: () => void;
|
|
16
|
+
fitTo: (contentW: number, contentH: number, viewportW: number, viewportH: number) => void;
|
|
17
|
+
onBackgroundPointerDown: (e: React.PointerEvent) => void;
|
|
18
|
+
onPointerMove: (e: React.PointerEvent) => void;
|
|
19
|
+
onPointerUp: (e: React.PointerEvent) => void;
|
|
20
|
+
onWheel: (e: React.WheelEvent) => void;
|
|
21
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { MindMapNode } from '../types';
|
|
2
|
+
export interface UseMindMapStateOptions {
|
|
3
|
+
value?: MindMapNode;
|
|
4
|
+
defaultValue?: MindMapNode;
|
|
5
|
+
onChange?: (root: MindMapNode) => void;
|
|
6
|
+
readOnly?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Estado central do MindMap: árvore controlada/uncontrolled, seleção e histórico
|
|
10
|
+
* de undo/redo. Expõe ações imutáveis (sempre produzem nova árvore).
|
|
11
|
+
*/
|
|
12
|
+
export declare function useMindMapState(opts: UseMindMapStateOptions): {
|
|
13
|
+
root: MindMapNode;
|
|
14
|
+
setRoot: (next: MindMapNode) => void;
|
|
15
|
+
selectedId: string;
|
|
16
|
+
selectedNode: MindMapNode;
|
|
17
|
+
setSelectedId: import("react").Dispatch<import("react").SetStateAction<string>>;
|
|
18
|
+
renameNode: (id: string, text: string) => void;
|
|
19
|
+
updateNodeProps: (id: string, patch: Partial<MindMapNode>) => void;
|
|
20
|
+
addChild: (parentId: string, text?: string) => string;
|
|
21
|
+
addSibling: (nodeId: string, text?: string) => string;
|
|
22
|
+
removeNode: (id: string) => void;
|
|
23
|
+
moveNode: (id: string, newParentId: string) => void;
|
|
24
|
+
toggleNode: (id: string) => void;
|
|
25
|
+
expandAll: () => void;
|
|
26
|
+
collapseAll: () => void;
|
|
27
|
+
undo: () => void;
|
|
28
|
+
redo: () => void;
|
|
29
|
+
canUndo: boolean;
|
|
30
|
+
canRedo: boolean;
|
|
31
|
+
};
|
|
32
|
+
export type MindMapStateApi = ReturnType<typeof useMindMapState>;
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { MindMap } from './components/MindMap';
|
|
2
|
+
export { createMindMapNode, findNode, addChild, addSibling, removeNode, moveNode, toggleCollapsed, setCollapsedAll, generateNodeId, } from './utils/nodeOps';
|
|
3
|
+
export { exportMindMap, importMindMap } from './utils/serialize';
|
|
4
|
+
export type { MindMapNode, MindMapProps, MindMapShortcut, MindMapContext, MindMapLayoutNode, MindMapLayoutResult, } from './types';
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Nó do mapa mental. Estrutura recursiva e serializável.
|
|
4
|
+
*/
|
|
5
|
+
export interface MindMapNode {
|
|
6
|
+
/** Identificador único do nó. */
|
|
7
|
+
id: string;
|
|
8
|
+
/** Texto principal exibido na caixa do nó. */
|
|
9
|
+
text: string;
|
|
10
|
+
/** Filhos do nó (opcional). */
|
|
11
|
+
children?: MindMapNode[];
|
|
12
|
+
/** Quando true, oculta a subárvore visualmente (mas preserva no modelo). */
|
|
13
|
+
collapsed?: boolean;
|
|
14
|
+
/** Cor de fundo da caixa do nó. Aceita hex/HSL/qualquer valor CSS válido. */
|
|
15
|
+
color?: string;
|
|
16
|
+
/** Nome de um ícone Lucide a exibir antes do texto (ex: "Star"). */
|
|
17
|
+
icon?: string;
|
|
18
|
+
/** Texto longo opcional, exibido em tooltip por um ícone na caixa. */
|
|
19
|
+
note?: string;
|
|
20
|
+
/** Lado em relação à raiz. Apenas filhos diretos da raiz definem livremente. */
|
|
21
|
+
side?: 'left' | 'right';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Snapshot da posição calculada de um nó, usado pelo layout.
|
|
25
|
+
*/
|
|
26
|
+
export interface MindMapLayoutNode {
|
|
27
|
+
node: MindMapNode;
|
|
28
|
+
parent: MindMapNode | null;
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
side: 'left' | 'right' | 'root';
|
|
34
|
+
depth: number;
|
|
35
|
+
visibleChildren: MindMapLayoutNode[];
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Resultado completo do cálculo de layout.
|
|
39
|
+
*/
|
|
40
|
+
export interface MindMapLayoutResult {
|
|
41
|
+
nodes: MindMapLayoutNode[];
|
|
42
|
+
byId: Map<string, MindMapLayoutNode>;
|
|
43
|
+
width: number;
|
|
44
|
+
height: number;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Contexto exposto a atalhos custom.
|
|
48
|
+
*/
|
|
49
|
+
export interface MindMapContext {
|
|
50
|
+
selectedId: string | null;
|
|
51
|
+
root: MindMapNode;
|
|
52
|
+
setRoot: (next: MindMapNode) => void;
|
|
53
|
+
select: (id: string | null) => void;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Atalho de teclado adicional para o MindMap.
|
|
57
|
+
*/
|
|
58
|
+
export interface MindMapShortcut {
|
|
59
|
+
/** Chave (ex: "k", "F2", "Enter"). */
|
|
60
|
+
key: string;
|
|
61
|
+
/** Modificadores opcionais. */
|
|
62
|
+
ctrl?: boolean;
|
|
63
|
+
shift?: boolean;
|
|
64
|
+
alt?: boolean;
|
|
65
|
+
handler: (ctx: MindMapContext) => void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Props do componente `MindMap`.
|
|
69
|
+
*/
|
|
70
|
+
export interface MindMapProps {
|
|
71
|
+
/** Modo controlado: árvore atual. */
|
|
72
|
+
value?: MindMapNode;
|
|
73
|
+
/** Modo não-controlado: árvore inicial. */
|
|
74
|
+
defaultValue?: MindMapNode;
|
|
75
|
+
/** Callback chamado a cada mutação aplicada. */
|
|
76
|
+
onChange?: (root: MindMapNode) => void;
|
|
77
|
+
/** Callback ao selecionar um nó. */
|
|
78
|
+
onNodeSelect?: (node: MindMapNode | null) => void;
|
|
79
|
+
/** Modo somente leitura (sem edição/atalhos de mutação). */
|
|
80
|
+
readOnly?: boolean;
|
|
81
|
+
/** Esconde a toolbar superior. */
|
|
82
|
+
hideToolbar?: boolean;
|
|
83
|
+
/** Atalhos custom adicionais (são processados depois dos padrão). */
|
|
84
|
+
extraShortcuts?: MindMapShortcut[];
|
|
85
|
+
/** Render custom do conteúdo interno do nó (ícone + texto). */
|
|
86
|
+
renderNodeContent?: (node: MindMapNode) => React.ReactNode;
|
|
87
|
+
/** Classe extra no container raiz. */
|
|
88
|
+
className?: string;
|
|
89
|
+
/** Altura do canvas. Default 600px. */
|
|
90
|
+
height?: string | number;
|
|
91
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exporta o SVG do mapa mental como PNG, abrindo o resultado em download
|
|
3
|
+
* pelo browser. Usa um canvas off-screen para rasterizar o SVG.
|
|
4
|
+
*/
|
|
5
|
+
export declare function exportSvgAsPng(svg: SVGSVGElement, filename?: string): Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Faz download de uma string como arquivo (utilitário interno).
|
|
8
|
+
*/
|
|
9
|
+
export declare function downloadTextFile(content: string, filename: string, mime?: string): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { MindMapLayoutResult, MindMapNode } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Calcula o layout de um mapa mental: posições absolutas (x,y), tamanhos e
|
|
4
|
+
* dimensão total do canvas. Compatível com pan/zoom externos via transform.
|
|
5
|
+
*/
|
|
6
|
+
export declare function computeLayout(root: MindMapNode): MindMapLayoutResult;
|
|
7
|
+
export declare const MIND_MAP_LAYOUT_CONSTANTS: {
|
|
8
|
+
NODE_WIDTH: number;
|
|
9
|
+
NODE_HEIGHT: number;
|
|
10
|
+
ROOT_WIDTH: number;
|
|
11
|
+
ROOT_HEIGHT: number;
|
|
12
|
+
H_GAP: number;
|
|
13
|
+
V_GAP: number;
|
|
14
|
+
PADDING: number;
|
|
15
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { MindMapNode } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Gera um id curto e único o suficiente para uso local em árvores de mapas mentais.
|
|
4
|
+
*/
|
|
5
|
+
export declare function generateNodeId(): string;
|
|
6
|
+
/**
|
|
7
|
+
* Cria um novo `MindMapNode` com defaults seguros.
|
|
8
|
+
*/
|
|
9
|
+
export declare function createMindMapNode(text: string, partial?: Partial<MindMapNode>): MindMapNode;
|
|
10
|
+
/**
|
|
11
|
+
* Procura um nó pelo id e retorna o nó + seu pai (ou null).
|
|
12
|
+
*/
|
|
13
|
+
export declare function findNode(root: MindMapNode, id: string): {
|
|
14
|
+
node: MindMapNode;
|
|
15
|
+
parent: MindMapNode | null;
|
|
16
|
+
} | null;
|
|
17
|
+
/**
|
|
18
|
+
* Retorna true se `ancestorId` está na cadeia ancestral de `descendantId`.
|
|
19
|
+
*/
|
|
20
|
+
export declare function isAncestor(root: MindMapNode, ancestorId: string, descendantId: string): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Atualiza um nó por id retornando uma nova árvore.
|
|
23
|
+
*/
|
|
24
|
+
export declare function updateNode(root: MindMapNode, id: string, updater: (n: MindMapNode) => MindMapNode): MindMapNode;
|
|
25
|
+
/**
|
|
26
|
+
* Adiciona um filho a um nó. Para filhos diretos da raiz, escolhe automaticamente
|
|
27
|
+
* o lado com menos nós (balanceia ramos).
|
|
28
|
+
*/
|
|
29
|
+
export declare function addChild(root: MindMapNode, parentId: string, text: string): {
|
|
30
|
+
root: MindMapNode;
|
|
31
|
+
newId: string;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Adiciona um irmão (mesmo pai) logo após o nó referência.
|
|
35
|
+
*/
|
|
36
|
+
export declare function addSibling(root: MindMapNode, nodeId: string, text: string): {
|
|
37
|
+
root: MindMapNode;
|
|
38
|
+
newId: string;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Remove um nó (e descendentes). Não permite remover a raiz.
|
|
42
|
+
*/
|
|
43
|
+
export declare function removeNode(root: MindMapNode, id: string): {
|
|
44
|
+
root: MindMapNode;
|
|
45
|
+
nextSelectedId: string | null;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Move um nó para um novo pai. Retorna a árvore inalterada se o destino for
|
|
49
|
+
* o próprio nó ou um descendente (evita ciclo).
|
|
50
|
+
*/
|
|
51
|
+
export declare function moveNode(root: MindMapNode, id: string, newParentId: string): MindMapNode;
|
|
52
|
+
/**
|
|
53
|
+
* Alterna `collapsed` em um nó.
|
|
54
|
+
*/
|
|
55
|
+
export declare function toggleCollapsed(root: MindMapNode, id: string): MindMapNode;
|
|
56
|
+
/**
|
|
57
|
+
* Define `collapsed` em todos os nós com filhos.
|
|
58
|
+
*/
|
|
59
|
+
export declare function setCollapsedAll(root: MindMapNode, collapsed: boolean): MindMapNode;
|
|
60
|
+
/**
|
|
61
|
+
* Retorna lista linear (DFS) de todos os nós + pai, respeitando collapsed.
|
|
62
|
+
*/
|
|
63
|
+
export declare function flattenVisible(root: MindMapNode): Array<{
|
|
64
|
+
node: MindMapNode;
|
|
65
|
+
parent: MindMapNode | null;
|
|
66
|
+
}>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MindMapNode } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Serializa a árvore como JSON formatado.
|
|
4
|
+
*/
|
|
5
|
+
export declare function exportMindMap(root: MindMapNode): string;
|
|
6
|
+
/**
|
|
7
|
+
* Desserializa uma string JSON em um `MindMapNode` validado.
|
|
8
|
+
* Lança em caso de JSON inválido ou estrutura incompatível.
|
|
9
|
+
*/
|
|
10
|
+
export declare function importMindMap(json: string): MindMapNode;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detecta se a VITE_SUPABASE_PUBLISHABLE_KEY é uma legacy anon key (JWT)
|
|
3
|
+
* e oferece fallback via VITE_SUPABASE_PK_OVERRIDE.
|
|
4
|
+
*
|
|
5
|
+
* O Supabase desativou legacy API keys — a nova key usa formato `sb_publishable_*`.
|
|
6
|
+
* O Lovable auto-regenera o .env sobrescrevendo VITE_SUPABASE_PUBLISHABLE_KEY com a
|
|
7
|
+
* legacy key. Para contornar, os projetos podem definir VITE_SUPABASE_PK_OVERRIDE
|
|
8
|
+
* que o Lovable nunca toca.
|
|
9
|
+
*/
|
|
10
|
+
/** Retorna true se a key é um JWT legado (começa com `eyJ`). */
|
|
11
|
+
export declare function isLegacyAnonKey(key: string | undefined): boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve a publishable key correta:
|
|
14
|
+
* 1. Se VITE_SUPABASE_PK_OVERRIDE existe → usa ela (ignora a outra)
|
|
15
|
+
* 2. Senão → usa VITE_SUPABASE_PUBLISHABLE_KEY
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolvePublishableKey(): string;
|
|
18
|
+
/** Verifica a env var e loga erro/info no console (uma única vez). Retorna true se legada sem override. */
|
|
19
|
+
export declare function warnIfLegacyKey(): boolean;
|