@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.
- package/LICENSE +45 -0
- package/README.md +203 -0
- package/dist/admin/components/AccordionItemRowLabel.d.ts +20 -0
- package/dist/admin/components/AccordionItemRowLabel.d.ts.map +1 -0
- package/dist/admin/components/AccordionItemRowLabel.js +47 -0
- package/dist/admin/components/AccordionItemRowLabel.js.map +1 -0
- package/dist/admin/components/BlockRowLabel.d.ts +19 -0
- package/dist/admin/components/BlockRowLabel.d.ts.map +1 -0
- package/dist/admin/components/BlockRowLabel.js +52 -0
- package/dist/admin/components/BlockRowLabel.js.map +1 -0
- package/dist/admin/components/ButtonRowLabel.d.ts +23 -0
- package/dist/admin/components/ButtonRowLabel.d.ts.map +1 -0
- package/dist/admin/components/ButtonRowLabel.js +63 -0
- package/dist/admin/components/ButtonRowLabel.js.map +1 -0
- package/dist/admin/components/CardRowLabel.d.ts +23 -0
- package/dist/admin/components/CardRowLabel.d.ts.map +1 -0
- package/dist/admin/components/CardRowLabel.js +59 -0
- package/dist/admin/components/CardRowLabel.js.map +1 -0
- package/dist/admin/components/ContentPreview.d.ts +12 -0
- package/dist/admin/components/ContentPreview.d.ts.map +1 -0
- package/dist/admin/components/ContentPreview.js +95 -0
- package/dist/admin/components/ContentPreview.js.map +1 -0
- package/dist/admin/components/Dashboard.d.ts +13 -0
- package/dist/admin/components/Dashboard.d.ts.map +1 -0
- package/dist/admin/components/Dashboard.js +7 -0
- package/dist/admin/components/Dashboard.js.map +1 -0
- package/dist/admin/components/DashboardContent.d.ts +11 -0
- package/dist/admin/components/DashboardContent.d.ts.map +1 -0
- package/dist/admin/components/DashboardContent.js +129 -0
- package/dist/admin/components/DashboardContent.js.map +1 -0
- package/dist/admin/components/FormFieldRowLabel.d.ts +21 -0
- package/dist/admin/components/FormFieldRowLabel.d.ts.map +1 -0
- package/dist/admin/components/FormFieldRowLabel.js +47 -0
- package/dist/admin/components/FormFieldRowLabel.js.map +1 -0
- package/dist/admin/components/Icon.d.ts +10 -0
- package/dist/admin/components/Icon.d.ts.map +1 -0
- package/dist/admin/components/Icon.js +16 -0
- package/dist/admin/components/Icon.js.map +1 -0
- package/dist/admin/components/Logo.d.ts +10 -0
- package/dist/admin/components/Logo.d.ts.map +1 -0
- package/dist/admin/components/Logo.js +16 -0
- package/dist/admin/components/Logo.js.map +1 -0
- package/dist/admin/components/NavigationItemRowLabel.d.ts +21 -0
- package/dist/admin/components/NavigationItemRowLabel.d.ts.map +1 -0
- package/dist/admin/components/NavigationItemRowLabel.js +43 -0
- package/dist/admin/components/NavigationItemRowLabel.js.map +1 -0
- package/dist/admin/components/NavigationSubItemRowLabel.d.ts +19 -0
- package/dist/admin/components/NavigationSubItemRowLabel.d.ts.map +1 -0
- package/dist/admin/components/NavigationSubItemRowLabel.js +32 -0
- package/dist/admin/components/NavigationSubItemRowLabel.js.map +1 -0
- package/dist/admin/components/PagesListHeader.d.ts +13 -0
- package/dist/admin/components/PagesListHeader.d.ts.map +1 -0
- package/dist/admin/components/PagesListHeader.js +48 -0
- package/dist/admin/components/PagesListHeader.js.map +1 -0
- package/dist/admin/components/ProductsListHeader.d.ts +13 -0
- package/dist/admin/components/ProductsListHeader.d.ts.map +1 -0
- package/dist/admin/components/ProductsListHeader.js +55 -0
- package/dist/admin/components/ProductsListHeader.js.map +1 -0
- package/dist/admin/components/styles/CollectionListHeader.css +161 -0
- package/dist/admin/components/styles/ContentPreview.css +416 -0
- package/dist/admin/components/styles/Dashboard.css +338 -0
- package/dist/admin/fields/ColorInput.d.ts +13 -0
- package/dist/admin/fields/ColorInput.d.ts.map +1 -0
- package/dist/admin/fields/ColorInput.js +201 -0
- package/dist/admin/fields/ColorInput.js.map +1 -0
- package/dist/admin/fields/index.d.ts +9 -0
- package/dist/admin/fields/index.d.ts.map +1 -0
- package/dist/admin/fields/index.js +9 -0
- package/dist/admin/fields/index.js.map +1 -0
- package/dist/admin/index.d.ts +24 -0
- package/dist/admin/index.d.ts.map +1 -0
- package/dist/admin/index.js +30 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/blocks/ContentBlocks.d.ts +75 -0
- package/dist/blocks/ContentBlocks.d.ts.map +1 -0
- package/dist/blocks/ContentBlocks.js +1241 -0
- package/dist/blocks/ContentBlocks.js.map +1 -0
- package/dist/blocks/index.d.ts +2 -0
- package/dist/blocks/index.d.ts.map +1 -0
- package/dist/blocks/index.js +3 -0
- package/dist/blocks/index.js.map +1 -0
- package/dist/client/PayloadAPIClient.d.ts +65 -0
- package/dist/client/PayloadAPIClient.d.ts.map +1 -0
- package/dist/client/PayloadAPIClient.js +167 -0
- package/dist/client/PayloadAPIClient.js.map +1 -0
- package/dist/collections/Automations.d.ts +12 -0
- package/dist/collections/Automations.d.ts.map +1 -0
- package/dist/collections/Automations.js +741 -0
- package/dist/collections/Automations.js.map +1 -0
- package/dist/collections/Features.d.ts +3 -0
- package/dist/collections/Features.d.ts.map +1 -0
- package/dist/collections/Features.js +69 -0
- package/dist/collections/Features.js.map +1 -0
- package/dist/collections/Footer.d.ts +11 -0
- package/dist/collections/Footer.d.ts.map +1 -0
- package/dist/collections/Footer.js +130 -0
- package/dist/collections/Footer.js.map +1 -0
- package/dist/collections/FormSubmissions.d.ts +3 -0
- package/dist/collections/FormSubmissions.d.ts.map +1 -0
- package/dist/collections/FormSubmissions.js +119 -0
- package/dist/collections/FormSubmissions.js.map +1 -0
- package/dist/collections/Forms.d.ts +16 -0
- package/dist/collections/Forms.d.ts.map +1 -0
- package/dist/collections/Forms.js +308 -0
- package/dist/collections/Forms.js.map +1 -0
- package/dist/collections/HeroBlocks.d.ts +3 -0
- package/dist/collections/HeroBlocks.d.ts.map +1 -0
- package/dist/collections/HeroBlocks.js +115 -0
- package/dist/collections/HeroBlocks.js.map +1 -0
- package/dist/collections/Media.d.ts +3 -0
- package/dist/collections/Media.d.ts.map +1 -0
- package/dist/collections/Media.js +26 -0
- package/dist/collections/Media.js.map +1 -0
- package/dist/collections/Navigation.d.ts +3 -0
- package/dist/collections/Navigation.d.ts.map +1 -0
- package/dist/collections/Navigation.js +106 -0
- package/dist/collections/Navigation.js.map +1 -0
- package/dist/collections/Pages.d.ts +3 -0
- package/dist/collections/Pages.d.ts.map +1 -0
- package/dist/collections/Pages.js +94 -0
- package/dist/collections/Pages.js.map +1 -0
- package/dist/collections/Posts.d.ts +3 -0
- package/dist/collections/Posts.d.ts.map +1 -0
- package/dist/collections/Posts.js +134 -0
- package/dist/collections/Posts.js.map +1 -0
- package/dist/collections/Products.d.ts +3 -0
- package/dist/collections/Products.d.ts.map +1 -0
- package/dist/collections/Products.js +264 -0
- package/dist/collections/Products.js.map +1 -0
- package/dist/collections/Users.d.ts +3 -0
- package/dist/collections/Users.d.ts.map +1 -0
- package/dist/collections/Users.js +53 -0
- package/dist/collections/Users.js.map +1 -0
- package/dist/collections/hooks/index.d.ts +9 -0
- package/dist/collections/hooks/index.d.ts.map +1 -0
- package/dist/collections/hooks/index.js +9 -0
- package/dist/collections/hooks/index.js.map +1 -0
- package/dist/collections/hooks/loggingHooks.d.ts +45 -0
- package/dist/collections/hooks/loggingHooks.d.ts.map +1 -0
- package/dist/collections/hooks/loggingHooks.js +109 -0
- package/dist/collections/hooks/loggingHooks.js.map +1 -0
- package/dist/collections/index.d.ts +14 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js +16 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +4 -0
- package/dist/components/index.js.map +1 -0
- package/dist/globals/AdvancedSettings.d.ts +8 -0
- package/dist/globals/AdvancedSettings.d.ts.map +1 -0
- package/dist/globals/AdvancedSettings.js +157 -0
- package/dist/globals/AdvancedSettings.js.map +1 -0
- package/dist/globals/Integrations.d.ts +8 -0
- package/dist/globals/Integrations.d.ts.map +1 -0
- package/dist/globals/Integrations.js +270 -0
- package/dist/globals/Integrations.js.map +1 -0
- package/dist/globals/SiteSettings.d.ts +8 -0
- package/dist/globals/SiteSettings.d.ts.map +1 -0
- package/dist/globals/SiteSettings.js +258 -0
- package/dist/globals/SiteSettings.js.map +1 -0
- package/dist/globals/ThemeSettings.d.ts +11 -0
- package/dist/globals/ThemeSettings.d.ts.map +1 -0
- package/dist/globals/ThemeSettings.js +92 -0
- package/dist/globals/ThemeSettings.js.map +1 -0
- package/dist/globals/index.d.ts +5 -0
- package/dist/globals/index.d.ts.map +1 -0
- package/dist/globals/index.js +6 -0
- package/dist/globals/index.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/index.d.ts +73 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +190 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/nextjs/BlockRenderer.d.ts +227 -0
- package/dist/nextjs/BlockRenderer.d.ts.map +1 -0
- package/dist/nextjs/BlockRenderer.js +358 -0
- package/dist/nextjs/BlockRenderer.js.map +1 -0
- package/dist/nextjs/ClientHomePage.d.ts +6 -0
- package/dist/nextjs/ClientHomePage.d.ts.map +1 -0
- package/dist/nextjs/ClientHomePage.js +17 -0
- package/dist/nextjs/ClientHomePage.js.map +1 -0
- package/dist/nextjs/ClientSideQwickApp.d.ts +23 -0
- package/dist/nextjs/ClientSideQwickApp.d.ts.map +1 -0
- package/dist/nextjs/ClientSideQwickApp.js +50 -0
- package/dist/nextjs/ClientSideQwickApp.js.map +1 -0
- package/dist/nextjs/DynamicQwickApp.d.ts +9 -0
- package/dist/nextjs/DynamicQwickApp.d.ts.map +1 -0
- package/dist/nextjs/DynamicQwickApp.js +19 -0
- package/dist/nextjs/DynamicQwickApp.js.map +1 -0
- package/dist/nextjs/FooterFromSettings.d.ts +6 -0
- package/dist/nextjs/FooterFromSettings.d.ts.map +1 -0
- package/dist/nextjs/FooterFromSettings.js +72 -0
- package/dist/nextjs/FooterFromSettings.js.map +1 -0
- package/dist/nextjs/FormBlockComponent.d.ts +25 -0
- package/dist/nextjs/FormBlockComponent.d.ts.map +1 -0
- package/dist/nextjs/FormBlockComponent.js +110 -0
- package/dist/nextjs/FormBlockComponent.js.map +1 -0
- package/dist/nextjs/HomePageContent.d.ts +6 -0
- package/dist/nextjs/HomePageContent.d.ts.map +1 -0
- package/dist/nextjs/HomePageContent.js +50 -0
- package/dist/nextjs/HomePageContent.js.map +1 -0
- package/dist/nextjs/LivePreviewClient.d.ts +40 -0
- package/dist/nextjs/LivePreviewClient.d.ts.map +1 -0
- package/dist/nextjs/LivePreviewClient.js +35 -0
- package/dist/nextjs/LivePreviewClient.js.map +1 -0
- package/dist/nextjs/RefreshRouteOnSave.d.ts +31 -0
- package/dist/nextjs/RefreshRouteOnSave.d.ts.map +1 -0
- package/dist/nextjs/RefreshRouteOnSave.js +59 -0
- package/dist/nextjs/RefreshRouteOnSave.js.map +1 -0
- package/dist/nextjs/ScriptsInjector.d.ts +2 -0
- package/dist/nextjs/ScriptsInjector.d.ts.map +1 -0
- package/dist/nextjs/ScriptsInjector.js +73 -0
- package/dist/nextjs/ScriptsInjector.js.map +1 -0
- package/dist/nextjs/ServerQwickApp.d.ts +13 -0
- package/dist/nextjs/ServerQwickApp.d.ts.map +1 -0
- package/dist/nextjs/ServerQwickApp.js +159 -0
- package/dist/nextjs/ServerQwickApp.js.map +1 -0
- package/dist/nextjs/SettingsProvider.d.ts +110 -0
- package/dist/nextjs/SettingsProvider.d.ts.map +1 -0
- package/dist/nextjs/SettingsProvider.js +107 -0
- package/dist/nextjs/SettingsProvider.js.map +1 -0
- package/dist/nextjs/SiteLogo.d.ts +35 -0
- package/dist/nextjs/SiteLogo.d.ts.map +1 -0
- package/dist/nextjs/SiteLogo.js +105 -0
- package/dist/nextjs/SiteLogo.js.map +1 -0
- package/dist/nextjs/framework.d.ts +19 -0
- package/dist/nextjs/framework.d.ts.map +1 -0
- package/dist/nextjs/framework.js +35 -0
- package/dist/nextjs/framework.js.map +1 -0
- package/dist/nextjs/index.d.ts +38 -0
- package/dist/nextjs/index.d.ts.map +1 -0
- package/dist/nextjs/index.js +47 -0
- package/dist/nextjs/index.js.map +1 -0
- package/dist/nextjs/metadata.d.ts +20 -0
- package/dist/nextjs/metadata.d.ts.map +1 -0
- package/dist/nextjs/metadata.js +107 -0
- package/dist/nextjs/metadata.js.map +1 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +3 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/qwickapps-plugin.d.ts +78 -0
- package/dist/plugins/qwickapps-plugin.d.ts.map +1 -0
- package/dist/plugins/qwickapps-plugin.js +154 -0
- package/dist/plugins/qwickapps-plugin.js.map +1 -0
- package/dist/providers/PayloadDataProvider.d.ts +72 -0
- package/dist/providers/PayloadDataProvider.d.ts.map +1 -0
- package/dist/providers/PayloadDataProvider.js +222 -0
- package/dist/providers/PayloadDataProvider.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +3 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/styles/admin-theme.css +352 -0
- 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"}
|