Files
WRNexusJS/examples/basic-app
Clintchiz cc98bccd6c
Quality / quality (ubuntu-latest) (push) Failing after 12m30s
Quality / quality (windows-latest) (push) Canceled after 0s
@
feat(ui): add DataTable and Toaster, drop the legacy Table, fix overlay dialogs

DataTable replaces the 20-line Table scaffold entirely: columns, sorting,
filtering, pagination, selection, bulk actions, comparison layout, sticky
first column, custom HTML cells, and a remote source driven by a `request`
output rather than a function prop (props travel as HTML attributes, so a
function arrives as its own source text).

Toaster replaces the hand-rolled status div: tone icons, actions, hover
pause/resume and a progress bar.

Overlays audit -- Modal and Drawer declared aria-modal="true" but nothing
ever moved focus into the panel, so the @keydown handler on their root
never ran and closeOnEscape did nothing. Focus, focus restore, a Tab trap
and a body scroll lock now live in the reactive runtime, shared by both.

ContextMenu placed pointer menus by subtracting a guessed 340x420 from the
viewport, which pushed every menu that was not that size away from the
pointer; it now positions at the pointer and lets the anchored clamp pull
it back once it can be measured.

The reactive runtime size budget moves 150k -> 175k to cover anchored
overlays, dialog behaviour, the toaster and the DataTable client half.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@
2026-08-07 14:57:17 +05:30
..
@
2026-08-07 14:57:17 +05:30
2026-08-02 23:18:51 +05:30
2026-08-02 23:18:51 +05:30
2026-07-12 15:55:18 +05:30
2026-08-02 23:18:51 +05:30
2026-07-12 15:55:18 +05:30
2026-08-01 10:04:42 +05:30
2026-08-01 10:04:42 +05:30
2026-08-02 23:18:51 +05:30
2026-07-12 15:55:18 +05:30
2026-08-02 23:18:51 +05:30
2026-08-02 23:18:51 +05:30
2026-08-01 10:04:42 +05:30
2026-07-12 15:55:18 +05:30
2026-08-02 23:18:51 +05:30
2026-08-02 23:18:51 +05:30
2026-08-02 23:18:51 +05:30
2026-07-12 15:55:18 +05:30
2026-08-02 23:18:51 +05:30
2026-07-12 15:55:18 +05:30
2026-08-02 23:18:51 +05:30

basic-app

The reference app for WrNexus. Demonstrates every MVP feature.

app/
  pages/index.wrn       ->  GET /          (SSR + two counter components w/ props)
  pages/about.wrn       ->  GET /about     (pure SSR, zero JS)
  pages/reactive.wrn    ->  GET /reactive  (reactive directives, no component)
  pages/hello.wrn       ->  GET /hello     (.wrn language, compiled reactive page)
  api/hello.ts           ->  GET /api/hello
  api/echo.ts            ->  GET|POST /api/echo
  middleware/auth.ts     ->  runs first (alphabetical)
  middleware/logger.ts   ->  runs second
  realtime/chat.ts       ->  ws /realtime/chat
  components/counter.wrn ->  server-rendered component: data-component="counter"
  styles/global.css      ->  global stylesheet -> /__wrnexus/styles.css (every page)
public/
  favicon.ico          ->  framework default if this file is absent
  robots.txt           ->  GET /robots.txt
  site.webmanifest     ->  GET /site.webmanifest
wrnexus.config.ts         ->  global SEO + head injection + CSS processor + security/CORS config

wrnexus.config.ts shows global SEO defaults, how to use a CSS framework via CDN (head), or a real Tailwind/PostCSS build (styles.process). It also enables example CORS origins and documents the default security headers. To use an npm framework, @import it in app/styles/global.css.

app/pages/hello.wrn demonstrates a page-level .wrn seo block plus direct .wrn access to cookies, session, and the CSR localStorage snapshot.

Run from the repo root:

bun install
bun run dev      # serves this app at http://localhost:3000