@carlonicora/nextjs-jsonapi 3.9.0 → 3.11.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-K55A4FS2.css +30 -0
  2. package/dist/BlockNoteEditor-K55A4FS2.css.map +1 -0
  3. package/dist/{BlockNoteEditor-RGMU2O24.mjs → BlockNoteEditor-NBHDEZ7W.mjs} +4 -4
  4. package/dist/{BlockNoteEditor-WY4LFMXQ.js → BlockNoteEditor-XOVNTXDY.js} +19 -19
  5. package/dist/{BlockNoteEditor-WY4LFMXQ.js.map → BlockNoteEditor-XOVNTXDY.js.map} +1 -1
  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-UYLS3LJW.js → chunk-6J2SQZ3G.js} +11 -1
  15. package/dist/chunk-6J2SQZ3G.js.map +1 -0
  16. package/dist/{chunk-2D4MFVDV.mjs → chunk-IMSIVIIC.mjs} +2 -2
  17. package/dist/{chunk-HDZ2BL6D.mjs → chunk-M5QAHSCY.mjs} +11 -1
  18. package/dist/{chunk-HDZ2BL6D.mjs.map → chunk-M5QAHSCY.mjs.map} +1 -1
  19. package/dist/{chunk-TULJCLZA.js → chunk-V6CGCARD.js} +7 -7
  20. package/dist/{chunk-TULJCLZA.js.map → chunk-V6CGCARD.js.map} +1 -1
  21. package/dist/{chunk-7PNGCZES.mjs → chunk-XNGI4HDZ.mjs} +1529 -1286
  22. package/dist/chunk-XNGI4HDZ.mjs.map +1 -0
  23. package/dist/{chunk-DOLEXUO3.js → chunk-YN4LOVL4.js} +1301 -1058
  24. package/dist/chunk-YN4LOVL4.js.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 +46 -14
  32. package/dist/components/index.d.ts +46 -14
  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 +28 -4
  39. package/dist/contexts/index.d.ts +28 -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 +2 -1
  68. package/src/components/containers/RoundPageContainerTitle.tsx +6 -1
  69. package/src/components/containers/TabsContainer.tsx +1 -0
  70. package/src/components/forms/EditorSheet.tsx +2 -1
  71. package/src/components/grids/ContentListGrid.tsx +1 -1
  72. package/src/components/navigations/Breadcrumb.tsx +21 -9
  73. package/src/components/navigations/Header.tsx +3 -1
  74. package/src/components/navigations/MobileNavigationBar.tsx +1 -0
  75. package/src/components/tables/ContentListTable.tsx +1 -1
  76. package/src/components/tables/ContentTableSearch.tsx +1 -0
  77. package/src/components/viewers/BlockNoteViewer.tsx +13 -2
  78. package/src/components/viewers/BlockNoteViewerContainer.tsx +4 -1
  79. package/src/contexts/BreadcrumbRootContext.tsx +28 -0
  80. package/src/contexts/index.ts +1 -0
  81. package/src/features/assistant/components/index.ts +2 -0
  82. package/src/features/assistant/components/parts/AssistantComposer.tsx +1 -1
  83. package/src/features/assistant/components/parts/__tests__/AssistantComposer.spec.tsx +2 -2
  84. package/src/features/assistant-action/components/ApprovalActionCard.tsx +325 -4
  85. package/src/features/assistant-action/components/__tests__/ApprovalActionCard.spec.tsx +268 -0
  86. package/src/features/assistant-action/data/AssistantAction.ts +12 -0
  87. package/src/features/assistant-action/data/AssistantActionInterface.ts +9 -0
  88. package/src/features/assistant-action/data/__tests__/AssistantAction.spec.ts +11 -0
  89. package/src/features/help/index.ts +1 -0
  90. package/src/features/onboarding/components/OnboardingCard.tsx +1 -2
  91. package/src/features/onboarding/contexts/OnboardingContext.spec.tsx +191 -0
  92. package/src/features/onboarding/contexts/OnboardingContext.tsx +176 -125
  93. package/src/features/onboarding/interfaces/onboarding.interface.ts +4 -0
  94. package/src/features/onboarding/styles/onboarding.css +25 -30
  95. package/src/features/tokenusage/components/TokenUsageReportFilterBar.tsx +1 -1
  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-7PNGCZES.mjs.map +0 -1
  101. package/dist/chunk-DOLEXUO3.js.map +0 -1
  102. package/dist/chunk-UYLS3LJW.js.map +0 -1
  103. /package/dist/{BlockNoteEditor-RGMU2O24.mjs.map → BlockNoteEditor-NBHDEZ7W.mjs.map} +0 -0
  104. /package/dist/{chunk-2D4MFVDV.mjs.map → chunk-IMSIVIIC.mjs.map} +0 -0
@@ -200,7 +200,7 @@
200
200
 
201
201
 
202
202
 
203
- var _chunkUYLS3LJWjs = require('../chunk-UYLS3LJW.js');
203
+ var _chunk6J2SQZ3Gjs = require('../chunk-6J2SQZ3G.js');
204
204
  require('../chunk-LXKSUWAV.js');
205
205
  require('../chunk-IBS6NI7D.js');
206
206
 
@@ -429,5 +429,5 @@ require('../chunk-7QVYU63E.js');
429
429
 
430
430
 
431
431
 
432
- 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.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.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.PermissionMappingModule = _chunkUYLS3LJWjs.PermissionMappingModule; exports.Push = _chunkUYLS3LJWjs.Push; exports.PushModule = _chunkUYLS3LJWjs.PushModule; exports.PushService = _chunkUYLS3LJWjs.PushService; exports.RbacMatrixModule = _chunkUYLS3LJWjs.RbacMatrixModule; 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.configureTokenUsage = _chunkUYLS3LJWjs.configureTokenUsage; 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.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.getTableComponents = _chunkUYLS3LJWjs.getTableComponents; exports.getTableOptions = _chunkUYLS3LJWjs.getTableOptions; exports.getTokenUsageCurrency = _chunkUYLS3LJWjs.getTokenUsageCurrency; exports.getValueFromPath = _chunkUYLS3LJWjs.getValueFromPath; exports.hasBootstrapper = _chunkLU7DJ4QFjs.hasBootstrapper; exports.isRemoteImageSrc = _chunkUYLS3LJWjs.isRemoteImageSrc; 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;
432
+ 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.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.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.PermissionMappingModule = _chunk6J2SQZ3Gjs.PermissionMappingModule; exports.Push = _chunk6J2SQZ3Gjs.Push; exports.PushModule = _chunk6J2SQZ3Gjs.PushModule; exports.PushService = _chunk6J2SQZ3Gjs.PushService; exports.RbacMatrixModule = _chunk6J2SQZ3Gjs.RbacMatrixModule; 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.configureTokenUsage = _chunk6J2SQZ3Gjs.configureTokenUsage; 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.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.getTableComponents = _chunk6J2SQZ3Gjs.getTableComponents; exports.getTableOptions = _chunk6J2SQZ3Gjs.getTableOptions; exports.getTokenUsageCurrency = _chunk6J2SQZ3Gjs.getTokenUsageCurrency; exports.getValueFromPath = _chunk6J2SQZ3Gjs.getValueFromPath; exports.hasBootstrapper = _chunkLU7DJ4QFjs.hasBootstrapper; exports.isRemoteImageSrc = _chunk6J2SQZ3Gjs.isRemoteImageSrc; 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;
433
433
  //# sourceMappingURL=index.js.map
@@ -200,7 +200,7 @@ import {
200
200
  validateCodiceFiscale,
201
201
  validateItalianTaxCode,
202
202
  validatePartitaIva
203
- } from "../chunk-HDZ2BL6D.mjs";
203
+ } from "../chunk-M5QAHSCY.mjs";
204
204
  import "../chunk-AUXK7QSA.mjs";
205
205
  import "../chunk-C7C7VY4F.mjs";
206
206
  import {
@@ -1,29 +1,30 @@
1
1
  /* src/features/onboarding/styles/onboarding.css */
2
- .shepherd-modal-overlay-container.shepherd-modal-is-visible {
3
- opacity: 1 !important;
2
+ .driver-popover.onboarding-popover {
3
+ background: transparent;
4
+ box-shadow: none;
5
+ padding: 0;
6
+ border-radius: 0;
7
+ max-width: none;
8
+ width: auto;
9
+ overflow: visible;
10
+ color: inherit;
4
11
  }
5
- .shepherd-modal-overlay-container path {
6
- fill: rgba(0, 0, 0, 0.75) !important;
12
+ .driver-popover.onboarding-popover .driver-popover-title,
13
+ .driver-popover.onboarding-popover .driver-popover-description,
14
+ .driver-popover.onboarding-popover .driver-popover-footer,
15
+ .driver-popover.onboarding-popover .driver-popover-close-btn {
16
+ display: none;
7
17
  }
8
- .shepherd-element {
9
- background: transparent !important;
10
- border: none !important;
11
- box-shadow: none !important;
12
- padding: 0 !important;
13
- max-width: none !important;
18
+ .driver-popover.onboarding-popover .driver-popover-arrow-side-top {
19
+ border-top-color: var(--card);
14
20
  }
15
- .shepherd-content,
16
- .shepherd-text {
17
- padding: 0 !important;
21
+ .driver-popover.onboarding-popover .driver-popover-arrow-side-bottom {
22
+ border-bottom-color: var(--card);
18
23
  }
19
- .shepherd-arrow::before {
20
- background: hsl(var(--card)) !important;
24
+ .driver-popover.onboarding-popover .driver-popover-arrow-side-left {
25
+ border-left-color: var(--card);
21
26
  }
22
- .shepherd-header,
23
- .shepherd-footer {
24
- display: none !important;
25
- }
26
- .dark .shepherd-arrow::before {
27
- background: hsl(var(--card)) !important;
27
+ .driver-popover.onboarding-popover .driver-popover-arrow-side-right {
28
+ border-right-color: var(--card);
28
29
  }
29
30
  /*# sourceMappingURL=index.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/features/onboarding/styles/onboarding.css"],"sourcesContent":["/* Shepherd Modal Overlay */\n.shepherd-modal-overlay-container.shepherd-modal-is-visible {\n opacity: 1 !important;\n}\n\n.shepherd-modal-overlay-container path {\n fill: rgba(0, 0, 0, 0.75) !important;\n}\n\n/* Remove default shepherd styling - we use custom React card */\n.shepherd-element {\n background: transparent !important;\n border: none !important;\n box-shadow: none !important;\n padding: 0 !important;\n max-width: none !important;\n}\n\n.shepherd-content,\n.shepherd-text {\n padding: 0 !important;\n}\n\n/* Arrow styling to match card background */\n.shepherd-arrow::before {\n background: hsl(var(--card)) !important;\n}\n\n/* Hide default Shepherd header and footer - we render custom ones */\n.shepherd-header,\n.shepherd-footer {\n display: none !important;\n}\n\n/* Dark mode support */\n.dark .shepherd-arrow::before {\n background: hsl(var(--card)) !important;\n}\n"],"mappings":";AACA,CAAC,gCAAgC,CAAC;AAChC,WAAS;AACX;AAEA,CAJC,iCAIiC;AAChC,QAAM,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;AACtB;AAGA,CAAC;AACC,cAAY;AACZ,UAAQ;AACR,cAAY;AACZ,WAAS;AACT,aAAW;AACb;AAEA,CAAC;AACD,CAAC;AACC,WAAS;AACX;AAGA,CAAC,cAAc;AACb,cAAY,IAAI,IAAI;AACtB;AAGA,CAAC;AACD,CAAC;AACC,WAAS;AACX;AAGA,CAAC,KAAK,CAXL,cAWoB;AACnB,cAAY,IAAI,IAAI;AACtB;","names":[]}
1
+ {"version":3,"sources":["../../../src/features/onboarding/styles/onboarding.css"],"sourcesContent":["/* driver.js chrome is hidden: the React card mounted by OnboardingContext is the whole popover. */\n.driver-popover.onboarding-popover {\n background: transparent;\n box-shadow: none;\n padding: 0;\n border-radius: 0;\n max-width: none;\n width: auto;\n /* The card is the popover; driver.js's own clipping would cut it off. */\n overflow: visible;\n color: inherit;\n}\n\n.driver-popover.onboarding-popover .driver-popover-title,\n.driver-popover.onboarding-popover .driver-popover-description,\n.driver-popover.onboarding-popover .driver-popover-footer,\n.driver-popover.onboarding-popover .driver-popover-close-btn {\n display: none;\n}\n\n/* Arrow colour follows the card surface so it reads as part of it. */\n.driver-popover.onboarding-popover .driver-popover-arrow-side-top {\n border-top-color: var(--card);\n}\n.driver-popover.onboarding-popover .driver-popover-arrow-side-bottom {\n border-bottom-color: var(--card);\n}\n.driver-popover.onboarding-popover .driver-popover-arrow-side-left {\n border-left-color: var(--card);\n}\n.driver-popover.onboarding-popover .driver-popover-arrow-side-right {\n border-right-color: var(--card);\n}\n"],"mappings":";AACA,CAAC,cAAc,CAAC;AACd,cAAY;AACZ,cAAY;AACZ,WAAS;AACT,iBAAe;AACf,aAAW;AACX,SAAO;AAEP,YAAU;AACV,SAAO;AACT;AAEA,CAZC,cAYc,CAZC,mBAYmB,CAAC;AACpC,CAbC,cAac,CAbC,mBAamB,CAAC;AACpC,CAdC,cAcc,CAdC,mBAcmB,CAAC;AACpC,CAfC,cAec,CAfC,mBAemB,CAAC;AAClC,WAAS;AACX;AAGA,CApBC,cAoBc,CApBC,mBAoBmB,CAAC;AAClC,oBAAkB,IAAI;AACxB;AACA,CAvBC,cAuBc,CAvBC,mBAuBmB,CAAC;AAClC,uBAAqB,IAAI;AAC3B;AACA,CA1BC,cA0Bc,CA1BC,mBA0BmB,CAAC;AAClC,qBAAmB,IAAI;AACzB;AACA,CA7BC,cA6Bc,CA7BC,mBA6BmB,CAAC;AAClC,sBAAoB,IAAI;AAC1B;","names":[]}
@@ -43,6 +43,11 @@ declare function HelpHint({ contextKey }: {
43
43
 
44
44
  declare function HelpAskAi(): React.JSX.Element;
45
45
 
46
+ declare function HelpAssistantSheet({ open, onOpenChange }: {
47
+ open: boolean;
48
+ onOpenChange: (o: boolean) => void;
49
+ }): React.JSX.Element;
50
+
46
51
  interface HelpSearchResultRowProps {
47
52
  result: {
48
53
  id: string;
@@ -71,4 +76,4 @@ declare function modeUrl(generateUrl: ReturnType<typeof usePageUrlGenerator>, mo
71
76
  */
72
77
  declare const HELP_I18N_KEYS: readonly ["help.modes.tutorial", "help.modes.how-to", "help.modes.reference", "help.modes.explanation", "help.sideNav.filterPlaceholder", "help.sideNav.noMatches", "help.toc.title", "help.article.lastUpdated", "help.article.previous", "help.article.next", "help.article.related", "help.askAi.button", "help.askAi.loginTooltip", "help.askAi.sheet.title", "help.askAi.sheet.subtitle", "help.header.search", "help.header.login", "help.header.openApp", "help.hint.trigger", "help.hint.viewArticle", "help.hint.pickArticle", "help.landing.heading", "help.landing.subheading", "help.landing.featuredTutorials", "help.landing.browseByMode", "help.modeIndex.empty", "help.search.removed", "help.footerLink"];
73
78
 
74
- export { HELP_I18N_KEYS, HelpArticle, HelpArticleBody, HelpAskAi, HelpContentConfig, HelpHeader, HelpHeading, HelpHint, HelpMode, HelpProvider, HelpSearchResultRow, HelpSideNav, HelpTOC, articleUrl, modeUrl, useHelp, useHelpFilter };
79
+ export { HELP_I18N_KEYS, HelpArticle, HelpArticleBody, HelpAskAi, HelpAssistantSheet, HelpContentConfig, HelpHeader, HelpHeading, HelpHint, HelpMode, HelpProvider, HelpSearchResultRow, HelpSideNav, HelpTOC, articleUrl, modeUrl, useHelp, useHelpFilter };
@@ -43,6 +43,11 @@ declare function HelpHint({ contextKey }: {
43
43
 
44
44
  declare function HelpAskAi(): React.JSX.Element;
45
45
 
46
+ declare function HelpAssistantSheet({ open, onOpenChange }: {
47
+ open: boolean;
48
+ onOpenChange: (o: boolean) => void;
49
+ }): React.JSX.Element;
50
+
46
51
  interface HelpSearchResultRowProps {
47
52
  result: {
48
53
  id: string;
@@ -71,4 +76,4 @@ declare function modeUrl(generateUrl: ReturnType<typeof usePageUrlGenerator>, mo
71
76
  */
72
77
  declare const HELP_I18N_KEYS: readonly ["help.modes.tutorial", "help.modes.how-to", "help.modes.reference", "help.modes.explanation", "help.sideNav.filterPlaceholder", "help.sideNav.noMatches", "help.toc.title", "help.article.lastUpdated", "help.article.previous", "help.article.next", "help.article.related", "help.askAi.button", "help.askAi.loginTooltip", "help.askAi.sheet.title", "help.askAi.sheet.subtitle", "help.header.search", "help.header.login", "help.header.openApp", "help.hint.trigger", "help.hint.viewArticle", "help.hint.pickArticle", "help.landing.heading", "help.landing.subheading", "help.landing.featuredTutorials", "help.landing.browseByMode", "help.modeIndex.empty", "help.search.removed", "help.footerLink"];
73
78
 
74
- export { HELP_I18N_KEYS, HelpArticle, HelpArticleBody, HelpAskAi, HelpContentConfig, HelpHeader, HelpHeading, HelpHint, HelpMode, HelpProvider, HelpSearchResultRow, HelpSideNav, HelpTOC, articleUrl, modeUrl, useHelp, useHelpFilter };
79
+ export { HELP_I18N_KEYS, HelpArticle, HelpArticleBody, HelpAskAi, HelpAssistantSheet, HelpContentConfig, HelpHeader, HelpHeading, HelpHint, HelpMode, HelpProvider, HelpSearchResultRow, HelpSideNav, HelpTOC, articleUrl, modeUrl, useHelp, useHelpFilter };
@@ -23,13 +23,13 @@ var _chunkYBZVWLPHjs = require('../../chunk-YBZVWLPH.js');
23
23
 
24
24
 
25
25
 
26
- var _chunkDOLEXUO3js = require('../../chunk-DOLEXUO3.js');
26
+ var _chunkYN4LOVL4js = require('../../chunk-YN4LOVL4.js');
27
27
 
28
28
 
29
- var _chunkTULJCLZAjs = require('../../chunk-TULJCLZA.js');
29
+ var _chunkV6CGCARDjs = require('../../chunk-V6CGCARD.js');
30
30
 
31
31
 
32
- var _chunkUYLS3LJWjs = require('../../chunk-UYLS3LJW.js');
32
+ var _chunk6J2SQZ3Gjs = require('../../chunk-6J2SQZ3G.js');
33
33
  require('../../chunk-LXKSUWAV.js');
34
34
  require('../../chunk-IBS6NI7D.js');
35
35
  require('../../chunk-LU7DJ4QF.js');
@@ -43,7 +43,7 @@ var _react = require('react');
43
43
  var _jsxruntime = require('react/jsx-runtime');
44
44
  var HelpContext = _react.createContext.call(void 0, null);
45
45
  function HelpProvider({ children }) {
46
- const cfg = _chunkTULJCLZAjs._getStaticHelpContent.call(void 0, );
46
+ const cfg = _chunkV6CGCARDjs._getStaticHelpContent.call(void 0, );
47
47
  if (!cfg) {
48
48
  throw new Error(
49
49
  "Help content not configured \u2014 call configureJsonApi({ helpContent: {...} }) before importing help components."
@@ -75,29 +75,29 @@ var _lucidereact = require('lucide-react');
75
75
 
76
76
 
77
77
  function HelpAssistantSheet({ open, onOpenChange }) {
78
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.Sheet, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
79
- _chunkDOLEXUO3js.SheetContent,
78
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.Sheet, { open, onOpenChange, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
79
+ _chunkYN4LOVL4js.SheetContent,
80
80
  {
81
81
  side: "end",
82
82
  className: "flex w-full flex-col data-[side=right]:sm:max-w-2xl data-[side=right]:lg:max-w-3xl data-[side=left]:sm:max-w-2xl data-[side=left]:lg:max-w-3xl",
83
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.AssistantProvider, { manageUrl: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpAssistantSheetBody, {}) })
83
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.AssistantProvider, { manageUrl: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpAssistantSheetBody, {}) })
84
84
  }
85
85
  ) });
86
86
  }
87
87
  _chunk7QVYU63Ejs.__name.call(void 0, HelpAssistantSheet, "HelpAssistantSheet");
88
88
  function HelpAssistantSheetBody() {
89
89
  const t = _nextintl.useTranslations.call(void 0, );
90
- const ctx = _chunkDOLEXUO3js.useAssistantContext.call(void 0, );
90
+ const ctx = _chunkYN4LOVL4js.useAssistantContext.call(void 0, );
91
91
  const showThread = !!ctx.assistant || ctx.sending || ctx.messages.length > 0;
92
92
  const send = /* @__PURE__ */ _chunk7QVYU63Ejs.__name.call(void 0, (content) => ctx.sendMessage(content, { howToMode: true }), "send");
93
93
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
94
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDOLEXUO3js.SheetHeader, { children: [
95
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.SheetTitle, { children: t("help.askAi.sheet.title") }),
96
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.SheetDescription, { children: t("help.askAi.sheet.subtitle") })
94
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYN4LOVL4js.SheetHeader, { children: [
95
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.SheetTitle, { children: t("help.askAi.sheet.title") }),
96
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.SheetDescription, { children: t("help.askAi.sheet.subtitle") })
97
97
  ] }),
98
- !showThread ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.AssistantEmptyState, { onSend: send }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
98
+ !showThread ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.AssistantEmptyState, { onSend: send }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
99
99
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
100
- _chunkDOLEXUO3js.AssistantThread,
100
+ _chunkYN4LOVL4js.AssistantThread,
101
101
  {
102
102
  messages: ctx.messages,
103
103
  sending: ctx.sending,
@@ -107,7 +107,7 @@ function HelpAssistantSheetBody() {
107
107
  onRetry: ctx.retrySend
108
108
  }
109
109
  ),
110
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.AssistantComposer, { onSend: send, disabled: ctx.sending })
110
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.AssistantComposer, { onSend: send, disabled: ctx.sending })
111
111
  ] })
112
112
  ] });
113
113
  }
@@ -117,20 +117,20 @@ _chunk7QVYU63Ejs.__name.call(void 0, HelpAssistantSheetBody, "HelpAssistantSheet
117
117
 
118
118
  function HelpAskAi() {
119
119
  const t = _nextintl.useTranslations.call(void 0, );
120
- const { currentUser } = _chunkDOLEXUO3js.useCurrentUserContext.call(void 0, );
120
+ const { currentUser } = _chunkYN4LOVL4js.useCurrentUserContext.call(void 0, );
121
121
  const [open, setOpen] = _react.useState.call(void 0, false);
122
122
  const disabled = !currentUser;
123
123
  if (disabled) {
124
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDOLEXUO3js.Tooltip, { children: [
125
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDOLEXUO3js.TooltipTrigger, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.Button, { variant: "outline", size: "sm", disabled: true }), children: [
124
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYN4LOVL4js.Tooltip, { children: [
125
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYN4LOVL4js.TooltipTrigger, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.Button, { variant: "outline", size: "sm", disabled: true }), children: [
126
126
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.SparklesIcon, { className: "h-4 w-4" }),
127
127
  t("help.askAi.button")
128
128
  ] }),
129
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.TooltipContent, { children: t("help.askAi.loginTooltip") })
129
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.TooltipContent, { children: t("help.askAi.loginTooltip") })
130
130
  ] });
131
131
  }
132
132
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
133
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDOLEXUO3js.Button, { variant: "outline", size: "sm", onClick: () => setOpen(true), children: [
133
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYN4LOVL4js.Button, { variant: "outline", size: "sm", onClick: () => setOpen(true), children: [
134
134
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.SparklesIcon, { className: "h-4 w-4" }),
135
135
  t("help.askAi.button")
136
136
  ] }),
@@ -143,7 +143,7 @@ _chunk7QVYU63Ejs.__name.call(void 0, HelpAskAi, "HelpAskAi");
143
143
 
144
144
  function HelpHeader() {
145
145
  const t = _nextintl.useTranslations.call(void 0, );
146
- const { currentUser } = _chunkDOLEXUO3js.useCurrentUserContext.call(void 0, );
146
+ const { currentUser } = _chunkYN4LOVL4js.useCurrentUserContext.call(void 0, );
147
147
  const { brand } = useHelp();
148
148
  const logo = _optionalChain([brand, 'optionalAccess', _ => _.logo]);
149
149
  const label = _nullishCoalesce(_optionalChain([brand, 'optionalAccess', _2 => _2.label]), () => ( "Help"));
@@ -159,7 +159,7 @@ function HelpHeader() {
159
159
  ] }),
160
160
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
161
161
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HelpAskAi, {}),
162
- currentUser ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _link2.default, { href: appHref, className: _chunkDOLEXUO3js.buttonVariants.call(void 0, { variant: "outline", size: "sm" }), children: t("help.header.openApp") }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _link2.default, { href: "/login", className: _chunkDOLEXUO3js.buttonVariants.call(void 0, { variant: "outline", size: "sm" }), children: t("help.header.login") })
162
+ currentUser ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _link2.default, { href: appHref, className: _chunkYN4LOVL4js.buttonVariants.call(void 0, { variant: "outline", size: "sm" }), children: t("help.header.openApp") }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _link2.default, { href: "/login", className: _chunkYN4LOVL4js.buttonVariants.call(void 0, { variant: "outline", size: "sm" }), children: t("help.header.login") })
163
163
  ] })
164
164
  ] });
165
165
  }
@@ -201,12 +201,12 @@ _chunk7QVYU63Ejs.__name.call(void 0, useHelpFilter, "useHelpFilter");
201
201
 
202
202
  function HelpSideNav() {
203
203
  const t = _nextintl.useTranslations.call(void 0, );
204
- const generateUrl = _chunkDOLEXUO3js.usePageUrlGenerator.call(void 0, );
204
+ const generateUrl = _chunkYN4LOVL4js.usePageUrlGenerator.call(void 0, );
205
205
  const pathname = _navigation.usePathname.call(void 0, );
206
206
  const [articles, setArticles] = _react.useState.call(void 0, []);
207
207
  _react.useEffect.call(void 0, () => {
208
208
  let active = true;
209
- _chunkUYLS3LJWjs.HowToService.findPublished().then((list) => active && setArticles(list)).catch(() => active && setArticles([]));
209
+ _chunk6J2SQZ3Gjs.HowToService.findPublished().then((list) => active && setArticles(list)).catch(() => active && setArticles([]));
210
210
  return () => {
211
211
  active = false;
212
212
  };
@@ -282,7 +282,7 @@ _chunk7QVYU63Ejs.__name.call(void 0, HelpSideNav, "HelpSideNav");
282
282
  function HelpArticleBody(props) {
283
283
  const t = _nextintl.useTranslations.call(void 0, );
284
284
  const format = _nextintl.useFormatter.call(void 0, );
285
- const generateUrl = _chunkDOLEXUO3js.usePageUrlGenerator.call(void 0, );
285
+ const generateUrl = _chunkYN4LOVL4js.usePageUrlGenerator.call(void 0, );
286
286
  const { howToType, title, summary, updatedAt, prev, next, children } = props;
287
287
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: "prose dark:prose-invert max-w-none", children: [
288
288
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "nav", { className: "text-muted-foreground mb-2 text-xs", children: [
@@ -339,7 +339,7 @@ function HelpTOC({ headings }) {
339
339
  }, [headings]);
340
340
  if (headings.length === 0) return null;
341
341
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "nav", { "aria-label": t("help.toc.title"), className: "hidden lg:block", children: [
342
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.MicroLabel, { className: "mb-2", children: t("help.toc.title") }),
342
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.MicroLabel, { className: "mb-2", children: t("help.toc.title") }),
343
343
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "ul", { className: "space-y-1 text-sm", children: headings.map((h) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "li", { style: { paddingInlineStart: `${(h.depth - 2) * 0.75}rem` }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
344
344
  "a",
345
345
  {
@@ -360,13 +360,13 @@ _chunk7QVYU63Ejs.__name.call(void 0, HelpTOC, "HelpTOC");
360
360
 
361
361
  function HelpHint({ contextKey }) {
362
362
  const t = _nextintl.useTranslations.call(void 0, );
363
- const generateUrl = _chunkDOLEXUO3js.usePageUrlGenerator.call(void 0, );
363
+ const generateUrl = _chunkYN4LOVL4js.usePageUrlGenerator.call(void 0, );
364
364
  const [open, setOpen] = _react.useState.call(void 0, false);
365
365
  const [picked, setPicked] = _react.useState.call(void 0, null);
366
366
  const [articles, setArticles] = _react.useState.call(void 0, []);
367
367
  _react.useEffect.call(void 0, () => {
368
368
  let active2 = true;
369
- _chunkUYLS3LJWjs.HowToService.findPublished().then((list) => active2 && setArticles(list)).catch(() => active2 && setArticles([]));
369
+ _chunk6J2SQZ3Gjs.HowToService.findPublished().then((list) => active2 && setArticles(list)).catch(() => active2 && setArticles([]));
370
370
  return () => {
371
371
  active2 = false;
372
372
  };
@@ -378,7 +378,7 @@ function HelpHint({ contextKey }) {
378
378
  if (matches.length === 0) return null;
379
379
  const active = _nullishCoalesce(picked, () => ( (matches.length === 1 ? matches[0] : null)));
380
380
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
381
- _chunkDOLEXUO3js.Sheet,
381
+ _chunkYN4LOVL4js.Sheet,
382
382
  {
383
383
  open,
384
384
  onOpenChange: (o) => {
@@ -386,11 +386,11 @@ function HelpHint({ contextKey }) {
386
386
  if (!o) setPicked(null);
387
387
  },
388
388
  children: [
389
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.SheetTrigger, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.Button, { variant: "ghost", size: "icon-sm", "aria-label": t("help.hint.trigger") }), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.HelpCircleIcon, { className: "h-4 w-4" }) }),
390
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDOLEXUO3js.SheetContent, { side: "end", className: "w-full max-w-md sm:max-w-lg", children: [
391
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDOLEXUO3js.SheetHeader, { children: [
392
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.SheetTitle, { children: active ? active.name : t("help.hint.pickArticle") }),
393
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.SheetDescription, { children: _nullishCoalesce(_optionalChain([active, 'optionalAccess', _4 => _4.summary]), () => ( "")) })
389
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.SheetTrigger, { render: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.Button, { variant: "ghost", size: "icon-sm", "aria-label": t("help.hint.trigger") }), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.HelpCircleIcon, { className: "h-4 w-4" }) }),
390
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYN4LOVL4js.SheetContent, { side: "end", className: "w-full max-w-md sm:max-w-lg", children: [
391
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkYN4LOVL4js.SheetHeader, { children: [
392
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.SheetTitle, { children: active ? active.name : t("help.hint.pickArticle") }),
393
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.SheetDescription, { children: _nullishCoalesce(_optionalChain([active, 'optionalAccess', _4 => _4.summary]), () => ( "")) })
394
394
  ] }),
395
395
  active ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "mt-4 space-y-3", children: [
396
396
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-muted-foreground text-sm", children: active.summary }),
@@ -422,18 +422,18 @@ _chunk7QVYU63Ejs.__name.call(void 0, HelpHint, "HelpHint");
422
422
 
423
423
  function HelpSearchResultRow({ result, onSelect }) {
424
424
  const t = _nextintl.useTranslations.call(void 0, );
425
- const generateUrl = _chunkDOLEXUO3js.usePageUrlGenerator.call(void 0, );
425
+ const generateUrl = _chunkYN4LOVL4js.usePageUrlGenerator.call(void 0, );
426
426
  const [article, setArticle] = _react.useState.call(void 0, null);
427
427
  _react.useEffect.call(void 0, () => {
428
428
  let active = true;
429
- _chunkUYLS3LJWjs.HowToService.findOne({ id: result.id }).then((a) => active && setArticle(a)).catch(() => active && setArticle(null));
429
+ _chunk6J2SQZ3Gjs.HowToService.findOne({ id: result.id }).then((a) => active && setArticle(a)).catch(() => active && setArticle(null));
430
430
  return () => {
431
431
  active = false;
432
432
  };
433
433
  }, [result.id]);
434
434
  if (!article) {
435
435
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
436
- _chunkDOLEXUO3js.CommandItem,
436
+ _chunkYN4LOVL4js.CommandItem,
437
437
  {
438
438
  value: result.id,
439
439
  disabled: true,
@@ -442,7 +442,7 @@ function HelpSearchResultRow({ result, onSelect }) {
442
442
  }
443
443
  );
444
444
  }
445
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDOLEXUO3js.CommandItem, { value: result.id, onSelect, className: "cursor-pointer p-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
445
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYN4LOVL4js.CommandItem, { value: result.id, onSelect, className: "cursor-pointer p-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
446
446
  _link2.default,
447
447
  {
448
448
  href: generateUrl({ page: `/help/${article.howToType}/${article.slug}` }),
@@ -520,5 +520,6 @@ var HELP_I18N_KEYS = [
520
520
 
521
521
 
522
522
 
523
- exports.HELP_I18N_KEYS = HELP_I18N_KEYS; exports.HELP_MODES = _chunkYBZVWLPHjs.HELP_MODES; exports.HelpArticleBody = HelpArticleBody; exports.HelpAskAi = HelpAskAi; exports.HelpHeader = HelpHeader; exports.HelpHint = HelpHint; exports.HelpProvider = HelpProvider; exports.HelpSearchResultRow = HelpSearchResultRow; exports.HelpSideNav = HelpSideNav; exports.HelpTOC = HelpTOC; exports.articleUrl = articleUrl; exports.modeUrl = modeUrl; exports.useHelp = useHelp; exports.useHelpFilter = useHelpFilter;
523
+
524
+ exports.HELP_I18N_KEYS = HELP_I18N_KEYS; exports.HELP_MODES = _chunkYBZVWLPHjs.HELP_MODES; exports.HelpArticleBody = HelpArticleBody; exports.HelpAskAi = HelpAskAi; exports.HelpAssistantSheet = HelpAssistantSheet; exports.HelpHeader = HelpHeader; exports.HelpHint = HelpHint; exports.HelpProvider = HelpProvider; exports.HelpSearchResultRow = HelpSearchResultRow; exports.HelpSideNav = HelpSideNav; exports.HelpTOC = HelpTOC; exports.articleUrl = articleUrl; exports.modeUrl = modeUrl; exports.useHelp = useHelp; exports.useHelpFilter = useHelpFilter;
524
525
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/features/help/index.js","../../../src/features/help/contexts/HelpContext.tsx","../../../src/features/help/components/HelpHeader.tsx","../../../src/features/help/components/HelpAskAi.tsx","../../../src/features/help/components/HelpAssistantSheet.tsx","../../../src/features/help/components/HelpSideNav.tsx","../../../src/features/help/hooks/useHelpFilter.ts","../../../src/features/help/components/HelpArticleBody.tsx","../../../src/features/help/components/HelpTOC.tsx","../../../src/features/help/components/HelpHint.tsx","../../../src/features/help/components/HelpSearchResultRow.tsx","../../../src/features/help/utils/articleUrl.ts","../../../src/features/help/i18n-keys.ts"],"names":["jsx","useTranslations","jsxs","Fragment","useState","useMemo","Link","active"],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/features/help/index.js","sourcesContent":[null,"\"use client\";\nimport { createContext, useContext, ReactNode } from \"react\";\nimport { _getStaticHelpContent } from \"../../../core/registry/helpStore\";\nimport type { HelpContentConfig } from \"../interfaces/help-content-config.interface\";\n\nconst HelpContext = createContext<HelpContentConfig | null>(null);\n\nexport function HelpProvider({ children }: { children: ReactNode }) {\n const cfg = _getStaticHelpContent<HelpContentConfig>();\n if (!cfg) {\n throw new Error(\n \"Help content not configured — call configureJsonApi({ helpContent: {...} }) before importing help components.\",\n );\n }\n return <HelpContext.Provider value={cfg}>{children}</HelpContext.Provider>;\n}\n\nexport function useHelp(): HelpContentConfig {\n const ctx = useContext(HelpContext);\n if (!ctx) {\n throw new Error(\"useHelp() called outside <HelpProvider>. Wrap your help route group with <HelpProvider>.\");\n }\n return ctx;\n}\n","\"use client\";\nimport Link from \"next/link\";\nimport Image from \"next/image\";\nimport { useTranslations } from \"next-intl\";\nimport { useCurrentUserContext } from \"../../user/contexts/CurrentUserContext\";\nimport { buttonVariants } from \"../../../shadcnui\";\nimport { useHelp } from \"../contexts/HelpContext\";\nimport { HelpAskAi } from \"./HelpAskAi\";\n\nexport function HelpHeader() {\n const t = useTranslations();\n const { currentUser } = useCurrentUserContext();\n const { brand } = useHelp();\n const logo = brand?.logo;\n const label = brand?.label ?? \"Help\";\n const appHref = brand?.appHref ?? \"/\";\n\n return (\n <header className=\"border-border bg-background flex items-center justify-between border-b px-4 py-3\">\n <Link href=\"/help\" className=\"flex items-center gap-2\">\n {logo ? <Image src={logo} alt={label} width={28} height={28} /> : null}\n <span className=\"text-base font-semibold\">\n {label} · {t(\"help.footerLink\")}\n </span>\n </Link>\n <div className=\"flex items-center gap-2\">\n <HelpAskAi />\n {/* Styled Links, not <Button render={<Link/>} nativeButton={false}>. Base UI's\n Button primitive warns when rendered as a non-button, and nativeButton={false}\n silences that by stamping role=\"button\" onto the anchor — so a control that\n navigates would announce as a button. Both of these navigate, so they stay\n real links and only borrow the button styling. */}\n {currentUser ? (\n <Link href={appHref} className={buttonVariants({ variant: \"outline\", size: \"sm\" })}>\n {t(\"help.header.openApp\")}\n </Link>\n ) : (\n <Link href=\"/login\" className={buttonVariants({ variant: \"outline\", size: \"sm\" })}>\n {t(\"help.header.login\")}\n </Link>\n )}\n </div>\n </header>\n );\n}\n","\"use client\";\nimport { useState } from \"react\";\nimport { SparklesIcon } from \"lucide-react\";\nimport { useTranslations } from \"next-intl\";\nimport { useCurrentUserContext } from \"../../user/contexts/CurrentUserContext\";\nimport { Button, Tooltip, TooltipTrigger, TooltipContent } from \"../../../shadcnui\";\nimport { HelpAssistantSheet } from \"./HelpAssistantSheet\";\n\nexport function HelpAskAi() {\n const t = useTranslations();\n const { currentUser } = useCurrentUserContext();\n const [open, setOpen] = useState(false);\n const disabled = !currentUser;\n\n if (disabled) {\n return (\n <Tooltip>\n <TooltipTrigger render={<Button variant=\"outline\" size=\"sm\" disabled />}>\n <SparklesIcon className=\"h-4 w-4\" />\n {t(\"help.askAi.button\")}\n </TooltipTrigger>\n <TooltipContent>{t(\"help.askAi.loginTooltip\")}</TooltipContent>\n </Tooltip>\n );\n }\n\n return (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={() => setOpen(true)}>\n <SparklesIcon className=\"h-4 w-4\" />\n {t(\"help.askAi.button\")}\n </Button>\n <HelpAssistantSheet open={open} onOpenChange={setOpen} />\n </>\n );\n}\n","\"use client\";\nimport { useTranslations } from \"next-intl\";\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription } from \"../../../shadcnui\";\nimport { AssistantProvider, useAssistantContext } from \"../../assistant/contexts/AssistantContext\";\nimport { AssistantThread } from \"../../assistant/components/parts/AssistantThread\";\nimport { AssistantComposer } from \"../../assistant/components/parts/AssistantComposer\";\nimport { AssistantEmptyState } from \"../../assistant/components/parts/AssistantEmptyState\";\n\nexport function HelpAssistantSheet({ open, onOpenChange }: { open: boolean; onOpenChange: (o: boolean) => void }) {\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent\n side=\"end\"\n /* rtl-ok: keyed to the resolved physical side (\"right\" in LTR, \"left\" in RTL) */\n className=\"flex w-full flex-col data-[side=right]:sm:max-w-2xl data-[side=right]:lg:max-w-3xl data-[side=left]:sm:max-w-2xl data-[side=left]:lg:max-w-3xl\"\n >\n <AssistantProvider manageUrl={false}>\n <HelpAssistantSheetBody />\n </AssistantProvider>\n </SheetContent>\n </Sheet>\n );\n}\n\nfunction HelpAssistantSheetBody() {\n const t = useTranslations();\n const ctx = useAssistantContext();\n const showThread = !!ctx.assistant || ctx.sending || ctx.messages.length > 0;\n const send = (content: string) => ctx.sendMessage(content, { howToMode: true });\n\n return (\n <>\n <SheetHeader>\n <SheetTitle>{t(\"help.askAi.sheet.title\")}</SheetTitle>\n <SheetDescription>{t(\"help.askAi.sheet.subtitle\")}</SheetDescription>\n </SheetHeader>\n {!showThread ? (\n <AssistantEmptyState onSend={send} />\n ) : (\n <>\n <AssistantThread\n messages={ctx.messages}\n sending={ctx.sending}\n status={ctx.status}\n onSelectFollowUp={send}\n failedMessageIds={ctx.failedMessageIds}\n onRetry={ctx.retrySend}\n />\n <AssistantComposer onSend={send} disabled={ctx.sending} />\n </>\n )}\n </>\n );\n}\n","\"use client\";\n\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslations } from \"next-intl\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport { HELP_MODES } from \"../types/help-article.types\";\nimport { usePageUrlGenerator } from \"../../../client\";\nimport { useHelpFilter } from \"../hooks/useHelpFilter\";\nimport { HowToService } from \"../../how-to/data/HowToService\";\nimport type { HowToInterface } from \"../../how-to/data/HowToInterface\";\n\nexport function HelpSideNav() {\n const t = useTranslations();\n const generateUrl = usePageUrlGenerator();\n const pathname = usePathname();\n const [articles, setArticles] = useState<HowToInterface[]>([]);\n\n useEffect(() => {\n let active = true;\n HowToService.findPublished()\n .then((list) => active && setArticles(list))\n .catch(() => active && setArticles([]));\n return () => {\n active = false;\n };\n }, []);\n\n // useHelpFilter indexes by title/summary/tags — map HowTo getters into the shape it expects.\n const indexable = useMemo(\n () =>\n articles.map((a) => ({\n id: a.id,\n title: a.name,\n summary: a.summary ?? \"\",\n tags: a.tags,\n mode: a.howToType ?? \"\",\n slug: a.slug ?? \"\",\n })),\n [articles],\n );\n const { query, setQuery, filtered } = useHelpFilter(indexable as any);\n const filtering = query.trim().length > 0;\n\n const groups = useMemo(\n () =>\n HELP_MODES.map((mode) => ({\n mode,\n articles: articles\n .filter((a) => a.howToType === mode && !a.draft)\n .sort((x, y) => (x.order ?? 0) - (y.order ?? 0)),\n })),\n [articles],\n );\n\n const isActive = (mode: string, slug: string) => pathname.endsWith(`/help/${mode}/${slug}`);\n\n return (\n <nav aria-label=\"Help navigation\" className=\"flex h-full flex-col gap-3 overflow-y-auto p-4\">\n <input\n type=\"search\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder={t(\"help.sideNav.filterPlaceholder\")}\n className=\"border-input bg-background w-full rounded-md border px-3 py-2 text-sm\"\n />\n {filtering ? (\n (filtered as any[]).length === 0 ? (\n <p className=\"text-muted-foreground text-sm\">{t(\"help.sideNav.noMatches\")}</p>\n ) : (\n <ul className=\"space-y-1\">\n {(filtered as any[]).map((a) => (\n <li key={a.id}>\n <Link\n href={generateUrl({ page: `/help/${a.mode}/${a.slug}` })}\n className={\n \"hover:bg-muted block rounded px-2 py-1 text-sm \" +\n (isActive(a.mode, a.slug) ? \"bg-muted font-medium\" : \"\")\n }\n >\n {a.title}\n </Link>\n </li>\n ))}\n </ul>\n )\n ) : (\n groups.map((group) => {\n if (group.articles.length === 0) return null;\n return (\n <div key={group.mode}>\n <Link\n href={generateUrl({ page: `/help/${group.mode}` })}\n className=\"text-muted-foreground hover:text-foreground mb-1 block text-xs font-semibold tracking-wider uppercase\"\n >\n {t(`help.modes.${group.mode}`)}\n </Link>\n <ul className=\"space-y-0.5\">\n {group.articles.map((a) => (\n <li key={a.id}>\n <Link\n href={generateUrl({ page: `/help/${a.howToType}/${a.slug}` })}\n className={\n \"hover:bg-muted block rounded px-2 py-1 text-sm \" +\n (isActive(a.howToType ?? \"\", a.slug ?? \"\") ? \"bg-muted font-medium\" : \"\")\n }\n >\n {a.name}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n );\n })\n )}\n </nav>\n );\n}\n","\"use client\";\nimport { useMemo, useState } from \"react\";\nimport Fuse from \"fuse.js\";\nimport type { HelpArticle } from \"../types/help-article.types\";\n\nexport function useHelpFilter(articles: readonly HelpArticle[]) {\n const [query, setQuery] = useState(\"\");\n const fuse = useMemo(\n () =>\n new Fuse([...articles], {\n keys: [\n { name: \"title\", weight: 0.5 },\n { name: \"summary\", weight: 0.3 },\n { name: \"tags\", weight: 0.1 },\n { name: \"headings.text\", weight: 0.1 },\n ],\n threshold: 0.4,\n ignoreLocation: true,\n }),\n [articles],\n );\n const filtered = useMemo(() => {\n if (!query.trim()) return [...articles];\n return fuse.search(query).map((r) => r.item);\n }, [query, articles, fuse]);\n return { query, setQuery, filtered };\n}\n","\"use client\";\n\nimport { ReactNode } from \"react\";\nimport Link from \"next/link\";\nimport { useFormatter, useTranslations } from \"next-intl\";\nimport { usePageUrlGenerator } from \"../../../client\";\n\ntype Sibling = { howToType: string; slug: string; title: string };\n\nexport function HelpArticleBody(props: {\n howToType: string;\n title: string;\n summary?: string;\n updatedAt?: string;\n prev?: Sibling | null;\n next?: Sibling | null;\n children: ReactNode;\n}) {\n const t = useTranslations();\n const format = useFormatter();\n const generateUrl = usePageUrlGenerator();\n const { howToType, title, summary, updatedAt, prev, next, children } = props;\n\n return (\n <article className=\"prose dark:prose-invert max-w-none\">\n <nav className=\"text-muted-foreground mb-2 text-xs\">\n <Link href={generateUrl({ page: \"/help\" })}>Help</Link>\n {\" · \"}\n <Link href={generateUrl({ page: `/help/${howToType}` })}>{t(`help.modes.${howToType}`)}</Link>\n </nav>\n <h1>{title}</h1>\n {summary ? <p className=\"text-muted-foreground !mt-0 text-base\">{summary}</p> : null}\n {children}\n <hr className=\"my-6\" />\n {updatedAt ? (\n <div className=\"text-muted-foreground text-xs\">\n <span>\n {t(\"help.article.lastUpdated\", {\n date: format.dateTime(new Date(updatedAt), { dateStyle: \"short\" }),\n })}\n </span>\n </div>\n ) : null}\n <div className=\"mt-4 flex justify-between text-sm\">\n {prev ? (\n <Link href={generateUrl({ page: `/help/${prev.howToType}/${prev.slug}` })}>\n ← {t(\"help.article.previous\")}: {prev.title}\n </Link>\n ) : (\n <span />\n )}\n {next ? (\n <Link href={generateUrl({ page: `/help/${next.howToType}/${next.slug}` })}>\n {t(\"help.article.next\")}: {next.title} →\n </Link>\n ) : (\n <span />\n )}\n </div>\n </article>\n );\n}\n","\"use client\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslations } from \"next-intl\";\nimport type { HelpHeading } from \"../types/help-article.types\";\nimport { MicroLabel } from \"../../../components/typography\";\n\nexport function HelpTOC({ headings }: { headings: readonly HelpHeading[] }) {\n const t = useTranslations();\n const [active, setActive] = useState<string | null>(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n for (const e of entries) {\n if (e.isIntersecting) setActive(e.target.id);\n }\n },\n { rootMargin: \"0px 0px -70% 0px\", threshold: 0 },\n );\n headings.forEach((h) => {\n const el = document.getElementById(h.slug);\n if (el) observer.observe(el);\n });\n return () => observer.disconnect();\n }, [headings]);\n\n if (headings.length === 0) return null;\n return (\n <nav aria-label={t(\"help.toc.title\")} className=\"hidden lg:block\">\n <MicroLabel className=\"mb-2\">{t(\"help.toc.title\")}</MicroLabel>\n <ul className=\"space-y-1 text-sm\">\n {headings.map((h) => (\n <li key={h.slug} style={{ paddingInlineStart: `${(h.depth - 2) * 0.75}rem` }}>\n <a\n href={`#${h.slug}`}\n className={\n \"block truncate hover:text-foreground \" +\n (active === h.slug ? \"text-foreground font-medium\" : \"text-muted-foreground\")\n }\n >\n {h.text}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n","\"use client\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslations } from \"next-intl\";\nimport Link from \"next/link\";\nimport { HelpCircleIcon } from \"lucide-react\";\nimport {\n Button,\n Sheet,\n SheetContent,\n SheetTrigger,\n SheetHeader,\n SheetTitle,\n SheetDescription,\n} from \"../../../shadcnui\";\nimport { usePageUrlGenerator } from \"../../../client\";\nimport { HowToService } from \"../../how-to/data/HowToService\";\nimport type { HowToInterface } from \"../../how-to/data/HowToInterface\";\n\nexport function HelpHint({ contextKey }: { contextKey: string }) {\n const t = useTranslations();\n const generateUrl = usePageUrlGenerator();\n const [open, setOpen] = useState(false);\n const [picked, setPicked] = useState<HowToInterface | null>(null);\n\n const [articles, setArticles] = useState<HowToInterface[]>([]);\n useEffect(() => {\n let active = true;\n HowToService.findPublished()\n .then((list) => active && setArticles(list))\n .catch(() => active && setArticles([]));\n return () => {\n active = false;\n };\n }, []);\n\n const matches = useMemo(\n () => articles.filter((a) => a.contextualKeys.includes(contextKey) && !a.draft),\n [articles, contextKey],\n );\n\n if (matches.length === 0) return null;\n const active = picked ?? (matches.length === 1 ? matches[0] : null);\n\n return (\n <Sheet\n open={open}\n onOpenChange={(o) => {\n setOpen(o);\n if (!o) setPicked(null);\n }}\n >\n <SheetTrigger render={<Button variant=\"ghost\" size=\"icon-sm\" aria-label={t(\"help.hint.trigger\")} />}>\n <HelpCircleIcon className=\"h-4 w-4\" />\n </SheetTrigger>\n <SheetContent side=\"end\" className=\"w-full max-w-md sm:max-w-lg\">\n <SheetHeader>\n <SheetTitle>{active ? active.name : t(\"help.hint.pickArticle\")}</SheetTitle>\n <SheetDescription>{active?.summary ?? \"\"}</SheetDescription>\n </SheetHeader>\n {active ? (\n <div className=\"mt-4 space-y-3\">\n <p className=\"text-muted-foreground text-sm\">{active.summary}</p>\n <Link href={generateUrl({ page: `/help/${active.howToType}/${active.slug}` })} className=\"text-sm\">\n {t(\"help.hint.viewArticle\")}\n </Link>\n </div>\n ) : (\n <ul className=\"mt-4 space-y-1\">\n {matches.map((a) => (\n <li key={a.id}>\n <button\n type=\"button\"\n onClick={() => setPicked(a)}\n className=\"hover:bg-muted block w-full rounded px-2 py-1 text-start text-sm\"\n >\n <div className=\"font-medium\">{a.name}</div>\n <div className=\"text-muted-foreground text-xs\">{a.summary}</div>\n </button>\n </li>\n ))}\n </ul>\n )}\n </SheetContent>\n </Sheet>\n );\n}\n","\"use client\";\nimport Link from \"next/link\";\nimport { useTranslations } from \"next-intl\";\nimport { useEffect, useState } from \"react\";\nimport { LifeBuoyIcon, ArrowUpRightIcon } from \"lucide-react\";\nimport { CommandItem } from \"../../../shadcnui\";\nimport { usePageUrlGenerator } from \"../../../client\";\nimport { HowToService } from \"../../how-to/data/HowToService\";\nimport type { HowToInterface } from \"../../how-to/data/HowToInterface\";\n\nexport interface HelpSearchResultRowProps {\n result: { id: string; name: string; entityType: string };\n onSelect?: () => void;\n}\n\nexport function HelpSearchResultRow({ result, onSelect }: HelpSearchResultRowProps) {\n const t = useTranslations();\n const generateUrl = usePageUrlGenerator();\n const [article, setArticle] = useState<HowToInterface | null>(null);\n useEffect(() => {\n let active = true;\n HowToService.findOne({ id: result.id })\n .then((a) => active && setArticle(a))\n .catch(() => active && setArticle(null));\n return () => {\n active = false;\n };\n }, [result.id]);\n\n if (!article) {\n return (\n <CommandItem\n value={result.id}\n disabled\n className=\"text-muted-foreground cursor-not-allowed px-3 py-1.5 text-sm italic\"\n >\n {t(\"help.search.removed\")}\n </CommandItem>\n );\n }\n\n return (\n <CommandItem value={result.id} onSelect={onSelect} className=\"cursor-pointer p-0\">\n <Link\n href={generateUrl({ page: `/help/${article.howToType}/${article.slug}` })}\n className=\"hover:bg-muted flex w-full items-center gap-3 rounded px-3 py-2\"\n >\n <div className=\"bg-muted text-muted-foreground flex h-10 w-10 shrink-0 items-center justify-center rounded-full\">\n <LifeBuoyIcon className=\"h-5 w-5\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"text-foreground truncate text-sm font-semibold\">{article.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">\n {t(`help.modes.${article.howToType}`)} · {article.summary}\n </span>\n </div>\n <ArrowUpRightIcon className=\"text-muted-foreground h-5 w-5 shrink-0\" />\n </Link>\n </CommandItem>\n );\n}\n","import type { HelpMode } from \"../types/help-article.types\";\nimport type { usePageUrlGenerator } from \"../../../client\";\n\nexport function articleUrl(\n generateUrl: ReturnType<typeof usePageUrlGenerator>,\n article: { mode: HelpMode; slug: string },\n): string {\n return generateUrl({ page: `/help/${article.mode}/${article.slug}` });\n}\n\nexport function modeUrl(generateUrl: ReturnType<typeof usePageUrlGenerator>, mode: HelpMode): string {\n return generateUrl({ page: `/help/${mode}` });\n}\n","/**\n * The fixed namespace of i18n keys this feature reads via useTranslations/getTranslations.\n * Consuming apps must define each entry in their messages/<locale>.json.\n */\nexport const HELP_I18N_KEYS = [\n \"help.modes.tutorial\",\n \"help.modes.how-to\",\n \"help.modes.reference\",\n \"help.modes.explanation\",\n \"help.sideNav.filterPlaceholder\",\n \"help.sideNav.noMatches\",\n \"help.toc.title\",\n \"help.article.lastUpdated\",\n \"help.article.previous\",\n \"help.article.next\",\n \"help.article.related\",\n \"help.askAi.button\",\n \"help.askAi.loginTooltip\",\n \"help.askAi.sheet.title\",\n \"help.askAi.sheet.subtitle\",\n \"help.header.search\",\n \"help.header.login\",\n \"help.header.openApp\",\n \"help.hint.trigger\",\n \"help.hint.viewArticle\",\n \"help.hint.pickArticle\",\n \"help.landing.heading\",\n \"help.landing.subheading\",\n \"help.landing.featuredTutorials\",\n \"help.landing.browseByMode\",\n \"help.modeIndex.empty\",\n \"help.search.removed\",\n \"help.footerLink\",\n] as const;\n"]}
1
+ {"version":3,"sources":["/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/features/help/index.js","../../../src/features/help/contexts/HelpContext.tsx","../../../src/features/help/components/HelpHeader.tsx","../../../src/features/help/components/HelpAskAi.tsx","../../../src/features/help/components/HelpAssistantSheet.tsx","../../../src/features/help/components/HelpSideNav.tsx","../../../src/features/help/hooks/useHelpFilter.ts","../../../src/features/help/components/HelpArticleBody.tsx","../../../src/features/help/components/HelpTOC.tsx","../../../src/features/help/components/HelpHint.tsx","../../../src/features/help/components/HelpSearchResultRow.tsx","../../../src/features/help/utils/articleUrl.ts","../../../src/features/help/i18n-keys.ts"],"names":["jsx","useTranslations","jsxs","Fragment","useState","useMemo","Link","active"],"mappings":"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","file":"/home/runner/work/nextjs-jsonapi/nextjs-jsonapi/dist/features/help/index.js","sourcesContent":[null,"\"use client\";\nimport { createContext, useContext, ReactNode } from \"react\";\nimport { _getStaticHelpContent } from \"../../../core/registry/helpStore\";\nimport type { HelpContentConfig } from \"../interfaces/help-content-config.interface\";\n\nconst HelpContext = createContext<HelpContentConfig | null>(null);\n\nexport function HelpProvider({ children }: { children: ReactNode }) {\n const cfg = _getStaticHelpContent<HelpContentConfig>();\n if (!cfg) {\n throw new Error(\n \"Help content not configured — call configureJsonApi({ helpContent: {...} }) before importing help components.\",\n );\n }\n return <HelpContext.Provider value={cfg}>{children}</HelpContext.Provider>;\n}\n\nexport function useHelp(): HelpContentConfig {\n const ctx = useContext(HelpContext);\n if (!ctx) {\n throw new Error(\"useHelp() called outside <HelpProvider>. Wrap your help route group with <HelpProvider>.\");\n }\n return ctx;\n}\n","\"use client\";\nimport Link from \"next/link\";\nimport Image from \"next/image\";\nimport { useTranslations } from \"next-intl\";\nimport { useCurrentUserContext } from \"../../user/contexts/CurrentUserContext\";\nimport { buttonVariants } from \"../../../shadcnui\";\nimport { useHelp } from \"../contexts/HelpContext\";\nimport { HelpAskAi } from \"./HelpAskAi\";\n\nexport function HelpHeader() {\n const t = useTranslations();\n const { currentUser } = useCurrentUserContext();\n const { brand } = useHelp();\n const logo = brand?.logo;\n const label = brand?.label ?? \"Help\";\n const appHref = brand?.appHref ?? \"/\";\n\n return (\n <header className=\"border-border bg-background flex items-center justify-between border-b px-4 py-3\">\n <Link href=\"/help\" className=\"flex items-center gap-2\">\n {logo ? <Image src={logo} alt={label} width={28} height={28} /> : null}\n <span className=\"text-base font-semibold\">\n {label} · {t(\"help.footerLink\")}\n </span>\n </Link>\n <div className=\"flex items-center gap-2\">\n <HelpAskAi />\n {/* Styled Links, not <Button render={<Link/>} nativeButton={false}>. Base UI's\n Button primitive warns when rendered as a non-button, and nativeButton={false}\n silences that by stamping role=\"button\" onto the anchor — so a control that\n navigates would announce as a button. Both of these navigate, so they stay\n real links and only borrow the button styling. */}\n {currentUser ? (\n <Link href={appHref} className={buttonVariants({ variant: \"outline\", size: \"sm\" })}>\n {t(\"help.header.openApp\")}\n </Link>\n ) : (\n <Link href=\"/login\" className={buttonVariants({ variant: \"outline\", size: \"sm\" })}>\n {t(\"help.header.login\")}\n </Link>\n )}\n </div>\n </header>\n );\n}\n","\"use client\";\nimport { useState } from \"react\";\nimport { SparklesIcon } from \"lucide-react\";\nimport { useTranslations } from \"next-intl\";\nimport { useCurrentUserContext } from \"../../user/contexts/CurrentUserContext\";\nimport { Button, Tooltip, TooltipTrigger, TooltipContent } from \"../../../shadcnui\";\nimport { HelpAssistantSheet } from \"./HelpAssistantSheet\";\n\nexport function HelpAskAi() {\n const t = useTranslations();\n const { currentUser } = useCurrentUserContext();\n const [open, setOpen] = useState(false);\n const disabled = !currentUser;\n\n if (disabled) {\n return (\n <Tooltip>\n <TooltipTrigger render={<Button variant=\"outline\" size=\"sm\" disabled />}>\n <SparklesIcon className=\"h-4 w-4\" />\n {t(\"help.askAi.button\")}\n </TooltipTrigger>\n <TooltipContent>{t(\"help.askAi.loginTooltip\")}</TooltipContent>\n </Tooltip>\n );\n }\n\n return (\n <>\n <Button variant=\"outline\" size=\"sm\" onClick={() => setOpen(true)}>\n <SparklesIcon className=\"h-4 w-4\" />\n {t(\"help.askAi.button\")}\n </Button>\n <HelpAssistantSheet open={open} onOpenChange={setOpen} />\n </>\n );\n}\n","\"use client\";\nimport { useTranslations } from \"next-intl\";\nimport { Sheet, SheetContent, SheetHeader, SheetTitle, SheetDescription } from \"../../../shadcnui\";\nimport { AssistantProvider, useAssistantContext } from \"../../assistant/contexts/AssistantContext\";\nimport { AssistantThread } from \"../../assistant/components/parts/AssistantThread\";\nimport { AssistantComposer } from \"../../assistant/components/parts/AssistantComposer\";\nimport { AssistantEmptyState } from \"../../assistant/components/parts/AssistantEmptyState\";\n\nexport function HelpAssistantSheet({ open, onOpenChange }: { open: boolean; onOpenChange: (o: boolean) => void }) {\n return (\n <Sheet open={open} onOpenChange={onOpenChange}>\n <SheetContent\n side=\"end\"\n /* rtl-ok: keyed to the resolved physical side (\"right\" in LTR, \"left\" in RTL) */\n className=\"flex w-full flex-col data-[side=right]:sm:max-w-2xl data-[side=right]:lg:max-w-3xl data-[side=left]:sm:max-w-2xl data-[side=left]:lg:max-w-3xl\"\n >\n <AssistantProvider manageUrl={false}>\n <HelpAssistantSheetBody />\n </AssistantProvider>\n </SheetContent>\n </Sheet>\n );\n}\n\nfunction HelpAssistantSheetBody() {\n const t = useTranslations();\n const ctx = useAssistantContext();\n const showThread = !!ctx.assistant || ctx.sending || ctx.messages.length > 0;\n const send = (content: string) => ctx.sendMessage(content, { howToMode: true });\n\n return (\n <>\n <SheetHeader>\n <SheetTitle>{t(\"help.askAi.sheet.title\")}</SheetTitle>\n <SheetDescription>{t(\"help.askAi.sheet.subtitle\")}</SheetDescription>\n </SheetHeader>\n {!showThread ? (\n <AssistantEmptyState onSend={send} />\n ) : (\n <>\n <AssistantThread\n messages={ctx.messages}\n sending={ctx.sending}\n status={ctx.status}\n onSelectFollowUp={send}\n failedMessageIds={ctx.failedMessageIds}\n onRetry={ctx.retrySend}\n />\n <AssistantComposer onSend={send} disabled={ctx.sending} />\n </>\n )}\n </>\n );\n}\n","\"use client\";\n\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslations } from \"next-intl\";\nimport Link from \"next/link\";\nimport { usePathname } from \"next/navigation\";\nimport { HELP_MODES } from \"../types/help-article.types\";\nimport { usePageUrlGenerator } from \"../../../client\";\nimport { useHelpFilter } from \"../hooks/useHelpFilter\";\nimport { HowToService } from \"../../how-to/data/HowToService\";\nimport type { HowToInterface } from \"../../how-to/data/HowToInterface\";\n\nexport function HelpSideNav() {\n const t = useTranslations();\n const generateUrl = usePageUrlGenerator();\n const pathname = usePathname();\n const [articles, setArticles] = useState<HowToInterface[]>([]);\n\n useEffect(() => {\n let active = true;\n HowToService.findPublished()\n .then((list) => active && setArticles(list))\n .catch(() => active && setArticles([]));\n return () => {\n active = false;\n };\n }, []);\n\n // useHelpFilter indexes by title/summary/tags — map HowTo getters into the shape it expects.\n const indexable = useMemo(\n () =>\n articles.map((a) => ({\n id: a.id,\n title: a.name,\n summary: a.summary ?? \"\",\n tags: a.tags,\n mode: a.howToType ?? \"\",\n slug: a.slug ?? \"\",\n })),\n [articles],\n );\n const { query, setQuery, filtered } = useHelpFilter(indexable as any);\n const filtering = query.trim().length > 0;\n\n const groups = useMemo(\n () =>\n HELP_MODES.map((mode) => ({\n mode,\n articles: articles\n .filter((a) => a.howToType === mode && !a.draft)\n .sort((x, y) => (x.order ?? 0) - (y.order ?? 0)),\n })),\n [articles],\n );\n\n const isActive = (mode: string, slug: string) => pathname.endsWith(`/help/${mode}/${slug}`);\n\n return (\n <nav aria-label=\"Help navigation\" className=\"flex h-full flex-col gap-3 overflow-y-auto p-4\">\n <input\n type=\"search\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n placeholder={t(\"help.sideNav.filterPlaceholder\")}\n className=\"border-input bg-background w-full rounded-md border px-3 py-2 text-sm\"\n />\n {filtering ? (\n (filtered as any[]).length === 0 ? (\n <p className=\"text-muted-foreground text-sm\">{t(\"help.sideNav.noMatches\")}</p>\n ) : (\n <ul className=\"space-y-1\">\n {(filtered as any[]).map((a) => (\n <li key={a.id}>\n <Link\n href={generateUrl({ page: `/help/${a.mode}/${a.slug}` })}\n className={\n \"hover:bg-muted block rounded px-2 py-1 text-sm \" +\n (isActive(a.mode, a.slug) ? \"bg-muted font-medium\" : \"\")\n }\n >\n {a.title}\n </Link>\n </li>\n ))}\n </ul>\n )\n ) : (\n groups.map((group) => {\n if (group.articles.length === 0) return null;\n return (\n <div key={group.mode}>\n <Link\n href={generateUrl({ page: `/help/${group.mode}` })}\n className=\"text-muted-foreground hover:text-foreground mb-1 block text-xs font-semibold tracking-wider uppercase\"\n >\n {t(`help.modes.${group.mode}`)}\n </Link>\n <ul className=\"space-y-0.5\">\n {group.articles.map((a) => (\n <li key={a.id}>\n <Link\n href={generateUrl({ page: `/help/${a.howToType}/${a.slug}` })}\n className={\n \"hover:bg-muted block rounded px-2 py-1 text-sm \" +\n (isActive(a.howToType ?? \"\", a.slug ?? \"\") ? \"bg-muted font-medium\" : \"\")\n }\n >\n {a.name}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n );\n })\n )}\n </nav>\n );\n}\n","\"use client\";\nimport { useMemo, useState } from \"react\";\nimport Fuse from \"fuse.js\";\nimport type { HelpArticle } from \"../types/help-article.types\";\n\nexport function useHelpFilter(articles: readonly HelpArticle[]) {\n const [query, setQuery] = useState(\"\");\n const fuse = useMemo(\n () =>\n new Fuse([...articles], {\n keys: [\n { name: \"title\", weight: 0.5 },\n { name: \"summary\", weight: 0.3 },\n { name: \"tags\", weight: 0.1 },\n { name: \"headings.text\", weight: 0.1 },\n ],\n threshold: 0.4,\n ignoreLocation: true,\n }),\n [articles],\n );\n const filtered = useMemo(() => {\n if (!query.trim()) return [...articles];\n return fuse.search(query).map((r) => r.item);\n }, [query, articles, fuse]);\n return { query, setQuery, filtered };\n}\n","\"use client\";\n\nimport { ReactNode } from \"react\";\nimport Link from \"next/link\";\nimport { useFormatter, useTranslations } from \"next-intl\";\nimport { usePageUrlGenerator } from \"../../../client\";\n\ntype Sibling = { howToType: string; slug: string; title: string };\n\nexport function HelpArticleBody(props: {\n howToType: string;\n title: string;\n summary?: string;\n updatedAt?: string;\n prev?: Sibling | null;\n next?: Sibling | null;\n children: ReactNode;\n}) {\n const t = useTranslations();\n const format = useFormatter();\n const generateUrl = usePageUrlGenerator();\n const { howToType, title, summary, updatedAt, prev, next, children } = props;\n\n return (\n <article className=\"prose dark:prose-invert max-w-none\">\n <nav className=\"text-muted-foreground mb-2 text-xs\">\n <Link href={generateUrl({ page: \"/help\" })}>Help</Link>\n {\" · \"}\n <Link href={generateUrl({ page: `/help/${howToType}` })}>{t(`help.modes.${howToType}`)}</Link>\n </nav>\n <h1>{title}</h1>\n {summary ? <p className=\"text-muted-foreground !mt-0 text-base\">{summary}</p> : null}\n {children}\n <hr className=\"my-6\" />\n {updatedAt ? (\n <div className=\"text-muted-foreground text-xs\">\n <span>\n {t(\"help.article.lastUpdated\", {\n date: format.dateTime(new Date(updatedAt), { dateStyle: \"short\" }),\n })}\n </span>\n </div>\n ) : null}\n <div className=\"mt-4 flex justify-between text-sm\">\n {prev ? (\n <Link href={generateUrl({ page: `/help/${prev.howToType}/${prev.slug}` })}>\n ← {t(\"help.article.previous\")}: {prev.title}\n </Link>\n ) : (\n <span />\n )}\n {next ? (\n <Link href={generateUrl({ page: `/help/${next.howToType}/${next.slug}` })}>\n {t(\"help.article.next\")}: {next.title} →\n </Link>\n ) : (\n <span />\n )}\n </div>\n </article>\n );\n}\n","\"use client\";\nimport { useEffect, useState } from \"react\";\nimport { useTranslations } from \"next-intl\";\nimport type { HelpHeading } from \"../types/help-article.types\";\nimport { MicroLabel } from \"../../../components/typography\";\n\nexport function HelpTOC({ headings }: { headings: readonly HelpHeading[] }) {\n const t = useTranslations();\n const [active, setActive] = useState<string | null>(null);\n\n useEffect(() => {\n const observer = new IntersectionObserver(\n (entries) => {\n for (const e of entries) {\n if (e.isIntersecting) setActive(e.target.id);\n }\n },\n { rootMargin: \"0px 0px -70% 0px\", threshold: 0 },\n );\n headings.forEach((h) => {\n const el = document.getElementById(h.slug);\n if (el) observer.observe(el);\n });\n return () => observer.disconnect();\n }, [headings]);\n\n if (headings.length === 0) return null;\n return (\n <nav aria-label={t(\"help.toc.title\")} className=\"hidden lg:block\">\n <MicroLabel className=\"mb-2\">{t(\"help.toc.title\")}</MicroLabel>\n <ul className=\"space-y-1 text-sm\">\n {headings.map((h) => (\n <li key={h.slug} style={{ paddingInlineStart: `${(h.depth - 2) * 0.75}rem` }}>\n <a\n href={`#${h.slug}`}\n className={\n \"block truncate hover:text-foreground \" +\n (active === h.slug ? \"text-foreground font-medium\" : \"text-muted-foreground\")\n }\n >\n {h.text}\n </a>\n </li>\n ))}\n </ul>\n </nav>\n );\n}\n","\"use client\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { useTranslations } from \"next-intl\";\nimport Link from \"next/link\";\nimport { HelpCircleIcon } from \"lucide-react\";\nimport {\n Button,\n Sheet,\n SheetContent,\n SheetTrigger,\n SheetHeader,\n SheetTitle,\n SheetDescription,\n} from \"../../../shadcnui\";\nimport { usePageUrlGenerator } from \"../../../client\";\nimport { HowToService } from \"../../how-to/data/HowToService\";\nimport type { HowToInterface } from \"../../how-to/data/HowToInterface\";\n\nexport function HelpHint({ contextKey }: { contextKey: string }) {\n const t = useTranslations();\n const generateUrl = usePageUrlGenerator();\n const [open, setOpen] = useState(false);\n const [picked, setPicked] = useState<HowToInterface | null>(null);\n\n const [articles, setArticles] = useState<HowToInterface[]>([]);\n useEffect(() => {\n let active = true;\n HowToService.findPublished()\n .then((list) => active && setArticles(list))\n .catch(() => active && setArticles([]));\n return () => {\n active = false;\n };\n }, []);\n\n const matches = useMemo(\n () => articles.filter((a) => a.contextualKeys.includes(contextKey) && !a.draft),\n [articles, contextKey],\n );\n\n if (matches.length === 0) return null;\n const active = picked ?? (matches.length === 1 ? matches[0] : null);\n\n return (\n <Sheet\n open={open}\n onOpenChange={(o) => {\n setOpen(o);\n if (!o) setPicked(null);\n }}\n >\n <SheetTrigger render={<Button variant=\"ghost\" size=\"icon-sm\" aria-label={t(\"help.hint.trigger\")} />}>\n <HelpCircleIcon className=\"h-4 w-4\" />\n </SheetTrigger>\n <SheetContent side=\"end\" className=\"w-full max-w-md sm:max-w-lg\">\n <SheetHeader>\n <SheetTitle>{active ? active.name : t(\"help.hint.pickArticle\")}</SheetTitle>\n <SheetDescription>{active?.summary ?? \"\"}</SheetDescription>\n </SheetHeader>\n {active ? (\n <div className=\"mt-4 space-y-3\">\n <p className=\"text-muted-foreground text-sm\">{active.summary}</p>\n <Link href={generateUrl({ page: `/help/${active.howToType}/${active.slug}` })} className=\"text-sm\">\n {t(\"help.hint.viewArticle\")}\n </Link>\n </div>\n ) : (\n <ul className=\"mt-4 space-y-1\">\n {matches.map((a) => (\n <li key={a.id}>\n <button\n type=\"button\"\n onClick={() => setPicked(a)}\n className=\"hover:bg-muted block w-full rounded px-2 py-1 text-start text-sm\"\n >\n <div className=\"font-medium\">{a.name}</div>\n <div className=\"text-muted-foreground text-xs\">{a.summary}</div>\n </button>\n </li>\n ))}\n </ul>\n )}\n </SheetContent>\n </Sheet>\n );\n}\n","\"use client\";\nimport Link from \"next/link\";\nimport { useTranslations } from \"next-intl\";\nimport { useEffect, useState } from \"react\";\nimport { LifeBuoyIcon, ArrowUpRightIcon } from \"lucide-react\";\nimport { CommandItem } from \"../../../shadcnui\";\nimport { usePageUrlGenerator } from \"../../../client\";\nimport { HowToService } from \"../../how-to/data/HowToService\";\nimport type { HowToInterface } from \"../../how-to/data/HowToInterface\";\n\nexport interface HelpSearchResultRowProps {\n result: { id: string; name: string; entityType: string };\n onSelect?: () => void;\n}\n\nexport function HelpSearchResultRow({ result, onSelect }: HelpSearchResultRowProps) {\n const t = useTranslations();\n const generateUrl = usePageUrlGenerator();\n const [article, setArticle] = useState<HowToInterface | null>(null);\n useEffect(() => {\n let active = true;\n HowToService.findOne({ id: result.id })\n .then((a) => active && setArticle(a))\n .catch(() => active && setArticle(null));\n return () => {\n active = false;\n };\n }, [result.id]);\n\n if (!article) {\n return (\n <CommandItem\n value={result.id}\n disabled\n className=\"text-muted-foreground cursor-not-allowed px-3 py-1.5 text-sm italic\"\n >\n {t(\"help.search.removed\")}\n </CommandItem>\n );\n }\n\n return (\n <CommandItem value={result.id} onSelect={onSelect} className=\"cursor-pointer p-0\">\n <Link\n href={generateUrl({ page: `/help/${article.howToType}/${article.slug}` })}\n className=\"hover:bg-muted flex w-full items-center gap-3 rounded px-3 py-2\"\n >\n <div className=\"bg-muted text-muted-foreground flex h-10 w-10 shrink-0 items-center justify-center rounded-full\">\n <LifeBuoyIcon className=\"h-5 w-5\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"text-foreground truncate text-sm font-semibold\">{article.name}</span>\n <span className=\"text-muted-foreground truncate text-xs\">\n {t(`help.modes.${article.howToType}`)} · {article.summary}\n </span>\n </div>\n <ArrowUpRightIcon className=\"text-muted-foreground h-5 w-5 shrink-0\" />\n </Link>\n </CommandItem>\n );\n}\n","import type { HelpMode } from \"../types/help-article.types\";\nimport type { usePageUrlGenerator } from \"../../../client\";\n\nexport function articleUrl(\n generateUrl: ReturnType<typeof usePageUrlGenerator>,\n article: { mode: HelpMode; slug: string },\n): string {\n return generateUrl({ page: `/help/${article.mode}/${article.slug}` });\n}\n\nexport function modeUrl(generateUrl: ReturnType<typeof usePageUrlGenerator>, mode: HelpMode): string {\n return generateUrl({ page: `/help/${mode}` });\n}\n","/**\n * The fixed namespace of i18n keys this feature reads via useTranslations/getTranslations.\n * Consuming apps must define each entry in their messages/<locale>.json.\n */\nexport const HELP_I18N_KEYS = [\n \"help.modes.tutorial\",\n \"help.modes.how-to\",\n \"help.modes.reference\",\n \"help.modes.explanation\",\n \"help.sideNav.filterPlaceholder\",\n \"help.sideNav.noMatches\",\n \"help.toc.title\",\n \"help.article.lastUpdated\",\n \"help.article.previous\",\n \"help.article.next\",\n \"help.article.related\",\n \"help.askAi.button\",\n \"help.askAi.loginTooltip\",\n \"help.askAi.sheet.title\",\n \"help.askAi.sheet.subtitle\",\n \"help.header.search\",\n \"help.header.login\",\n \"help.header.openApp\",\n \"help.hint.trigger\",\n \"help.hint.viewArticle\",\n \"help.hint.pickArticle\",\n \"help.landing.heading\",\n \"help.landing.subheading\",\n \"help.landing.featuredTutorials\",\n \"help.landing.browseByMode\",\n \"help.modeIndex.empty\",\n \"help.search.removed\",\n \"help.footerLink\",\n] as const;\n"]}