@fnd-platform/cms 1.0.0-alpha.1
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 +283 -0
- package/lib/cms-project.d.ts +127 -0
- package/lib/cms-project.d.ts.map +1 -0
- package/lib/cms-project.js +343 -0
- package/lib/cms-project.js.map +1 -0
- package/lib/index.d.ts +11 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +20 -0
- package/lib/index.js.map +1 -0
- package/lib/options.d.ts +59 -0
- package/lib/options.d.ts.map +1 -0
- package/lib/options.js +3 -0
- package/lib/options.js.map +1 -0
- package/lib/templates/admin-breadcrumbs.d.ts +13 -0
- package/lib/templates/admin-breadcrumbs.d.ts.map +1 -0
- package/lib/templates/admin-breadcrumbs.js +80 -0
- package/lib/templates/admin-breadcrumbs.js.map +1 -0
- package/lib/templates/admin-content-route.d.ts +18 -0
- package/lib/templates/admin-content-route.d.ts.map +1 -0
- package/lib/templates/admin-content-route.js +100 -0
- package/lib/templates/admin-content-route.js.map +1 -0
- package/lib/templates/admin-content-type-route.d.ts +9 -0
- package/lib/templates/admin-content-type-route.d.ts.map +1 -0
- package/lib/templates/admin-content-type-route.js +96 -0
- package/lib/templates/admin-content-type-route.js.map +1 -0
- package/lib/templates/admin-header.d.ts +13 -0
- package/lib/templates/admin-header.d.ts.map +1 -0
- package/lib/templates/admin-header.js +123 -0
- package/lib/templates/admin-header.js.map +1 -0
- package/lib/templates/admin-index.d.ts +9 -0
- package/lib/templates/admin-index.d.ts.map +1 -0
- package/lib/templates/admin-index.js +60 -0
- package/lib/templates/admin-index.js.map +1 -0
- package/lib/templates/admin-layout.d.ts +10 -0
- package/lib/templates/admin-layout.d.ts.map +1 -0
- package/lib/templates/admin-layout.js +46 -0
- package/lib/templates/admin-layout.js.map +1 -0
- package/lib/templates/admin-sidebar.d.ts +13 -0
- package/lib/templates/admin-sidebar.d.ts.map +1 -0
- package/lib/templates/admin-sidebar.js +149 -0
- package/lib/templates/admin-sidebar.js.map +1 -0
- package/lib/templates/content-editor.d.ts +10 -0
- package/lib/templates/content-editor.d.ts.map +1 -0
- package/lib/templates/content-editor.js +354 -0
- package/lib/templates/content-editor.js.map +1 -0
- package/lib/templates/content-schema.d.ts +10 -0
- package/lib/templates/content-schema.d.ts.map +1 -0
- package/lib/templates/content-schema.js +274 -0
- package/lib/templates/content-schema.js.map +1 -0
- package/lib/templates/content-table.d.ts +13 -0
- package/lib/templates/content-table.d.ts.map +1 -0
- package/lib/templates/content-table.js +177 -0
- package/lib/templates/content-table.js.map +1 -0
- package/lib/templates/content-types-examples.d.ts +19 -0
- package/lib/templates/content-types-examples.d.ts.map +1 -0
- package/lib/templates/content-types-examples.js +275 -0
- package/lib/templates/content-types-examples.js.map +1 -0
- package/lib/templates/content-types-registry.d.ts +10 -0
- package/lib/templates/content-types-registry.d.ts.map +1 -0
- package/lib/templates/content-types-registry.js +87 -0
- package/lib/templates/content-types-registry.js.map +1 -0
- package/lib/templates/content-types.d.ts +10 -0
- package/lib/templates/content-types.d.ts.map +1 -0
- package/lib/templates/content-types.js +384 -0
- package/lib/templates/content-types.js.map +1 -0
- package/lib/templates/dashboard-stats.d.ts +13 -0
- package/lib/templates/dashboard-stats.d.ts.map +1 -0
- package/lib/templates/dashboard-stats.js +117 -0
- package/lib/templates/dashboard-stats.js.map +1 -0
- package/lib/templates/editor/index.d.ts +6 -0
- package/lib/templates/editor/index.d.ts.map +1 -0
- package/lib/templates/editor/index.js +21 -0
- package/lib/templates/editor/index.js.map +1 -0
- package/lib/templates/editor/rich-text-editor.d.ts +7 -0
- package/lib/templates/editor/rich-text-editor.d.ts.map +1 -0
- package/lib/templates/editor/rich-text-editor.js +115 -0
- package/lib/templates/editor/rich-text-editor.js.map +1 -0
- package/lib/templates/editor/toolbar.d.ts +7 -0
- package/lib/templates/editor/toolbar.d.ts.map +1 -0
- package/lib/templates/editor/toolbar.js +272 -0
- package/lib/templates/editor/toolbar.js.map +1 -0
- package/lib/templates/form-fields/boolean-field.d.ts +7 -0
- package/lib/templates/form-fields/boolean-field.d.ts.map +1 -0
- package/lib/templates/form-fields/boolean-field.js +76 -0
- package/lib/templates/form-fields/boolean-field.js.map +1 -0
- package/lib/templates/form-fields/date-field.d.ts +7 -0
- package/lib/templates/form-fields/date-field.d.ts.map +1 -0
- package/lib/templates/form-fields/date-field.js +61 -0
- package/lib/templates/form-fields/date-field.js.map +1 -0
- package/lib/templates/form-fields/datetime-field.d.ts +7 -0
- package/lib/templates/form-fields/datetime-field.d.ts.map +1 -0
- package/lib/templates/form-fields/datetime-field.js +87 -0
- package/lib/templates/form-fields/datetime-field.js.map +1 -0
- package/lib/templates/form-fields/index.d.ts +23 -0
- package/lib/templates/form-fields/index.d.ts.map +1 -0
- package/lib/templates/form-fields/index.js +275 -0
- package/lib/templates/form-fields/index.js.map +1 -0
- package/lib/templates/form-fields/media-field.d.ts +10 -0
- package/lib/templates/form-fields/media-field.d.ts.map +1 -0
- package/lib/templates/form-fields/media-field.js +225 -0
- package/lib/templates/form-fields/media-field.js.map +1 -0
- package/lib/templates/form-fields/multiselect-field.d.ts +7 -0
- package/lib/templates/form-fields/multiselect-field.d.ts.map +1 -0
- package/lib/templates/form-fields/multiselect-field.js +121 -0
- package/lib/templates/form-fields/multiselect-field.js.map +1 -0
- package/lib/templates/form-fields/number-field.d.ts +7 -0
- package/lib/templates/form-fields/number-field.d.ts.map +1 -0
- package/lib/templates/form-fields/number-field.js +87 -0
- package/lib/templates/form-fields/number-field.js.map +1 -0
- package/lib/templates/form-fields/reference-field.d.ts +9 -0
- package/lib/templates/form-fields/reference-field.d.ts.map +1 -0
- package/lib/templates/form-fields/reference-field.js +145 -0
- package/lib/templates/form-fields/reference-field.js.map +1 -0
- package/lib/templates/form-fields/richtext-field.d.ts +9 -0
- package/lib/templates/form-fields/richtext-field.d.ts.map +1 -0
- package/lib/templates/form-fields/richtext-field.js +60 -0
- package/lib/templates/form-fields/richtext-field.js.map +1 -0
- package/lib/templates/form-fields/select-field.d.ts +7 -0
- package/lib/templates/form-fields/select-field.d.ts.map +1 -0
- package/lib/templates/form-fields/select-field.js +70 -0
- package/lib/templates/form-fields/select-field.js.map +1 -0
- package/lib/templates/form-fields/slug-field.d.ts +7 -0
- package/lib/templates/form-fields/slug-field.d.ts.map +1 -0
- package/lib/templates/form-fields/slug-field.js +143 -0
- package/lib/templates/form-fields/slug-field.js.map +1 -0
- package/lib/templates/form-fields/tags-field.d.ts +7 -0
- package/lib/templates/form-fields/tags-field.d.ts.map +1 -0
- package/lib/templates/form-fields/tags-field.js +172 -0
- package/lib/templates/form-fields/tags-field.js.map +1 -0
- package/lib/templates/form-fields/text-field.d.ts +7 -0
- package/lib/templates/form-fields/text-field.d.ts.map +1 -0
- package/lib/templates/form-fields/text-field.js +63 -0
- package/lib/templates/form-fields/text-field.js.map +1 -0
- package/lib/templates/form-fields/textarea-field.d.ts +7 -0
- package/lib/templates/form-fields/textarea-field.d.ts.map +1 -0
- package/lib/templates/form-fields/textarea-field.js +64 -0
- package/lib/templates/form-fields/textarea-field.js.map +1 -0
- package/lib/templates/index.d.ts +34 -0
- package/lib/templates/index.d.ts.map +1 -0
- package/lib/templates/index.js +92 -0
- package/lib/templates/index.js.map +1 -0
- package/lib/templates/media/index.d.ts +12 -0
- package/lib/templates/media/index.d.ts.map +1 -0
- package/lib/templates/media/index.js +50 -0
- package/lib/templates/media/index.js.map +1 -0
- package/lib/templates/media/media-api.d.ts +13 -0
- package/lib/templates/media/media-api.d.ts.map +1 -0
- package/lib/templates/media/media-api.js +274 -0
- package/lib/templates/media/media-api.js.map +1 -0
- package/lib/templates/media/media-grid.d.ts +14 -0
- package/lib/templates/media/media-grid.d.ts.map +1 -0
- package/lib/templates/media/media-grid.js +314 -0
- package/lib/templates/media/media-grid.js.map +1 -0
- package/lib/templates/media/media-library-route.d.ts +13 -0
- package/lib/templates/media/media-library-route.d.ts.map +1 -0
- package/lib/templates/media/media-library-route.js +105 -0
- package/lib/templates/media/media-library-route.js.map +1 -0
- package/lib/templates/media/media-picker.d.ts +13 -0
- package/lib/templates/media/media-picker.d.ts.map +1 -0
- package/lib/templates/media/media-picker.js +152 -0
- package/lib/templates/media/media-picker.js.map +1 -0
- package/lib/templates/media/media-uploader.d.ts +14 -0
- package/lib/templates/media/media-uploader.d.ts.map +1 -0
- package/lib/templates/media/media-uploader.js +318 -0
- package/lib/templates/media/media-uploader.js.map +1 -0
- package/lib/templates/recent-content.d.ts +13 -0
- package/lib/templates/recent-content.d.ts.map +1 -0
- package/lib/templates/recent-content.js +138 -0
- package/lib/templates/recent-content.js.map +1 -0
- package/lib/templates/slug-utils.d.ts +10 -0
- package/lib/templates/slug-utils.d.ts.map +1 -0
- package/lib/templates/slug-utils.js +194 -0
- package/lib/templates/slug-utils.js.map +1 -0
- package/lib/templates/ui-avatar.d.ts +8 -0
- package/lib/templates/ui-avatar.d.ts.map +1 -0
- package/lib/templates/ui-avatar.js +60 -0
- package/lib/templates/ui-avatar.js.map +1 -0
- package/lib/templates/ui-badge.d.ts +8 -0
- package/lib/templates/ui-badge.d.ts.map +1 -0
- package/lib/templates/ui-badge.js +52 -0
- package/lib/templates/ui-badge.js.map +1 -0
- package/lib/templates/ui-dialog.d.ts +10 -0
- package/lib/templates/ui-dialog.d.ts.map +1 -0
- package/lib/templates/ui-dialog.js +134 -0
- package/lib/templates/ui-dialog.js.map +1 -0
- package/lib/templates/ui-dropdown-menu.d.ts +8 -0
- package/lib/templates/ui-dropdown-menu.d.ts.map +1 -0
- package/lib/templates/ui-dropdown-menu.js +210 -0
- package/lib/templates/ui-dropdown-menu.js.map +1 -0
- package/lib/templates/ui-popover.d.ts +8 -0
- package/lib/templates/ui-popover.d.ts.map +1 -0
- package/lib/templates/ui-popover.js +43 -0
- package/lib/templates/ui-popover.js.map +1 -0
- package/lib/templates/ui-progress.d.ts +10 -0
- package/lib/templates/ui-progress.d.ts.map +1 -0
- package/lib/templates/ui-progress.js +40 -0
- package/lib/templates/ui-progress.js.map +1 -0
- package/lib/templates/ui-table.d.ts +8 -0
- package/lib/templates/ui-table.d.ts.map +1 -0
- package/lib/templates/ui-table.js +129 -0
- package/lib/templates/ui-table.js.map +1 -0
- package/lib/templates/ui-tabs.d.ts +10 -0
- package/lib/templates/ui-tabs.d.ts.map +1 -0
- package/lib/templates/ui-tabs.js +67 -0
- package/lib/templates/ui-tabs.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
|
+
exports.getTagsFieldTemplate = getTagsFieldTemplate;
|
|
4
|
+
/**
|
|
5
|
+
* Generates the tags field component template.
|
|
6
|
+
*
|
|
7
|
+
* @returns Template string for app/components/form-fields/tags-field.tsx
|
|
8
|
+
*/
|
|
9
|
+
function getTagsFieldTemplate() {
|
|
10
|
+
return `import { useState, useRef, type KeyboardEvent } from 'react';
|
|
11
|
+
import { X, Plus } from 'lucide-react';
|
|
12
|
+
import type { TagsFieldDefinition } from '~/lib/content-types';
|
|
13
|
+
import { Input } from '~/components/ui/input';
|
|
14
|
+
import { Label } from '~/components/ui/label';
|
|
15
|
+
import { Button } from '~/components/ui/button';
|
|
16
|
+
import { Badge } from '~/components/ui/badge';
|
|
17
|
+
import { cn } from '~/lib/utils';
|
|
18
|
+
import type { FieldProps } from './index';
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Tag input field with add/remove functionality.
|
|
22
|
+
*/
|
|
23
|
+
export function TagsField({
|
|
24
|
+
field,
|
|
25
|
+
value,
|
|
26
|
+
onChange,
|
|
27
|
+
error,
|
|
28
|
+
disabled,
|
|
29
|
+
}: FieldProps<TagsFieldDefinition>) {
|
|
30
|
+
const id = \`field-\${field.name}\`;
|
|
31
|
+
const inputRef = useRef<HTMLInputElement>(null);
|
|
32
|
+
const [inputValue, setInputValue] = useState('');
|
|
33
|
+
const tags = Array.isArray(value) ? value : [];
|
|
34
|
+
|
|
35
|
+
const addTag = (tag: string) => {
|
|
36
|
+
const trimmedTag = tag.trim().toLowerCase();
|
|
37
|
+
if (!trimmedTag) return;
|
|
38
|
+
if (tags.includes(trimmedTag)) return;
|
|
39
|
+
if (field.max !== undefined && tags.length >= field.max) return;
|
|
40
|
+
|
|
41
|
+
onChange([...tags, trimmedTag]);
|
|
42
|
+
setInputValue('');
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const removeTag = (tagToRemove: string) => {
|
|
46
|
+
if (disabled) return;
|
|
47
|
+
onChange(tags.filter((tag) => tag !== tagToRemove));
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {
|
|
51
|
+
if (e.key === 'Enter') {
|
|
52
|
+
e.preventDefault();
|
|
53
|
+
addTag(inputValue);
|
|
54
|
+
} else if (e.key === 'Backspace' && !inputValue && tags.length > 0) {
|
|
55
|
+
removeTag(tags[tags.length - 1]);
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
const handleSuggestionClick = (suggestion: string) => {
|
|
60
|
+
if (!tags.includes(suggestion)) {
|
|
61
|
+
addTag(suggestion);
|
|
62
|
+
}
|
|
63
|
+
inputRef.current?.focus();
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
// Filter suggestions that aren't already added
|
|
67
|
+
const availableSuggestions = field.suggestions?.filter(
|
|
68
|
+
(s) => !tags.includes(s.toLowerCase())
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
return (
|
|
72
|
+
<div className="space-y-2">
|
|
73
|
+
<Label htmlFor={id} className={cn(field.required && "after:content-['*'] after:ml-0.5 after:text-destructive")}>
|
|
74
|
+
{field.label}
|
|
75
|
+
</Label>
|
|
76
|
+
<div
|
|
77
|
+
className={cn(
|
|
78
|
+
'flex flex-wrap gap-2 p-2 border rounded-md min-h-[42px]',
|
|
79
|
+
error && 'border-destructive',
|
|
80
|
+
disabled && 'opacity-50 cursor-not-allowed'
|
|
81
|
+
)}
|
|
82
|
+
onClick={() => !disabled && inputRef.current?.focus()}
|
|
83
|
+
>
|
|
84
|
+
{tags.map((tag) => (
|
|
85
|
+
<Badge key={tag} variant="secondary" className="gap-1">
|
|
86
|
+
{tag}
|
|
87
|
+
<button
|
|
88
|
+
type="button"
|
|
89
|
+
onClick={(e) => {
|
|
90
|
+
e.stopPropagation();
|
|
91
|
+
removeTag(tag);
|
|
92
|
+
}}
|
|
93
|
+
disabled={disabled}
|
|
94
|
+
className="rounded-full hover:bg-muted-foreground/20"
|
|
95
|
+
>
|
|
96
|
+
<X className="h-3 w-3" />
|
|
97
|
+
</button>
|
|
98
|
+
</Badge>
|
|
99
|
+
))}
|
|
100
|
+
<input
|
|
101
|
+
ref={inputRef}
|
|
102
|
+
id={id}
|
|
103
|
+
type="text"
|
|
104
|
+
value={inputValue}
|
|
105
|
+
onChange={(e) => setInputValue(e.target.value)}
|
|
106
|
+
onKeyDown={handleKeyDown}
|
|
107
|
+
placeholder={tags.length === 0 ? (field.placeholder ?? 'Add tags...') : ''}
|
|
108
|
+
disabled={disabled || (field.max !== undefined && tags.length >= field.max)}
|
|
109
|
+
className="flex-1 min-w-[100px] bg-transparent border-none outline-none text-sm"
|
|
110
|
+
aria-describedby={error ? \`\${id}-error\` : field.description ? \`\${id}-description\` : undefined}
|
|
111
|
+
/>
|
|
112
|
+
{inputValue && (
|
|
113
|
+
<Button
|
|
114
|
+
type="button"
|
|
115
|
+
variant="ghost"
|
|
116
|
+
size="sm"
|
|
117
|
+
className="h-6 px-2"
|
|
118
|
+
onClick={() => addTag(inputValue)}
|
|
119
|
+
disabled={disabled}
|
|
120
|
+
>
|
|
121
|
+
<Plus className="h-3 w-3 mr-1" />
|
|
122
|
+
Add
|
|
123
|
+
</Button>
|
|
124
|
+
)}
|
|
125
|
+
</div>
|
|
126
|
+
{/* Hidden inputs for form submission */}
|
|
127
|
+
{tags.map((tag) => (
|
|
128
|
+
<input key={tag} type="hidden" name={\`\${field.name}[]\`} value={tag} />
|
|
129
|
+
))}
|
|
130
|
+
{/* Suggestions */}
|
|
131
|
+
{availableSuggestions && availableSuggestions.length > 0 && (
|
|
132
|
+
<div className="flex flex-wrap gap-1">
|
|
133
|
+
<span className="text-sm text-muted-foreground">Suggestions:</span>
|
|
134
|
+
{availableSuggestions.slice(0, 5).map((suggestion) => (
|
|
135
|
+
<button
|
|
136
|
+
key={suggestion}
|
|
137
|
+
type="button"
|
|
138
|
+
onClick={() => handleSuggestionClick(suggestion)}
|
|
139
|
+
disabled={disabled}
|
|
140
|
+
className="text-sm text-primary hover:underline"
|
|
141
|
+
>
|
|
142
|
+
{suggestion}
|
|
143
|
+
</button>
|
|
144
|
+
))}
|
|
145
|
+
</div>
|
|
146
|
+
)}
|
|
147
|
+
{(field.min !== undefined || field.max !== undefined) && !error && (
|
|
148
|
+
<p className="text-sm text-muted-foreground">
|
|
149
|
+
{field.min !== undefined && field.max !== undefined
|
|
150
|
+
? \`Add \${field.min} to \${field.max} tags\`
|
|
151
|
+
: field.min !== undefined
|
|
152
|
+
? \`Add at least \${field.min} tags\`
|
|
153
|
+
: \`Add up to \${field.max} tags\`}
|
|
154
|
+
{' '}({tags.length} added)
|
|
155
|
+
</p>
|
|
156
|
+
)}
|
|
157
|
+
{field.description && !error && !(field.min !== undefined || field.max !== undefined) && (
|
|
158
|
+
<p id={\`\${id}-description\`} className="text-sm text-muted-foreground">
|
|
159
|
+
{field.description}
|
|
160
|
+
</p>
|
|
161
|
+
)}
|
|
162
|
+
{error && (
|
|
163
|
+
<p id={\`\${id}-error\`} className="text-sm text-destructive">
|
|
164
|
+
{error}
|
|
165
|
+
</p>
|
|
166
|
+
)}
|
|
167
|
+
</div>
|
|
168
|
+
);
|
|
169
|
+
}
|
|
170
|
+
`;
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=tags-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags-field.js","sourceRoot":"","sources":["../../../src/templates/form-fields/tags-field.ts"],"names":[],"mappings":";;AAKA,oDAkKC;AAvKD;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgKR,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-field.d.ts","sourceRoot":"","sources":["../../../src/templates/form-fields/text-field.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAqD7C"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
|
+
exports.getTextFieldTemplate = getTextFieldTemplate;
|
|
4
|
+
/**
|
|
5
|
+
* Generates the text field component template.
|
|
6
|
+
*
|
|
7
|
+
* @returns Template string for app/components/form-fields/text-field.tsx
|
|
8
|
+
*/
|
|
9
|
+
function getTextFieldTemplate() {
|
|
10
|
+
return `import type { TextFieldDefinition } from '~/lib/content-types';
|
|
11
|
+
import { Input } from '~/components/ui/input';
|
|
12
|
+
import { Label } from '~/components/ui/label';
|
|
13
|
+
import { cn } from '~/lib/utils';
|
|
14
|
+
import type { FieldProps } from './index';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Single-line text input field.
|
|
18
|
+
*/
|
|
19
|
+
export function TextField({
|
|
20
|
+
field,
|
|
21
|
+
value,
|
|
22
|
+
onChange,
|
|
23
|
+
error,
|
|
24
|
+
disabled,
|
|
25
|
+
}: FieldProps<TextFieldDefinition>) {
|
|
26
|
+
const id = \`field-\${field.name}\`;
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<div className="space-y-2">
|
|
30
|
+
<Label htmlFor={id} className={cn(field.required && "after:content-['*'] after:ml-0.5 after:text-destructive")}>
|
|
31
|
+
{field.label}
|
|
32
|
+
</Label>
|
|
33
|
+
<Input
|
|
34
|
+
id={id}
|
|
35
|
+
name={field.name}
|
|
36
|
+
type="text"
|
|
37
|
+
value={(value as string) ?? ''}
|
|
38
|
+
onChange={(e) => onChange(e.target.value)}
|
|
39
|
+
placeholder={field.placeholder}
|
|
40
|
+
disabled={disabled}
|
|
41
|
+
minLength={field.minLength}
|
|
42
|
+
maxLength={field.maxLength}
|
|
43
|
+
pattern={field.pattern}
|
|
44
|
+
className={cn(error && 'border-destructive')}
|
|
45
|
+
aria-invalid={!!error}
|
|
46
|
+
aria-describedby={error ? \`\${id}-error\` : field.description ? \`\${id}-description\` : undefined}
|
|
47
|
+
/>
|
|
48
|
+
{field.description && !error && (
|
|
49
|
+
<p id={\`\${id}-description\`} className="text-sm text-muted-foreground">
|
|
50
|
+
{field.description}
|
|
51
|
+
</p>
|
|
52
|
+
)}
|
|
53
|
+
{error && (
|
|
54
|
+
<p id={\`\${id}-error\`} className="text-sm text-destructive">
|
|
55
|
+
{error}
|
|
56
|
+
</p>
|
|
57
|
+
)}
|
|
58
|
+
</div>
|
|
59
|
+
);
|
|
60
|
+
}
|
|
61
|
+
`;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=text-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-field.js","sourceRoot":"","sources":["../../../src/templates/form-fields/text-field.ts"],"names":[],"mappings":";;AAKA,oDAqDC;AA1DD;;;;GAIG;AACH,SAAgB,oBAAoB;IAClC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDR,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea-field.d.ts","sourceRoot":"","sources":["../../../src/templates/form-fields/textarea-field.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAsDjD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
3
|
+
exports.getTextareaFieldTemplate = getTextareaFieldTemplate;
|
|
4
|
+
/**
|
|
5
|
+
* Generates the textarea field component template.
|
|
6
|
+
*
|
|
7
|
+
* @returns Template string for app/components/form-fields/textarea-field.tsx
|
|
8
|
+
*/
|
|
9
|
+
function getTextareaFieldTemplate() {
|
|
10
|
+
return `import type { TextareaFieldDefinition } from '~/lib/content-types';
|
|
11
|
+
import { Label } from '~/components/ui/label';
|
|
12
|
+
import { cn } from '~/lib/utils';
|
|
13
|
+
import type { FieldProps } from './index';
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Multi-line text input field.
|
|
17
|
+
*/
|
|
18
|
+
export function TextareaField({
|
|
19
|
+
field,
|
|
20
|
+
value,
|
|
21
|
+
onChange,
|
|
22
|
+
error,
|
|
23
|
+
disabled,
|
|
24
|
+
}: FieldProps<TextareaFieldDefinition>) {
|
|
25
|
+
const id = \`field-\${field.name}\`;
|
|
26
|
+
|
|
27
|
+
return (
|
|
28
|
+
<div className="space-y-2">
|
|
29
|
+
<Label htmlFor={id} className={cn(field.required && "after:content-['*'] after:ml-0.5 after:text-destructive")}>
|
|
30
|
+
{field.label}
|
|
31
|
+
</Label>
|
|
32
|
+
<textarea
|
|
33
|
+
id={id}
|
|
34
|
+
name={field.name}
|
|
35
|
+
value={(value as string) ?? ''}
|
|
36
|
+
onChange={(e) => onChange(e.target.value)}
|
|
37
|
+
placeholder={field.placeholder}
|
|
38
|
+
disabled={disabled}
|
|
39
|
+
rows={field.rows ?? 4}
|
|
40
|
+
minLength={field.minLength}
|
|
41
|
+
maxLength={field.maxLength}
|
|
42
|
+
className={cn(
|
|
43
|
+
'flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50',
|
|
44
|
+
error && 'border-destructive'
|
|
45
|
+
)}
|
|
46
|
+
aria-invalid={!!error}
|
|
47
|
+
aria-describedby={error ? \`\${id}-error\` : field.description ? \`\${id}-description\` : undefined}
|
|
48
|
+
/>
|
|
49
|
+
{field.description && !error && (
|
|
50
|
+
<p id={\`\${id}-description\`} className="text-sm text-muted-foreground">
|
|
51
|
+
{field.description}
|
|
52
|
+
</p>
|
|
53
|
+
)}
|
|
54
|
+
{error && (
|
|
55
|
+
<p id={\`\${id}-error\`} className="text-sm text-destructive">
|
|
56
|
+
{error}
|
|
57
|
+
</p>
|
|
58
|
+
)}
|
|
59
|
+
</div>
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
`;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=textarea-field.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textarea-field.js","sourceRoot":"","sources":["../../../src/templates/form-fields/textarea-field.ts"],"names":[],"mappings":";;AAKA,4DAsDC;AA3DD;;;;GAIG;AACH,SAAgB,wBAAwB;IACtC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDR,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Template generators for FndCmsProject.
|
|
3
|
+
*
|
|
4
|
+
* These functions generate the content for files that will be created
|
|
5
|
+
* in the user's CMS package when FndCmsProject is synthesized.
|
|
6
|
+
*/
|
|
7
|
+
export { getAdminLayoutTemplate } from './admin-layout';
|
|
8
|
+
export { getAdminIndexTemplate } from './admin-index';
|
|
9
|
+
export { getAdminContentRouteTemplate, getAdminContentIndexTemplate } from './admin-content-route';
|
|
10
|
+
export { getAdminContentTypeRouteTemplate } from './admin-content-type-route';
|
|
11
|
+
export { getAdminSidebarTemplate } from './admin-sidebar';
|
|
12
|
+
export { getAdminHeaderTemplate } from './admin-header';
|
|
13
|
+
export { getAdminBreadcrumbsTemplate } from './admin-breadcrumbs';
|
|
14
|
+
export { getDashboardStatsTemplate } from './dashboard-stats';
|
|
15
|
+
export { getRecentContentTemplate } from './recent-content';
|
|
16
|
+
export { getContentTableTemplate } from './content-table';
|
|
17
|
+
export { getBadgeTemplate } from './ui-badge';
|
|
18
|
+
export { getAvatarTemplate } from './ui-avatar';
|
|
19
|
+
export { getDropdownMenuTemplate } from './ui-dropdown-menu';
|
|
20
|
+
export { getTableTemplate } from './ui-table';
|
|
21
|
+
export { getPopoverTemplate } from './ui-popover';
|
|
22
|
+
export { getEditorToolbarTemplate, getRichTextEditorTemplate } from './editor';
|
|
23
|
+
export { getContentTypesTemplate } from './content-types';
|
|
24
|
+
export { getContentSchemaTemplate } from './content-schema';
|
|
25
|
+
export { getSlugUtilsTemplate } from './slug-utils';
|
|
26
|
+
export { getContentTypesRegistryTemplate } from './content-types-registry';
|
|
27
|
+
export { getContentEditorTemplate } from './content-editor';
|
|
28
|
+
export { getBlogPostContentTypeTemplate, getPageContentTypeTemplate, } from './content-types-examples';
|
|
29
|
+
export { getFormFieldsIndexTemplate, getTextFieldTemplate, getTextareaFieldTemplate, getRichtextFieldTemplate, getSlugFieldTemplate, getMediaFieldTemplate, getSelectFieldTemplate, getMultiselectFieldTemplate, getDateFieldTemplate, getDatetimeFieldTemplate, getBooleanFieldTemplate, getNumberFieldTemplate, getTagsFieldTemplate, getReferenceFieldTemplate, } from './form-fields';
|
|
30
|
+
export { getMediaUploaderTemplate, getMediaGridTemplate, getMediaPickerTemplate, getMediaApiTemplate, getMediaLibraryRouteTemplate, } from './media';
|
|
31
|
+
export { getProgressTemplate } from './ui-progress';
|
|
32
|
+
export { getDialogTemplate } from './ui-dialog';
|
|
33
|
+
export { getTabsTemplate } from './ui-tabs';
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAG/E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,+BAA+B,EAAE,MAAM,0BAA0B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,EAC3B,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,4BAA4B,GAC7B,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Template generators for FndCmsProject.
|
|
4
|
+
*
|
|
5
|
+
* These functions generate the content for files that will be created
|
|
6
|
+
* in the user's CMS package when FndCmsProject is synthesized.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.getTabsTemplate = exports.getDialogTemplate = exports.getProgressTemplate = exports.getMediaLibraryRouteTemplate = exports.getMediaApiTemplate = exports.getMediaPickerTemplate = exports.getMediaGridTemplate = exports.getMediaUploaderTemplate = exports.getReferenceFieldTemplate = exports.getTagsFieldTemplate = exports.getNumberFieldTemplate = exports.getBooleanFieldTemplate = exports.getDatetimeFieldTemplate = exports.getDateFieldTemplate = exports.getMultiselectFieldTemplate = exports.getSelectFieldTemplate = exports.getMediaFieldTemplate = exports.getSlugFieldTemplate = exports.getRichtextFieldTemplate = exports.getTextareaFieldTemplate = exports.getTextFieldTemplate = exports.getFormFieldsIndexTemplate = exports.getPageContentTypeTemplate = exports.getBlogPostContentTypeTemplate = exports.getContentEditorTemplate = exports.getContentTypesRegistryTemplate = exports.getSlugUtilsTemplate = exports.getContentSchemaTemplate = exports.getContentTypesTemplate = exports.getRichTextEditorTemplate = exports.getEditorToolbarTemplate = exports.getPopoverTemplate = exports.getTableTemplate = exports.getDropdownMenuTemplate = exports.getAvatarTemplate = exports.getBadgeTemplate = exports.getContentTableTemplate = exports.getRecentContentTemplate = exports.getDashboardStatsTemplate = exports.getAdminBreadcrumbsTemplate = exports.getAdminHeaderTemplate = exports.getAdminSidebarTemplate = exports.getAdminContentTypeRouteTemplate = exports.getAdminContentIndexTemplate = exports.getAdminContentRouteTemplate = exports.getAdminIndexTemplate = exports.getAdminLayoutTemplate = void 0;
|
|
10
|
+
// Route templates
|
|
11
|
+
var admin_layout_1 = require("./admin-layout");
|
|
12
|
+
Object.defineProperty(exports, "getAdminLayoutTemplate", { enumerable: true, get: function () { return admin_layout_1.getAdminLayoutTemplate; } });
|
|
13
|
+
var admin_index_1 = require("./admin-index");
|
|
14
|
+
Object.defineProperty(exports, "getAdminIndexTemplate", { enumerable: true, get: function () { return admin_index_1.getAdminIndexTemplate; } });
|
|
15
|
+
var admin_content_route_1 = require("./admin-content-route");
|
|
16
|
+
Object.defineProperty(exports, "getAdminContentRouteTemplate", { enumerable: true, get: function () { return admin_content_route_1.getAdminContentRouteTemplate; } });
|
|
17
|
+
Object.defineProperty(exports, "getAdminContentIndexTemplate", { enumerable: true, get: function () { return admin_content_route_1.getAdminContentIndexTemplate; } });
|
|
18
|
+
var admin_content_type_route_1 = require("./admin-content-type-route");
|
|
19
|
+
Object.defineProperty(exports, "getAdminContentTypeRouteTemplate", { enumerable: true, get: function () { return admin_content_type_route_1.getAdminContentTypeRouteTemplate; } });
|
|
20
|
+
// Admin component templates
|
|
21
|
+
var admin_sidebar_1 = require("./admin-sidebar");
|
|
22
|
+
Object.defineProperty(exports, "getAdminSidebarTemplate", { enumerable: true, get: function () { return admin_sidebar_1.getAdminSidebarTemplate; } });
|
|
23
|
+
var admin_header_1 = require("./admin-header");
|
|
24
|
+
Object.defineProperty(exports, "getAdminHeaderTemplate", { enumerable: true, get: function () { return admin_header_1.getAdminHeaderTemplate; } });
|
|
25
|
+
var admin_breadcrumbs_1 = require("./admin-breadcrumbs");
|
|
26
|
+
Object.defineProperty(exports, "getAdminBreadcrumbsTemplate", { enumerable: true, get: function () { return admin_breadcrumbs_1.getAdminBreadcrumbsTemplate; } });
|
|
27
|
+
var dashboard_stats_1 = require("./dashboard-stats");
|
|
28
|
+
Object.defineProperty(exports, "getDashboardStatsTemplate", { enumerable: true, get: function () { return dashboard_stats_1.getDashboardStatsTemplate; } });
|
|
29
|
+
var recent_content_1 = require("./recent-content");
|
|
30
|
+
Object.defineProperty(exports, "getRecentContentTemplate", { enumerable: true, get: function () { return recent_content_1.getRecentContentTemplate; } });
|
|
31
|
+
var content_table_1 = require("./content-table");
|
|
32
|
+
Object.defineProperty(exports, "getContentTableTemplate", { enumerable: true, get: function () { return content_table_1.getContentTableTemplate; } });
|
|
33
|
+
// UI component templates
|
|
34
|
+
var ui_badge_1 = require("./ui-badge");
|
|
35
|
+
Object.defineProperty(exports, "getBadgeTemplate", { enumerable: true, get: function () { return ui_badge_1.getBadgeTemplate; } });
|
|
36
|
+
var ui_avatar_1 = require("./ui-avatar");
|
|
37
|
+
Object.defineProperty(exports, "getAvatarTemplate", { enumerable: true, get: function () { return ui_avatar_1.getAvatarTemplate; } });
|
|
38
|
+
var ui_dropdown_menu_1 = require("./ui-dropdown-menu");
|
|
39
|
+
Object.defineProperty(exports, "getDropdownMenuTemplate", { enumerable: true, get: function () { return ui_dropdown_menu_1.getDropdownMenuTemplate; } });
|
|
40
|
+
var ui_table_1 = require("./ui-table");
|
|
41
|
+
Object.defineProperty(exports, "getTableTemplate", { enumerable: true, get: function () { return ui_table_1.getTableTemplate; } });
|
|
42
|
+
var ui_popover_1 = require("./ui-popover");
|
|
43
|
+
Object.defineProperty(exports, "getPopoverTemplate", { enumerable: true, get: function () { return ui_popover_1.getPopoverTemplate; } });
|
|
44
|
+
// Editor component templates
|
|
45
|
+
var editor_1 = require("./editor");
|
|
46
|
+
Object.defineProperty(exports, "getEditorToolbarTemplate", { enumerable: true, get: function () { return editor_1.getEditorToolbarTemplate; } });
|
|
47
|
+
Object.defineProperty(exports, "getRichTextEditorTemplate", { enumerable: true, get: function () { return editor_1.getRichTextEditorTemplate; } });
|
|
48
|
+
// Content type system templates
|
|
49
|
+
var content_types_1 = require("./content-types");
|
|
50
|
+
Object.defineProperty(exports, "getContentTypesTemplate", { enumerable: true, get: function () { return content_types_1.getContentTypesTemplate; } });
|
|
51
|
+
var content_schema_1 = require("./content-schema");
|
|
52
|
+
Object.defineProperty(exports, "getContentSchemaTemplate", { enumerable: true, get: function () { return content_schema_1.getContentSchemaTemplate; } });
|
|
53
|
+
var slug_utils_1 = require("./slug-utils");
|
|
54
|
+
Object.defineProperty(exports, "getSlugUtilsTemplate", { enumerable: true, get: function () { return slug_utils_1.getSlugUtilsTemplate; } });
|
|
55
|
+
var content_types_registry_1 = require("./content-types-registry");
|
|
56
|
+
Object.defineProperty(exports, "getContentTypesRegistryTemplate", { enumerable: true, get: function () { return content_types_registry_1.getContentTypesRegistryTemplate; } });
|
|
57
|
+
var content_editor_1 = require("./content-editor");
|
|
58
|
+
Object.defineProperty(exports, "getContentEditorTemplate", { enumerable: true, get: function () { return content_editor_1.getContentEditorTemplate; } });
|
|
59
|
+
var content_types_examples_1 = require("./content-types-examples");
|
|
60
|
+
Object.defineProperty(exports, "getBlogPostContentTypeTemplate", { enumerable: true, get: function () { return content_types_examples_1.getBlogPostContentTypeTemplate; } });
|
|
61
|
+
Object.defineProperty(exports, "getPageContentTypeTemplate", { enumerable: true, get: function () { return content_types_examples_1.getPageContentTypeTemplate; } });
|
|
62
|
+
// Form field component templates
|
|
63
|
+
var form_fields_1 = require("./form-fields");
|
|
64
|
+
Object.defineProperty(exports, "getFormFieldsIndexTemplate", { enumerable: true, get: function () { return form_fields_1.getFormFieldsIndexTemplate; } });
|
|
65
|
+
Object.defineProperty(exports, "getTextFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getTextFieldTemplate; } });
|
|
66
|
+
Object.defineProperty(exports, "getTextareaFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getTextareaFieldTemplate; } });
|
|
67
|
+
Object.defineProperty(exports, "getRichtextFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getRichtextFieldTemplate; } });
|
|
68
|
+
Object.defineProperty(exports, "getSlugFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getSlugFieldTemplate; } });
|
|
69
|
+
Object.defineProperty(exports, "getMediaFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getMediaFieldTemplate; } });
|
|
70
|
+
Object.defineProperty(exports, "getSelectFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getSelectFieldTemplate; } });
|
|
71
|
+
Object.defineProperty(exports, "getMultiselectFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getMultiselectFieldTemplate; } });
|
|
72
|
+
Object.defineProperty(exports, "getDateFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getDateFieldTemplate; } });
|
|
73
|
+
Object.defineProperty(exports, "getDatetimeFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getDatetimeFieldTemplate; } });
|
|
74
|
+
Object.defineProperty(exports, "getBooleanFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getBooleanFieldTemplate; } });
|
|
75
|
+
Object.defineProperty(exports, "getNumberFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getNumberFieldTemplate; } });
|
|
76
|
+
Object.defineProperty(exports, "getTagsFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getTagsFieldTemplate; } });
|
|
77
|
+
Object.defineProperty(exports, "getReferenceFieldTemplate", { enumerable: true, get: function () { return form_fields_1.getReferenceFieldTemplate; } });
|
|
78
|
+
// Media library templates
|
|
79
|
+
var media_1 = require("./media");
|
|
80
|
+
Object.defineProperty(exports, "getMediaUploaderTemplate", { enumerable: true, get: function () { return media_1.getMediaUploaderTemplate; } });
|
|
81
|
+
Object.defineProperty(exports, "getMediaGridTemplate", { enumerable: true, get: function () { return media_1.getMediaGridTemplate; } });
|
|
82
|
+
Object.defineProperty(exports, "getMediaPickerTemplate", { enumerable: true, get: function () { return media_1.getMediaPickerTemplate; } });
|
|
83
|
+
Object.defineProperty(exports, "getMediaApiTemplate", { enumerable: true, get: function () { return media_1.getMediaApiTemplate; } });
|
|
84
|
+
Object.defineProperty(exports, "getMediaLibraryRouteTemplate", { enumerable: true, get: function () { return media_1.getMediaLibraryRouteTemplate; } });
|
|
85
|
+
// Additional UI component templates
|
|
86
|
+
var ui_progress_1 = require("./ui-progress");
|
|
87
|
+
Object.defineProperty(exports, "getProgressTemplate", { enumerable: true, get: function () { return ui_progress_1.getProgressTemplate; } });
|
|
88
|
+
var ui_dialog_1 = require("./ui-dialog");
|
|
89
|
+
Object.defineProperty(exports, "getDialogTemplate", { enumerable: true, get: function () { return ui_dialog_1.getDialogTemplate; } });
|
|
90
|
+
var ui_tabs_1 = require("./ui-tabs");
|
|
91
|
+
Object.defineProperty(exports, "getTabsTemplate", { enumerable: true, get: function () { return ui_tabs_1.getTabsTemplate; } });
|
|
92
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/templates/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,kBAAkB;AAClB,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA;AAC/B,6CAAsD;AAA7C,oHAAA,qBAAqB,OAAA;AAC9B,6DAAmG;AAA1F,mIAAA,4BAA4B,OAAA;AAAE,mIAAA,4BAA4B,OAAA;AACnE,uEAA8E;AAArE,4IAAA,gCAAgC,OAAA;AAEzC,4BAA4B;AAC5B,iDAA0D;AAAjD,wHAAA,uBAAuB,OAAA;AAChC,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA;AAC/B,yDAAkE;AAAzD,gIAAA,2BAA2B,OAAA;AACpC,qDAA8D;AAArD,4HAAA,yBAAyB,OAAA;AAClC,mDAA4D;AAAnD,0HAAA,wBAAwB,OAAA;AACjC,iDAA0D;AAAjD,wHAAA,uBAAuB,OAAA;AAEhC,yBAAyB;AACzB,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA;AACzB,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAC1B,uDAA6D;AAApD,2HAAA,uBAAuB,OAAA;AAChC,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA;AACzB,2CAAkD;AAAzC,gHAAA,kBAAkB,OAAA;AAE3B,6BAA6B;AAC7B,mCAA+E;AAAtE,kHAAA,wBAAwB,OAAA;AAAE,mHAAA,yBAAyB,OAAA;AAE5D,gCAAgC;AAChC,iDAA0D;AAAjD,wHAAA,uBAAuB,OAAA;AAChC,mDAA4D;AAAnD,0HAAA,wBAAwB,OAAA;AACjC,2CAAoD;AAA3C,kHAAA,oBAAoB,OAAA;AAC7B,mEAA2E;AAAlE,yIAAA,+BAA+B,OAAA;AACxC,mDAA4D;AAAnD,0HAAA,wBAAwB,OAAA;AACjC,mEAGkC;AAFhC,wIAAA,8BAA8B,OAAA;AAC9B,oIAAA,0BAA0B,OAAA;AAG5B,iCAAiC;AACjC,6CAeuB;AAdrB,yHAAA,0BAA0B,OAAA;AAC1B,mHAAA,oBAAoB,OAAA;AACpB,uHAAA,wBAAwB,OAAA;AACxB,uHAAA,wBAAwB,OAAA;AACxB,mHAAA,oBAAoB,OAAA;AACpB,oHAAA,qBAAqB,OAAA;AACrB,qHAAA,sBAAsB,OAAA;AACtB,0HAAA,2BAA2B,OAAA;AAC3B,mHAAA,oBAAoB,OAAA;AACpB,uHAAA,wBAAwB,OAAA;AACxB,sHAAA,uBAAuB,OAAA;AACvB,qHAAA,sBAAsB,OAAA;AACtB,mHAAA,oBAAoB,OAAA;AACpB,wHAAA,yBAAyB,OAAA;AAG3B,0BAA0B;AAC1B,iCAMiB;AALf,iHAAA,wBAAwB,OAAA;AACxB,6GAAA,oBAAoB,OAAA;AACpB,+GAAA,sBAAsB,OAAA;AACtB,4GAAA,mBAAmB,OAAA;AACnB,qHAAA,4BAA4B,OAAA;AAG9B,oCAAoC;AACpC,6CAAoD;AAA3C,kHAAA,mBAAmB,OAAA;AAC5B,yCAAgD;AAAvC,8GAAA,iBAAiB,OAAA;AAC1B,qCAA4C;AAAnC,0GAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Media library template exports.
|
|
3
|
+
*
|
|
4
|
+
* This module exports all template generators for the media library
|
|
5
|
+
* functionality including upload, display, and picker components.
|
|
6
|
+
*/
|
|
7
|
+
export { getMediaUploaderTemplate } from './media-uploader';
|
|
8
|
+
export { getMediaGridTemplate } from './media-grid';
|
|
9
|
+
export { getMediaPickerTemplate } from './media-picker';
|
|
10
|
+
export { getMediaApiTemplate } from './media-api';
|
|
11
|
+
export { getMediaLibraryRouteTemplate } from './media-library-route';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/media/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
/**
|
|
3
|
+
* Media library template exports.
|
|
4
|
+
*
|
|
5
|
+
* This module exports all template generators for the media library
|
|
6
|
+
* functionality including upload, display, and picker components.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
9
|
+
exports.getMediaLibraryRouteTemplate =
|
|
10
|
+
exports.getMediaApiTemplate =
|
|
11
|
+
exports.getMediaPickerTemplate =
|
|
12
|
+
exports.getMediaGridTemplate =
|
|
13
|
+
exports.getMediaUploaderTemplate =
|
|
14
|
+
void 0;
|
|
15
|
+
var media_uploader_1 = require('./media-uploader');
|
|
16
|
+
Object.defineProperty(exports, 'getMediaUploaderTemplate', {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () {
|
|
19
|
+
return media_uploader_1.getMediaUploaderTemplate;
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
var media_grid_1 = require('./media-grid');
|
|
23
|
+
Object.defineProperty(exports, 'getMediaGridTemplate', {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () {
|
|
26
|
+
return media_grid_1.getMediaGridTemplate;
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
var media_picker_1 = require('./media-picker');
|
|
30
|
+
Object.defineProperty(exports, 'getMediaPickerTemplate', {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () {
|
|
33
|
+
return media_picker_1.getMediaPickerTemplate;
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
var media_api_1 = require('./media-api');
|
|
37
|
+
Object.defineProperty(exports, 'getMediaApiTemplate', {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
get: function () {
|
|
40
|
+
return media_api_1.getMediaApiTemplate;
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
var media_library_route_1 = require('./media-library-route');
|
|
44
|
+
Object.defineProperty(exports, 'getMediaLibraryRouteTemplate', {
|
|
45
|
+
enumerable: true,
|
|
46
|
+
get: function () {
|
|
47
|
+
return media_library_route_1.getMediaLibraryRouteTemplate;
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/media/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,mDAA4D;AAAnD,0HAAA,wBAAwB,OAAA;AACjC,2CAAoD;AAA3C,kHAAA,oBAAoB,OAAA;AAC7B,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA;AAC/B,yCAAkD;AAAzC,gHAAA,mBAAmB,OAAA;AAC5B,6DAAqE;AAA5D,mIAAA,4BAA4B,OAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates the media API client template.
|
|
3
|
+
*
|
|
4
|
+
* This template provides client-side helpers for:
|
|
5
|
+
* - Requesting presigned URLs
|
|
6
|
+
* - Uploading files directly to S3
|
|
7
|
+
* - Creating media records
|
|
8
|
+
* - Listing and deleting media
|
|
9
|
+
*
|
|
10
|
+
* @returns Template string for app/lib/media-api.ts
|
|
11
|
+
*/
|
|
12
|
+
export declare function getMediaApiTemplate(): string;
|
|
13
|
+
//# sourceMappingURL=media-api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-api.d.ts","sourceRoot":"","sources":["../../../src/templates/media/media-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAkQ5C"}
|