Semantic structure
Use the documented Xshna classes with semantic HTML rather than replacing native elements unnecessarily.
Compose existing xsh- classes on the appropriate HTML element. Keep content order meaningful when CSS is disabled.
Budgeting CSS, JS and runtime impact. Practical engineering and integration guidance for serious commercial applications.
Use only xshna-core.css and xshna-components.css when your application does not need utility classes. Add xshna-utilities.css when using utility names. The complete xshna.min.css is the easiest option; optimize later with Extract only when actual page coverage warrants it.
Measure critical CSS bytes compressed and uncompressed, JavaScript transfer and parse/execute time, style recalculation, layout shifts, Interaction to Next Paint, Largest Contentful Paint and memory growth in a representative application. Test low-end Android as well as desktop.
Serve immutable assets from versioned filenames or cache-busted paths. CSS and JS must use matching framework versions. Configure MIME types: text/css for CSS, text/javascript or application/javascript for JS, image/svg+xml for the optional sprite.
The shipped examples and icon gallery now embed small SVG paths directly to eliminate external sprite lookup failures. The optional xshna-icons.js generates allowlisted inline icons on [data-xsh-icon] placeholders. The sprite remains available for developers using a same-origin HTTP(S) URL.
python3 scripts/release.py
python3 -m unittest discover -s tests -v
sha256sum -c SHA256SUMS| Surface | Source of truth | What to check |
|---|---|---|
dist/xshna.min.css | Compiled framework | Styling and responsive behavior |
dist/xshna.min.js | Optional interactions | Lifecycle, event handling and teardown |
src/css/ | Readable source | Public class names and token definitions |
src/contracts/ | Published component contracts where available | State, configuration and behavioral support |
Use the documented Xshna classes with semantic HTML rather than replacing native elements unnecessarily.
Compose existing xsh- classes on the appropriate HTML element. Keep content order meaningful when CSS is disabled.
Verify focus order, disabled behavior and descriptive labels for interactive patterns.
Load xshna.min.js only if the documented interaction needs it. Your application remains responsible for data, persistence and business rules.
Test narrow containers, long translations and user-defined text sizes.
Test 320px-wide viewports, container-constrained instances, keyboard zoom, longer translations and right-to-left text where relevant.
Use --xsh-* CSS variables for theme values and data-xsh-design / data-xsh-density on the xsh-app root.
Prefer design tokens over hard-coded overrides so components remain coherent across personalities.