@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.
Files changed (207) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +283 -0
  3. package/lib/cms-project.d.ts +127 -0
  4. package/lib/cms-project.d.ts.map +1 -0
  5. package/lib/cms-project.js +343 -0
  6. package/lib/cms-project.js.map +1 -0
  7. package/lib/index.d.ts +11 -0
  8. package/lib/index.d.ts.map +1 -0
  9. package/lib/index.js +20 -0
  10. package/lib/index.js.map +1 -0
  11. package/lib/options.d.ts +59 -0
  12. package/lib/options.d.ts.map +1 -0
  13. package/lib/options.js +3 -0
  14. package/lib/options.js.map +1 -0
  15. package/lib/templates/admin-breadcrumbs.d.ts +13 -0
  16. package/lib/templates/admin-breadcrumbs.d.ts.map +1 -0
  17. package/lib/templates/admin-breadcrumbs.js +80 -0
  18. package/lib/templates/admin-breadcrumbs.js.map +1 -0
  19. package/lib/templates/admin-content-route.d.ts +18 -0
  20. package/lib/templates/admin-content-route.d.ts.map +1 -0
  21. package/lib/templates/admin-content-route.js +100 -0
  22. package/lib/templates/admin-content-route.js.map +1 -0
  23. package/lib/templates/admin-content-type-route.d.ts +9 -0
  24. package/lib/templates/admin-content-type-route.d.ts.map +1 -0
  25. package/lib/templates/admin-content-type-route.js +96 -0
  26. package/lib/templates/admin-content-type-route.js.map +1 -0
  27. package/lib/templates/admin-header.d.ts +13 -0
  28. package/lib/templates/admin-header.d.ts.map +1 -0
  29. package/lib/templates/admin-header.js +123 -0
  30. package/lib/templates/admin-header.js.map +1 -0
  31. package/lib/templates/admin-index.d.ts +9 -0
  32. package/lib/templates/admin-index.d.ts.map +1 -0
  33. package/lib/templates/admin-index.js +60 -0
  34. package/lib/templates/admin-index.js.map +1 -0
  35. package/lib/templates/admin-layout.d.ts +10 -0
  36. package/lib/templates/admin-layout.d.ts.map +1 -0
  37. package/lib/templates/admin-layout.js +46 -0
  38. package/lib/templates/admin-layout.js.map +1 -0
  39. package/lib/templates/admin-sidebar.d.ts +13 -0
  40. package/lib/templates/admin-sidebar.d.ts.map +1 -0
  41. package/lib/templates/admin-sidebar.js +149 -0
  42. package/lib/templates/admin-sidebar.js.map +1 -0
  43. package/lib/templates/content-editor.d.ts +10 -0
  44. package/lib/templates/content-editor.d.ts.map +1 -0
  45. package/lib/templates/content-editor.js +354 -0
  46. package/lib/templates/content-editor.js.map +1 -0
  47. package/lib/templates/content-schema.d.ts +10 -0
  48. package/lib/templates/content-schema.d.ts.map +1 -0
  49. package/lib/templates/content-schema.js +274 -0
  50. package/lib/templates/content-schema.js.map +1 -0
  51. package/lib/templates/content-table.d.ts +13 -0
  52. package/lib/templates/content-table.d.ts.map +1 -0
  53. package/lib/templates/content-table.js +177 -0
  54. package/lib/templates/content-table.js.map +1 -0
  55. package/lib/templates/content-types-examples.d.ts +19 -0
  56. package/lib/templates/content-types-examples.d.ts.map +1 -0
  57. package/lib/templates/content-types-examples.js +275 -0
  58. package/lib/templates/content-types-examples.js.map +1 -0
  59. package/lib/templates/content-types-registry.d.ts +10 -0
  60. package/lib/templates/content-types-registry.d.ts.map +1 -0
  61. package/lib/templates/content-types-registry.js +87 -0
  62. package/lib/templates/content-types-registry.js.map +1 -0
  63. package/lib/templates/content-types.d.ts +10 -0
  64. package/lib/templates/content-types.d.ts.map +1 -0
  65. package/lib/templates/content-types.js +384 -0
  66. package/lib/templates/content-types.js.map +1 -0
  67. package/lib/templates/dashboard-stats.d.ts +13 -0
  68. package/lib/templates/dashboard-stats.d.ts.map +1 -0
  69. package/lib/templates/dashboard-stats.js +117 -0
  70. package/lib/templates/dashboard-stats.js.map +1 -0
  71. package/lib/templates/editor/index.d.ts +6 -0
  72. package/lib/templates/editor/index.d.ts.map +1 -0
  73. package/lib/templates/editor/index.js +21 -0
  74. package/lib/templates/editor/index.js.map +1 -0
  75. package/lib/templates/editor/rich-text-editor.d.ts +7 -0
  76. package/lib/templates/editor/rich-text-editor.d.ts.map +1 -0
  77. package/lib/templates/editor/rich-text-editor.js +115 -0
  78. package/lib/templates/editor/rich-text-editor.js.map +1 -0
  79. package/lib/templates/editor/toolbar.d.ts +7 -0
  80. package/lib/templates/editor/toolbar.d.ts.map +1 -0
  81. package/lib/templates/editor/toolbar.js +272 -0
  82. package/lib/templates/editor/toolbar.js.map +1 -0
  83. package/lib/templates/form-fields/boolean-field.d.ts +7 -0
  84. package/lib/templates/form-fields/boolean-field.d.ts.map +1 -0
  85. package/lib/templates/form-fields/boolean-field.js +76 -0
  86. package/lib/templates/form-fields/boolean-field.js.map +1 -0
  87. package/lib/templates/form-fields/date-field.d.ts +7 -0
  88. package/lib/templates/form-fields/date-field.d.ts.map +1 -0
  89. package/lib/templates/form-fields/date-field.js +61 -0
  90. package/lib/templates/form-fields/date-field.js.map +1 -0
  91. package/lib/templates/form-fields/datetime-field.d.ts +7 -0
  92. package/lib/templates/form-fields/datetime-field.d.ts.map +1 -0
  93. package/lib/templates/form-fields/datetime-field.js +87 -0
  94. package/lib/templates/form-fields/datetime-field.js.map +1 -0
  95. package/lib/templates/form-fields/index.d.ts +23 -0
  96. package/lib/templates/form-fields/index.d.ts.map +1 -0
  97. package/lib/templates/form-fields/index.js +275 -0
  98. package/lib/templates/form-fields/index.js.map +1 -0
  99. package/lib/templates/form-fields/media-field.d.ts +10 -0
  100. package/lib/templates/form-fields/media-field.d.ts.map +1 -0
  101. package/lib/templates/form-fields/media-field.js +225 -0
  102. package/lib/templates/form-fields/media-field.js.map +1 -0
  103. package/lib/templates/form-fields/multiselect-field.d.ts +7 -0
  104. package/lib/templates/form-fields/multiselect-field.d.ts.map +1 -0
  105. package/lib/templates/form-fields/multiselect-field.js +121 -0
  106. package/lib/templates/form-fields/multiselect-field.js.map +1 -0
  107. package/lib/templates/form-fields/number-field.d.ts +7 -0
  108. package/lib/templates/form-fields/number-field.d.ts.map +1 -0
  109. package/lib/templates/form-fields/number-field.js +87 -0
  110. package/lib/templates/form-fields/number-field.js.map +1 -0
  111. package/lib/templates/form-fields/reference-field.d.ts +9 -0
  112. package/lib/templates/form-fields/reference-field.d.ts.map +1 -0
  113. package/lib/templates/form-fields/reference-field.js +145 -0
  114. package/lib/templates/form-fields/reference-field.js.map +1 -0
  115. package/lib/templates/form-fields/richtext-field.d.ts +9 -0
  116. package/lib/templates/form-fields/richtext-field.d.ts.map +1 -0
  117. package/lib/templates/form-fields/richtext-field.js +60 -0
  118. package/lib/templates/form-fields/richtext-field.js.map +1 -0
  119. package/lib/templates/form-fields/select-field.d.ts +7 -0
  120. package/lib/templates/form-fields/select-field.d.ts.map +1 -0
  121. package/lib/templates/form-fields/select-field.js +70 -0
  122. package/lib/templates/form-fields/select-field.js.map +1 -0
  123. package/lib/templates/form-fields/slug-field.d.ts +7 -0
  124. package/lib/templates/form-fields/slug-field.d.ts.map +1 -0
  125. package/lib/templates/form-fields/slug-field.js +143 -0
  126. package/lib/templates/form-fields/slug-field.js.map +1 -0
  127. package/lib/templates/form-fields/tags-field.d.ts +7 -0
  128. package/lib/templates/form-fields/tags-field.d.ts.map +1 -0
  129. package/lib/templates/form-fields/tags-field.js +172 -0
  130. package/lib/templates/form-fields/tags-field.js.map +1 -0
  131. package/lib/templates/form-fields/text-field.d.ts +7 -0
  132. package/lib/templates/form-fields/text-field.d.ts.map +1 -0
  133. package/lib/templates/form-fields/text-field.js +63 -0
  134. package/lib/templates/form-fields/text-field.js.map +1 -0
  135. package/lib/templates/form-fields/textarea-field.d.ts +7 -0
  136. package/lib/templates/form-fields/textarea-field.d.ts.map +1 -0
  137. package/lib/templates/form-fields/textarea-field.js +64 -0
  138. package/lib/templates/form-fields/textarea-field.js.map +1 -0
  139. package/lib/templates/index.d.ts +34 -0
  140. package/lib/templates/index.d.ts.map +1 -0
  141. package/lib/templates/index.js +92 -0
  142. package/lib/templates/index.js.map +1 -0
  143. package/lib/templates/media/index.d.ts +12 -0
  144. package/lib/templates/media/index.d.ts.map +1 -0
  145. package/lib/templates/media/index.js +50 -0
  146. package/lib/templates/media/index.js.map +1 -0
  147. package/lib/templates/media/media-api.d.ts +13 -0
  148. package/lib/templates/media/media-api.d.ts.map +1 -0
  149. package/lib/templates/media/media-api.js +274 -0
  150. package/lib/templates/media/media-api.js.map +1 -0
  151. package/lib/templates/media/media-grid.d.ts +14 -0
  152. package/lib/templates/media/media-grid.d.ts.map +1 -0
  153. package/lib/templates/media/media-grid.js +314 -0
  154. package/lib/templates/media/media-grid.js.map +1 -0
  155. package/lib/templates/media/media-library-route.d.ts +13 -0
  156. package/lib/templates/media/media-library-route.d.ts.map +1 -0
  157. package/lib/templates/media/media-library-route.js +105 -0
  158. package/lib/templates/media/media-library-route.js.map +1 -0
  159. package/lib/templates/media/media-picker.d.ts +13 -0
  160. package/lib/templates/media/media-picker.d.ts.map +1 -0
  161. package/lib/templates/media/media-picker.js +152 -0
  162. package/lib/templates/media/media-picker.js.map +1 -0
  163. package/lib/templates/media/media-uploader.d.ts +14 -0
  164. package/lib/templates/media/media-uploader.d.ts.map +1 -0
  165. package/lib/templates/media/media-uploader.js +318 -0
  166. package/lib/templates/media/media-uploader.js.map +1 -0
  167. package/lib/templates/recent-content.d.ts +13 -0
  168. package/lib/templates/recent-content.d.ts.map +1 -0
  169. package/lib/templates/recent-content.js +138 -0
  170. package/lib/templates/recent-content.js.map +1 -0
  171. package/lib/templates/slug-utils.d.ts +10 -0
  172. package/lib/templates/slug-utils.d.ts.map +1 -0
  173. package/lib/templates/slug-utils.js +194 -0
  174. package/lib/templates/slug-utils.js.map +1 -0
  175. package/lib/templates/ui-avatar.d.ts +8 -0
  176. package/lib/templates/ui-avatar.d.ts.map +1 -0
  177. package/lib/templates/ui-avatar.js +60 -0
  178. package/lib/templates/ui-avatar.js.map +1 -0
  179. package/lib/templates/ui-badge.d.ts +8 -0
  180. package/lib/templates/ui-badge.d.ts.map +1 -0
  181. package/lib/templates/ui-badge.js +52 -0
  182. package/lib/templates/ui-badge.js.map +1 -0
  183. package/lib/templates/ui-dialog.d.ts +10 -0
  184. package/lib/templates/ui-dialog.d.ts.map +1 -0
  185. package/lib/templates/ui-dialog.js +134 -0
  186. package/lib/templates/ui-dialog.js.map +1 -0
  187. package/lib/templates/ui-dropdown-menu.d.ts +8 -0
  188. package/lib/templates/ui-dropdown-menu.d.ts.map +1 -0
  189. package/lib/templates/ui-dropdown-menu.js +210 -0
  190. package/lib/templates/ui-dropdown-menu.js.map +1 -0
  191. package/lib/templates/ui-popover.d.ts +8 -0
  192. package/lib/templates/ui-popover.d.ts.map +1 -0
  193. package/lib/templates/ui-popover.js +43 -0
  194. package/lib/templates/ui-popover.js.map +1 -0
  195. package/lib/templates/ui-progress.d.ts +10 -0
  196. package/lib/templates/ui-progress.d.ts.map +1 -0
  197. package/lib/templates/ui-progress.js +40 -0
  198. package/lib/templates/ui-progress.js.map +1 -0
  199. package/lib/templates/ui-table.d.ts +8 -0
  200. package/lib/templates/ui-table.d.ts.map +1 -0
  201. package/lib/templates/ui-table.js +129 -0
  202. package/lib/templates/ui-table.js.map +1 -0
  203. package/lib/templates/ui-tabs.d.ts +10 -0
  204. package/lib/templates/ui-tabs.d.ts.map +1 -0
  205. package/lib/templates/ui-tabs.js +67 -0
  206. package/lib/templates/ui-tabs.js.map +1 -0
  207. package/package.json +52 -0
@@ -0,0 +1,210 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.getDropdownMenuTemplate = getDropdownMenuTemplate;
4
+ /**
5
+ * Generates the DropdownMenu component file content.
6
+ * Standard shadcn/ui dropdown menu with Radix UI primitives.
7
+ *
8
+ * @returns app/components/ui/dropdown-menu.tsx file content
9
+ */
10
+ function getDropdownMenuTemplate() {
11
+ return `import * as React from 'react';
12
+ import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
13
+ import { Check, ChevronRight, Circle } from 'lucide-react';
14
+ import { cn } from '~/lib/utils';
15
+
16
+ const DropdownMenu = DropdownMenuPrimitive.Root;
17
+
18
+ const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
19
+
20
+ const DropdownMenuGroup = DropdownMenuPrimitive.Group;
21
+
22
+ const DropdownMenuPortal = DropdownMenuPrimitive.Portal;
23
+
24
+ const DropdownMenuSub = DropdownMenuPrimitive.Sub;
25
+
26
+ const DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
27
+
28
+ const DropdownMenuSubTrigger = React.forwardRef<
29
+ React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>,
30
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubTrigger> & {
31
+ inset?: boolean;
32
+ }
33
+ >(({ className, inset, children, ...props }, ref) => (
34
+ <DropdownMenuPrimitive.SubTrigger
35
+ ref={ref}
36
+ className={cn(
37
+ 'flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent data-[state=open]:bg-accent',
38
+ inset && 'pl-8',
39
+ className
40
+ )}
41
+ {...props}
42
+ >
43
+ {children}
44
+ <ChevronRight className="ml-auto h-4 w-4" />
45
+ </DropdownMenuPrimitive.SubTrigger>
46
+ ));
47
+ DropdownMenuSubTrigger.displayName =
48
+ DropdownMenuPrimitive.SubTrigger.displayName;
49
+
50
+ const DropdownMenuSubContent = React.forwardRef<
51
+ React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
52
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.SubContent>
53
+ >(({ className, ...props }, ref) => (
54
+ <DropdownMenuPrimitive.SubContent
55
+ ref={ref}
56
+ className={cn(
57
+ 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-lg data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
58
+ className
59
+ )}
60
+ {...props}
61
+ />
62
+ ));
63
+ DropdownMenuSubContent.displayName =
64
+ DropdownMenuPrimitive.SubContent.displayName;
65
+
66
+ const DropdownMenuContent = React.forwardRef<
67
+ React.ElementRef<typeof DropdownMenuPrimitive.Content>,
68
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content>
69
+ >(({ className, sideOffset = 4, ...props }, ref) => (
70
+ <DropdownMenuPrimitive.Portal>
71
+ <DropdownMenuPrimitive.Content
72
+ ref={ref}
73
+ sideOffset={sideOffset}
74
+ className={cn(
75
+ 'z-50 min-w-[8rem] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
76
+ className
77
+ )}
78
+ {...props}
79
+ />
80
+ </DropdownMenuPrimitive.Portal>
81
+ ));
82
+ DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
83
+
84
+ const DropdownMenuItem = React.forwardRef<
85
+ React.ElementRef<typeof DropdownMenuPrimitive.Item>,
86
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Item> & {
87
+ inset?: boolean;
88
+ }
89
+ >(({ className, inset, ...props }, ref) => (
90
+ <DropdownMenuPrimitive.Item
91
+ ref={ref}
92
+ className={cn(
93
+ 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
94
+ inset && 'pl-8',
95
+ className
96
+ )}
97
+ {...props}
98
+ />
99
+ ));
100
+ DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
101
+
102
+ const DropdownMenuCheckboxItem = React.forwardRef<
103
+ React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
104
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem>
105
+ >(({ className, children, checked, ...props }, ref) => (
106
+ <DropdownMenuPrimitive.CheckboxItem
107
+ ref={ref}
108
+ className={cn(
109
+ 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
110
+ className
111
+ )}
112
+ checked={checked}
113
+ {...props}
114
+ >
115
+ <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
116
+ <DropdownMenuPrimitive.ItemIndicator>
117
+ <Check className="h-4 w-4" />
118
+ </DropdownMenuPrimitive.ItemIndicator>
119
+ </span>
120
+ {children}
121
+ </DropdownMenuPrimitive.CheckboxItem>
122
+ ));
123
+ DropdownMenuCheckboxItem.displayName =
124
+ DropdownMenuPrimitive.CheckboxItem.displayName;
125
+
126
+ const DropdownMenuRadioItem = React.forwardRef<
127
+ React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
128
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem>
129
+ >(({ className, children, ...props }, ref) => (
130
+ <DropdownMenuPrimitive.RadioItem
131
+ ref={ref}
132
+ className={cn(
133
+ 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
134
+ className
135
+ )}
136
+ {...props}
137
+ >
138
+ <span className="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
139
+ <DropdownMenuPrimitive.ItemIndicator>
140
+ <Circle className="h-2 w-2 fill-current" />
141
+ </DropdownMenuPrimitive.ItemIndicator>
142
+ </span>
143
+ {children}
144
+ </DropdownMenuPrimitive.RadioItem>
145
+ ));
146
+ DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
147
+
148
+ const DropdownMenuLabel = React.forwardRef<
149
+ React.ElementRef<typeof DropdownMenuPrimitive.Label>,
150
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
151
+ inset?: boolean;
152
+ }
153
+ >(({ className, inset, ...props }, ref) => (
154
+ <DropdownMenuPrimitive.Label
155
+ ref={ref}
156
+ className={cn(
157
+ 'px-2 py-1.5 text-sm font-semibold',
158
+ inset && 'pl-8',
159
+ className
160
+ )}
161
+ {...props}
162
+ />
163
+ ));
164
+ DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
165
+
166
+ const DropdownMenuSeparator = React.forwardRef<
167
+ React.ElementRef<typeof DropdownMenuPrimitive.Separator>,
168
+ React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Separator>
169
+ >(({ className, ...props }, ref) => (
170
+ <DropdownMenuPrimitive.Separator
171
+ ref={ref}
172
+ className={cn('-mx-1 my-1 h-px bg-muted', className)}
173
+ {...props}
174
+ />
175
+ ));
176
+ DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
177
+
178
+ const DropdownMenuShortcut = ({
179
+ className,
180
+ ...props
181
+ }: React.HTMLAttributes<HTMLSpanElement>) => {
182
+ return (
183
+ <span
184
+ className={cn('ml-auto text-xs tracking-widest opacity-60', className)}
185
+ {...props}
186
+ />
187
+ );
188
+ };
189
+ DropdownMenuShortcut.displayName = 'DropdownMenuShortcut';
190
+
191
+ export {
192
+ DropdownMenu,
193
+ DropdownMenuTrigger,
194
+ DropdownMenuContent,
195
+ DropdownMenuItem,
196
+ DropdownMenuCheckboxItem,
197
+ DropdownMenuRadioItem,
198
+ DropdownMenuLabel,
199
+ DropdownMenuSeparator,
200
+ DropdownMenuShortcut,
201
+ DropdownMenuGroup,
202
+ DropdownMenuPortal,
203
+ DropdownMenuSub,
204
+ DropdownMenuSubContent,
205
+ DropdownMenuSubTrigger,
206
+ DropdownMenuRadioGroup,
207
+ };
208
+ `;
209
+ }
210
+ //# sourceMappingURL=ui-dropdown-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-dropdown-menu.js","sourceRoot":"","sources":["../../src/templates/ui-dropdown-menu.ts"],"names":[],"mappings":";;AAMA,0DAuMC;AA7MD;;;;;GAKG;AACH,SAAgB,uBAAuB;IACrC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqMR,CAAC;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Generates the Popover component file content.
3
+ * Standard shadcn/ui popover with Radix UI primitives.
4
+ *
5
+ * @returns app/components/ui/popover.tsx file content
6
+ */
7
+ export declare function getPopoverTemplate(): string;
8
+ //# sourceMappingURL=ui-popover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-popover.d.ts","sourceRoot":"","sources":["../../src/templates/ui-popover.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAgC3C"}
@@ -0,0 +1,43 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.getPopoverTemplate = getPopoverTemplate;
4
+ /**
5
+ * Generates the Popover component file content.
6
+ * Standard shadcn/ui popover with Radix UI primitives.
7
+ *
8
+ * @returns app/components/ui/popover.tsx file content
9
+ */
10
+ function getPopoverTemplate() {
11
+ return `import * as React from 'react';
12
+ import * as PopoverPrimitive from '@radix-ui/react-popover';
13
+ import { cn } from '~/lib/utils';
14
+
15
+ const Popover = PopoverPrimitive.Root;
16
+
17
+ const PopoverTrigger = PopoverPrimitive.Trigger;
18
+
19
+ const PopoverAnchor = PopoverPrimitive.Anchor;
20
+
21
+ const PopoverContent = React.forwardRef<
22
+ React.ElementRef<typeof PopoverPrimitive.Content>,
23
+ React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>
24
+ >(({ className, align = 'center', sideOffset = 4, ...props }, ref) => (
25
+ <PopoverPrimitive.Portal>
26
+ <PopoverPrimitive.Content
27
+ ref={ref}
28
+ align={align}
29
+ sideOffset={sideOffset}
30
+ className={cn(
31
+ 'z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
32
+ className
33
+ )}
34
+ {...props}
35
+ />
36
+ </PopoverPrimitive.Portal>
37
+ ));
38
+ PopoverContent.displayName = PopoverPrimitive.Content.displayName;
39
+
40
+ export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor };
41
+ `;
42
+ }
43
+ //# sourceMappingURL=ui-popover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-popover.js","sourceRoot":"","sources":["../../src/templates/ui-popover.ts"],"names":[],"mappings":";;AAMA,gDAgCC;AAtCD;;;;;GAKG;AACH,SAAgB,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BR,CAAC;AACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Generates the Progress bar component template.
3
+ *
4
+ * This is a shadcn/ui-style progress bar component used for
5
+ * upload progress tracking and other loading indicators.
6
+ *
7
+ * @returns Template string for app/components/ui/progress.tsx
8
+ */
9
+ export declare function getProgressTemplate(): string;
10
+ //# sourceMappingURL=ui-progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-progress.d.ts","sourceRoot":"","sources":["../../src/templates/ui-progress.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CA2B5C"}
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.getProgressTemplate = getProgressTemplate;
4
+ /**
5
+ * Generates the Progress bar component template.
6
+ *
7
+ * This is a shadcn/ui-style progress bar component used for
8
+ * upload progress tracking and other loading indicators.
9
+ *
10
+ * @returns Template string for app/components/ui/progress.tsx
11
+ */
12
+ function getProgressTemplate() {
13
+ return `import * as React from 'react';
14
+ import * as ProgressPrimitive from '@radix-ui/react-progress';
15
+ import { cn } from '~/lib/utils';
16
+
17
+ const Progress = React.forwardRef<
18
+ React.ElementRef<typeof ProgressPrimitive.Root>,
19
+ React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root>
20
+ >(({ className, value, ...props }, ref) => (
21
+ <ProgressPrimitive.Root
22
+ ref={ref}
23
+ className={cn(
24
+ 'relative h-2 w-full overflow-hidden rounded-full bg-secondary',
25
+ className
26
+ )}
27
+ {...props}
28
+ >
29
+ <ProgressPrimitive.Indicator
30
+ className="h-full w-full flex-1 bg-primary transition-all"
31
+ style={{ transform: \`translateX(-\${100 - (value || 0)}%)\` }}
32
+ />
33
+ </ProgressPrimitive.Root>
34
+ ));
35
+ Progress.displayName = ProgressPrimitive.Root.displayName;
36
+
37
+ export { Progress };
38
+ `;
39
+ }
40
+ //# sourceMappingURL=ui-progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-progress.js","sourceRoot":"","sources":["../../src/templates/ui-progress.ts"],"names":[],"mappings":";;AAQA,kDA2BC;AAnCD;;;;;;;GAOG;AACH,SAAgB,mBAAmB;IACjC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;CAyBR,CAAC;AACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Generates the Table component file content.
3
+ * Standard shadcn/ui table with all sub-components.
4
+ *
5
+ * @returns app/components/ui/table.tsx file content
6
+ */
7
+ export declare function getTableTemplate(): string;
8
+ //# sourceMappingURL=ui-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-table.d.ts","sourceRoot":"","sources":["../../src/templates/ui-table.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAsHzC"}
@@ -0,0 +1,129 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.getTableTemplate = getTableTemplate;
4
+ /**
5
+ * Generates the Table component file content.
6
+ * Standard shadcn/ui table with all sub-components.
7
+ *
8
+ * @returns app/components/ui/table.tsx file content
9
+ */
10
+ function getTableTemplate() {
11
+ return `import * as React from 'react';
12
+ import { cn } from '~/lib/utils';
13
+
14
+ const Table = React.forwardRef<
15
+ HTMLTableElement,
16
+ React.HTMLAttributes<HTMLTableElement>
17
+ >(({ className, ...props }, ref) => (
18
+ <div className="relative w-full overflow-auto">
19
+ <table
20
+ ref={ref}
21
+ className={cn('w-full caption-bottom text-sm', className)}
22
+ {...props}
23
+ />
24
+ </div>
25
+ ));
26
+ Table.displayName = 'Table';
27
+
28
+ const TableHeader = React.forwardRef<
29
+ HTMLTableSectionElement,
30
+ React.HTMLAttributes<HTMLTableSectionElement>
31
+ >(({ className, ...props }, ref) => (
32
+ <thead ref={ref} className={cn('[&_tr]:border-b', className)} {...props} />
33
+ ));
34
+ TableHeader.displayName = 'TableHeader';
35
+
36
+ const TableBody = React.forwardRef<
37
+ HTMLTableSectionElement,
38
+ React.HTMLAttributes<HTMLTableSectionElement>
39
+ >(({ className, ...props }, ref) => (
40
+ <tbody
41
+ ref={ref}
42
+ className={cn('[&_tr:last-child]:border-0', className)}
43
+ {...props}
44
+ />
45
+ ));
46
+ TableBody.displayName = 'TableBody';
47
+
48
+ const TableFooter = React.forwardRef<
49
+ HTMLTableSectionElement,
50
+ React.HTMLAttributes<HTMLTableSectionElement>
51
+ >(({ className, ...props }, ref) => (
52
+ <tfoot
53
+ ref={ref}
54
+ className={cn(
55
+ 'border-t bg-muted/50 font-medium [&>tr]:last:border-b-0',
56
+ className
57
+ )}
58
+ {...props}
59
+ />
60
+ ));
61
+ TableFooter.displayName = 'TableFooter';
62
+
63
+ const TableRow = React.forwardRef<
64
+ HTMLTableRowElement,
65
+ React.HTMLAttributes<HTMLTableRowElement>
66
+ >(({ className, ...props }, ref) => (
67
+ <tr
68
+ ref={ref}
69
+ className={cn(
70
+ 'border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted',
71
+ className
72
+ )}
73
+ {...props}
74
+ />
75
+ ));
76
+ TableRow.displayName = 'TableRow';
77
+
78
+ const TableHead = React.forwardRef<
79
+ HTMLTableCellElement,
80
+ React.ThHTMLAttributes<HTMLTableCellElement>
81
+ >(({ className, ...props }, ref) => (
82
+ <th
83
+ ref={ref}
84
+ className={cn(
85
+ 'h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0',
86
+ className
87
+ )}
88
+ {...props}
89
+ />
90
+ ));
91
+ TableHead.displayName = 'TableHead';
92
+
93
+ const TableCell = React.forwardRef<
94
+ HTMLTableCellElement,
95
+ React.TdHTMLAttributes<HTMLTableCellElement>
96
+ >(({ className, ...props }, ref) => (
97
+ <td
98
+ ref={ref}
99
+ className={cn('p-4 align-middle [&:has([role=checkbox])]:pr-0', className)}
100
+ {...props}
101
+ />
102
+ ));
103
+ TableCell.displayName = 'TableCell';
104
+
105
+ const TableCaption = React.forwardRef<
106
+ HTMLTableCaptionElement,
107
+ React.HTMLAttributes<HTMLTableCaptionElement>
108
+ >(({ className, ...props }, ref) => (
109
+ <caption
110
+ ref={ref}
111
+ className={cn('mt-4 text-sm text-muted-foreground', className)}
112
+ {...props}
113
+ />
114
+ ));
115
+ TableCaption.displayName = 'TableCaption';
116
+
117
+ export {
118
+ Table,
119
+ TableHeader,
120
+ TableBody,
121
+ TableFooter,
122
+ TableHead,
123
+ TableRow,
124
+ TableCell,
125
+ TableCaption,
126
+ };
127
+ `;
128
+ }
129
+ //# sourceMappingURL=ui-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-table.js","sourceRoot":"","sources":["../../src/templates/ui-table.ts"],"names":[],"mappings":";;AAMA,4CAsHC;AA5HD;;;;;GAKG;AACH,SAAgB,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoHR,CAAC;AACF,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Generates the Tabs component template.
3
+ *
4
+ * This is a shadcn/ui-style tabs component based on Radix Tabs
5
+ * primitives, used for the media picker tabs and other tab interfaces.
6
+ *
7
+ * @returns Template string for app/components/ui/tabs.tsx
8
+ */
9
+ export declare function getTabsTemplate(): string;
10
+ //# sourceMappingURL=ui-tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-tabs.d.ts","sourceRoot":"","sources":["../../src/templates/ui-tabs.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAsDxC"}
@@ -0,0 +1,67 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, '__esModule', { value: true });
3
+ exports.getTabsTemplate = getTabsTemplate;
4
+ /**
5
+ * Generates the Tabs component template.
6
+ *
7
+ * This is a shadcn/ui-style tabs component based on Radix Tabs
8
+ * primitives, used for the media picker tabs and other tab interfaces.
9
+ *
10
+ * @returns Template string for app/components/ui/tabs.tsx
11
+ */
12
+ function getTabsTemplate() {
13
+ return `import * as React from 'react';
14
+ import * as TabsPrimitive from '@radix-ui/react-tabs';
15
+ import { cn } from '~/lib/utils';
16
+
17
+ const Tabs = TabsPrimitive.Root;
18
+
19
+ const TabsList = React.forwardRef<
20
+ React.ElementRef<typeof TabsPrimitive.List>,
21
+ React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>
22
+ >(({ className, ...props }, ref) => (
23
+ <TabsPrimitive.List
24
+ ref={ref}
25
+ className={cn(
26
+ 'inline-flex h-10 items-center justify-center rounded-md bg-muted p-1 text-muted-foreground',
27
+ className
28
+ )}
29
+ {...props}
30
+ />
31
+ ));
32
+ TabsList.displayName = TabsPrimitive.List.displayName;
33
+
34
+ const TabsTrigger = React.forwardRef<
35
+ React.ElementRef<typeof TabsPrimitive.Trigger>,
36
+ React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>
37
+ >(({ className, ...props }, ref) => (
38
+ <TabsPrimitive.Trigger
39
+ ref={ref}
40
+ className={cn(
41
+ 'inline-flex items-center justify-center whitespace-nowrap rounded-sm px-3 py-1.5 text-sm font-medium ring-offset-background transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background data-[state=active]:text-foreground data-[state=active]:shadow-sm',
42
+ className
43
+ )}
44
+ {...props}
45
+ />
46
+ ));
47
+ TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
48
+
49
+ const TabsContent = React.forwardRef<
50
+ React.ElementRef<typeof TabsPrimitive.Content>,
51
+ React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>
52
+ >(({ className, ...props }, ref) => (
53
+ <TabsPrimitive.Content
54
+ ref={ref}
55
+ className={cn(
56
+ 'mt-2 ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',
57
+ className
58
+ )}
59
+ {...props}
60
+ />
61
+ ));
62
+ TabsContent.displayName = TabsPrimitive.Content.displayName;
63
+
64
+ export { Tabs, TabsList, TabsTrigger, TabsContent };
65
+ `;
66
+ }
67
+ //# sourceMappingURL=ui-tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui-tabs.js","sourceRoot":"","sources":["../../src/templates/ui-tabs.ts"],"names":[],"mappings":";;AAQA,0CAsDC;AA9DD;;;;;;;GAOG;AACH,SAAgB,eAAe;IAC7B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDR,CAAC;AACF,CAAC"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@fnd-platform/cms",
3
+ "version": "1.0.0-alpha.1",
4
+ "description": "Projen project class for generating CMS admin packages in fnd-platform",
5
+ "main": "lib/index.js",
6
+ "types": "lib/index.d.ts",
7
+ "files": [
8
+ "lib/"
9
+ ],
10
+ "dependencies": {
11
+ "projen": "^0.91.0",
12
+ "@fnd-platform/api": "1.0.0-alpha.1",
13
+ "@fnd-platform/frontend": "1.0.0-alpha.1",
14
+ "@fnd-platform/core": "1.0.0-alpha.1"
15
+ },
16
+ "peerDependencies": {
17
+ "projen": "^0.91.0"
18
+ },
19
+ "devDependencies": {
20
+ "@types/node": "^20.0.0",
21
+ "@typescript-eslint/eslint-plugin": "^7.18.0",
22
+ "@typescript-eslint/parser": "^7.18.0",
23
+ "@vitest/coverage-v8": "^1.6.0",
24
+ "eslint": "^8.57.0",
25
+ "typescript": "^5.6.3",
26
+ "vitest": "^1.6.0"
27
+ },
28
+ "keywords": [
29
+ "projen",
30
+ "cms",
31
+ "admin",
32
+ "remix",
33
+ "typescript",
34
+ "scaffolding"
35
+ ],
36
+ "license": "MIT",
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://github.com/your-org/fnd-platform",
43
+ "directory": "packages/cms"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc",
47
+ "test": "vitest run",
48
+ "test:watch": "vitest",
49
+ "test:coverage": "vitest run --coverage",
50
+ "lint": "eslint src/ test/"
51
+ }
52
+ }