@framed-dev/react 0.1.7 → 0.3.0

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/index.d.cts DELETED
@@ -1,675 +0,0 @@
1
- import { FramedConfig, Session, WidgetDataLayer, SupabaseClient, FramedApiClient, WizardCallbacks, Task, LimitStatus, WidgetFeatures, AuthConfig, FeedbackComment, TaskStatus, SyncResult } from '@framed-dev/core';
2
- export { AIConfig, AIFeatureResult, AnnotationData, AnnotationMode, Assignment, Attachment, AuthConfig, AuthMode, Comment, ElementInfo, FeedbackComment, FeedbackInfo, FramedApiClient, FramedConfig, LimitStatus, Mention, PageInfo, PendingAttachment, Position, SDKConfig, Session, SyncConfig, SyncResult, Task, TaskInfo, TaskStatus, TaskType, TranslationResult, UploadResult, UsageLimits, ViewportMode, WidgetConfig, WidgetDataLayer, WidgetFeatures, WizardCallbacks, createWizardCallbacks, getUserSupabase, initUserSupabase, isSupabaseInitialized, translateContent, uploadFile, uploadFont, uploadLogo } from '@framed-dev/core';
3
- import * as react_jsx_runtime from 'react/jsx-runtime';
4
- import React, { ReactNode } from 'react';
5
- import { SupabaseClient as SupabaseClient$1 } from '@supabase/supabase-js';
6
- export { AIQuestionRenderer, AISuggestionState, AreaAnnotationOverlay, Badge, Button, Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, ChatModal, ChatModalProps, Collapsible, CollapsibleContent, CollapsibleTrigger, Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, ElementSelector, ElementSelectorProps, ExportModal, ExportModalProps, FeedbackDrawer, FeedbackDrawerProps, FeedbackOverviewContent, Input, Label, LivePreviewPanelProps, LocalizedContent, MultiSelectOverlay, Phase2Layout, Phase2MobilePreviewTrigger, Phase2MobileSidebarTrigger, Phase2NavigationFooter, Phase2PreviewPanel, Phase2SectionHeader, Phase2Sidebar, Phase2StatusBadge, Phase2StatusIndicator, Phase4Layout, Phase4MobileFeedbackTrigger, Phase4MobileSidebarTrigger, Phase4ReviewLayout, Phase4Sidebar, ProjectContextInput, ProjectIdeaInput, ProjectTypeSelector, QuickInput, QuickInputProps, RegionSelectOverlay, RichTextEditor, RichTextEditorProps, RichTextEditorRef, ScrollArea, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Separator, Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger, Skeleton, TextEditOverlay, TextEditOverlayProps, Textarea, ToastAction, ToastClose, ToastDescription, ToastProvider, ToastTitle, ToastViewport, Toaster, Toolbar, ToolbarProps, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, Widget, WidgetProps, cn, toast, useToast } from '@framed/widget-core';
7
-
8
- type WidgetVersion = 'latest' | 'v3' | string;
9
- type WidgetSource = 'cdn' | 'bundled';
10
- interface FramedProviderConfig extends FramedConfig {
11
- widgetVersion?: WidgetVersion;
12
- widgetSource?: WidgetSource;
13
- }
14
- interface FramedContextValue {
15
- config: FramedProviderConfig;
16
- projectId: string;
17
- isAuthenticated: boolean;
18
- session: Session | null;
19
- isAuthLoading: boolean;
20
- authError: string | null;
21
- login: () => void;
22
- logout: () => void;
23
- dataLayer: WidgetDataLayer;
24
- supabase: SupabaseClient | null;
25
- framedApi: FramedApiClient;
26
- hasAIFeatures: boolean;
27
- callbacks: WizardCallbacks;
28
- tasks: Task[];
29
- openTasks: Task[];
30
- isTasksLoading: boolean;
31
- refreshTasks: () => Promise<void>;
32
- saveTask: (task: Task) => Promise<void>;
33
- updateTask: (id: string, updates: Partial<Task>) => Promise<void>;
34
- limits: LimitStatus | null;
35
- checkLimits: () => Promise<LimitStatus>;
36
- features: WidgetFeatures;
37
- isWidgetReady: boolean;
38
- }
39
- interface FramedProviderProps {
40
- config?: FramedProviderConfig;
41
- children: ReactNode;
42
- }
43
- declare function FramedProvider({ config, children }: FramedProviderProps): react_jsx_runtime.JSX.Element;
44
- declare function useFramed(): FramedContextValue;
45
- /**
46
- * Convenience hook to get just the wizard callbacks.
47
- * Use this in wizard components that need file upload or translation.
48
- */
49
- declare function useFramedCallbacks(): WizardCallbacks;
50
- /**
51
- * Hook to check if AI features are available.
52
- */
53
- declare function useHasAIFeatures(): boolean;
54
-
55
- interface AuthContextValue {
56
- isAuthenticated: boolean;
57
- session: Session | null;
58
- isLoading: boolean;
59
- error: string | null;
60
- login: () => void;
61
- logout: () => void;
62
- }
63
- interface AuthProviderProps {
64
- config?: AuthConfig;
65
- projectId: string;
66
- apiKey?: string;
67
- supabaseUrl?: string;
68
- children: ReactNode;
69
- }
70
- declare function AuthProvider({ config, projectId, apiKey, supabaseUrl, children, }: AuthProviderProps): react_jsx_runtime.JSX.Element;
71
- declare function useAuth(): AuthContextValue;
72
-
73
- interface FeedbackWidgetProps {
74
- /** User's display name for feedback attribution */
75
- author?: string;
76
- /** Called when a new comment is submitted */
77
- onSubmit?: (comment: FeedbackComment) => void;
78
- /** Called when a task is created from feedback */
79
- onTaskCreated?: (task: Task) => void;
80
- /** Called when user takes a screenshot */
81
- onScreenshot?: () => void;
82
- /** Called when user locates a comment */
83
- onLocateComment?: (comment: FeedbackComment) => void;
84
- /** Called when user exports summary */
85
- onExport?: () => void;
86
- /** Called when widget is closed */
87
- onClose?: () => void;
88
- }
89
- declare function FeedbackWidget({ author, onSubmit, onTaskCreated, onScreenshot, onLocateComment, onExport, onClose, }: FeedbackWidgetProps): react_jsx_runtime.JSX.Element | null;
90
-
91
- interface TasksReadyPanelProps {
92
- /** Maximum number of tasks to show in preview */
93
- maxPreview?: number;
94
- /** Called when prompt is copied */
95
- onPromptCopied?: () => void;
96
- /** Custom class name */
97
- className?: string;
98
- }
99
- declare function TasksReadyPanel({ maxPreview, onPromptCopied, className, }: TasksReadyPanelProps): react_jsx_runtime.JSX.Element | null;
100
-
101
- interface SiteContext {
102
- capturedAt: string;
103
- capturedBy: 'widget' | 'cli';
104
- pages: SitePageInfo[];
105
- navigation: NavigationItem[];
106
- patterns: SitePatterns;
107
- framework: FrameworkInfo;
108
- contentMap: ContentMap[];
109
- }
110
- interface SitePageInfo {
111
- url: string;
112
- title: string;
113
- description?: string;
114
- hasContent: boolean;
115
- sections: string[];
116
- lastModified?: string;
117
- }
118
- interface NavigationItem {
119
- label: string;
120
- href: string;
121
- isActive: boolean;
122
- children?: NavigationItem[];
123
- location: 'header' | 'footer' | 'sidebar';
124
- }
125
- interface SitePatterns {
126
- hasBlog: boolean;
127
- hasBlogPosts: boolean;
128
- hasTeamSection: boolean;
129
- hasContactForm: boolean;
130
- hasNewsletter: boolean;
131
- hasPricing: boolean;
132
- hasTestimonials: boolean;
133
- hasFAQ: boolean;
134
- hasProducts: boolean;
135
- hasCart: boolean;
136
- hasCheckout: boolean;
137
- hasHero: boolean;
138
- hasFooter: boolean;
139
- hasSidebar: boolean;
140
- }
141
- interface FrameworkInfo {
142
- detected: 'nextjs-app' | 'nextjs-pages' | 'remix' | 'react-router' | 'astro' | 'unknown';
143
- confidence: number;
144
- hints: string[];
145
- }
146
- interface ContentMap {
147
- page: string;
148
- sections: {
149
- id: string;
150
- selector: string;
151
- type: 'hero' | 'content' | 'list' | 'form' | 'cta' | 'unknown';
152
- hasImages: boolean;
153
- hasText: boolean;
154
- approximateWords: number;
155
- }[];
156
- }
157
- declare function scanSiteContext(): Promise<SiteContext>;
158
-
159
- interface PromptOptions {
160
- apiKey: string;
161
- includeContext?: boolean;
162
- format?: 'full' | 'compact';
163
- }
164
- declare function generateAIPrompt(tasks: Task[], options: PromptOptions, siteContext?: SiteContext): string;
165
- declare function copyPromptToClipboard(prompt: string): Promise<boolean>;
166
-
167
- interface UseFramedTasksResult {
168
- tasks: Task[];
169
- openTasks: Task[];
170
- inProgressTasks: Task[];
171
- doneTasks: Task[];
172
- isLoading: boolean;
173
- openCount: number;
174
- totalCount: number;
175
- refresh: () => Promise<void>;
176
- markDone: (taskId: string) => Promise<void>;
177
- updateStatus: (taskId: string, status: TaskStatus) => Promise<void>;
178
- generatePrompt: (options?: Partial<PromptOptions>) => Promise<string>;
179
- copyPrompt: (options?: Partial<PromptOptions>) => Promise<boolean>;
180
- }
181
- declare function useFramedTasks(): UseFramedTasksResult;
182
-
183
- declare class LocalDataLayer implements WidgetDataLayer {
184
- private projectId;
185
- constructor(projectId: string);
186
- getSession(): Promise<Session | null>;
187
- loadTasks(page?: string): Promise<Task[]>;
188
- saveTask(task: Task): Promise<void>;
189
- updateTask(id: string, updates: Partial<Task>): Promise<void>;
190
- uploadFile(file: File): Promise<{
191
- url: string;
192
- path: string;
193
- }>;
194
- checkLimits(): Promise<LimitStatus>;
195
- sync: undefined;
196
- deleteTask(id: string): Promise<void>;
197
- clearAllTasks(): Promise<void>;
198
- exportTasks(): Promise<string>;
199
- }
200
-
201
- interface FramedAPIConfig {
202
- apiKey: string;
203
- supabaseUrl: string;
204
- }
205
- interface TasksResponse {
206
- tasks: Task[];
207
- meta: {
208
- total: number;
209
- projectId: string;
210
- projectName: string;
211
- };
212
- }
213
- interface UploadResponse {
214
- url: string;
215
- path: string;
216
- expiresAt?: string;
217
- }
218
- interface ValidationResult {
219
- valid: boolean;
220
- session?: Session;
221
- error?: string;
222
- }
223
- declare class FramedAPIClient {
224
- private apiKey;
225
- private baseUrl;
226
- constructor(config: FramedAPIConfig);
227
- private request;
228
- getTasks(options?: {
229
- status?: 'open' | 'in_progress' | 'done' | 'rejected';
230
- page?: string;
231
- }): Promise<TasksResponse>;
232
- createTask(task: Omit<Task, 'id' | 'meta'>): Promise<Task>;
233
- updateTask(taskId: string, updates: Partial<Task>): Promise<Task>;
234
- markTaskDone(taskId: string): Promise<{
235
- success: boolean;
236
- task: Task;
237
- }>;
238
- uploadFile(file: File): Promise<UploadResponse>;
239
- validateMagicToken(token: string): Promise<ValidationResult>;
240
- exchangeSessionToken(sessionToken: string): Promise<ValidationResult>;
241
- getSession(): Promise<Session | null>;
242
- }
243
-
244
- declare class SyncDataLayer implements WidgetDataLayer {
245
- private projectId;
246
- private client;
247
- private session;
248
- constructor(projectId: string, config: FramedAPIConfig);
249
- private loadCachedSession;
250
- private cacheSession;
251
- getSession(): Promise<Session | null>;
252
- loadTasks(page?: string): Promise<Task[]>;
253
- saveTask(task: Task): Promise<void>;
254
- updateTask(id: string, updates: Partial<Task>): Promise<void>;
255
- uploadFile(file: File): Promise<{
256
- url: string;
257
- path: string;
258
- }>;
259
- private createFormData;
260
- checkLimits(): Promise<LimitStatus>;
261
- sync(): Promise<SyncResult>;
262
- private getPendingTasks;
263
- private savePendingTasks;
264
- private addPendingTask;
265
- validateMagicToken(token: string): Promise<{
266
- valid: boolean;
267
- session?: Session;
268
- error?: string;
269
- }>;
270
- exchangeSessionToken(sessionToken: string): Promise<{
271
- valid: boolean;
272
- session?: Session;
273
- error?: string;
274
- }>;
275
- clearSession(): void;
276
- markTaskDone(taskId: string): Promise<void>;
277
- }
278
-
279
- /**
280
- * Navigation hook that works without react-router-dom
281
- * Uses window.location for navigation
282
- */
283
- declare function useNavigate(): (path: string, options?: {
284
- replace?: boolean;
285
- }) => void;
286
- /**
287
- * Get URL params from current location
288
- * Works without react-router-dom
289
- */
290
- declare function useParams<T extends Record<string, string>>(): T;
291
- /**
292
- * Get current location info
293
- * Works without react-router-dom
294
- */
295
- declare function useLocation(): {
296
- pathname: string;
297
- search: string;
298
- hash: string;
299
- state: null;
300
- };
301
- /**
302
- * Search params hook
303
- * Works without react-router-dom
304
- */
305
- declare function useSearchParams(): [URLSearchParams, (params: URLSearchParams) => void];
306
- /**
307
- * Link component that works without react-router-dom
308
- * Renders a plain anchor tag
309
- * Accepts either 'to' or 'href' for compatibility
310
- */
311
- interface LinkProps extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'> {
312
- to?: string;
313
- href?: string;
314
- replace?: boolean;
315
- children: React.ReactNode;
316
- }
317
- declare function Link({ to, href, replace, children, onClick, ...props }: LinkProps): React.DetailedReactHTMLElement<{
318
- id?: string | undefined | undefined;
319
- type?: string | undefined | undefined;
320
- slot?: string | undefined | undefined;
321
- style?: React.CSSProperties | undefined;
322
- title?: string | undefined | undefined;
323
- content?: string | undefined | undefined;
324
- dir?: string | undefined | undefined;
325
- "aria-current"?: boolean | "false" | "true" | "page" | "step" | "location" | "date" | "time" | undefined | undefined;
326
- onSubmit?: React.FormEventHandler<HTMLAnchorElement> | undefined;
327
- className?: string | undefined | undefined;
328
- download?: any;
329
- hrefLang?: string | undefined | undefined;
330
- media?: string | undefined | undefined;
331
- ping?: string | undefined | undefined;
332
- target?: React.HTMLAttributeAnchorTarget | undefined;
333
- referrerPolicy?: React.HTMLAttributeReferrerPolicy | undefined;
334
- defaultChecked?: boolean | undefined | undefined;
335
- defaultValue?: string | number | readonly string[] | undefined;
336
- suppressContentEditableWarning?: boolean | undefined | undefined;
337
- suppressHydrationWarning?: boolean | undefined | undefined;
338
- accessKey?: string | undefined | undefined;
339
- autoCapitalize?: "off" | "none" | "on" | "sentences" | "words" | "characters" | undefined | (string & {}) | undefined;
340
- autoFocus?: boolean | undefined | undefined;
341
- contentEditable?: (boolean | "false" | "true") | "inherit" | "plaintext-only" | undefined;
342
- contextMenu?: string | undefined | undefined;
343
- draggable?: (boolean | "false" | "true") | undefined;
344
- enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
345
- hidden?: boolean | undefined | undefined;
346
- lang?: string | undefined | undefined;
347
- nonce?: string | undefined | undefined;
348
- spellCheck?: (boolean | "false" | "true") | undefined;
349
- tabIndex?: number | undefined | undefined;
350
- translate?: "yes" | "no" | undefined | undefined;
351
- radioGroup?: string | undefined | undefined;
352
- role?: React.AriaRole | undefined;
353
- about?: string | undefined | undefined;
354
- datatype?: string | undefined | undefined;
355
- inlist?: any;
356
- prefix?: string | undefined | undefined;
357
- property?: string | undefined | undefined;
358
- rel?: string | undefined | undefined;
359
- resource?: string | undefined | undefined;
360
- rev?: string | undefined | undefined;
361
- typeof?: string | undefined | undefined;
362
- vocab?: string | undefined | undefined;
363
- autoCorrect?: string | undefined | undefined;
364
- autoSave?: string | undefined | undefined;
365
- color?: string | undefined | undefined;
366
- itemProp?: string | undefined | undefined;
367
- itemScope?: boolean | undefined | undefined;
368
- itemType?: string | undefined | undefined;
369
- itemID?: string | undefined | undefined;
370
- itemRef?: string | undefined | undefined;
371
- results?: number | undefined | undefined;
372
- security?: string | undefined | undefined;
373
- unselectable?: "on" | "off" | undefined | undefined;
374
- inputMode?: "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | "search" | undefined | undefined;
375
- is?: string | undefined | undefined;
376
- exportparts?: string | undefined | undefined;
377
- part?: string | undefined | undefined;
378
- "aria-activedescendant"?: string | undefined | undefined;
379
- "aria-atomic"?: (boolean | "false" | "true") | undefined;
380
- "aria-autocomplete"?: "none" | "inline" | "list" | "both" | undefined | undefined;
381
- "aria-braillelabel"?: string | undefined | undefined;
382
- "aria-brailleroledescription"?: string | undefined | undefined;
383
- "aria-busy"?: (boolean | "false" | "true") | undefined;
384
- "aria-checked"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
385
- "aria-colcount"?: number | undefined | undefined;
386
- "aria-colindex"?: number | undefined | undefined;
387
- "aria-colindextext"?: string | undefined | undefined;
388
- "aria-colspan"?: number | undefined | undefined;
389
- "aria-controls"?: string | undefined | undefined;
390
- "aria-describedby"?: string | undefined | undefined;
391
- "aria-description"?: string | undefined | undefined;
392
- "aria-details"?: string | undefined | undefined;
393
- "aria-disabled"?: (boolean | "false" | "true") | undefined;
394
- "aria-dropeffect"?: "none" | "copy" | "execute" | "link" | "move" | "popup" | undefined | undefined;
395
- "aria-errormessage"?: string | undefined | undefined;
396
- "aria-expanded"?: (boolean | "false" | "true") | undefined;
397
- "aria-flowto"?: string | undefined | undefined;
398
- "aria-grabbed"?: (boolean | "false" | "true") | undefined;
399
- "aria-haspopup"?: boolean | "false" | "true" | "menu" | "listbox" | "tree" | "grid" | "dialog" | undefined | undefined;
400
- "aria-hidden"?: (boolean | "false" | "true") | undefined;
401
- "aria-invalid"?: boolean | "false" | "true" | "grammar" | "spelling" | undefined | undefined;
402
- "aria-keyshortcuts"?: string | undefined | undefined;
403
- "aria-label"?: string | undefined | undefined;
404
- "aria-labelledby"?: string | undefined | undefined;
405
- "aria-level"?: number | undefined | undefined;
406
- "aria-live"?: "off" | "assertive" | "polite" | undefined | undefined;
407
- "aria-modal"?: (boolean | "false" | "true") | undefined;
408
- "aria-multiline"?: (boolean | "false" | "true") | undefined;
409
- "aria-multiselectable"?: (boolean | "false" | "true") | undefined;
410
- "aria-orientation"?: "horizontal" | "vertical" | undefined | undefined;
411
- "aria-owns"?: string | undefined | undefined;
412
- "aria-placeholder"?: string | undefined | undefined;
413
- "aria-posinset"?: number | undefined | undefined;
414
- "aria-pressed"?: boolean | "false" | "mixed" | "true" | undefined | undefined;
415
- "aria-readonly"?: (boolean | "false" | "true") | undefined;
416
- "aria-relevant"?: "additions" | "additions removals" | "additions text" | "all" | "removals" | "removals additions" | "removals text" | "text" | "text additions" | "text removals" | undefined | undefined;
417
- "aria-required"?: (boolean | "false" | "true") | undefined;
418
- "aria-roledescription"?: string | undefined | undefined;
419
- "aria-rowcount"?: number | undefined | undefined;
420
- "aria-rowindex"?: number | undefined | undefined;
421
- "aria-rowindextext"?: string | undefined | undefined;
422
- "aria-rowspan"?: number | undefined | undefined;
423
- "aria-selected"?: (boolean | "false" | "true") | undefined;
424
- "aria-setsize"?: number | undefined | undefined;
425
- "aria-sort"?: "none" | "ascending" | "descending" | "other" | undefined | undefined;
426
- "aria-valuemax"?: number | undefined | undefined;
427
- "aria-valuemin"?: number | undefined | undefined;
428
- "aria-valuenow"?: number | undefined | undefined;
429
- "aria-valuetext"?: string | undefined | undefined;
430
- dangerouslySetInnerHTML?: {
431
- __html: string | TrustedHTML;
432
- } | undefined | undefined;
433
- onCopy?: React.ClipboardEventHandler<HTMLAnchorElement> | undefined;
434
- onCopyCapture?: React.ClipboardEventHandler<HTMLAnchorElement> | undefined;
435
- onCut?: React.ClipboardEventHandler<HTMLAnchorElement> | undefined;
436
- onCutCapture?: React.ClipboardEventHandler<HTMLAnchorElement> | undefined;
437
- onPaste?: React.ClipboardEventHandler<HTMLAnchorElement> | undefined;
438
- onPasteCapture?: React.ClipboardEventHandler<HTMLAnchorElement> | undefined;
439
- onCompositionEnd?: React.CompositionEventHandler<HTMLAnchorElement> | undefined;
440
- onCompositionEndCapture?: React.CompositionEventHandler<HTMLAnchorElement> | undefined;
441
- onCompositionStart?: React.CompositionEventHandler<HTMLAnchorElement> | undefined;
442
- onCompositionStartCapture?: React.CompositionEventHandler<HTMLAnchorElement> | undefined;
443
- onCompositionUpdate?: React.CompositionEventHandler<HTMLAnchorElement> | undefined;
444
- onCompositionUpdateCapture?: React.CompositionEventHandler<HTMLAnchorElement> | undefined;
445
- onFocus?: React.FocusEventHandler<HTMLAnchorElement> | undefined;
446
- onFocusCapture?: React.FocusEventHandler<HTMLAnchorElement> | undefined;
447
- onBlur?: React.FocusEventHandler<HTMLAnchorElement> | undefined;
448
- onBlurCapture?: React.FocusEventHandler<HTMLAnchorElement> | undefined;
449
- onChange?: React.FormEventHandler<HTMLAnchorElement> | undefined;
450
- onChangeCapture?: React.FormEventHandler<HTMLAnchorElement> | undefined;
451
- onBeforeInput?: React.InputEventHandler<HTMLAnchorElement> | undefined;
452
- onBeforeInputCapture?: React.FormEventHandler<HTMLAnchorElement> | undefined;
453
- onInput?: React.FormEventHandler<HTMLAnchorElement> | undefined;
454
- onInputCapture?: React.FormEventHandler<HTMLAnchorElement> | undefined;
455
- onReset?: React.FormEventHandler<HTMLAnchorElement> | undefined;
456
- onResetCapture?: React.FormEventHandler<HTMLAnchorElement> | undefined;
457
- onSubmitCapture?: React.FormEventHandler<HTMLAnchorElement> | undefined;
458
- onInvalid?: React.FormEventHandler<HTMLAnchorElement> | undefined;
459
- onInvalidCapture?: React.FormEventHandler<HTMLAnchorElement> | undefined;
460
- onLoad?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
461
- onLoadCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
462
- onError?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
463
- onErrorCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
464
- onKeyDown?: React.KeyboardEventHandler<HTMLAnchorElement> | undefined;
465
- onKeyDownCapture?: React.KeyboardEventHandler<HTMLAnchorElement> | undefined;
466
- onKeyPress?: React.KeyboardEventHandler<HTMLAnchorElement> | undefined;
467
- onKeyPressCapture?: React.KeyboardEventHandler<HTMLAnchorElement> | undefined;
468
- onKeyUp?: React.KeyboardEventHandler<HTMLAnchorElement> | undefined;
469
- onKeyUpCapture?: React.KeyboardEventHandler<HTMLAnchorElement> | undefined;
470
- onAbort?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
471
- onAbortCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
472
- onCanPlay?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
473
- onCanPlayCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
474
- onCanPlayThrough?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
475
- onCanPlayThroughCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
476
- onDurationChange?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
477
- onDurationChangeCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
478
- onEmptied?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
479
- onEmptiedCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
480
- onEncrypted?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
481
- onEncryptedCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
482
- onEnded?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
483
- onEndedCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
484
- onLoadedData?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
485
- onLoadedDataCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
486
- onLoadedMetadata?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
487
- onLoadedMetadataCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
488
- onLoadStart?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
489
- onLoadStartCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
490
- onPause?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
491
- onPauseCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
492
- onPlay?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
493
- onPlayCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
494
- onPlaying?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
495
- onPlayingCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
496
- onProgress?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
497
- onProgressCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
498
- onRateChange?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
499
- onRateChangeCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
500
- onSeeked?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
501
- onSeekedCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
502
- onSeeking?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
503
- onSeekingCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
504
- onStalled?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
505
- onStalledCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
506
- onSuspend?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
507
- onSuspendCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
508
- onTimeUpdate?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
509
- onTimeUpdateCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
510
- onVolumeChange?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
511
- onVolumeChangeCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
512
- onWaiting?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
513
- onWaitingCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
514
- onAuxClick?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
515
- onAuxClickCapture?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
516
- onClickCapture?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
517
- onContextMenu?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
518
- onContextMenuCapture?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
519
- onDoubleClick?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
520
- onDoubleClickCapture?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
521
- onDrag?: React.DragEventHandler<HTMLAnchorElement> | undefined;
522
- onDragCapture?: React.DragEventHandler<HTMLAnchorElement> | undefined;
523
- onDragEnd?: React.DragEventHandler<HTMLAnchorElement> | undefined;
524
- onDragEndCapture?: React.DragEventHandler<HTMLAnchorElement> | undefined;
525
- onDragEnter?: React.DragEventHandler<HTMLAnchorElement> | undefined;
526
- onDragEnterCapture?: React.DragEventHandler<HTMLAnchorElement> | undefined;
527
- onDragExit?: React.DragEventHandler<HTMLAnchorElement> | undefined;
528
- onDragExitCapture?: React.DragEventHandler<HTMLAnchorElement> | undefined;
529
- onDragLeave?: React.DragEventHandler<HTMLAnchorElement> | undefined;
530
- onDragLeaveCapture?: React.DragEventHandler<HTMLAnchorElement> | undefined;
531
- onDragOver?: React.DragEventHandler<HTMLAnchorElement> | undefined;
532
- onDragOverCapture?: React.DragEventHandler<HTMLAnchorElement> | undefined;
533
- onDragStart?: React.DragEventHandler<HTMLAnchorElement> | undefined;
534
- onDragStartCapture?: React.DragEventHandler<HTMLAnchorElement> | undefined;
535
- onDrop?: React.DragEventHandler<HTMLAnchorElement> | undefined;
536
- onDropCapture?: React.DragEventHandler<HTMLAnchorElement> | undefined;
537
- onMouseDown?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
538
- onMouseDownCapture?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
539
- onMouseEnter?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
540
- onMouseLeave?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
541
- onMouseMove?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
542
- onMouseMoveCapture?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
543
- onMouseOut?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
544
- onMouseOutCapture?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
545
- onMouseOver?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
546
- onMouseOverCapture?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
547
- onMouseUp?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
548
- onMouseUpCapture?: React.MouseEventHandler<HTMLAnchorElement> | undefined;
549
- onSelect?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
550
- onSelectCapture?: React.ReactEventHandler<HTMLAnchorElement> | undefined;
551
- onTouchCancel?: React.TouchEventHandler<HTMLAnchorElement> | undefined;
552
- onTouchCancelCapture?: React.TouchEventHandler<HTMLAnchorElement> | undefined;
553
- onTouchEnd?: React.TouchEventHandler<HTMLAnchorElement> | undefined;
554
- onTouchEndCapture?: React.TouchEventHandler<HTMLAnchorElement> | undefined;
555
- onTouchMove?: React.TouchEventHandler<HTMLAnchorElement> | undefined;
556
- onTouchMoveCapture?: React.TouchEventHandler<HTMLAnchorElement> | undefined;
557
- onTouchStart?: React.TouchEventHandler<HTMLAnchorElement> | undefined;
558
- onTouchStartCapture?: React.TouchEventHandler<HTMLAnchorElement> | undefined;
559
- onPointerDown?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
560
- onPointerDownCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
561
- onPointerMove?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
562
- onPointerMoveCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
563
- onPointerUp?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
564
- onPointerUpCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
565
- onPointerCancel?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
566
- onPointerCancelCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
567
- onPointerEnter?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
568
- onPointerLeave?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
569
- onPointerOver?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
570
- onPointerOverCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
571
- onPointerOut?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
572
- onPointerOutCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
573
- onGotPointerCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
574
- onGotPointerCaptureCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
575
- onLostPointerCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
576
- onLostPointerCaptureCapture?: React.PointerEventHandler<HTMLAnchorElement> | undefined;
577
- onScroll?: React.UIEventHandler<HTMLAnchorElement> | undefined;
578
- onScrollCapture?: React.UIEventHandler<HTMLAnchorElement> | undefined;
579
- onWheel?: React.WheelEventHandler<HTMLAnchorElement> | undefined;
580
- onWheelCapture?: React.WheelEventHandler<HTMLAnchorElement> | undefined;
581
- onAnimationStart?: React.AnimationEventHandler<HTMLAnchorElement> | undefined;
582
- onAnimationStartCapture?: React.AnimationEventHandler<HTMLAnchorElement> | undefined;
583
- onAnimationEnd?: React.AnimationEventHandler<HTMLAnchorElement> | undefined;
584
- onAnimationEndCapture?: React.AnimationEventHandler<HTMLAnchorElement> | undefined;
585
- onAnimationIteration?: React.AnimationEventHandler<HTMLAnchorElement> | undefined;
586
- onAnimationIterationCapture?: React.AnimationEventHandler<HTMLAnchorElement> | undefined;
587
- onTransitionEnd?: React.TransitionEventHandler<HTMLAnchorElement> | undefined;
588
- onTransitionEndCapture?: React.TransitionEventHandler<HTMLAnchorElement> | undefined;
589
- href: string;
590
- onClick: (e: React.MouseEvent<HTMLAnchorElement>) => void;
591
- }, HTMLElement>;
592
- /**
593
- * Navigate programmatically
594
- */
595
- declare function navigate(path: string, options?: {
596
- replace?: boolean;
597
- }): void;
598
-
599
- /**
600
- * Supabase stub for widget-sdk
601
- *
602
- * This provides a compatibility layer for components that expect Supabase.
603
- * In SDK mode, we use the FramedAPIClient instead of direct Supabase access.
604
- *
605
- * For components that absolutely need Supabase (e.g., real-time subscriptions),
606
- * users can initialize their own Supabase instance using initSupabase().
607
- */
608
-
609
- /**
610
- * Get the current Supabase client instance
611
- * Returns null if not initialized
612
- */
613
- declare function getSupabase(): SupabaseClient$1 | null;
614
- /**
615
- * Initialize Supabase with user's own credentials
616
- * This is optional - most SDK features work without it
617
- *
618
- * @param url - Supabase project URL
619
- * @param key - Supabase anon key
620
- * @returns The Supabase client instance
621
- */
622
- declare function initSupabase(url: string, key: string): SupabaseClient$1;
623
- /**
624
- * Clear the Supabase instance
625
- * Useful for cleanup or switching projects
626
- */
627
- declare function clearSupabase(): void;
628
- /**
629
- * Supabase client proxy
630
- *
631
- * When Supabase is not initialized, this returns safe no-op functions
632
- * that log warnings and return empty results.
633
- *
634
- * When Supabase is initialized, it forwards all calls to the real client.
635
- *
636
- * @example
637
- * // Without initialization - logs warning, returns empty results
638
- * const { data } = await supabase.from('tasks').select('*')
639
- * // data = null, warning logged
640
- *
641
- * // With initialization - works normally
642
- * initSupabase(url, key)
643
- * const { data } = await supabase.from('tasks').select('*')
644
- * // data = actual results
645
- */
646
- declare const supabase: SupabaseClient$1<any, "public", "public", any, any>;
647
-
648
- declare function FramedDashboard(): react_jsx_runtime.JSX.Element;
649
-
650
- declare function FramedLogin(): react_jsx_runtime.JSX.Element;
651
-
652
- declare function FramedReview(): react_jsx_runtime.JSX.Element;
653
-
654
- declare function FramedBuild(): react_jsx_runtime.JSX.Element;
655
-
656
- /**
657
- * FramedManage - Maintenance & Monitoring Dashboard
658
- *
659
- * This page renders the Phase 5 Command Center for project maintenance.
660
- * It requires a Supabase connection for full functionality.
661
- *
662
- * Features when connected:
663
- * - Maintenance item tracking (inbox, board, timeline views)
664
- * - Uptime monitoring
665
- * - Domain & SSL monitoring
666
- * - Performance analysis
667
- * - Monthly reports
668
- * - Changelog management
669
- * - Improvement suggestions
670
- */
671
- declare function FramedManage(): react_jsx_runtime.JSX.Element;
672
-
673
- declare function FramedStarter(): react_jsx_runtime.JSX.Element;
674
-
675
- export { AuthProvider, type ContentMap, FeedbackWidget, type FeedbackWidgetProps, FramedAPIClient, type FramedAPIConfig, FramedBuild, FramedDashboard, FramedLogin, FramedManage, FramedProvider, type FramedProviderConfig, type FramedProviderProps, FramedReview, FramedStarter, type FrameworkInfo, Link, type LinkProps, LocalDataLayer, type NavigationItem, type PromptOptions, type SiteContext, type SitePageInfo, type SitePatterns, SyncDataLayer, TasksReadyPanel, type TasksReadyPanelProps, type TasksResponse, type UploadResponse, type UseFramedTasksResult, type ValidationResult, clearSupabase, copyPromptToClipboard, generateAIPrompt, getSupabase, initSupabase as initSupabaseClient, navigate, scanSiteContext, supabase, useAuth, useFramed, useFramedCallbacks, useFramedTasks, useHasAIFeatures, useLocation, useNavigate, useParams, useSearchParams };