efficient-easel 20.2.0 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -6
- package/dist/{CanvasDragLayer-ARfaivCu.d.ts → CanvasDragLayer-Cd1o0HQf.d.ts} +1 -1
- package/dist/{chunk-TNGOL65V.js → chunk-2E2SXDYQ.js} +1 -1
- package/dist/chunk-2M4T27BI.js +18 -0
- package/dist/chunk-4IJVV7DA.js +1 -0
- package/dist/{chunk-JQXD3TDE.js → chunk-66JNVRQM.js} +1 -1
- package/dist/{chunk-EFHV56BO.js → chunk-7L3NKHEC.js} +14 -14
- package/dist/chunk-APVUYICP.js +65 -0
- package/dist/{chunk-HK6I3NVO.js → chunk-E52W3M5I.js} +1 -1
- package/dist/chunk-EB6NI2VK.js +1 -0
- package/dist/chunk-EZTP6E2M.js +5 -0
- package/dist/chunk-FM6JO4WF.js +2 -0
- package/dist/chunk-FOHHXSOL.js +1 -0
- package/dist/{chunk-I7BROL77.js → chunk-HGCGIRVA.js} +1 -1
- package/dist/chunk-JACEEVVF.js +1 -0
- package/dist/{chunk-QAJAEWCZ.js → chunk-KFWNGPW3.js} +5 -5
- package/dist/{chunk-276MBG5P.js → chunk-LXTM2OLQ.js} +2 -2
- package/dist/{chunk-FGYJ5DJY.js → chunk-MSGZ56QL.js} +1 -1
- package/dist/chunk-MZ5GSSZ3.js +7 -0
- package/dist/{chunk-UJ46J7QW.js → chunk-N2RISV46.js} +1 -1
- package/dist/chunk-NA3GMA43.js +5 -0
- package/dist/{chunk-FGJTX2DL.js → chunk-OBWDHKLI.js} +6 -6
- package/dist/chunk-Q2A7RHG2.js +1 -0
- package/dist/{chunk-JBOSEHIX.js → chunk-R4QJ6DC5.js} +1 -1
- package/dist/chunk-S3DUFDQ6.js +6 -0
- package/dist/chunk-TQ5Y6S2X.js +1 -0
- package/dist/{chunk-OTONLZR4.js → chunk-V2ULLALL.js} +3 -3
- package/dist/chunk-WHS6Y55E.js +10 -0
- package/dist/{chunk-ZOBSIXRD.js → chunk-Y2T3JX7K.js} +1 -1
- package/dist/chunk-YHFKWV7H.js +21 -0
- package/dist/copy/index.js +13 -13
- package/dist/drag/drag.css +3 -9
- package/dist/drag/index.d.ts +2 -2
- package/dist/drag/index.js +1 -1
- package/dist/draw/index.d.ts +1 -1
- package/dist/draw/index.js +1 -1
- package/dist/easel/index.js +1 -1
- package/dist/fields/fields.css +2 -2
- package/dist/fields/index.d.ts +1 -1
- package/dist/fields/index.js +1 -1
- package/dist/panel/index.d.ts +37 -138
- package/dist/panel/index.js +15 -15
- package/dist/panel/panel.css +53 -347
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddSidePanel.js +1 -1
- package/dist/screen/components/MediaPopup.d.ts +5 -6
- package/dist/screen/components/NodeContextMenu.d.ts +3 -3
- package/dist/screen/components/NodeContextMenu.js +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/SaveControls.d.ts +3 -3
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +3 -3
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +3 -3
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +16 -16
- package/dist/screen/components/usePartBridge.d.ts +3 -3
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +3 -3
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/content/view-tiers.d.ts +14 -2
- package/dist/screen/lib/content/view-tiers.js +1 -1
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/puck/device-fields.js +1 -1
- package/dist/screen/lib/puck/preview-dom.js +1 -1
- package/dist/screen/lib/puck/style-clipboard.d.ts +3 -3
- package/dist/screen/lib/puck/style-clipboard.js +1 -1
- package/dist/screen/lib/puck/use-section-ops.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +3 -3
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/screen.css +3 -7
- package/dist/screen/words.d.ts +4 -0
- package/dist/screen/words.js +1 -1
- package/dist/strings/index.d.ts +2 -2
- package/dist/strings/index.js +2 -2
- package/dist/text-styles/index.js +30 -30
- package/dist/tree/index.d.ts +4 -4
- package/dist/tree/index.js +1 -1
- package/dist/{types-Bqq6ya0y.d.ts → types-DBy3L69b.d.ts} +11 -4
- package/dist/{words-vhnV8sM7.d.ts → words-CFkb8XtN.d.ts} +5 -0
- package/dist/{words-CvwYvkJm.d.ts → words-SD4neL0n.d.ts} +6 -0
- package/package.json +3 -3
- package/dist/chunk-23DYNW6S.js +0 -1
- package/dist/chunk-23VM4PMV.js +0 -7
- package/dist/chunk-2BOXPUGF.js +0 -1
- package/dist/chunk-3R3PEVU7.js +0 -65
- package/dist/chunk-7LYKFL3Q.js +0 -21
- package/dist/chunk-A6Z4SD3I.js +0 -10
- package/dist/chunk-H2PRGXCW.js +0 -18
- package/dist/chunk-KAML3KQH.js +0 -1
- package/dist/chunk-L2Y3PF2R.js +0 -4
- package/dist/chunk-MEHLY5Q4.js +0 -1
- package/dist/chunk-PAOZMXEI.js +0 -5
- package/dist/chunk-RC25EGHD.js +0 -5
- package/dist/chunk-VANKQVOW.js +0 -8
- package/dist/chunk-WEIE2FBC.js +0 -1
- package/dist/chunk-WRFD4EXD.js +0 -1
package/dist/drag/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { HTMLAttributes, CSSProperties, ReactNode } from 'react';
|
|
|
3
3
|
import { P as Place } from '../types-41704JE4.js';
|
|
4
4
|
import { D as DragSession } from '../session-DSQFmIvx.js';
|
|
5
5
|
export { a as DragHeld, c as createDragSession } from '../session-DSQFmIvx.js';
|
|
6
|
-
export { B as Box, a as CanvasDragLayer, b as CanvasDragLayerProps, C as CanvasDragModel, c as CanvasDropTarget, d as CanvasSeam, e as CanvasSource, f as CanvasZone, E as EMPTY_MEASURE, H as HANDLE_GRACE_MS, M as MeasuredCanvas, g as MeasuredNode, h as canvasTarget, i as contains, j as gapInZone, k as gapLine, l as insertSeams, m as measureCanvas, p as pickSource, s as seamsBetween, n as sourcesAt } from '../CanvasDragLayer-
|
|
7
|
-
import { D as DragWords } from '../words-
|
|
6
|
+
export { B as Box, a as CanvasDragLayer, b as CanvasDragLayerProps, C as CanvasDragModel, c as CanvasDropTarget, d as CanvasSeam, e as CanvasSource, f as CanvasZone, E as EMPTY_MEASURE, H as HANDLE_GRACE_MS, M as MeasuredCanvas, g as MeasuredNode, h as canvasTarget, i as contains, j as gapInZone, k as gapLine, l as insertSeams, m as measureCanvas, p as pickSource, s as seamsBetween, n as sourcesAt } from '../CanvasDragLayer-Cd1o0HQf.js';
|
|
7
|
+
import { D as DragWords } from '../words-SD4neL0n.js';
|
|
8
8
|
import '../watch-BTYOJpQU.js';
|
|
9
9
|
|
|
10
10
|
/**
|
package/dist/drag/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{AddPanel,CanvasDragLayer,CanvasInsert,EMPTY_MEASURE,HANDLE_GRACE_MS,canvasTarget,contains,gapInZone,gapLine,insertSeams,measureCanvas,pickSource,seamsBetween,sourcesAt}from"../chunk-
|
|
1
|
+
export{AddPanel,CanvasDragLayer,CanvasInsert,EMPTY_MEASURE,HANDLE_GRACE_MS,canvasTarget,contains,gapInZone,gapLine,insertSeams,measureCanvas,pickSource,seamsBetween,sourcesAt}from"../chunk-2M4T27BI.js";import"../chunk-TQ5Y6S2X.js";export{AUTO_SCROLL_EDGE,AUTO_SCROLL_MAX_SPEED,autoScrollDelta,autoScrollSpeed,createDragSession,dropEffectFor,dropOnRow,frameScrollBox,gapToMoveIndex,isNoOpDrop,scrollBoxOf,scrollParent,startAutoScroll,stepGap,useTreeDrag}from"../chunk-3S5N4HLJ.js";import"../chunk-P2VEMZH5.js";import"../chunk-K7BTCBWD.js";import"../chunk-L55YIXDC.js";import"../chunk-QIDRJH3S.js";import"../chunk-LF3FUSCQ.js";
|
package/dist/draw/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { ANCHOR_FIELD_KEYS, EdgeCell, FOLD_FIELD_MARKER, FoldFieldMeta, LINK_FIE
|
|
|
4
4
|
export { SCALAR_TEXT_CONTROLS, ScalarTextControlKind, TEXT_CONTROL_KINDS, TextControlKind } from '../screen/lib/puck/text-control-kinds.js';
|
|
5
5
|
export { RowNameRule, rootRowName, sectionRenameProp, slotChildName, slotChildRenameProp, slotChildRowName } from '../screen/lib/puck/slot-child-name.js';
|
|
6
6
|
export { FOOTER_TYPE, HEADER_TYPE, NodeLocation, ROOT_ZONE, SlotConfigView, TREE_MAX_DEPTH, TreeItem, blockNodeActions, childSlotsOf, locateNode, missingPinnedTypes, nestsInTree, newNodeId, pinnedDuplicateIds, pinnedDuplicateIndices, slotChildrenIn, slotFieldsOf } from '../screen/lib/puck/content-tree.js';
|
|
7
|
-
export { AUTO_RULES, AutoRule, VIEW_DESKTOP_MIN, VIEW_TABLET_MIN, VIEW_TIERS, VIEW_TIER_LABEL, ViewTier, ViewValueKind, ViewValues, isAuto, phoneKey, resolveViewValue, tabletKey, viewTierForWidth } from '../screen/lib/content/view-tiers.js';
|
|
7
|
+
export { AUTO_RULES, AutoRule, FOLLOW_RULES, VIEW_DESKTOP_MIN, VIEW_TABLET_MIN, VIEW_TIERS, VIEW_TIER_LABEL, ViewTier, ViewValueKind, ViewValues, isAuto, phoneKey, resolveViewValue, tabletKey, viewTierForWidth } from '../screen/lib/content/view-tiers.js';
|
|
8
8
|
export { HERO_SLIDER_GOTO_EVENT, HeroSliderGotoDetail } from '../screen/lib/puck/preview-events.js';
|
|
9
9
|
export { R as REPEAT_ATTRIBUTE, a as REPEAT_INDEX_ATTRIBUTE } from '../repeat-Czi-6zPX.js';
|
|
10
10
|
export { TEXT_STYLE_CASES, TEXT_STYLE_CASE_CSS, TextStyleCase, TextStyleCaseCss, isTextStyleCase, textStyleCaseCss, textStyleCaseOfCss } from '../text-styles/model.js';
|
package/dist/draw/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{SCALAR_TEXT_CONTROLS,TEXT_CONTROL_KINDS}from"../chunk-PIND6KE7.js";export{AUTO_RULES,VIEW_DESKTOP_MIN,VIEW_TABLET_MIN,VIEW_TIERS,VIEW_TIER_LABEL,isAuto,phoneKey,resolveViewValue,tabletKey,viewTierForWidth}from"../chunk-
|
|
1
|
+
export{SCALAR_TEXT_CONTROLS,TEXT_CONTROL_KINDS}from"../chunk-PIND6KE7.js";export{AUTO_RULES,FOLLOW_RULES,VIEW_DESKTOP_MIN,VIEW_TABLET_MIN,VIEW_TIERS,VIEW_TIER_LABEL,isAuto,phoneKey,resolveViewValue,tabletKey,viewTierForWidth}from"../chunk-E52W3M5I.js";export{rootRowName,sectionRenameProp,slotChildName,slotChildRenameProp,slotChildRowName}from"../chunk-BHRC3ASL.js";export{hidableText,readHidable}from"../chunk-6W7WLPZH.js";export{HERO_SLIDER_GOTO_EVENT}from"../chunk-IQ5TA7AM.js";export{ANCHOR_FIELD_KEYS,FOLD_FIELD_MARKER,LINK_FIELD_MARKER,MEDIA_FIELD_MARKER,SCAFFOLD_FIELD_MARKER,TEXT_FIELD_MARKER,foldMetaOf,textFieldIdentifier}from"../chunk-DUVRZ456.js";export{PART_SEP,decodePartId,encodePartId}from"../chunk-IYT6NN2J.js";export{FOOTER_TYPE,HEADER_TYPE,ROOT_ZONE,TREE_MAX_DEPTH,blockNodeActions,childSlotsOf,locateNode,missingPinnedTypes,nestsInTree,newNodeId,pinnedDuplicateIds,pinnedDuplicateIndices,slotChildrenIn,slotFieldsOf}from"../chunk-PLVEGYK6.js";export{TEXT_STYLE_CASES,TEXT_STYLE_CASE_CSS,isTextStyleCase,textStyleCaseCss,textStyleCaseOfCss}from"../chunk-YHZSBL2N.js";export{REPEAT_ATTRIBUTE,REPEAT_INDEX_ATTRIBUTE}from"../chunk-LF3FUSCQ.js";
|
package/dist/easel/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{CanvasFrame,CanvasPartsContext,CanvasPassThroughContext,CanvasSharedContext,DEFAULT_UI,EaselCanvas,EaselProvider,EditDocument,bindUndoKeys,createEasel,createUseEasel,recordsByDefault,reduce,uiView,useEasel,useEaselApi,useEaselNodeOps,useSelectedFields,validSelection}from"../chunk-
|
|
1
|
+
export{CanvasFrame,CanvasPartsContext,CanvasPassThroughContext,CanvasSharedContext,DEFAULT_UI,EaselCanvas,EaselProvider,EditDocument,bindUndoKeys,createEasel,createUseEasel,recordsByDefault,reduce,uiView,useEasel,useEaselApi,useEaselNodeOps,useSelectedFields,validSelection}from"../chunk-7L3NKHEC.js";import"../chunk-TBY3DFKS.js";import"../chunk-IWCKVZHS.js";import"../chunk-BSHIQIZC.js";import"../chunk-MZ5GSSZ3.js";import"../chunk-KRL3IUV3.js";import"../chunk-MFIRYGHW.js";import"../chunk-K7BTCBWD.js";import"../chunk-L55YIXDC.js";import"../chunk-QIDRJH3S.js";import"../chunk-LF3FUSCQ.js";
|
package/dist/fields/fields.css
CHANGED
|
@@ -102,12 +102,12 @@ span:has(> .es-fnum) { display: flex; min-width: 0; }
|
|
|
102
102
|
.es-list { position: relative; display: flex; flex-direction: column; gap: 8px; min-width: 0; margin-top: max(var(--es-row-gap), var(--es-rhythm-between)); }
|
|
103
103
|
.es-list-head {
|
|
104
104
|
display: flex;
|
|
105
|
-
align-items:
|
|
105
|
+
align-items: center;
|
|
106
106
|
justify-content: space-between;
|
|
107
107
|
gap: 8px;
|
|
108
108
|
}
|
|
109
109
|
.es-list-label { display: inline-flex; align-items: center; gap: 8px; font-size: var(--text-xs, 12px); font-weight: 600; color: var(--es-text); }
|
|
110
|
-
|
|
110
|
+
/* The head's count is the shell's `ItemCount` (Lewis, 2026-10-23). */
|
|
111
111
|
|
|
112
112
|
/* A host's bar for the row in use, between the name and the rows. */
|
|
113
113
|
.es-list-above { min-width: 0; }
|
package/dist/fields/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export { ShowWhenContext, ShowWhenRule, showWhenOf, withShowWhen } from 'efficie
|
|
|
7
7
|
import { a as InspectorFieldDef, b as FieldRenderer, I as InspectorFields, c as FieldTextProps, d as FieldNumberProps, e as FieldSliderProps, f as FieldSelectManyProps, g as FieldSelectOneProps, F as FieldOption } from '../types-CDX6vd6A.js';
|
|
8
8
|
export { A as ArrayFieldDef, C as CustomFieldDef, h as CustomFieldRenderProps, i as FieldSelectProps, N as NumberFieldDef, O as ObjectFieldDef, R as RadioFieldDef, S as SelectFieldDef, j as SlotFieldDef, T as TextFieldDef, k as TextareaFieldDef } from '../types-CDX6vd6A.js';
|
|
9
9
|
import { R as ResolvableItem } from '../resolve-D68pb3Bx.js';
|
|
10
|
-
export { F as FieldsWords } from '../words-
|
|
10
|
+
export { F as FieldsWords } from '../words-CFkb8XtN.js';
|
|
11
11
|
export { LinkFilter, LinkFilterField, LinkKindChoice, LinkOption, LinkOptionGroup, LinkPicker, LinkPickerProps, LinkRules, LinkTarget } from 'efficient-shell/ui';
|
|
12
12
|
import '../types-41704JE4.js';
|
|
13
13
|
|
package/dist/fields/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{FieldText,Inspector,InspectorField,LinkPicker,ListField,bucketsOf,copyItem,insertAt,labelOf,moveTo,planFields,removeAt}from"../chunk-
|
|
1
|
+
export{FieldText,Inspector,InspectorField,LinkPicker,ListField,bucketsOf,copyItem,insertAt,labelOf,moveTo,planFields,removeAt}from"../chunk-YHFKWV7H.js";export{fieldIsShown,showWhenOf,shownFields,withShowWhen}from"../chunk-BPXEFVSQ.js";import"../chunk-WHS6Y55E.js";import"../chunk-K56YDHYQ.js";export{FieldSlider}from"../chunk-ZEH6QLBH.js";export{useResolvedFields}from"../chunk-IWCKVZHS.js";import"../chunk-FIVU2COQ.js";import"../chunk-FM6JO4WF.js";import"../chunk-KFV7N2DJ.js";export{FieldNumber}from"../chunk-Y2T3JX7K.js";export{FieldSelect,optionFor}from"../chunk-KFWNGPW3.js";import"../chunk-JACEEVVF.js";import"../chunk-S3DUFDQ6.js";import"../chunk-MFIRYGHW.js";import"../chunk-3S5N4HLJ.js";import"../chunk-P2VEMZH5.js";import"../chunk-K7BTCBWD.js";import"../chunk-L55YIXDC.js";
|
package/dist/panel/index.d.ts
CHANGED
|
@@ -607,123 +607,49 @@ type SettingsActionProps = SettingsActionBaseProps & SettingsActionNote;
|
|
|
607
607
|
declare function SettingsSegmented<V = string>({ options, value, onChange, ariaLabel, fit, disabled, className, }: SettingsSegmentedProps<V>): react.JSX.Element;
|
|
608
608
|
|
|
609
609
|
/**
|
|
610
|
-
* A group of settings under a grey band that folds with − /
|
|
611
|
-
*
|
|
612
|
-
*
|
|
613
|
-
*
|
|
614
|
-
*
|
|
615
|
-
*
|
|
616
|
-
*
|
|
617
|
-
* `
|
|
618
|
-
*
|
|
619
|
-
*
|
|
620
|
-
* THE TITLE IS A HEADING THAT HOLDS THE BUTTON (WAI-ARIA APG accordion pattern,
|
|
621
|
-
* 7.2.0). A button alone gives a screen reader nothing to jump between; the
|
|
622
|
-
* `h{level}` round it puts each group in the panel's outline, under the panel's
|
|
623
|
-
* `h2` name. The level is the host's (default 3, as `SettingsGroupHead`), since
|
|
624
|
-
* only the host knows the outline around it. `panel.css` takes every margin and
|
|
625
|
-
* font off `.es-group-title`, so the pill looks as it did.
|
|
610
|
+
* A group of settings under a grey band that folds with − / +. THE SHELL'S
|
|
611
|
+
* `Accordion` band (B2 plan C, Lewis 2026-10-26): its markup, its `es-group…`
|
|
612
|
+
* classes and its look moved to efficient-shell, and the gap under the band
|
|
613
|
+
* is the band's (32px above and below its body). This name stays because
|
|
614
|
+
* both editors' hosts import it.
|
|
615
|
+
*
|
|
616
|
+
* Controlled: `open` is the host's, and a press only asks it to flip. The body
|
|
617
|
+
* stays mounted while folded (`keepMounted`), as it always did here, so a
|
|
618
|
+
* folded group's controls keep their state. `count` is the reason a fold is
|
|
619
|
+
* safe: a folded group that holds changes still says so on its pill.
|
|
626
620
|
*/
|
|
627
621
|
declare function SettingsGroup({ title, open, onToggle, count, level, id, children, className, }: SettingsGroupProps): react.JSX.Element;
|
|
628
622
|
|
|
629
623
|
/**
|
|
630
|
-
* A group heading with NO group under it — the
|
|
631
|
-
*
|
|
632
|
-
*
|
|
633
|
-
*
|
|
634
|
-
*
|
|
635
|
-
* component that heads and nothing else.
|
|
636
|
-
*
|
|
637
|
-
* `SettingsGroup` cannot do that job. It always renders its body div, and its
|
|
638
|
-
* pill is always a <button> carrying `aria-expanded`, `aria-controls` and the
|
|
639
|
-
* − / + sign. Used header-only it would draw a control that claims to expand
|
|
640
|
-
* something, does nothing when clicked, and tells a screen reader the same lie.
|
|
641
|
-
* A component that folds and a component that titles are two different things,
|
|
642
|
-
* and this is the one that titles.
|
|
643
|
-
*
|
|
644
|
-
* So it is a HEADING, not a control: a real <h3> (the level is the host's, since
|
|
645
|
-
* only the host knows the page outline around it) with no role bolted on, no
|
|
646
|
-
* expanded state, no sign, no body. In a flat list the heading list is the only
|
|
647
|
-
* structure a screen reader has left to navigate by, which is the whole reason
|
|
648
|
-
* this renders a heading element rather than a styled <div>.
|
|
649
|
-
*
|
|
650
|
-
* It wears `.es-group-head` — the same pill as a real group's — so a section
|
|
651
|
-
* that folds and a section that does not read as the same panel. `panel.css`
|
|
652
|
-
* scopes the cursor and the hover tint to `button.es-group-head`, so the
|
|
653
|
-
* heading does not offer a press it cannot honour.
|
|
654
|
-
*
|
|
655
|
-
* NO `count`. A folded group needs one because a fold can hide a change; a
|
|
656
|
-
* heading folds nothing, so nothing can hide behind it.
|
|
624
|
+
* A group heading with NO group under it — the band on its own, for Puck's
|
|
625
|
+
* flat inspector list, where a heading cannot wrap the rows that follow it. A
|
|
626
|
+
* HEADING, not a control: no button, no sign, no count. THE SHELL'S
|
|
627
|
+
* `AccordionHeading` (B2 plan C, Lewis 2026-10-26); this name stays because
|
|
628
|
+
* both editors' hosts import it.
|
|
657
629
|
*/
|
|
658
630
|
declare function SettingsGroupHead({ title, level, id, className, }: SettingsGroupHeadProps): react.JSX.Element;
|
|
659
631
|
|
|
660
632
|
/**
|
|
661
|
-
* The QUIET second tier — a heading one rung under `SettingsGroupHead
|
|
662
|
-
*
|
|
663
|
-
*
|
|
664
|
-
*
|
|
665
|
-
* serve a tier AND its subordinate: two runs of settings under one pill each
|
|
666
|
-
* need a name, and giving them the same pill says they are siblings of the thing
|
|
667
|
-
* above them rather than parts of it.
|
|
668
|
-
*
|
|
669
|
-
* THE SHOP ALREADY DREW THIS LOOK, TWICE, WHICH IS WHY IT BELONGS HERE.
|
|
670
|
-
* `efficient-storefront` hand-rolled `.sf-field-group` in the settings panel and
|
|
671
|
-
* `.sf-group-label` in the Layers tree, and they are the same type to the
|
|
672
|
-
* decimal — 10.5px / 600 / .07em / muted / uppercase. One look, hand-rolled in
|
|
673
|
-
* two panels of one editor, is the definition of a thing the shell should own.
|
|
674
|
-
*
|
|
675
|
-
* ⚠️ NOT THE PILL WITH ITS FILL SWITCHED OFF, and that is the whole reason this
|
|
676
|
-
* is a component and not a `variant` flag on the other one. The shop's own
|
|
677
|
-
* `WHY NOT SettingsGroupHead` docblock refused that shape in advance: a named
|
|
678
|
-
* look the shell draws, "not a boolean that switches the pill off. A flag whose
|
|
679
|
-
* job is to turn the design off moves the fork inside the shell instead of
|
|
680
|
-
* removing it." So there is no path from here to the pill's look and none back —
|
|
681
|
-
* two tiers, two looks, each one this package's own.
|
|
682
|
-
*
|
|
683
|
-
* WHY IT IS QUIET BY TYPE AND THE PILL IS LOUD BY GROUND. The pill separates
|
|
684
|
-
* itself from the settings around it with a fill; this separates itself with
|
|
685
|
-
* CASE and COLOUR and takes no ground at all. That is what lets the two sit in
|
|
686
|
-
* one panel without competing, and it is also why this tier can carry no rule:
|
|
687
|
-
* a hairline under a heading separates it from the rows it heads, which is the
|
|
688
|
-
* opposite of what a heading is for. Removing those rules is the change the
|
|
689
|
-
* owner asked for.
|
|
690
|
-
*
|
|
691
|
-
* A REAL HEADING, defaulting to `h4` — one under the pill's default `h3`,
|
|
692
|
-
* because that is where a subordinate heading sits when the pill above it took
|
|
693
|
-
* the 3. The host may say otherwise; only the host knows the outline around it.
|
|
694
|
-
* Puck lays an inspector out as a FLAT sibling list, so the heading list is the
|
|
695
|
-
* only structure a screen reader has left to navigate by.
|
|
696
|
-
*
|
|
697
|
-
* NO fold, no count, no sign, no body — the same discipline as
|
|
698
|
-
* {@link SettingsGroupHead}, and for the same reason: a component that folds and
|
|
699
|
-
* a component that titles are two different things, and this is one that titles.
|
|
633
|
+
* The QUIET second tier — a heading one rung under `SettingsGroupHead`: case
|
|
634
|
+
* and colour, no ground and no rule, defaulting to `h4`. THE SHELL'S
|
|
635
|
+
* `AccordionHeading` at its `row` tier (B2 plan C, Lewis 2026-10-26); this
|
|
636
|
+
* name stays because both editors' hosts import it.
|
|
700
637
|
*/
|
|
701
638
|
declare function SettingsGroupSub({ title, level, id, className, }: SettingsGroupSubProps): react.JSX.Element;
|
|
702
639
|
|
|
703
640
|
/**
|
|
704
|
-
* One setting: a
|
|
705
|
-
*
|
|
706
|
-
*
|
|
707
|
-
*
|
|
708
|
-
*
|
|
709
|
-
*
|
|
710
|
-
*
|
|
711
|
-
*
|
|
712
|
-
* `
|
|
713
|
-
*
|
|
714
|
-
*
|
|
715
|
-
* A BOOLEAN row is the one exception to "control on its own line" (card 8801,
|
|
716
|
-
* Option A, approved). A switch is small and it is the whole control, so it
|
|
717
|
-
* rides the label line in the `action` slot and the row costs one line instead
|
|
718
|
-
* of two — which is what lets a 308px panel show four settings where it used to
|
|
719
|
-
* show three. That is the only reason `children` is optional: a field with no
|
|
720
|
-
* children draws no control row, and its label line IS the row.
|
|
721
|
-
*
|
|
722
|
-
* A field with no children AND no action has no control on either slot. That is
|
|
723
|
-
* a mistake at the call site, so it renders NOTHING — an empty row would hide
|
|
724
|
-
* the mistake behind 20px of blank panel.
|
|
641
|
+
* One setting: a name line, then its control. THE SHELL'S compact `SettingRow`
|
|
642
|
+
* (B2 plan C, Lewis 2026-10-26: "keep the easel look; put it in the shell"):
|
|
643
|
+
* its markup, its `es-field…` classes and its look moved to efficient-shell,
|
|
644
|
+
* and this name stays because both editors' hosts import it. The props are
|
|
645
|
+
* the same; `value` is the row's `readout`, `hint` its `description`,
|
|
646
|
+
* `htmlFor` its `controlId`, and `children` its control (`value`).
|
|
647
|
+
*
|
|
648
|
+
* A BOOLEAN row is one line (card 8801, Option A): its switch rides the name
|
|
649
|
+
* line in `action`, and a field with no children draws no control line. A
|
|
650
|
+
* field with neither draws NOTHING — an empty row would hide the mistake.
|
|
725
651
|
*/
|
|
726
|
-
declare function SettingsField({ label, labelId, icon, value, hint, changed, htmlFor, action, children, className, }: SettingsFieldProps): react.JSX.Element
|
|
652
|
+
declare function SettingsField({ label, labelId, icon, value, hint, changed, htmlFor, action, children, className, }: SettingsFieldProps): react.JSX.Element;
|
|
727
653
|
|
|
728
654
|
/**
|
|
729
655
|
* The yes-or-no control — ONE shape, both editors (card 8801).
|
|
@@ -758,40 +684,13 @@ declare function SettingsField({ label, labelId, icon, value, hint, changed, htm
|
|
|
758
684
|
declare function SettingsSwitch({ checked, onChange, disabled, id, ariaLabel, ariaLabelledBy, className, }: SettingsSwitchProps): react.JSX.Element;
|
|
759
685
|
|
|
760
686
|
/**
|
|
761
|
-
* The end of a setting's
|
|
762
|
-
*
|
|
763
|
-
*
|
|
764
|
-
*
|
|
765
|
-
*
|
|
766
|
-
*
|
|
767
|
-
*
|
|
768
|
-
* https://claude.ai/artifact/KATfHhLK7wogfTD84Manox), gave it its look:
|
|
769
|
-
*
|
|
770
|
-
* changed the set's `revert` icon (↺, "Revert to inherited") in a 22px
|
|
771
|
-
* button, accent; its name "Reset <setting>", its tooltip that
|
|
772
|
-
* plus what it goes back to when the host says ("(back to 24px
|
|
773
|
-
* from Site styles)", also its description);
|
|
774
|
-
* unchanged nothing at all: the row's grey value already says it is the
|
|
775
|
-
* default. The 22px slot stays, empty and out of the tab order,
|
|
776
|
-
* so every row's end lines up.
|
|
777
|
-
*
|
|
778
|
-
* It rides `SettingsField`'s `action` slot; `SettingsField` leaves its name
|
|
779
|
-
* alone (only a switch is named after the field).
|
|
780
|
-
*
|
|
781
|
-
* FOCUS AFTER A PRESS. Reset turns the button into the empty slot, which cannot
|
|
782
|
-
* hold focus, so a keyboard user would fall back to the top of the page. The
|
|
783
|
-
* press hands focus to the row's own control (its slider, box or swatch) first.
|
|
784
|
-
* That is read off the event's own element, never a global, so the module stays
|
|
785
|
-
* a leaf.
|
|
786
|
-
*
|
|
787
|
-
* `defaultAction` is the one row with something to press while unchanged: the
|
|
788
|
-
* website's type sizes, whose default can be a responsive `clamp()` no slider
|
|
789
|
-
* stores, keep ONE press to the section's own built-in size (a feature is
|
|
790
|
-
* never cut to fit a look). It draws the host's icon in the same 22px slot.
|
|
791
|
-
*
|
|
792
|
-
* CONTROLLED and hook-free like the rest of the panel: `changed` is the host's,
|
|
793
|
-
* and a press only asks the host to clear. The words are handed in (`words`),
|
|
794
|
-
* because a leaf never reads the strings provider.
|
|
687
|
+
* The end of a setting's name line: a ↺ button once the setting is changed,
|
|
688
|
+
* the empty 22px slot while it is not (option E, final 2026-10-07). THE
|
|
689
|
+
* SHELL'S `SettingReset` (B2 plan C, Lewis 2026-10-26): its markup, its
|
|
690
|
+
* `es-default-reset` classes, its look and the focus hand-off after a press
|
|
691
|
+
* moved to efficient-shell; this name stays because both editors' hosts
|
|
692
|
+
* import it. The words are still the host's (`words`), handed to the shell
|
|
693
|
+
* part as its name and tooltip.
|
|
795
694
|
*/
|
|
796
695
|
declare function SettingsDefaultReset({ label, changed, onReset, detail, disabled, defaultAction, words, className, }: SettingsDefaultResetProps): react.JSX.Element;
|
|
797
696
|
|
package/dist/panel/index.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export{DESIGN_GROUPS,SETTINGS_BUCKETS,SettingsGroup}from"../chunk-
|
|
2
|
-
return a
|
|
3
|
-
return a
|
|
4
|
-
return
|
|
5
|
-
return
|
|
6
|
-
/* @__PURE__ */i
|
|
7
|
-
/* @__PURE__ */
|
|
8
|
-
/* @__PURE__ */
|
|
9
|
-
/* @__PURE__ */
|
|
10
|
-
return
|
|
11
|
-
/* @__PURE__ */
|
|
12
|
-
/* @__PURE__ */
|
|
13
|
-
/* @__PURE__ */
|
|
14
|
-
return
|
|
15
|
-
return
|
|
1
|
+
export{DESIGN_GROUPS,SETTINGS_BUCKETS,SettingsGroup}from"../chunk-FM6JO4WF.js";import{DEFAULT_PANEL_WORDS as e}from"../chunk-KFV7N2DJ.js";export{SettingsSwitch}from"../chunk-OECWLNKJ.js";import{SettingsField as l,SettingsSegmented as n}from"../chunk-S3DUFDQ6.js";export{SettingsField,SettingsSegmented}from"../chunk-S3DUFDQ6.js";import{AccordionHeading as a,SettingReset as t,Tooltip as i}from"efficient-shell/ui";export{BorderInput as SettingsBorder,CornersInput as SettingsCorners,AlignmentGrid as SettingsPlacement,SidesInput as SettingsSides,SidesEachToggle as SettingsSidesEach,borderSides,borderStartEach,sidesStartEach}from"efficient-shell/ui";import{jsx as s,jsxs as d,Fragment as o}from"react/jsx-runtime";import{BackgroundIcon as r,WidthIcon as c}from"efficient-shell/icons/efficient";function u({title:e,level:l=3,id:n,className:t}){/* @__PURE__ */
|
|
2
|
+
return s(a,{title:e,level:l,id:n,className:t?`es-panel-band ${t}`:"es-panel-band"})}function h({title:e,level:l=4,id:n,className:t}){/* @__PURE__ */
|
|
3
|
+
return s(a,{tier:"row",title:e,level:l,id:n,className:t})}function b({label:l,changed:n,onReset:a,detail:i,disabled:d,defaultAction:o,words:r,className:c}){const u={...e,...r},h=u.resetName({label:l});/* @__PURE__ */
|
|
4
|
+
return s(t,{label:l,changed:n,onReset:a,detail:i,disabled:d,defaultAction:o,name:h,tip:i?u.resetTitle({label:l,detail:i}):h,className:c})}function m({name:e,preview:l,offPage:n,status:a,onOpen:t,id:r,className:c}){const u=null!=l;/* @__PURE__ */
|
|
5
|
+
return d("button",{type:"button",id:r,className:c?`es-drill ${c}`:"es-drill",onClick:t,children:[
|
|
6
|
+
/* @__PURE__ */d(i,{content:u?/* @__PURE__ */d(o,{children:[e,
|
|
7
|
+
/* @__PURE__ */s("br",{}),l]}):e,describe:!1,className:"es-drill-text",children:[
|
|
8
|
+
/* @__PURE__ */s("span",{className:"es-drill-name",children:e}),u?/* @__PURE__ */s("span",{className:n?"es-drill-preview is-offpage":"es-drill-preview",children:l}):null]}),a?/* @__PURE__ */s("span",{className:"es-drill-status",children:a}):null,
|
|
9
|
+
/* @__PURE__ */s("span",{className:"es-drill-chev","aria-hidden":"true"})]})}function f({label:e,onPress:l,disabled:n,note:a,done:t,doneLabel:i,icon:o,id:r,className:c}){const u=void 0===i?e:i,h=t?u:e,b=null!=a,m=b&&r?`${r}-note`:void 0;/* @__PURE__ */
|
|
10
|
+
return d("div",{className:c?`es-action-wrap ${c}`:"es-action-wrap",children:[
|
|
11
|
+
/* @__PURE__ */d("button",{type:"button",id:r,className:t?"es-action is-done":"es-action",disabled:n,"aria-describedby":m,onClick:l,children:[o?/* @__PURE__ */s("span",{className:"es-action-icon","aria-hidden":"true",children:o}):null,
|
|
12
|
+
/* @__PURE__ */s("span",{className:"es-action-label",children:h})]}),b?/* @__PURE__ */s("p",{id:m,className:"es-action-note",children:a}):null,
|
|
13
|
+
/* @__PURE__ */s("span",{className:"es-action-live",role:"status","aria-live":"polite",children:t?u:null})]})}var p=["full","content"],g={label:"Background",full:"Full width",content:"Content width"};function N({value:e,changed:a,detail:t,onChange:i,onReset:d,disabled:o=!1,hint:c,labelId:u,words:h,resetWords:m}){const f={...g,...h};/* @__PURE__ */
|
|
14
|
+
return s(l,{label:f.label,labelId:u,icon:/* @__PURE__ */s(r,{}),changed:a,hint:c,action:/* @__PURE__ */s(b,{words:m,label:f.label,changed:a,detail:t,onReset:d}),children:/* @__PURE__ */s(n,{options:p.map(e=>({id:e,label:"full"===e?f.full:f.content})),value:e,onChange:i,ariaLabel:f.label,disabled:o})})}var S={label:"Content",full:"Full width",content:"Content width"};function v({mode:e,onMode:a,number:t,changed:i,detail:o,onReset:r,fullClosed:u=!1,disabled:h=!1,hint:m,labelId:f,words:g,resetWords:N}){const v={...S,...g},w=void 0!==e&&a?/* @__PURE__ */s(n,{options:p.map(e=>({id:e,label:"full"===e?v.full:v.content,disabled:"full"===e&&u})),value:e,onChange:a,ariaLabel:v.label,disabled:h}):null;/* @__PURE__ */
|
|
15
|
+
return s(l,{label:v.label,labelId:f,icon:/* @__PURE__ */s(c,{}),changed:i,hint:m,action:/* @__PURE__ */s(b,{words:N,label:v.label,changed:i,detail:o,onReset:r}),children:w&&t?/* @__PURE__ */d("div",{className:"es-width-stack",children:[w,t]}):w??t??null})}export{p as BACKGROUND_WIDTHS,g as DEFAULT_BACKGROUND_WIDTH_WORDS,S as DEFAULT_CONTENT_WIDTH_WORDS,f as SettingsAction,N as SettingsBackgroundWidth,v as SettingsContentWidth,b as SettingsDefaultReset,m as SettingsDrill,u as SettingsGroupHead,h as SettingsGroupSub};
|