@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
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
export interface PageHeaderProps {
|
|
3
|
+
/** Page title. It equals the screen's sidebar label. */
|
|
4
|
+
title: string;
|
|
5
|
+
subtitle?: ReactNode;
|
|
6
|
+
/** Right-aligned header actions (buttons, AI button, live toggle). */
|
|
7
|
+
actions?: ReactNode;
|
|
8
|
+
/** A `<Breadcrumb>`, on second-level screens only. */
|
|
9
|
+
breadcrumb?: ReactNode;
|
|
10
|
+
/**
|
|
11
|
+
* Drop the page gutter padding, for screens whose wrapper already pads the
|
|
12
|
+
* content (the kit's Jobs and Appearance layouts, `padding: 22px 28px`).
|
|
13
|
+
*/
|
|
14
|
+
flush?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Page title row (SHELL.md §4): padding 14px var(--gut) 0; title 21 / 700 /
|
|
18
|
+
* -0.5px; subtitle 13px --sub, max 640px; actions right-aligned, gap 8.
|
|
19
|
+
*
|
|
20
|
+
* Tiers (cms-layouts.css): the title is 19px at tablet, 18px on mobile and
|
|
21
|
+
* 26px at 4K; the subtitle 12.5px on mobile, 14.5px at 4K, and a plain-text
|
|
22
|
+
* subtitle hides below 461px. On mobile the actions wrap under the title
|
|
23
|
+
* (row gap 10px). The actions cluster is `data-header-actions`, so its
|
|
24
|
+
* buttons collapse to icons at tablet and mobile and its `data-fab` action
|
|
25
|
+
* floats on mobile (responsive.css).
|
|
26
|
+
*/
|
|
27
|
+
export declare function PageHeader({ title, subtitle, actions, breadcrumb, flush, }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
28
|
+
//# sourceMappingURL=PageHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/ui/PageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEtC,MAAM,WAAW,eAAe;IAC9B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,sEAAsE;IACtE,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,sDAAsD;IACtD,UAAU,CAAC,EAAE,SAAS,CAAA;IACtB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,KAAa,GACd,EAAE,eAAe,2CA4BjB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* Page title row (SHELL.md §4): padding 14px var(--gut) 0; title 21 / 700 /
|
|
4
|
+
* -0.5px; subtitle 13px --sub, max 640px; actions right-aligned, gap 8.
|
|
5
|
+
*
|
|
6
|
+
* Tiers (cms-layouts.css): the title is 19px at tablet, 18px on mobile and
|
|
7
|
+
* 26px at 4K; the subtitle 12.5px on mobile, 14.5px at 4K, and a plain-text
|
|
8
|
+
* subtitle hides below 461px. On mobile the actions wrap under the title
|
|
9
|
+
* (row gap 10px). The actions cluster is `data-header-actions`, so its
|
|
10
|
+
* buttons collapse to icons at tablet and mobile and its `data-fab` action
|
|
11
|
+
* floats on mobile (responsive.css).
|
|
12
|
+
*/
|
|
13
|
+
export function PageHeader({ title, subtitle, actions, breadcrumb, flush = false, }) {
|
|
14
|
+
return (_jsxs("header", { className: `mobile:gap-y-2.5 flex flex-wrap items-start gap-4 ${flush ? '' : 'px-[var(--gut)] pt-3.5'}`, children: [_jsxs("div", { className: "min-w-0 flex-[1_1_360px]", children: [breadcrumb ? _jsx("div", { className: "mb-1", children: breadcrumb }) : null, _jsx("h1", { className: "text-page text-txt tablet:text-[19px] mobile:text-[18px] 4k:text-[26px] m-0 leading-[normal]", children: title }), typeof subtitle === 'string' ? (_jsx("p", { className: "text-body text-sub mobile:text-[12.5px] 4k:text-[14.5px] m-0 mt-[3px] max-w-[640px] leading-[normal] text-pretty [@media(width<461px)]:hidden", children: subtitle })) : subtitle ? (
|
|
15
|
+
// Rich subtitles (status pills, presence) may hold block elements.
|
|
16
|
+
_jsx("div", { className: "text-body text-sub mobile:text-[12.5px] 4k:text-[14.5px] mt-[3px] flex flex-wrap items-center gap-3 leading-[normal]", children: subtitle })) : null] }), actions ? (_jsx("div", { "data-header-actions": "", className: "ml-auto flex flex-wrap items-center gap-2", children: actions })) : null] }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=PageHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageHeader.js","sourceRoot":"","sources":["../../../src/components/ui/PageHeader.tsx"],"names":[],"mappings":";AAiBA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,UAAU,EACV,KAAK,GAAG,KAAK,GACG;IAChB,OAAO,CACL,kBACE,SAAS,EAAE,qDAAqD,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,wBAAwB,EAAE,aAEvG,eAAK,SAAS,EAAC,0BAA0B,aACtC,UAAU,CAAC,CAAC,CAAC,cAAK,SAAS,EAAC,MAAM,YAAE,UAAU,GAAO,CAAC,CAAC,CAAC,IAAI,EAC7D,aAAI,SAAS,EAAC,8FAA8F,YACzG,KAAK,GACH,EACJ,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC9B,YAAG,SAAS,EAAC,+IAA+I,YACzJ,QAAQ,GACP,CACL,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACb,mEAAmE;oBACnE,cAAK,SAAS,EAAC,sHAAsH,YAClI,QAAQ,GACL,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,OAAO,CAAC,CAAC,CAAC,CACT,qCAAyB,EAAE,EAAC,SAAS,EAAC,2CAA2C,YAC9E,OAAO,GACJ,CACP,CAAC,CAAC,CAAC,IAAI,IACD,CACV,CAAA;AACH,CAAC"}
|
|
@@ -3,6 +3,11 @@ import type { ButtonHTMLAttributes, ReactNode } from 'react';
|
|
|
3
3
|
* Design-system table row actions (`.row-actions` / `.ra-icon-btn`): a
|
|
4
4
|
* right-aligned cluster of 27px bordered icon buttons that fades in on row
|
|
5
5
|
* hover (the row must have the `group` class) and on keyboard focus.
|
|
6
|
+
*
|
|
7
|
+
* At 1024px and below, and on screens that can't hover, the actions are
|
|
8
|
+
* always shown (cms-layouts.css): there is no hover to reveal them. On a
|
|
9
|
+
* mobile card they line up at the start of its actions row, 44px each
|
|
10
|
+
* (responsive.css); on touch screens they are 44px everywhere.
|
|
6
11
|
*/
|
|
7
12
|
export declare function RowActions({ children, className }: {
|
|
8
13
|
children: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowActions.d.ts","sourceRoot":"","sources":["../../../src/components/ui/RowActions.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE5D
|
|
1
|
+
{"version":3,"file":"RowActions.d.ts","sourceRoot":"","sources":["../../../src/components/ui/RowActions.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAE5D;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,2CAQ9F;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,oBAAoB,CAAC,iBAAiB,CAAC,EACvC,MAAM,CACP;IACC,gEAAgE;IAChE,YAAY,EAAE,MAAM,CAAA;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,SAAS,CAAA;CACpB;AAED,wBAAgB,eAAe,CAAC,EAC9B,MAAc,EACd,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACR,EAAE,oBAAoB,2CActB"}
|
|
@@ -4,12 +4,17 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
4
4
|
* Design-system table row actions (`.row-actions` / `.ra-icon-btn`): a
|
|
5
5
|
* right-aligned cluster of 27px bordered icon buttons that fades in on row
|
|
6
6
|
* hover (the row must have the `group` class) and on keyboard focus.
|
|
7
|
+
*
|
|
8
|
+
* At 1024px and below, and on screens that can't hover, the actions are
|
|
9
|
+
* always shown (cms-layouts.css): there is no hover to reveal them. On a
|
|
10
|
+
* mobile card they line up at the start of its actions row, 44px each
|
|
11
|
+
* (responsive.css); on touch screens they are 44px everywhere.
|
|
7
12
|
*/
|
|
8
13
|
export function RowActions({ children, className }) {
|
|
9
|
-
return (_jsx("div", { className: `flex items-center justify-end gap-1 opacity-0 transition-opacity duration-[var(--motion-fast)] group-hover:opacity-100 focus-within:opacity-100 ${className ?? ''}`, children: children }));
|
|
14
|
+
return (_jsx("div", { className: `narrow:opacity-100 mobile:justify-start flex items-center justify-end gap-1 opacity-0 transition-opacity duration-[var(--motion-fast)] group-hover:opacity-100 focus-within:opacity-100 [@media(hover:none)]:opacity-100 ${className ?? ''}`, children: children }));
|
|
10
15
|
}
|
|
11
16
|
export function RowActionButton({ danger = false, className, children, ...rest }) {
|
|
12
|
-
return (_jsx("button", { type: "button", className: `flex h-[27px] w-[27px] items-center justify-center rounded-[6px] border border-[var(--bdr)] bg-[var(--card)] text-[var(--muted)] transition-colors duration-[var(--motion-fast)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 ${danger
|
|
17
|
+
return (_jsx("button", { type: "button", className: `prenta-touch-target flex h-[27px] w-[27px] items-center justify-center rounded-[6px] border border-[var(--bdr)] bg-[var(--card)] text-[var(--muted)] transition-colors duration-[var(--motion-fast)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 ${danger
|
|
13
18
|
? 'hover:border-[var(--err)] hover:bg-[var(--err-l)] hover:text-[var(--err)]'
|
|
14
19
|
: 'hover:border-[var(--acc-m)] hover:bg-[var(--acc-l)] hover:text-[var(--acc)]'} ${className ?? ''}`, ...rest, children: children }));
|
|
15
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RowActions.js","sourceRoot":"","sources":["../../../src/components/ui/RowActions.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAIZ
|
|
1
|
+
{"version":3,"file":"RowActions.js","sourceRoot":"","sources":["../../../src/components/ui/RowActions.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAIZ;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAA+C;IAC7F,OAAO,CACL,cACE,SAAS,EAAE,4NAA4N,SAAS,IAAI,EAAE,EAAE,YAEvP,QAAQ,GACL,CACP,CAAA;AACH,CAAC;AAaD,MAAM,UAAU,eAAe,CAAC,EAC9B,MAAM,GAAG,KAAK,EACd,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACc;IACrB,OAAO,CACL,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,yUACT,MAAM;YACJ,CAAC,CAAC,2EAA2E;YAC7E,CAAC,CAAC,6EACN,IAAI,SAAS,IAAI,EAAE,EAAE,KACjB,IAAI,YAEP,QAAQ,GACF,CACV,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface SegmentedOption {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
count?: number;
|
|
5
|
+
}
|
|
6
|
+
export interface SegmentedProps {
|
|
7
|
+
options: SegmentedOption[];
|
|
8
|
+
value: string;
|
|
9
|
+
onChange: (id: string) => void;
|
|
10
|
+
/** Accessible name for the control. */
|
|
11
|
+
label: string;
|
|
12
|
+
/** Optional counts by option id; an option's own `count` wins. */
|
|
13
|
+
counts?: Record<string, number | undefined>;
|
|
14
|
+
className?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Segmented control (SHELL.md §6, `.jb-seg`). The active segment is a raised
|
|
18
|
+
* card, not a filled accent. Arrow keys, Home and End move between segments.
|
|
19
|
+
*/
|
|
20
|
+
export declare function Segmented({ options, value, onChange, label, counts, className, }: SegmentedProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=Segmented.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Segmented.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Segmented.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,eAAe,EAAE,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAc,GACf,EAAE,cAAc,2CAgEhB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useRef } from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Segmented control (SHELL.md §6, `.jb-seg`). The active segment is a raised
|
|
6
|
+
* card, not a filled accent. Arrow keys, Home and End move between segments.
|
|
7
|
+
*/
|
|
8
|
+
export function Segmented({ options, value, onChange, label, counts, className = '', }) {
|
|
9
|
+
const refs = useRef([]);
|
|
10
|
+
// Roving tab stop only: with no matching value no option is selected, but
|
|
11
|
+
// the first one still takes focus.
|
|
12
|
+
const selectedIndex = Math.max(0, options.findIndex((option) => option.id === value));
|
|
13
|
+
function onKeyDown(event) {
|
|
14
|
+
const last = options.length - 1;
|
|
15
|
+
let next;
|
|
16
|
+
if (event.key === 'ArrowRight' || event.key === 'ArrowDown')
|
|
17
|
+
next = selectedIndex === last ? 0 : selectedIndex + 1;
|
|
18
|
+
else if (event.key === 'ArrowLeft' || event.key === 'ArrowUp')
|
|
19
|
+
next = selectedIndex === 0 ? last : selectedIndex - 1;
|
|
20
|
+
else if (event.key === 'Home')
|
|
21
|
+
next = 0;
|
|
22
|
+
else if (event.key === 'End')
|
|
23
|
+
next = last;
|
|
24
|
+
else
|
|
25
|
+
return;
|
|
26
|
+
event.preventDefault();
|
|
27
|
+
const option = options[next];
|
|
28
|
+
if (!option)
|
|
29
|
+
return;
|
|
30
|
+
onChange(option.id);
|
|
31
|
+
refs.current[next]?.focus();
|
|
32
|
+
}
|
|
33
|
+
return (_jsx("div", { role: "tablist", "aria-label": label, onKeyDown: onKeyDown, className: `rounded-9 border-bdr bg-bg inline-flex w-fit max-w-full gap-0.5 overflow-x-auto border p-0.5 [scrollbar-width:none] [&::-webkit-scrollbar]:hidden ${className}`, children: options.map((option, index) => {
|
|
34
|
+
const selected = option.id === value;
|
|
35
|
+
const count = option.count ?? counts?.[option.id];
|
|
36
|
+
return (_jsxs("button", { ref: (el) => {
|
|
37
|
+
refs.current[index] = el;
|
|
38
|
+
}, type: "button", role: "tab", "aria-selected": selected, tabIndex: index === selectedIndex ? 0 : -1, onClick: () => onChange(option.id), className: `rounded-7 text-sm2 flex cursor-pointer items-center gap-1.5 border-0 px-[11px] py-[5px] leading-[normal] font-semibold whitespace-nowrap ${selected ? 'bg-card text-txt shadow-shd' : 'text-sub hover:text-txt bg-transparent'}`, children: [option.label, typeof count === 'number' ? (_jsx("b", { className: `text-micro font-bold tabular-nums ${selected ? 'text-acc' : 'text-faint'}`, children: count })) : null] }, option.id));
|
|
39
|
+
}) }));
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=Segmented.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Segmented.js","sourceRoot":"","sources":["../../../src/components/ui/Segmented.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The admin's toast host: sonner, unstyled, painted as the kit toast
|
|
3
|
+
* (SHELL.md §7, `.jb-toast`): fixed 24px above the bottom, centred, --txt
|
|
4
|
+
* background with --bg text, padding 10px 16px, radius 9, 13px / 500.
|
|
5
|
+
* Call sites keep using `toast()` from `sonner`.
|
|
6
|
+
*
|
|
7
|
+
* `aboveTabBar`: lift the toasts clear of the mobile tab bar.
|
|
8
|
+
*/
|
|
9
|
+
export declare function Toaster({ aboveTabBar }?: {
|
|
10
|
+
aboveTabBar?: boolean;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=Toaster.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toaster.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Toaster.tsx"],"names":[],"mappings":"AA0FA;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,EAAE,WAAmB,EAAE,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,2CAwC9E"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { isValidElement, useEffect } from 'react';
|
|
4
|
+
import { Toaster as SonnerToaster, toast } from 'sonner';
|
|
5
|
+
/** Kit toast lifetime (SHELL.md §7: auto-hides after 2–2.6s). */
|
|
6
|
+
const TOAST_DURATION_MS = 2400;
|
|
7
|
+
/**
|
|
8
|
+
* Errors and warnings (the kit shows none) often carry a server message;
|
|
9
|
+
* 2.4s is too short to read one.
|
|
10
|
+
*/
|
|
11
|
+
const ALERT_TOAST_DURATION_MS = 6000;
|
|
12
|
+
/**
|
|
13
|
+
* `toast.promise`'s `error` option, resolved to settings with the longer
|
|
14
|
+
* lifetime. A `duration` the caller set, on the error result or for the whole
|
|
15
|
+
* promise toast, still wins.
|
|
16
|
+
*/
|
|
17
|
+
function longerError(error, callerDuration) {
|
|
18
|
+
const duration = callerDuration ?? ALERT_TOAST_DURATION_MS;
|
|
19
|
+
const withDuration = (result) => typeof result === 'object' && result !== null && !isValidElement(result)
|
|
20
|
+
? { duration, ...result }
|
|
21
|
+
: { message: result, duration };
|
|
22
|
+
if (error === undefined)
|
|
23
|
+
return undefined;
|
|
24
|
+
return (async (reason) => withDuration(typeof error === 'function' ? await error(reason) : error));
|
|
25
|
+
}
|
|
26
|
+
let installs = 0;
|
|
27
|
+
let installed = null;
|
|
28
|
+
/**
|
|
29
|
+
* Sonner has no per-type default duration, so while an admin toaster is
|
|
30
|
+
* mounted, `toast.error`, `toast.warning` and the error state of
|
|
31
|
+
* `toast.promise` default to the longer lifetime. A duration passed by the
|
|
32
|
+
* caller still wins. Installed once however many toasters mount, and on the
|
|
33
|
+
* last unmount each function is restored only if ours is still in place.
|
|
34
|
+
*/
|
|
35
|
+
function useAlertDurations() {
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (installs++ === 0) {
|
|
38
|
+
const originals = { error: toast.error, warning: toast.warning, promise: toast.promise };
|
|
39
|
+
const longer = (fn) => (message, data) => fn(message, { duration: ALERT_TOAST_DURATION_MS, ...data });
|
|
40
|
+
const promise = ((p, data) => originals.promise(p, data && { ...data, error: longerError(data.error, data.duration) }));
|
|
41
|
+
const wrappers = {
|
|
42
|
+
error: longer(originals.error),
|
|
43
|
+
warning: longer(originals.warning),
|
|
44
|
+
promise,
|
|
45
|
+
};
|
|
46
|
+
Object.assign(toast, wrappers);
|
|
47
|
+
installed = { originals, wrappers };
|
|
48
|
+
}
|
|
49
|
+
return () => {
|
|
50
|
+
if (--installs > 0 || !installed)
|
|
51
|
+
return;
|
|
52
|
+
const { originals, wrappers } = installed;
|
|
53
|
+
for (const key of ['error', 'warning', 'promise']) {
|
|
54
|
+
if (toast[key] === wrappers[key])
|
|
55
|
+
Object.assign(toast, { [key]: originals[key] });
|
|
56
|
+
}
|
|
57
|
+
installed = null;
|
|
58
|
+
};
|
|
59
|
+
}, []);
|
|
60
|
+
}
|
|
61
|
+
// Above the mobile tab bar and the home indicator. sonner switches to
|
|
62
|
+
// `mobileOffset` at 600px and below, where its own gap is 16px and a toast
|
|
63
|
+
// is as wide as the screen, so it also clears a floating action button
|
|
64
|
+
// (`--fab-clear`, set in responsive.css while a page has one). Wider than
|
|
65
|
+
// that, a centred 356px toast doesn't reach the FAB's corner.
|
|
66
|
+
const ABOVE_TAB_BAR = 'var(--tabbar-h) + env(safe-area-inset-bottom)';
|
|
67
|
+
/**
|
|
68
|
+
* The admin's toast host: sonner, unstyled, painted as the kit toast
|
|
69
|
+
* (SHELL.md §7, `.jb-toast`): fixed 24px above the bottom, centred, --txt
|
|
70
|
+
* background with --bg text, padding 10px 16px, radius 9, 13px / 500.
|
|
71
|
+
* Call sites keep using `toast()` from `sonner`.
|
|
72
|
+
*
|
|
73
|
+
* `aboveTabBar`: lift the toasts clear of the mobile tab bar.
|
|
74
|
+
*/
|
|
75
|
+
export function Toaster({ aboveTabBar = false } = {}) {
|
|
76
|
+
useAlertDurations();
|
|
77
|
+
return (_jsx(SonnerToaster, { position: "bottom-center", offset: aboveTabBar ? { bottom: `calc(${ABOVE_TAB_BAR} + 24px)` } : 24, mobileOffset: aboveTabBar
|
|
78
|
+
? { bottom: `calc(${ABOVE_TAB_BAR} + 16px + var(--fab-clear, 0px))` }
|
|
79
|
+
: undefined, duration: TOAST_DURATION_MS,
|
|
80
|
+
// Inline, because sonner's injected stylesheet is unlayered and would beat
|
|
81
|
+
// utilities: the admin font (it sets a system stack) and the kit toast layer.
|
|
82
|
+
style: { fontFamily: 'inherit', zIndex: 'var(--z-toast)' }, toastOptions: {
|
|
83
|
+
unstyled: true,
|
|
84
|
+
classNames: {
|
|
85
|
+
// `prenta-inverse`: focus rings on the dark toast use --bg. Toasts
|
|
86
|
+
// stacked behind the front one hide their content, as sonner's own
|
|
87
|
+
// styles do for styled toasts.
|
|
88
|
+
toast: 'prenta-inverse right-0 left-0 mx-auto flex w-fit max-w-[calc(100vw-32px)] items-center gap-2 rounded-9 bg-txt px-4 py-2.5 text-body leading-[normal] font-medium text-bg shadow-shd2 [&[data-expanded=false][data-front=false]>*]:opacity-0',
|
|
89
|
+
content: 'flex min-w-0 flex-col gap-0.5',
|
|
90
|
+
description: 'text-meta opacity-80',
|
|
91
|
+
// Unstyled sonner drops the icon slot's box; loading spinners need it.
|
|
92
|
+
icon: 'relative flex size-4 shrink-0 items-center justify-center text-bg',
|
|
93
|
+
// The kit toast is text only. Success and info drop sonner's icon;
|
|
94
|
+
// error and warning (which the kit doesn't show) keep theirs.
|
|
95
|
+
success: '[&_[data-icon]]:hidden!',
|
|
96
|
+
info: '[&_[data-icon]]:hidden!',
|
|
97
|
+
actionButton: 'ml-1 inline-flex h-7 shrink-0 cursor-pointer items-center rounded-7 border-0 bg-acc px-2.5 text-meta font-semibold text-acc-on hover:brightness-[1.07]',
|
|
98
|
+
cancelButton: 'inline-flex h-7 shrink-0 cursor-pointer items-center rounded-7 border-0 bg-transparent px-2.5 text-meta font-semibold text-bg opacity-85 hover:opacity-100 focus-visible:opacity-100',
|
|
99
|
+
closeButton: 'text-bg',
|
|
100
|
+
},
|
|
101
|
+
} }));
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=Toaster.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toaster.js","sourceRoot":"","sources":["../../../src/components/ui/Toaster.tsx"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,10 @@ export interface ToggleProps extends ToggleVariants {
|
|
|
17
17
|
'aria-describedby'?: string;
|
|
18
18
|
}
|
|
19
19
|
/**
|
|
20
|
-
* Design-system
|
|
21
|
-
*
|
|
20
|
+
* Design-system switch (`role="switch"`). Use `variant="enabled"` for on/off
|
|
21
|
+
* tables where green communicates active state. Also exported as `Switch`.
|
|
22
22
|
*/
|
|
23
23
|
export declare function Toggle({ checked, onCheckedChange, disabled, variant, size, id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, }: ToggleProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
-
|
|
24
|
+
/** The kit's name for {@link Toggle}. */
|
|
25
|
+
export { Toggle as Switch };
|
|
25
26
|
//# sourceMappingURL=Toggle.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Toggle.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Toggle.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAM,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAIvD,QAAA,MAAM,WAAW;;;;;;yBAoBhB,CAAA;AAgBD,KAAK,cAAc,GAAG,YAAY,CAAC,OAAO,WAAW,CAAC,CAAA;AAEtD,MAAM,WAAW,WAAY,SAAQ,cAAc;IACjD,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAA;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EACrB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,EAAE,EACF,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,kBAAkB,EAAE,eAAe,GACpC,EAAE,WAAW,2CAeb;AAED,yCAAyC;AACzC,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,CAAA"}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import * as
|
|
3
|
+
import * as SwitchPrimitive from '@radix-ui/react-switch';
|
|
4
4
|
import { cv } from '../../lib/cv.js';
|
|
5
|
-
|
|
5
|
+
// Kit switch (SHELL.md §7, `.ap-sw`): 34×19 track, 15px knob at left 2px
|
|
6
|
+
// (17px when on), .15s. Radix renders role="switch" with aria-checked.
|
|
7
|
+
const toggleTrack = cv(
|
|
8
|
+
// `prenta-touch-hit` grows the hit area to 44px on touch without stretching the track.
|
|
9
|
+
'prenta-touch-hit rounded-pill relative inline-block shrink-0 cursor-pointer border-0 p-0 transition-[background-color] duration-[var(--mo-base)] disabled:cursor-not-allowed disabled:opacity-50', {
|
|
6
10
|
variants: {
|
|
7
11
|
variant: {
|
|
8
12
|
/** Design system default — accent when on. */
|
|
9
|
-
accent: 'bg-
|
|
13
|
+
accent: 'bg-bdr data-[state=checked]:bg-acc',
|
|
10
14
|
/** Semantic enable/disable — success green when on (tables, script tags). */
|
|
11
|
-
enabled: 'bg-
|
|
15
|
+
enabled: 'bg-bdr data-[state=checked]:bg-suc',
|
|
12
16
|
},
|
|
13
17
|
size: {
|
|
14
|
-
|
|
15
|
-
md: 'h-[21px] w-[38px]',
|
|
18
|
+
md: 'h-[19px] w-[34px]',
|
|
16
19
|
},
|
|
17
20
|
},
|
|
18
21
|
defaultVariants: {
|
|
@@ -20,11 +23,10 @@ const toggleTrack = cv('relative inline-block shrink-0 cursor-pointer rounded-[v
|
|
|
20
23
|
size: 'md',
|
|
21
24
|
},
|
|
22
25
|
});
|
|
23
|
-
const toggleThumb = cv('pointer-events-none absolute top-
|
|
26
|
+
const toggleThumb = cv('shadow-knob pointer-events-none absolute top-0.5 left-0.5 block rounded-full bg-[var(--toggle-thumb)] transition-[left] duration-[var(--mo-base)]', {
|
|
24
27
|
variants: {
|
|
25
28
|
size: {
|
|
26
|
-
|
|
27
|
-
md: 'h-4 w-4',
|
|
29
|
+
md: 'h-[15px] w-[15px] data-[state=checked]:left-[17px]',
|
|
28
30
|
},
|
|
29
31
|
},
|
|
30
32
|
defaultVariants: {
|
|
@@ -32,10 +34,12 @@ const toggleThumb = cv('pointer-events-none absolute top-[2.5px] left-[2.5px] bl
|
|
|
32
34
|
},
|
|
33
35
|
});
|
|
34
36
|
/**
|
|
35
|
-
* Design-system
|
|
36
|
-
*
|
|
37
|
+
* Design-system switch (`role="switch"`). Use `variant="enabled"` for on/off
|
|
38
|
+
* tables where green communicates active state. Also exported as `Switch`.
|
|
37
39
|
*/
|
|
38
40
|
export function Toggle({ checked, onCheckedChange, disabled, variant, size, id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, }) {
|
|
39
|
-
return (_jsx(
|
|
41
|
+
return (_jsx(SwitchPrimitive.Root, { id: id, checked: checked, onCheckedChange: onCheckedChange, disabled: disabled, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, className: toggleTrack({ variant, size }), children: _jsx(SwitchPrimitive.Thumb, { className: toggleThumb({ size }) }) }));
|
|
40
42
|
}
|
|
43
|
+
/** The kit's name for {@link Toggle}. */
|
|
44
|
+
export { Toggle as Switch };
|
|
41
45
|
//# sourceMappingURL=Toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../../src/components/ui/Toggle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Toggle.js","sourceRoot":"","sources":["../../../src/components/ui/Toggle.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,EAAE,EAAqB,MAAM,iBAAiB,CAAA;AAEvD,yEAAyE;AACzE,uEAAuE;AACvE,MAAM,WAAW,GAAG,EAAE;AACpB,uFAAuF;AACvF,kMAAkM,EAClM;IACE,QAAQ,EAAE;QACR,OAAO,EAAE;YACP,8CAA8C;YAC9C,MAAM,EAAE,oCAAoC;YAC5C,6EAA6E;YAC7E,OAAO,EAAE,oCAAoC;SAC9C;QACD,IAAI,EAAE;YACJ,EAAE,EAAE,mBAAmB;SACxB;KACF;IACD,eAAe,EAAE;QACf,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,IAAI;KACX;CACF,CACF,CAAA;AAED,MAAM,WAAW,GAAG,EAAE,CACpB,mJAAmJ,EACnJ;IACE,QAAQ,EAAE;QACR,IAAI,EAAE;YACJ,EAAE,EAAE,oDAAoD;SACzD;KACF;IACD,eAAe,EAAE;QACf,IAAI,EAAE,IAAI;KACX;CACF,CACF,CAAA;AAcD;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,EACrB,OAAO,EACP,eAAe,EACf,QAAQ,EACR,OAAO,EACP,IAAI,EACJ,EAAE,EACF,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,kBAAkB,EAAE,eAAe,GACvB;IACZ,OAAO,CACL,KAAC,eAAe,CAAC,IAAI,IACnB,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,eAAe,EAChC,QAAQ,EAAE,QAAQ,gBACN,SAAS,qBACJ,cAAc,sBACb,eAAe,EACjC,SAAS,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,YAEzC,KAAC,eAAe,CAAC,KAAK,IAAC,SAAS,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,GAAI,GACtC,CACxB,CAAA;AACH,CAAC;AAED,yCAAyC;AACzC,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
export interface UnderlineTab {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
/** Leading icon, 15px (Settings and Form Settings tabs). */
|
|
6
|
+
icon?: ReactNode;
|
|
7
|
+
count?: number;
|
|
8
|
+
/** Trailing badge, e.g. a "Live" pill. Rendered after the count. */
|
|
9
|
+
badge?: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
export interface UnderlineTabsProps {
|
|
12
|
+
tabs: UnderlineTab[];
|
|
13
|
+
value: string;
|
|
14
|
+
onChange: (id: string) => void;
|
|
15
|
+
/** Accessible name for the tab list. */
|
|
16
|
+
label: string;
|
|
17
|
+
/**
|
|
18
|
+
* Prefix for the tab and panel ids. Pass the same value to `UnderlineTabPanel`
|
|
19
|
+
* so each tab's `aria-controls` points at its panel. Defaults to a generated id.
|
|
20
|
+
*/
|
|
21
|
+
idBase?: string;
|
|
22
|
+
/**
|
|
23
|
+
* `page` is a page-level strip (Settings.html `.pg-tabs`): 13px / 500 tabs
|
|
24
|
+
* in `--muted`, 10px 16px, no gap. `drawer` is the Jobs drawer's `.jd-tabs`:
|
|
25
|
+
* 9px 11px with a 6px gap and no divider of its own, because the drawer
|
|
26
|
+
* header draws the line under it (its edges still fade when tabs are
|
|
27
|
+
* hidden, as every strip's do). The default is SHELL.md §6: 13px / 600
|
|
28
|
+
* in `--sub`, 10px 12px.
|
|
29
|
+
*/
|
|
30
|
+
variant?: 'default' | 'page' | 'drawer';
|
|
31
|
+
/** Classes for the scrolling strip (e.g. the page gutter as padding). */
|
|
32
|
+
className?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Underline tabs (SHELL.md §6). The active mark is `box-shadow: inset 0 -2px 0`,
|
|
36
|
+
* never a border with a negative margin, so the strip can scroll without a
|
|
37
|
+
* vertical scrollbar. Arrow keys, Home and End move between tabs.
|
|
38
|
+
*
|
|
39
|
+
* When the tabs don't fit, the strip scrolls with its scrollbar hidden, and
|
|
40
|
+
* each edge that hides tabs fades out over 48px. The kit fades the right edge
|
|
41
|
+
* at ≤1280px unless the last tab is active; here the fade follows what is
|
|
42
|
+
* actually hidden, so it also shows on wide screens with more tabs and goes
|
|
43
|
+
* once the strip is scrolled to its end. Over each fade sits a chevron button
|
|
44
|
+
* that scrolls the strip for mouse users without a horizontal wheel; keyboard
|
|
45
|
+
* and screen-reader users reach every tab through the tab list itself, so the
|
|
46
|
+
* buttons are `aria-hidden` and out of the Tab order.
|
|
47
|
+
*/
|
|
48
|
+
export declare function UnderlineTabs({ tabs, value, onChange, label, idBase, variant, className, }: UnderlineTabsProps): import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
export interface UnderlineTabPanelProps extends HTMLAttributes<HTMLDivElement> {
|
|
50
|
+
/** Same `idBase` as the `UnderlineTabs` it belongs to. */
|
|
51
|
+
idBase: string;
|
|
52
|
+
tabId: string;
|
|
53
|
+
}
|
|
54
|
+
/** The panel for one underline tab: `role="tabpanel"`, labelled by its tab. */
|
|
55
|
+
export declare function UnderlineTabPanel({ idBase, tabId, children, ...rest }: UnderlineTabPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
//# sourceMappingURL=UnderlineTabs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UnderlineTabs.d.ts","sourceRoot":"","sources":["../../../src/components/ui/UnderlineTabs.tsx"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,cAAc,EAEnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAGd,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oEAAoE;IACpE,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,EAAE,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;IACvC,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AA8BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,KAAK,EACL,MAAM,EACN,OAAmB,EACnB,SAAc,GACf,EAAE,kBAAkB,2CAuNpB;AAuCD,MAAM,WAAW,sBAAuB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC5E,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,sBAAsB,2CAY7F"}
|