efficient-shell 7.16.0 → 7.18.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 +22 -0
- package/dist/{Browser-RVYZZSBW.js → Browser-AYWOX66T.js} +14 -14
- package/dist/{Documents-IO2JARTX.js → Documents-AOXBUBLH.js} +10 -10
- package/dist/{Files-3V5XOS6Q.js → Files-EWRVA6X3.js} +18 -18
- package/dist/{Notepad-6LTZIE7W.js → Notepad-NAWSBQ4K.js} +10 -10
- package/dist/{Preview-LOONX7AB.js → Preview-NQKURFIP.js} +14 -14
- package/dist/{Spreadsheet-5TJYZSFS.js → Spreadsheet-OJ4TDOP2.js} +10 -10
- package/dist/apps/index.js +1 -1
- package/dist/bin/ui-check.js +1 -1
- package/dist/{chunk-L52JUQM2.js → chunk-CWKX752E.js} +477 -476
- package/dist/{chunk-HEXFLFNR.js → chunk-EJ54JN6S.js} +2 -2
- package/dist/chunk-F5XBJE54.js +1 -0
- package/dist/{chunk-QMDIDM7W.js → chunk-LUNVJKAH.js} +1 -1
- package/dist/icons/efficient.d.ts +1 -1
- package/dist/icons/efficient.js +1 -1
- package/dist/{index-Cze2KSbJ.d.ts → index-Bup5fPMO.d.ts} +4 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +65 -65
- package/dist/telemetry/index.js +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-EGWXQWA2.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{useWindowMenuItem as e,Modal as t}from"./chunk-IBGEW3OA.js";import{navIcons as r}from"./chunk-DSSLOQDW.js";import{VERSION as s}from"./chunk-
|
|
1
|
+
import{useWindowMenuItem as e,Modal as t}from"./chunk-IBGEW3OA.js";import{navIcons as r}from"./chunk-DSSLOQDW.js";import{VERSION as s}from"./chunk-F5XBJE54.js";import{DEFAULT_SHELL_STRINGS as o,useShellStrings as n,splitAround as i}from"./chunk-QRCDQPJA.js";import{Icon as a}from"./chunk-ZGUQLVY4.js";import{useState as m,useCallback as c,isValidElement as l,cloneElement as d}from"react";import{jsx as p,jsxs as h}from"react/jsx-runtime";var u=o.aboutApp,f={spreadsheet:{name:"Spreadsheets",version:"1.1.3",route:"/spreadsheet",description:u.spreadsheet},notepad:{name:"Notepad",version:"1.0.2",route:"/notepad",description:u.notepad},documents:{name:"Documents",version:"1.1.1",route:"/documents",description:u.documents},preview:{name:"Preview",version:"1.4.3",route:"/preview",description:u.preview},files:{name:"Files",version:"1.1.3",route:"/files",description:u.files},browser:{name:"Browser",version:"1.0.2",route:"/browser",description:u.browser}},x=/* @__PURE__ */p(a,{name:"info",className:"h-4 w-4",strokeWidth:1.5}),v=/* @__PURE__ */p(a,{name:"window",className:"h-9 w-9",strokeWidth:1.5});function w({app:o}){const a=f[o],[u,w]=m(!1),g=c(()=>w(!0),[]),N=n().aboutApp,b=N.title(a.name);if(e(b,g,x),!u)return null;const y=r[a.route],k=l(y)?d(y,{className:"h-9 w-9"}):v,[j,A]=i(N.partOf);/* @__PURE__ */
|
|
2
2
|
return p(t,{open:!0,onClose:()=>w(!1),title:b,size:"sm",compact:!0,bodyScroll:!1,autoHeight:!0,dimensions:[320,320],children:/* @__PURE__ */h("div",{className:"flex flex-col items-center text-center px-5 pt-5 pb-4",children:[
|
|
3
3
|
/* @__PURE__ */p("div",{className:"flex h-16 w-16 items-center justify-center rounded-2xl bg-gray-100 text-gray-600 shrink-0",children:k}),
|
|
4
4
|
/* @__PURE__ */p("h2",{className:"mt-3 text-lg font-bold text-gray-900",children:a.name}),
|
|
@@ -6,4 +6,4 @@ return p(t,{open:!0,onClose:()=>w(!1),title:b,size:"sm",compact:!0,bodyScroll:!1
|
|
|
6
6
|
/* @__PURE__ */p("p",{className:"mt-2 text-xs text-gray-500 leading-relaxed",children:N[o]}),
|
|
7
7
|
/* @__PURE__ */h("div",{className:"mt-4 pt-3 border-t border-gray-200 w-full",children:[
|
|
8
8
|
/* @__PURE__ */h("p",{className:"text-2xs text-gray-500",children:[j,
|
|
9
|
-
/* @__PURE__ */p("span",{className:"font-medium text-gray-700",children:"efficient-shell"}),
|
|
9
|
+
/* @__PURE__ */p("span",{className:"font-medium text-gray-700",children:"efficient-shell"}),A]}),s&&/* @__PURE__ */p("p",{className:"mt-0.5 text-2xs font-mono text-gray-400",children:N.shellVersion(s)})]})]})})}export{w as AboutApp,f as BUILTIN_APP_INFO};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r="7.18.0",a=r;export{a as APP_VERSION,r as VERSION};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{VERSION as e}from"./chunk-EGWXQWA2.js";import{setBoundaryErrorReporter as t}from"./chunk-KNUR2UEG.js";var n=-1,i=()=>n,a=e=>{addEventListener("pageshow",t=>{t.persisted&&(n=t.timeStamp,e(t))},!0)},r=(e,t,n,i)=>{let a,r;return o=>{var s,c;t.value>=0&&(o||i)&&(r=t.value-(a??0),(r||void 0===a)&&(a=t.value,t.delta=r,t.rating=(s=t.value)>(c=n)[1]?"poor":s>c[0]?"needs-improvement":"good",e(t)))}},o=e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))},s=()=>{const e=performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},c=()=>s()?.activationStart??0,d=-1,l=/* @__PURE__ */new Set,u=()=>"hidden"!==document.visibilityState||document.prerendering?1/0:0,f=e=>{if("hidden"===document.visibilityState){if("visibilitychange"===e.type)for(const e of l)e();isFinite(d)||(d="visibilitychange"===e.type?e.timeStamp:0,removeEventListener("prerenderingchange",f,!0))}},h=(e=!1)=>{if(e&&(d=1/0),d<0){const e=c(),t=document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").find(t=>"hidden"===t.name&&t.startTime>=e)?.startTime;d=t??u(),addEventListener("visibilitychange",f,!0),addEventListener("prerenderingchange",f,!0),a(()=>{setTimeout(()=>{d=u()})})}return{get firstHiddenTime(){return d},onHidden(e){l.add(e)}}},g=(e,t=-1,n,a=0,r,o,d)=>{const l=s(),u=l?.navigationId||0;let f="navigate";return n?f=n:i()>=0?f="back-forward-cache":l&&(document.prerendering||c()>0?f="prerender":document.wasDiscarded?f="restore":l.type&&(f=l.type.replace(/_/g,"-"))),{name:e,value:t,rating:"good",delta:0,entries:[],id:`v6-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:f,navigationId:a||u,navigationInteractionId:r,navigationURL:o||l?.name,navigationStartTime:d||0}},v=/* @__PURE__ */new WeakMap;function p(e,t){let n=v.get(t);return n||(n=/* @__PURE__ */new WeakMap,v.set(t,n)),n.get(e)||n.set(e,new t),n.get(e)}var m,y=class{t;i=0;o=[];h(e){if(e.hadRecentInput)return;const t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}},T=(e,t,n={})=>{try{const i=e.filter(e=>PerformanceObserver.supportedEntryTypes.includes(e));if(i.length>0){const e=new PerformanceObserver(e=>{queueMicrotask(()=>{const n=e.getEntries();i.length>1&&n.sort((e,t)=>e.startTime+e.duration-(t.startTime+t.duration)),t(n)})});for(const t of i)e.observe({type:t,buffered:!0,...n});return e}}catch{}},w=e=>globalThis.PerformanceObserver?.supportedEntryTypes?.includes("soft-navigation")&&"function"==typeof globalThis.PerformanceSoftNavigation?.prototype?.getLargestInteractionContentfulPaint&&e&&e.reportSoftNavs,I=(e,t)=>{if(e.set(t.navigationId,t),e.size>2){const t=e.keys().next().value;void 0!==t&&e.delete(t)}},b=e=>{let t=!1;return()=>{t||(e(),t=!0)}},E=class{l},C=e=>{document.prerendering?addEventListener("prerenderingchange",e,!0):e()},L=[1800,3e3],P=(e,t={})=>{const n=w(t);C(()=>{const s=p(t,E),d=h();let l,u=g("FCP");const f=T(["paint"],e=>{for(const t of e)"first-contentful-paint"===t.name&&(f.disconnect(),t.startTime<d.firstHiddenTime&&(u.value=Math.max(t.startTime-c(),0),u.entries.push(t),u.navigationId=t.navigationId||u.navigationId,l(!0)))});f&&(l=r(e,u,L,t.reportAllChanges),a(n=>{u=g("FCP",-1,"back-forward-cache",u.navigationId,u.navigationInteractionId,u.navigationURL,i()),l=r(e,u,L,t.reportAllChanges),o(()=>{u.value=performance.now()-n.timeStamp,l(!0)})})),n&&T(["soft-navigation"],n=>{n.forEach(n=>{s.l&&n.navigationId&&I(s.l,n);const i=Math.max((n.presentationTime||n.paintTime||0)-n.startTime,0);u=g("FCP",i,"soft-navigation",n.navigationId,n.interactionId,n.name,n.startTime),l=r(e,u,L,t.reportAllChanges),l(!0)})},t)})},A=[.1,.25],k=0,S=1/0,z=0,M=e=>{for(const t of e)t.interactionId&&(S=Math.min(S,t.interactionId),z=Math.max(z,t.interactionId),k=z?(z-S)/7+1:0)},$=()=>m?k:performance.interactionCount??0,_=class{u=0;v=[];m=/* @__PURE__ */new Map;p;T;_(){return $()-this.u}M(){this.u=$(),this.v.length=0,this.m.clear()}L(e){const t=this._(),n=Math.min(this.v.length-1,Math.floor(t/50));return!t||-1!==n||"soft-navigation"!==e&&"back-forward-cache"!==e?this.v[n]:{P:8,id:-1,entries:[]}}h(e){if(this.p?.(e),!e.interactionId)return;const t=this.v.at(-1);let n=this.m.get(e.interactionId);if(n||this.v.length<10||e.duration>t.P){if(n?e.duration>n.P?(n.entries=[e],n.P=e.duration):e.duration===n.P&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],P:e.duration},this.m.set(n.id,n),this.v.push(n)),this.v.sort((e,t)=>t.P-e.P),this.v.length>10){const e=this.v.splice(10);for(const t of e)this.m.delete(t.id)}this.T?.(n)}}},Z=e=>{const t="requestIdleCallback"in globalThis?1e3:0,n=globalThis.requestIdleCallback||setTimeout,i=globalThis.cancelIdleCallback||clearTimeout;if("hidden"===document.visibilityState)e();else{const a=b(e);let r=-1;const o=()=>{i(r),a()};addEventListener("visibilitychange",o,{once:!0,capture:!0}),r=n(()=>{removeEventListener("visibilitychange",o,{capture:!0}),a()},{timeout:t})}},F=[200,500],R=(e,t={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;const n=h();C(()=>{"interactionCount"in performance||m||(m=T(["event"],M,{durationThreshold:0}));let o,s=g("INP");const c=p(t,_),d=(n,i,a,d,l)=>{c.M(),s=g("INP",-1,n,i,a,d,l),o=r(e,s,F,t.reportAllChanges)},l=()=>{const e=c.L(s.navigationType);e&&e.P!==s.value&&(s.value=e.P,s.entries=e.entries,o())},u=e=>{l(),o(!0),d("soft-navigation",e.navigationId,e.interactionId,e.name,e.startTime)},f=(e,t=!1)=>{Z(()=>{for(const t of e)"soft-navigation"!==t.entryType?c.h(t):u(t);l(),t&&o(!0)})},h=["event","first-input"];w(t)&&h.push("soft-navigation");const v=T(h,f,{...t,durationThreshold:t.durationThreshold??40});o=r(e,s,F,t.reportAllChanges),v&&(n.onHidden(()=>{f(v.takeRecords(),!0)}),a(()=>{d("back-forward-cache",s.navigationId,s.navigationInteractionId,s.navigationURL,i())}))})},x=class{p;l;h(e){this.p?.(e)}},j=[2500,4e3],B=[800,1800],N=e=>{document.prerendering?C(()=>N(e)):"complete"!==document.readyState?addEventListener("load",()=>N(e),!0):setTimeout(e)};var U=/^[A-Za-z0-9/_:.\-[\]{}*@~]+$/,O=/^[A-Za-z_$][A-Za-z0-9_$.]*$/,H=/^[A-Za-z0-9][A-Za-z0-9.+_-]*$/;var q=class{constructor(e){this.head=e}head;events=[];waiting=/* @__PURE__ */new Map;seen=/* @__PURE__ */new Set;get size(){return this.events.length}addVital(e){this.events.push(e)}addError(e){const t=function(e){return e.frames.length?`${e.name}|${e.frames.join("|")}`:`${e.name}|${e.message.replace(/\d/g,"0")}`}(e),n=this.waiting.get(t);return n?(n.count=Math.min(1e3,n.count+e.count),!0):!(this.seen.has(t)||this.seen.size>=20)&&(this.seen.add(t),this.waiting.set(t,e),this.events.push(e),!0)}drain(){const e=this.events;this.events=[],this.waiting.clear();const t=[],n=JSON.stringify({...this.head,events:[]}).length;let i=[],a=n;for(const r of e){const e=JSON.stringify(r).length+1;n+e>30720||((50===i.length||a+e>30720)&&(t.push({...this.head,events:i}),i=[],a=n),i.push(r),a+=e)}return i.length&&t.push({...this.head,events:i}),t}},W=/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g,J=/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}(?:\.[A-Za-z0-9_-]*)?|\b[Bb]earer\s+[A-Za-z0-9._~+/=-]{8,}/g,K=/\b[a-z][a-z0-9+.-]*:\/\/\S+/gi,D=/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,G=/\d{4,}/g,V=/(^|[/:])(?:\d+|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|[0-9a-f]{16,})(?=$|[/:])/gi,Q=/^[a-z][a-z0-9+.-]*:\/\/[^/]*/i,X=/(?:\(|@|\bat\s+)?((?:[a-z][a-z0-9+.-]*:\/\/|\/)[^\s()@]*?):(\d+):(\d+)\)?\s*$/i;function Y(e,t,n){const i=e.replace(Q,"").split(/[?#]/,1)[0];return i?`${i}:${t}:${n}`.slice(0,256):null}function ee(e){if("string"!=typeof e)return[];const t=[];for(const n of e.split("\n")){const e=X.exec(n.trim()),i=e&&Y(e[1],e[2],e[3]);if(i&&t.push(i),5===t.length)break}return t}function te(e){const t=e instanceof Error?e.name:void 0;return"string"==typeof t&&t.length<=64&&O.test(t)?t:"Error"}function ne(e){if("string"!=typeof e)return"unknown";const t=e.trim().replace(Q,"").split(/[?#]/,1)[0].replace(V,(e,t)=>":"===t?":id":`${t}:id`);return t&&t.length<=128&&!t.includes("//")&&U.test(t)?t:"unknown"}var ie={flush(){},reportError(){},stop(){}},ae=null,re=/* @__PURE__ */new Set(["LCP","FCP","TTFB"]);function oe(e,t,n){const i=t.getAccessToken();i&&n(t.endpoint??"/api/client-telemetry/web-batches/",{method:"POST",keepalive:!0,credentials:"same-origin",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(e)}).catch(e=>{console.debug("[efficient-shell] client telemetry batch dropped:",e)})}function se(n){if(ae?.stop(),ae=null,!1===n.enabled||"undefined"==typeof window||"undefined"==typeof document)return ie;if(!function(e){const t="string"==typeof e.app&&H.test(e.app),n="string"==typeof e.release&&H.test(e.release);return t&&n||console.warn("[efficient-shell] client telemetry not started: `app` and `release` must be version-like strings."),t&&n}(n))return ie;const d=n.fetch??window.fetch.bind(window),l=new q({app:n.app,release:n.release,shell_version:H.test(e)?e:""}),u=ne(n.routeKey()),f=function(e=("undefined"==typeof window?void 0:window)){if(!e)return"desktop";const t="function"==typeof e.matchMedia&&e.matchMedia("(pointer: coarse)").matches,n=e.innerWidth;return n<600?"mobile":t&&n<1280?"tablet":"desktop"}(window);let v=!1;const m=()=>{for(const e of l.drain())oe(e,n,d)},E=e=>{v||(l.addError(e),l.size>=50&&m())},L=(e,t)=>{return{type:"error",source:t,name:te(e),message:(a=e,i=a instanceof Error?a.message:"string"==typeof a?a:a&&"object"==typeof a&&"string"==typeof a.message?a.message:"",i.slice(0,640).replace(W,"[redacted]").replace(J,"[redacted]").replace(K,"[url]").replace(D,"[id]").replace(G,"[n]").replace(/\s+/g," ").trim().slice(0,160)),frames:ee(e instanceof Error?e.stack:void 0),route:ne(n.routeKey()),count:1};var i,a},k=e=>{v||(l.addVital(function(e,t,n,i){return{type:"vital",name:e.name,value:e.value,route:re.has(e.name)?t:n(),navigation:e.navigationType??"navigate",device:i}}(e,u,()=>ne(n.routeKey()),f)),l.size>=50&&m())},S=n.vitalsSampleRate??1;S>0&&(S>=1||(n.random??Math.random)()<S)&&(((e,t={})=>{let n=!1;const s=w(t);C(()=>{let d,l=h(),u=g("LCP");const f=p(t,x),v=(i,a,o,s,c)=>{u=g("LCP",-1,i,a,o,s,c),d=r(e,u,j,t.reportAllChanges),n=!1,"soft-navigation"===i&&(l=h(!0))},m=e=>{f.l&&e.navigationId&&I(f.l,e),n||d(!0),v("soft-navigation",e.navigationId,e.interactionId,e.name,e.startTime);const t=e.getLargestInteractionContentfulPaint?.();t&&y([t])},y=e=>{t.reportAllChanges||s||(e=e.slice(-1));for(const t of e){if(!t)continue;if("soft-navigation"===t.entryType){m(t);continue}let e=0,n=[],i=t.startTime;if("largest-contentful-paint"===t.entryType)e=Math.max(t.startTime-c(),0),f.h(t),n=[t];else if("interaction-contentful-paint"===t.entryType){const a=t;if(!u.navigationId)continue;if("interactionId"in a&&a.interactionId!=u.navigationInteractionId)continue;i=a.largestContentfulPaint?.renderTime||0,e=Math.max(i-t.startTime,0),a.largestContentfulPaint&&(f.h(a.largestContentfulPaint),n=[a.largestContentfulPaint])}i<l.firstHiddenTime&&(u.value=e,u.entries=n,d())}},w=["largest-contentful-paint"];s&&w.push("interaction-contentful-paint","soft-navigation");const b=T(w,y);if(b){d=r(e,u,j,t.reportAllChanges);const c=["keydown","click","visibilitychange"],l=e=>{if(e.isTrusted&&!n){const e=u.id;Z(()=>{if(!n){if(!s){b.disconnect();for(const e of c)removeEventListener(e,l,{capture:!0})}e===u.id&&(n=!0,d(!0))}})}};for(const e of c)addEventListener(e,l,{capture:!0});a(a=>{v("back-forward-cache",u.navigationId,u.navigationInteractionId,u.navigationURL,i()),d=r(e,u,j,t.reportAllChanges),o(()=>{u.value=performance.now()-a.timeStamp,n=!0,d(!0)})})}})})(k),R(k),((e,t={})=>{const n=h();P(b(()=>{let s,c=g("CLS",0);const d=p(t,y),l=(n,i,a,o,l)=>{c=g("CLS",0,n,i,a,o,l),d.i=0,s=r(e,c,A,t.reportAllChanges)},u=(e=!1)=>{d.i>c.value&&(c.value=d.i,c.entries=d.o),s(e)},f=e=>{u(!0),l("soft-navigation",e.navigationId,e.interactionId,e.name,e.startTime)},h=e=>{for(const t of e)"soft-navigation"!==t.entryType?d.h(t):f(t);u()},v=["layout-shift"];w(t)&&v.push("soft-navigation");const m=T(v,h);m&&(s=r(e,c,A,t.reportAllChanges),n.onHidden(()=>{h(m.takeRecords()),s(!0)}),a(()=>{l("back-forward-cache",c.navigationId,c.navigationInteractionId,c.navigationURL,i()),o(s)}),setTimeout(s))}))})(k),P(k),((e,t={})=>{const n=w(t);let o=g("TTFB"),d=r(e,o,B,t.reportAllChanges);N(()=>{const l=s();if(l){const s=l.responseStart;o.value=Math.max(s-c(),0),o.entries=[l],d(!0),a(()=>{o=g("TTFB",0,"back-forward-cache",o.navigationId,o.navigationInteractionId,o.navigationURL,i()),d=r(e,o,B,t.reportAllChanges),d(!0)}),n&&T(["soft-navigation"],n=>{n.forEach(n=>{n.navigationId&&(o=g("TTFB",0,"soft-navigation",n.navigationId,n.interactionId,n.name,n.startTime),o.entries=[n],d=r(e,o,B,t.reportAllChanges),d(!0))})},t)}})})(k));const z=e=>{const{error:t,message:n,filename:i,lineno:a,colno:r}=e;if(null!=t)return void E(L(t,"onerror"));const o=i?ee(`at ${i}:${a??0}:${r??0}`):[];E({...L(n??"","onerror"),frames:o})},M=e=>E(L(e.reason,"unhandledrejection")),$=()=>{"hidden"===document.visibilityState&&m()};window.addEventListener("error",z),window.addEventListener("unhandledrejection",M),document.addEventListener("visibilitychange",$),window.addEventListener("pagehide",m);const _=window.setInterval(m,n.flushIntervalMs??6e4),F=t(e=>E(L(e,"boundary"))),U={flush:m,reportError:e=>E(L(e,"boundary")),stop(){v||(m(),v=!0,window.removeEventListener("error",z),window.removeEventListener("unhandledrejection",M),document.removeEventListener("visibilitychange",$),window.removeEventListener("pagehide",m),window.clearInterval(_),F(),ae===U&&(ae=null))}};return ae=U,U}export{se as startClientTelemetry};
|
|
1
|
+
import{VERSION as e}from"./chunk-F5XBJE54.js";import{setBoundaryErrorReporter as t}from"./chunk-KNUR2UEG.js";var n=-1,i=()=>n,a=e=>{addEventListener("pageshow",t=>{t.persisted&&(n=t.timeStamp,e(t))},!0)},r=(e,t,n,i)=>{let a,r;return o=>{var s,c;t.value>=0&&(o||i)&&(r=t.value-(a??0),(r||void 0===a)&&(a=t.value,t.delta=r,t.rating=(s=t.value)>(c=n)[1]?"poor":s>c[0]?"needs-improvement":"good",e(t)))}},o=e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))},s=()=>{const e=performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},c=()=>s()?.activationStart??0,d=-1,l=/* @__PURE__ */new Set,u=()=>"hidden"!==document.visibilityState||document.prerendering?1/0:0,f=e=>{if("hidden"===document.visibilityState){if("visibilitychange"===e.type)for(const e of l)e();isFinite(d)||(d="visibilitychange"===e.type?e.timeStamp:0,removeEventListener("prerenderingchange",f,!0))}},h=(e=!1)=>{if(e&&(d=1/0),d<0){const e=c(),t=document.prerendering?void 0:globalThis.performance.getEntriesByType("visibility-state").find(t=>"hidden"===t.name&&t.startTime>=e)?.startTime;d=t??u(),addEventListener("visibilitychange",f,!0),addEventListener("prerenderingchange",f,!0),a(()=>{setTimeout(()=>{d=u()})})}return{get firstHiddenTime(){return d},onHidden(e){l.add(e)}}},g=(e,t=-1,n,a=0,r,o,d)=>{const l=s(),u=l?.navigationId||0;let f="navigate";return n?f=n:i()>=0?f="back-forward-cache":l&&(document.prerendering||c()>0?f="prerender":document.wasDiscarded?f="restore":l.type&&(f=l.type.replace(/_/g,"-"))),{name:e,value:t,rating:"good",delta:0,entries:[],id:`v6-${Date.now()}-${Math.floor(8999999999999*Math.random())+1e12}`,navigationType:f,navigationId:a||u,navigationInteractionId:r,navigationURL:o||l?.name,navigationStartTime:d||0}},v=/* @__PURE__ */new WeakMap;function p(e,t){let n=v.get(t);return n||(n=/* @__PURE__ */new WeakMap,v.set(t,n)),n.get(e)||n.set(e,new t),n.get(e)}var m,y=class{t;i=0;o=[];h(e){if(e.hadRecentInput)return;const t=this.o[0],n=this.o.at(-1);this.i&&t&&n&&e.startTime-n.startTime<1e3&&e.startTime-t.startTime<5e3?(this.i+=e.value,this.o.push(e)):(this.i=e.value,this.o=[e]),this.t?.(e)}},T=(e,t,n={})=>{try{const i=e.filter(e=>PerformanceObserver.supportedEntryTypes.includes(e));if(i.length>0){const e=new PerformanceObserver(e=>{queueMicrotask(()=>{const n=e.getEntries();i.length>1&&n.sort((e,t)=>e.startTime+e.duration-(t.startTime+t.duration)),t(n)})});for(const t of i)e.observe({type:t,buffered:!0,...n});return e}}catch{}},w=e=>globalThis.PerformanceObserver?.supportedEntryTypes?.includes("soft-navigation")&&"function"==typeof globalThis.PerformanceSoftNavigation?.prototype?.getLargestInteractionContentfulPaint&&e&&e.reportSoftNavs,I=(e,t)=>{if(e.set(t.navigationId,t),e.size>2){const t=e.keys().next().value;void 0!==t&&e.delete(t)}},b=e=>{let t=!1;return()=>{t||(e(),t=!0)}},E=class{l},C=e=>{document.prerendering?addEventListener("prerenderingchange",e,!0):e()},L=[1800,3e3],P=(e,t={})=>{const n=w(t);C(()=>{const s=p(t,E),d=h();let l,u=g("FCP");const f=T(["paint"],e=>{for(const t of e)"first-contentful-paint"===t.name&&(f.disconnect(),t.startTime<d.firstHiddenTime&&(u.value=Math.max(t.startTime-c(),0),u.entries.push(t),u.navigationId=t.navigationId||u.navigationId,l(!0)))});f&&(l=r(e,u,L,t.reportAllChanges),a(n=>{u=g("FCP",-1,"back-forward-cache",u.navigationId,u.navigationInteractionId,u.navigationURL,i()),l=r(e,u,L,t.reportAllChanges),o(()=>{u.value=performance.now()-n.timeStamp,l(!0)})})),n&&T(["soft-navigation"],n=>{n.forEach(n=>{s.l&&n.navigationId&&I(s.l,n);const i=Math.max((n.presentationTime||n.paintTime||0)-n.startTime,0);u=g("FCP",i,"soft-navigation",n.navigationId,n.interactionId,n.name,n.startTime),l=r(e,u,L,t.reportAllChanges),l(!0)})},t)})},A=[.1,.25],k=0,S=1/0,z=0,M=e=>{for(const t of e)t.interactionId&&(S=Math.min(S,t.interactionId),z=Math.max(z,t.interactionId),k=z?(z-S)/7+1:0)},$=()=>m?k:performance.interactionCount??0,_=class{u=0;v=[];m=/* @__PURE__ */new Map;p;T;_(){return $()-this.u}M(){this.u=$(),this.v.length=0,this.m.clear()}L(e){const t=this._(),n=Math.min(this.v.length-1,Math.floor(t/50));return!t||-1!==n||"soft-navigation"!==e&&"back-forward-cache"!==e?this.v[n]:{P:8,id:-1,entries:[]}}h(e){if(this.p?.(e),!e.interactionId)return;const t=this.v.at(-1);let n=this.m.get(e.interactionId);if(n||this.v.length<10||e.duration>t.P){if(n?e.duration>n.P?(n.entries=[e],n.P=e.duration):e.duration===n.P&&e.startTime===n.entries[0].startTime&&n.entries.push(e):(n={id:e.interactionId,entries:[e],P:e.duration},this.m.set(n.id,n),this.v.push(n)),this.v.sort((e,t)=>t.P-e.P),this.v.length>10){const e=this.v.splice(10);for(const t of e)this.m.delete(t.id)}this.T?.(n)}}},F=e=>{const t="requestIdleCallback"in globalThis?1e3:0,n=globalThis.requestIdleCallback||setTimeout,i=globalThis.cancelIdleCallback||clearTimeout;if("hidden"===document.visibilityState)e();else{const a=b(e);let r=-1;const o=()=>{i(r),a()};addEventListener("visibilitychange",o,{once:!0,capture:!0}),r=n(()=>{removeEventListener("visibilitychange",o,{capture:!0}),a()},{timeout:t})}},Z=[200,500],R=(e,t={})=>{if(!globalThis.PerformanceEventTiming||!("interactionId"in PerformanceEventTiming.prototype))return;const n=h();C(()=>{"interactionCount"in performance||m||(m=T(["event"],M,{durationThreshold:0}));let o,s=g("INP");const c=p(t,_),d=(n,i,a,d,l)=>{c.M(),s=g("INP",-1,n,i,a,d,l),o=r(e,s,Z,t.reportAllChanges)},l=()=>{const e=c.L(s.navigationType);e&&e.P!==s.value&&(s.value=e.P,s.entries=e.entries,o())},u=e=>{l(),o(!0),d("soft-navigation",e.navigationId,e.interactionId,e.name,e.startTime)},f=(e,t=!1)=>{F(()=>{for(const t of e)"soft-navigation"!==t.entryType?c.h(t):u(t);l(),t&&o(!0)})},h=["event","first-input"];w(t)&&h.push("soft-navigation");const v=T(h,f,{...t,durationThreshold:t.durationThreshold??40});o=r(e,s,Z,t.reportAllChanges),v&&(n.onHidden(()=>{f(v.takeRecords(),!0)}),a(()=>{d("back-forward-cache",s.navigationId,s.navigationInteractionId,s.navigationURL,i())}))})},x=class{p;l;h(e){this.p?.(e)}},B=[2500,4e3],j=[800,1800],N=e=>{document.prerendering?C(()=>N(e)):"complete"!==document.readyState?addEventListener("load",()=>N(e),!0):setTimeout(e)};var U=/^[A-Za-z0-9/_:.\-[\]{}*@~]+$/,O=/^[A-Za-z_$][A-Za-z0-9_$.]*$/,H=/^[A-Za-z0-9][A-Za-z0-9.+_-]*$/;var q=class{constructor(e){this.head=e}head;events=[];waiting=/* @__PURE__ */new Map;seen=/* @__PURE__ */new Set;get size(){return this.events.length}addVital(e){this.events.push(e)}addError(e){const t=function(e){return e.frames.length?`${e.name}|${e.frames.join("|")}`:`${e.name}|${e.message.replace(/\d/g,"0")}`}(e),n=this.waiting.get(t);return n?(n.count=Math.min(1e3,n.count+e.count),!0):!(this.seen.has(t)||this.seen.size>=20)&&(this.seen.add(t),this.waiting.set(t,e),this.events.push(e),!0)}drain(){const e=this.events;this.events=[],this.waiting.clear();const t=[],n=JSON.stringify({...this.head,events:[]}).length;let i=[],a=n;for(const r of e){const e=JSON.stringify(r).length+1;n+e>30720||((50===i.length||a+e>30720)&&(t.push({...this.head,events:i}),i=[],a=n),i.push(r),a+=e)}return i.length&&t.push({...this.head,events:i}),t}},J=/[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}/g,K=/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}(?:\.[A-Za-z0-9_-]*)?|\b[Bb]earer\s+[A-Za-z0-9._~+/=-]{8,}/g,W=/\b[a-z][a-z0-9+.-]*:\/\/\S+/gi,D=/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,V=/\d{4,}/g,G=/(^|[/:])(?:\d+|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}|[0-9a-f]{16,})(?=$|[/:])/gi,X=/^[a-z][a-z0-9+.-]*:\/\/[^/]*/i,Q=/(?:\(|@|\bat\s+)?((?:[a-z][a-z0-9+.-]*:\/\/|\/)[^\s()@]*?):(\d+):(\d+)\)?\s*$/i;function Y(e,t,n){const i=e.replace(X,"").split(/[?#]/,1)[0];return i?`${i}:${t}:${n}`.slice(0,256):null}function ee(e){if("string"!=typeof e)return[];const t=[];for(const n of e.split("\n")){const e=Q.exec(n.trim()),i=e&&Y(e[1],e[2],e[3]);if(i&&t.push(i),5===t.length)break}return t}function te(e){const t=e instanceof Error?e.name:void 0;return"string"==typeof t&&t.length<=64&&O.test(t)?t:"Error"}function ne(e){if("string"!=typeof e)return"unknown";const t=e.trim().replace(X,"").split(/[?#]/,1)[0].replace(G,(e,t)=>":"===t?":id":`${t}:id`);return t&&t.length<=128&&!t.includes("//")&&U.test(t)?t:"unknown"}var ie={flush(){},reportError(){},stop(){}},ae=null,re=/* @__PURE__ */new Set(["LCP","FCP","TTFB"]);function oe(e,t,n){const i=t.getAccessToken();i&&n(t.endpoint??"/api/client-telemetry/web-batches/",{method:"POST",keepalive:!0,credentials:"same-origin",headers:{"Content-Type":"application/json",Authorization:`Bearer ${i}`},body:JSON.stringify(e)}).catch(e=>{console.debug("[efficient-shell] client telemetry batch dropped:",e)})}function se(n){if(ae?.stop(),ae=null,!1===n.enabled||"undefined"==typeof window||"undefined"==typeof document)return ie;if(!function(e){const t="string"==typeof e.app&&H.test(e.app),n="string"==typeof e.release&&H.test(e.release);return t&&n||console.warn("[efficient-shell] client telemetry not started: `app` and `release` must be version-like strings."),t&&n}(n))return ie;const d=n.fetch??window.fetch.bind(window),l=new q({app:n.app,release:n.release,shell_version:H.test(e)?e:""}),u=ne(n.routeKey()),f=function(e=("undefined"==typeof window?void 0:window)){if(!e)return"desktop";const t="function"==typeof e.matchMedia&&e.matchMedia("(pointer: coarse)").matches,n=e.innerWidth;return n<600?"mobile":t&&n<1280?"tablet":"desktop"}(window);let v=!1;const m=()=>{for(const e of l.drain())oe(e,n,d)},E=e=>{v||(l.addError(e),l.size>=50&&m())},L=(e,t)=>{return{type:"error",source:t,name:te(e),message:(a=e,i=a instanceof Error?a.message:"string"==typeof a?a:a&&"object"==typeof a&&"string"==typeof a.message?a.message:"",i.slice(0,640).replace(J,"[redacted]").replace(K,"[redacted]").replace(W,"[url]").replace(D,"[id]").replace(V,"[n]").replace(/\s+/g," ").trim().slice(0,160)),frames:ee(e instanceof Error?e.stack:void 0),route:ne(n.routeKey()),count:1};var i,a},k=e=>{v||(l.addVital(function(e,t,n,i){return{type:"vital",name:e.name,value:e.value,route:re.has(e.name)?t:n(),navigation:e.navigationType??"navigate",device:i}}(e,u,()=>ne(n.routeKey()),f)),l.size>=50&&m())},S=n.vitalsSampleRate??1;S>0&&(S>=1||(n.random??Math.random)()<S)&&(((e,t={})=>{let n=!1;const s=w(t);C(()=>{let d,l=h(),u=g("LCP");const f=p(t,x),v=(i,a,o,s,c)=>{u=g("LCP",-1,i,a,o,s,c),d=r(e,u,B,t.reportAllChanges),n=!1,"soft-navigation"===i&&(l=h(!0))},m=e=>{f.l&&e.navigationId&&I(f.l,e),n||d(!0),v("soft-navigation",e.navigationId,e.interactionId,e.name,e.startTime);const t=e.getLargestInteractionContentfulPaint?.();t&&y([t])},y=e=>{t.reportAllChanges||s||(e=e.slice(-1));for(const t of e){if(!t)continue;if("soft-navigation"===t.entryType){m(t);continue}let e=0,n=[],i=t.startTime;if("largest-contentful-paint"===t.entryType)e=Math.max(t.startTime-c(),0),f.h(t),n=[t];else if("interaction-contentful-paint"===t.entryType){const a=t;if(!u.navigationId)continue;if("interactionId"in a&&a.interactionId!=u.navigationInteractionId)continue;i=a.largestContentfulPaint?.renderTime||0,e=Math.max(i-t.startTime,0),a.largestContentfulPaint&&(f.h(a.largestContentfulPaint),n=[a.largestContentfulPaint])}i<l.firstHiddenTime&&(u.value=e,u.entries=n,d())}},w=["largest-contentful-paint"];s&&w.push("interaction-contentful-paint","soft-navigation");const b=T(w,y);if(b){d=r(e,u,B,t.reportAllChanges);const c=["keydown","click","visibilitychange"],l=e=>{if(e.isTrusted&&!n){const e=u.id;F(()=>{if(!n){if(!s){b.disconnect();for(const e of c)removeEventListener(e,l,{capture:!0})}e===u.id&&(n=!0,d(!0))}})}};for(const e of c)addEventListener(e,l,{capture:!0});a(a=>{v("back-forward-cache",u.navigationId,u.navigationInteractionId,u.navigationURL,i()),d=r(e,u,B,t.reportAllChanges),o(()=>{u.value=performance.now()-a.timeStamp,n=!0,d(!0)})})}})})(k),R(k),((e,t={})=>{const n=h();P(b(()=>{let s,c=g("CLS",0);const d=p(t,y),l=(n,i,a,o,l)=>{c=g("CLS",0,n,i,a,o,l),d.i=0,s=r(e,c,A,t.reportAllChanges)},u=(e=!1)=>{d.i>c.value&&(c.value=d.i,c.entries=d.o),s(e)},f=e=>{u(!0),l("soft-navigation",e.navigationId,e.interactionId,e.name,e.startTime)},h=e=>{for(const t of e)"soft-navigation"!==t.entryType?d.h(t):f(t);u()},v=["layout-shift"];w(t)&&v.push("soft-navigation");const m=T(v,h);m&&(s=r(e,c,A,t.reportAllChanges),n.onHidden(()=>{h(m.takeRecords()),s(!0)}),a(()=>{l("back-forward-cache",c.navigationId,c.navigationInteractionId,c.navigationURL,i()),o(s)}),setTimeout(s))}))})(k),P(k),((e,t={})=>{const n=w(t);let o=g("TTFB"),d=r(e,o,j,t.reportAllChanges);N(()=>{const l=s();if(l){const s=l.responseStart;o.value=Math.max(s-c(),0),o.entries=[l],d(!0),a(()=>{o=g("TTFB",0,"back-forward-cache",o.navigationId,o.navigationInteractionId,o.navigationURL,i()),d=r(e,o,j,t.reportAllChanges),d(!0)}),n&&T(["soft-navigation"],n=>{n.forEach(n=>{n.navigationId&&(o=g("TTFB",0,"soft-navigation",n.navigationId,n.interactionId,n.name,n.startTime),o.entries=[n],d=r(e,o,j,t.reportAllChanges),d(!0))})},t)}})})(k));const z=e=>{const{error:t,message:n,filename:i,lineno:a,colno:r}=e;if(null!=t)return void E(L(t,"onerror"));const o=i?ee(`at ${i}:${a??0}:${r??0}`):[];E({...L(n??"","onerror"),frames:o})},M=e=>E(L(e.reason,"unhandledrejection")),$=()=>{"hidden"===document.visibilityState&&m()};window.addEventListener("error",z),window.addEventListener("unhandledrejection",M),document.addEventListener("visibilitychange",$),window.addEventListener("pagehide",m);const _=window.setInterval(m,n.flushIntervalMs??6e4),Z=t(e=>E(L(e,"boundary"))),U={flush:m,reportError:e=>E(L(e,"boundary")),stop(){v||(m(),v=!0,window.removeEventListener("error",z),window.removeEventListener("unhandledrejection",M),document.removeEventListener("visibilitychange",$),window.removeEventListener("pagehide",m),window.clearInterval(_),Z(),ae===U&&(ae=null))}};return ae=U,U}export{se as startClientTelemetry};
|
|
@@ -379,7 +379,7 @@ declare const efficientIconMeanings: {
|
|
|
379
379
|
readonly warning: "Warning";
|
|
380
380
|
readonly weight: "HOW HEAVY A STROKE IS — a font's weight, and a rule's thickness. It was written as “font weight” alone until the storefront's `Thickness` row (a footer divider, 1-8px) needed it: both settings make a mark heavier, and that is what the drawing shows. ⚠️ NOT `line-style`, which is WHICH DASH a rule is drawn with — solid, dashed, dotted — a different question about the same rule. Extended on card [FIX] The 176 Settings Rows With No Picture, 2026-09-23";
|
|
381
381
|
readonly wheel: "Wheel";
|
|
382
|
-
readonly widgets: "WIDGETS - the small live panels a person puts on the desktop (clock, weather, stock, calculator and the rest). Worn by the desktop right-click row \"Manage Widgets
|
|
382
|
+
readonly widgets: "WIDGETS - the small live panels a person puts on the desktop (clock, weather, stock, calculator and the rest). Worn by the desktop right-click row \"Manage Widgets\" and whatever opens the widget manager. Added 2026-10-13 (GG for Lewis: one icon means one thing; Manage Widgets drew `grid`, which is Snap to Grid's). NOT a plug-in or extension, and NOT `apps` or `layout`.";
|
|
383
383
|
readonly width: "width";
|
|
384
384
|
readonly window: "window";
|
|
385
385
|
readonly windows: "Used in shell src/shell/WindowManager.tsx:1051";
|
package/dist/icons/efficient.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";var r={"academic-cap":"academic-cap",accent:"the ACCENT — the site's one emphasis, the phrase picked out inside a heading. Worn by `Accent` on the Text tab and by `Brand colour` on the Theme tab. ONE drawing for both, for two reasons that hold each other up. (1) `accent` is a NAMED ROLE on this site, not a coincidence of spelling: it is declared as a font role (`FONT_ROLES`) and as a colour role (`WORD_STYLE_COLOURS`). The Text tab's `Accent` sets that role's TYPEFACE; the Theme tab's `Brand colour` sets the colour it is painted in. One role, two halves — which is why one drawing serves both. (2) the Site styles Theme tab names every colour row by the ELEMENT it colours and never by a glyph meaning \"colour\" — `Text colour` wears `type`, `Label colour` wears `text-small`, `Page background` wears `page` (ThemeField ROW_ICON, card 66205). The glyph names the element; the row says what it sets. Card 66310, 2026-09-01. ⚠️ THIS CORRECTS TWO EARLIER GOES AT THIS SENTENCE, and the RULING survived both — one drawing still serves both rows and the drawing has not moved. 66310's own first entry said the two rows keep the key `accent` in one place, which is not so. es#36 replaced that with a NUMBER, and a number is the wrong shape here: counting what `accent` IS gives the role declarations above, while counting where an accent VALUE lives gives the typeface, the preset colour and — since card 66307 — the site brand colour. Both counts are true, of different things, so a figure that needs its counting rule carried beside it will be misread in a one-line entry. The structure is what does not move. Corrected on card 66315, 2026-09-01. Not \"a star\" — a star borrowed for any other row would be a second meaning on one SVG, which is the rule this set is written under",account:"a person — the account / sign-in row and the header's account icon","account-circle":"account-circle",add:"Add / plus","add-circle":"Used in shell src/apps/PomodoroTimer.tsx:412","add-person":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",adjust:"adjust","align-center":"align center","align-justify":"JUSTIFY — text whose rows run edge to edge. Worn by the Justify button on the final text box's second toolbar row, beside Left, Center and Right, and by the Justify chip of the alignment strip. Three full-width rows on the same three heights the other alignment glyphs use. Decided 2026-10-06 (the design was made final that day).","align-left":"WHICH WAY content is aligned — worn by the `Alignment` row of the campaign editor's Text, Button, Badge, Divider and Social blocks, and by the storefront part panel's `align` row (efficient-shop PartSettingsPanel FIELD_ICONS). The row's own segments draw each answer; this names the question.","align-right":"align right","align-separate":"align separate — the rows pushed apart to both edges",anchor:"anchor",animation:'how a thing MOVES — the `Animation` settings tab, the second of the two tabs of every settings panel (`Design · Animation`, owner 2026-10-08, final 2026-10-10). Owner, 2026-09-11, asked for the tab himself, like Wix\'s, so that every element can have a motion. The drawing is the owner\'s own pick (2026-10-09, option C of the tab glyphs: a moving block): a block with speed lines trailing behind it, so it names MOVEMENT ITSELF rather than any one motion — Entrance, Scroll, Hover, Click and Loop are all rows under this tab. Its partner on the strip is `adjust` (sliders), the Design tab. NOT `play`, whose entry says only "play": a triangle is video PLAYBACK — this glyph WAS a triangle with motion lines until 2026-10-13, and the owner did not like it ("动画的icon 我不喜欢"). NOT `rotate`, turning a thing in place, one motion out of many. NOT `direction`, which says WHICH WAY a thing travels. NOT `hover`, the pointer resting on a card: one MOMENT which can start a motion, never the motion.',apps:"Used in shell src/shell/Desktop.tsx:1232","archive-box":"archive-box",arrow:"One meaning; heroicons ships each direction as its own file.","arrow-down":"arrow-down","arrow-left":"arrow-left","arrow-left-end-on-rectangle":"arrow-left-end-on-rectangle","arrow-long-right":"arrow-long-right","arrow-right":"arrow-right","arrow-trending-down":"arrow-trending-down","arrow-trending-up":"arrow-trending-up","arrow-up":"arrow-up","arrow-up-right":"arrow-up-right","at-symbol":"at-symbol",attach:"attach",background:"the BAND A SECTION LAYS DOWN — the section's own background, the thing other boxes sit on top of. Worn by `Section background` and `Backdrop` in the admin portal's email editor (src/components/email/puckConfig.tsx:784 and :2398), both of which inherit from the theme and reset with 'Back to the theme color', and by the four section-band `Background` rows in efficient-shop's `backgroundField`. ⚠️ ITS ORIGINAL REASON IS DEAD AND IS KEPT HERE ONLY SO NOBODY REVIVES IT. This entry used to read \"the `Background` row of the section panel's `Colour` group (card 66313), whose choices are Page / Dark / Accent\". That picker is gone: card 66510 removed the choice, `ss.section-theme-picker` stopped the renderer reading the stored value, and the last 62 stored keys were cleared on 2026-09-03. A glyph outliving its stated reason is the `contrast` case — right on screen, dead why — and here it cost a real decision: PR #1456 ruled against this glyph because of that sentence and put `ground` on the four shop rows instead. ⚠️ NOT `ground`, which is the fill of the BOX the content sits in and covers this band — the two sit one line apart in the email editor's section panel, and that pair is the definition. The test is not what colour is set but WHAT SURFACE: a section's own band is `background`; a box drawn on top of it, at any level, is `ground`. Card 66315, 2026-09-01; reason replaced with a live one 2026-09-23",bag:"bag",bank:"Used in admin-portal src/pages/integrations/providerIcons.tsx:32","bars-3-bottom-left":"bars-3-bottom-left",battery:"Used in shell src/shell/Desktop.tsx:1254",beaker:"beaker",bell:"Notification bell","bell-alert":"bell-alert","bell-plus":"bell-plus",billing:"Used in admin-portal src/shell-config/nav.tsx:108","black-and-white":"colour taken out of a picture on purpose — the `Black and white` row of the three storefront photography sections and `Black and white logos` on the Logos strip. `doc/naming.md` N10.1 fixes those words and forbids `Grayscale` (owner ruling 2026-08-28), so the glyph is named for the idea the shop says out loud. ⚠️ A HALF-FILLED CIRCLE WAS DRAWN FIRST AND REJECTED: that is what `contrast` already is, and `contrast` heads the Theme tab. This is a PICTURE with one half ruled out, which is the thing the row does. Hatched rather than filled, because the house standard for this set is stroke on currentColor and no baked plate. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22","block-badge":"the BADGE block - a small word pinned on a product, like NEW. Worn by a Badge row in the Layers tree and the Badge tile. Decided 2026-09-17. NOT `tag`, which the owner ruled is the `label` field row (2026-09-05), not a badge.","block-banner":"the BANNER block - words laid over an image. Worn by a Banner row in the Layers tree and the Banner tile, in both editors. Decided 2026-09-17. NOT `image` (a picture alone) and NOT `button`.","block-box":"the BOX block - a container that holds blocks (N8.1: `Box`). The campaign editor called it Group until Lewis renamed it Box, 2026-09-17. Worn by a Box row in the Layers tree and the Box tile, in both editors. NOT `direction`, whose arrows say which way a thing travels.","block-button":"the BUTTON block - one call to action in an email. Worn by a Button row in the Layers tree and the Button tile. Decided 2026-09-17. NOT `button`, whose entry is the settings ROW for a button's own look - the row and the block are two ideas.","block-column":"one COLUMN of a Section block - the slot its blocks stand in. Worn by the `Column 1` / `Column 2` rows of the Layers tree. Decided 2026-09-17. NOT `columns`, which is three bars and answers HOW MANY columns, not which one.","block-coupon":"the COUPON CODE block - a ticket with the code each person gets. Worn by its Layers row and the Coupon code tile. Decided 2026-09-17. The dashed line is the tear line where the code sits.","block-divider":"the DIVIDER block - a rule between things, in an email and on a website page. Worn by a Divider row in the Layers tree and the Divider tile, in both editors. Decided 2026-09-17. NOT `plus-minus` or any settings row: it is the block itself.","block-footer":"the FOOTER block - the bottom of an email or of a website page, pinned last. Worn by the Footer row in the Layers tree, in both editors. Decided 2026-09-17. NOT `page` and NOT `layout`: it is the block, not the page or its settings.","block-heading":"the HEADING block - the legacy heading kind older campaigns still hold (GTS-8 has six). Worn by its Layers row. Decided 2026-09-17. NOT `type`, the T that marks text settings, and NOT `text-size`.","block-image":"Image / photo","block-included-list":"the INCLUDED LIST block - model names on the left, prices on the right, row by row. Worn by its Layers row and the Included list tile. Decided 2026-09-17. NOT `list`, which is worn by the Header panel's menu item.","block-layered-images":"the LAYERED IMAGES block - one picture laid over another. Worn by its Layers row and the Layered images tile. Decided 2026-09-17. NOT `image` (one picture) and NOT `copy` (two pages, a clipboard action).","block-product":"the PRODUCT block - one catalogue product quoted in an email, its price and its buttons (the Add tile that said `Price` becomes `Product`, Lewis 2026-09-17). Drawn as a PACKAGE: the thing sold. Worn by its Layers row and tile. NOT `dollar`, worn by the price field row, NOT `tag`, the label row, and NOT `cart`, which is buying.. ⚠️ AND IT IS ALREADY WORN IN THE SHOP, which this entry did not say until now. `GalleryProductBinding`, `GalleryShowcaseSource`, `ProductPicker` and `SpecTableSource` each draw a `Product` row with this glyph, and the storefront config's own `Product` picker joins them. One catalogue product, whether it is quoted in an email or picked in a panel. Recorded on card [FIX] The 176 Settings Rows With No Picture, 2026-09-23, because pre-existing silent reuse is still silent reuse and is worse undocumented than documented","block-product-title":"Used in admin-portal src/components/email/emailBlockIcons.tsx:145","block-section":"the SECTION block - one full-width band of an email that holds one to four columns of blocks. Worn by a Section row in the Layers tree and the Section tile. Decided 2026-09-17. NOT `layout` (the Layout settings tab) and NOT `columns` (three bars, a count of columns).","block-social":"the SOCIAL block - links to whichever social platforms the business has, never one platform's mark. Worn by a Social row in the Layers tree and the Social tile, in both editors. Decided 2026-09-17. NOT `link` (one link) and NOT `share` actions.","block-spacer":"the SPACER block - empty room between blocks, in an email and on a website page. Worn by a Spacer row in the Layers tree and the Spacer tile, in both editors. Decided 2026-09-17. NOT `gap` (the air between cards, a settings row) and NOT `padding-top`.","block-text":"the TEXT block - a run of words a person types into an email. Worn by a Text row in the Layers tree and the Text tile. Decided 2026-09-17. NOT `text-lines`, which is WORN already by the body-text field row and the Content tab (efficient-shop FieldGlyph.tsx) - a block row wearing it would be one drawing with two meanings.","block-video":"the VIDEO block - a video shown in an email as a poster with a play mark. Worn by its Layers row and the Video tile. Decided 2026-09-17. NOT `play`: a bare triangle is playback, and this is the block that holds a video.","blog-post":"one written article of a series — the `Blog posts` and `Blog post source` rows of the storefront's blog panels. An article laid out: a picture block, its headline beside it, the body beneath. ⚠️ NOT `page`, and that is the whole reason this drawing exists: `page` means a PAGE of the site and the Pages rail, one meaning by the owner's ruling of 2026-08-20, so a blog row wearing it would say a post is a page. NOT `note`, which is a short note ABOUT a thing rather than the thing, and NOT `text-lines`, which is body copy with no article around it. ⚠️ IT IS THE DENSEST DRAWING IN THE SET AND THAT IS DELIBERATE: the block-beside-lines arrangement is what separates it from `page` at 16px, and a simpler page-with-a-heading was drawn first and thrown away because it WAS `page` with an extra stroke. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22",bold:"the BOLD mark — the toolbar button that writes `**words**` (Strong, ⌘B) over the selection in the copy box's formatting bar. A capital B, the letter every word processor puts on this button. One idea: the mark, not a weight setting. Decided 2026-10-02.",bolt:"bolt","book-open":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",bookmark:"Used in admin-portal src/pages/Notepad.tsx:480","bookmark-square":"bookmark-square",braces:"INSERT A MERGE TAG — a word that fills in for each reader ({{first_name}}, a coupon code). Worn by the Insert button the campaign designer puts in the 9th cell of the final text box's first toolbar row (`CopyBox` `lastTool`), which opens its list of tags. Two curly braces, the shape a merge tag is written in. Decided 2026-10-07. ⛔ NOT `code` or a pair of angle brackets: nothing here is code, and the braces are the tag's own spelling.",breadcrumb:"the trail back up to where a shopper came from — the `Breadcrumb` row of the storefront Gallery panel's `Show / hide elements` group. NOT `sitemap`, which is the whole structure of a site rather than one path through it, and NOT `chevron`, which is a disclosure. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",briefcase:"Used in admin-portal src/pages/integrations/providerIcons.tsx:48",bug:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","bug-ant":"bug-ant","building-library":"building-library","building-office-2":"building-office-2",button:'a call-to-action on the page — the settings row for a button\'s own look. ⚠️ NAMED BY CARD 66310, 2026-09-01; it used to read "button", which is a SHAPE, and a shape claims nothing, so nothing stopped a second meaning attaching to this drawing. Measured the same day: `ButtonIcon` has no call site in efficient-shop, in efficient-admin, or in this repo — it is drawn and not yet wired to a row',"button-arrow":"the arrow a button carries after its words — the `Arrow` row of the storefront Button block. ⚠️ IT IS NEITHER OF THE TWO GLYPHS IT SITS BETWEEN. `button` is the settings row for a button's own look, and this row is one detail inside that; `direction-right` is which way a thing SCROLLS. Here the button and its arrow are drawn together because the row is about the pair. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",calculator:"calculator",calendar:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","calendar-check":"calendar-check",camera:"camera",caption:"Used in storefront packages/web-builder/src/components/FieldGlyph.tsx:140",car:"the shopper's own vehicle, which a product either fits or does not — the `Ask for the car first` row of the storefront Alloy wheels listing and the `Vehicle fitment` row of the Product hero. ⚠️ NOT `wheel`, which is the PRODUCT this shop sells; this is the thing the product has to fit, and a panel that drew both rows with `wheel` would say the two questions are the same question. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22","card-payment":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",caret:"Used in storefront packages/web-builder/src/components/storefront-editor.css:964",cart:"Cart",case:"letter case","case-lower":"letter case ALL SMALL LETTERS — `aa`, the `Lowercase` option of the Letter case buttons on the campaign editor's Text block, and of the storefront part panel's Case strip. Two one-storey a's. Decided 2026-10-06.","case-normal":"letter case LEFT AS TYPED — `Aa`, the `Normal` option of the Letter case buttons (Normal / Uppercase / Lowercase) on the campaign editor's Text block, and of the storefront part panel's Case strip. The plan calls it sentence case; it changes nothing the merchant typed. A capital A beside a one-storey a. Decided 2026-10-06.","case-upper":"letter case ALL CAPITALS — `AA`, the `Uppercase` option of the Letter case buttons on the campaign editor's Text block, and of the storefront part panel's Case strip. Two capital A's. Decided 2026-10-06.",category:"the group of products a merchant files a thing under — the `Category` row of the storefront's Product picker, Gallery showcase, Spec table and Product hero source panels. A FOLDER: the drawer several products live in. ⚠️ NOT `tag`, which is the shell's luggage tag and already draws a storefront `Label` row — a tag is one name pinned on one thing, a category is the drawer it is filed in, and a panel that drew both with one picture would say those are the same question. NOT `layers`, which is the Layers panel and means stacking order, and NOT `grid`, which is a layout of equal cells. ALSO WORN BY THE `Collection` ROW, ON PURPOSE — see the note in that row's own panel: a collection is a curated group of products and a category is the catalogue's own, but both are \"the group this is filed under\", and four separate drawings for a collection were made and thrown away because none could be told from `grid`, `layers` or this folder at 16px. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22. …and the `Product type` row of a dynamic page template, which says which KIND of product (`alloy-wheel`, `tyre`) the template is written for. A category is a grouping the merchant invents and a product type is one the catalogue already has, but both answer “which drawer does this belong in”, which is what the folder draws. ⚠️ NOT `product-field`, whose sentence is “the words come from the catalogue record” — that names where a VALUE is read from, never which KIND a thing is. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",chart:"chart","chart-bar":"A bar chart: analytics, a report. Lewis 2026-10-13: the heroicons bar chart (the set's own three bars on a base read worse beside it).","chart-bar-square":"chart-bar-square","chart-line":"Used in shell src/apps/Preview.tsx:1811",chat:"Chat","chat-bubble-left-right":"chat-bubble-left-right","chat-bubble-oval-left-ellipsis":"chat-bubble-oval-left-ellipsis",check:"Checkmark / success","check-circle":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",checkbox:"Used in shell src/apps/PomodoroTimer.tsx:642",chevron:"Disclosure — rotate for direction","chevron-double":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","chevron-double-left":"chevron-double-left","chevron-double-right":"chevron-double-right","chevron-down":"chevron-down","chevron-left":"chevron-left","chevron-right":"chevron-right","chevron-up":"chevron-up","chevron-up-down":"Used in shell src/forms/Select.tsx:519","circle-stack":"circle-stack","clear-marks":"CLEAR MARKS — the toolbar button that takes every mark off the selection in the copy box's formatting bar (⌘⇧X), keeping the words and any link. A T with a small × at its foot: the text, with its marks crossed out. Decided 2026-10-02.",clipboard:"clipboard","clipboard-check":"Used in admin-portal src/pages/todo/TodoList.tsx:949","clipboard-document-list":"clipboard-document-list","clipboard-list":"Used in admin-portal src/pages/Dashboard.tsx:135",clock:"clock",close:"Close / dismiss","close-circle":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",cloud:"cloud","cloud-download":"cloud-download",code:"Used in shell src/shell/DevIndicator.tsx:17","code-bracket":"code-bracket",collapse:"collapse","collapse-all":"Used in easel src/screen/components/ScreenChrome.tsx:257","column-gap":"the air between columns SIDE BY SIDE — the `Gap between columns` row of the campaign editor's Section settings. Decided 2026-09-17. The GAP is the subject: two short upright bars with an arrowed space between them, drawn like `width`'s arrows. NOT `gap`, which is the air between STACKED things (the `Space between items` row wears that), and NOT `block-column`, whose two boxes the first draft read as at 16px (GG, 2026-09-17).","column-widths":"how the width is SHARED between a section's columns — the `Column widths` row of the campaign editor's Section settings (a ratio at two columns, shares at three). Decided 2026-09-17. NOT `columns`, which answers HOW MANY, and NOT `block-column`, a block kind that never wears a settings row.. …and the storefront's `Positions` row, where a block in a grid says how many CELLS it spans (`Auto`, `1 position`, `2 positions`, …). A share and a span are two answers to ONE question — how much of a multi-column row this thing takes — and the arrow across the bars draws the question rather than either answer. ⚠️ NOT `columns`, which is a COUNT of them; the two are told apart at 16px by that arrow. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",columns:"columns",company:"company",compose:"compose",contrast:"the Theme tab of the Site styles panel — where a site's one palette is set. ⚠️ THIS MEANING WAS REWRITTEN BY CARD 66310, 2026-09-01: it used to say the tab held light/dark pairs, and cards 66238/66239 deleted that — a theme is ONE FLAT palette now. The drawing did not move and does not need to; the filled half disc reads as TONE, which is what a palette sets. The fill is justified in `from` below and stays",cookie:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",copied:"copied",copy:'put this block on the clipboard so it can be pasted somewhere else — the `Copy` row (⌘C) of the block right-click menu the owner approved 2026-08-31. NOT `copy-to-page`, whose meaning is already "Copy to another page" and which names a DESTINATION rather than the clipboard. NOT `duplicate`, which sits two rows below this one in the same menu and makes a second block in place at once without ever touching the clipboard. Card 66400.a, 2026-09-02',"copy-style":"take a component's LOOK so it can be put on another one — the `Copy style` row (⌥⌘C) of the right-click menu in both editors, the campaign editor's block menu and the website editor's node menu. Decided 2026-09-19 (card [ADD] Copy Style And Paste Style; GG: one meaning per glyph, so it is not `copy`). The brush is the style; the back sheet is `copy`'s own, so the pair reads as \"copy, but the look\". NOT `copy`, which takes the whole block, and NOT `styles`, which opens the site's Styles panel.","copy-to-page":"Copy to another page",corner:"the `Which corners` row in a section's Style > Shape group, on the storefront editor",crop:"Used in shell src/apps/ImageAnnotator.tsx:573","cube-transparent":"cube-transparent",cursor:"Used in shell src/apps/ImageAnnotator.tsx:11","cursor-arrow-rays":"cursor-arrow-rays","cursor-click":"Used in shell src/apps/Preview.tsx:1953",dashboard:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",date:"Used in storefront packages/web-builder/src/components/FieldGlyph.tsx:129",desktop:"Desktop",diagram:"a measured drawing of a product rather than a photograph of it — the `Dimension diagram` row of the storefront Spec table. The object ruled on two sides. ⚠️ A CIRCLE OVER A DIMENSION LINE WAS DRAWN FIRST AND THROWN AWAY: at 16px a circle above a wide horizontal line is a head and shoulders, and the glyph read as a person. NOT `image`, which is a photograph, and NOT `width` or `height`, which are single settings a merchant TYPES; this is a picture the shopper is shown. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",direction:"which way this thing travels — the heading a merchant picks for a section's own motion. ⚠️ DRAWN FOR the `Scroll direction` row on the Scrolling Bar section AND NOT WORN BY IT. efficient-shop's `doc/naming.md` N10.1 gives the `Direction` idea a DASH in its Glyph column, and names `Direction` itself as one of the two reasons a row gets that dash: it is a MODIFIER, not a thing, and a modifier takes no leading glyph. So that row ships with no mark beside its label, and that is CORRECT rather than an omission — which is the whole reason this sentence is here, so the next reader does not file a bug against a row that is drawn the way it was decided. The marks a merchant actually presses are `direction-left`, `direction-right`, `direction-up` and `direction-down`, inside the control, and those four ARE worn. This glyph therefore has the same standing as `button`: drawn, correct, and not wired to a row. SS seat, 2026-09-11, recording that its own canvas drew a leading glyph in the field head and the naming table is what governs. ⚠️ AND IT NEVER HEADED THE HERO'S OVERLAY ROW, though it was briefed as if it did. The SS seat settled that row as a PLACEMENT on 2026-09-11: a lit cell there means where the DARK SITS, which is one of nine positions, which is what this shell's 3×3 grid already means at every one of its call sites — so that row draws the ordinary dots and wants nothing from this set. Both withdrawn claims are recorded rather than deleted, because a glyph that was once said to head a row is the first thing a later reader puts back. NOT `move-up` and NOT `move-down`, which REORDER a block inside its parent's list — card 66400.a's entries already say in writing that they do not scroll a view, which is exactly the thing this idea DOES say, so those are the first two glyphs a borrower will reach for and the two that must be refused hardest. NOT `chevron`, which is disclosure: its own meaning reads \"rotate for direction\", and that sentence is the one a borrower will read as permission — a chevron is turned to point AT the thing it opens, it never says which way anything travels. NOT `width`, which is a SPAN — how wide the content column may grow — and is double-headed for exactly that reason; a span names an extent, this names a heading. Owner, 2026-09-11","direction-down":"the direction a marquee travels — the bar runs downwards, so its content walks towards the bottom edge. Worn by the BOTTOM cell of the `Scroll direction` control on the Scrolling Bar section, which is the shell's 3×3 placement grid with four live cells, each drawing an arrow in place of the grid's dot. One of a family of four, and the family is one drawing turned: `direction-right` rotated a quarter turn at a time. ⚠️ NOT `move-up` and NOT `move-down`, and that refusal is the reason this entry is long. Those two are arrows, they are already in this set, and they mean the one thing these four must never be read as — REORDERING a block inside its parent's list, which their own entries say does not scroll a view. An arrow here that did not refuse them by name would be borrowed by one within a release. NOT `chevron`, which is disclosure and is turned to point AT the thing it opens. NOT `direction`, which is the row's LEADING glyph — the mark beside the label saying the row is about travel at all — where these four are the ANSWERS inside the control. Owner, 2026-09-11","direction-left":"the direction a marquee travels — the bar runs leftwards, so its content walks towards the left edge. Worn by the LEFT cell of the `Scroll direction` control on the Scrolling Bar section, which is the shell's 3×3 placement grid with four live cells, each drawing an arrow in place of the grid's dot. One of a family of four, and the family is one drawing turned: `direction-right` rotated a quarter turn at a time. ⚠️ NOT `move-up` and NOT `move-down`, and that refusal is the reason this entry is long. Those two are arrows, they are already in this set, and they mean the one thing these four must never be read as — REORDERING a block inside its parent's list, which their own entries say does not scroll a view. An arrow here that did not refuse them by name would be borrowed by one within a release. NOT `chevron`, which is disclosure and is turned to point AT the thing it opens. NOT `direction`, which is the row's LEADING glyph — the mark beside the label saying the row is about travel at all — where these four are the ANSWERS inside the control. Owner, 2026-09-11","direction-right":"the direction a marquee travels — the bar runs rightwards, so its content walks towards the right edge. Worn by the RIGHT cell of the `Scroll direction` control on the Scrolling Bar section, which is the shell's 3×3 placement grid with four live cells, each drawing an arrow in place of the grid's dot. One of a family of four, and the family is one drawing turned: `direction-right` rotated a quarter turn at a time. ⚠️ NOT `move-up` and NOT `move-down`, and that refusal is the reason this entry is long. Those two are arrows, they are already in this set, and they mean the one thing these four must never be read as — REORDERING a block inside its parent's list, which their own entries say does not scroll a view. An arrow here that did not refuse them by name would be borrowed by one within a release. NOT `chevron`, which is disclosure and is turned to point AT the thing it opens. NOT `direction`, which is the row's LEADING glyph — the mark beside the label saying the row is about travel at all — where these four are the ANSWERS inside the control. Owner, 2026-09-11","direction-up":"the direction a marquee travels — the bar runs upwards, so its content walks towards the top edge. Worn by the TOP cell of the `Scroll direction` control on the Scrolling Bar section, which is the shell's 3×3 placement grid with four live cells, each drawing an arrow in place of the grid's dot. One of a family of four, and the family is one drawing turned: `direction-right` rotated a quarter turn at a time. ⚠️ NOT `move-up` and NOT `move-down`, and that refusal is the reason this entry is long. Those two are arrows, they are already in this set, and they mean the one thing these four must never be read as — REORDERING a block inside its parent's list, which their own entries say does not scroll a view. An arrow here that did not refuse them by name would be borrowed by one within a release. NOT `chevron`, which is disclosure and is turned to point AT the thing it opens. NOT `direction`, which is the row's LEADING glyph — the mark beside the label saying the row is about travel at all — where these four are the ANSWERS inside the control. Owner, 2026-09-11",document:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","document-check":"document-check","document-magnifying-glass":"document-magnifying-glass",dollar:"dollar",dot:"Used in admin-portal src/shell-config/nav.tsx:37",download:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",drag:"Drag handle",drop:"a COLOUR, where the row is named for the colour itself rather than for the element it paints — worn by the `Divider` colour row of the campaign editor's Email styles and by its Divider block's `Color`. The set names a colour by its ELEMENT wherever it can (`text-color`, `ground`, `link`); this is the answer where there is no element to name.",duplicate:"Duplicate — owner pick 08-20, two-pages form",edit:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",email:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",emphasis:"the EMPHASIS mark — the toolbar button that writes `==words==` over the selection in the copy box's formatting bar: the phrase painted in the brand accent colour. A diamond, the ◆ the bar has shown for this mark since the campaign designer first drew it. Decided 2026-10-02. (retired by Lewis 2026-10-10; goes when nothing draws it)",eraser:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",error:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",expand:"expand",external:"Leaves this surface",eye:"Show","eye-off":"Hide","face-smile":"face-smile",filter:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",finish:"THE FINISHES A PRODUCT IS OFFERED IN — the swatch row a shopper picks a colour from. Worn by the `Finishes` row of the `Show on a card` group, on the storefront editor's Product Listing and Product Grid sections, which says whether a card draws that row at all (card [ADD] Choose What A Product Card Shows, 2026-09-21). Three swatches, because the idea is a CHOICE between finishes and a single swatch is just a colour. ⚠️ IT IS NOT `drop`, which is one colour where the row is named for the colour itself; not `accent`, which is the site's ONE emphasis rather than a set to pick from; not `contrast`, which is the tone of a whole palette; and not `theme`. Those four all answer \"what colour is this thing\"; this answers \"which of these does the shopper choose\".. …and the Spec Table's `Finish` row, where a MERCHANT picks which of a linked product's finishes the table should describe. Same subject — the finishes a product is offered in — seen from the other side of the editor. ⚠️ AND DELIBERATELY NOT THE `Opening filter`'s `Finish`, one line away in the same vocabulary, which carries NO glyph at all by the owner's facet ruling of 2026-08-29: a facet's options grow out of the merchant's catalogue, so an icon-per-facet queue never empties. Two rows, one drawn and one bare, written here where somebody is standing rather than left to be discovered. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",fire:"fire",flag:"flag",folder:"folder","folder-open":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","folder-plus":"folder-plus",forward:"Used in admin-portal src/pages/mail/MessageCard.tsx:182","full-width":"how far a picture REACHES — the `Width` row (Default / Full width) of the campaign editor's Image block. Decided 2026-09-17. A band running edge to edge between two end walls. NOT `width`, a plain measure with two arrowheads, which says how wide rather than how far it reaches.",gap:"the air between two cards — the `Card gap` row on the storefront's Site styles ▸ Basics tab, beside `Corners`. …and the Box's block-spacing row, which is the same air one tier down: the room between the BLOCKS a merchant stacks inside a box rather than between two cards in a grid. One idea — the space between siblings — at two scales, which is why one drawing serves both rather than the shop drawing a second. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23 …AND THE TICKER'S `Join` ROW, which makes THREE SCALES for one idea: between two cards, between the blocks inside a box, and between a section and the one above or below it. ⚠️ AND `Join` SETS THE SAME THING BY CLOSING IT. `Nothing` / `Section above` / `Section below` picks which seam disappears, which reads at first glance like a different question — it is not. The space between siblings is what is being set either way, and zero is one of its answers. Written down because somebody will otherwise read `Join` as adjacency or as a border and reach for another drawing. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",gem:"Used in admin-portal src/take/ConsentGate.tsx:297",gift:"gift",globe:"a globe — the country / region selector row",grid:"Grid",ground:"the fill of the BOX THE CONTENT SITS IN — the ground under the content, at whatever level the box is. Worn at every level today, and they are one idea, not several: the `Background` row under `Surfaces` in a theme's colour sheet (the row card 66510 renamed from `Page background` when a theme stopped colouring a page and started colouring a SECTION); in the admin portal's email editor, `Card color` (puckConfig.tsx:684), `Content background` (:790, hinted \"Covers the section color, but not its image.\"), `Email body` (:2404), a button's `Fill color` and `Zebra rows`, and `Column background` (ColumnLookControls.tsx:193, a SwatchRow); and in the shop, `Image background`, the fill of the well behind a product card's picture — a box inside a card inside a section. `Card color` is the closest precedent for that last one: a CARD's own fill already wears this glyph in shipped code. Level is not meaning: a new glyph per level would name WHERE the box is rather than WHAT the row sets, which is the `drop` / `styles` fault in this file's own rule. ⚠️ NOT `background`, AND THE REASON PRINTED HERE UNTIL 2026-09-23 WAS A GHOST. It said `background` meant the section panel's Page / Dark / Accent picker — but card 66510 removed that choice, `ss.section-theme-picker` stopped the renderer reading it, and [FIX] Section Theme Colours cleared the last 62 stored keys on 2026-09-03. Nothing had worn that meaning for three weeks. Ruling against a control that no longer exists is how the same wrong decision gets made twice, and it was: PR #1456 read that sentence and put THIS glyph on the four section-band `Background` rows. The live distinction is in efficient-admin-portal's email editor, one line apart under a comment citing this file (src/components/email/puckConfig.tsx:781): `Section background` wears `background`, `Content background` wears `ground`, and the hint says why — \"Covers the section color, but not its image.\" `background` is the band a section lays down; `ground` is the fill of the box that covers it. NOT `page`, which carries an owner ruling (2026-08-20) pinning it to the page and the Pages rail — the meaning this row stopped having, which is the whole reason this glyph exists. NOT `layout` and NOT `square`, its two siblings in the same `Surfaces` group — `Panels & cards` and `Borders`. ⚠️ AND IT IS NOT CALLED `surface`, which is the obvious name and the wrong one: `surface` is already the shop's stored colour KEY for `Panels & cards`, the row directly below this one, so a glyph of that name would sit on the one row in the group it does not name — the same fault as `page` on this row, committed again one line down. Card 66511, 2026-09-02; wearers and the ghost corrected 2026-09-23",hand:"Used in admin-portal src/pages/todo/TodoList.tsx:956","hand-thumb-up":"hand-thumb-up",hash:"a NUMBER or its unit — worn by the `Measure length in` row (px / %) of the campaign editor's Divider, which picks what the length beside it is counted in.",headquarters:'the one office of several that is the main one — the `HQ` row of each office in the storefront Footprint section. The star is what separates it from a plain building: this glyph never means "an office", it means "THE office". NOT `globe`, which is the country / region selector. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22',heart:"heart",height:"how TALL a thing is — the `Min height` row of the campaign editor's Column settings. Decided 2026-09-17. `width` stood upright, so the pair reads as one family. NOT `width`, which is side to side.",help:"help","help-off":"Used in shell src/apps/Browser.tsx:450",hexagon:"Used in shell .design-sync/previews/PageHeader.tsx:8",home:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",hover:"the pointer resting on a card — the `Hover effect` row on the storefront's Site styles ▸ Basics tab, beside `Corners`",identification:"identification",image:"Image / photo","image-off":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",images:"images",inbox:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",info:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",italic:"the ITALIC mark — the toolbar button that writes `_words_` (⌘I) over the selection in the copy box's formatting bar. A slanted capital I with its two serifs, the button every word processor draws. Decided 2026-10-02.",key:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",layers:"Layers",layout:"page layout — the Layout settings bucket, not columns. …AND THE ROWS THAT ASK IT DIRECTLY: the `Layout`, `Arrangement` and `Card layout` rows of the storefront editor, which pick which arrangement a section draws. The bucket and the row are one idea at two scales — the bucket holds the questions about how a section is laid out, and these rows are that question asked directly. ⚠️ STILL NOT `columns`, which is a COUNT of them, and still not `grid`, which is equal cells: the distinction the sentence above draws is unchanged. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","letter-spacing":"letter spacing",lightbulb:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","line-between":"a rule drawn BETWEEN two columns of content — the `Line between columns` row of the campaign editor's Section settings. Decided 2026-09-17. An upright rule with words on both sides. NOT `block-divider`, the Divider block kind, which is a flat line across.. …and the storefront's `Separator` row, which draws the same rule between ITEMS in a run rather than between columns. The picture is the rule itself, so what it divides is the row's business and not the glyph's. ⚠️ NOT `block-divider`, the divider BLOCK kind, which never heads a settings row — the refusal above stands. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","line-style":"WHICH DASH a rule is drawn with — the `Line style` row (Solid / Dashed / Dotted) of the campaign editor's Divider, and of every Border row. Decided 2026-09-17. Three rules stacked: solid, dashed, dotted, so the row's own choices are the drawing. NOT `block-divider`, the Divider BLOCK kind, which is one plain line and never wears a settings row.",link:"link","link-slash":"link-slash",list:"a list of entries a merchant orders — worn by the `Phone order` row of the campaign editor's Section settings and by the `Links` row of its Social block. …AND THE `Bulleted list` toolbar button of the campaign editor's Text block, and the `Bulleted list` item of its No list / Bulleted list / Numbered list menu (final design, 2026-10-06): lines set as a list. `numbered-list` is its pair, with figures in place of the dots.",location:"A POINT ON THE EARTH, given as numbers — the `Coordinates`, `Latitude` and `Longitude` rows of the storefront's location editor, where a merchant types or fetches a place's figures. A map pin. ⚠️ NOT `drop`, which is the nearest shape in the set and means A COLOUR: that droplet's point is at the TOP and it is solid, this pin's point is at the BOTTOM and it is pierced. Rendered side by side at 16px before this was kept, because a teardrop beside a teardrop was the obvious way to lose. NOT `globe`, which is the country / region selector — a globe is which MARKET, a pin is which SPOT. NOT `headquarters`, which is one office of several and is a building with a star. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22",lock:"Locked",logo:"a brand mark — the Header panel's Logo tab",logout:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",map:"map",media:"Media",megaphone:"megaphone",menu:"a navigation menu the merchant builds — the `Menu` row of the storefront's Menu picker. The bar a shopper reads along, with the menu dropped open beneath it. ⚠️ NOT `list`, which is a list of entries a merchant orders by hand (the campaign editor's `Phone order` row): every menu is a list, but not every list is the thing a shopper navigates by, and the bar is what says which one this is. NOT `sitemap`, which is the whole structure of a site rather than one menu in it, and NOT `tabs`, which is one strip where only one panel shows at a time. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22",meta:"THE SMALL LINE OF FACTS ALONG THE BOTTOM of an item — a date, a code, a deadline, run together on one line. Worn by a settings row that holds that line. One full rule with three SHORT runs under it: the gaps are the drawing, because the gaps are what make it read as several facts instead of a paragraph. Decided 2026-09-25.",microphone:"microphone",money:"money",moon:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",more:"more","more-vertical":"Used in shell .design-sync/previews/IconButton.tsx:8","move-down":"send this block one step later in its parent's order — the `Move down` row of the block right-click menu the owner approved 2026-08-31. The mirror of `move-up` and it reorders the same way: it does not scroll a view, sort a list or lower a number. NOT `chevron`, which is disclosure rather than movement. Card 66400.a, 2026-09-02","move-up":"send this block one step earlier in its parent's order — the `Move up` row of the block right-click menu the owner approved 2026-08-31. It REORDERS: it does not scroll a view, sort a list or raise a number. NOT `chevron`, which is disclosure — a section opening, not a block moving — and is the first arrow-shaped thing a borrower meets in this set. Card 66400.a, 2026-09-02",newspaper:"newspaper","no-symbol":"no-symbol",note:"a short note ABOUT a thing rather than the thing — worn by the `Alt text` row of the campaign editor's Image block, the words a reader gets when the picture does not load.",nudge:"A FINE ADJUSTMENT FROM WHERE A THING ALREADY SITS — the storefront hero group's `Sideways` and `Up and down` rows, each a ±px offset. ⚠️ ONE DRAWING FOR BOTH ROWS, deliberately. They are one idea on two axes, and the ROW'S OWN LABEL says which axis — `Sideways` and `Up and down` are as plain as the panel gets. The padding family splits by side because WHICH EDGE changes what the setting means; an axis does not change what a nudge is. ⚠️ NOT `placement`, and refusing it is the point: that entry is WHERE A THING SITS among NINE POSITIONS in a 3×3 pad, and a nudge is not one of nine — it is a small move from wherever the thing already is. ⚠️ NOT `width` or `height`, which are a line with arrowheads at both ends: those MEASURE an extent, this MOVES a thing. NOT `direction-up`/`-down`/`-left`/`-right`, single arrows that say which way a marquee TRAVELS. NOT `drag`, six dots, which is a handle a person grabs. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","numbered-list":"a NUMBERED LIST — the lines the caret is on, written as 1. 2. 3. Worn by the `Numbered list` toolbar button of the campaign editor's Text block and the `Numbered list` item of its No list / Bulleted list / Numbered list menu. Three rules with 1, 2, 3 down the left. Decided 2026-10-06.",opacity:"opacity","own-text":"the words are the merchant's own, not the product's — the `My own text` segment of the Card text control",package:"package","package-open":"package-open","padding-bottom":"padding bottom","padding-left":"THE ROOM ON ONE SIDE — THE LEFT — of a box, worn by the storefront's `Padding left` row and by the folded `Left` row of a section's padding group. Drawn in `padding-top`'s grammar exactly: a rule at that edge, and the box held off it. ⚠️ IT EXISTS BECAUSE THE FAMILY WAS ASYMMETRIC, which is the whole finding. The set drew top and bottom as SINGLE sides and left/right only as a PAIR, so a row about one horizontal side had nothing true to wear and the obvious reach was `padding-x`. ⚠️ NOT `padding-x`, and bending that entry was refused on purpose: its sentence is “the room a PAGE leaves at its left and right edge — the `Side space` row”, which is a different thing at a different scale, and it refuses other uses by name. An entry that has been stretched twice stops meaning anything. GG, 2026-09-23. Card [FIX] The 176 Settings Rows With No Picture","padding-right":"THE ROOM ON ONE SIDE — THE RIGHT — of a box. The mirror of `padding-left`, and it lands with it so the four sides are finally one family: top, bottom, left, right, each a rule at its own edge with the box held off it. ⚠️ NOT `padding-x`, which is the PAGE's side space — see `padding-left` for why that entry was not stretched. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","padding-top":"padding top","padding-x":"the room a page leaves at its left and right edge — the `Side space` row on the storefront's Site styles ▸ Basics tab, beside `Content width`. NOT the air between two cards, which is `gap` on that same tab, and NOT `width`, which is how wide the content column itself may grow","padding-y":"THE ROOM ABOVE AND BELOW a box, as ONE setting — the storefront's `Space above and below` row. ⚠️ IT RETIRES A WORKAROUND THAT WAS ALREADY SHIPPING, KNOWINGLY. `efficient-shop`'s `components/PartSettingsPanel.tsx` FIELD_ICONS carries this comment against its own padding row: “The set draws `padding-top` and `padding-bottom` and has no glyph for the PAIR, which is what this one row moves. `PaddingTopIcon` is the nearer of the two … Flagged to the seat rather than solved quietly.” That flag is what this drawing answers; that row should move to this glyph. ⚠️ NOT `v-align`, AND THE PROPORTIONS ARE THE WHOLE REASON IT CAN LIVE. `v-align` is ALREADY two full-width rules with a narrow box between them — the obvious drawing for this idea is already taken, and drawing it again would have been a duplicate. This one INVERTS that: SHORT ticks and a WIDE box. `v-align` says which of three positions the content sits in; this says how much room is left. ⚠️ ITS KILL CONDITION follows from that: if `v-align` is ever redrawn with a wide box, or a second short-tick-and-wide-box drawing is added, THIS is the one to question first — it survives on proportion rather than on a shape nothing else has. ⚠️ NOT `gap`, which is the space BETWEEN siblings at three scales; this is room INSIDE one box. NOT `layout`, a frame with a band across it. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",page:"Page AND the Pages rail — owner ruling 08-20, one meaning","paint-brush":"paint-brush","panel-left":"the LEFT SIDE PANEL itself — worn by the Hide panel button at the end of a left panel's head (`MediaPanelHead`, both editors' SidePanelHeads) and by the Show panel button in the strip a hidden left panel leaves. One control, so one drawing: hiding and showing the panel wear the same glyph. A frame with its left column ruled off. ⛔ NOT an ✕: an ✕ closes a dialog, and a panel head has none (owner, 2026-10-04).","panel-right":"the RIGHT SIDE PANEL itself — the twin of `panel-left` for the settings panel: its head's Hide panel button and the strip a hidden right panel leaves. A frame with its right column ruled off.","paragraph-spacing":"PARAGRAPH SPACING — the room between one paragraph and the next, in px. Worn by the fourth value of the campaign editor's Text block number row (`Paragraph spacing`, beside Font size, Line spacing and Letter spacing). Two short paragraphs with a small upright mark in the room between them. Decided 2026-10-06.",parcel:"package",paste:"drop whatever is on the clipboard into here — the `Paste` row (⌘V) of the block right-click menu the owner approved 2026-08-31. The other half of `copy`, and the only entry in the set that means the clipboard's CONTENTS coming back out. NOT `add`, which opens a chooser for a new block rather than placing one already taken. Card 66400.a, 2026-09-02","paste-style":"put a held look onto this component — the `Paste style from …` row (⌥⌘V) of the right-click menu in both editors. Decided 2026-09-19 (card [ADD] Copy Style And Paste Style). The other half of `copy-style`: the same brush, beside `paste`'s clipboard. NOT `paste`, which drops a whole block, and NOT `copy-style`, which takes the look rather than putting it down.",pause:"pause",pen:"Used in shell src/apps/ImageAnnotator.tsx:567",people:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",percent:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",phone:"Phone","phone-hidden":"Used in admin-portal src/components/email/emailPhoneMarks.tsx:22",placement:"WHERE A THING SITS inside its box, in two dimensions — the `Placement`, `Content position` and `Text position` rows of the storefront editor, and the Hero's `Overlay position`. Each is a 3×3 pad, and the drawing is one square resting in a corner of a frame. ⚠️ NOT `v-align`, and this is the whole reason the drawing exists: that entry says it means \"where content sits UP AND DOWN inside its box\" — one dimension, top / middle / bottom. A 3×3 pad is two, and borrowing a one-dimensional picture for it would be a second meaning on one drawing. NOT `grid`, which is a layout of equal cells, and NOT `columns`. ⚠️ `layout` IS THE CLOSE ONE, and the distinction is that `layout`'s inner marks TOUCH the frame — a header band across it, a divider down it — while this square FLOATS in a corner, because floating is what says it could sit somewhere else. They can appear in one panel, since a `Placement` row lives inside the Layout bucket. If this square is ever redrawn touching an edge it becomes `layout` and should go. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22",play:"play","plus-minus":"plus minus",power:"power","presentation-chart-bar":"presentation-chart-bar",print:"print",product:"product","product-field":"the words come from the catalogue record — the `From product` segment of the Card text control","product-size":"THE SIZES A PRODUCT IS SOLD IN — the row of size chips on a product card, each one an orderable variant. Worn by the `Sizes` row of the `Show on a card` group, on the storefront editor's Product Listing and Product Grid sections, which says whether a card draws those chips (card [ADD] Choose What A Product Card Shows, 2026-09-21). Two upright boxes on one baseline, one plainly bigger, because the idea is SEVERAL sizes of one product; one box would be a shape and would claim nothing. The pair is drawn SIDE BY SIDE and never overlapping: overlapping rounded boxes are already `copy`, and the difference a reader must see here is the SIZE, which an overlap turns into \"two of them\" instead. Three ascending boxes were drawn and rejected the same way — beside `columns` they read as a bar chart. ⚠️ IT CARRIES THE `product-` QUALIFIER FOR A REASON, and `product-field` is the precedent. Bare `size` is a word three rows of this set already want: `text-size` is how big type is set, `width` and `height` are how big a section is. None of them is a product's own catalogue of sizes, and a bare name is what lets the next borrower attach a second meaning to one drawing. It is also not `square`, which is one box and a shape.",progress:"Used in shell src/shell/timelineGlyphs.tsx:95",quiet:"the QUIET mark — the toolbar button that writes `^^words^^` over the selection in the copy box's formatting bar: smaller, softer words, like the fine print under a price. A small one-storey a. It is drawn SMALL on purpose, under the set's 14–17.5 box: smaller is what the mark does, and the design (v5) draws this button's a smaller than the B beside it. Decided 2026-10-02. (retired by Lewis 2026-10-10; goes when nothing draws it)","radio-dot":"Used in storefront lib/site-icon.ts:31",radius:"how ROUND a box's corners are — the `Corner radius` row of the campaign editor's Section and Column settings, and the image `Corner radius` row of Email styles. Decided 2026-09-17. A box with ONE strongly rounded corner. NOT `corner`, which is the storefront's `Which corners` row, and NOT `square`, which is the Borders row one line above.",receipt:"Used in admin-portal src/shell-config/search.ts:66","receipt-percent":"receipt-percent","receipt-refund":"receipt-refund","rectangle-group":"rectangle-group",redo:"Redo",refresh:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",remove:"Used in shell src/shell/Desktop.tsx:1199","remove-circle":"remove-circle",rename:"Rename / edit",reply:"Used in admin-portal src/pages/crm/NotesTimeline.tsx:269","reply-all":"Used in admin-portal src/pages/mail/MessageCard.tsx:178",revert:"Revert to inherited",robot:"Used in admin-portal src/shell-config/nav.tsx:303",rotate:"rotate",scale:"scale","scroll-point":"HOW FAR DOWN a reader has got before something happens — the Subscribe popup's `Scroll` row, a percentage of the page. An arrow travelling down to the line it must reach. ⚠️ ITS SIBLING ROW IS WHY IT HAD TO EXIST. One row up, `Delay` wears `clock`, honestly: a delay IS a time. This row is a POSITION, and wearing a clock beside it would make two different questions look like one. Same defect `clock` had on the `Trigger` row (corrected in 0.56.0), one row along. ⚠️ NOT `sticky`, which is the close one at 16px: both are a bar and a down arrow, and what separates them is WHICH END THE MASS IS AT — `sticky` is a thick pinned bar at the TOP with content moving away beneath it, this is a thin line at the BOTTOM with an arrow arriving at it. ⚠️ ITS KILL CONDITION: if `sticky` is ever redrawn with its bar at the bottom, these two collide and this is the one to question first. ⚠️ NOT `direction-down`, a plain arrow with nothing to arrive at — the line is the whole idea. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","scroll-text":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",search:"Search","select-all":"Used in admin-portal src/pages/mail/MessageList.tsx:66",send:"Send",server:"server",settings:"site settings — a gear; heads the Basics tab of the Site styles panel",shadow:"the depth a card sits at — the `Card shadow` row on the storefront's Site styles ▸ Basics tab, beside `Corners`","shape-ellipse":"Used in shell src/apps/ImageAnnotator.tsx:569","shape-rect":"Used in shell src/apps/ImageAnnotator.tsx:568",share:"share","shield-check":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","shield-exclamation":"shield-exclamation",signal:"Used in shell src/shell/Desktop.tsx:1278","signal-slash":"signal-slash",sitemap:"Sitemap",sort:"the order a SHOPPER puts a list in — the `Sort control` row of the Gallery panel and the `Sort + Clear all` row of the storefront's Catalog filter bar. ⚠️ NOT `list`, which is a list of entries the MERCHANT orders by hand (the campaign editor's `Phone order` and `Links` rows). The difference is who does the ordering, so the arrow is the whole point of this drawing. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",sparkles:"sparkles",speaker:"Used in shell src/apps/PomodoroTimer.tsx:651","speaker-wave":"speaker-wave","spec-table":"the table of a product's measured facts on its own page — the `Spec table` row of the storefront Product hero's `Show in the buy box` group. A header band over two name/value columns. NOT `grid`, which is a layout of equal cells, and NOT `line-between`, which is one rule drawn between two columns of CONTENT. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",spinner:"Used in admin-portal src/components/map/MapListView.tsx:98",split:"Used in admin-portal src/shell-config/nav.tsx:135",square:"square",star:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",state:"WHICH OF SEVERAL STATES a thing is in, where no one of them is the good one — the `State` row of a Mockup's result rows (`Match / done`, `In progress`, `No match`). A ring with its centre filled: one position chosen out of several, which is the idea, rather than any particular verdict. ⚠️ NOT `check`, and refusing it is the whole reason this entry exists. `check` means “checkmark / success”, which is TRUE OF ONE ANSWER IN THREE and false of the other two — a row wearing it would say `done` while a merchant is looking at `No match`. That is the same defect `clock` had on the `Trigger` row, found the same way and written here so the next person does not reach for `check` again. ⚠️ NOT `warning`, a triangle, which is wrong for the success case for the mirror-image reason. ⚠️ NOT `hash`, which is a NUMBER or its unit. ⚠️ NOT `contrast`, a circle with one HALF filled: that is a tone, and its hard straight edge is what tells the two apart at 16px — this one's fill is a centred dot. NOT `eye`, whose pupil sits inside a lens rather than a circle, and NOT `drag`, which is six dots in two columns. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","status-circle":"Used in shell src/apps/PomodoroTimer.tsx:376","status-dot":"Used in shell src/shell/ServerStatusIndicator.tsx:287",sticky:"a thing that stays put while the page scrolls under it — the `Stick under header` row of the storefront Category bar and the `Scroll-over` row of Intro bleed. The bar is pinned and the content moves away from it, which is why the arrow points DOWN and away rather than up. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22","stop-circle":"Used in admin-portal src/shell-config/nav.tsx:276",store:"store",strike:"the STRIKETHROUGH mark — the toolbar button that writes `~~words~~` over the selection in the copy box's formatting bar (a was-price beside a now-price). An S with a rule through its middle. Decided 2026-10-02.",styles:"Styles",subscript:"the SUBSCRIPT mark — lowered small text (H₂O). Worn by the `Subscript` toolbar button of the campaign editor's Text block and the `Subscript` item of its Normal / Superscript / Subscript menu. The same capital A as `superscript`, with the small 2 at its foot (Lewis, 2026-10-06: after seeing the T: use A for all). Decided 2026-10-06.","success-burst":"Used in admin-portal src/take/Submitted.tsx:3",sun:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",superscript:"the SUPERSCRIPT mark — raised small text (®, ™, a footnote¹). Worn by the `Superscript` toolbar button of the campaign editor's Text block and the `Superscript` item of its Normal / Superscript / Subscript menu. A capital A with a small 2 at its top right (Lewis, 2026-10-06: the design's x, then a T, then, after seeing the T: use A for all). Decided 2026-10-06.",swap:"swap",swatch:"swatch",table:"table",tablet:"Tablet",tabs:"one strip of choices where only one panel shows at a time — the `Tab switcher` row of the storefront Gallery panel. TWO tabs with the selected one drawn TALLER is what makes it a switcher — a single raised tab over a panel is a folder, which is what the first drawing read as and why it was thrown away rather than a `layout` or a plain panel; nothing else in this set draws a selected-of-several. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",tag:"tag",target:"target",team:"team",telephone:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",template:"Template / bookmark","text-color":'the COLOUR one run of text is painted in — worn by the `Color` row of the storefront part panel\'s `Appearance` fold, the row that lets a merchant override the theme\'s ink on a single heading or paragraph. NOT `type`, which is the Site styles Theme tab\'s `Text colour` row AND the part panel\'s own `Font` row — that panel forbids two rows sharing a drawing (`scripts/test-part-field-icons.tsx` §4), so the element glyph the Theme tab\'s grammar would ask for is already spent one row up. NOT `accent`, which is one drawing already serving `Accent` (the type) and `Brand colour` (the colour) and may not take a third meaning. NOT `text-small`, which is `Label colour` on that same Theme tab. This is the one place in the set where a glyph names a COLOUR rather than the element it colours, and it does so because the element — a run of text — already has two drawings pointing at it. The letter IS the swatch: one closed A with its counter, marked `data-part="swatch"`, so a host fills it with the chosen colour (`[data-part="swatch"] { fill: … }`) while the line around it stays the ink, so light yellow and white still read on a white toolbar and black is told apart from no colour (a hollow A). Lewis 2026-10-13 picked this over "A + a drop" and "A + a bar", with the note "give the letter an outline, like the drop had". Drawn big enough to carry a fill, and thin enough to sit with the line icons beside it (Lewis 2026-10-13 asked for a thinner A): about 12 x 12px at 16px, legs 4 units. Card [ADD] A Run Of Text Can Take Its Own Color, 2026-09-09',"text-lines":"text lines","text-size":"text size","text-small":"SMALL TYPE — an eyebrow, a caption, a label run. Worn by the `Eyebrow` row of the campaign editor's Text block and by the `Tagline` row of its Logo. The set's `text-size` is the SIZE control; this is the small-type kind itself.","text-value":"Used in storefront packages/web-builder/src/components/FieldGlyph.tsx:111",theme:"one whole palette a section can be painted in — paper, ink, borders and accent together, not one colour. Worn by the `Theme` row of the section panel's `Colour` group (card 66313), the dropdown that says which of the site's themes this one section is on. NOT `contrast`, which names the Site styles Theme TAB — that is a PLACE, not the idea “a palette”. NOT `accent`, which is the site's ONE emphasis colour, one colour rather than a whole set. Card 66315, 2026-09-01",ticket:"ticket",title:"THE HEADING OF ONE ITEM, not of the band around it — worn by a settings row that holds the loudest line on a single card. An H drawn INSIDE the item's frame, and the containment is the whole distinction. Drawn for the campaign editor's Coupon card, where every layout carries exactly one `title` place. Decided 2026-09-25.",trash:"Delete",trigger:"WHAT MAKES THIS HAPPEN — the event a merchant picks to start something, not the thing that is started. Drawn for the `Trigger` row of the storefront's Subscribe popup, whose three answers are `Delay`, `Scroll` and `Exit`: a wait, a scroll position and a pointer leaving the page. Nothing they share is a picture, which is exactly why none of the five shipped candidates could take the row. ⚠️ NOT `clock`, and this is the drawing this one exists to replace: a clock face says TIME, which is true of `Delay` and FALSE of the other two — it shipped on that row in efficient-shop #1468 and is corrected in the card that adds this. ⚠️ NOT `hover`, a pointer resting on a card: that names the MOUSE specifically, and neither a scroll position nor an exit is a hover. ⚠️ NOT `animation`, a block with speed lines behind it: that names MOVEMENT, and a trigger is not a motion — it is the moment one starts. ⚠️ NOT `sticky`, a bar with content moving away beneath it, which names a thing that STAYS PUT while the page scrolls; `Scroll` here is when the reader reaches a point, never what the bar does. ⚠️ NOT `play`, a triangle, which is video playback. The bolt is the one shape in this set that means a thing FIRING rather than a thing being or moving, and it is the only zigzag in 138 drawings, so it cannot be misread for a neighbour at 16px. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",truck:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",tv:"tv",type:"Text marker — the T",tyre:"Used in admin-portal src/shell-config/nav.tsx:290",underline:"whether links are UNDERLINED — the `Underline links` row of the campaign editor's Email styles. Decided 2026-09-17. A U over a rule, the mark every word processor uses. NOT `type`, which is the text marker, the T. …AND THE `Underline` toolbar button of the campaign editor's Text block (final design, 2026-10-06): the mark that underlines the selected words. One idea, words with a rule under them, so the button wears this drawing rather than a second copy of it.",undo:"Undo",upload:"upload","v-align":"where content sits UP AND DOWN inside its box — the `Content position` row (top / middle / bottom) of the campaign editor's Column settings. Decided 2026-09-17. A block between a top and a bottom rule. NOT `padding-top`, which has one rule and says how much room is above.",verified:"verified","video-off":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","view-columns":"view-columns",wallet:"wallet",warning:"Warning",weight:"HOW HEAVY A STROKE IS — a font's weight, and a rule's thickness. It was written as “font weight” alone until the storefront's `Thickness` row (a footer divider, 1-8px) needed it: both settings make a mark heavier, and that is what the drawing shows. ⚠️ NOT `line-style`, which is WHICH DASH a rule is drawn with — solid, dashed, dotted — a different question about the same rule. Extended on card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",wheel:"Wheel",widgets:'WIDGETS - the small live panels a person puts on the desktop (clock, weather, stock, calculator and the rest). Worn by the desktop right-click row "Manage Widgets…" and whatever opens the widget manager. Added 2026-10-13 (GG for Lewis: one icon means one thing; Manage Widgets drew `grid`, which is Snap to Grid\'s). NOT a plug-in or extension, and NOT `apps` or `layout`.',width:"width",window:"window",windows:"Used in shell src/shell/WindowManager.tsx:1051","words-from":"WHICH SIDE A ROW'S WORDS COME FROM, as the question rather than either answer — worn by a settings row that asks it, where the merchant picks between their own copy and copy the catalogue already holds. Drawn for the storefront Feature Rows block's `Rows from` row (`Product story` | `Detail shots`).",wrap:"WHETHER A ROW'S ITEMS FLOW ONTO A NEW LINE when they run out of room — the `Wrap` row of a Box's layout (`Wrap` / `No wrap`). The drawing is the RESULT rather than the motion: three items on the first line and one that has fallen to the second, because an uneven second row is the only thing that says wrapping happened. ⚠️ NOT `revert`, and this is the drawing this one was nearly drawn as. A line running right, turning down and coming back left with an arrowhead is the obvious picture for `wrap` and it is ALREADY `revert` — the two would have been the same drawing at 16px. Caught on the sheet before it was drawn, which is what the sheet is for. ⚠️ NOT `direction`, two same-way arrows, which names WHICH WAY a container's children run — and which is itself ruled to head no row (doc/naming.md N10.1 calls it a modifier). Wrapping is not a heading. ⚠️ NOT `columns`, three upright bars, which is a COUNT of columns, and NOT `grid`, which is equal cells: both draw an even arrangement, and unevenness is the whole of what this one says. ⚠️ NOT `line-between`, an upright rule with content either side, which divides two columns rather than describing how one row behaves. ⚠️ `grid` IS THE CLOSE ONE, AND THIS IS WHY IT IS ALLOWED TO LIVE. Both are a cluster of small squares, and at 16px what separates them is SILHOUETTE: this drawing is ASYMMETRIC — three across the top, one at the bottom LEFT, so it is wider on top and visibly short on the bottom right — against `grid`'s even 2×2. That difference survives the size; it was checked at 16px and again at 6× before it was kept, and it was handed up as a coin-flip rather than decided quietly. GG looked at both sheets and approved it, 2026-09-23. ⚠️ ITS KILL CONDITION, in the shape the bolt carries: if `grid` is ever redrawn asymmetric, or if a SECOND cluster-of-squares drawing is added to this set, THIS is the one to question first. Counting squares is a weaker way to be told apart than a shape nothing else has, and this drawing knows it. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",wrench:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","wrench-screwdriver":"wrench-screwdriver","zoom-in":"zoom-in"};function o({size:t=18,...r}){/* @__PURE__ */
|
|
1
|
+
import{jsx as e,jsxs as t}from"react/jsx-runtime";var r={"academic-cap":"academic-cap",accent:"the ACCENT — the site's one emphasis, the phrase picked out inside a heading. Worn by `Accent` on the Text tab and by `Brand colour` on the Theme tab. ONE drawing for both, for two reasons that hold each other up. (1) `accent` is a NAMED ROLE on this site, not a coincidence of spelling: it is declared as a font role (`FONT_ROLES`) and as a colour role (`WORD_STYLE_COLOURS`). The Text tab's `Accent` sets that role's TYPEFACE; the Theme tab's `Brand colour` sets the colour it is painted in. One role, two halves — which is why one drawing serves both. (2) the Site styles Theme tab names every colour row by the ELEMENT it colours and never by a glyph meaning \"colour\" — `Text colour` wears `type`, `Label colour` wears `text-small`, `Page background` wears `page` (ThemeField ROW_ICON, card 66205). The glyph names the element; the row says what it sets. Card 66310, 2026-09-01. ⚠️ THIS CORRECTS TWO EARLIER GOES AT THIS SENTENCE, and the RULING survived both — one drawing still serves both rows and the drawing has not moved. 66310's own first entry said the two rows keep the key `accent` in one place, which is not so. es#36 replaced that with a NUMBER, and a number is the wrong shape here: counting what `accent` IS gives the role declarations above, while counting where an accent VALUE lives gives the typeface, the preset colour and — since card 66307 — the site brand colour. Both counts are true, of different things, so a figure that needs its counting rule carried beside it will be misread in a one-line entry. The structure is what does not move. Corrected on card 66315, 2026-09-01. Not \"a star\" — a star borrowed for any other row would be a second meaning on one SVG, which is the rule this set is written under",account:"a person — the account / sign-in row and the header's account icon","account-circle":"account-circle",add:"Add / plus","add-circle":"Used in shell src/apps/PomodoroTimer.tsx:412","add-person":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",adjust:"adjust","align-center":"align center","align-justify":"JUSTIFY — text whose rows run edge to edge. Worn by the Justify button on the final text box's second toolbar row, beside Left, Center and Right, and by the Justify chip of the alignment strip. Three full-width rows on the same three heights the other alignment glyphs use. Decided 2026-10-06 (the design was made final that day).","align-left":"WHICH WAY content is aligned — worn by the `Alignment` row of the campaign editor's Text, Button, Badge, Divider and Social blocks, and by the storefront part panel's `align` row (efficient-shop PartSettingsPanel FIELD_ICONS). The row's own segments draw each answer; this names the question.","align-right":"align right","align-separate":"align separate — the rows pushed apart to both edges",anchor:"anchor",animation:'how a thing MOVES — the `Animation` settings tab, the second of the two tabs of every settings panel (`Design · Animation`, owner 2026-10-08, final 2026-10-10). Owner, 2026-09-11, asked for the tab himself, like Wix\'s, so that every element can have a motion. The drawing is the owner\'s own pick (2026-10-09, option C of the tab glyphs: a moving block): a block with speed lines trailing behind it, so it names MOVEMENT ITSELF rather than any one motion — Entrance, Scroll, Hover, Click and Loop are all rows under this tab. Its partner on the strip is `adjust` (sliders), the Design tab. NOT `play`, whose entry says only "play": a triangle is video PLAYBACK — this glyph WAS a triangle with motion lines until 2026-10-13, and the owner did not like it ("动画的icon 我不喜欢"). NOT `rotate`, turning a thing in place, one motion out of many. NOT `direction`, which says WHICH WAY a thing travels. NOT `hover`, the pointer resting on a card: one MOMENT which can start a motion, never the motion.',apps:"Used in shell src/shell/Desktop.tsx:1232","archive-box":"archive-box",arrow:"One meaning; heroicons ships each direction as its own file.","arrow-down":"arrow-down","arrow-left":"arrow-left","arrow-left-end-on-rectangle":"arrow-left-end-on-rectangle","arrow-long-right":"arrow-long-right","arrow-right":"arrow-right","arrow-trending-down":"arrow-trending-down","arrow-trending-up":"arrow-trending-up","arrow-up":"arrow-up","arrow-up-right":"arrow-up-right","at-symbol":"at-symbol",attach:"attach",background:"the BAND A SECTION LAYS DOWN — the section's own background, the thing other boxes sit on top of. Worn by `Section background` and `Backdrop` in the admin portal's email editor (src/components/email/puckConfig.tsx:784 and :2398), both of which inherit from the theme and reset with 'Back to the theme color', and by the four section-band `Background` rows in efficient-shop's `backgroundField`. ⚠️ ITS ORIGINAL REASON IS DEAD AND IS KEPT HERE ONLY SO NOBODY REVIVES IT. This entry used to read \"the `Background` row of the section panel's `Colour` group (card 66313), whose choices are Page / Dark / Accent\". That picker is gone: card 66510 removed the choice, `ss.section-theme-picker` stopped the renderer reading the stored value, and the last 62 stored keys were cleared on 2026-09-03. A glyph outliving its stated reason is the `contrast` case — right on screen, dead why — and here it cost a real decision: PR #1456 ruled against this glyph because of that sentence and put `ground` on the four shop rows instead. ⚠️ NOT `ground`, which is the fill of the BOX the content sits in and covers this band — the two sit one line apart in the email editor's section panel, and that pair is the definition. The test is not what colour is set but WHAT SURFACE: a section's own band is `background`; a box drawn on top of it, at any level, is `ground`. Card 66315, 2026-09-01; reason replaced with a live one 2026-09-23",bag:"bag",bank:"Used in admin-portal src/pages/integrations/providerIcons.tsx:32","bars-3-bottom-left":"bars-3-bottom-left",battery:"Used in shell src/shell/Desktop.tsx:1254",beaker:"beaker",bell:"Notification bell","bell-alert":"bell-alert","bell-plus":"bell-plus",billing:"Used in admin-portal src/shell-config/nav.tsx:108","black-and-white":"colour taken out of a picture on purpose — the `Black and white` row of the three storefront photography sections and `Black and white logos` on the Logos strip. `doc/naming.md` N10.1 fixes those words and forbids `Grayscale` (owner ruling 2026-08-28), so the glyph is named for the idea the shop says out loud. ⚠️ A HALF-FILLED CIRCLE WAS DRAWN FIRST AND REJECTED: that is what `contrast` already is, and `contrast` heads the Theme tab. This is a PICTURE with one half ruled out, which is the thing the row does. Hatched rather than filled, because the house standard for this set is stroke on currentColor and no baked plate. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22","block-badge":"the BADGE block - a small word pinned on a product, like NEW. Worn by a Badge row in the Layers tree and the Badge tile. Decided 2026-09-17. NOT `tag`, which the owner ruled is the `label` field row (2026-09-05), not a badge.","block-banner":"the BANNER block - words laid over an image. Worn by a Banner row in the Layers tree and the Banner tile, in both editors. Decided 2026-09-17. NOT `image` (a picture alone) and NOT `button`.","block-box":"the BOX block - a container that holds blocks (N8.1: `Box`). The campaign editor called it Group until Lewis renamed it Box, 2026-09-17. Worn by a Box row in the Layers tree and the Box tile, in both editors. NOT `direction`, whose arrows say which way a thing travels.","block-button":"the BUTTON block - one call to action in an email. Worn by a Button row in the Layers tree and the Button tile. Decided 2026-09-17. NOT `button`, whose entry is the settings ROW for a button's own look - the row and the block are two ideas.","block-column":"one COLUMN of a Section block - the slot its blocks stand in. Worn by the `Column 1` / `Column 2` rows of the Layers tree. Decided 2026-09-17. NOT `columns`, which is three bars and answers HOW MANY columns, not which one.","block-coupon":"the COUPON CODE block - a ticket with the code each person gets. Worn by its Layers row and the Coupon code tile. Decided 2026-09-17. The dashed line is the tear line where the code sits.","block-divider":"the DIVIDER block - a rule between things, in an email and on a website page. Worn by a Divider row in the Layers tree and the Divider tile, in both editors. Decided 2026-09-17. NOT `plus-minus` or any settings row: it is the block itself.","block-footer":"the FOOTER block - the bottom of an email or of a website page, pinned last. Worn by the Footer row in the Layers tree, in both editors. Decided 2026-09-17. NOT `page` and NOT `layout`: it is the block, not the page or its settings.","block-heading":"the HEADING block - the legacy heading kind older campaigns still hold (GTS-8 has six). Worn by its Layers row. Decided 2026-09-17. NOT `type`, the T that marks text settings, and NOT `text-size`.","block-image":"Image / photo","block-included-list":"the INCLUDED LIST block - model names on the left, prices on the right, row by row. Worn by its Layers row and the Included list tile. Decided 2026-09-17. NOT `list`, which is worn by the Header panel's menu item.","block-layered-images":"the LAYERED IMAGES block - one picture laid over another. Worn by its Layers row and the Layered images tile. Decided 2026-09-17. NOT `image` (one picture) and NOT `copy` (two pages, a clipboard action).","block-product":"the PRODUCT block - one catalogue product quoted in an email, its price and its buttons (the Add tile that said `Price` becomes `Product`, Lewis 2026-09-17). Drawn as a PACKAGE: the thing sold. Worn by its Layers row and tile. NOT `dollar`, worn by the price field row, NOT `tag`, the label row, and NOT `cart`, which is buying.. ⚠️ AND IT IS ALREADY WORN IN THE SHOP, which this entry did not say until now. `GalleryProductBinding`, `GalleryShowcaseSource`, `ProductPicker` and `SpecTableSource` each draw a `Product` row with this glyph, and the storefront config's own `Product` picker joins them. One catalogue product, whether it is quoted in an email or picked in a panel. Recorded on card [FIX] The 176 Settings Rows With No Picture, 2026-09-23, because pre-existing silent reuse is still silent reuse and is worse undocumented than documented","block-product-title":"Used in admin-portal src/components/email/emailBlockIcons.tsx:145","block-section":"the SECTION block - one full-width band of an email that holds one to four columns of blocks. Worn by a Section row in the Layers tree and the Section tile. Decided 2026-09-17. NOT `layout` (the Layout settings tab) and NOT `columns` (three bars, a count of columns).","block-social":"the SOCIAL block - links to whichever social platforms the business has, never one platform's mark. Worn by a Social row in the Layers tree and the Social tile, in both editors. Decided 2026-09-17. NOT `link` (one link) and NOT `share` actions.","block-spacer":"the SPACER block - empty room between blocks, in an email and on a website page. Worn by a Spacer row in the Layers tree and the Spacer tile, in both editors. Decided 2026-09-17. NOT `gap` (the air between cards, a settings row) and NOT `padding-top`.","block-text":"the TEXT block - a run of words a person types into an email. Worn by a Text row in the Layers tree and the Text tile. Decided 2026-09-17. NOT `text-lines`, which is WORN already by the body-text field row and the Content tab (efficient-shop FieldGlyph.tsx) - a block row wearing it would be one drawing with two meanings.","block-video":"the VIDEO block - a video shown in an email as a poster with a play mark. Worn by its Layers row and the Video tile. Decided 2026-09-17. NOT `play`: a bare triangle is playback, and this is the block that holds a video.","blog-post":"one written article of a series — the `Blog posts` and `Blog post source` rows of the storefront's blog panels. An article laid out: a picture block, its headline beside it, the body beneath. ⚠️ NOT `page`, and that is the whole reason this drawing exists: `page` means a PAGE of the site and the Pages rail, one meaning by the owner's ruling of 2026-08-20, so a blog row wearing it would say a post is a page. NOT `note`, which is a short note ABOUT a thing rather than the thing, and NOT `text-lines`, which is body copy with no article around it. ⚠️ IT IS THE DENSEST DRAWING IN THE SET AND THAT IS DELIBERATE: the block-beside-lines arrangement is what separates it from `page` at 16px, and a simpler page-with-a-heading was drawn first and thrown away because it WAS `page` with an extra stroke. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22",bold:"the BOLD mark — the toolbar button that writes `**words**` (Strong, ⌘B) over the selection in the copy box's formatting bar. A capital B, the letter every word processor puts on this button. One idea: the mark, not a weight setting. Decided 2026-10-02.",bolt:"bolt","book-open":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",bookmark:"Used in admin-portal src/pages/Notepad.tsx:480","bookmark-square":"bookmark-square",braces:"INSERT A MERGE TAG — a word that fills in for each reader ({{first_name}}, a coupon code). Worn by the Insert button the campaign designer puts in the 9th cell of the final text box's first toolbar row (`CopyBox` `lastTool`), which opens its list of tags. Two curly braces, the shape a merge tag is written in. Decided 2026-10-07. ⛔ NOT `code` or a pair of angle brackets: nothing here is code, and the braces are the tag's own spelling.",breadcrumb:"the trail back up to where a shopper came from — the `Breadcrumb` row of the storefront Gallery panel's `Show / hide elements` group. NOT `sitemap`, which is the whole structure of a site rather than one path through it, and NOT `chevron`, which is a disclosure. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",briefcase:"Used in admin-portal src/pages/integrations/providerIcons.tsx:48",bug:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","bug-ant":"bug-ant","building-library":"building-library","building-office-2":"building-office-2",button:'a call-to-action on the page — the settings row for a button\'s own look. ⚠️ NAMED BY CARD 66310, 2026-09-01; it used to read "button", which is a SHAPE, and a shape claims nothing, so nothing stopped a second meaning attaching to this drawing. Measured the same day: `ButtonIcon` has no call site in efficient-shop, in efficient-admin, or in this repo — it is drawn and not yet wired to a row',"button-arrow":"the arrow a button carries after its words — the `Arrow` row of the storefront Button block. ⚠️ IT IS NEITHER OF THE TWO GLYPHS IT SITS BETWEEN. `button` is the settings row for a button's own look, and this row is one detail inside that; `direction-right` is which way a thing SCROLLS. Here the button and its arrow are drawn together because the row is about the pair. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",calculator:"calculator",calendar:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","calendar-check":"calendar-check",camera:"camera",caption:"Used in storefront packages/web-builder/src/components/FieldGlyph.tsx:140",car:"the shopper's own vehicle, which a product either fits or does not — the `Ask for the car first` row of the storefront Alloy wheels listing and the `Vehicle fitment` row of the Product hero. ⚠️ NOT `wheel`, which is the PRODUCT this shop sells; this is the thing the product has to fit, and a panel that drew both rows with `wheel` would say the two questions are the same question. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22","card-payment":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",caret:"Used in storefront packages/web-builder/src/components/storefront-editor.css:964",cart:"Cart",case:"letter case","case-lower":"letter case ALL SMALL LETTERS — `aa`, the `Lowercase` option of the Letter case buttons on the campaign editor's Text block, and of the storefront part panel's Case strip. Two one-storey a's. Decided 2026-10-06.","case-normal":"letter case LEFT AS TYPED — `Aa`, the `Normal` option of the Letter case buttons (Normal / Uppercase / Lowercase) on the campaign editor's Text block, and of the storefront part panel's Case strip. The plan calls it sentence case; it changes nothing the merchant typed. A capital A beside a one-storey a. Decided 2026-10-06.","case-upper":"letter case ALL CAPITALS — `AA`, the `Uppercase` option of the Letter case buttons on the campaign editor's Text block, and of the storefront part panel's Case strip. Two capital A's. Decided 2026-10-06.",category:"the group of products a merchant files a thing under — the `Category` row of the storefront's Product picker, Gallery showcase, Spec table and Product hero source panels. A FOLDER: the drawer several products live in. ⚠️ NOT `tag`, which is the shell's luggage tag and already draws a storefront `Label` row — a tag is one name pinned on one thing, a category is the drawer it is filed in, and a panel that drew both with one picture would say those are the same question. NOT `layers`, which is the Layers panel and means stacking order, and NOT `grid`, which is a layout of equal cells. ALSO WORN BY THE `Collection` ROW, ON PURPOSE — see the note in that row's own panel: a collection is a curated group of products and a category is the catalogue's own, but both are \"the group this is filed under\", and four separate drawings for a collection were made and thrown away because none could be told from `grid`, `layers` or this folder at 16px. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22. …and the `Product type` row of a dynamic page template, which says which KIND of product (`alloy-wheel`, `tyre`) the template is written for. A category is a grouping the merchant invents and a product type is one the catalogue already has, but both answer “which drawer does this belong in”, which is what the folder draws. ⚠️ NOT `product-field`, whose sentence is “the words come from the catalogue record” — that names where a VALUE is read from, never which KIND a thing is. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",chart:"chart","chart-bar":"A bar chart: analytics, a report. Lewis 2026-10-13: the heroicons bar chart (the set's own three bars on a base read worse beside it).","chart-bar-square":"chart-bar-square","chart-line":"Used in shell src/apps/Preview.tsx:1811",chat:"Chat","chat-bubble-left-right":"chat-bubble-left-right","chat-bubble-oval-left-ellipsis":"chat-bubble-oval-left-ellipsis",check:"Checkmark / success","check-circle":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",checkbox:"Used in shell src/apps/PomodoroTimer.tsx:642",chevron:"Disclosure — rotate for direction","chevron-double":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","chevron-double-left":"chevron-double-left","chevron-double-right":"chevron-double-right","chevron-down":"chevron-down","chevron-left":"chevron-left","chevron-right":"chevron-right","chevron-up":"chevron-up","chevron-up-down":"Used in shell src/forms/Select.tsx:519","circle-stack":"circle-stack","clear-marks":"CLEAR MARKS — the toolbar button that takes every mark off the selection in the copy box's formatting bar (⌘⇧X), keeping the words and any link. A T with a small × at its foot: the text, with its marks crossed out. Decided 2026-10-02.",clipboard:"clipboard","clipboard-check":"Used in admin-portal src/pages/todo/TodoList.tsx:949","clipboard-document-list":"clipboard-document-list","clipboard-list":"Used in admin-portal src/pages/Dashboard.tsx:135",clock:"clock",close:"Close / dismiss","close-circle":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",cloud:"cloud","cloud-download":"cloud-download",code:"Used in shell src/shell/DevIndicator.tsx:17","code-bracket":"code-bracket",collapse:"collapse","collapse-all":"Used in easel src/screen/components/ScreenChrome.tsx:257","column-gap":"the air between columns SIDE BY SIDE — the `Gap between columns` row of the campaign editor's Section settings. Decided 2026-09-17. The GAP is the subject: two short upright bars with an arrowed space between them, drawn like `width`'s arrows. NOT `gap`, which is the air between STACKED things (the `Space between items` row wears that), and NOT `block-column`, whose two boxes the first draft read as at 16px (GG, 2026-09-17).","column-widths":"how the width is SHARED between a section's columns — the `Column widths` row of the campaign editor's Section settings (a ratio at two columns, shares at three). Decided 2026-09-17. NOT `columns`, which answers HOW MANY, and NOT `block-column`, a block kind that never wears a settings row.. …and the storefront's `Positions` row, where a block in a grid says how many CELLS it spans (`Auto`, `1 position`, `2 positions`, …). A share and a span are two answers to ONE question — how much of a multi-column row this thing takes — and the arrow across the bars draws the question rather than either answer. ⚠️ NOT `columns`, which is a COUNT of them; the two are told apart at 16px by that arrow. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",columns:"columns",company:"company",compose:"compose",contrast:"the Theme tab of the Site styles panel — where a site's one palette is set. ⚠️ THIS MEANING WAS REWRITTEN BY CARD 66310, 2026-09-01: it used to say the tab held light/dark pairs, and cards 66238/66239 deleted that — a theme is ONE FLAT palette now. The drawing did not move and does not need to; the filled half disc reads as TONE, which is what a palette sets. The fill is justified in `from` below and stays",cookie:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",copied:"copied",copy:'put this block on the clipboard so it can be pasted somewhere else — the `Copy` row (⌘C) of the block right-click menu the owner approved 2026-08-31. NOT `copy-to-page`, whose meaning is already "Copy to another page" and which names a DESTINATION rather than the clipboard. NOT `duplicate`, which sits two rows below this one in the same menu and makes a second block in place at once without ever touching the clipboard. Card 66400.a, 2026-09-02',"copy-style":"take a component's LOOK so it can be put on another one — the `Copy style` row (⌥⌘C) of the right-click menu in both editors, the campaign editor's block menu and the website editor's node menu. Decided 2026-09-19 (card [ADD] Copy Style And Paste Style; GG: one meaning per glyph, so it is not `copy`). The brush is the style; the back sheet is `copy`'s own, so the pair reads as \"copy, but the look\". NOT `copy`, which takes the whole block, and NOT `styles`, which opens the site's Styles panel.","copy-to-page":"Copy to another page",corner:"the `Which corners` row in a section's Style > Shape group, on the storefront editor",crop:"Used in shell src/apps/ImageAnnotator.tsx:573","cube-transparent":"cube-transparent",cursor:"Used in shell src/apps/ImageAnnotator.tsx:11","cursor-arrow-rays":"cursor-arrow-rays","cursor-click":"Used in shell src/apps/Preview.tsx:1953",dashboard:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",date:"Used in storefront packages/web-builder/src/components/FieldGlyph.tsx:129",desktop:"Desktop",diagram:"a measured drawing of a product rather than a photograph of it — the `Dimension diagram` row of the storefront Spec table. The object ruled on two sides. ⚠️ A CIRCLE OVER A DIMENSION LINE WAS DRAWN FIRST AND THROWN AWAY: at 16px a circle above a wide horizontal line is a head and shoulders, and the glyph read as a person. NOT `image`, which is a photograph, and NOT `width` or `height`, which are single settings a merchant TYPES; this is a picture the shopper is shown. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",direction:"which way this thing travels — the heading a merchant picks for a section's own motion. ⚠️ DRAWN FOR the `Scroll direction` row on the Scrolling Bar section AND NOT WORN BY IT. efficient-shop's `doc/naming.md` N10.1 gives the `Direction` idea a DASH in its Glyph column, and names `Direction` itself as one of the two reasons a row gets that dash: it is a MODIFIER, not a thing, and a modifier takes no leading glyph. So that row ships with no mark beside its label, and that is CORRECT rather than an omission — which is the whole reason this sentence is here, so the next reader does not file a bug against a row that is drawn the way it was decided. The marks a merchant actually presses are `direction-left`, `direction-right`, `direction-up` and `direction-down`, inside the control, and those four ARE worn. This glyph therefore has the same standing as `button`: drawn, correct, and not wired to a row. SS seat, 2026-09-11, recording that its own canvas drew a leading glyph in the field head and the naming table is what governs. ⚠️ AND IT NEVER HEADED THE HERO'S OVERLAY ROW, though it was briefed as if it did. The SS seat settled that row as a PLACEMENT on 2026-09-11: a lit cell there means where the DARK SITS, which is one of nine positions, which is what this shell's 3×3 grid already means at every one of its call sites — so that row draws the ordinary dots and wants nothing from this set. Both withdrawn claims are recorded rather than deleted, because a glyph that was once said to head a row is the first thing a later reader puts back. NOT `move-up` and NOT `move-down`, which REORDER a block inside its parent's list — card 66400.a's entries already say in writing that they do not scroll a view, which is exactly the thing this idea DOES say, so those are the first two glyphs a borrower will reach for and the two that must be refused hardest. NOT `chevron`, which is disclosure: its own meaning reads \"rotate for direction\", and that sentence is the one a borrower will read as permission — a chevron is turned to point AT the thing it opens, it never says which way anything travels. NOT `width`, which is a SPAN — how wide the content column may grow — and is double-headed for exactly that reason; a span names an extent, this names a heading. Owner, 2026-09-11","direction-down":"the direction a marquee travels — the bar runs downwards, so its content walks towards the bottom edge. Worn by the BOTTOM cell of the `Scroll direction` control on the Scrolling Bar section, which is the shell's 3×3 placement grid with four live cells, each drawing an arrow in place of the grid's dot. One of a family of four, and the family is one drawing turned: `direction-right` rotated a quarter turn at a time. ⚠️ NOT `move-up` and NOT `move-down`, and that refusal is the reason this entry is long. Those two are arrows, they are already in this set, and they mean the one thing these four must never be read as — REORDERING a block inside its parent's list, which their own entries say does not scroll a view. An arrow here that did not refuse them by name would be borrowed by one within a release. NOT `chevron`, which is disclosure and is turned to point AT the thing it opens. NOT `direction`, which is the row's LEADING glyph — the mark beside the label saying the row is about travel at all — where these four are the ANSWERS inside the control. Owner, 2026-09-11","direction-left":"the direction a marquee travels — the bar runs leftwards, so its content walks towards the left edge. Worn by the LEFT cell of the `Scroll direction` control on the Scrolling Bar section, which is the shell's 3×3 placement grid with four live cells, each drawing an arrow in place of the grid's dot. One of a family of four, and the family is one drawing turned: `direction-right` rotated a quarter turn at a time. ⚠️ NOT `move-up` and NOT `move-down`, and that refusal is the reason this entry is long. Those two are arrows, they are already in this set, and they mean the one thing these four must never be read as — REORDERING a block inside its parent's list, which their own entries say does not scroll a view. An arrow here that did not refuse them by name would be borrowed by one within a release. NOT `chevron`, which is disclosure and is turned to point AT the thing it opens. NOT `direction`, which is the row's LEADING glyph — the mark beside the label saying the row is about travel at all — where these four are the ANSWERS inside the control. Owner, 2026-09-11","direction-right":"the direction a marquee travels — the bar runs rightwards, so its content walks towards the right edge. Worn by the RIGHT cell of the `Scroll direction` control on the Scrolling Bar section, which is the shell's 3×3 placement grid with four live cells, each drawing an arrow in place of the grid's dot. One of a family of four, and the family is one drawing turned: `direction-right` rotated a quarter turn at a time. ⚠️ NOT `move-up` and NOT `move-down`, and that refusal is the reason this entry is long. Those two are arrows, they are already in this set, and they mean the one thing these four must never be read as — REORDERING a block inside its parent's list, which their own entries say does not scroll a view. An arrow here that did not refuse them by name would be borrowed by one within a release. NOT `chevron`, which is disclosure and is turned to point AT the thing it opens. NOT `direction`, which is the row's LEADING glyph — the mark beside the label saying the row is about travel at all — where these four are the ANSWERS inside the control. Owner, 2026-09-11","direction-up":"the direction a marquee travels — the bar runs upwards, so its content walks towards the top edge. Worn by the TOP cell of the `Scroll direction` control on the Scrolling Bar section, which is the shell's 3×3 placement grid with four live cells, each drawing an arrow in place of the grid's dot. One of a family of four, and the family is one drawing turned: `direction-right` rotated a quarter turn at a time. ⚠️ NOT `move-up` and NOT `move-down`, and that refusal is the reason this entry is long. Those two are arrows, they are already in this set, and they mean the one thing these four must never be read as — REORDERING a block inside its parent's list, which their own entries say does not scroll a view. An arrow here that did not refuse them by name would be borrowed by one within a release. NOT `chevron`, which is disclosure and is turned to point AT the thing it opens. NOT `direction`, which is the row's LEADING glyph — the mark beside the label saying the row is about travel at all — where these four are the ANSWERS inside the control. Owner, 2026-09-11",document:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","document-check":"document-check","document-magnifying-glass":"document-magnifying-glass",dollar:"dollar",dot:"Used in admin-portal src/shell-config/nav.tsx:37",download:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",drag:"Drag handle",drop:"a COLOUR, where the row is named for the colour itself rather than for the element it paints — worn by the `Divider` colour row of the campaign editor's Email styles and by its Divider block's `Color`. The set names a colour by its ELEMENT wherever it can (`text-color`, `ground`, `link`); this is the answer where there is no element to name.",duplicate:"Duplicate — owner pick 08-20, two-pages form",edit:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",email:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",emphasis:"the EMPHASIS mark — the toolbar button that writes `==words==` over the selection in the copy box's formatting bar: the phrase painted in the brand accent colour. A diamond, the ◆ the bar has shown for this mark since the campaign designer first drew it. Decided 2026-10-02. (retired by Lewis 2026-10-10; goes when nothing draws it)",eraser:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",error:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",expand:"expand",external:"Leaves this surface",eye:"Show","eye-off":"Hide","face-smile":"face-smile",filter:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",finish:"THE FINISHES A PRODUCT IS OFFERED IN — the swatch row a shopper picks a colour from. Worn by the `Finishes` row of the `Show on a card` group, on the storefront editor's Product Listing and Product Grid sections, which says whether a card draws that row at all (card [ADD] Choose What A Product Card Shows, 2026-09-21). Three swatches, because the idea is a CHOICE between finishes and a single swatch is just a colour. ⚠️ IT IS NOT `drop`, which is one colour where the row is named for the colour itself; not `accent`, which is the site's ONE emphasis rather than a set to pick from; not `contrast`, which is the tone of a whole palette; and not `theme`. Those four all answer \"what colour is this thing\"; this answers \"which of these does the shopper choose\".. …and the Spec Table's `Finish` row, where a MERCHANT picks which of a linked product's finishes the table should describe. Same subject — the finishes a product is offered in — seen from the other side of the editor. ⚠️ AND DELIBERATELY NOT THE `Opening filter`'s `Finish`, one line away in the same vocabulary, which carries NO glyph at all by the owner's facet ruling of 2026-08-29: a facet's options grow out of the merchant's catalogue, so an icon-per-facet queue never empties. Two rows, one drawn and one bare, written here where somebody is standing rather than left to be discovered. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",fire:"fire",flag:"flag",folder:"folder","folder-open":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","folder-plus":"folder-plus",forward:"Used in admin-portal src/pages/mail/MessageCard.tsx:182","full-width":"how far a picture REACHES — the `Width` row (Default / Full width) of the campaign editor's Image block. Decided 2026-09-17. A band running edge to edge between two end walls. NOT `width`, a plain measure with two arrowheads, which says how wide rather than how far it reaches.",gap:"the air between two cards — the `Card gap` row on the storefront's Site styles ▸ Basics tab, beside `Corners`. …and the Box's block-spacing row, which is the same air one tier down: the room between the BLOCKS a merchant stacks inside a box rather than between two cards in a grid. One idea — the space between siblings — at two scales, which is why one drawing serves both rather than the shop drawing a second. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23 …AND THE TICKER'S `Join` ROW, which makes THREE SCALES for one idea: between two cards, between the blocks inside a box, and between a section and the one above or below it. ⚠️ AND `Join` SETS THE SAME THING BY CLOSING IT. `Nothing` / `Section above` / `Section below` picks which seam disappears, which reads at first glance like a different question — it is not. The space between siblings is what is being set either way, and zero is one of its answers. Written down because somebody will otherwise read `Join` as adjacency or as a border and reach for another drawing. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",gem:"Used in admin-portal src/take/ConsentGate.tsx:297",gift:"gift",globe:"a globe — the country / region selector row",grid:"Grid",ground:"the fill of the BOX THE CONTENT SITS IN — the ground under the content, at whatever level the box is. Worn at every level today, and they are one idea, not several: the `Background` row under `Surfaces` in a theme's colour sheet (the row card 66510 renamed from `Page background` when a theme stopped colouring a page and started colouring a SECTION); in the admin portal's email editor, `Card color` (puckConfig.tsx:684), `Content background` (:790, hinted \"Covers the section color, but not its image.\"), `Email body` (:2404), a button's `Fill color` and `Zebra rows`, and `Column background` (ColumnLookControls.tsx:193, a SwatchRow); and in the shop, `Image background`, the fill of the well behind a product card's picture — a box inside a card inside a section. `Card color` is the closest precedent for that last one: a CARD's own fill already wears this glyph in shipped code. Level is not meaning: a new glyph per level would name WHERE the box is rather than WHAT the row sets, which is the `drop` / `styles` fault in this file's own rule. ⚠️ NOT `background`, AND THE REASON PRINTED HERE UNTIL 2026-09-23 WAS A GHOST. It said `background` meant the section panel's Page / Dark / Accent picker — but card 66510 removed that choice, `ss.section-theme-picker` stopped the renderer reading it, and [FIX] Section Theme Colours cleared the last 62 stored keys on 2026-09-03. Nothing had worn that meaning for three weeks. Ruling against a control that no longer exists is how the same wrong decision gets made twice, and it was: PR #1456 read that sentence and put THIS glyph on the four section-band `Background` rows. The live distinction is in efficient-admin-portal's email editor, one line apart under a comment citing this file (src/components/email/puckConfig.tsx:781): `Section background` wears `background`, `Content background` wears `ground`, and the hint says why — \"Covers the section color, but not its image.\" `background` is the band a section lays down; `ground` is the fill of the box that covers it. NOT `page`, which carries an owner ruling (2026-08-20) pinning it to the page and the Pages rail — the meaning this row stopped having, which is the whole reason this glyph exists. NOT `layout` and NOT `square`, its two siblings in the same `Surfaces` group — `Panels & cards` and `Borders`. ⚠️ AND IT IS NOT CALLED `surface`, which is the obvious name and the wrong one: `surface` is already the shop's stored colour KEY for `Panels & cards`, the row directly below this one, so a glyph of that name would sit on the one row in the group it does not name — the same fault as `page` on this row, committed again one line down. Card 66511, 2026-09-02; wearers and the ghost corrected 2026-09-23",hand:"Used in admin-portal src/pages/todo/TodoList.tsx:956","hand-thumb-up":"hand-thumb-up",hash:"a NUMBER or its unit — worn by the `Measure length in` row (px / %) of the campaign editor's Divider, which picks what the length beside it is counted in.",headquarters:'the one office of several that is the main one — the `HQ` row of each office in the storefront Footprint section. The star is what separates it from a plain building: this glyph never means "an office", it means "THE office". NOT `globe`, which is the country / region selector. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22',heart:"heart",height:"how TALL a thing is — the `Min height` row of the campaign editor's Column settings. Decided 2026-09-17. `width` stood upright, so the pair reads as one family. NOT `width`, which is side to side.",help:"help","help-off":"Used in shell src/apps/Browser.tsx:450",hexagon:"Used in shell .design-sync/previews/PageHeader.tsx:8",home:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",hover:"the pointer resting on a card — the `Hover effect` row on the storefront's Site styles ▸ Basics tab, beside `Corners`",identification:"identification",image:"Image / photo","image-off":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",images:"images",inbox:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",info:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",italic:"the ITALIC mark — the toolbar button that writes `_words_` (⌘I) over the selection in the copy box's formatting bar. A slanted capital I with its two serifs, the button every word processor draws. Decided 2026-10-02.",key:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",layers:"Layers",layout:"page layout — the Layout settings bucket, not columns. …AND THE ROWS THAT ASK IT DIRECTLY: the `Layout`, `Arrangement` and `Card layout` rows of the storefront editor, which pick which arrangement a section draws. The bucket and the row are one idea at two scales — the bucket holds the questions about how a section is laid out, and these rows are that question asked directly. ⚠️ STILL NOT `columns`, which is a COUNT of them, and still not `grid`, which is equal cells: the distinction the sentence above draws is unchanged. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","letter-spacing":"letter spacing",lightbulb:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","line-between":"a rule drawn BETWEEN two columns of content — the `Line between columns` row of the campaign editor's Section settings. Decided 2026-09-17. An upright rule with words on both sides. NOT `block-divider`, the Divider block kind, which is a flat line across.. …and the storefront's `Separator` row, which draws the same rule between ITEMS in a run rather than between columns. The picture is the rule itself, so what it divides is the row's business and not the glyph's. ⚠️ NOT `block-divider`, the divider BLOCK kind, which never heads a settings row — the refusal above stands. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","line-style":"WHICH DASH a rule is drawn with — the `Line style` row (Solid / Dashed / Dotted) of the campaign editor's Divider, and of every Border row. Decided 2026-09-17. Three rules stacked: solid, dashed, dotted, so the row's own choices are the drawing. NOT `block-divider`, the Divider BLOCK kind, which is one plain line and never wears a settings row.",link:"link","link-slash":"link-slash",list:"a list of entries a merchant orders — worn by the `Phone order` row of the campaign editor's Section settings and by the `Links` row of its Social block. …AND THE `Bulleted list` toolbar button of the campaign editor's Text block, and the `Bulleted list` item of its No list / Bulleted list / Numbered list menu (final design, 2026-10-06): lines set as a list. `numbered-list` is its pair, with figures in place of the dots.",location:"A POINT ON THE EARTH, given as numbers — the `Coordinates`, `Latitude` and `Longitude` rows of the storefront's location editor, where a merchant types or fetches a place's figures. A map pin. ⚠️ NOT `drop`, which is the nearest shape in the set and means A COLOUR: that droplet's point is at the TOP and it is solid, this pin's point is at the BOTTOM and it is pierced. Rendered side by side at 16px before this was kept, because a teardrop beside a teardrop was the obvious way to lose. NOT `globe`, which is the country / region selector — a globe is which MARKET, a pin is which SPOT. NOT `headquarters`, which is one office of several and is a building with a star. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22",lock:"Locked",logo:"a brand mark — the Header panel's Logo tab",logout:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",map:"map",media:"Media",megaphone:"megaphone",menu:"a navigation menu the merchant builds — the `Menu` row of the storefront's Menu picker. The bar a shopper reads along, with the menu dropped open beneath it. ⚠️ NOT `list`, which is a list of entries a merchant orders by hand (the campaign editor's `Phone order` row): every menu is a list, but not every list is the thing a shopper navigates by, and the bar is what says which one this is. NOT `sitemap`, which is the whole structure of a site rather than one menu in it, and NOT `tabs`, which is one strip where only one panel shows at a time. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22",meta:"THE SMALL LINE OF FACTS ALONG THE BOTTOM of an item — a date, a code, a deadline, run together on one line. Worn by a settings row that holds that line. One full rule with three SHORT runs under it: the gaps are the drawing, because the gaps are what make it read as several facts instead of a paragraph. Decided 2026-09-25.",microphone:"microphone",money:"money",moon:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",more:"more","more-vertical":"Used in shell .design-sync/previews/IconButton.tsx:8","move-down":"send this block one step later in its parent's order — the `Move down` row of the block right-click menu the owner approved 2026-08-31. The mirror of `move-up` and it reorders the same way: it does not scroll a view, sort a list or lower a number. NOT `chevron`, which is disclosure rather than movement. Card 66400.a, 2026-09-02","move-up":"send this block one step earlier in its parent's order — the `Move up` row of the block right-click menu the owner approved 2026-08-31. It REORDERS: it does not scroll a view, sort a list or raise a number. NOT `chevron`, which is disclosure — a section opening, not a block moving — and is the first arrow-shaped thing a borrower meets in this set. Card 66400.a, 2026-09-02",newspaper:"newspaper","no-symbol":"no-symbol",note:"a short note ABOUT a thing rather than the thing — worn by the `Alt text` row of the campaign editor's Image block, the words a reader gets when the picture does not load.",nudge:"A FINE ADJUSTMENT FROM WHERE A THING ALREADY SITS — the storefront hero group's `Sideways` and `Up and down` rows, each a ±px offset. ⚠️ ONE DRAWING FOR BOTH ROWS, deliberately. They are one idea on two axes, and the ROW'S OWN LABEL says which axis — `Sideways` and `Up and down` are as plain as the panel gets. The padding family splits by side because WHICH EDGE changes what the setting means; an axis does not change what a nudge is. ⚠️ NOT `placement`, and refusing it is the point: that entry is WHERE A THING SITS among NINE POSITIONS in a 3×3 pad, and a nudge is not one of nine — it is a small move from wherever the thing already is. ⚠️ NOT `width` or `height`, which are a line with arrowheads at both ends: those MEASURE an extent, this MOVES a thing. NOT `direction-up`/`-down`/`-left`/`-right`, single arrows that say which way a marquee TRAVELS. NOT `drag`, six dots, which is a handle a person grabs. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","numbered-list":"a NUMBERED LIST — the lines the caret is on, written as 1. 2. 3. Worn by the `Numbered list` toolbar button of the campaign editor's Text block and the `Numbered list` item of its No list / Bulleted list / Numbered list menu. Three rules with 1, 2, 3 down the left. Decided 2026-10-06.",opacity:"opacity","own-text":"the words are the merchant's own, not the product's — the `My own text` segment of the Card text control",package:"package","package-open":"package-open","padding-bottom":"padding bottom","padding-left":"THE ROOM ON ONE SIDE — THE LEFT — of a box, worn by the storefront's `Padding left` row and by the folded `Left` row of a section's padding group. Drawn in `padding-top`'s grammar exactly: a rule at that edge, and the box held off it. ⚠️ IT EXISTS BECAUSE THE FAMILY WAS ASYMMETRIC, which is the whole finding. The set drew top and bottom as SINGLE sides and left/right only as a PAIR, so a row about one horizontal side had nothing true to wear and the obvious reach was `padding-x`. ⚠️ NOT `padding-x`, and bending that entry was refused on purpose: its sentence is “the room a PAGE leaves at its left and right edge — the `Side space` row”, which is a different thing at a different scale, and it refuses other uses by name. An entry that has been stretched twice stops meaning anything. GG, 2026-09-23. Card [FIX] The 176 Settings Rows With No Picture","padding-right":"THE ROOM ON ONE SIDE — THE RIGHT — of a box. The mirror of `padding-left`, and it lands with it so the four sides are finally one family: top, bottom, left, right, each a rule at its own edge with the box held off it. ⚠️ NOT `padding-x`, which is the PAGE's side space — see `padding-left` for why that entry was not stretched. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","padding-top":"padding top","padding-x":"the room a page leaves at its left and right edge — the `Side space` row on the storefront's Site styles ▸ Basics tab, beside `Content width`. NOT the air between two cards, which is `gap` on that same tab, and NOT `width`, which is how wide the content column itself may grow","padding-y":"THE ROOM ABOVE AND BELOW a box, as ONE setting — the storefront's `Space above and below` row. ⚠️ IT RETIRES A WORKAROUND THAT WAS ALREADY SHIPPING, KNOWINGLY. `efficient-shop`'s `components/PartSettingsPanel.tsx` FIELD_ICONS carries this comment against its own padding row: “The set draws `padding-top` and `padding-bottom` and has no glyph for the PAIR, which is what this one row moves. `PaddingTopIcon` is the nearer of the two … Flagged to the seat rather than solved quietly.” That flag is what this drawing answers; that row should move to this glyph. ⚠️ NOT `v-align`, AND THE PROPORTIONS ARE THE WHOLE REASON IT CAN LIVE. `v-align` is ALREADY two full-width rules with a narrow box between them — the obvious drawing for this idea is already taken, and drawing it again would have been a duplicate. This one INVERTS that: SHORT ticks and a WIDE box. `v-align` says which of three positions the content sits in; this says how much room is left. ⚠️ ITS KILL CONDITION follows from that: if `v-align` is ever redrawn with a wide box, or a second short-tick-and-wide-box drawing is added, THIS is the one to question first — it survives on proportion rather than on a shape nothing else has. ⚠️ NOT `gap`, which is the space BETWEEN siblings at three scales; this is room INSIDE one box. NOT `layout`, a frame with a band across it. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",page:"Page AND the Pages rail — owner ruling 08-20, one meaning","paint-brush":"paint-brush","panel-left":"the LEFT SIDE PANEL itself — worn by the Hide panel button at the end of a left panel's head (`MediaPanelHead`, both editors' SidePanelHeads) and by the Show panel button in the strip a hidden left panel leaves. One control, so one drawing: hiding and showing the panel wear the same glyph. A frame with its left column ruled off. ⛔ NOT an ✕: an ✕ closes a dialog, and a panel head has none (owner, 2026-10-04).","panel-right":"the RIGHT SIDE PANEL itself — the twin of `panel-left` for the settings panel: its head's Hide panel button and the strip a hidden right panel leaves. A frame with its right column ruled off.","paragraph-spacing":"PARAGRAPH SPACING — the room between one paragraph and the next, in px. Worn by the fourth value of the campaign editor's Text block number row (`Paragraph spacing`, beside Font size, Line spacing and Letter spacing). Two short paragraphs with a small upright mark in the room between them. Decided 2026-10-06.",parcel:"package",paste:"drop whatever is on the clipboard into here — the `Paste` row (⌘V) of the block right-click menu the owner approved 2026-08-31. The other half of `copy`, and the only entry in the set that means the clipboard's CONTENTS coming back out. NOT `add`, which opens a chooser for a new block rather than placing one already taken. Card 66400.a, 2026-09-02","paste-style":"put a held look onto this component — the `Paste style from …` row (⌥⌘V) of the right-click menu in both editors. Decided 2026-09-19 (card [ADD] Copy Style And Paste Style). The other half of `copy-style`: the same brush, beside `paste`'s clipboard. NOT `paste`, which drops a whole block, and NOT `copy-style`, which takes the look rather than putting it down.",pause:"pause",pen:"Used in shell src/apps/ImageAnnotator.tsx:567",people:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",percent:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",phone:"Phone","phone-hidden":"Used in admin-portal src/components/email/emailPhoneMarks.tsx:22",placement:"WHERE A THING SITS inside its box, in two dimensions — the `Placement`, `Content position` and `Text position` rows of the storefront editor, and the Hero's `Overlay position`. Each is a 3×3 pad, and the drawing is one square resting in a corner of a frame. ⚠️ NOT `v-align`, and this is the whole reason the drawing exists: that entry says it means \"where content sits UP AND DOWN inside its box\" — one dimension, top / middle / bottom. A 3×3 pad is two, and borrowing a one-dimensional picture for it would be a second meaning on one drawing. NOT `grid`, which is a layout of equal cells, and NOT `columns`. ⚠️ `layout` IS THE CLOSE ONE, and the distinction is that `layout`'s inner marks TOUCH the frame — a header band across it, a divider down it — while this square FLOATS in a corner, because floating is what says it could sit somewhere else. They can appear in one panel, since a `Placement` row lives inside the Layout bucket. If this square is ever redrawn touching an edge it becomes `layout` and should go. Card [FIX] The 28 Hand-Rolled Settings Rows, 2026-09-22",play:"play","plus-minus":"plus minus",power:"power","presentation-chart-bar":"presentation-chart-bar",print:"print",product:"product","product-field":"the words come from the catalogue record — the `From product` segment of the Card text control","product-size":"THE SIZES A PRODUCT IS SOLD IN — the row of size chips on a product card, each one an orderable variant. Worn by the `Sizes` row of the `Show on a card` group, on the storefront editor's Product Listing and Product Grid sections, which says whether a card draws those chips (card [ADD] Choose What A Product Card Shows, 2026-09-21). Two upright boxes on one baseline, one plainly bigger, because the idea is SEVERAL sizes of one product; one box would be a shape and would claim nothing. The pair is drawn SIDE BY SIDE and never overlapping: overlapping rounded boxes are already `copy`, and the difference a reader must see here is the SIZE, which an overlap turns into \"two of them\" instead. Three ascending boxes were drawn and rejected the same way — beside `columns` they read as a bar chart. ⚠️ IT CARRIES THE `product-` QUALIFIER FOR A REASON, and `product-field` is the precedent. Bare `size` is a word three rows of this set already want: `text-size` is how big type is set, `width` and `height` are how big a section is. None of them is a product's own catalogue of sizes, and a bare name is what lets the next borrower attach a second meaning to one drawing. It is also not `square`, which is one box and a shape.",progress:"Used in shell src/shell/timelineGlyphs.tsx:95",quiet:"the QUIET mark — the toolbar button that writes `^^words^^` over the selection in the copy box's formatting bar: smaller, softer words, like the fine print under a price. A small one-storey a. It is drawn SMALL on purpose, under the set's 14–17.5 box: smaller is what the mark does, and the design (v5) draws this button's a smaller than the B beside it. Decided 2026-10-02. (retired by Lewis 2026-10-10; goes when nothing draws it)","radio-dot":"Used in storefront lib/site-icon.ts:31",radius:"how ROUND a box's corners are — the `Corner radius` row of the campaign editor's Section and Column settings, and the image `Corner radius` row of Email styles. Decided 2026-09-17. A box with ONE strongly rounded corner. NOT `corner`, which is the storefront's `Which corners` row, and NOT `square`, which is the Borders row one line above.",receipt:"Used in admin-portal src/shell-config/search.ts:66","receipt-percent":"receipt-percent","receipt-refund":"receipt-refund","rectangle-group":"rectangle-group",redo:"Redo",refresh:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",remove:"Used in shell src/shell/Desktop.tsx:1199","remove-circle":"remove-circle",rename:"Rename / edit",reply:"Used in admin-portal src/pages/crm/NotesTimeline.tsx:269","reply-all":"Used in admin-portal src/pages/mail/MessageCard.tsx:178",revert:"Revert to inherited",robot:"Used in admin-portal src/shell-config/nav.tsx:303",rotate:"rotate",scale:"scale","scroll-point":"HOW FAR DOWN a reader has got before something happens — the Subscribe popup's `Scroll` row, a percentage of the page. An arrow travelling down to the line it must reach. ⚠️ ITS SIBLING ROW IS WHY IT HAD TO EXIST. One row up, `Delay` wears `clock`, honestly: a delay IS a time. This row is a POSITION, and wearing a clock beside it would make two different questions look like one. Same defect `clock` had on the `Trigger` row (corrected in 0.56.0), one row along. ⚠️ NOT `sticky`, which is the close one at 16px: both are a bar and a down arrow, and what separates them is WHICH END THE MASS IS AT — `sticky` is a thick pinned bar at the TOP with content moving away beneath it, this is a thin line at the BOTTOM with an arrow arriving at it. ⚠️ ITS KILL CONDITION: if `sticky` is ever redrawn with its bar at the bottom, these two collide and this is the one to question first. ⚠️ NOT `direction-down`, a plain arrow with nothing to arrive at — the line is the whole idea. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","scroll-text":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",search:"Search","select-all":"Used in admin-portal src/pages/mail/MessageList.tsx:66",send:"Send",server:"server",settings:"site settings — a gear; heads the Basics tab of the Site styles panel",shadow:"the depth a card sits at — the `Card shadow` row on the storefront's Site styles ▸ Basics tab, beside `Corners`","shape-ellipse":"Used in shell src/apps/ImageAnnotator.tsx:569","shape-rect":"Used in shell src/apps/ImageAnnotator.tsx:568",share:"share","shield-check":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","shield-exclamation":"shield-exclamation",signal:"Used in shell src/shell/Desktop.tsx:1278","signal-slash":"signal-slash",sitemap:"Sitemap",sort:"the order a SHOPPER puts a list in — the `Sort control` row of the Gallery panel and the `Sort + Clear all` row of the storefront's Catalog filter bar. ⚠️ NOT `list`, which is a list of entries the MERCHANT orders by hand (the campaign editor's `Phone order` and `Links` rows). The difference is who does the ordering, so the arrow is the whole point of this drawing. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",sparkles:"sparkles",speaker:"Used in shell src/apps/PomodoroTimer.tsx:651","speaker-wave":"speaker-wave","spec-table":"the table of a product's measured facts on its own page — the `Spec table` row of the storefront Product hero's `Show in the buy box` group. A header band over two name/value columns. NOT `grid`, which is a layout of equal cells, and NOT `line-between`, which is one rule drawn between two columns of CONTENT. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",spinner:"Used in admin-portal src/components/map/MapListView.tsx:98",split:"Used in admin-portal src/shell-config/nav.tsx:135",square:"square",star:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",state:"WHICH OF SEVERAL STATES a thing is in, where no one of them is the good one — the `State` row of a Mockup's result rows (`Match / done`, `In progress`, `No match`). A ring with its centre filled: one position chosen out of several, which is the idea, rather than any particular verdict. ⚠️ NOT `check`, and refusing it is the whole reason this entry exists. `check` means “checkmark / success”, which is TRUE OF ONE ANSWER IN THREE and false of the other two — a row wearing it would say `done` while a merchant is looking at `No match`. That is the same defect `clock` had on the `Trigger` row, found the same way and written here so the next person does not reach for `check` again. ⚠️ NOT `warning`, a triangle, which is wrong for the success case for the mirror-image reason. ⚠️ NOT `hash`, which is a NUMBER or its unit. ⚠️ NOT `contrast`, a circle with one HALF filled: that is a tone, and its hard straight edge is what tells the two apart at 16px — this one's fill is a centred dot. NOT `eye`, whose pupil sits inside a lens rather than a circle, and NOT `drag`, which is six dots in two columns. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23","status-circle":"Used in shell src/apps/PomodoroTimer.tsx:376","status-dot":"Used in shell src/shell/ServerStatusIndicator.tsx:287",sticky:"a thing that stays put while the page scrolls under it — the `Stick under header` row of the storefront Category bar and the `Scroll-over` row of Intro bleed. The bar is pinned and the content moves away from it, which is why the arrow points DOWN and away rather than up. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22","stop-circle":"Used in admin-portal src/shell-config/nav.tsx:276",store:"store",strike:"the STRIKETHROUGH mark — the toolbar button that writes `~~words~~` over the selection in the copy box's formatting bar (a was-price beside a now-price). An S with a rule through its middle. Decided 2026-10-02.",styles:"Styles",subscript:"the SUBSCRIPT mark — lowered small text (H₂O). Worn by the `Subscript` toolbar button of the campaign editor's Text block and the `Subscript` item of its Normal / Superscript / Subscript menu. The same capital A as `superscript`, with the small 2 at its foot (Lewis, 2026-10-06: after seeing the T: use A for all). Decided 2026-10-06.","success-burst":"Used in admin-portal src/take/Submitted.tsx:3",sun:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",superscript:"the SUPERSCRIPT mark — raised small text (®, ™, a footnote¹). Worn by the `Superscript` toolbar button of the campaign editor's Text block and the `Superscript` item of its Normal / Superscript / Subscript menu. A capital A with a small 2 at its top right (Lewis, 2026-10-06: the design's x, then a T, then, after seeing the T: use A for all). Decided 2026-10-06.",swap:"swap",swatch:"swatch",table:"table",tablet:"Tablet",tabs:"one strip of choices where only one panel shows at a time — the `Tab switcher` row of the storefront Gallery panel. TWO tabs with the selected one drawn TALLER is what makes it a switcher — a single raised tab over a panel is a folder, which is what the first drawing read as and why it was thrown away rather than a `layout` or a plain panel; nothing else in this set draws a selected-of-several. Card [FIX] Panel Rows That Draw No Picture, 2026-09-22",tag:"tag",target:"target",team:"team",telephone:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",template:"Template / bookmark","text-color":'the COLOUR one run of text is painted in — worn by the `Color` row of the storefront part panel\'s `Appearance` fold, the row that lets a merchant override the theme\'s ink on a single heading or paragraph. NOT `type`, which is the Site styles Theme tab\'s `Text colour` row AND the part panel\'s own `Font` row — that panel forbids two rows sharing a drawing (`scripts/test-part-field-icons.tsx` §4), so the element glyph the Theme tab\'s grammar would ask for is already spent one row up. NOT `accent`, which is one drawing already serving `Accent` (the type) and `Brand colour` (the colour) and may not take a third meaning. NOT `text-small`, which is `Label colour` on that same Theme tab. This is the one place in the set where a glyph names a COLOUR rather than the element it colours, and it does so because the element — a run of text — already has two drawings pointing at it. The letter IS the swatch: one closed A with its counter, marked `data-part="swatch"`, so a host fills it with the chosen colour (`[data-part="swatch"] { fill: … }`) while the line around it stays the ink, so light yellow and white still read on a white toolbar and black is told apart from no colour (a hollow A). Lewis 2026-10-13 picked this over "A + a drop" and "A + a bar", with the note "give the letter an outline, like the drop had". Drawn big enough to carry a fill, and thin enough to sit with the line icons beside it (Lewis 2026-10-13 asked for a thinner A): about 12 x 12px at 16px, legs 4 units. Card [ADD] A Run Of Text Can Take Its Own Color, 2026-09-09',"text-lines":"text lines","text-size":"text size","text-small":"SMALL TYPE — an eyebrow, a caption, a label run. Worn by the `Eyebrow` row of the campaign editor's Text block and by the `Tagline` row of its Logo. The set's `text-size` is the SIZE control; this is the small-type kind itself.","text-value":"Used in storefront packages/web-builder/src/components/FieldGlyph.tsx:111",theme:"one whole palette a section can be painted in — paper, ink, borders and accent together, not one colour. Worn by the `Theme` row of the section panel's `Colour` group (card 66313), the dropdown that says which of the site's themes this one section is on. NOT `contrast`, which names the Site styles Theme TAB — that is a PLACE, not the idea “a palette”. NOT `accent`, which is the site's ONE emphasis colour, one colour rather than a whole set. Card 66315, 2026-09-01",ticket:"ticket",title:"THE HEADING OF ONE ITEM, not of the band around it — worn by a settings row that holds the loudest line on a single card. An H drawn INSIDE the item's frame, and the containment is the whole distinction. Drawn for the campaign editor's Coupon card, where every layout carries exactly one `title` place. Decided 2026-09-25.",trash:"Delete",trigger:"WHAT MAKES THIS HAPPEN — the event a merchant picks to start something, not the thing that is started. Drawn for the `Trigger` row of the storefront's Subscribe popup, whose three answers are `Delay`, `Scroll` and `Exit`: a wait, a scroll position and a pointer leaving the page. Nothing they share is a picture, which is exactly why none of the five shipped candidates could take the row. ⚠️ NOT `clock`, and this is the drawing this one exists to replace: a clock face says TIME, which is true of `Delay` and FALSE of the other two — it shipped on that row in efficient-shop #1468 and is corrected in the card that adds this. ⚠️ NOT `hover`, a pointer resting on a card: that names the MOUSE specifically, and neither a scroll position nor an exit is a hover. ⚠️ NOT `animation`, a block with speed lines behind it: that names MOVEMENT, and a trigger is not a motion — it is the moment one starts. ⚠️ NOT `sticky`, a bar with content moving away beneath it, which names a thing that STAYS PUT while the page scrolls; `Scroll` here is when the reader reaches a point, never what the bar does. ⚠️ NOT `play`, a triangle, which is video playback. The bolt is the one shape in this set that means a thing FIRING rather than a thing being or moving, and it is the only zigzag in 138 drawings, so it cannot be misread for a neighbour at 16px. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",truck:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.",tv:"tv",type:"Text marker — the T",tyre:"Used in admin-portal src/shell-config/nav.tsx:290",underline:"whether links are UNDERLINED — the `Underline links` row of the campaign editor's Email styles. Decided 2026-09-17. A U over a rule, the mark every word processor uses. NOT `type`, which is the text marker, the T. …AND THE `Underline` toolbar button of the campaign editor's Text block (final design, 2026-10-06): the mark that underlines the selected words. One idea, words with a rule under them, so the button wears this drawing rather than a second copy of it.",undo:"Undo",upload:"upload","v-align":"where content sits UP AND DOWN inside its box — the `Content position` row (top / middle / bottom) of the campaign editor's Column settings. Decided 2026-09-17. A block between a top and a bottom rule. NOT `padding-top`, which has one rule and says how much room is above.",verified:"verified","video-off":"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","view-columns":"view-columns",wallet:"wallet",warning:"Warning",weight:"HOW HEAVY A STROKE IS — a font's weight, and a rule's thickness. It was written as “font weight” alone until the storefront's `Thickness` row (a footer divider, 1-8px) needed it: both settings make a mark heavier, and that is what the drawing shows. ⚠️ NOT `line-style`, which is WHICH DASH a rule is drawn with — solid, dashed, dotted — a different question about the same rule. Extended on card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",wheel:"Wheel",widgets:'WIDGETS - the small live panels a person puts on the desktop (clock, weather, stock, calculator and the rest). Worn by the desktop right-click row "Manage Widgets" and whatever opens the widget manager. Added 2026-10-13 (GG for Lewis: one icon means one thing; Manage Widgets drew `grid`, which is Snap to Grid\'s). NOT a plug-in or extension, and NOT `apps` or `layout`.',width:"width",window:"window",windows:"Used in shell src/shell/WindowManager.tsx:1051","words-from":"WHICH SIDE A ROW'S WORDS COME FROM, as the question rather than either answer — worn by a settings row that asks it, where the merchant picks between their own copy and copy the catalogue already holds. Drawn for the storefront Feature Rows block's `Rows from` row (`Product story` | `Detail shots`).",wrap:"WHETHER A ROW'S ITEMS FLOW ONTO A NEW LINE when they run out of room — the `Wrap` row of a Box's layout (`Wrap` / `No wrap`). The drawing is the RESULT rather than the motion: three items on the first line and one that has fallen to the second, because an uneven second row is the only thing that says wrapping happened. ⚠️ NOT `revert`, and this is the drawing this one was nearly drawn as. A line running right, turning down and coming back left with an arrowhead is the obvious picture for `wrap` and it is ALREADY `revert` — the two would have been the same drawing at 16px. Caught on the sheet before it was drawn, which is what the sheet is for. ⚠️ NOT `direction`, two same-way arrows, which names WHICH WAY a container's children run — and which is itself ruled to head no row (doc/naming.md N10.1 calls it a modifier). Wrapping is not a heading. ⚠️ NOT `columns`, three upright bars, which is a COUNT of columns, and NOT `grid`, which is equal cells: both draw an even arrangement, and unevenness is the whole of what this one says. ⚠️ NOT `line-between`, an upright rule with content either side, which divides two columns rather than describing how one row behaves. ⚠️ `grid` IS THE CLOSE ONE, AND THIS IS WHY IT IS ALLOWED TO LIVE. Both are a cluster of small squares, and at 16px what separates them is SILHOUETTE: this drawing is ASYMMETRIC — three across the top, one at the bottom LEFT, so it is wider on top and visibly short on the bottom right — against `grid`'s even 2×2. That difference survives the size; it was checked at 16px and again at 6× before it was kept, and it was handed up as a coin-flip rather than decided quietly. GG looked at both sheets and approved it, 2026-09-23. ⚠️ ITS KILL CONDITION, in the shape the bolt carries: if `grid` is ever redrawn asymmetric, or if a SECOND cluster-of-squares drawing is added to this set, THIS is the one to question first. Counting squares is a weaker way to be told apart than a shape nothing else has, and this drawing knows it. Card [FIX] The 176 Settings Rows With No Picture, 2026-09-23",wrench:"The dealer portal draws with lucide (stroke 2). Its drawings are not on this Mac, so they show as named tiles.","wrench-screwdriver":"wrench-screwdriver","zoom-in":"zoom-in"};function o({size:t=18,...r}){/* @__PURE__ */
|
|
2
2
|
return e("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,"aria-hidden":"true",...r,children:/* @__PURE__ */e("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5"})})}function i({size:t=18,...r}){/* @__PURE__ */
|
|
3
3
|
return e("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",...r,children:/* @__PURE__ */e("path",{d:"M3.75 7.5L20.25 7.5M3.75 12L7.5 12M11.25 9.75h7.875a1.125 1.125 0 0 1 1.125 1.125v2.25a1.125 1.125 0 0 1 -1.125 1.125h-7.875a1.125 1.125 0 0 1 -1.125 -1.125v-2.25a1.125 1.125 0 0 1 1.125 -1.125ZM3.75 16.5L15 16.5"})})}function n({size:t=18,...r}){/* @__PURE__ */
|
|
4
4
|
return e("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.5,"aria-hidden":"true",...r,children:/* @__PURE__ */e("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z"})})}function a({size:t=18,...r}){/* @__PURE__ */
|
|
@@ -1728,6 +1728,9 @@ interface SliderProps {
|
|
|
1728
1728
|
size?: SliderSize;
|
|
1729
1729
|
className?: string;
|
|
1730
1730
|
}
|
|
1731
|
+
declare function SliderGroup({ children }: {
|
|
1732
|
+
children: ReactNode;
|
|
1733
|
+
}): react_jsx_runtime.JSX.Element;
|
|
1731
1734
|
declare function Slider({ value, onChange, min, max, step, shiftStep, precision, inputMin, inputMax, suffix, showInput, emptyLabel, placeholderValue, stepFrom, label, 'aria-labelledby': labelledBy, valueText, id, disabled, size, className, }: SliderProps): react_jsx_runtime.JSX.Element;
|
|
1732
1735
|
|
|
1733
1736
|
interface DisplayChipItem<T extends string = string> {
|
|
@@ -8804,4 +8807,4 @@ declare function ChordChart({ labels: labelsProp, matrix: matrixProp, size, maxN
|
|
|
8804
8807
|
* string when the source is consumed without a build (e.g. tests). */
|
|
8805
8808
|
declare const VERSION: string;
|
|
8806
8809
|
|
|
8807
|
-
export { Breadcrumbs as $, ALT as A, type AvatarProps as B, type ColumnDef as C, type AvatarSize as D, type AvatarStatus as E, BORDER_WIDTHS as F, type BackgroundVariant as G, type BandScale as H, Banner as I, type BannerEmphasis as J, type BannerProps as K, type BannerTone as L, type BorderRole as M, type BoxPlotBox as N, BoxPlotChart as O, type PaginatedResponse as P, type BoxPlotChartProps as Q, BrandAssetEditor as R, type SearchConfig as S, type BrandAssetEditorProps as T, type BrandAssetPreview as U, BrandMark as V, type BrandMarkProps as W, type BrandMarkSlot as X, type BrandMarkSurface as Y, type BrandMarkTreatment as Z, type BreadcrumbItem as _, type SortState as a, ChordChart as a$, type BreadcrumbsProps as a0, BudgetBar as a1, type BudgetBarProps as a2, type BudgetState as a3, Button as a4, type ButtonClassesOptions as a5, type ButtonProps as a6, type ButtonSize as a7, type ButtonVariant as a8, CHART_INK as a9, type ChartBrushProps as aA, type ChartCurve as aB, ChartDefs as aC, type ChartDefsProps as aD, ChartDot as aE, type ChartDotProps as aF, type ChartDotVariant as aG, type ChartFillVariant as aH, ChartFrame as aI, type ChartFrameProps as aJ, ChartHighlightProvider as aK, type ChartLegendEntry as aL, type ChartLegendSwatch as aM, type ChartRange as aN, type ChartReferenceLine as aO, type ChartRevealDirection as aP, ChartSkeleton as aQ, type ChartSkeletonProps as aR, type ChartStatusTone as aS, type ChartStrokeVariant as aT, ChartTooltip as aU, type ChartTooltipProps as aV, type ChartTooltipRow as aW, ChatTemplate as aX, Checkbox as aY, type CheckboxProps as aZ, CheckoutTemplate as a_, CMD_A as aa, CMD_DOT as ab, CMD_ENTER as ac, CMD_K as ad, CMD_S as ae, COLUMN_COUNT_MAX as af, COLUMN_COUNT_WIDTHS as ag, COLUMN_SHARES_EQUAL as ah, COLUMN_SHARE_MIN as ai, CONTROL_HEIGHTS as aj, CORNERS as ak, Calendar as al, type CalendarMode as am, type CalendarProps as an, type Candle as ao, CandlestickChart as ap, type CandlestickChartProps as aq, Card as ar, type CardPadding as as, type CardProps as at, type CardTone as au, CartesianPlot as av, type CartesianPlotProps as aw, type CellStyle as ax, type ChartBackgroundVariant as ay, ChartBrush as az, ALT_SHIFT_D as b, Drawer as b$, type ChordChartProps as b0, ColorPicker as b1, ColorPickerPanel as b2, type ColorPickerPanelProps as b3, type ColorPickerProps as b4, type ColorPreset as b5, ColorSwatch as b6, type ColorSwatchProps as b7, type ColorSwatchSize as b8, ColoredBadge as b9, DataTable as bA, type DataTableColumn as bB, type DataTableColumnGroup as bC, type DataTableHeader as bD, DataTablePage as bE, type DataTableProps as bF, type DataTableRowLink as bG, type DataTableRowProps as bH, DatePicker as bI, type DatePickerProps as bJ, DateRangePicker as bK, type DateRangePickerProps as bL, DateTimePicker as bM, type DateTimePickerProps as bN, type DescriptionColumns as bO, type DescriptionItem as bP, DescriptionList as bQ, type DescriptionListProps as bR, Dialog as bS, type DialogProps as bT, type DialogSize as bU, type DisplayChipItem as bV, DisplayChips as bW, type DisplayChipsProps as bX, Divider as bY, type DividerProps as bZ, type DividerSpacing as b_, type ColoredBadgeProps as ba, ColumnChart as bb, type ColumnChartProps as bc, type ColumnSeries as bd, type ColumnShares as be, ComposerAttachments as bf, type ComposerAttachmentsProps as bg, ConfirmProvider as bh, ContainerFillChart as bi, type ContainerFillChartProps as bj, type ContainerFillItem as bk, ContextMenu as bl, type ContextMenuPoint as bm, type ContextMenuProps as bn, type ContextMenuState as bo, type ControlSize as bp, type CornerOption as bq, type Corners as br, CornersInput as bs, type CornersInputProps as bt, CountBadge as bu, type CountBadgeProps as bv, type CountBadgeTone as bw, type Curve as bx, DAY_MS as by, DashboardTemplate as bz, ALT_SHIFT_E as c, HexInput as c$, type DrawerProps as c0, type DrawerSide as c1, type DrawerSize as c2, DropdownMenu as c3, type DropdownMenuAlign as c4, type DropdownMenuCheckboxItem as c5, type DropdownMenuDividerItem as c6, type DropdownMenuEntry as c7, type DropdownMenuItem as c8, type DropdownMenuLabelItem as c9, type FormError as cA, FormErrorSummary as cB, type FormErrorSummaryProps as cC, FormField as cD, type FormFieldProps as cE, FormLayoutPage as cF, FunnelChart as cG, type FunnelChartProps as cH, type FunnelStage as cI, GLASS_DIVIDER as cJ, GLASS_INPUT_BG as cK, GROUP_COLORS as cL, GROUP_COLORS_SOLID as cM, GalleryTemplate as cN, type Gap as cO, type GlassOptions as cP, GlobalSearch as cQ, type GlobalSearchProps as cR, Grid as cS, type GridCols as cT, type GridColumn as cU, type GridProps as cV, HeatmapChart as cW, type HeatmapChartProps as cX, HelpCenter as cY, type HelpCenterDoc as cZ, type HelpCenterProps as c_, type DropdownMenuLinkItem as ca, type DropdownMenuProps as cb, type DropdownMenuRadioItem as cc, type DropdownMenuSide as cd, type DropdownPositionOptions as ce, ELEVATION_LEVELS as cf, ENGLISH as cg, ENTER as ch, EditableGrid as ci, type EditableGridProps as cj, type ElevationLevel as ck, EmailTemplate as cl, EmptyState as cm, type EmptyStateProps as cn, EmptyValue as co, type EmptyValueProps as cp, ErrorBoundary as cq, type ErrorBoundaryProps as cr, ErrorPage as cs, type ErrorPageProps as ct, FONT_WEIGHTS as cu, type FileIntake as cv, FilePicker as cw, type FilePickerProps as cx, type FillVariant as cy, type FontWeightRole as cz, ALT_SHIFT_N as d, MAX_FRACTION_DIGITS as d$, type HistogramBin as d0, HistogramChart as d1, type HistogramChartProps as d2, type Hsv as d3, INPUT_BASE as d4, INPUT_SIZES as d5, IconButton as d6, type IconButtonClassesOptions as d7, type IconButtonProps as d8, IconRail as d9, type LabelProps as dA, type LadderScale as dB, LanguagePanel as dC, type LanguagePanelProps as dD, LanguageSelect as dE, type LanguageSelectProps as dF, type LinearScale as dG, type LinkFilter as dH, type LinkFilterField as dI, type LinkKindChoice as dJ, type LinkOption as dK, type LinkOptionGroup as dL, LinkPicker as dM, type LinkPickerFieldProps as dN, type LinkPickerProps as dO, type LinkPickerWindowProps as dP, type LinkRules as dQ, type LinkTarget as dR, type ListDrop as dS, ListFooter as dT, ListLoadError as dU, type ListLoadErrorProps as dV, type ListMove as dW, ListRow as dX, type ListRowProps as dY, LoadingSpinner as dZ, type LoadingSpinnerProps as d_, IconRailButton as da, type IconRailButtonProps as db, type IconRailLabels as dc, type IconRailLabelsShown as dd, type IconRailOrientation as de, type IconRailProps as df, ImageFocusPoint as dg, type ImageFocusPointProps as dh, Inline as di, type InlineProps as dj, Input as dk, InputNumber as dl, type InputNumberProps as dm, type InputProps as dn, type InputSize as dp, type Justify as dq, Kanban as dr, type KanbanColumn as ds, type KanbanProps as dt, Kbd as du, type KbdProps as dv, type KbdSize as dw, type KbdTone as dx, Label as dy, type LabelClassesOptions as dz, APP_UPDATE_POLL_MS as e, type PublicPortal as e$, MENU_MAX_HEIGHT as e0, MOD as e1, MOTION as e2, MOTION_DURATIONS as e3, Markdown as e4, type MarkdownProps as e5, MediaUploadField as e6, type MediaUploadFieldProps as e7, MediaUploadGrid as e8, type MediaUploadGridItem as e9, Paragraph as eA, type ParagraphProps as eB, PieChart as eC, type PieChartProps as eD, type PieSegment as eE, type PlotGeometry as eF, type Point as eG, Popover as eH, type PopoverAlign as eI, type PopoverProps as eJ, type PopoverRenderProps as eK, type PopoverSide as eL, PopupMenu as eM, PopupMenuDivider as eN, PopupMenuItem as eO, type PopupMenuItemProps as eP, PopupMenuLabel as eQ, type PopupMenuProps as eR, PopupSubmenu as eS, type PopupSubmenuProps as eT, type PortalBrandingContextValue as eU, PortalBrandingProvider as eV, type PortalBrandingProviderProps as eW, ProductionTimeline as eX, type ProductionTimelineProps as eY, type ProductionTimelineSnapshot as eZ, type ProgressItem as e_, type MediaUploadGridProps as ea, type MenuPos as eb, Meter as ec, type MeterProps as ed, MetricBar as ee, type MetricBarProps as ef, type Milestone as eg, type MilestoneKind as eh, MilestoneTimeline as ei, type MilestoneTimelineProps as ej, type MotionSpeed as ek, NATIVE_MENU_ATTR as el, NEXT_CHUNK_PATH_PREFIX as em, NativeSelect as en, type NiceAxis as eo, NumericKeypad as ep, type NumericKeypadProps as eq, OVERLAY_OPEN_EVENT as er, PLACEHOLDER_INK as es, POPUP_MAX_WIDTH as et, POST_PRODUCTION_STATUSES as eu, PageHeader as ev, type PageHeaderProps as ew, Pagination as ex, type PaginationProps as ey, PaperclipGlyph as ez, Accordion as f, type SearchableSelectBaseProps as f$, type PublicPortalBranding as f0, RADAR_SERIES_CAP as f1, RADIUS_ROLES as f2, ROW_HEIGHTS as f3, type RadarAxis as f4, RadarChart as f5, type RadarChartProps as f6, type RadarSeries as f7, RadialBarChart as f8, type RadialBarChartProps as f9, SERIES_SLOT_COUNT as fA, SERIES_VARS as fB, SHELL_LANGUAGE_STORAGE_KEY as fC, SHIFT as fD, SPACING_ROLES as fE, SPACING_SCALE as fF, STAGES as fG, STALE_CHUNK_RELOAD_COOLDOWN_MS as fH, STALE_CHUNK_RELOAD_KEY as fI, STATUS_VARS as fJ, SankeyChart as fK, type SankeyChartProps as fL, type SankeyLink as fM, type SankeyNode as fN, ScatterChart as fO, type ScatterChartProps as fP, type ScatterPoint as fQ, type ScatterSeries as fR, type SearchListRoute as fS, type SearchProvider as fT, type SearchQuickAction as fU, type SearchResponse as fV, type SearchResult as fW, type SearchableItem as fX, type SearchableOption as fY, type SearchableOptionGroup as fZ, SearchableSelect as f_, type RadialBarRow as fa, Radio as fb, RadioGroup as fc, type RadioGroupOption as fd, type RadioGroupOrientation as fe, type RadioGroupProps as ff, type RadioProps as fg, type RadiusRole as fh, type Range as fi, RangeChart as fj, type RangeChartProps as fk, type RangeRow as fl, RankedBars as fm, type RankedBarsProps as fn, type RankedBarsRow as fo, ResizeHandle as fp, type ResizeHandleOrientation as fq, type ResizeHandleProps as fr, type ResizeHandleSide as fs, type ResizeHandleStackSide as ft, type ResolvedPortalBrandAsset as fu, Result as fv, type ResultProps as fw, type ResultStatus as fx, type RevealDirection as fy, SCATTER_SERIES_CAP as fz, type AccordionItem as g, StatusBadge as g$, type SearchableSelectMultipleProps as g0, type SearchableSelectProps as g1, Segmented as g2, type SegmentedOption as g3, type SegmentedProps as g4, type SegmentedSize as g5, Select as g6, type SelectBaseProps as g7, type SelectItem as g8, type SelectMultipleProps as g9, type SkeletonProps as gA, type SkeletonVariant as gB, Slider as gC, type SliderProps as gD, type SliderSize as gE, Snippet as gF, type SnippetProps as gG, type SnippetSize as gH, type SnippetVariant as gI, SortableList as gJ, type SortableListProps as gK, type SortableListSpacing as gL, type SpacingRole as gM, type SpacingStep as gN, Sparkline as gO, type SparklineProps as gP, Stack as gQ, type StackProps as gR, type StaleChunkReloadOptions as gS, StatCard as gT, type StatCardProps as gU, StatTile as gV, type StatTileProps as gW, Statistic as gX, type StatisticProps as gY, type StatisticSize as gZ, type StatisticTone as g_, type SelectOption as ga, type SelectOptionGroup as gb, type SelectProps as gc, type SemanticGroup as gd, type SeriesSlots as ge, SettingRow as gf, type SettingRowProps as gg, type SeverityTone as gh, type ShellContextKind as gi, type ShellContextTarget as gj, type ShellLanguage as gk, ShellLanguageProvider as gl, type ShellLanguageState as gm, type ShellPrefsAdapter as gn, ShellPrefsProvider as go, SidebarActionButton as gp, type SidebarActionButtonProps as gq, SidebarGroupLabel as gr, type SidebarGroupLabelProps as gs, SidebarLayout as gt, type SidebarLayoutProps as gu, SidebarNavGroup as gv, type SidebarNavGroupProps as gw, SidebarNavItem as gx, type SidebarNavItemProps as gy, Skeleton as gz, type AccordionProps as h, type TreeDrop as h$, StatusBadgeProvider as h0, type StatusEmphasis as h1, type StepItem as h2, Stepper as h3, type StepperProps as h4, type StrokeVariant as h5, SunburstChart as h6, type SunburstChartProps as h7, type SunburstNode as h8, Switch as h9, type TimePickerProps as hA, TimeSeriesChart as hB, type TimeSeriesChartProps as hC, type TimeSeriesSeries as hD, type TimelineMarker as hE, type TimelineMarkerKind as hF, type TimelineReport as hG, type TimelineScrubProgress as hH, TimelineTrack as hI, type TimelineTrackItem as hJ, type TimelineTrackKind as hK, type TimelineTrackPending as hL, type TimelineTrackPhase as hM, type TimelineTrackPlayback as hN, type TimelineTrackProps as hO, type TimelineTrackThumb as hP, Title as hQ, type TitleLevel as hR, type TitleProps as hS, type ToastOptions as hT, type ToastPlacement as hU, Tooltip as hV, type TooltipProps as hW, TopNav as hX, type TopNavItem as hY, type TopNavProps as hZ, Tree as h_, type SwitchProps as ha, type SwitchSize as hb, TYPE_SCALE as hc, type TabItem as hd, Tabs as he, type TabsProps as hf, TagInput as hg, type TagInputOption as hh, type TagInputProps as hi, type TagInputTone as hj, Text as hk, TextLinkField as hl, type TextLinkFieldProps as hm, type TextProps as hn, type TextSize as ho, type TextTone as hp, type TextWeight as hq, Textarea as hr, type TextareaProps as hs, type Theme as ht, TileButton as hu, type TileButtonProps as hv, type TileSize as hw, TimeAgo as hx, type TimeAgoProps as hy, TimePicker as hz, type Align as i, groundId as i$, TreeEmptySlot as i0, type TreeEmptySlotProps as i1, TreeGroup as i2, TreeGroupLabel as i3, type TreeGroupProps as i4, type TreeMove as i5, type TreeProps as i6, TreeRow as i7, type TreeRowProps as i8, TreeSeam as i9, areaBetween as iA, areaFrom as iB, assignSeriesSlots as iC, autoHighlightIndex as iD, backspace as iE, bandScale as iF, binValues as iG, budgetState as iH, bumpPath as iI, buttonClasses as iJ, calcOverall as iK, calcReportOverall as iL, colorFill as iM, colorSwatchClasses as iN, columnSharesWidths as iO, confirm as iP, confirmDestructive as iQ, curvePath as iR, dashFor as iS, describeContextTarget as iT, dismissPopups as iU, fillFor as iV, fillId as iW, fmtSliderDate as iX, fromKey as iY, glassStyle as iZ, glowId as i_, type TreeSeamProps as ia, TreemapChart as ib, type TreemapChartProps as ic, type TreemapItem as id, type TreemapTile as ie, type TypeStep as ig, type UseAppUpdateOptions as ih, type UseContextMenu as ii, type UseProductionTimelineOpts as ij, VERSION as ik, VITE_PRELOAD_ERROR_EVENT as il, WaterfallChart as im, type WaterfallChartProps as io, type WaterfallStep as ip, WidthsBar as iq, type WidthsBarProps as ir, type ZLayer as is, Z_LAYERS as it, angleScale as iu, appendKey as iv, applyCorners as iw, applyIconSet as ix, applyThemePrefs as iy, arcPath as iz, AlignmentGrid as j, useDropdownPosition as j$, groupColors as j0, hexToHsv as j1, highlightOpacity as j2, hsvToHex as j3, iconButtonClasses as j4, inputClasses as j5, installStaleChunkReload as j6, isMac as j7, isSeverityTone as j8, isSpacingStep as j9, resolveColumnWidths as jA, resolveCorners as jB, resolvePortalBrandAsset as jC, resolveSeriesColor as jD, resolveSeriesColorWithin as jE, resolveShellLanguage as jF, resolveTheme as jG, sanitizeRecent as jH, saveShellLanguage as jI, seriesColor as jJ, severityOf as jK, splinePath as jL, squarify as jM, stagger as jN, stepPath as jO, tabButtonId as jP, tabPanelId as jQ, toKey as jR, toDayMs as jS, toISODate as jT, toast as jU, toggleSeriesSlot as jV, useAppUpdate as jW, useClickOutside as jX, useConfirm as jY, useContextMenu as jZ, useDebouncedValue as j_, isStaleChunkError as ja, keepsNativeMenu as jb, labelClasses as jc, ladderScale as jd, languageSelectWidth as je, leavesContextMenuAlone as jf, linearPath as jg, linearScale as jh, logScale as ji, maskId as jj, matchShellLanguage as jk, mediaFileName as jl, monotonePath as jm, niceAxis as jn, niceMax as jo, openGlobalSearch as jp, parseHexColor as jq, polygonPoints as jr, popupBounds as js, prompt as jt, pushRecent as ju, radiusScale as jv, readSavedShellLanguage as jw, registerModalEscapeInterceptor as jx, resolveBrandMarkTreatment as jy, resolveColumnShares as jz, type AlignmentGridProps as k, useFocusTrap as k0, useHighlight as k1, useIsMobile as k2, useLocalStoragePrefs as k3, usePlotWidth as k4, usePortalBranding as k5, useProductionTimeline as k6, useScrollLock as k7, useShellLanguage as k8, useShellPrefs as k9, useStatusLabel as ka, useTheme as kb, type AlignmentPoint as l, type AngleScale as m, AppUpdateBanner as n, type AppUpdateBannerProps as o, AttachButton as p, type AttachButtonProps as q, AttachmentDropZone as r, type AttachmentDropZoneProps as s, AttachmentList as t, type AttachmentListProps as u, AuthScreen as v, type AuthScreenProps as w, Avatar as x, AvatarGroup as y, type AvatarGroupProps as z };
|
|
8810
|
+
export { Breadcrumbs as $, ALT as A, type AvatarProps as B, type ColumnDef as C, type AvatarSize as D, type AvatarStatus as E, BORDER_WIDTHS as F, type BackgroundVariant as G, type BandScale as H, Banner as I, type BannerEmphasis as J, type BannerProps as K, type BannerTone as L, type BorderRole as M, type BoxPlotBox as N, BoxPlotChart as O, type PaginatedResponse as P, type BoxPlotChartProps as Q, BrandAssetEditor as R, type SearchConfig as S, type BrandAssetEditorProps as T, type BrandAssetPreview as U, BrandMark as V, type BrandMarkProps as W, type BrandMarkSlot as X, type BrandMarkSurface as Y, type BrandMarkTreatment as Z, type BreadcrumbItem as _, type SortState as a, ChordChart as a$, type BreadcrumbsProps as a0, BudgetBar as a1, type BudgetBarProps as a2, type BudgetState as a3, Button as a4, type ButtonClassesOptions as a5, type ButtonProps as a6, type ButtonSize as a7, type ButtonVariant as a8, CHART_INK as a9, type ChartBrushProps as aA, type ChartCurve as aB, ChartDefs as aC, type ChartDefsProps as aD, ChartDot as aE, type ChartDotProps as aF, type ChartDotVariant as aG, type ChartFillVariant as aH, ChartFrame as aI, type ChartFrameProps as aJ, ChartHighlightProvider as aK, type ChartLegendEntry as aL, type ChartLegendSwatch as aM, type ChartRange as aN, type ChartReferenceLine as aO, type ChartRevealDirection as aP, ChartSkeleton as aQ, type ChartSkeletonProps as aR, type ChartStatusTone as aS, type ChartStrokeVariant as aT, ChartTooltip as aU, type ChartTooltipProps as aV, type ChartTooltipRow as aW, ChatTemplate as aX, Checkbox as aY, type CheckboxProps as aZ, CheckoutTemplate as a_, CMD_A as aa, CMD_DOT as ab, CMD_ENTER as ac, CMD_K as ad, CMD_S as ae, COLUMN_COUNT_MAX as af, COLUMN_COUNT_WIDTHS as ag, COLUMN_SHARES_EQUAL as ah, COLUMN_SHARE_MIN as ai, CONTROL_HEIGHTS as aj, CORNERS as ak, Calendar as al, type CalendarMode as am, type CalendarProps as an, type Candle as ao, CandlestickChart as ap, type CandlestickChartProps as aq, Card as ar, type CardPadding as as, type CardProps as at, type CardTone as au, CartesianPlot as av, type CartesianPlotProps as aw, type CellStyle as ax, type ChartBackgroundVariant as ay, ChartBrush as az, ALT_SHIFT_D as b, Drawer as b$, type ChordChartProps as b0, ColorPicker as b1, ColorPickerPanel as b2, type ColorPickerPanelProps as b3, type ColorPickerProps as b4, type ColorPreset as b5, ColorSwatch as b6, type ColorSwatchProps as b7, type ColorSwatchSize as b8, ColoredBadge as b9, DataTable as bA, type DataTableColumn as bB, type DataTableColumnGroup as bC, type DataTableHeader as bD, DataTablePage as bE, type DataTableProps as bF, type DataTableRowLink as bG, type DataTableRowProps as bH, DatePicker as bI, type DatePickerProps as bJ, DateRangePicker as bK, type DateRangePickerProps as bL, DateTimePicker as bM, type DateTimePickerProps as bN, type DescriptionColumns as bO, type DescriptionItem as bP, DescriptionList as bQ, type DescriptionListProps as bR, Dialog as bS, type DialogProps as bT, type DialogSize as bU, type DisplayChipItem as bV, DisplayChips as bW, type DisplayChipsProps as bX, Divider as bY, type DividerProps as bZ, type DividerSpacing as b_, type ColoredBadgeProps as ba, ColumnChart as bb, type ColumnChartProps as bc, type ColumnSeries as bd, type ColumnShares as be, ComposerAttachments as bf, type ComposerAttachmentsProps as bg, ConfirmProvider as bh, ContainerFillChart as bi, type ContainerFillChartProps as bj, type ContainerFillItem as bk, ContextMenu as bl, type ContextMenuPoint as bm, type ContextMenuProps as bn, type ContextMenuState as bo, type ControlSize as bp, type CornerOption as bq, type Corners as br, CornersInput as bs, type CornersInputProps as bt, CountBadge as bu, type CountBadgeProps as bv, type CountBadgeTone as bw, type Curve as bx, DAY_MS as by, DashboardTemplate as bz, ALT_SHIFT_E as c, HexInput as c$, type DrawerProps as c0, type DrawerSide as c1, type DrawerSize as c2, DropdownMenu as c3, type DropdownMenuAlign as c4, type DropdownMenuCheckboxItem as c5, type DropdownMenuDividerItem as c6, type DropdownMenuEntry as c7, type DropdownMenuItem as c8, type DropdownMenuLabelItem as c9, type FormError as cA, FormErrorSummary as cB, type FormErrorSummaryProps as cC, FormField as cD, type FormFieldProps as cE, FormLayoutPage as cF, FunnelChart as cG, type FunnelChartProps as cH, type FunnelStage as cI, GLASS_DIVIDER as cJ, GLASS_INPUT_BG as cK, GROUP_COLORS as cL, GROUP_COLORS_SOLID as cM, GalleryTemplate as cN, type Gap as cO, type GlassOptions as cP, GlobalSearch as cQ, type GlobalSearchProps as cR, Grid as cS, type GridCols as cT, type GridColumn as cU, type GridProps as cV, HeatmapChart as cW, type HeatmapChartProps as cX, HelpCenter as cY, type HelpCenterDoc as cZ, type HelpCenterProps as c_, type DropdownMenuLinkItem as ca, type DropdownMenuProps as cb, type DropdownMenuRadioItem as cc, type DropdownMenuSide as cd, type DropdownPositionOptions as ce, ELEVATION_LEVELS as cf, ENGLISH as cg, ENTER as ch, EditableGrid as ci, type EditableGridProps as cj, type ElevationLevel as ck, EmailTemplate as cl, EmptyState as cm, type EmptyStateProps as cn, EmptyValue as co, type EmptyValueProps as cp, ErrorBoundary as cq, type ErrorBoundaryProps as cr, ErrorPage as cs, type ErrorPageProps as ct, FONT_WEIGHTS as cu, type FileIntake as cv, FilePicker as cw, type FilePickerProps as cx, type FillVariant as cy, type FontWeightRole as cz, ALT_SHIFT_N as d, MAX_FRACTION_DIGITS as d$, type HistogramBin as d0, HistogramChart as d1, type HistogramChartProps as d2, type Hsv as d3, INPUT_BASE as d4, INPUT_SIZES as d5, IconButton as d6, type IconButtonClassesOptions as d7, type IconButtonProps as d8, IconRail as d9, type LabelProps as dA, type LadderScale as dB, LanguagePanel as dC, type LanguagePanelProps as dD, LanguageSelect as dE, type LanguageSelectProps as dF, type LinearScale as dG, type LinkFilter as dH, type LinkFilterField as dI, type LinkKindChoice as dJ, type LinkOption as dK, type LinkOptionGroup as dL, LinkPicker as dM, type LinkPickerFieldProps as dN, type LinkPickerProps as dO, type LinkPickerWindowProps as dP, type LinkRules as dQ, type LinkTarget as dR, type ListDrop as dS, ListFooter as dT, ListLoadError as dU, type ListLoadErrorProps as dV, type ListMove as dW, ListRow as dX, type ListRowProps as dY, LoadingSpinner as dZ, type LoadingSpinnerProps as d_, IconRailButton as da, type IconRailButtonProps as db, type IconRailLabels as dc, type IconRailLabelsShown as dd, type IconRailOrientation as de, type IconRailProps as df, ImageFocusPoint as dg, type ImageFocusPointProps as dh, Inline as di, type InlineProps as dj, Input as dk, InputNumber as dl, type InputNumberProps as dm, type InputProps as dn, type InputSize as dp, type Justify as dq, Kanban as dr, type KanbanColumn as ds, type KanbanProps as dt, Kbd as du, type KbdProps as dv, type KbdSize as dw, type KbdTone as dx, Label as dy, type LabelClassesOptions as dz, APP_UPDATE_POLL_MS as e, type PublicPortal as e$, MENU_MAX_HEIGHT as e0, MOD as e1, MOTION as e2, MOTION_DURATIONS as e3, Markdown as e4, type MarkdownProps as e5, MediaUploadField as e6, type MediaUploadFieldProps as e7, MediaUploadGrid as e8, type MediaUploadGridItem as e9, Paragraph as eA, type ParagraphProps as eB, PieChart as eC, type PieChartProps as eD, type PieSegment as eE, type PlotGeometry as eF, type Point as eG, Popover as eH, type PopoverAlign as eI, type PopoverProps as eJ, type PopoverRenderProps as eK, type PopoverSide as eL, PopupMenu as eM, PopupMenuDivider as eN, PopupMenuItem as eO, type PopupMenuItemProps as eP, PopupMenuLabel as eQ, type PopupMenuProps as eR, PopupSubmenu as eS, type PopupSubmenuProps as eT, type PortalBrandingContextValue as eU, PortalBrandingProvider as eV, type PortalBrandingProviderProps as eW, ProductionTimeline as eX, type ProductionTimelineProps as eY, type ProductionTimelineSnapshot as eZ, type ProgressItem as e_, type MediaUploadGridProps as ea, type MenuPos as eb, Meter as ec, type MeterProps as ed, MetricBar as ee, type MetricBarProps as ef, type Milestone as eg, type MilestoneKind as eh, MilestoneTimeline as ei, type MilestoneTimelineProps as ej, type MotionSpeed as ek, NATIVE_MENU_ATTR as el, NEXT_CHUNK_PATH_PREFIX as em, NativeSelect as en, type NiceAxis as eo, NumericKeypad as ep, type NumericKeypadProps as eq, OVERLAY_OPEN_EVENT as er, PLACEHOLDER_INK as es, POPUP_MAX_WIDTH as et, POST_PRODUCTION_STATUSES as eu, PageHeader as ev, type PageHeaderProps as ew, Pagination as ex, type PaginationProps as ey, PaperclipGlyph as ez, Accordion as f, type SearchableSelectBaseProps as f$, type PublicPortalBranding as f0, RADAR_SERIES_CAP as f1, RADIUS_ROLES as f2, ROW_HEIGHTS as f3, type RadarAxis as f4, RadarChart as f5, type RadarChartProps as f6, type RadarSeries as f7, RadialBarChart as f8, type RadialBarChartProps as f9, SERIES_SLOT_COUNT as fA, SERIES_VARS as fB, SHELL_LANGUAGE_STORAGE_KEY as fC, SHIFT as fD, SPACING_ROLES as fE, SPACING_SCALE as fF, STAGES as fG, STALE_CHUNK_RELOAD_COOLDOWN_MS as fH, STALE_CHUNK_RELOAD_KEY as fI, STATUS_VARS as fJ, SankeyChart as fK, type SankeyChartProps as fL, type SankeyLink as fM, type SankeyNode as fN, ScatterChart as fO, type ScatterChartProps as fP, type ScatterPoint as fQ, type ScatterSeries as fR, type SearchListRoute as fS, type SearchProvider as fT, type SearchQuickAction as fU, type SearchResponse as fV, type SearchResult as fW, type SearchableItem as fX, type SearchableOption as fY, type SearchableOptionGroup as fZ, SearchableSelect as f_, type RadialBarRow as fa, Radio as fb, RadioGroup as fc, type RadioGroupOption as fd, type RadioGroupOrientation as fe, type RadioGroupProps as ff, type RadioProps as fg, type RadiusRole as fh, type Range as fi, RangeChart as fj, type RangeChartProps as fk, type RangeRow as fl, RankedBars as fm, type RankedBarsProps as fn, type RankedBarsRow as fo, ResizeHandle as fp, type ResizeHandleOrientation as fq, type ResizeHandleProps as fr, type ResizeHandleSide as fs, type ResizeHandleStackSide as ft, type ResolvedPortalBrandAsset as fu, Result as fv, type ResultProps as fw, type ResultStatus as fx, type RevealDirection as fy, SCATTER_SERIES_CAP as fz, type AccordionItem as g, type StatisticTone as g$, type SearchableSelectMultipleProps as g0, type SearchableSelectProps as g1, Segmented as g2, type SegmentedOption as g3, type SegmentedProps as g4, type SegmentedSize as g5, Select as g6, type SelectBaseProps as g7, type SelectItem as g8, type SelectMultipleProps as g9, type SkeletonProps as gA, type SkeletonVariant as gB, Slider as gC, SliderGroup as gD, type SliderProps as gE, type SliderSize as gF, Snippet as gG, type SnippetProps as gH, type SnippetSize as gI, type SnippetVariant as gJ, SortableList as gK, type SortableListProps as gL, type SortableListSpacing as gM, type SpacingRole as gN, type SpacingStep as gO, Sparkline as gP, type SparklineProps as gQ, Stack as gR, type StackProps as gS, type StaleChunkReloadOptions as gT, StatCard as gU, type StatCardProps as gV, StatTile as gW, type StatTileProps as gX, Statistic as gY, type StatisticProps as gZ, type StatisticSize as g_, type SelectOption as ga, type SelectOptionGroup as gb, type SelectProps as gc, type SemanticGroup as gd, type SeriesSlots as ge, SettingRow as gf, type SettingRowProps as gg, type SeverityTone as gh, type ShellContextKind as gi, type ShellContextTarget as gj, type ShellLanguage as gk, ShellLanguageProvider as gl, type ShellLanguageState as gm, type ShellPrefsAdapter as gn, ShellPrefsProvider as go, SidebarActionButton as gp, type SidebarActionButtonProps as gq, SidebarGroupLabel as gr, type SidebarGroupLabelProps as gs, SidebarLayout as gt, type SidebarLayoutProps as gu, SidebarNavGroup as gv, type SidebarNavGroupProps as gw, SidebarNavItem as gx, type SidebarNavItemProps as gy, Skeleton as gz, type AccordionProps as h, Tree as h$, StatusBadge as h0, StatusBadgeProvider as h1, type StatusEmphasis as h2, type StepItem as h3, Stepper as h4, type StepperProps as h5, type StrokeVariant as h6, SunburstChart as h7, type SunburstChartProps as h8, type SunburstNode as h9, TimePicker as hA, type TimePickerProps as hB, TimeSeriesChart as hC, type TimeSeriesChartProps as hD, type TimeSeriesSeries as hE, type TimelineMarker as hF, type TimelineMarkerKind as hG, type TimelineReport as hH, type TimelineScrubProgress as hI, TimelineTrack as hJ, type TimelineTrackItem as hK, type TimelineTrackKind as hL, type TimelineTrackPending as hM, type TimelineTrackPhase as hN, type TimelineTrackPlayback as hO, type TimelineTrackProps as hP, type TimelineTrackThumb as hQ, Title as hR, type TitleLevel as hS, type TitleProps as hT, type ToastOptions as hU, type ToastPlacement as hV, Tooltip as hW, type TooltipProps as hX, TopNav as hY, type TopNavItem as hZ, type TopNavProps as h_, Switch as ha, type SwitchProps as hb, type SwitchSize as hc, TYPE_SCALE as hd, type TabItem as he, Tabs as hf, type TabsProps as hg, TagInput as hh, type TagInputOption as hi, type TagInputProps as hj, type TagInputTone as hk, Text as hl, TextLinkField as hm, type TextLinkFieldProps as hn, type TextProps as ho, type TextSize as hp, type TextTone as hq, type TextWeight as hr, Textarea as hs, type TextareaProps as ht, type Theme as hu, TileButton as hv, type TileButtonProps as hw, type TileSize as hx, TimeAgo as hy, type TimeAgoProps as hz, type Align as i, glowId as i$, type TreeDrop as i0, TreeEmptySlot as i1, type TreeEmptySlotProps as i2, TreeGroup as i3, TreeGroupLabel as i4, type TreeGroupProps as i5, type TreeMove as i6, type TreeProps as i7, TreeRow as i8, type TreeRowProps as i9, arcPath as iA, areaBetween as iB, areaFrom as iC, assignSeriesSlots as iD, autoHighlightIndex as iE, backspace as iF, bandScale as iG, binValues as iH, budgetState as iI, bumpPath as iJ, buttonClasses as iK, calcOverall as iL, calcReportOverall as iM, colorFill as iN, colorSwatchClasses as iO, columnSharesWidths as iP, confirm as iQ, confirmDestructive as iR, curvePath as iS, dashFor as iT, describeContextTarget as iU, dismissPopups as iV, fillFor as iW, fillId as iX, fmtSliderDate as iY, fromKey as iZ, glassStyle as i_, TreeSeam as ia, type TreeSeamProps as ib, TreemapChart as ic, type TreemapChartProps as id, type TreemapItem as ie, type TreemapTile as ig, type TypeStep as ih, type UseAppUpdateOptions as ii, type UseContextMenu as ij, type UseProductionTimelineOpts as ik, VERSION as il, VITE_PRELOAD_ERROR_EVENT as im, WaterfallChart as io, type WaterfallChartProps as ip, type WaterfallStep as iq, WidthsBar as ir, type WidthsBarProps as is, type ZLayer as it, Z_LAYERS as iu, angleScale as iv, appendKey as iw, applyCorners as ix, applyIconSet as iy, applyThemePrefs as iz, AlignmentGrid as j, useDebouncedValue as j$, groundId as j0, groupColors as j1, hexToHsv as j2, highlightOpacity as j3, hsvToHex as j4, iconButtonClasses as j5, inputClasses as j6, installStaleChunkReload as j7, isMac as j8, isSeverityTone as j9, resolveColumnShares as jA, resolveColumnWidths as jB, resolveCorners as jC, resolvePortalBrandAsset as jD, resolveSeriesColor as jE, resolveSeriesColorWithin as jF, resolveShellLanguage as jG, resolveTheme as jH, sanitizeRecent as jI, saveShellLanguage as jJ, seriesColor as jK, severityOf as jL, splinePath as jM, squarify as jN, stagger as jO, stepPath as jP, tabButtonId as jQ, tabPanelId as jR, toKey as jS, toDayMs as jT, toISODate as jU, toast as jV, toggleSeriesSlot as jW, useAppUpdate as jX, useClickOutside as jY, useConfirm as jZ, useContextMenu as j_, isSpacingStep as ja, isStaleChunkError as jb, keepsNativeMenu as jc, labelClasses as jd, ladderScale as je, languageSelectWidth as jf, leavesContextMenuAlone as jg, linearPath as jh, linearScale as ji, logScale as jj, maskId as jk, matchShellLanguage as jl, mediaFileName as jm, monotonePath as jn, niceAxis as jo, niceMax as jp, openGlobalSearch as jq, parseHexColor as jr, polygonPoints as js, popupBounds as jt, prompt as ju, pushRecent as jv, radiusScale as jw, readSavedShellLanguage as jx, registerModalEscapeInterceptor as jy, resolveBrandMarkTreatment as jz, type AlignmentGridProps as k, useDropdownPosition as k0, useFocusTrap as k1, useHighlight as k2, useIsMobile as k3, useLocalStoragePrefs as k4, usePlotWidth as k5, usePortalBranding as k6, useProductionTimeline as k7, useScrollLock as k8, useShellLanguage as k9, useShellPrefs as ka, useStatusLabel as kb, useTheme as kc, type AlignmentPoint as l, type AngleScale as m, AppUpdateBanner as n, type AppUpdateBannerProps as o, AttachButton as p, type AttachButtonProps as q, AttachmentDropZone as r, type AttachmentDropZoneProps as s, AttachmentList as t, type AttachmentListProps as u, AuthScreen as v, type AuthScreenProps as w, Avatar as x, AvatarGroup as y, type AvatarGroupProps as z };
|