ui
The @xvii shadcn registry (ADR 0007). Stage 1. Source in the ui repo, built with shadcn build and
published as a pages site at ui.<d> (ui.<d>/r/<item>.json). Items are built from upstream shadcn
components and extracted from pages' panel.
| Item |
What |
app-shell |
sidebar layout, header, service switcher, team switcher, account menu, theme and language toggles, ⌘K slot |
auth |
OIDC session handling for panels: useSession, redirect to sign-in, sign-out, team context |
api |
fetch wrapper with the API error shape, TanStack Query setup, team header |
i18n |
I18nProvider, useI18n, useFormat (dates, sizes, durations, numbers), en/ru base strings |
data-table |
TanStack Table with sorting, filters, pagination, mobile item lists (renderMobile) |
responsive-dialog |
dialog on desktop, drawer on phones |
confirm-dialog, copy-field, qr-code, ttl-select, empty-state, stats-cards, activity-list, code-block, log-viewer, usage-chart |
the shared pieces every service needs |
Panels add "registries": {"@xvii": "https://ui.<d>/r/{name}.json"} to components.json and install
with pnpm dlx shadcn@latest add @xvii/app-shell. Items land in src/components/xvii/; the theme
provider is the upstream one at src/components/theme-provider.tsx (shadcn's sonner imports it from
there). A panel spreads xviiEn / xviiRu into its dictionaries and wraps the app in I18nProvider
(with its dictionaries) and ThemeProvider. The demo at ui.<d> uses every item. Live since stage 1:
app-shell, command-menu, i18n, theme, language-toggle, data-table, responsive-dialog,
confirm-dialog, copy-field, qr-code, qr-dialog, ttl-select, stats-cards; auth, api,
empty-state, activity-list, code-block, log-viewer, usage-chart come with their first user.