@open-mercato/core 0.6.7 → 0.6.8-develop.6875.1.871a4afc94
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/.turbo/turbo-build.log +2 -2
- package/AGENTS.md +3 -3
- package/agentic/standalone-guide.md +13 -0
- package/dist/bootstrap.js +16 -1
- package/dist/bootstrap.js.map +2 -2
- package/dist/generated/entities/attachment_quota_reservation/index.js +33 -0
- package/dist/generated/entities/attachment_quota_reservation/index.js.map +7 -0
- package/dist/generated/entities/customer_deal_person_link/index.js +2 -0
- package/dist/generated/entities/customer_deal_person_link/index.js.map +2 -2
- package/dist/generated/entities/customer_user_invitation/index.js +2 -0
- package/dist/generated/entities/customer_user_invitation/index.js.map +2 -2
- package/dist/generated/entities/gateway_payment_operation/index.js +2 -0
- package/dist/generated/entities/gateway_payment_operation/index.js.map +2 -2
- package/dist/generated/entities/gateway_transaction/index.js +2 -0
- package/dist/generated/entities/gateway_transaction/index.js.map +2 -2
- package/dist/generated/entities/organization/index.js +2 -0
- package/dist/generated/entities/organization/index.js.map +2 -2
- package/dist/generated/entities/resources_resource/index.js +2 -0
- package/dist/generated/entities/resources_resource/index.js.map +2 -2
- package/dist/generated/entities.ids.generated.js +3 -1
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +23 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/helpers/integration/salesFixtures.js +31 -2
- package/dist/helpers/integration/salesFixtures.js.map +2 -2
- package/dist/helpers/integration/salesUi.js +5 -0
- package/dist/helpers/integration/salesUi.js.map +2 -2
- package/dist/modules/api_keys/backend/api-keys/page.js +2 -1
- package/dist/modules/api_keys/backend/api-keys/page.js.map +2 -2
- package/dist/modules/api_keys/extension-points.js +16 -0
- package/dist/modules/api_keys/extension-points.js.map +7 -0
- package/dist/modules/attachments/api/route.js +120 -10
- package/dist/modules/attachments/api/route.js.map +2 -2
- package/dist/modules/attachments/backend/config/attachments/page.js +1 -1
- package/dist/modules/attachments/backend/config/attachments/page.js.map +2 -2
- package/dist/modules/attachments/data/entities.js +67 -1
- package/dist/modules/attachments/data/entities.js.map +2 -2
- package/dist/modules/attachments/di.js +7 -1
- package/dist/modules/attachments/di.js.map +2 -2
- package/dist/modules/attachments/fields/attachment.js +1 -1
- package/dist/modules/attachments/fields/attachment.js.map +2 -2
- package/dist/modules/attachments/lib/drivers/index.js.map +1 -1
- package/dist/modules/attachments/lib/drivers/localDriver.js +19 -6
- package/dist/modules/attachments/lib/drivers/localDriver.js.map +2 -2
- package/dist/modules/attachments/lib/quota-recovery-queue.js +9 -0
- package/dist/modules/attachments/lib/quota-recovery-queue.js.map +7 -0
- package/dist/modules/attachments/lib/quota-service.js +224 -0
- package/dist/modules/attachments/lib/quota-service.js.map +7 -0
- package/dist/modules/attachments/lib/upload-limits.js +33 -0
- package/dist/modules/attachments/lib/upload-limits.js.map +2 -2
- package/dist/modules/attachments/migrations/Migration20260709234741_attachments.js +13 -0
- package/dist/modules/attachments/migrations/Migration20260709234741_attachments.js.map +7 -0
- package/dist/modules/attachments/workers/quota-recovery.js +45 -0
- package/dist/modules/attachments/workers/quota-recovery.js.map +7 -0
- package/dist/modules/audit_logs/api/audit-logs/access/route.js +5 -1
- package/dist/modules/audit_logs/api/audit-logs/access/route.js.map +2 -2
- package/dist/modules/audit_logs/api/audit-logs/actions/export/route.js +5 -1
- package/dist/modules/audit_logs/api/audit-logs/actions/export/route.js.map +2 -2
- package/dist/modules/audit_logs/api/audit-logs/actions/route.js +5 -1
- package/dist/modules/audit_logs/api/audit-logs/actions/route.js.map +2 -2
- package/dist/modules/audit_logs/api/audit-logs/readScope.js +12 -0
- package/dist/modules/audit_logs/api/audit-logs/readScope.js.map +7 -0
- package/dist/modules/audit_logs/components/AccessLogsTable.js +2 -1
- package/dist/modules/audit_logs/components/AccessLogsTable.js.map +2 -2
- package/dist/modules/audit_logs/components/AuditLogsActions.js +3 -2
- package/dist/modules/audit_logs/components/AuditLogsActions.js.map +2 -2
- package/dist/modules/audit_logs/extension-points.js +14 -0
- package/dist/modules/audit_logs/extension-points.js.map +7 -0
- package/dist/modules/auth/api/admin/nav.js +17 -4
- package/dist/modules/auth/api/admin/nav.js.map +2 -2
- package/dist/modules/auth/api/profile/route.js +8 -2
- package/dist/modules/auth/api/profile/route.js.map +2 -2
- package/dist/modules/auth/api/users/route.js +8 -19
- package/dist/modules/auth/api/users/route.js.map +2 -2
- package/dist/modules/auth/backend/auth/profile/page.js.map +2 -2
- package/dist/modules/auth/backend/profile/change-password/page.js.map +2 -2
- package/dist/modules/auth/backend/roles/page.js +2 -1
- package/dist/modules/auth/backend/roles/page.js.map +2 -2
- package/dist/modules/auth/backend/settings/page.js +14 -9
- package/dist/modules/auth/backend/settings/page.js.map +2 -2
- package/dist/modules/auth/backend/users/page.js +2 -1
- package/dist/modules/auth/backend/users/page.js.map +2 -2
- package/dist/modules/auth/cli.js +1 -1
- package/dist/modules/auth/cli.js.map +2 -2
- package/dist/modules/auth/components/UserConsentsPanel.js +9 -9
- package/dist/modules/auth/components/UserConsentsPanel.js.map +2 -2
- package/dist/modules/auth/extension-points.js +21 -0
- package/dist/modules/auth/extension-points.js.map +7 -0
- package/dist/modules/auth/frontend/login.js +7 -3
- package/dist/modules/auth/frontend/login.js.map +2 -2
- package/dist/modules/auth/frontend/reset.js +2 -2
- package/dist/modules/auth/frontend/reset.js.map +2 -2
- package/dist/modules/auth/lib/backendChrome.js +45 -29
- package/dist/modules/auth/lib/backendChrome.js.map +2 -2
- package/dist/modules/auth/lib/setup-app.js +17 -2
- package/dist/modules/auth/lib/setup-app.js.map +2 -2
- package/dist/modules/auth/lib/tenantAccess.js +7 -0
- package/dist/modules/auth/lib/tenantAccess.js.map +2 -2
- package/dist/modules/auth/services/rbacService.js +29 -44
- package/dist/modules/auth/services/rbacService.js.map +2 -2
- package/dist/modules/business_rules/api/openmercato-call-options/route.js +85 -0
- package/dist/modules/business_rules/api/openmercato-call-options/route.js.map +7 -0
- package/dist/modules/business_rules/api/rules/route.js +71 -4
- package/dist/modules/business_rules/api/rules/route.js.map +2 -2
- package/dist/modules/business_rules/backend/rules/page.js +2 -1
- package/dist/modules/business_rules/backend/rules/page.js.map +2 -2
- package/dist/modules/business_rules/components/ActionBuilder.js +47 -4
- package/dist/modules/business_rules/components/ActionBuilder.js.map +3 -3
- package/dist/modules/business_rules/components/ActionRow.js +106 -16
- package/dist/modules/business_rules/components/ActionRow.js.map +2 -2
- package/dist/modules/business_rules/components/ConditionRow.js +8 -4
- package/dist/modules/business_rules/components/ConditionRow.js.map +2 -2
- package/dist/modules/business_rules/components/utils/actionValidation.js +6 -0
- package/dist/modules/business_rules/components/utils/actionValidation.js.map +2 -2
- package/dist/modules/business_rules/events.js +13 -0
- package/dist/modules/business_rules/events.js.map +7 -0
- package/dist/modules/business_rules/extension-points.js +13 -0
- package/dist/modules/business_rules/extension-points.js.map +7 -0
- package/dist/modules/business_rules/lib/action-executor.js +148 -0
- package/dist/modules/business_rules/lib/action-executor.js.map +2 -2
- package/dist/modules/business_rules/lib/openmercato-call-options-types.js +5 -0
- package/dist/modules/business_rules/lib/openmercato-call-options-types.js.map +7 -0
- package/dist/modules/business_rules/lib/openmercato-call-options.js +231 -0
- package/dist/modules/business_rules/lib/openmercato-call-options.js.map +7 -0
- package/dist/modules/business_rules/lib/rule-engine.js +5 -1
- package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js +6 -5
- package/dist/modules/catalog/backend/catalog/products/[id]/page.js.map +2 -2
- package/dist/modules/catalog/backend/catalog/products/create/page.js +7 -6
- package/dist/modules/catalog/backend/catalog/products/create/page.js.map +2 -2
- package/dist/modules/catalog/components/PriceKindSettings.js +3 -3
- package/dist/modules/catalog/components/PriceKindSettings.js.map +2 -2
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js +2 -1
- package/dist/modules/catalog/components/categories/CategoriesDataTable.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductCategorizeSection.js +3 -3
- package/dist/modules/catalog/components/products/ProductCategorizeSection.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductMediaManager.js +1 -1
- package/dist/modules/catalog/components/products/ProductMediaManager.js.map +2 -2
- package/dist/modules/catalog/components/products/ProductsDataTable.js +3 -2
- package/dist/modules/catalog/components/products/ProductsDataTable.js.map +2 -2
- package/dist/modules/catalog/components/products/VariantBuilder.js +5 -5
- package/dist/modules/catalog/components/products/VariantBuilder.js.map +2 -2
- package/dist/modules/catalog/events.js +1 -0
- package/dist/modules/catalog/events.js.map +2 -2
- package/dist/modules/catalog/extension-points.js +27 -0
- package/dist/modules/catalog/extension-points.js.map +7 -0
- package/dist/modules/catalog/widgets/injection/product-bulk-delete/widget.js +10 -5
- package/dist/modules/catalog/widgets/injection/product-bulk-delete/widget.js.map +2 -2
- package/dist/modules/catalog/widgets/injection/product-seo/widget.js +1 -1
- package/dist/modules/catalog/widgets/injection/product-seo/widget.js.map +2 -2
- package/dist/modules/communication_channels/api/post/test-seed/route.js +52 -2
- package/dist/modules/communication_channels/api/post/test-seed/route.js.map +2 -2
- package/dist/modules/communication_channels/api/post/webhook/[provider]/route.js +11 -1
- package/dist/modules/communication_channels/api/post/webhook/[provider]/route.js.map +2 -2
- package/dist/modules/communication_channels/api/post/webhooks/gmail/route.js +11 -6
- package/dist/modules/communication_channels/api/post/webhooks/gmail/route.js.map +2 -2
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js +2 -1
- package/dist/modules/communication_channels/backend/communication_channels/channels/page.js.map +2 -2
- package/dist/modules/communication_channels/backend/profile/communication-channels/page.js +8 -7
- package/dist/modules/communication_channels/backend/profile/communication-channels/page.js.map +2 -2
- package/dist/modules/communication_channels/data/enrichers.js +4 -4
- package/dist/modules/communication_channels/data/enrichers.js.map +2 -2
- package/dist/modules/communication_channels/extension-points.js +20 -0
- package/dist/modules/communication_channels/extension-points.js.map +7 -0
- package/dist/modules/communication_channels/lib/access-control.js +2 -2
- package/dist/modules/communication_channels/lib/access-control.js.map +2 -2
- package/dist/modules/configs/backend/config/system-status/page.js +2 -1
- package/dist/modules/configs/backend/config/system-status/page.js.map +2 -2
- package/dist/modules/configs/extension-points.js +18 -0
- package/dist/modules/configs/extension-points.js.map +7 -0
- package/dist/modules/configs/lib/upgrade-actions.js +12 -0
- package/dist/modules/configs/lib/upgrade-actions.js.map +2 -2
- package/dist/modules/currencies/backend/currencies/page.js +2 -1
- package/dist/modules/currencies/backend/currencies/page.js.map +2 -2
- package/dist/modules/currencies/backend/exchange-rates/page.js +2 -1
- package/dist/modules/currencies/backend/exchange-rates/page.js.map +2 -2
- package/dist/modules/currencies/di.js +4 -0
- package/dist/modules/currencies/di.js.map +2 -2
- package/dist/modules/currencies/extension-points.js +14 -0
- package/dist/modules/currencies/extension-points.js.map +7 -0
- package/dist/modules/currencies/services/baseCurrencyService.js +42 -0
- package/dist/modules/currencies/services/baseCurrencyService.js.map +7 -0
- package/dist/modules/customer_accounts/api/admin/users/[id].js +10 -1
- package/dist/modules/customer_accounts/api/admin/users/[id].js.map +2 -2
- package/dist/modules/customer_accounts/api/admin/users-invite.js +63 -4
- package/dist/modules/customer_accounts/api/admin/users-invite.js.map +2 -2
- package/dist/modules/customer_accounts/api/invitations/accept.js +1 -2
- package/dist/modules/customer_accounts/api/invitations/accept.js.map +2 -2
- package/dist/modules/customer_accounts/api/login.js +4 -2
- package/dist/modules/customer_accounts/api/login.js.map +2 -2
- package/dist/modules/customer_accounts/api/magic-link/verify.js +4 -2
- package/dist/modules/customer_accounts/api/magic-link/verify.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/feature-check.js +5 -4
- package/dist/modules/customer_accounts/api/portal/feature-check.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/nav.js +6 -4
- package/dist/modules/customer_accounts/api/portal/nav.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/profile.js +5 -1
- package/dist/modules/customer_accounts/api/portal/profile.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/sessions-refresh.js +3 -3
- package/dist/modules/customer_accounts/api/portal/sessions-refresh.js.map +2 -2
- package/dist/modules/customer_accounts/api/portal/users-invite.js +22 -2
- package/dist/modules/customer_accounts/api/portal/users-invite.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js +2 -1
- package/dist/modules/customer_accounts/backend/customer_accounts/roles/page.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Diagnostics.js +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Diagnostics.js.map +2 -2
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js +2 -1
- package/dist/modules/customer_accounts/backend/customer_accounts/users/page.js.map +2 -2
- package/dist/modules/customer_accounts/data/entities.js +3 -0
- package/dist/modules/customer_accounts/data/entities.js.map +2 -2
- package/dist/modules/customer_accounts/data/validators.js +1 -0
- package/dist/modules/customer_accounts/data/validators.js.map +2 -2
- package/dist/modules/customer_accounts/emails/CustomerInvitationEmail.js +26 -0
- package/dist/modules/customer_accounts/emails/CustomerInvitationEmail.js.map +7 -0
- package/dist/modules/customer_accounts/extension-points.js +14 -0
- package/dist/modules/customer_accounts/extension-points.js.map +7 -0
- package/dist/modules/customer_accounts/lib/customerAuth.js +7 -2
- package/dist/modules/customer_accounts/lib/customerAuth.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerAuthServer.js +2 -1
- package/dist/modules/customer_accounts/lib/customerAuthServer.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerEntityOwnership.js +29 -3
- package/dist/modules/customer_accounts/lib/customerEntityOwnership.js.map +2 -2
- package/dist/modules/customer_accounts/lib/customerUrl.js +19 -10
- package/dist/modules/customer_accounts/lib/customerUrl.js.map +2 -2
- package/dist/modules/customer_accounts/lib/invitationEmail.js +35 -0
- package/dist/modules/customer_accounts/lib/invitationEmail.js.map +7 -0
- package/dist/modules/customer_accounts/migrations/Migration20260723120000_customer_accounts.js +13 -0
- package/dist/modules/customer_accounts/migrations/Migration20260723120000_customer_accounts.js.map +7 -0
- package/dist/modules/customer_accounts/services/customerInvitationService.js +32 -2
- package/dist/modules/customer_accounts/services/customerInvitationService.js.map +2 -2
- package/dist/modules/customer_accounts/services/customerRbacService.js +12 -3
- package/dist/modules/customer_accounts/services/customerRbacService.js.map +2 -2
- package/dist/modules/customer_accounts/setup.js +6 -0
- package/dist/modules/customer_accounts/setup.js.map +2 -2
- package/dist/modules/customer_accounts/subscribers/autoLinkCrm.js +47 -7
- package/dist/modules/customer_accounts/subscribers/autoLinkCrm.js.map +2 -2
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js +2 -2
- package/dist/modules/customer_accounts/widgets/injection/account-status/widget.client.js.map +2 -2
- package/dist/modules/customer_accounts/widgets/injection/portal-ai-assistant-trigger/widget.client.js +1 -1
- package/dist/modules/customer_accounts/widgets/injection/portal-ai-assistant-trigger/widget.client.js.map +2 -2
- package/dist/modules/customer_accounts/widgets/injection-table.js +1 -1
- package/dist/modules/customer_accounts/widgets/injection-table.js.map +2 -2
- package/dist/modules/customers/analytics.js +4 -1
- package/dist/modules/customers/analytics.js.map +2 -2
- package/dist/modules/customers/api/companies/[id]/route.js +3 -4
- package/dist/modules/customers/api/companies/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/people/route.js +4 -2
- package/dist/modules/customers/api/deals/[id]/people/route.js.map +2 -2
- package/dist/modules/customers/api/deals/[id]/route.js +7 -3
- package/dist/modules/customers/api/deals/[id]/route.js.map +2 -2
- package/dist/modules/customers/api/deals/aggregate/route.js +5 -4
- package/dist/modules/customers/api/deals/aggregate/route.js.map +2 -2
- package/dist/modules/customers/api/deals/summary/route.js +14 -119
- package/dist/modules/customers/api/deals/summary/route.js.map +2 -2
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js +3 -2
- package/dist/modules/customers/api/people/[id]/companies/enriched/route.js.map +2 -2
- package/dist/modules/customers/api/utils.js +21 -24
- package/dist/modules/customers/api/utils.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/[id]/page.js +2 -1
- package/dist/modules/customers/backend/customers/companies/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies/page.js +2 -1
- package/dist/modules/customers/backend/customers/companies/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js +16 -5
- package/dist/modules/customers/backend/customers/companies-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/[id]/page.js +18 -11
- package/dist/modules/customers/backend/customers/deals/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/page.js +2 -1
- package/dist/modules/customers/backend/customers/deals/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/components/QuickDealDialog.js +17 -3
- package/dist/modules/customers/backend/customers/deals/pipeline/components/QuickDealDialog.js.map +2 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/page.js +8 -2
- package/dist/modules/customers/backend/customers/deals/pipeline/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/[id]/page.js +2 -1
- package/dist/modules/customers/backend/customers/people/[id]/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people/page.js +2 -1
- package/dist/modules/customers/backend/customers/people/page.js.map +2 -2
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js +26 -10
- package/dist/modules/customers/backend/customers/people-v2/[id]/page.js.map +2 -2
- package/dist/modules/customers/cli.js +28 -11
- package/dist/modules/customers/cli.js.map +2 -2
- package/dist/modules/customers/commands/deals.js +48 -10
- package/dist/modules/customers/commands/deals.js.map +2 -2
- package/dist/modules/customers/commands/people.js +2 -0
- package/dist/modules/customers/commands/people.js.map +2 -2
- package/dist/modules/customers/components/CustomerTodosTable.js +2 -1
- package/dist/modules/customers/components/CustomerTodosTable.js.map +2 -2
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js +1 -1
- package/dist/modules/customers/components/calendar/CalendarEventEditor.js.map +2 -2
- package/dist/modules/customers/components/detail/ActiveDealCard.js +2 -1
- package/dist/modules/customers/components/detail/ActiveDealCard.js.map +2 -2
- package/dist/modules/customers/components/detail/ActivitiesDayStrip.js +2 -3
- package/dist/modules/customers/components/detail/ActivitiesDayStrip.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyDetailTabs.js +26 -6
- package/dist/modules/customers/components/detail/CompanyDetailTabs.js.map +2 -2
- package/dist/modules/customers/components/detail/CompanyKpiBar.js +6 -5
- package/dist/modules/customers/components/detail/CompanyKpiBar.js.map +2 -2
- package/dist/modules/customers/components/detail/ConfirmDealLostDialog.js +2 -2
- package/dist/modules/customers/components/detail/ConfirmDealLostDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/DealDetailTabs.js +30 -8
- package/dist/modules/customers/components/detail/DealDetailTabs.js.map +2 -2
- package/dist/modules/customers/components/detail/DealForm.js +2 -1
- package/dist/modules/customers/components/detail/DealForm.js.map +2 -2
- package/dist/modules/customers/components/detail/DealsSection.js +1 -1
- package/dist/modules/customers/components/detail/DealsSection.js.map +2 -2
- package/dist/modules/customers/components/detail/MiniWeekCalendar.js +7 -52
- package/dist/modules/customers/components/detail/MiniWeekCalendar.js.map +2 -2
- package/dist/modules/customers/components/detail/PersonDetailTabs.js +30 -8
- package/dist/modules/customers/components/detail/PersonDetailTabs.js.map +2 -2
- package/dist/modules/customers/components/detail/ScheduleActivityDialog.js +231 -216
- package/dist/modules/customers/components/detail/ScheduleActivityDialog.js.map +2 -2
- package/dist/modules/customers/components/detail/dashboard/helpers.js +4 -3
- package/dist/modules/customers/components/detail/dashboard/helpers.js.map +2 -2
- package/dist/modules/customers/components/detail/legacyActivities.js +69 -0
- package/dist/modules/customers/components/detail/legacyActivities.js.map +7 -0
- package/dist/modules/customers/components/formConfig.js +14 -10
- package/dist/modules/customers/components/formConfig.js.map +2 -2
- package/dist/modules/customers/data/entities.js +8 -0
- package/dist/modules/customers/data/entities.js.map +2 -2
- package/dist/modules/customers/data/validators.js +5 -2
- package/dist/modules/customers/data/validators.js.map +2 -2
- package/dist/modules/customers/extension-points.js +42 -0
- package/dist/modules/customers/extension-points.js.map +7 -0
- package/dist/modules/customers/lib/calendar/format.js +8 -4
- package/dist/modules/customers/lib/calendar/format.js.map +2 -2
- package/dist/modules/customers/lib/dealStatus.js +38 -0
- package/dist/modules/customers/lib/dealStatus.js.map +7 -0
- package/dist/modules/customers/lib/dealsSummaryQueries.js +144 -0
- package/dist/modules/customers/lib/dealsSummaryQueries.js.map +7 -0
- package/dist/modules/customers/lib/optionalBaseCurrency.js +19 -0
- package/dist/modules/customers/lib/optionalBaseCurrency.js.map +7 -0
- package/dist/modules/customers/lib/visibilityFilter.js +6 -4
- package/dist/modules/customers/lib/visibilityFilter.js.map +2 -2
- package/dist/modules/customers/migrations/Migration20260723210000_customers.js +15 -0
- package/dist/modules/customers/migrations/Migration20260723210000_customers.js.map +7 -0
- package/dist/modules/customers/search.js +50 -29
- package/dist/modules/customers/search.js.map +2 -2
- package/dist/modules/customers/utils/phoneDuplicates.js +1 -2
- package/dist/modules/customers/utils/phoneDuplicates.js.map +2 -2
- package/dist/modules/dashboards/api/layout/[itemId]/route.js +6 -3
- package/dist/modules/dashboards/api/layout/[itemId]/route.js.map +2 -2
- package/dist/modules/dashboards/api/layout/route.js +22 -9
- package/dist/modules/dashboards/api/layout/route.js.map +2 -2
- package/dist/modules/dashboards/api/roles/widgets/route.js +9 -3
- package/dist/modules/dashboards/api/roles/widgets/route.js.map +2 -2
- package/dist/modules/dashboards/api/users/widgets/route.js +9 -3
- package/dist/modules/dashboards/api/users/widgets/route.js.map +2 -2
- package/dist/modules/dashboards/api/widgets/catalog.js +6 -3
- package/dist/modules/dashboards/api/widgets/catalog.js.map +2 -2
- package/dist/modules/dashboards/api/widgets/data/batch/route.js +12 -3
- package/dist/modules/dashboards/api/widgets/data/batch/route.js.map +2 -2
- package/dist/modules/dashboards/api/widgets/data/route.js +28 -3
- package/dist/modules/dashboards/api/widgets/data/route.js.map +2 -2
- package/dist/modules/dashboards/api/widgets/data/schema.js +28 -18
- package/dist/modules/dashboards/api/widgets/data/schema.js.map +2 -2
- package/dist/modules/dashboards/components/UnlabelledAmountNotice.js +33 -0
- package/dist/modules/dashboards/components/UnlabelledAmountNotice.js.map +7 -0
- package/dist/modules/dashboards/lib/access.js +5 -3
- package/dist/modules/dashboards/lib/access.js.map +2 -2
- package/dist/modules/dashboards/lib/aggregations.js +113 -46
- package/dist/modules/dashboards/lib/aggregations.js.map +2 -2
- package/dist/modules/dashboards/lib/exactDecimal.js +69 -0
- package/dist/modules/dashboards/lib/exactDecimal.js.map +7 -0
- package/dist/modules/dashboards/lib/formatters.js +84 -11
- package/dist/modules/dashboards/lib/formatters.js.map +2 -2
- package/dist/modules/dashboards/lib/optionalBaseCurrency.js +11 -0
- package/dist/modules/dashboards/lib/optionalBaseCurrency.js.map +7 -0
- package/dist/modules/dashboards/services/widgetDataService.js +316 -14
- package/dist/modules/dashboards/services/widgetDataService.js.map +2 -2
- package/dist/modules/dashboards/subscribers/invalidateWidgetDataCache.js +26 -0
- package/dist/modules/dashboards/subscribers/invalidateWidgetDataCache.js.map +7 -0
- package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.client.js +9 -3
- package/dist/modules/dashboards/widgets/dashboard/aov-kpi/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/config.js +52 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/config.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.client.js +52 -30
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js +2 -2
- package/dist/modules/dashboards/widgets/dashboard/pipeline-summary/widget.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.client.js +9 -3
- package/dist/modules/dashboards/widgets/dashboard/revenue-kpi/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js +8 -3
- package/dist/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js +26 -18
- package/dist/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js +22 -14
- package/dist/modules/dashboards/widgets/dashboard/top-customers/widget.client.js.map +2 -2
- package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js +10 -4
- package/dist/modules/dashboards/widgets/dashboard/top-products/widget.client.js.map +2 -2
- package/dist/modules/data_sync/api/mappings/[id]/route.js +22 -9
- package/dist/modules/data_sync/api/mappings/[id]/route.js.map +2 -2
- package/dist/modules/data_sync/api/mappings/route.js +13 -4
- package/dist/modules/data_sync/api/mappings/route.js.map +2 -2
- package/dist/modules/data_sync/api/options.js +7 -2
- package/dist/modules/data_sync/api/options.js.map +2 -2
- package/dist/modules/data_sync/api/run.js +7 -2
- package/dist/modules/data_sync/api/run.js.map +2 -2
- package/dist/modules/data_sync/api/runs/[id]/cancel.js +8 -3
- package/dist/modules/data_sync/api/runs/[id]/cancel.js.map +2 -2
- package/dist/modules/data_sync/api/runs/[id]/retry.js +7 -2
- package/dist/modules/data_sync/api/runs/[id]/retry.js.map +2 -2
- package/dist/modules/data_sync/api/runs/[id]/route.js +8 -3
- package/dist/modules/data_sync/api/runs/[id]/route.js.map +2 -2
- package/dist/modules/data_sync/api/runs.js +7 -2
- package/dist/modules/data_sync/api/runs.js.map +2 -2
- package/dist/modules/data_sync/api/schedules/[id]/route.js +19 -6
- package/dist/modules/data_sync/api/schedules/[id]/route.js.map +2 -2
- package/dist/modules/data_sync/api/schedules/route.js +13 -4
- package/dist/modules/data_sync/api/schedules/route.js.map +2 -2
- package/dist/modules/data_sync/api/validate.js +9 -4
- package/dist/modules/data_sync/api/validate.js.map +2 -2
- package/dist/modules/data_sync/backend/data-sync/page.js +5 -4
- package/dist/modules/data_sync/backend/data-sync/page.js.map +2 -2
- package/dist/modules/data_sync/components/IntegrationScheduleTab.js +5 -5
- package/dist/modules/data_sync/components/IntegrationScheduleTab.js.map +2 -2
- package/dist/modules/data_sync/extension-points.js +13 -0
- package/dist/modules/data_sync/extension-points.js.map +7 -0
- package/dist/modules/data_sync/lib/queue-policy.js +15 -0
- package/dist/modules/data_sync/lib/queue-policy.js.map +7 -0
- package/dist/modules/data_sync/lib/queue.js +16 -1
- package/dist/modules/data_sync/lib/queue.js.map +2 -2
- package/dist/modules/data_sync/lib/start-run.js +2 -1
- package/dist/modules/data_sync/lib/start-run.js.map +2 -2
- package/dist/modules/data_sync/lib/sync-engine.js +35 -2
- package/dist/modules/data_sync/lib/sync-engine.js.map +2 -2
- package/dist/modules/data_sync/lib/sync-run-service.js +70 -2
- package/dist/modules/data_sync/lib/sync-run-service.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-export.js +9 -2
- package/dist/modules/data_sync/workers/sync-export.js.map +2 -2
- package/dist/modules/data_sync/workers/sync-import.js +9 -2
- package/dist/modules/data_sync/workers/sync-import.js.map +2 -2
- package/dist/modules/design_system/acl.js +9 -0
- package/dist/modules/design_system/acl.js.map +7 -0
- package/dist/modules/design_system/backend/design-system/page.js +11 -0
- package/dist/modules/design_system/backend/design-system/page.js.map +7 -0
- package/dist/modules/design_system/backend/design-system/page.meta.js +15 -0
- package/dist/modules/design_system/backend/design-system/page.meta.js.map +7 -0
- package/dist/modules/design_system/gallery/components/CodeSnippet.js +52 -0
- package/dist/modules/design_system/gallery/components/CodeSnippet.js.map +7 -0
- package/dist/modules/design_system/gallery/components/EntryCard.js +63 -0
- package/dist/modules/design_system/gallery/components/EntryCard.js.map +7 -0
- package/dist/modules/design_system/gallery/components/GalleryShell.js +163 -0
- package/dist/modules/design_system/gallery/components/GalleryShell.js.map +7 -0
- package/dist/modules/design_system/gallery/components/VariantPreview.js +9 -0
- package/dist/modules/design_system/gallery/components/VariantPreview.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/banners.js +186 -0
- package/dist/modules/design_system/gallery/entries/banners.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/buttons.js +361 -0
- package/dist/modules/design_system/gallery/entries/buttons.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/charts.js +457 -0
- package/dist/modules/design_system/gallery/entries/charts.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/dates.js +306 -0
- package/dist/modules/design_system/gallery/entries/dates.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/detail.js +358 -0
- package/dist/modules/design_system/gallery/entries/detail.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/display.js +785 -0
- package/dist/modules/design_system/gallery/entries/display.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/feedback.js +658 -0
- package/dist/modules/design_system/gallery/entries/feedback.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/filters.js +505 -0
- package/dist/modules/design_system/gallery/entries/filters.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/foundations.js +453 -0
- package/dist/modules/design_system/gallery/entries/foundations.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/icons.js +140 -0
- package/dist/modules/design_system/gallery/entries/icons.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/inputs.js +1217 -0
- package/dist/modules/design_system/gallery/entries/inputs.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/messages.js +334 -0
- package/dist/modules/design_system/gallery/entries/messages.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/navigation.js +475 -0
- package/dist/modules/design_system/gallery/entries/navigation.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/notifications.js +257 -0
- package/dist/modules/design_system/gallery/entries/notifications.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/overlays.js +576 -0
- package/dist/modules/design_system/gallery/entries/overlays.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/scaffolding.js +378 -0
- package/dist/modules/design_system/gallery/entries/scaffolding.js.map +7 -0
- package/dist/modules/design_system/gallery/entries/schedule.js +297 -0
- package/dist/modules/design_system/gallery/entries/schedule.js.map +7 -0
- package/dist/modules/design_system/gallery/registry.js +139 -0
- package/dist/modules/design_system/gallery/registry.js.map +7 -0
- package/dist/modules/design_system/gallery/types.js +1 -0
- package/dist/modules/design_system/gallery/types.js.map +7 -0
- package/dist/modules/design_system/index.js +9 -0
- package/dist/modules/design_system/index.js.map +7 -0
- package/dist/modules/design_system/setup.js +14 -0
- package/dist/modules/design_system/setup.js.map +7 -0
- package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js +34 -12
- package/dist/modules/dictionaries/api/[dictionaryId]/entries/route.js.map +2 -2
- package/dist/modules/dictionaries/api/openapi.js +15 -2
- package/dist/modules/dictionaries/api/openapi.js.map +2 -2
- package/dist/modules/dictionaries/components/DictionaryEntrySelect.js +1 -1
- package/dist/modules/dictionaries/components/DictionaryEntrySelect.js.map +2 -2
- package/dist/modules/dictionaries/components/hooks/useDictionaryEntries.js +30 -29
- package/dist/modules/dictionaries/components/hooks/useDictionaryEntries.js.map +2 -2
- package/dist/modules/dictionaries/data/validators.js +7 -0
- package/dist/modules/dictionaries/data/validators.js.map +2 -2
- package/dist/modules/dictionaries/lib/clientEntries.js +4 -3
- package/dist/modules/dictionaries/lib/clientEntries.js.map +2 -2
- package/dist/modules/dictionaries/lib/fetchAllEntries.js +43 -0
- package/dist/modules/dictionaries/lib/fetchAllEntries.js.map +7 -0
- package/dist/modules/directory/api/organization-branding/route.js +10 -3
- package/dist/modules/directory/api/organization-branding/route.js.map +2 -2
- package/dist/modules/directory/api/organization-switcher/route.js +84 -20
- package/dist/modules/directory/api/organization-switcher/route.js.map +2 -2
- package/dist/modules/directory/api/organizations/route.js +7 -0
- package/dist/modules/directory/api/organizations/route.js.map +3 -3
- package/dist/modules/directory/api/tenants/route.js +8 -2
- package/dist/modules/directory/api/tenants/route.js.map +2 -2
- package/dist/modules/directory/backend/directory/branding/page.js +31 -8
- package/dist/modules/directory/backend/directory/branding/page.js.map +2 -2
- package/dist/modules/directory/backend/directory/organizations/[id]/edit/page.js +7 -16
- package/dist/modules/directory/backend/directory/organizations/[id]/edit/page.js.map +2 -2
- package/dist/modules/directory/backend/directory/organizations/page.js +2 -1
- package/dist/modules/directory/backend/directory/organizations/page.js.map +2 -2
- package/dist/modules/directory/backend/directory/tenants/page.js +2 -1
- package/dist/modules/directory/backend/directory/tenants/page.js.map +2 -2
- package/dist/modules/directory/commands/organizations.js +8 -1
- package/dist/modules/directory/commands/organizations.js.map +2 -2
- package/dist/modules/directory/commands/tenants.js +6 -0
- package/dist/modules/directory/commands/tenants.js.map +2 -2
- package/dist/modules/directory/data/entities.js +4 -0
- package/dist/modules/directory/data/entities.js.map +2 -2
- package/dist/modules/directory/data/validators.js +2 -0
- package/dist/modules/directory/data/validators.js.map +2 -2
- package/dist/modules/directory/extension-points.js +14 -0
- package/dist/modules/directory/extension-points.js.map +7 -0
- package/dist/modules/directory/migrations/Migration20260626145500_directory_logo_preserve_aspect_ratio.js +13 -0
- package/dist/modules/directory/migrations/Migration20260626145500_directory_logo_preserve_aspect_ratio.js.map +7 -0
- package/dist/modules/directory/subscribers/invalidateOrgScopeCache.js +5 -1
- package/dist/modules/directory/subscribers/invalidateOrgScopeCache.js.map +2 -2
- package/dist/modules/directory/utils/organizationScope.js +11 -3
- package/dist/modules/directory/utils/organizationScope.js.map +2 -2
- package/dist/modules/entities/api/definitions.js +53 -3
- package/dist/modules/entities/api/definitions.js.map +2 -2
- package/dist/modules/entities/api/entities.js +21 -2
- package/dist/modules/entities/api/entities.js.map +2 -2
- package/dist/modules/entities/api/entity-settings.js +59 -9
- package/dist/modules/entities/api/entity-settings.js.map +2 -2
- package/dist/modules/entities/api/records.js +11 -28
- package/dist/modules/entities/api/records.js.map +2 -2
- package/dist/modules/entities/api/sidebar-entities.js +34 -12
- package/dist/modules/entities/api/sidebar-entities.js.map +2 -2
- package/dist/modules/entities/backend/config/settings/page.js +10 -0
- package/dist/modules/entities/backend/config/settings/page.js.map +7 -0
- package/dist/modules/entities/backend/config/settings/page.meta.js +36 -0
- package/dist/modules/entities/backend/config/settings/page.meta.js.map +7 -0
- package/dist/modules/entities/backend/entities/user/[entityId]/page.js +1 -1
- package/dist/modules/entities/backend/entities/user/[entityId]/page.js.map +2 -2
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js +23 -4
- package/dist/modules/entities/backend/entities/user/[entityId]/records/page.js.map +2 -2
- package/dist/modules/entities/backend/entities/user/create/page.js +16 -7
- package/dist/modules/entities/backend/entities/user/create/page.js.map +2 -2
- package/dist/modules/entities/cli.js +193 -19
- package/dist/modules/entities/cli.js.map +2 -2
- package/dist/modules/entities/components/EntitySettingsManager.js +136 -0
- package/dist/modules/entities/components/EntitySettingsManager.js.map +7 -0
- package/dist/modules/entities/components/RecordListRelationCell.js +63 -0
- package/dist/modules/entities/components/RecordListRelationCell.js.map +7 -0
- package/dist/modules/entities/components/SystemEntitiesTable.js +2 -1
- package/dist/modules/entities/components/SystemEntitiesTable.js.map +2 -2
- package/dist/modules/entities/components/UserEntitiesTable.js +2 -1
- package/dist/modules/entities/components/UserEntitiesTable.js.map +2 -2
- package/dist/modules/entities/components/recordListRelationDisplays.js +80 -0
- package/dist/modules/entities/components/recordListRelationDisplays.js.map +7 -0
- package/dist/modules/entities/extension-points.js +21 -0
- package/dist/modules/entities/extension-points.js.map +7 -0
- package/dist/modules/entities/lib/entityAcl.js +87 -9
- package/dist/modules/entities/lib/entityAcl.js.map +3 -3
- package/dist/modules/feature_toggles/components/FeatureGuard.js +3 -2
- package/dist/modules/feature_toggles/components/FeatureGuard.js.map +2 -2
- package/dist/modules/feature_toggles/components/FeatureToggleOverrideCard.js +1 -1
- package/dist/modules/feature_toggles/components/FeatureToggleOverrideCard.js.map +2 -2
- package/dist/modules/feature_toggles/components/hooks/staleTime.js +5 -0
- package/dist/modules/feature_toggles/components/hooks/staleTime.js.map +7 -0
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagBoolean.js +5 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagBoolean.js.map +2 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagJson.js +5 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagJson.js.map +2 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagNumber.js +5 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagNumber.js.map +2 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagString.js +5 -2
- package/dist/modules/feature_toggles/components/hooks/useFeatureFlagString.js.map +2 -2
- package/dist/modules/inbox_ops/ai-tools.js +5 -2
- package/dist/modules/inbox_ops/ai-tools.js.map +2 -2
- package/dist/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/route.js +14 -1
- package/dist/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/route.js.map +2 -2
- package/dist/modules/inbox_ops/api/proposals/route.js +16 -1
- package/dist/modules/inbox_ops/api/proposals/route.js.map +2 -2
- package/dist/modules/inbox_ops/api/webhook/inbound.js +14 -10
- package/dist/modules/inbox_ops/api/webhook/inbound.js.map +2 -2
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js +6 -6
- package/dist/modules/inbox_ops/backend/inbox-ops/log/page.js.map +2 -2
- package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js +25 -20
- package/dist/modules/inbox_ops/components/proposals/EditActionDialog.js.map +2 -2
- package/dist/modules/inbox_ops/search.js +15 -4
- package/dist/modules/inbox_ops/search.js.map +2 -2
- package/dist/modules/inbox_ops/subscribers/search-reindex-proposal-created.js +32 -0
- package/dist/modules/inbox_ops/subscribers/search-reindex-proposal-created.js.map +7 -0
- package/dist/modules/integrations/api/[id]/credentials/route.js +11 -5
- package/dist/modules/integrations/api/[id]/credentials/route.js.map +2 -2
- package/dist/modules/integrations/api/[id]/health/route.js +6 -3
- package/dist/modules/integrations/api/[id]/health/route.js.map +2 -2
- package/dist/modules/integrations/api/[id]/route.js +6 -3
- package/dist/modules/integrations/api/[id]/route.js.map +2 -2
- package/dist/modules/integrations/api/[id]/state/route.js +6 -3
- package/dist/modules/integrations/api/[id]/state/route.js.map +2 -2
- package/dist/modules/integrations/api/[id]/version/route.js +6 -3
- package/dist/modules/integrations/api/[id]/version/route.js.map +2 -2
- package/dist/modules/integrations/api/logs/route.js +6 -3
- package/dist/modules/integrations/api/logs/route.js.map +2 -2
- package/dist/modules/integrations/api/route.js +6 -3
- package/dist/modules/integrations/api/route.js.map +2 -2
- package/dist/modules/integrations/api/umes-read.js +2 -2
- package/dist/modules/integrations/api/umes-read.js.map +2 -2
- package/dist/modules/integrations/backend/integrations/[id]/page.js +2 -4
- package/dist/modules/integrations/backend/integrations/[id]/page.js.map +2 -2
- package/dist/modules/integrations/extension-points.js +30 -0
- package/dist/modules/integrations/extension-points.js.map +7 -0
- package/dist/modules/integrations/lib/organization-scope.js +2 -9
- package/dist/modules/integrations/lib/organization-scope.js.map +2 -2
- package/dist/modules/integrations/widgets/injection/external-ids/widget.client.js +0 -5
- package/dist/modules/integrations/widgets/injection/external-ids/widget.client.js.map +2 -2
- package/dist/modules/integrations/widgets/injection/external-ids/widget.js +14 -0
- package/dist/modules/integrations/widgets/injection/external-ids/widget.js.map +7 -0
- package/dist/modules/messages/api/[id]/route.js +15 -0
- package/dist/modules/messages/api/[id]/route.js.map +2 -2
- package/dist/modules/messages/api/route.js +77 -8
- package/dist/modules/messages/api/route.js.map +2 -2
- package/dist/modules/messages/components/ComposeMessagePageClient.js +2 -1
- package/dist/modules/messages/components/ComposeMessagePageClient.js.map +2 -2
- package/dist/modules/messages/components/MessageDetailPageClient.js +3 -2
- package/dist/modules/messages/components/MessageDetailPageClient.js.map +2 -2
- package/dist/modules/messages/components/MessagesInboxPageClient.js +2 -1
- package/dist/modules/messages/components/MessagesInboxPageClient.js.map +2 -2
- package/dist/modules/messages/components/message-detail/panels/dialogs.js +1 -1
- package/dist/modules/messages/components/message-detail/panels/dialogs.js.map +1 -1
- package/dist/modules/messages/extension-points.js +16 -0
- package/dist/modules/messages/extension-points.js.map +7 -0
- package/dist/modules/messages/lib/participantScope.js +15 -0
- package/dist/modules/messages/lib/participantScope.js.map +7 -0
- package/dist/modules/messages/lib/routeHelpers.js +1 -3
- package/dist/modules/messages/lib/routeHelpers.js.map +2 -2
- package/dist/modules/messages/lib/searchLookup.js +8 -16
- package/dist/modules/messages/lib/searchLookup.js.map +2 -2
- package/dist/modules/messages/search.js +10 -5
- package/dist/modules/messages/search.js.map +2 -2
- package/dist/modules/notifications/api/route.js +83 -4
- package/dist/modules/notifications/api/route.js.map +2 -2
- package/dist/modules/notifications/api/unread-count/route.js +25 -6
- package/dist/modules/notifications/api/unread-count/route.js.map +2 -2
- package/dist/modules/notifications/di.js +1 -1
- package/dist/modules/notifications/di.js.map +2 -2
- package/dist/modules/notifications/events.js +4 -2
- package/dist/modules/notifications/events.js.map +2 -2
- package/dist/modules/notifications/lib/notificationRecipients.js +6 -7
- package/dist/modules/notifications/lib/notificationRecipients.js.map +2 -2
- package/dist/modules/notifications/lib/notificationScope.js +26 -0
- package/dist/modules/notifications/lib/notificationScope.js.map +7 -0
- package/dist/modules/notifications/lib/notificationService.js +48 -4
- package/dist/modules/notifications/lib/notificationService.js.map +2 -2
- package/dist/modules/notifications/lib/routeHelpers.js +16 -2
- package/dist/modules/notifications/lib/routeHelpers.js.map +2 -2
- package/dist/modules/payment_gateways/api/capture/route.js +1 -1
- package/dist/modules/payment_gateways/api/capture/route.js.map +2 -2
- package/dist/modules/payment_gateways/api/sessions/route.js +6 -3
- package/dist/modules/payment_gateways/api/sessions/route.js.map +2 -2
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js +11 -1
- package/dist/modules/payment_gateways/api/webhook/[provider]/route.js.map +2 -2
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js +3 -2
- package/dist/modules/payment_gateways/backend/payment-gateways/page.js.map +2 -2
- package/dist/modules/payment_gateways/data/entities.js +11 -0
- package/dist/modules/payment_gateways/data/entities.js.map +2 -2
- package/dist/modules/payment_gateways/di.js +17 -1
- package/dist/modules/payment_gateways/di.js.map +2 -2
- package/dist/modules/payment_gateways/extension-points.js +19 -0
- package/dist/modules/payment_gateways/extension-points.js.map +7 -0
- package/dist/modules/payment_gateways/lib/capture-ledger.js +183 -0
- package/dist/modules/payment_gateways/lib/capture-ledger.js.map +7 -0
- package/dist/modules/payment_gateways/lib/gateway-service.js +93 -14
- package/dist/modules/payment_gateways/lib/gateway-service.js.map +2 -2
- package/dist/modules/payment_gateways/lib/order-amount-reconciliation.js +58 -0
- package/dist/modules/payment_gateways/lib/order-amount-reconciliation.js.map +7 -0
- package/dist/modules/payment_gateways/lib/payment-operation-idempotency.js +1 -0
- package/dist/modules/payment_gateways/lib/payment-operation-idempotency.js.map +2 -2
- package/dist/modules/payment_gateways/lib/session-idempotency.js +33 -0
- package/dist/modules/payment_gateways/lib/session-idempotency.js.map +2 -2
- package/dist/modules/payment_gateways/migrations/Migration20260725101500_payment_gateways.js +16 -0
- package/dist/modules/payment_gateways/migrations/Migration20260725101500_payment_gateways.js.map +7 -0
- package/dist/modules/payment_gateways/migrations/Migration20260803103035_payment_gateways.js +18 -0
- package/dist/modules/payment_gateways/migrations/Migration20260803103035_payment_gateways.js.map +7 -0
- package/dist/modules/payment_gateways/setup.js +47 -0
- package/dist/modules/payment_gateways/setup.js.map +2 -2
- package/dist/modules/payment_gateways/workers/session-initialization-prune.js +50 -0
- package/dist/modules/payment_gateways/workers/session-initialization-prune.js.map +7 -0
- package/dist/modules/planner/components/AvailabilityRulesEditor.js +4 -4
- package/dist/modules/planner/components/AvailabilityRulesEditor.js.map +2 -2
- package/dist/modules/planner/components/unavailabilityReasons.js +3 -3
- package/dist/modules/planner/components/unavailabilityReasons.js.map +2 -2
- package/dist/modules/portal/extension-points.js +32 -0
- package/dist/modules/portal/extension-points.js.map +7 -0
- package/dist/modules/portal/frontend/[orgSlug]/portal/dashboard/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/dashboard/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/invite/page.js +134 -0
- package/dist/modules/portal/frontend/[orgSlug]/portal/invite/page.js.map +7 -0
- package/dist/modules/portal/frontend/[orgSlug]/portal/invite/page.meta.js +11 -0
- package/dist/modules/portal/frontend/[orgSlug]/portal/invite/page.meta.js.map +7 -0
- package/dist/modules/portal/frontend/[orgSlug]/portal/login/page.js +4 -4
- package/dist/modules/portal/frontend/[orgSlug]/portal/login/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/profile/page.js +3 -3
- package/dist/modules/portal/frontend/[orgSlug]/portal/profile/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/reset-password/page.js +4 -4
- package/dist/modules/portal/frontend/[orgSlug]/portal/reset-password/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/signup/page.js +4 -4
- package/dist/modules/portal/frontend/[orgSlug]/portal/signup/page.js.map +2 -2
- package/dist/modules/portal/frontend/[orgSlug]/portal/verify/page.js +1 -1
- package/dist/modules/portal/frontend/[orgSlug]/portal/verify/page.js.map +2 -2
- package/dist/modules/portal/lib/navigation.js +7 -0
- package/dist/modules/portal/lib/navigation.js.map +7 -0
- package/dist/modules/progress/lib/progressService.js +2 -0
- package/dist/modules/progress/lib/progressService.js.map +2 -2
- package/dist/modules/progress/lib/progressServiceImpl.js +322 -104
- package/dist/modules/progress/lib/progressServiceImpl.js.map +2 -2
- package/dist/modules/query_index/api/openapi.js +13 -1
- package/dist/modules/query_index/api/openapi.js.map +2 -2
- package/dist/modules/query_index/api/reindex.js +10 -0
- package/dist/modules/query_index/api/reindex.js.map +2 -2
- package/dist/modules/query_index/api/status.js +165 -105
- package/dist/modules/query_index/api/status.js.map +2 -2
- package/dist/modules/query_index/cli.js +125 -1
- package/dist/modules/query_index/cli.js.map +2 -2
- package/dist/modules/query_index/components/QueryIndexesTable.js +130 -42
- package/dist/modules/query_index/components/QueryIndexesTable.js.map +2 -2
- package/dist/modules/query_index/data/entities.js +2 -1
- package/dist/modules/query_index/data/entities.js.map +2 -2
- package/dist/modules/query_index/di.js +3 -0
- package/dist/modules/query_index/di.js.map +2 -2
- package/dist/modules/query_index/events.js +20 -0
- package/dist/modules/query_index/events.js.map +7 -0
- package/dist/modules/query_index/extension-points.js +13 -0
- package/dist/modules/query_index/extension-points.js.map +7 -0
- package/dist/modules/query_index/lib/batch.js +11 -4
- package/dist/modules/query_index/lib/batch.js.map +2 -2
- package/dist/modules/query_index/lib/coverage.js +21 -9
- package/dist/modules/query_index/lib/coverage.js.map +2 -2
- package/dist/modules/query_index/lib/document.js +12 -5
- package/dist/modules/query_index/lib/document.js.map +2 -2
- package/dist/modules/query_index/lib/engine.js +105 -48
- package/dist/modules/query_index/lib/engine.js.map +2 -2
- package/dist/modules/query_index/lib/indexer.js +95 -19
- package/dist/modules/query_index/lib/indexer.js.map +2 -2
- package/dist/modules/query_index/lib/reindexer.js +43 -37
- package/dist/modules/query_index/lib/reindexer.js.map +2 -2
- package/dist/modules/query_index/lib/search-tokens.js +34 -15
- package/dist/modules/query_index/lib/search-tokens.js.map +2 -2
- package/dist/modules/query_index/lib/subscriber-scope.js +2 -3
- package/dist/modules/query_index/lib/subscriber-scope.js.map +2 -2
- package/dist/modules/query_index/migrations/Migration20260731105052_query_index.js +17 -0
- package/dist/modules/query_index/migrations/Migration20260731105052_query_index.js.map +7 -0
- package/dist/modules/query_index/subscribers/coverage_refresh.js +4 -0
- package/dist/modules/query_index/subscribers/coverage_refresh.js.map +2 -2
- package/dist/modules/query_index/subscribers/delete_one.js +53 -1
- package/dist/modules/query_index/subscribers/delete_one.js.map +3 -3
- package/dist/modules/query_index/subscribers/upsert_one.js +60 -0
- package/dist/modules/query_index/subscribers/upsert_one.js.map +3 -3
- package/dist/modules/resources/api/resources.js +2 -0
- package/dist/modules/resources/api/resources.js.map +2 -2
- package/dist/modules/resources/backend/resources/resource-types/page.js +2 -1
- package/dist/modules/resources/backend/resources/resource-types/page.js.map +2 -2
- package/dist/modules/resources/backend/resources/resources/[id]/page.js +3 -2
- package/dist/modules/resources/backend/resources/resources/[id]/page.js.map +2 -2
- package/dist/modules/resources/backend/resources/resources/page.js +2 -1
- package/dist/modules/resources/backend/resources/resources/page.js.map +2 -2
- package/dist/modules/resources/commands/resources.js +9 -0
- package/dist/modules/resources/commands/resources.js.map +2 -2
- package/dist/modules/resources/components/detail/dictionaries.js +3 -3
- package/dist/modules/resources/components/detail/dictionaries.js.map +2 -2
- package/dist/modules/resources/data/entities.js +3 -0
- package/dist/modules/resources/data/entities.js.map +2 -2
- package/dist/modules/resources/data/validators.js +6 -2
- package/dist/modules/resources/data/validators.js.map +2 -2
- package/dist/modules/resources/extension-points.js +14 -0
- package/dist/modules/resources/extension-points.js.map +7 -0
- package/dist/modules/resources/lib/seeds.js +16 -9
- package/dist/modules/resources/lib/seeds.js.map +2 -2
- package/dist/modules/resources/migrations/Migration20260608231000.js +13 -0
- package/dist/modules/resources/migrations/Migration20260608231000.js.map +7 -0
- package/dist/modules/sales/analytics.js +7 -3
- package/dist/modules/sales/analytics.js.map +2 -2
- package/dist/modules/sales/api/document-history/route.js +2 -1
- package/dist/modules/sales/api/document-history/route.js.map +2 -2
- package/dist/modules/sales/api/documents/factory.js +14 -3
- package/dist/modules/sales/api/documents/factory.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +11 -3
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/create/page.js +11 -14
- package/dist/modules/sales/backend/sales/documents/create/page.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +184 -23
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/components/documents/ItemsSection.js +31 -11
- package/dist/modules/sales/components/documents/ItemsSection.js.map +2 -2
- package/dist/modules/sales/components/documents/LineItemDialog.js +12 -5
- package/dist/modules/sales/components/documents/LineItemDialog.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentForm.js +48 -2
- package/dist/modules/sales/components/documents/SalesDocumentForm.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js +4 -1
- package/dist/modules/sales/components/documents/SalesDocumentsTable.js.map +2 -2
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js +167 -0
- package/dist/modules/sales/components/documents/SalesOrderDraftLines.js.map +7 -0
- package/dist/modules/sales/components/useSalesChannelsEnabled.js +2 -35
- package/dist/modules/sales/components/useSalesChannelsEnabled.js.map +2 -2
- package/dist/modules/sales/data/validators.js +32 -5
- package/dist/modules/sales/data/validators.js.map +2 -2
- package/dist/modules/sales/di.js +7 -0
- package/dist/modules/sales/di.js.map +2 -2
- package/dist/modules/sales/events.js +1 -0
- package/dist/modules/sales/events.js.map +2 -2
- package/dist/modules/sales/extension-points.js +36 -0
- package/dist/modules/sales/extension-points.js.map +7 -0
- package/dist/modules/sales/lib/historyHelpers.js +69 -1
- package/dist/modules/sales/lib/historyHelpers.js.map +2 -2
- package/dist/modules/sales/services/paymentOrderTotalResolver.js +52 -0
- package/dist/modules/sales/services/paymentOrderTotalResolver.js.map +7 -0
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js +51 -2
- package/dist/modules/sales/widgets/injection/document-history/widget.client.js.map +2 -2
- package/dist/modules/sales/workflows.js +10 -7
- package/dist/modules/sales/workflows.js.map +2 -2
- package/dist/modules/shipping_carriers/api/webhook/[provider]/route.js +11 -1
- package/dist/modules/shipping_carriers/api/webhook/[provider]/route.js.map +2 -2
- package/dist/modules/shipping_carriers/lib/shipment-wizard/components/PackageEditor.js +1 -1
- package/dist/modules/shipping_carriers/lib/shipment-wizard/components/PackageEditor.js.map +1 -1
- package/dist/modules/staff/api/interceptors.js +5 -3
- package/dist/modules/staff/api/interceptors.js.map +2 -2
- package/dist/modules/staff/api/leave-requests.js +45 -42
- package/dist/modules/staff/api/leave-requests.js.map +2 -2
- package/dist/modules/staff/components/detail/dictionaries.js +3 -3
- package/dist/modules/staff/components/detail/dictionaries.js.map +2 -2
- package/dist/modules/sync_excel/api/upload/route.js +15 -2
- package/dist/modules/sync_excel/api/upload/route.js.map +2 -2
- package/dist/modules/sync_excel/widgets/injection/upload-config/widget.client.js +1 -1
- package/dist/modules/sync_excel/widgets/injection/upload-config/widget.client.js.map +2 -2
- package/dist/modules/wms/components/backend/ReleaseReservationDialog.js +1 -1
- package/dist/modules/wms/components/backend/ReleaseReservationDialog.js.map +1 -1
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js +5 -4
- package/dist/modules/wms/components/backend/WmsConfigurationPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js +4 -3
- package/dist/modules/wms/components/backend/WmsInventoryConsolePage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js +3 -2
- package/dist/modules/wms/components/backend/WmsLocationDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js +3 -2
- package/dist/modules/wms/components/backend/WmsLotDetailPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsLotsListPage.js +2 -1
- package/dist/modules/wms/components/backend/WmsLotsListPage.js.map +2 -2
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js +3 -2
- package/dist/modules/wms/components/backend/WmsSkuDetailPage.js.map +2 -2
- package/dist/modules/wms/extension-points.js +26 -0
- package/dist/modules/wms/extension-points.js.map +7 -0
- package/dist/modules/workflows/backend/definitions/[id]/page.js +2 -2
- package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/create/page.js +1 -1
- package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/page.js +3 -2
- package/dist/modules/workflows/backend/definitions/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js +9 -6
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
- package/dist/modules/workflows/backend/instances/page.js +10 -9
- package/dist/modules/workflows/backend/instances/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.js +8 -7
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/components/ActivitiesEditor.js +69 -13
- package/dist/modules/workflows/components/ActivitiesEditor.js.map +2 -2
- package/dist/modules/workflows/components/BusinessRulesSelector.js +1 -1
- package/dist/modules/workflows/components/BusinessRulesSelector.js.map +2 -2
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js +3 -3
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +2 -2
- package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js +1 -2
- package/dist/modules/workflows/components/EdgeEditDialogCrudForm.js.map +2 -2
- package/dist/modules/workflows/components/NodeEditDialog.js +3 -3
- package/dist/modules/workflows/components/NodeEditDialog.js.map +2 -2
- package/dist/modules/workflows/components/NodeEditDialogCrudForm.js +4 -5
- package/dist/modules/workflows/components/NodeEditDialogCrudForm.js.map +2 -2
- package/dist/modules/workflows/components/StepsEditor.js +2 -2
- package/dist/modules/workflows/components/StepsEditor.js.map +2 -2
- package/dist/modules/workflows/components/TransitionsEditor.js +207 -165
- package/dist/modules/workflows/components/TransitionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowGraphImpl.js +1 -1
- package/dist/modules/workflows/components/WorkflowGraphImpl.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowLegend.js +1 -1
- package/dist/modules/workflows/components/WorkflowLegend.js.map +2 -2
- package/dist/modules/workflows/components/WorkflowSelector.js +1 -1
- package/dist/modules/workflows/components/WorkflowSelector.js.map +2 -2
- package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js +1 -1
- package/dist/modules/workflows/components/fields/BusinessRuleConditionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js +2 -2
- package/dist/modules/workflows/components/fields/FormFieldArrayEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/MappingArrayEditor.js +1 -1
- package/dist/modules/workflows/components/fields/MappingArrayEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js +1 -1
- package/dist/modules/workflows/components/fields/StartPreConditionsEditor.js.map +2 -2
- package/dist/modules/workflows/components/fields/WorkflowSelectorField.js +4 -4
- package/dist/modules/workflows/components/fields/WorkflowSelectorField.js.map +2 -2
- package/dist/modules/workflows/data/validators.js +34 -1
- package/dist/modules/workflows/data/validators.js.map +3 -3
- package/dist/modules/workflows/events.js +1 -0
- package/dist/modules/workflows/events.js.map +2 -2
- package/dist/modules/workflows/extension-points.js +15 -0
- package/dist/modules/workflows/extension-points.js.map +7 -0
- package/dist/modules/workflows/lib/activity-executor.js +59 -14
- package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
- package/dist/modules/workflows/lib/format-validation-error.js +46 -1
- package/dist/modules/workflows/lib/format-validation-error.js.map +2 -2
- package/dist/modules/workflows/widgets/injection/order-approval/context-keys.js +10 -0
- package/dist/modules/workflows/widgets/injection/order-approval/context-keys.js.map +7 -0
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +21 -10
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +2 -2
- package/generated/entities/attachment_quota_reservation/index.ts +15 -0
- package/generated/entities/customer_deal_person_link/index.ts +1 -0
- package/generated/entities/customer_user_invitation/index.ts +1 -0
- package/generated/entities/gateway_payment_operation/index.ts +1 -0
- package/generated/entities/gateway_transaction/index.ts +1 -0
- package/generated/entities/organization/index.ts +1 -0
- package/generated/entities/resources_resource/index.ts +1 -0
- package/generated/entities.ids.generated.ts +3 -1
- package/generated/entity-fields-registry.ts +23 -0
- package/package.json +19 -18
- package/src/bootstrap.ts +17 -2
- package/src/helpers/integration/salesFixtures.ts +34 -2
- package/src/helpers/integration/salesUi.ts +8 -0
- package/src/modules/api_keys/backend/api-keys/page.tsx +2 -1
- package/src/modules/api_keys/extension-points.ts +13 -0
- package/src/modules/api_keys/i18n/ko.json +42 -0
- package/src/modules/attachments/api/route.ts +130 -9
- package/src/modules/attachments/backend/config/attachments/page.tsx +1 -1
- package/src/modules/attachments/data/entities.ts +59 -0
- package/src/modules/attachments/di.ts +9 -1
- package/src/modules/attachments/fields/attachment.tsx +1 -1
- package/src/modules/attachments/i18n/de.json +15 -0
- package/src/modules/attachments/i18n/en.json +15 -0
- package/src/modules/attachments/i18n/es.json +15 -0
- package/src/modules/attachments/i18n/ko.json +175 -0
- package/src/modules/attachments/i18n/pl.json +15 -0
- package/src/modules/attachments/lib/drivers/index.ts +1 -1
- package/src/modules/attachments/lib/drivers/localDriver.ts +23 -8
- package/src/modules/attachments/lib/drivers/types.ts +5 -0
- package/src/modules/attachments/lib/quota-recovery-queue.ts +16 -0
- package/src/modules/attachments/lib/quota-service.ts +442 -0
- package/src/modules/attachments/lib/upload-limits.ts +35 -0
- package/src/modules/attachments/migrations/.snapshot-open-mercato.json +648 -120
- package/src/modules/attachments/migrations/Migration20260709234741_attachments.ts +12 -0
- package/src/modules/attachments/workers/quota-recovery.ts +68 -0
- package/src/modules/audit_logs/api/audit-logs/access/route.ts +5 -0
- package/src/modules/audit_logs/api/audit-logs/actions/export/route.ts +5 -0
- package/src/modules/audit_logs/api/audit-logs/actions/route.ts +5 -0
- package/src/modules/audit_logs/api/audit-logs/readScope.ts +28 -0
- package/src/modules/audit_logs/components/AccessLogsTable.tsx +2 -1
- package/src/modules/audit_logs/components/AuditLogsActions.tsx +3 -2
- package/src/modules/audit_logs/extension-points.ts +11 -0
- package/src/modules/audit_logs/i18n/ko.json +66 -0
- package/src/modules/auth/AGENTS.md +12 -8
- package/src/modules/auth/api/admin/nav.ts +28 -4
- package/src/modules/auth/api/profile/route.ts +8 -2
- package/src/modules/auth/api/users/route.ts +8 -28
- package/src/modules/auth/backend/auth/profile/page.tsx +1 -0
- package/src/modules/auth/backend/profile/change-password/page.tsx +1 -0
- package/src/modules/auth/backend/roles/page.tsx +2 -1
- package/src/modules/auth/backend/settings/page.tsx +17 -8
- package/src/modules/auth/backend/users/page.tsx +2 -1
- package/src/modules/auth/cli.ts +1 -1
- package/src/modules/auth/components/UserConsentsPanel.tsx +9 -9
- package/src/modules/auth/extension-points.ts +18 -0
- package/src/modules/auth/frontend/login.tsx +7 -3
- package/src/modules/auth/frontend/reset.tsx +2 -2
- package/src/modules/auth/i18n/de.json +1 -0
- package/src/modules/auth/i18n/en.json +1 -0
- package/src/modules/auth/i18n/es.json +1 -0
- package/src/modules/auth/i18n/ko.json +255 -0
- package/src/modules/auth/i18n/pl.json +1 -0
- package/src/modules/auth/lib/backendChrome.tsx +71 -33
- package/src/modules/auth/lib/setup-app.ts +21 -2
- package/src/modules/auth/lib/tenantAccess.ts +8 -0
- package/src/modules/auth/services/rbacService.ts +41 -46
- package/src/modules/business_rules/api/openmercato-call-options/route.ts +94 -0
- package/src/modules/business_rules/api/rules/route.ts +92 -4
- package/src/modules/business_rules/backend/rules/page.tsx +2 -1
- package/src/modules/business_rules/components/ActionBuilder.tsx +54 -5
- package/src/modules/business_rules/components/ActionRow.tsx +156 -18
- package/src/modules/business_rules/components/ConditionRow.tsx +9 -6
- package/src/modules/business_rules/components/utils/actionValidation.ts +6 -0
- package/src/modules/business_rules/events.ts +10 -0
- package/src/modules/business_rules/extension-points.ts +10 -0
- package/src/modules/business_rules/i18n/de.json +12 -0
- package/src/modules/business_rules/i18n/en.json +12 -0
- package/src/modules/business_rules/i18n/es.json +12 -0
- package/src/modules/business_rules/i18n/ko.json +396 -0
- package/src/modules/business_rules/i18n/pl.json +12 -0
- package/src/modules/business_rules/lib/action-executor.ts +198 -0
- package/src/modules/business_rules/lib/openmercato-call-options-types.ts +31 -0
- package/src/modules/business_rules/lib/openmercato-call-options.ts +297 -0
- package/src/modules/business_rules/lib/rule-engine.ts +4 -0
- package/src/modules/catalog/backend/catalog/products/[id]/page.tsx +6 -5
- package/src/modules/catalog/backend/catalog/products/create/page.tsx +7 -6
- package/src/modules/catalog/components/PriceKindSettings.tsx +3 -3
- package/src/modules/catalog/components/categories/CategoriesDataTable.tsx +2 -1
- package/src/modules/catalog/components/products/ProductCategorizeSection.tsx +3 -3
- package/src/modules/catalog/components/products/ProductMediaManager.tsx +1 -1
- package/src/modules/catalog/components/products/ProductsDataTable.tsx +3 -2
- package/src/modules/catalog/components/products/VariantBuilder.tsx +5 -5
- package/src/modules/catalog/events.ts +1 -0
- package/src/modules/catalog/extension-points.ts +24 -0
- package/src/modules/catalog/i18n/de.json +18 -0
- package/src/modules/catalog/i18n/en.json +18 -0
- package/src/modules/catalog/i18n/es.json +18 -0
- package/src/modules/catalog/i18n/ko.json +723 -0
- package/src/modules/catalog/i18n/pl.json +18 -0
- package/src/modules/catalog/widgets/injection/product-bulk-delete/widget.ts +15 -5
- package/src/modules/catalog/widgets/injection/product-seo/widget.ts +1 -1
- package/src/modules/communication_channels/api/post/test-seed/route.ts +69 -2
- package/src/modules/communication_channels/api/post/webhook/[provider]/route.ts +11 -1
- package/src/modules/communication_channels/api/post/webhooks/gmail/route.ts +17 -11
- package/src/modules/communication_channels/backend/communication_channels/channels/page.tsx +2 -1
- package/src/modules/communication_channels/backend/profile/communication-channels/page.tsx +8 -7
- package/src/modules/communication_channels/data/enrichers.ts +6 -26
- package/src/modules/communication_channels/extension-points.ts +17 -0
- package/src/modules/communication_channels/i18n/de.json +2 -2
- package/src/modules/communication_channels/i18n/en.json +2 -2
- package/src/modules/communication_channels/i18n/es.json +2 -2
- package/src/modules/communication_channels/i18n/ko.json +138 -0
- package/src/modules/communication_channels/i18n/pl.json +2 -2
- package/src/modules/communication_channels/lib/access-control.ts +3 -3
- package/src/modules/configs/backend/config/system-status/page.tsx +2 -1
- package/src/modules/configs/extension-points.ts +15 -0
- package/src/modules/configs/i18n/ko.json +197 -0
- package/src/modules/configs/lib/upgrade-actions.ts +14 -0
- package/src/modules/currencies/backend/currencies/page.tsx +2 -1
- package/src/modules/currencies/backend/exchange-rates/page.tsx +2 -1
- package/src/modules/currencies/di.ts +4 -1
- package/src/modules/currencies/extension-points.ts +11 -0
- package/src/modules/currencies/i18n/de.json +1 -0
- package/src/modules/currencies/i18n/en.json +1 -0
- package/src/modules/currencies/i18n/es.json +1 -0
- package/src/modules/currencies/i18n/ko.json +160 -0
- package/src/modules/currencies/i18n/pl.json +1 -0
- package/src/modules/currencies/services/baseCurrencyService.ts +59 -0
- package/src/modules/customer_accounts/AGENTS.md +3 -3
- package/src/modules/customer_accounts/api/admin/users/[id].ts +16 -1
- package/src/modules/customer_accounts/api/admin/users-invite.ts +81 -3
- package/src/modules/customer_accounts/api/invitations/accept.ts +1 -2
- package/src/modules/customer_accounts/api/login.ts +4 -2
- package/src/modules/customer_accounts/api/magic-link/verify.ts +4 -2
- package/src/modules/customer_accounts/api/portal/feature-check.ts +5 -7
- package/src/modules/customer_accounts/api/portal/nav.ts +5 -3
- package/src/modules/customer_accounts/api/portal/profile.ts +5 -1
- package/src/modules/customer_accounts/api/portal/sessions-refresh.ts +3 -3
- package/src/modules/customer_accounts/api/portal/users-invite.ts +25 -1
- package/src/modules/customer_accounts/backend/customer_accounts/roles/page.tsx +2 -1
- package/src/modules/customer_accounts/backend/customer_accounts/settings/domain/components/Diagnostics.tsx +2 -2
- package/src/modules/customer_accounts/backend/customer_accounts/users/page.tsx +2 -1
- package/src/modules/customer_accounts/data/entities.ts +3 -0
- package/src/modules/customer_accounts/data/validators.ts +1 -0
- package/src/modules/customer_accounts/emails/CustomerInvitationEmail.tsx +45 -0
- package/src/modules/customer_accounts/extension-points.ts +11 -0
- package/src/modules/customer_accounts/i18n/de.json +6 -0
- package/src/modules/customer_accounts/i18n/en.json +6 -0
- package/src/modules/customer_accounts/i18n/es.json +6 -0
- package/src/modules/customer_accounts/i18n/ko.json +354 -0
- package/src/modules/customer_accounts/i18n/pl.json +6 -0
- package/src/modules/customer_accounts/lib/customerAuth.ts +8 -2
- package/src/modules/customer_accounts/lib/customerAuthServer.ts +1 -0
- package/src/modules/customer_accounts/lib/customerEntityOwnership.ts +68 -2
- package/src/modules/customer_accounts/lib/customerUrl.ts +27 -11
- package/src/modules/customer_accounts/lib/invitationEmail.ts +42 -0
- package/src/modules/customer_accounts/migrations/.snapshot-open-mercato.json +16 -0
- package/src/modules/customer_accounts/migrations/Migration20260723120000_customer_accounts.ts +13 -0
- package/src/modules/customer_accounts/services/customerInvitationService.ts +56 -3
- package/src/modules/customer_accounts/services/customerRbacService.ts +16 -3
- package/src/modules/customer_accounts/setup.ts +7 -0
- package/src/modules/customer_accounts/subscribers/autoLinkCrm.ts +75 -8
- package/src/modules/customer_accounts/widgets/injection/account-status/widget.client.tsx +2 -2
- package/src/modules/customer_accounts/widgets/injection/portal-ai-assistant-trigger/widget.client.tsx +1 -3
- package/src/modules/customer_accounts/widgets/injection-table.ts +4 -1
- package/src/modules/customers/analytics.ts +3 -0
- package/src/modules/customers/api/companies/[id]/route.ts +3 -4
- package/src/modules/customers/api/deals/[id]/people/route.ts +3 -0
- package/src/modules/customers/api/deals/[id]/route.ts +10 -2
- package/src/modules/customers/api/deals/aggregate/route.ts +5 -4
- package/src/modules/customers/api/deals/summary/route.ts +15 -162
- package/src/modules/customers/api/people/[id]/companies/enriched/route.ts +3 -2
- package/src/modules/customers/api/utils.ts +25 -37
- package/src/modules/customers/backend/customers/companies/[id]/page.tsx +2 -1
- package/src/modules/customers/backend/customers/companies/page.tsx +2 -1
- package/src/modules/customers/backend/customers/companies-v2/[id]/page.tsx +17 -5
- package/src/modules/customers/backend/customers/deals/[id]/hooks/types.ts +1 -0
- package/src/modules/customers/backend/customers/deals/[id]/page.tsx +19 -12
- package/src/modules/customers/backend/customers/deals/page.tsx +2 -1
- package/src/modules/customers/backend/customers/deals/pipeline/components/QuickDealDialog.tsx +35 -3
- package/src/modules/customers/backend/customers/deals/pipeline/page.tsx +11 -2
- package/src/modules/customers/backend/customers/people/[id]/page.tsx +2 -1
- package/src/modules/customers/backend/customers/people/page.tsx +2 -1
- package/src/modules/customers/backend/customers/people-v2/[id]/page.tsx +29 -10
- package/src/modules/customers/cli.ts +28 -11
- package/src/modules/customers/commands/deals.ts +50 -9
- package/src/modules/customers/commands/people.ts +3 -0
- package/src/modules/customers/components/CustomerTodosTable.tsx +2 -1
- package/src/modules/customers/components/calendar/CalendarEventEditor.tsx +1 -1
- package/src/modules/customers/components/detail/ActiveDealCard.tsx +2 -1
- package/src/modules/customers/components/detail/ActivitiesDayStrip.tsx +2 -3
- package/src/modules/customers/components/detail/CompanyDetailTabs.tsx +30 -7
- package/src/modules/customers/components/detail/CompanyKpiBar.tsx +6 -5
- package/src/modules/customers/components/detail/ConfirmDealLostDialog.tsx +2 -2
- package/src/modules/customers/components/detail/DealDetailTabs.tsx +34 -9
- package/src/modules/customers/components/detail/DealForm.tsx +5 -1
- package/src/modules/customers/components/detail/DealsSection.tsx +1 -1
- package/src/modules/customers/components/detail/MiniWeekCalendar.tsx +8 -57
- package/src/modules/customers/components/detail/PersonDetailTabs.tsx +34 -9
- package/src/modules/customers/components/detail/ScheduleActivityDialog.tsx +29 -14
- package/src/modules/customers/components/detail/dashboard/helpers.ts +4 -3
- package/src/modules/customers/components/detail/legacyActivities.ts +79 -0
- package/src/modules/customers/components/formConfig.tsx +12 -8
- package/src/modules/customers/data/entities.ts +9 -1
- package/src/modules/customers/data/validators.ts +6 -1
- package/src/modules/customers/extension-points.ts +40 -0
- package/src/modules/customers/i18n/de.json +72 -0
- package/src/modules/customers/i18n/en.json +72 -0
- package/src/modules/customers/i18n/es.json +72 -0
- package/src/modules/customers/i18n/ko.json +2855 -0
- package/src/modules/customers/i18n/pl.json +72 -0
- package/src/modules/customers/lib/calendar/format.ts +10 -4
- package/src/modules/customers/lib/dealStatus.ts +48 -0
- package/src/modules/customers/lib/dealsSummaryQueries.ts +211 -0
- package/src/modules/customers/lib/optionalBaseCurrency.ts +34 -0
- package/src/modules/customers/lib/visibilityFilter.ts +7 -5
- package/src/modules/customers/migrations/.snapshot-open-mercato.json +27 -1
- package/src/modules/customers/migrations/Migration20260723210000_customers.ts +15 -0
- package/src/modules/customers/search.ts +59 -27
- package/src/modules/customers/utils/phoneDuplicates.ts +6 -3
- package/src/modules/dashboards/api/layout/[itemId]/route.ts +6 -3
- package/src/modules/dashboards/api/layout/route.ts +22 -9
- package/src/modules/dashboards/api/roles/widgets/route.ts +9 -3
- package/src/modules/dashboards/api/users/widgets/route.ts +9 -3
- package/src/modules/dashboards/api/widgets/catalog.ts +6 -3
- package/src/modules/dashboards/api/widgets/data/batch/route.ts +12 -1
- package/src/modules/dashboards/api/widgets/data/route.ts +29 -1
- package/src/modules/dashboards/api/widgets/data/schema.ts +49 -19
- package/src/modules/dashboards/components/UnlabelledAmountNotice.tsx +43 -0
- package/src/modules/dashboards/i18n/de.json +5 -0
- package/src/modules/dashboards/i18n/en.json +5 -0
- package/src/modules/dashboards/i18n/es.json +5 -0
- package/src/modules/dashboards/i18n/ko.json +118 -0
- package/src/modules/dashboards/i18n/pl.json +5 -0
- package/src/modules/dashboards/lib/access.ts +5 -3
- package/src/modules/dashboards/lib/aggregations.ts +198 -48
- package/src/modules/dashboards/lib/exactDecimal.ts +96 -0
- package/src/modules/dashboards/lib/formatters.ts +137 -12
- package/src/modules/dashboards/lib/optionalBaseCurrency.ts +22 -0
- package/src/modules/dashboards/services/widgetDataService.ts +453 -12
- package/src/modules/dashboards/subscribers/invalidateWidgetDataCache.ts +32 -0
- package/src/modules/dashboards/widgets/dashboard/aov-kpi/widget.client.tsx +9 -3
- package/src/modules/dashboards/widgets/dashboard/pipeline-summary/config.ts +86 -0
- package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.client.tsx +42 -21
- package/src/modules/dashboards/widgets/dashboard/pipeline-summary/widget.ts +2 -2
- package/src/modules/dashboards/widgets/dashboard/revenue-kpi/widget.client.tsx +9 -3
- package/src/modules/dashboards/widgets/dashboard/revenue-trend/widget.client.tsx +7 -2
- package/src/modules/dashboards/widgets/dashboard/sales-by-region/widget.client.tsx +25 -15
- package/src/modules/dashboards/widgets/dashboard/top-customers/widget.client.tsx +21 -11
- package/src/modules/dashboards/widgets/dashboard/top-products/widget.client.tsx +9 -3
- package/src/modules/data_sync/AGENTS.md +1 -0
- package/src/modules/data_sync/api/mappings/[id]/route.ts +22 -9
- package/src/modules/data_sync/api/mappings/route.ts +13 -4
- package/src/modules/data_sync/api/options.ts +7 -2
- package/src/modules/data_sync/api/run.ts +7 -2
- package/src/modules/data_sync/api/runs/[id]/cancel.ts +8 -3
- package/src/modules/data_sync/api/runs/[id]/retry.ts +7 -2
- package/src/modules/data_sync/api/runs/[id]/route.ts +8 -3
- package/src/modules/data_sync/api/runs.ts +7 -2
- package/src/modules/data_sync/api/schedules/[id]/route.ts +19 -6
- package/src/modules/data_sync/api/schedules/route.ts +13 -4
- package/src/modules/data_sync/api/validate.ts +9 -4
- package/src/modules/data_sync/backend/data-sync/page.tsx +5 -4
- package/src/modules/data_sync/components/IntegrationScheduleTab.tsx +5 -5
- package/src/modules/data_sync/extension-points.ts +10 -0
- package/src/modules/data_sync/i18n/ko.json +125 -0
- package/src/modules/data_sync/lib/adapter.ts +18 -0
- package/src/modules/data_sync/lib/queue-policy.ts +30 -0
- package/src/modules/data_sync/lib/queue.ts +19 -1
- package/src/modules/data_sync/lib/start-run.ts +2 -1
- package/src/modules/data_sync/lib/sync-engine.ts +46 -0
- package/src/modules/data_sync/lib/sync-run-service.ts +82 -1
- package/src/modules/data_sync/workers/sync-export.ts +8 -1
- package/src/modules/data_sync/workers/sync-import.ts +8 -1
- package/src/modules/design_system/AGENTS.md +34 -0
- package/src/modules/design_system/acl.ts +5 -0
- package/src/modules/design_system/backend/design-system/page.meta.ts +11 -0
- package/src/modules/design_system/backend/design-system/page.tsx +14 -0
- package/src/modules/design_system/gallery/components/CodeSnippet.tsx +55 -0
- package/src/modules/design_system/gallery/components/EntryCard.tsx +95 -0
- package/src/modules/design_system/gallery/components/GalleryShell.tsx +206 -0
- package/src/modules/design_system/gallery/components/VariantPreview.tsx +15 -0
- package/src/modules/design_system/gallery/entries/banners.tsx +226 -0
- package/src/modules/design_system/gallery/entries/buttons.tsx +422 -0
- package/src/modules/design_system/gallery/entries/charts.tsx +518 -0
- package/src/modules/design_system/gallery/entries/dates.tsx +325 -0
- package/src/modules/design_system/gallery/entries/detail.tsx +403 -0
- package/src/modules/design_system/gallery/entries/display.tsx +893 -0
- package/src/modules/design_system/gallery/entries/feedback.tsx +746 -0
- package/src/modules/design_system/gallery/entries/filters.tsx +570 -0
- package/src/modules/design_system/gallery/entries/foundations.tsx +529 -0
- package/src/modules/design_system/gallery/entries/icons.tsx +168 -0
- package/src/modules/design_system/gallery/entries/inputs.tsx +1516 -0
- package/src/modules/design_system/gallery/entries/messages.tsx +339 -0
- package/src/modules/design_system/gallery/entries/navigation.tsx +573 -0
- package/src/modules/design_system/gallery/entries/notifications.tsx +285 -0
- package/src/modules/design_system/gallery/entries/overlays.tsx +677 -0
- package/src/modules/design_system/gallery/entries/scaffolding.tsx +430 -0
- package/src/modules/design_system/gallery/entries/schedule.tsx +307 -0
- package/src/modules/design_system/gallery/registry.ts +152 -0
- package/src/modules/design_system/gallery/types.ts +32 -0
- package/src/modules/design_system/i18n/.hardcoded-allowlist.json +71 -0
- package/src/modules/design_system/i18n/de.json +58 -0
- package/src/modules/design_system/i18n/en.json +58 -0
- package/src/modules/design_system/i18n/es.json +58 -0
- package/src/modules/design_system/i18n/ko.json +58 -0
- package/src/modules/design_system/i18n/pl.json +58 -0
- package/src/modules/design_system/index.ts +7 -0
- package/src/modules/design_system/setup.ts +12 -0
- package/src/modules/dictionaries/api/[dictionaryId]/entries/route.ts +39 -11
- package/src/modules/dictionaries/api/openapi.ts +19 -0
- package/src/modules/dictionaries/components/DictionaryEntrySelect.tsx +1 -1
- package/src/modules/dictionaries/components/hooks/useDictionaryEntries.ts +35 -36
- package/src/modules/dictionaries/data/validators.ts +14 -0
- package/src/modules/dictionaries/i18n/ko.json +130 -0
- package/src/modules/dictionaries/lib/clientEntries.ts +4 -3
- package/src/modules/dictionaries/lib/fetchAllEntries.ts +72 -0
- package/src/modules/directory/api/organization-branding/route.ts +12 -1
- package/src/modules/directory/api/organization-switcher/route.ts +97 -26
- package/src/modules/directory/api/organizations/route.ts +7 -0
- package/src/modules/directory/api/tenants/route.ts +9 -1
- package/src/modules/directory/backend/directory/branding/page.tsx +34 -9
- package/src/modules/directory/backend/directory/organizations/[id]/edit/page.tsx +10 -14
- package/src/modules/directory/backend/directory/organizations/page.tsx +2 -1
- package/src/modules/directory/backend/directory/tenants/page.tsx +2 -1
- package/src/modules/directory/commands/organizations.ts +9 -1
- package/src/modules/directory/commands/tenants.ts +6 -0
- package/src/modules/directory/data/entities.ts +3 -0
- package/src/modules/directory/data/validators.ts +2 -0
- package/src/modules/directory/extension-points.ts +11 -0
- package/src/modules/directory/i18n/de.json +4 -1
- package/src/modules/directory/i18n/en.json +4 -1
- package/src/modules/directory/i18n/es.json +4 -1
- package/src/modules/directory/i18n/ko.json +105 -0
- package/src/modules/directory/i18n/pl.json +4 -1
- package/src/modules/directory/migrations/.snapshot-open-mercato.json +18 -1
- package/src/modules/directory/migrations/Migration20260626145500_directory_logo_preserve_aspect_ratio.ts +13 -0
- package/src/modules/directory/subscribers/invalidateOrgScopeCache.ts +4 -1
- package/src/modules/directory/utils/organizationScope.ts +9 -3
- package/src/modules/entities/api/definitions.ts +55 -3
- package/src/modules/entities/api/entities.ts +30 -2
- package/src/modules/entities/api/entity-settings.ts +66 -22
- package/src/modules/entities/api/records.ts +15 -31
- package/src/modules/entities/api/sidebar-entities.ts +43 -14
- package/src/modules/entities/backend/config/settings/page.meta.ts +34 -0
- package/src/modules/entities/backend/config/settings/page.tsx +12 -0
- package/src/modules/entities/backend/entities/user/[entityId]/page.tsx +1 -1
- package/src/modules/entities/backend/entities/user/[entityId]/records/page.tsx +96 -75
- package/src/modules/entities/backend/entities/user/create/page.tsx +16 -7
- package/src/modules/entities/cli.ts +238 -21
- package/src/modules/entities/components/EntitySettingsManager.tsx +160 -0
- package/src/modules/entities/components/RecordListRelationCell.tsx +90 -0
- package/src/modules/entities/components/SystemEntitiesTable.tsx +2 -1
- package/src/modules/entities/components/UserEntitiesTable.tsx +2 -1
- package/src/modules/entities/components/recordListRelationDisplays.ts +109 -0
- package/src/modules/entities/extension-points.ts +18 -0
- package/src/modules/entities/i18n/de.json +9 -0
- package/src/modules/entities/i18n/en.json +9 -0
- package/src/modules/entities/i18n/es.json +9 -0
- package/src/modules/entities/i18n/ko.json +260 -0
- package/src/modules/entities/i18n/pl.json +9 -0
- package/src/modules/entities/lib/entityAcl.ts +98 -11
- package/src/modules/feature_toggles/components/FeatureGuard.tsx +9 -2
- package/src/modules/feature_toggles/components/FeatureToggleOverrideCard.tsx +1 -1
- package/src/modules/feature_toggles/components/hooks/staleTime.ts +5 -0
- package/src/modules/feature_toggles/components/hooks/useFeatureFlagBoolean.ts +13 -1
- package/src/modules/feature_toggles/components/hooks/useFeatureFlagJson.ts +12 -3
- package/src/modules/feature_toggles/components/hooks/useFeatureFlagNumber.ts +10 -1
- package/src/modules/feature_toggles/components/hooks/useFeatureFlagString.ts +10 -1
- package/src/modules/feature_toggles/i18n/ko.json +96 -0
- package/src/modules/inbox_ops/ai-tools.ts +5 -3
- package/src/modules/inbox_ops/api/proposals/[id]/actions/[actionId]/route.ts +17 -1
- package/src/modules/inbox_ops/api/proposals/route.ts +20 -1
- package/src/modules/inbox_ops/api/webhook/inbound.ts +14 -12
- package/src/modules/inbox_ops/backend/inbox-ops/log/page.tsx +6 -6
- package/src/modules/inbox_ops/components/proposals/EditActionDialog.tsx +24 -19
- package/src/modules/inbox_ops/components/proposals/types.ts +1 -0
- package/src/modules/inbox_ops/i18n/de.json +3 -0
- package/src/modules/inbox_ops/i18n/en.json +3 -0
- package/src/modules/inbox_ops/i18n/es.json +3 -0
- package/src/modules/inbox_ops/i18n/ko.json +196 -0
- package/src/modules/inbox_ops/i18n/pl.json +3 -0
- package/src/modules/inbox_ops/search.ts +20 -4
- package/src/modules/inbox_ops/subscribers/search-reindex-proposal-created.ts +39 -0
- package/src/modules/integrations/api/[id]/credentials/route.ts +11 -5
- package/src/modules/integrations/api/[id]/health/route.ts +6 -3
- package/src/modules/integrations/api/[id]/route.ts +6 -3
- package/src/modules/integrations/api/[id]/state/route.ts +6 -3
- package/src/modules/integrations/api/[id]/version/route.ts +6 -3
- package/src/modules/integrations/api/logs/route.ts +6 -3
- package/src/modules/integrations/api/route.ts +6 -3
- package/src/modules/integrations/api/umes-read.ts +2 -2
- package/src/modules/integrations/backend/integrations/[id]/page.tsx +2 -2
- package/src/modules/integrations/extension-points.ts +27 -0
- package/src/modules/integrations/i18n/ko.json +129 -0
- package/src/modules/integrations/lib/organization-scope.ts +5 -25
- package/src/modules/integrations/widgets/injection/external-ids/widget.client.tsx +0 -5
- package/src/modules/integrations/widgets/injection/external-ids/widget.ts +13 -0
- package/src/modules/messages/api/[id]/route.ts +21 -0
- package/src/modules/messages/api/route.ts +109 -9
- package/src/modules/messages/components/ComposeMessagePageClient.tsx +2 -1
- package/src/modules/messages/components/MessageDetailPageClient.tsx +3 -2
- package/src/modules/messages/components/MessagesInboxPageClient.tsx +2 -1
- package/src/modules/messages/components/message-detail/panels/dialogs.tsx +1 -1
- package/src/modules/messages/extension-points.ts +13 -0
- package/src/modules/messages/i18n/de.json +2 -0
- package/src/modules/messages/i18n/en.json +2 -0
- package/src/modules/messages/i18n/es.json +2 -0
- package/src/modules/messages/i18n/ko.json +263 -0
- package/src/modules/messages/i18n/pl.json +2 -0
- package/src/modules/messages/lib/participantScope.ts +64 -0
- package/src/modules/messages/lib/routeHelpers.ts +4 -6
- package/src/modules/messages/lib/searchLookup.ts +11 -34
- package/src/modules/messages/search.ts +11 -5
- package/src/modules/notifications/api/route.ts +123 -3
- package/src/modules/notifications/api/unread-count/route.ts +42 -5
- package/src/modules/notifications/di.ts +1 -1
- package/src/modules/notifications/events.ts +2 -0
- package/src/modules/notifications/i18n/ko.json +55 -0
- package/src/modules/notifications/lib/notificationRecipients.ts +6 -8
- package/src/modules/notifications/lib/notificationScope.ts +40 -0
- package/src/modules/notifications/lib/notificationService.ts +63 -1
- package/src/modules/notifications/lib/routeHelpers.ts +19 -2
- package/src/modules/payment_gateways/api/capture/route.ts +1 -1
- package/src/modules/payment_gateways/api/sessions/route.ts +6 -3
- package/src/modules/payment_gateways/api/webhook/[provider]/route.ts +13 -1
- package/src/modules/payment_gateways/backend/payment-gateways/page.tsx +3 -2
- package/src/modules/payment_gateways/data/entities.ts +13 -2
- package/src/modules/payment_gateways/di.ts +28 -2
- package/src/modules/payment_gateways/extension-points.ts +16 -0
- package/src/modules/payment_gateways/i18n/de.json +8 -1
- package/src/modules/payment_gateways/i18n/en.json +8 -1
- package/src/modules/payment_gateways/i18n/es.json +8 -1
- package/src/modules/payment_gateways/i18n/ko.json +87 -0
- package/src/modules/payment_gateways/i18n/pl.json +8 -1
- package/src/modules/payment_gateways/lib/capture-ledger.ts +260 -0
- package/src/modules/payment_gateways/lib/gateway-service.ts +114 -18
- package/src/modules/payment_gateways/lib/order-amount-reconciliation.ts +93 -0
- package/src/modules/payment_gateways/lib/payment-operation-idempotency.ts +1 -0
- package/src/modules/payment_gateways/lib/session-idempotency.ts +36 -0
- package/src/modules/payment_gateways/migrations/.snapshot-open-mercato.json +44 -1
- package/src/modules/payment_gateways/migrations/Migration20260725101500_payment_gateways.ts +21 -0
- package/src/modules/payment_gateways/migrations/Migration20260803103035_payment_gateways.ts +17 -0
- package/src/modules/payment_gateways/setup.ts +62 -0
- package/src/modules/payment_gateways/workers/session-initialization-prune.ts +63 -0
- package/src/modules/planner/components/AvailabilityRulesEditor.tsx +4 -4
- package/src/modules/planner/components/unavailabilityReasons.ts +3 -3
- package/src/modules/planner/i18n/ko.json +565 -0
- package/src/modules/portal/extension-points.ts +30 -0
- package/src/modules/portal/frontend/[orgSlug]/portal/dashboard/page.tsx +3 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/invite/page.meta.ts +9 -0
- package/src/modules/portal/frontend/[orgSlug]/portal/invite/page.tsx +164 -0
- package/src/modules/portal/frontend/[orgSlug]/portal/login/page.tsx +4 -4
- package/src/modules/portal/frontend/[orgSlug]/portal/page.tsx +3 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/profile/page.tsx +3 -3
- package/src/modules/portal/frontend/[orgSlug]/portal/reset-password/page.tsx +5 -5
- package/src/modules/portal/frontend/[orgSlug]/portal/signup/page.tsx +4 -4
- package/src/modules/portal/frontend/[orgSlug]/portal/verify/page.tsx +1 -1
- package/src/modules/portal/i18n/de.json +18 -0
- package/src/modules/portal/i18n/en.json +18 -0
- package/src/modules/portal/i18n/es.json +18 -0
- package/src/modules/portal/i18n/ko.json +143 -0
- package/src/modules/portal/i18n/pl.json +18 -0
- package/src/modules/portal/lib/navigation.ts +3 -0
- package/src/modules/progress/AGENTS.md +11 -1
- package/src/modules/progress/i18n/ko.json +20 -0
- package/src/modules/progress/lib/progressService.ts +1 -0
- package/src/modules/progress/lib/progressServiceImpl.ts +385 -117
- package/src/modules/query_index/api/openapi.ts +12 -0
- package/src/modules/query_index/api/reindex.ts +15 -0
- package/src/modules/query_index/api/status.ts +238 -136
- package/src/modules/query_index/cli.ts +180 -1
- package/src/modules/query_index/components/QueryIndexesTable.tsx +194 -47
- package/src/modules/query_index/data/entities.ts +7 -0
- package/src/modules/query_index/di.ts +6 -0
- package/src/modules/query_index/events.ts +17 -0
- package/src/modules/query_index/extension-points.ts +10 -0
- package/src/modules/query_index/i18n/de.json +5 -3
- package/src/modules/query_index/i18n/en.json +5 -3
- package/src/modules/query_index/i18n/es.json +5 -3
- package/src/modules/query_index/i18n/ko.json +69 -0
- package/src/modules/query_index/i18n/pl.json +5 -3
- package/src/modules/query_index/lib/batch.ts +11 -4
- package/src/modules/query_index/lib/coverage.ts +47 -14
- package/src/modules/query_index/lib/document.ts +35 -4
- package/src/modules/query_index/lib/engine.ts +136 -59
- package/src/modules/query_index/lib/indexer.ts +130 -21
- package/src/modules/query_index/lib/reindexer.ts +62 -40
- package/src/modules/query_index/lib/search-tokens.ts +48 -16
- package/src/modules/query_index/lib/subscriber-scope.ts +2 -7
- package/src/modules/query_index/migrations/.snapshot-open-mercato.json +12 -0
- package/src/modules/query_index/migrations/Migration20260731105052_query_index.ts +35 -0
- package/src/modules/query_index/subscribers/coverage_refresh.ts +4 -0
- package/src/modules/query_index/subscribers/delete_one.ts +65 -1
- package/src/modules/query_index/subscribers/upsert_one.ts +68 -1
- package/src/modules/resources/api/resources.ts +2 -0
- package/src/modules/resources/backend/resources/resource-types/page.tsx +2 -1
- package/src/modules/resources/backend/resources/resources/[id]/page.tsx +9 -3
- package/src/modules/resources/backend/resources/resources/page.tsx +2 -1
- package/src/modules/resources/commands/resources.ts +10 -0
- package/src/modules/resources/components/detail/dictionaries.ts +3 -3
- package/src/modules/resources/data/entities.ts +3 -0
- package/src/modules/resources/data/validators.ts +5 -0
- package/src/modules/resources/extension-points.ts +11 -0
- package/src/modules/resources/i18n/ko.json +770 -0
- package/src/modules/resources/lib/seeds.ts +16 -9
- package/src/modules/resources/migrations/.snapshot-open-mercato.json +17 -1
- package/src/modules/resources/migrations/Migration20260608231000.ts +13 -0
- package/src/modules/sales/analytics.ts +4 -0
- package/src/modules/sales/api/document-history/route.ts +1 -0
- package/src/modules/sales/api/documents/factory.ts +28 -3
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +11 -3
- package/src/modules/sales/backend/sales/documents/create/page.tsx +2 -4
- package/src/modules/sales/commands/documents.ts +298 -31
- package/src/modules/sales/components/documents/ItemsSection.tsx +34 -11
- package/src/modules/sales/components/documents/LineItemDialog.tsx +13 -5
- package/src/modules/sales/components/documents/SalesDocumentForm.tsx +48 -6
- package/src/modules/sales/components/documents/SalesDocumentsTable.tsx +6 -1
- package/src/modules/sales/components/documents/SalesOrderDraftLines.tsx +198 -0
- package/src/modules/sales/components/documents/lineItemTypes.ts +1 -0
- package/src/modules/sales/components/useSalesChannelsEnabled.ts +2 -48
- package/src/modules/sales/data/validators.ts +59 -6
- package/src/modules/sales/di.ts +9 -0
- package/src/modules/sales/events.ts +1 -0
- package/src/modules/sales/extension-points.ts +33 -0
- package/src/modules/sales/i18n/de.json +22 -0
- package/src/modules/sales/i18n/en.json +22 -0
- package/src/modules/sales/i18n/es.json +22 -0
- package/src/modules/sales/i18n/ko.json +1442 -0
- package/src/modules/sales/i18n/pl.json +22 -0
- package/src/modules/sales/lib/historyHelpers.ts +88 -1
- package/src/modules/sales/services/paymentOrderTotalResolver.ts +67 -0
- package/src/modules/sales/widgets/injection/document-history/widget.client.tsx +64 -3
- package/src/modules/sales/workflows.ts +10 -7
- package/src/modules/shipping_carriers/api/webhook/[provider]/route.ts +11 -1
- package/src/modules/shipping_carriers/i18n/ko.json +85 -0
- package/src/modules/shipping_carriers/lib/shipment-wizard/components/PackageEditor.tsx +1 -1
- package/src/modules/staff/api/interceptors.ts +6 -4
- package/src/modules/staff/api/leave-requests.ts +54 -47
- package/src/modules/staff/components/detail/dictionaries.ts +3 -3
- package/src/modules/staff/i18n/ko.json +1162 -0
- package/src/modules/sync_excel/api/upload/route.ts +15 -2
- package/src/modules/sync_excel/i18n/ko.json +107 -0
- package/src/modules/sync_excel/widgets/injection/upload-config/widget.client.tsx +1 -1
- package/src/modules/translations/i18n/ko.json +45 -0
- package/src/modules/wms/components/backend/ReleaseReservationDialog.tsx +1 -1
- package/src/modules/wms/components/backend/WmsConfigurationPage.tsx +5 -4
- package/src/modules/wms/components/backend/WmsInventoryConsolePage.tsx +4 -3
- package/src/modules/wms/components/backend/WmsLocationDetailPage.tsx +3 -2
- package/src/modules/wms/components/backend/WmsLotDetailPage.tsx +3 -2
- package/src/modules/wms/components/backend/WmsLotsListPage.tsx +2 -1
- package/src/modules/wms/components/backend/WmsSkuDetailPage.tsx +3 -2
- package/src/modules/wms/extension-points.ts +23 -0
- package/src/modules/wms/i18n/de.json +2 -0
- package/src/modules/wms/i18n/en.json +2 -0
- package/src/modules/wms/i18n/es.json +2 -0
- package/src/modules/wms/i18n/ko.json +1053 -0
- package/src/modules/wms/i18n/pl.json +2 -0
- package/src/modules/workflows/backend/definitions/[id]/page.tsx +2 -2
- package/src/modules/workflows/backend/definitions/create/page.tsx +1 -1
- package/src/modules/workflows/backend/definitions/page.tsx +3 -2
- package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +16 -7
- package/src/modules/workflows/backend/instances/page.tsx +10 -9
- package/src/modules/workflows/backend/tasks/page.tsx +8 -7
- package/src/modules/workflows/components/ActivitiesEditor.tsx +98 -14
- package/src/modules/workflows/components/BusinessRulesSelector.tsx +1 -1
- package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +3 -3
- package/src/modules/workflows/components/EdgeEditDialogCrudForm.tsx +1 -2
- package/src/modules/workflows/components/NodeEditDialog.tsx +3 -3
- package/src/modules/workflows/components/NodeEditDialogCrudForm.tsx +4 -5
- package/src/modules/workflows/components/StepsEditor.tsx +2 -2
- package/src/modules/workflows/components/TransitionsEditor.tsx +78 -20
- package/src/modules/workflows/components/WorkflowGraphImpl.tsx +1 -1
- package/src/modules/workflows/components/WorkflowLegend.tsx +1 -1
- package/src/modules/workflows/components/WorkflowSelector.tsx +1 -1
- package/src/modules/workflows/components/fields/BusinessRuleConditionsEditor.tsx +1 -1
- package/src/modules/workflows/components/fields/FormFieldArrayEditor.tsx +2 -2
- package/src/modules/workflows/components/fields/MappingArrayEditor.tsx +1 -1
- package/src/modules/workflows/components/fields/StartPreConditionsEditor.tsx +1 -1
- package/src/modules/workflows/components/fields/WorkflowSelectorField.tsx +4 -4
- package/src/modules/workflows/data/validators.ts +52 -1
- package/src/modules/workflows/events.ts +1 -0
- package/src/modules/workflows/extension-points.ts +12 -0
- package/src/modules/workflows/i18n/de.json +3 -0
- package/src/modules/workflows/i18n/en.json +3 -0
- package/src/modules/workflows/i18n/es.json +3 -0
- package/src/modules/workflows/i18n/ko.json +1204 -0
- package/src/modules/workflows/i18n/pl.json +3 -0
- package/src/modules/workflows/lib/activity-executor.ts +99 -20
- package/src/modules/workflows/lib/format-validation-error.ts +60 -0
- package/src/modules/workflows/widgets/injection/order-approval/context-keys.ts +18 -0
- package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +27 -11
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/entries/filters.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport { Download } from 'lucide-react'\nimport { Button } from '@open-mercato/ui/primitives/button'\nimport {\n FilterBar,\n type FilterDef,\n type FilterValues,\n} from '@open-mercato/ui/backend/FilterBar'\nimport { QuickFilters, type FilterPreset } from '@open-mercato/ui/backend/filters/QuickFilters'\nimport { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\nimport { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'\nimport { FilterEmptyState } from '@open-mercato/ui/backend/filters/FilterEmptyState'\nimport { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'\nimport { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'\nimport { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'\nimport type { FilterFieldDef } from '@open-mercato/shared/lib/query/advanced-filter'\nimport type {\n AdvancedFilterTree,\n FilterGroup,\n FilterRule,\n} from '@open-mercato/shared/lib/query/advanced-filter-tree'\nimport type { GalleryEntry } from '../types'\n\n// Component titles and variant names are proper nouns from the codebase and\n// are deliberately not translated. `code` MUST contain the entry's importPath\n// (enforced by the registry-integrity test) and is always reviewed alongside\n// its sibling `render`.\n//\n// AdvancedFilterPanel itself is not showcased: it is a popover host that\n// orchestrates open/anchor state and saved-filter persistence. Its\n// presentational subcomponents (AdvancedFilterBuilder, QuickFilters,\n// FilterEmptyState) are shown standalone below with variant titles noting it.\n\n// ---------------------------------------------------------------------------\n// Inline demo data \u2014 no API calls. Field defs and trees mirror what CRM list\n// pages pass to the advanced filter stack.\n// ---------------------------------------------------------------------------\n\nconst demoFilterDefs: FilterDef[] = [\n { id: 'city', label: 'City', type: 'text', placeholder: 'e.g. Berlin' },\n {\n id: 'status',\n label: 'Status',\n type: 'select',\n options: [\n { value: 'active', label: 'Active' },\n { value: 'prospect', label: 'Prospect' },\n { value: 'churned', label: 'Churned' },\n ],\n },\n { id: 'hasOpenDeals', label: 'Has open deals', type: 'checkbox' },\n]\n\nconst demoFields: FilterFieldDef[] = [\n { key: 'name', label: 'Name', type: 'text' },\n { key: 'email', label: 'Email', type: 'text' },\n {\n key: 'status',\n label: 'Status',\n type: 'select',\n options: [\n { value: 'active', label: 'Active', tone: 'success' },\n { value: 'prospect', label: 'Prospect', tone: 'info' },\n { value: 'churned', label: 'Churned', tone: 'error' },\n ],\n },\n { key: 'employees', label: 'Employees', type: 'number' },\n]\n\nfunction rule(id: string, field: string, operator: FilterRule['operator'], value: unknown): FilterRule {\n return { id, type: 'rule', field, operator, value }\n}\n\nfunction tree(children: FilterGroup['children']): AdvancedFilterTree {\n return { root: { id: 'root', type: 'group', combinator: 'and', children } }\n}\n\nconst ruleChipsTree = tree([\n rule('r1', 'name', 'contains', 'north'),\n rule('r2', 'status', 'is', 'active'),\n rule('r3', 'employees', 'between', [10, 50]),\n])\n\nconst groupChipTree = tree([\n {\n id: 'g1',\n type: 'group',\n combinator: 'or',\n children: [\n rule('g1r1', 'status', 'is', 'prospect'),\n rule('g1r2', 'status', 'is', 'churned'),\n ],\n },\n])\n\nconst valuelessChipTree = tree([rule('r4', 'email', 'is_empty', null)])\n\nconst builderSingleRuleTree = tree([rule('b1', 'status', 'is', 'active')])\n\nconst builderNestedTree = tree([\n rule('b2', 'name', 'contains', 'north'),\n {\n id: 'bg1',\n type: 'group',\n combinator: 'or',\n children: [\n rule('bg1r1', 'status', 'is', 'prospect'),\n rule('bg1r2', 'employees', 'greater_than', 100),\n ],\n },\n])\n\nconst demoPresets: FilterPreset[] = [\n {\n id: 'active-accounts',\n labelKey: 'Active accounts',\n iconName: 'filter',\n build: () => tree([rule('p1', 'status', 'is', 'active')]),\n },\n {\n id: 'added-this-week',\n labelKey: 'Added this week',\n iconName: 'clock',\n build: () => tree([rule('p2', 'name', 'is_not_empty', null)]),\n },\n]\n\nconst userScopedPresets: FilterPreset[] = [\n ...demoPresets,\n {\n id: 'my-accounts',\n labelKey: 'My accounts',\n requiresUser: true,\n build: ({ userId }) => tree([rule('p3', 'name', 'contains', userId)]),\n },\n]\n\n// ---------------------------------------------------------------------------\n// Demo wrappers \u2014 controlled components need local state to be interactive in\n// the gallery. The `code` snippets show the essential consumer usage, not\n// these wrappers.\n// ---------------------------------------------------------------------------\n\nfunction DemoFilterBar({\n layout,\n trailingItems,\n}: {\n layout?: 'stacked' | 'inline'\n trailingItems?: React.ReactNode\n}) {\n const [search, setSearch] = React.useState('')\n const [values, setValues] = React.useState<FilterValues>({ status: 'active' })\n return (\n <div className=\"w-full max-w-2xl\">\n <FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={demoFilterDefs}\n values={values}\n onApply={setValues}\n onClear={() => setValues({})}\n layout={layout}\n trailingItems={trailingItems}\n />\n </div>\n )\n}\n\nfunction DemoActiveFilterChips({ initialTree }: { initialTree: AdvancedFilterTree }) {\n const [value, setValue] = React.useState(initialTree)\n const removeNode = (id: string) =>\n setValue((prev) => ({\n root: { ...prev.root, children: prev.root.children.filter((child) => child.id !== id) },\n }))\n return (\n <div className=\"w-full max-w-2xl\">\n <ActiveFilterChips\n tree={value}\n fields={demoFields}\n popoverOpen={false}\n onRemoveNode={removeNode}\n onOpen={() => {}}\n />\n </div>\n )\n}\n\nfunction DemoAdvancedFilterBuilder({ initialTree }: { initialTree: AdvancedFilterTree }) {\n const [value, setValue] = React.useState(initialTree)\n return (\n <div className=\"w-full max-w-2xl rounded-lg border bg-popover p-3\">\n <AdvancedFilterBuilder\n fields={demoFields}\n value={value}\n onChange={setValue}\n onApply={() => {}}\n onClear={() => setValue(tree([]))}\n />\n </div>\n )\n}\n\nfunction DemoFilterEmptyState({ withQuickFilters }: { withQuickFilters?: boolean }) {\n const addConditionRef = React.useRef<HTMLButtonElement | null>(null)\n return (\n <div className=\"w-full max-w-xl rounded-lg border bg-popover\">\n <FilterEmptyState\n onAddCondition={() => {}}\n addConditionRef={addConditionRef}\n quickFilters={\n withQuickFilters ? (\n <QuickFilters presets={demoPresets} userId=\"user-1\" onApply={() => {}} />\n ) : undefined\n }\n />\n </div>\n )\n}\n\nconst filterBarEntry: GalleryEntry = {\n id: 'filter-bar',\n title: 'FilterBar',\n importPath: '@open-mercato/ui/backend/FilterBar',\n variants: [\n {\n id: 'stacked',\n title: 'Stacked (default)',\n render: () => <DemoFilterBar />,\n code: `import { FilterBar, type FilterDef, type FilterValues } from '@open-mercato/ui/backend/FilterBar'\n\nconst filters: FilterDef[] = [\n { id: 'city', label: 'City', type: 'text' },\n { id: 'status', label: 'Status', type: 'select', options: statusOptions },\n { id: 'hasOpenDeals', label: 'Has open deals', type: 'checkbox' },\n]\n\n<FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={filters}\n values={values}\n onApply={setValues}\n onClear={() => setValues({})}\n/>`,\n },\n {\n id: 'inline',\n title: 'Inline layout',\n render: () => <DemoFilterBar layout=\"inline\" />,\n code: `import { FilterBar } from '@open-mercato/ui/backend/FilterBar'\n\n<FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={filters}\n values={values}\n onApply={setValues}\n layout=\"inline\"\n/>`,\n },\n {\n id: 'trailing-items',\n title: 'With trailing items',\n render: () => (\n <DemoFilterBar\n trailingItems={\n <Button variant=\"outline\" size=\"sm\">\n <Download />\n Export\n </Button>\n }\n />\n ),\n code: `import { Download } from 'lucide-react'\nimport { FilterBar } from '@open-mercato/ui/backend/FilterBar'\nimport { Button } from '@open-mercato/ui/primitives/button'\n\n<FilterBar\n searchValue={search}\n onSearchChange={setSearch}\n filters={filters}\n values={values}\n onApply={setValues}\n trailingItems={<Button variant=\"outline\" size=\"sm\"><Download />Export</Button>}\n/>`,\n },\n ],\n}\n\nconst quickFiltersEntry: GalleryEntry = {\n id: 'quick-filters',\n title: 'QuickFilters',\n importPath: '@open-mercato/ui/backend/filters/QuickFilters',\n variants: [\n {\n id: 'presets',\n title: 'Presets (used inside AdvancedFilterPanel)',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <QuickFilters presets={demoPresets} userId=\"user-1\" onApply={() => {}} />\n </div>\n ),\n code: `import { QuickFilters, type FilterPreset } from '@open-mercato/ui/backend/filters/QuickFilters'\n\nconst presets: FilterPreset[] = [\n { id: 'active-accounts', labelKey: 'customers.filters.activeAccounts', iconName: 'filter', build: () => activeTree },\n { id: 'added-this-week', labelKey: 'customers.filters.addedThisWeek', iconName: 'clock', build: () => recentTree },\n]\n\n<QuickFilters presets={presets} userId={userId} onApply={(tree, preset) => applyTree(tree)} />`,\n },\n {\n id: 'user-scoped',\n title: 'User-scoped preset (hidden without userId)',\n render: () => (\n <div className=\"flex w-full max-w-xl flex-col gap-6\">\n <QuickFilters presets={userScopedPresets} userId=\"user-1\" onApply={() => {}} />\n <QuickFilters presets={userScopedPresets} userId=\"\" onApply={() => {}} />\n </div>\n ),\n code: `import { QuickFilters } from '@open-mercato/ui/backend/filters/QuickFilters'\n\n// Presets with requiresUser: true are hidden when userId is empty.\n<QuickFilters presets={presets} userId={userId} onApply={applyTree} />`,\n },\n ],\n}\n\nconst activeFilterChipsEntry: GalleryEntry = {\n id: 'active-filter-chips',\n title: 'ActiveFilterChips',\n importPath: '@open-mercato/ui/backend/filters/ActiveFilterChips',\n variants: [\n {\n id: 'rule-chips',\n title: 'Rule chips (text, toned select, range)',\n render: () => <DemoActiveFilterChips initialTree={ruleChipsTree} />,\n code: `import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\n\n<ActiveFilterChips\n tree={tree}\n fields={fields}\n popoverOpen={panelOpen}\n onRemoveNode={(id) => dispatch({ type: 'removeNode', id })}\n onOpen={(focusNodeId) => setPanelOpen(true)}\n/>`,\n },\n {\n id: 'group-chip',\n title: 'Group chip (first rule +N)',\n render: () => <DemoActiveFilterChips initialTree={groupChipTree} />,\n code: `import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\n\n// An OR group renders as a single chip: \"Status: Prospect +1\".\n<ActiveFilterChips tree={tree} fields={fields} popoverOpen={false} onRemoveNode={removeNode} onOpen={openPanel} />`,\n },\n {\n id: 'valueless-operator',\n title: 'Valueless operator chip',\n render: () => <DemoActiveFilterChips initialTree={valuelessChipTree} />,\n code: `import { ActiveFilterChips } from '@open-mercato/ui/backend/filters/ActiveFilterChips'\n\n// Valueless operators read as a phrase: \"Email is empty\".\n<ActiveFilterChips tree={tree} fields={fields} popoverOpen={false} onRemoveNode={removeNode} onOpen={openPanel} />`,\n },\n ],\n}\n\nconst advancedFilterBuilderEntry: GalleryEntry = {\n id: 'advanced-filter-builder',\n title: 'AdvancedFilterBuilder',\n importPath: '@open-mercato/ui/backend/filters/AdvancedFilterBuilder',\n variants: [\n {\n id: 'single-rule',\n title: 'Single rule (presentational core of AdvancedFilterPanel)',\n render: () => <DemoAdvancedFilterBuilder initialTree={builderSingleRuleTree} />,\n code: `import { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'\n\n<AdvancedFilterBuilder\n fields={fields}\n value={tree}\n onChange={setTree}\n onApply={applyFilters}\n onClear={clearFilters}\n/>`,\n },\n {\n id: 'nested-group',\n title: 'Rule with nested OR group',\n render: () => <DemoAdvancedFilterBuilder initialTree={builderNestedTree} />,\n code: `import { AdvancedFilterBuilder } from '@open-mercato/ui/backend/filters/AdvancedFilterBuilder'\n\n// Groups nest up to 3 levels; the value is a plain AdvancedFilterTree.\n<AdvancedFilterBuilder fields={fields} value={tree} onChange={setTree} onApply={applyFilters} onClear={clearFilters} />`,\n },\n ],\n}\n\nconst filterEmptyStateEntry: GalleryEntry = {\n id: 'filter-empty-state',\n title: 'FilterEmptyState',\n importPath: '@open-mercato/ui/backend/filters/FilterEmptyState',\n variants: [\n {\n id: 'default',\n title: 'Default (panel empty state of AdvancedFilterPanel)',\n render: () => <DemoFilterEmptyState />,\n code: `import { FilterEmptyState } from '@open-mercato/ui/backend/filters/FilterEmptyState'\n\n<FilterEmptyState onAddCondition={openFieldPicker} addConditionRef={addConditionRef} />`,\n },\n {\n id: 'with-quick-filters',\n title: 'With quick filters slot',\n render: () => <DemoFilterEmptyState withQuickFilters />,\n code: `import { FilterEmptyState } from '@open-mercato/ui/backend/filters/FilterEmptyState'\nimport { QuickFilters } from '@open-mercato/ui/backend/filters/QuickFilters'\n\n<FilterEmptyState\n onAddCondition={openFieldPicker}\n addConditionRef={addConditionRef}\n quickFilters={<QuickFilters presets={presets} userId={userId} onApply={applyTree} />}\n/>`,\n },\n ],\n}\n\nconst listEmptyStateEntry: GalleryEntry = {\n id: 'list-empty-state',\n title: 'ListEmptyState',\n importPath: '@open-mercato/ui/backend/filters/ListEmptyState',\n variants: [\n {\n id: 'with-create-action',\n title: 'With create action',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <ListEmptyState entityName=\"companies\" onCreate={() => {}} createLabel=\"Add company\" />\n </div>\n ),\n code: `import { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'\n\n// Pass to DataTable's emptyState for the zero-records case.\n<ListEmptyState entityName=\"companies\" createHref=\"/backend/customers/companies/create\" createLabel=\"Add company\" />`,\n },\n {\n id: 'custom-copy',\n title: 'Custom title and description',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <ListEmptyState\n title=\"No imports yet\"\n description=\"Connect a source or upload a CSV file to bring records in.\"\n />\n </div>\n ),\n code: `import { ListEmptyState } from '@open-mercato/ui/backend/filters/ListEmptyState'\n\n<ListEmptyState\n title=\"No imports yet\"\n description=\"Connect a source or upload a CSV file to bring records in.\"\n/>`,\n },\n ],\n}\n\nconst filteredEmptyResultsEntry: GalleryEntry = {\n id: 'filtered-empty-results',\n title: 'FilteredEmptyResults',\n importPath: '@open-mercato/ui/backend/filters/FilteredEmptyResults',\n variants: [\n {\n id: 'filters-only',\n title: 'Filters active',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast\n onClearAll={() => {}}\n onRemoveLast={() => {}}\n />\n </div>\n ),\n code: `import { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'\n\n// DataTable renders this automatically when filters match nothing.\n<FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast={tree.root.children.length > 0}\n onClearAll={clearFilters}\n onRemoveLast={removeLastFilter}\n/>`,\n },\n {\n id: 'with-search',\n title: 'Search and filters active',\n render: () => (\n <div className=\"w-full max-w-xl\">\n <FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast\n onClearAll={() => {}}\n onRemoveLast={() => {}}\n onClearSearch={() => {}}\n />\n </div>\n ),\n code: `import { FilteredEmptyResults } from '@open-mercato/ui/backend/filters/FilteredEmptyResults'\n\n// Passing onClearSearch switches to combined copy and clears both at once.\n<FilteredEmptyResults\n entityNamePlural=\"companies\"\n canRemoveLast\n onClearAll={clearFilters}\n onRemoveLast={removeLastFilter}\n onClearSearch={clearSearch}\n/>`,\n },\n ],\n}\n\nconst searchEmptyResultsEntry: GalleryEntry = {\n id: 'search-empty-results',\n title: 'SearchEmptyResults',\n importPath: '@open-mercato/ui/backend/filters/SearchEmptyResults',\n variants: [\n {\n id: 'default',\n title: 'Default',\n render: () => (\n <div className=\"flex w-full max-w-xl justify-center\">\n <SearchEmptyResults query=\"northwind\" onClearSearch={() => {}} />\n </div>\n ),\n code: `import { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'\n\n// DataTable renders this automatically when a search matches nothing.\n<SearchEmptyResults query={search} onClearSearch={() => setSearch('')} />`,\n },\n {\n id: 'with-entity',\n title: 'With entity label',\n render: () => (\n <div className=\"flex w-full max-w-xl justify-center\">\n <SearchEmptyResults\n query=\"northwind\"\n entityNamePlural=\"companies\"\n onClearSearch={() => {}}\n />\n </div>\n ),\n code: `import { SearchEmptyResults } from '@open-mercato/ui/backend/filters/SearchEmptyResults'\n\n<SearchEmptyResults query={search} entityNamePlural=\"companies\" onClearSearch={() => setSearch('')} />`,\n },\n ],\n}\n\nexport const entries: GalleryEntry[] = [\n filterBarEntry,\n quickFiltersEntry,\n activeFilterChipsEntry,\n advancedFilterBuilderEntry,\n filterEmptyStateEntry,\n listEmptyStateEntry,\n filteredEmptyResultsEntry,\n searchEmptyResultsEntry,\n]\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,453 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Circle } from "lucide-react";
|
|
4
|
+
import { flash } from "@open-mercato/ui/backend/FlashMessages";
|
|
5
|
+
const TOKENS_IMPORT = "apps/mercato/src/app/globals.css";
|
|
6
|
+
const FIGMA_COLORS_NODE = "553:14956";
|
|
7
|
+
function SwatchCard({ copyText, label, children }) {
|
|
8
|
+
const onCopy = React.useCallback(async () => {
|
|
9
|
+
try {
|
|
10
|
+
await navigator.clipboard.writeText(copyText);
|
|
11
|
+
flash(`${copyText} copied`, "success");
|
|
12
|
+
} catch {
|
|
13
|
+
flash("Could not copy the token", "error");
|
|
14
|
+
}
|
|
15
|
+
}, [copyText]);
|
|
16
|
+
return /* @__PURE__ */ jsxs(
|
|
17
|
+
"button",
|
|
18
|
+
{
|
|
19
|
+
type: "button",
|
|
20
|
+
onClick: onCopy,
|
|
21
|
+
className: "flex w-36 flex-col items-start gap-1 rounded-md border border-border bg-background p-2 text-left transition-colors hover:bg-muted/40 focus-visible:outline-none focus-visible:shadow-focus",
|
|
22
|
+
title: `Copy ${copyText}`,
|
|
23
|
+
children: [
|
|
24
|
+
children,
|
|
25
|
+
/* @__PURE__ */ jsx("code", { className: "break-all text-[11px] leading-tight text-muted-foreground", children: label })
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
function TokenSwatch({ tokenClass, label }) {
|
|
31
|
+
return /* @__PURE__ */ jsx(SwatchCard, { copyText: label, label, children: /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: `h-10 w-full rounded-sm border border-border ${tokenClass}` }) });
|
|
32
|
+
}
|
|
33
|
+
function TextSwatch({ textClass, label }) {
|
|
34
|
+
return /* @__PURE__ */ jsx(SwatchCard, { copyText: textClass, label, children: /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "flex h-10 w-full items-center justify-center rounded-sm border border-border bg-background", children: /* @__PURE__ */ jsx("span", { className: `text-xl font-semibold leading-none ${textClass}`, children: "Aa" }) }) });
|
|
35
|
+
}
|
|
36
|
+
function BorderSwatch({ borderClass, label }) {
|
|
37
|
+
return /* @__PURE__ */ jsx(SwatchCard, { copyText: borderClass, label, children: /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: `h-10 w-full rounded-sm border-2 bg-background ${borderClass}` }) });
|
|
38
|
+
}
|
|
39
|
+
function IconSwatch({ iconClass, label }) {
|
|
40
|
+
return /* @__PURE__ */ jsx(SwatchCard, { copyText: iconClass, label, children: /* @__PURE__ */ jsx("span", { "aria-hidden": true, className: "flex h-10 w-full items-center justify-center rounded-sm border border-border bg-background", children: /* @__PURE__ */ jsx(Circle, { className: `size-4 fill-current ${iconClass}` }) }) });
|
|
41
|
+
}
|
|
42
|
+
function SwatchRow({ items }) {
|
|
43
|
+
return /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: items.map((item) => /* @__PURE__ */ jsx(TokenSwatch, { tokenClass: item.tokenClass, label: item.label }, item.label)) });
|
|
44
|
+
}
|
|
45
|
+
const brandColorsEntry = {
|
|
46
|
+
id: "brand-colors",
|
|
47
|
+
title: "Brand colors",
|
|
48
|
+
importPath: TOKENS_IMPORT,
|
|
49
|
+
usage: {
|
|
50
|
+
do: ["brand-violet 10/30/100 pattern (bg/border/text) for proposed and feature accents."],
|
|
51
|
+
dont: ["Never theme or repurpose accent-indigo \u2014 it is the selection-control contract."]
|
|
52
|
+
},
|
|
53
|
+
figmaNodeId: FIGMA_COLORS_NODE,
|
|
54
|
+
variants: [
|
|
55
|
+
{
|
|
56
|
+
id: "gradient",
|
|
57
|
+
title: "gradient 135\xB0",
|
|
58
|
+
render: () => /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
59
|
+
/* @__PURE__ */ jsx(
|
|
60
|
+
"div",
|
|
61
|
+
{
|
|
62
|
+
"aria-hidden": true,
|
|
63
|
+
className: "h-16 w-full max-w-md rounded-md border border-border bg-linear-135 from-brand-lime from-0% via-brand-yellow via-35% to-brand-violet to-70%"
|
|
64
|
+
}
|
|
65
|
+
),
|
|
66
|
+
/* @__PURE__ */ jsx("code", { className: "text-xs text-muted-foreground", children: "brand-lime 0%, brand-yellow 35%, brand-violet 70%" })
|
|
67
|
+
] }),
|
|
68
|
+
code: `<div className="bg-linear-135 from-brand-lime from-0% via-brand-yellow via-35% to-brand-violet to-70%" />`
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: "identity",
|
|
72
|
+
title: "identity",
|
|
73
|
+
render: () => /* @__PURE__ */ jsx(
|
|
74
|
+
SwatchRow,
|
|
75
|
+
{
|
|
76
|
+
items: [
|
|
77
|
+
{ tokenClass: "bg-brand-lime", label: "brand-lime" },
|
|
78
|
+
{ tokenClass: "bg-brand-yellow", label: "brand-yellow" },
|
|
79
|
+
{ tokenClass: "bg-brand-violet", label: "brand-violet" },
|
|
80
|
+
{ tokenClass: "bg-brand-violet-foreground", label: "brand-violet-foreground" },
|
|
81
|
+
{ tokenClass: "bg-accent-indigo", label: "accent-indigo" }
|
|
82
|
+
]
|
|
83
|
+
}
|
|
84
|
+
),
|
|
85
|
+
code: `<span className="bg-brand-violet/10 border-brand-violet/30 text-brand-violet" />`
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "social",
|
|
89
|
+
title: "social",
|
|
90
|
+
render: () => /* @__PURE__ */ jsx(
|
|
91
|
+
SwatchRow,
|
|
92
|
+
{
|
|
93
|
+
items: [
|
|
94
|
+
{ tokenClass: "bg-brand-apple", label: "brand-apple" },
|
|
95
|
+
{ tokenClass: "bg-brand-github", label: "brand-github" },
|
|
96
|
+
{ tokenClass: "bg-brand-facebook", label: "brand-facebook" },
|
|
97
|
+
{ tokenClass: "bg-brand-dropbox", label: "brand-dropbox" },
|
|
98
|
+
{ tokenClass: "bg-brand-linkedin", label: "brand-linkedin" },
|
|
99
|
+
{ tokenClass: "bg-brand-x", label: "brand-x" }
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
),
|
|
103
|
+
code: `<SocialButton provider="github" />`
|
|
104
|
+
}
|
|
105
|
+
]
|
|
106
|
+
};
|
|
107
|
+
const colorTokensEntry = {
|
|
108
|
+
id: "color-tokens",
|
|
109
|
+
title: "Color tokens",
|
|
110
|
+
importPath: TOKENS_IMPORT,
|
|
111
|
+
usage: {
|
|
112
|
+
do: ["Pair every surface with its -foreground counterpart.", "Borders come from border-border / border-input \u2014 nothing else."],
|
|
113
|
+
dont: ["Never border-gray-* or any raw palette shade."]
|
|
114
|
+
},
|
|
115
|
+
figmaNodeId: FIGMA_COLORS_NODE,
|
|
116
|
+
variants: [
|
|
117
|
+
{
|
|
118
|
+
id: "primary",
|
|
119
|
+
title: "primary",
|
|
120
|
+
render: () => /* @__PURE__ */ jsx(
|
|
121
|
+
SwatchRow,
|
|
122
|
+
{
|
|
123
|
+
items: [
|
|
124
|
+
{ tokenClass: "bg-primary", label: "primary" },
|
|
125
|
+
{ tokenClass: "bg-primary-foreground", label: "primary-foreground" },
|
|
126
|
+
{ tokenClass: "bg-primary-hover", label: "primary-hover" },
|
|
127
|
+
{ tokenClass: "bg-destructive", label: "destructive" }
|
|
128
|
+
]
|
|
129
|
+
}
|
|
130
|
+
),
|
|
131
|
+
code: `<div className="bg-primary text-primary-foreground hover:bg-primary-hover" />`
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
id: "background",
|
|
135
|
+
title: "background (bg)",
|
|
136
|
+
render: () => /* @__PURE__ */ jsx(
|
|
137
|
+
SwatchRow,
|
|
138
|
+
{
|
|
139
|
+
items: [
|
|
140
|
+
{ tokenClass: "bg-background", label: "background" },
|
|
141
|
+
{ tokenClass: "bg-card", label: "card" },
|
|
142
|
+
{ tokenClass: "bg-popover", label: "popover" },
|
|
143
|
+
{ tokenClass: "bg-muted", label: "muted" },
|
|
144
|
+
{ tokenClass: "bg-accent", label: "accent" },
|
|
145
|
+
{ tokenClass: "bg-sidebar", label: "sidebar" },
|
|
146
|
+
{ tokenClass: "bg-bg-disabled", label: "bg-disabled" }
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
),
|
|
150
|
+
code: `<div className="bg-card text-card-foreground" />`
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
id: "text",
|
|
154
|
+
title: "text",
|
|
155
|
+
render: () => /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-2", children: [
|
|
156
|
+
/* @__PURE__ */ jsx(TextSwatch, { textClass: "text-foreground", label: "text-foreground" }),
|
|
157
|
+
/* @__PURE__ */ jsx(TextSwatch, { textClass: "text-muted-foreground", label: "text-muted-foreground" }),
|
|
158
|
+
/* @__PURE__ */ jsx(TextSwatch, { textClass: "text-card-foreground", label: "text-card-foreground" }),
|
|
159
|
+
/* @__PURE__ */ jsx(TextSwatch, { textClass: "text-accent-foreground", label: "text-accent-foreground" }),
|
|
160
|
+
/* @__PURE__ */ jsx(TextSwatch, { textClass: "text-text-disabled", label: "text-text-disabled" })
|
|
161
|
+
] }),
|
|
162
|
+
code: `<p className="text-muted-foreground">Secondary copy</p>`
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
id: "stroke",
|
|
166
|
+
title: "stroke",
|
|
167
|
+
render: () => /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-2", children: [
|
|
168
|
+
/* @__PURE__ */ jsx(BorderSwatch, { borderClass: "border-border", label: "border-border" }),
|
|
169
|
+
/* @__PURE__ */ jsx(BorderSwatch, { borderClass: "border-input", label: "border-input" }),
|
|
170
|
+
/* @__PURE__ */ jsx(BorderSwatch, { borderClass: "border-ring", label: "border-ring" }),
|
|
171
|
+
/* @__PURE__ */ jsx(BorderSwatch, { borderClass: "border-border-disabled", label: "border-border-disabled" })
|
|
172
|
+
] }),
|
|
173
|
+
code: `<div className="border-border focus-visible:ring-ring" />`
|
|
174
|
+
}
|
|
175
|
+
]
|
|
176
|
+
};
|
|
177
|
+
const FIGMA_STATE_TO_CODE = [
|
|
178
|
+
{ figma: "Faded", status: "neutral", chipLabel: "Neutral", bg: "bg-status-neutral-bg", text: "text-status-neutral-text", border: "border-status-neutral-border", icon: "text-status-neutral-icon", dot: "bg-status-neutral-icon" },
|
|
179
|
+
{ figma: "Information", status: "info", chipLabel: "Info", bg: "bg-status-info-bg", text: "text-status-info-text", border: "border-status-info-border", icon: "text-status-info-icon", dot: "bg-status-info-icon" },
|
|
180
|
+
{ figma: "Warning", status: "warning", chipLabel: "Warning", bg: "bg-status-warning-bg", text: "text-status-warning-text", border: "border-status-warning-border", icon: "text-status-warning-icon", dot: "bg-status-warning-icon" },
|
|
181
|
+
{ figma: "Error", status: "error", chipLabel: "Error", bg: "bg-status-error-bg", text: "text-status-error-text", border: "border-status-error-border", icon: "text-status-error-icon", dot: "bg-status-error-icon" },
|
|
182
|
+
{ figma: "Success", status: "success", chipLabel: "Success", bg: "bg-status-success-bg", text: "text-status-success-text", border: "border-status-success-border", icon: "text-status-success-icon", dot: "bg-status-success-icon" },
|
|
183
|
+
{ figma: "Highlighted", status: "pink", chipLabel: "Highlighted", bg: "bg-status-pink-bg", text: "text-status-pink-text", border: "border-status-pink-border", icon: "text-status-pink-icon", dot: "bg-status-pink-icon" }
|
|
184
|
+
];
|
|
185
|
+
function StatusFamilyPreview({ family }) {
|
|
186
|
+
return /* @__PURE__ */ jsxs("div", { className: "space-y-3", children: [
|
|
187
|
+
/* @__PURE__ */ jsxs(
|
|
188
|
+
"span",
|
|
189
|
+
{
|
|
190
|
+
className: `inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-sm font-medium ${family.bg} ${family.text} ${family.border}`,
|
|
191
|
+
children: [
|
|
192
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: `size-2 rounded-full ${family.dot}` }),
|
|
193
|
+
family.chipLabel
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
),
|
|
197
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-2", children: [
|
|
198
|
+
/* @__PURE__ */ jsx(TokenSwatch, { tokenClass: family.bg, label: family.bg }),
|
|
199
|
+
/* @__PURE__ */ jsx(TextSwatch, { textClass: family.text, label: family.text }),
|
|
200
|
+
/* @__PURE__ */ jsx(BorderSwatch, { borderClass: family.border, label: family.border }),
|
|
201
|
+
/* @__PURE__ */ jsx(IconSwatch, { iconClass: family.icon, label: family.icon })
|
|
202
|
+
] })
|
|
203
|
+
] });
|
|
204
|
+
}
|
|
205
|
+
const stateTokensEntry = {
|
|
206
|
+
id: "state-tokens",
|
|
207
|
+
title: "State color tokens",
|
|
208
|
+
importPath: TOKENS_IMPORT,
|
|
209
|
+
usage: {
|
|
210
|
+
do: [
|
|
211
|
+
"Pair -bg with -text of the same family \u2014 the shades are contrast-tested together.",
|
|
212
|
+
"-icon for glyphs and dots, -border for outlines; both handle dark mode themselves."
|
|
213
|
+
],
|
|
214
|
+
dont: [
|
|
215
|
+
"Never hardcode Tailwind status colors (text-red-*, bg-green-*, text-amber-*).",
|
|
216
|
+
"No dark: overrides on status tokens \u2014 they already theme."
|
|
217
|
+
]
|
|
218
|
+
},
|
|
219
|
+
figmaNodeId: FIGMA_COLORS_NODE,
|
|
220
|
+
variants: [
|
|
221
|
+
...FIGMA_STATE_TO_CODE.map((family) => ({
|
|
222
|
+
id: family.status,
|
|
223
|
+
title: `${family.figma} \u2192 status-${family.status}`,
|
|
224
|
+
render: () => /* @__PURE__ */ jsx(StatusFamilyPreview, { family }),
|
|
225
|
+
code: `<span className="${family.bg} ${family.text} ${family.border}" />`
|
|
226
|
+
})),
|
|
227
|
+
{
|
|
228
|
+
id: "feature",
|
|
229
|
+
title: "Feature \u2192 brand-violet pattern",
|
|
230
|
+
render: () => /* @__PURE__ */ jsx("div", { className: "flex max-w-md items-center gap-2 rounded-md border border-brand-violet/30 bg-brand-violet/10 p-3 text-sm text-brand-violet", children: "Feature state uses the brand-violet 10/30/100 pattern, not a status family." }),
|
|
231
|
+
code: `<Alert status="feature" />`
|
|
232
|
+
}
|
|
233
|
+
]
|
|
234
|
+
};
|
|
235
|
+
const chartPaletteEntry = {
|
|
236
|
+
id: "chart-palette",
|
|
237
|
+
title: "Chart palette",
|
|
238
|
+
importPath: TOKENS_IMPORT,
|
|
239
|
+
usage: {
|
|
240
|
+
dont: [
|
|
241
|
+
"Never build token class names dynamically (`bg-chart-${n}`) \u2014 the Tailwind scanner only sees complete literals, so the class is silently never generated."
|
|
242
|
+
]
|
|
243
|
+
},
|
|
244
|
+
variants: [
|
|
245
|
+
{
|
|
246
|
+
id: "numbered",
|
|
247
|
+
title: "numbered",
|
|
248
|
+
render: () => /* @__PURE__ */ jsx(
|
|
249
|
+
SwatchRow,
|
|
250
|
+
{
|
|
251
|
+
items: [
|
|
252
|
+
{ tokenClass: "bg-chart-1", label: "chart-1" },
|
|
253
|
+
{ tokenClass: "bg-chart-2", label: "chart-2" },
|
|
254
|
+
{ tokenClass: "bg-chart-3", label: "chart-3" },
|
|
255
|
+
{ tokenClass: "bg-chart-4", label: "chart-4" },
|
|
256
|
+
{ tokenClass: "bg-chart-5", label: "chart-5" }
|
|
257
|
+
]
|
|
258
|
+
}
|
|
259
|
+
),
|
|
260
|
+
code: `<BarChart data={data} />`
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
id: "named",
|
|
264
|
+
title: "named",
|
|
265
|
+
render: () => /* @__PURE__ */ jsx(
|
|
266
|
+
SwatchRow,
|
|
267
|
+
{
|
|
268
|
+
items: [
|
|
269
|
+
{ tokenClass: "bg-chart-blue", label: "chart-blue" },
|
|
270
|
+
{ tokenClass: "bg-chart-emerald", label: "chart-emerald" },
|
|
271
|
+
{ tokenClass: "bg-chart-amber", label: "chart-amber" },
|
|
272
|
+
{ tokenClass: "bg-chart-rose", label: "chart-rose" },
|
|
273
|
+
{ tokenClass: "bg-chart-violet", label: "chart-violet" },
|
|
274
|
+
{ tokenClass: "bg-chart-cyan", label: "chart-cyan" },
|
|
275
|
+
{ tokenClass: "bg-chart-indigo", label: "chart-indigo" },
|
|
276
|
+
{ tokenClass: "bg-chart-pink", label: "chart-pink" },
|
|
277
|
+
{ tokenClass: "bg-chart-teal", label: "chart-teal" },
|
|
278
|
+
{ tokenClass: "bg-chart-orange", label: "chart-orange" }
|
|
279
|
+
]
|
|
280
|
+
}
|
|
281
|
+
),
|
|
282
|
+
code: `<Sparkline className="text-chart-blue" data={points} />`
|
|
283
|
+
}
|
|
284
|
+
]
|
|
285
|
+
};
|
|
286
|
+
function RoleCard({ role }) {
|
|
287
|
+
const label = `${role.surface} / ${role.onSurface}`;
|
|
288
|
+
const onCopy = React.useCallback(async () => {
|
|
289
|
+
try {
|
|
290
|
+
await navigator.clipboard.writeText(`${role.surfaceCls} ${role.onSurfaceCls}`);
|
|
291
|
+
flash(`${role.surfaceCls} ${role.onSurfaceCls} copied`, "success");
|
|
292
|
+
} catch {
|
|
293
|
+
flash("Could not copy the classes", "error");
|
|
294
|
+
}
|
|
295
|
+
}, [role]);
|
|
296
|
+
return /* @__PURE__ */ jsxs(
|
|
297
|
+
"button",
|
|
298
|
+
{
|
|
299
|
+
type: "button",
|
|
300
|
+
onClick: onCopy,
|
|
301
|
+
title: `Copy ${role.surfaceCls} ${role.onSurfaceCls}`,
|
|
302
|
+
className: `flex h-24 w-full flex-col justify-between rounded-md border p-3 text-left transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:shadow-focus ${role.surfaceCls} ${role.onSurfaceCls} ${role.borderCls ?? "border-border"}`,
|
|
303
|
+
children: [
|
|
304
|
+
/* @__PURE__ */ jsx("span", { className: "text-sm font-medium leading-tight", children: role.surface }),
|
|
305
|
+
/* @__PURE__ */ jsx("code", { className: "text-xs opacity-80", children: role.onSurface })
|
|
306
|
+
]
|
|
307
|
+
}
|
|
308
|
+
);
|
|
309
|
+
}
|
|
310
|
+
function RoleGrid({ roles }) {
|
|
311
|
+
return /* @__PURE__ */ jsx("div", { className: "grid w-full gap-2 sm:grid-cols-2 lg:grid-cols-3", children: roles.map((role) => /* @__PURE__ */ jsx(RoleCard, { role }, role.surface + role.onSurface)) });
|
|
312
|
+
}
|
|
313
|
+
const colorRolesEntry = {
|
|
314
|
+
id: "color-roles",
|
|
315
|
+
title: "Color roles",
|
|
316
|
+
importPath: TOKENS_IMPORT,
|
|
317
|
+
figmaNodeId: FIGMA_COLORS_NODE,
|
|
318
|
+
keywords: ["roles", "pairs", "on-color", "material"],
|
|
319
|
+
usage: {
|
|
320
|
+
do: [
|
|
321
|
+
"A role is a surface paired with its content color \u2014 always use them together, never mix pairs.",
|
|
322
|
+
"Click a card to copy both classes of the pair."
|
|
323
|
+
],
|
|
324
|
+
dont: [
|
|
325
|
+
"Never put foreground on a surface from a different pair \u2014 contrast is only tested within a pair.",
|
|
326
|
+
"Never use a -foreground token as a standalone accent color."
|
|
327
|
+
]
|
|
328
|
+
},
|
|
329
|
+
variants: [
|
|
330
|
+
{
|
|
331
|
+
id: "action",
|
|
332
|
+
title: "action",
|
|
333
|
+
render: () => /* @__PURE__ */ jsx(
|
|
334
|
+
RoleGrid,
|
|
335
|
+
{
|
|
336
|
+
roles: [
|
|
337
|
+
{ surface: "primary", onSurface: "primary-foreground", surfaceCls: "bg-primary", onSurfaceCls: "text-primary-foreground" },
|
|
338
|
+
{ surface: "destructive", onSurface: "white", surfaceCls: "bg-destructive", onSurfaceCls: "text-white" },
|
|
339
|
+
{ surface: "brand-violet", onSurface: "brand-violet-foreground", surfaceCls: "bg-brand-violet", onSurfaceCls: "text-brand-violet-foreground" },
|
|
340
|
+
{ surface: "accent-indigo", onSurface: "accent-indigo-foreground", surfaceCls: "bg-accent-indigo", onSurfaceCls: "text-accent-indigo-foreground" }
|
|
341
|
+
]
|
|
342
|
+
}
|
|
343
|
+
),
|
|
344
|
+
code: `<button className="bg-primary text-primary-foreground" />`
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
id: "surfaces",
|
|
348
|
+
title: "surfaces",
|
|
349
|
+
render: () => /* @__PURE__ */ jsx(
|
|
350
|
+
RoleGrid,
|
|
351
|
+
{
|
|
352
|
+
roles: [
|
|
353
|
+
{ surface: "background", onSurface: "foreground", surfaceCls: "bg-background", onSurfaceCls: "text-foreground" },
|
|
354
|
+
{ surface: "card", onSurface: "card-foreground", surfaceCls: "bg-card", onSurfaceCls: "text-card-foreground" },
|
|
355
|
+
{ surface: "popover", onSurface: "popover-foreground", surfaceCls: "bg-popover", onSurfaceCls: "text-popover-foreground" },
|
|
356
|
+
{ surface: "muted", onSurface: "muted-foreground", surfaceCls: "bg-muted", onSurfaceCls: "text-muted-foreground" },
|
|
357
|
+
{ surface: "accent", onSurface: "accent-foreground", surfaceCls: "bg-accent", onSurfaceCls: "text-accent-foreground" },
|
|
358
|
+
{ surface: "sidebar", onSurface: "sidebar-foreground", surfaceCls: "bg-sidebar", onSurfaceCls: "text-sidebar-foreground" }
|
|
359
|
+
]
|
|
360
|
+
}
|
|
361
|
+
),
|
|
362
|
+
code: `<div className="bg-card text-card-foreground" />`
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
id: "status",
|
|
366
|
+
title: "status",
|
|
367
|
+
render: () => /* @__PURE__ */ jsx(
|
|
368
|
+
RoleGrid,
|
|
369
|
+
{
|
|
370
|
+
roles: ["error", "success", "warning", "info", "neutral", "pink"].map((status) => ({
|
|
371
|
+
surface: `status-${status}-bg`,
|
|
372
|
+
onSurface: `status-${status}-text`,
|
|
373
|
+
surfaceCls: `bg-status-${status}-bg`,
|
|
374
|
+
onSurfaceCls: `text-status-${status}-text`,
|
|
375
|
+
borderCls: `border-status-${status}-border`
|
|
376
|
+
}))
|
|
377
|
+
}
|
|
378
|
+
),
|
|
379
|
+
code: `<span className="bg-status-error-bg text-status-error-text border-status-error-border" />`
|
|
380
|
+
}
|
|
381
|
+
]
|
|
382
|
+
};
|
|
383
|
+
const RADIUS_SCALE = [
|
|
384
|
+
{ cls: "rounded-none", label: "rounded-none", px: "0px" },
|
|
385
|
+
{ cls: "rounded-sm", label: "rounded-sm", px: "6px" },
|
|
386
|
+
{ cls: "rounded-md", label: "rounded-md", px: "8px" },
|
|
387
|
+
{ cls: "rounded-lg", label: "rounded-lg", px: "10px" },
|
|
388
|
+
{ cls: "rounded-xl", label: "rounded-xl", px: "16px" },
|
|
389
|
+
{ cls: "rounded-full", label: "rounded-full", px: "999px" }
|
|
390
|
+
];
|
|
391
|
+
function RadiusCard({ cls, label, px }) {
|
|
392
|
+
const onCopy = React.useCallback(async () => {
|
|
393
|
+
try {
|
|
394
|
+
await navigator.clipboard.writeText(label);
|
|
395
|
+
flash(`${label} copied`, "success");
|
|
396
|
+
} catch {
|
|
397
|
+
flash("Could not copy the class", "error");
|
|
398
|
+
}
|
|
399
|
+
}, [label]);
|
|
400
|
+
return /* @__PURE__ */ jsxs(
|
|
401
|
+
"button",
|
|
402
|
+
{
|
|
403
|
+
type: "button",
|
|
404
|
+
onClick: onCopy,
|
|
405
|
+
title: `Copy ${label}`,
|
|
406
|
+
className: "flex w-36 flex-col items-start gap-2 rounded-md border border-border bg-background p-2 text-left transition-colors hover:bg-muted/40",
|
|
407
|
+
children: [
|
|
408
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": true, className: `h-14 w-full border-2 border-dashed border-status-pink-icon bg-status-pink-bg ${cls}` }),
|
|
409
|
+
/* @__PURE__ */ jsxs("span", { className: "space-y-0.5", children: [
|
|
410
|
+
/* @__PURE__ */ jsx("code", { className: "block text-xs text-foreground", children: label }),
|
|
411
|
+
/* @__PURE__ */ jsx("span", { className: "block text-xs text-muted-foreground", children: px })
|
|
412
|
+
] })
|
|
413
|
+
]
|
|
414
|
+
}
|
|
415
|
+
);
|
|
416
|
+
}
|
|
417
|
+
const radiusEntry = {
|
|
418
|
+
id: "corner-radius",
|
|
419
|
+
title: "Corner radius",
|
|
420
|
+
importPath: TOKENS_IMPORT,
|
|
421
|
+
keywords: ["radius", "rounded", "border-radius", "corners"],
|
|
422
|
+
usage: {
|
|
423
|
+
do: [
|
|
424
|
+
"The scale derives from the --radius base token (10px): sm 6px, md 8px, lg 10px, xl 16px.",
|
|
425
|
+
"Cards and panels use rounded-lg; controls, chips and filter buttons use rounded-md.",
|
|
426
|
+
"rounded-full is reserved for Badge, Tag, SegmentedControl, Avatar and status dots."
|
|
427
|
+
],
|
|
428
|
+
dont: [
|
|
429
|
+
"No arbitrary values (rounded-[24px]) \u2014 pick from the scale.",
|
|
430
|
+
"No full-pill radii on filter chips or custom controls outside the reserved primitives."
|
|
431
|
+
]
|
|
432
|
+
},
|
|
433
|
+
variants: [
|
|
434
|
+
{
|
|
435
|
+
id: "scale",
|
|
436
|
+
title: "scale",
|
|
437
|
+
render: () => /* @__PURE__ */ jsx("div", { className: "flex flex-wrap gap-2", children: RADIUS_SCALE.map((item) => /* @__PURE__ */ jsx(RadiusCard, { ...item }, item.cls)) }),
|
|
438
|
+
code: `<div className="rounded-lg border border-border" />`
|
|
439
|
+
}
|
|
440
|
+
]
|
|
441
|
+
};
|
|
442
|
+
const entries = [
|
|
443
|
+
brandColorsEntry,
|
|
444
|
+
colorRolesEntry,
|
|
445
|
+
colorTokensEntry,
|
|
446
|
+
stateTokensEntry,
|
|
447
|
+
chartPaletteEntry,
|
|
448
|
+
radiusEntry
|
|
449
|
+
];
|
|
450
|
+
export {
|
|
451
|
+
entries
|
|
452
|
+
};
|
|
453
|
+
//# sourceMappingURL=foundations.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../../src/modules/design_system/gallery/entries/foundations.tsx"],
|
|
4
|
+
"sourcesContent": ["import * as React from 'react'\nimport { Circle } from 'lucide-react'\nimport { flash } from '@open-mercato/ui/backend/FlashMessages'\nimport type { GalleryEntry } from '../types'\n\n// Token names are proper nouns from the codebase and are deliberately not\n// translated. Structure mirrors the DS Figma color-system sheet (node\n// 553:14956): Brand Colors \u2192 Color Tokens by role \u2192 State Color Tokens.\n// Figma state names map to code tokens per the contract documented in\n// globals.css: state/{x}/base\u2192icon, /light\u2192border, /lighter\u2192bg.\n\nconst TOKENS_IMPORT = 'apps/mercato/src/app/globals.css'\nconst FIGMA_COLORS_NODE = '553:14956'\n\nfunction SwatchCard({ copyText, label, children }: { copyText: string; label: string; children: React.ReactNode }) {\n const onCopy = React.useCallback(async () => {\n try {\n await navigator.clipboard.writeText(copyText)\n flash(`${copyText} copied`, 'success')\n } catch {\n flash('Could not copy the token', 'error')\n }\n }, [copyText])\n return (\n <button\n type=\"button\"\n onClick={onCopy}\n className=\"flex w-36 flex-col items-start gap-1 rounded-md border border-border bg-background p-2 text-left transition-colors hover:bg-muted/40 focus-visible:outline-none focus-visible:shadow-focus\"\n title={`Copy ${copyText}`}\n >\n {children}\n <code className=\"break-all text-[11px] leading-tight text-muted-foreground\">{label}</code>\n </button>\n )\n}\n\nfunction TokenSwatch({ tokenClass, label }: { tokenClass: string; label: string }) {\n return (\n <SwatchCard copyText={label} label={label}>\n <span aria-hidden className={`h-10 w-full rounded-sm border border-border ${tokenClass}`} />\n </SwatchCard>\n )\n}\n\n// A text-color token shown in its actual role \u2014 as type, not as a fill.\nfunction TextSwatch({ textClass, label }: { textClass: string; label: string }) {\n return (\n <SwatchCard copyText={textClass} label={label}>\n <span aria-hidden className=\"flex h-10 w-full items-center justify-center rounded-sm border border-border bg-background\">\n <span className={`text-xl font-semibold leading-none ${textClass}`}>Aa</span>\n </span>\n </SwatchCard>\n )\n}\n\n// A border-color token shown as a 2px outline on the neutral surface.\nfunction BorderSwatch({ borderClass, label }: { borderClass: string; label: string }) {\n return (\n <SwatchCard copyText={borderClass} label={label}>\n <span aria-hidden className={`h-10 w-full rounded-sm border-2 bg-background ${borderClass}`} />\n </SwatchCard>\n )\n}\n\n// An icon-color token shown on a real glyph.\nfunction IconSwatch({ iconClass, label }: { iconClass: string; label: string }) {\n return (\n <SwatchCard copyText={iconClass} label={label}>\n <span aria-hidden className=\"flex h-10 w-full items-center justify-center rounded-sm border border-border bg-background\">\n <Circle className={`size-4 fill-current ${iconClass}`} />\n </span>\n </SwatchCard>\n )\n}\n\nfunction SwatchRow({ items }: { items: Array<{ tokenClass: string; label: string }> }) {\n return (\n <div className=\"flex flex-wrap gap-2\">\n {items.map((item) => (\n <TokenSwatch key={item.label} tokenClass={item.tokenClass} label={item.label} />\n ))}\n </div>\n )\n}\n\nconst brandColorsEntry: GalleryEntry = {\n id: 'brand-colors',\n title: 'Brand colors',\n importPath: TOKENS_IMPORT,\n usage: {\n do: ['brand-violet 10/30/100 pattern (bg/border/text) for proposed and feature accents.'],\n dont: ['Never theme or repurpose accent-indigo \u2014 it is the selection-control contract.'],\n },\n figmaNodeId: FIGMA_COLORS_NODE,\n variants: [\n {\n id: 'gradient',\n title: 'gradient 135\u00B0',\n render: () => (\n <div className=\"space-y-2\">\n <div\n aria-hidden\n className=\"h-16 w-full max-w-md rounded-md border border-border bg-linear-135 from-brand-lime from-0% via-brand-yellow via-35% to-brand-violet to-70%\"\n />\n <code className=\"text-xs text-muted-foreground\">brand-lime 0%, brand-yellow 35%, brand-violet 70%</code>\n </div>\n ),\n code: `<div className=\"bg-linear-135 from-brand-lime from-0% via-brand-yellow via-35% to-brand-violet to-70%\" />`,\n },\n {\n id: 'identity',\n title: 'identity',\n render: () => (\n <SwatchRow\n items={[\n { tokenClass: 'bg-brand-lime', label: 'brand-lime' },\n { tokenClass: 'bg-brand-yellow', label: 'brand-yellow' },\n { tokenClass: 'bg-brand-violet', label: 'brand-violet' },\n { tokenClass: 'bg-brand-violet-foreground', label: 'brand-violet-foreground' },\n { tokenClass: 'bg-accent-indigo', label: 'accent-indigo' },\n ]}\n />\n ),\n code: `<span className=\"bg-brand-violet/10 border-brand-violet/30 text-brand-violet\" />`,\n },\n {\n id: 'social',\n title: 'social',\n render: () => (\n <SwatchRow\n items={[\n { tokenClass: 'bg-brand-apple', label: 'brand-apple' },\n { tokenClass: 'bg-brand-github', label: 'brand-github' },\n { tokenClass: 'bg-brand-facebook', label: 'brand-facebook' },\n { tokenClass: 'bg-brand-dropbox', label: 'brand-dropbox' },\n { tokenClass: 'bg-brand-linkedin', label: 'brand-linkedin' },\n { tokenClass: 'bg-brand-x', label: 'brand-x' },\n ]}\n />\n ),\n code: `<SocialButton provider=\"github\" />`,\n },\n ],\n}\n\nconst colorTokensEntry: GalleryEntry = {\n id: 'color-tokens',\n title: 'Color tokens',\n importPath: TOKENS_IMPORT,\n usage: {\n do: ['Pair every surface with its -foreground counterpart.', 'Borders come from border-border / border-input \u2014 nothing else.'],\n dont: ['Never border-gray-* or any raw palette shade.'],\n },\n figmaNodeId: FIGMA_COLORS_NODE,\n variants: [\n {\n id: 'primary',\n title: 'primary',\n render: () => (\n <SwatchRow\n items={[\n { tokenClass: 'bg-primary', label: 'primary' },\n { tokenClass: 'bg-primary-foreground', label: 'primary-foreground' },\n { tokenClass: 'bg-primary-hover', label: 'primary-hover' },\n { tokenClass: 'bg-destructive', label: 'destructive' },\n ]}\n />\n ),\n code: `<div className=\"bg-primary text-primary-foreground hover:bg-primary-hover\" />`,\n },\n {\n id: 'background',\n title: 'background (bg)',\n render: () => (\n <SwatchRow\n items={[\n { tokenClass: 'bg-background', label: 'background' },\n { tokenClass: 'bg-card', label: 'card' },\n { tokenClass: 'bg-popover', label: 'popover' },\n { tokenClass: 'bg-muted', label: 'muted' },\n { tokenClass: 'bg-accent', label: 'accent' },\n { tokenClass: 'bg-sidebar', label: 'sidebar' },\n { tokenClass: 'bg-bg-disabled', label: 'bg-disabled' },\n ]}\n />\n ),\n code: `<div className=\"bg-card text-card-foreground\" />`,\n },\n {\n id: 'text',\n title: 'text',\n render: () => (\n <div className=\"flex flex-wrap gap-2\">\n <TextSwatch textClass=\"text-foreground\" label=\"text-foreground\" />\n <TextSwatch textClass=\"text-muted-foreground\" label=\"text-muted-foreground\" />\n <TextSwatch textClass=\"text-card-foreground\" label=\"text-card-foreground\" />\n <TextSwatch textClass=\"text-accent-foreground\" label=\"text-accent-foreground\" />\n <TextSwatch textClass=\"text-text-disabled\" label=\"text-text-disabled\" />\n </div>\n ),\n code: `<p className=\"text-muted-foreground\">Secondary copy</p>`,\n },\n {\n id: 'stroke',\n title: 'stroke',\n render: () => (\n <div className=\"flex flex-wrap gap-2\">\n <BorderSwatch borderClass=\"border-border\" label=\"border-border\" />\n <BorderSwatch borderClass=\"border-input\" label=\"border-input\" />\n <BorderSwatch borderClass=\"border-ring\" label=\"border-ring\" />\n <BorderSwatch borderClass=\"border-border-disabled\" label=\"border-border-disabled\" />\n </div>\n ),\n code: `<div className=\"border-border focus-visible:ring-ring\" />`,\n },\n ],\n}\n\n// Literal class strings on purpose: the Tailwind scanner only sees complete\n// literals, so `bg-status-${x}` variants would silently never be generated.\ntype StatusFamily = {\n figma: string\n status: string\n chipLabel: string\n bg: string\n text: string\n border: string\n icon: string\n dot: string\n}\n\nconst FIGMA_STATE_TO_CODE: StatusFamily[] = [\n { figma: 'Faded', status: 'neutral', chipLabel: 'Neutral', bg: 'bg-status-neutral-bg', text: 'text-status-neutral-text', border: 'border-status-neutral-border', icon: 'text-status-neutral-icon', dot: 'bg-status-neutral-icon' },\n { figma: 'Information', status: 'info', chipLabel: 'Info', bg: 'bg-status-info-bg', text: 'text-status-info-text', border: 'border-status-info-border', icon: 'text-status-info-icon', dot: 'bg-status-info-icon' },\n { figma: 'Warning', status: 'warning', chipLabel: 'Warning', bg: 'bg-status-warning-bg', text: 'text-status-warning-text', border: 'border-status-warning-border', icon: 'text-status-warning-icon', dot: 'bg-status-warning-icon' },\n { figma: 'Error', status: 'error', chipLabel: 'Error', bg: 'bg-status-error-bg', text: 'text-status-error-text', border: 'border-status-error-border', icon: 'text-status-error-icon', dot: 'bg-status-error-icon' },\n { figma: 'Success', status: 'success', chipLabel: 'Success', bg: 'bg-status-success-bg', text: 'text-status-success-text', border: 'border-status-success-border', icon: 'text-status-success-icon', dot: 'bg-status-success-icon' },\n { figma: 'Highlighted', status: 'pink', chipLabel: 'Highlighted', bg: 'bg-status-pink-bg', text: 'text-status-pink-text', border: 'border-status-pink-border', icon: 'text-status-pink-icon', dot: 'bg-status-pink-icon' },\n]\n\n// One status family: the composed chip first (how the roles work together),\n// then each token presented in its actual role.\nfunction StatusFamilyPreview({ family }: { family: StatusFamily }) {\n return (\n <div className=\"space-y-3\">\n <span\n className={`inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-sm font-medium ${family.bg} ${family.text} ${family.border}`}\n >\n <span aria-hidden className={`size-2 rounded-full ${family.dot}`} />\n {family.chipLabel}\n </span>\n <div className=\"flex flex-wrap gap-2\">\n <TokenSwatch tokenClass={family.bg} label={family.bg} />\n <TextSwatch textClass={family.text} label={family.text} />\n <BorderSwatch borderClass={family.border} label={family.border} />\n <IconSwatch iconClass={family.icon} label={family.icon} />\n </div>\n </div>\n )\n}\n\nconst stateTokensEntry: GalleryEntry = {\n id: 'state-tokens',\n title: 'State color tokens',\n importPath: TOKENS_IMPORT,\n usage: {\n do: [\n 'Pair -bg with -text of the same family \u2014 the shades are contrast-tested together.',\n '-icon for glyphs and dots, -border for outlines; both handle dark mode themselves.',\n ],\n dont: [\n 'Never hardcode Tailwind status colors (text-red-*, bg-green-*, text-amber-*).',\n 'No dark: overrides on status tokens \u2014 they already theme.',\n ],\n },\n figmaNodeId: FIGMA_COLORS_NODE,\n variants: [\n ...FIGMA_STATE_TO_CODE.map((family) => ({\n id: family.status,\n title: `${family.figma} \u2192 status-${family.status}`,\n render: () => <StatusFamilyPreview family={family} />,\n code: `<span className=\"${family.bg} ${family.text} ${family.border}\" />`,\n })),\n {\n id: 'feature',\n title: 'Feature \u2192 brand-violet pattern',\n render: () => (\n <div className=\"flex max-w-md items-center gap-2 rounded-md border border-brand-violet/30 bg-brand-violet/10 p-3 text-sm text-brand-violet\">\n Feature state uses the brand-violet 10/30/100 pattern, not a status family.\n </div>\n ),\n code: `<Alert status=\"feature\" />`,\n },\n ],\n}\n\nconst chartPaletteEntry: GalleryEntry = {\n id: 'chart-palette',\n title: 'Chart palette',\n importPath: TOKENS_IMPORT,\n usage: {\n dont: [\n 'Never build token class names dynamically (`bg-chart-${n}`) \u2014 the Tailwind scanner only sees complete literals, so the class is silently never generated.',\n ],\n },\n variants: [\n {\n id: 'numbered',\n title: 'numbered',\n render: () => (\n <SwatchRow\n items={[\n { tokenClass: 'bg-chart-1', label: 'chart-1' },\n { tokenClass: 'bg-chart-2', label: 'chart-2' },\n { tokenClass: 'bg-chart-3', label: 'chart-3' },\n { tokenClass: 'bg-chart-4', label: 'chart-4' },\n { tokenClass: 'bg-chart-5', label: 'chart-5' },\n ]}\n />\n ),\n code: `<BarChart data={data} />`,\n },\n {\n id: 'named',\n title: 'named',\n render: () => (\n <SwatchRow\n items={[\n { tokenClass: 'bg-chart-blue', label: 'chart-blue' },\n { tokenClass: 'bg-chart-emerald', label: 'chart-emerald' },\n { tokenClass: 'bg-chart-amber', label: 'chart-amber' },\n { tokenClass: 'bg-chart-rose', label: 'chart-rose' },\n { tokenClass: 'bg-chart-violet', label: 'chart-violet' },\n { tokenClass: 'bg-chart-cyan', label: 'chart-cyan' },\n { tokenClass: 'bg-chart-indigo', label: 'chart-indigo' },\n { tokenClass: 'bg-chart-pink', label: 'chart-pink' },\n { tokenClass: 'bg-chart-teal', label: 'chart-teal' },\n { tokenClass: 'bg-chart-orange', label: 'chart-orange' },\n ]}\n />\n ),\n code: `<Sparkline className=\"text-chart-blue\" data={points} />`,\n },\n ],\n}\n\ntype ColorRole = {\n surface: string\n onSurface: string\n surfaceCls: string\n onSurfaceCls: string\n borderCls?: string\n}\n\nfunction RoleCard({ role }: { role: ColorRole }) {\n const label = `${role.surface} / ${role.onSurface}`\n const onCopy = React.useCallback(async () => {\n try {\n await navigator.clipboard.writeText(`${role.surfaceCls} ${role.onSurfaceCls}`)\n flash(`${role.surfaceCls} ${role.onSurfaceCls} copied`, 'success')\n } catch {\n flash('Could not copy the classes', 'error')\n }\n }, [role])\n return (\n <button\n type=\"button\"\n onClick={onCopy}\n title={`Copy ${role.surfaceCls} ${role.onSurfaceCls}`}\n className={`flex h-24 w-full flex-col justify-between rounded-md border p-3 text-left transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:shadow-focus ${role.surfaceCls} ${role.onSurfaceCls} ${role.borderCls ?? 'border-border'}`}\n >\n <span className=\"text-sm font-medium leading-tight\">{role.surface}</span>\n <code className=\"text-xs opacity-80\">{role.onSurface}</code>\n </button>\n )\n}\n\nfunction RoleGrid({ roles }: { roles: ColorRole[] }) {\n return (\n <div className=\"grid w-full gap-2 sm:grid-cols-2 lg:grid-cols-3\">\n {roles.map((role) => (\n <RoleCard key={role.surface + role.onSurface} role={role} />\n ))}\n </div>\n )\n}\n\nconst colorRolesEntry: GalleryEntry = {\n id: 'color-roles',\n title: 'Color roles',\n importPath: TOKENS_IMPORT,\n figmaNodeId: FIGMA_COLORS_NODE,\n keywords: ['roles', 'pairs', 'on-color', 'material'],\n usage: {\n do: [\n 'A role is a surface paired with its content color \u2014 always use them together, never mix pairs.',\n 'Click a card to copy both classes of the pair.',\n ],\n dont: [\n 'Never put foreground on a surface from a different pair \u2014 contrast is only tested within a pair.',\n 'Never use a -foreground token as a standalone accent color.',\n ],\n },\n variants: [\n {\n id: 'action',\n title: 'action',\n render: () => (\n <RoleGrid\n roles={[\n { surface: 'primary', onSurface: 'primary-foreground', surfaceCls: 'bg-primary', onSurfaceCls: 'text-primary-foreground' },\n { surface: 'destructive', onSurface: 'white', surfaceCls: 'bg-destructive', onSurfaceCls: 'text-white' },\n { surface: 'brand-violet', onSurface: 'brand-violet-foreground', surfaceCls: 'bg-brand-violet', onSurfaceCls: 'text-brand-violet-foreground' },\n { surface: 'accent-indigo', onSurface: 'accent-indigo-foreground', surfaceCls: 'bg-accent-indigo', onSurfaceCls: 'text-accent-indigo-foreground' },\n ]}\n />\n ),\n code: `<button className=\"bg-primary text-primary-foreground\" />`,\n },\n {\n id: 'surfaces',\n title: 'surfaces',\n render: () => (\n <RoleGrid\n roles={[\n { surface: 'background', onSurface: 'foreground', surfaceCls: 'bg-background', onSurfaceCls: 'text-foreground' },\n { surface: 'card', onSurface: 'card-foreground', surfaceCls: 'bg-card', onSurfaceCls: 'text-card-foreground' },\n { surface: 'popover', onSurface: 'popover-foreground', surfaceCls: 'bg-popover', onSurfaceCls: 'text-popover-foreground' },\n { surface: 'muted', onSurface: 'muted-foreground', surfaceCls: 'bg-muted', onSurfaceCls: 'text-muted-foreground' },\n { surface: 'accent', onSurface: 'accent-foreground', surfaceCls: 'bg-accent', onSurfaceCls: 'text-accent-foreground' },\n { surface: 'sidebar', onSurface: 'sidebar-foreground', surfaceCls: 'bg-sidebar', onSurfaceCls: 'text-sidebar-foreground' },\n ]}\n />\n ),\n code: `<div className=\"bg-card text-card-foreground\" />`,\n },\n {\n id: 'status',\n title: 'status',\n render: () => (\n <RoleGrid\n roles={['error', 'success', 'warning', 'info', 'neutral', 'pink'].map((status) => ({\n surface: `status-${status}-bg`,\n onSurface: `status-${status}-text`,\n surfaceCls: `bg-status-${status}-bg`,\n onSurfaceCls: `text-status-${status}-text`,\n borderCls: `border-status-${status}-border`,\n }))}\n />\n ),\n code: `<span className=\"bg-status-error-bg text-status-error-text border-status-error-border\" />`,\n },\n ],\n}\n\nconst RADIUS_SCALE: Array<{ cls: string; label: string; px: string }> = [\n { cls: 'rounded-none', label: 'rounded-none', px: '0px' },\n { cls: 'rounded-sm', label: 'rounded-sm', px: '6px' },\n { cls: 'rounded-md', label: 'rounded-md', px: '8px' },\n { cls: 'rounded-lg', label: 'rounded-lg', px: '10px' },\n { cls: 'rounded-xl', label: 'rounded-xl', px: '16px' },\n { cls: 'rounded-full', label: 'rounded-full', px: '999px' },\n]\n\nfunction RadiusCard({ cls, label, px }: { cls: string; label: string; px: string }) {\n const onCopy = React.useCallback(async () => {\n try {\n await navigator.clipboard.writeText(label)\n flash(`${label} copied`, 'success')\n } catch {\n flash('Could not copy the class', 'error')\n }\n }, [label])\n return (\n <button\n type=\"button\"\n onClick={onCopy}\n title={`Copy ${label}`}\n className=\"flex w-36 flex-col items-start gap-2 rounded-md border border-border bg-background p-2 text-left transition-colors hover:bg-muted/40\"\n >\n <span aria-hidden className={`h-14 w-full border-2 border-dashed border-status-pink-icon bg-status-pink-bg ${cls}`} />\n <span className=\"space-y-0.5\">\n <code className=\"block text-xs text-foreground\">{label}</code>\n <span className=\"block text-xs text-muted-foreground\">{px}</span>\n </span>\n </button>\n )\n}\n\nconst radiusEntry: GalleryEntry = {\n id: 'corner-radius',\n title: 'Corner radius',\n importPath: TOKENS_IMPORT,\n keywords: ['radius', 'rounded', 'border-radius', 'corners'],\n usage: {\n do: [\n 'The scale derives from the --radius base token (10px): sm 6px, md 8px, lg 10px, xl 16px.',\n 'Cards and panels use rounded-lg; controls, chips and filter buttons use rounded-md.',\n 'rounded-full is reserved for Badge, Tag, SegmentedControl, Avatar and status dots.',\n ],\n dont: [\n 'No arbitrary values (rounded-[24px]) \u2014 pick from the scale.',\n 'No full-pill radii on filter chips or custom controls outside the reserved primitives.',\n ],\n },\n variants: [\n {\n id: 'scale',\n title: 'scale',\n render: () => (\n <div className=\"flex flex-wrap gap-2\">\n {RADIUS_SCALE.map((item) => (\n <RadiusCard key={item.cls} {...item} />\n ))}\n </div>\n ),\n code: `<div className=\"rounded-lg border border-border\" />`,\n },\n ],\n}\n\nexport const entries: GalleryEntry[] = [\n brandColorsEntry,\n colorRolesEntry,\n colorTokensEntry,\n stateTokensEntry,\n chartPaletteEntry,\n radiusEntry,\n]\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|