New `./chrome` entrypoint exporting `<AdminShell>` and the header
components (Search, SearchHistory, SearchOptions, Messages, BrowseApps,
HeaderCustomers, HeaderContacts, LogoutButton). Refactored from the
Chronos-style AdminShell that gscCRM was vendoring byte-for-byte —
header/footer/sidebar are now a single shared surface across apps.
Explicit props contract (no site-informations.json, no internal data
sources): `menus`, `apps`, `user`, `brand` are required; `features.*`
flags gate every section (search/browseApps/messages/notifications/
subbar*/pageHeader*/activityPanel/chat/footer); `slots.*` lets apps
inject content; `labels` overrides the next-intl "chrome" namespace.
Locale-aware navigation: chrome calls useLocale() and prepends
/{locale} to internal menu URLs, leaving externals (http(s)://…) and
the "#" sentinel alone. Breadcrumbs and the path-derived page title
strip the leading locale segment so they read "Contacts" not
"En › Contacts". Necessary for `localePrefix: 'always'` consumers like
gscCRM.
Phosphor 2.x icons: `normalizeIconClass` prepends the base `ph` class
(compound selectors `.ph.ph-house:before` require both). All hardcoded
`<i className="ph-…">` sites switched to `ph ph-…`.
`next-intl` and `next-auth` moved to peerDependencies (with devDep
copies for the kit's own typecheck/build). Consumers must symlink their
installed copies into the kit's node_modules at build time — otherwise
useTranslations()/useSession() bind to a separate React context and
next-intl throws Error(void 0) on render.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
17 lines
573 B
TypeScript
17 lines
573 B
TypeScript
// @gsc/web-kit — top-level re-exports.
|
|
//
|
|
// Prefer the sub-exports (`@gsc/web-kit/layout`, `…/auth`, etc.) so
|
|
// tree-shaking can drop modules you don't use. This index is here
|
|
// for convenience and discovery.
|
|
|
|
export * from "./layout/index";
|
|
export * from "./shell/index";
|
|
export * from "./chrome/index";
|
|
export * from "./data/index";
|
|
export * from "./forms/index";
|
|
export * from "./feedback/index";
|
|
export * from "./navigation/index";
|
|
export * from "./api/index";
|
|
export * from "./utils/index";
|
|
// auth is client-only; auth/server is server-only. Don't aggregate.
|