@prenta/admin 2.6.1 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +98 -0
- package/design-system/tokens.css +179 -85
- package/design-system/tokens.json +276 -85
- package/design-system/tokens.scss +148 -44
- package/design-system/tokens.tailwind.cjs +50 -1
- package/dist/AdminRoot.d.ts.map +1 -1
- package/dist/AdminRoot.js +42 -20
- package/dist/AdminRoot.js.map +1 -1
- package/dist/LoginRoot.d.ts.map +1 -1
- package/dist/LoginRoot.js +2 -1
- package/dist/LoginRoot.js.map +1 -1
- package/dist/__tests__/components/author-avatar.test.js +3 -17
- package/dist/__tests__/components/author-avatar.test.js.map +1 -1
- package/dist/__tests__/components/notification-bell.test.js +86 -15
- package/dist/__tests__/components/notification-bell.test.js.map +1 -1
- package/dist/__tests__/components/responsive-tiers.render.test.d.ts +2 -0
- package/dist/__tests__/components/responsive-tiers.render.test.d.ts.map +1 -0
- package/dist/__tests__/components/responsive-tiers.render.test.js +313 -0
- package/dist/__tests__/components/responsive-tiers.render.test.js.map +1 -0
- package/dist/__tests__/components/serp-preview.render.test.js +6 -3
- package/dist/__tests__/components/serp-preview.render.test.js.map +1 -1
- package/dist/__tests__/components/shell-primitives.render.test.d.ts +2 -0
- package/dist/__tests__/components/shell-primitives.render.test.d.ts.map +1 -0
- package/dist/__tests__/components/shell-primitives.render.test.js +716 -0
- package/dist/__tests__/components/shell-primitives.render.test.js.map +1 -0
- package/dist/__tests__/components/theme-provider-accent.test.js +49 -7
- package/dist/__tests__/components/theme-provider-accent.test.js.map +1 -1
- package/dist/__tests__/components/toggle.test.js +10 -3
- package/dist/__tests__/components/toggle.test.js.map +1 -1
- package/dist/__tests__/components/ui-primitives.test.js +3 -7
- package/dist/__tests__/components/ui-primitives.test.js.map +1 -1
- package/dist/__tests__/layout/build-nav-items.test.js +1 -1
- package/dist/__tests__/layout/build-nav-items.test.js.map +1 -1
- package/dist/__tests__/layout/shell-nav.render.test.d.ts +2 -0
- package/dist/__tests__/layout/shell-nav.render.test.d.ts.map +1 -0
- package/dist/__tests__/layout/shell-nav.render.test.js +736 -0
- package/dist/__tests__/layout/shell-nav.render.test.js.map +1 -0
- package/dist/__tests__/layout/sidebar-forms-submenu.render.test.js +8 -4
- package/dist/__tests__/layout/sidebar-forms-submenu.render.test.js.map +1 -1
- package/dist/__tests__/layout/sidebar-groups.render.test.d.ts +2 -0
- package/dist/__tests__/layout/sidebar-groups.render.test.d.ts.map +1 -0
- package/dist/__tests__/layout/sidebar-groups.render.test.js +56 -0
- package/dist/__tests__/layout/sidebar-groups.render.test.js.map +1 -0
- package/dist/__tests__/layout/sidebar-menus.render.test.d.ts +2 -0
- package/dist/__tests__/layout/sidebar-menus.render.test.d.ts.map +1 -0
- package/dist/__tests__/layout/sidebar-menus.render.test.js +82 -0
- package/dist/__tests__/layout/sidebar-menus.render.test.js.map +1 -0
- package/dist/__tests__/layout/sidebar-plugin-nav.test.js +1 -1
- package/dist/__tests__/layout/sidebar-plugin-nav.test.js.map +1 -1
- package/dist/__tests__/layout/sidebar-posts.test.js +48 -38
- package/dist/__tests__/layout/sidebar-posts.test.js.map +1 -1
- package/dist/__tests__/layout/sidebar-submenu.render.test.js +26 -10
- package/dist/__tests__/layout/sidebar-submenu.render.test.js.map +1 -1
- package/dist/__tests__/layout/topbar.render.test.d.ts +2 -0
- package/dist/__tests__/layout/topbar.render.test.d.ts.map +1 -0
- package/dist/__tests__/layout/topbar.render.test.js +406 -0
- package/dist/__tests__/layout/topbar.render.test.js.map +1 -0
- package/dist/__tests__/lib/api.test.js +2 -0
- package/dist/__tests__/lib/api.test.js.map +1 -1
- package/dist/__tests__/lib/job-drawer.test.d.ts +2 -0
- package/dist/__tests__/lib/job-drawer.test.d.ts.map +1 -0
- package/dist/__tests__/lib/job-drawer.test.js +393 -0
- package/dist/__tests__/lib/job-drawer.test.js.map +1 -0
- package/dist/__tests__/lib/job-view.test.d.ts +2 -0
- package/dist/__tests__/lib/job-view.test.d.ts.map +1 -0
- package/dist/__tests__/lib/job-view.test.js +387 -0
- package/dist/__tests__/lib/job-view.test.js.map +1 -0
- package/dist/__tests__/lib/jobs-service.test.d.ts +2 -0
- package/dist/__tests__/lib/jobs-service.test.d.ts.map +1 -0
- package/dist/__tests__/lib/jobs-service.test.js +88 -0
- package/dist/__tests__/lib/jobs-service.test.js.map +1 -0
- package/dist/__tests__/router/admin-route-order.test.d.ts +2 -0
- package/dist/__tests__/router/admin-route-order.test.d.ts.map +1 -0
- package/dist/__tests__/router/admin-route-order.test.js +36 -0
- package/dist/__tests__/router/admin-route-order.test.js.map +1 -0
- package/dist/__tests__/styles/ai-gradient-contrast.test.d.ts +2 -0
- package/dist/__tests__/styles/ai-gradient-contrast.test.d.ts.map +1 -0
- package/dist/__tests__/styles/ai-gradient-contrast.test.js +110 -0
- package/dist/__tests__/styles/ai-gradient-contrast.test.js.map +1 -0
- package/dist/__tests__/styles/breakpoint-order.test.d.ts +2 -0
- package/dist/__tests__/styles/breakpoint-order.test.d.ts.map +1 -0
- package/dist/__tests__/styles/breakpoint-order.test.js +52 -0
- package/dist/__tests__/styles/breakpoint-order.test.js.map +1 -0
- package/dist/__tests__/styles/responsive-layer.test.js +303 -12
- package/dist/__tests__/styles/responsive-layer.test.js.map +1 -1
- package/dist/__tests__/styles/tailwind-preset.test.d.ts +2 -0
- package/dist/__tests__/styles/tailwind-preset.test.d.ts.map +1 -0
- package/dist/__tests__/styles/tailwind-preset.test.js +147 -0
- package/dist/__tests__/styles/tailwind-preset.test.js.map +1 -0
- package/dist/__tests__/styles/theme-token-scope.test.js +9 -3
- package/dist/__tests__/styles/theme-token-scope.test.js.map +1 -1
- package/dist/__tests__/styles/tiers.test.d.ts +2 -0
- package/dist/__tests__/styles/tiers.test.d.ts.map +1 -0
- package/dist/__tests__/styles/tiers.test.js +121 -0
- package/dist/__tests__/styles/tiers.test.js.map +1 -0
- package/dist/__tests__/styles/tokens-drift.test.js +57 -6
- package/dist/__tests__/styles/tokens-drift.test.js.map +1 -1
- package/dist/__tests__/views/admin-lazy-route.render.test.js +27 -1
- package/dist/__tests__/views/admin-lazy-route.render.test.js.map +1 -1
- package/dist/__tests__/views/ai-settings.render.test.js +4 -4
- package/dist/__tests__/views/appearance-menus-route.render.test.d.ts +2 -0
- package/dist/__tests__/views/appearance-menus-route.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/appearance-menus-route.render.test.js +50 -0
- package/dist/__tests__/views/appearance-menus-route.render.test.js.map +1 -0
- package/dist/__tests__/views/appearance-settings.render.test.js +8 -6
- package/dist/__tests__/views/appearance-settings.render.test.js.map +1 -1
- package/dist/__tests__/views/appearance-theme-provider.render.test.d.ts +2 -0
- package/dist/__tests__/views/appearance-theme-provider.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/appearance-theme-provider.render.test.js +286 -0
- package/dist/__tests__/views/appearance-theme-provider.render.test.js.map +1 -0
- package/dist/__tests__/views/dashboard.test.js +37 -0
- package/dist/__tests__/views/dashboard.test.js.map +1 -1
- package/dist/__tests__/views/document-edit-navigation.render.test.d.ts +2 -0
- package/dist/__tests__/views/document-edit-navigation.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/document-edit-navigation.render.test.js +101 -0
- package/dist/__tests__/views/document-edit-navigation.render.test.js.map +1 -0
- package/dist/__tests__/views/document-edit-routes.render.test.d.ts +2 -0
- package/dist/__tests__/views/document-edit-routes.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/document-edit-routes.render.test.js +113 -0
- package/dist/__tests__/views/document-edit-routes.render.test.js.map +1 -0
- package/dist/__tests__/views/email-settings.render.test.js +2 -2
- package/dist/__tests__/views/form-entries.render.test.js +15 -0
- package/dist/__tests__/views/form-entries.render.test.js.map +1 -1
- package/dist/__tests__/views/form-submissions.render.test.js +18 -0
- package/dist/__tests__/views/form-submissions.render.test.js.map +1 -1
- package/dist/__tests__/views/forms-list.render.test.js +12 -0
- package/dist/__tests__/views/forms-list.render.test.js.map +1 -1
- package/dist/__tests__/views/general-settings.render.test.js +26 -10
- package/dist/__tests__/views/general-settings.render.test.js.map +1 -1
- package/dist/__tests__/views/jobs-drawer.render.test.d.ts +2 -0
- package/dist/__tests__/views/jobs-drawer.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/jobs-drawer.render.test.js +908 -0
- package/dist/__tests__/views/jobs-drawer.render.test.js.map +1 -0
- package/dist/__tests__/views/jobs-list.render.test.d.ts +2 -0
- package/dist/__tests__/views/jobs-list.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/jobs-list.render.test.js +695 -0
- package/dist/__tests__/views/jobs-list.render.test.js.map +1 -0
- package/dist/__tests__/views/kpi-grid.test.d.ts +2 -0
- package/dist/__tests__/views/kpi-grid.test.d.ts.map +1 -0
- package/dist/__tests__/views/kpi-grid.test.js +26 -0
- package/dist/__tests__/views/kpi-grid.test.js.map +1 -0
- package/dist/__tests__/views/post-section-editor.test.js +3 -1
- package/dist/__tests__/views/post-section-editor.test.js.map +1 -1
- package/dist/__tests__/views/script-tags.render.test.js +25 -0
- package/dist/__tests__/views/script-tags.render.test.js.map +1 -1
- package/dist/__tests__/views/security-settings.render.test.js +9 -8
- package/dist/__tests__/views/security-settings.render.test.js.map +1 -1
- package/dist/__tests__/views/seo-settings.render.test.js +7 -7
- package/dist/__tests__/views/seo-settings.render.test.js.map +1 -1
- package/dist/__tests__/views/settings-save-bar.render.test.d.ts +2 -0
- package/dist/__tests__/views/settings-save-bar.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/settings-save-bar.render.test.js +68 -0
- package/dist/__tests__/views/settings-save-bar.render.test.js.map +1 -0
- package/dist/__tests__/views/settings-save-footer.render.test.js +23 -15
- package/dist/__tests__/views/settings-save-footer.render.test.js.map +1 -1
- package/dist/__tests__/views/settings-tabs.render.test.d.ts +2 -0
- package/dist/__tests__/views/settings-tabs.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/settings-tabs.render.test.js +319 -0
- package/dist/__tests__/views/settings-tabs.render.test.js.map +1 -0
- package/dist/__tests__/views/updates-tab.render.test.js +4 -3
- package/dist/__tests__/views/updates-tab.render.test.js.map +1 -1
- package/dist/components/Breadcrumbs.d.ts +8 -1
- package/dist/components/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/Breadcrumbs.js +6 -0
- package/dist/components/Breadcrumbs.js.map +1 -1
- package/dist/components/CommandPalette.d.ts.map +1 -1
- package/dist/components/CommandPalette.js +40 -4
- package/dist/components/CommandPalette.js.map +1 -1
- package/dist/components/LocaleSwitcher.d.ts.map +1 -1
- package/dist/components/LocaleSwitcher.js +1 -1
- package/dist/components/LocaleSwitcher.js.map +1 -1
- package/dist/components/NotificationBell.d.ts.map +1 -1
- package/dist/components/NotificationBell.js +44 -3
- package/dist/components/NotificationBell.js.map +1 -1
- package/dist/components/OfflineStatus.js +1 -1
- package/dist/components/OfflineStatus.js.map +1 -1
- package/dist/components/PresenceIndicator.d.ts.map +1 -1
- package/dist/components/PresenceIndicator.js +2 -1
- package/dist/components/PresenceIndicator.js.map +1 -1
- package/dist/components/ReflowMeter.js +2 -2
- package/dist/components/ReflowMeter.js.map +1 -1
- package/dist/components/SEOPanel.js +2 -2
- package/dist/components/SEOPanel.js.map +1 -1
- package/dist/components/ThemeProvider.d.ts +24 -4
- package/dist/components/ThemeProvider.d.ts.map +1 -1
- package/dist/components/ThemeProvider.js +80 -22
- package/dist/components/ThemeProvider.js.map +1 -1
- package/dist/components/TipTapEditor.d.ts.map +1 -1
- package/dist/components/TipTapEditor.js +3 -4
- package/dist/components/TipTapEditor.js.map +1 -1
- package/dist/components/forms/EmbedPanel.js +1 -1
- package/dist/components/forms/EmbedPanel.js.map +1 -1
- package/dist/components/forms/FormEntryDetailPane.js +6 -1
- package/dist/components/forms/FormEntryDetailPane.js.map +1 -1
- package/dist/components/forms/ShortcodeGlossary.d.ts.map +1 -1
- package/dist/components/forms/ShortcodeGlossary.js +6 -1
- package/dist/components/forms/ShortcodeGlossary.js.map +1 -1
- package/dist/components/forms/primitives.d.ts +15 -5
- package/dist/components/forms/primitives.d.ts.map +1 -1
- package/dist/components/forms/primitives.js +11 -11
- package/dist/components/forms/primitives.js.map +1 -1
- package/dist/components/pages/tag-badges.d.ts +2 -1
- package/dist/components/pages/tag-badges.d.ts.map +1 -1
- package/dist/components/pages/tag-badges.js +4 -3
- package/dist/components/pages/tag-badges.js.map +1 -1
- package/dist/components/seo/PageAuditPanel.js +2 -2
- package/dist/components/seo/PageAuditPanel.js.map +1 -1
- package/dist/components/seo/SerpPreview.d.ts +4 -4
- package/dist/components/seo/SerpPreview.js +1 -1
- package/dist/components/seo/SerpPreview.js.map +1 -1
- package/dist/components/seo/primitives.js +2 -2
- package/dist/components/seo/primitives.js.map +1 -1
- package/dist/components/ui/AuthorAvatar.d.ts +4 -4
- package/dist/components/ui/AuthorAvatar.d.ts.map +1 -1
- package/dist/components/ui/AuthorAvatar.js +11 -10
- package/dist/components/ui/AuthorAvatar.js.map +1 -1
- package/dist/components/ui/Badge.d.ts +1 -1
- package/dist/components/ui/Badge.js +1 -1
- package/dist/components/ui/Badge.js.map +1 -1
- package/dist/components/ui/Breadcrumb.d.ts +27 -0
- package/dist/components/ui/Breadcrumb.d.ts.map +1 -0
- package/dist/components/ui/Breadcrumb.js +41 -0
- package/dist/components/ui/Breadcrumb.js.map +1 -0
- package/dist/components/ui/Button.d.ts +2 -2
- package/dist/components/ui/Button.d.ts.map +1 -1
- package/dist/components/ui/Button.js +31 -16
- package/dist/components/ui/Button.js.map +1 -1
- package/dist/components/ui/Card.d.ts +8 -4
- package/dist/components/ui/Card.d.ts.map +1 -1
- package/dist/components/ui/Card.js +21 -13
- package/dist/components/ui/Card.js.map +1 -1
- package/dist/components/ui/CardListControls.d.ts +34 -0
- package/dist/components/ui/CardListControls.d.ts.map +1 -0
- package/dist/components/ui/CardListControls.js +25 -0
- package/dist/components/ui/CardListControls.js.map +1 -0
- package/dist/components/ui/CountChip.d.ts +20 -0
- package/dist/components/ui/CountChip.d.ts.map +1 -0
- package/dist/components/ui/CountChip.js +48 -0
- package/dist/components/ui/CountChip.js.map +1 -0
- package/dist/components/ui/FilterPill.d.ts +2 -1
- package/dist/components/ui/FilterPill.d.ts.map +1 -1
- package/dist/components/ui/FilterPill.js +3 -2
- package/dist/components/ui/FilterPill.js.map +1 -1
- package/dist/components/ui/Input.d.ts +1 -1
- package/dist/components/ui/InspectorPane.d.ts +1 -1
- package/dist/components/ui/InspectorPane.d.ts.map +1 -1
- package/dist/components/ui/InspectorPane.js +15 -4
- package/dist/components/ui/InspectorPane.js.map +1 -1
- package/dist/components/ui/Modal.d.ts.map +1 -1
- package/dist/components/ui/Modal.js +10 -2
- package/dist/components/ui/Modal.js.map +1 -1
- package/dist/components/ui/PageHeader.d.ts +28 -0
- package/dist/components/ui/PageHeader.d.ts.map +1 -0
- package/dist/components/ui/PageHeader.js +18 -0
- package/dist/components/ui/PageHeader.js.map +1 -0
- package/dist/components/ui/RowActions.d.ts +5 -0
- package/dist/components/ui/RowActions.d.ts.map +1 -1
- package/dist/components/ui/RowActions.js +7 -2
- package/dist/components/ui/RowActions.js.map +1 -1
- package/dist/components/ui/Segmented.d.ts +21 -0
- package/dist/components/ui/Segmented.d.ts.map +1 -0
- package/dist/components/ui/Segmented.js +41 -0
- package/dist/components/ui/Segmented.js.map +1 -0
- package/dist/components/ui/Toaster.d.ts +12 -0
- package/dist/components/ui/Toaster.d.ts.map +1 -0
- package/dist/components/ui/Toaster.js +103 -0
- package/dist/components/ui/Toaster.js.map +1 -0
- package/dist/components/ui/Toggle.d.ts +4 -3
- package/dist/components/ui/Toggle.d.ts.map +1 -1
- package/dist/components/ui/Toggle.js +16 -12
- package/dist/components/ui/Toggle.js.map +1 -1
- package/dist/components/ui/UnderlineTabs.d.ts +56 -0
- package/dist/components/ui/UnderlineTabs.d.ts.map +1 -0
- package/dist/components/ui/UnderlineTabs.js +205 -0
- package/dist/components/ui/UnderlineTabs.js.map +1 -0
- package/dist/components/ui/UnsavedBar.d.ts +25 -0
- package/dist/components/ui/UnsavedBar.d.ts.map +1 -0
- package/dist/components/ui/UnsavedBar.js +22 -0
- package/dist/components/ui/UnsavedBar.js.map +1 -0
- package/dist/components/ui/admin-links.d.ts +11 -0
- package/dist/components/ui/admin-links.d.ts.map +1 -0
- package/dist/components/ui/admin-links.js +10 -0
- package/dist/components/ui/admin-links.js.map +1 -0
- package/dist/components/ui/card-table.d.ts +43 -0
- package/dist/components/ui/card-table.d.ts.map +1 -0
- package/dist/components/ui/card-table.js +31 -0
- package/dist/components/ui/card-table.js.map +1 -0
- package/dist/components/virtual-window.d.ts +7 -0
- package/dist/components/virtual-window.d.ts.map +1 -1
- package/dist/components/virtual-window.js +5 -2
- package/dist/components/virtual-window.js.map +1 -1
- package/dist/fields/RelationshipField.js +1 -1
- package/dist/fields/RelationshipField.js.map +1 -1
- package/dist/files/dm-mono-latin-400-normal.woff +0 -0
- package/dist/files/dm-mono-latin-400-normal.woff2 +0 -0
- package/dist/files/dm-mono-latin-500-normal.woff +0 -0
- package/dist/files/dm-mono-latin-500-normal.woff2 +0 -0
- package/dist/files/dm-mono-latin-ext-400-normal.woff +0 -0
- package/dist/files/dm-mono-latin-ext-400-normal.woff2 +0 -0
- package/dist/files/dm-mono-latin-ext-500-normal.woff +0 -0
- package/dist/files/dm-mono-latin-ext-500-normal.woff2 +0 -0
- package/dist/files/dm-sans-latin-400-normal.woff +0 -0
- package/dist/files/dm-sans-latin-400-normal.woff2 +0 -0
- package/dist/files/dm-sans-latin-500-normal.woff +0 -0
- package/dist/files/dm-sans-latin-500-normal.woff2 +0 -0
- package/dist/files/dm-sans-latin-600-normal.woff +0 -0
- package/dist/files/dm-sans-latin-600-normal.woff2 +0 -0
- package/dist/files/dm-sans-latin-700-normal.woff +0 -0
- package/dist/files/dm-sans-latin-700-normal.woff2 +0 -0
- package/dist/files/dm-sans-latin-ext-400-normal.woff +0 -0
- package/dist/files/dm-sans-latin-ext-400-normal.woff2 +0 -0
- package/dist/files/dm-sans-latin-ext-500-normal.woff +0 -0
- package/dist/files/dm-sans-latin-ext-500-normal.woff2 +0 -0
- package/dist/files/dm-sans-latin-ext-600-normal.woff +0 -0
- package/dist/files/dm-sans-latin-ext-600-normal.woff2 +0 -0
- package/dist/files/dm-sans-latin-ext-700-normal.woff +0 -0
- package/dist/files/dm-sans-latin-ext-700-normal.woff2 +0 -0
- package/dist/hooks/useAppearanceBootstrap.d.ts.map +1 -1
- package/dist/hooks/useAppearanceBootstrap.js +9 -3
- package/dist/hooks/useAppearanceBootstrap.js.map +1 -1
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/Header.d.ts +14 -5
- package/dist/layout/Header.d.ts.map +1 -1
- package/dist/layout/Header.js +78 -13
- package/dist/layout/Header.js.map +1 -1
- package/dist/layout/Layout.d.ts +5 -3
- package/dist/layout/Layout.d.ts.map +1 -1
- package/dist/layout/Layout.js +45 -54
- package/dist/layout/Layout.js.map +1 -1
- package/dist/layout/MobileTabBar.d.ts +20 -0
- package/dist/layout/MobileTabBar.d.ts.map +1 -0
- package/dist/layout/MobileTabBar.js +29 -0
- package/dist/layout/MobileTabBar.js.map +1 -0
- package/dist/layout/Sidebar.d.ts +8 -26
- package/dist/layout/Sidebar.d.ts.map +1 -1
- package/dist/layout/Sidebar.js +309 -345
- package/dist/layout/Sidebar.js.map +1 -1
- package/dist/layout/nav-config.d.ts +101 -0
- package/dist/layout/nav-config.d.ts.map +1 -0
- package/dist/layout/nav-config.js +297 -0
- package/dist/layout/nav-config.js.map +1 -0
- package/dist/layout/primitives/AdminShell.d.ts +10 -2
- package/dist/layout/primitives/AdminShell.d.ts.map +1 -1
- package/dist/layout/primitives/AdminShell.js +114 -6
- package/dist/layout/primitives/AdminShell.js.map +1 -1
- package/dist/layout/topbar-classes.d.ts +8 -0
- package/dist/layout/topbar-classes.d.ts.map +1 -0
- package/dist/layout/topbar-classes.js +8 -0
- package/dist/layout/topbar-classes.js.map +1 -0
- package/dist/layout/use-nav-items.d.ts +10 -0
- package/dist/layout/use-nav-items.d.ts.map +1 -0
- package/dist/layout/use-nav-items.js +39 -0
- package/dist/layout/use-nav-items.js.map +1 -0
- package/dist/lib/api.d.ts +6 -0
- package/dist/lib/api.d.ts.map +1 -1
- package/dist/lib/api.js +1 -1
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/appearance-api.d.ts +3 -1
- package/dist/lib/appearance-api.d.ts.map +1 -1
- package/dist/lib/appearance-api.js +1 -0
- package/dist/lib/appearance-api.js.map +1 -1
- package/dist/lib/job-drawer.d.ts +128 -0
- package/dist/lib/job-drawer.d.ts.map +1 -0
- package/dist/lib/job-drawer.js +351 -0
- package/dist/lib/job-drawer.js.map +1 -0
- package/dist/lib/job-view.d.ts +187 -0
- package/dist/lib/job-view.d.ts.map +1 -0
- package/dist/lib/job-view.js +363 -0
- package/dist/lib/job-view.js.map +1 -0
- package/dist/lib/jobs-service.d.ts +134 -0
- package/dist/lib/jobs-service.d.ts.map +1 -0
- package/dist/lib/jobs-service.js +179 -0
- package/dist/lib/jobs-service.js.map +1 -0
- package/dist/lib/sheet-focus.d.ts +24 -0
- package/dist/lib/sheet-focus.d.ts.map +1 -0
- package/dist/lib/sheet-focus.js +61 -0
- package/dist/lib/sheet-focus.js.map +1 -0
- package/dist/lib/tiers.d.ts +30 -0
- package/dist/lib/tiers.d.ts.map +1 -0
- package/dist/lib/tiers.js +43 -0
- package/dist/lib/tiers.js.map +1 -0
- package/dist/prenta-admin.css +1 -1
- package/dist/router/admin-routes.d.ts.map +1 -1
- package/dist/router/admin-routes.js +8 -0
- package/dist/router/admin-routes.js.map +1 -1
- package/dist/router/index.d.ts +5 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +7 -0
- package/dist/router/index.js.map +1 -1
- package/dist/views/ApiKeys.js +2 -2
- package/dist/views/ApiKeys.js.map +1 -1
- package/dist/views/AppearanceChrome.d.ts +6 -0
- package/dist/views/AppearanceChrome.d.ts.map +1 -0
- package/dist/views/AppearanceChrome.js +25 -0
- package/dist/views/AppearanceChrome.js.map +1 -0
- package/dist/views/CollectionList.d.ts.map +1 -1
- package/dist/views/CollectionList.js +73 -53
- package/dist/views/CollectionList.js.map +1 -1
- package/dist/views/Dashboard.d.ts.map +1 -1
- package/dist/views/Dashboard.js +14 -8
- package/dist/views/Dashboard.js.map +1 -1
- package/dist/views/DocumentEdit.d.ts +6 -1
- package/dist/views/DocumentEdit.d.ts.map +1 -1
- package/dist/views/DocumentEdit.js +44 -8
- package/dist/views/DocumentEdit.js.map +1 -1
- package/dist/views/FormDeliveries.d.ts.map +1 -1
- package/dist/views/FormDeliveries.js +7 -1
- package/dist/views/FormDeliveries.js.map +1 -1
- package/dist/views/FormEntries.d.ts.map +1 -1
- package/dist/views/FormEntries.js +11 -2
- package/dist/views/FormEntries.js.map +1 -1
- package/dist/views/FormSubmissions.d.ts +1 -1
- package/dist/views/FormSubmissions.d.ts.map +1 -1
- package/dist/views/FormSubmissions.js +15 -4
- package/dist/views/FormSubmissions.js.map +1 -1
- package/dist/views/Forms.d.ts.map +1 -1
- package/dist/views/Forms.js +6 -4
- package/dist/views/Forms.js.map +1 -1
- package/dist/views/FormsSettings.d.ts +2 -0
- package/dist/views/FormsSettings.d.ts.map +1 -0
- package/dist/views/FormsSettings.js +37 -0
- package/dist/views/FormsSettings.js.map +1 -0
- package/dist/views/Jobs/BusyButton.d.ts +15 -0
- package/dist/views/Jobs/BusyButton.d.ts.map +1 -0
- package/dist/views/Jobs/BusyButton.js +26 -0
- package/dist/views/Jobs/BusyButton.js.map +1 -0
- package/dist/views/Jobs/CancelJobDialog.d.ts +21 -0
- package/dist/views/Jobs/CancelJobDialog.d.ts.map +1 -0
- package/dist/views/Jobs/CancelJobDialog.js +66 -0
- package/dist/views/Jobs/CancelJobDialog.js.map +1 -0
- package/dist/views/Jobs/DrawerActivity.d.ts +16 -0
- package/dist/views/Jobs/DrawerActivity.d.ts.map +1 -0
- package/dist/views/Jobs/DrawerActivity.js +59 -0
- package/dist/views/Jobs/DrawerActivity.js.map +1 -0
- package/dist/views/Jobs/DrawerOverview.d.ts +28 -0
- package/dist/views/Jobs/DrawerOverview.d.ts.map +1 -0
- package/dist/views/Jobs/DrawerOverview.js +32 -0
- package/dist/views/Jobs/DrawerOverview.js.map +1 -0
- package/dist/views/Jobs/DrawerResults.d.ts +25 -0
- package/dist/views/Jobs/DrawerResults.d.ts.map +1 -0
- package/dist/views/Jobs/DrawerResults.js +50 -0
- package/dist/views/Jobs/DrawerResults.js.map +1 -0
- package/dist/views/Jobs/DrawerReview.d.ts +44 -0
- package/dist/views/Jobs/DrawerReview.d.ts.map +1 -0
- package/dist/views/Jobs/DrawerReview.js +110 -0
- package/dist/views/Jobs/DrawerReview.js.map +1 -0
- package/dist/views/Jobs/JobDrawer.d.ts +31 -0
- package/dist/views/Jobs/JobDrawer.d.ts.map +1 -0
- package/dist/views/Jobs/JobDrawer.js +353 -0
- package/dist/views/Jobs/JobDrawer.js.map +1 -0
- package/dist/views/Jobs/JobsTable.d.ts +19 -0
- package/dist/views/Jobs/JobsTable.d.ts.map +1 -0
- package/dist/views/Jobs/JobsTable.js +80 -0
- package/dist/views/Jobs/JobsTable.js.map +1 -0
- package/dist/views/Jobs/WorkerStrip.d.ts +22 -0
- package/dist/views/Jobs/WorkerStrip.d.ts.map +1 -0
- package/dist/views/Jobs/WorkerStrip.js +63 -0
- package/dist/views/Jobs/WorkerStrip.js.map +1 -0
- package/dist/views/Jobs/atoms.d.ts +19 -0
- package/dist/views/Jobs/atoms.d.ts.map +1 -0
- package/dist/views/Jobs/atoms.js +52 -0
- package/dist/views/Jobs/atoms.js.map +1 -0
- package/dist/views/Jobs/focus.d.ts +23 -0
- package/dist/views/Jobs/focus.d.ts.map +1 -0
- package/dist/views/Jobs/focus.js +54 -0
- package/dist/views/Jobs/focus.js.map +1 -0
- package/dist/views/Jobs/icons.d.ts +22 -0
- package/dist/views/Jobs/icons.d.ts.map +1 -0
- package/dist/views/Jobs/icons.js +23 -0
- package/dist/views/Jobs/icons.js.map +1 -0
- package/dist/views/Jobs/placeholders.d.ts +6 -0
- package/dist/views/Jobs/placeholders.d.ts.map +1 -0
- package/dist/views/Jobs/placeholders.js +20 -0
- package/dist/views/Jobs/placeholders.js.map +1 -0
- package/dist/views/Jobs/useJobDetail.d.ts +21 -0
- package/dist/views/Jobs/useJobDetail.d.ts.map +1 -0
- package/dist/views/Jobs/useJobDetail.js +39 -0
- package/dist/views/Jobs/useJobDetail.js.map +1 -0
- package/dist/views/Jobs/useJobsFeed.d.ts +35 -0
- package/dist/views/Jobs/useJobsFeed.d.ts.map +1 -0
- package/dist/views/Jobs/useJobsFeed.js +231 -0
- package/dist/views/Jobs/useJobsFeed.js.map +1 -0
- package/dist/views/Jobs/useReviewItems.d.ts +39 -0
- package/dist/views/Jobs/useReviewItems.d.ts.map +1 -0
- package/dist/views/Jobs/useReviewItems.js +140 -0
- package/dist/views/Jobs/useReviewItems.js.map +1 -0
- package/dist/views/Jobs.d.ts +10 -1
- package/dist/views/Jobs.d.ts.map +1 -1
- package/dist/views/Jobs.js +126 -35
- package/dist/views/Jobs.js.map +1 -1
- package/dist/views/MediaBrowser.d.ts.map +1 -1
- package/dist/views/MediaBrowser.js +37 -9
- package/dist/views/MediaBrowser.js.map +1 -1
- package/dist/views/Pages/PagesListView.d.ts +1 -1
- package/dist/views/Pages/PagesListView.d.ts.map +1 -1
- package/dist/views/Pages/PagesListView.js +34 -5
- package/dist/views/Pages/PagesListView.js.map +1 -1
- package/dist/views/Posts/NewPostTypeInstructions.d.ts.map +1 -1
- package/dist/views/Posts/NewPostTypeInstructions.js +12 -2
- package/dist/views/Posts/NewPostTypeInstructions.js.map +1 -1
- package/dist/views/Posts/PostTypesView.d.ts.map +1 -1
- package/dist/views/Posts/PostTypesView.js +10 -1
- package/dist/views/Posts/PostTypesView.js.map +1 -1
- package/dist/views/Posts/PostsListView.d.ts +1 -2
- package/dist/views/Posts/PostsListView.d.ts.map +1 -1
- package/dist/views/Posts/PostsListView.js +31 -3
- package/dist/views/Posts/PostsListView.js.map +1 -1
- package/dist/views/SEO.d.ts.map +1 -1
- package/dist/views/SEO.js +3 -3
- package/dist/views/SEO.js.map +1 -1
- package/dist/views/ScriptTags.d.ts.map +1 -1
- package/dist/views/ScriptTags.js +20 -15
- package/dist/views/ScriptTags.js.map +1 -1
- package/dist/views/Settings.d.ts.map +1 -1
- package/dist/views/Settings.js +115 -51
- package/dist/views/Settings.js.map +1 -1
- package/dist/views/SpamFolder.d.ts +2 -0
- package/dist/views/SpamFolder.d.ts.map +1 -0
- package/dist/views/SpamFolder.js +14 -0
- package/dist/views/SpamFolder.js.map +1 -0
- package/dist/views/Trash.d.ts +6 -1
- package/dist/views/Trash.d.ts.map +1 -1
- package/dist/views/Trash.js +7 -2
- package/dist/views/Trash.js.map +1 -1
- package/dist/views/Users.js +2 -2
- package/dist/views/Users.js.map +1 -1
- package/dist/views/WidgetsPlaceholder.d.ts +2 -0
- package/dist/views/WidgetsPlaceholder.d.ts.map +1 -0
- package/dist/views/WidgetsPlaceholder.js +15 -0
- package/dist/views/WidgetsPlaceholder.js.map +1 -0
- package/dist/views/dashboard/kpi-grid.d.ts +18 -0
- package/dist/views/dashboard/kpi-grid.d.ts.map +1 -0
- package/dist/views/dashboard/kpi-grid.js +36 -0
- package/dist/views/dashboard/kpi-grid.js.map +1 -0
- package/dist/views/lazy-views.d.ts +4 -0
- package/dist/views/lazy-views.d.ts.map +1 -1
- package/dist/views/lazy-views.js +4 -0
- package/dist/views/lazy-views.js.map +1 -1
- package/dist/views/page-editor/PageTab.js +1 -1
- package/dist/views/page-editor/PageTab.js.map +1 -1
- package/dist/views/page-editor/ReviewBar.js +1 -1
- package/dist/views/page-editor/ReviewBar.js.map +1 -1
- package/dist/views/page-editor/VersionHistoryPanel.js +1 -1
- package/dist/views/page-editor/VersionHistoryPanel.js.map +1 -1
- package/dist/views/seo/AuditTab.js +1 -1
- package/dist/views/seo/AuditTab.js.map +1 -1
- package/dist/views/seo/OverviewTab.d.ts.map +1 -1
- package/dist/views/seo/OverviewTab.js +2 -2
- package/dist/views/seo/OverviewTab.js.map +1 -1
- package/dist/views/seo/ProposalsTab.js +1 -1
- package/dist/views/seo/ProposalsTab.js.map +1 -1
- package/dist/views/settings/AISettingsTab.d.ts.map +1 -1
- package/dist/views/settings/AISettingsTab.js +4 -2
- package/dist/views/settings/AISettingsTab.js.map +1 -1
- package/dist/views/settings/AccessProtectionCard.js +1 -1
- package/dist/views/settings/AccessProtectionCard.js.map +1 -1
- package/dist/views/settings/AdminThemeCard.d.ts.map +1 -1
- package/dist/views/settings/AdminThemeCard.js +63 -15
- package/dist/views/settings/AdminThemeCard.js.map +1 -1
- package/dist/views/settings/AppearanceTab.d.ts.map +1 -1
- package/dist/views/settings/AppearanceTab.js +4 -2
- package/dist/views/settings/AppearanceTab.js.map +1 -1
- package/dist/views/settings/BrandPreviewCard.js +1 -1
- package/dist/views/settings/BrandPreviewCard.js.map +1 -1
- package/dist/views/settings/BrandVoiceCard.js +1 -1
- package/dist/views/settings/BrandVoiceCard.js.map +1 -1
- package/dist/views/settings/EmailSettingsTab.d.ts.map +1 -1
- package/dist/views/settings/EmailSettingsTab.js +5 -3
- package/dist/views/settings/EmailSettingsTab.js.map +1 -1
- package/dist/views/settings/GeneralSettingsTab.d.ts.map +1 -1
- package/dist/views/settings/GeneralSettingsTab.js +4 -2
- package/dist/views/settings/GeneralSettingsTab.js.map +1 -1
- package/dist/views/settings/ProviderConnectionCard.js +1 -1
- package/dist/views/settings/ProviderConnectionCard.js.map +1 -1
- package/dist/views/settings/SearchDataCard.js +1 -1
- package/dist/views/settings/SearchDataCard.js.map +1 -1
- package/dist/views/settings/SecurityStatusCard.js +2 -2
- package/dist/views/settings/SecurityStatusCard.js.map +1 -1
- package/dist/views/settings/SecurityTab.d.ts.map +1 -1
- package/dist/views/settings/SecurityTab.js +4 -2
- package/dist/views/settings/SecurityTab.js.map +1 -1
- package/dist/views/settings/SeoAutopilotCard.js +2 -2
- package/dist/views/settings/SeoAutopilotCard.js.map +1 -1
- package/dist/views/settings/SeoSettingsTab.d.ts.map +1 -1
- package/dist/views/settings/SeoSettingsTab.js +5 -3
- package/dist/views/settings/SeoSettingsTab.js.map +1 -1
- package/dist/views/settings/SiteIndexStatusCard.js +1 -1
- package/dist/views/settings/SiteIndexStatusCard.js.map +1 -1
- package/dist/views/settings/SiteThemeCard.js +1 -1
- package/dist/views/settings/UpdatesTab.d.ts.map +1 -1
- package/dist/views/settings/UpdatesTab.js +6 -5
- package/dist/views/settings/UpdatesTab.js.map +1 -1
- package/dist/views/settings/components.d.ts +7 -11
- package/dist/views/settings/components.d.ts.map +1 -1
- package/dist/views/settings/components.js +18 -12
- package/dist/views/settings/components.js.map +1 -1
- package/dist/views/settings/useAppearanceSettings.d.ts +7 -1
- package/dist/views/settings/useAppearanceSettings.d.ts.map +1 -1
- package/dist/views/settings/useAppearanceSettings.js +89 -22
- package/dist/views/settings/useAppearanceSettings.js.map +1 -1
- package/dist/views/users/UserDetailDrawer.js +1 -1
- package/dist/views/users/UserDetailDrawer.js.map +1 -1
- package/package.json +10 -8
- package/src/AdminRoot.tsx +88 -30
- package/src/LoginRoot.tsx +2 -1
- package/src/__tests__/components/author-avatar.test.tsx +3 -20
- package/src/__tests__/components/notification-bell.test.tsx +146 -14
- package/src/__tests__/components/responsive-tiers.render.test.tsx +461 -0
- package/src/__tests__/components/serp-preview.render.test.tsx +6 -3
- package/src/__tests__/components/shell-primitives.render.test.tsx +951 -0
- package/src/__tests__/components/theme-provider-accent.test.tsx +83 -8
- package/src/__tests__/components/toggle.test.tsx +11 -3
- package/src/__tests__/components/ui-primitives.test.tsx +5 -8
- package/src/__tests__/layout/build-nav-items.test.ts +1 -1
- package/src/__tests__/layout/shell-nav.render.test.tsx +983 -0
- package/src/__tests__/layout/sidebar-forms-submenu.render.test.tsx +8 -4
- package/src/__tests__/layout/sidebar-groups.render.test.tsx +116 -0
- package/src/__tests__/layout/sidebar-menus.render.test.tsx +116 -0
- package/src/__tests__/layout/sidebar-plugin-nav.test.ts +1 -1
- package/src/__tests__/layout/sidebar-posts.test.ts +48 -40
- package/src/__tests__/layout/sidebar-submenu.render.test.tsx +35 -10
- package/src/__tests__/layout/topbar.render.test.tsx +464 -0
- package/src/__tests__/lib/api.test.ts +2 -0
- package/src/__tests__/lib/job-drawer.test.ts +493 -0
- package/src/__tests__/lib/job-view.test.ts +437 -0
- package/src/__tests__/lib/jobs-service.test.ts +98 -0
- package/src/__tests__/router/admin-route-order.test.ts +39 -0
- package/src/__tests__/styles/ai-gradient-contrast.test.ts +135 -0
- package/src/__tests__/styles/breakpoint-order.test.ts +68 -0
- package/src/__tests__/styles/responsive-layer.test.ts +367 -12
- package/src/__tests__/styles/tailwind-preset.test.ts +154 -0
- package/src/__tests__/styles/theme-token-scope.test.ts +10 -3
- package/src/__tests__/styles/tiers.test.ts +136 -0
- package/src/__tests__/styles/tokens-drift.test.ts +67 -6
- package/src/__tests__/views/admin-lazy-route.render.test.tsx +41 -1
- package/src/__tests__/views/ai-settings.render.test.tsx +4 -4
- package/src/__tests__/views/appearance-menus-route.render.test.tsx +58 -0
- package/src/__tests__/views/appearance-settings.render.test.tsx +10 -8
- package/src/__tests__/views/appearance-theme-provider.render.test.tsx +347 -0
- package/src/__tests__/views/dashboard.test.tsx +48 -0
- package/src/__tests__/views/document-edit-navigation.render.test.tsx +130 -0
- package/src/__tests__/views/document-edit-routes.render.test.tsx +130 -0
- package/src/__tests__/views/email-settings.render.test.tsx +2 -2
- package/src/__tests__/views/form-entries.render.test.tsx +22 -0
- package/src/__tests__/views/form-submissions.render.test.tsx +22 -0
- package/src/__tests__/views/forms-list.render.test.tsx +13 -0
- package/src/__tests__/views/general-settings.render.test.tsx +38 -11
- package/src/__tests__/views/jobs-drawer.render.test.tsx +1047 -0
- package/src/__tests__/views/jobs-list.render.test.tsx +850 -0
- package/src/__tests__/views/kpi-grid.test.ts +29 -0
- package/src/__tests__/views/post-section-editor.test.tsx +5 -1
- package/src/__tests__/views/script-tags.render.test.tsx +29 -0
- package/src/__tests__/views/security-settings.render.test.tsx +9 -10
- package/src/__tests__/views/seo-settings.render.test.tsx +7 -9
- package/src/__tests__/views/settings-save-bar.render.test.tsx +91 -0
- package/src/__tests__/views/settings-save-footer.render.test.tsx +25 -15
- package/src/__tests__/views/settings-tabs.render.test.tsx +371 -0
- package/src/__tests__/views/updates-tab.render.test.tsx +4 -3
- package/src/components/Breadcrumbs.tsx +7 -1
- package/src/components/CommandPalette.tsx +51 -3
- package/src/components/LocaleSwitcher.tsx +5 -6
- package/src/components/NotificationBell.tsx +74 -18
- package/src/components/OfflineStatus.tsx +1 -1
- package/src/components/PresenceIndicator.tsx +2 -1
- package/src/components/ReflowMeter.tsx +3 -3
- package/src/components/SEOPanel.tsx +2 -2
- package/src/components/ThemeProvider.tsx +122 -42
- package/src/components/TipTapEditor.tsx +3 -4
- package/src/components/forms/EmbedPanel.tsx +1 -1
- package/src/components/forms/FormEntryDetailPane.tsx +7 -1
- package/src/components/forms/ShortcodeGlossary.tsx +7 -1
- package/src/components/forms/primitives.tsx +37 -21
- package/src/components/pages/tag-badges.tsx +4 -3
- package/src/components/seo/PageAuditPanel.tsx +2 -2
- package/src/components/seo/SerpPreview.tsx +5 -5
- package/src/components/seo/primitives.tsx +2 -2
- package/src/components/ui/AuthorAvatar.tsx +11 -10
- package/src/components/ui/Badge.tsx +1 -1
- package/src/components/ui/Breadcrumb.tsx +109 -0
- package/src/components/ui/Button.tsx +40 -15
- package/src/components/ui/Card.tsx +35 -32
- package/src/components/ui/CardListControls.tsx +90 -0
- package/src/components/ui/CountChip.tsx +90 -0
- package/src/components/ui/FilterPill.tsx +5 -3
- package/src/components/ui/InspectorPane.tsx +21 -7
- package/src/components/ui/Modal.tsx +20 -6
- package/src/components/ui/PageHeader.tsx +63 -0
- package/src/components/ui/RowActions.tsx +7 -2
- package/src/components/ui/Segmented.tsx +97 -0
- package/src/components/ui/Toaster.tsx +139 -0
- package/src/components/ui/Toggle.tsx +18 -14
- package/src/components/ui/UnderlineTabs.tsx +373 -0
- package/src/components/ui/UnsavedBar.tsx +119 -0
- package/src/components/ui/admin-links.tsx +20 -0
- package/src/components/ui/card-table.ts +34 -0
- package/src/components/virtual-window.tsx +13 -2
- package/src/fields/RelationshipField.tsx +1 -1
- package/src/hooks/useAppearanceBootstrap.ts +9 -3
- package/src/index.ts +19 -0
- package/src/layout/Header.tsx +210 -135
- package/src/layout/Layout.tsx +61 -108
- package/src/layout/MobileTabBar.tsx +92 -0
- package/src/layout/Sidebar.tsx +555 -593
- package/src/layout/nav-config.tsx +425 -0
- package/src/layout/primitives/AdminShell.tsx +154 -6
- package/src/layout/topbar-classes.ts +8 -0
- package/src/layout/use-nav-items.ts +40 -0
- package/src/lib/api.ts +7 -1
- package/src/lib/appearance-api.ts +4 -0
- package/src/lib/job-drawer.ts +424 -0
- package/src/lib/job-view.ts +456 -0
- package/src/lib/jobs-service.ts +290 -0
- package/src/lib/sheet-focus.ts +71 -0
- package/src/lib/tiers.ts +43 -0
- package/src/router/admin-routes.ts +8 -0
- package/src/router/index.ts +9 -1
- package/src/styles/prenta-tokens.css +263 -82
- package/src/styles/responsive.css +460 -22
- package/src/styles/theme.css +177 -28
- package/src/views/ApiKeys.tsx +2 -2
- package/src/views/AppearanceChrome.tsx +74 -0
- package/src/views/CollectionList.tsx +264 -205
- package/src/views/Dashboard.tsx +26 -13
- package/src/views/DocumentEdit.tsx +111 -56
- package/src/views/FormDeliveries.tsx +30 -17
- package/src/views/FormEntries.tsx +28 -20
- package/src/views/FormSubmissions.tsx +32 -34
- package/src/views/Forms.tsx +55 -34
- package/src/views/FormsSettings.tsx +94 -0
- package/src/views/Jobs/BusyButton.tsx +56 -0
- package/src/views/Jobs/CancelJobDialog.tsx +127 -0
- package/src/views/Jobs/DrawerActivity.tsx +142 -0
- package/src/views/Jobs/DrawerOverview.tsx +139 -0
- package/src/views/Jobs/DrawerResults.tsx +155 -0
- package/src/views/Jobs/DrawerReview.tsx +464 -0
- package/src/views/Jobs/JobDrawer.tsx +556 -0
- package/src/views/Jobs/JobsTable.tsx +260 -0
- package/src/views/Jobs/WorkerStrip.tsx +144 -0
- package/src/views/Jobs/atoms.tsx +93 -0
- package/src/views/Jobs/focus.ts +56 -0
- package/src/views/Jobs/icons.tsx +111 -0
- package/src/views/Jobs/placeholders.tsx +66 -0
- package/src/views/Jobs/useJobDetail.ts +64 -0
- package/src/views/Jobs/useJobsFeed.ts +249 -0
- package/src/views/Jobs/useReviewItems.ts +187 -0
- package/src/views/Jobs.tsx +282 -105
- package/src/views/MediaBrowser.tsx +71 -21
- package/src/views/Pages/PagesListView.tsx +115 -39
- package/src/views/Posts/NewPostTypeInstructions.tsx +15 -10
- package/src/views/Posts/PostTypesView.tsx +28 -6
- package/src/views/Posts/PostsListView.tsx +130 -40
- package/src/views/SEO.tsx +23 -8
- package/src/views/ScriptTags.tsx +233 -153
- package/src/views/Settings.tsx +215 -256
- package/src/views/SpamFolder.tsx +32 -0
- package/src/views/Trash.tsx +12 -1
- package/src/views/Users.tsx +2 -2
- package/src/views/WidgetsPlaceholder.tsx +33 -0
- package/src/views/dashboard/kpi-grid.ts +38 -0
- package/src/views/lazy-views.tsx +12 -0
- package/src/views/page-editor/PageTab.tsx +2 -2
- package/src/views/page-editor/ReviewBar.tsx +1 -1
- package/src/views/page-editor/VersionHistoryPanel.tsx +1 -1
- package/src/views/seo/AuditTab.tsx +1 -1
- package/src/views/seo/OverviewTab.tsx +6 -5
- package/src/views/seo/ProposalsTab.tsx +1 -1
- package/src/views/settings/AISettingsTab.tsx +10 -6
- package/src/views/settings/AccessProtectionCard.tsx +1 -1
- package/src/views/settings/AdminThemeCard.tsx +228 -35
- package/src/views/settings/AppearanceTab.tsx +10 -6
- package/src/views/settings/BrandPreviewCard.tsx +1 -1
- package/src/views/settings/BrandVoiceCard.tsx +1 -1
- package/src/views/settings/EmailSettingsTab.tsx +11 -7
- package/src/views/settings/GeneralSettingsTab.tsx +10 -6
- package/src/views/settings/ProviderConnectionCard.tsx +1 -1
- package/src/views/settings/SearchDataCard.tsx +1 -1
- package/src/views/settings/SecurityStatusCard.tsx +2 -2
- package/src/views/settings/SecurityTab.tsx +10 -6
- package/src/views/settings/SeoAutopilotCard.tsx +2 -2
- package/src/views/settings/SeoSettingsTab.tsx +13 -9
- package/src/views/settings/SiteIndexStatusCard.tsx +1 -1
- package/src/views/settings/SiteThemeCard.tsx +1 -1
- package/src/views/settings/UpdatesTab.tsx +107 -101
- package/src/views/settings/components.tsx +26 -62
- package/src/views/settings/useAppearanceSettings.ts +116 -25
- package/src/views/users/UserDetailDrawer.tsx +1 -1
- package/dist/components/ui/StatPill.d.ts +0 -18
- package/dist/components/ui/StatPill.d.ts.map +0 -1
- package/dist/components/ui/StatPill.js +0 -5
- package/dist/components/ui/StatPill.js.map +0 -1
- package/src/components/ui/StatPill.tsx +0 -37
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAppearanceBootstrap.js","sourceRoot":"","sources":["../../src/hooks/useAppearanceBootstrap.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"useAppearanceBootstrap.js","sourceRoot":"","sources":["../../src/hooks/useAppearanceBootstrap.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAA8B,MAAM,0BAA0B,CAAA;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAgB;IACrD,MAAM,EAAE,eAAe,EAAE,GAAG,QAAQ,EAAE,CAAA;IACtC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAC/B,4EAA4E;IAC5E,6CAA6C;IAC7C,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAA;IACxC,SAAS,CAAC,GAAG,EAAE;QACb,QAAQ,CAAC,OAAO,GAAG,eAAe,CAAA;IACpC,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAA;IAErB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,IAAI,SAAS,GAAG,KAAK,CAAA;QAErB,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAwB,aAAa,CAAC,CAAA;gBAC9D,IAAI,SAAS,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI;oBAAE,OAAM;gBAC/C,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,0CAA0C;YAC5C,CAAC;QACH,CAAC,CAAA;QAED,KAAK,OAAO,EAAE,CAAA;QAEd,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAA;QAClB,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;AACd,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -60,6 +60,21 @@ export type { SharePreviewLinkDialogProps } from './components/SharePreviewLinkD
|
|
|
60
60
|
export { MediaPickerModal } from './components/MediaPickerModal.js';
|
|
61
61
|
export type { MediaPickerModalProps } from './components/MediaPickerModal.js';
|
|
62
62
|
export { ThemeProvider, useTheme } from './components/ThemeProvider.js';
|
|
63
|
+
export { PageHeader } from './components/ui/PageHeader.js';
|
|
64
|
+
export type { PageHeaderProps } from './components/ui/PageHeader.js';
|
|
65
|
+
export { Breadcrumb } from './components/ui/Breadcrumb.js';
|
|
66
|
+
export type { BreadcrumbProps, BreadcrumbItem } from './components/ui/Breadcrumb.js';
|
|
67
|
+
/** Gives `Breadcrumb` path items real hrefs (admin base path) outside `AdminRoot`. */
|
|
68
|
+
export { AdminLinksProvider } from './components/ui/admin-links.js';
|
|
69
|
+
export type { AdminLinks } from './components/ui/admin-links.js';
|
|
70
|
+
export { CountChip } from './components/ui/CountChip.js';
|
|
71
|
+
export type { CountChipProps } from './components/ui/CountChip.js';
|
|
72
|
+
export { UnderlineTabs, UnderlineTabPanel } from './components/ui/UnderlineTabs.js';
|
|
73
|
+
export type { UnderlineTabsProps, UnderlineTab, UnderlineTabPanelProps, } from './components/ui/UnderlineTabs.js';
|
|
74
|
+
export { Segmented } from './components/ui/Segmented.js';
|
|
75
|
+
export type { SegmentedProps, SegmentedOption } from './components/ui/Segmented.js';
|
|
76
|
+
export { UnsavedBar } from './components/ui/UnsavedBar.js';
|
|
77
|
+
export type { UnsavedBarProps } from './components/ui/UnsavedBar.js';
|
|
63
78
|
export { FocalPointPicker } from './components/FocalPointPicker.js';
|
|
64
79
|
export { PresenceIndicator } from './components/PresenceIndicator.js';
|
|
65
80
|
export { NotificationBell } from './components/NotificationBell.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -42,6 +42,14 @@ export { SchedulePublishDialog } from './components/SchedulePublishDialog.js';
|
|
|
42
42
|
export { SharePreviewLinkDialog } from './components/SharePreviewLinkDialog.js';
|
|
43
43
|
export { MediaPickerModal } from './components/MediaPickerModal.js';
|
|
44
44
|
export { ThemeProvider, useTheme } from './components/ThemeProvider.js';
|
|
45
|
+
export { PageHeader } from './components/ui/PageHeader.js';
|
|
46
|
+
export { Breadcrumb } from './components/ui/Breadcrumb.js';
|
|
47
|
+
/** Gives `Breadcrumb` path items real hrefs (admin base path) outside `AdminRoot`. */
|
|
48
|
+
export { AdminLinksProvider } from './components/ui/admin-links.js';
|
|
49
|
+
export { CountChip } from './components/ui/CountChip.js';
|
|
50
|
+
export { UnderlineTabs, UnderlineTabPanel } from './components/ui/UnderlineTabs.js';
|
|
51
|
+
export { Segmented } from './components/ui/Segmented.js';
|
|
52
|
+
export { UnsavedBar } from './components/ui/UnsavedBar.js';
|
|
45
53
|
export { FocalPointPicker } from './components/FocalPointPicker.js';
|
|
46
54
|
export { PresenceIndicator } from './components/PresenceIndicator.js';
|
|
47
55
|
export { NotificationBell } from './components/NotificationBell.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/layout/Header.d.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
2
|
export interface HeaderProps {
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Renders a menu button below 769px that opens the navigation drawer. Leave
|
|
5
|
+
* it out when the shell has its own opener: the admin's `Layout` does,
|
|
6
|
+
* because its mobile tab bar's More opens the drawer and the kit's mobile
|
|
7
|
+
* topbar has no menu button.
|
|
8
|
+
*/
|
|
9
|
+
onToggleSidebar?: () => void;
|
|
4
10
|
session?: any;
|
|
5
11
|
onNavigate: (path: string) => void;
|
|
6
12
|
/**
|
|
7
|
-
* Page-specific actions rendered on the
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* without forcing every view to render its own header.
|
|
13
|
+
* Page-specific actions rendered on the right of the top bar, before the
|
|
14
|
+
* utility icons. Used to surface list-level primary actions like
|
|
15
|
+
* "+ New Post Type" without forcing every view to render its own header.
|
|
11
16
|
*
|
|
12
17
|
* The Layout decides what to pass here based on `currentPath`.
|
|
13
18
|
* Keeping the slot on Header rather than per-view means the
|
|
@@ -18,5 +23,9 @@ export interface HeaderProps {
|
|
|
18
23
|
/** Signs the user out (revokes the server session + clears local state). */
|
|
19
24
|
onLogout?: () => void;
|
|
20
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* The topbar (SHELL.md §1, §3): search trigger on the left; the page actions
|
|
28
|
+
* slot, then the dark-mode toggle, notifications and the avatar on the right.
|
|
29
|
+
*/
|
|
21
30
|
export declare function Header({ onToggleSidebar, session, onNavigate, onLogout, pageActions, }: HeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
22
31
|
//# sourceMappingURL=Header.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"AAEA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAUd,MAAM,WAAW,WAAW;IAC1B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAA;IAC5B,OAAO,CAAC,EAAE,GAAG,CAAA;IACb,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,SAAS,CAAA;IACvB,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB;AA0DD;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EACrB,eAAe,EACf,OAAO,EACP,UAAU,EACV,QAAQ,EACR,WAAW,GACZ,EAAE,WAAW,2CAgKb"}
|
package/dist/layout/Header.js
CHANGED
|
@@ -1,29 +1,94 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from 'react';
|
|
4
|
-
import {
|
|
3
|
+
import { useCallback, useEffect, useRef, useState, useSyncExternalStore, } from 'react';
|
|
4
|
+
import { LogOut, Menu, Moon, Search, Settings, Sun, User } from 'lucide-react';
|
|
5
5
|
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
|
|
6
6
|
import { adminPortalContainer } from '../lib/portal-container.js';
|
|
7
7
|
import { CommandPalette } from '../components/CommandPalette.js';
|
|
8
8
|
import { NotificationBell } from '../components/NotificationBell.js';
|
|
9
9
|
import { useTheme } from '../components/ThemeProvider.js';
|
|
10
10
|
import { LocaleSwitcher } from '../components/LocaleSwitcher.js';
|
|
11
|
-
import {
|
|
11
|
+
import { TOPBAR_ICON_BUTTON } from './topbar-classes.js';
|
|
12
|
+
/**
|
|
13
|
+
* Avatar initials: the first letters of the first and last words of the
|
|
14
|
+
* user's name ("Brandon West" → "BW"), else the first letter of the email.
|
|
15
|
+
*/
|
|
16
|
+
function userInitials(user) {
|
|
17
|
+
const firstLetter = (word) => word ? (Array.from(word)[0] ?? '').toLocaleUpperCase() : '';
|
|
18
|
+
const words = user?.name?.trim().split(/\s+/).filter(Boolean) ?? [];
|
|
19
|
+
if (words.length > 0) {
|
|
20
|
+
return firstLetter(words[0]) + (words.length > 1 ? firstLetter(words[words.length - 1]) : '');
|
|
21
|
+
}
|
|
22
|
+
return firstLetter(user?.email?.trim()) || 'A';
|
|
23
|
+
}
|
|
24
|
+
const APPLE_HINT = {
|
|
25
|
+
kbd: '⌘K',
|
|
26
|
+
name: 'Search (Command K)',
|
|
27
|
+
keyshortcuts: 'Meta+K Control+K',
|
|
28
|
+
};
|
|
29
|
+
const CTRL_HINT = {
|
|
30
|
+
kbd: 'Ctrl+K',
|
|
31
|
+
name: 'Search (Ctrl+K)',
|
|
32
|
+
// Meta+K still opens the palette here, but Windows keeps Win+K for itself,
|
|
33
|
+
// so only Ctrl+K is advertised.
|
|
34
|
+
keyshortcuts: 'Control+K',
|
|
35
|
+
};
|
|
36
|
+
function platformHint() {
|
|
37
|
+
const nav = navigator;
|
|
38
|
+
const platform = nav.userAgentData?.platform || nav.platform || nav.userAgent;
|
|
39
|
+
return /mac|iphone|ipad|ipod/i.test(platform) ? APPLE_HINT : CTRL_HINT;
|
|
40
|
+
}
|
|
41
|
+
const subscribeToNothing = () => () => { };
|
|
42
|
+
/**
|
|
43
|
+
* `null` on the server and while hydrating, where the platform is unknown, so
|
|
44
|
+
* the server markup and the first client render agree; React then renders
|
|
45
|
+
* again with the browser's answer. A client-only mount gets it right away.
|
|
46
|
+
*/
|
|
47
|
+
function useSearchHint() {
|
|
48
|
+
return useSyncExternalStore(subscribeToNothing, platformHint, () => null);
|
|
49
|
+
}
|
|
50
|
+
// Radix focuses the item under the pointer or the arrow keys and marks it
|
|
51
|
+
// `data-highlighted`; that state gets the kit's hover fill. Keyboard focus also
|
|
52
|
+
// gets the admin's focus ring (responsive.css).
|
|
53
|
+
const MENU_ITEM = 'rounded-7 flex cursor-pointer items-center gap-2 px-3 py-2 text-[13px]';
|
|
54
|
+
const MENU_ITEM_DEFAULT = `${MENU_ITEM} text-txt data-[highlighted]:bg-acc-l data-[highlighted]:text-acc`;
|
|
55
|
+
/**
|
|
56
|
+
* The topbar (SHELL.md §1, §3): search trigger on the left; the page actions
|
|
57
|
+
* slot, then the dark-mode toggle, notifications and the avatar on the right.
|
|
58
|
+
*/
|
|
12
59
|
export function Header({ onToggleSidebar, session, onNavigate, onLogout, pageActions, }) {
|
|
13
60
|
const [showCommandPalette, setShowCommandPalette] = useState(false);
|
|
14
|
-
const [searchQuery, setSearchQuery] = useState('');
|
|
15
61
|
const { resolvedTheme, setTheme } = useTheme();
|
|
62
|
+
const searchRef = useRef(null);
|
|
63
|
+
// Where focus was when the palette opened (the search trigger, or wherever
|
|
64
|
+
// Ctrl/Cmd+K was pressed). The palette unmounts on close and focus would
|
|
65
|
+
// fall to <body>.
|
|
66
|
+
const openerRef = useRef(null);
|
|
67
|
+
const setPaletteOpen = useCallback((open) => {
|
|
68
|
+
if (open && !openerRef.current) {
|
|
69
|
+
openerRef.current = document.activeElement;
|
|
70
|
+
}
|
|
71
|
+
setShowCommandPalette(open);
|
|
72
|
+
}, []);
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
if (showCommandPalette)
|
|
75
|
+
return;
|
|
76
|
+
const opener = openerRef.current;
|
|
77
|
+
openerRef.current = null;
|
|
78
|
+
const focusLost = document.activeElement === null || document.activeElement === document.body;
|
|
79
|
+
if (opener && opener !== document.body && opener.isConnected && focusLost)
|
|
80
|
+
opener.focus();
|
|
81
|
+
}, [showCommandPalette]);
|
|
16
82
|
const toggleTheme = () => {
|
|
17
83
|
setTheme(resolvedTheme === 'dark' ? 'light' : 'dark');
|
|
18
84
|
};
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}) }), _jsx("span", { className: "border-border bg-background text-muted-foreground pointer-events-none absolute top-1/2 right-2 hidden -translate-y-1/2 rounded border px-1.5 py-0.5 font-mono text-[10px] sm:inline-flex", "aria-hidden": true, children: "\u2318K" })] }), _jsx("button", { onClick: () => setShowCommandPalette(true), className: "hover:bg-accent rounded-lg p-2 transition-colors md:hidden", "aria-label": "Search", children: _jsx(Search, { className: "text-muted-foreground h-5 w-5" }) }), _jsxs("div", { className: "ml-auto flex items-center gap-1.5", children: [_jsx(LocaleSwitcher, {}), _jsx("button", { onClick: toggleTheme, className: "hover:bg-accent rounded-lg p-2 transition-colors", "aria-label": resolvedTheme === 'dark' ? 'Switch to light mode' : 'Switch to dark mode', children: resolvedTheme === 'dark' ? (_jsx(Sun, { className: "text-muted-foreground h-5 w-5" })) : (_jsx(Moon, { className: "text-muted-foreground h-5 w-5" })) }), _jsx(NotificationBell, {}), _jsxs(DropdownMenu.Root, { children: [_jsx(DropdownMenu.Trigger, { asChild: true, children: _jsxs("button", { className: "hover:bg-accent flex items-center gap-1.5 rounded-lg p-1 transition-colors", "aria-label": "Account menu", children: [_jsx("div", { className: "bg-primary flex h-8 w-8 items-center justify-center rounded-full", children: _jsx("span", { className: "text-primary-foreground text-xs font-semibold", children: initial }) }), _jsx(ChevronDown, { className: "text-muted-foreground hidden h-4 w-4 sm:block", "aria-hidden": true })] }) }), _jsx(DropdownMenu.Portal, { container: adminPortalContainer(), children: _jsxs(DropdownMenu.Content, { className: "bg-popover text-popover-foreground border-border z-50 min-w-[200px] rounded-lg border p-1 shadow-lg", align: "end", sideOffset: 5, children: [_jsxs("div", { className: "border-border border-b px-3 py-2", children: [_jsx("p", { className: "text-sm font-medium", children: session?.user?.name ?? 'Admin User' }), _jsx("p", { className: "text-muted-foreground text-xs", children: session?.user?.email ?? 'admin@example.com' })] }), _jsxs(DropdownMenu.Item, { className: "hover:bg-accent flex cursor-pointer items-center gap-2 rounded px-3 py-2 text-sm outline-none", onSelect: () => onNavigate('/profile'), children: [_jsx(User, { className: "h-4 w-4" }), "Profile"] }), _jsx(DropdownMenu.Item, { className: "hover:bg-accent flex cursor-pointer items-center gap-2 rounded px-3 py-2 text-sm outline-none", onSelect: () => onNavigate('/settings'), children: "Settings" }), _jsx(DropdownMenu.Separator, { className: "bg-border my-1 h-px" }), _jsx(DropdownMenu.Item, { className: "text-destructive hover:bg-accent flex cursor-pointer items-center gap-2 rounded px-3 py-2 text-sm outline-none", onSelect: () => onLogout?.(), children: "Logout" })] }) })] }), pageActions && (_jsx("div", { className: "border-border ml-2 hidden items-center gap-2 border-l pl-3 md:flex", children: pageActions }))] })] }), _jsx(CommandPalette, { open: showCommandPalette, onOpenChange: setShowCommandPalette, onNavigate: onNavigate })] }));
|
|
85
|
+
const user = session?.user;
|
|
86
|
+
const displayName = user?.name?.trim() || user?.email || 'Admin User';
|
|
87
|
+
const initials = userInitials(user);
|
|
88
|
+
const searchHint = useSearchHint();
|
|
89
|
+
return (_jsxs(_Fragment, { children: [_jsxs("header", { className: "bg-sb border-bdr tablet:px-3.5 mobile:gap-1.5 mobile:px-2.5 4k:px-7 flex h-[var(--tbh)] shrink-0 items-center gap-2.5 border-b px-5", children: [onToggleSidebar ? (_jsx("button", { type: "button", onClick: onToggleSidebar, className: `${TOPBAR_ICON_BUTTON} not-mobile:hidden`, "aria-label": "Toggle sidebar", children: _jsx(Menu, { size: 16, strokeWidth: 1.75, "aria-hidden": true }) })) : null, _jsxs("button", { ref: searchRef, type: "button", onClick: () => {
|
|
90
|
+
openerRef.current = searchRef.current;
|
|
91
|
+
setPaletteOpen(true);
|
|
92
|
+
}, "aria-label": searchHint?.name ?? 'Search', "aria-keyshortcuts": searchHint?.keyshortcuts ?? APPLE_HINT.keyshortcuts, className: "rounded-8 border-bdr bg-bg text-sub hover:border-acc-m prenta-touch-target wide:max-w-[360px] tablet:max-w-[220px] mobile:h-11 mobile:max-w-11 mobile:flex-[0_0_44px] mobile:justify-center mobile:p-0 4k:max-w-[440px] 4k:px-3.5 4k:py-[9px] 4k:text-[14px] flex max-w-[280px] min-w-0 flex-1 cursor-pointer items-center gap-2 border px-3 py-1.5 text-left text-[13px] leading-[normal]", children: [_jsx(Search, { size: 14, strokeWidth: 1.75, className: "shrink-0", "aria-hidden": true }), _jsx("span", { className: "mobile:hidden truncate", children: "Search\u2026" }), searchHint ? (_jsx("kbd", { className: "border-bdr bg-card text-sub rounded-4 mobile:hidden ml-auto border px-[5px] py-px font-mono text-[10px] leading-[normal]", children: searchHint.kbd })) : null] }), _jsxs("div", { className: "ml-auto flex items-center gap-2.5", children: [pageActions ? (_jsx("div", { className: "border-bdr not-mobile:flex hidden items-center gap-2 border-r pr-2.5", children: pageActions })) : null, _jsxs("div", { className: "flex items-center gap-[3px]", children: [_jsx(LocaleSwitcher, {}), _jsx("button", { type: "button", onClick: toggleTheme, className: TOPBAR_ICON_BUTTON, "aria-label": resolvedTheme === 'dark' ? 'Switch to light mode' : 'Switch to dark mode', children: resolvedTheme === 'dark' ? (_jsx(Sun, { size: 16, strokeWidth: 1.75, "aria-hidden": true })) : (_jsx(Moon, { size: 16, strokeWidth: 1.75, "aria-hidden": true })) }), _jsx(NotificationBell, {}), _jsxs(DropdownMenu.Root, { children: [_jsx(DropdownMenu.Trigger, { asChild: true, children: _jsx("button", { type: "button", "aria-label": "Account menu", title: displayName, className: "bg-acc text-acc-on prenta-touch-hit relative ml-1 flex h-8 w-8 shrink-0 cursor-pointer items-center justify-center rounded-full border-0 p-0 text-[12px] leading-none font-bold [--touch-hit-block:-6px] [--touch-hit-inline:-6px]", children: initials }) }), _jsx(DropdownMenu.Portal, { container: adminPortalContainer(), children: _jsxs(DropdownMenu.Content, { className: "rounded-10 border-bdr bg-card text-txt shadow-shd2 z-50 min-w-[200px] border p-1", align: "end", sideOffset: 6, children: [_jsxs("div", { className: "border-bdr mb-1 border-b px-3 py-2", children: [_jsx("p", { className: "text-txt text-[13px] font-semibold", children: displayName }), user?.email && user.email !== displayName ? (_jsx("p", { className: "text-sub text-[12px]", children: user.email })) : null] }), _jsxs(DropdownMenu.Item, { className: MENU_ITEM_DEFAULT, onSelect: () => onNavigate('/profile'), children: [_jsx(User, { size: 16, strokeWidth: 1.75, "aria-hidden": true }), "Profile"] }), _jsxs(DropdownMenu.Item, { className: MENU_ITEM_DEFAULT, onSelect: () => onNavigate('/settings'), children: [_jsx(Settings, { size: 16, strokeWidth: 1.75, "aria-hidden": true }), "Settings"] }), _jsx(DropdownMenu.Separator, { className: "bg-bdr my-1 h-px" }), _jsxs(DropdownMenu.Item, { className: `${MENU_ITEM} text-err data-[highlighted]:bg-err-l`, onSelect: () => onLogout?.(), children: [_jsx(LogOut, { size: 16, strokeWidth: 1.75, "aria-hidden": true }), "Logout"] })] }) })] })] })] })] }), _jsx(CommandPalette, { open: showCommandPalette, onOpenChange: setPaletteOpen, onNavigate: onNavigate })] }));
|
|
28
93
|
}
|
|
29
94
|
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/layout/Header.tsx"],"names":[],"mappings":"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"}
|
package/dist/layout/Layout.d.ts
CHANGED
|
@@ -8,14 +8,16 @@ export interface LayoutProps {
|
|
|
8
8
|
children: ReactNode;
|
|
9
9
|
}
|
|
10
10
|
/**
|
|
11
|
-
* Layout — thin shell that wires Sidebar/Header
|
|
11
|
+
* Layout — thin shell that wires Sidebar/Header into the
|
|
12
12
|
* `<AdminShell>` primitive.
|
|
13
13
|
*
|
|
14
14
|
* `AdminShell` (in `./primitives/AdminShell.tsx`) owns the actual layout
|
|
15
15
|
* algorithm (CSS Grid on desktop, fixed slide-in overlay on mobile,
|
|
16
16
|
* JS-driven `matchMedia` breakpoint) so that every layout decision lives
|
|
17
|
-
* in one place. Per-product chrome (Sidebar, Header
|
|
18
|
-
*
|
|
17
|
+
* in one place. Per-product chrome (Sidebar, Header) composes on top of it.
|
|
18
|
+
*
|
|
19
|
+
* There is no automatic breadcrumb bar: second-level screens pass an explicit
|
|
20
|
+
* `<Breadcrumb>` to their `PageHeader` (SHELL.md §4 "Breadcrumb rule").
|
|
19
21
|
*
|
|
20
22
|
* DO NOT re-implement layout logic in this file — extend `AdminShell`
|
|
21
23
|
* instead. The previous flex + `fixed`↔`static` toggle caused recurring
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../src/layout/Layout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"Layout.d.ts","sourceRoot":"","sources":["../../src/layout/Layout.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAUpE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,GAAG,CAAA;IACX,OAAO,EAAE,GAAG,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;IACrB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,MAAM,CAAC,EACrB,MAAM,EACN,OAAO,EACP,WAAW,EACX,UAAU,EACV,QAAQ,EACR,QAAQ,GACT,EAAE,WAAW,2CAgFb"}
|
package/dist/layout/Layout.js
CHANGED
|
@@ -1,77 +1,68 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { useMemo, useState, useEffect } from 'react';
|
|
4
|
-
import { Plus } from 'lucide-react';
|
|
5
4
|
import { Sidebar } from './Sidebar.js';
|
|
5
|
+
import { MobileTabBar } from './MobileTabBar.js';
|
|
6
|
+
import { useNavItems } from './use-nav-items.js';
|
|
7
|
+
import { withSettingsTabs } from './nav-config.js';
|
|
6
8
|
import { Header } from './Header.js';
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
9
|
+
import { AdminShell, DRAWER_ID } from './primitives/AdminShell.js';
|
|
10
|
+
import { Toaster } from '../components/ui/Toaster.js';
|
|
11
|
+
import { TIER_MEDIA } from '../lib/tiers.js';
|
|
10
12
|
/**
|
|
11
|
-
* Layout — thin shell that wires Sidebar/Header
|
|
13
|
+
* Layout — thin shell that wires Sidebar/Header into the
|
|
12
14
|
* `<AdminShell>` primitive.
|
|
13
15
|
*
|
|
14
16
|
* `AdminShell` (in `./primitives/AdminShell.tsx`) owns the actual layout
|
|
15
17
|
* algorithm (CSS Grid on desktop, fixed slide-in overlay on mobile,
|
|
16
18
|
* JS-driven `matchMedia` breakpoint) so that every layout decision lives
|
|
17
|
-
* in one place. Per-product chrome (Sidebar, Header
|
|
18
|
-
*
|
|
19
|
+
* in one place. Per-product chrome (Sidebar, Header) composes on top of it.
|
|
20
|
+
*
|
|
21
|
+
* There is no automatic breadcrumb bar: second-level screens pass an explicit
|
|
22
|
+
* `<Breadcrumb>` to their `PageHeader` (SHELL.md §4 "Breadcrumb rule").
|
|
19
23
|
*
|
|
20
24
|
* DO NOT re-implement layout logic in this file — extend `AdminShell`
|
|
21
25
|
* instead. The previous flex + `fixed`↔`static` toggle caused recurring
|
|
22
26
|
* sidebar-overlap bugs; the grid-based primitive is the contract.
|
|
23
27
|
*/
|
|
24
28
|
export function Layout({ config, session, currentPath, onNavigate, onLogout, children, }) {
|
|
25
|
-
const [
|
|
29
|
+
const [manualCollapsed, setManualCollapsed] = useState(false);
|
|
30
|
+
const [rail, setRail] = useState(false);
|
|
31
|
+
const [mobile, setMobile] = useState(false);
|
|
26
32
|
const [mobileSidebarOpen, setMobileSidebarOpen] = useState(false);
|
|
33
|
+
// The mobile drawer always shows the full sidebar, labels and sub-groups.
|
|
34
|
+
const sidebarCollapsed = !mobile && (rail || manualCollapsed);
|
|
35
|
+
const navItems = useNavItems(config);
|
|
36
|
+
// The mobile drawer also lists the Settings tabs under Settings
|
|
37
|
+
// (CONFLICTS.md §2); wider screens keep Settings a single row.
|
|
38
|
+
const drawerItems = useMemo(() => (mobile ? withSettingsTabs(navItems, config) : navItems), [mobile, navItems, config]);
|
|
39
|
+
// Kit tiers (SHELL.md §8): ≤768px mobile tab bar, 769–1024px icon rail.
|
|
40
|
+
// Half-open ranges (lib/tiers.ts), the same as the `mobile:`/`tablet:` CSS
|
|
41
|
+
// variants and AdminShell's `min-width: 769px`, so no fractional width
|
|
42
|
+
// (768.5px at a zoom level) falls between two tiers.
|
|
43
|
+
useEffect(() => {
|
|
44
|
+
const railMq = window.matchMedia(TIER_MEDIA.tablet);
|
|
45
|
+
const mobileMq = window.matchMedia(TIER_MEDIA.mobile);
|
|
46
|
+
const apply = () => {
|
|
47
|
+
setRail(railMq.matches);
|
|
48
|
+
setMobile(mobileMq.matches);
|
|
49
|
+
};
|
|
50
|
+
apply();
|
|
51
|
+
railMq.addEventListener('change', apply);
|
|
52
|
+
mobileMq.addEventListener('change', apply);
|
|
53
|
+
return () => {
|
|
54
|
+
railMq.removeEventListener('change', apply);
|
|
55
|
+
mobileMq.removeEventListener('change', apply);
|
|
56
|
+
};
|
|
57
|
+
}, []);
|
|
27
58
|
useEffect(() => {
|
|
28
59
|
setMobileSidebarOpen(false);
|
|
29
60
|
}, [currentPath]);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
* Centralised here so the top bar's actions row stays consistent
|
|
37
|
-
* across view changes — no flicker on navigation, no per-view header
|
|
38
|
-
* reimplementation. Views that need view-local actions (e.g. a
|
|
39
|
-
* "Save draft" button on the post editor) continue to render them
|
|
40
|
-
* inside their own hero; this slot is for the highest-level
|
|
41
|
-
* primary/secondary pair that mirrors the reference dashboard.
|
|
42
|
-
*
|
|
43
|
-
* Resolution rules:
|
|
44
|
-
* - Dashboard / Posts / Pages → nothing here; those views render their
|
|
45
|
-
* hero CTAs inside the page header per the design
|
|
46
|
-
* - Other list views → just "+ New <Type>"
|
|
47
|
-
* - Editor views → no top-bar action (editor renders its own toolbar)
|
|
48
|
-
*/
|
|
49
|
-
function computePageActions({ currentPath, config, onNavigate, }) {
|
|
50
|
-
const collections = collectionList(config);
|
|
51
|
-
// Dashboard, /posts, and /pages render their own hero CTAs in the page
|
|
52
|
-
// header (design `.page-hdr` → `.hdr-r`), so the top bar stays empty there.
|
|
53
|
-
const isDashboard = currentPath === '/' || currentPath === '/dashboard';
|
|
54
|
-
if (isDashboard || currentPath === '/posts' || currentPath === '/pages') {
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
if (currentPath === '/posts/types') {
|
|
58
|
-
return (_jsxs("button", { type: "button", onClick: () => onNavigate('/posts/types/new'), className: "bg-primary text-primary-foreground hover:bg-primary/90 focus-visible:ring-ring inline-flex items-center gap-1.5 rounded-lg px-3.5 py-1.5 text-sm font-medium shadow-sm transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx(Plus, { className: "h-3.5 w-3.5", "aria-hidden": true }), "New Post Type"] }));
|
|
59
|
-
}
|
|
60
|
-
// List views — surface "+ New X" so authors can keep creating without
|
|
61
|
-
// hunting for a per-list button. Skip on editor views; those have their
|
|
62
|
-
// own toolbar.
|
|
63
|
-
for (const c of collections) {
|
|
64
|
-
if (currentPath === `/${c.slug}`) {
|
|
65
|
-
return (_jsxs("button", { type: "button", onClick: () => onNavigate(`/${c.slug}/new`), className: "bg-primary text-primary-foreground hover:bg-primary/90 focus-visible:ring-ring inline-flex items-center gap-1.5 rounded-lg px-3.5 py-1.5 text-sm font-medium shadow-sm transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx(Plus, { className: "h-3.5 w-3.5", "aria-hidden": true }), "New ", c.labels?.singular ?? c.slug] }));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
return null;
|
|
69
|
-
}
|
|
70
|
-
function collectionList(config) {
|
|
71
|
-
if (!config?.collections)
|
|
72
|
-
return [];
|
|
73
|
-
const raw = config.collections;
|
|
74
|
-
const list = Array.isArray(raw) ? raw : Object.values(raw);
|
|
75
|
-
return list.filter((c) => !c?.admin?.hidden);
|
|
61
|
+
return (_jsxs(_Fragment, { children: [_jsx(Toaster, { aboveTabBar: mobile }), _jsx(AdminShell, { desktopBreakpoint: 769, mobileSidebarOpen: mobileSidebarOpen, onMobileSidebarClose: () => setMobileSidebarOpen(false), sidebar: _jsx(Sidebar, { collapsed: sidebarCollapsed, onToggleCollapse: () => setManualCollapsed((value) => !value), currentPath: currentPath, onNavigate: onNavigate, config: config, items: drawerItems }), tabBar: _jsx(MobileTabBar, { items: navItems, currentPath: currentPath, onNavigate: onNavigate, onMore: () => setMobileSidebarOpen((open) => !open), moreOpen: mobileSidebarOpen, drawerId: DRAWER_ID }), header:
|
|
62
|
+
// No onToggleSidebar: below 769px the tab bar's More opens the
|
|
63
|
+
// drawer, and the kit's mobile topbar has no menu button. No
|
|
64
|
+
// pageActions either: every screen's create action sits in its own
|
|
65
|
+
// page header, as in the kit (Post Types' "New Post Type").
|
|
66
|
+
_jsx(Header, { session: session, onNavigate: onNavigate, onLogout: onLogout }), children: _jsx("div", { className: "h-full min-h-0", children: children }) })] }));
|
|
76
67
|
}
|
|
77
68
|
//# sourceMappingURL=Layout.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../src/layout/Layout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAkB,MAAM,OAAO,CAAA;AACpE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../src/layout/Layout.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type NavItem } from './nav-config.js';
|
|
2
|
+
export interface MobileTabBarProps {
|
|
3
|
+
items: NavItem[];
|
|
4
|
+
currentPath: string;
|
|
5
|
+
onNavigate: (path: string) => void;
|
|
6
|
+
/** Opens the nav drawer ("More"). */
|
|
7
|
+
onMore: () => void;
|
|
8
|
+
moreOpen: boolean;
|
|
9
|
+
/** The drawer's element id, for More's `aria-controls`. */
|
|
10
|
+
drawerId?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Mobile nav (≤768px, SHELL.md §2 and CONFLICTS.md §2 "mobile nav"): a fixed
|
|
14
|
+
* 56px bottom bar that scrolls sideways, one tab per kit destination (icon over
|
|
15
|
+
* a 9px label). Collection and plugin entries, sub-pages and Settings tabs
|
|
16
|
+
* stay in the drawer, opened from the last tab, "More". It sits below every
|
|
17
|
+
* overlay layer (`--z-tabbar`), so sheets and dialogs cover it.
|
|
18
|
+
*/
|
|
19
|
+
export declare function MobileTabBar({ items, currentPath, onNavigate, onMore, moreOpen, drawerId, }: MobileTabBarProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=MobileTabBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileTabBar.d.ts","sourceRoot":"","sources":["../../src/layout/MobileTabBar.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAqC,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAEjF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,qCAAqC;IACrC,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;IACjB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAOD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,QAAQ,GACT,EAAE,iBAAiB,2CAwDnB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { Ellipsis } from 'lucide-react';
|
|
4
|
+
import { hasActiveDescendant, isPathActive } from './nav-config.js';
|
|
5
|
+
// Kit tab (SHELL.md §2): icon over a 9px label, at least 60px wide. 44px tall
|
|
6
|
+
// so every tab clears the touch target minimum.
|
|
7
|
+
const TAB = 'rounded-7 relative flex min-h-11 min-w-[60px] shrink-0 cursor-pointer flex-col items-center justify-center gap-[3px] border-0 px-1 py-1.5';
|
|
8
|
+
/**
|
|
9
|
+
* Mobile nav (≤768px, SHELL.md §2 and CONFLICTS.md §2 "mobile nav"): a fixed
|
|
10
|
+
* 56px bottom bar that scrolls sideways, one tab per kit destination (icon over
|
|
11
|
+
* a 9px label). Collection and plugin entries, sub-pages and Settings tabs
|
|
12
|
+
* stay in the drawer, opened from the last tab, "More". It sits below every
|
|
13
|
+
* overlay layer (`--z-tabbar`), so sheets and dialogs cover it.
|
|
14
|
+
*/
|
|
15
|
+
export function MobileTabBar({ items, currentPath, onNavigate, onMore, moreOpen, drawerId, }) {
|
|
16
|
+
const tabs = items.filter((item) => !item.extra);
|
|
17
|
+
return (_jsx("nav", { "aria-label": "Tab bar", className: "bg-sb border-bdr shadow-tabbar fixed right-0 bottom-0 left-0 z-[var(--z-tabbar)] flex h-[calc(var(--tabbar-h)+env(safe-area-inset-bottom))] items-start border-t pb-[env(safe-area-inset-bottom)]", children: _jsxs("div", { className: "flex h-[var(--tabbar-h)] w-full flex-row items-center gap-0.5 overflow-x-auto overflow-y-hidden px-2 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", children: [tabs.map((item) => {
|
|
18
|
+
const active = item.children?.length
|
|
19
|
+
? isPathActive(currentPath, item.path) ||
|
|
20
|
+
hasActiveDescendant(item.children, currentPath) ||
|
|
21
|
+
currentPath.split(/[?#]/)[0].startsWith(item.path + '/')
|
|
22
|
+
: isPathActive(currentPath, item.path);
|
|
23
|
+
const Icon = item.icon;
|
|
24
|
+
return (_jsxs("button", { type: "button", onClick: () => onNavigate(item.path), "aria-current": active ? 'page' : undefined, className: `${TAB} ${active
|
|
25
|
+
? 'bg-acc-l text-acc font-[550] forced-colors:outline-2 forced-colors:-outline-offset-2 forced-colors:outline-solid'
|
|
26
|
+
: 'text-sub bg-transparent font-[450]'}`, children: [_jsx(Icon, { className: "h-4 w-4 shrink-0", size: 16, strokeWidth: 1.75, "aria-hidden": true }), _jsx("span", { className: "text-tab leading-[normal] tracking-[0.2px] whitespace-nowrap", children: item.label }), item.badge && item.badge > 0 ? (_jsx("span", { className: "rounded-pill bg-err text-badge text-acc-on absolute top-0.5 left-[calc(50%+4px)] flex h-4 min-w-4 items-center justify-center px-1 leading-none font-bold tabular-nums", "aria-label": `${item.badge} unread`, children: item.badge > 99 ? '99+' : item.badge })) : null] }, `tab:${item.label}`));
|
|
27
|
+
}), _jsxs("button", { type: "button", onClick: onMore, "aria-expanded": moreOpen, "aria-controls": drawerId, className: `${TAB} text-sub bg-transparent font-[450]`, children: [_jsx(Ellipsis, { className: "h-4 w-4 shrink-0", strokeWidth: 1.75, "aria-hidden": true }), _jsx("span", { className: "text-tab leading-[normal] tracking-[0.2px] whitespace-nowrap", children: "More" })] })] }) }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=MobileTabBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileTabBar.js","sourceRoot":"","sources":["../../src/layout/MobileTabBar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAgB,MAAM,iBAAiB,CAAA;AAajF,8EAA8E;AAC9E,gDAAgD;AAChD,MAAM,GAAG,GACP,2IAA2I,CAAA;AAE7I;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,UAAU,EACV,MAAM,EACN,QAAQ,EACR,QAAQ,GACU;IAClB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAEhD,OAAO,CACL,4BACa,SAAS,EACpB,SAAS,EAAC,mMAAmM,YAE7M,eAAK,SAAS,EAAC,2JAA2J,aACvK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;oBACjB,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM;wBAClC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;4BACpC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;4BAC/C,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;wBAC3D,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;oBACxC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;oBACtB,OAAO,CACL,kBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,kBACtB,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EACzC,SAAS,EAAE,GAAG,GAAG,IACf,MAAM;4BACJ,CAAC,CAAC,kHAAkH;4BACpH,CAAC,CAAC,oCACN,EAAE,aAEF,KAAC,IAAI,IAAC,SAAS,EAAC,kBAAkB,EAAC,IAAI,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,wBAAgB,EAC9E,eAAM,SAAS,EAAC,8DAA8D,YAC3E,IAAI,CAAC,KAAK,GACN,EACN,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAC9B,eACE,SAAS,EAAC,wKAAwK,gBACtK,GAAG,IAAI,CAAC,KAAK,SAAS,YAEjC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAChC,CACR,CAAC,CAAC,CAAC,IAAI,KArBH,OAAO,IAAI,CAAC,KAAK,EAAE,CAsBjB,CACV,CAAA;gBACH,CAAC,CAAC,EACF,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAM,mBACA,QAAQ,mBACR,QAAQ,EACvB,SAAS,EAAE,GAAG,GAAG,qCAAqC,aAEtD,KAAC,QAAQ,IAAC,SAAS,EAAC,kBAAkB,EAAC,WAAW,EAAE,IAAI,wBAAgB,EACxE,eAAM,SAAS,EAAC,8DAA8D,qBAAY,IACnF,IACL,GACF,CACP,CAAA;AACH,CAAC"}
|
package/dist/layout/Sidebar.d.ts
CHANGED
|
@@ -1,36 +1,18 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type NavItem } from './nav-config.js';
|
|
2
2
|
export interface SidebarProps {
|
|
3
3
|
collapsed: boolean;
|
|
4
4
|
onToggleCollapse: () => void;
|
|
5
5
|
currentPath: string;
|
|
6
6
|
onNavigate: (path: string) => void;
|
|
7
7
|
config?: any;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
export interface NavItem {
|
|
11
|
-
path: string;
|
|
12
|
-
label: string;
|
|
13
|
-
icon: LucideIcon;
|
|
14
|
-
/**
|
|
15
|
-
* Section header. Items sharing the same `group` are grouped together
|
|
16
|
-
* under a header rendered on first encounter. Items without a `group`
|
|
17
|
-
* render at the top of the nav in document order.
|
|
18
|
-
*/
|
|
19
|
-
group?: string;
|
|
20
|
-
/** Indented children rendered immediately after this item. */
|
|
21
|
-
children?: NavItem[];
|
|
22
|
-
/**
|
|
23
|
-
* Optional unread/notification count. Rendered as a red pill (expanded)
|
|
24
|
-
* or a dot (collapsed). Falsy / zero values render nothing.
|
|
25
|
-
*/
|
|
26
|
-
badge?: number;
|
|
8
|
+
/** Nav tree from `useNavItems`; built (and Forms counts fetched) here when omitted. */
|
|
9
|
+
items?: NavItem[];
|
|
27
10
|
}
|
|
28
11
|
/**
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* Users, API Keys, Settings) is anchored under the right group.
|
|
12
|
+
* The admin sidebar (SHELL.md §2). Expanded: section labels, rows and
|
|
13
|
+
* collapsible sub-groups. Collapsed or at ≤1024px: a 60px icon rail with no
|
|
14
|
+
* sub-items, the parent active for any child page, children in a flyout and
|
|
15
|
+
* labels kept for screen readers. The nav itself comes from `nav-config`.
|
|
34
16
|
*/
|
|
35
|
-
export declare function
|
|
17
|
+
export declare function Sidebar({ collapsed, onToggleCollapse, currentPath, onNavigate, config, items, }: SidebarProps): import("react/jsx-runtime").JSX.Element;
|
|
36
18
|
//# sourceMappingURL=Sidebar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"AAWA,OAAO,EAAsD,KAAK,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAiHlG,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,uFAAuF;IACvF,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,MAAM,EACN,KAAK,GACN,EAAE,YAAY,2CAsDd"}
|