@carlonicora/nextjs-jsonapi 3.8.2 → 3.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/dist/{BlockNoteEditor-KRGDA5RX.js → BlockNoteEditor-4UAIVF3G.js} +19 -19
  2. package/dist/{BlockNoteEditor-KRGDA5RX.js.map → BlockNoteEditor-4UAIVF3G.js.map} +1 -1
  3. package/dist/BlockNoteEditor-K55A4FS2.css +30 -0
  4. package/dist/BlockNoteEditor-K55A4FS2.css.map +1 -0
  5. package/dist/{BlockNoteEditor-34AZITDR.mjs → BlockNoteEditor-PFCHUFTD.mjs} +4 -4
  6. package/dist/{BlockNoteViewer-6N2GQWTI.js → BlockNoteViewer-C2UUOBAF.js} +17 -3
  7. package/dist/BlockNoteViewer-C2UUOBAF.js.map +1 -0
  8. package/dist/{BlockNoteViewer-IBQRJ3WM.mjs → BlockNoteViewer-TYLVTIUD.mjs} +17 -3
  9. package/dist/BlockNoteViewer-TYLVTIUD.mjs.map +1 -0
  10. package/dist/billing/index.css +22 -21
  11. package/dist/billing/index.css.map +1 -1
  12. package/dist/billing/index.js +398 -398
  13. package/dist/billing/index.mjs +3 -3
  14. package/dist/{chunk-DGAVM2LZ.js → chunk-46CQ3RRQ.js} +1315 -1069
  15. package/dist/chunk-46CQ3RRQ.js.map +1 -0
  16. package/dist/{chunk-UYLS3LJW.js → chunk-6J2SQZ3G.js} +11 -1
  17. package/dist/chunk-6J2SQZ3G.js.map +1 -0
  18. package/dist/{chunk-2D4MFVDV.mjs → chunk-IMSIVIIC.mjs} +2 -2
  19. package/dist/{chunk-HDZ2BL6D.mjs → chunk-M5QAHSCY.mjs} +11 -1
  20. package/dist/{chunk-HDZ2BL6D.mjs.map → chunk-M5QAHSCY.mjs.map} +1 -1
  21. package/dist/{chunk-TULJCLZA.js → chunk-V6CGCARD.js} +7 -7
  22. package/dist/{chunk-TULJCLZA.js.map → chunk-V6CGCARD.js.map} +1 -1
  23. package/dist/{chunk-GXSXD4OR.mjs → chunk-XZJJ4SZW.mjs} +2073 -1827
  24. package/dist/chunk-XZJJ4SZW.mjs.map +1 -0
  25. package/dist/client/index.css +22 -21
  26. package/dist/client/index.css.map +1 -1
  27. package/dist/client/index.js +4 -4
  28. package/dist/client/index.mjs +3 -3
  29. package/dist/components/index.css +22 -21
  30. package/dist/components/index.css.map +1 -1
  31. package/dist/components/index.d.mts +77 -15
  32. package/dist/components/index.d.ts +77 -15
  33. package/dist/components/index.js +8 -4
  34. package/dist/components/index.js.map +1 -1
  35. package/dist/components/index.mjs +7 -3
  36. package/dist/contexts/index.css +22 -21
  37. package/dist/contexts/index.css.map +1 -1
  38. package/dist/contexts/index.d.mts +17 -4
  39. package/dist/contexts/index.d.ts +17 -4
  40. package/dist/contexts/index.js +10 -4
  41. package/dist/contexts/index.js.map +1 -1
  42. package/dist/contexts/index.mjs +9 -3
  43. package/dist/core/index.d.mts +13 -0
  44. package/dist/core/index.d.ts +13 -0
  45. package/dist/core/index.js +2 -2
  46. package/dist/core/index.mjs +1 -1
  47. package/dist/features/help/index.css +22 -21
  48. package/dist/features/help/index.css.map +1 -1
  49. package/dist/features/help/index.d.mts +6 -1
  50. package/dist/features/help/index.d.ts +6 -1
  51. package/dist/features/help/index.js +39 -38
  52. package/dist/features/help/index.js.map +1 -1
  53. package/dist/features/help/index.mjs +4 -3
  54. package/dist/features/tokenusage/index.css +22 -21
  55. package/dist/features/tokenusage/index.css.map +1 -1
  56. package/dist/features/tokenusage/index.js +102 -102
  57. package/dist/features/tokenusage/index.js.map +1 -1
  58. package/dist/features/tokenusage/index.mjs +4 -4
  59. package/dist/features/tokenusage/index.mjs.map +1 -1
  60. package/dist/index.js +3 -3
  61. package/dist/index.mjs +2 -2
  62. package/dist/{onboarding.interface-Djyl9qYu.d.mts → onboarding.interface-DVUOUC4y.d.mts} +4 -1
  63. package/dist/{onboarding.interface-Djyl9qYu.d.ts → onboarding.interface-DVUOUC4y.d.ts} +4 -1
  64. package/dist/server/index.js +3 -3
  65. package/dist/server/index.mjs +1 -1
  66. package/package.json +2 -2
  67. package/src/components/containers/RoundPageContainer.tsx +38 -16
  68. package/src/components/containers/RoundPageContainerTitle.tsx +11 -3
  69. package/src/components/containers/TabsContainer.tsx +11 -0
  70. package/src/components/forms/CommonDeleter.tsx +14 -1
  71. package/src/components/forms/EditorSheet.tsx +66 -47
  72. package/src/components/grids/ContentListGrid.tsx +1 -1
  73. package/src/components/navigations/MobileNavigationBar.tsx +1 -0
  74. package/src/components/tables/ContentListTable.tsx +1 -1
  75. package/src/components/tables/ContentTableSearch.tsx +1 -0
  76. package/src/components/viewers/BlockNoteViewer.tsx +13 -2
  77. package/src/components/viewers/BlockNoteViewerContainer.tsx +4 -1
  78. package/src/contexts/ActionBarContext.tsx +23 -0
  79. package/src/contexts/index.ts +1 -0
  80. package/src/features/assistant/components/index.ts +2 -0
  81. package/src/features/assistant/components/parts/AssistantComposer.tsx +1 -1
  82. package/src/features/assistant/components/parts/__tests__/AssistantComposer.spec.tsx +2 -2
  83. package/src/features/assistant-action/components/ApprovalActionCard.tsx +325 -4
  84. package/src/features/assistant-action/components/__tests__/ApprovalActionCard.spec.tsx +268 -0
  85. package/src/features/assistant-action/data/AssistantAction.ts +12 -0
  86. package/src/features/assistant-action/data/AssistantActionInterface.ts +9 -0
  87. package/src/features/assistant-action/data/__tests__/AssistantAction.spec.ts +11 -0
  88. package/src/features/help/index.ts +1 -0
  89. package/src/features/onboarding/components/OnboardingCard.tsx +1 -2
  90. package/src/features/onboarding/contexts/OnboardingContext.spec.tsx +191 -0
  91. package/src/features/onboarding/contexts/OnboardingContext.tsx +176 -125
  92. package/src/features/onboarding/interfaces/onboarding.interface.ts +4 -0
  93. package/src/features/onboarding/styles/onboarding.css +25 -30
  94. package/src/features/tokenusage/components/TokenUsageReportFilterBar.tsx +1 -1
  95. package/src/shadcnui/ui/command.tsx +9 -0
  96. package/dist/BlockNoteEditor-YOAJRPWU.css +0 -29
  97. package/dist/BlockNoteEditor-YOAJRPWU.css.map +0 -1
  98. package/dist/BlockNoteViewer-6N2GQWTI.js.map +0 -1
  99. package/dist/BlockNoteViewer-IBQRJ3WM.mjs.map +0 -1
  100. package/dist/chunk-DGAVM2LZ.js.map +0 -1
  101. package/dist/chunk-GXSXD4OR.mjs.map +0 -1
  102. package/dist/chunk-UYLS3LJW.js.map +0 -1
  103. /package/dist/{BlockNoteEditor-34AZITDR.mjs.map → BlockNoteEditor-PFCHUFTD.mjs.map} +0 -0
  104. /package/dist/{chunk-2D4MFVDV.mjs.map → chunk-IMSIVIIC.mjs.map} +0 -0
package/dist/index.js CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- var _chunkTULJCLZAjs = require('./chunk-TULJCLZA.js');
21
+ var _chunkV6CGCARDjs = require('./chunk-V6CGCARD.js');
22
22
 
23
23
 
24
24
 
@@ -226,7 +226,7 @@ var _chunkTULJCLZAjs = require('./chunk-TULJCLZA.js');
226
226
 
227
227
 
228
228
 
229
- var _chunkUYLS3LJWjs = require('./chunk-UYLS3LJW.js');
229
+ var _chunk6J2SQZ3Gjs = require('./chunk-6J2SQZ3G.js');
230
230
  require('./chunk-LXKSUWAV.js');
231
231
  require('./chunk-IBS6NI7D.js');
232
232
 
@@ -479,5 +479,5 @@ require('./chunk-7QVYU63E.js');
479
479
 
480
480
 
481
481
 
482
- exports.ACTION_TYPES = _chunkTULJCLZAjs.ACTION_TYPES; exports.AVAILABLE_OAUTH_SCOPES = _chunkUYLS3LJWjs.AVAILABLE_OAUTH_SCOPES; exports.AbstractApiData = _chunkUYLS3LJWjs.AbstractApiData; exports.AbstractService = _chunkUYLS3LJWjs.AbstractService; exports.Action = _chunkUYLS3LJWjs.Action; exports.AiConnection = _chunkUYLS3LJWjs.AiConnection; exports.AiConnectionFields = _chunkUYLS3LJWjs.AiConnectionFields; exports.AiConnectionModule = _chunkUYLS3LJWjs.AiConnectionModule; exports.AiConnectionService = _chunkUYLS3LJWjs.AiConnectionService; exports.Assistant = _chunkUYLS3LJWjs.Assistant; exports.AssistantAction = _chunkUYLS3LJWjs.AssistantAction; exports.AssistantActionModule = _chunkUYLS3LJWjs.AssistantActionModule; exports.AssistantActionService = _chunkUYLS3LJWjs.AssistantActionService; exports.AssistantMessage = _chunkUYLS3LJWjs.AssistantMessage; exports.AssistantMessageModule = _chunkUYLS3LJWjs.AssistantMessageModule; exports.AssistantMessageService = _chunkUYLS3LJWjs.AssistantMessageService; exports.AssistantModule = _chunkUYLS3LJWjs.AssistantModule; exports.AssistantService = _chunkUYLS3LJWjs.AssistantService; exports.AuditLog = _chunkUYLS3LJWjs.AuditLog; exports.AuditLogModule = _chunkUYLS3LJWjs.AuditLogModule; exports.AuditLogService = _chunkUYLS3LJWjs.AuditLogService; exports.Auth = _chunkUYLS3LJWjs.Auth; exports.AuthComponent = _chunkUYLS3LJWjs.AuthComponent; exports.AuthModule = _chunkUYLS3LJWjs.AuthModule; exports.AuthService = _chunkUYLS3LJWjs.AuthService; exports.AuthorModule = _chunkUYLS3LJWjs.AuthorModule; exports.BackupCodeVerify = _chunkUYLS3LJWjs.BackupCodeVerify; exports.BackupCodeVerifyModule = _chunkUYLS3LJWjs.BackupCodeVerifyModule; exports.Billing = _chunkUYLS3LJWjs.Billing; exports.BillingModule = _chunkUYLS3LJWjs.BillingModule; exports.BillingService = _chunkUYLS3LJWjs.BillingService; exports.BlockNoteDiffUtil = _chunkUYLS3LJWjs.BlockNoteDiffUtil; exports.BlockNoteWordDiffRendererUtil = _chunkUYLS3LJWjs.BlockNoteWordDiffRendererUtil; exports.COMPANY_ADMINISTRATOR_ROLE_ID = _chunkTULJCLZAjs.COMPANY_ADMINISTRATOR_ROLE_ID; exports.CURRENT_USER_STORAGE_KEY = _chunkUYLS3LJWjs.CURRENT_USER_STORAGE_KEY; exports.Chunk = _chunkUYLS3LJWjs.Chunk; exports.ChunkModule = _chunkUYLS3LJWjs.ChunkModule; exports.ClientAbstractService = _chunkUYLS3LJWjs.ClientAbstractService; exports.ClientHttpMethod = _chunkUYLS3LJWjs.ClientHttpMethod; exports.Company = _chunkUYLS3LJWjs.Company; exports.CompanyFields = _chunkUYLS3LJWjs.CompanyFields; exports.CompanyModule = _chunkUYLS3LJWjs.CompanyModule; exports.CompanyService = _chunkUYLS3LJWjs.CompanyService; exports.Content = _chunkUYLS3LJWjs.Content; exports.ContentFields = _chunkUYLS3LJWjs.ContentFields; exports.ContentModule = _chunkUYLS3LJWjs.ContentModule; exports.ContentService = _chunkUYLS3LJWjs.ContentService; exports.DEFAULT_GRANT_TYPES = _chunkUYLS3LJWjs.DEFAULT_GRANT_TYPES; exports.DataClass = _chunkLU7DJ4QFjs.DataClassRegistry; exports.DataClassRegistry = _chunkLU7DJ4QFjs.DataClassRegistry; exports.ENV = _chunkLU7DJ4QFjs.ENV; exports.EndpointCreator = _chunkUYLS3LJWjs.EndpointCreator; exports.EntityAiStatus = _chunkUYLS3LJWjs.EntityAiStatus; exports.Feature = _chunkUYLS3LJWjs.Feature; exports.FeatureModule = _chunkUYLS3LJWjs.FeatureModule; exports.FeatureService = _chunkUYLS3LJWjs.FeatureService; exports.HowTo = _chunkUYLS3LJWjs.HowTo; exports.HowToFields = _chunkUYLS3LJWjs.HowToFields; exports.HowToModule = _chunkUYLS3LJWjs.HowToModule; exports.HowToService = _chunkUYLS3LJWjs.HowToService; exports.HttpMethod = _chunkUYLS3LJWjs.HttpMethod; exports.InvoiceStatus = _chunkUYLS3LJWjs.InvoiceStatus; exports.JsonApiDataFactory = _chunkLU7DJ4QFjs.JsonApiDataFactory; exports.MOBILE_BREAKPOINT = _chunkUYLS3LJWjs.MOBILE_BREAKPOINT; exports.Module = _chunkUYLS3LJWjs.Module; exports.ModuleModule = _chunkUYLS3LJWjs.ModuleModule; exports.ModulePaths = _chunkUYLS3LJWjs.ModulePaths; exports.ModulePathsModule = _chunkUYLS3LJWjs.ModulePathsModule; exports.ModuleRegistrar = _chunkUYLS3LJWjs.ModuleRegistrar; exports.ModuleRegistry = _chunkUYLS3LJWjs.ModuleRegistry; exports.Modules = _chunkUYLS3LJWjs.Modules; exports.Notification = _chunkUYLS3LJWjs.Notification; exports.NotificationFields = _chunkUYLS3LJWjs.NotificationFields; exports.NotificationModule = _chunkUYLS3LJWjs.NotificationModule; exports.NotificationService = _chunkUYLS3LJWjs.NotificationService; exports.OAUTH_SCOPE_DISPLAY = _chunkUYLS3LJWjs.OAUTH_SCOPE_DISPLAY; exports.OAuthClient = _chunkUYLS3LJWjs.OAuthClient; exports.OAuthModule = _chunkUYLS3LJWjs.OAuthModule; exports.OAuthService = _chunkUYLS3LJWjs.OAuthService; exports.Passkey = _chunkUYLS3LJWjs.Passkey; exports.PasskeyAuthenticationOptions = _chunkUYLS3LJWjs.PasskeyAuthenticationOptions; exports.PasskeyAuthenticationOptionsModule = _chunkUYLS3LJWjs.PasskeyAuthenticationOptionsModule; exports.PasskeyModule = _chunkUYLS3LJWjs.PasskeyModule; exports.PasskeyRegistrationOptions = _chunkUYLS3LJWjs.PasskeyRegistrationOptions; exports.PasskeyRegistrationOptionsModule = _chunkUYLS3LJWjs.PasskeyRegistrationOptionsModule; exports.PasskeyRegistrationVerify = _chunkUYLS3LJWjs.PasskeyRegistrationVerify; exports.PasskeyRegistrationVerifyModule = _chunkUYLS3LJWjs.PasskeyRegistrationVerifyModule; exports.PasskeyRename = _chunkUYLS3LJWjs.PasskeyRename; exports.PasskeyRenameModule = _chunkUYLS3LJWjs.PasskeyRenameModule; exports.PasskeyVerifyLogin = _chunkUYLS3LJWjs.PasskeyVerifyLogin; exports.PasskeyVerifyLoginModule = _chunkUYLS3LJWjs.PasskeyVerifyLoginModule; exports.PaymentMethod = _chunkUYLS3LJWjs.PaymentMethod; exports.PermissionMapping = _chunkUYLS3LJWjs.PermissionMapping; exports.PermissionMappingModule = _chunkUYLS3LJWjs.PermissionMappingModule; exports.Push = _chunkUYLS3LJWjs.Push; exports.PushModule = _chunkUYLS3LJWjs.PushModule; exports.PushService = _chunkUYLS3LJWjs.PushService; exports.RbacMatrixModel = _chunkUYLS3LJWjs.RbacMatrixModel; exports.RbacMatrixModule = _chunkUYLS3LJWjs.RbacMatrixModule; exports.RbacService = _chunkTULJCLZAjs.RbacService; exports.ReferralModule = _chunkUYLS3LJWjs.ReferralModule; exports.ReferralService = _chunkUYLS3LJWjs.ReferralService; exports.ReferralStats = _chunkUYLS3LJWjs.ReferralStats; exports.ReferralStatsModule = _chunkUYLS3LJWjs.ReferralStatsModule; exports.RehydrationFactory = _chunkUYLS3LJWjs.RehydrationFactory; exports.Role = _chunkUYLS3LJWjs.Role; exports.RoleFields = _chunkUYLS3LJWjs.RoleFields; exports.RoleModule = _chunkUYLS3LJWjs.RoleModule; exports.RoleService = _chunkUYLS3LJWjs.RoleService; exports.S3 = _chunkUYLS3LJWjs.S3; exports.S3Module = _chunkUYLS3LJWjs.S3Module; exports.S3Service = _chunkUYLS3LJWjs.S3Service; exports.StripeCustomer = _chunkUYLS3LJWjs.StripeCustomer; exports.StripeCustomerModule = _chunkUYLS3LJWjs.StripeCustomerModule; exports.StripeCustomerService = _chunkUYLS3LJWjs.StripeCustomerService; exports.StripeInvoice = _chunkUYLS3LJWjs.StripeInvoice; exports.StripeInvoiceModule = _chunkUYLS3LJWjs.StripeInvoiceModule; exports.StripeInvoiceService = _chunkUYLS3LJWjs.StripeInvoiceService; exports.StripePaymentMethodModule = _chunkUYLS3LJWjs.StripePaymentMethodModule; exports.StripePrice = _chunkUYLS3LJWjs.StripePrice; exports.StripePriceFields = _chunkUYLS3LJWjs.StripePriceFields; exports.StripePriceModule = _chunkUYLS3LJWjs.StripePriceModule; exports.StripePriceService = _chunkUYLS3LJWjs.StripePriceService; exports.StripeProduct = _chunkUYLS3LJWjs.StripeProduct; exports.StripeProductFields = _chunkUYLS3LJWjs.StripeProductFields; exports.StripeProductModule = _chunkUYLS3LJWjs.StripeProductModule; exports.StripeProductService = _chunkUYLS3LJWjs.StripeProductService; exports.StripePromotionCode = _chunkUYLS3LJWjs.StripePromotionCode; exports.StripePromotionCodeModule = _chunkUYLS3LJWjs.StripePromotionCodeModule; exports.StripePromotionCodeService = _chunkUYLS3LJWjs.StripePromotionCodeService; exports.StripeSubscription = _chunkUYLS3LJWjs.StripeSubscription; exports.StripeSubscriptionModule = _chunkUYLS3LJWjs.StripeSubscriptionModule; exports.StripeSubscriptionService = _chunkUYLS3LJWjs.StripeSubscriptionService; exports.StripeUsage = _chunkUYLS3LJWjs.StripeUsage; exports.StripeUsageModule = _chunkUYLS3LJWjs.StripeUsageModule; exports.StripeUsageService = _chunkUYLS3LJWjs.StripeUsageService; exports.SubscriptionStatus = _chunkUYLS3LJWjs.SubscriptionStatus; exports.TableOptions = _chunkUYLS3LJWjs.TableOptions; exports.TokenUsageAdminBreakdownModule = _chunkUYLS3LJWjs.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminSummaryModule = _chunkUYLS3LJWjs.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTimelineModule = _chunkUYLS3LJWjs.TokenUsageAdminTimelineModule; exports.TotpAuthenticator = _chunkUYLS3LJWjs.TotpAuthenticator; exports.TotpAuthenticatorModule = _chunkUYLS3LJWjs.TotpAuthenticatorModule; exports.TotpSetup = _chunkUYLS3LJWjs.TotpSetup; exports.TotpSetupModule = _chunkUYLS3LJWjs.TotpSetupModule; exports.TotpVerify = _chunkUYLS3LJWjs.TotpVerify; exports.TotpVerifyLogin = _chunkUYLS3LJWjs.TotpVerifyLogin; exports.TotpVerifyLoginModule = _chunkUYLS3LJWjs.TotpVerifyLoginModule; exports.TotpVerifyModule = _chunkUYLS3LJWjs.TotpVerifyModule; exports.TwoFactorChallenge = _chunkUYLS3LJWjs.TwoFactorChallenge; exports.TwoFactorChallengeModule = _chunkUYLS3LJWjs.TwoFactorChallengeModule; exports.TwoFactorEnable = _chunkUYLS3LJWjs.TwoFactorEnable; exports.TwoFactorEnableModule = _chunkUYLS3LJWjs.TwoFactorEnableModule; exports.TwoFactorService = _chunkUYLS3LJWjs.TwoFactorService; exports.TwoFactorStatus = _chunkUYLS3LJWjs.TwoFactorStatus; exports.TwoFactorStatusModule = _chunkUYLS3LJWjs.TwoFactorStatusModule; exports.User = _chunkUYLS3LJWjs.User; exports.UserFields = _chunkUYLS3LJWjs.UserFields; exports.UserModule = _chunkUYLS3LJWjs.UserModule; exports.UserService = _chunkUYLS3LJWjs.UserService; exports.VIEWPORT_COOKIE_NAME = _chunkUYLS3LJWjs.VIEWPORT_COOKIE_NAME; exports.Waitlist = _chunkUYLS3LJWjs.Waitlist; exports.WaitlistModule = _chunkUYLS3LJWjs.WaitlistModule; exports.WaitlistService = _chunkUYLS3LJWjs.WaitlistService; exports.WaitlistStats = _chunkUYLS3LJWjs.WaitlistStats; exports.WaitlistStatsModule = _chunkUYLS3LJWjs.WaitlistStatsModule; exports.checkPermissions = _chunkUYLS3LJWjs.checkPermissions; exports.checkPermissionsFromServer = _chunkUYLS3LJWjs.checkPermissionsFromServer; exports.clearLastApiMeta = _chunkUYLS3LJWjs.clearLastApiMeta; exports.clearLastApiTotal = _chunkUYLS3LJWjs.clearLastApiTotal; exports.cn = _chunkUYLS3LJWjs.cn; exports.composeRefs = _chunkUYLS3LJWjs.composeRefs; exports.configureAuth = _chunkUYLS3LJWjs.configureAuth; exports.configureI18n = _chunkTULJCLZAjs.configureI18n; exports.configureJsonApi = _chunkTULJCLZAjs.configureJsonApi; exports.configureLogin = _chunkTULJCLZAjs.configureLogin; exports.configureReferral = _chunkTULJCLZAjs.configureReferral; exports.configureRoles = _chunkTULJCLZAjs.configureRoles; exports.configureTokenUsage = _chunkUYLS3LJWjs.configureTokenUsage; exports.configureWaitlist = _chunkTULJCLZAjs.configureWaitlist; exports.createJsonApiInclusion = _chunkUYLS3LJWjs.createJsonApiInclusion; exports.dismissToast = _chunkUYLS3LJWjs.dismissToast; exports.entityObjectSchema = _chunkUYLS3LJWjs.entityObjectSchema; exports.exists = _chunkUYLS3LJWjs.exists; exports.formatCodiceFiscale = _chunkUYLS3LJWjs.formatCodiceFiscale; exports.formatDate = _chunkUYLS3LJWjs.formatDate; exports.formatLocalDate = _chunkUYLS3LJWjs.formatLocalDate; exports.formatPartitaIva = _chunkUYLS3LJWjs.formatPartitaIva; exports.getApiUrl = _chunkTULJCLZAjs.getApiUrl; exports.getAppUrl = _chunkTULJCLZAjs.getAppUrl; exports.getBootstrapper = _chunkLU7DJ4QFjs.getBootstrapper; exports.getClientGlobalErrorHandler = _chunkUYLS3LJWjs.getClientGlobalErrorHandler; exports.getGlobalErrorHandler = _chunkUYLS3LJWjs.getGlobalErrorHandler; exports.getIcon = _chunkUYLS3LJWjs.getIcon; exports.getIconByModule = _chunkUYLS3LJWjs.getIconByModule; exports.getIconByModuleName = _chunkUYLS3LJWjs.getIconByModuleName; exports.getInitials = _chunkUYLS3LJWjs.getInitials; exports.getLastApiMeta = _chunkUYLS3LJWjs.getLastApiMeta; exports.getLastApiTotal = _chunkUYLS3LJWjs.getLastApiTotal; exports.getLucideIcon = _chunkUYLS3LJWjs.getLucideIcon; exports.getLucideIconByModule = _chunkUYLS3LJWjs.getLucideIconByModule; exports.getLucideIconByModuleName = _chunkUYLS3LJWjs.getLucideIconByModuleName; exports.getPublicApiUrl = _chunkTULJCLZAjs.getPublicApiUrl; exports.getReferralConfig = _chunkTULJCLZAjs.getReferralConfig; exports.getRoleId = _chunkTULJCLZAjs.getRoleId; exports.getStripePublishableKey = _chunkTULJCLZAjs.getStripePublishableKey; exports.getTableComponents = _chunkUYLS3LJWjs.getTableComponents; exports.getTableOptions = _chunkUYLS3LJWjs.getTableOptions; exports.getTokenHandler = _chunkUYLS3LJWjs.getTokenHandler; exports.getTokenUsageCurrency = _chunkUYLS3LJWjs.getTokenUsageCurrency; exports.getTrackablePages = _chunkTULJCLZAjs.getTrackablePages; exports.getValueFromPath = _chunkUYLS3LJWjs.getValueFromPath; exports.getWaitlistConfig = _chunkTULJCLZAjs.getWaitlistConfig; exports.hasBootstrapper = _chunkLU7DJ4QFjs.hasBootstrapper; exports.isReferralEnabled = _chunkTULJCLZAjs.isReferralEnabled; exports.isRemoteImageSrc = _chunkUYLS3LJWjs.isRemoteImageSrc; exports.isRolesConfigured = _chunkTULJCLZAjs.isRolesConfigured; exports.rehydrate = _chunkUYLS3LJWjs.rehydrate; exports.rehydrateList = _chunkUYLS3LJWjs.rehydrateList; exports.resetBootstrapStore = _chunkLU7DJ4QFjs.resetBootstrapStore; exports.setBootstrapper = _chunkLU7DJ4QFjs.setBootstrapper; exports.setClientGlobalErrorHandler = _chunkUYLS3LJWjs.setClientGlobalErrorHandler; exports.setGlobalErrorHandler = _chunkUYLS3LJWjs.setGlobalErrorHandler; exports.showCustomToast = _chunkUYLS3LJWjs.showCustomToast; exports.showError = _chunkUYLS3LJWjs.showError; exports.showToast = _chunkUYLS3LJWjs.showToast; exports.tokenUsageModules = _chunkUYLS3LJWjs.tokenUsageModules; exports.translateData = _chunkLU7DJ4QFjs.translateData; exports.translateResponse = _chunkLU7DJ4QFjs.translateResponse; exports.tryBootstrap = _chunkLU7DJ4QFjs.tryBootstrap; exports.useComposedRefs = _chunkUYLS3LJWjs.useComposedRefs; exports.useIsMobile = _chunkUYLS3LJWjs.useIsMobile; exports.userObjectSchema = _chunkUYLS3LJWjs.userObjectSchema; exports.validateCodiceFiscale = _chunkUYLS3LJWjs.validateCodiceFiscale; exports.validateItalianTaxCode = _chunkUYLS3LJWjs.validateItalianTaxCode; exports.validatePartitaIva = _chunkUYLS3LJWjs.validatePartitaIva;
482
+ exports.ACTION_TYPES = _chunkV6CGCARDjs.ACTION_TYPES; exports.AVAILABLE_OAUTH_SCOPES = _chunk6J2SQZ3Gjs.AVAILABLE_OAUTH_SCOPES; exports.AbstractApiData = _chunk6J2SQZ3Gjs.AbstractApiData; exports.AbstractService = _chunk6J2SQZ3Gjs.AbstractService; exports.Action = _chunk6J2SQZ3Gjs.Action; exports.AiConnection = _chunk6J2SQZ3Gjs.AiConnection; exports.AiConnectionFields = _chunk6J2SQZ3Gjs.AiConnectionFields; exports.AiConnectionModule = _chunk6J2SQZ3Gjs.AiConnectionModule; exports.AiConnectionService = _chunk6J2SQZ3Gjs.AiConnectionService; exports.Assistant = _chunk6J2SQZ3Gjs.Assistant; exports.AssistantAction = _chunk6J2SQZ3Gjs.AssistantAction; exports.AssistantActionModule = _chunk6J2SQZ3Gjs.AssistantActionModule; exports.AssistantActionService = _chunk6J2SQZ3Gjs.AssistantActionService; exports.AssistantMessage = _chunk6J2SQZ3Gjs.AssistantMessage; exports.AssistantMessageModule = _chunk6J2SQZ3Gjs.AssistantMessageModule; exports.AssistantMessageService = _chunk6J2SQZ3Gjs.AssistantMessageService; exports.AssistantModule = _chunk6J2SQZ3Gjs.AssistantModule; exports.AssistantService = _chunk6J2SQZ3Gjs.AssistantService; exports.AuditLog = _chunk6J2SQZ3Gjs.AuditLog; exports.AuditLogModule = _chunk6J2SQZ3Gjs.AuditLogModule; exports.AuditLogService = _chunk6J2SQZ3Gjs.AuditLogService; exports.Auth = _chunk6J2SQZ3Gjs.Auth; exports.AuthComponent = _chunk6J2SQZ3Gjs.AuthComponent; exports.AuthModule = _chunk6J2SQZ3Gjs.AuthModule; exports.AuthService = _chunk6J2SQZ3Gjs.AuthService; exports.AuthorModule = _chunk6J2SQZ3Gjs.AuthorModule; exports.BackupCodeVerify = _chunk6J2SQZ3Gjs.BackupCodeVerify; exports.BackupCodeVerifyModule = _chunk6J2SQZ3Gjs.BackupCodeVerifyModule; exports.Billing = _chunk6J2SQZ3Gjs.Billing; exports.BillingModule = _chunk6J2SQZ3Gjs.BillingModule; exports.BillingService = _chunk6J2SQZ3Gjs.BillingService; exports.BlockNoteDiffUtil = _chunk6J2SQZ3Gjs.BlockNoteDiffUtil; exports.BlockNoteWordDiffRendererUtil = _chunk6J2SQZ3Gjs.BlockNoteWordDiffRendererUtil; exports.COMPANY_ADMINISTRATOR_ROLE_ID = _chunkV6CGCARDjs.COMPANY_ADMINISTRATOR_ROLE_ID; exports.CURRENT_USER_STORAGE_KEY = _chunk6J2SQZ3Gjs.CURRENT_USER_STORAGE_KEY; exports.Chunk = _chunk6J2SQZ3Gjs.Chunk; exports.ChunkModule = _chunk6J2SQZ3Gjs.ChunkModule; exports.ClientAbstractService = _chunk6J2SQZ3Gjs.ClientAbstractService; exports.ClientHttpMethod = _chunk6J2SQZ3Gjs.ClientHttpMethod; exports.Company = _chunk6J2SQZ3Gjs.Company; exports.CompanyFields = _chunk6J2SQZ3Gjs.CompanyFields; exports.CompanyModule = _chunk6J2SQZ3Gjs.CompanyModule; exports.CompanyService = _chunk6J2SQZ3Gjs.CompanyService; exports.Content = _chunk6J2SQZ3Gjs.Content; exports.ContentFields = _chunk6J2SQZ3Gjs.ContentFields; exports.ContentModule = _chunk6J2SQZ3Gjs.ContentModule; exports.ContentService = _chunk6J2SQZ3Gjs.ContentService; exports.DEFAULT_GRANT_TYPES = _chunk6J2SQZ3Gjs.DEFAULT_GRANT_TYPES; exports.DataClass = _chunkLU7DJ4QFjs.DataClassRegistry; exports.DataClassRegistry = _chunkLU7DJ4QFjs.DataClassRegistry; exports.ENV = _chunkLU7DJ4QFjs.ENV; exports.EndpointCreator = _chunk6J2SQZ3Gjs.EndpointCreator; exports.EntityAiStatus = _chunk6J2SQZ3Gjs.EntityAiStatus; exports.Feature = _chunk6J2SQZ3Gjs.Feature; exports.FeatureModule = _chunk6J2SQZ3Gjs.FeatureModule; exports.FeatureService = _chunk6J2SQZ3Gjs.FeatureService; exports.HowTo = _chunk6J2SQZ3Gjs.HowTo; exports.HowToFields = _chunk6J2SQZ3Gjs.HowToFields; exports.HowToModule = _chunk6J2SQZ3Gjs.HowToModule; exports.HowToService = _chunk6J2SQZ3Gjs.HowToService; exports.HttpMethod = _chunk6J2SQZ3Gjs.HttpMethod; exports.InvoiceStatus = _chunk6J2SQZ3Gjs.InvoiceStatus; exports.JsonApiDataFactory = _chunkLU7DJ4QFjs.JsonApiDataFactory; exports.MOBILE_BREAKPOINT = _chunk6J2SQZ3Gjs.MOBILE_BREAKPOINT; exports.Module = _chunk6J2SQZ3Gjs.Module; exports.ModuleModule = _chunk6J2SQZ3Gjs.ModuleModule; exports.ModulePaths = _chunk6J2SQZ3Gjs.ModulePaths; exports.ModulePathsModule = _chunk6J2SQZ3Gjs.ModulePathsModule; exports.ModuleRegistrar = _chunk6J2SQZ3Gjs.ModuleRegistrar; exports.ModuleRegistry = _chunk6J2SQZ3Gjs.ModuleRegistry; exports.Modules = _chunk6J2SQZ3Gjs.Modules; exports.Notification = _chunk6J2SQZ3Gjs.Notification; exports.NotificationFields = _chunk6J2SQZ3Gjs.NotificationFields; exports.NotificationModule = _chunk6J2SQZ3Gjs.NotificationModule; exports.NotificationService = _chunk6J2SQZ3Gjs.NotificationService; exports.OAUTH_SCOPE_DISPLAY = _chunk6J2SQZ3Gjs.OAUTH_SCOPE_DISPLAY; exports.OAuthClient = _chunk6J2SQZ3Gjs.OAuthClient; exports.OAuthModule = _chunk6J2SQZ3Gjs.OAuthModule; exports.OAuthService = _chunk6J2SQZ3Gjs.OAuthService; exports.Passkey = _chunk6J2SQZ3Gjs.Passkey; exports.PasskeyAuthenticationOptions = _chunk6J2SQZ3Gjs.PasskeyAuthenticationOptions; exports.PasskeyAuthenticationOptionsModule = _chunk6J2SQZ3Gjs.PasskeyAuthenticationOptionsModule; exports.PasskeyModule = _chunk6J2SQZ3Gjs.PasskeyModule; exports.PasskeyRegistrationOptions = _chunk6J2SQZ3Gjs.PasskeyRegistrationOptions; exports.PasskeyRegistrationOptionsModule = _chunk6J2SQZ3Gjs.PasskeyRegistrationOptionsModule; exports.PasskeyRegistrationVerify = _chunk6J2SQZ3Gjs.PasskeyRegistrationVerify; exports.PasskeyRegistrationVerifyModule = _chunk6J2SQZ3Gjs.PasskeyRegistrationVerifyModule; exports.PasskeyRename = _chunk6J2SQZ3Gjs.PasskeyRename; exports.PasskeyRenameModule = _chunk6J2SQZ3Gjs.PasskeyRenameModule; exports.PasskeyVerifyLogin = _chunk6J2SQZ3Gjs.PasskeyVerifyLogin; exports.PasskeyVerifyLoginModule = _chunk6J2SQZ3Gjs.PasskeyVerifyLoginModule; exports.PaymentMethod = _chunk6J2SQZ3Gjs.PaymentMethod; exports.PermissionMapping = _chunk6J2SQZ3Gjs.PermissionMapping; exports.PermissionMappingModule = _chunk6J2SQZ3Gjs.PermissionMappingModule; exports.Push = _chunk6J2SQZ3Gjs.Push; exports.PushModule = _chunk6J2SQZ3Gjs.PushModule; exports.PushService = _chunk6J2SQZ3Gjs.PushService; exports.RbacMatrixModel = _chunk6J2SQZ3Gjs.RbacMatrixModel; exports.RbacMatrixModule = _chunk6J2SQZ3Gjs.RbacMatrixModule; exports.RbacService = _chunkV6CGCARDjs.RbacService; exports.ReferralModule = _chunk6J2SQZ3Gjs.ReferralModule; exports.ReferralService = _chunk6J2SQZ3Gjs.ReferralService; exports.ReferralStats = _chunk6J2SQZ3Gjs.ReferralStats; exports.ReferralStatsModule = _chunk6J2SQZ3Gjs.ReferralStatsModule; exports.RehydrationFactory = _chunk6J2SQZ3Gjs.RehydrationFactory; exports.Role = _chunk6J2SQZ3Gjs.Role; exports.RoleFields = _chunk6J2SQZ3Gjs.RoleFields; exports.RoleModule = _chunk6J2SQZ3Gjs.RoleModule; exports.RoleService = _chunk6J2SQZ3Gjs.RoleService; exports.S3 = _chunk6J2SQZ3Gjs.S3; exports.S3Module = _chunk6J2SQZ3Gjs.S3Module; exports.S3Service = _chunk6J2SQZ3Gjs.S3Service; exports.StripeCustomer = _chunk6J2SQZ3Gjs.StripeCustomer; exports.StripeCustomerModule = _chunk6J2SQZ3Gjs.StripeCustomerModule; exports.StripeCustomerService = _chunk6J2SQZ3Gjs.StripeCustomerService; exports.StripeInvoice = _chunk6J2SQZ3Gjs.StripeInvoice; exports.StripeInvoiceModule = _chunk6J2SQZ3Gjs.StripeInvoiceModule; exports.StripeInvoiceService = _chunk6J2SQZ3Gjs.StripeInvoiceService; exports.StripePaymentMethodModule = _chunk6J2SQZ3Gjs.StripePaymentMethodModule; exports.StripePrice = _chunk6J2SQZ3Gjs.StripePrice; exports.StripePriceFields = _chunk6J2SQZ3Gjs.StripePriceFields; exports.StripePriceModule = _chunk6J2SQZ3Gjs.StripePriceModule; exports.StripePriceService = _chunk6J2SQZ3Gjs.StripePriceService; exports.StripeProduct = _chunk6J2SQZ3Gjs.StripeProduct; exports.StripeProductFields = _chunk6J2SQZ3Gjs.StripeProductFields; exports.StripeProductModule = _chunk6J2SQZ3Gjs.StripeProductModule; exports.StripeProductService = _chunk6J2SQZ3Gjs.StripeProductService; exports.StripePromotionCode = _chunk6J2SQZ3Gjs.StripePromotionCode; exports.StripePromotionCodeModule = _chunk6J2SQZ3Gjs.StripePromotionCodeModule; exports.StripePromotionCodeService = _chunk6J2SQZ3Gjs.StripePromotionCodeService; exports.StripeSubscription = _chunk6J2SQZ3Gjs.StripeSubscription; exports.StripeSubscriptionModule = _chunk6J2SQZ3Gjs.StripeSubscriptionModule; exports.StripeSubscriptionService = _chunk6J2SQZ3Gjs.StripeSubscriptionService; exports.StripeUsage = _chunk6J2SQZ3Gjs.StripeUsage; exports.StripeUsageModule = _chunk6J2SQZ3Gjs.StripeUsageModule; exports.StripeUsageService = _chunk6J2SQZ3Gjs.StripeUsageService; exports.SubscriptionStatus = _chunk6J2SQZ3Gjs.SubscriptionStatus; exports.TableOptions = _chunk6J2SQZ3Gjs.TableOptions; exports.TokenUsageAdminBreakdownModule = _chunk6J2SQZ3Gjs.TokenUsageAdminBreakdownModule; exports.TokenUsageAdminSummaryModule = _chunk6J2SQZ3Gjs.TokenUsageAdminSummaryModule; exports.TokenUsageAdminTimelineModule = _chunk6J2SQZ3Gjs.TokenUsageAdminTimelineModule; exports.TotpAuthenticator = _chunk6J2SQZ3Gjs.TotpAuthenticator; exports.TotpAuthenticatorModule = _chunk6J2SQZ3Gjs.TotpAuthenticatorModule; exports.TotpSetup = _chunk6J2SQZ3Gjs.TotpSetup; exports.TotpSetupModule = _chunk6J2SQZ3Gjs.TotpSetupModule; exports.TotpVerify = _chunk6J2SQZ3Gjs.TotpVerify; exports.TotpVerifyLogin = _chunk6J2SQZ3Gjs.TotpVerifyLogin; exports.TotpVerifyLoginModule = _chunk6J2SQZ3Gjs.TotpVerifyLoginModule; exports.TotpVerifyModule = _chunk6J2SQZ3Gjs.TotpVerifyModule; exports.TwoFactorChallenge = _chunk6J2SQZ3Gjs.TwoFactorChallenge; exports.TwoFactorChallengeModule = _chunk6J2SQZ3Gjs.TwoFactorChallengeModule; exports.TwoFactorEnable = _chunk6J2SQZ3Gjs.TwoFactorEnable; exports.TwoFactorEnableModule = _chunk6J2SQZ3Gjs.TwoFactorEnableModule; exports.TwoFactorService = _chunk6J2SQZ3Gjs.TwoFactorService; exports.TwoFactorStatus = _chunk6J2SQZ3Gjs.TwoFactorStatus; exports.TwoFactorStatusModule = _chunk6J2SQZ3Gjs.TwoFactorStatusModule; exports.User = _chunk6J2SQZ3Gjs.User; exports.UserFields = _chunk6J2SQZ3Gjs.UserFields; exports.UserModule = _chunk6J2SQZ3Gjs.UserModule; exports.UserService = _chunk6J2SQZ3Gjs.UserService; exports.VIEWPORT_COOKIE_NAME = _chunk6J2SQZ3Gjs.VIEWPORT_COOKIE_NAME; exports.Waitlist = _chunk6J2SQZ3Gjs.Waitlist; exports.WaitlistModule = _chunk6J2SQZ3Gjs.WaitlistModule; exports.WaitlistService = _chunk6J2SQZ3Gjs.WaitlistService; exports.WaitlistStats = _chunk6J2SQZ3Gjs.WaitlistStats; exports.WaitlistStatsModule = _chunk6J2SQZ3Gjs.WaitlistStatsModule; exports.checkPermissions = _chunk6J2SQZ3Gjs.checkPermissions; exports.checkPermissionsFromServer = _chunk6J2SQZ3Gjs.checkPermissionsFromServer; exports.clearLastApiMeta = _chunk6J2SQZ3Gjs.clearLastApiMeta; exports.clearLastApiTotal = _chunk6J2SQZ3Gjs.clearLastApiTotal; exports.cn = _chunk6J2SQZ3Gjs.cn; exports.composeRefs = _chunk6J2SQZ3Gjs.composeRefs; exports.configureAuth = _chunk6J2SQZ3Gjs.configureAuth; exports.configureI18n = _chunkV6CGCARDjs.configureI18n; exports.configureJsonApi = _chunkV6CGCARDjs.configureJsonApi; exports.configureLogin = _chunkV6CGCARDjs.configureLogin; exports.configureReferral = _chunkV6CGCARDjs.configureReferral; exports.configureRoles = _chunkV6CGCARDjs.configureRoles; exports.configureTokenUsage = _chunk6J2SQZ3Gjs.configureTokenUsage; exports.configureWaitlist = _chunkV6CGCARDjs.configureWaitlist; exports.createJsonApiInclusion = _chunk6J2SQZ3Gjs.createJsonApiInclusion; exports.dismissToast = _chunk6J2SQZ3Gjs.dismissToast; exports.entityObjectSchema = _chunk6J2SQZ3Gjs.entityObjectSchema; exports.exists = _chunk6J2SQZ3Gjs.exists; exports.formatCodiceFiscale = _chunk6J2SQZ3Gjs.formatCodiceFiscale; exports.formatDate = _chunk6J2SQZ3Gjs.formatDate; exports.formatLocalDate = _chunk6J2SQZ3Gjs.formatLocalDate; exports.formatPartitaIva = _chunk6J2SQZ3Gjs.formatPartitaIva; exports.getApiUrl = _chunkV6CGCARDjs.getApiUrl; exports.getAppUrl = _chunkV6CGCARDjs.getAppUrl; exports.getBootstrapper = _chunkLU7DJ4QFjs.getBootstrapper; exports.getClientGlobalErrorHandler = _chunk6J2SQZ3Gjs.getClientGlobalErrorHandler; exports.getGlobalErrorHandler = _chunk6J2SQZ3Gjs.getGlobalErrorHandler; exports.getIcon = _chunk6J2SQZ3Gjs.getIcon; exports.getIconByModule = _chunk6J2SQZ3Gjs.getIconByModule; exports.getIconByModuleName = _chunk6J2SQZ3Gjs.getIconByModuleName; exports.getInitials = _chunk6J2SQZ3Gjs.getInitials; exports.getLastApiMeta = _chunk6J2SQZ3Gjs.getLastApiMeta; exports.getLastApiTotal = _chunk6J2SQZ3Gjs.getLastApiTotal; exports.getLucideIcon = _chunk6J2SQZ3Gjs.getLucideIcon; exports.getLucideIconByModule = _chunk6J2SQZ3Gjs.getLucideIconByModule; exports.getLucideIconByModuleName = _chunk6J2SQZ3Gjs.getLucideIconByModuleName; exports.getPublicApiUrl = _chunkV6CGCARDjs.getPublicApiUrl; exports.getReferralConfig = _chunkV6CGCARDjs.getReferralConfig; exports.getRoleId = _chunkV6CGCARDjs.getRoleId; exports.getStripePublishableKey = _chunkV6CGCARDjs.getStripePublishableKey; exports.getTableComponents = _chunk6J2SQZ3Gjs.getTableComponents; exports.getTableOptions = _chunk6J2SQZ3Gjs.getTableOptions; exports.getTokenHandler = _chunk6J2SQZ3Gjs.getTokenHandler; exports.getTokenUsageCurrency = _chunk6J2SQZ3Gjs.getTokenUsageCurrency; exports.getTrackablePages = _chunkV6CGCARDjs.getTrackablePages; exports.getValueFromPath = _chunk6J2SQZ3Gjs.getValueFromPath; exports.getWaitlistConfig = _chunkV6CGCARDjs.getWaitlistConfig; exports.hasBootstrapper = _chunkLU7DJ4QFjs.hasBootstrapper; exports.isReferralEnabled = _chunkV6CGCARDjs.isReferralEnabled; exports.isRemoteImageSrc = _chunk6J2SQZ3Gjs.isRemoteImageSrc; exports.isRolesConfigured = _chunkV6CGCARDjs.isRolesConfigured; exports.rehydrate = _chunk6J2SQZ3Gjs.rehydrate; exports.rehydrateList = _chunk6J2SQZ3Gjs.rehydrateList; exports.resetBootstrapStore = _chunkLU7DJ4QFjs.resetBootstrapStore; exports.setBootstrapper = _chunkLU7DJ4QFjs.setBootstrapper; exports.setClientGlobalErrorHandler = _chunk6J2SQZ3Gjs.setClientGlobalErrorHandler; exports.setGlobalErrorHandler = _chunk6J2SQZ3Gjs.setGlobalErrorHandler; exports.showCustomToast = _chunk6J2SQZ3Gjs.showCustomToast; exports.showError = _chunk6J2SQZ3Gjs.showError; exports.showToast = _chunk6J2SQZ3Gjs.showToast; exports.tokenUsageModules = _chunk6J2SQZ3Gjs.tokenUsageModules; exports.translateData = _chunkLU7DJ4QFjs.translateData; exports.translateResponse = _chunkLU7DJ4QFjs.translateResponse; exports.tryBootstrap = _chunkLU7DJ4QFjs.tryBootstrap; exports.useComposedRefs = _chunk6J2SQZ3Gjs.useComposedRefs; exports.useIsMobile = _chunk6J2SQZ3Gjs.useIsMobile; exports.userObjectSchema = _chunk6J2SQZ3Gjs.userObjectSchema; exports.validateCodiceFiscale = _chunk6J2SQZ3Gjs.validateCodiceFiscale; exports.validateItalianTaxCode = _chunk6J2SQZ3Gjs.validateItalianTaxCode; exports.validatePartitaIva = _chunk6J2SQZ3Gjs.validatePartitaIva;
483
483
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -18,7 +18,7 @@ import {
18
18
  getWaitlistConfig,
19
19
  isReferralEnabled,
20
20
  isRolesConfigured
21
- } from "./chunk-2D4MFVDV.mjs";
21
+ } from "./chunk-IMSIVIIC.mjs";
22
22
  import {
23
23
  AVAILABLE_OAUTH_SCOPES,
24
24
  AbstractApiData,
@@ -226,7 +226,7 @@ import {
226
226
  validateCodiceFiscale,
227
227
  validateItalianTaxCode,
228
228
  validatePartitaIva
229
- } from "./chunk-HDZ2BL6D.mjs";
229
+ } from "./chunk-M5QAHSCY.mjs";
230
230
  import "./chunk-AUXK7QSA.mjs";
231
231
  import "./chunk-C7C7VY4F.mjs";
232
232
  import {
@@ -47,6 +47,7 @@ interface OnboardingContextValue {
47
47
  currentStepIndex: number;
48
48
  totalSteps: number;
49
49
  }
50
+ type OnboardingTourEndReason = "finished" | "skipped" | "dismissed";
50
51
  interface OnboardingProviderProps {
51
52
  children: React.ReactNode;
52
53
  tours?: OnboardingTourConfig[];
@@ -54,6 +55,8 @@ interface OnboardingProviderProps {
54
55
  labels?: OnboardingLabels;
55
56
  renderCard?: (props: OnboardingCardRenderProps) => ReactNode;
56
57
  zIndex?: number;
58
+ /** Fires once when a tour ends. "finished" = last-step Finish, "skipped" = card Skip/close, "dismissed" = overlay click or Escape. */
59
+ onTourEnd?: (tourId: string, reason: OnboardingTourEndReason) => void;
57
60
  }
58
61
  interface OnboardingCardRenderProps {
59
62
  step: OnboardingStepConfig;
@@ -68,4 +71,4 @@ interface OnboardingCardRenderProps {
68
71
  isLast: boolean;
69
72
  }
70
73
 
71
- export { DEFAULT_ONBOARDING_LABELS as D, type OnboardingProviderProps as O, type OnboardingContextValue as a, type OnboardingStepSide as b, type OnboardingStepConfig as c, type OnboardingTourConfig as d, type OnboardingTourPaths as e, type OnboardingLabels as f, type OnboardingCardRenderProps as g };
74
+ export { DEFAULT_ONBOARDING_LABELS as D, type OnboardingStepSide as O, type OnboardingProviderProps as a, type OnboardingContextValue as b, type OnboardingStepConfig as c, type OnboardingTourConfig as d, type OnboardingTourPaths as e, type OnboardingLabels as f, type OnboardingTourEndReason as g, type OnboardingCardRenderProps as h };
@@ -47,6 +47,7 @@ interface OnboardingContextValue {
47
47
  currentStepIndex: number;
48
48
  totalSteps: number;
49
49
  }
50
+ type OnboardingTourEndReason = "finished" | "skipped" | "dismissed";
50
51
  interface OnboardingProviderProps {
51
52
  children: React.ReactNode;
52
53
  tours?: OnboardingTourConfig[];
@@ -54,6 +55,8 @@ interface OnboardingProviderProps {
54
55
  labels?: OnboardingLabels;
55
56
  renderCard?: (props: OnboardingCardRenderProps) => ReactNode;
56
57
  zIndex?: number;
58
+ /** Fires once when a tour ends. "finished" = last-step Finish, "skipped" = card Skip/close, "dismissed" = overlay click or Escape. */
59
+ onTourEnd?: (tourId: string, reason: OnboardingTourEndReason) => void;
57
60
  }
58
61
  interface OnboardingCardRenderProps {
59
62
  step: OnboardingStepConfig;
@@ -68,4 +71,4 @@ interface OnboardingCardRenderProps {
68
71
  isLast: boolean;
69
72
  }
70
73
 
71
- export { DEFAULT_ONBOARDING_LABELS as D, type OnboardingProviderProps as O, type OnboardingContextValue as a, type OnboardingStepSide as b, type OnboardingStepConfig as c, type OnboardingTourConfig as d, type OnboardingTourPaths as e, type OnboardingLabels as f, type OnboardingCardRenderProps as g };
74
+ export { DEFAULT_ONBOARDING_LABELS as D, type OnboardingStepSide as O, type OnboardingProviderProps as a, type OnboardingContextValue as b, type OnboardingStepConfig as c, type OnboardingTourConfig as d, type OnboardingTourPaths as e, type OnboardingLabels as f, type OnboardingTourEndReason as g, type OnboardingCardRenderProps as h };
@@ -15,7 +15,7 @@ var _chunkIOLU4ASDjs = require('../chunk-IOLU4ASD.js');
15
15
 
16
16
 
17
17
 
18
- var _chunkUYLS3LJWjs = require('../chunk-UYLS3LJW.js');
18
+ var _chunk6J2SQZ3Gjs = require('../chunk-6J2SQZ3G.js');
19
19
  require('../chunk-LXKSUWAV.js');
20
20
  require('../chunk-IBS6NI7D.js');
21
21
 
@@ -87,7 +87,7 @@ var ServerSession = class {
87
87
  if (!rawModules) return false;
88
88
  const modules = JSON.parse(_pako.ungzip.call(void 0, Buffer.from(rawModules, "base64"), { toText: true }));
89
89
  const selectedModule = modules.find((module) => module.id === params.module.moduleId);
90
- return _chunkUYLS3LJWjs.checkPermissionsFromServer.call(void 0, {
90
+ return _chunk6J2SQZ3Gjs.checkPermissionsFromServer.call(void 0, {
91
91
  module: params.module,
92
92
  action: params.action,
93
93
  data: params.data,
@@ -297,5 +297,5 @@ _chunk7QVYU63Ejs.__name.call(void 0, ServerJsonApiDelete, "ServerJsonApiDelete")
297
297
 
298
298
 
299
299
 
300
- exports.ServerAuthService = _chunkUYLS3LJWjs.AuthService; exports.ServerCompanyService = _chunkUYLS3LJWjs.CompanyService; exports.ServerContentService = _chunkUYLS3LJWjs.ContentService; exports.ServerFeatureService = _chunkUYLS3LJWjs.FeatureService; exports.ServerJsonApiDelete = ServerJsonApiDelete; exports.ServerJsonApiGet = ServerJsonApiGet; exports.ServerJsonApiPatch = ServerJsonApiPatch; exports.ServerJsonApiPost = ServerJsonApiPost; exports.ServerJsonApiPut = ServerJsonApiPut; exports.ServerNotificationService = _chunkUYLS3LJWjs.NotificationService; exports.ServerPushService = _chunkUYLS3LJWjs.PushService; exports.ServerRoleService = _chunkUYLS3LJWjs.RoleService; exports.ServerS3Service = _chunkUYLS3LJWjs.S3Service; exports.ServerSession = ServerSession; exports.ServerUserService = _chunkUYLS3LJWjs.UserService; exports.configureServerJsonApi = configureServerJsonApi; exports.getServerApiUrl = getServerApiUrl; exports.getServerAppUrl = getServerAppUrl; exports.getServerToken = _chunkYUO55Q5Ajs.getServerToken; exports.getServerTrackablePages = getServerTrackablePages; exports.invalidateCacheTag = invalidateCacheTag; exports.invalidateCacheTags = invalidateCacheTags; exports.serverRequest = _chunkIOLU4ASDjs.serverRequest;
300
+ exports.ServerAuthService = _chunk6J2SQZ3Gjs.AuthService; exports.ServerCompanyService = _chunk6J2SQZ3Gjs.CompanyService; exports.ServerContentService = _chunk6J2SQZ3Gjs.ContentService; exports.ServerFeatureService = _chunk6J2SQZ3Gjs.FeatureService; exports.ServerJsonApiDelete = ServerJsonApiDelete; exports.ServerJsonApiGet = ServerJsonApiGet; exports.ServerJsonApiPatch = ServerJsonApiPatch; exports.ServerJsonApiPost = ServerJsonApiPost; exports.ServerJsonApiPut = ServerJsonApiPut; exports.ServerNotificationService = _chunk6J2SQZ3Gjs.NotificationService; exports.ServerPushService = _chunk6J2SQZ3Gjs.PushService; exports.ServerRoleService = _chunk6J2SQZ3Gjs.RoleService; exports.ServerS3Service = _chunk6J2SQZ3Gjs.S3Service; exports.ServerSession = ServerSession; exports.ServerUserService = _chunk6J2SQZ3Gjs.UserService; exports.configureServerJsonApi = configureServerJsonApi; exports.getServerApiUrl = getServerApiUrl; exports.getServerAppUrl = getServerAppUrl; exports.getServerToken = _chunkYUO55Q5Ajs.getServerToken; exports.getServerTrackablePages = getServerTrackablePages; exports.invalidateCacheTag = invalidateCacheTag; exports.invalidateCacheTags = invalidateCacheTags; exports.serverRequest = _chunkIOLU4ASDjs.serverRequest;
301
301
  //# sourceMappingURL=index.js.map
@@ -15,7 +15,7 @@ import {
15
15
  S3Service,
16
16
  UserService,
17
17
  checkPermissionsFromServer
18
- } from "../chunk-HDZ2BL6D.mjs";
18
+ } from "../chunk-M5QAHSCY.mjs";
19
19
  import "../chunk-AUXK7QSA.mjs";
20
20
  import "../chunk-C7C7VY4F.mjs";
21
21
  import {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carlonicora/nextjs-jsonapi",
3
- "version": "3.8.2",
3
+ "version": "3.10.0",
4
4
  "description": "Next.js JSON:API client with server/client support and caching",
5
5
  "author": "Carlo Nicora",
6
6
  "license": "GPL-3.0-or-later",
@@ -141,6 +141,7 @@
141
141
  "d3": "^7.9.0",
142
142
  "dagre": "^0.8.5",
143
143
  "date-fns": "^4.4.0",
144
+ "driver.js": "^1.8.0",
144
145
  "embla-carousel-react": "^8.6.0",
145
146
  "fuse.js": "^7.5.0",
146
147
  "input-otp": "^1.5.0",
@@ -161,7 +162,6 @@
161
162
  "rehype-slug": "^6.0.0",
162
163
  "remark-gfm": "^4.0.1",
163
164
  "shadcn": "^4.19.0",
164
- "shepherd.js": "^15.3.0",
165
165
  "socket.io-client": "^4.8.3",
166
166
  "sonner": "^2.0.8",
167
167
  "tailwind-merge": "^3.6.0",
@@ -20,6 +20,7 @@ import {
20
20
  import { partitionTabs, Tab } from "@/components/containers";
21
21
  import { HEADER_ROW_MIN_H, RoundPageContainerTitle } from "@/components/containers/RoundPageContainerTitle";
22
22
  import { Header, MobileNavigationBar } from "@/components/navigations";
23
+ import { MicroLabel } from "@/components/typography";
23
24
  import { useHeaderChildren, useHeaderLeftContent, useHeaderLogo, useHeaderMobileChildren } from "@/contexts";
24
25
  import { useUrlRewriter } from "@/hooks";
25
26
  import { cn, useIsMobile } from "@/index";
@@ -113,15 +114,33 @@ type RoundPageContainerProps = {
113
114
  scroll?: "document" | "fixed";
114
115
  };
115
116
 
116
- // Rail trigger class: override the horizontal TabsTrigger defaults for a
117
- // vertical, start-aligned, dark-filled active state. tailwind-merge inside cn()
118
- // resolves the conflicts with the base classes.
117
+ // Rail trigger class: the rail is a LIST, not a column of buttons — the same
118
+ // treatment as the handbook reader's section rail (HandbookPageNavigator /
119
+ // HandbookPageToc in a360ai): entries at `text-xs` on a `border-s-2` rule, and
120
+ // the active one marked by turning that rule and its label `primary` rather
121
+ // than by growing a filled box around it.
122
+ //
123
+ // Every override below is written in the SAME class group AND the same variant
124
+ // modifiers as the base `TabsTrigger` class it has to beat, because that is the
125
+ // only way tailwind-merge inside cn() drops the base one; a differently-scoped
126
+ // utility (`data-active:` against a `dark:data-active:` base) would survive as
127
+ // a second rule and win or lose on stylesheet order.
128
+ //
129
+ // The previous version targeted `data-[state=active]`, which these Base UI tabs
130
+ // never set — the active row was therefore still wearing the base
131
+ // `data-active:bg-background` box, which is the button look this replaces.
119
132
  const railTriggerClass = cn(
120
- "flex w-full items-center justify-start rounded-md px-3 py-1.5 text-start text-sm leading-tight whitespace-normal",
121
- "text-muted-foreground",
122
- "hover:bg-muted hover:text-foreground",
123
- "data-[state=active]:bg-foreground data-[state=active]:text-background",
124
- "data-[state=active]:font-semibold data-[state=active]:shadow-none",
133
+ "flex h-auto w-full items-center justify-start px-3 py-1 text-start text-xs leading-tight whitespace-normal",
134
+ // `border-0` first: the base sets a 1px box on all four sides, and only a
135
+ // later border-width utility of the same group removes it. `border-s-2` then
136
+ // draws the rail itself.
137
+ "rounded-none border-0 border-s-2 border-transparent bg-transparent",
138
+ "text-muted-foreground dark:text-muted-foreground transition-colors",
139
+ "hover:bg-transparent hover:text-primary dark:hover:text-primary",
140
+ "data-active:bg-transparent dark:data-active:bg-transparent",
141
+ "data-active:border-primary dark:data-active:border-primary",
142
+ "data-active:text-primary dark:data-active:text-primary",
143
+ "data-active:font-medium data-active:shadow-none",
125
144
  );
126
145
 
127
146
  /** Stable value for the URL `?section=` and active-tab matching. */
@@ -244,7 +263,9 @@ export function RoundPageContainer({
244
263
  [module, id, rewriteUrl, onSectionChange],
245
264
  );
246
265
 
247
- const activeFillHeight = tabs?.find((t) => tabValue(t) === activeTab)?.fillHeight === true;
266
+ const activeTabDefinition = tabs?.find((t) => tabValue(t) === activeTab);
267
+ const activeFillHeight = activeTabDefinition?.fillHeight === true;
268
+ const activeConstrainWidth = activeTabDefinition?.constrainWidth === true;
248
269
 
249
270
  // Rail partition — only consumed by `layout="rail"` but cheap to compute.
250
271
  const { ungrouped, groups } = useMemo(() => partitionTabs(tabs ?? []), [tabs]);
@@ -372,6 +393,7 @@ export function RoundPageContainer({
372
393
  {/* Flush-left section rail — md and up */}
373
394
  <aside
374
395
  data-testid="round-page-rail"
396
+ data-help="page.rail"
375
397
  className={cn(
376
398
  `hidden shrink-0 border-e p-4 md:flex md:w-56 md:flex-col`,
377
399
  isFixed && `md:overflow-y-auto`,
@@ -394,12 +416,9 @@ export function RoundPageContainer({
394
416
  ))}
395
417
  {groups.map((group) => (
396
418
  <Fragment key={group.label}>
397
- <div
398
- role="presentation"
399
- className="text-muted-foreground px-3 pt-3 pb-1 text-[10px] font-bold tracking-wider uppercase"
400
- >
419
+ <MicroLabel as="span" role="presentation" className="block px-3 pt-3 pb-1">
401
420
  {group.label}
402
- </div>
421
+ </MicroLabel>
403
422
  {group.items.map((tab) => (
404
423
  <TabsTrigger key={tab.label} value={tabValue(tab)} className={railTriggerClass}>
405
424
  {tab.contentLabel ?? tab.label}
@@ -447,10 +466,13 @@ export function RoundPageContainer({
447
466
  className={cn(`min-w-0 grow`, activeFillHeight ? cn(`flex flex-col`, clip) : cn(scrollY, `p-4`))}
448
467
  >
449
468
  {/* Centre and constrain rail content (like the non-rail
450
- layout). Fill-height tabs keep the full width. */}
469
+ layout). Fill-height tabs are full-bleed a canvas, a
470
+ map or a two-pane browser wants the width — unless the
471
+ tab asks for the reading column with `constrainWidth`. */}
451
472
  <div
452
473
  className={cn(
453
474
  activeFillHeight ? `flex min-h-0 w-full flex-1 flex-col` : `mx-auto w-full max-w-6xl`,
475
+ activeFillHeight && activeConstrainWidth && `mx-auto max-w-6xl`,
454
476
  )}
455
477
  >
456
478
  {header}
@@ -515,7 +537,7 @@ export function RoundPageContainer({
515
537
  </div>
516
538
  ) : (
517
539
  <div className="p-4">
518
- <TabsList>
540
+ <TabsList data-help="page.tabs">
519
541
  {tabs.map((tab) => (
520
542
  <TabsTrigger key={tab.label} value={tabValue(tab)} className="px-4">
521
543
  {tab.contentLabel ?? tab.label}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { Button, Tooltip, TooltipContent, TooltipTrigger } from "@/components";
4
- import { useSharedContext } from "@/contexts";
4
+ import { ActionBarProvider, useSharedContext } from "@/contexts";
5
5
  import { ModuleWithPermissions } from "@/permissions";
6
6
  import { cn, useIsMobile } from "@/utils";
7
7
  import { InfoIcon } from "lucide-react";
@@ -64,6 +64,7 @@ export function RoundPageContainerTitle({
64
64
  <Tooltip>
65
65
  <TooltipTrigger>
66
66
  <Button
67
+ data-help="page.details"
67
68
  render={<div />}
68
69
  nativeButton={false}
69
70
  variant={showDetails ? `ghost` : `default`}
@@ -82,8 +83,15 @@ export function RoundPageContainerTitle({
82
83
  )}
83
84
  </div>
84
85
  {title.actionBar && (
85
- <div data-testid="round-page-action-bar" className="flex w-full items-center border-t px-4 py-2">
86
- {title.actionBar}
86
+ <div
87
+ data-testid="round-page-action-bar"
88
+ data-help="page.action-bar"
89
+ className="flex w-full items-center gap-x-2 border-t px-4 py-2"
90
+ >
91
+ {/* The bar is the page's command row, so the commands inside it label
92
+ themselves ("Edit", "Delete") instead of rendering the bare glyph
93
+ they use in a table row. See ActionBarContext. */}
94
+ <ActionBarProvider value={true}>{title.actionBar}</ActionBarProvider>
87
95
  </div>
88
96
  )}
89
97
  </div>
@@ -37,6 +37,16 @@ export type Tab = {
37
37
  * because it doesn't own the surrounding scroll container.
38
38
  */
39
39
  fillHeight?: boolean;
40
+ /**
41
+ * Keep the tab's content in the centred reading column (`max-w-6xl`) under
42
+ * `layout="rail"` even when `fillHeight` is set.
43
+ *
44
+ * A rail's `fillHeight` tab is full-bleed by default, which is what a
45
+ * two-pane browser, a canvas or a map wants. Prose does not: an editor
46
+ * stretched across a wide screen is unreadable. Non-fill-height tabs are
47
+ * already constrained, so this flag only matters alongside `fillHeight`.
48
+ */
49
+ constrainWidth?: boolean;
40
50
  };
41
51
 
42
52
  type TabsContainerProps = {
@@ -76,6 +86,7 @@ export function TabsContainer({
76
86
  <Tabs defaultValue={defaultValue} className="w-full">
77
87
  <div className="flex w-full items-center justify-between">
78
88
  <TabsList
89
+ data-help="page.tabs"
79
90
  className={cn(
80
91
  `${style ? `my-4 flex w-full justify-start rounded-none border-b bg-transparent pb-0` : ``}`,
81
92
  tabsListClassName,
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { LoaderCircleIcon, Trash2Icon } from "lucide-react";
4
4
  import { isValidElement, ReactNode, useState } from "react";
5
+ import { useIsInActionBar } from "../../contexts/ActionBarContext";
5
6
  import { useI18nRouter, useI18nTranslations } from "../../i18n";
6
7
  import {
7
8
  AlertDialog,
@@ -28,6 +29,12 @@ type CommonDeleterProps = {
28
29
  testId?: string;
29
30
  /** Custom trigger element replacing the default trash button. */
30
31
  trigger?: ReactNode;
32
+ /**
33
+ * Force the default trigger to show / hide its text label. Left unset it
34
+ * follows `useIsInActionBar()`: labelled in a page action bar, glyph-only in
35
+ * a table row or a sheet header, where there is no room for the word.
36
+ */
37
+ showLabel?: boolean;
31
38
  onSuccess?: () => void | Promise<void>;
32
39
  /** Fired after a successful delete, in addition to redirect/onSuccess. */
33
40
  propagateChanges?: () => void;
@@ -43,10 +50,15 @@ export function CommonDeleter({
43
50
  forceShow,
44
51
  testId,
45
52
  trigger,
53
+ showLabel,
46
54
  onSuccess,
47
55
  propagateChanges,
48
56
  }: CommonDeleterProps) {
49
57
  const t = useI18nTranslations();
58
+ // Called unconditionally: `showLabel ?? useIsInActionBar()` would skip the
59
+ // hook whenever the prop is set, breaking the rules of hooks.
60
+ const inActionBar = useIsInActionBar();
61
+ const isLabelled = showLabel ?? inActionBar;
50
62
  const router = useI18nRouter();
51
63
  const [open, setOpen] = useState<boolean>(forceShow || false);
52
64
  const [isDeleting, setIsDeleting] = useState<boolean>(false);
@@ -80,11 +92,12 @@ export function CommonDeleter({
80
92
  render={<div />}
81
93
  nativeButton={false}
82
94
  size="sm"
83
- variant={"ghost"}
95
+ variant={isLabelled ? "outline" : "ghost"}
84
96
  className="text-muted-foreground hover:text-destructive"
85
97
  data-testid={testId}
86
98
  >
87
99
  <Trash2Icon />
100
+ {isLabelled && t(`ui.buttons.delete`)}
88
101
  </Button>
89
102
  )}
90
103
  </AlertDialogTrigger>
@@ -4,6 +4,7 @@ import { useTranslations } from "next-intl";
4
4
  import { isValidElement, ReactElement, ReactNode, useCallback, useEffect, useRef } from "react";
5
5
  import { FieldValues, UseFormReturn } from "react-hook-form";
6
6
  import { PencilIcon } from "lucide-react";
7
+ import { ActionBarProvider, useIsInActionBar } from "../../contexts/ActionBarContext";
7
8
  import { ModuleWithPermissions } from "../../permissions/types";
8
9
  import { usePageUrlGenerator } from "../../hooks/usePageUrlGenerator";
9
10
  import {
@@ -109,6 +110,13 @@ export type EditorSheetProps<T extends FieldValues> = {
109
110
  centerButtons?: ReactNode;
110
111
 
111
112
  trigger?: ReactNode;
113
+ /**
114
+ * Force the default edit trigger to show / hide its text label. Left unset it
115
+ * follows `useIsInActionBar()`: labelled in a page action bar, glyph-only in
116
+ * a table row or an inline cell, where there is no room for the word. The
117
+ * create trigger is always labelled.
118
+ */
119
+ showLabel?: boolean;
112
120
  forceShow?: boolean;
113
121
  onClose?: () => void;
114
122
  dialogOpen?: boolean;
@@ -154,6 +162,7 @@ export function EditorSheet<T extends FieldValues>({
154
162
  hideSubmit,
155
163
  centerButtons,
156
164
  trigger,
165
+ showLabel,
157
166
  forceShow,
158
167
  onClose,
159
168
  dialogOpen,
@@ -164,6 +173,8 @@ export function EditorSheet<T extends FieldValues>({
164
173
  }: EditorSheetProps<T>) {
165
174
  const t = useTranslations();
166
175
  const generateUrl = usePageUrlGenerator();
176
+ const inActionBar = useIsInActionBar();
177
+ const isLabelled = showLabel ?? inActionBar;
167
178
 
168
179
  const defaultIsFormDirty = useCallback(() => {
169
180
  return Object.keys(form.formState.dirtyFields).length > 0;
@@ -285,16 +296,18 @@ export function EditorSheet<T extends FieldValues>({
285
296
  render={
286
297
  isEdit ? (
287
298
  <Button
299
+ data-help="editor.edit"
288
300
  render={<div />}
289
301
  nativeButton={false}
290
302
  size="sm"
291
- variant="ghost"
303
+ variant={isLabelled ? "outline" : "ghost"}
292
304
  className="text-muted-foreground"
293
305
  >
294
306
  <PencilIcon />
307
+ {isLabelled && t("ui.buttons.edit")}
295
308
  </Button>
296
309
  ) : (
297
- <Button render={<div />} nativeButton={false} size="sm" variant="outline">
310
+ <Button data-help="editor.create" render={<div />} nativeButton={false} size="sm" variant="outline">
298
311
  {t("ui.buttons.create")}
299
312
  </Button>
300
313
  )
@@ -302,53 +315,59 @@ export function EditorSheet<T extends FieldValues>({
302
315
  />
303
316
  ))}
304
317
  <SheetContent side="end" className={sizeClasses[size]}>
305
- <SheetHeader className="border-b px-6 py-4">
306
- {actions ? (
307
- // pe-10 clears the SheetContent close button, which sits at the
308
- // inline end of the sheet (absolute top-4 end-4).
309
- <div className="flex items-start justify-between gap-x-4 pe-10">
310
- <div className="flex min-w-0 flex-col gap-y-1.5">
318
+ {/* The sheet's own content is NOT the action bar, even when the
319
+ trigger that opened it lives there — context flows through the
320
+ portal, so reset it or a CommonDeleter passed as `actions` would
321
+ inherit the bar's labelled trigger. */}
322
+ <ActionBarProvider value={false}>
323
+ <SheetHeader className="border-b px-6 py-4">
324
+ {actions ? (
325
+ // pe-10 clears the SheetContent close button, which sits at the
326
+ // inline end of the sheet (absolute top-4 end-4).
327
+ <div className="flex items-start justify-between gap-x-4 pe-10">
328
+ <div className="flex min-w-0 flex-col gap-y-1.5">
329
+ <SheetTitle>{headerTitle}</SheetTitle>
330
+ <SheetDescription>{headerDescription}</SheetDescription>
331
+ </div>
332
+ <div className="flex shrink-0 items-center gap-x-2">{actions}</div>
333
+ </div>
334
+ ) : (
335
+ <>
311
336
  <SheetTitle>{headerTitle}</SheetTitle>
312
337
  <SheetDescription>{headerDescription}</SheetDescription>
313
- </div>
314
- <div className="flex shrink-0 items-center gap-x-2">{actions}</div>
315
- </div>
316
- ) : (
317
- <>
318
- <SheetTitle>{headerTitle}</SheetTitle>
319
- <SheetDescription>{headerDescription}</SheetDescription>
320
- </>
321
- )}
322
- </SheetHeader>
323
- <Form {...form}>
324
- <form
325
- onSubmit={(e) => {
326
- // The Sheet content is portaled, but React synthetic events still
327
- // bubble up the React tree — so without stopPropagation an inner
328
- // EditorSheet's submit also triggers the outer form's submit
329
- // (e.g. a create dialog opened from within another editor).
330
- e.stopPropagation();
331
- return form.handleSubmit(wrappedOnSubmit)(e);
332
- }}
333
- className="flex min-h-0 flex-1 flex-col"
334
- >
335
- <div className="flex-1 overflow-y-auto px-6 py-4">{children}</div>
336
- <SheetFooter className="shrink-0 border-t px-6 py-4">
337
- {renderFooter ? (
338
- renderFooter({ form, isEdit, setOpen: handleOpenChange, closeWithoutConfirm: setOpen })
339
- ) : (
340
- <CommonEditorButtons
341
- form={form}
342
- setOpen={handleOpenChange}
343
- isEdit={isEdit}
344
- disabled={disabled}
345
- hideSubmit={hideSubmit}
346
- centerButtons={centerButtons}
347
- />
348
- )}
349
- </SheetFooter>
350
- </form>
351
- </Form>
338
+ </>
339
+ )}
340
+ </SheetHeader>
341
+ <Form {...form}>
342
+ <form
343
+ onSubmit={(e) => {
344
+ // The Sheet content is portaled, but React synthetic events still
345
+ // bubble up the React tree — so without stopPropagation an inner
346
+ // EditorSheet's submit also triggers the outer form's submit
347
+ // (e.g. a create dialog opened from within another editor).
348
+ e.stopPropagation();
349
+ return form.handleSubmit(wrappedOnSubmit)(e);
350
+ }}
351
+ className="flex min-h-0 flex-1 flex-col"
352
+ >
353
+ <div className="flex-1 overflow-y-auto px-6 py-4">{children}</div>
354
+ <SheetFooter className="shrink-0 border-t px-6 py-4">
355
+ {renderFooter ? (
356
+ renderFooter({ form, isEdit, setOpen: handleOpenChange, closeWithoutConfirm: setOpen })
357
+ ) : (
358
+ <CommonEditorButtons
359
+ form={form}
360
+ setOpen={handleOpenChange}
361
+ isEdit={isEdit}
362
+ disabled={disabled}
363
+ hideSubmit={hideSubmit}
364
+ centerButtons={centerButtons}
365
+ />
366
+ )}
367
+ </SheetFooter>
368
+ </form>
369
+ </Form>
370
+ </ActionBarProvider>
352
371
  </SheetContent>
353
372
  </Sheet>
354
373
  <CommonEditorDiscardDialog {...discardDialogProps} />
@@ -43,7 +43,7 @@ export function ContentListGrid<T>(props: ContentListGridProps<T>) {
43
43
  }, [data.next]);
44
44
 
45
45
  return (
46
- <div className="flex w-full flex-col">
46
+ <div data-help="list.grid" className="flex w-full flex-col">
47
47
  <div className={cn("overflow-clip", fullWidth ? "" : "rounded-md border")}>
48
48
  {props.title !== undefined && (
49
49
  <div className="bg-card text-primary flex items-center justify-between gap-x-2 rounded-t-lg border-b p-4 font-bold">
@@ -70,6 +70,7 @@ export function MobileNavigationBar({ className }: { className?: string } = {})
70
70
  <nav
71
71
  aria-label="Primary"
72
72
  data-testid="mobile-navigation-bar"
73
+ data-help="shell.mobile-nav"
73
74
  className={cn("bg-sidebar flex w-full shrink-0 flex-row items-stretch rounded-lg border", className)}
74
75
  >
75
76
  {items.map((item) => {
@@ -169,7 +169,7 @@ export const ContentListTable = memo(function ContentListTable(props: ContentLis
169
169
  const titleIsLarge = (props.titleSize ?? (fullWidth ? `lg` : `sm`)) === `lg`;
170
170
 
171
171
  return (
172
- <div className="flex w-full flex-col">
172
+ <div data-help="list.table" className="flex w-full flex-col">
173
173
  {/* <div className="overflow-clip rounded-md border"> */}
174
174
  <div className={cn(`overflow-clip`, fullWidth ? `` : `rounded-md border`)}>
175
175
  <Table>