@actuate-media/cms-admin 0.72.2 → 0.72.3

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 (51) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/__tests__/components/toggle.test.d.ts +2 -0
  3. package/dist/__tests__/components/toggle.test.d.ts.map +1 -0
  4. package/dist/__tests__/components/toggle.test.js +17 -0
  5. package/dist/__tests__/components/toggle.test.js.map +1 -0
  6. package/dist/__tests__/views/post-fields-modal.render.test.js +38 -0
  7. package/dist/__tests__/views/post-fields-modal.render.test.js.map +1 -1
  8. package/dist/actuate-admin.css +1 -1
  9. package/dist/components/MediaPickerModal.d.ts.map +1 -1
  10. package/dist/components/MediaPickerModal.js +1 -1
  11. package/dist/components/MediaPickerModal.js.map +1 -1
  12. package/dist/components/TagInput.js +1 -1
  13. package/dist/components/TagInput.js.map +1 -1
  14. package/dist/components/ui/Modal.d.ts +17 -1
  15. package/dist/components/ui/Modal.d.ts.map +1 -1
  16. package/dist/components/ui/Modal.js +29 -3
  17. package/dist/components/ui/Modal.js.map +1 -1
  18. package/dist/components/ui/Toggle.d.ts.map +1 -1
  19. package/dist/components/ui/Toggle.js +4 -3
  20. package/dist/components/ui/Toggle.js.map +1 -1
  21. package/dist/fields/RichTextField.d.ts +3 -1
  22. package/dist/fields/RichTextField.d.ts.map +1 -1
  23. package/dist/fields/RichTextField.js +2 -2
  24. package/dist/fields/RichTextField.js.map +1 -1
  25. package/dist/views/Dashboard.d.ts.map +1 -1
  26. package/dist/views/Dashboard.js +1 -1
  27. package/dist/views/Dashboard.js.map +1 -1
  28. package/dist/views/page-editor/SectionInspector.d.ts +4 -1
  29. package/dist/views/page-editor/SectionInspector.d.ts.map +1 -1
  30. package/dist/views/page-editor/SectionInspector.js +8 -2
  31. package/dist/views/page-editor/SectionInspector.js.map +1 -1
  32. package/dist/views/post-editor/PostFieldsModal.d.ts +1 -1
  33. package/dist/views/post-editor/PostFieldsModal.d.ts.map +1 -1
  34. package/dist/views/post-editor/PostFieldsModal.js +152 -13
  35. package/dist/views/post-editor/PostFieldsModal.js.map +1 -1
  36. package/dist/views/post-editor/PostSectionEditor.d.ts.map +1 -1
  37. package/dist/views/post-editor/PostSectionEditor.js +6 -1
  38. package/dist/views/post-editor/PostSectionEditor.js.map +1 -1
  39. package/package.json +1 -1
  40. package/src/__tests__/components/toggle.test.tsx +17 -0
  41. package/src/__tests__/views/post-fields-modal.render.test.tsx +54 -0
  42. package/src/components/MediaPickerModal.tsx +6 -2
  43. package/src/components/TagInput.tsx +1 -1
  44. package/src/components/ui/Modal.tsx +46 -3
  45. package/src/components/ui/Toggle.tsx +4 -3
  46. package/src/fields/RichTextField.tsx +4 -1
  47. package/src/styles/actuate-tokens.css +7 -2
  48. package/src/views/Dashboard.tsx +2 -1
  49. package/src/views/page-editor/SectionInspector.tsx +23 -1
  50. package/src/views/post-editor/PostFieldsModal.tsx +412 -174
  51. package/src/views/post-editor/PostSectionEditor.tsx +8 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,38 @@
1
1
  # @actuate-media/cms-admin
2
2
 
3
+ ## 0.72.3
4
+
5
+ ### Patch Changes
6
+
7
+ - d1ffaeb: Darken the `--muted` text token to meet WCAG AA contrast.
8
+
9
+ Section labels, hint/help text, and muted icons used `--muted` at the raw
10
+ design-token value (#B0ADBE light / #504E68 dark), which is ~2.2:1 against
11
+ card surfaces — barely visible. The token is now #716E83 (light) and
12
+ #8784A2 (dark): >=4.5:1 on card and page backgrounds in both modes, while
13
+ staying one step lighter than `--sub` so the text hierarchy (txt > sub >
14
+ muted) is preserved everywhere the token is used.
15
+
16
+ Also marks the dashboard's literal date line as `data-volatile` so visual
17
+ regression tests mask it instead of drifting daily.
18
+
19
+ Fix toggle thumb alignment to match the design system's `.tog-thumb`
20
+ handoff: absolute positioning at `top/left: 2.5px`, sliding to `left:
21
+ 19.5px` when checked. The previous flex + translate layout pinned the knob
22
+ to the top of the 21px track and left it 2px short horizontally when on.
23
+
24
+ - d1ffaeb: Improve the post fields modal layout and fix nested media picker stacking.
25
+ - Widen the Post details dialog (`Modal` size `lg`) for metadata-only setup
26
+ (title, slug, excerpt, featured image, SEO). Body editing moves to the
27
+ Article Body section inspector on the canvas.
28
+ - Use visible `border-border` inputs (replacing transparent `border-input`) to
29
+ match the body editor chrome.
30
+ - Add AI generate buttons for excerpt, SEO title, and SEO description (coauthor
31
+ for unsaved drafts; governed SEO endpoint when the post is persisted).
32
+ - Raise `MediaPickerModal` to z-70 so Browse opens above z-60 form modals.
33
+ - Confirm before closing the post details dialog when there are unsaved edits
34
+ (outside click, Escape, header X, or Cancel).
35
+
3
36
  ## 0.72.2
4
37
 
5
38
  ### Patch Changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=toggle.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/components/toggle.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @vitest-environment happy-dom
3
+ import { afterEach, describe, expect, it } from 'vitest';
4
+ import { cleanup, render, screen } from '@testing-library/react';
5
+ import { Toggle } from '../../components/ui/Toggle.js';
6
+ afterEach(cleanup);
7
+ describe('Toggle', () => {
8
+ it('positions the thumb with design-system absolute offsets', () => {
9
+ render(_jsx(Toggle, { checked: false, onCheckedChange: () => { }, "aria-label": "Test toggle" }));
10
+ const thumb = screen.getByRole('switch').querySelector('span');
11
+ expect(thumb?.className).toContain('absolute');
12
+ expect(thumb?.className).toContain('top-[2.5px]');
13
+ expect(thumb?.className).toContain('left-[2.5px]');
14
+ expect(thumb?.className).toContain('data-[state=checked]:left-[19.5px]');
15
+ });
16
+ });
17
+ //# sourceMappingURL=toggle.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toggle.test.js","sourceRoot":"","sources":["../../../src/__tests__/components/toggle.test.tsx"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAEtD,SAAS,CAAC,OAAO,CAAC,CAAA;AAElB,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,KAAC,MAAM,IAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,GAAG,EAAE,GAAE,CAAC,gBAAa,aAAa,GAAG,CAAC,CAAA;QACtF,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QAC9D,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAC9C,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAA;QACjD,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QAClD,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -17,6 +17,15 @@ vi.mock('../../lib/api.js', () => ({
17
17
  vi.mock('../../fields/RichTextField.js', () => ({
18
18
  RichTextField: () => _jsx("div", { "data-testid": "rich-text" }),
19
19
  }));
20
+ vi.mock('../../lib/coauthor-client.js', () => ({
21
+ coauthorText: vi.fn(async () => ({
22
+ ok: true,
23
+ result: { action: 'compress', text: 'AI excerpt' },
24
+ })),
25
+ }));
26
+ vi.mock('../../lib/seo-service.js', () => ({
27
+ generateSeoField: vi.fn(async () => ({ text: 'AI SEO title' })),
28
+ }));
20
29
  const { PostFieldsModal } = await import('../../views/post-editor/PostFieldsModal.js');
21
30
  function basePost(over = {}) {
22
31
  return {
@@ -82,5 +91,34 @@ describe('PostFieldsModal', () => {
82
91
  fireEvent.click(screen.getByRole('button', { name: 'Done' }));
83
92
  expect(onSave).toHaveBeenCalledWith(expect.objectContaining({ category: 'tutorials', tags: ['AI', 'CMS'] }));
84
93
  });
94
+ it('derives slug from title until the slug field is edited', () => {
95
+ render(_jsx(PostFieldsModal, { open: true, post: basePost({ title: '', slug: '' }), canEdit: true, onClose: () => { }, onSave: () => { } }));
96
+ fireEvent.change(screen.getByLabelText(/^Title/), { target: { value: 'Hello World' } });
97
+ expect(screen.getByLabelText(/^Slug/).value).toBe('hello-world');
98
+ fireEvent.change(screen.getByLabelText(/^Slug/), { target: { value: 'custom-slug' } });
99
+ fireEvent.change(screen.getByLabelText(/^Title/), { target: { value: 'Changed Title' } });
100
+ expect(screen.getByLabelText(/^Slug/).value).toBe('custom-slug');
101
+ });
102
+ it('exposes AI generate controls for excerpt and SEO fields', () => {
103
+ render(_jsx(PostFieldsModal, { open: true, post: basePost(), canEdit: true, onClose: () => { }, onSave: () => { } }));
104
+ expect(screen.getByRole('button', { name: 'Generate excerpt from content' })).toBeTruthy();
105
+ expect(screen.getByRole('button', { name: 'Generate SEO title from content' })).toBeTruthy();
106
+ expect(screen.getByRole('button', { name: 'Generate SEO description from content' })).toBeTruthy();
107
+ });
108
+ it('prompts before discarding when Cancel is clicked with unsaved edits', () => {
109
+ const onClose = vi.fn();
110
+ render(_jsx(PostFieldsModal, { open: true, post: basePost(), canEdit: true, onClose: onClose, onSave: () => { } }));
111
+ fireEvent.change(screen.getByLabelText(/^Title/), { target: { value: 'Changed title' } });
112
+ fireEvent.click(screen.getByRole('button', { name: 'Cancel' }));
113
+ expect(onClose).not.toHaveBeenCalled();
114
+ expect(screen.getByRole('dialog', { name: 'Discard unsaved changes?' })).toBeTruthy();
115
+ });
116
+ it('closes without prompting when nothing changed', () => {
117
+ const onClose = vi.fn();
118
+ render(_jsx(PostFieldsModal, { open: true, post: basePost(), canEdit: true, onClose: onClose, onSave: () => { } }));
119
+ fireEvent.click(screen.getByRole('button', { name: 'Cancel' }));
120
+ expect(onClose).toHaveBeenCalledTimes(1);
121
+ expect(screen.queryByRole('dialog', { name: 'Discard unsaved changes?' })).toBeNull();
122
+ });
85
123
  });
86
124
  //# sourceMappingURL=post-fields-modal.render.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"post-fields-modal.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/post-fields-modal.render.test.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-fields-modal.render.test.js","sourceRoot":"","sources":["../../../src/__tests__/views/post-fields-modal.render.test.tsx"],"names":[],"mappings":"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"}