@skellvin/casca 1.0.1 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -61
- package/README.md.orig +136 -0
- package/dist/casca-core.css +1 -1
- package/dist/casca-extended-charts.css +1 -1
- package/dist/casca-extended-controls.css +1 -1
- package/dist/casca-extended-layout.css +1 -0
- package/dist/casca-theme-default.css +1 -1
- package/dist/casca-theme-high-contrast.css +1 -1
- package/dist/casca-theme-muted.css +1 -1
- package/dist/casca-theme-vibrant.css +1 -1
- package/dist/casca.css +1 -1
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -1,30 +1,79 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="https://codeberg.org/skell/casca/raw/branch/main/img/casca-px-header-128.png" alt="Casca" width="378" height="128">
|
|
3
|
+
<br>
|
|
4
|
+
<a href="https://www.npmjs.com/package/@skellvin/casca"><img src="https://img.shields.io/npm/v/@skellvin/casca" alt="npm"></a>
|
|
5
|
+
<a href="https://codeberg.org/skell/casca/src/branch/main/LICENSE"><img src="https://img.shields.io/npm/l/@skellvin/casca" alt="license"></a>
|
|
6
|
+
<a href="#why-casca"><img src="https://img.shields.io/badge/dependencies-0-brightgreen" alt="dependencies"></a>
|
|
7
|
+
<a href="#why-casca"><img src="https://img.shields.io/badge/runtime%20JS-0%20bytes-orange" alt="runtime JS"></a>
|
|
8
|
+
<br>
|
|
9
|
+
<a href="https://skell.codeberg.page/casca/"><strong>Live Gallery</strong></a> · <a href="#documentation"><strong>Documentation</strong></a> · <a href="https://www.npmjs.com/package/@skellvin/casca"><strong>npm</strong></a>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
---
|
|
2
13
|
|
|
3
|
-
|
|
14
|
+
## What's inside
|
|
4
15
|
|
|
5
|
-
|
|
6
|
-
[](LICENSE)
|
|
7
|
-
[](#why-casca)
|
|
8
|
-
[](#why-casca)
|
|
16
|
+
> CSS-first, no-JS data, accessibility-forward components: charts, tables, dashboards, KPIs, and controls. Zero dependencies, zero JavaScript, zero global side effects.
|
|
9
17
|
|
|
10
|
-
|
|
18
|
+
| | |
|
|
19
|
+
|---|---|
|
|
20
|
+
| **[Charts](https://skell.codeberg.page/casca/#charts)** | bar, line, area, pie/donut, progress/gauge, heatmap, scatter, waterfall, radar, candlestick |
|
|
21
|
+
| **[Controls](https://skell.codeberg.page/casca/#controls)** | switch, tabs, disclosure, filter, series toggle, range slider, slot grid, pager. Native form controls + `:has()`, no JS |
|
|
22
|
+
| **[Components](https://skell.codeberg.page/casca/#components)** | stat cards, data table (sort / filter / row-select), chips, legend, card, card-grid, toolbar, anchor-nav, toggle |
|
|
23
|
+
| **[Themes](https://skell.codeberg.page/casca/#themes)** | default, high-contrast, muted, vibrant. Swap one `<link>` to recolor everything |
|
|
11
24
|
|
|
12
|
-
|
|
25
|
+
**[Browse the live gallery](https://skell.codeberg.page/casca/)**, where every element on the page (even its own chrome) is real Casca, with copy-paste markup.
|
|
13
26
|
|
|
14
|
-
##
|
|
27
|
+
## Why Casca
|
|
28
|
+
|
|
29
|
+
- ⚡ **Zero JavaScript.** Every feature works with JS disabled. Interactivity rides on native form controls, `:checked`, `:has()`, and a server round-trip.
|
|
30
|
+
- 📦 **Zero dependencies.** A self-contained design system with nothing to audit.
|
|
31
|
+
- 🛡️ **Zero global side effects.** Scoped to `.casca-*`, with no host-page resets, no `:root { color-scheme }`, and no naming collisions. Enforced by a CSS-contract linter.
|
|
32
|
+
- 📋 **Vendorable.** It is one dependency-free CSS file. Copy it into your repo, pin the bytes, and there is no supply chain to worry about.
|
|
33
|
+
- ♿ **Accessible by default.** WCAG 2.1 AA target: semantic HTML, keyboard support, forced-colors and reduced-motion handling, and meaning never carried by color alone.
|
|
34
|
+
|
|
35
|
+
## Get it
|
|
36
|
+
|
|
37
|
+
### Vendor it (recommended)
|
|
38
|
+
|
|
39
|
+
Casca is a single, dependency-free stylesheet, so the most robust path is to copy it straight into your project. Every release attaches the bundles plus a `SHA256SUMS` to the [Codeberg release](https://codeberg.org/skell/casca/releases), so you can fetch and verify the exact bytes with no npm client and no build step:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
ver=v1.2.0
|
|
43
|
+
curl -LO "https://codeberg.org/skell/casca/releases/download/$ver/casca.css"
|
|
44
|
+
curl -LO "https://codeberg.org/skell/casca/releases/download/$ver/SHA256SUMS"
|
|
45
|
+
sha256sum --ignore-missing -c SHA256SUMS # verify what you fetched
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Drop `casca.css` into your assets, link it, and commit it. No package manager, no runtime CDN, no build, and the version is pinned in your own history. Reach for `casca-core.css` instead if you want the lean, bring-your-own-theme build.
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<link rel="stylesheet" href="/assets/casca.css">
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### npm
|
|
15
55
|
|
|
16
56
|
```bash
|
|
17
57
|
npm install @skellvin/casca
|
|
18
|
-
# or just drop a file in: https://cdn.jsdelivr.net/npm/@skellvin/casca/dist/casca.css
|
|
19
58
|
```
|
|
20
59
|
|
|
21
|
-
Rather not use npmjs.com? The same package is published to **[Codeberg Packages](https://codeberg.org/skell/-/packages)
|
|
60
|
+
Rather not use npmjs.com? The same package is published to **[Codeberg Packages](https://codeberg.org/skell/-/packages)**:
|
|
22
61
|
|
|
23
62
|
```bash
|
|
24
63
|
echo '@skellvin:registry=https://codeberg.org/api/packages/skell/npm/' >> .npmrc
|
|
25
64
|
npm install @skellvin/casca
|
|
26
65
|
```
|
|
27
66
|
|
|
67
|
+
### CDN
|
|
68
|
+
|
|
69
|
+
```html
|
|
70
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@skellvin/casca/dist/casca.css">
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Quick start
|
|
74
|
+
|
|
75
|
+
Link a bundle, then write plain HTML. This is a bar chart:
|
|
76
|
+
|
|
28
77
|
```html
|
|
29
78
|
<link rel="stylesheet" href="casca.css">
|
|
30
79
|
|
|
@@ -34,83 +83,54 @@ npm install @skellvin/casca
|
|
|
34
83
|
<div class="casca-bar-group">
|
|
35
84
|
<div class="casca-bar-item"><div class="casca-bar-value" style="--value: 60%; --color: var(--casca-color-1)"></div></div>
|
|
36
85
|
<div class="casca-bar-item"><div class="casca-bar-value" style="--value: 80%; --color: var(--casca-color-1)"></div></div>
|
|
37
|
-
<div class="casca-bar-item"><div class="casca-bar-value" style="--value: 45%; --color: var(--casca-color-1)"></div></div>
|
|
38
86
|
</div>
|
|
39
87
|
</div>
|
|
40
88
|
</div>
|
|
41
89
|
```
|
|
42
90
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
## What's inside
|
|
46
|
-
|
|
47
|
-
| | |
|
|
48
|
-
|---|---|
|
|
49
|
-
| **Charts** | bar, line, area, pie/donut, progress/gauge, heatmap, scatter, waterfall, radar, candlestick |
|
|
50
|
-
| **Data display** | [stat cards](examples/stat-card.html), [data table](examples/data-table.html) (sort / filter / row select), [chips](examples/chips.html), [legend](examples/legend.html) |
|
|
51
|
-
| **Interactions** | [series toggle](examples/series-toggle.html), [switch](examples/switch.html), [disclosure](examples/disclosure.html), [filter](examples/filter.html), [range slider](examples/range-slider.html), [slot grid](examples/slot-grid.html) (no-JS booking), [pager](examples/pager.html) — native HTML + `:has()`, no JS |
|
|
52
|
-
| **Themes** | default, high-contrast, minimal, vibrant — swap one `<link>` |
|
|
53
|
-
|
|
54
|
-
Browse the **[component gallery](examples/index.html)** for live demos and copy-paste markup.
|
|
55
|
-
|
|
56
|
-
## Why Casca
|
|
57
|
-
|
|
58
|
-
- **🚫 Zero JavaScript** — every core feature works with JS disabled; interactivity uses native form controls + a server round-trip.
|
|
59
|
-
- **📦 Zero dependencies** — a self-contained design system, no external libraries.
|
|
60
|
-
- **🎯 Zero global side effects** — scoped to `.casca-*`; no host-page resets, no `:root { color-scheme }`, no naming conflicts. Enforced by a CSS-contract linter.
|
|
61
|
-
- **♿ Accessible by default** — WCAG 2.1 AA target, semantic HTML, keyboard support, forced-colors, reduced-motion, and meaning never carried by color alone.
|
|
91
|
+
Pair any visual chart with a `.casca-data` table for the accessible text alternative; see the [Accessibility guide](https://codeberg.org/skell/casca/src/branch/main/docs/ACCESSIBILITY.md).
|
|
62
92
|
|
|
63
93
|
## Builds
|
|
64
94
|
|
|
65
|
-
|
|
95
|
+
Easily use the all-in-one `casca.css` with everything included (~10KB gzipped), or optimize with `casca-core.css` plus desired extensions and theme.
|
|
66
96
|
|
|
67
97
|
| Import | File | What |
|
|
68
98
|
|--------|------|------|
|
|
69
|
-
| `@skellvin/casca` | `casca.css` | **All-in-one
|
|
70
|
-
| `@skellvin/casca/core` | `casca-core.css` | **Lean core** (~9 KB gzip)
|
|
99
|
+
| `@skellvin/casca` | `casca.css` | **All-in-one**: core + every extension + the default theme. One `<link>`, everything. |
|
|
100
|
+
| `@skellvin/casca/core` | `casca-core.css` | **Lean core** (~9 KB gzip): the base layer (container, titles, chips, legend, pager) plus bar, line, area, pie/donut, progress/gauge, KPI stat cards, and the data table. No theme. |
|
|
71
101
|
| `@skellvin/casca/extended-charts` | `casca-extended-charts.css` | Add-on: heatmap, scatter, waterfall, radar, candlestick. |
|
|
72
|
-
| `@skellvin/casca/extended-controls` | `casca-extended-controls.css` | Add-on:
|
|
73
|
-
| `@skellvin/casca/
|
|
74
|
-
|
|
75
|
-
Extensions and themes layer on top of `casca-core.css`; `casca.css` bundles everything. Host apps with an existing design system should use **`@skellvin/casca/core`** and map their tokens into `--casca-*` — see the [Adoption guide](docs/ADOPTION.md).
|
|
102
|
+
| `@skellvin/casca/extended-controls` | `casca-extended-controls.css` | Add-on: switch, tabs, disclosure, filter, series toggle, toggle, range slider, slot grid. |
|
|
103
|
+
| `@skellvin/casca/extended-layout` | `casca-extended-layout.css` | Add-on: the page shell, card, card-grid, toolbar, anchor-nav. |
|
|
104
|
+
| `@skellvin/casca/theme-default` · `/theme-high-contrast` · `/theme-muted` · `/theme-vibrant` | `casca-theme-*.css` | Tiny (~1 KB) `--casca-*` palette overlays. Load one over `casca-core.css`. |
|
|
76
105
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
Every release attaches the six bundles plus a `SHA256SUMS` to the [Codeberg release](https://codeberg.org/skell/casca/releases), so you can fetch and verify the exact CSS without an npm client or a local build — handy for vendoring into a hermetic build:
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
ver=v1.0.1
|
|
83
|
-
curl -LO "https://codeberg.org/skell/casca/releases/download/$ver/casca-core.css"
|
|
84
|
-
curl -LO "https://codeberg.org/skell/casca/releases/download/$ver/SHA256SUMS"
|
|
85
|
-
sha256sum --ignore-missing -c SHA256SUMS # verifies just the files you fetched
|
|
86
|
-
```
|
|
106
|
+
Extensions and themes layer on top of `casca-core.css`; `casca.css` bundles them all. Want a custom theme? Use **`@skellvin/casca/core`** and map tokens into `--casca-*`. See the [Adoption guide](https://codeberg.org/skell/casca/src/branch/main/docs/ADOPTION.md).
|
|
87
107
|
|
|
88
108
|
## Browser support
|
|
89
109
|
|
|
90
|
-
Modern CSS
|
|
110
|
+
Modern CSS: `:has()`, container queries, `@property`, `color-mix()`, `accent-color`. Chrome/Edge 105+, Safari 16+, Firefox 121+, with documented graceful degradation on older versions. Full matrix in [COMPATIBILITY.md](https://codeberg.org/skell/casca/src/branch/main/docs/COMPATIBILITY.md).
|
|
91
111
|
|
|
92
112
|
## Documentation
|
|
93
113
|
|
|
94
|
-
- **[API Reference](docs/API.md)
|
|
95
|
-
- **[Adoption Guide](docs/ADOPTION.md)
|
|
96
|
-
- **[Integration Guide](docs/INTEGRATION.md)
|
|
97
|
-
- **[Accessibility Guide](docs/ACCESSIBILITY.md)
|
|
98
|
-
- **[Compatibility](docs/COMPATIBILITY.md)
|
|
99
|
-
- **[Changelog](CHANGELOG.md)
|
|
114
|
+
- **[API Reference](https://codeberg.org/skell/casca/src/branch/main/docs/API.md)**: every component, class, attribute, and custom property
|
|
115
|
+
- **[Adoption Guide](https://codeberg.org/skell/casca/src/branch/main/docs/ADOPTION.md)**: which build to use, bring-your-own-theme, when *not* to use Casca
|
|
116
|
+
- **[Integration Guide](https://codeberg.org/skell/casca/src/branch/main/docs/INTEGRATION.md)**: static no-JS render recipe plus a server-render [security contract](https://codeberg.org/skell/casca/src/branch/main/docs/INTEGRATION.md#server-render-security-contract); optional Go templates + htmx for live updates
|
|
117
|
+
- **[Accessibility Guide](https://codeberg.org/skell/casca/src/branch/main/docs/ACCESSIBILITY.md)**: the a11y contract for charts, controls, and components
|
|
118
|
+
- **[Compatibility](https://codeberg.org/skell/casca/src/branch/main/docs/COMPATIBILITY.md)**: browser support matrix and fallbacks
|
|
119
|
+
- **[Changelog](https://codeberg.org/skell/casca/src/branch/main/CHANGELOG.md)**: release history
|
|
100
120
|
|
|
101
121
|
## Development
|
|
102
122
|
|
|
103
123
|
```bash
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
124
|
+
npm install # dependencies (lightningcss)
|
|
125
|
+
npm run build # build all bundles into dist/
|
|
126
|
+
npm run lint:all # verify the scoped-CSS contract on every bundle
|
|
127
|
+
npm run dev # watch + serve examples/
|
|
108
128
|
```
|
|
109
129
|
|
|
110
130
|
## Contributing
|
|
111
131
|
|
|
112
|
-
Issues and pull requests welcome at [codeberg.org/skell/casca](https://codeberg.org/skell/casca). New primitives need docs (`docs/API.md`), an example, and passing `lint:all` on all bundles
|
|
132
|
+
Issues and pull requests welcome at [codeberg.org/skell/casca](https://codeberg.org/skell/casca). New primitives need docs (`docs/API.md`), an example, and passing `lint:all` on all bundles.
|
|
113
133
|
|
|
114
134
|
## License
|
|
115
135
|
|
|
116
|
-
[MIT](LICENSE) © skell
|
|
136
|
+
[MIT](https://codeberg.org/skell/casca/src/branch/main/LICENSE) © skell
|
package/README.md.orig
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
<img src="img/casca-px-header-128.png" alt="Casca" width="378" height="128">
|
|
3
|
+
<br>
|
|
4
|
+
<a href="https://www.npmjs.com/package/@skellvin/casca"><img src="https://img.shields.io/npm/v/@skellvin/casca" alt="npm"></a>
|
|
5
|
+
<a href="LICENSE"><img src="https://img.shields.io/npm/l/@skellvin/casca" alt="license"></a>
|
|
6
|
+
<a href="#why-casca"><img src="https://img.shields.io/badge/dependencies-0-brightgreen" alt="dependencies"></a>
|
|
7
|
+
<a href="#why-casca"><img src="https://img.shields.io/badge/runtime%20JS-0%20bytes-orange" alt="runtime JS"></a>
|
|
8
|
+
<br>
|
|
9
|
+
<a href="https://skell.codeberg.page/casca/"><strong>Live Gallery</strong></a> · <a href="#documentation"><strong>Documentation</strong></a> · <a href="https://www.npmjs.com/package/@skellvin/casca"><strong>npm</strong></a>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## What's inside
|
|
15
|
+
|
|
16
|
+
> CSS-first, no-JS data, accessibility-forward components: charts, tables, dashboards, KPIs, and controls. Zero dependencies, zero JavaScript, zero global side effects.
|
|
17
|
+
|
|
18
|
+
| | |
|
|
19
|
+
|---|---|
|
|
20
|
+
| **[Charts](https://skell.codeberg.page/casca/#charts)** | bar, line, area, pie/donut, progress/gauge, heatmap, scatter, waterfall, radar, candlestick |
|
|
21
|
+
| **[Controls](https://skell.codeberg.page/casca/#controls)** | switch, tabs, disclosure, filter, series toggle, range slider, slot grid, pager. Native form controls + `:has()`, no JS |
|
|
22
|
+
| **[Components](https://skell.codeberg.page/casca/#components)** | stat cards, data table (sort / filter / row-select), chips, legend, card, card-grid, toolbar, anchor-nav, toggle |
|
|
23
|
+
| **[Themes](https://skell.codeberg.page/casca/#themes)** | default, high-contrast, muted, vibrant. Swap one `<link>` to recolor everything |
|
|
24
|
+
|
|
25
|
+
**[Browse the live gallery](https://skell.codeberg.page/casca/)**, where every element on the page (even its own chrome) is real Casca, with copy-paste markup.
|
|
26
|
+
|
|
27
|
+
## Why Casca
|
|
28
|
+
|
|
29
|
+
- ⚡ **Zero JavaScript.** Every feature works with JS disabled. Interactivity rides on native form controls, `:checked`, `:has()`, and a server round-trip.
|
|
30
|
+
- 📦 **Zero dependencies.** A self-contained design system with nothing to audit.
|
|
31
|
+
- 🛡️ **Zero global side effects.** Scoped to `.casca-*`, with no host-page resets, no `:root { color-scheme }`, and no naming collisions. Enforced by a CSS-contract linter.
|
|
32
|
+
- 📋 **Vendorable.** It is one dependency-free CSS file. Copy it into your repo, pin the bytes, and there is no supply chain to worry about.
|
|
33
|
+
- ♿ **Accessible by default.** WCAG 2.1 AA target: semantic HTML, keyboard support, forced-colors and reduced-motion handling, and meaning never carried by color alone.
|
|
34
|
+
|
|
35
|
+
## Get it
|
|
36
|
+
|
|
37
|
+
### Vendor it (recommended)
|
|
38
|
+
|
|
39
|
+
Casca is a single, dependency-free stylesheet, so the most robust path is to copy it straight into your project. Every release attaches the bundles plus a `SHA256SUMS` to the [Codeberg release](https://codeberg.org/skell/casca/releases), so you can fetch and verify the exact bytes with no npm client and no build step:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
ver=v1.2.0
|
|
43
|
+
curl -LO "https://codeberg.org/skell/casca/releases/download/$ver/casca.css"
|
|
44
|
+
curl -LO "https://codeberg.org/skell/casca/releases/download/$ver/SHA256SUMS"
|
|
45
|
+
sha256sum --ignore-missing -c SHA256SUMS # verify what you fetched
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Drop `casca.css` into your assets, link it, and commit it. No package manager, no runtime CDN, no build, and the version is pinned in your own history. Reach for `casca-core.css` instead if you want the lean, bring-your-own-theme build.
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<link rel="stylesheet" href="/assets/casca.css">
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### npm
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
npm install @skellvin/casca
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Rather not use npmjs.com? The same package is published to **[Codeberg Packages](https://codeberg.org/skell/-/packages)**:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
echo '@skellvin:registry=https://codeberg.org/api/packages/skell/npm/' >> .npmrc
|
|
64
|
+
npm install @skellvin/casca
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### CDN
|
|
68
|
+
|
|
69
|
+
```html
|
|
70
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@skellvin/casca/dist/casca.css">
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Quick start
|
|
74
|
+
|
|
75
|
+
Link a bundle, then write plain HTML. This is a bar chart:
|
|
76
|
+
|
|
77
|
+
```html
|
|
78
|
+
<link rel="stylesheet" href="casca.css">
|
|
79
|
+
|
|
80
|
+
<div class="casca">
|
|
81
|
+
<div class="casca-title">Revenue by quarter</div>
|
|
82
|
+
<div class="casca-bar">
|
|
83
|
+
<div class="casca-bar-group">
|
|
84
|
+
<div class="casca-bar-item"><div class="casca-bar-value" style="--value: 60%; --color: var(--casca-color-1)"></div></div>
|
|
85
|
+
<div class="casca-bar-item"><div class="casca-bar-value" style="--value: 80%; --color: var(--casca-color-1)"></div></div>
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Pair any visual chart with a `.casca-data` table for the accessible text alternative; see the [Accessibility guide](docs/ACCESSIBILITY.md).
|
|
92
|
+
|
|
93
|
+
## Builds
|
|
94
|
+
|
|
95
|
+
Easily use the all-in-one `casca.css` with everything included (~10KB gzipped), or optimize with `casca-core.css` plus desired extensions and theme.
|
|
96
|
+
|
|
97
|
+
| Import | File | What |
|
|
98
|
+
|--------|------|------|
|
|
99
|
+
| `@skellvin/casca` | `casca.css` | **All-in-one**: core + every extension + the default theme. One `<link>`, everything. |
|
|
100
|
+
| `@skellvin/casca/core` | `casca-core.css` | **Lean core** (~9 KB gzip): the base layer (container, titles, chips, legend, pager) plus bar, line, area, pie/donut, progress/gauge, KPI stat cards, and the data table. No theme. |
|
|
101
|
+
| `@skellvin/casca/extended-charts` | `casca-extended-charts.css` | Add-on: heatmap, scatter, waterfall, radar, candlestick. |
|
|
102
|
+
| `@skellvin/casca/extended-controls` | `casca-extended-controls.css` | Add-on: switch, tabs, disclosure, filter, series toggle, toggle, range slider, slot grid. |
|
|
103
|
+
| `@skellvin/casca/extended-layout` | `casca-extended-layout.css` | Add-on: the page shell, card, card-grid, toolbar, anchor-nav. |
|
|
104
|
+
| `@skellvin/casca/theme-default` · `/theme-high-contrast` · `/theme-muted` · `/theme-vibrant` | `casca-theme-*.css` | Tiny (~1 KB) `--casca-*` palette overlays. Load one over `casca-core.css`. |
|
|
105
|
+
|
|
106
|
+
Extensions and themes layer on top of `casca-core.css`; `casca.css` bundles them all. Want a custom theme? Use **`@skellvin/casca/core`** and map tokens into `--casca-*`. See the [Adoption guide](docs/ADOPTION.md).
|
|
107
|
+
|
|
108
|
+
## Browser support
|
|
109
|
+
|
|
110
|
+
Modern CSS: `:has()`, container queries, `@property`, `color-mix()`, `accent-color`. Chrome/Edge 105+, Safari 16+, Firefox 121+, with documented graceful degradation on older versions. Full matrix in [COMPATIBILITY.md](docs/COMPATIBILITY.md).
|
|
111
|
+
|
|
112
|
+
## Documentation
|
|
113
|
+
|
|
114
|
+
- **[API Reference](docs/API.md)**: every component, class, attribute, and custom property
|
|
115
|
+
- **[Adoption Guide](docs/ADOPTION.md)**: which build to use, bring-your-own-theme, when *not* to use Casca
|
|
116
|
+
- **[Integration Guide](docs/INTEGRATION.md)**: static no-JS render recipe plus a server-render [security contract](docs/INTEGRATION.md#server-render-security-contract); optional Go templates + htmx for live updates
|
|
117
|
+
- **[Accessibility Guide](docs/ACCESSIBILITY.md)**: the a11y contract for charts, controls, and components
|
|
118
|
+
- **[Compatibility](docs/COMPATIBILITY.md)**: browser support matrix and fallbacks
|
|
119
|
+
- **[Changelog](CHANGELOG.md)**: release history
|
|
120
|
+
|
|
121
|
+
## Development
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npm install # dependencies (lightningcss)
|
|
125
|
+
npm run build # build all bundles into dist/
|
|
126
|
+
npm run lint:all # verify the scoped-CSS contract on every bundle
|
|
127
|
+
npm run dev # watch + serve examples/
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Contributing
|
|
131
|
+
|
|
132
|
+
Issues and pull requests welcome at [codeberg.org/skell/casca](https://codeberg.org/skell/casca). New primitives need docs (`docs/API.md`), an example, and passing `lint:all` on all bundles.
|
|
133
|
+
|
|
134
|
+
## License
|
|
135
|
+
|
|
136
|
+
[MIT](LICENSE) © skell
|