Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions .github/workflows/docs-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Test docs

on:
pull_request:
branches: [main]
workflow_dispatch:

permissions:
contents: read

jobs:
internal_links:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4'
bundler-cache: true
working-directory: docs
- run: npm ci
- run: npm run docs:build
- name: Check internal links and assets
run: |
BUNDLE_GEMFILE=docs/Gemfile bundle exec htmlproofer docs/_site \
--disable-external --no-enforce-https --ignore-empty-alt \
--swap-urls "^/voxblocks/:/" \
--checks Links,Images,Scripts
9 changes: 7 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,17 @@ jobs:
with:
node-version: 22
cache: npm
- uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4'
bundler-cache: true
working-directory: docs
- uses: actions/configure-pages@v5
- run: npm ci
- run: npm run docs:build
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: docs/.vitepress/dist
path: docs/_site

deploy:
needs: build
Expand Down
8 changes: 6 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
node_modules/
dist/
docs/.vitepress/dist/
docs/.vitepress/cache/
docs/_site/
docs/assets/
docs/_data/manifest.json
docs/.bundle/
docs/.jekyll-cache/
docs/.jekyll-metadata
storybook-static/
*.log
.DS_Store
26 changes: 17 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# VoxBlocks

Web components for [Vox Pupuli](https://voxpupuli.org) and [OpenVox](https://voxpupuli.org/openvox/) community web sites — a general-purpose design system built on web standards, to keep branding consistent across all community offerings. The default theme, "Deep Teal," is a distinct OpenVox identity rather than a copy of any one site's look, and is fully retunable via CSS custom properties.
Web components for [OpenVox](https://voxpupuli.org/openvox/) community web sites and apps — a general-purpose design system built on web standards, so branding stays consistent across every OpenVox site. The default theme, "Deep Teal," is a distinct OpenVox identity rather than a copy of any one site's look, and is fully retunable via CSS custom properties.

Because they are standard custom elements (built with [Lit](https://lit.dev)), the components work in plain HTML, Jekyll, VitePress, Vue, React — anywhere.

Expand All @@ -12,32 +12,34 @@ The component catalog, by category:
| --- | --- |
| Actions | `vox-button`, `vox-cta`, `vox-theme-toggle` |
| Forms | `vox-checkbox`, `vox-file-input`, `vox-input`, `vox-input-group`, `vox-radio-group`/`vox-radio`, `vox-select`, `vox-switch`, `vox-textarea` |
| Images | `vox-avatar`, `vox-billboard` |
| Navigation | `vox-breadcrumbs`, `vox-header`, `vox-pagination`, `vox-series-nav`, `vox-sidenav`, `vox-subnav`, `vox-tabs` |
| Images | `vox-avatar`, `vox-billboard`, `vox-icon` — 79 icons ([full set](https://openvoxproject.github.io/voxblocks/icons/)): shared UI baseline, OpenVox marketing, module registry (Forge replacement), fleet console (Puppet Enterprise replacement). `<vox-alert>`/`<vox-callout>` show one automatically; `<vox-sidenav-item>`/`<vox-card>`/`<vox-empty-state>`/`<vox-link-hub-item>` accept one via an `icon` slot |
| Navigation | `vox-breadcrumbs`, `vox-header` (collapses to a menu button below 768px), `vox-pagination`, `vox-series-nav`, `vox-sidenav` (collapses to a menu button below 768px, same as `vox-header`), `vox-subnav`, `vox-tabs`, `vox-toc` |
| Overlays | `vox-dialog`, `vox-disclosure`, `vox-dropdown` |
| Page content | `vox-accordion`, `vox-alert`, `vox-badge`, `vox-calendar-tile`, `vox-callout`, `vox-card`, `vox-cta-band`, `vox-empty-state`, `vox-footer`, `vox-grid`, `vox-hero`, `vox-link-hub`, `vox-loader`, `vox-quote`, `vox-sponsor-tier`/`vox-sponsor`, `vox-stat`, `vox-step-indicator`, `vox-timeline` |
| Utilities | Utility classes: spacing (`vox-m-*`/`vox-p-*`), typography (`vox-ts-*`, `vox-text-*`), color (`vox-color-*`, `vox-bg-*`), border, display, flex, gap, shadow, visibility (incl. `vox-sr-only` and responsive hiding), width, z-index — plus `.vox-table`/`.vox-table-wrap`, `.vox-list`, and `.vox-prose` |
| Utilities | Utility classes: spacing (`vox-m-*`/`vox-p-*`), a `vox-container` layout wrapper (1280px, centered, matches `vox-header`/`vox-footer`), typography (`vox-ts-*`, `vox-text-*`), color (`vox-color-*`, `vox-bg-*`, plus an extended `vox-color-{hue}-{100-900}`/`vox-bg-{hue}-{100-900}` palette across 7 hues), border, display, flex, gap, shadow, visibility (incl. `vox-sr-only` and responsive hiding), width, z-index — plus `.vox-table`/`.vox-table-wrap`, `.vox-list`, and `.vox-prose` |

Form controls are form-associated custom elements (ElementInternals): they submit values, files, and validity with a plain `<form>` like native inputs.

The docs also include a [Layouts](https://openvoxproject.github.io/voxblocks/layouts/) section — six full-page starting points (basic content page, marketing page, docs with sidenav, blog article, sidebar app shell, dashboard) built entirely from the components above, each with copy-pasteable HTML.

## Usage

With a bundler:

```sh
npm install @avitacco/voxblocks
npm install @openvoxproject/voxblocks
```

```js
import '@avitacco/voxblocks';
import '@avitacco/voxblocks/voxblocks.css';
import '@openvoxproject/voxblocks';
import '@openvoxproject/voxblocks/voxblocks.css';
```

Without a build step (Lit bundled in):

```html
<link rel="stylesheet" href="https://unpkg.com/@avitacco/voxblocks/dist/cdn/voxblocks.css">
<script type="module" src="https://unpkg.com/@avitacco/voxblocks/dist/cdn/voxblocks.js"></script>
<link rel="stylesheet" href="https://unpkg.com/@openvoxproject/voxblocks/dist/cdn/voxblocks.css">
<script type="module" src="https://unpkg.com/@openvoxproject/voxblocks/dist/cdn/voxblocks.js"></script>
```

Then:
Expand All @@ -50,8 +52,14 @@ Then:

## Development

The docs site (`docs/`) is a Jekyll site — same stack as the [OpenVox marketing site](https://github.com/OpenVoxProject/openvoxproject.github.io) — so it needs Ruby 3.4+ and [Bundler](https://bundler.io) in addition to Node, and its own gem install:

```sh
npm install
cd docs && BUNDLE_GEMFILE=Gemfile bundle install && cd ..
```

```sh
npm run docs:dev # component docs & live playground
npm run storybook # per-component Storybook, one story per documented example
npm run build # build npm + CDN bundles and type declarations
Expand Down
139 changes: 0 additions & 139 deletions docs/.vitepress/config.ts

This file was deleted.

12 changes: 0 additions & 12 deletions docs/.vitepress/theme/index.ts

This file was deleted.

8 changes: 8 additions & 0 deletions docs/Gemfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
source "https://rubygems.org"

gem "jekyll", "~> 4.4"
gem "rouge"

group :development do
gem "html-proofer", "~> 5.0"
end
Loading
Loading