@shipfox/client-onboarding 23.0.0 → 25.0.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 (91) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +28 -0
  3. package/README.md +26 -7
  4. package/dist/components/setup-checklist-body.d.ts +3 -0
  5. package/dist/components/setup-checklist-body.d.ts.map +1 -0
  6. package/dist/components/setup-checklist-body.js +25 -0
  7. package/dist/components/setup-checklist-body.js.map +1 -0
  8. package/dist/components/setup-checklist-completion.d.ts +6 -0
  9. package/dist/components/setup-checklist-completion.d.ts.map +1 -0
  10. package/dist/components/setup-checklist-completion.js +156 -0
  11. package/dist/components/setup-checklist-completion.js.map +1 -0
  12. package/dist/components/setup-checklist-confetti.d.ts +13 -0
  13. package/dist/components/setup-checklist-confetti.d.ts.map +1 -0
  14. package/dist/components/setup-checklist-confetti.js +24 -0
  15. package/dist/components/setup-checklist-confetti.js.map +1 -0
  16. package/dist/components/setup-checklist-host-primitives.d.ts +11 -0
  17. package/dist/components/setup-checklist-host-primitives.d.ts.map +1 -0
  18. package/dist/components/setup-checklist-host-primitives.js +71 -0
  19. package/dist/components/setup-checklist-host-primitives.js.map +1 -0
  20. package/dist/components/setup-checklist-row.d.ts +7 -0
  21. package/dist/components/setup-checklist-row.d.ts.map +1 -0
  22. package/dist/components/setup-checklist-row.js +177 -0
  23. package/dist/components/setup-checklist-row.js.map +1 -0
  24. package/dist/components/setup-checklist-types.d.ts +19 -0
  25. package/dist/components/setup-checklist-types.d.ts.map +1 -0
  26. package/dist/components/setup-checklist-types.js +3 -0
  27. package/dist/components/setup-checklist-types.js.map +1 -0
  28. package/dist/components/setup-checklist.d.ts +5 -0
  29. package/dist/components/setup-checklist.d.ts.map +1 -0
  30. package/dist/components/setup-checklist.js +5 -0
  31. package/dist/components/setup-checklist.js.map +1 -0
  32. package/dist/components/setup-checklist.stories.d.ts +19 -0
  33. package/dist/components/setup-checklist.stories.d.ts.map +1 -0
  34. package/dist/components/setup-checklist.stories.js +305 -0
  35. package/dist/components/setup-checklist.stories.js.map +1 -0
  36. package/dist/components/workspace-setup-checklist.d.ts +3 -0
  37. package/dist/components/workspace-setup-checklist.d.ts.map +1 -0
  38. package/dist/components/workspace-setup-checklist.js +80 -0
  39. package/dist/components/workspace-setup-checklist.js.map +1 -0
  40. package/dist/components/workspace-setup-indicator.d.ts +3 -0
  41. package/dist/components/workspace-setup-indicator.d.ts.map +1 -0
  42. package/dist/components/workspace-setup-indicator.js +133 -0
  43. package/dist/components/workspace-setup-indicator.js.map +1 -0
  44. package/dist/core/setup-checklist.d.ts +2 -0
  45. package/dist/core/setup-checklist.d.ts.map +1 -1
  46. package/dist/core/setup-checklist.js +11 -6
  47. package/dist/core/setup-checklist.js.map +1 -1
  48. package/dist/feature.d.ts +6 -0
  49. package/dist/feature.d.ts.map +1 -0
  50. package/dist/feature.js +19 -0
  51. package/dist/feature.js.map +1 -0
  52. package/dist/hooks/api/setup-checklist.d.ts +13 -0
  53. package/dist/hooks/api/setup-checklist.d.ts.map +1 -0
  54. package/dist/hooks/api/setup-checklist.js +103 -0
  55. package/dist/hooks/api/setup-checklist.js.map +1 -0
  56. package/dist/hooks/use-checklist-analytics.d.ts +6 -0
  57. package/dist/hooks/use-checklist-analytics.d.ts.map +1 -0
  58. package/dist/hooks/use-checklist-analytics.js +51 -0
  59. package/dist/hooks/use-checklist-analytics.js.map +1 -0
  60. package/dist/hooks/use-checklist-dismissal.d.ts +5 -0
  61. package/dist/hooks/use-checklist-dismissal.d.ts.map +1 -0
  62. package/dist/hooks/use-checklist-dismissal.js +31 -0
  63. package/dist/hooks/use-checklist-dismissal.js.map +1 -0
  64. package/dist/index.d.ts +1 -0
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +1 -0
  67. package/dist/index.js.map +1 -1
  68. package/dist/tsconfig.test.tsbuildinfo +1 -1
  69. package/package.json +12 -5
  70. package/src/components/setup-checklist-body.tsx +35 -0
  71. package/src/components/setup-checklist-completion.test.tsx +124 -0
  72. package/src/components/setup-checklist-completion.tsx +165 -0
  73. package/src/components/setup-checklist-confetti.test.ts +19 -0
  74. package/src/components/setup-checklist-confetti.ts +39 -0
  75. package/src/components/setup-checklist-host-primitives.tsx +65 -0
  76. package/src/components/setup-checklist-row.tsx +189 -0
  77. package/src/components/setup-checklist-types.ts +21 -0
  78. package/src/components/setup-checklist.stories.tsx +281 -0
  79. package/src/components/setup-checklist.test.tsx +564 -0
  80. package/src/components/setup-checklist.tsx +8 -0
  81. package/src/components/workspace-setup-checklist.tsx +91 -0
  82. package/src/components/workspace-setup-indicator.tsx +126 -0
  83. package/src/core/setup-checklist.test.ts +2 -2
  84. package/src/core/setup-checklist.ts +19 -10
  85. package/src/feature.ts +16 -0
  86. package/src/hooks/api/setup-checklist.ts +144 -0
  87. package/src/hooks/use-checklist-analytics.ts +60 -0
  88. package/src/hooks/use-checklist-dismissal.ts +30 -0
  89. package/src/index.ts +8 -0
  90. package/tsconfig.build.tsbuildinfo +1 -1
  91. package/vitest.config.ts +2 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/use-checklist-analytics.ts"],"sourcesContent":["import {useClientAnalytics} from '@shipfox/client-shell/runtime';\nimport {useEffect, useRef, useState} from 'react';\nimport type {ChecklistQueryState} from '#hooks/api/setup-checklist.js';\n\ntype ChecklistHost = 'panel' | 'popover';\n\nexport function useCompletionTransition(\n queryState: ChecklistQueryState,\n host: ChecklistHost,\n onCompleted?: (completed: boolean) => void,\n) {\n const analytics = useClientAnalytics();\n const observedIncomplete = useRef(false);\n const completionHandled = useRef(false);\n const [showCompletion, setShowCompletion] = useState(false);\n\n useEffect(() => {\n if (\n queryState.baseSettled &&\n !queryState.checklist.complete &&\n queryState.checklist.openCount > 0\n ) {\n observedIncomplete.current = true;\n }\n\n if (!queryState.completionReady) return;\n\n if (!queryState.checklist.complete) {\n setShowCompletion(false);\n return;\n }\n\n if (!observedIncomplete.current || completionHandled.current) return;\n completionHandled.current = true;\n setShowCompletion(true);\n onCompleted?.(true);\n analytics.capture('onboarding_checklist_completed', {host});\n }, [\n analytics,\n host,\n onCompleted,\n queryState.baseSettled,\n queryState.checklist.complete,\n queryState.checklist.openCount,\n queryState.completionReady,\n ]);\n\n return showCompletion;\n}\n\nexport function useShownAnalytics(host: ChecklistHost, visible: boolean) {\n const analytics = useClientAnalytics();\n const shown = useRef(false);\n\n useEffect(() => {\n if (!visible || shown.current) return;\n shown.current = true;\n analytics.capture('onboarding_checklist_shown', {host});\n }, [analytics, host, visible]);\n}\n"],"names":["useClientAnalytics","useEffect","useRef","useState","useCompletionTransition","queryState","host","onCompleted","analytics","observedIncomplete","completionHandled","showCompletion","setShowCompletion","baseSettled","checklist","complete","openCount","current","completionReady","capture","useShownAnalytics","visible","shown"],"mappings":"AAAA,SAAQA,kBAAkB,QAAO,gCAAgC;AACjE,SAAQC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAO,QAAQ;AAKlD,OAAO,SAASC,wBACdC,UAA+B,EAC/BC,IAAmB,EACnBC,WAA0C;IAE1C,MAAMC,YAAYR;IAClB,MAAMS,qBAAqBP,OAAO;IAClC,MAAMQ,oBAAoBR,OAAO;IACjC,MAAM,CAACS,gBAAgBC,kBAAkB,GAAGT,SAAS;IAErDF,UAAU;QACR,IACEI,WAAWQ,WAAW,IACtB,CAACR,WAAWS,SAAS,CAACC,QAAQ,IAC9BV,WAAWS,SAAS,CAACE,SAAS,GAAG,GACjC;YACAP,mBAAmBQ,OAAO,GAAG;QAC/B;QAEA,IAAI,CAACZ,WAAWa,eAAe,EAAE;QAEjC,IAAI,CAACb,WAAWS,SAAS,CAACC,QAAQ,EAAE;YAClCH,kBAAkB;YAClB;QACF;QAEA,IAAI,CAACH,mBAAmBQ,OAAO,IAAIP,kBAAkBO,OAAO,EAAE;QAC9DP,kBAAkBO,OAAO,GAAG;QAC5BL,kBAAkB;QAClBL,cAAc;QACdC,UAAUW,OAAO,CAAC,kCAAkC;YAACb;QAAI;IAC3D,GAAG;QACDE;QACAF;QACAC;QACAF,WAAWQ,WAAW;QACtBR,WAAWS,SAAS,CAACC,QAAQ;QAC7BV,WAAWS,SAAS,CAACE,SAAS;QAC9BX,WAAWa,eAAe;KAC3B;IAED,OAAOP;AACT;AAEA,OAAO,SAASS,kBAAkBd,IAAmB,EAAEe,OAAgB;IACrE,MAAMb,YAAYR;IAClB,MAAMsB,QAAQpB,OAAO;IAErBD,UAAU;QACR,IAAI,CAACoB,WAAWC,MAAML,OAAO,EAAE;QAC/BK,MAAML,OAAO,GAAG;QAChBT,UAAUW,OAAO,CAAC,8BAA8B;YAACb;QAAI;IACvD,GAAG;QAACE;QAAWF;QAAMe;KAAQ;AAC/B"}
@@ -0,0 +1,5 @@
1
+ export declare function useChecklistDismissal(workspaceId: string): {
2
+ dismissed: boolean;
3
+ dismiss: () => void;
4
+ };
5
+ //# sourceMappingURL=use-checklist-dismissal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-checklist-dismissal.d.ts","sourceRoot":"","sources":["../../src/hooks/use-checklist-dismissal.ts"],"names":[],"mappings":"AAOA,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM;;;EAsBxD"}
@@ -0,0 +1,31 @@
1
+ import { dismissWorkspaceSetupChecklist, isWorkspaceSetupChecklistDismissed, WORKSPACE_SETUP_CHECKLIST_DISMISSAL_EVENT } from '@shipfox/client-shell/runtime';
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ export function useChecklistDismissal(workspaceId) {
4
+ const [dismissed, setDismissed] = useState(()=>isWorkspaceSetupChecklistDismissed(workspaceId));
5
+ useEffect(()=>{
6
+ const refresh = ()=>setDismissed(isWorkspaceSetupChecklistDismissed(workspaceId));
7
+ refresh();
8
+ window.addEventListener('storage', refresh);
9
+ window.addEventListener('focus', refresh);
10
+ window.addEventListener(WORKSPACE_SETUP_CHECKLIST_DISMISSAL_EVENT, refresh);
11
+ return ()=>{
12
+ window.removeEventListener('storage', refresh);
13
+ window.removeEventListener('focus', refresh);
14
+ window.removeEventListener(WORKSPACE_SETUP_CHECKLIST_DISMISSAL_EVENT, refresh);
15
+ };
16
+ }, [
17
+ workspaceId
18
+ ]);
19
+ const dismiss = useCallback(()=>{
20
+ dismissWorkspaceSetupChecklist(workspaceId);
21
+ setDismissed(true);
22
+ }, [
23
+ workspaceId
24
+ ]);
25
+ return {
26
+ dismissed,
27
+ dismiss
28
+ };
29
+ }
30
+
31
+ //# sourceMappingURL=use-checklist-dismissal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/hooks/use-checklist-dismissal.ts"],"sourcesContent":["import {\n dismissWorkspaceSetupChecklist,\n isWorkspaceSetupChecklistDismissed,\n WORKSPACE_SETUP_CHECKLIST_DISMISSAL_EVENT,\n} from '@shipfox/client-shell/runtime';\nimport {useCallback, useEffect, useState} from 'react';\n\nexport function useChecklistDismissal(workspaceId: string) {\n const [dismissed, setDismissed] = useState(() => isWorkspaceSetupChecklistDismissed(workspaceId));\n\n useEffect(() => {\n const refresh = () => setDismissed(isWorkspaceSetupChecklistDismissed(workspaceId));\n refresh();\n window.addEventListener('storage', refresh);\n window.addEventListener('focus', refresh);\n window.addEventListener(WORKSPACE_SETUP_CHECKLIST_DISMISSAL_EVENT, refresh);\n return () => {\n window.removeEventListener('storage', refresh);\n window.removeEventListener('focus', refresh);\n window.removeEventListener(WORKSPACE_SETUP_CHECKLIST_DISMISSAL_EVENT, refresh);\n };\n }, [workspaceId]);\n\n const dismiss = useCallback(() => {\n dismissWorkspaceSetupChecklist(workspaceId);\n setDismissed(true);\n }, [workspaceId]);\n\n return {dismissed, dismiss};\n}\n"],"names":["dismissWorkspaceSetupChecklist","isWorkspaceSetupChecklistDismissed","WORKSPACE_SETUP_CHECKLIST_DISMISSAL_EVENT","useCallback","useEffect","useState","useChecklistDismissal","workspaceId","dismissed","setDismissed","refresh","window","addEventListener","removeEventListener","dismiss"],"mappings":"AAAA,SACEA,8BAA8B,EAC9BC,kCAAkC,EAClCC,yCAAyC,QACpC,gCAAgC;AACvC,SAAQC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAO,QAAQ;AAEvD,OAAO,SAASC,sBAAsBC,WAAmB;IACvD,MAAM,CAACC,WAAWC,aAAa,GAAGJ,SAAS,IAAMJ,mCAAmCM;IAEpFH,UAAU;QACR,MAAMM,UAAU,IAAMD,aAAaR,mCAAmCM;QACtEG;QACAC,OAAOC,gBAAgB,CAAC,WAAWF;QACnCC,OAAOC,gBAAgB,CAAC,SAASF;QACjCC,OAAOC,gBAAgB,CAACV,2CAA2CQ;QACnE,OAAO;YACLC,OAAOE,mBAAmB,CAAC,WAAWH;YACtCC,OAAOE,mBAAmB,CAAC,SAASH;YACpCC,OAAOE,mBAAmB,CAACX,2CAA2CQ;QACxE;IACF,GAAG;QAACH;KAAY;IAEhB,MAAMO,UAAUX,YAAY;QAC1BH,+BAA+BO;QAC/BE,aAAa;IACf,GAAG;QAACF;KAAY;IAEhB,OAAO;QAACC;QAAWM;IAAO;AAC5B"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { deriveIntegrationReadiness, type IntegrationProviderReadiness, type IntegrationReadinessInput, type WorkspaceIntegrationReadiness, } from '#core/integration-readiness.js';
2
2
  export { deriveSetupChecklist, type SetupChecklist, type SetupChecklistAction, type SetupChecklistInput, type SetupChecklistItem, type SetupChecklistItemId, type SetupChecklistItemStatus, } from '#core/setup-checklist.js';
3
+ export { SetupChecklistBody, type SetupChecklistBodyProps, type WorkspaceReference, WorkspaceSetupChecklist, type WorkspaceSetupHostProps, WorkspaceSetupIndicator, } from './components/setup-checklist.js';
3
4
  export { loadWorkspaceSetupRoute, type WorkspaceSetupRouteOptions, } from './workspace-setup-route.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,GACnC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,uBAAuB,EACvB,KAAK,0BAA0B,GAChC,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,GACnC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,oBAAoB,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACvB,uBAAuB,EACvB,KAAK,uBAAuB,EAC5B,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,KAAK,0BAA0B,GAChC,MAAM,4BAA4B,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  export { deriveIntegrationReadiness } from '#core/integration-readiness.js';
2
2
  export { deriveSetupChecklist } from '#core/setup-checklist.js';
3
+ export { SetupChecklistBody, WorkspaceSetupChecklist, WorkspaceSetupIndicator } from './components/setup-checklist.js';
3
4
  export { loadWorkspaceSetupRoute } from './workspace-setup-route.js';
4
5
 
5
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n deriveIntegrationReadiness,\n type IntegrationProviderReadiness,\n type IntegrationReadinessInput,\n type WorkspaceIntegrationReadiness,\n} from '#core/integration-readiness.js';\nexport {\n deriveSetupChecklist,\n type SetupChecklist,\n type SetupChecklistAction,\n type SetupChecklistInput,\n type SetupChecklistItem,\n type SetupChecklistItemId,\n type SetupChecklistItemStatus,\n} from '#core/setup-checklist.js';\nexport {\n loadWorkspaceSetupRoute,\n type WorkspaceSetupRouteOptions,\n} from './workspace-setup-route.js';\n"],"names":["deriveIntegrationReadiness","deriveSetupChecklist","loadWorkspaceSetupRoute"],"mappings":"AAAA,SACEA,0BAA0B,QAIrB,iCAAiC;AACxC,SACEC,oBAAoB,QAOf,2BAA2B;AAClC,SACEC,uBAAuB,QAElB,6BAA6B"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["export {\n deriveIntegrationReadiness,\n type IntegrationProviderReadiness,\n type IntegrationReadinessInput,\n type WorkspaceIntegrationReadiness,\n} from '#core/integration-readiness.js';\nexport {\n deriveSetupChecklist,\n type SetupChecklist,\n type SetupChecklistAction,\n type SetupChecklistInput,\n type SetupChecklistItem,\n type SetupChecklistItemId,\n type SetupChecklistItemStatus,\n} from '#core/setup-checklist.js';\nexport {\n SetupChecklistBody,\n type SetupChecklistBodyProps,\n type WorkspaceReference,\n WorkspaceSetupChecklist,\n type WorkspaceSetupHostProps,\n WorkspaceSetupIndicator,\n} from './components/setup-checklist.js';\nexport {\n loadWorkspaceSetupRoute,\n type WorkspaceSetupRouteOptions,\n} from './workspace-setup-route.js';\n"],"names":["deriveIntegrationReadiness","deriveSetupChecklist","SetupChecklistBody","WorkspaceSetupChecklist","WorkspaceSetupIndicator","loadWorkspaceSetupRoute"],"mappings":"AAAA,SACEA,0BAA0B,QAIrB,iCAAiC;AACxC,SACEC,oBAAoB,QAOf,2BAA2B;AAClC,SACEC,kBAAkB,EAGlBC,uBAAuB,EAEvBC,uBAAuB,QAClB,kCAAkC;AACzC,SACEC,uBAAuB,QAElB,6BAA6B"}