@pantheon-systems/puck-css 0.4.1 → 0.4.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.
- package/dist/core/config.d.ts +3 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +5 -6
- package/dist/core/config.js.map +1 -1
- package/dist/core/featureConfig.d.ts +2 -0
- package/dist/core/featureConfig.d.ts.map +1 -1
- package/dist/core/featureConfig.js +4 -0
- package/dist/core/featureConfig.js.map +1 -1
- package/dist/core/types.d.ts +58 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/data/dal/index.d.ts +5 -1
- package/dist/data/dal/index.d.ts.map +1 -1
- package/dist/data/dal/index.js +22 -1
- package/dist/data/dal/index.js.map +1 -1
- package/dist/data/dal/init.d.ts.map +1 -1
- package/dist/data/dal/init.js +22 -14
- package/dist/data/dal/init.js.map +1 -1
- package/dist/data/dal/p1-store.d.ts +15 -1
- package/dist/data/dal/p1-store.d.ts.map +1 -1
- package/dist/data/dal/p1-store.js +51 -5
- package/dist/data/dal/p1-store.js.map +1 -1
- package/dist/data/dal/types.d.ts +13 -1
- package/dist/data/dal/types.d.ts.map +1 -1
- package/dist/data/page-store.d.ts +17 -2
- package/dist/data/page-store.d.ts.map +1 -1
- package/dist/data/page-store.js +47 -5
- package/dist/data/page-store.js.map +1 -1
- package/dist/editor/P1App.d.ts.map +1 -1
- package/dist/editor/P1App.js +1 -1
- package/dist/editor/P1App.js.map +1 -1
- package/dist/editor/P1PuckProvider.d.ts.map +1 -1
- package/dist/editor/P1PuckProvider.js +175 -66
- package/dist/editor/P1PuckProvider.js.map +1 -1
- package/dist/editor/plugin/P1Plugin.d.ts +22 -1
- package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
- package/dist/editor/plugin/P1Plugin.js +72 -21
- package/dist/editor/plugin/P1Plugin.js.map +1 -1
- package/dist/editor/plugin/createP1Overrides.d.ts.map +1 -1
- package/dist/editor/plugin/createP1Overrides.js +4 -1
- package/dist/editor/plugin/createP1Overrides.js.map +1 -1
- package/dist/editor/useDocuments.d.ts +4 -1
- package/dist/editor/useDocuments.d.ts.map +1 -1
- package/dist/editor/useDocuments.js +5 -2
- package/dist/editor/useDocuments.js.map +1 -1
- package/dist/editor/useP1Editor.d.ts +12 -0
- package/dist/editor/useP1Editor.d.ts.map +1 -1
- package/dist/editor/useP1Editor.js +40 -5
- package/dist/editor/useP1Editor.js.map +1 -1
- package/dist/editor/useP1Plugin.d.ts +5 -1
- package/dist/editor/useP1Plugin.d.ts.map +1 -1
- package/dist/editor/useP1Plugin.js +4 -0
- package/dist/editor/useP1Plugin.js.map +1 -1
- package/dist/editor/useRealtime.d.ts +9 -4
- package/dist/editor/useRealtime.d.ts.map +1 -1
- package/dist/editor/useRealtime.js +11 -6
- package/dist/editor/useRealtime.js.map +1 -1
- package/dist/features/content-type-templates/editor/useTemplateEditor.d.ts +20 -0
- package/dist/features/content-type-templates/editor/useTemplateEditor.d.ts.map +1 -0
- package/dist/features/content-type-templates/editor/useTemplateEditor.js +62 -0
- package/dist/features/content-type-templates/editor/useTemplateEditor.js.map +1 -0
- package/dist/features/content-type-templates/editor/useTemplatePermissions.d.ts +7 -0
- package/dist/features/content-type-templates/editor/useTemplatePermissions.d.ts.map +1 -0
- package/dist/features/content-type-templates/editor/useTemplatePermissions.js +12 -0
- package/dist/features/content-type-templates/editor/useTemplatePermissions.js.map +1 -0
- package/dist/features/content-type-templates/editor/useTemplateScaffold.d.ts +19 -0
- package/dist/features/content-type-templates/editor/useTemplateScaffold.d.ts.map +1 -0
- package/dist/features/content-type-templates/editor/useTemplateScaffold.js +37 -0
- package/dist/features/content-type-templates/editor/useTemplateScaffold.js.map +1 -0
- package/dist/features/content-type-templates/hooks/useTemplateList.d.ts +41 -0
- package/dist/features/content-type-templates/hooks/useTemplateList.d.ts.map +1 -0
- package/dist/features/content-type-templates/hooks/useTemplateList.js +72 -0
- package/dist/features/content-type-templates/hooks/useTemplateList.js.map +1 -0
- package/dist/features/content-type-templates/index.d.ts +18 -0
- package/dist/features/content-type-templates/index.d.ts.map +1 -0
- package/dist/features/content-type-templates/index.js +13 -0
- package/dist/features/content-type-templates/index.js.map +1 -0
- package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts +68 -0
- package/dist/features/content-type-templates/permissions/createPuckPermissions.d.ts.map +1 -0
- package/dist/features/content-type-templates/permissions/createPuckPermissions.js +90 -0
- package/dist/features/content-type-templates/permissions/createPuckPermissions.js.map +1 -0
- package/dist/features/content-type-templates/permissions/role-permissions.d.ts +49 -0
- package/dist/features/content-type-templates/permissions/role-permissions.d.ts.map +1 -0
- package/dist/features/content-type-templates/permissions/role-permissions.js +79 -0
- package/dist/features/content-type-templates/permissions/role-permissions.js.map +1 -0
- package/dist/features/content-type-templates/permissions/useContentRole.d.ts +37 -0
- package/dist/features/content-type-templates/permissions/useContentRole.d.ts.map +1 -0
- package/dist/features/content-type-templates/permissions/useContentRole.js +34 -0
- package/dist/features/content-type-templates/permissions/useContentRole.js.map +1 -0
- package/dist/features/content-type-templates/permissions/useResolveContentRole.d.ts +38 -0
- package/dist/features/content-type-templates/permissions/useResolveContentRole.d.ts.map +1 -0
- package/dist/features/content-type-templates/permissions/useResolveContentRole.js +83 -0
- package/dist/features/content-type-templates/permissions/useResolveContentRole.js.map +1 -0
- package/dist/features/content-type-templates/stores/index.d.ts +9 -0
- package/dist/features/content-type-templates/stores/index.d.ts.map +1 -0
- package/dist/features/content-type-templates/stores/index.js +8 -0
- package/dist/features/content-type-templates/stores/index.js.map +1 -0
- package/dist/features/content-type-templates/stores/template-store-api.d.ts +17 -0
- package/dist/features/content-type-templates/stores/template-store-api.d.ts.map +1 -0
- package/dist/features/content-type-templates/stores/template-store-api.js +56 -0
- package/dist/features/content-type-templates/stores/template-store-api.js.map +1 -0
- package/dist/features/content-type-templates/stores/template-store.d.ts +54 -0
- package/dist/features/content-type-templates/stores/template-store.d.ts.map +1 -0
- package/dist/features/content-type-templates/stores/template-store.js +80 -0
- package/dist/features/content-type-templates/stores/template-store.js.map +1 -0
- package/dist/features/content-type-templates/types.d.ts +114 -0
- package/dist/features/content-type-templates/types.d.ts.map +1 -0
- package/dist/features/content-type-templates/types.js +7 -0
- package/dist/features/content-type-templates/types.js.map +1 -0
- package/dist/features/content-type-templates/ui/ActionBarPinButton.d.ts +3 -0
- package/dist/features/content-type-templates/ui/ActionBarPinButton.d.ts.map +1 -0
- package/dist/features/content-type-templates/ui/ActionBarPinButton.js +77 -0
- package/dist/features/content-type-templates/ui/ActionBarPinButton.js.map +1 -0
- package/dist/features/content-type-templates/ui/TemplateManagerOverlay.d.ts +18 -0
- package/dist/features/content-type-templates/ui/TemplateManagerOverlay.d.ts.map +1 -0
- package/dist/features/content-type-templates/ui/TemplateManagerOverlay.js +167 -0
- package/dist/features/content-type-templates/ui/TemplateManagerOverlay.js.map +1 -0
- package/dist/features/content-type-templates/ui/TemplatePinPanel.d.ts +18 -0
- package/dist/features/content-type-templates/ui/TemplatePinPanel.d.ts.map +1 -0
- package/dist/features/content-type-templates/ui/TemplatePinPanel.js +11 -0
- package/dist/features/content-type-templates/ui/TemplatePinPanel.js.map +1 -0
- package/dist/features/content-type-templates/ui/TemplateSelector.d.ts +41 -0
- package/dist/features/content-type-templates/ui/TemplateSelector.d.ts.map +1 -0
- package/dist/features/content-type-templates/ui/TemplateSelector.js +32 -0
- package/dist/features/content-type-templates/ui/TemplateSelector.js.map +1 -0
- package/dist/features/content-type-templates/ui/dataToTemplate.d.ts +25 -0
- package/dist/features/content-type-templates/ui/dataToTemplate.d.ts.map +1 -0
- package/dist/features/content-type-templates/ui/dataToTemplate.js +37 -0
- package/dist/features/content-type-templates/ui/dataToTemplate.js.map +1 -0
- package/dist/features/content-type-templates/validation/structural-validation.d.ts +29 -0
- package/dist/features/content-type-templates/validation/structural-validation.d.ts.map +1 -0
- package/dist/features/content-type-templates/validation/structural-validation.js +69 -0
- package/dist/features/content-type-templates/validation/structural-validation.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/p1/editor/connect/connect-field-modal.d.ts.map +1 -1
- package/dist/p1/editor/connect/connect-field-modal.js +23 -1
- package/dist/p1/editor/connect/connect-field-modal.js.map +1 -1
- package/dist/p1/editor/connect/field-connect-plugin.d.ts.map +1 -1
- package/dist/p1/editor/connect/field-connect-plugin.js +2 -6
- package/dist/p1/editor/connect/field-connect-plugin.js.map +1 -1
- package/dist/p1/pages/conflict-resolution-panel.d.ts +17 -0
- package/dist/p1/pages/conflict-resolution-panel.d.ts.map +1 -0
- package/dist/p1/pages/conflict-resolution-panel.js +74 -0
- package/dist/p1/pages/conflict-resolution-panel.js.map +1 -0
- package/dist/p1/pages/content-type-template-list.d.ts +7 -0
- package/dist/p1/pages/content-type-template-list.d.ts.map +1 -0
- package/dist/p1/pages/content-type-template-list.js +108 -0
- package/dist/p1/pages/content-type-template-list.js.map +1 -0
- package/dist/p1/pages/create-content-type-form.d.ts +7 -0
- package/dist/p1/pages/create-content-type-form.d.ts.map +1 -0
- package/dist/p1/pages/create-content-type-form.js +102 -0
- package/dist/p1/pages/create-content-type-form.js.map +1 -0
- package/dist/p1/pages/create-page-form.d.ts +8 -1
- package/dist/p1/pages/create-page-form.d.ts.map +1 -1
- package/dist/p1/pages/create-page-form.js +67 -8
- package/dist/p1/pages/create-page-form.js.map +1 -1
- package/dist/p1/pages/create-template-form.d.ts +6 -1
- package/dist/p1/pages/create-template-form.d.ts.map +1 -1
- package/dist/p1/pages/create-template-form.js +61 -15
- package/dist/p1/pages/create-template-form.js.map +1 -1
- package/dist/p1/pages/hooks.d.ts +6 -1
- package/dist/p1/pages/hooks.d.ts.map +1 -1
- package/dist/p1/pages/hooks.js +13 -2
- package/dist/p1/pages/hooks.js.map +1 -1
- package/dist/p1/pages/index.d.ts +5 -0
- package/dist/p1/pages/index.d.ts.map +1 -1
- package/dist/p1/pages/index.js +5 -0
- package/dist/p1/pages/index.js.map +1 -1
- package/dist/p1/pages/migration-conflict-queue.d.ts +8 -0
- package/dist/p1/pages/migration-conflict-queue.d.ts.map +1 -0
- package/dist/p1/pages/migration-conflict-queue.js +62 -0
- package/dist/p1/pages/migration-conflict-queue.js.map +1 -0
- package/dist/p1/pages/migration-preview-panel.d.ts +12 -0
- package/dist/p1/pages/migration-preview-panel.d.ts.map +1 -0
- package/dist/p1/pages/migration-preview-panel.js +157 -0
- package/dist/p1/pages/migration-preview-panel.js.map +1 -0
- package/dist/p1/pages/migration-status-panel.d.ts +7 -0
- package/dist/p1/pages/migration-status-panel.d.ts.map +1 -0
- package/dist/p1/pages/migration-status-panel.js +198 -0
- package/dist/p1/pages/migration-status-panel.js.map +1 -0
- package/dist/p1/pages/structure-page.d.ts.map +1 -1
- package/dist/p1/pages/structure-page.js +75 -18
- package/dist/p1/pages/structure-page.js.map +1 -1
- package/dist/p1/pages/structure-tabs.d.ts +11 -0
- package/dist/p1/pages/structure-tabs.d.ts.map +1 -0
- package/dist/p1/pages/structure-tabs.js +45 -0
- package/dist/p1/pages/structure-tabs.js.map +1 -0
- package/dist/pds/components/P1EditorHeader.d.ts +8 -9
- package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorHeader.js +20 -52
- package/dist/pds/components/P1EditorHeader.js.map +1 -1
- package/dist/pds/components/P1EditorHeader.module.css +43 -17
- package/dist/pds/components/P1EditorSubheader.d.ts +10 -1
- package/dist/pds/components/P1EditorSubheader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorSubheader.js +4 -3
- package/dist/pds/components/P1EditorSubheader.js.map +1 -1
- package/dist/pds/components/P1EditorSubheader.module.css +31 -2
- package/dist/pds/components/PageNavigator.d.ts +7 -2
- package/dist/pds/components/PageNavigator.d.ts.map +1 -1
- package/dist/pds/components/PageNavigator.js +28 -7
- package/dist/pds/components/PageNavigator.js.map +1 -1
- package/dist/pds/components/PageNavigator.module.css +70 -0
- package/dist/pds/components/PublishControl.d.ts +4 -1
- package/dist/pds/components/PublishControl.d.ts.map +1 -1
- package/dist/pds/components/PublishControl.js +27 -10
- package/dist/pds/components/PublishControl.js.map +1 -1
- package/dist/pds/components/WorkstreamSwitcher.d.ts.map +1 -1
- package/dist/pds/components/WorkstreamSwitcher.js +8 -3
- package/dist/pds/components/WorkstreamSwitcher.js.map +1 -1
- package/dist/pds/components/WorkstreamSwitcher.module.css +12 -2
- package/package.json +16 -16
- package/src/styles.css +364 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
/**
|
|
3
3
|
* PageNavigator component.
|
|
4
4
|
*
|
|
@@ -13,11 +13,25 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
13
|
import { useState, useCallback } from 'react';
|
|
14
14
|
import { createPortal } from 'react-dom';
|
|
15
15
|
import styles from './PageNavigator.module.css';
|
|
16
|
-
export function PageNavigator({ documents, currentDocument, onSelect, onClose, open, isMainBranch, onCreateDocument, portalStyle, }) {
|
|
16
|
+
export function PageNavigator({ documents, currentDocument, onSelect, onClose, open, isMainBranch, onCreateDocument, templates, templatesLoading, portalStyle, }) {
|
|
17
17
|
const [query, setQuery] = useState('');
|
|
18
|
-
const [
|
|
18
|
+
const [creationStep, setCreationStep] = useState('idle');
|
|
19
|
+
const [selectedTemplate, setSelectedTemplate] = useState(null);
|
|
19
20
|
const [newPath, setNewPath] = useState('');
|
|
20
21
|
const [createError, setCreateError] = useState(null);
|
|
22
|
+
const hasTemplates = templates && templates.length > 0;
|
|
23
|
+
const handleNewPageClick = useCallback(() => {
|
|
24
|
+
if (hasTemplates) {
|
|
25
|
+
setCreationStep('template');
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
setCreationStep('path');
|
|
29
|
+
}
|
|
30
|
+
}, [hasTemplates]);
|
|
31
|
+
const handleTemplateSelect = useCallback((template) => {
|
|
32
|
+
setSelectedTemplate(template);
|
|
33
|
+
setCreationStep('path');
|
|
34
|
+
}, []);
|
|
21
35
|
const handleCreate = useCallback(async (e) => {
|
|
22
36
|
e.preventDefault();
|
|
23
37
|
if (!newPath.trim() || !onCreateDocument)
|
|
@@ -26,9 +40,10 @@ export function PageNavigator({ documents, currentDocument, onSelect, onClose, o
|
|
|
26
40
|
const normalizedPath = path.startsWith('/') ? path : `/${path}`;
|
|
27
41
|
setCreateError(null);
|
|
28
42
|
try {
|
|
29
|
-
await onCreateDocument(path);
|
|
43
|
+
await onCreateDocument(path, selectedTemplate);
|
|
30
44
|
setNewPath('');
|
|
31
|
-
|
|
45
|
+
setCreationStep('idle');
|
|
46
|
+
setSelectedTemplate(null);
|
|
32
47
|
// Navigate to the newly created page
|
|
33
48
|
onSelect({ id: normalizedPath, path: normalizedPath, archived: false });
|
|
34
49
|
onClose();
|
|
@@ -36,7 +51,13 @@ export function PageNavigator({ documents, currentDocument, onSelect, onClose, o
|
|
|
36
51
|
catch (err) {
|
|
37
52
|
setCreateError(err instanceof Error ? err.message : 'Failed to create page');
|
|
38
53
|
}
|
|
39
|
-
}, [newPath, onCreateDocument, onSelect, onClose]);
|
|
54
|
+
}, [newPath, onCreateDocument, selectedTemplate, onSelect, onClose]);
|
|
55
|
+
const handleCancel = useCallback(() => {
|
|
56
|
+
setCreationStep('idle');
|
|
57
|
+
setNewPath('');
|
|
58
|
+
setCreateError(null);
|
|
59
|
+
setSelectedTemplate(null);
|
|
60
|
+
}, []);
|
|
40
61
|
if (!open)
|
|
41
62
|
return null;
|
|
42
63
|
// Filter: exclude archived, exclude internal _* paths (e.g. /_registry/, _registry/)
|
|
@@ -54,7 +75,7 @@ export function PageNavigator({ documents, currentDocument, onSelect, onClose, o
|
|
|
54
75
|
const isCurrent = currentDocument !== null && doc.id === currentDocument.id;
|
|
55
76
|
const isLiveOnly = isMainBranch === false && doc.inherited === true;
|
|
56
77
|
return (_jsx("li", { children: _jsx("button", { type: "button", "data-testid": "page-navigator-item", "data-inherited": isLiveOnly ? 'true' : undefined, className: `${styles.item}${isCurrent ? ` ${styles.itemCurrent}` : ''}${isLiveOnly ? ` ${styles.itemInherited}` : ''}`, onClick: () => { onSelect(doc); setQuery(''); }, "aria-current": isCurrent ? 'page' : undefined, children: doc.path }) }, doc.id));
|
|
57
|
-
}), filtered.length === 0 && (_jsx("li", { className: styles.empty, children: "No pages found" }))] }), _jsx("div", { className: styles.footer, children:
|
|
78
|
+
}), filtered.length === 0 && (_jsx("li", { className: styles.empty, children: "No pages found" }))] }), _jsx("div", { className: styles.footer, children: creationStep === 'template' ? (_jsx("div", { "data-testid": "template-selector", className: styles.templateSelector, children: templatesLoading ? (_jsx("div", { "data-testid": "template-selector-loading", className: styles.templateSelectorLoading, children: "Loading templates..." })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: styles.templateSelectorHeader, children: "Choose a template" }), _jsxs("div", { className: styles.templateSelectorGrid, children: [_jsxs("button", { type: "button", className: styles.templateOption, onClick: () => handleTemplateSelect(null), children: [_jsx("span", { className: styles.templateOptionLabel, children: "Blank Page" }), _jsx("span", { className: styles.templateOptionDesc, children: "Start from scratch" })] }), (templates ?? []).map((t) => (_jsxs("button", { type: "button", className: styles.templateOption, onClick: () => handleTemplateSelect(t), children: [_jsx("span", { className: styles.templateOptionLabel, children: t.label || t.name }), t.description && (_jsx("span", { className: styles.templateOptionDesc, children: t.description }))] }, t.id)))] }), _jsx("button", { type: "button", className: styles.createCancel, onClick: handleCancel, children: "Cancel" })] })) })) : creationStep === 'path' ? (_jsxs("form", { "data-testid": "page-navigator-create-form", className: styles.createForm, onSubmit: handleCreate, children: [selectedTemplate && (_jsxs("div", { className: styles.selectedTemplateBadge, children: ["Template: ", selectedTemplate.label || selectedTemplate.name] })), _jsx("input", { autoFocus: true, type: "text", "data-testid": "page-navigator-create-input", className: styles.createInput, placeholder: "page-path", value: newPath, onChange: (e) => setNewPath(e.target.value) }), _jsxs("div", { className: styles.createActions, children: [_jsx("button", { type: "submit", className: styles.createSubmit, children: "Create" }), _jsx("button", { type: "button", "data-testid": "page-navigator-create-cancel", className: styles.createCancel, onClick: handleCancel, children: "Cancel" })] }), createError && (_jsx("div", { "data-testid": "page-navigator-create-error", className: styles.createError, children: createError }))] })) : (_jsx("button", { type: "button", "data-testid": "page-navigator-new", className: styles.newButton, onClick: onCreateDocument ? handleNewPageClick : undefined, children: "+ New page" })) })] }));
|
|
58
79
|
return portalStyle ? createPortal(content, document.body) : content;
|
|
59
80
|
}
|
|
60
81
|
//# sourceMappingURL=PageNavigator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageNavigator.js","sourceRoot":"","sources":["../../../src/pds/components/PageNavigator.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;AAEH,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"PageNavigator.js","sourceRoot":"","sources":["../../../src/pds/components/PageNavigator.tsx"],"names":[],"mappings":"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"}
|
|
@@ -253,6 +253,76 @@
|
|
|
253
253
|
background: var(--pds-color-bg-default-secondary, oklch(0.9702 0 0));
|
|
254
254
|
}
|
|
255
255
|
|
|
256
|
+
/* ── Template selector ─────────────────────────────────────────────────── */
|
|
257
|
+
|
|
258
|
+
.templateSelector {
|
|
259
|
+
width: 100%;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
.templateSelectorHeader {
|
|
263
|
+
font-family: var(--pds-typography-ff-default, 'Inter', sans-serif);
|
|
264
|
+
font-size: var(--pds-typography-size-s, 0.875rem);
|
|
265
|
+
font-weight: var(--pds-typography-fw-semibold, 600);
|
|
266
|
+
color: var(--pds-color-fg-default, oklch(0.2046 0 0));
|
|
267
|
+
margin-bottom: 0.512rem;
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
.templateSelectorGrid {
|
|
271
|
+
display: flex;
|
|
272
|
+
flex-direction: column;
|
|
273
|
+
gap: 0.25rem;
|
|
274
|
+
margin-bottom: 0.512rem;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
.templateSelectorLoading {
|
|
278
|
+
padding: 0.64rem;
|
|
279
|
+
font-family: var(--pds-typography-ff-default, 'Inter', sans-serif);
|
|
280
|
+
font-size: var(--pds-typography-size-s, 0.875rem);
|
|
281
|
+
color: var(--pds-color-fg-default-secondary, oklch(0.5103 0 0));
|
|
282
|
+
font-style: italic;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
.templateOption {
|
|
286
|
+
display: flex;
|
|
287
|
+
flex-direction: column;
|
|
288
|
+
align-items: flex-start;
|
|
289
|
+
gap: 0.125rem;
|
|
290
|
+
padding: 0.5rem 0.64rem;
|
|
291
|
+
background: var(--pds-color-bg-default, oklch(1.0000 0 0));
|
|
292
|
+
border: 1px solid var(--pds-color-border-input, oklch(0.8853 0 0));
|
|
293
|
+
border-radius: var(--pds-border-radius-default, 0.188rem);
|
|
294
|
+
cursor: pointer;
|
|
295
|
+
text-align: left;
|
|
296
|
+
width: 100%;
|
|
297
|
+
font-family: var(--pds-typography-ff-default, 'Inter', sans-serif);
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
.templateOption:hover {
|
|
301
|
+
background: var(--pds-color-bg-default-secondary, oklch(0.9702 0 0));
|
|
302
|
+
border-color: var(--pds-color-interactive-focus, oklch(0.5558 0.2372 267.79));
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.templateOptionLabel {
|
|
306
|
+
font-size: var(--pds-typography-size-s, 0.875rem);
|
|
307
|
+
font-weight: var(--pds-typography-fw-semibold, 600);
|
|
308
|
+
color: var(--pds-color-fg-default, oklch(0.2046 0 0));
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
.templateOptionDesc {
|
|
312
|
+
font-size: var(--pds-typography-size-xs, 0.75rem);
|
|
313
|
+
color: var(--pds-color-fg-default-secondary, oklch(0.5103 0 0));
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
.selectedTemplateBadge {
|
|
317
|
+
font-family: var(--pds-typography-ff-default, 'Inter', sans-serif);
|
|
318
|
+
font-size: var(--pds-typography-size-xs, 0.75rem);
|
|
319
|
+
color: var(--pds-color-interactive-link-default, oklch(0.5558 0.2372 267.79));
|
|
320
|
+
background: var(--pds-color-status-info-background, oklch(0.9683 0.0161 245.08));
|
|
321
|
+
padding: 0.25rem 0.5rem;
|
|
322
|
+
border-radius: var(--pds-border-radius-default, 0.188rem);
|
|
323
|
+
margin-bottom: 0.25rem;
|
|
324
|
+
}
|
|
325
|
+
|
|
256
326
|
/* ── Mobile: full-width dropdown with horizontal scroll for long paths ── */
|
|
257
327
|
|
|
258
328
|
@media (max-width: 767px) {
|
|
@@ -6,10 +6,13 @@ interface PublishControlProps {
|
|
|
6
6
|
context: 'branch' | 'main';
|
|
7
7
|
onPublish?: () => Promise<void> | void;
|
|
8
8
|
onReviewAndPublish?: () => void;
|
|
9
|
+
onReviewWorkstream?: () => void;
|
|
9
10
|
onCreateWorkstream?: () => void;
|
|
10
11
|
onSchedulePublish?: () => void;
|
|
11
12
|
onDeleteDocument?: () => Promise<void> | void;
|
|
13
|
+
renderBadgeOnly?: boolean;
|
|
14
|
+
renderButtonOnly?: boolean;
|
|
12
15
|
}
|
|
13
|
-
export declare function PublishControl({ docState, hasDrift, context, onPublish, onReviewAndPublish, onCreateWorkstream, onDeleteDocument, }: PublishControlProps): React.ReactElement;
|
|
16
|
+
export declare function PublishControl({ docState, hasDrift, context, onPublish, onReviewAndPublish: _onReviewAndPublish, onReviewWorkstream, onCreateWorkstream, onDeleteDocument, renderBadgeOnly, renderButtonOnly, }: PublishControlProps): React.ReactElement;
|
|
14
17
|
export {};
|
|
15
18
|
//# sourceMappingURL=PublishControl.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublishControl.d.ts","sourceRoot":"","sources":["../../../src/pds/components/PublishControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"PublishControl.d.ts","sourceRoot":"","sources":["../../../src/pds/components/PublishControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAyCD,wBAAgB,cAAc,CAAC,EAC7B,QAAQ,EACR,QAAgB,EAChB,OAAO,EACP,SAAS,EACT,kBAAkB,EAAE,mBAAmB,EACvC,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAuB,EACvB,gBAAwB,GACzB,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CA6G1C"}
|
|
@@ -1,18 +1,26 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback } from 'react';
|
|
3
3
|
import { SplitButton, Button, useToast, ToastType } from '@pantheon-systems/pds-toolkit-react';
|
|
4
4
|
import { DocStateBadge } from './DocStateBadge.js';
|
|
5
5
|
import styles from './PublishControl.module.css';
|
|
6
6
|
const PUBLISH_CONFIRM_TOAST_ID = 'publish-confirm';
|
|
7
7
|
const DELETE_CONFIRM_TOAST_ID = 'delete-confirm';
|
|
8
|
-
function buildActionItems(docState, hasDrift, context, onRequestPublish,
|
|
8
|
+
function buildActionItems(docState, hasDrift, context, onRequestPublish, onReviewWorkstream, onCreateWorkstream, onRequestDelete) {
|
|
9
9
|
const items = [];
|
|
10
|
-
if (docState === 'modified'
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
if (docState === 'modified') {
|
|
11
|
+
// When on a branch, always show "Review" regardless of drift
|
|
12
|
+
if (context === 'branch') {
|
|
13
|
+
items.push({ label: 'Review', callback: () => onReviewWorkstream?.() });
|
|
14
|
+
// Add "Publish this page to Live" with drift warning if needed
|
|
15
|
+
const publishLabel = hasDrift
|
|
16
|
+
? 'Publish this page to Live\n⚠️ Page changed since you edited'
|
|
17
|
+
: 'Publish this page to Live';
|
|
18
|
+
items.push({ label: publishLabel, callback: () => onRequestPublish?.() });
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
// On main, keep existing behavior
|
|
22
|
+
items.push({ label: 'Publish to live', callback: () => onRequestPublish?.() });
|
|
23
|
+
}
|
|
16
24
|
items.push({ label: 'Schedule publish', callback: () => { }, disabled: true });
|
|
17
25
|
}
|
|
18
26
|
else if (docState === 'unpublished' && context === 'main') {
|
|
@@ -25,7 +33,7 @@ function buildActionItems(docState, hasDrift, context, onRequestPublish, onRevie
|
|
|
25
33
|
}
|
|
26
34
|
return items;
|
|
27
35
|
}
|
|
28
|
-
export function PublishControl({ docState, hasDrift = false, context, onPublish, onReviewAndPublish, onCreateWorkstream, onDeleteDocument, }) {
|
|
36
|
+
export function PublishControl({ docState, hasDrift = false, context, onPublish, onReviewAndPublish: _onReviewAndPublish, onReviewWorkstream, onCreateWorkstream, onDeleteDocument, renderBadgeOnly = false, renderButtonOnly = false, }) {
|
|
29
37
|
const [addToast, toastApi] = useToast();
|
|
30
38
|
const handlePublishRequest = useCallback(() => {
|
|
31
39
|
addToast(ToastType.Warning, _jsxs("div", { className: styles.confirmContent, children: [_jsx("span", { children: "Publish directly to live site?" }), _jsxs("div", { className: "pds-button-group", children: [_jsx(Button, { label: "Confirm", onClick: () => {
|
|
@@ -39,8 +47,17 @@ export function PublishControl({ docState, hasDrift = false, context, onPublish,
|
|
|
39
47
|
void onDeleteDocument?.();
|
|
40
48
|
}, size: "sm", variant: "reverse" }), _jsx(Button, { label: "Cancel", onClick: () => toastApi.dismiss(DELETE_CONFIRM_TOAST_ID), size: "sm", variant: "reverse-secondary" })] })] }), { toastId: DELETE_CONFIRM_TOAST_ID });
|
|
41
49
|
}, [addToast, toastApi, onDeleteDocument]);
|
|
42
|
-
const actionItems = buildActionItems(docState, hasDrift, context, handlePublishRequest,
|
|
50
|
+
const actionItems = buildActionItems(docState, hasDrift, context, handlePublishRequest, onReviewWorkstream, onCreateWorkstream, onDeleteDocument ? handleDeleteRequest : undefined);
|
|
43
51
|
const hasActions = actionItems.length > 0;
|
|
52
|
+
// Render only the badge
|
|
53
|
+
if (renderBadgeOnly) {
|
|
54
|
+
return (_jsx("span", { className: styles.stateBadge, children: _jsx(DocStateBadge, { docState: docState, hasDrift: hasDrift }) }));
|
|
55
|
+
}
|
|
56
|
+
// Render only the button
|
|
57
|
+
if (renderButtonOnly) {
|
|
58
|
+
return hasActions ? (_jsx(SplitButton, { id: "publish-split-button", "data-testid": "publish-split-button", actionItems: actionItems, size: "s", variant: "primary" })) : _jsx(_Fragment, {});
|
|
59
|
+
}
|
|
60
|
+
// Render both (default)
|
|
44
61
|
return (_jsxs("div", { className: styles.container, "data-testid": "publish-control", children: [_jsx("span", { className: styles.stateBadge, children: _jsx(DocStateBadge, { docState: docState, hasDrift: hasDrift }) }), hasActions && (_jsx(SplitButton, { id: "publish-split-button", "data-testid": "publish-split-button", actionItems: actionItems, size: "s", variant: "primary" }))] }));
|
|
45
62
|
}
|
|
46
63
|
//# sourceMappingURL=PublishControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublishControl.js","sourceRoot":"","sources":["../../../src/pds/components/PublishControl.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAE/F,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,MAAM,MAAM,6BAA6B,CAAC;AAEjD,MAAM,wBAAwB,GAAG,iBAAiB,CAAC;AACnD,MAAM,uBAAuB,GAAG,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"PublishControl.js","sourceRoot":"","sources":["../../../src/pds/components/PublishControl.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkstreamSwitcher.d.ts","sourceRoot":"","sources":["../../../src/pds/components/WorkstreamSwitcher.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"WorkstreamSwitcher.d.ts","sourceRoot":"","sources":["../../../src/pds/components/WorkstreamSwitcher.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAkE,MAAM,OAAO,CAAC;AAEvF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAI3D,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,4DAA4D;IAC5D,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,EACR,aAAa,EACb,QAAQ,EACR,iBAAiB,EACjB,iBAAyB,EACzB,cAAc,GACf,EAAE,uBAAuB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CA8Q7C"}
|
|
@@ -11,7 +11,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
11
11
|
* overflow:hidden or z-index constraints on ancestor elements (e.g. Puck's
|
|
12
12
|
* header container or sidebar panels).
|
|
13
13
|
*/
|
|
14
|
-
import { useState, useRef, useEffect, useCallback } from 'react';
|
|
14
|
+
import { useState, useRef, useEffect, useCallback, useTransition } from 'react';
|
|
15
15
|
import { createPortal } from 'react-dom';
|
|
16
16
|
import { Icon, Button, StatusIndicator } from '@pantheon-systems/pds-toolkit-react';
|
|
17
17
|
import styles from './WorkstreamSwitcher.module.css';
|
|
@@ -24,6 +24,8 @@ export function WorkstreamSwitcher({ branches, currentBranch, onSwitch, onCompar
|
|
|
24
24
|
const [createError, setCreateError] = useState(null);
|
|
25
25
|
const triggerRef = useRef(null);
|
|
26
26
|
const dropdownRef = useRef(null);
|
|
27
|
+
// Use transition to keep old UI visible while switching branches
|
|
28
|
+
const [isPending, startTransition] = useTransition();
|
|
27
29
|
const triggerLabel = currentBranch?.isMain ? 'Live' : (currentBranch?.name ?? 'Select branch');
|
|
28
30
|
const isOnMain = currentBranch?.isMain ?? false;
|
|
29
31
|
const matched = query
|
|
@@ -80,7 +82,10 @@ export function WorkstreamSwitcher({ branches, currentBranch, onSwitch, onCompar
|
|
|
80
82
|
function handleBranchClick(branch) {
|
|
81
83
|
if (currentBranch && branch.id === currentBranch.id)
|
|
82
84
|
return;
|
|
83
|
-
|
|
85
|
+
// Wrap the branch switch in a transition to keep old UI visible
|
|
86
|
+
startTransition(() => {
|
|
87
|
+
onSwitch(branch.id);
|
|
88
|
+
});
|
|
84
89
|
closeDropdown();
|
|
85
90
|
}
|
|
86
91
|
const handleCreate = useCallback(async (e) => {
|
|
@@ -128,7 +133,7 @@ export function WorkstreamSwitcher({ branches, currentBranch, onSwitch, onCompar
|
|
|
128
133
|
window.removeEventListener('resize', updatePosition);
|
|
129
134
|
};
|
|
130
135
|
}, [open, updatePosition]);
|
|
131
|
-
return (_jsxs("div", { className: styles.root, children: [_jsxs("button", { ref: triggerRef, type: "button", "data-testid": "workstream-trigger", className: `${styles.trigger}${open ? ` ${styles.triggerOpen}` : ''}`, onClick: handleTrigger, "aria-haspopup": "listbox", "aria-expanded": open, children: [_jsx(Icon, { iconName: "codeBranch", iconSize: "s", "aria-hidden": "true" }), _jsxs("span", { className: styles.labelText, children: [triggerLabel, _jsx(Icon, { iconName: "angleDown", iconSize: "s", "aria-hidden": "true" })] })] }), !isOnMain && !hideCompareButton && (_jsx(Button, { "data-testid": "compare-with-live", label: "Compare with Live", variant: "secondary", size: "sm", onClick: onCompareWithLive, buttonType: "button" })), open &&
|
|
136
|
+
return (_jsxs("div", { className: styles.root, children: [_jsxs("button", { ref: triggerRef, type: "button", "data-testid": "workstream-trigger", className: `${styles.trigger}${open ? ` ${styles.triggerOpen}` : ''}${isPending ? ` ${styles.triggerLoading}` : ''}`, onClick: handleTrigger, "aria-haspopup": "listbox", "aria-expanded": open, disabled: isPending, children: [_jsx(Icon, { iconName: "codeBranch", iconSize: "s", "aria-hidden": "true" }), _jsxs("span", { className: styles.labelText, children: [isPending ? 'Switching...' : triggerLabel, isPending ? (_jsx(Icon, { iconName: "spinner", iconSize: "s", "aria-hidden": "true" })) : (_jsx(Icon, { iconName: "angleDown", iconSize: "s", "aria-hidden": "true" }))] })] }), !isOnMain && !hideCompareButton && (_jsx(Button, { "data-testid": "compare-with-live", label: "Compare with Live", variant: "secondary", size: "sm", onClick: onCompareWithLive, buttonType: "button" })), open &&
|
|
132
137
|
createPortal(_jsxs("div", { ref: dropdownRef, "data-testid": "workstream-dropdown", className: styles.dropdown, role: "listbox", style: dropdownStyle, children: [_jsxs("div", { className: styles.header, children: [_jsx("input", { autoFocus: true, type: "text", "data-testid": "workstream-search", className: styles.search, placeholder: "Search workstreams\u2026", value: query, onChange: (e) => setQuery(e.target.value) }), _jsx("button", { type: "button", "data-testid": "workstream-close", className: styles.closeButton, onClick: closeDropdown, "aria-label": "Close", children: "\u00D7" })] }), _jsx("ul", { "data-testid": "workstream-list", className: styles.list, children: filtered.map((branch) => (_jsx("li", { className: styles.item, children: _jsx("button", { type: "button", className: styles.branchButton, onClick: () => handleBranchClick(branch), "aria-selected": currentBranch ? branch.id === currentBranch.id : false, children: branch.isMain ? (_jsx(StatusIndicator, { "data-testid": "workstream-live-label", type: "discovery", label: "Live", size: "s", className: styles.liveIndicator })) : (branch.name) }) }, branch.id))) }), _jsx("div", { className: styles.footer, children: isCreating ? (_jsxs("form", { "data-testid": "workstream-create-form", className: styles.createForm, onSubmit: handleCreate, children: [_jsx("input", { autoFocus: true, type: "text", "data-testid": "workstream-create-input", className: styles.createInput, placeholder: "workstream-name", value: newName, onChange: (e) => setNewName(e.target.value) }), _jsxs("div", { className: styles.createActions, children: [_jsx("button", { type: "submit", className: styles.createSubmit, children: "Create" }), _jsx("button", { type: "button", "data-testid": "workstream-create-cancel", className: styles.createCancel, onClick: () => { setIsCreating(false); setNewName(''); setCreateError(null); }, children: "Cancel" })] }), createError && (_jsx("div", { "data-testid": "workstream-create-error", className: styles.createError, children: createError }))] })) : (_jsx("button", { type: "button", "data-testid": "workstream-new", className: styles.newButton, onClick: onCreateBranch ? () => setIsCreating(true) : undefined, children: "+ New workstream" })) })] }), document.body)] }));
|
|
133
138
|
}
|
|
134
139
|
//# sourceMappingURL=WorkstreamSwitcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkstreamSwitcher.js","sourceRoot":"","sources":["../../../src/pds/components/WorkstreamSwitcher.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;AAEH,OAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkstreamSwitcher.js","sourceRoot":"","sources":["../../../src/pds/components/WorkstreamSwitcher.tsx"],"names":[],"mappings":"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"}
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
height: 2rem;
|
|
28
28
|
padding: 0.5rem 0.64rem;
|
|
29
29
|
background: transparent;
|
|
30
|
-
border: 1px solid oklch(0.
|
|
31
|
-
border-radius: var(--pds-border-radius-
|
|
30
|
+
border: 1px solid var(--pds-color-border-input, oklch(0.8853 0 0));
|
|
31
|
+
border-radius: var(--pds-border-radius-button, 3.5rem);
|
|
32
32
|
font-family: var(--pds-typography-ff-default, 'Inter', sans-serif);
|
|
33
33
|
font-size: var(--pds-typography-size-s, 0.875rem);
|
|
34
34
|
font-weight: var(--pds-typography-fw-medium, 500);
|
|
@@ -51,6 +51,16 @@
|
|
|
51
51
|
border-color: oklch(0.75 0 0); /* borderStrong */
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
.triggerLoading {
|
|
55
|
+
opacity: 0.7;
|
|
56
|
+
cursor: wait;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.triggerLoading:hover {
|
|
60
|
+
background: transparent;
|
|
61
|
+
border-color: oklch(0.96 0 0);
|
|
62
|
+
}
|
|
63
|
+
|
|
54
64
|
/* ------------------------------------------------------------------
|
|
55
65
|
* Dropdown panel — portal-rendered, positioned with inline style
|
|
56
66
|
* Width min 400px, elevation-overlay shadow, container border-radius.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pantheon-systems/puck-css",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"description": "Puck editor integration with Collaborative State System",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -72,23 +72,13 @@
|
|
|
72
72
|
"src/styles.css",
|
|
73
73
|
"src/pds/theme"
|
|
74
74
|
],
|
|
75
|
-
"scripts": {
|
|
76
|
-
"dev": "vite --config vite.config.preview.ts",
|
|
77
|
-
"build": "tsc && find src -name '*.module.css' | while read f; do dest=\"dist/${f#src/}\"; mkdir -p \"$(dirname \"$dest\")\"; cp \"$f\" \"$dest\"; done && (cp node_modules/@pantheon-systems/pds-toolkit-react/dist/css/pds-core.css src/pds/theme/pds-core.css && node scripts/generate-pds-content.cjs) || true",
|
|
78
|
-
"clean": "rm -rf dist *.tsbuildinfo",
|
|
79
|
-
"lint": "eslint src",
|
|
80
|
-
"test": "vitest run",
|
|
81
|
-
"test:watch": "vitest",
|
|
82
|
-
"typecheck": "tsc --noEmit"
|
|
83
|
-
},
|
|
84
75
|
"dependencies": {
|
|
85
|
-
"@pantheon-systems/css-client": "workspace:*",
|
|
86
76
|
"fast-json-patch": "^3.1.1",
|
|
87
77
|
"jsep": "^1.4.0",
|
|
88
|
-
"yjs": "^13.6.29"
|
|
78
|
+
"yjs": "^13.6.29",
|
|
79
|
+
"@pantheon-systems/css-client": "0.4.3"
|
|
89
80
|
},
|
|
90
81
|
"devDependencies": {
|
|
91
|
-
"@pantheon-systems/eslint-config": "workspace:*",
|
|
92
82
|
"@floating-ui/react": "^0.27.19",
|
|
93
83
|
"@pantheon-systems/pds-toolkit-react": "2.0.0-alpha.12",
|
|
94
84
|
"@tanstack/react-query": "^5.99.0",
|
|
@@ -102,7 +92,8 @@
|
|
|
102
92
|
"react-toastify": "^11.0.5",
|
|
103
93
|
"typescript": "^5.9.3",
|
|
104
94
|
"vite": "^6.4.3",
|
|
105
|
-
"vitest": "^4.1.5"
|
|
95
|
+
"vitest": "^4.1.5",
|
|
96
|
+
"@pantheon-systems/eslint-config": "0.1.0"
|
|
106
97
|
},
|
|
107
98
|
"peerDependencies": {
|
|
108
99
|
"@pantheon-systems/pds-toolkit-react": ">=2.0.0-alpha.0",
|
|
@@ -114,5 +105,14 @@
|
|
|
114
105
|
"engines": {
|
|
115
106
|
"node": ">=18.0.0"
|
|
116
107
|
},
|
|
117
|
-
"license": "MIT"
|
|
118
|
-
|
|
108
|
+
"license": "MIT",
|
|
109
|
+
"scripts": {
|
|
110
|
+
"dev": "vite --config vite.config.preview.ts",
|
|
111
|
+
"build": "tsc; find src -name '*.module.css' | while read f; do dest=\"dist/${f#src/}\"; mkdir -p \"$(dirname \"$dest\")\"; cp \"$f\" \"$dest\"; done; (cp node_modules/@pantheon-systems/pds-toolkit-react/dist/css/pds-core.css src/pds/theme/pds-core.css && node scripts/generate-pds-content.cjs) || true",
|
|
112
|
+
"clean": "rm -rf dist *.tsbuildinfo",
|
|
113
|
+
"lint": "eslint src",
|
|
114
|
+
"test": "vitest run",
|
|
115
|
+
"test:watch": "vitest",
|
|
116
|
+
"typecheck": "tsc --noEmit"
|
|
117
|
+
}
|
|
118
|
+
}
|