CC.CSX 0.1.10

There is a newer version of this package available.
See the version list below for details.
dotnet add package CC.CSX --version 0.1.10                
NuGet\Install-Package CC.CSX -Version 0.1.10                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="CC.CSX" Version="0.1.10" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add CC.CSX --version 0.1.10                
#r "nuget: CC.CSX, 0.1.10"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install CC.CSX as a Cake Addin
#addin nuget:?package=CC.CSX&version=0.1.10

// Install CC.CSX as a Cake Tool
#tool nuget:?package=CC.CSX&version=0.1.10                

CC.CSX Package

About

CC.CSX provides the ability to define and render HTML structure in a declarative fashion by just using pure C#.

The idea is to have strongly typed and readable structure, for the developer to be able to easily navigate and manipulate the output, similar like JSX in the JS world.

By using implicit operators there is not need to use new HtmlNode, or unnecessary quotes and brackets, so the layout is easily readable.

  • Any attribute is a tuple of two strings(key and the value),
    • using static CC.CSX.HtmlAttributeKeys imports all the attribute keys existing in Html
  • Every Html element has its defined method with the same name as the Element
    • using CC.CSX.HtmlElements imports all the methods that create Html Elements. method that can be used

Take a look at the following example:

Div((style, "background:silver;"),
  "Hello HTML",
  H1("Hello world"),
  Article((id, "article-1"),
    P("Some content here")))

or also the alternative flavor if you like it more. (Instead of using the import using static CC.CSX.HtmlAttributeKeys if you import using static CC.CSX.HtmlAttributes you will get the same html output with)

Div(style("background:silver;"),
  "Hello HTML",
  H1("Hello world"),
  Article(id("article-1"),
    P("Some content here")))

and finally, the result is following:

<div style="background:silver;">
  Hello HTML
  <h1>
    Hello world
  </h1>
  <article id="article-1">
    <p>
      Some content here
    </p>
  </article>
</div>

How to use

Main usage would be as a Html Response builder.

For this you also need to install CC.CSX.Web package from Nuget in order to have the ToResponse() extension available.

app.MapGet("/test", () => MainPage(
  Menu(
    A((hxGet, "https://codechem.com"), "Home"),
    A((href, "/about"), "About"),
    A((href, "/contact"), "Contact")),
  Article(
    H1("Hello, World!",
      hxGet($"/api/1/halicea/short-meeting/occupied/{DateTime.Now.ToString("yyyy-MM-dd")}"),
      hxSwap("outerHTML"),
      hxTarget("#results")),
    Button("Click me!",
      hxGet("/api/1/halicea/short-meeting/occupied/2021-10-10"),
      hxSwap("outerHTML"),
      hxTarget("#results")),
    P("Welcome to your new app."),
    Code(id("results")),
    P("This is a test of the new CC.CSX library."))).ToResult());

Because just by using pure methods, in the style of JSX. Future work will include optimizations and performance improvements. Code: github.com/codechem/cc.csx

How it works

As you may have noticed, there is no type declaration anywhere, but that does not mean we are not using strong types.

The strings, and tuples are being used in the example above are converted to HtmlAttribute, and HtmlNode through implicit operators. instances so proper serialization can be performed.

Contributions or ideas are welcome.

With 💚 from CodeChem

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.
  • net7.0

    • No dependencies.
  • net8.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on CC.CSX:

Package Downloads
CC.CSX.Web

CC.CSX.Web extends CC.CSX with methods for easy creation of Html responses in APIs

CC.CSX.Htmx

CC.CSX.Htmx extends CC.CSX with tags methods for Htmx

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.1.31 129 9/2/2024
0.1.22 108 9/2/2024
0.1.20 194 2/23/2024
0.1.19 220 1/8/2024
0.1.18 258 11/14/2023
0.1.17 214 10/2/2023
0.1.16 209 9/29/2023
0.1.15 178 9/29/2023
0.1.13 175 9/27/2023
0.1.11 171 9/22/2023
0.1.10 160 9/20/2023
0.1.8 165 9/17/2023
0.1.7 127 9/17/2023