Skip to content
Xenoara Co

Getting started

Everything you need to use, customise and ship Xenoara Co.

What is inside

Vue 3.5.44
Two Column home page
Bold Pink colours
EB Garamond + Jost
Command first admin
22 CSS effects

Quick start

A Vite project. Install Node.js 20.19+ or 22.12+, then:

npm install
npm run dev        # http://localhost:5173, reloads as you edit
npm run build      # production build in dist/
npm run preview    # serve dist/

The app uses addresses without .html (/admin/orders). On a static host, send unknown paths to index.html: public/_redirects does it on Netlify and Cloudflare Pages; on Nginx use try_files $uri /index.html;.

Folder structure

xenoara-co/
├── index.html, package.json, vite.config.js
├── public/assets/        js (UI library), img
└── src/
    ├── main.js, App.vue, router.js, directives.js
    ├── stores/ui.js       Pinia store: theme mode, sidebar
    ├── styles/            ui.css, theme.css, template.css, effects.css
    └── pages/             one single-file component per page

Change colours, fonts and corners

Everything visual comes from the tokens in assets/css/theme.css. Change a value and every page follows:

:root {
  --wt-primary: #de1269;
  --wt-primary-rgb: 222, 18, 105;
  --wt-secondary: #f33a1b;
  --wt-accent: #1ded2c;
  --wt-radius: 0.125rem;
  --wt-font-heading: "EB Garamond", system-ui, sans-serif;
}

Dark mode: the moon button switches data-ui-theme on the <html> element and remembers the choice. Set data-ui-theme="dark" in the markup to make dark the default.

Style guide: the style guide page shows every colour with its contrast, the type, corners, components and the pictures of this template.

Design tokens: design-tokens/tokens.json has the same colours (light and dark), fonts, corners, spacing and shadows in the W3C Design Tokens format - import it into Figma with the Tokens Studio plugin, or build tokens for other platforms with Style Dictionary. design-tokens/tokens.css has them as plain CSS variables for other projects in the same brand.

Charts

The dashboard charts are drawn by Chart.js 4.5.1: tooltips on hover and touch, theme colours that follow the light/dark modes and the colour switch. Each chart is an SVG picture first (so it shows without JavaScript and in print) that carries its numbers in data-wt-chart; assets/js/charts.js turns it into a Chart.js chart. Your own chart:

<div data-wt-chart='{"type":"bar","labels":["Mon","Tue","Wed"],
  "series":[{"name":"Visits","data":[120,180,150],"color":0}]}'></div>

Types: line, bar, doughnut, radar and bubble. A series colour is a theme colour number (0 primary, 1 accent, 2 secondary, 3 info, 4 warning, 5 success, 6 danger) or any CSS colour. Charts added by your own script start with Charts.init(document).

How the Vue version works

Vue 3 single-page app built with Vite: single-file components, vue-router (one route per page) and a Pinia store. Run npm install and npm run dev.

  • Every page is a single-file component in src/pages, loaded when it is first shown; src/router.js has one route per page (the old .html addresses still work as aliases).
  • A Pinia store (src/stores/ui.js) holds the theme mode and the sidebar state; the chrome hooks are Vue directives (v-theme-toggle, v-sidebar-toggle, v-menu-search, v-example-tab, v-copy-code) in src/directives.js.
  • App.vue applies each page's direction and body class after every navigation and starts the template UI library (ui.js, data-ui-* attributes) on the new page.
  • Icons: Bootstrap Icons font. Fonts: Google Fonts (EB Garamond, Jost).

The admin menu of this template is Command first - No menu bar: a big page finder (Ctrl+K) in the top bar and quick section chips. All menus are driven by assets/js/menu.js (no dependencies, the same in every stack):

  • Collapsed menu: the collapse button turns the sidebar into icons; every icon shows its name in a tooltip on hover and on keyboard focus, and a menu group opens as a flyout panel.
  • Page finder: the search box in the admin top bar (or Ctrl + K) lists every page of the menus; type, use the arrow keys and press Enter.
  • Phones: every admin layout opens the full menu as a drawer from the menu button.
  • Colour switch: the paint bucket in the admin top bar switches the whole theme to one of 8 colour presets (remembered); a link with ?primaryPreset=teal opens a page in that colour and ?primaryPreset=default brings back the template colours. Presets live in assets/js/theme-init.js.
  • Attributes you can reuse: data-wt-tip="Label" (tooltip), data-wt-sub="#id" (menu group), data-wt-flyout="#id" (flyout panel), data-wt-pane="#id" inside data-wt-panes (tabs), data-wt-palette (page finder) and data-wt-toggle="#id" (full-screen menu).

Browser support

BrowserSupported versions
ChromeLast 2 versions (111+)
EdgeLast 2 versions (111+)
FirefoxLast 2 versions (113+)
Safari (macOS, iOS)16.4+
OperaLast 2 versions (97+)

Older browsers still show every page; only newer effects (such as @property animations) fall back to static styles.

Credits

  • Vue - MIT licence
  • Vite, Vue Router, Pinia - MIT licence
  • Chart.js - MIT licence
  • Bootstrap Icons - MIT licence
  • Google Fonts - SIL Open Font License
  • All illustrations in assets/img are original SVG artwork made for this template; their subjects are Bootstrap Icons shapes (MIT).