Skip to content

Commit cf9336d

Browse files
#2324 Move Html content outside of site.json file (#2331)
1 parent 011edce commit cf9336d

41 files changed

Lines changed: 887 additions & 158 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/Backend/FluentCMS.Services/MessageHandlers/PluginMessageHandler.cs

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,47 @@ private async Task CreatePlugins(PageTemplate pageTemplate, CancellationToken ca
4444

4545
await pluginService.Create(plugin, cancellationToken);
4646

47-
if (pluginTemplate.Settings != null && pluginTemplate.Settings.Count != 0)
47+
var pluginContentBasePath = System.IO.Path.Combine(ServiceConstants.SetupTemplatesFolder, pageTemplate.Template, ServiceConstants.SetupPagesFolder);
48+
49+
if (pluginTemplate.Settings != null && pluginTemplate.Settings.Count != 0)
50+
{
51+
if(pluginTemplate.Settings.TryGetValue("Template", out var template))
52+
{
53+
if (template.EndsWith(".sbn", StringComparison.OrdinalIgnoreCase))
54+
{
55+
var filePath = System.IO.Path.Combine(pluginContentBasePath, template);
56+
if (System.IO.File.Exists(filePath))
57+
{
58+
var fileContent = await System.IO.File.ReadAllTextAsync(filePath, cancellationToken);
59+
pluginTemplate.Settings["Template"] = fileContent;
60+
}
61+
}
62+
}
4863
await settingsService.Update(plugin.Id, pluginTemplate.Settings, cancellationToken);
64+
}
65+
66+
if (!string.IsNullOrEmpty(pluginTemplate.ContentPath))
67+
{
68+
var filePath = System.IO.Path.Combine(pluginContentBasePath, pluginTemplate.ContentPath);
4969

70+
if (System.IO.File.Exists(filePath))
71+
{
72+
var fileContent = await System.IO.File.ReadAllTextAsync(filePath, cancellationToken);
73+
74+
var pluginContent = new PluginContent
75+
{
76+
SiteId = pageTemplate.SiteId,
77+
PluginId = plugin.Id,
78+
Type = "TextHTMLContent",
79+
Data = new Dictionary<string, object?> {
80+
{ "Content", fileContent }
81+
}
82+
};
83+
84+
await pluginContentService.Create(pluginContent, cancellationToken);
85+
}
86+
}
87+
5088
if (pluginTemplate.Content != null)
5189
{
5290
foreach (var pluginContentTemplate in pluginTemplate.Content)
@@ -69,5 +107,4 @@ private async Task CreatePlugins(PageTemplate pageTemplate, CancellationToken ca
69107
await CreatePlugins(childPage, cancellationToken);
70108
}
71109
}
72-
73110
}

src/Backend/FluentCMS.Services/Models/PageTemplate.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ public class PageTemplate
44
{
55
public Guid Id { get; set; }
66
public Guid SiteId { get; set; }
7+
public string Template { get; set; } = default!;
78
public string Path { get; set; } = default!;
89
public string Title { get; set; } = default!;
910
public string? Layout { get; set; } = default!;

src/Backend/FluentCMS.Services/Models/PluginTemplate.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ public class PluginTemplate
1111
public int ColsMd { get; set; }
1212
public int ColsLg { get; set; }
1313
public List<Dictionary<string, object?>> Content { get; set; } = default!;
14+
public string? ContentPath { get; set; } = default!;
1415
public Dictionary<string, string> Settings { get; set; } = [];
1516
public bool Locked { get; set; } = false;
1617
public List<string> AdminRoles { get; set; } = [];

src/Backend/FluentCMS.Services/ServiceConstants.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ public static class ServiceConstants
44
{
55
public const string SetupTemplatesFolder = "Templates";
66
public const string SetupFilesFolder = "Files";
7+
public const string SetupPagesFolder = "Pages";
78
public const string SetupManifestFile = "manifest.json";
89
public const string SetupSiteTemplateFile = "site.json";
910
public const string DefaultTemplateFolder = "Templates/Default";

src/Backend/FluentCMS.Services/SiteService.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ private static void SetIds(SiteTemplate siteTemplate, IEnumerable<PluginDefiniti
229229

230230
foreach (var page in siteTemplate.Pages)
231231
{
232+
page.Template = siteTemplate.Template;
232233
SetIds(siteTemplate, page, pluginDefinitions);
233234
}
234235
}
@@ -244,6 +245,7 @@ private static void SetIds(SiteTemplate siteTemplate, PageTemplate page, IEnumer
244245
}
245246
foreach (var childPage in page.Children)
246247
{
248+
childPage.Template = siteTemplate.Template;
247249
SetIds(siteTemplate, childPage, pluginDefinitions);
248250
}
249251
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<div class="max-w-screen-xl px-4 py-8 mx-auto lg:py-16">
2+
<div class="grid items-center gap-8 mb-8 lg:mb-16 lg:gap-12 lg:grid-cols-12">
3+
<div class="col-span-12 sm:mb-6 text-center lg:mb-0">
4+
<a href="https://github.com/fluentcms/FluentCMS"
5+
class="inline-flex items-center justify-between px-1 py-1 pr-4 mb-6 text-sm text-gray-700 bg-gray-50 rounded-full dark:bg-gray-800 dark:text-white hover:bg-gray-200 dark:hover:bg-gray-700"
6+
role="alert">
7+
<span class="px-3 py-1 mr-3 text-xs text-white rounded-full bg-blue-600" data-inline-editable>New</span>
8+
<span class="text-sm font-medium" data-inline-editable>See our latest progress</span>
9+
<svg class="w-5 h-5 ml-2" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
10+
<path fill-rule="evenodd"
11+
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
12+
clip-rule="evenodd"></path>
13+
</svg>
14+
</a>
15+
<h1 class="text-center my-8 text-4xl font-extrabold leading-none tracking-tight text-gray-900 md:text-3xl xl:text-4xl dark:text-white"
16+
data-inline-editable>
17+
Welcome to FluentCMS
18+
<div class="mt-6" data-inline-editable>
19+
AI Driven ASP.NET Core Blazor Content Management System (CMS)
20+
</div>
21+
</h1>
22+
<p class="text-center max-w-xl mx-auto mb-6 font-light text-gray-500 xl:mb-8 md:text-lg xl:text-xl dark:text-gray-400"
23+
data-inline-editable>
24+
Building and managing content has never been easier. Experience the power of AI with FluentCMS.
25+
</p>
26+
<div class="flex justify-center gap-4">
27+
<img src="https://img.shields.io/github/issues/fluentcms/FluentCMS" alt="Issue count">
28+
<img class="hidden" src="https://img.shields.io/nuget/v/FluentCMS" alt="Version">
29+
<img src="https://img.shields.io/badge/version-1.2.3-blue" alt="Version">
30+
</div>
31+
<div class="pt-12">
32+
<a href="/admin"
33+
class="text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-4 lg:px-5 py-2 lg:py-2.5 mr-2 dark:bg-blue-600 dark:hover:bg-blue-700 focus:outline-none dark:focus:ring-blue-800"
34+
data-inline-editable>
35+
Open Administration
36+
</a>
37+
</div>
38+
</div>
39+
</div>
40+
</div>
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<div>
2+
<div class="inline-flex justify-center items-center mb-6 w-24 h-24 rounded-lg bg-blue-100 dark:bg-blue-900">
3+
<svg class="mx-auto w-16 h-16 text-blue-600 dark:text-blue-500" aria-hidden="true"
4+
xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" viewBox="0 0 24 24">
5+
<path
6+
d="M13.5 2c-.178 0-.356.013-.492.022l-.074.005a1 1 0 0 0-.934.998V11a1 1 0 0 0 1 1h7.975a1 1 0 0 0 .998-.934l.005-.074A7.04 7.04 0 0 0 22 10.5 8.5 8.5 0 0 0 13.5 2Z" />
7+
<path d="M11 6.025a1 1 0 0 0-1.065-.998 8.5 8.5 0 1 0 9.038 9.039A1 1 0 0 0 17.975 13H11V6.025Z" />
8+
</svg>
9+
</div>
10+
<h3 class="mb-4 text-2xl font-bold dark:text-white" data-inline-editable>
11+
DotNet Blazor Headless CMS
12+
</h3>
13+
<p class="mb-4 text-gray-500 dark:text-gray-400" data-inline-editable>
14+
Traditional CMS systems have limitations. A headless CMS provides flexibility and scalability for creating engaging user experiences. Our CMS solution offers a modern, headless architecture that enables seamless integration with modern development tools and platforms by leveraging the power of DotNet Blazor.
15+
</p>
16+
</div>
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<div>
2+
<div class="inline-flex justify-center items-center mb-6 w-24 h-24 bg-blue-100 rounded-lg dark:bg-blue-900">
3+
<svg class="mx-auto w-16 h-16 text-blue-600 dark:text-blue-500" aria-hidden="true"
4+
xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24">
5+
<path stroke="currentColor" stroke-linecap="round" stroke-width="2"
6+
d="M8.737 8.737a21.49 21.49 0 0 1 3.308-2.724m0 0c3.063-2.026 5.99-2.641 7.331-1.3 1.827 1.828.026 6.591-4.023 10.64-4.049 4.049-8.812 5.85-10.64 4.023-1.33-1.33-.736-4.218 1.249-7.253m6.083-6.11c-3.063-2.026-5.99-2.641-7.331-1.3-1.827 1.828-.026 6.591 4.023 10.64m3.308-9.34a21.497 21.497 0 0 1 3.308 2.724m2.775 3.386c1.985 3.035 2.579 5.923 1.248 7.253-1.336 1.337-4.245.732-7.295-1.275M14 12a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z" />
7+
</svg>
8+
</div>
9+
<h3 class="mb-4 text-2xl font-bold dark:text-white" data-inline-editable>
10+
AI-Driven Content Creation and Management
11+
</h3>
12+
<p class="mb-4 text-gray-500 dark:text-gray-400" data-inline-editable>
13+
Businesses can improve content efficiency with AI-driven tools. AI can identify trends, analyze audience
14+
preferences, and generate personalized content. AI-powered content management systems can automate tedious tasks
15+
such as tagging, categorization, and optimization.
16+
</p>
17+
</div>
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<div class="py-24 px-6 flex flex-col items-center justify-center gap-16">
2+
<h2 class="text-4xl" data-inline-editable>How may we assist you?</h2>
3+
<p class="text-xl" data-inline-editable>Our team is eager to support you and provide answers to any inquiries you
4+
may have.</p>
5+
<div
6+
class="bg-gray-800 border gap-4 border-gray-700 rounded-lg px-4 py-2 w-full mx-auto flex flex-col md:flex-row max-w-5xl">
7+
<a target="_blank" disabled href="#"
8+
class="hover:bg-gray-700 py-2 rounded-lg flex-1 flex items-center justify-center flex-col">
9+
<svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg">
10+
<path fill-rule="evenodd" clip-rule="evenodd"
11+
d="M48.333 24C48.333 37.2548 37.5878 48 24.333 48C11.0782 48 0.333008 37.2548 0.333008 24C0.333008 10.7452 11.0782 0 24.333 0C37.5878 0 48.333 10.7452 48.333 24ZM36.8242 20.4912C38.7611 20.4912 40.333 22.0631 40.333 24C40.333 25.4315 39.4628 26.6666 38.312 27.228C38.3681 27.5649 38.3962 27.9017 38.3962 28.2666C38.3962 33.6561 32.1365 38.007 24.3892 38.007C16.6418 38.007 10.3821 33.6561 10.3821 28.2666C10.3821 27.9017 10.4102 27.5368 10.4664 27.2C9.23127 26.6385 8.38916 25.4315 8.38916 24C8.38916 22.0631 9.96109 20.4912 11.8979 20.4912C12.8242 20.4912 13.6944 20.8842 14.312 21.4736C16.726 19.7052 20.0664 18.6105 23.7997 18.4982L25.5681 10.1333C25.6242 9.96486 25.7085 9.82451 25.8488 9.7403C25.9892 9.65609 26.1576 9.62802 26.326 9.65609L32.1365 10.8912C32.5295 10.0491 33.3716 9.48767 34.3541 9.48767C35.7295 9.48767 36.8523 10.6105 36.8523 11.9859C36.8523 13.3614 35.7295 14.4842 34.3541 14.4842C33.0067 14.4842 31.912 13.4175 31.8558 12.0982L26.6628 11.0035L25.0628 18.4982C28.712 18.6385 32.0243 19.7614 34.4102 21.4736C35.0278 20.8561 35.8699 20.4912 36.8242 20.4912ZM18.8313 24C17.4558 24 16.333 25.1228 16.333 26.4982C16.333 27.8736 17.4558 28.9964 18.8313 28.9964C20.2067 28.9964 21.3295 27.8736 21.3295 26.4982C21.3295 25.1228 20.2067 24 18.8313 24ZM24.3611 34.9193C25.3155 34.9193 28.5716 34.807 30.2839 33.0947C30.5365 32.8421 30.5365 32.4491 30.34 32.1684C30.0874 31.9157 29.6664 31.9157 29.4137 32.1684C28.319 33.235 26.0453 33.628 24.3892 33.628C22.733 33.628 20.4313 33.235 19.3646 32.1684C19.112 31.9157 18.6909 31.9157 18.4383 32.1684C18.1856 32.421 18.1856 32.8421 18.4383 33.0947C20.1225 34.7789 23.4067 34.9193 24.3611 34.9193ZM27.3365 26.4982C27.3365 27.8736 28.4593 28.9964 29.8348 28.9964C31.2102 28.9964 32.333 27.8736 32.333 26.4982C32.333 25.1228 31.2102 24 29.8348 24C28.4593 24 27.3365 25.1228 27.3365 26.4982Z"
12+
fill="white" />
13+
</svg>
14+
<span data-inline-editable>Reddit</span>
15+
</a>
16+
<a target="_blank" href="https://discord.gg/WyqYuC6YbY"
17+
class="hover:bg-gray-700 py-2 rounded-lg flex-1 flex items-center justify-center flex-col">
18+
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
19+
<path
20+
d="M40.634 8.31115C37.5747 6.90738 34.294 5.87315 30.8638 5.28081C30.8013 5.26937 30.7389 5.29794 30.7067 5.35508C30.2848 6.10551 29.8175 7.08451 29.4902 7.854C25.8008 7.30166 22.1304 7.30166 18.5166 7.854C18.1893 7.06741 17.705 6.10551 17.2811 5.35508C17.249 5.29985 17.1866 5.27128 17.1241 5.28081C13.6958 5.87126 10.4151 6.90549 7.35387 8.31115C7.32737 8.32257 7.30465 8.34164 7.28958 8.36638C1.06678 17.6631 -0.6379 26.7313 0.19836 35.6871C0.202144 35.7309 0.22674 35.7728 0.260796 35.7995C4.36642 38.8145 8.34341 40.645 12.2466 41.8582C12.309 41.8773 12.3752 41.8544 12.415 41.803C13.3383 40.5421 14.1613 39.2127 14.867 37.8146C14.9086 37.7327 14.8688 37.6356 14.7837 37.6032C13.4783 37.108 12.2352 36.5042 11.0395 35.8185C10.9449 35.7633 10.9373 35.628 11.0243 35.5632C11.2759 35.3747 11.5276 35.1785 11.7679 34.9804C11.8114 34.9443 11.872 34.9366 11.9231 34.9595C19.7786 38.546 28.2831 38.546 36.0459 34.9595C36.097 34.9347 36.1576 34.9424 36.203 34.9785C36.4433 35.1766 36.6949 35.3747 36.9484 35.5632C37.0354 35.628 37.0298 35.7633 36.9352 35.8185C35.7394 36.5175 34.4964 37.108 33.189 37.6013C33.1039 37.6337 33.0661 37.7327 33.1077 37.8146C33.8285 39.2107 34.6515 40.5402 35.5578 41.8011C35.5956 41.8544 35.6637 41.8773 35.7262 41.8582C39.6483 40.645 43.6252 38.8145 47.7309 35.7995C47.7668 35.7728 47.7895 35.7328 47.7933 35.689C48.7942 25.3351 46.117 16.3413 40.6964 8.36827C40.6832 8.34164 40.6605 8.32257 40.634 8.31115ZM16.04 30.234C13.675 30.234 11.7263 28.0627 11.7263 25.3961C11.7263 22.7295 13.6372 20.5582 16.04 20.5582C18.4617 20.5582 20.3916 22.7486 20.3538 25.3961C20.3538 28.0627 18.4428 30.234 16.04 30.234ZM31.9895 30.234C29.6245 30.234 27.6758 28.0627 27.6758 25.3961C27.6758 22.7295 29.5867 20.5582 31.9895 20.5582C34.4113 20.5582 36.3411 22.7486 36.3033 25.3961C36.3033 28.0627 34.4113 30.234 31.9895 30.234Z"
21+
fill="white" />
22+
</svg>
23+
<span data-inline-editable>Discord</span>
24+
</a>
25+
<a target="_blank" href="https://github.com/fluentcms/FluentCMS"
26+
class="hover:bg-gray-700 py-2 rounded-lg flex-1 flex items-center justify-center flex-col">
27+
<svg width="49" height="48" viewBox="0 0 49 48" fill="none" xmlns="http://www.w3.org/2000/svg">
28+
<g clip-path="url(#clip0_557_7125)">
29+
<path fill-rule="evenodd" clip-rule="evenodd"
30+
d="M24.6663 1C18.9688 1.00296 13.458 3.02092 9.11951 6.69305C4.78099 10.3652 1.89758 15.452 0.984861 21.044C0.072143 26.636 1.18962 32.3684 4.13751 37.2164C7.0854 42.0643 11.6715 45.7115 17.0756 47.5059C18.2679 47.7272 18.717 46.9883 18.717 46.36C18.717 45.7317 18.6931 43.91 18.6852 41.9184C12.0086 43.3608 10.5977 39.101 10.5977 39.101C9.50882 36.3349 7.93505 35.6078 7.93505 35.6078C5.7572 34.1299 8.098 34.1576 8.098 34.1576C10.5103 34.3275 11.7781 36.6194 11.7781 36.6194C13.9162 40.2667 17.3936 39.2116 18.7607 38.5952C18.9753 37.0501 19.5992 35.999 20.2868 35.4023C14.9534 34.8017 9.34985 32.7548 9.34985 23.6108C9.31679 21.2394 10.2018 18.9461 11.8218 17.2054C11.5754 16.6047 10.7527 14.1785 12.0563 10.8829C12.0563 10.8829 14.0712 10.2427 18.6574 13.3289C22.5911 12.2592 26.7415 12.2592 30.6752 13.3289C35.2575 10.2427 37.2684 10.8829 37.2684 10.8829C38.5759 14.1706 37.7532 16.5968 37.5068 17.2054C39.1319 18.9464 40.0188 21.2437 39.9827 23.6187C39.9827 32.7824 34.3672 34.8017 29.026 35.3905C29.8844 36.1334 30.6514 37.5836 30.6514 39.8122C30.6514 43.0051 30.6236 45.5736 30.6236 46.36C30.6236 46.9962 31.0567 47.7391 32.2728 47.5059C37.6777 45.7113 42.2642 42.0634 45.212 37.2147C48.1598 32.3659 49.2767 26.6326 48.363 21.0401C47.4492 15.4476 44.5644 10.3607 40.2244 6.68921C35.8845 3.01771 30.3725 1.00108 24.6742 1H24.6663Z"
31+
fill="white" />
32+
<path
33+
d="M9.75513 35.2643C9.70347 35.3828 9.51271 35.4184 9.35772 35.3354C9.20272 35.2524 9.08748 35.0983 9.14312 34.9758C9.19876 34.8533 9.38554 34.8217 9.54054 34.9047C9.69553 34.9876 9.81474 35.1457 9.75513 35.2643Z"
34+
fill="white" />
35+
<path
36+
d="M10.7285 36.3428C10.6462 36.384 10.552 36.3955 10.4621 36.3753C10.3722 36.3551 10.2922 36.3045 10.2357 36.2321C10.0807 36.0662 10.0489 35.837 10.1681 35.7342C10.2873 35.6315 10.5019 35.6789 10.6569 35.8449C10.8119 36.0108 10.8477 36.24 10.7285 36.3428Z"
37+
fill="white" />
38+
<path
39+
d="M11.6747 37.7141C11.5277 37.8168 11.2773 37.7141 11.1382 37.5086C11.0998 37.4717 11.0692 37.4275 11.0483 37.3786C11.0274 37.3298 11.0166 37.2772 11.0166 37.2241C11.0166 37.171 11.0274 37.1184 11.0483 37.0695C11.0692 37.0206 11.0998 36.9764 11.1382 36.9396C11.2853 36.8408 11.5357 36.9396 11.6747 37.1411C11.8138 37.3426 11.8178 37.6113 11.6747 37.7141Z"
40+
fill="white" />
41+
<path
42+
d="M12.9582 39.0415C12.8271 39.1877 12.5608 39.1482 12.3423 38.9506C12.1237 38.753 12.072 38.4843 12.2031 38.3421C12.3343 38.1998 12.6006 38.2393 12.8271 38.433C13.0536 38.6266 13.0973 38.8992 12.9582 39.0415Z"
43+
fill="white" />
44+
<path
45+
d="M14.7584 39.8163C14.6988 40.002 14.4285 40.085 14.1583 40.006C13.888 39.9269 13.7092 39.7056 13.7608 39.516C13.8125 39.3263 14.0867 39.2394 14.3609 39.3263C14.6352 39.4132 14.81 39.6227 14.7584 39.8163Z"
46+
fill="white" />
47+
<path
48+
d="M16.7217 39.9504C16.7217 40.144 16.4991 40.3099 16.213 40.3139C15.9269 40.3178 15.6924 40.1598 15.6924 39.9662C15.6924 39.7725 15.9149 39.6066 16.2011 39.6026C16.4872 39.5987 16.7217 39.7528 16.7217 39.9504Z"
49+
fill="white" />
50+
<path
51+
d="M18.5498 39.6463C18.5856 39.84 18.3869 40.0415 18.1007 40.0889C17.8146 40.1363 17.5642 40.0217 17.5284 39.8321C17.4927 39.6424 17.6993 39.4369 17.9775 39.3855C18.2557 39.3342 18.514 39.4527 18.5498 39.6463Z"
52+
fill="white" />
53+
</g>
54+
<defs>
55+
<clipPath id="clip0_557_7125">
56+
<rect width="48" height="48" fill="white" transform="translate(0.666016)" />
57+
</clipPath>
58+
</defs>
59+
</svg>
60+
<span data-inline-editable>Github</span>
61+
</a>
62+
</div>
63+
</div>
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
<div class="mb-8 lg:mb-0">
2+
<h2 class="mb-4 text-4xl tracking-tight font-extrabold text-gray-900 dark:text-white" data-inline-editable>
3+
AI-Powered Content Management
4+
</h2>
5+
<p class="mb-4 text-gray-500 sm:text-xl dark:text-gray-400" data-inline-editable>
6+
Effortlessly create, manage, and deliver content with our AI-driven platform
7+
</p>
8+
<a href="#"
9+
class="hidden items-center text-lg font-medium text-blue-600 hover:text-blue-800 dark:text-blue-500 dark:hover:text-blue-700">
10+
<span data-inline-editable>
11+
Learn more
12+
</span>
13+
<svg class="ml-1 w-6 h-6" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
14+
<path fill-rule="evenodd"
15+
d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
16+
clip-rule="evenodd"></path>
17+
</svg>
18+
</a>
19+
</div>

0 commit comments

Comments
 (0)