@qwickapps/cms 0.2.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.
Files changed (259) hide show
  1. package/LICENSE +45 -0
  2. package/README.md +203 -0
  3. package/dist/admin/components/AccordionItemRowLabel.d.ts +20 -0
  4. package/dist/admin/components/AccordionItemRowLabel.d.ts.map +1 -0
  5. package/dist/admin/components/AccordionItemRowLabel.js +47 -0
  6. package/dist/admin/components/AccordionItemRowLabel.js.map +1 -0
  7. package/dist/admin/components/BlockRowLabel.d.ts +19 -0
  8. package/dist/admin/components/BlockRowLabel.d.ts.map +1 -0
  9. package/dist/admin/components/BlockRowLabel.js +52 -0
  10. package/dist/admin/components/BlockRowLabel.js.map +1 -0
  11. package/dist/admin/components/ButtonRowLabel.d.ts +23 -0
  12. package/dist/admin/components/ButtonRowLabel.d.ts.map +1 -0
  13. package/dist/admin/components/ButtonRowLabel.js +63 -0
  14. package/dist/admin/components/ButtonRowLabel.js.map +1 -0
  15. package/dist/admin/components/CardRowLabel.d.ts +23 -0
  16. package/dist/admin/components/CardRowLabel.d.ts.map +1 -0
  17. package/dist/admin/components/CardRowLabel.js +59 -0
  18. package/dist/admin/components/CardRowLabel.js.map +1 -0
  19. package/dist/admin/components/ContentPreview.d.ts +12 -0
  20. package/dist/admin/components/ContentPreview.d.ts.map +1 -0
  21. package/dist/admin/components/ContentPreview.js +95 -0
  22. package/dist/admin/components/ContentPreview.js.map +1 -0
  23. package/dist/admin/components/Dashboard.d.ts +13 -0
  24. package/dist/admin/components/Dashboard.d.ts.map +1 -0
  25. package/dist/admin/components/Dashboard.js +7 -0
  26. package/dist/admin/components/Dashboard.js.map +1 -0
  27. package/dist/admin/components/DashboardContent.d.ts +11 -0
  28. package/dist/admin/components/DashboardContent.d.ts.map +1 -0
  29. package/dist/admin/components/DashboardContent.js +129 -0
  30. package/dist/admin/components/DashboardContent.js.map +1 -0
  31. package/dist/admin/components/FormFieldRowLabel.d.ts +21 -0
  32. package/dist/admin/components/FormFieldRowLabel.d.ts.map +1 -0
  33. package/dist/admin/components/FormFieldRowLabel.js +47 -0
  34. package/dist/admin/components/FormFieldRowLabel.js.map +1 -0
  35. package/dist/admin/components/Icon.d.ts +10 -0
  36. package/dist/admin/components/Icon.d.ts.map +1 -0
  37. package/dist/admin/components/Icon.js +16 -0
  38. package/dist/admin/components/Icon.js.map +1 -0
  39. package/dist/admin/components/Logo.d.ts +10 -0
  40. package/dist/admin/components/Logo.d.ts.map +1 -0
  41. package/dist/admin/components/Logo.js +16 -0
  42. package/dist/admin/components/Logo.js.map +1 -0
  43. package/dist/admin/components/NavigationItemRowLabel.d.ts +21 -0
  44. package/dist/admin/components/NavigationItemRowLabel.d.ts.map +1 -0
  45. package/dist/admin/components/NavigationItemRowLabel.js +43 -0
  46. package/dist/admin/components/NavigationItemRowLabel.js.map +1 -0
  47. package/dist/admin/components/NavigationSubItemRowLabel.d.ts +19 -0
  48. package/dist/admin/components/NavigationSubItemRowLabel.d.ts.map +1 -0
  49. package/dist/admin/components/NavigationSubItemRowLabel.js +32 -0
  50. package/dist/admin/components/NavigationSubItemRowLabel.js.map +1 -0
  51. package/dist/admin/components/PagesListHeader.d.ts +13 -0
  52. package/dist/admin/components/PagesListHeader.d.ts.map +1 -0
  53. package/dist/admin/components/PagesListHeader.js +48 -0
  54. package/dist/admin/components/PagesListHeader.js.map +1 -0
  55. package/dist/admin/components/ProductsListHeader.d.ts +13 -0
  56. package/dist/admin/components/ProductsListHeader.d.ts.map +1 -0
  57. package/dist/admin/components/ProductsListHeader.js +55 -0
  58. package/dist/admin/components/ProductsListHeader.js.map +1 -0
  59. package/dist/admin/components/styles/CollectionListHeader.css +161 -0
  60. package/dist/admin/components/styles/ContentPreview.css +416 -0
  61. package/dist/admin/components/styles/Dashboard.css +338 -0
  62. package/dist/admin/fields/ColorInput.d.ts +13 -0
  63. package/dist/admin/fields/ColorInput.d.ts.map +1 -0
  64. package/dist/admin/fields/ColorInput.js +201 -0
  65. package/dist/admin/fields/ColorInput.js.map +1 -0
  66. package/dist/admin/fields/index.d.ts +9 -0
  67. package/dist/admin/fields/index.d.ts.map +1 -0
  68. package/dist/admin/fields/index.js +9 -0
  69. package/dist/admin/fields/index.js.map +1 -0
  70. package/dist/admin/index.d.ts +24 -0
  71. package/dist/admin/index.d.ts.map +1 -0
  72. package/dist/admin/index.js +30 -0
  73. package/dist/admin/index.js.map +1 -0
  74. package/dist/blocks/ContentBlocks.d.ts +75 -0
  75. package/dist/blocks/ContentBlocks.d.ts.map +1 -0
  76. package/dist/blocks/ContentBlocks.js +1241 -0
  77. package/dist/blocks/ContentBlocks.js.map +1 -0
  78. package/dist/blocks/index.d.ts +2 -0
  79. package/dist/blocks/index.d.ts.map +1 -0
  80. package/dist/blocks/index.js +3 -0
  81. package/dist/blocks/index.js.map +1 -0
  82. package/dist/client/PayloadAPIClient.d.ts +65 -0
  83. package/dist/client/PayloadAPIClient.d.ts.map +1 -0
  84. package/dist/client/PayloadAPIClient.js +167 -0
  85. package/dist/client/PayloadAPIClient.js.map +1 -0
  86. package/dist/collections/Automations.d.ts +12 -0
  87. package/dist/collections/Automations.d.ts.map +1 -0
  88. package/dist/collections/Automations.js +741 -0
  89. package/dist/collections/Automations.js.map +1 -0
  90. package/dist/collections/Features.d.ts +3 -0
  91. package/dist/collections/Features.d.ts.map +1 -0
  92. package/dist/collections/Features.js +69 -0
  93. package/dist/collections/Features.js.map +1 -0
  94. package/dist/collections/Footer.d.ts +11 -0
  95. package/dist/collections/Footer.d.ts.map +1 -0
  96. package/dist/collections/Footer.js +130 -0
  97. package/dist/collections/Footer.js.map +1 -0
  98. package/dist/collections/FormSubmissions.d.ts +3 -0
  99. package/dist/collections/FormSubmissions.d.ts.map +1 -0
  100. package/dist/collections/FormSubmissions.js +119 -0
  101. package/dist/collections/FormSubmissions.js.map +1 -0
  102. package/dist/collections/Forms.d.ts +16 -0
  103. package/dist/collections/Forms.d.ts.map +1 -0
  104. package/dist/collections/Forms.js +308 -0
  105. package/dist/collections/Forms.js.map +1 -0
  106. package/dist/collections/HeroBlocks.d.ts +3 -0
  107. package/dist/collections/HeroBlocks.d.ts.map +1 -0
  108. package/dist/collections/HeroBlocks.js +115 -0
  109. package/dist/collections/HeroBlocks.js.map +1 -0
  110. package/dist/collections/Media.d.ts +3 -0
  111. package/dist/collections/Media.d.ts.map +1 -0
  112. package/dist/collections/Media.js +26 -0
  113. package/dist/collections/Media.js.map +1 -0
  114. package/dist/collections/Navigation.d.ts +3 -0
  115. package/dist/collections/Navigation.d.ts.map +1 -0
  116. package/dist/collections/Navigation.js +106 -0
  117. package/dist/collections/Navigation.js.map +1 -0
  118. package/dist/collections/Pages.d.ts +3 -0
  119. package/dist/collections/Pages.d.ts.map +1 -0
  120. package/dist/collections/Pages.js +94 -0
  121. package/dist/collections/Pages.js.map +1 -0
  122. package/dist/collections/Posts.d.ts +3 -0
  123. package/dist/collections/Posts.d.ts.map +1 -0
  124. package/dist/collections/Posts.js +134 -0
  125. package/dist/collections/Posts.js.map +1 -0
  126. package/dist/collections/Products.d.ts +3 -0
  127. package/dist/collections/Products.d.ts.map +1 -0
  128. package/dist/collections/Products.js +264 -0
  129. package/dist/collections/Products.js.map +1 -0
  130. package/dist/collections/Users.d.ts +3 -0
  131. package/dist/collections/Users.d.ts.map +1 -0
  132. package/dist/collections/Users.js +53 -0
  133. package/dist/collections/Users.js.map +1 -0
  134. package/dist/collections/hooks/index.d.ts +9 -0
  135. package/dist/collections/hooks/index.d.ts.map +1 -0
  136. package/dist/collections/hooks/index.js +9 -0
  137. package/dist/collections/hooks/index.js.map +1 -0
  138. package/dist/collections/hooks/loggingHooks.d.ts +45 -0
  139. package/dist/collections/hooks/loggingHooks.d.ts.map +1 -0
  140. package/dist/collections/hooks/loggingHooks.js +109 -0
  141. package/dist/collections/hooks/loggingHooks.js.map +1 -0
  142. package/dist/collections/index.d.ts +14 -0
  143. package/dist/collections/index.d.ts.map +1 -0
  144. package/dist/collections/index.js +16 -0
  145. package/dist/collections/index.js.map +1 -0
  146. package/dist/components/index.d.ts +2 -0
  147. package/dist/components/index.d.ts.map +1 -0
  148. package/dist/components/index.js +4 -0
  149. package/dist/components/index.js.map +1 -0
  150. package/dist/globals/AdvancedSettings.d.ts +8 -0
  151. package/dist/globals/AdvancedSettings.d.ts.map +1 -0
  152. package/dist/globals/AdvancedSettings.js +157 -0
  153. package/dist/globals/AdvancedSettings.js.map +1 -0
  154. package/dist/globals/Integrations.d.ts +8 -0
  155. package/dist/globals/Integrations.d.ts.map +1 -0
  156. package/dist/globals/Integrations.js +270 -0
  157. package/dist/globals/Integrations.js.map +1 -0
  158. package/dist/globals/SiteSettings.d.ts +8 -0
  159. package/dist/globals/SiteSettings.d.ts.map +1 -0
  160. package/dist/globals/SiteSettings.js +258 -0
  161. package/dist/globals/SiteSettings.js.map +1 -0
  162. package/dist/globals/ThemeSettings.d.ts +11 -0
  163. package/dist/globals/ThemeSettings.d.ts.map +1 -0
  164. package/dist/globals/ThemeSettings.js +92 -0
  165. package/dist/globals/ThemeSettings.js.map +1 -0
  166. package/dist/globals/index.d.ts +5 -0
  167. package/dist/globals/index.d.ts.map +1 -0
  168. package/dist/globals/index.js +6 -0
  169. package/dist/globals/index.js.map +1 -0
  170. package/dist/index.d.ts +9 -0
  171. package/dist/index.d.ts.map +1 -0
  172. package/dist/index.js +14 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/logging/index.d.ts +73 -0
  175. package/dist/logging/index.d.ts.map +1 -0
  176. package/dist/logging/index.js +190 -0
  177. package/dist/logging/index.js.map +1 -0
  178. package/dist/nextjs/BlockRenderer.d.ts +227 -0
  179. package/dist/nextjs/BlockRenderer.d.ts.map +1 -0
  180. package/dist/nextjs/BlockRenderer.js +358 -0
  181. package/dist/nextjs/BlockRenderer.js.map +1 -0
  182. package/dist/nextjs/ClientHomePage.d.ts +6 -0
  183. package/dist/nextjs/ClientHomePage.d.ts.map +1 -0
  184. package/dist/nextjs/ClientHomePage.js +17 -0
  185. package/dist/nextjs/ClientHomePage.js.map +1 -0
  186. package/dist/nextjs/ClientSideQwickApp.d.ts +23 -0
  187. package/dist/nextjs/ClientSideQwickApp.d.ts.map +1 -0
  188. package/dist/nextjs/ClientSideQwickApp.js +50 -0
  189. package/dist/nextjs/ClientSideQwickApp.js.map +1 -0
  190. package/dist/nextjs/DynamicQwickApp.d.ts +9 -0
  191. package/dist/nextjs/DynamicQwickApp.d.ts.map +1 -0
  192. package/dist/nextjs/DynamicQwickApp.js +19 -0
  193. package/dist/nextjs/DynamicQwickApp.js.map +1 -0
  194. package/dist/nextjs/FooterFromSettings.d.ts +6 -0
  195. package/dist/nextjs/FooterFromSettings.d.ts.map +1 -0
  196. package/dist/nextjs/FooterFromSettings.js +72 -0
  197. package/dist/nextjs/FooterFromSettings.js.map +1 -0
  198. package/dist/nextjs/FormBlockComponent.d.ts +25 -0
  199. package/dist/nextjs/FormBlockComponent.d.ts.map +1 -0
  200. package/dist/nextjs/FormBlockComponent.js +110 -0
  201. package/dist/nextjs/FormBlockComponent.js.map +1 -0
  202. package/dist/nextjs/HomePageContent.d.ts +6 -0
  203. package/dist/nextjs/HomePageContent.d.ts.map +1 -0
  204. package/dist/nextjs/HomePageContent.js +50 -0
  205. package/dist/nextjs/HomePageContent.js.map +1 -0
  206. package/dist/nextjs/LivePreviewClient.d.ts +40 -0
  207. package/dist/nextjs/LivePreviewClient.d.ts.map +1 -0
  208. package/dist/nextjs/LivePreviewClient.js +35 -0
  209. package/dist/nextjs/LivePreviewClient.js.map +1 -0
  210. package/dist/nextjs/RefreshRouteOnSave.d.ts +31 -0
  211. package/dist/nextjs/RefreshRouteOnSave.d.ts.map +1 -0
  212. package/dist/nextjs/RefreshRouteOnSave.js +59 -0
  213. package/dist/nextjs/RefreshRouteOnSave.js.map +1 -0
  214. package/dist/nextjs/ScriptsInjector.d.ts +2 -0
  215. package/dist/nextjs/ScriptsInjector.d.ts.map +1 -0
  216. package/dist/nextjs/ScriptsInjector.js +73 -0
  217. package/dist/nextjs/ScriptsInjector.js.map +1 -0
  218. package/dist/nextjs/ServerQwickApp.d.ts +13 -0
  219. package/dist/nextjs/ServerQwickApp.d.ts.map +1 -0
  220. package/dist/nextjs/ServerQwickApp.js +159 -0
  221. package/dist/nextjs/ServerQwickApp.js.map +1 -0
  222. package/dist/nextjs/SettingsProvider.d.ts +110 -0
  223. package/dist/nextjs/SettingsProvider.d.ts.map +1 -0
  224. package/dist/nextjs/SettingsProvider.js +107 -0
  225. package/dist/nextjs/SettingsProvider.js.map +1 -0
  226. package/dist/nextjs/SiteLogo.d.ts +35 -0
  227. package/dist/nextjs/SiteLogo.d.ts.map +1 -0
  228. package/dist/nextjs/SiteLogo.js +105 -0
  229. package/dist/nextjs/SiteLogo.js.map +1 -0
  230. package/dist/nextjs/framework.d.ts +19 -0
  231. package/dist/nextjs/framework.d.ts.map +1 -0
  232. package/dist/nextjs/framework.js +35 -0
  233. package/dist/nextjs/framework.js.map +1 -0
  234. package/dist/nextjs/index.d.ts +38 -0
  235. package/dist/nextjs/index.d.ts.map +1 -0
  236. package/dist/nextjs/index.js +47 -0
  237. package/dist/nextjs/index.js.map +1 -0
  238. package/dist/nextjs/metadata.d.ts +20 -0
  239. package/dist/nextjs/metadata.d.ts.map +1 -0
  240. package/dist/nextjs/metadata.js +107 -0
  241. package/dist/nextjs/metadata.js.map +1 -0
  242. package/dist/plugins/index.d.ts +2 -0
  243. package/dist/plugins/index.d.ts.map +1 -0
  244. package/dist/plugins/index.js +3 -0
  245. package/dist/plugins/index.js.map +1 -0
  246. package/dist/plugins/qwickapps-plugin.d.ts +78 -0
  247. package/dist/plugins/qwickapps-plugin.d.ts.map +1 -0
  248. package/dist/plugins/qwickapps-plugin.js +154 -0
  249. package/dist/plugins/qwickapps-plugin.js.map +1 -0
  250. package/dist/providers/PayloadDataProvider.d.ts +72 -0
  251. package/dist/providers/PayloadDataProvider.d.ts.map +1 -0
  252. package/dist/providers/PayloadDataProvider.js +222 -0
  253. package/dist/providers/PayloadDataProvider.js.map +1 -0
  254. package/dist/providers/index.d.ts +2 -0
  255. package/dist/providers/index.d.ts.map +1 -0
  256. package/dist/providers/index.js +3 -0
  257. package/dist/providers/index.js.map +1 -0
  258. package/dist/styles/admin-theme.css +352 -0
  259. package/package.json +104 -0
package/LICENSE ADDED
@@ -0,0 +1,45 @@
1
+ # QwickApps CMS License
2
+
3
+ This software is licensed under the **PolyForm Shield License 1.0.0**.
4
+
5
+ ## Summary
6
+
7
+ - **Free to use** for non-competitive purposes
8
+ - **Source code available** for learning and development
9
+ - **Cannot be used** to compete with QwickApps
10
+ - **Cannot be reverse engineered** for competitive purposes
11
+ - **Cannot be redistributed** in competitive products
12
+
13
+ ## Full License Text
14
+
15
+ See https://polyformproject.org/licenses/shield/1.0.0/ for complete terms.
16
+
17
+ ## What This Means
18
+
19
+ ### Permitted Uses:
20
+ - Internal business applications
21
+ - Learning and educational projects
22
+ - Non-competitive commercial applications
23
+ - Academic research and teaching
24
+ - Contributing to this project
25
+ - Building websites and applications using this CMS package
26
+
27
+ ### Prohibited Uses:
28
+ - Creating competing CMS frameworks
29
+ - Building competing content management systems
30
+ - Reselling or redistributing as a competing product
31
+ - Reverse engineering to create competitive products
32
+
33
+ ## Commercial Licensing
34
+
35
+ If your use case might be competitive or you need different terms, contact us at **legal@qwickapps.com** for commercial licensing options.
36
+
37
+ ## Questions?
38
+
39
+ - Email: legal@qwickapps.com
40
+ - Website: https://qwickapps.com
41
+ - Repository: https://github.com/qwickapps/qwickapps
42
+
43
+ ---
44
+
45
+ Copyright (c) 2025 QwickApps. All rights reserved.
package/README.md ADDED
@@ -0,0 +1,203 @@
1
+ # @qwickapps/cms
2
+
3
+ > Reusable Payload CMS collections, globals, and components for building QwickApps-powered websites
4
+
5
+ ## Overview
6
+
7
+ `@qwickapps/cms` is a package that provides pre-built Payload CMS configurations for creating content management systems with the QwickApps framework. It eliminates boilerplate by providing ready-to-use collections, globals, blocks, and integrations.
8
+
9
+ ## Features
10
+
11
+ - 📦 **Collections**: Pages, Posts, Media, Navigation, Forms, and more
12
+ - 🌐 **Globals**: Site Settings, Integrations, Advanced Settings
13
+ - 🧱 **Content Blocks**: Hero, Feature Grid, CTA, Forms, and 8+ other blocks
14
+ - 🔌 **Plugins**: QwickApps integration plugin
15
+ - 🎨 **Components**: Admin UI components (Logo, Dashboard, Row Labels)
16
+ - 📊 **Providers**: PayloadDataProvider for framework integration
17
+
18
+ ## Installation
19
+
20
+ ```bash
21
+ npm install @qwickapps/cms
22
+ ```
23
+
24
+ ## Usage
25
+
26
+ ### Basic Setup
27
+
28
+ ```typescript
29
+ // payload.config.ts
30
+ import { buildConfig } from 'payload';
31
+ import {
32
+ Pages,
33
+ Posts,
34
+ Media,
35
+ Users,
36
+ Navigation,
37
+ Forms,
38
+ } from '@qwickapps/cms/collections';
39
+ import {
40
+ SiteSettings,
41
+ Integrations,
42
+ AdvancedSettings,
43
+ } from '@qwickapps/cms/globals';
44
+
45
+ export default buildConfig({
46
+ collections: [Users, Pages, Posts, Media, Navigation, Forms],
47
+ globals: [SiteSettings, Integrations, AdvancedSettings],
48
+ // ... rest of your config
49
+ });
50
+ ```
51
+
52
+ ### Using Content Blocks
53
+
54
+ ```typescript
55
+ import { contentBlocks } from '@qwickapps/cms/blocks';
56
+
57
+ // In your collection config
58
+ {
59
+ name: 'content',
60
+ type: 'blocks',
61
+ blocks: contentBlocks,
62
+ }
63
+ ```
64
+
65
+ ### Using the QwickApps Plugin
66
+
67
+ ```typescript
68
+ import { qwickappsPlugin } from '@qwickapps/cms/plugins';
69
+
70
+ export default buildConfig({
71
+ plugins: [
72
+ qwickappsPlugin({
73
+ enableVisualBuilder: true,
74
+ enableAI: false,
75
+ }),
76
+ ],
77
+ });
78
+ ```
79
+
80
+ ## Collections
81
+
82
+ ### Pages
83
+ Dynamic pages with flexible content blocks and SEO metadata.
84
+
85
+ ### Posts
86
+ Blog posts with featured images, authors, categories, and tags.
87
+
88
+ ### Media
89
+ Image, video, and PDF uploads with alt text and captions.
90
+
91
+ ### Navigation
92
+ Multi-level navigation menus with icon support.
93
+
94
+ ### Forms
95
+ Custom form builder with CAPTCHA protection and submission storage.
96
+
97
+ ### Products
98
+ Product catalog with rich descriptions and pricing.
99
+
100
+ ### Users
101
+ Authentication and user management.
102
+
103
+ ## Globals
104
+
105
+ ### Site Settings
106
+ - Site information (name, description, logo)
107
+ - Contact information
108
+ - Social media links
109
+
110
+ ### Integrations
111
+ - Analytics (GA4, GTM, Facebook Pixel)
112
+ - CAPTCHA (reCAPTCHA v2/v3, hCaptcha, Turnstile)
113
+ - Email configuration (SMTP)
114
+
115
+ ### Advanced Settings
116
+ - SEO defaults
117
+ - Custom scripts (header, footer, CSS)
118
+ - Maintenance mode
119
+
120
+ ## Content Blocks
121
+
122
+ - **Hero** - Large header sections
123
+ - **Text Section** - Rich text content
124
+ - **Feature Grid** - Feature showcases
125
+ - **CTA Section** - Call-to-action sections
126
+ - **Image** - Image displays
127
+ - **Spacer** - Vertical spacing
128
+ - **Code** - Code snippets
129
+ - **Product Grid** - Product displays
130
+ - **Accordion** - Collapsible content
131
+ - **Card Grid** - Card layouts
132
+ - **Form** - Contact forms
133
+
134
+ ## Components
135
+
136
+ Admin UI components for better UX:
137
+ - `Logo` - Custom admin logo
138
+ - `Icon` - Custom admin icon
139
+ - `Dashboard` - Custom dashboard
140
+ - `BlockRowLabel` - Block row labels
141
+ - `FormFieldRowLabel` - Form field labels
142
+ - `NavigationItemRowLabel` - Navigation labels
143
+
144
+ ## Providers
145
+
146
+ ### PayloadDataProvider
147
+
148
+ Bridge between Payload CMS and QwickApps Framework:
149
+
150
+ ```typescript
151
+ import { PayloadDataProvider } from '@qwickapps/cms/providers';
152
+
153
+ const dataProvider = new PayloadDataProvider({
154
+ baseUrl: 'http://localhost:3000/api',
155
+ });
156
+ ```
157
+
158
+ ## Development
159
+
160
+ ### Building
161
+
162
+ ```bash
163
+ npm run build
164
+ ```
165
+
166
+ ### Watching
167
+
168
+ ```bash
169
+ npm run dev
170
+ ```
171
+
172
+ ## Dependencies
173
+
174
+ This package requires the following peer dependencies:
175
+
176
+ - `payload` ^3.0.0
177
+ - `@payloadcms/db-postgres` ^3.0.0
178
+ - `@payloadcms/next` ^3.0.0
179
+ - `@payloadcms/richtext-lexical` ^3.0.0
180
+ - `@qwickapps/react-framework` *
181
+ - `@qwickapps/schema` *
182
+ - `next` ^15.0.3
183
+ - `react` ^19.0.0
184
+
185
+ ## Examples
186
+
187
+ ### QwickPress
188
+
189
+ See `products/qwickpress` for a complete example of using @qwickapps/cms.
190
+
191
+ ### QwickApps Website
192
+
193
+ See `products/qwickapps/website` for a production website built with @qwickapps/cms.
194
+
195
+ ## License
196
+
197
+ Copyright (c) 2025 QwickApps.com. All rights reserved.
198
+
199
+ ## Links
200
+
201
+ - [QwickApps Framework](../../packages/qwickapps-react-framework)
202
+ - [QwickPress](../../products/qwickpress)
203
+ - [Payload CMS](https://payloadcms.com)
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Custom Label for Accordion Item Array Items
3
+ *
4
+ * Displays meaningful labels showing accordion title and expansion state
5
+ * Used in Accordion blocks
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import React from 'react';
10
+ interface AccordionItemRowLabelProps {
11
+ data?: {
12
+ title?: string;
13
+ content?: string;
14
+ defaultExpanded?: boolean;
15
+ };
16
+ rowNumber?: number;
17
+ }
18
+ export declare const AccordionItemRowLabel: React.FC<AccordionItemRowLabelProps>;
19
+ export {};
20
+ //# sourceMappingURL=AccordionItemRowLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionItemRowLabel.d.ts","sourceRoot":"","sources":["../../../src/admin/components/AccordionItemRowLabel.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,0BAA0B;IAClC,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,OAAO,CAAC;KAC3B,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAwEtE,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Custom Label for Accordion Item Array Items
3
+ *
4
+ * Displays meaningful labels showing accordion title and expansion state
5
+ * Used in Accordion blocks
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ 'use client';
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
+ export const AccordionItemRowLabel = ({ data, rowNumber = 0 }) => {
12
+ const displayIndex = String(rowNumber + 1).padStart(2, '0');
13
+ // Show error if required fields are missing
14
+ if (!data?.title) {
15
+ return (_jsx("div", { style: { color: 'orange', fontWeight: 'bold' }, children: "\u26A0\uFE0F Missing accordion title" }));
16
+ }
17
+ // Truncate content preview if provided
18
+ const contentPreview = data.content ? (typeof data.content === 'string' ? (data.content.length > 60 ? `${data.content.substring(0, 60)}...` : data.content) : '[Rich Text Content]') : null;
19
+ return (_jsxs("div", { style: {
20
+ display: 'flex',
21
+ alignItems: 'center',
22
+ gap: '8px',
23
+ fontWeight: 500,
24
+ }, children: [_jsxs("span", { style: {
25
+ color: 'var(--theme-elevation-600)',
26
+ fontSize: '14px',
27
+ fontWeight: 600,
28
+ }, children: [displayIndex, "."] }), _jsx("span", { style: { fontSize: '16px' }, children: data.defaultExpanded ? '📂' : '📁' }), _jsx("span", { style: { color: 'var(--theme-elevation-900)' }, children: data.title }), data.defaultExpanded && (_jsx("span", { style: {
29
+ fontSize: '11px',
30
+ padding: '2px 6px',
31
+ background: 'var(--theme-success-light)',
32
+ color: 'var(--theme-success-dark)',
33
+ borderRadius: '4px',
34
+ fontWeight: 600,
35
+ textTransform: 'uppercase',
36
+ }, children: "Expanded" })), contentPreview && (_jsx("span", { style: {
37
+ color: 'var(--theme-elevation-500)',
38
+ fontWeight: 400,
39
+ fontSize: '13px',
40
+ fontStyle: 'italic',
41
+ maxWidth: '300px',
42
+ overflow: 'hidden',
43
+ textOverflow: 'ellipsis',
44
+ whiteSpace: 'nowrap',
45
+ }, children: contentPreview }))] }));
46
+ };
47
+ //# sourceMappingURL=AccordionItemRowLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionItemRowLabel.js","sourceRoot":"","sources":["../../../src/admin/components/AccordionItemRowLabel.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,CAAC;;AAab,MAAM,CAAC,MAAM,qBAAqB,GAAyC,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE;IACrG,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE5D,4CAA4C;IAC5C,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;QACjB,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,qDAE7C,CACP,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CACpC,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CACjC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAChF,CAAC,CAAC,CAAC,qBAAqB,CAC1B,CAAC,CAAC,CAAC,IAAI,CAAC;IAET,OAAO,CACL,eAAK,KAAK,EAAE;YACV,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,GAAG;SAChB,aACC,gBAAM,KAAK,EAAE;oBACX,KAAK,EAAE,4BAA4B;oBACnC,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,GAAG;iBAChB,aACE,YAAY,SACR,EAEP,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,YAC9B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAC9B,EAEP,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,YACjD,IAAI,CAAC,KAAK,GACN,EAEN,IAAI,CAAC,eAAe,IAAI,CACvB,eAAM,KAAK,EAAE;oBACX,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,SAAS;oBAClB,UAAU,EAAE,4BAA4B;oBACxC,KAAK,EAAE,2BAA2B;oBAClC,YAAY,EAAE,KAAK;oBACnB,UAAU,EAAE,GAAG;oBACf,aAAa,EAAE,WAAW;iBAC3B,yBAEM,CACR,EAEA,cAAc,IAAI,CACjB,eAAM,KAAK,EAAE;oBACX,KAAK,EAAE,4BAA4B;oBACnC,UAAU,EAAE,GAAG;oBACf,QAAQ,EAAE,MAAM;oBAChB,SAAS,EAAE,QAAQ;oBACnB,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,QAAQ;oBAClB,YAAY,EAAE,UAAU;oBACxB,UAAU,EAAE,QAAQ;iBACrB,YACE,cAAc,GACV,CACR,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Custom Label for Content Blocks
3
+ *
4
+ * Displays a meaningful label for each block in the admin UI
5
+ * Centralized implementation that receives data as props
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import React from 'react';
10
+ interface BlockLabelProps {
11
+ data?: {
12
+ blockType?: string;
13
+ blockName?: string;
14
+ };
15
+ rowNumber?: number;
16
+ }
17
+ export declare const BlockRowLabel: React.FC<BlockLabelProps>;
18
+ export {};
19
+ //# sourceMappingURL=BlockRowLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockRowLabel.d.ts","sourceRoot":"","sources":["../../../src/admin/components/BlockRowLabel.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAmEnD,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Custom Label for Content Blocks
3
+ *
4
+ * Displays a meaningful label for each block in the admin UI
5
+ * Centralized implementation that receives data as props
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ 'use client';
10
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
11
+ export const BlockRowLabel = ({ data, rowNumber = 0 }) => {
12
+ // Get the block type
13
+ const blockType = data?.blockType;
14
+ // Use rowNumber directly from props
15
+ const blockIndex = rowNumber;
16
+ const displayIndex = String(blockIndex + 1).padStart(2, '0');
17
+ // Map block slugs to friendly names with emojis
18
+ const blockInfo = {
19
+ hero: { name: 'Hero Block', icon: '🎯' },
20
+ textSection: { name: 'Text Section', icon: '📝' },
21
+ featureGrid: { name: 'Feature Grid', icon: '⭐' },
22
+ ctaSection: { name: 'CTA Section', icon: '🎬' },
23
+ image: { name: 'Image', icon: '🖼️' },
24
+ spacer: { name: 'Spacer', icon: '↕️' },
25
+ code: { name: 'Code Block', icon: '💻' },
26
+ productGrid: { name: 'Product Grid', icon: '🛍️' },
27
+ accordion: { name: 'Accordion', icon: '📋' },
28
+ cardGrid: { name: 'Card Grid', icon: '🎴' },
29
+ form: { name: 'Form', icon: '📝' },
30
+ };
31
+ const info = blockInfo[blockType || ''] || { name: blockType || 'Block', icon: '📦' };
32
+ // Use blockName if user has set it, otherwise show block type name
33
+ const customName = data?.blockName;
34
+ return (_jsxs("div", { style: {
35
+ display: 'flex',
36
+ alignItems: 'center',
37
+ gap: '8px',
38
+ fontWeight: 500,
39
+ }, children: [_jsxs("span", { style: {
40
+ color: 'var(--theme-elevation-600)',
41
+ fontSize: '14px',
42
+ fontWeight: 600,
43
+ fontFamily: 'monospace',
44
+ }, children: [displayIndex, "."] }), _jsx("span", { style: { fontSize: '16px' }, children: info.icon }), _jsx("span", { style: { color: 'var(--theme-elevation-900)' }, children: info.name }), customName && (_jsxs(_Fragment, { children: [_jsx("span", { style: {
45
+ color: 'var(--theme-elevation-600)',
46
+ fontWeight: 400,
47
+ }, children: "-" }), _jsx("span", { style: {
48
+ color: 'var(--theme-elevation-800)',
49
+ fontWeight: 500,
50
+ }, children: customName })] }))] }));
51
+ };
52
+ //# sourceMappingURL=BlockRowLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BlockRowLabel.js","sourceRoot":"","sources":["../../../src/admin/components/BlockRowLabel.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,YAAY,CAAC;;AAYb,MAAM,CAAC,MAAM,aAAa,GAA8B,CAAC,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE;IAClF,qBAAqB;IACrB,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,CAAC;IAElC,oCAAoC;IACpC,MAAM,UAAU,GAAG,SAAS,CAAC;IAC7B,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE7D,gDAAgD;IAChD,MAAM,SAAS,GAAmD;QAChE,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;QACxC,WAAW,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE;QACjD,WAAW,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE;QAChD,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,EAAE;QAC/C,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;QACrC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QACtC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;QACxC,WAAW,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,KAAK,EAAE;QAClD,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;QAC5C,QAAQ,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE;QAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;KACnC,CAAC;IAEF,MAAM,IAAI,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,IAAI,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAEtF,mEAAmE;IACnE,MAAM,UAAU,GAAG,IAAI,EAAE,SAAS,CAAC;IAEnC,OAAO,CACL,eAAK,KAAK,EAAE;YACV,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,QAAQ;YACpB,GAAG,EAAE,KAAK;YACV,UAAU,EAAE,GAAG;SAChB,aACC,gBAAM,KAAK,EAAE;oBACX,KAAK,EAAE,4BAA4B;oBACnC,QAAQ,EAAE,MAAM;oBAChB,UAAU,EAAE,GAAG;oBACf,UAAU,EAAE,WAAW;iBACxB,aACE,YAAY,SACR,EACP,eAAM,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,YAC9B,IAAI,CAAC,IAAI,GACL,EACP,eAAM,KAAK,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,YACjD,IAAI,CAAC,IAAI,GACL,EACN,UAAU,IAAI,CACb,8BACE,eAAM,KAAK,EAAE;4BACX,KAAK,EAAE,4BAA4B;4BACnC,UAAU,EAAE,GAAG;yBAChB,kBAEM,EACP,eAAM,KAAK,EAAE;4BACX,KAAK,EAAE,4BAA4B;4BACnC,UAAU,EAAE,GAAG;yBAChB,YACE,UAAU,GACN,IACN,CACJ,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Custom Label for Button Array Items
3
+ *
4
+ * Displays meaningful labels showing button text, variant, and link
5
+ * Used in Hero actions, CTA buttons, and other button arrays
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import React from 'react';
10
+ interface ButtonRowLabelProps {
11
+ data?: {
12
+ label?: string;
13
+ href?: string;
14
+ variant?: string;
15
+ color?: string;
16
+ icon?: string;
17
+ endIcon?: string;
18
+ };
19
+ rowNumber?: number;
20
+ }
21
+ export declare const ButtonRowLabel: React.FC<ButtonRowLabelProps>;
22
+ export {};
23
+ //# sourceMappingURL=ButtonRowLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonRowLabel.d.ts","sourceRoot":"","sources":["../../../src/admin/components/ButtonRowLabel.tsx"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,mBAAmB;IAC3B,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAqGxD,CAAC"}
@@ -0,0 +1,63 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Custom Label for Button Array Items
4
+ *
5
+ * Displays meaningful labels showing button text, variant, and link
6
+ * Used in Hero actions, CTA buttons, and other button arrays
7
+ *
8
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
+ */
10
+ 'use client';
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { getIconEmoji } from '@qwickapps/react-framework';
13
+ export const ButtonRowLabel = ({ data, rowNumber = 0 }) => {
14
+ const displayIndex = String(rowNumber + 1).padStart(2, '0');
15
+ // Show error if required fields are missing
16
+ if (!data?.label) {
17
+ return (_jsx("div", { style: { color: 'orange', fontWeight: 'bold' }, children: "\u26A0\uFE0F Missing button label" }));
18
+ }
19
+ // Get icon emoji if provided
20
+ const startIcon = data.icon ? getIconEmoji(data.icon) : null;
21
+ const trailingIcon = data.endIcon ? getIconEmoji(data.endIcon) : null;
22
+ // Shorten href for display
23
+ const displayHref = data.href ? (data.href.length > 30 ? `${data.href.substring(0, 30)}...` : data.href) : null;
24
+ // Get variant badge color
25
+ const variantColors = {
26
+ contained: { bg: 'var(--theme-primary-light)', text: 'var(--theme-primary-dark)' },
27
+ outlined: { bg: 'var(--theme-elevation-200)', text: 'var(--theme-elevation-800)' },
28
+ text: { bg: 'var(--theme-elevation-150)', text: 'var(--theme-elevation-700)' },
29
+ };
30
+ const variant = data.variant || 'contained';
31
+ const variantStyle = variantColors[variant] || variantColors.contained;
32
+ return (_jsxs("div", { style: {
33
+ display: 'flex',
34
+ alignItems: 'center',
35
+ gap: '8px',
36
+ fontWeight: 500,
37
+ }, children: [_jsxs("span", { style: {
38
+ color: 'var(--theme-elevation-600)',
39
+ fontSize: '14px',
40
+ fontWeight: 600,
41
+ }, children: [displayIndex, "."] }), startIcon && (_jsx("span", { style: { fontSize: '16px' }, children: startIcon })), _jsx("span", { style: { color: 'var(--theme-elevation-900)' }, children: data.label }), trailingIcon && (_jsx("span", { style: { fontSize: '16px' }, children: trailingIcon })), variant && (_jsx("span", { style: {
42
+ fontSize: '11px',
43
+ padding: '2px 6px',
44
+ background: variantStyle.bg,
45
+ color: variantStyle.text,
46
+ borderRadius: '4px',
47
+ fontWeight: 600,
48
+ textTransform: 'uppercase',
49
+ }, children: variant })), data.color && data.color !== 'primary' && (_jsx("span", { style: {
50
+ fontSize: '11px',
51
+ padding: '2px 6px',
52
+ background: 'var(--theme-elevation-200)',
53
+ color: 'var(--theme-elevation-700)',
54
+ borderRadius: '4px',
55
+ fontWeight: 500,
56
+ }, children: data.color })), displayHref && (_jsxs("span", { style: {
57
+ color: 'var(--theme-elevation-600)',
58
+ fontWeight: 400,
59
+ fontSize: '13px',
60
+ fontFamily: 'monospace',
61
+ }, children: ["\u2192 ", displayHref] }))] }));
62
+ };
63
+ //# sourceMappingURL=ButtonRowLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ButtonRowLabel.js","sourceRoot":"","sources":["../../../src/admin/components/ButtonRowLabel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Custom Label for Card Array Items
3
+ *
4
+ * Displays meaningful labels showing card title, icon, and link
5
+ * Used in Card Grid blocks
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import React from 'react';
10
+ interface CardRowLabelProps {
11
+ data?: {
12
+ title?: string;
13
+ description?: string;
14
+ icon?: string;
15
+ image?: any;
16
+ link?: string;
17
+ linkText?: string;
18
+ };
19
+ rowNumber?: number;
20
+ }
21
+ export declare const CardRowLabel: React.FC<CardRowLabelProps>;
22
+ export {};
23
+ //# sourceMappingURL=CardRowLabel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardRowLabel.d.ts","sourceRoot":"","sources":["../../../src/admin/components/CardRowLabel.tsx"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAIH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,GAAG,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAmGpD,CAAC"}
@@ -0,0 +1,59 @@
1
+ // @ts-nocheck
2
+ /**
3
+ * Custom Label for Card Array Items
4
+ *
5
+ * Displays meaningful labels showing card title, icon, and link
6
+ * Used in Card Grid blocks
7
+ *
8
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
9
+ */
10
+ 'use client';
11
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
+ import { getIconEmoji } from '@qwickapps/react-framework';
13
+ export const CardRowLabel = ({ data, rowNumber = 0 }) => {
14
+ const displayIndex = String(rowNumber + 1).padStart(2, '0');
15
+ // Show error if required fields are missing
16
+ if (!data?.title) {
17
+ return (_jsx("div", { style: { color: 'orange', fontWeight: 'bold' }, children: "\u26A0\uFE0F Missing card title" }));
18
+ }
19
+ // Get icon emoji if provided
20
+ const displayIcon = data.icon ? getIconEmoji(data.icon) : null;
21
+ // Truncate description if provided
22
+ const descriptionPreview = data.description ? (data.description.length > 50 ? `${data.description.substring(0, 50)}...` : data.description) : null;
23
+ // Check if has image
24
+ const hasImage = data.image && typeof data.image === 'object';
25
+ // Shorten link for display
26
+ const displayLink = data.link ? (data.link.length > 25 ? `${data.link.substring(0, 25)}...` : data.link) : null;
27
+ return (_jsxs("div", { style: {
28
+ display: 'flex',
29
+ alignItems: 'center',
30
+ gap: '8px',
31
+ fontWeight: 500,
32
+ }, children: [_jsxs("span", { style: {
33
+ color: 'var(--theme-elevation-600)',
34
+ fontSize: '14px',
35
+ fontWeight: 600,
36
+ }, children: [displayIndex, "."] }), displayIcon && (_jsx("span", { style: { fontSize: '18px' }, children: displayIcon })), !displayIcon && hasImage && (_jsx("span", { style: { fontSize: '16px' }, children: "\uD83D\uDDBC\uFE0F" })), _jsx("span", { style: { color: 'var(--theme-elevation-900)' }, children: data.title }), data.linkText && (_jsx("span", { style: {
37
+ fontSize: '11px',
38
+ padding: '2px 6px',
39
+ background: 'var(--theme-info-light)',
40
+ color: 'var(--theme-info-dark)',
41
+ borderRadius: '4px',
42
+ fontWeight: 600,
43
+ }, children: data.linkText })), displayLink && !data.linkText && (_jsxs("span", { style: {
44
+ color: 'var(--theme-elevation-600)',
45
+ fontWeight: 400,
46
+ fontSize: '12px',
47
+ fontFamily: 'monospace',
48
+ }, children: ["\u2192 ", displayLink] })), descriptionPreview && (_jsx("span", { style: {
49
+ color: 'var(--theme-elevation-500)',
50
+ fontWeight: 400,
51
+ fontSize: '13px',
52
+ fontStyle: 'italic',
53
+ maxWidth: '250px',
54
+ overflow: 'hidden',
55
+ textOverflow: 'ellipsis',
56
+ whiteSpace: 'nowrap',
57
+ }, children: descriptionPreview }))] }));
58
+ };
59
+ //# sourceMappingURL=CardRowLabel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardRowLabel.js","sourceRoot":"","sources":["../../../src/admin/components/CardRowLabel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Content Preview Component
3
+ *
4
+ * Live preview panel that renders page/post content using QwickApps React Framework
5
+ * Shows in the admin panel alongside the content editor
6
+ *
7
+ * Copyright (c) 2025 QwickApps.com. All rights reserved.
8
+ */
9
+ import React from 'react';
10
+ import './styles/ContentPreview.css';
11
+ export declare const ContentPreview: React.FC;
12
+ //# sourceMappingURL=ContentPreview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentPreview.d.ts","sourceRoot":"","sources":["../../../src/admin/components/ContentPreview.tsx"],"names":[],"mappings":"AACA;;;;;;;GAOG;AAKH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,6BAA6B,CAAC;AAErC,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAiIlC,CAAC"}