@teamflojo/floimg-templates 0.1.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/LICENSE +21 -0
- package/README.md +97 -0
- package/dist/index.d.ts +120 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +204 -0
- package/dist/index.js.map +1 -0
- package/dist/templates/ai-workflows.d.ts +42 -0
- package/dist/templates/ai-workflows.d.ts.map +1 -0
- package/dist/templates/ai-workflows.js +392 -0
- package/dist/templates/ai-workflows.js.map +1 -0
- package/dist/templates/data-viz.d.ts +49 -0
- package/dist/templates/data-viz.d.ts.map +1 -0
- package/dist/templates/data-viz.js +476 -0
- package/dist/templates/data-viz.js.map +1 -0
- package/dist/templates/marketing.d.ts +33 -0
- package/dist/templates/marketing.d.ts.map +1 -0
- package/dist/templates/marketing.js +368 -0
- package/dist/templates/marketing.js.map +1 -0
- package/dist/templates/utilities.d.ts +38 -0
- package/dist/templates/utilities.d.ts.map +1 -0
- package/dist/templates/utilities.js +296 -0
- package/dist/templates/utilities.js.map +1 -0
- package/dist/types.d.ts +85 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +48 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Flojo, Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# @teamflojo/floimg-templates
|
|
2
|
+
|
|
3
|
+
Official workflow templates for FloImg Studio.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @teamflojo/floimg-templates
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### OSS Studio (Offline/Self-Hosted)
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
import {
|
|
17
|
+
coreTemplates,
|
|
18
|
+
getCoreCategories,
|
|
19
|
+
resolveTemplate,
|
|
20
|
+
} from "@teamflojo/floimg-templates";
|
|
21
|
+
|
|
22
|
+
// Get templates that work offline
|
|
23
|
+
const templates = coreTemplates;
|
|
24
|
+
|
|
25
|
+
// Get available categories
|
|
26
|
+
const categories = getCoreCategories();
|
|
27
|
+
|
|
28
|
+
// Resolve template by ID (handles legacy IDs)
|
|
29
|
+
const template = resolveTemplate("revenue-chart");
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### All Templates (Including Cloud-Only)
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import {
|
|
36
|
+
allTemplates,
|
|
37
|
+
getCategories,
|
|
38
|
+
getTemplateById,
|
|
39
|
+
} from "@teamflojo/floimg-templates";
|
|
40
|
+
|
|
41
|
+
// Get all templates including those requiring API keys
|
|
42
|
+
const templates = allTemplates;
|
|
43
|
+
|
|
44
|
+
// Get a specific template
|
|
45
|
+
const template = getTemplateById("ai-product-shot");
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Templates with `requiresCloud: true` need API keys (OpenAI, etc.) to execute.
|
|
49
|
+
|
|
50
|
+
### Marketing/Integration
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
import {
|
|
54
|
+
allTemplates,
|
|
55
|
+
getStudioUrl,
|
|
56
|
+
searchTemplates,
|
|
57
|
+
} from "@teamflojo/floimg-templates";
|
|
58
|
+
|
|
59
|
+
// Generate Studio URL for a template
|
|
60
|
+
const url = getStudioUrl("revenue-chart");
|
|
61
|
+
// → "https://studio.floimg.com/?template=revenue-chart"
|
|
62
|
+
|
|
63
|
+
// Search templates
|
|
64
|
+
const results = searchTemplates("chart");
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Template Categories
|
|
68
|
+
|
|
69
|
+
- **AI Workflows** - AI-powered image generation (cloud-only)
|
|
70
|
+
- **Data Viz** - Charts, graphs, and diagrams
|
|
71
|
+
- **Marketing** - Social media assets and branding
|
|
72
|
+
- **Utilities** - QR codes, format conversion, thumbnails
|
|
73
|
+
|
|
74
|
+
## Template Interface
|
|
75
|
+
|
|
76
|
+
```typescript
|
|
77
|
+
interface Template {
|
|
78
|
+
id: string;
|
|
79
|
+
name: string;
|
|
80
|
+
description: string;
|
|
81
|
+
category: TemplateCategory;
|
|
82
|
+
generator: string;
|
|
83
|
+
workflow: { nodes: StudioNode[]; edges: StudioEdge[] };
|
|
84
|
+
|
|
85
|
+
// Availability
|
|
86
|
+
requiresCloud?: boolean;
|
|
87
|
+
requiresAuth?: boolean;
|
|
88
|
+
|
|
89
|
+
// Discovery
|
|
90
|
+
tags?: string[];
|
|
91
|
+
preview?: { imageUrl: string };
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## License
|
|
96
|
+
|
|
97
|
+
MIT
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @teamflojo/floimg-templates
|
|
3
|
+
*
|
|
4
|
+
* Official workflow templates for FloImg Studio.
|
|
5
|
+
* Single source of truth for template definitions.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Self-hosted: Get only templates that work offline
|
|
10
|
+
* import { getCoreTemplates } from '@teamflojo/floimg-templates';
|
|
11
|
+
* const templates = getCoreTemplates();
|
|
12
|
+
*
|
|
13
|
+
* // Cloud/full: Get all templates including those requiring API keys
|
|
14
|
+
* import { getAllTemplates } from '@teamflojo/floimg-templates';
|
|
15
|
+
* const templates = getAllTemplates();
|
|
16
|
+
*
|
|
17
|
+
* // Get specific template with metadata
|
|
18
|
+
* import { getTemplateById } from '@teamflojo/floimg-templates';
|
|
19
|
+
* const template = getTemplateById('revenue-chart');
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export type { Template, TemplateCategory, GalleryTemplate } from "./types.js";
|
|
23
|
+
import type { Template, TemplateCategory } from "./types.js";
|
|
24
|
+
export * from "./templates/data-viz.js";
|
|
25
|
+
export * from "./templates/ai-workflows.js";
|
|
26
|
+
export * from "./templates/marketing.js";
|
|
27
|
+
export * from "./templates/utilities.js";
|
|
28
|
+
/**
|
|
29
|
+
* All templates combined
|
|
30
|
+
*/
|
|
31
|
+
export declare const allTemplates: Template[];
|
|
32
|
+
/**
|
|
33
|
+
* Core templates that work offline (no cloud required)
|
|
34
|
+
* For FloImg Studio OSS and self-hosted deployments
|
|
35
|
+
*/
|
|
36
|
+
export declare const coreTemplates: Template[];
|
|
37
|
+
/**
|
|
38
|
+
* Cloud-only templates (require API keys like OpenAI, etc.)
|
|
39
|
+
*/
|
|
40
|
+
export declare const cloudTemplates: Template[];
|
|
41
|
+
/**
|
|
42
|
+
* Get all templates (includes cloud-only templates)
|
|
43
|
+
*/
|
|
44
|
+
export declare function getAllTemplates(): Template[];
|
|
45
|
+
/**
|
|
46
|
+
* Get only core templates that work offline (for OSS Studio)
|
|
47
|
+
*/
|
|
48
|
+
export declare function getCoreTemplates(): Template[];
|
|
49
|
+
/**
|
|
50
|
+
* Get cloud-only templates (require API keys)
|
|
51
|
+
*/
|
|
52
|
+
export declare function getCloudTemplates(): Template[];
|
|
53
|
+
/**
|
|
54
|
+
* Get a template by ID (searches all templates)
|
|
55
|
+
*/
|
|
56
|
+
export declare function getTemplateById(id: string): Template | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Get a core template by ID (OSS-compatible only)
|
|
59
|
+
*/
|
|
60
|
+
export declare function getCoreTemplateById(id: string): Template | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Get all unique categories (from all templates)
|
|
63
|
+
*/
|
|
64
|
+
export declare function getCategories(): TemplateCategory[];
|
|
65
|
+
/**
|
|
66
|
+
* Get categories available in core templates (OSS-compatible)
|
|
67
|
+
*/
|
|
68
|
+
export declare function getCoreCategories(): TemplateCategory[];
|
|
69
|
+
/**
|
|
70
|
+
* Get templates by category (from all templates)
|
|
71
|
+
*/
|
|
72
|
+
export declare function getTemplatesByCategory(category: TemplateCategory): Template[];
|
|
73
|
+
/**
|
|
74
|
+
* Get core templates by category (OSS-compatible)
|
|
75
|
+
*/
|
|
76
|
+
export declare function getCoreTemplatesByCategory(category: TemplateCategory): Template[];
|
|
77
|
+
/**
|
|
78
|
+
* Get templates by generator type
|
|
79
|
+
*/
|
|
80
|
+
export declare function getTemplatesByGenerator(generator: string): Template[];
|
|
81
|
+
/**
|
|
82
|
+
* Search templates by query (searches name, description, tags)
|
|
83
|
+
*/
|
|
84
|
+
export declare function searchTemplates(query: string): Template[];
|
|
85
|
+
/**
|
|
86
|
+
* Search core templates by query (OSS-compatible)
|
|
87
|
+
*/
|
|
88
|
+
export declare function searchCoreTemplates(query: string): Template[];
|
|
89
|
+
/**
|
|
90
|
+
* Get templates that require authentication
|
|
91
|
+
*/
|
|
92
|
+
export declare function getAuthRequiredTemplates(): Template[];
|
|
93
|
+
/**
|
|
94
|
+
* Get templates by capability
|
|
95
|
+
*/
|
|
96
|
+
export declare function getTemplatesByCapability(capability: keyof NonNullable<Template["capabilities"]>): Template[];
|
|
97
|
+
/**
|
|
98
|
+
* Get the Studio URL for a template
|
|
99
|
+
* @param templateId - The template ID
|
|
100
|
+
* @param baseUrl - Base URL (defaults to studio.floimg.com for cloud, or can be overridden for self-hosted)
|
|
101
|
+
*/
|
|
102
|
+
export declare function getStudioUrl(templateId: string, baseUrl?: string): string;
|
|
103
|
+
/**
|
|
104
|
+
* Get the OSS Studio URL for a template (localhost default)
|
|
105
|
+
* @param templateId - The template ID
|
|
106
|
+
* @param port - Port number (defaults to 5173)
|
|
107
|
+
*/
|
|
108
|
+
export declare function getOSSStudioUrl(templateId: string, port?: number): string;
|
|
109
|
+
/**
|
|
110
|
+
* Map from old Studio IDs to new canonical IDs
|
|
111
|
+
* Used during migration to update existing references
|
|
112
|
+
*/
|
|
113
|
+
export declare const legacyIdMap: Record<string, string>;
|
|
114
|
+
/**
|
|
115
|
+
* Resolve a template ID, handling legacy IDs
|
|
116
|
+
* @param id - Template ID (may be legacy)
|
|
117
|
+
* @returns The canonical template or undefined
|
|
118
|
+
*/
|
|
119
|
+
export declare function resolveTemplate(id: string): Template | undefined;
|
|
120
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAQ9E,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG7D,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AAMzC;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,QAAQ,EAKlC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QAAQ,EAEnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,EAEpC,CAAC;AAMF;;GAEG;AACH,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAE5C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,EAAE,CAE7C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,QAAQ,EAAE,CAE9C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEhE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAEpE;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,gBAAgB,EAAE,CAKlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,gBAAgB,EAAE,CAKtD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,EAAE,CAE7E;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,gBAAgB,GAAG,QAAQ,EAAE,CAEjF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE,CAErE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAUzD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAU7D;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,QAAQ,EAAE,CAErD;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,GACtD,QAAQ,EAAE,CAEZ;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,SAA8B,GACpC,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,SAAO,GAAG,MAAM,CAEvE;AAMD;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ9C,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAYhE"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @teamflojo/floimg-templates
|
|
3
|
+
*
|
|
4
|
+
* Official workflow templates for FloImg Studio.
|
|
5
|
+
* Single source of truth for template definitions.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* // Self-hosted: Get only templates that work offline
|
|
10
|
+
* import { getCoreTemplates } from '@teamflojo/floimg-templates';
|
|
11
|
+
* const templates = getCoreTemplates();
|
|
12
|
+
*
|
|
13
|
+
* // Cloud/full: Get all templates including those requiring API keys
|
|
14
|
+
* import { getAllTemplates } from '@teamflojo/floimg-templates';
|
|
15
|
+
* const templates = getAllTemplates();
|
|
16
|
+
*
|
|
17
|
+
* // Get specific template with metadata
|
|
18
|
+
* import { getTemplateById } from '@teamflojo/floimg-templates';
|
|
19
|
+
* const template = getTemplateById('revenue-chart');
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
// Import all template categories
|
|
23
|
+
import { dataVizTemplates } from "./templates/data-viz.js";
|
|
24
|
+
import { aiWorkflowTemplates } from "./templates/ai-workflows.js";
|
|
25
|
+
import { marketingTemplates } from "./templates/marketing.js";
|
|
26
|
+
import { utilityTemplates } from "./templates/utilities.js";
|
|
27
|
+
// Re-export individual templates for direct imports
|
|
28
|
+
export * from "./templates/data-viz.js";
|
|
29
|
+
export * from "./templates/ai-workflows.js";
|
|
30
|
+
export * from "./templates/marketing.js";
|
|
31
|
+
export * from "./templates/utilities.js";
|
|
32
|
+
// ============================================
|
|
33
|
+
// Template Registry
|
|
34
|
+
// ============================================
|
|
35
|
+
/**
|
|
36
|
+
* All templates combined
|
|
37
|
+
*/
|
|
38
|
+
export const allTemplates = [
|
|
39
|
+
...dataVizTemplates,
|
|
40
|
+
...aiWorkflowTemplates,
|
|
41
|
+
...marketingTemplates,
|
|
42
|
+
...utilityTemplates,
|
|
43
|
+
];
|
|
44
|
+
/**
|
|
45
|
+
* Core templates that work offline (no cloud required)
|
|
46
|
+
* For FloImg Studio OSS and self-hosted deployments
|
|
47
|
+
*/
|
|
48
|
+
export const coreTemplates = allTemplates.filter((t) => !t.requiresCloud);
|
|
49
|
+
/**
|
|
50
|
+
* Cloud-only templates (require API keys like OpenAI, etc.)
|
|
51
|
+
*/
|
|
52
|
+
export const cloudTemplates = allTemplates.filter((t) => t.requiresCloud);
|
|
53
|
+
// ============================================
|
|
54
|
+
// Query Functions
|
|
55
|
+
// ============================================
|
|
56
|
+
/**
|
|
57
|
+
* Get all templates (includes cloud-only templates)
|
|
58
|
+
*/
|
|
59
|
+
export function getAllTemplates() {
|
|
60
|
+
return allTemplates;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get only core templates that work offline (for OSS Studio)
|
|
64
|
+
*/
|
|
65
|
+
export function getCoreTemplates() {
|
|
66
|
+
return coreTemplates;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get cloud-only templates (require API keys)
|
|
70
|
+
*/
|
|
71
|
+
export function getCloudTemplates() {
|
|
72
|
+
return cloudTemplates;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get a template by ID (searches all templates)
|
|
76
|
+
*/
|
|
77
|
+
export function getTemplateById(id) {
|
|
78
|
+
return allTemplates.find((t) => t.id === id);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get a core template by ID (OSS-compatible only)
|
|
82
|
+
*/
|
|
83
|
+
export function getCoreTemplateById(id) {
|
|
84
|
+
return coreTemplates.find((t) => t.id === id);
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get all unique categories (from all templates)
|
|
88
|
+
*/
|
|
89
|
+
export function getCategories() {
|
|
90
|
+
const categories = new Set(allTemplates.map((t) => t.category));
|
|
91
|
+
return Array.from(categories);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get categories available in core templates (OSS-compatible)
|
|
95
|
+
*/
|
|
96
|
+
export function getCoreCategories() {
|
|
97
|
+
const categories = new Set(coreTemplates.map((t) => t.category));
|
|
98
|
+
return Array.from(categories);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get templates by category (from all templates)
|
|
102
|
+
*/
|
|
103
|
+
export function getTemplatesByCategory(category) {
|
|
104
|
+
return allTemplates.filter((t) => t.category === category);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get core templates by category (OSS-compatible)
|
|
108
|
+
*/
|
|
109
|
+
export function getCoreTemplatesByCategory(category) {
|
|
110
|
+
return coreTemplates.filter((t) => t.category === category);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get templates by generator type
|
|
114
|
+
*/
|
|
115
|
+
export function getTemplatesByGenerator(generator) {
|
|
116
|
+
return allTemplates.filter((t) => t.generator === generator);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Search templates by query (searches name, description, tags)
|
|
120
|
+
*/
|
|
121
|
+
export function searchTemplates(query) {
|
|
122
|
+
const q = query.toLowerCase();
|
|
123
|
+
return allTemplates.filter((t) => t.name.toLowerCase().includes(q) ||
|
|
124
|
+
t.description.toLowerCase().includes(q) ||
|
|
125
|
+
t.category.toLowerCase().includes(q) ||
|
|
126
|
+
t.generator.toLowerCase().includes(q) ||
|
|
127
|
+
t.tags?.some((tag) => tag.toLowerCase().includes(q)));
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Search core templates by query (OSS-compatible)
|
|
131
|
+
*/
|
|
132
|
+
export function searchCoreTemplates(query) {
|
|
133
|
+
const q = query.toLowerCase();
|
|
134
|
+
return coreTemplates.filter((t) => t.name.toLowerCase().includes(q) ||
|
|
135
|
+
t.description.toLowerCase().includes(q) ||
|
|
136
|
+
t.category.toLowerCase().includes(q) ||
|
|
137
|
+
t.generator.toLowerCase().includes(q) ||
|
|
138
|
+
t.tags?.some((tag) => tag.toLowerCase().includes(q)));
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get templates that require authentication
|
|
142
|
+
*/
|
|
143
|
+
export function getAuthRequiredTemplates() {
|
|
144
|
+
return allTemplates.filter((t) => t.requiresAuth);
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Get templates by capability
|
|
148
|
+
*/
|
|
149
|
+
export function getTemplatesByCapability(capability) {
|
|
150
|
+
return allTemplates.filter((t) => t.capabilities?.[capability]);
|
|
151
|
+
}
|
|
152
|
+
// ============================================
|
|
153
|
+
// Studio URL Helpers
|
|
154
|
+
// ============================================
|
|
155
|
+
/**
|
|
156
|
+
* Get the Studio URL for a template
|
|
157
|
+
* @param templateId - The template ID
|
|
158
|
+
* @param baseUrl - Base URL (defaults to studio.floimg.com for cloud, or can be overridden for self-hosted)
|
|
159
|
+
*/
|
|
160
|
+
export function getStudioUrl(templateId, baseUrl = "https://studio.floimg.com") {
|
|
161
|
+
return `${baseUrl}/?template=${templateId}`;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get the OSS Studio URL for a template (localhost default)
|
|
165
|
+
* @param templateId - The template ID
|
|
166
|
+
* @param port - Port number (defaults to 5173)
|
|
167
|
+
*/
|
|
168
|
+
export function getOSSStudioUrl(templateId, port = 5173) {
|
|
169
|
+
return `http://localhost:${port}/?template=${templateId}`;
|
|
170
|
+
}
|
|
171
|
+
// ============================================
|
|
172
|
+
// ID Mapping (for migration)
|
|
173
|
+
// ============================================
|
|
174
|
+
/**
|
|
175
|
+
* Map from old Studio IDs to new canonical IDs
|
|
176
|
+
* Used during migration to update existing references
|
|
177
|
+
*/
|
|
178
|
+
export const legacyIdMap = {
|
|
179
|
+
// Chart templates
|
|
180
|
+
"sales-dashboard": "revenue-chart",
|
|
181
|
+
"user-growth": "monthly-users",
|
|
182
|
+
// QR templates
|
|
183
|
+
"website-qr": "branded-qr",
|
|
184
|
+
// Pipeline templates
|
|
185
|
+
"chart-watermark": "watermark-branding",
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* Resolve a template ID, handling legacy IDs
|
|
189
|
+
* @param id - Template ID (may be legacy)
|
|
190
|
+
* @returns The canonical template or undefined
|
|
191
|
+
*/
|
|
192
|
+
export function resolveTemplate(id) {
|
|
193
|
+
// Try direct lookup first
|
|
194
|
+
const direct = getTemplateById(id);
|
|
195
|
+
if (direct)
|
|
196
|
+
return direct;
|
|
197
|
+
// Check legacy map
|
|
198
|
+
const canonicalId = legacyIdMap[id];
|
|
199
|
+
if (canonicalId) {
|
|
200
|
+
return getTemplateById(canonicalId);
|
|
201
|
+
}
|
|
202
|
+
return undefined;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Workflow Templates
|
|
3
|
+
*
|
|
4
|
+
* Templates that use AI image generation (OpenAI DALL-E, etc.)
|
|
5
|
+
* These require API keys (cloud deployment) to execute.
|
|
6
|
+
*/
|
|
7
|
+
import type { Template } from "../types.js";
|
|
8
|
+
/**
|
|
9
|
+
* AI Product Photography
|
|
10
|
+
* Canonical ID: ai-product-shot
|
|
11
|
+
*/
|
|
12
|
+
export declare const aiProductShot: Template;
|
|
13
|
+
/**
|
|
14
|
+
* AI Hero Image
|
|
15
|
+
* Canonical ID: ai-hero-image
|
|
16
|
+
*/
|
|
17
|
+
export declare const aiHeroImage: Template;
|
|
18
|
+
/**
|
|
19
|
+
* AI Mascot Generator
|
|
20
|
+
* Canonical ID: ai-mascot
|
|
21
|
+
*/
|
|
22
|
+
export declare const aiMascot: Template;
|
|
23
|
+
/**
|
|
24
|
+
* AI Logo to Brand Kit (Cloud Onboarding)
|
|
25
|
+
* Canonical ID: cloud-ai-logo-brand
|
|
26
|
+
*/
|
|
27
|
+
export declare const aiLogoBrandKit: Template;
|
|
28
|
+
/**
|
|
29
|
+
* Product Photo Enhancement (Cloud Onboarding)
|
|
30
|
+
* Canonical ID: cloud-product-enhance
|
|
31
|
+
*/
|
|
32
|
+
export declare const productPhotoEnhancement: Template;
|
|
33
|
+
/**
|
|
34
|
+
* AI Art to Social Post (Cloud Onboarding)
|
|
35
|
+
* Canonical ID: cloud-ai-social
|
|
36
|
+
*/
|
|
37
|
+
export declare const aiArtSocialPost: Template;
|
|
38
|
+
/**
|
|
39
|
+
* All AI workflow templates
|
|
40
|
+
*/
|
|
41
|
+
export declare const aiWorkflowTemplates: Template[];
|
|
42
|
+
//# sourceMappingURL=ai-workflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-workflows.d.ts","sourceRoot":"","sources":["../../src/templates/ai-workflows.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,QAqD3B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,QAoDzB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,QA4CtB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,QAsE5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE,QAuDrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,QA+E7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,EAOzC,CAAC"}
|