@pantheon-systems/puck-css 0.4.0 → 0.4.2
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/data/dal/init.d.ts.map +1 -1
- package/dist/data/dal/init.js +10 -0
- package/dist/data/dal/init.js.map +1 -1
- package/dist/data/dal/p1-store.d.ts +12 -0
- package/dist/data/dal/p1-store.d.ts.map +1 -1
- package/dist/data/dal/p1-store.js +14 -1
- package/dist/data/dal/p1-store.js.map +1 -1
- package/dist/editor/components/merge-preview/MergePreviewRenderer.d.ts.map +1 -1
- package/dist/editor/components/merge-preview/MergePreviewRenderer.js +17 -6
- package/dist/editor/components/merge-preview/MergePreviewRenderer.js.map +1 -1
- package/dist/editor/plugin/P1Plugin.d.ts +6 -0
- package/dist/editor/plugin/P1Plugin.d.ts.map +1 -1
- package/dist/editor/plugin/P1Plugin.js +41 -19
- package/dist/editor/plugin/P1Plugin.js.map +1 -1
- package/dist/editor/useP1Editor.d.ts.map +1 -1
- package/dist/editor/useP1Editor.js +1 -0
- package/dist/editor/useP1Editor.js.map +1 -1
- package/dist/editor/useP1Plugin.d.ts +4 -0
- 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/merge/components/merge-resolution/CherryPickVisualPanel.d.ts.map +1 -1
- package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js +19 -7
- package/dist/merge/components/merge-resolution/CherryPickVisualPanel.js.map +1 -1
- package/dist/merge/utils/namespacePuckData.d.ts +10 -0
- package/dist/merge/utils/namespacePuckData.d.ts.map +1 -0
- package/dist/merge/utils/namespacePuckData.js +19 -0
- package/dist/merge/utils/namespacePuckData.js.map +1 -0
- package/dist/p1/editor/editor-preview-resolve.d.ts +4 -1
- package/dist/p1/editor/editor-preview-resolve.d.ts.map +1 -1
- package/dist/p1/editor/editor-preview-resolve.js +18 -17
- package/dist/p1/editor/editor-preview-resolve.js.map +1 -1
- package/dist/pds/components/AgentChip.d.ts +2 -0
- package/dist/pds/components/AgentChip.d.ts.map +1 -1
- package/dist/pds/components/AgentChip.js +4 -1
- package/dist/pds/components/AgentChip.js.map +1 -1
- package/dist/pds/components/P1EditorHeader.d.ts +3 -8
- package/dist/pds/components/P1EditorHeader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorHeader.js +16 -51
- 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 +13 -1
- package/dist/pds/components/P1EditorSubheader.d.ts.map +1 -1
- package/dist/pds/components/P1EditorSubheader.js +5 -3
- package/dist/pds/components/P1EditorSubheader.js.map +1 -1
- package/dist/pds/components/P1EditorSubheader.module.css +31 -2
- 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 +8 -3
- package/src/styles.css +33 -0
|
@@ -35,6 +35,23 @@
|
|
|
35
35
|
The PDS component defaults to 3.052rem icon height; we scale it down
|
|
36
36
|
to fit the compact 52px editor header. */
|
|
37
37
|
|
|
38
|
+
.logoLink {
|
|
39
|
+
flex-shrink: 0;
|
|
40
|
+
text-decoration: none;
|
|
41
|
+
display: inline-flex;
|
|
42
|
+
align-items: center;
|
|
43
|
+
cursor: pointer;
|
|
44
|
+
transition: opacity 0.2s cubic-bezier(0.2, 0, 0, 1);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.logoLink:hover {
|
|
48
|
+
opacity: 0.7;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.logoLink .logo {
|
|
52
|
+
cursor: pointer;
|
|
53
|
+
}
|
|
54
|
+
|
|
38
55
|
.logo {
|
|
39
56
|
flex-shrink: 0;
|
|
40
57
|
user-select: none;
|
|
@@ -52,30 +69,21 @@
|
|
|
52
69
|
padding-inline-end: 0;
|
|
53
70
|
}
|
|
54
71
|
|
|
55
|
-
/* ── Site
|
|
72
|
+
/* ── Site label ───────────────────────────────────────────── */
|
|
56
73
|
|
|
57
|
-
.
|
|
74
|
+
.siteLabel {
|
|
58
75
|
display: inline-flex;
|
|
59
76
|
align-items: center;
|
|
60
|
-
gap: 0.41rem;
|
|
61
77
|
padding: 0.41rem 0.64rem;
|
|
62
|
-
background: transparent;
|
|
63
|
-
border: 1px solid var(--pds-color-border-default, oklch(0.9401 0 0));
|
|
64
|
-
border-radius: var(--pds-border-radius-default, 0.188rem);
|
|
65
78
|
font-family: var(--pds-typography-ff-default, 'Inter', sans-serif);
|
|
66
79
|
font-size: var(--pds-typography-size-s, 0.875rem);
|
|
80
|
+
font-weight: var(--pds-typography-fw-medium, 500);
|
|
67
81
|
color: var(--pds-color-fg-default, oklch(0.2046 0 0));
|
|
68
|
-
cursor: pointer;
|
|
69
82
|
white-space: nowrap;
|
|
70
83
|
line-height: 1;
|
|
71
84
|
flex-shrink: 0;
|
|
72
85
|
}
|
|
73
86
|
|
|
74
|
-
.siteSelector:hover {
|
|
75
|
-
background: var(--pds-color-button-secondary-background-hover, oklch(0.96 0 0));
|
|
76
|
-
border-color: var(--pds-color-button-secondary-border-hover, oklch(0.75 0 0));
|
|
77
|
-
}
|
|
78
|
-
|
|
79
87
|
/* ── Vertical divider between site selector and workstream switcher ── */
|
|
80
88
|
/* Prototype: <div style={{ width: 1, height: 20, background: c.borderSubtle }} /> */
|
|
81
89
|
|
|
@@ -95,6 +103,14 @@
|
|
|
95
103
|
position: relative;
|
|
96
104
|
}
|
|
97
105
|
|
|
106
|
+
/* ── Page selector button group ────────────────────────────────────────────── */
|
|
107
|
+
|
|
108
|
+
.pageSelectorGroup {
|
|
109
|
+
display: inline-flex;
|
|
110
|
+
align-items: center;
|
|
111
|
+
flex-shrink: 0;
|
|
112
|
+
}
|
|
113
|
+
|
|
98
114
|
/* ── Page selector button ────────────────────────────────────────────── */
|
|
99
115
|
/* Mirrors the WorkstreamSwitcher trigger styling */
|
|
100
116
|
|
|
@@ -105,8 +121,8 @@
|
|
|
105
121
|
height: 2rem;
|
|
106
122
|
padding: 0.5rem 0.64rem;
|
|
107
123
|
background: transparent;
|
|
108
|
-
border: 1px solid oklch(0.
|
|
109
|
-
border-radius: var(--pds-border-radius-
|
|
124
|
+
border: 1px solid var(--pds-color-border-input, oklch(0.8853 0 0));
|
|
125
|
+
border-radius: var(--pds-border-radius-button, 3.5rem);
|
|
110
126
|
font-family: var(--pds-typography-ff-default, 'Inter', sans-serif);
|
|
111
127
|
font-size: var(--pds-typography-size-s, 0.875rem);
|
|
112
128
|
font-weight: var(--pds-typography-fw-medium, 500);
|
|
@@ -128,6 +144,12 @@
|
|
|
128
144
|
border-color: oklch(0.75 0 0); /* borderStrong */
|
|
129
145
|
}
|
|
130
146
|
|
|
147
|
+
/* When external link button follows page selector, create button group */
|
|
148
|
+
.pageSelector:has(+ .externalLinkButton) {
|
|
149
|
+
border-top-right-radius: 0;
|
|
150
|
+
border-bottom-right-radius: 0;
|
|
151
|
+
}
|
|
152
|
+
|
|
131
153
|
/* ── External link button ──────────────────────────────────────────────── */
|
|
132
154
|
|
|
133
155
|
.externalLinkButton {
|
|
@@ -138,8 +160,10 @@
|
|
|
138
160
|
height: 2rem;
|
|
139
161
|
padding: 0.5rem;
|
|
140
162
|
background: transparent;
|
|
141
|
-
border: 1px solid oklch(0.
|
|
142
|
-
border-radius: var(--pds-border-radius-
|
|
163
|
+
border: 1px solid var(--pds-color-border-input, oklch(0.8853 0 0));
|
|
164
|
+
border-radius: var(--pds-border-radius-button, 3.5rem);
|
|
165
|
+
border-top-left-radius: 0;
|
|
166
|
+
border-bottom-left-radius: 0;
|
|
143
167
|
color: var(--pds-color-fg-default, oklch(0.2046 0 0));
|
|
144
168
|
cursor: pointer;
|
|
145
169
|
text-decoration: none;
|
|
@@ -147,12 +171,14 @@
|
|
|
147
171
|
background 0.2s cubic-bezier(0.2, 0, 0, 1),
|
|
148
172
|
border-color 0.2s cubic-bezier(0.2, 0, 0, 1);
|
|
149
173
|
flex-shrink: 0;
|
|
150
|
-
margin-left:
|
|
174
|
+
margin-left: -1px;
|
|
151
175
|
}
|
|
152
176
|
|
|
153
177
|
.externalLinkButton:hover {
|
|
154
178
|
background: oklch(0.96 0 0); /* bgSubtle */
|
|
155
179
|
border-color: oklch(0.75 0 0); /* borderStrong */
|
|
180
|
+
position: relative;
|
|
181
|
+
z-index: 1; /* Bring to front on hover so border is visible */
|
|
156
182
|
}
|
|
157
183
|
|
|
158
184
|
/* ── Spacer ──────────────────────────────────────────────────────────── */
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* bar (P1EditorHeader), shown only when not on the live workstream.
|
|
10
10
|
*/
|
|
11
11
|
import React from 'react';
|
|
12
|
+
import type { Branch } from '@pantheon-systems/css-client';
|
|
12
13
|
import type { DocState } from '../types.js';
|
|
13
14
|
export interface SubheaderActor {
|
|
14
15
|
id: string;
|
|
@@ -16,6 +17,9 @@ export interface SubheaderActor {
|
|
|
16
17
|
avatar?: string;
|
|
17
18
|
isAgent?: boolean;
|
|
18
19
|
intent?: string;
|
|
20
|
+
/** Reserved for future use (e.g. linking to user profile). Not passed to AgentChip. */
|
|
21
|
+
requestedById?: string;
|
|
22
|
+
requestedByName?: string;
|
|
19
23
|
}
|
|
20
24
|
export interface P1EditorSubheaderProps {
|
|
21
25
|
puckActions: React.ReactNode;
|
|
@@ -27,6 +31,7 @@ export interface P1EditorSubheaderProps {
|
|
|
27
31
|
onStopAgent: (id: string) => void;
|
|
28
32
|
onPublish?: () => Promise<void> | void;
|
|
29
33
|
onReviewAndPublish?: () => void;
|
|
34
|
+
onReviewWorkstream?: () => void;
|
|
30
35
|
onCreateWorkstream?: () => void;
|
|
31
36
|
onDeleteDocument?: () => Promise<void> | void;
|
|
32
37
|
hasPast: boolean;
|
|
@@ -35,8 +40,15 @@ export interface P1EditorSubheaderProps {
|
|
|
35
40
|
onRedo: () => void;
|
|
36
41
|
leftPanelVisible?: boolean;
|
|
37
42
|
rightPanelVisible?: boolean;
|
|
43
|
+
pluginRailVisible?: boolean;
|
|
38
44
|
onToggleLeftPanel?: () => void;
|
|
39
45
|
onToggleRightPanel?: () => void;
|
|
46
|
+
onTogglePluginRail?: () => void;
|
|
47
|
+
branches: Branch[];
|
|
48
|
+
currentBranch: Branch | null;
|
|
49
|
+
onSwitchBranch: (id: string) => void;
|
|
50
|
+
onCompareWithLive: () => void;
|
|
51
|
+
onCreateBranch?: (name: string) => Promise<void>;
|
|
40
52
|
}
|
|
41
|
-
export declare function P1EditorSubheader({ puckActions, docState, hasDrift, context, agents, humanActors, onStopAgent, onPublish, onReviewAndPublish, onCreateWorkstream, onDeleteDocument, hasPast, hasFuture, onUndo, onRedo, leftPanelVisible, rightPanelVisible, onToggleLeftPanel, onToggleRightPanel, }: P1EditorSubheaderProps): React.ReactElement;
|
|
53
|
+
export declare function P1EditorSubheader({ puckActions, docState, hasDrift, context, agents, humanActors, onStopAgent, onPublish, onReviewAndPublish, onReviewWorkstream, onCreateWorkstream, onDeleteDocument, hasPast, hasFuture, onUndo, onRedo, leftPanelVisible, rightPanelVisible, pluginRailVisible, onToggleLeftPanel, onToggleRightPanel, onTogglePluginRail, branches, currentBranch, onSwitchBranch, onCompareWithLive, onCreateBranch, }: P1EditorSubheaderProps): React.ReactElement;
|
|
42
54
|
//# sourceMappingURL=P1EditorSubheader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"P1EditorSubheader.d.ts","sourceRoot":"","sources":["../../../src/pds/components/P1EditorSubheader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"P1EditorSubheader.d.ts","sourceRoot":"","sources":["../../../src/pds/components/P1EditorSubheader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAO5C,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,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,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAEhC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,wBAAgB,iBAAiB,CAAC,EAChC,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,EACN,WAAW,EACX,WAAW,EACX,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,EACN,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,cAAc,GACf,EAAE,sBAAsB,GAAG,KAAK,CAAC,YAAY,CA8I7C"}
|
|
@@ -3,15 +3,17 @@ import { IconButton } from '@pantheon-systems/pds-toolkit-react';
|
|
|
3
3
|
import { AgentChip } from './AgentChip.js';
|
|
4
4
|
import { PresenceStack } from './PresenceStack.js';
|
|
5
5
|
import { PublishControl } from './PublishControl.js';
|
|
6
|
+
import { WorkstreamSwitcher } from './WorkstreamSwitcher.js';
|
|
6
7
|
import styles from './P1EditorSubheader.module.css';
|
|
7
|
-
export function P1EditorSubheader({ puckActions, docState, hasDrift, context, agents, humanActors, onStopAgent, onPublish, onReviewAndPublish, onCreateWorkstream, onDeleteDocument, hasPast, hasFuture, onUndo, onRedo, leftPanelVisible, rightPanelVisible, onToggleLeftPanel, onToggleRightPanel, }) {
|
|
8
|
-
return (_jsxs("div", { "data-testid": "p1-editor-subheader", className: styles.subheader, children: [_jsxs("div", { "data-testid": "panel-toggles", className: styles.panelToggles, children: [_jsx(IconButton, { ariaLabel: "Toggle left panel", iconName: "tableRows", size: "s", hasTooltip: false, hasBorder: false, "aria-pressed": leftPanelVisible, onClick: onToggleLeftPanel }), _jsx(IconButton, { ariaLabel: "Toggle right panel", iconName: "
|
|
8
|
+
export function P1EditorSubheader({ puckActions, docState, hasDrift, context, agents, humanActors, onStopAgent, onPublish, onReviewAndPublish, onReviewWorkstream, onCreateWorkstream, onDeleteDocument, hasPast, hasFuture, onUndo, onRedo, leftPanelVisible, rightPanelVisible, pluginRailVisible, onToggleLeftPanel, onToggleRightPanel, onTogglePluginRail, branches, currentBranch, onSwitchBranch, onCompareWithLive, onCreateBranch, }) {
|
|
9
|
+
return (_jsxs("div", { "data-testid": "p1-editor-subheader", className: styles.subheader, children: [_jsxs("div", { "data-testid": "panel-toggles", className: styles.panelToggles, children: [_jsx(IconButton, { ariaLabel: "Toggle plugin rail", iconName: pluginRailVisible ? "angleRight" : "angleLeft", size: "s", hasTooltip: false, hasBorder: false, "aria-pressed": pluginRailVisible, onClick: onTogglePluginRail }), _jsx(IconButton, { ariaLabel: "Toggle left panel", iconName: "tableRows", size: "s", hasTooltip: false, hasBorder: false, "aria-pressed": leftPanelVisible, onClick: onToggleLeftPanel }), _jsx(IconButton, { ariaLabel: "Toggle right panel", iconName: "tableRows", size: "s", hasTooltip: false, hasBorder: false, "aria-pressed": rightPanelVisible, onClick: onToggleRightPanel, className: styles.rightPanelToggle })] }), puckActions, _jsxs("div", { "data-testid": "device-selector", className: styles.historyGroup, children: [_jsx(IconButton, { "data-testid": "undo-btn", ariaLabel: "Undo", iconName: "rotateLeft", size: "s", disabled: !hasPast, onClick: onUndo, hasTooltip: false, hasBorder: false }), _jsx(IconButton, { "data-testid": "redo-btn", ariaLabel: "Redo", iconName: "rotateRight", size: "s", disabled: !hasFuture, onClick: onRedo, hasTooltip: false, hasBorder: false })] }), _jsx("div", { className: styles.spacer }), _jsxs("div", { className: styles.actorsArea, children: [agents.map((actor) => (_jsx(AgentChip, { id: actor.id, agent: {
|
|
9
10
|
id: actor.id,
|
|
10
11
|
name: actor.name,
|
|
11
12
|
initials: actor.name[0] ?? '',
|
|
12
13
|
gradient: '',
|
|
13
14
|
intent: actor.intent ?? '',
|
|
14
15
|
workstream: '',
|
|
16
|
+
requestedByName: actor.requestedByName,
|
|
15
17
|
}, currentWorkstream: "", onStop: () => onStopAgent(actor.id) }, actor.id))), humanActors.length > 0 && (_jsx(PresenceStack, { actors: humanActors.map((a) => ({
|
|
16
18
|
id: a.id,
|
|
17
19
|
actorId: a.id,
|
|
@@ -22,6 +24,6 @@ export function P1EditorSubheader({ puckActions, docState, hasDrift, context, ag
|
|
|
22
24
|
state: 'active',
|
|
23
25
|
lastActivityAt: new Date().toISOString(),
|
|
24
26
|
joinedAt: new Date().toISOString(),
|
|
25
|
-
})), maxVisible: 3 }))] }), _jsx("div", { className: styles.
|
|
27
|
+
})), maxVisible: 3 }))] }), _jsx(PublishControl, { docState: docState, hasDrift: hasDrift, context: context, onPublish: onPublish, onReviewAndPublish: onReviewAndPublish, onReviewWorkstream: onReviewWorkstream, onCreateWorkstream: onCreateWorkstream, onDeleteDocument: onDeleteDocument, renderBadgeOnly: true }), _jsxs("div", { className: styles.workstreamPublishGroup, children: [_jsx(WorkstreamSwitcher, { branches: branches, currentBranch: currentBranch, onSwitch: onSwitchBranch, onCompareWithLive: onCompareWithLive, hideCompareButton: true, onCreateBranch: onCreateBranch }), _jsx(PublishControl, { docState: docState, hasDrift: hasDrift, context: context, onPublish: onPublish, onReviewAndPublish: onReviewAndPublish, onReviewWorkstream: onReviewWorkstream, onCreateWorkstream: onCreateWorkstream, onDeleteDocument: onDeleteDocument, renderButtonOnly: true })] })] }));
|
|
26
28
|
}
|
|
27
29
|
//# sourceMappingURL=P1EditorSubheader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"P1EditorSubheader.js","sourceRoot":"","sources":["../../../src/pds/components/P1EditorSubheader.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"P1EditorSubheader.js","sourceRoot":"","sources":["../../../src/pds/components/P1EditorSubheader.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
.subheader {
|
|
4
4
|
height: 48px;
|
|
5
|
-
background: var(--pds-color-bg-default
|
|
6
|
-
border-
|
|
5
|
+
background: var(--pds-color-bg-default, oklch(1 0 0));
|
|
6
|
+
border-top: 1px solid oklch(0.96 0 0); /* borderSubtle */
|
|
7
|
+
border-bottom: 1px solid oklch(0.96 0 0); /* borderSubtle */
|
|
7
8
|
display: flex;
|
|
8
9
|
align-items: center;
|
|
9
10
|
padding: 0 var(--pds-spacing-m, 1rem);
|
|
@@ -67,6 +68,34 @@
|
|
|
67
68
|
display: none;
|
|
68
69
|
}
|
|
69
70
|
|
|
71
|
+
/* ── Right panel toggle rotation ─────────────────────────────────────── */
|
|
72
|
+
|
|
73
|
+
.rightPanelToggle :global(.pds-icon) {
|
|
74
|
+
transform: rotate(180deg);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* ── Workstream + Publish button group ────────────────────────────────── */
|
|
78
|
+
|
|
79
|
+
.workstreamPublishGroup {
|
|
80
|
+
display: inline-flex;
|
|
81
|
+
align-items: center;
|
|
82
|
+
flex-shrink: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Remove rounded corners and right border on workstream switcher when grouped */
|
|
86
|
+
.workstreamPublishGroup :global(.WorkstreamSwitcher-module__vbDGzq__trigger) {
|
|
87
|
+
border-top-right-radius: 0;
|
|
88
|
+
border-bottom-right-radius: 0;
|
|
89
|
+
border-right: none;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* Remove rounded corners on the left side of publish button when grouped */
|
|
93
|
+
.workstreamPublishGroup :global(.pds-split-button),
|
|
94
|
+
.workstreamPublishGroup :global(.pds-button) {
|
|
95
|
+
border-top-left-radius: 0;
|
|
96
|
+
border-bottom-left-radius: 0;
|
|
97
|
+
}
|
|
98
|
+
|
|
70
99
|
/* ── Compact mobile layout (< 768px) ────────────────────────────────── */
|
|
71
100
|
|
|
72
101
|
@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,7 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pantheon-systems/puck-css",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Puck editor integration with Collaborative State System",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public",
|
|
7
|
+
"registry": "https://registry.npmjs.org/",
|
|
8
|
+
"provenance": false
|
|
9
|
+
},
|
|
5
10
|
"repository": {
|
|
6
11
|
"type": "git",
|
|
7
12
|
"url": "https://github.com/pantheon-systems/puck-css-integration.git",
|
|
@@ -71,7 +76,7 @@
|
|
|
71
76
|
"fast-json-patch": "^3.1.1",
|
|
72
77
|
"jsep": "^1.4.0",
|
|
73
78
|
"yjs": "^13.6.29",
|
|
74
|
-
"@pantheon-systems/css-client": "0.4.
|
|
79
|
+
"@pantheon-systems/css-client": "0.4.2"
|
|
75
80
|
},
|
|
76
81
|
"devDependencies": {
|
|
77
82
|
"@floating-ui/react": "^0.27.19",
|
|
@@ -86,7 +91,7 @@
|
|
|
86
91
|
"jsdom": "^24.1.3",
|
|
87
92
|
"react-toastify": "^11.0.5",
|
|
88
93
|
"typescript": "^5.9.3",
|
|
89
|
-
"vite": "^6.4.
|
|
94
|
+
"vite": "^6.4.3",
|
|
90
95
|
"vitest": "^4.1.5",
|
|
91
96
|
"@pantheon-systems/eslint-config": "0.1.0"
|
|
92
97
|
},
|
package/src/styles.css
CHANGED
|
@@ -11,6 +11,39 @@
|
|
|
11
11
|
* Styles for version comparison and other UI components.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
+
/* ============================================
|
|
15
|
+
Plugin Rail Toggle
|
|
16
|
+
============================================ */
|
|
17
|
+
|
|
18
|
+
/* Hide the plugin rail (left navigation with Blocks/Outline/History/etc.) */
|
|
19
|
+
.p1-hide-plugin-rail [class*='_PuckLayout-nav_'] {
|
|
20
|
+
display: none;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/* Reclaim the space - set the side nav width to 0 so grid collapses that column */
|
|
24
|
+
.p1-hide-plugin-rail [class*='_PuckLayout-inner_'] {
|
|
25
|
+
--puck-side-nav-width: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* ============================================
|
|
29
|
+
Sidebar Background Matching
|
|
30
|
+
============================================ */
|
|
31
|
+
|
|
32
|
+
/* Match plugin rail, blocks plugin, and sidebars background to header */
|
|
33
|
+
[class*='_PuckLayout-nav_'],
|
|
34
|
+
[class*='_BlocksPlugin_'],
|
|
35
|
+
[class*='_Sidebar--left_'],
|
|
36
|
+
[class*='_Sidebar--right_'] {
|
|
37
|
+
background: var(--pds-color-bg-default, oklch(1 0 0)) !important;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/* Override all nested backgrounds in right sidebar */
|
|
41
|
+
[class*='_Sidebar--right_'] [class*='_SidebarSection'],
|
|
42
|
+
[class*='_Sidebar--right_'] [class*='_Breadcrumbs_'],
|
|
43
|
+
[class*='_Sidebar--right_'] [class*='_Heading_'] {
|
|
44
|
+
background: transparent !important;
|
|
45
|
+
}
|
|
46
|
+
|
|
14
47
|
/* ============================================
|
|
15
48
|
CSS Variables
|
|
16
49
|
============================================ */
|