@nextsparkjs/theme-default 0.1.0-beta.1 → 0.1.0-beta.100
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/LICENSE +21 -0
- package/api/ai/chat/stream/route.ts +4 -1
- package/api/ai/orchestrator/route.ts +10 -3
- package/api/ai/single-agent/route.ts +10 -3
- package/api/ai/usage/route.ts +4 -1
- package/blocks/benefits/component.tsx +4 -4
- package/blocks/cta-section/component.tsx +4 -4
- package/blocks/faq-accordion/component.tsx +2 -2
- package/blocks/features-grid/component.tsx +5 -5
- package/blocks/hero/component.tsx +2 -2
- package/blocks/hero/fields.ts +1 -1
- package/blocks/hero-with-form/component.tsx +7 -7
- package/blocks/hero-with-form/fields.ts +1 -1
- package/blocks/jumbotron/component.tsx +7 -7
- package/blocks/jumbotron/fields.ts +1 -1
- package/blocks/logo-cloud/component.tsx +6 -6
- package/blocks/logo-cloud/fields.ts +1 -1
- package/blocks/post-content/component.tsx +2 -2
- package/blocks/pricing-table/component.tsx +5 -5
- package/blocks/split-content/component.tsx +5 -5
- package/blocks/split-content/fields.ts +1 -1
- package/blocks/stats-counter/component.tsx +9 -9
- package/blocks/testimonials/component.tsx +4 -4
- package/blocks/testimonials/fields.ts +1 -1
- package/blocks/text-content/component.tsx +12 -10
- package/blocks/timeline/component.tsx +12 -12
- package/blocks/video-hero/component.tsx +7 -7
- package/blocks/video-hero/fields.ts +1 -1
- package/components/ai-chat/ChatPanel.tsx +7 -7
- package/components/ai-chat/Message.tsx +2 -2
- package/components/ai-chat/MessageInput.tsx +3 -3
- package/components/ai-chat/MessageList.tsx +3 -3
- package/components/ai-chat/TypingIndicator.tsx +2 -2
- package/config/app.config.ts +54 -62
- package/config/dashboard.config.ts +14 -0
- package/config/features.config.ts +10 -0
- package/config/permissions.config.ts +26 -1
- package/docs/{01-overview → public/01-overview}/01-introduction.md +5 -0
- package/docs/{01-overview → public/01-overview}/02-customization.md +5 -0
- package/docs/{02-features → public/02-features}/03-tasks-entity.md +5 -0
- package/docs/{03-ai → public/03-ai}/01-overview.md +5 -0
- package/docs/{03-ai → public/03-ai}/02-customization.md +5 -0
- package/docs/superadmin/01-setup/01-configuration.md +79 -0
- package/docs/superadmin/01-setup/02-deployment.md +82 -0
- package/docs/superadmin/02-management/01-users.md +83 -0
- package/docs/superadmin/03-integrations/01-langchain.md +139 -0
- package/entities/customers/api/docs.md +107 -0
- package/entities/customers/api/presets.ts +80 -0
- package/entities/pages/api/docs.md +114 -0
- package/entities/pages/api/presets.ts +72 -0
- package/entities/posts/api/docs.md +120 -0
- package/entities/posts/api/presets.ts +74 -0
- package/entities/tasks/api/docs.md +126 -0
- package/entities/tasks/api/presets.ts +84 -0
- package/lib/selectors.ts +7 -4
- package/messages/de/admin.json +45 -0
- package/messages/en/admin.json +56 -0
- package/messages/en/navigation.json +2 -1
- package/messages/es/admin.json +56 -0
- package/messages/es/navigation.json +2 -1
- package/messages/fr/admin.json +45 -0
- package/messages/it/admin.json +45 -0
- package/messages/pt/admin.json +45 -0
- package/migrations/093_pages_sample_data.sql +7 -7
- package/migrations/098_patterns_sample_data.sql +234 -0
- package/package.json +8 -3
- package/styles/globals.css +42 -0
- package/templates/(public)/blog/[slug]/page.tsx +1 -1
- package/templates/(public)/page.tsx +1 -1
- package/tests/cypress/e2e/_utils/devtools/access.bdd.md +262 -0
- package/tests/cypress/e2e/_utils/devtools/access.cy.ts +171 -0
- package/tests/cypress/e2e/_utils/devtools/navigation.bdd.md +261 -0
- package/tests/cypress/e2e/_utils/devtools/navigation.cy.ts +157 -0
- package/tests/cypress/e2e/_utils/devtools/pages.bdd.md +303 -0
- package/tests/cypress/e2e/_utils/devtools/pages.cy.ts +184 -0
- package/tests/cypress/e2e/_utils/docs/README.md +215 -0
- package/tests/cypress/e2e/_utils/selectors/auth.bdd.md +354 -0
- package/tests/cypress/e2e/_utils/selectors/auth.cy.ts +310 -0
- package/tests/cypress/e2e/_utils/selectors/billing.bdd.md +276 -0
- package/tests/cypress/e2e/_utils/selectors/billing.cy.ts +182 -0
- package/tests/cypress/e2e/_utils/selectors/block-editor.bdd.md +615 -0
- package/tests/cypress/e2e/_utils/selectors/block-editor.cy.ts +783 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-container.cy.ts +52 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.bdd.md +205 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-mobile.cy.ts +137 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.bdd.md +147 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-navigation.cy.ts +114 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.bdd.md +76 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-sidebar.cy.ts +68 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.bdd.md +326 -0
- package/tests/cypress/e2e/_utils/selectors/dashboard-topnav.cy.ts +177 -0
- package/tests/cypress/e2e/_utils/selectors/devtools.bdd.md +306 -0
- package/tests/cypress/e2e/_utils/selectors/devtools.cy.ts +273 -0
- package/tests/cypress/e2e/_utils/selectors/global-search.bdd.md +115 -0
- package/tests/cypress/e2e/_utils/selectors/global-search.cy.ts +93 -0
- package/tests/cypress/e2e/_utils/selectors/patterns.bdd.md +388 -0
- package/tests/cypress/e2e/_utils/selectors/patterns.cy.ts +559 -0
- package/tests/cypress/e2e/_utils/selectors/public.cy.ts +112 -0
- package/tests/cypress/e2e/_utils/selectors/settings-api-keys.bdd.md +266 -0
- package/tests/cypress/e2e/_utils/selectors/settings-api-keys.cy.ts +233 -0
- package/tests/cypress/e2e/_utils/selectors/settings-billing.bdd.md +78 -0
- package/tests/cypress/e2e/_utils/selectors/settings-billing.cy.ts +108 -0
- package/tests/cypress/e2e/_utils/selectors/settings-layout.bdd.md +129 -0
- package/tests/cypress/e2e/_utils/selectors/settings-layout.cy.ts +115 -0
- package/tests/cypress/e2e/_utils/selectors/settings-password.bdd.md +82 -0
- package/tests/cypress/e2e/_utils/selectors/settings-password.cy.ts +74 -0
- package/tests/cypress/e2e/_utils/selectors/settings-profile.bdd.md +77 -0
- package/tests/cypress/e2e/_utils/selectors/settings-profile.cy.ts +79 -0
- package/tests/cypress/e2e/_utils/selectors/settings-teams.bdd.md +130 -0
- package/tests/cypress/e2e/_utils/selectors/settings-teams.cy.ts +86 -0
- package/tests/cypress/e2e/_utils/selectors/superadmin.bdd.md +261 -0
- package/tests/cypress/e2e/_utils/selectors/superadmin.cy.ts +193 -0
- package/tests/cypress/e2e/_utils/selectors/tasks.bdd.md +593 -0
- package/tests/cypress/e2e/_utils/selectors/tasks.cy.ts +864 -0
- package/tests/cypress/e2e/_utils/selectors/taxonomies.cy.ts +126 -0
- package/tests/cypress/e2e/_utils/selectors/teams.bdd.md +278 -0
- package/tests/cypress/e2e/_utils/selectors/teams.cy.ts +195 -0
- package/tests/cypress/e2e/_utils/superadmin/all-teams.bdd.md +261 -0
- package/tests/cypress/e2e/_utils/superadmin/all-teams.cy.ts +177 -0
- package/tests/cypress/e2e/_utils/superadmin/all-users.bdd.md +406 -0
- package/tests/cypress/e2e/_utils/superadmin/all-users.cy.ts +294 -0
- package/tests/cypress/e2e/_utils/superadmin/dashboard.bdd.md +235 -0
- package/tests/cypress/e2e/_utils/superadmin/dashboard.cy.ts +149 -0
- package/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.bdd.md +290 -0
- package/tests/cypress/e2e/_utils/superadmin/subscriptions-overview.cy.ts +194 -0
- package/tests/cypress/e2e/ai/ai-usage.cy.ts +209 -0
- package/tests/cypress/e2e/ai/chat-api.cy.ts +119 -0
- package/tests/cypress/e2e/ai/guardrails.cy.ts +332 -0
- package/tests/cypress/e2e/api/_core/billing/BillingAPIController.js +319 -0
- package/tests/cypress/e2e/api/_core/billing/check-action.cy.ts +326 -0
- package/tests/cypress/e2e/api/_core/billing/checkout.cy.ts +358 -0
- package/tests/cypress/e2e/api/_core/billing/lifecycle.cy.ts +423 -0
- package/tests/cypress/e2e/api/_core/billing/plans/README.md +345 -0
- package/tests/cypress/e2e/api/_core/billing/plans/business.cy.ts +412 -0
- package/tests/cypress/e2e/api/_core/billing/plans/downgrade.cy.ts +510 -0
- package/tests/cypress/e2e/api/_core/billing/plans/fixtures/billing-plans.json +163 -0
- package/tests/cypress/e2e/api/_core/billing/plans/free.cy.ts +500 -0
- package/tests/cypress/e2e/api/_core/billing/plans/pro.cy.ts +497 -0
- package/tests/cypress/e2e/api/_core/billing/plans/starter.cy.ts +342 -0
- package/tests/cypress/e2e/api/_core/billing/portal.cy.ts +313 -0
- package/tests/cypress/e2e/api/_core/devtools/registries.bdd.md +300 -0
- package/tests/cypress/e2e/api/_core/devtools/registries.cy.ts +368 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.bdd.md +375 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/cron-endpoint.cy.ts +346 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.bdd.md +451 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/devtools-endpoint.cy.ts +447 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.bdd.md +649 -0
- package/tests/cypress/e2e/api/_core/scheduled-actions/scheduling.cy.ts +333 -0
- package/tests/cypress/e2e/api/_core/security/security-headers.cy.ts +601 -0
- package/tests/cypress/e2e/api/_core/settings/api-keys.crud.cy.ts +923 -0
- package/tests/cypress/e2e/api/_core/teams/teams-security.cy.ts +415 -0
- package/tests/cypress/e2e/api/_core/users/users-crud.cy.ts +469 -0
- package/tests/cypress/e2e/api/_core/users/users-metas.cy.ts +913 -0
- package/tests/cypress/e2e/api/_core/users/users-security.cy.ts +375 -0
- package/tests/cypress/e2e/api/entities/customers/customers-crud.cy.ts +648 -0
- package/tests/cypress/e2e/api/entities/customers/customers-metas.cy.ts +839 -0
- package/tests/cypress/e2e/api/entities/media/media-crud.cy.ts +600 -0
- package/tests/cypress/e2e/api/entities/media/media-role-permissions.cy.ts +617 -0
- package/tests/cypress/e2e/api/entities/media/media-team-isolation.cy.ts +464 -0
- package/tests/cypress/e2e/api/entities/pages/blocks-scope.cy.ts +396 -0
- package/tests/cypress/e2e/api/entities/pages/pages-crud.cy.ts +425 -0
- package/tests/cypress/e2e/api/entities/pages/pages-status.cy.ts +335 -0
- package/tests/cypress/e2e/api/entities/posts/post-categories-crud.cy.ts +610 -0
- package/tests/cypress/e2e/api/entities/posts/posts-crud.cy.ts +709 -0
- package/tests/cypress/e2e/api/entities/posts/posts-status.cy.ts +396 -0
- package/tests/cypress/e2e/api/entities/tasks/tasks-crud.cy.ts +602 -0
- package/tests/cypress/e2e/api/entities/tasks/tasks-metas.cy.ts +878 -0
- package/tests/cypress/e2e/patterns/patterns-in-pages.cy.ts +367 -0
- package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.bdd.md +231 -0
- package/tests/cypress/e2e/uat/_core/auth/app-roles/developer-login.cy.ts +144 -0
- package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.bdd.md +118 -0
- package/tests/cypress/e2e/uat/_core/auth/app-roles/superadmin-login.cy.ts +84 -0
- package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.bdd.md +288 -0
- package/tests/cypress/e2e/uat/_core/auth/custom-roles/editor-login.cy.ts +188 -0
- package/tests/cypress/e2e/uat/_core/auth/login-logout.bdd.md +160 -0
- package/tests/cypress/e2e/uat/_core/auth/login-logout.cy.ts +116 -0
- package/tests/cypress/e2e/uat/_core/auth/password-reset.bdd.md +289 -0
- package/tests/cypress/e2e/uat/_core/auth/password-reset.cy.ts +200 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.bdd.md +225 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/admin-login.cy.ts +148 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.bdd.md +251 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/member-login.cy.ts +163 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.bdd.md +231 -0
- package/tests/cypress/e2e/uat/_core/auth/team-roles/owner-login.cy.ts +141 -0
- package/tests/cypress/e2e/uat/_core/billing/extended.bdd.md +273 -0
- package/tests/cypress/e2e/uat/_core/billing/extended.cy.ts +209 -0
- package/tests/cypress/e2e/uat/_core/billing/feature-gates.bdd.md +407 -0
- package/tests/cypress/e2e/uat/_core/billing/feature-gates.cy.ts +307 -0
- package/tests/cypress/e2e/uat/_core/billing/page.bdd.md +329 -0
- package/tests/cypress/e2e/uat/_core/billing/page.cy.ts +250 -0
- package/tests/cypress/e2e/uat/_core/billing/status.bdd.md +190 -0
- package/tests/cypress/e2e/uat/_core/billing/status.cy.ts +145 -0
- package/tests/cypress/e2e/uat/_core/billing/team-switch.bdd.md +156 -0
- package/tests/cypress/e2e/uat/_core/billing/team-switch.cy.ts +122 -0
- package/tests/cypress/e2e/uat/_core/billing/usage.bdd.md +218 -0
- package/tests/cypress/e2e/uat/_core/billing/usage.cy.ts +176 -0
- package/tests/cypress/e2e/uat/_core/blocks/hero.bdd.md +124 -0
- package/tests/cypress/e2e/uat/_core/blocks/hero.cy.ts +56 -0
- package/tests/cypress/e2e/uat/_core/devtools/api-tester.cy.ts +390 -0
- package/tests/cypress/e2e/uat/_core/performance/suspense-loading.cy.ts +134 -0
- package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.bdd.md +736 -0
- package/tests/cypress/e2e/uat/_core/scheduled-actions/devtools-ui.cy.ts +740 -0
- package/tests/cypress/e2e/uat/_core/teams/inline-edit.cy.ts +278 -0
- package/tests/cypress/e2e/uat/_core/teams/roles-matrix.bdd.md +553 -0
- package/tests/cypress/e2e/uat/_core/teams/roles-matrix.cy.ts +185 -0
- package/tests/cypress/e2e/uat/_core/teams/switcher.bdd.md +1151 -0
- package/tests/cypress/e2e/uat/_core/teams/switcher.cy.ts +497 -0
- package/tests/cypress/e2e/uat/_core/teams/team-switcher.md +198 -0
- package/tests/cypress/e2e/uat/entities/customers/member.bdd.md +275 -0
- package/tests/cypress/e2e/uat/entities/customers/member.cy.ts +122 -0
- package/tests/cypress/e2e/uat/entities/customers/owner.bdd.md +243 -0
- package/tests/cypress/e2e/uat/entities/customers/owner.cy.ts +165 -0
- package/tests/cypress/e2e/uat/entities/pages/block-crud.bdd.md +476 -0
- package/tests/cypress/e2e/uat/entities/pages/block-crud.cy.ts +486 -0
- package/tests/cypress/e2e/uat/entities/pages/block-editor.bdd.md +460 -0
- package/tests/cypress/e2e/uat/entities/pages/block-editor.cy.ts +301 -0
- package/tests/cypress/e2e/uat/entities/pages/list.bdd.md +432 -0
- package/tests/cypress/e2e/uat/entities/pages/list.cy.ts +273 -0
- package/tests/cypress/e2e/uat/entities/pages/public-rendering.bdd.md +696 -0
- package/tests/cypress/e2e/uat/entities/pages/public-rendering.cy.ts +340 -0
- package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.bdd.md +161 -0
- package/tests/cypress/e2e/uat/entities/posts/categories-api-aware.cy.ts +104 -0
- package/tests/cypress/e2e/uat/entities/posts/categories.bdd.md +375 -0
- package/tests/cypress/e2e/uat/entities/posts/categories.cy.ts +241 -0
- package/tests/cypress/e2e/uat/entities/posts/editor.bdd.md +429 -0
- package/tests/cypress/e2e/uat/entities/posts/editor.cy.ts +257 -0
- package/tests/cypress/e2e/uat/entities/posts/list.bdd.md +340 -0
- package/tests/cypress/e2e/uat/entities/posts/list.cy.ts +177 -0
- package/tests/cypress/e2e/uat/entities/posts/public.bdd.md +614 -0
- package/tests/cypress/e2e/uat/entities/posts/public.cy.ts +249 -0
- package/tests/cypress/e2e/uat/entities/tasks/member.bdd.md +222 -0
- package/tests/cypress/e2e/uat/entities/tasks/member.cy.ts +165 -0
- package/tests/cypress/e2e/uat/entities/tasks/owner.bdd.md +419 -0
- package/tests/cypress/e2e/uat/entities/tasks/owner.cy.ts +191 -0
- package/tests/cypress/e2e/uat/features/roles/editor-role.bdd.md +552 -0
- package/tests/cypress/e2e/uat/features/roles/editor-role.cy.ts +210 -0
- package/tests/cypress/e2e/uat/features/roles/member-restrictions.bdd.md +450 -0
- package/tests/cypress/e2e/uat/features/roles/member-restrictions.cy.ts +189 -0
- package/tests/cypress/e2e/uat/features/roles/owner-full-crud.bdd.md +530 -0
- package/tests/cypress/e2e/uat/features/roles/owner-full-crud.cy.ts +247 -0
- package/tests/cypress/fixtures/blocks.json +218 -0
- package/tests/cypress/fixtures/entities.json +87 -0
- package/tests/cypress/fixtures/page-builder.json +21 -0
- package/tests/cypress/src/components/CategoriesPOM.ts +382 -0
- package/tests/cypress/src/components/CustomersPOM.ts +439 -0
- package/tests/cypress/src/components/DevKeyringPOM.ts +160 -0
- package/tests/cypress/src/components/EntityForm.ts +375 -0
- package/tests/cypress/src/components/EntityList.ts +389 -0
- package/tests/cypress/src/components/PageBuilderPOM.ts +710 -0
- package/tests/cypress/src/components/PostEditorPOM.ts +370 -0
- package/tests/cypress/src/components/PostsListPOM.ts +223 -0
- package/tests/cypress/src/components/PublicPagePOM.ts +447 -0
- package/tests/cypress/src/components/PublicPostPOM.ts +146 -0
- package/tests/cypress/src/components/TasksPOM.ts +272 -0
- package/tests/cypress/src/components/TeamSwitcherPOM.ts +450 -0
- package/tests/cypress/src/components/index.ts +21 -0
- package/tests/cypress/src/controllers/ApiKeysAPIController.js +178 -0
- package/tests/cypress/src/controllers/BaseAPIController.js +317 -0
- package/tests/cypress/src/controllers/CustomerAPIController.js +251 -0
- package/tests/cypress/src/controllers/MediaAPIController.js +231 -0
- package/tests/cypress/src/controllers/PagesAPIController.js +226 -0
- package/tests/cypress/src/controllers/PostsAPIController.js +250 -0
- package/tests/cypress/src/controllers/TaskAPIController.js +240 -0
- package/tests/cypress/src/controllers/UsersAPIController.js +242 -0
- package/tests/cypress/src/controllers/index.js +25 -0
- package/tests/cypress/src/core/AuthPOM.ts +450 -0
- package/tests/cypress/src/core/BasePOM.ts +33 -0
- package/tests/cypress/src/core/BlockEditorBasePOM.ts +874 -0
- package/tests/cypress/src/core/DashboardEntityPOM.ts +41 -0
- package/tests/cypress/src/core/index.ts +14 -0
- package/tests/cypress/src/entities/CustomersPOM.ts +172 -0
- package/tests/cypress/src/entities/PagesPOM.ts +137 -0
- package/tests/cypress/src/entities/PatternsPOM.ts +329 -0
- package/tests/cypress/src/entities/PostsPOM.ts +137 -0
- package/tests/cypress/src/entities/TasksPOM.ts +246 -0
- package/tests/cypress/src/entities/index.ts +16 -0
- package/tests/cypress/src/features/BillingPOM.ts +385 -0
- package/tests/cypress/src/features/DashboardPOM.ts +271 -0
- package/tests/cypress/src/features/DevtoolsPOM.ts +750 -0
- package/tests/cypress/src/features/PageBuilderPOM.ts +283 -0
- package/tests/cypress/src/features/PostEditorPOM.ts +313 -0
- package/tests/cypress/src/features/ScheduledActionsPOM.ts +463 -0
- package/tests/cypress/src/features/SettingsPOM.ts +707 -0
- package/tests/cypress/src/features/SuperadminPOM.ts +851 -0
- package/tests/cypress/src/features/SuperadminTeamRolesPOM.ts +285 -0
- package/tests/cypress/src/features/index.ts +28 -0
- package/tests/cypress/src/helpers/ApiInterceptor.ts +20 -0
- package/tests/cypress/src/index.ts +101 -0
- package/tests/cypress/src/pages/dashboard/Dashboard.js +677 -0
- package/tests/cypress/src/pages/dashboard/DashboardPage.js +43 -0
- package/tests/cypress/src/pages/dashboard/DashboardStats.js +546 -0
- package/tests/cypress/src/pages/dashboard/index.js +6 -0
- package/tests/cypress/src/pages/index.js +5 -0
- package/tests/cypress/src/pages/public/FeaturesPage.js +28 -0
- package/tests/cypress/src/pages/public/LandingPage.js +69 -0
- package/tests/cypress/src/pages/public/PricingPage.js +33 -0
- package/tests/cypress/src/pages/public/index.js +6 -0
- package/tests/cypress/src/selectors.ts +46 -0
- package/tests/cypress/src/session-helpers.ts +518 -0
- package/tests/cypress/support/doc-commands.ts +260 -0
- package/tests/cypress/support/e2e.ts +90 -0
- package/tests/cypress.config.ts +178 -0
- package/tests/jest/__mocks__/@nextsparkjs/core/components/ui/badge.js +16 -0
- package/tests/jest/__mocks__/@nextsparkjs/core/lib/db.js +11 -0
- package/tests/jest/__mocks__/@nextsparkjs/registries/permissions-registry.ts +160 -0
- package/tests/jest/__mocks__/@nextsparkjs/registries/theme-registry.ts +68 -0
- package/tests/jest/__mocks__/jose.js +22 -0
- package/tests/jest/__mocks__/next/image.js +15 -0
- package/tests/jest/__mocks__/next-server.js +56 -0
- package/tests/jest/components/post-header.test.tsx +377 -0
- package/tests/jest/jest.config.cjs +154 -0
- package/tests/jest/langchain/COVERAGE.md +372 -0
- package/tests/jest/langchain/guardrails.test.ts +465 -0
- package/tests/jest/langchain/streaming.test.ts +370 -0
- package/tests/jest/langchain/token-tracker.test.ts +455 -0
- package/tests/jest/langchain/tracer-callbacks.test.ts +881 -0
- package/tests/jest/langchain/tracer.test.ts +823 -0
- package/tests/jest/services/tasks.service.test.ts +707 -0
- package/tests/jest/setup.ts +170 -0
- package/tests/jest/tsconfig.jest.json +6 -0
- package/tests/jest/validation/categories.test.ts +429 -0
- package/tests/jest/validation/posts.test.ts +546 -0
- package/tests/tsconfig.json +21 -0
- /package/docs/{02-features → public/02-features}/01-components.md +0 -0
- /package/docs/{02-features → public/02-features}/02-styling.md +0 -0
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Presets for Pages Entity
|
|
3
|
+
*
|
|
4
|
+
* These presets appear in the DevTools API Explorer's "Presets" tab.
|
|
5
|
+
* The endpoint is automatically derived from the entity name: /api/v1/pages
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { defineApiEndpoint } from '@nextsparkjs/core/types/api-presets'
|
|
9
|
+
|
|
10
|
+
export default defineApiEndpoint({
|
|
11
|
+
summary: 'Manage builder-enabled pages',
|
|
12
|
+
presets: [
|
|
13
|
+
{
|
|
14
|
+
id: 'list-all',
|
|
15
|
+
title: 'List All Pages',
|
|
16
|
+
description: 'Fetch all pages with default pagination',
|
|
17
|
+
method: 'GET',
|
|
18
|
+
params: {
|
|
19
|
+
limit: 10,
|
|
20
|
+
offset: 0
|
|
21
|
+
},
|
|
22
|
+
tags: ['read', 'list']
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'list-published',
|
|
26
|
+
title: 'List Published Pages',
|
|
27
|
+
description: 'Fetch only published pages',
|
|
28
|
+
method: 'GET',
|
|
29
|
+
params: {
|
|
30
|
+
status: 'published',
|
|
31
|
+
limit: 20
|
|
32
|
+
},
|
|
33
|
+
tags: ['read', 'filter']
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: 'list-by-locale',
|
|
37
|
+
title: 'List Spanish Pages',
|
|
38
|
+
description: 'Fetch pages in Spanish locale',
|
|
39
|
+
method: 'GET',
|
|
40
|
+
params: {
|
|
41
|
+
locale: 'es',
|
|
42
|
+
limit: 10
|
|
43
|
+
},
|
|
44
|
+
tags: ['read', 'filter', 'i18n']
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 'create-draft',
|
|
48
|
+
title: 'Create Draft Page',
|
|
49
|
+
description: 'Create a new page as draft',
|
|
50
|
+
method: 'POST',
|
|
51
|
+
payload: {
|
|
52
|
+
title: 'New Page',
|
|
53
|
+
slug: 'new-page',
|
|
54
|
+
status: 'draft',
|
|
55
|
+
locale: 'en',
|
|
56
|
+
blocks: []
|
|
57
|
+
},
|
|
58
|
+
tags: ['write', 'create']
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'search-title',
|
|
62
|
+
title: 'Search by Title',
|
|
63
|
+
description: 'Search pages by title',
|
|
64
|
+
method: 'GET',
|
|
65
|
+
params: {
|
|
66
|
+
search: 'About',
|
|
67
|
+
searchField: 'title'
|
|
68
|
+
},
|
|
69
|
+
tags: ['read', 'search']
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
})
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Posts API
|
|
2
|
+
|
|
3
|
+
Manage blog posts with builder support and taxonomies. Posts render at /blog/[slug] and support categories, featured images, and excerpts.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The Posts API allows you to create, read, update, and delete blog posts with builder content. Posts support the page builder for content creation and include taxonomy management for categories.
|
|
8
|
+
|
|
9
|
+
## Authentication
|
|
10
|
+
|
|
11
|
+
All endpoints require authentication via:
|
|
12
|
+
- **Session cookie** (for browser-based requests)
|
|
13
|
+
- **API Key** header (for server-to-server requests)
|
|
14
|
+
|
|
15
|
+
## Endpoints
|
|
16
|
+
|
|
17
|
+
### List Posts
|
|
18
|
+
`GET /api/v1/posts`
|
|
19
|
+
|
|
20
|
+
Returns a paginated list of posts.
|
|
21
|
+
|
|
22
|
+
**Query Parameters:**
|
|
23
|
+
- `limit` (number, optional): Maximum records to return. Default: 20
|
|
24
|
+
- `offset` (number, optional): Number of records to skip. Default: 0
|
|
25
|
+
- `status` (string, optional): Filter by status (draft, published, scheduled, archived)
|
|
26
|
+
- `search` (string, optional): Search term for title/excerpt
|
|
27
|
+
- `sortBy` (string, optional): Field to sort by
|
|
28
|
+
- `sortOrder` (string, optional): Sort direction (asc, desc)
|
|
29
|
+
|
|
30
|
+
**Example Response:**
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"data": [
|
|
34
|
+
{
|
|
35
|
+
"id": "post_123",
|
|
36
|
+
"title": "Getting Started with NextSpark",
|
|
37
|
+
"slug": "getting-started",
|
|
38
|
+
"status": "published",
|
|
39
|
+
"excerpt": "Learn how to build amazing apps with NextSpark",
|
|
40
|
+
"featuredImage": "/uploads/hero.jpg",
|
|
41
|
+
"blocks": [...],
|
|
42
|
+
"createdAt": "2024-01-15T10:30:00Z"
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"pagination": {
|
|
46
|
+
"total": 42,
|
|
47
|
+
"limit": 20,
|
|
48
|
+
"offset": 0
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Get Single Post
|
|
54
|
+
`GET /api/v1/posts/[id]`
|
|
55
|
+
|
|
56
|
+
Returns a single post by ID.
|
|
57
|
+
|
|
58
|
+
**Path Parameters:**
|
|
59
|
+
- `id` (string, required): Post ID
|
|
60
|
+
|
|
61
|
+
### Create Post
|
|
62
|
+
`POST /api/v1/posts`
|
|
63
|
+
|
|
64
|
+
Create a new post record.
|
|
65
|
+
|
|
66
|
+
**Request Body:**
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"title": "My New Blog Post",
|
|
70
|
+
"slug": "my-new-blog-post",
|
|
71
|
+
"status": "draft",
|
|
72
|
+
"excerpt": "A brief introduction to my post",
|
|
73
|
+
"blocks": []
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Update Post
|
|
78
|
+
`PATCH /api/v1/posts/[id]`
|
|
79
|
+
|
|
80
|
+
Update an existing post.
|
|
81
|
+
|
|
82
|
+
**Path Parameters:**
|
|
83
|
+
- `id` (string, required): Post ID
|
|
84
|
+
|
|
85
|
+
**Request Body:**
|
|
86
|
+
Any fields to update (partial update supported).
|
|
87
|
+
|
|
88
|
+
### Delete Post
|
|
89
|
+
`DELETE /api/v1/posts/[id]`
|
|
90
|
+
|
|
91
|
+
Delete a post record.
|
|
92
|
+
|
|
93
|
+
**Path Parameters:**
|
|
94
|
+
- `id` (string, required): Post ID
|
|
95
|
+
|
|
96
|
+
## Fields
|
|
97
|
+
|
|
98
|
+
| Field | Type | Required | Description |
|
|
99
|
+
|-------|------|----------|-------------|
|
|
100
|
+
| title | text | Yes | Post title |
|
|
101
|
+
| slug | text | Yes | URL-friendly identifier |
|
|
102
|
+
| status | select | Yes | draft, published, scheduled, archived |
|
|
103
|
+
| excerpt | textarea | No | Short summary of the post |
|
|
104
|
+
| featuredImage | image | No | Main image for the post |
|
|
105
|
+
| blocks | json | No | Page builder content |
|
|
106
|
+
|
|
107
|
+
## Taxonomies
|
|
108
|
+
|
|
109
|
+
Posts support the following taxonomies:
|
|
110
|
+
- **categories** (post_category): Multiple categories can be assigned
|
|
111
|
+
|
|
112
|
+
## Error Responses
|
|
113
|
+
|
|
114
|
+
| Status | Description |
|
|
115
|
+
|--------|-------------|
|
|
116
|
+
| 400 | Bad Request - Invalid parameters |
|
|
117
|
+
| 401 | Unauthorized - Missing or invalid auth |
|
|
118
|
+
| 403 | Forbidden - Insufficient permissions |
|
|
119
|
+
| 404 | Not Found - Post doesn't exist |
|
|
120
|
+
| 422 | Validation Error - Invalid data |
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Presets for Posts Entity
|
|
3
|
+
*
|
|
4
|
+
* These presets appear in the DevTools API Explorer's "Presets" tab.
|
|
5
|
+
* The endpoint is automatically derived from the entity name: /api/v1/posts
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { defineApiEndpoint } from '@nextsparkjs/core/types/api-presets'
|
|
9
|
+
|
|
10
|
+
export default defineApiEndpoint({
|
|
11
|
+
summary: 'Manage blog posts with builder and taxonomies',
|
|
12
|
+
presets: [
|
|
13
|
+
{
|
|
14
|
+
id: 'list-all',
|
|
15
|
+
title: 'List All Posts',
|
|
16
|
+
description: 'Fetch all posts with default pagination',
|
|
17
|
+
method: 'GET',
|
|
18
|
+
params: {
|
|
19
|
+
limit: 10,
|
|
20
|
+
offset: 0
|
|
21
|
+
},
|
|
22
|
+
tags: ['read', 'list']
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'list-published',
|
|
26
|
+
title: 'List Published Posts',
|
|
27
|
+
description: 'Fetch only published posts',
|
|
28
|
+
method: 'GET',
|
|
29
|
+
params: {
|
|
30
|
+
status: 'published',
|
|
31
|
+
limit: 20,
|
|
32
|
+
sortBy: 'createdAt',
|
|
33
|
+
sortOrder: 'desc'
|
|
34
|
+
},
|
|
35
|
+
tags: ['read', 'filter', 'public']
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: 'list-drafts',
|
|
39
|
+
title: 'List Draft Posts',
|
|
40
|
+
description: 'Fetch posts in draft status',
|
|
41
|
+
method: 'GET',
|
|
42
|
+
params: {
|
|
43
|
+
status: 'draft',
|
|
44
|
+
limit: 20
|
|
45
|
+
},
|
|
46
|
+
tags: ['read', 'filter']
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
id: 'create-draft',
|
|
50
|
+
title: 'Create Draft Post',
|
|
51
|
+
description: 'Create a new post as draft',
|
|
52
|
+
method: 'POST',
|
|
53
|
+
payload: {
|
|
54
|
+
title: 'My New Blog Post',
|
|
55
|
+
slug: 'my-new-blog-post',
|
|
56
|
+
status: 'draft',
|
|
57
|
+
excerpt: 'A brief introduction to my post',
|
|
58
|
+
blocks: []
|
|
59
|
+
},
|
|
60
|
+
tags: ['write', 'create']
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
id: 'search-title',
|
|
64
|
+
title: 'Search by Title',
|
|
65
|
+
description: 'Search posts by title',
|
|
66
|
+
method: 'GET',
|
|
67
|
+
params: {
|
|
68
|
+
search: 'NextSpark',
|
|
69
|
+
searchField: 'title'
|
|
70
|
+
},
|
|
71
|
+
tags: ['read', 'search']
|
|
72
|
+
}
|
|
73
|
+
]
|
|
74
|
+
})
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Tasks API
|
|
2
|
+
|
|
3
|
+
Manage tasks with status tracking, priorities, and metadata support. Tasks are team-scoped private entities.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The Tasks API allows you to create, read, update, and delete task records. Tasks support status workflows, priority levels, due dates, and metadata. Each task belongs to a team and is filtered based on the authenticated user's team context.
|
|
8
|
+
|
|
9
|
+
## Authentication
|
|
10
|
+
|
|
11
|
+
All endpoints require authentication via:
|
|
12
|
+
- **Session cookie** (for browser-based requests)
|
|
13
|
+
- **API Key** header (for server-to-server requests)
|
|
14
|
+
|
|
15
|
+
## Endpoints
|
|
16
|
+
|
|
17
|
+
### List Tasks
|
|
18
|
+
`GET /api/v1/tasks`
|
|
19
|
+
|
|
20
|
+
Returns a paginated list of tasks for the current team.
|
|
21
|
+
|
|
22
|
+
**Query Parameters:**
|
|
23
|
+
- `limit` (number, optional): Maximum records to return. Default: 20
|
|
24
|
+
- `offset` (number, optional): Number of records to skip. Default: 0
|
|
25
|
+
- `status` (string, optional): Filter by status (todo, in-progress, review, done, blocked)
|
|
26
|
+
- `priority` (string, optional): Filter by priority (low, medium, high, urgent)
|
|
27
|
+
- `search` (string, optional): Search term for title/description
|
|
28
|
+
- `sortBy` (string, optional): Field to sort by
|
|
29
|
+
- `sortOrder` (string, optional): Sort direction (asc, desc)
|
|
30
|
+
|
|
31
|
+
**Example Response:**
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"data": [
|
|
35
|
+
{
|
|
36
|
+
"id": "task_123",
|
|
37
|
+
"title": "Implement new feature",
|
|
38
|
+
"description": "Add user authentication flow",
|
|
39
|
+
"status": "in-progress",
|
|
40
|
+
"priority": "high",
|
|
41
|
+
"dueDate": "2024-02-01",
|
|
42
|
+
"estimatedHours": 8,
|
|
43
|
+
"tags": ["feature", "auth"],
|
|
44
|
+
"createdAt": "2024-01-15T10:30:00Z"
|
|
45
|
+
}
|
|
46
|
+
],
|
|
47
|
+
"pagination": {
|
|
48
|
+
"total": 42,
|
|
49
|
+
"limit": 20,
|
|
50
|
+
"offset": 0
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Get Single Task
|
|
56
|
+
`GET /api/v1/tasks/[id]`
|
|
57
|
+
|
|
58
|
+
Returns a single task by ID.
|
|
59
|
+
|
|
60
|
+
**Path Parameters:**
|
|
61
|
+
- `id` (string, required): Task ID
|
|
62
|
+
|
|
63
|
+
### Create Task
|
|
64
|
+
`POST /api/v1/tasks`
|
|
65
|
+
|
|
66
|
+
Create a new task record.
|
|
67
|
+
|
|
68
|
+
**Request Body:**
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"title": "New Task",
|
|
72
|
+
"description": "Task details here",
|
|
73
|
+
"status": "todo",
|
|
74
|
+
"priority": "medium",
|
|
75
|
+
"dueDate": "2024-02-15",
|
|
76
|
+
"estimatedHours": 4,
|
|
77
|
+
"tags": ["development"]
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Update Task
|
|
82
|
+
`PATCH /api/v1/tasks/[id]`
|
|
83
|
+
|
|
84
|
+
Update an existing task.
|
|
85
|
+
|
|
86
|
+
**Path Parameters:**
|
|
87
|
+
- `id` (string, required): Task ID
|
|
88
|
+
|
|
89
|
+
**Request Body:**
|
|
90
|
+
Any fields to update (partial update supported).
|
|
91
|
+
|
|
92
|
+
### Delete Task
|
|
93
|
+
`DELETE /api/v1/tasks/[id]`
|
|
94
|
+
|
|
95
|
+
Delete a task record.
|
|
96
|
+
|
|
97
|
+
**Path Parameters:**
|
|
98
|
+
- `id` (string, required): Task ID
|
|
99
|
+
|
|
100
|
+
## Fields
|
|
101
|
+
|
|
102
|
+
| Field | Type | Required | Default | Description |
|
|
103
|
+
|-------|------|----------|---------|-------------|
|
|
104
|
+
| title | text | Yes | - | Task title |
|
|
105
|
+
| description | textarea | No | - | Detailed description |
|
|
106
|
+
| status | select | No | todo | todo, in-progress, review, done, blocked |
|
|
107
|
+
| priority | select | No | medium | low, medium, high, urgent |
|
|
108
|
+
| tags | tags | No | [] | Task tags for categorization |
|
|
109
|
+
| dueDate | date | No | - | Task deadline |
|
|
110
|
+
| estimatedHours | number | No | - | Estimated time to complete |
|
|
111
|
+
|
|
112
|
+
## Metadata Support
|
|
113
|
+
|
|
114
|
+
Tasks support the metadata system. Use the metadata endpoints to store additional custom data:
|
|
115
|
+
- `POST /api/v1/tasks/[id]/meta` - Add metadata
|
|
116
|
+
- `GET /api/v1/tasks/[id]/meta` - Get metadata
|
|
117
|
+
|
|
118
|
+
## Error Responses
|
|
119
|
+
|
|
120
|
+
| Status | Description |
|
|
121
|
+
|--------|-------------|
|
|
122
|
+
| 400 | Bad Request - Invalid parameters |
|
|
123
|
+
| 401 | Unauthorized - Missing or invalid auth |
|
|
124
|
+
| 403 | Forbidden - Insufficient permissions |
|
|
125
|
+
| 404 | Not Found - Task doesn't exist |
|
|
126
|
+
| 422 | Validation Error - Invalid data |
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Presets for Tasks Entity
|
|
3
|
+
*
|
|
4
|
+
* These presets appear in the DevTools API Explorer's "Presets" tab.
|
|
5
|
+
* The endpoint is automatically derived from the entity name: /api/v1/tasks
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { defineApiEndpoint } from '@nextsparkjs/core/types/api-presets'
|
|
9
|
+
|
|
10
|
+
export default defineApiEndpoint({
|
|
11
|
+
summary: 'Manage tasks with status and priorities',
|
|
12
|
+
presets: [
|
|
13
|
+
{
|
|
14
|
+
id: 'list-all',
|
|
15
|
+
title: 'List All Tasks',
|
|
16
|
+
description: 'Fetch all tasks with default pagination',
|
|
17
|
+
method: 'GET',
|
|
18
|
+
params: {
|
|
19
|
+
limit: 10,
|
|
20
|
+
offset: 0
|
|
21
|
+
},
|
|
22
|
+
tags: ['read', 'list']
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
id: 'list-todo',
|
|
26
|
+
title: 'List To-Do Tasks',
|
|
27
|
+
description: 'Fetch tasks in to-do status',
|
|
28
|
+
method: 'GET',
|
|
29
|
+
params: {
|
|
30
|
+
status: 'todo',
|
|
31
|
+
limit: 20
|
|
32
|
+
},
|
|
33
|
+
tags: ['read', 'filter']
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
id: 'list-in-progress',
|
|
37
|
+
title: 'List In Progress',
|
|
38
|
+
description: 'Fetch tasks currently in progress',
|
|
39
|
+
method: 'GET',
|
|
40
|
+
params: {
|
|
41
|
+
status: 'in-progress',
|
|
42
|
+
limit: 20
|
|
43
|
+
},
|
|
44
|
+
tags: ['read', 'filter']
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 'list-urgent',
|
|
48
|
+
title: 'List Urgent Tasks',
|
|
49
|
+
description: 'Fetch high priority and urgent tasks',
|
|
50
|
+
method: 'GET',
|
|
51
|
+
params: {
|
|
52
|
+
priority: 'urgent',
|
|
53
|
+
sortBy: 'dueDate',
|
|
54
|
+
sortOrder: 'asc'
|
|
55
|
+
},
|
|
56
|
+
tags: ['read', 'filter', 'priority']
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 'create-task',
|
|
60
|
+
title: 'Create New Task',
|
|
61
|
+
description: 'Create a new task with sample data',
|
|
62
|
+
method: 'POST',
|
|
63
|
+
payload: {
|
|
64
|
+
title: 'New Task',
|
|
65
|
+
description: 'Task description here',
|
|
66
|
+
status: 'todo',
|
|
67
|
+
priority: 'medium',
|
|
68
|
+
tags: ['development']
|
|
69
|
+
},
|
|
70
|
+
tags: ['write', 'create']
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: 'search-title',
|
|
74
|
+
title: 'Search by Title',
|
|
75
|
+
description: 'Search tasks by title',
|
|
76
|
+
method: 'GET',
|
|
77
|
+
params: {
|
|
78
|
+
search: 'feature',
|
|
79
|
+
searchField: 'title'
|
|
80
|
+
},
|
|
81
|
+
tags: ['read', 'search']
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
})
|
package/lib/selectors.ts
CHANGED
|
@@ -9,8 +9,7 @@
|
|
|
9
9
|
* - Cypress tests (via tests/cypress/src/selectors.ts)
|
|
10
10
|
*/
|
|
11
11
|
|
|
12
|
-
import { createSelectorHelpers } from '@nextsparkjs/core/
|
|
13
|
-
import { CORE_SELECTORS } from '@nextsparkjs/core/lib/test/core-selectors'
|
|
12
|
+
import { createSelectorHelpers, CORE_SELECTORS } from '@nextsparkjs/core/selectors'
|
|
14
13
|
|
|
15
14
|
// =============================================================================
|
|
16
15
|
// BLOCK SELECTORS
|
|
@@ -134,11 +133,15 @@ export const DEVTOOLS_SELECTORS = {
|
|
|
134
133
|
|
|
135
134
|
/**
|
|
136
135
|
* Complete theme selectors merging core and blocks.
|
|
136
|
+
* NOTE: devtools must be MERGED (not replaced) to keep CORE_SELECTORS.devtools
|
|
137
137
|
*/
|
|
138
138
|
export const THEME_SELECTORS = {
|
|
139
139
|
...CORE_SELECTORS,
|
|
140
140
|
blocks: BLOCK_SELECTORS,
|
|
141
|
-
devtools:
|
|
141
|
+
devtools: {
|
|
142
|
+
...CORE_SELECTORS.devtools,
|
|
143
|
+
...DEVTOOLS_SELECTORS,
|
|
144
|
+
},
|
|
142
145
|
} as const
|
|
143
146
|
|
|
144
147
|
// =============================================================================
|
|
@@ -193,5 +196,5 @@ export const entitySelectors = helpers.entitySelectors
|
|
|
193
196
|
*/
|
|
194
197
|
export type ThemeSelectorsType = typeof THEME_SELECTORS
|
|
195
198
|
export type BlockSelectorsType = typeof BLOCK_SELECTORS
|
|
196
|
-
export type { Replacements } from '@nextsparkjs/core/
|
|
199
|
+
export type { Replacements } from '@nextsparkjs/core/selectors'
|
|
197
200
|
export { CORE_SELECTORS }
|
package/messages/de/admin.json
CHANGED
|
@@ -214,6 +214,51 @@
|
|
|
214
214
|
"messages": {
|
|
215
215
|
"saved": "Erfolgreich gespeichert",
|
|
216
216
|
"created": "Erfolgreich erstellt"
|
|
217
|
+
},
|
|
218
|
+
"header": {
|
|
219
|
+
"actions": {
|
|
220
|
+
"saveDraft": "Entwurf Speichern",
|
|
221
|
+
"publish": "Veröffentlichen",
|
|
222
|
+
"update": "Aktualisieren"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"canvas": {
|
|
226
|
+
"empty": {
|
|
227
|
+
"title": "Noch keine Blöcke",
|
|
228
|
+
"subtitle": "Fügen Sie Blöcke aus der Seitenleiste hinzu"
|
|
229
|
+
},
|
|
230
|
+
"editingBadge": "Bearbeiten",
|
|
231
|
+
"error": {
|
|
232
|
+
"blockNotFound": "Block nicht gefunden"
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"floatingToolbar": {
|
|
236
|
+
"drag": "Ziehen zum Neuordnen",
|
|
237
|
+
"duplicate": "Block duplizieren",
|
|
238
|
+
"delete": "Block löschen"
|
|
239
|
+
},
|
|
240
|
+
"settingsPanel": {
|
|
241
|
+
"title": "Block-Eigenschaften",
|
|
242
|
+
"empty": {
|
|
243
|
+
"message": "Kein Block ausgewählt",
|
|
244
|
+
"hint": "Wählen Sie einen Block aus dem Canvas, um seine Einstellungen zu bearbeiten"
|
|
245
|
+
},
|
|
246
|
+
"error": {
|
|
247
|
+
"notFound": "Block-Konfiguration nicht gefunden"
|
|
248
|
+
},
|
|
249
|
+
"actions": {
|
|
250
|
+
"reset": "Zurücksetzen",
|
|
251
|
+
"remove": "Entfernen"
|
|
252
|
+
},
|
|
253
|
+
"tabs": {
|
|
254
|
+
"content": "Inhalt",
|
|
255
|
+
"design": "Design",
|
|
256
|
+
"advanced": "Erweitert",
|
|
257
|
+
"noContentFields": "Keine Inhaltsfelder",
|
|
258
|
+
"noDesignFields": "Keine Designfelder",
|
|
259
|
+
"noAdvancedFields": "Keine erweiterten Felder"
|
|
260
|
+
},
|
|
261
|
+
"noFields": "Dieser Block hat keine konfigurierbaren Felder"
|
|
217
262
|
}
|
|
218
263
|
}
|
|
219
264
|
}
|
package/messages/en/admin.json
CHANGED
|
@@ -214,6 +214,62 @@
|
|
|
214
214
|
"messages": {
|
|
215
215
|
"saved": "Saved successfully",
|
|
216
216
|
"created": "Created successfully"
|
|
217
|
+
},
|
|
218
|
+
"header": {
|
|
219
|
+
"actions": {
|
|
220
|
+
"saveDraft": "Save Draft",
|
|
221
|
+
"publish": "Publish",
|
|
222
|
+
"update": "Update"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"canvas": {
|
|
226
|
+
"empty": {
|
|
227
|
+
"title": "No blocks yet",
|
|
228
|
+
"subtitle": "Add blocks from the left sidebar"
|
|
229
|
+
},
|
|
230
|
+
"editingBadge": "Editing",
|
|
231
|
+
"error": {
|
|
232
|
+
"blockNotFound": "Block not found"
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"floatingToolbar": {
|
|
236
|
+
"drag": "Drag to reorder",
|
|
237
|
+
"duplicate": "Duplicate block",
|
|
238
|
+
"delete": "Delete block"
|
|
239
|
+
},
|
|
240
|
+
"settingsPanel": {
|
|
241
|
+
"title": "Block Properties",
|
|
242
|
+
"empty": {
|
|
243
|
+
"message": "No block selected",
|
|
244
|
+
"hint": "Select a block from the canvas to edit its settings"
|
|
245
|
+
},
|
|
246
|
+
"error": {
|
|
247
|
+
"notFound": "Block configuration not found"
|
|
248
|
+
},
|
|
249
|
+
"actions": {
|
|
250
|
+
"reset": "Reset",
|
|
251
|
+
"remove": "Remove"
|
|
252
|
+
},
|
|
253
|
+
"tabs": {
|
|
254
|
+
"content": "Content",
|
|
255
|
+
"design": "Design",
|
|
256
|
+
"advanced": "Advanced",
|
|
257
|
+
"noContentFields": "No content fields",
|
|
258
|
+
"noDesignFields": "No design fields",
|
|
259
|
+
"noAdvancedFields": "No advanced fields"
|
|
260
|
+
},
|
|
261
|
+
"noFields": "This block has no configurable fields",
|
|
262
|
+
"pattern": {
|
|
263
|
+
"title": "Pattern Reference",
|
|
264
|
+
"locked": {
|
|
265
|
+
"title": "Pattern is read-only",
|
|
266
|
+
"description": "To edit this pattern's content, edit the pattern directly. Changes will be reflected everywhere it's used."
|
|
267
|
+
},
|
|
268
|
+
"actions": {
|
|
269
|
+
"edit": "Edit Pattern",
|
|
270
|
+
"remove": "Remove from page"
|
|
271
|
+
}
|
|
272
|
+
}
|
|
217
273
|
}
|
|
218
274
|
}
|
|
219
275
|
}
|
package/messages/es/admin.json
CHANGED
|
@@ -214,6 +214,62 @@
|
|
|
214
214
|
"messages": {
|
|
215
215
|
"saved": "Guardado exitosamente",
|
|
216
216
|
"created": "Creado exitosamente"
|
|
217
|
+
},
|
|
218
|
+
"header": {
|
|
219
|
+
"actions": {
|
|
220
|
+
"saveDraft": "Guardar Borrador",
|
|
221
|
+
"publish": "Publicar",
|
|
222
|
+
"update": "Actualizar"
|
|
223
|
+
}
|
|
224
|
+
},
|
|
225
|
+
"canvas": {
|
|
226
|
+
"empty": {
|
|
227
|
+
"title": "Aún no hay bloques",
|
|
228
|
+
"subtitle": "Agrega bloques desde la barra lateral izquierda"
|
|
229
|
+
},
|
|
230
|
+
"editingBadge": "Editando",
|
|
231
|
+
"error": {
|
|
232
|
+
"blockNotFound": "Bloque no encontrado"
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
"floatingToolbar": {
|
|
236
|
+
"drag": "Arrastra para reordenar",
|
|
237
|
+
"duplicate": "Duplicar bloque",
|
|
238
|
+
"delete": "Eliminar bloque"
|
|
239
|
+
},
|
|
240
|
+
"settingsPanel": {
|
|
241
|
+
"title": "Propiedades del Bloque",
|
|
242
|
+
"empty": {
|
|
243
|
+
"message": "Ningún bloque seleccionado",
|
|
244
|
+
"hint": "Selecciona un bloque del canvas para editar su configuración"
|
|
245
|
+
},
|
|
246
|
+
"error": {
|
|
247
|
+
"notFound": "Configuración del bloque no encontrada"
|
|
248
|
+
},
|
|
249
|
+
"actions": {
|
|
250
|
+
"reset": "Restablecer",
|
|
251
|
+
"remove": "Eliminar"
|
|
252
|
+
},
|
|
253
|
+
"tabs": {
|
|
254
|
+
"content": "Contenido",
|
|
255
|
+
"design": "Diseño",
|
|
256
|
+
"advanced": "Avanzado",
|
|
257
|
+
"noContentFields": "Sin campos de contenido",
|
|
258
|
+
"noDesignFields": "Sin campos de diseño",
|
|
259
|
+
"noAdvancedFields": "Sin campos avanzados"
|
|
260
|
+
},
|
|
261
|
+
"noFields": "Este bloque no tiene campos configurables",
|
|
262
|
+
"pattern": {
|
|
263
|
+
"title": "Referencia de Patrón",
|
|
264
|
+
"locked": {
|
|
265
|
+
"title": "El patrón es de solo lectura",
|
|
266
|
+
"description": "Para editar el contenido de este patrón, edítalo directamente. Los cambios se reflejarán en todos los lugares donde se usa."
|
|
267
|
+
},
|
|
268
|
+
"actions": {
|
|
269
|
+
"edit": "Editar Patrón",
|
|
270
|
+
"remove": "Quitar de la página"
|
|
271
|
+
}
|
|
272
|
+
}
|
|
217
273
|
}
|
|
218
274
|
}
|
|
219
275
|
}
|