canopycms 0.2.0 → 0.3.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 (72) hide show
  1. package/CHANGELOG.md +199 -41
  2. package/dist/api/branch.d.ts +2 -2
  3. package/dist/cli/cli.js +0 -18
  4. package/dist/cli/generate-ai-content.js +0 -6
  5. package/dist/cli/init.js +0 -6
  6. package/dist/editor/BranchManager.d.ts +2 -0
  7. package/dist/editor/BranchManager.js +3 -3
  8. package/dist/editor/Editor.js +253 -128
  9. package/dist/editor/EntryNavigator.d.ts +44 -9
  10. package/dist/editor/EntryNavigator.js +275 -103
  11. package/dist/editor/branch-lock.d.ts +42 -0
  12. package/dist/editor/branch-lock.js +79 -0
  13. package/dist/editor/branch-status.d.ts +0 -6
  14. package/dist/editor/branch-status.js +0 -10
  15. package/dist/editor/components/BranchNotAvailableNotice.d.ts +11 -0
  16. package/dist/editor/components/BranchNotAvailableNotice.js +10 -0
  17. package/dist/editor/components/BranchPill.d.ts +3 -18
  18. package/dist/editor/components/BranchPill.js +7 -10
  19. package/dist/editor/components/EditorHeader.d.ts +24 -52
  20. package/dist/editor/components/EditorHeader.js +151 -71
  21. package/dist/editor/components/EditorRail.d.ts +8 -8
  22. package/dist/editor/components/EditorRail.js +7 -5
  23. package/dist/editor/components/EntryBreadcrumb.d.ts +5 -1
  24. package/dist/editor/components/EntryBreadcrumb.js +3 -3
  25. package/dist/editor/components/EntryHeader.d.ts +60 -0
  26. package/dist/editor/components/EntryHeader.js +45 -0
  27. package/dist/editor/components/EntrySaveButton.d.ts +24 -0
  28. package/dist/editor/components/EntrySaveButton.js +101 -0
  29. package/dist/editor/components/NoEditPermissionNotice.d.ts +1 -1
  30. package/dist/editor/components/NoEditPermissionNotice.js +1 -1
  31. package/dist/editor/components/RetryToastMessage.d.ts +3 -1
  32. package/dist/editor/components/RetryToastMessage.js +8 -4
  33. package/dist/editor/components/SaveAllButton.d.ts +25 -0
  34. package/dist/editor/components/SaveAllButton.js +81 -0
  35. package/dist/editor/components/UnsavedMark.d.ts +1 -1
  36. package/dist/editor/components/UnsavedMark.js +1 -1
  37. package/dist/editor/components/index.d.ts +1 -1
  38. package/dist/editor/components/index.js +1 -1
  39. package/dist/editor/copy.d.ts +0 -1
  40. package/dist/editor/copy.js +0 -1
  41. package/dist/editor/editor-utils.d.ts +2 -2
  42. package/dist/editor/editor-utils.js +2 -2
  43. package/dist/editor/entry-search.d.ts +10 -16
  44. package/dist/editor/entry-search.js +4 -24
  45. package/dist/editor/hooks/useBranchManager.d.ts +7 -3
  46. package/dist/editor/hooks/useBranchManager.js +13 -9
  47. package/dist/editor/hooks/useEntryManager.d.ts +3 -0
  48. package/dist/editor/hooks/useEntryManager.js +10 -3
  49. package/dist/editor/shell/ActivityRail.d.ts +4 -0
  50. package/dist/editor/shell/ActivityRail.js +13 -4
  51. package/dist/editor/shell/EditorShell.d.ts +6 -7
  52. package/dist/editor/shell/EditorShell.js +9 -13
  53. package/dist/editor/shell/PaneLayout.d.ts +1 -0
  54. package/dist/editor/shell/PaneLayout.js +23 -5
  55. package/dist/editor/shell/SidePanelHost.d.ts +11 -4
  56. package/dist/editor/shell/SidePanelHost.js +95 -7
  57. package/dist/editor/shell/TopBar.d.ts +4 -4
  58. package/dist/editor/shell/TopBar.js +6 -3
  59. package/dist/editor/utils/focus-return.d.ts +10 -2
  60. package/dist/editor/utils/focus-return.js +40 -6
  61. package/dist/operating-mode/client-safe-strategy.d.ts +1 -6
  62. package/dist/operating-mode/client-safe-strategy.js +1 -10
  63. package/dist/operating-mode/types.d.ts +0 -3
  64. package/dist/version.d.ts +1 -1
  65. package/dist/version.js +1 -1
  66. package/package.json +1 -1
  67. package/dist/editor/components/BranchLockBanner.d.ts +0 -23
  68. package/dist/editor/components/BranchLockBanner.js +0 -66
  69. package/dist/editor/components/QuickOpenPalette.d.ts +0 -28
  70. package/dist/editor/components/QuickOpenPalette.js +0 -71
  71. package/dist/editor/components/SaveSplitButton.d.ts +0 -31
  72. package/dist/editor/components/SaveSplitButton.js +0 -121
@@ -168,9 +168,9 @@ const BranchCard = ({ branch: b, isCurrent, workflowBlockedReason, user, onSelec
168
168
  ? 'This branch is in review. Withdraw it from review before deleting it.'
169
169
  : undefined, onClick: () => onDelete?.(b.name), children: "Delete branch" })] }))] })] }))] })] }) }));
170
170
  };
171
- export const BranchManager = ({ branches, mode, user, currentBranchName, currentWorkflowBlockedReason, onSelect, onBeforeCreate, onCreate, onDelete, onSubmit, onWithdraw, onRequestChanges, onClose: _, comments = [], currentUserId, canResolve = false, onAddComment, onResolveThread, highlightThreadId, onGetUserMetadata, onGetOwnerMetadata, onGetCommentUserMetadata, }) => {
171
+ export const BranchManager = ({ branches, mode, user, currentBranchName, currentWorkflowBlockedReason, startCreating = false, onSelect, onBeforeCreate, onCreate, onDelete, onSubmit, onWithdraw, onRequestChanges, onClose: _, comments = [], currentUserId, canResolve = false, onAddComment, onResolveThread, highlightThreadId, onGetUserMetadata, onGetOwnerMetadata, onGetCommentUserMetadata, }) => {
172
172
  const supportsBranching = clientOperatingStrategy(mode).supportsBranching();
173
- const [showCreateForm, setShowCreateForm] = useState(false);
173
+ const [showCreateForm, setShowCreateForm] = useState(startCreating);
174
174
  const [newBranchName, setNewBranchName] = useState('');
175
175
  const [newBranchTitle, setNewBranchTitle] = useState('');
176
176
  const [newBranchDescription, setNewBranchDescription] = useState('');
@@ -209,5 +209,5 @@ export const BranchManager = ({ branches, mode, user, currentBranchName, current
209
209
  ]
210
210
  : branches;
211
211
  const hasBranchThreads = comments.some((t) => t.type === 'branch');
212
- return (_jsxs(Stack, { h: "100%", style: { display: 'flex', flexDirection: 'column' }, gap: 0, "data-testid": "branch-manager", children: [currentUserId && onAddComment && onResolveThread && hasBranchThreads && (_jsx(Stack, { pt: "sm", children: _jsx(BranchComments, { comments: comments, currentUserId: currentUserId, canResolve: canResolve, onAddComment: onAddComment, onResolveThread: onResolveThread, highlightThreadId: highlightThreadId, onGetUserMetadata: onGetCommentUserMetadata }) })), !!supportsBranching && (_jsxs(Stack, { gap: "sm", pt: "sm", children: [_jsx(Button, { variant: "light", size: "sm", fullWidth: true, onClick: () => setShowCreateForm(!showCreateForm), disabled: creating, "data-testid": "create-branch-button", children: showCreateForm ? 'Cancel' : `${EDITOR_ACTIONS.newBranch}…` }), _jsx(Collapse, { in: showCreateForm, children: _jsx(Paper, { withBorder: true, p: "md", children: _jsxs(Stack, { gap: "sm", children: [_jsx(TextInput, { label: "Branch name", placeholder: "feature/my-branch", value: newBranchName, onChange: (e) => setNewBranchName(e.target.value), required: true, disabled: creating, "data-testid": "branch-name-input" }), _jsx(TextInput, { label: "Title", placeholder: "Brief description", value: newBranchTitle, onChange: (e) => setNewBranchTitle(e.target.value), disabled: creating, "data-testid": "branch-title-input" }), _jsx(Textarea, { label: "Description", placeholder: "Detailed description of the changes", value: newBranchDescription, onChange: (e) => setNewBranchDescription(e.target.value), minRows: 2, disabled: creating, "data-testid": "branch-description-textarea" }), _jsx(Button, { size: "sm", onClick: handleCreate, disabled: !newBranchName.trim(), loading: creating, fullWidth: true, "data-testid": "create-branch-submit", children: "Create branch" })] }) }) })] })), _jsx(ScrollArea, { style: { flex: 1 }, pb: "md", children: branches.length === 0 ? (_jsx(Text, { size: "sm", c: "dimmed", py: "md", children: !supportsBranching ? 'Branch management is not available.' : 'No branches available.' })) : (_jsx(Stack, { gap: "sm", children: orderedBranches.map((b) => (_jsx(BranchCard, { branch: b, isCurrent: b.name === currentBranchName, workflowBlockedReason: b.name === currentBranchName ? currentWorkflowBlockedReason : undefined, user: user, onSelect: onSelect, onSubmit: onSubmit, onWithdraw: onWithdraw, onRequestChanges: onRequestChanges, onDelete: onDelete, onGetUserMetadata: onGetUserMetadata, onGetOwnerMetadata: onGetOwnerMetadata }, b.name))) })) })] }));
212
+ return (_jsxs(Stack, { h: "100%", style: { display: 'flex', flexDirection: 'column' }, gap: 0, "data-testid": "branch-manager", children: [currentUserId && onAddComment && onResolveThread && hasBranchThreads && (_jsx(Stack, { pt: "sm", children: _jsx(BranchComments, { comments: comments, currentUserId: currentUserId, canResolve: canResolve, onAddComment: onAddComment, onResolveThread: onResolveThread, highlightThreadId: highlightThreadId, onGetUserMetadata: onGetCommentUserMetadata }) })), !!supportsBranching && (_jsxs(Stack, { gap: "sm", pt: "sm", children: [_jsx(Button, { variant: "light", size: "sm", fullWidth: true, onClick: () => setShowCreateForm(!showCreateForm), disabled: creating, "data-testid": "create-branch-button", children: showCreateForm ? 'Cancel' : `${EDITOR_ACTIONS.newBranch}…` }), _jsx(Collapse, { in: showCreateForm, children: _jsx(Paper, { withBorder: true, p: "md", children: _jsxs(Stack, { gap: "sm", children: [_jsx(TextInput, { label: "Branch name", placeholder: "feature/my-branch", value: newBranchName, onChange: (e) => setNewBranchName(e.target.value), required: true, disabled: creating, "data-autofocus": startCreating || undefined, "data-testid": "branch-name-input" }), _jsx(TextInput, { label: "Title", placeholder: "Brief description", value: newBranchTitle, onChange: (e) => setNewBranchTitle(e.target.value), disabled: creating, "data-testid": "branch-title-input" }), _jsx(Textarea, { label: "Description", placeholder: "Detailed description of the changes", value: newBranchDescription, onChange: (e) => setNewBranchDescription(e.target.value), minRows: 2, disabled: creating, "data-testid": "branch-description-textarea" }), _jsx(Button, { size: "sm", onClick: handleCreate, disabled: !newBranchName.trim(), loading: creating, fullWidth: true, "data-testid": "create-branch-submit", children: "Create branch" })] }) }) })] })), _jsx(ScrollArea, { style: { flex: 1 }, pb: "md", children: branches.length === 0 ? (_jsx(Text, { size: "sm", c: "dimmed", py: "md", children: !supportsBranching ? 'Branch management is not available.' : 'No branches available.' })) : (_jsx(Stack, { gap: "sm", children: orderedBranches.map((b) => (_jsx(BranchCard, { branch: b, isCurrent: b.name === currentBranchName, workflowBlockedReason: b.name === currentBranchName ? currentWorkflowBlockedReason : undefined, user: user, onSelect: onSelect, onSubmit: onSubmit, onWithdraw: onWithdraw, onRequestChanges: onRequestChanges, onDelete: onDelete, onGetUserMetadata: onGetUserMetadata, onGetOwnerMetadata: onGetOwnerMetadata }, b.name))) })) })] }));
213
213
  };