@pantheon-systems/puck-css 0.4.2 → 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 +16 -1
- package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
- package/dist/editor/plugin/P1Plugin.js +35 -4
- 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 +1 -1
- package/dist/editor/useP1Plugin.d.ts.map +1 -1
- package/dist/editor/useP1Plugin.js +2 -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 +6 -2
- package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorHeader.js +6 -3
- package/dist/pds/components/P1EditorHeader.js.map +1 -1
- 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/package.json +3 -3
- package/src/styles.css +331 -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) {
|
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",
|
|
@@ -76,7 +76,7 @@
|
|
|
76
76
|
"fast-json-patch": "^3.1.1",
|
|
77
77
|
"jsep": "^1.4.0",
|
|
78
78
|
"yjs": "^13.6.29",
|
|
79
|
-
"@pantheon-systems/css-client": "0.4.
|
|
79
|
+
"@pantheon-systems/css-client": "0.4.3"
|
|
80
80
|
},
|
|
81
81
|
"devDependencies": {
|
|
82
82
|
"@floating-ui/react": "^0.27.19",
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
"license": "MIT",
|
|
109
109
|
"scripts": {
|
|
110
110
|
"dev": "vite --config vite.config.preview.ts",
|
|
111
|
-
"build": "tsc
|
|
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
112
|
"clean": "rm -rf dist *.tsbuildinfo",
|
|
113
113
|
"lint": "eslint src",
|
|
114
114
|
"test": "vitest run",
|
package/src/styles.css
CHANGED
|
@@ -2397,3 +2397,334 @@ svg.lucide-layers {
|
|
|
2397
2397
|
|
|
2398
2398
|
/* 5. Nav tooltips are handled purely by PuckEditorTheme.css — Puck's own
|
|
2399
2399
|
_NavItem-linkLabel_ spans are restyled as hover tooltips. */
|
|
2400
|
+
|
|
2401
|
+
/* ============================================
|
|
2402
|
+
Template Selector
|
|
2403
|
+
============================================ */
|
|
2404
|
+
|
|
2405
|
+
.template-selector {
|
|
2406
|
+
width: 100%;
|
|
2407
|
+
}
|
|
2408
|
+
|
|
2409
|
+
.template-selector__grid {
|
|
2410
|
+
display: grid;
|
|
2411
|
+
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
|
2412
|
+
gap: 16px;
|
|
2413
|
+
padding: 16px 0;
|
|
2414
|
+
}
|
|
2415
|
+
|
|
2416
|
+
.template-selector__option {
|
|
2417
|
+
/* Extend PDS button styles */
|
|
2418
|
+
min-height: 100px;
|
|
2419
|
+
text-align: left;
|
|
2420
|
+
padding: 16px;
|
|
2421
|
+
width: 100%;
|
|
2422
|
+
display: flex;
|
|
2423
|
+
flex-direction: column;
|
|
2424
|
+
align-items: flex-start;
|
|
2425
|
+
border: 2px solid var(--puck-css-border);
|
|
2426
|
+
border-radius: 8px;
|
|
2427
|
+
transition: all 0.2s ease;
|
|
2428
|
+
}
|
|
2429
|
+
|
|
2430
|
+
.template-selector__option:hover {
|
|
2431
|
+
border-color: var(--puck-css-primary);
|
|
2432
|
+
background-color: var(--puck-css-bg-secondary);
|
|
2433
|
+
}
|
|
2434
|
+
|
|
2435
|
+
.template-selector__option[aria-pressed="true"] {
|
|
2436
|
+
border-color: var(--puck-css-primary);
|
|
2437
|
+
background-color: var(--puck-css-primary);
|
|
2438
|
+
color: white;
|
|
2439
|
+
}
|
|
2440
|
+
|
|
2441
|
+
.template-selector__option[aria-pressed="true"] .template-selector__option-description {
|
|
2442
|
+
color: rgba(255, 255, 255, 0.9);
|
|
2443
|
+
}
|
|
2444
|
+
|
|
2445
|
+
.template-selector__option-content {
|
|
2446
|
+
width: 100%;
|
|
2447
|
+
}
|
|
2448
|
+
|
|
2449
|
+
.template-selector__option-label {
|
|
2450
|
+
font-size: 16px;
|
|
2451
|
+
font-weight: 600;
|
|
2452
|
+
margin-bottom: 8px;
|
|
2453
|
+
}
|
|
2454
|
+
|
|
2455
|
+
.template-selector__option-description {
|
|
2456
|
+
font-size: 14px;
|
|
2457
|
+
color: var(--puck-css-text-secondary);
|
|
2458
|
+
line-height: 1.4;
|
|
2459
|
+
}
|
|
2460
|
+
|
|
2461
|
+
.template-selector--loading,
|
|
2462
|
+
.template-selector--error {
|
|
2463
|
+
padding: 32px;
|
|
2464
|
+
text-align: center;
|
|
2465
|
+
}
|
|
2466
|
+
|
|
2467
|
+
.template-selector__loading-message {
|
|
2468
|
+
font-size: 16px;
|
|
2469
|
+
color: var(--puck-css-text-secondary);
|
|
2470
|
+
}
|
|
2471
|
+
|
|
2472
|
+
.template-selector__error-message {
|
|
2473
|
+
color: var(--puck-css-diff-removed);
|
|
2474
|
+
}
|
|
2475
|
+
|
|
2476
|
+
.template-selector__error-message strong {
|
|
2477
|
+
display: block;
|
|
2478
|
+
margin-bottom: 8px;
|
|
2479
|
+
font-size: 16px;
|
|
2480
|
+
}
|
|
2481
|
+
|
|
2482
|
+
.template-selector__error-message p {
|
|
2483
|
+
font-size: 14px;
|
|
2484
|
+
margin: 0;
|
|
2485
|
+
}
|
|
2486
|
+
|
|
2487
|
+
/* ── Template Manager Overlay ─────────────────────────────────────────── */
|
|
2488
|
+
|
|
2489
|
+
.template-manager-overlay {
|
|
2490
|
+
position: fixed;
|
|
2491
|
+
inset: 0;
|
|
2492
|
+
z-index: 10001;
|
|
2493
|
+
background: var(--pds-color-bg-default, #fff);
|
|
2494
|
+
display: flex;
|
|
2495
|
+
flex-direction: column;
|
|
2496
|
+
}
|
|
2497
|
+
|
|
2498
|
+
.template-manager-overlay__header {
|
|
2499
|
+
display: flex;
|
|
2500
|
+
align-items: center;
|
|
2501
|
+
justify-content: space-between;
|
|
2502
|
+
padding: 0.75rem 1.5rem;
|
|
2503
|
+
border-bottom: 1px solid var(--pds-color-border-default, #e5e7eb);
|
|
2504
|
+
flex-shrink: 0;
|
|
2505
|
+
}
|
|
2506
|
+
|
|
2507
|
+
.template-manager-overlay__title {
|
|
2508
|
+
font-size: 1.125rem;
|
|
2509
|
+
font-weight: 600;
|
|
2510
|
+
margin: 0;
|
|
2511
|
+
}
|
|
2512
|
+
|
|
2513
|
+
.template-manager-overlay__close {
|
|
2514
|
+
background: none;
|
|
2515
|
+
border: none;
|
|
2516
|
+
font-size: 1rem;
|
|
2517
|
+
cursor: pointer;
|
|
2518
|
+
color: var(--pds-color-fg-default-secondary, #6b7280);
|
|
2519
|
+
padding: 0.25rem 0.5rem;
|
|
2520
|
+
}
|
|
2521
|
+
|
|
2522
|
+
.template-manager-overlay__close:hover {
|
|
2523
|
+
color: var(--pds-color-fg-default, #1f2937);
|
|
2524
|
+
}
|
|
2525
|
+
|
|
2526
|
+
.template-manager-overlay__error {
|
|
2527
|
+
padding: 0.5rem 1.5rem;
|
|
2528
|
+
background: #fef2f2;
|
|
2529
|
+
color: #991b1b;
|
|
2530
|
+
font-size: 0.875rem;
|
|
2531
|
+
}
|
|
2532
|
+
|
|
2533
|
+
.template-manager-overlay__list {
|
|
2534
|
+
padding: 1.5rem;
|
|
2535
|
+
overflow-y: auto;
|
|
2536
|
+
flex: 1;
|
|
2537
|
+
max-width: 800px;
|
|
2538
|
+
margin: 0 auto;
|
|
2539
|
+
width: 100%;
|
|
2540
|
+
}
|
|
2541
|
+
|
|
2542
|
+
.template-manager-overlay__loading,
|
|
2543
|
+
.template-manager-overlay__empty {
|
|
2544
|
+
padding: 2rem;
|
|
2545
|
+
text-align: center;
|
|
2546
|
+
color: var(--pds-color-fg-default-secondary, #6b7280);
|
|
2547
|
+
font-size: 0.875rem;
|
|
2548
|
+
}
|
|
2549
|
+
|
|
2550
|
+
.template-manager-overlay__template-list {
|
|
2551
|
+
list-style: none;
|
|
2552
|
+
padding: 0;
|
|
2553
|
+
margin: 1rem 0 0;
|
|
2554
|
+
display: flex;
|
|
2555
|
+
flex-direction: column;
|
|
2556
|
+
gap: 0.5rem;
|
|
2557
|
+
}
|
|
2558
|
+
|
|
2559
|
+
.template-manager-overlay__template-item {
|
|
2560
|
+
display: flex;
|
|
2561
|
+
align-items: center;
|
|
2562
|
+
justify-content: space-between;
|
|
2563
|
+
padding: 0.75rem 1rem;
|
|
2564
|
+
border: 1px solid var(--pds-color-border-default, #e5e7eb);
|
|
2565
|
+
border-radius: 0.375rem;
|
|
2566
|
+
}
|
|
2567
|
+
|
|
2568
|
+
.template-manager-overlay__template-item:hover {
|
|
2569
|
+
background: var(--pds-color-bg-default-secondary, #f9fafb);
|
|
2570
|
+
}
|
|
2571
|
+
|
|
2572
|
+
.template-manager-overlay__template-info {
|
|
2573
|
+
display: flex;
|
|
2574
|
+
flex-direction: column;
|
|
2575
|
+
gap: 0.125rem;
|
|
2576
|
+
}
|
|
2577
|
+
|
|
2578
|
+
.template-manager-overlay__template-label {
|
|
2579
|
+
font-weight: 600;
|
|
2580
|
+
font-size: 0.875rem;
|
|
2581
|
+
}
|
|
2582
|
+
|
|
2583
|
+
.template-manager-overlay__template-meta {
|
|
2584
|
+
font-size: 0.75rem;
|
|
2585
|
+
color: var(--pds-color-fg-default-secondary, #6b7280);
|
|
2586
|
+
}
|
|
2587
|
+
|
|
2588
|
+
.template-manager-overlay__template-actions {
|
|
2589
|
+
display: flex;
|
|
2590
|
+
gap: 0.5rem;
|
|
2591
|
+
}
|
|
2592
|
+
|
|
2593
|
+
/* ── Template Editor (create/edit mode) ───────────────────────────────── */
|
|
2594
|
+
|
|
2595
|
+
.template-manager-overlay__editor {
|
|
2596
|
+
display: grid;
|
|
2597
|
+
grid-template-columns: 300px 1fr;
|
|
2598
|
+
flex: 1;
|
|
2599
|
+
overflow: hidden;
|
|
2600
|
+
}
|
|
2601
|
+
|
|
2602
|
+
.template-manager-overlay__editor-sidebar {
|
|
2603
|
+
border-right: 1px solid var(--pds-color-border-default, #e5e7eb);
|
|
2604
|
+
padding: 1rem;
|
|
2605
|
+
overflow-y: auto;
|
|
2606
|
+
display: flex;
|
|
2607
|
+
flex-direction: column;
|
|
2608
|
+
gap: 1rem;
|
|
2609
|
+
}
|
|
2610
|
+
|
|
2611
|
+
.template-manager-overlay__editor-canvas {
|
|
2612
|
+
overflow: hidden;
|
|
2613
|
+
}
|
|
2614
|
+
|
|
2615
|
+
.template-manager-overlay__metadata {
|
|
2616
|
+
display: flex;
|
|
2617
|
+
flex-direction: column;
|
|
2618
|
+
gap: 0.75rem;
|
|
2619
|
+
}
|
|
2620
|
+
|
|
2621
|
+
.template-manager-overlay__field {
|
|
2622
|
+
display: flex;
|
|
2623
|
+
flex-direction: column;
|
|
2624
|
+
gap: 0.25rem;
|
|
2625
|
+
}
|
|
2626
|
+
|
|
2627
|
+
.template-manager-overlay__field-label {
|
|
2628
|
+
font-size: 0.75rem;
|
|
2629
|
+
font-weight: 600;
|
|
2630
|
+
color: var(--pds-color-fg-default-secondary, #6b7280);
|
|
2631
|
+
text-transform: uppercase;
|
|
2632
|
+
letter-spacing: 0.05em;
|
|
2633
|
+
}
|
|
2634
|
+
|
|
2635
|
+
.template-manager-overlay__input,
|
|
2636
|
+
.template-manager-overlay__textarea {
|
|
2637
|
+
padding: 0.375rem 0.5rem;
|
|
2638
|
+
border: 1px solid var(--pds-color-border-default, #e5e7eb);
|
|
2639
|
+
border-radius: 0.25rem;
|
|
2640
|
+
font-size: 0.875rem;
|
|
2641
|
+
font-family: inherit;
|
|
2642
|
+
width: 100%;
|
|
2643
|
+
box-sizing: border-box;
|
|
2644
|
+
}
|
|
2645
|
+
|
|
2646
|
+
.template-manager-overlay__input:focus,
|
|
2647
|
+
.template-manager-overlay__textarea:focus {
|
|
2648
|
+
outline: none;
|
|
2649
|
+
border-color: var(--pds-color-interactive-focus, #3b82f6);
|
|
2650
|
+
box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.15);
|
|
2651
|
+
}
|
|
2652
|
+
|
|
2653
|
+
.template-manager-overlay__input:disabled {
|
|
2654
|
+
background: var(--pds-color-bg-default-secondary, #f9fafb);
|
|
2655
|
+
color: var(--pds-color-fg-default-secondary, #6b7280);
|
|
2656
|
+
}
|
|
2657
|
+
|
|
2658
|
+
.template-manager-overlay__save-actions {
|
|
2659
|
+
display: flex;
|
|
2660
|
+
gap: 0.5rem;
|
|
2661
|
+
margin-top: auto;
|
|
2662
|
+
padding-top: 1rem;
|
|
2663
|
+
border-top: 1px solid var(--pds-color-border-default, #e5e7eb);
|
|
2664
|
+
}
|
|
2665
|
+
|
|
2666
|
+
.template-manager-overlay__puck-loading {
|
|
2667
|
+
display: flex;
|
|
2668
|
+
align-items: center;
|
|
2669
|
+
justify-content: center;
|
|
2670
|
+
height: 100%;
|
|
2671
|
+
color: var(--pds-color-fg-default-secondary, #6b7280);
|
|
2672
|
+
}
|
|
2673
|
+
|
|
2674
|
+
/* ── Template Pin Panel ───────────────────────────────────────────────── */
|
|
2675
|
+
|
|
2676
|
+
.template-pin-panel {
|
|
2677
|
+
border: 1px solid var(--pds-color-border-default, #e5e7eb);
|
|
2678
|
+
border-radius: 0.375rem;
|
|
2679
|
+
padding: 0.75rem;
|
|
2680
|
+
}
|
|
2681
|
+
|
|
2682
|
+
.template-pin-panel--empty {
|
|
2683
|
+
color: var(--pds-color-fg-default-secondary, #6b7280);
|
|
2684
|
+
font-size: 0.8125rem;
|
|
2685
|
+
font-style: italic;
|
|
2686
|
+
}
|
|
2687
|
+
|
|
2688
|
+
.template-pin-panel__header {
|
|
2689
|
+
font-size: 0.75rem;
|
|
2690
|
+
font-weight: 600;
|
|
2691
|
+
color: var(--pds-color-fg-default-secondary, #6b7280);
|
|
2692
|
+
text-transform: uppercase;
|
|
2693
|
+
letter-spacing: 0.05em;
|
|
2694
|
+
margin-bottom: 0.5rem;
|
|
2695
|
+
}
|
|
2696
|
+
|
|
2697
|
+
.template-pin-panel__list {
|
|
2698
|
+
list-style: none;
|
|
2699
|
+
padding: 0;
|
|
2700
|
+
margin: 0;
|
|
2701
|
+
display: flex;
|
|
2702
|
+
flex-direction: column;
|
|
2703
|
+
gap: 0.25rem;
|
|
2704
|
+
}
|
|
2705
|
+
|
|
2706
|
+
.template-pin-panel__item {
|
|
2707
|
+
display: flex;
|
|
2708
|
+
align-items: center;
|
|
2709
|
+
justify-content: space-between;
|
|
2710
|
+
padding: 0.375rem 0.5rem;
|
|
2711
|
+
border-radius: 0.25rem;
|
|
2712
|
+
font-size: 0.8125rem;
|
|
2713
|
+
}
|
|
2714
|
+
|
|
2715
|
+
.template-pin-panel__item:hover {
|
|
2716
|
+
background: var(--pds-color-bg-default-secondary, #f9fafb);
|
|
2717
|
+
}
|
|
2718
|
+
|
|
2719
|
+
.template-pin-panel__type {
|
|
2720
|
+
font-weight: 500;
|
|
2721
|
+
}
|
|
2722
|
+
|
|
2723
|
+
.template-pin-panel__pin-label {
|
|
2724
|
+
display: flex;
|
|
2725
|
+
align-items: center;
|
|
2726
|
+
gap: 0.25rem;
|
|
2727
|
+
font-size: 0.75rem;
|
|
2728
|
+
color: var(--pds-color-fg-default-secondary, #6b7280);
|
|
2729
|
+
cursor: pointer;
|
|
2730
|
+
}
|