efficient-easel 0.105.1 → 1.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 +103 -29
- package/dist/{LinkPicker-W2Rtxetz.d.ts → LinkPicker-hPEr1MJx.d.ts} +6 -4
- package/dist/autosave/index.d.ts +5 -5
- package/dist/chrome/chrome.css +50 -273
- package/dist/chrome/index.d.ts +61 -56
- package/dist/chrome/index.js +1 -1
- package/dist/chunk-2GVCAIPX.js +1 -0
- package/dist/chunk-4GNPKHV4.js +64 -0
- package/dist/chunk-5545A3PC.js +4 -0
- package/dist/chunk-7SQF6LZL.js +1 -0
- package/dist/chunk-BXMXTO36.js +1 -0
- package/dist/{chunk-NYKIQJT2.js → chunk-CKEPQNSQ.js} +1 -1
- package/dist/chunk-DJMMTWFP.js +1 -0
- package/dist/{chunk-PQXIFBDY.js → chunk-E2O2MRZR.js} +1 -1
- package/dist/chunk-EA2HTX37.js +5 -0
- package/dist/{chunk-SARZN4M7.js → chunk-FEK3S6HN.js} +1 -1
- package/dist/chunk-FPAVNX3Y.js +6 -0
- package/dist/chunk-HMJS344F.js +1 -0
- package/dist/chunk-JLTZQ4US.js +1 -0
- package/dist/chunk-JMGPPXNQ.js +24 -0
- package/dist/chunk-K56YDHYQ.js +1 -0
- package/dist/chunk-LOMEH6DG.js +1 -0
- package/dist/{chunk-V4LF7D4F.js → chunk-MAEXP3KE.js} +1 -1
- package/dist/chunk-MJM6SFD3.js +3 -0
- package/dist/chunk-NLRW4BGG.js +8 -0
- package/dist/chunk-OJAJVH7S.js +5 -0
- package/dist/chunk-ONRYLR2D.js +2 -0
- package/dist/chunk-ORR3Q4WV.js +1 -0
- package/dist/chunk-OTEXGJDU.js +5 -0
- package/dist/chunk-P2VEMZH5.js +1 -0
- package/dist/chunk-PT6V53OO.js +1 -0
- package/dist/chunk-PYCLHOSA.js +9 -0
- package/dist/chunk-Q27BB5ZC.js +14 -0
- package/dist/chunk-QLD57GBB.js +6 -0
- package/dist/{chunk-NWIW7AWH.js → chunk-QMNML7XH.js} +1 -1
- package/dist/chunk-QR4DLZ3P.js +5 -0
- package/dist/chunk-TJ7YIRWQ.js +21 -0
- package/dist/{chunk-3P6AMTOS.js → chunk-VPFNZ7TB.js} +1 -1
- package/dist/chunk-W3XX2CNW.js +16 -0
- package/dist/chunk-X6DQWK2C.js +1 -0
- package/dist/chunk-XWR5YVA7.js +9 -0
- package/dist/chunk-YABL4EWX.js +7 -0
- package/dist/chunk-ZNNATBDC.js +1 -0
- package/dist/chunk-ZP4G3X44.js +4 -0
- package/dist/copy/copy.css +66 -177
- package/dist/copy/index.d.ts +0 -2
- package/dist/copy/index.js +31 -32
- package/dist/drag/drag.css +31 -11
- package/dist/drag/index.d.ts +10 -0
- package/dist/drag/index.js +1 -1
- package/dist/easel/index.d.ts +10 -1
- package/dist/easel/index.js +1 -1
- package/dist/fields/fields.css +35 -304
- package/dist/fields/index.d.ts +87 -95
- package/dist/fields/index.js +1 -1
- package/dist/gold/gold.css +3 -3
- package/dist/gold/index.d.ts +6 -5
- package/dist/gold/index.js +1 -1
- package/dist/{host-BQ_b9Qzk.d.ts → host-CiuzZJXj.d.ts} +11 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/menu/index.d.ts +49 -93
- package/dist/menu/index.js +1 -1
- package/dist/menu/menu.css +37 -246
- package/dist/node-ops/index.d.ts +1 -1
- package/dist/panel/index.d.ts +46 -72
- package/dist/panel/index.js +17 -18
- package/dist/panel/panel.css +143 -372
- package/dist/pick/index.d.ts +52 -33
- package/dist/pick/index.js +7 -7
- package/dist/pick/pick.css +19 -150
- package/dist/rail/index.d.ts +48 -90
- package/dist/rail/index.js +1 -1
- package/dist/rail/rail.css +21 -108
- package/dist/screen/components/AddBlockRow.d.ts +8 -2
- package/dist/screen/components/AddBlockRow.js +1 -1
- package/dist/screen/components/AddChildRow.d.ts +4 -3
- package/dist/screen/components/AddChildRow.js +1 -1
- package/dist/screen/components/AddSidePanel.js +1 -1
- package/dist/screen/components/MediaSidePanel.d.ts +2 -2
- package/dist/screen/components/MediaSidePanel.js +1 -1
- package/dist/screen/components/NodeContextMenu.d.ts +31 -9
- package/dist/screen/components/NodeContextMenu.js +1 -1
- package/dist/screen/components/PageEditGuardNotices.js +1 -1
- package/dist/screen/components/ScreenChrome.js +1 -1
- package/dist/screen/components/ScreenDocumentContext.d.ts +2 -2
- package/dist/screen/components/ScreenDocumentContext.js +1 -1
- package/dist/screen/components/ScreenMount.d.ts +8 -8
- package/dist/screen/components/ScreenMount.js +1 -1
- package/dist/screen/components/ScreenStoreProvider.d.ts +8 -8
- package/dist/screen/components/ScreenStoreProvider.js +1 -1
- package/dist/screen/components/SectionScreenShell.js +16 -16
- package/dist/screen/components/SidePanelHead.d.ts +4 -2
- package/dist/screen/components/SidePanelHead.js +1 -1
- package/dist/screen/components/UiIcon.d.ts +10 -26
- package/dist/screen/components/UiIcon.js +2 -1
- package/dist/screen/components/panel-widths.d.ts +15 -1
- package/dist/screen/components/panel-widths.js +1 -1
- package/dist/screen/components/usePartBridge.d.ts +8 -8
- package/dist/screen/components/usePartBridge.js +1 -1
- package/dist/screen/index.d.ts +9 -9
- package/dist/screen/index.js +1 -1
- package/dist/screen/lib/admin-bridge.d.ts +1 -1
- package/dist/screen/lib/admin-bridge.js +1 -1
- package/dist/screen/lib/chrome-theme.d.ts +20 -12
- package/dist/screen/lib/chrome-theme.js +1 -1
- package/dist/screen/lib/document-addressing.d.ts +2 -2
- package/dist/screen/lib/host-chrome.d.ts +1 -1
- package/dist/screen/lib/host.d.ts +2 -2
- package/dist/screen/lib/key-scope.d.ts +31 -2
- package/dist/screen/lib/key-scope.js +1 -1
- package/dist/screen/lib/links/link-filters.d.ts +1 -1
- package/dist/screen/lib/media-panel.d.ts +2 -2
- package/dist/screen/lib/media-picker.d.ts +2 -2
- package/dist/screen/lib/page-lock.d.ts +1 -1
- package/dist/screen/lib/puck/section-doc.d.ts +5 -1
- package/dist/screen/lib/puck/section-doc.js +1 -1
- package/dist/screen/lib/puck/style-clipboard.d.ts +8 -8
- package/dist/screen/lib/puck/use-section-ops.js +1 -1
- package/dist/screen/lib/screen-parts.d.ts +47 -10
- package/dist/screen/lib/screen-parts.js +1 -1
- package/dist/screen/lib/section-templates.d.ts +1 -1
- package/dist/screen/lib/session-context.d.ts +1 -1
- package/dist/screen/lib/session.d.ts +1 -1
- package/dist/screen/screen.css +54 -206
- package/dist/screen/words.d.ts +17 -1
- package/dist/screen/words.js +1 -1
- package/dist/shell/index.d.ts +134 -118
- package/dist/shell/index.js +1 -1
- package/dist/shell/shell.css +130 -88
- package/dist/strings/catalogue.d.ts +5 -5
- package/dist/strings/catalogue.js +1 -1
- package/dist/strings/index.d.ts +5 -5
- package/dist/strings/index.js +1 -1
- package/dist/style-clipboard/index.d.ts +1 -1
- package/dist/text-styles/index.d.ts +12 -3
- package/dist/text-styles/index.js +33 -38
- package/dist/text-styles/text-styles.css +39 -71
- package/dist/tree/index.d.ts +49 -44
- package/dist/tree/index.js +1 -1
- package/dist/tree/tree.css +31 -653
- package/dist/{types-DJDBtdB2.d.ts → types-BqGnUVX5.d.ts} +32 -32
- package/dist/types-BsyPh6EW.d.ts +99 -0
- package/dist/{types-DWS-s9z-.d.ts → types-CsgMwHHa.d.ts} +14 -11
- package/dist/{types-CqY85foL.d.ts → types-Dt1CFR1S.d.ts} +4 -2
- package/dist/{wordFit-D4S36PvB.d.ts → wordFit-7XpmhcaW.d.ts} +3 -5
- package/dist/words-Cl9xMUYY.d.ts +41 -0
- package/dist/{words-D_Lnw1Gr.d.ts → words-CvFnwGSr.d.ts} +1 -1
- package/package.json +5 -1
- package/dist/chunk-2UX75JDP.js +0 -1
- package/dist/chunk-3EDSDPIP.js +0 -1
- package/dist/chunk-3QVB4AG2.js +0 -3
- package/dist/chunk-3WSPDAK2.js +0 -1
- package/dist/chunk-53G47SWO.js +0 -1
- package/dist/chunk-5MZ3RNQQ.js +0 -13
- package/dist/chunk-5ZBBXZPV.js +0 -6
- package/dist/chunk-7FBDZTUD.js +0 -2
- package/dist/chunk-7V5WZ46F.js +0 -2
- package/dist/chunk-BXZ6WLHC.js +0 -22
- package/dist/chunk-BZ5ASXOL.js +0 -1
- package/dist/chunk-EOJNJCMJ.js +0 -16
- package/dist/chunk-EWVJSRRY.js +0 -6
- package/dist/chunk-FMGFZNPW.js +0 -1
- package/dist/chunk-H24N5TMZ.js +0 -11
- package/dist/chunk-HLEET6NV.js +0 -65
- package/dist/chunk-IE4GFYKO.js +0 -1
- package/dist/chunk-KTVH2ZRL.js +0 -15
- package/dist/chunk-N7VRF7PR.js +0 -5
- package/dist/chunk-OWBO4WKA.js +0 -0
- package/dist/chunk-P67FP7PG.js +0 -9
- package/dist/chunk-P6O363EE.js +0 -6
- package/dist/chunk-Q4N7C6CT.js +0 -10
- package/dist/chunk-QH6LCNOX.js +0 -8
- package/dist/chunk-RW4XBUUW.js +0 -1
- package/dist/chunk-TTJ54QGG.js +0 -18
- package/dist/chunk-VSHV6KJQ.js +0 -5
- package/dist/chunk-VSOP4GUM.js +0 -1
- package/dist/chunk-WZ7TGAAT.js +0 -3
- package/dist/chunk-YC4TB3CJ.js +0 -25
- package/dist/chunk-ZFDCDJNZ.js +0 -16
- package/dist/chunk-ZNS7727Y.js +0 -12
- package/dist/chunk-ZTTWFAAC.js +0 -1
- package/dist/types-Djdq6Xkd.d.ts +0 -138
- package/dist/words-DgHcY5qB.d.ts +0 -33
package/dist/pick/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
2
|
import { ReactNode } from 'react';
|
|
3
3
|
import { P as PickWords } from '../words-is_Vy6hn.js';
|
|
4
|
+
export { Hsv, hexToHsv, hsvToHex } from 'efficient-shell/ui';
|
|
4
5
|
|
|
5
6
|
/** One colour the site's theme names — offered first, by name. */
|
|
6
7
|
type ThemeColour = {
|
|
@@ -59,18 +60,31 @@ type ColourPickerProps = {
|
|
|
59
60
|
};
|
|
60
61
|
/**
|
|
61
62
|
* ONE COLOUR ROW (blueprint step 4.6): a swatch and its hex, and — pressing
|
|
62
|
-
* the swatch —
|
|
63
|
+
* the swatch — the shell's colour picker with the theme's colours, a
|
|
63
64
|
* saturation-and-brightness square, a hue strip and the hex again.
|
|
64
65
|
*
|
|
65
66
|
* ⚠️ NEVER THE SYSTEM COLOUR DIALOG. `<input type="color">` opens a different
|
|
66
67
|
* window on every browser and operating system, with none of the site's theme
|
|
67
68
|
* colours in it, and it is the one control in the panel a merchant cannot see
|
|
68
|
-
* the inside of before pressing it.
|
|
69
|
+
* the inside of before pressing it.
|
|
69
70
|
*
|
|
70
|
-
* THE
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
71
|
+
* THE SWATCH AND WHAT IT OPENS ARE THE SHELL'S (easel#199 step 4, harness
|
|
72
|
+
* UI-24): the shell's `Popover` holding its `ColorPickerPanel`, the trigger
|
|
73
|
+
* wearing `colorSwatchClasses` and painted with `colorFill` — exactly the
|
|
74
|
+
* shell `ColorPicker`'s own composition. Composed here rather than taken as
|
|
75
|
+
* `ColorPicker` for two things it cannot carry: the swatch's NAME is the row's
|
|
76
|
+
* (`words.swatch`, with the caption word — "Auto", "Accent" — where the row
|
|
77
|
+
* prints one, in the host's language), and the trigger keeps the
|
|
78
|
+
* `es-pick-swatch` / `is-inherited` / `is-unset` hooks hosts read.
|
|
79
|
+
*
|
|
80
|
+
* It FLOATS now, on the shell's popup layer. It opened in the panel's own flow
|
|
81
|
+
* because a floating window was clipped by the scrolling panel and sat outside
|
|
82
|
+
* the `--es-*` root; the shell's Popover is portalled to `<body>`, follows its
|
|
83
|
+
* trigger as the panel scrolls, keeps inside the shell window that owns it
|
|
84
|
+
* (UI-11), and draws on the shell's tokens, not `--es-*`. Placement, Escape
|
|
85
|
+
* (focus back on the swatch), Tab and a press outside are the Popover's — and
|
|
86
|
+
* since nothing in the panel moves when it closes, the press outside may close
|
|
87
|
+
* it on its pointerdown.
|
|
74
88
|
*
|
|
75
89
|
* The hex box is always a box you can type into — pasting a brand colour
|
|
76
90
|
* costs no clicks — live on the keystroke that makes it a colour, and put back
|
|
@@ -95,9 +109,9 @@ type ColourWindowProps = {
|
|
|
95
109
|
value: string;
|
|
96
110
|
/** Live, as the colour moves: one `#rrggbb` from every way in. */
|
|
97
111
|
onChange: (next: string) => void;
|
|
98
|
-
/** The colour's name:
|
|
112
|
+
/** The colour's name: it names the panel's hex box ("<label> hex code"). */
|
|
99
113
|
label: string;
|
|
100
|
-
/** The theme's colours, offered first. */
|
|
114
|
+
/** The theme's colours, offered first — the shell panel's `presets`, each named by the theme. */
|
|
101
115
|
theme?: readonly ThemeColour[];
|
|
102
116
|
/** Escape in the window. The opener closes it and takes the focus back. */
|
|
103
117
|
onClose?: () => void;
|
|
@@ -106,11 +120,16 @@ type ColourWindowProps = {
|
|
|
106
120
|
/** The colour in force while `value` is `''` (see `ColourPicker`): the window starts from it, its hex a placeholder. */
|
|
107
121
|
inherited?: string;
|
|
108
122
|
readOnly?: boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Accepted and unused since the window is the shell's: its words (the
|
|
125
|
+
* square, the strip, the hex box, the presets) are the shell's
|
|
126
|
+
* `useShellStrings().color`, translated through the host's
|
|
127
|
+
* `ShellStringsProvider`.
|
|
128
|
+
*/
|
|
109
129
|
words?: PickWords['colour'];
|
|
110
130
|
/**
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
* swatch beside the hex.
|
|
131
|
+
* Accepted and moot: the shell's panel always starts its hex row with a
|
|
132
|
+
* swatch of the colour (what the text box's window asked for, E5b).
|
|
114
133
|
*/
|
|
115
134
|
swatch?: boolean;
|
|
116
135
|
/**
|
|
@@ -123,13 +142,20 @@ type ColourWindowProps = {
|
|
|
123
142
|
dragWrites?: 'live' | 'end';
|
|
124
143
|
};
|
|
125
144
|
/**
|
|
126
|
-
* THE COLOUR WINDOW on its own: the
|
|
127
|
-
*
|
|
128
|
-
*
|
|
129
|
-
*
|
|
130
|
-
*
|
|
145
|
+
* THE COLOUR WINDOW on its own: the shell's `ColorPickerPanel` (easel#199
|
|
146
|
+
* step 4, harness UI-24) — the theme's colours as its presets, named by the
|
|
147
|
+
* theme, the saturation and brightness square, the hue strip and the hex.
|
|
148
|
+
* `ColourPicker` opens it in the shell's Popover; a row that draws its own
|
|
149
|
+
* swatches (the text-styles list's Any color, plan step E6) opens the same one
|
|
150
|
+
* in its own flow, so there is one window, not two.
|
|
151
|
+
*
|
|
152
|
+
* What it maps: `theme` → `presets` (`label` = the theme colour's name),
|
|
153
|
+
* `inherited` → `fallback` (the panel starts from it, its hex a placeholder,
|
|
154
|
+
* and nothing is written until something moves), `readOnly` → `disabled`.
|
|
155
|
+
* A pick EQUAL to the inherited colour still writes — it pins it — because the
|
|
156
|
+
* panel compares with `value`, not with what is shown.
|
|
131
157
|
*/
|
|
132
|
-
declare function ColourWindow({ value, onChange, label, theme, onClose, id, inherited, readOnly, words, swatch, dragWrites, }: ColourWindowProps): react.JSX.Element;
|
|
158
|
+
declare function ColourWindow({ value, onChange, label, theme, onClose, id, inherited, readOnly, words: _words, swatch: _swatch, dragWrites, }: ColourWindowProps): react.JSX.Element;
|
|
133
159
|
|
|
134
160
|
type ImageBoxProps = {
|
|
135
161
|
/** The file's URL, or `''` while the setting has none. */
|
|
@@ -182,26 +208,19 @@ declare function ImageBox({ value, onChange, label, openLibrary, kind, placehold
|
|
|
182
208
|
* it back gives hue 0 — red — and a merchant who drags the square down to grey
|
|
183
209
|
* would find the strip jumped to red. The picker therefore keeps its own HSV
|
|
184
210
|
* while it is open and only reads one back from the stored hex when the value
|
|
185
|
-
* changes from OUTSIDE (
|
|
211
|
+
* changes from OUTSIDE (the shell's `ColorPickerPanel`).
|
|
212
|
+
*
|
|
213
|
+
* What is still easel's own: the readout (`hexReadout`), the box's length, the
|
|
214
|
+
* point maths the shell keeps private (`svFromPoint`), `hueFromPoint` (which
|
|
215
|
+
* reaches 360 at the strip's end, where the shell's stops at 359) and
|
|
216
|
+
* `mediaName` — exported names hosts already import.
|
|
186
217
|
*/
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
s: number;
|
|
190
|
-
v: number;
|
|
191
|
-
};
|
|
218
|
+
|
|
219
|
+
declare const typedHex: (text: string) => string | null;
|
|
192
220
|
/** The most a hex box takes: `#` and six digits. */
|
|
193
221
|
declare const HEX_MAX_LENGTH = 7;
|
|
194
|
-
/**
|
|
195
|
-
* What a typed string is as a colour — `#rrggbb` — or `null` while it is not
|
|
196
|
-
* one yet. Accepts three or six digits, with or without `#`, any case.
|
|
197
|
-
*/
|
|
198
|
-
declare function typedHex(text: string): string | null;
|
|
199
222
|
/** A stored hex as a person reads it: upper case. */
|
|
200
223
|
declare const hexReadout: (hex: string) => string;
|
|
201
|
-
/** `#rrggbb` → HSV (h 0–360, s and v 0–1). A string that is not a colour reads as black. */
|
|
202
|
-
declare function hexToHsv(hex: string): Hsv;
|
|
203
|
-
/** HSV → `#rrggbb`. Out-of-range input is clamped, never thrown. */
|
|
204
|
-
declare function hsvToHex({ h, s, v }: Hsv): string;
|
|
205
224
|
/**
|
|
206
225
|
* A point in the saturation/brightness square → s and v. Saturation runs left
|
|
207
226
|
* to right, brightness bottom to top; a point outside the square is held to
|
|
@@ -226,4 +245,4 @@ declare function hueFromPoint(x: number, box: {
|
|
|
226
245
|
* name, so it reads as none rather than as its own bytes. */
|
|
227
246
|
declare function mediaName(url: string): string;
|
|
228
247
|
|
|
229
|
-
export { ColourPicker, type ColourPickerProps, ColourWindow, type ColourWindowProps, HEX_MAX_LENGTH,
|
|
248
|
+
export { ColourPicker, type ColourPickerProps, ColourWindow, type ColourWindowProps, HEX_MAX_LENGTH, ImageBox, type ImageBoxProps, PickWords, type ThemeColour, hexReadout, hueFromPoint, mediaName, svFromPoint, typedHex };
|
package/dist/pick/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import{mediaName as e}from"../chunk-
|
|
2
|
-
return
|
|
3
|
-
/* @__PURE__ */
|
|
4
|
-
/* @__PURE__ */
|
|
5
|
-
return
|
|
6
|
-
/* @__PURE__ */
|
|
7
|
-
/* @__PURE__ */
|
|
1
|
+
import{mediaName as e}from"../chunk-FPAVNX3Y.js";export{ColourPicker,ColourWindow,HEX_MAX_LENGTH,hexReadout,hexToHsv,hsvToHex,hueFromPoint,mediaName,svFromPoint,typedHex}from"../chunk-FPAVNX3Y.js";import{DEFAULT_PICK_WORDS as a}from"../chunk-ZAOM6PFH.js";import{withTip as i}from"../chunk-P2VEMZH5.js";import{useState as l}from"react";import{jsx as s,jsxs as c}from"react/jsx-runtime";function n({value:n,onChange:o,label:r,openLibrary:t,kind:m="image",placeholder:d,readOnly:p,words:u=a.image}){const[h,k]=l(!1),[b,g]=l(!1),N=Boolean(t)&&!p,f=async()=>{if(t&&!h&&!p){k(!0),g(!1);try{const e=await t();e&&o(e)}catch{g(!0)}finally{k(!1)}}},v=h?/* @__PURE__ */s("p",{className:"es-pick-image-status",role:"status",children:u.choosing}):b?/* @__PURE__ */s("p",{className:"es-pick-image-status is-error",role:"alert",children:u.failed}):null;if(!n)/* @__PURE__ */
|
|
2
|
+
return c("div",{className:"es-pick-image",children:[
|
|
3
|
+
/* @__PURE__ */c("button",{type:"button",className:"es-pick-image-slot",onClick:f,disabled:!N||h,"aria-label":u.empty({label:r,kind:m,placeholder:d}),children:[
|
|
4
|
+
/* @__PURE__ */s("span",{className:"es-pick-image-slot-name",children:d??("video"===m?u.chooseVideo:u.chooseImage)}),N?/* @__PURE__ */s("span",{className:"es-pick-image-slot-hint",children:u.hint}):null]}),v]});const y=e(n),x=y?u.named({label:r,name:y}):r;/* @__PURE__ */
|
|
5
|
+
return c("div",{className:"es-pick-image",children:[
|
|
6
|
+
/* @__PURE__ */c("figure",{className:"es-pick-image-figure",children:[
|
|
7
|
+
/* @__PURE__ */s("div",{className:"es-pick-image-frame",children:"video"===m?/* @__PURE__ */s("video",{src:n,muted:!0,playsInline:!0,preload:"metadata","aria-label":x}):/* @__PURE__ */s("img",{src:n,alt:x})}),y?i(y,/* @__PURE__ */s("figcaption",{className:"es-pick-image-name",children:y})):null]}),N||!p?/* @__PURE__ */c("div",{className:"es-pick-image-actions",children:[N?/* @__PURE__ */s("button",{type:"button",className:"es-pick-image-btn",onClick:f,disabled:h,"aria-label":u.replaceNamed({label:r}),children:u.replace}):null,p?null:/* @__PURE__ */s("button",{type:"button",className:"es-pick-image-btn is-bare",onClick:()=>o(""),disabled:h,"aria-label":u.removeNamed({label:r}),children:u.remove})]}):null,v]})}export{n as ImageBox};
|
package/dist/pick/pick.css
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
/* efficient-easel/pick — the colour row and
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/* efficient-easel/pick — the colour row and the image box (blueprint step
|
|
2
|
+
4.6). Drawn on the panel's own tokens, so both editors' panels get the same
|
|
3
|
+
picker without a line of their own CSS. The swatch and the window it opens
|
|
4
|
+
are efficient-shell's (`Popover`, `ColorPickerPanel`, `colorSwatchClasses`;
|
|
5
|
+
easel#199 step 4, harness UI-24) and draw from the shell's CSS: nothing
|
|
6
|
+
here styles them but where the swatch sits in the row. */
|
|
4
7
|
|
|
5
8
|
/* ── The colour row ─────────────────────────────────────────────────────── */
|
|
6
9
|
.es-pick-colour {
|
|
@@ -8,9 +11,6 @@
|
|
|
8
11
|
ONE width. A row is right-aligned as a unit, so a word narrower than a hex
|
|
9
12
|
pushes its swatch out of line down a column of colour rows. */
|
|
10
13
|
--es-pick-readout-w: 68px;
|
|
11
|
-
display: flex;
|
|
12
|
-
flex-direction: column;
|
|
13
|
-
gap: 12px;
|
|
14
14
|
}
|
|
15
15
|
.es-pick-colour-row {
|
|
16
16
|
/* The tag is placed against the row. */
|
|
@@ -19,35 +19,6 @@
|
|
|
19
19
|
align-items: center;
|
|
20
20
|
gap: 8px;
|
|
21
21
|
}
|
|
22
|
-
/* 26 × 26, no border, 7px corner — the look the owner settled for every
|
|
23
|
-
colour row (2026-09-04). A hairline ring inside, so a white swatch on a
|
|
24
|
-
white panel still has an edge. */
|
|
25
|
-
.es-pick-swatch {
|
|
26
|
-
flex: none;
|
|
27
|
-
width: 26px;
|
|
28
|
-
height: 26px;
|
|
29
|
-
padding: 0;
|
|
30
|
-
border: 0;
|
|
31
|
-
border-radius: 7px;
|
|
32
|
-
box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.1);
|
|
33
|
-
cursor: pointer;
|
|
34
|
-
}
|
|
35
|
-
.es-pick-swatch.is-unset {
|
|
36
|
-
background:
|
|
37
|
-
linear-gradient(135deg, transparent 46%, var(--es-danger) 46%, var(--es-danger) 54%, transparent 54%),
|
|
38
|
-
var(--es-panel);
|
|
39
|
-
box-shadow: inset 0 0 0 1px var(--es-input-border);
|
|
40
|
-
}
|
|
41
|
-
.es-pick-swatch:focus-visible,
|
|
42
|
-
.es-pick-theme-swatch:focus-visible,
|
|
43
|
-
.es-pick-sv:focus-visible,
|
|
44
|
-
.es-pick-hue:focus-visible {
|
|
45
|
-
outline: 2px solid var(--es-accent);
|
|
46
|
-
outline-offset: 2px;
|
|
47
|
-
}
|
|
48
|
-
.es-pick-swatch:disabled {
|
|
49
|
-
cursor: default;
|
|
50
|
-
}
|
|
51
22
|
/* THE HEX'S SLOT (Lewis 2026-10-07, option E): 68px, and down to 36px when
|
|
52
23
|
the line is short of room — after the label has given way to its 56px. The
|
|
53
24
|
hex or the word that stands in for it fills it. */
|
|
@@ -65,7 +36,7 @@
|
|
|
65
36
|
min-width: 0;
|
|
66
37
|
padding: 4px 8px;
|
|
67
38
|
border: 1px solid transparent;
|
|
68
|
-
border-radius:
|
|
39
|
+
border-radius: var(--radius-md);
|
|
69
40
|
background: transparent;
|
|
70
41
|
color: var(--es-text);
|
|
71
42
|
font: 500 11px/1.3 ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
@@ -141,9 +112,9 @@
|
|
|
141
112
|
z-index: 3;
|
|
142
113
|
transform: translateY(calc(-100% - 6px));
|
|
143
114
|
padding: 4px 8px;
|
|
144
|
-
border-radius:
|
|
145
|
-
background:
|
|
146
|
-
color:
|
|
115
|
+
border-radius: var(--radius-md);
|
|
116
|
+
background: var(--es-toast-bg, var(--status-draft-solid));
|
|
117
|
+
color: var(--es-on-accent, var(--status-on-solid));
|
|
147
118
|
font-size: 12px;
|
|
148
119
|
font-weight: 500;
|
|
149
120
|
line-height: 1.3;
|
|
@@ -151,10 +122,6 @@
|
|
|
151
122
|
pointer-events: none;
|
|
152
123
|
box-shadow: 0 4px 12px rgb(0 0 0 / 0.2);
|
|
153
124
|
}
|
|
154
|
-
/* `.es-pick-swatch.is-inherited` (no rule of its own): the swatch is painted
|
|
155
|
-
with the colour the setting follows, like any colour. The class is there
|
|
156
|
-
for a host that wants to mark it. */
|
|
157
|
-
|
|
158
125
|
/* ── A line that holds the picker ───────────────────────────────────────── */
|
|
159
126
|
/* BOTH EDITORS HOLD THE PICKER IN A LINE: `SettingsField`'s `action` slot
|
|
160
127
|
(`.es-field-head`, this package's own class), or a colour SUB-row inside one
|
|
@@ -162,11 +129,10 @@
|
|
|
162
129
|
Text), which is not a SettingsField and takes `.es-pick-line`: the host's
|
|
163
130
|
label first, then the picker.
|
|
164
131
|
|
|
165
|
-
The picker's own box steps aside (`display: contents`), so
|
|
166
|
-
become items of that line
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
action slot has.
|
|
132
|
+
The picker's own box steps aside (`display: contents`), so the swatch and
|
|
133
|
+
the hex become items of that line, at its end (`margin-left: auto`). The
|
|
134
|
+
window they open floats (the shell's Popover), so nothing here makes room
|
|
135
|
+
for it.
|
|
170
136
|
|
|
171
137
|
Moved here from the storefront's stylesheet (2026-10-06), so the email does
|
|
172
138
|
not copy it: one rule for both editors. The shop's `.sf-field--row` can move
|
|
@@ -183,10 +149,6 @@
|
|
|
183
149
|
font-size: 12px;
|
|
184
150
|
color: var(--es-text-secondary);
|
|
185
151
|
}
|
|
186
|
-
.es-field-head:has(> .es-pick-colour),
|
|
187
|
-
.es-pick-line:has(> .es-pick-colour) {
|
|
188
|
-
flex-wrap: wrap;
|
|
189
|
-
}
|
|
190
152
|
.es-field-head > .es-pick-colour,
|
|
191
153
|
.es-pick-line > .es-pick-colour {
|
|
192
154
|
display: contents;
|
|
@@ -207,8 +169,8 @@
|
|
|
207
169
|
.es-pick-line > .es-pick-colour > .es-pick-colour-row {
|
|
208
170
|
display: contents;
|
|
209
171
|
}
|
|
210
|
-
.es-field-head > .es-pick-colour > .es-pick-colour-row > .es-pick-swatch,
|
|
211
|
-
.es-pick-line > .es-pick-colour > .es-pick-colour-row > .es-pick-swatch {
|
|
172
|
+
.es-field-head > .es-pick-colour > .es-pick-colour-row > .es-pick-swatch-wrap,
|
|
173
|
+
.es-pick-line > .es-pick-colour > .es-pick-colour-row > .es-pick-swatch-wrap {
|
|
212
174
|
margin-left: auto;
|
|
213
175
|
}
|
|
214
176
|
.es-field-head > .es-pick-colour > .es-pick-colour-row > .es-pick-hexwrap,
|
|
@@ -233,99 +195,6 @@
|
|
|
233
195
|
-webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
|
|
234
196
|
mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
|
|
235
197
|
}
|
|
236
|
-
.es-field-head > .es-pick-colour > .es-pick-window,
|
|
237
|
-
.es-pick-line > .es-pick-colour > .es-pick-window {
|
|
238
|
-
flex: 1 0 100%;
|
|
239
|
-
min-width: 0;
|
|
240
|
-
/* ⚠️ What a host puts AFTER the picker on the same line (the panel's
|
|
241
|
-
Default / Reset part, `SettingsDefaultReset`) comes after the window in
|
|
242
|
-
DOM order once the picker's box is `contents`, and the window's 100%
|
|
243
|
-
basis would push it onto a line of its own UNDER the open window. Ordered
|
|
244
|
-
last, the window keeps that control beside the swatch. */
|
|
245
|
-
order: 1;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/* ── The window under the row ───────────────────────────────────────────── */
|
|
249
|
-
.es-pick-window {
|
|
250
|
-
display: flex;
|
|
251
|
-
flex-direction: column;
|
|
252
|
-
gap: 12px;
|
|
253
|
-
padding: 12px;
|
|
254
|
-
border: 1px solid var(--es-divider);
|
|
255
|
-
border-radius: 10px;
|
|
256
|
-
background: var(--es-panel);
|
|
257
|
-
}
|
|
258
|
-
/* ONE theme row, for the colour picker and the text box's colour window
|
|
259
|
-
(Lewis 2026-10-07). The swatches are one group: the scale's step for the
|
|
260
|
-
cells of one group. */
|
|
261
|
-
.es-pick-theme {
|
|
262
|
-
display: flex;
|
|
263
|
-
flex-wrap: wrap;
|
|
264
|
-
gap: 4px;
|
|
265
|
-
}
|
|
266
|
-
.es-pick-theme-swatch {
|
|
267
|
-
width: 22px;
|
|
268
|
-
height: 22px;
|
|
269
|
-
padding: 0;
|
|
270
|
-
border: 0;
|
|
271
|
-
border-radius: 6px;
|
|
272
|
-
box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.1);
|
|
273
|
-
cursor: pointer;
|
|
274
|
-
}
|
|
275
|
-
/* The chosen one: the ring INSIDE the swatch (Lewis 2026-10-07, option A) —
|
|
276
|
-
2px of accent, then 2px of panel before the colour. Outside, it touched the
|
|
277
|
-
next swatch. Focus is the outline, outside it, so both show at once. */
|
|
278
|
-
.es-pick-theme-swatch[aria-pressed='true'] {
|
|
279
|
-
box-shadow: inset 0 0 0 2px var(--es-accent), inset 0 0 0 4px var(--es-panel);
|
|
280
|
-
}
|
|
281
|
-
/* The square: the hue at full strength, washed to white left-to-right and to
|
|
282
|
-
black top-to-bottom — which is what saturation and brightness ARE. */
|
|
283
|
-
.es-pick-sv {
|
|
284
|
-
position: relative;
|
|
285
|
-
height: 128px;
|
|
286
|
-
border-radius: 6px;
|
|
287
|
-
background-image:
|
|
288
|
-
linear-gradient(to top, #000, transparent),
|
|
289
|
-
linear-gradient(to right, #fff, transparent);
|
|
290
|
-
cursor: crosshair;
|
|
291
|
-
touch-action: none;
|
|
292
|
-
}
|
|
293
|
-
.es-pick-sv-thumb,
|
|
294
|
-
.es-pick-hue-thumb {
|
|
295
|
-
position: absolute;
|
|
296
|
-
width: 12px;
|
|
297
|
-
height: 12px;
|
|
298
|
-
border-radius: 50%;
|
|
299
|
-
border: 2px solid #fff;
|
|
300
|
-
box-shadow: 0 0 0 1px rgb(0 0 0 / 0.35);
|
|
301
|
-
transform: translate(-50%, -50%);
|
|
302
|
-
pointer-events: none;
|
|
303
|
-
}
|
|
304
|
-
.es-pick-hue {
|
|
305
|
-
position: relative;
|
|
306
|
-
height: 12px;
|
|
307
|
-
border-radius: 6px;
|
|
308
|
-
background: linear-gradient(to right, #f00, #ff0, #0f0, #0ff, #00f, #f0f, #f00);
|
|
309
|
-
cursor: pointer;
|
|
310
|
-
touch-action: none;
|
|
311
|
-
}
|
|
312
|
-
.es-pick-hue-thumb {
|
|
313
|
-
top: 50%;
|
|
314
|
-
}
|
|
315
|
-
/* The hex row with its swatch (ColourWindow `swatch`, the text box's colour
|
|
316
|
-
window): the colour, then the hex. */
|
|
317
|
-
.es-pick-hex-row {
|
|
318
|
-
display: flex;
|
|
319
|
-
align-items: center;
|
|
320
|
-
gap: 8px;
|
|
321
|
-
}
|
|
322
|
-
.es-pick-hex-swatch {
|
|
323
|
-
width: 26px;
|
|
324
|
-
height: 26px;
|
|
325
|
-
flex: none;
|
|
326
|
-
border-radius: 6px;
|
|
327
|
-
box-shadow: inset 0 0 0 1px rgb(0 0 0 / 0.1);
|
|
328
|
-
}
|
|
329
198
|
/* ── The image box ──────────────────────────────────────────────────────── */
|
|
330
199
|
.es-pick-image {
|
|
331
200
|
display: flex;
|
|
@@ -341,7 +210,7 @@
|
|
|
341
210
|
min-height: 96px;
|
|
342
211
|
padding: 12px;
|
|
343
212
|
border: 1.5px dashed var(--es-input-border);
|
|
344
|
-
border-radius:
|
|
213
|
+
border-radius: var(--radius-lg);
|
|
345
214
|
background: var(--es-app-bg);
|
|
346
215
|
color: var(--es-text);
|
|
347
216
|
font: inherit;
|
|
@@ -373,7 +242,7 @@
|
|
|
373
242
|
.es-pick-image-frame {
|
|
374
243
|
height: 96px;
|
|
375
244
|
overflow: hidden;
|
|
376
|
-
border-radius:
|
|
245
|
+
border-radius: var(--radius-lg);
|
|
377
246
|
background: var(--es-app-bg);
|
|
378
247
|
}
|
|
379
248
|
.es-pick-image-frame img,
|
|
@@ -397,7 +266,7 @@
|
|
|
397
266
|
.es-pick-image-btn {
|
|
398
267
|
padding: 4px 12px;
|
|
399
268
|
border: 1px solid var(--es-input-border);
|
|
400
|
-
border-radius:
|
|
269
|
+
border-radius: var(--radius-md);
|
|
401
270
|
background: var(--es-panel);
|
|
402
271
|
color: var(--es-text);
|
|
403
272
|
font: 500 12px/1.3 var(--es-font);
|
package/dist/rail/index.d.ts
CHANGED
|
@@ -1,68 +1,57 @@
|
|
|
1
1
|
import * as react from 'react';
|
|
2
|
-
import { c as EaselRailProps, E as EaselRailButtonProps } from '../types-
|
|
3
|
-
export { a as EaselRailItem, b as EaselRailOrientation } from '../types-
|
|
2
|
+
import { c as EaselRailProps, E as EaselRailButtonProps } from '../types-CsgMwHHa.js';
|
|
3
|
+
export { a as EaselRailItem, b as EaselRailOrientation } from '../types-CsgMwHHa.js';
|
|
4
4
|
export { AddIcon, LayersIcon, MediaIcon, PageIcon as PagesIcon, IconProps as RailIconProps, SitemapIcon, StylesIcon } from '../icons/index.js';
|
|
5
|
-
export { W as WordFit } from '../wordFit-
|
|
5
|
+
export { W as WordFit } from '../wordFit-7XpmhcaW.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
|
-
* The
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* **pure presentational switcher**: give it `items[]`, it draws them; which one
|
|
13
|
-
* is `active` and what each does is the host's business.
|
|
8
|
+
* The editors' icon rail — the panel switcher (Pages / Layers / Styles / Media
|
|
9
|
+
* / Sitemap) and the quick-add "+" — on the shell's `IconRail` (harness UI-24;
|
|
10
|
+
* since 1.0.0, efficient-easel#199). Give it `items[]`; which one is `active`
|
|
11
|
+
* and what each does is the host's.
|
|
14
12
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
13
|
+
* The toolbar — its role, its one tab stop and arrow keys along the rail, the
|
|
14
|
+
* toggle-or-action rule, a `Tooltip` per button — is the shell's, and so,
|
|
15
|
+
* since efficient-shell 4.165.0, are a ROW rail's words: `labels="beside"`
|
|
16
|
+
* with `labelsFit`, the settings tabs' three states (owner 2026-09-18) —
|
|
17
|
+
* every word while they all fit the rail's column, then only the open panel's
|
|
18
|
+
* word, then none — measured by the shell against the rail's parent. This
|
|
19
|
+
* rail used to measure them on a canvas and hand a stylesheet rule the widths
|
|
20
|
+
* (`wordFit`); that is gone, and `wordFit` is accepted and ignored.
|
|
21
21
|
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
* honestly, where a tablist would force every button to pretend to be a tab.
|
|
25
|
-
* That is true in both directions, so `orientation` moves `aria-orientation`
|
|
26
|
-
* and leaves the role alone: what the rail IS did not change, only which way it
|
|
27
|
-
* runs — and a toolbar's arrow keys follow its orientation, so a row that kept
|
|
28
|
-
* saying `vertical` would describe the wrong keys.
|
|
22
|
+
* What stays here: the item list (`EaselRailItem`), which the hosts build,
|
|
23
|
+
* and the column's card and the row's lack of one (`rail.css`).
|
|
29
24
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* attributes, same order. `'row'` adds ONE modifier class beside `es-rail` —
|
|
33
|
-
* never instead of it, since every button rule and token in rail.css hangs off
|
|
34
|
-
* the base class — and rail.css does the rest.
|
|
25
|
+
* Its one word is the toolbar's name, `ariaLabel` (./words): a host in another
|
|
26
|
+
* language passes it; `TopBarRail` does it from the provider.
|
|
35
27
|
*
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
* `TopBarRail`'s, and the choosing is CSS's.
|
|
41
|
-
*
|
|
42
|
-
* ITS ONE WORD is the toolbar's name, `ariaLabel` (./words). The rail reads no
|
|
43
|
-
* strings provider — that would be a hook — so a host in another language
|
|
44
|
-
* passes `ariaLabel`; `TopBarRail` does it from the provider.
|
|
28
|
+
* A CLIENT component since 1.0.0: the shell's rail keeps its tab stop and
|
|
29
|
+
* measures its words with layout effects. It still renders on a server
|
|
30
|
+
* (`renderToStaticMarkup`, icon-only until measured) and touches no browser
|
|
31
|
+
* global at module-eval or render.
|
|
45
32
|
*/
|
|
46
|
-
declare function EaselRail({ items, ariaLabel, className, orientation,
|
|
33
|
+
declare function EaselRail({ items, ariaLabel, className, orientation, onLabelsShown }: EaselRailProps): react.JSX.Element;
|
|
47
34
|
|
|
48
35
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
36
|
+
* One rail button: the shell's `IconRailButton` (harness UI-24; since 1.0.0,
|
|
37
|
+
* efficient-easel#199). Its look, its `Tooltip` (never `title=`), its
|
|
38
|
+
* toggle-or-action rule — `aria-pressed` only when `active` is a boolean — and,
|
|
39
|
+
* in a worded row rail, its word beside the glyph (efficient-shell 4.165.0)
|
|
40
|
+
* are the shell's. `worded` is accepted and ignored: the rail decides. It
|
|
41
|
+
* keeps the `es-rail-btn` / `is-active` names as hooks.
|
|
55
42
|
*/
|
|
56
|
-
declare function EaselRailButton({ label,
|
|
43
|
+
declare function EaselRailButton({ label, icon, active, disabled, onSelect, className, tooltipSide }: EaselRailButtonProps): react.JSX.Element;
|
|
57
44
|
|
|
58
45
|
/**
|
|
59
46
|
* Rail design tokens — the ONE source both apps' rails converge on.
|
|
60
47
|
*
|
|
61
|
-
*
|
|
62
|
-
* (
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
*
|
|
48
|
+
* The geometry below was taken from the storefront editor's rail (`.sf-rail`).
|
|
49
|
+
* Since 1.0.0 (efficient-easel#199) the BUTTONS are efficient-shell's
|
|
50
|
+
* `IconRailButton` — 36px, its own look, hover and active — so the tokens
|
|
51
|
+
* describe the rail's container; the button size is the shell's, recorded.
|
|
52
|
+
* A row rail's words are the shell's too since efficient-shell 4.165.0, so
|
|
53
|
+
* the word tokens are gone. The card's colour and radius are the shell's
|
|
54
|
+
* tokens (harness UI-24).
|
|
66
55
|
*
|
|
67
56
|
* Exposed BOTH ways, per the same value:
|
|
68
57
|
* - `railTokens` — this JS object, for anything that needs the numbers/colours
|
|
@@ -71,7 +60,8 @@ declare function EaselRailButton({ label, worded, icon, active, disabled, onSele
|
|
|
71
60
|
* custom properties on `.es-rail` (names listed in `railCssVars`).
|
|
72
61
|
*
|
|
73
62
|
* Numeric fields are pixel magnitudes (unitless) so they compose in code; the
|
|
74
|
-
* CSS applies the `px`.
|
|
63
|
+
* CSS applies the `px`. A string is a CSS value, and resolves only where the
|
|
64
|
+
* host has loaded the shell's CSS.
|
|
75
65
|
*/
|
|
76
66
|
declare const railTokens: {
|
|
77
67
|
/** Rail column width. `--sf-rail-w: 46px`. */
|
|
@@ -80,46 +70,24 @@ declare const railTokens: {
|
|
|
80
70
|
readonly railPaddingY: 8;
|
|
81
71
|
/** Gap between buttons. */
|
|
82
72
|
readonly railGap: 4;
|
|
83
|
-
/** Rail card corner radius
|
|
84
|
-
readonly railRadius:
|
|
85
|
-
/**
|
|
86
|
-
readonly buttonSize:
|
|
87
|
-
/** Button corner radius. */
|
|
88
|
-
readonly buttonRadius: 9;
|
|
73
|
+
/** Rail card corner radius: the shell's `--radius-xl` (12px). */
|
|
74
|
+
readonly railRadius: "var(--radius-xl)";
|
|
75
|
+
/** The shell's `IconRailButton` (square, `h-9 w-9`). */
|
|
76
|
+
readonly buttonSize: 36;
|
|
89
77
|
/** Icon glyph size. */
|
|
90
78
|
readonly iconSize: 18;
|
|
91
|
-
/** A worded row button (`TopBarRail`): its side padding, the gap between the
|
|
92
|
-
* icon and its word, and the word's type. */
|
|
93
|
-
readonly wordPaddingX: 8;
|
|
94
|
-
readonly wordGap: 8;
|
|
95
|
-
readonly wordFontSize: 12;
|
|
96
|
-
readonly wordFontWeight: 500;
|
|
97
|
-
/** Hover/active colour transition. */
|
|
98
|
-
readonly transition: "background 0.12s, color 0.12s";
|
|
99
|
-
/** Disabled-button opacity. */
|
|
100
|
-
readonly disabledOpacity: 0.35;
|
|
101
79
|
readonly color: {
|
|
102
|
-
/** Rail card background.
|
|
103
|
-
readonly background: "
|
|
104
|
-
/** Rail card shadow.
|
|
80
|
+
/** Rail card background: the shell's surface. */
|
|
81
|
+
readonly background: "var(--surface)";
|
|
82
|
+
/** Rail card shadow, black at an alpha (no shell elevation token yet). */
|
|
105
83
|
readonly shadow: "0 1px 2px rgba(0, 0, 0, 0.05), 0 10px 30px rgba(0, 0, 0, 0.06)";
|
|
106
|
-
/** Idle icon colour. `--sf-muted` (gray-500). */
|
|
107
|
-
readonly idle: "#6b7280";
|
|
108
|
-
/** Hover background. `--sf-hover` (gray-100). */
|
|
109
|
-
readonly hoverBg: "#f3f4f6";
|
|
110
|
-
/** Hover icon colour. `--sf-text` (gray-900). */
|
|
111
|
-
readonly hoverFg: "#111827";
|
|
112
|
-
/** Active icon colour. `--sf-accent` (blue-600). */
|
|
113
|
-
readonly accent: "#2563eb";
|
|
114
|
-
/** Active background. `--sf-accent-tint` (blue-50). */
|
|
115
|
-
readonly accentTint: "#eff6ff";
|
|
116
84
|
};
|
|
117
85
|
};
|
|
118
86
|
type RailTokens = typeof railTokens;
|
|
119
87
|
/**
|
|
120
88
|
* The CSS custom-property name behind each token. `rail.css` sets these on
|
|
121
89
|
* `.es-rail`; override any of them on (or above) the rail element to re-theme it
|
|
122
|
-
* — e.g. `style={{ ['--es-rail-
|
|
90
|
+
* — e.g. `style={{ ['--es-rail-bg']: 'transparent' }}` — without shipping new CSS.
|
|
123
91
|
*/
|
|
124
92
|
declare const railCssVars: {
|
|
125
93
|
readonly railWidth: "--es-rail-w";
|
|
@@ -127,19 +95,9 @@ declare const railCssVars: {
|
|
|
127
95
|
readonly railGap: "--es-rail-gap";
|
|
128
96
|
readonly railRadius: "--es-rail-radius";
|
|
129
97
|
readonly buttonSize: "--es-rail-btn-size";
|
|
130
|
-
readonly buttonRadius: "--es-rail-btn-radius";
|
|
131
98
|
readonly iconSize: "--es-rail-icon-size";
|
|
132
|
-
readonly wordPaddingX: "--es-rail-word-pad-x";
|
|
133
|
-
readonly wordGap: "--es-rail-word-gap";
|
|
134
|
-
readonly wordFontSize: "--es-rail-word-size";
|
|
135
|
-
readonly wordFontWeight: "--es-rail-word-weight";
|
|
136
99
|
readonly background: "--es-rail-bg";
|
|
137
100
|
readonly shadow: "--es-rail-shadow";
|
|
138
|
-
readonly idle: "--es-rail-fg";
|
|
139
|
-
readonly hoverBg: "--es-rail-hover-bg";
|
|
140
|
-
readonly hoverFg: "--es-rail-hover-fg";
|
|
141
|
-
readonly accent: "--es-rail-accent";
|
|
142
|
-
readonly accentTint: "--es-rail-accent-tint";
|
|
143
101
|
};
|
|
144
102
|
|
|
145
103
|
export { EaselRail, EaselRailButton, EaselRailButtonProps, EaselRailProps, type RailTokens, railCssVars, railTokens };
|
package/dist/rail/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
export{railCssVars,railTokens}from"../chunk-X6DQWK2C.js";export{EaselRail,EaselRailButton}from"../chunk-MJM6SFD3.js";import"../chunk-2OAZYSWJ.js";export{AddIcon,LayersIcon,MediaIcon,PageIcon as PagesIcon,SitemapIcon,StylesIcon}from"../chunk-L5KW4HG5.js";
|