flarecms 0.2.2 → 0.2.4

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.
Files changed (126) hide show
  1. package/dist/api/lib/cache.d.ts +18 -0
  2. package/dist/api/lib/response.d.ts +44 -0
  3. package/dist/api/middlewares/auth.d.ts +10 -0
  4. package/dist/api/middlewares/cors.d.ts +1 -0
  5. package/dist/api/middlewares/rbac.d.ts +21 -0
  6. package/dist/api/routes/auth.d.ts +6 -0
  7. package/dist/api/routes/collections.d.ts +6 -0
  8. package/dist/api/routes/content.d.ts +6 -0
  9. package/dist/api/routes/device.d.ts +6 -0
  10. package/dist/api/routes/magic.d.ts +6 -0
  11. package/dist/api/routes/mcp.d.ts +6 -0
  12. package/dist/api/routes/oauth.d.ts +6 -0
  13. package/dist/api/routes/plugins.d.ts +6 -0
  14. package/dist/api/routes/settings.d.ts +6 -0
  15. package/dist/api/routes/setup.d.ts +6 -0
  16. package/dist/api/routes/tokens.d.ts +6 -0
  17. package/dist/api/schemas/auth.d.ts +12 -0
  18. package/dist/api/schemas/index.d.ts +43 -0
  19. package/dist/api/schemas/tokens.d.ts +20 -0
  20. package/dist/auth/index.d.ts +11 -0
  21. package/dist/cli/commands.d.ts +3 -0
  22. package/dist/cli/commands.js +19 -2
  23. package/dist/cli/index.d.ts +2 -0
  24. package/dist/cli/index.js +19 -2
  25. package/dist/cli/mcp.d.ts +9 -0
  26. package/dist/cli/tests/cli.test.d.ts +1 -0
  27. package/dist/cli/tests/create-plugin-template.test.d.ts +1 -0
  28. package/dist/cli/tests/create.test.d.ts +1 -0
  29. package/dist/cli/tests/plugin.test.d.ts +1 -0
  30. package/dist/cli/tests/publish.test.d.ts +1 -0
  31. package/dist/client/FlareAdminRouter.d.ts +20 -0
  32. package/dist/client/app.d.ts +1 -0
  33. package/dist/client/components/app-sidebar.d.ts +5 -0
  34. package/dist/client/components/blocks/block-card.d.ts +7 -0
  35. package/dist/client/components/blocks/block-form.d.ts +7 -0
  36. package/dist/client/components/blocks/block-renderer.d.ts +10 -0
  37. package/dist/client/components/blocks/block-table.d.ts +7 -0
  38. package/dist/client/components/collection-modal.d.ts +6 -0
  39. package/dist/client/components/content-list.d.ts +3 -0
  40. package/dist/client/components/dynamic-form.d.ts +9 -0
  41. package/dist/client/components/field-modal.d.ts +8 -0
  42. package/dist/client/components/plugin-widget.d.ts +6 -0
  43. package/dist/client/components/settings/api-token-section.d.ts +1 -0
  44. package/dist/client/components/settings/general-section.d.ts +1 -0
  45. package/dist/client/components/settings/security-section.d.ts +1 -0
  46. package/dist/client/components/settings/seo-section.d.ts +1 -0
  47. package/dist/client/components/settings/signup-section.d.ts +1 -0
  48. package/dist/client/components/ui/accordion.d.ts +6 -0
  49. package/dist/client/components/ui/avatar.d.ts +11 -0
  50. package/dist/client/components/ui/badge.d.ts +7 -0
  51. package/dist/client/components/ui/button.d.ts +11 -0
  52. package/dist/client/components/ui/card.d.ts +11 -0
  53. package/dist/client/components/ui/checkbox.d.ts +3 -0
  54. package/dist/client/components/ui/collapsible.d.ts +5 -0
  55. package/dist/client/components/ui/dialog.d.ts +17 -0
  56. package/dist/client/components/ui/icon-picker.d.ts +27 -0
  57. package/dist/client/components/ui/icons-data.d.ts +5 -0
  58. package/dist/client/components/ui/input.d.ts +3 -0
  59. package/dist/client/components/ui/label.d.ts +3 -0
  60. package/dist/client/components/ui/popover.d.ts +10 -0
  61. package/dist/client/components/ui/select.d.ts +15 -0
  62. package/dist/client/components/ui/separator.d.ts +3 -0
  63. package/dist/client/components/ui/sheet.d.ts +14 -0
  64. package/dist/client/components/ui/sidebar.d.ts +63 -0
  65. package/dist/client/components/ui/skeleton.d.ts +2 -0
  66. package/dist/client/components/ui/sonner.d.ts +3 -0
  67. package/dist/client/components/ui/switch.d.ts +5 -0
  68. package/dist/client/components/ui/table.d.ts +10 -0
  69. package/dist/client/components/ui/tabs.d.ts +10 -0
  70. package/dist/client/components/ui/textarea.d.ts +3 -0
  71. package/dist/client/components/ui/tooltip.d.ts +6 -0
  72. package/dist/client/hooks/use-mobile.d.ts +1 -0
  73. package/dist/client/index.d.ts +8 -0
  74. package/dist/client/layouts/admin-layout.d.ts +6 -0
  75. package/dist/client/layouts/settings-layout.d.ts +6 -0
  76. package/dist/client/lib/api.d.ts +18 -0
  77. package/dist/client/lib/block-registry.d.ts +24 -0
  78. package/dist/client/lib/block-types.d.ts +132 -0
  79. package/dist/client/lib/utils.d.ts +2 -0
  80. package/dist/client/main.d.ts +1 -0
  81. package/dist/client/pages/collection-detail.d.ts +7 -0
  82. package/dist/client/pages/collections.d.ts +1 -0
  83. package/dist/client/pages/dashboard.d.ts +1 -0
  84. package/dist/client/pages/device.d.ts +1 -0
  85. package/dist/client/pages/document-detail-page.d.ts +1 -0
  86. package/dist/client/pages/documents-page.d.ts +1 -0
  87. package/dist/client/pages/login.d.ts +1 -0
  88. package/dist/client/pages/plugin-manager.d.ts +1 -0
  89. package/dist/client/pages/plugin-page.d.ts +6 -0
  90. package/dist/client/pages/settings.d.ts +1 -0
  91. package/dist/client/pages/setup.d.ts +1 -0
  92. package/dist/client/pages/signup.d.ts +1 -0
  93. package/dist/client/store/auth.d.ts +10 -0
  94. package/dist/client/store/collections.d.ts +3 -0
  95. package/dist/client/store/config.d.ts +4 -0
  96. package/dist/client/store/fetcher.d.ts +4 -0
  97. package/dist/client/store/plugins.d.ts +21 -0
  98. package/dist/client/store/router.d.ts +84 -0
  99. package/dist/client/store/schema.d.ts +7 -0
  100. package/dist/client/store/settings.d.ts +7 -0
  101. package/dist/client/types.d.ts +31 -0
  102. package/dist/db/dynamic.d.ts +5 -0
  103. package/dist/db/index.d.ts +8 -0
  104. package/dist/db/migrations/001_initial_schema.d.ts +3 -0
  105. package/dist/db/migrations/002_auth_tables.d.ts +3 -0
  106. package/dist/db/migrations/003_plugins.d.ts +3 -0
  107. package/dist/db/migrator.d.ts +10 -0
  108. package/dist/db/schema.d.ts +151 -0
  109. package/dist/index.d.ts +11 -0
  110. package/dist/plugins/adapt-entry.d.ts +5 -0
  111. package/dist/plugins/context.d.ts +21 -0
  112. package/dist/plugins/define-plugin.d.ts +22 -0
  113. package/dist/plugins/hooks.d.ts +37 -0
  114. package/dist/plugins/index.d.ts +7 -0
  115. package/dist/plugins/manager.d.ts +41 -0
  116. package/dist/plugins/middleware.d.ts +8 -0
  117. package/dist/plugins/noop-sandbox.d.ts +18 -0
  118. package/dist/plugins/routes.d.ts +32 -0
  119. package/dist/plugins/sandbox/bridge.d.ts +45 -0
  120. package/dist/plugins/sandbox/runner.d.ts +14 -0
  121. package/dist/plugins/sandbox/types.d.ts +71 -0
  122. package/dist/plugins/sandbox/wrapper.d.ts +6 -0
  123. package/dist/plugins/types.d.ts +725 -0
  124. package/dist/server/index.d.ts +18 -0
  125. package/dist/types.d.ts +19 -0
  126. package/package.json +1 -1
@@ -0,0 +1,18 @@
1
+ import type { KVNamespace } from "@cloudflare/workers-types";
2
+ export interface SchemaCache {
3
+ id: string;
4
+ slug: string;
5
+ label: string;
6
+ is_public: number;
7
+ features: string[];
8
+ url_pattern: string | null;
9
+ fields: any[];
10
+ }
11
+ export declare const cache: {
12
+ getSchema(kv: KVNamespace, slug: string): Promise<SchemaCache | null>;
13
+ setSchema(kv: KVNamespace, slug: string, schema: SchemaCache): Promise<void>;
14
+ invalidateSchema(kv: KVNamespace, slug: string): Promise<void>;
15
+ getCollectionList(kv: KVNamespace): Promise<any[] | null>;
16
+ setCollectionList(kv: KVNamespace, collections: any[]): Promise<void>;
17
+ invalidateCollectionList(kv: KVNamespace): Promise<void>;
18
+ };
@@ -0,0 +1,44 @@
1
+ import type { Context } from 'hono';
2
+ export interface PaginationMeta {
3
+ page: number;
4
+ limit: number;
5
+ total: number;
6
+ totalPages: number;
7
+ hasNextPage: boolean;
8
+ hasPrevPage: boolean;
9
+ }
10
+ export declare const apiResponse: {
11
+ /**
12
+ * Send a successful response with data and optional metadata
13
+ */
14
+ ok: (c: Context, data: any, meta?: any, status?: number) => Response & import("hono").TypedResponse<{
15
+ data: any;
16
+ meta: any;
17
+ }, any, "json">;
18
+ /**
19
+ * Send a paginated response
20
+ */
21
+ paginated: (c: Context, data: any[], meta: PaginationMeta, status?: number) => Response & import("hono").TypedResponse<{
22
+ data: any[];
23
+ meta: {
24
+ page: number;
25
+ limit: number;
26
+ total: number;
27
+ totalPages: number;
28
+ hasNextPage: boolean;
29
+ hasPrevPage: boolean;
30
+ };
31
+ }, any, "json">;
32
+ /**
33
+ * Send an error response
34
+ */
35
+ error: (c: Context, message: string | any, status?: number) => Response & import("hono").TypedResponse<{
36
+ error: any;
37
+ }, any, "json">;
38
+ /**
39
+ * Specialized success response for creations
40
+ */
41
+ created: (c: Context, data: any) => Response & import("hono").TypedResponse<{
42
+ data: any;
43
+ }, 201, "json">;
44
+ };
@@ -0,0 +1,10 @@
1
+ import type { Context, Next } from 'hono';
2
+ export declare const authMiddleware: (c: Context, next: Next) => Promise<void | (Response & import("hono").TypedResponse<{
3
+ error: string;
4
+ }, 401, "json">) | (Response & import("hono").TypedResponse<{
5
+ error: string;
6
+ }, 403, "json">)>;
7
+ export declare const setupMiddleware: (c: Context, next: Next) => Promise<void | (Response & import("hono").TypedResponse<{
8
+ error: string;
9
+ code: string;
10
+ }, 403, "json">)>;
@@ -0,0 +1 @@
1
+ export declare const corsMiddleware: import("hono").MiddlewareHandler;
@@ -0,0 +1,21 @@
1
+ import type { Context, Next } from 'hono';
2
+ /**
3
+ * Ensures the authenticated user has one of the allowed roles.
4
+ * Must be used AFTER authMiddleware.
5
+ */
6
+ export declare const requireRole: (allowedRoles: string[]) => (c: Context, next: Next) => Promise<void | (Response & import("hono").TypedResponse<{
7
+ error: string;
8
+ }, 401, "json">) | (Response & import("hono").TypedResponse<{
9
+ error: string;
10
+ requiredRoles: string[];
11
+ }, 403, "json">)>;
12
+ export declare const requireScope: (action: string, resourceOrParamName?: string) => (c: Context, next: Next) => Promise<void | (Response & import("hono").TypedResponse<{
13
+ error: string;
14
+ code: string;
15
+ }, 401, "json">) | (Response & import("hono").TypedResponse<{
16
+ error: string;
17
+ required: {
18
+ action: string;
19
+ resource: string | undefined;
20
+ };
21
+ }, 403, "json">)>;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const authRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const collectionsRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const contentRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const deviceRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const magicRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const mcpRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const oauthRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types.js';
3
+ export declare const pluginRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const settingsRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const setupRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,6 @@
1
+ import { Hono } from 'hono';
2
+ import type { Bindings, Variables } from '../../types';
3
+ export declare const tokenRoutes: Hono<{
4
+ Bindings: Bindings;
5
+ Variables: Variables;
6
+ }, import("hono/types").BlankSchema, "/">;
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ export declare const magicLinkRequestSchema: z.ZodObject<{
3
+ email: z.ZodString;
4
+ }, z.core.$strip>;
5
+ export declare const magicLinkVerifySchema: z.ZodObject<{
6
+ email: z.ZodString;
7
+ token: z.ZodString;
8
+ }, z.core.$strip>;
9
+ export declare const oauthCallbackSchema: z.ZodObject<{
10
+ code: z.ZodString;
11
+ state: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strip>;
@@ -0,0 +1,43 @@
1
+ import { z } from 'zod';
2
+ export declare const loginSchema: z.ZodObject<{
3
+ email: z.ZodEmail;
4
+ password: z.ZodString;
5
+ }, z.core.$strip>;
6
+ export declare const signupSchema: z.ZodObject<{
7
+ email: z.ZodEmail;
8
+ password: z.ZodString;
9
+ }, z.core.$strip>;
10
+ export declare const collectionSchema: z.ZodObject<{
11
+ slug: z.ZodString;
12
+ label: z.ZodString;
13
+ labelSingular: z.ZodOptional<z.ZodString>;
14
+ description: z.ZodOptional<z.ZodString>;
15
+ icon: z.ZodOptional<z.ZodString>;
16
+ isPublic: z.ZodOptional<z.ZodBoolean>;
17
+ features: z.ZodOptional<z.ZodArray<z.ZodString>>;
18
+ urlPattern: z.ZodOptional<z.ZodString>;
19
+ }, z.core.$strip>;
20
+ export declare const fieldSchema: z.ZodObject<{
21
+ slug: z.ZodString;
22
+ label: z.ZodString;
23
+ type: z.ZodString;
24
+ required: z.ZodOptional<z.ZodBoolean>;
25
+ }, z.core.$strip>;
26
+ export declare const setupSchema: z.ZodObject<{
27
+ title: z.ZodString;
28
+ email: z.ZodEmail;
29
+ password: z.ZodString;
30
+ name: z.ZodOptional<z.ZodString>;
31
+ }, z.core.$strip>;
32
+ export declare const dynamicContentSchema: z.ZodObject<{
33
+ slug: z.ZodOptional<z.ZodString>;
34
+ status: z.ZodOptional<z.ZodString>;
35
+ title: z.ZodOptional<z.ZodString>;
36
+ }, z.core.$loose>;
37
+ export declare const webauthnOptionsSchema: z.ZodObject<{
38
+ email: z.ZodString;
39
+ }, z.core.$strip>;
40
+ export declare const webauthnVerifySchema: z.ZodObject<{
41
+ email: z.ZodString;
42
+ response: z.ZodAny;
43
+ }, z.core.$strip>;
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const tokenCreateSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ scopes: z.ZodArray<z.ZodObject<{
5
+ resource: z.ZodString;
6
+ actions: z.ZodArray<z.ZodString>;
7
+ }, z.core.$strip>>;
8
+ }, z.core.$strip>;
9
+ export declare const deviceCodeRequestSchema: z.ZodObject<{
10
+ client_id: z.ZodString;
11
+ scope: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strip>;
13
+ export declare const deviceTokenRequestSchema: z.ZodObject<{
14
+ client_id: z.ZodString;
15
+ device_code: z.ZodString;
16
+ grant_type: z.ZodLiteral<"urn:ietf:params:oauth:grant-type:device_code">;
17
+ }, z.core.$strip>;
18
+ export declare const deviceApproveSchema: z.ZodObject<{
19
+ user_code: z.ZodString;
20
+ }, z.core.$strip>;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Generate a random token for sessions
3
+ */
4
+ export declare function generateSessionToken(): string;
5
+ /**
6
+ * Hash a password using SHA-256 (for ultra-lightweight worker usage)
7
+ * Note: In a real production app, you might want Scrypt or Argon2id,
8
+ * but those can be slow on the Edge. SHA-256 + Salt is a light starting point.
9
+ */
10
+ export declare function hashPassword(password: string): Promise<string>;
11
+ export declare function verifyPassword(password: string, hash: string): Promise<boolean>;
@@ -0,0 +1,3 @@
1
+ export declare function createProjectCommand(): Promise<void>;
2
+ export declare function createPluginCommand(): Promise<void>;
3
+ export declare function mcpCommand(args: string[]): Promise<void>;
@@ -6506,8 +6506,25 @@ async function createProjectCommand() {
6506
6506
  };
6507
6507
  mkdirSync(resolve(projectDir, "plugins"), { recursive: true });
6508
6508
  mkdirSync(resolve(projectDir, "apps"), { recursive: true });
6509
- cpSync(resolve(localTemplatesRoot, "plugin-development", "starter-plugin"), resolve(projectDir, "plugins", "starter-plugin"), { recursive: true });
6510
- cpSync(resolve(localTemplatesRoot, "plugin-development", "starter-playground"), resolve(projectDir, "apps", "playground"), { recursive: true });
6509
+ const localPluginPath = resolve(localTemplatesRoot, "plugin-development", "starter-plugin");
6510
+ const localPlaygroundPath = resolve(localTemplatesRoot, "plugin-development", "starter-playground");
6511
+ if (existsSync2(localPluginPath) && existsSync2(localPlaygroundPath)) {
6512
+ cpSync(localPluginPath, resolve(projectDir, "plugins", "starter-plugin"), { recursive: true });
6513
+ cpSync(localPlaygroundPath, resolve(projectDir, "apps", "playground"), { recursive: true });
6514
+ } else {
6515
+ try {
6516
+ await downloadTemplate("github:fhorray/flarecms/templates/plugin-development/starter-plugin", {
6517
+ dir: resolve(projectDir, "plugins/starter-plugin"),
6518
+ force: true
6519
+ });
6520
+ await downloadTemplate("github:fhorray/flarecms/templates/plugin-development/starter-playground", {
6521
+ dir: resolve(projectDir, "apps/playground"),
6522
+ force: true
6523
+ });
6524
+ } catch (err) {
6525
+ throw new Error(`Failed to download plugin templates: ${err instanceof Error ? err.message : String(err)}`);
6526
+ }
6527
+ }
6511
6528
  writeFileSync(pkgPath, JSON.stringify(rootPkg, null, 2));
6512
6529
  } else {
6513
6530
  const template = TEMPLATES[templateKey];
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bun
2
+ export {};
package/dist/cli/index.js CHANGED
@@ -6507,8 +6507,25 @@ async function createProjectCommand() {
6507
6507
  };
6508
6508
  mkdirSync(resolve(projectDir, "plugins"), { recursive: true });
6509
6509
  mkdirSync(resolve(projectDir, "apps"), { recursive: true });
6510
- cpSync(resolve(localTemplatesRoot, "plugin-development", "starter-plugin"), resolve(projectDir, "plugins", "starter-plugin"), { recursive: true });
6511
- cpSync(resolve(localTemplatesRoot, "plugin-development", "starter-playground"), resolve(projectDir, "apps", "playground"), { recursive: true });
6510
+ const localPluginPath = resolve(localTemplatesRoot, "plugin-development", "starter-plugin");
6511
+ const localPlaygroundPath = resolve(localTemplatesRoot, "plugin-development", "starter-playground");
6512
+ if (existsSync2(localPluginPath) && existsSync2(localPlaygroundPath)) {
6513
+ cpSync(localPluginPath, resolve(projectDir, "plugins", "starter-plugin"), { recursive: true });
6514
+ cpSync(localPlaygroundPath, resolve(projectDir, "apps", "playground"), { recursive: true });
6515
+ } else {
6516
+ try {
6517
+ await downloadTemplate("github:fhorray/flarecms/templates/plugin-development/starter-plugin", {
6518
+ dir: resolve(projectDir, "plugins/starter-plugin"),
6519
+ force: true
6520
+ });
6521
+ await downloadTemplate("github:fhorray/flarecms/templates/plugin-development/starter-playground", {
6522
+ dir: resolve(projectDir, "apps/playground"),
6523
+ force: true
6524
+ });
6525
+ } catch (err) {
6526
+ throw new Error(`Failed to download plugin templates: ${err instanceof Error ? err.message : String(err)}`);
6527
+ }
6528
+ }
6512
6529
  writeFileSync(pkgPath, JSON.stringify(rootPkg, null, 2));
6513
6530
  } else {
6514
6531
  const template = TEMPLATES[templateKey];
@@ -0,0 +1,9 @@
1
+ /**
2
+ * FlareCMS MCP Bridge Server (CLI Implementation)
3
+ * Implements MCP (Model Context Protocol) over stdio
4
+ */
5
+ export interface McpOptions {
6
+ url: string;
7
+ token?: string;
8
+ }
9
+ export declare function runMcpBridge(options: McpOptions): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,20 @@
1
+ export interface FlareAdminProps {
2
+ /**
3
+ * The base path where the admin UI is mounted.
4
+ * @default "/admin"
5
+ */
6
+ basePath?: string;
7
+ /**
8
+ * The base URL for FlareCMS API calls.
9
+ * @default "/api"
10
+ */
11
+ apiBaseUrl?: string;
12
+ }
13
+ /**
14
+ * FlareAdminRouter is the main entry point for the FlareCMS Admin UI.
15
+ * It manages the routing and state for the entire administrative dashboard.
16
+ *
17
+ * @example
18
+ * <FlareAdminRouter basePath="/admin" apiBaseUrl="/api/flarecms" />
19
+ */
20
+ export declare function FlareAdminRouter({ basePath, apiBaseUrl }: FlareAdminProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export default function App(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ interface AppSidebarProps {
2
+ variant?: 'sidebar' | 'floating' | 'inset';
3
+ }
4
+ export declare function AppSidebar({ variant }: AppSidebarProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { CardBlock } from '../../lib/block-types';
2
+ interface BlockCardProps {
3
+ block: CardBlock;
4
+ onAction: (interaction: any) => void;
5
+ }
6
+ export declare function BlockCard({ block, onAction }: BlockCardProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { FormBlock, BlockInteraction } from '../../lib/block-types';
2
+ interface BlockFormProps {
3
+ block: FormBlock;
4
+ onAction: (interaction: BlockInteraction) => void;
5
+ }
6
+ export declare function BlockForm({ block, onAction }: BlockFormProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,10 @@
1
+ import type { Block, BlockInteraction } from '../../lib/block-types';
2
+ interface BlockRendererProps {
3
+ blocks: Block[];
4
+ onAction: (interaction: BlockInteraction) => void;
5
+ }
6
+ /**
7
+ * Renders a list of blocks.
8
+ */
9
+ export declare function BlockRenderer({ blocks, onAction }: BlockRendererProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,7 @@
1
+ import type { BlockInteraction, TableBlock } from '../../lib/block-types';
2
+ interface BlockTableProps {
3
+ block: TableBlock;
4
+ onAction: (interaction: BlockInteraction) => void;
5
+ }
6
+ export declare function BlockTable({ block, onAction }: BlockTableProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ interface CollectionModalProps {
3
+ children: React.ReactElement;
4
+ }
5
+ export declare function CollectionModal({ children }: CollectionModalProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function ContentList({ slug }: {
2
+ slug: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,9 @@
1
+ interface DynamicFormProps {
2
+ slug: string;
3
+ onSubmit: (data: Record<string, any>) => void;
4
+ onCancel: () => void;
5
+ initialData?: Record<string, any> | null;
6
+ isSubmitting?: boolean;
7
+ }
8
+ export declare function DynamicForm({ slug, onSubmit, onCancel, initialData, isSubmitting, }: DynamicFormProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ interface FieldModalProps {
3
+ children: React.ReactElement;
4
+ collectionId: string;
5
+ collectionSlug: string;
6
+ }
7
+ export declare function FieldModal({ children, collectionId, collectionSlug, }: FieldModalProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,6 @@
1
+ interface PluginWidgetProps {
2
+ pluginId: string;
3
+ widgetId: string;
4
+ }
5
+ export declare function PluginWidget({ pluginId, widgetId }: PluginWidgetProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1 @@
1
+ export declare function APITokenSection(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function GeneralSection(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function SecuritySection(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function SEOSection(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export declare function SignupSection(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,6 @@
1
+ import { Accordion as AccordionPrimitive } from '@base-ui/react/accordion';
2
+ declare function Accordion({ className, ...props }: AccordionPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
3
+ declare function AccordionItem({ className, ...props }: AccordionPrimitive.Item.Props): import("react/jsx-runtime").JSX.Element;
4
+ declare function AccordionTrigger({ className, children, ...props }: AccordionPrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
5
+ declare function AccordionContent({ className, children, ...props }: AccordionPrimitive.Panel.Props): import("react/jsx-runtime").JSX.Element;
6
+ export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ import { Avatar as AvatarPrimitive } from "@base-ui/react/avatar";
3
+ declare const Avatar: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").AvatarRootProps & {
4
+ size?: "default" | "sm" | "lg";
5
+ }, "ref"> & React.RefAttributes<HTMLDivElement>>;
6
+ declare function AvatarImage({ className, ...props }: AvatarPrimitive.Image.Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function AvatarFallback({ className, ...props }: AvatarPrimitive.Fallback.Props): import("react/jsx-runtime").JSX.Element;
8
+ declare function AvatarBadge({ className, ...props }: React.ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
9
+ declare function AvatarGroup({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
10
+ declare function AvatarGroupCount({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
11
+ export { Avatar, AvatarImage, AvatarFallback, AvatarGroup, AvatarGroupCount, AvatarBadge, };
@@ -0,0 +1,7 @@
1
+ import { useRender } from '@base-ui/react/use-render';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const badgeVariants: (props?: ({
4
+ variant?: "default" | "link" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
5
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
6
+ declare function Badge({ className, variant, render, ...props }: useRender.ComponentProps<'span'> & VariantProps<typeof badgeVariants>): import("react").ReactElement<any, string | import("react").JSXElementConstructor<any>>;
7
+ export { Badge, badgeVariants };
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "default" | "link" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
5
+ size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
6
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
7
+ declare const Button: React.ForwardRefExoticComponent<Omit<import("@base-ui/react").ButtonProps & VariantProps<(props?: ({
8
+ variant?: "default" | "link" | "outline" | "secondary" | "ghost" | "destructive" | null | undefined;
9
+ size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
10
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
11
+ export { Button, buttonVariants };
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ declare function Card({ className, size, ...props }: React.ComponentProps<"div"> & {
3
+ size?: "default" | "sm";
4
+ }): import("react/jsx-runtime").JSX.Element;
5
+ declare function CardHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
6
+ declare function CardTitle({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
7
+ declare function CardDescription({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
8
+ declare function CardAction({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
9
+ declare function CardContent({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
10
+ declare function CardFooter({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
11
+ export { Card, CardHeader, CardFooter, CardTitle, CardAction, CardDescription, CardContent, };
@@ -0,0 +1,3 @@
1
+ import { Checkbox as CheckboxPrimitive } from "@base-ui/react/checkbox";
2
+ declare function Checkbox({ className, ...props }: CheckboxPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
3
+ export { Checkbox };
@@ -0,0 +1,5 @@
1
+ import { Collapsible as CollapsiblePrimitive } from "@base-ui/react/collapsible";
2
+ declare function Collapsible({ ...props }: CollapsiblePrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
3
+ declare function CollapsibleTrigger({ ...props }: CollapsiblePrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
4
+ declare function CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props): import("react/jsx-runtime").JSX.Element;
5
+ export { Collapsible, CollapsibleTrigger, CollapsibleContent };
@@ -0,0 +1,17 @@
1
+ import * as React from "react";
2
+ import { Dialog as DialogPrimitive } from "@base-ui/react/dialog";
3
+ declare function Dialog({ ...props }: DialogPrimitive.Root.Props): import("react/jsx-runtime").JSX.Element;
4
+ declare function DialogTrigger({ ...props }: DialogPrimitive.Trigger.Props): import("react/jsx-runtime").JSX.Element;
5
+ declare function DialogPortal({ children, ...props }: DialogPrimitive.Portal.Props): import("react/jsx-runtime").JSX.Element;
6
+ declare function DialogClose({ ...props }: DialogPrimitive.Close.Props): import("react/jsx-runtime").JSX.Element;
7
+ declare function DialogOverlay({ className, ...props }: DialogPrimitive.Backdrop.Props): import("react/jsx-runtime").JSX.Element;
8
+ declare function DialogContent({ className, children, showCloseButton, ...props }: DialogPrimitive.Popup.Props & {
9
+ showCloseButton?: boolean;
10
+ }): import("react/jsx-runtime").JSX.Element;
11
+ declare function DialogHeader({ className, ...props }: React.ComponentProps<"div">): import("react/jsx-runtime").JSX.Element;
12
+ declare function DialogFooter({ className, showCloseButton, children, ...props }: React.ComponentProps<"div"> & {
13
+ showCloseButton?: boolean;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ declare function DialogTitle({ className, ...props }: DialogPrimitive.Title.Props): import("react/jsx-runtime").JSX.Element;
16
+ declare function DialogDescription({ className, ...props }: DialogPrimitive.Description.Props): import("react/jsx-runtime").JSX.Element;
17
+ export { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, };
@@ -0,0 +1,27 @@
1
+ import * as React from 'react';
2
+ import { PopoverTrigger } from './popover';
3
+ import type { LucideProps } from 'lucide-react';
4
+ import { type IconName } from 'lucide-react/dynamic';
5
+ import { iconsData } from './icons-data';
6
+ export type IconData = (typeof iconsData)[number];
7
+ interface IconPickerProps extends Omit<React.ComponentPropsWithoutRef<typeof PopoverTrigger>, 'onSelect' | 'onOpenChange'> {
8
+ value?: IconName;
9
+ defaultValue?: IconName;
10
+ onValueChange?: (value: IconName) => void;
11
+ open?: boolean;
12
+ defaultOpen?: boolean;
13
+ onOpenChange?: (open: boolean) => void;
14
+ searchable?: boolean;
15
+ searchPlaceholder?: string;
16
+ triggerPlaceholder?: string;
17
+ iconsList?: IconData[];
18
+ categorized?: boolean;
19
+ modal?: boolean;
20
+ children?: React.ReactNode;
21
+ }
22
+ declare const IconPicker: React.ForwardRefExoticComponent<IconPickerProps & React.RefAttributes<HTMLButtonElement>>;
23
+ interface IconProps extends Omit<LucideProps, 'ref'> {
24
+ name: IconName;
25
+ }
26
+ declare const Icon: React.ForwardRefExoticComponent<IconProps & React.RefAttributes<SVGSVGElement>>;
27
+ export { IconPicker, Icon, type IconName };