@gemboss/ui 0.35.7 → 0.39.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/CHANGELOG.md +290 -0
- package/README.md +178 -6
- package/catalog/editor.html +33 -15
- package/catalog/index.html +2020 -122
- package/gemboss-ui.css +3 -3
- package/package.json +15 -2
- package/parts/components.css +2 -2
- package/parts/core.css +1 -1
- package/parts/shell.css +1 -1
- package/src/assistant-chat.css +1 -1
- package/src/auth-field.css +1 -0
- package/src/auth-field.tsx +74 -0
- package/src/auth-sso-plain.js +1 -0
- package/src/auth.css +1 -1
- package/src/auth.tsx +64 -1
- package/src/brand.tsx +9 -3
- package/src/chat-composer.css +1 -1
- package/src/chat.css +1 -1
- package/src/collections.css +1 -1
- package/src/editor/controls.tsx +105 -4
- package/src/editor/frame.tsx +8 -4
- package/src/editor/index.ts +7 -3
- package/src/editor/panel.tsx +34 -10
- package/src/editor/repeater.tsx +244 -0
- package/src/editor/sortable.tsx +50 -24
- package/src/editor/tiles.tsx +51 -0
- package/src/editor-repeater.css +1 -0
- package/src/editor-tiles.css +1 -0
- package/src/editor.css +1 -1
- package/src/icons.tsx +2 -0
- package/src/index.ts +9 -1
- package/src/kit-plain.js +1 -1
- package/src/service-switcher-plain.js +1 -0
- package/src/service-switcher.css +1 -0
- package/src/service-switcher.tsx +222 -0
- package/src/services.ts +91 -0
- package/src/shell.css +1 -1
- package/src/toggle-bar.tsx +60 -0
- package/src/ui.css +1 -1
package/catalog/editor.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
.cat-code summary{padding:10px 16px;font-size:13px;cursor:pointer;color:var(--gemboss-text-muted);border-top:1px solid var(--gemboss-divider);min-height:24px}
|
|
9
9
|
.cat-code pre,.cat-api{margin:0;padding:12px 16px;overflow:auto;background:#0f1012;color:#e8e8e6;font-size:12px;line-height:1.5;border-radius:0}
|
|
10
10
|
.cat-api{border-radius:12px;margin:0 0 16px}</style></head><body><div class="cat">
|
|
11
|
-
<h1>@gemboss/ui 0.
|
|
11
|
+
<h1>@gemboss/ui 0.39.0 · Editor</h1>
|
|
12
12
|
<p>Khung của mọi editor: <code>EditorFrame</code> (cột trái · khe kéo · preview · cột phải dock trên mép phải preview) và <code>EditorTopbar</code> (← · tiêu đề · cụm giữa · cụm phải · dòng trạng thái). Là đúng khung của theme / page / section editor trong admin. Gói chỉ vẽ KHUNG; chat, Configure, canvas, page picker, menu, Publish là của editor, đi vào bằng slot. Trang HTML thuần nạp <code>editor.css</code> + <code>editor-plain.js</code> rồi gọi <code>gembossUI.initEditorFrame()</code>: kéo khe (chuột, chạm, phím mũi tên / Home / End), đổi thiết bị, mở ⋯ và Publish ▾, ẩn cột trái, Chat | Preview trên điện thoại. <a href="index.html">← Catalog</a></p>
|
|
13
13
|
<h2>React</h2><pre class="cat-api"><code>import "@gemboss/ui/editor.css";
|
|
14
14
|
import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs, EditorSaveState, DeviceToggle } from "@gemboss/ui/editor";
|
|
@@ -319,7 +319,7 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
319
319
|
<Field label="Padding"><EdgeBox label="Padding" values={pad} onChange={(side, raw) => …} onCommit={save} /></Field>
|
|
320
320
|
<Field label="Image" htmlFor="img"><ImageControl id="img" value={url} onChange={setUrl} /></Field>
|
|
321
321
|
</InspectorGroup></code></pre>
|
|
322
|
-
<figure class="cat-demo"><figcaption>1280 (chuột): cột Configure 360px, đủ control, nhóm Motion đang gập</figcaption><div class="cat-wide"><iframe title="1280 (chuột): cột Configure 360px, đủ control, nhóm Motion đang gập" style="width:1280px;height:1120px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/editor.css"></head><body><div class="gemboss-ec" style="width:360px;height:1040px"><div class="gemboss-ec-tabs" role="tablist" aria-label="Editor panels"><button type="button" role="tab" data-value="configure" class="gemboss-ec-tab" aria-selected="true">Settings</button><button type="button" role="tab" data-value="chat" class="gemboss-ec-tab" aria-selected="false">Chat</button></div><div class="gemboss-ec-dock-body" style="padding:0"><aside class="gemboss-ei gemboss-ei--docked" role="region" aria-label="Settings — Hero"><header class="gemboss-ei-head"><span class="gemboss-ei-title">Hero<small>hero-banner.default.v1</small></span><button type="button" class="gemboss-ei-act" title="Duplicate section" aria-label="Duplicate section">⧉</button><button type="button" class="gemboss-ei-act" title="Restore this section to its previous version" aria-label="Restore this section">↺</button></header><div class="gemboss-ei-tabs" role="tablist"><button type="button" role="tab" data-value="content" class="gemboss-ei-tab" aria-selected="false" tabindex="-1">Content</button><button type="button" role="tab" data-value="design" class="gemboss-ei-tab on" aria-selected="true" tabindex="0">Design</button><button type="button" role="tab" data-value="advanced" class="gemboss-ei-tab" aria-selected="false" tabindex="-1">Advanced</button></div><div class="gemboss-ei-body"><div class="gemboss-ei-pane"><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Layout<small class="gemboss-ei-gh-note">· all screens</small></button><div class="gemboss-ei-fld"><label>Content width</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Content width"><button type="button" data-value="full" aria-pressed="false" class="is-text">Full</button><button type="button" data-value="contained" aria-pressed="true" class="is-text active">Contained</button><button type="button" data-value="narrow" aria-pressed="false" class="is-text">Narrow</button></div></div><div class="gemboss-ei-fld"><label>Columns</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Columns"><button type="button" data-value="2" disabled="" aria-pressed="false" class="is-text">2</button><button type="button" data-value="3" disabled="" aria-pressed="true" class="is-text active">3</button><button type="button" data-value="4" disabled="" aria-pressed="false" class="is-text">4</button></div><p class="gemboss-ei-hint">Disabled while a change is applied.</p></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Spacing</button><div class="gemboss-ei-fld"><label>Padding</label><div class="gemboss-ei-edgebox"><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding top" value="24"/><span>T</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding right" value=""/><span>R</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding bottom" value="24"/><span>B</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding left" value=""/><span>L</span></div></div></div><div class="gemboss-ei-fld"><label>Margin</label><div class="gemboss-ei-edgebox"><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin top" value=""/><span>T</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Margin right" value=""/><span>R</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin bottom" value=""/><span>B</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Margin left" value=""/><span>L</span></div></div><p class="gemboss-ei-hint">Empty edges follow desktop.</p></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Color</button><div class="gemboss-ei-fld"><label for="cat-bg">Background</label><div class="gemboss-ei-color"><input type="color" class="gemboss-ei-swatch" aria-label="Background swatch" value="#f4efe6"/><input id="cat-bg" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="#f4efe6"/></div></div><div class="gemboss-ei-fld"><label for="cat-ov">Overlay</label><div class="gemboss-ei-color"><input type="color" class="gemboss-ei-swatch" aria-label="Overlay swatch" disabled="" title="linear-gradient(90deg,#000,#0000) — not a plain 6-digit hex; edit it in the box below" value="#000000"/><input id="cat-ov" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="linear-gradient(90deg,#000,#0000)"/></div><p class="gemboss-ei-hint">A gradient: the swatch cannot show it, so it is off.</p></div><div class="gemboss-ei-fld"><label for="cat-op">Opacity<span class="gemboss-ei-rangeval" data-suffix="%">80%</span></label><input id="cat-op" type="range" class="gemboss-ei-range" min="0" max="100" step="1" value="80"/></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Media</button><div class="gemboss-ei-fld"><label for="cat-img">Image</label><div class="gemboss-ei-img"><div class="gemboss-ei-img-thumb" aria-hidden="true">—</div><div class="gemboss-ei-img-ctl"><input id="cat-img" class="gemboss-field gemboss-ei-inp" placeholder="Paste image URL…" value=""/><div class="gemboss-ei-img-actions"><button type="button" class="gemboss-ei-addchip" aria-expanded="false">Library</button><button type="button" class="gemboss-ei-addchip" data-gb-image-clear>Clear</button></div></div></div></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="closed" aria-expanded="false"><span class="gemboss-ei-chev" aria-hidden="true">▸</span>Motion</button><div class="gemboss-ei-fld"><label>Reveal</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Reveal"><button type="button" data-value="none" aria-pressed="true" class="is-text active">None</button><button type="button" data-value="fade" aria-pressed="false" class="is-text">Fade</button></div></div></div></div></div></aside></div></div><script src="../src/kit-plain.js"></script><script src="../src/editor-plain.js"></script><script>gembossUI.initEditorFrame()</script><script>gembossUI.initEditorPanel()</script><script src="../src/editor-layers-plain.js"></script><script>gembossUI.initEditorLayers()</script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-ec" style="width:360px;height:1040px">
|
|
322
|
+
<figure class="cat-demo"><figcaption>1280 (chuột): cột Configure 360px, đủ control, nhóm Motion đang gập</figcaption><div class="cat-wide"><iframe title="1280 (chuột): cột Configure 360px, đủ control, nhóm Motion đang gập" style="width:1280px;height:1120px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/editor.css"></head><body><div class="gemboss-ec" style="width:360px;height:1040px"><div class="gemboss-ec-tabs" role="tablist" aria-label="Editor panels"><button type="button" role="tab" data-value="configure" class="gemboss-ec-tab" aria-selected="true">Settings</button><button type="button" role="tab" data-value="chat" class="gemboss-ec-tab" aria-selected="false">Chat</button></div><div class="gemboss-ec-dock-body" style="padding:0"><aside class="gemboss-ei gemboss-ei--docked" role="region" aria-label="Settings — Hero"><header class="gemboss-ei-head"><span class="gemboss-ei-title">Hero<small>hero-banner.default.v1</small></span><button type="button" class="gemboss-ei-act" title="Duplicate section" aria-label="Duplicate section">⧉</button><button type="button" class="gemboss-ei-act" title="Restore this section to its previous version" aria-label="Restore this section">↺</button></header><div class="gemboss-ei-tabs" role="tablist"><button type="button" role="tab" data-value="content" class="gemboss-ei-tab" aria-selected="false" tabindex="-1">Content</button><button type="button" role="tab" data-value="design" class="gemboss-ei-tab on" aria-selected="true" tabindex="0">Design</button><button type="button" role="tab" data-value="advanced" class="gemboss-ei-tab" aria-selected="false" tabindex="-1">Advanced</button></div><div class="gemboss-ei-body"><div class="gemboss-ei-pane"><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Layout<small class="gemboss-ei-gh-note">· all screens</small></button><div class="gemboss-ei-fld"><label>Content width</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Content width"><button type="button" data-value="full" aria-pressed="false" class="is-text">Full</button><button type="button" data-value="contained" aria-pressed="true" class="is-text active">Contained</button><button type="button" data-value="narrow" aria-pressed="false" class="is-text">Narrow</button></div></div><div class="gemboss-ei-fld"><div class="gemboss-ei-lbl"><label>Columns</label><button type="button" class="gemboss-ei-help" aria-label="About Columns" aria-describedby=":R18u:" aria-expanded="false">?</button></div><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Columns"><button type="button" data-value="2" disabled="" aria-pressed="false" class="is-text">2</button><button type="button" data-value="3" disabled="" aria-pressed="true" class="is-text active">3</button><button type="button" data-value="4" disabled="" aria-pressed="false" class="is-text">4</button></div><p class="gemboss-ei-hint gemboss-ei-help-text" id=":R18u:">Disabled while a change is applied.</p></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Spacing</button><div class="gemboss-ei-fld"><label>Padding</label><div class="gemboss-ei-edgebox"><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding top" value="24"/><span>T</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding right" value=""/><span>R</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding bottom" value="24"/><span>B</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding left" value=""/><span>L</span></div></div></div><div class="gemboss-ei-fld"><div class="gemboss-ei-lbl"><label>Margin</label><button type="button" class="gemboss-ei-help" aria-label="About Margin" aria-describedby=":R19e:" aria-expanded="false">?</button></div><div class="gemboss-ei-edgebox"><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin top" value=""/><span>T</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Margin right" value=""/><span>R</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin bottom" value=""/><span>B</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Margin left" value=""/><span>L</span></div></div><p class="gemboss-ei-hint gemboss-ei-help-text" id=":R19e:">Empty edges follow desktop.</p></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Color</button><div class="gemboss-ei-fld"><label for="cat-bg">Background</label><div class="gemboss-ei-color"><input type="color" class="gemboss-ei-swatch" aria-label="Background swatch" value="#f4efe6"/><input id="cat-bg" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="#f4efe6"/></div></div><div class="gemboss-ei-fld"><div class="gemboss-ei-lbl"><label for="cat-ov">Overlay</label><button type="button" class="gemboss-ei-help" aria-label="About Overlay" aria-describedby=":R19u:" aria-expanded="false">?</button></div><div class="gemboss-ei-color"><input type="color" class="gemboss-ei-swatch" aria-label="Overlay swatch" disabled="" title="linear-gradient(90deg,#000,#0000) — not a plain 6-digit hex; edit it in the box below" value="#000000"/><input id="cat-ov" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="linear-gradient(90deg,#000,#0000)"/></div><p class="gemboss-ei-hint gemboss-ei-help-text" id=":R19u:">A gradient: the swatch cannot show it, so it is off.</p></div><div class="gemboss-ei-fld"><label for="cat-op">Opacity<span class="gemboss-ei-rangeval" data-suffix="%">80%</span></label><input id="cat-op" type="range" class="gemboss-ei-range" min="0" max="100" step="1" value="80"/></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Media</button><div class="gemboss-ei-fld"><label for="cat-img">Image</label><div class="gemboss-ei-img"><div class="gemboss-ei-img-thumb" aria-hidden="true">—</div><div class="gemboss-ei-img-ctl"><input id="cat-img" class="gemboss-field gemboss-ei-inp" placeholder="Paste image URL…" value=""/><div class="gemboss-ei-img-actions"><button type="button" class="gemboss-ei-addchip" aria-expanded="false">Library</button><button type="button" class="gemboss-ei-addchip" data-gb-image-clear>Clear</button></div></div></div></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="closed" aria-expanded="false"><span class="gemboss-ei-chev" aria-hidden="true">▸</span>Motion</button><div class="gemboss-ei-fld"><label>Reveal</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Reveal"><button type="button" data-value="none" aria-pressed="true" class="is-text active">None</button><button type="button" data-value="fade" aria-pressed="false" class="is-text">Fade</button></div></div></div></div></div></aside></div></div><script src="../src/kit-plain.js"></script><script src="../src/editor-plain.js"></script><script>gembossUI.initEditorFrame()</script><script>gembossUI.initEditorPanel()</script><script src="../src/editor-layers-plain.js"></script><script>gembossUI.initEditorLayers()</script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-ec" style="width:360px;height:1040px">
|
|
323
323
|
<div class="gemboss-ec-tabs" role="tablist" aria-label="Editor panels">
|
|
324
324
|
<button type="button" role="tab" data-value="configure" class="gemboss-ec-tab" aria-selected="true">Settings</button>
|
|
325
325
|
<button type="button" role="tab" data-value="chat" class="gemboss-ec-tab" aria-selected="false">Chat</button>
|
|
@@ -352,13 +352,16 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
352
352
|
</div>
|
|
353
353
|
</div>
|
|
354
354
|
<div class="gemboss-ei-fld">
|
|
355
|
-
<
|
|
355
|
+
<div class="gemboss-ei-lbl">
|
|
356
|
+
<label>Columns</label>
|
|
357
|
+
<button type="button" class="gemboss-ei-help" aria-label="About Columns" aria-describedby=":R18u:" aria-expanded="false">?</button>
|
|
358
|
+
</div>
|
|
356
359
|
<div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Columns">
|
|
357
360
|
<button type="button" data-value="2" disabled="" aria-pressed="false" class="is-text">2</button>
|
|
358
361
|
<button type="button" data-value="3" disabled="" aria-pressed="true" class="is-text active">3</button>
|
|
359
362
|
<button type="button" data-value="4" disabled="" aria-pressed="false" class="is-text">4</button>
|
|
360
363
|
</div>
|
|
361
|
-
<p class="gemboss-ei-hint">Disabled while a change is applied.</p>
|
|
364
|
+
<p class="gemboss-ei-hint gemboss-ei-help-text" id=":R18u:">Disabled while a change is applied.</p>
|
|
362
365
|
</div>
|
|
363
366
|
</div>
|
|
364
367
|
<div class="gemboss-ei-grp">
|
|
@@ -386,7 +389,10 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
386
389
|
</div>
|
|
387
390
|
</div>
|
|
388
391
|
<div class="gemboss-ei-fld">
|
|
389
|
-
<
|
|
392
|
+
<div class="gemboss-ei-lbl">
|
|
393
|
+
<label>Margin</label>
|
|
394
|
+
<button type="button" class="gemboss-ei-help" aria-label="About Margin" aria-describedby=":R19e:" aria-expanded="false">?</button>
|
|
395
|
+
</div>
|
|
390
396
|
<div class="gemboss-ei-edgebox">
|
|
391
397
|
<div class="gemboss-ei-edge">
|
|
392
398
|
<input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin top" value=""/>
|
|
@@ -405,7 +411,7 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
405
411
|
<span>L</span>
|
|
406
412
|
</div>
|
|
407
413
|
</div>
|
|
408
|
-
<p class="gemboss-ei-hint">Empty edges follow desktop.</p>
|
|
414
|
+
<p class="gemboss-ei-hint gemboss-ei-help-text" id=":R19e:">Empty edges follow desktop.</p>
|
|
409
415
|
</div>
|
|
410
416
|
</div>
|
|
411
417
|
<div class="gemboss-ei-grp">
|
|
@@ -419,12 +425,15 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
419
425
|
</div>
|
|
420
426
|
</div>
|
|
421
427
|
<div class="gemboss-ei-fld">
|
|
422
|
-
<
|
|
428
|
+
<div class="gemboss-ei-lbl">
|
|
429
|
+
<label for="cat-ov">Overlay</label>
|
|
430
|
+
<button type="button" class="gemboss-ei-help" aria-label="About Overlay" aria-describedby=":R19u:" aria-expanded="false">?</button>
|
|
431
|
+
</div>
|
|
423
432
|
<div class="gemboss-ei-color">
|
|
424
433
|
<input type="color" class="gemboss-ei-swatch" aria-label="Overlay swatch" disabled="" title="linear-gradient(90deg,#000,#0000) — not a plain 6-digit hex; edit it in the box below" value="#000000"/>
|
|
425
434
|
<input id="cat-ov" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="linear-gradient(90deg,#000,#0000)"/>
|
|
426
435
|
</div>
|
|
427
|
-
<p class="gemboss-ei-hint">A gradient: the swatch cannot show it, so it is off.</p>
|
|
436
|
+
<p class="gemboss-ei-hint gemboss-ei-help-text" id=":R19u:">A gradient: the swatch cannot show it, so it is off.</p>
|
|
428
437
|
</div>
|
|
429
438
|
<div class="gemboss-ei-fld">
|
|
430
439
|
<label for="cat-op">Opacity<span class="gemboss-ei-rangeval" data-suffix="%">80%</span>
|
|
@@ -465,7 +474,7 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
465
474
|
</aside>
|
|
466
475
|
</div>
|
|
467
476
|
</div></code></pre></details></figure>
|
|
468
|
-
<figure class="cat-demo"><figcaption>390 (điện thoại): ô nhập 16px, control 44px</figcaption><div class="cat-wide"><iframe title="390 (điện thoại): ô nhập 16px, control 44px" style="width:390px;height:1240px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/editor.css"></head><body><div class="gemboss-ec" style="width:360px;height:1040px"><div class="gemboss-ec-tabs" role="tablist" aria-label="Editor panels"><button type="button" role="tab" data-value="configure" class="gemboss-ec-tab" aria-selected="true">Settings</button><button type="button" role="tab" data-value="chat" class="gemboss-ec-tab" aria-selected="false">Chat</button></div><div class="gemboss-ec-dock-body" style="padding:0"><aside class="gemboss-ei gemboss-ei--docked" role="region" aria-label="Settings — Hero"><header class="gemboss-ei-head"><span class="gemboss-ei-title">Hero<small>hero-banner.default.v1</small></span><button type="button" class="gemboss-ei-act" title="Duplicate section" aria-label="Duplicate section">⧉</button><button type="button" class="gemboss-ei-act" title="Restore this section to its previous version" aria-label="Restore this section">↺</button></header><div class="gemboss-ei-tabs" role="tablist"><button type="button" role="tab" data-value="content" class="gemboss-ei-tab" aria-selected="false" tabindex="-1">Content</button><button type="button" role="tab" data-value="design" class="gemboss-ei-tab on" aria-selected="true" tabindex="0">Design</button><button type="button" role="tab" data-value="advanced" class="gemboss-ei-tab" aria-selected="false" tabindex="-1">Advanced</button></div><div class="gemboss-ei-body"><div class="gemboss-ei-pane"><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Layout<small class="gemboss-ei-gh-note">· all screens</small></button><div class="gemboss-ei-fld"><label>Content width</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Content width"><button type="button" data-value="full" aria-pressed="false" class="is-text">Full</button><button type="button" data-value="contained" aria-pressed="true" class="is-text active">Contained</button><button type="button" data-value="narrow" aria-pressed="false" class="is-text">Narrow</button></div></div><div class="gemboss-ei-fld"><label>Columns</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Columns"><button type="button" data-value="2" disabled="" aria-pressed="false" class="is-text">2</button><button type="button" data-value="3" disabled="" aria-pressed="true" class="is-text active">3</button><button type="button" data-value="4" disabled="" aria-pressed="false" class="is-text">4</button></div><p class="gemboss-ei-hint">Disabled while a change is applied.</p></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Spacing</button><div class="gemboss-ei-fld"><label>Padding</label><div class="gemboss-ei-edgebox"><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding top" value="24"/><span>T</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding right" value=""/><span>R</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding bottom" value="24"/><span>B</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding left" value=""/><span>L</span></div></div></div><div class="gemboss-ei-fld"><label>Margin</label><div class="gemboss-ei-edgebox"><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin top" value=""/><span>T</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Margin right" value=""/><span>R</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin bottom" value=""/><span>B</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Margin left" value=""/><span>L</span></div></div><p class="gemboss-ei-hint">Empty edges follow desktop.</p></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Color</button><div class="gemboss-ei-fld"><label for="cat-bg">Background</label><div class="gemboss-ei-color"><input type="color" class="gemboss-ei-swatch" aria-label="Background swatch" value="#f4efe6"/><input id="cat-bg" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="#f4efe6"/></div></div><div class="gemboss-ei-fld"><label for="cat-ov">Overlay</label><div class="gemboss-ei-color"><input type="color" class="gemboss-ei-swatch" aria-label="Overlay swatch" disabled="" title="linear-gradient(90deg,#000,#0000) — not a plain 6-digit hex; edit it in the box below" value="#000000"/><input id="cat-ov" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="linear-gradient(90deg,#000,#0000)"/></div><p class="gemboss-ei-hint">A gradient: the swatch cannot show it, so it is off.</p></div><div class="gemboss-ei-fld"><label for="cat-op">Opacity<span class="gemboss-ei-rangeval" data-suffix="%">80%</span></label><input id="cat-op" type="range" class="gemboss-ei-range" min="0" max="100" step="1" value="80"/></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Media</button><div class="gemboss-ei-fld"><label for="cat-img">Image</label><div class="gemboss-ei-img"><div class="gemboss-ei-img-thumb" aria-hidden="true">—</div><div class="gemboss-ei-img-ctl"><input id="cat-img" class="gemboss-field gemboss-ei-inp" placeholder="Paste image URL…" value=""/><div class="gemboss-ei-img-actions"><button type="button" class="gemboss-ei-addchip" aria-expanded="false">Library</button><button type="button" class="gemboss-ei-addchip" data-gb-image-clear>Clear</button></div></div></div></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="closed" aria-expanded="false"><span class="gemboss-ei-chev" aria-hidden="true">▸</span>Motion</button><div class="gemboss-ei-fld"><label>Reveal</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Reveal"><button type="button" data-value="none" aria-pressed="true" class="is-text active">None</button><button type="button" data-value="fade" aria-pressed="false" class="is-text">Fade</button></div></div></div></div></div></aside></div></div><script src="../src/kit-plain.js"></script><script src="../src/editor-plain.js"></script><script>gembossUI.initEditorFrame()</script><script>gembossUI.initEditorPanel()</script><script src="../src/editor-layers-plain.js"></script><script>gembossUI.initEditorLayers()</script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-ec" style="width:360px;height:1040px">
|
|
477
|
+
<figure class="cat-demo"><figcaption>390 (điện thoại): ô nhập 16px, control 44px</figcaption><div class="cat-wide"><iframe title="390 (điện thoại): ô nhập 16px, control 44px" style="width:390px;height:1240px" srcdoc="<!doctype html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="../gemboss-ui.css"><link rel="stylesheet" href="../src/editor.css"></head><body><div class="gemboss-ec" style="width:360px;height:1040px"><div class="gemboss-ec-tabs" role="tablist" aria-label="Editor panels"><button type="button" role="tab" data-value="configure" class="gemboss-ec-tab" aria-selected="true">Settings</button><button type="button" role="tab" data-value="chat" class="gemboss-ec-tab" aria-selected="false">Chat</button></div><div class="gemboss-ec-dock-body" style="padding:0"><aside class="gemboss-ei gemboss-ei--docked" role="region" aria-label="Settings — Hero"><header class="gemboss-ei-head"><span class="gemboss-ei-title">Hero<small>hero-banner.default.v1</small></span><button type="button" class="gemboss-ei-act" title="Duplicate section" aria-label="Duplicate section">⧉</button><button type="button" class="gemboss-ei-act" title="Restore this section to its previous version" aria-label="Restore this section">↺</button></header><div class="gemboss-ei-tabs" role="tablist"><button type="button" role="tab" data-value="content" class="gemboss-ei-tab" aria-selected="false" tabindex="-1">Content</button><button type="button" role="tab" data-value="design" class="gemboss-ei-tab on" aria-selected="true" tabindex="0">Design</button><button type="button" role="tab" data-value="advanced" class="gemboss-ei-tab" aria-selected="false" tabindex="-1">Advanced</button></div><div class="gemboss-ei-body"><div class="gemboss-ei-pane"><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Layout<small class="gemboss-ei-gh-note">· all screens</small></button><div class="gemboss-ei-fld"><label>Content width</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Content width"><button type="button" data-value="full" aria-pressed="false" class="is-text">Full</button><button type="button" data-value="contained" aria-pressed="true" class="is-text active">Contained</button><button type="button" data-value="narrow" aria-pressed="false" class="is-text">Narrow</button></div></div><div class="gemboss-ei-fld"><div class="gemboss-ei-lbl"><label>Columns</label><button type="button" class="gemboss-ei-help" aria-label="About Columns" aria-describedby=":R18u:" aria-expanded="false">?</button></div><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Columns"><button type="button" data-value="2" disabled="" aria-pressed="false" class="is-text">2</button><button type="button" data-value="3" disabled="" aria-pressed="true" class="is-text active">3</button><button type="button" data-value="4" disabled="" aria-pressed="false" class="is-text">4</button></div><p class="gemboss-ei-hint gemboss-ei-help-text" id=":R18u:">Disabled while a change is applied.</p></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Spacing</button><div class="gemboss-ei-fld"><label>Padding</label><div class="gemboss-ei-edgebox"><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding top" value="24"/><span>T</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding right" value=""/><span>R</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding bottom" value="24"/><span>B</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Padding left" value=""/><span>L</span></div></div></div><div class="gemboss-ei-fld"><div class="gemboss-ei-lbl"><label>Margin</label><button type="button" class="gemboss-ei-help" aria-label="About Margin" aria-describedby=":R19e:" aria-expanded="false">?</button></div><div class="gemboss-ei-edgebox"><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin top" value=""/><span>T</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Margin right" value=""/><span>R</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin bottom" value=""/><span>B</span></div><div class="gemboss-ei-edge"><input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="0" aria-label="Margin left" value=""/><span>L</span></div></div><p class="gemboss-ei-hint gemboss-ei-help-text" id=":R19e:">Empty edges follow desktop.</p></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Color</button><div class="gemboss-ei-fld"><label for="cat-bg">Background</label><div class="gemboss-ei-color"><input type="color" class="gemboss-ei-swatch" aria-label="Background swatch" value="#f4efe6"/><input id="cat-bg" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="#f4efe6"/></div></div><div class="gemboss-ei-fld"><div class="gemboss-ei-lbl"><label for="cat-ov">Overlay</label><button type="button" class="gemboss-ei-help" aria-label="About Overlay" aria-describedby=":R19u:" aria-expanded="false">?</button></div><div class="gemboss-ei-color"><input type="color" class="gemboss-ei-swatch" aria-label="Overlay swatch" disabled="" title="linear-gradient(90deg,#000,#0000) — not a plain 6-digit hex; edit it in the box below" value="#000000"/><input id="cat-ov" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="linear-gradient(90deg,#000,#0000)"/></div><p class="gemboss-ei-hint gemboss-ei-help-text" id=":R19u:">A gradient: the swatch cannot show it, so it is off.</p></div><div class="gemboss-ei-fld"><label for="cat-op">Opacity<span class="gemboss-ei-rangeval" data-suffix="%">80%</span></label><input id="cat-op" type="range" class="gemboss-ei-range" min="0" max="100" step="1" value="80"/></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="open" aria-expanded="true"><span class="gemboss-ei-chev" aria-hidden="true">▾</span>Media</button><div class="gemboss-ei-fld"><label for="cat-img">Image</label><div class="gemboss-ei-img"><div class="gemboss-ei-img-thumb" aria-hidden="true">—</div><div class="gemboss-ei-img-ctl"><input id="cat-img" class="gemboss-field gemboss-ei-inp" placeholder="Paste image URL…" value=""/><div class="gemboss-ei-img-actions"><button type="button" class="gemboss-ei-addchip" aria-expanded="false">Library</button><button type="button" class="gemboss-ei-addchip" data-gb-image-clear>Clear</button></div></div></div></div></div><div class="gemboss-ei-grp"><button type="button" class="gemboss-ei-gh" data-open="closed" aria-expanded="false"><span class="gemboss-ei-chev" aria-hidden="true">▸</span>Motion</button><div class="gemboss-ei-fld"><label>Reveal</label><div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Reveal"><button type="button" data-value="none" aria-pressed="true" class="is-text active">None</button><button type="button" data-value="fade" aria-pressed="false" class="is-text">Fade</button></div></div></div></div></div></aside></div></div><script src="../src/kit-plain.js"></script><script src="../src/editor-plain.js"></script><script>gembossUI.initEditorFrame()</script><script>gembossUI.initEditorPanel()</script><script src="../src/editor-layers-plain.js"></script><script>gembossUI.initEditorLayers()</script></body></html>"></iframe></div><details class="cat-code"><summary>Markup</summary><pre><code><div class="gemboss-ec" style="width:360px;height:1040px">
|
|
469
478
|
<div class="gemboss-ec-tabs" role="tablist" aria-label="Editor panels">
|
|
470
479
|
<button type="button" role="tab" data-value="configure" class="gemboss-ec-tab" aria-selected="true">Settings</button>
|
|
471
480
|
<button type="button" role="tab" data-value="chat" class="gemboss-ec-tab" aria-selected="false">Chat</button>
|
|
@@ -498,13 +507,16 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
498
507
|
</div>
|
|
499
508
|
</div>
|
|
500
509
|
<div class="gemboss-ei-fld">
|
|
501
|
-
<
|
|
510
|
+
<div class="gemboss-ei-lbl">
|
|
511
|
+
<label>Columns</label>
|
|
512
|
+
<button type="button" class="gemboss-ei-help" aria-label="About Columns" aria-describedby=":R18u:" aria-expanded="false">?</button>
|
|
513
|
+
</div>
|
|
502
514
|
<div class="ui-seg ui-seg--fill gemboss-ei-seg" role="group" aria-label="Columns">
|
|
503
515
|
<button type="button" data-value="2" disabled="" aria-pressed="false" class="is-text">2</button>
|
|
504
516
|
<button type="button" data-value="3" disabled="" aria-pressed="true" class="is-text active">3</button>
|
|
505
517
|
<button type="button" data-value="4" disabled="" aria-pressed="false" class="is-text">4</button>
|
|
506
518
|
</div>
|
|
507
|
-
<p class="gemboss-ei-hint">Disabled while a change is applied.</p>
|
|
519
|
+
<p class="gemboss-ei-hint gemboss-ei-help-text" id=":R18u:">Disabled while a change is applied.</p>
|
|
508
520
|
</div>
|
|
509
521
|
</div>
|
|
510
522
|
<div class="gemboss-ei-grp">
|
|
@@ -532,7 +544,10 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
532
544
|
</div>
|
|
533
545
|
</div>
|
|
534
546
|
<div class="gemboss-ei-fld">
|
|
535
|
-
<
|
|
547
|
+
<div class="gemboss-ei-lbl">
|
|
548
|
+
<label>Margin</label>
|
|
549
|
+
<button type="button" class="gemboss-ei-help" aria-label="About Margin" aria-describedby=":R19e:" aria-expanded="false">?</button>
|
|
550
|
+
</div>
|
|
536
551
|
<div class="gemboss-ei-edgebox">
|
|
537
552
|
<div class="gemboss-ei-edge">
|
|
538
553
|
<input class="gemboss-field gemboss-field--narrow gemboss-ei-inp" inputMode="numeric" placeholder="16" aria-label="Margin top" value=""/>
|
|
@@ -551,7 +566,7 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
551
566
|
<span>L</span>
|
|
552
567
|
</div>
|
|
553
568
|
</div>
|
|
554
|
-
<p class="gemboss-ei-hint">Empty edges follow desktop.</p>
|
|
569
|
+
<p class="gemboss-ei-hint gemboss-ei-help-text" id=":R19e:">Empty edges follow desktop.</p>
|
|
555
570
|
</div>
|
|
556
571
|
</div>
|
|
557
572
|
<div class="gemboss-ei-grp">
|
|
@@ -565,12 +580,15 @@ import { EditorFrame, EditorTopbar, EditorBack, EditorChatToggle, EditorPaneTabs
|
|
|
565
580
|
</div>
|
|
566
581
|
</div>
|
|
567
582
|
<div class="gemboss-ei-fld">
|
|
568
|
-
<
|
|
583
|
+
<div class="gemboss-ei-lbl">
|
|
584
|
+
<label for="cat-ov">Overlay</label>
|
|
585
|
+
<button type="button" class="gemboss-ei-help" aria-label="About Overlay" aria-describedby=":R19u:" aria-expanded="false">?</button>
|
|
586
|
+
</div>
|
|
569
587
|
<div class="gemboss-ei-color">
|
|
570
588
|
<input type="color" class="gemboss-ei-swatch" aria-label="Overlay swatch" disabled="" title="linear-gradient(90deg,#000,#0000) — not a plain 6-digit hex; edit it in the box below" value="#000000"/>
|
|
571
589
|
<input id="cat-ov" class="gemboss-field gemboss-ei-inp" placeholder="#000000 / var(--…)" value="linear-gradient(90deg,#000,#0000)"/>
|
|
572
590
|
</div>
|
|
573
|
-
<p class="gemboss-ei-hint">A gradient: the swatch cannot show it, so it is off.</p>
|
|
591
|
+
<p class="gemboss-ei-hint gemboss-ei-help-text" id=":R19u:">A gradient: the swatch cannot show it, so it is off.</p>
|
|
574
592
|
</div>
|
|
575
593
|
<div class="gemboss-ei-fld">
|
|
576
594
|
<label for="cat-op">Opacity<span class="gemboss-ei-rangeval" data-suffix="%">80%</span>
|