efficient-shell 7.43.0 → 7.44.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.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- import{execFileSync as e}from"child_process";import{createRequire as t}from"module";import{join as n}from"path";import{existsSync as i,readFileSync as s,writeFileSync as o,readdirSync as r}from"fs";var a=["button","input","range","textarea","select","dialog","title","portal","native","dark","hex","radius","spacing","font-size","z-index","shadow","kit","icon","svg","kit-dep","chart","chart-dep","ellipsis-label"],l=e=>"string"==typeof e&&a.includes(e),c=["kit-dep","chart-dep"],d=e=>c.includes(e),u=a.filter(e=>!d(e)),h={button:{counts:"a raw <button>",instead:"Button or IconButton from efficient-shell/ui"},input:{counts:"a raw <input> (not hidden, not a range)",instead:"Input, InputNumber, Checkbox, Radio or Switch from efficient-shell/ui"},range:{counts:'a raw <input type="range">',instead:"Slider from efficient-shell/ui"},textarea:{counts:"a raw <textarea>",instead:"Textarea from efficient-shell/ui"},select:{counts:"a raw <select>",instead:"Select or SearchableSelect from efficient-shell/ui"},dialog:{counts:'a raw <dialog>, or role="dialog" / role="alertdialog" on a raw element',instead:"Dialog or Modal from efficient-shell"},title:{counts:"a title= on a raw element (the browser's own tooltip)",instead:"Tooltip from efficient-shell/ui (harness UI-17)"},portal:{counts:"a createPortal(…) call (a layer the file floats itself)",instead:"Popover, PopupMenu, DropdownMenu, Tooltip or Dialog from efficient-shell/ui"},native:{counts:"window.confirm / alert / prompt, or a bare call that resolves to one",instead:"confirm, confirmDestructive, prompt or toast from efficient-shell (harness UI-20)"},dark:{counts:"a dark: variant in a class string",instead:"the light Tailwind class alone; the shell remaps it in dark mode (harness UI-7)"},hex:{counts:"a hex colour literal in a .tsx string",instead:"a shell token or a Tailwind palette class (harness FT-1)"},radius:{counts:"a literal corner radius (an arbitrary-value radius class, or an inline borderRadius)",instead:"a radius utility from the scale or a role token such as rounded-(--radius-control); the theme sets how round they are (harness UI-7)"},spacing:{counts:"a padding, margin or gap off the scale (6px, 10px, 14px …) or written as a literal length (an arbitrary-value class, an inline style)",instead:"a step of the scale 2/4/8/12/16/20/24/32/40/48 — a Tailwind step, or a role such as var(--space-control-x) (owner ruling 2026-10-12)"},"font-size":{counts:"a literal font size (an arbitrary-value text class, an inline fontSize)",instead:"a type step 9/11/12/14/16/18/20/24/30 — Tailwind's 3xs … 3xl text steps (owner ruling 2026-10-12)"},"z-index":{counts:"a stack order above 30 written as a number (a z utility, an arbitrary value, an inline zIndex)",instead:"a named layer: Z_LAYERS (efficient-shell/ui) in code, its --z-* custom property in markup"},shadow:{counts:"a literal shadow, or a shadow size that is not an elevation level (md, 2xl, xs)",instead:"an elevation: the sm / lg / xl utilities, or var(--elevation-panel) and its siblings (owner ruling 2026-10-12)"},kit:{counts:"an import of a second UI kit",instead:"the component from efficient-shell/ui, or fold it into the shell (harness FT-3)"},icon:{counts:"an import of an icon package",instead:"<Icon name> from efficient-shell/icons, drawn by the one set (harness UI-24)"},svg:{counts:"an <svg> element written in JSX: an icon drawn in place",instead:"<Icon name> from efficient-shell/icons, drawn by the one set (harness UI-24). A chart, an illustration or a mark a host supplies stays on the baseline"},"kit-dep":{counts:"a UI kit or icon package declared in package.json (not one the shell entries imported here need)",instead:"remove the dependency once nothing imports it (harness FT-3)"},chart:{counts:"an import of a second chart library",instead:"a chart from efficient-shell/ui (ChartFrame, TimeSeriesChart, ColumnChart, RankedBars, PieChart, FunnelChart, ScatterChart, …), or add the chart there: one chart system (harness FT-3)"},"chart-dep":{counts:"a chart library declared in package.json",instead:"remove the dependency once nothing imports it (harness FT-3)"},"ellipsis-label":{counts:'a button, link or menu label that ends in "…" or "..."',instead:'the label without the dots, saying what it does ("Extend trial"): "…" means only "the words are cut" (owner ruling 2026-10-14)'}},p=["@headlessui/","@radix-ui/","@mui/","@chakra-ui/","@mantine/","@floating-ui/","antd","react-aria","react-aria-","react-bootstrap","react-select","react-colorful","react-tooltip","react-hot-toast","react-toastify","sonner"],f=["@heroicons/","@tabler/icons","@tabler/icons-","@phosphor-icons/","@fortawesome/","@iconify/","@radix-ui/react-icons","@mui/icons-material","lucide","lucide-react","simple-icons","react-icons","react-feather"],m=["recharts","chart.js","react-chartjs-2","d3","d3-","@nivo/","victory","victory-","echarts","echarts-for-react","apexcharts","react-apexcharts","@visx/","highcharts","highcharts-react-official","plotly.js","plotly.js-dist","react-plotly.js","lightweight-charts","@antv/g2","@antv/g2plot","chartist","billboard.js","c3","uplot"],g={"efficient-shell":["@headlessui/react"]};function w(e,t){return t.some(t=>t.endsWith("/")||t.endsWith("-")?e.startsWith(t):e===t||e.startsWith(`${t}/`))}function k(e){return w(e,f)?"icon":w(e,p)?"kit":w(e,m)?"chart":null}function x(e){const t=k(e);return"kit"===t||"icon"===t?"kit-dep":"chart"===t?"chart-dep":null}var $=/[.+^$()|[\]\\]/g;function b(e){let t="",n=0;for(let i=0;i<e.length;i++){const s=e[i];"*"===s?"*"===e[i+1]?"/"===e[i+2]?(t+="(?:[^/]+/)*",i+=2):(t+=".*",i+=1):t+="[^/]*":"?"===s?t+="[^/]":"{"===s?(t+="(?:",n+=1):"}"===s&&n>0?(t+=")",n-=1):t+=","===s&&n>0?"|":s.replace($,"\\$&")}if(0!==n)throw new Error(`unbalanced { in glob "${e}"`);return new RegExp(`^${t}$`)}function y(e){const t=e.map(b);return e=>t.some(t=>t.test(e))}var v=new Set(["node_modules",".git"]),S=new Set(["dist","coverage",".next",".turbo"]);function j(e){const t=e.search(/[*?{]/),n=-1===t?e:e.slice(0,t),i=n.lastIndexOf("/");return-1===i?"":n.slice(0,i)}function I(e,t){const i=y(t),s=[...new Set(t.map(j))].sort(),o=s.filter(e=>!s.some(t=>t!==e&&(""===t||e.startsWith(`${t}/`)))),a=new Set,l=t=>{let s;try{s=r(n(e,t),{withFileTypes:!0})}catch{return}for(const e of s){const n=t?`${t}/${e.name}`:e.name;e.isDirectory()?v.has(e.name)||""===t&&S.has(e.name)||l(n):e.isFile()&&i(n)&&a.add(n)}};for(const e of o)l(e);return[...a].sort(L)}var L=(e,t)=>e<t?-1:e>t?1:0,z=class extends Error{},R=(e,t)=>`${e}:${t}`;function E(e){const t=e.lastIndexOf(":");return{file:e.slice(0,t),kind:e.slice(t+1)}}var T=e=>a.indexOf(e);function A(e,t){const n=E(e),i=E(t);return L(n.file,i.file)||T(n.kind)-T(i.kind)}function C(e,t="ui-kit.baseline.json"){let n;try{n=JSON.parse(e)}catch(e){throw new z(`${t} is not valid JSON: ${e.message}`)}const i=e=>{throw new z(`${t}: ${e}. The tool writes this file; do not edit it by hand.`)};if("object"!=typeof n||null===n||Array.isArray(n))return i("must be a JSON object");const s=n;if(1!==s.schema)return i("number"==typeof s.schema&&s.schema>1?`"schema": ${s.schema} is newer than this efficient-shell reads (1); upgrade efficient-shell`:'"schema" must be 1');if(!Array.isArray(s.kinds)||s.kinds.some(e=>"string"!=typeof e))return i('"kinds" must be a list');const o=s.kinds.filter(l);if("object"!=typeof s.counts||null===s.counts||Array.isArray(s.counts))return i('"counts" must be an object');const r=new Map;for(const[e,t]of Object.entries(s.counts)){const{file:n,kind:s}=E(e);if(!n||!s)return i(`"${e}" is not "<file>:<kind>"`);if("number"!=typeof t||!Number.isInteger(t)||t<1)return i(`"${e}" must be a whole number, 1 or more (a line that reaches 0 is deleted)`);l(s)&&r.set(e,t)}return{kinds:o,counts:r}}function M(e){const t=a.filter(t=>e.kinds.includes(t)),n=[...e.counts.keys()].filter(t=>(e.counts.get(t)??0)>0).sort(A).map(t=>` ${JSON.stringify(t)}: ${e.counts.get(t)}`);return["{",' "schema": 1,',` "kinds": [${t.map(e=>JSON.stringify(e)).join(", ")}],`,n.length?` "counts": {\n${n.join(",\n")}\n }`:' "counts": {}',"}",""].join("\n")}function B(e){const t={};for(const[n,i]of e){const{kind:e}=E(n);l(e)&&(t[e]=(t[e]??0)+i)}return t}var P=class extends Error{},N=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),D=new Set(["$schema","schema","kinds","include","exclude","includeImporting","output","allow"]);var O="package.json",F=[2,4,8,12,16,20,24,32,40,48];function J(e){if("0"===e||"px"===e)return!0;const t=Number(e);return!!Number.isFinite(t)&&F.includes(4*t)}var U=new Set(["iframe","frame","object","embed"]),W=new Set(["href","xlinkHref","to","id","key","htmlFor"]),q=/(?<![&\w])(?<!url\()#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{3,4})(?![\w-])/g,_=/(?<![\w-])rounded(?:-(?:[trblse]|tl|tr|br|bl|ss|se|ee|es))?-\[([^\]]*)\]/g,G=/^border(?:(?:Top|Bottom)(?:Left|Right)|(?:Start|End)(?:Start|End))?Radius$/,K=/^(?:inherit|initial|unset|revert)$|var\(|^(?:50|100)%$|^(?:999|9999)(?:px)?$/,H=/(?<![\w-])-?(?:p|px|py|pt|pr|pb|pl|ps|pe|m|mx|my|mt|mr|mb|ml|ms|me|gap|gap-x|gap-y|space-x|space-y)-(\d+(?:\.\d+)?|px|\[[^\]]*\])(?![\w.[/-])/g,Q=/(?<![\w-])text-\[(?:length:)?(\d*\.?\d+(?:px|rem|em|%))\]/g,V=/(?<![\w-])z-(\d+|\[[^\]]*\])(?![\w.[/-])/g,X=/(?<![\w-])shadow-(xs|2xs|md|2xl|\[[^\]]*\])(?![\w.[/-])/g,Y=/var\(|^(?:inherit|initial|unset|revert|revert-layer|none|auto)$/,Z=/^(?:(?:padding|margin)(?:Top|Right|Bottom|Left|Inline|Block|InlineStart|InlineEnd|BlockStart|BlockEnd)?|gap|rowGap|columnGap)$/,ee=new Set([0,...F]),te=/(?<![\w-])dark:(?=[\w[\-!@*(])/g,ne=new Set(["button","a","option","Button","IconButton","SplitButton","Link","NavLink","PopupMenuItem","PopupMenuLabel","DropdownMenuItem","MenuItem","ContextMenuItem"]),ie=/(?:…|\.\.\.|&hellip;)\s*$/,se=new RegExp("\\p{L}","u"),oe=new RegExp("\\p{L}[\\p{L}-]*","u"),re={busy:{words:["Accepting","Adding","Applying","Approving","Arranging","Asking","Assigning","Booking","Building","Calculating","Cancelling","Capturing","Changing","Checking","Choosing","Closing","Combining","Comparing","Completing","Confirming","Connecting","Converting","Copying","Correcting","Counting","Creating","Deleting","Detaching","Downloading","Drawing","Duplicating","Emailing","Ending","Exporting","Fetching","Filing","Finding","Flushing","Generating","Grouping","Importing","Linking","Loading","Locating","Looking","Making","Marking","Matching","Measuring","Merging","Moving","Opening","Ordering","Paying","Pending","Posting","Preparing","Previewing","Pricing","Processing","Provisioning","Publishing","Purging","Pushing","Queued","Queuing","Quoting","Re-booking","Re-importing","Re-opening","Reading","Rebooting","Rebuilding","Receiving","Reconciling","Reconnecting","Recording","Refreshing","Refunding","Regenerating","Registering","Reinstating","Rejecting","Removing","Reopening","Requesting","Resending","Resetting","Resolving","Restarting","Restoring","Resuming","Retrying","Reversing","Reverting","Running","Saving","Searching","Sending","Setting","Settling","Sharing","Signing","Splitting","Starting","Submitting","Suggesting","Switching","Syncing","Taking","Testing","Transferring","Typing","Updating","Uploading","Verifying","Waiting","Withdrawing","Working"],zhStarts:["正在"],zhEnds:["中"]},placeholder:{},prompt:{}},ae=new Set((re.busy?.words??[]).map(e=>e.toLowerCase())),le=new Set(["label","aria-label",...re.placeholder?[]:["placeholder","searchPlaceholder","emptyOptionLabel","blankLabel"]]),ce=(e,t)=>{if(!ie.test(t)||!se.test(e))return!1;const n=e.match(oe)?.[0]?.toLowerCase();if(n&&ae.has(n))return!1;const i=e.replace(ie,"").trim(),s=re.busy;return!(s&&(s.zhStarts.some(e=>i.startsWith(e))||s.zhEnds.some(e=>i.endsWith(e))))},de=new Set(["confirm","alert","prompt"]),ue=new Set(["window","globalThis","self"]);function he(e,t,n,i,s){const o=new Set(i),r=e.createSourceFile(t,n,e.ScriptTarget.Latest,!0,function(e,t){return t.endsWith(".tsx")?e.ScriptKind.TSX:t.endsWith(".jsx")?e.ScriptKind.JSX:/\.[cm]?js$/.test(t)?e.ScriptKind.JS:e.ScriptKind.TS}(e,t)),a={},l=/\.[jt]sx$/.test(t),c=e=>r.getLineAndCharacterOfPosition(e).line+1,d=(e,t)=>{o.has(e)&&(a[e]??=[]).push(c(t.getStart(r)))},u=(t,n)=>t.attributes.properties.find(t=>e.isJsxAttribute(t)&&t.name.getText(r)===n),h=t=>{const n=t?.initializer;if(n)return e.isStringLiteral(n)?n.text:e.isJsxExpression(n)&&n.expression&&e.isStringLiteralLike(n.expression)?n.expression.text:void 0},p=new Set;if(o.has("native")){const t=n=>{if(n)if(e.isIdentifier(n))de.has(n.text)&&p.add(n.text);else if(e.isObjectBindingPattern(n)||e.isArrayBindingPattern(n))for(const i of n.elements)e.isBindingElement(i)&&t(i.name)},n=i=>{(e.isImportClause(i)||e.isImportSpecifier(i)||e.isNamespaceImport(i)||e.isVariableDeclaration(i)||e.isParameter(i)||e.isFunctionDeclaration(i))&&t(i.name),e.forEachChild(i,n)};n(r)}const f=t=>t&&e.isStringLiteralLike(t)?t.text:void 0,m=(e,t)=>{e&&("efficient-shell"===e||e.startsWith("efficient-shell/"))&&s?.add(e);const n=e?k(e):null;n&&d(n,t)},g=(e,t,n)=>{if(o.has("dark"))for(const n of e.matchAll(te))d("dark",t);if(o.has("radius"))for(const n of e.matchAll(_))K.test(n[1].trim())||d("radius",t);if(n&&l&&o.has("hex"))for(const n of e.matchAll(q))d("hex",t);if(o.has("spacing"))for(const n of e.matchAll(H)){const e=n[1];(e.startsWith("[")?Y.test(e.slice(1,-1).trim()):J(e))||d("spacing",t)}if(o.has("font-size"))for(const n of e.matchAll(Q))d("font-size",t);if(o.has("z-index"))for(const n of e.matchAll(V)){const e=n[1].startsWith("[")?n[1].slice(1,-1).trim():n[1];/^\d+$/.test(e)&&Number(e)>30&&d("z-index",t)}if(o.has("shadow"))for(const n of e.matchAll(X))n[1].startsWith("[")&&Y.test(n[1].slice(1,-1).trim())||d("shadow",t)},w=(t,n,i)=>{const s=e.isStringLiteralLike(n)?n.text.trim():void 0;if(o.has("spacing")&&Z.test(t))e.isNumericLiteral(n)?ee.has(Number(n.text))||d("spacing",i):void 0!==s&&!Y.test(s)&&(e=>[...e.matchAll(/(-?\d*\.?\d+)(px|rem|em)\b/g)].map(e=>Math.abs(Number(e[1]))*("px"===e[2]?1:16)))(s).some(e=>!ee.has(e))&&d("spacing",i);else if(o.has("font-size")&&"fontSize"===t)(e.isNumericLiteral(n)||void 0!==s&&!Y.test(s)&&!/^(?:smaller|larger)$/.test(s))&&d("font-size",i);else if(o.has("z-index")&&"zIndex"===t){const t=[],s=n=>{e.isNumericLiteral(n)||e.isStringLiteralLike(n)&&/^\d+$/.test(n.text.trim())?t.push(Number(n.text)):e.forEachChild(n,s)};s(n);for(const e of t)e>30&&d("z-index",i)}else o.has("shadow")&&"boxShadow"===t&&(void 0===s||""===s||Y.test(s)||d("shadow",i))},x=(t,n)=>{if(e.isJsxOpeningElement(t)||e.isJsxSelfClosingElement(t)){const e=t.tagName.getText(r);if(/^[a-z]/.test(e)){const n=h(u(t,"type"));"svg"===e&&d("svg",t),"button"===e?d("button",t):"select"===e?d("select",t):"textarea"===e?d("textarea",t):"input"===e&&("range"===n?d("range",t):"hidden"!==n&&d("input",t));const i=h(u(t,"role"));"dialog"!==e&&"dialog"!==i&&"alertdialog"!==i||d("dialog",t),!U.has(e)&&u(t,"title")&&d("title",t)}}else if(e.isCallExpression(t)){const n=t.expression;e.isIdentifier(n)?"createPortal"===n.text?d("portal",t):de.has(n.text)&&!p.has(n.text)?d("native",t):"require"===n.text&&m(f(t.arguments[0]),t):e.isPropertyAccessExpression(n)?"createPortal"===n.name.text?d("portal",t):de.has(n.name.text)&&e.isIdentifier(n.expression)&&ue.has(n.expression.text)&&d("native",t):n.kind===e.SyntaxKind.ImportKeyword&&m(f(t.arguments[0]),t)}else{if(e.isImportDeclaration(t)||e.isExportDeclaration(t))return void m(f(t.moduleSpecifier),t);if(e.isPropertyAssignment(t)){const n=e.isIdentifier(t.name)||e.isStringLiteralLike(t.name)?t.name.text:"",i=t.initializer;w(n,i,t),o.has("radius")&&G.test(n)&&(e.isNumericLiteral(i)?K.test(i.text)||d("radius",t):e.isStringLiteralLike(i)&&!K.test(i.text.trim())&&d("radius",t))}else if(e.isStringLiteralLike(t))g(t.text,t,n);else if(e.isTemplateExpression(t)){g(t.head.text,t.head,n);for(const e of t.templateSpans)g(e.literal.text,e.literal,n)}}e.isJsxAttribute(t)&&W.has(t.name.getText(r))?e.forEachChild(t,e=>x(e,!1)):e.forEachChild(t,e=>x(e,n))};return x(r,!0),o.has("ellipsis-label")&&function(e,t,n){const i=new Set,s=(e,t)=>{i.has(e)||(i.add(e),n(t))},o=n=>{if(n)if(e.isStringLiteralLike(n))ce(n.text,n.text)&&s(n,n.getStart(t));else if(e.isTemplateExpression(n)){const e=[n.head.text,...n.templateSpans.map(e=>e.literal.text)];ce(e.join(" "),e[e.length-1])&&s(n,n.getStart(t))}else e.isConditionalExpression(n)?(o(n.whenTrue),o(n.whenFalse)):e.isBinaryExpression(n)?(o(n.left),o(n.right)):e.isParenthesizedExpression(n)||e.isAsExpression(n)||e.isJsxExpression(n)?o(n.expression):e.isCallExpression(n)&&pe.has(fe(n.expression))&&n.arguments[0]&&o(n.arguments[0])},r=n=>{for(const i of n)if(e.isJsxText(i)){const e=i.getText(t);ce(e,e)&&s(i,i.getStart(t)+(e.length-e.trimStart().length))}else e.isJsxExpression(i)?o(i.expression):(e.isJsxElement(i)||e.isJsxFragment(i))&&r(i.children)},a=(n,i)=>{const s=n.attributes.properties.find(n=>e.isJsxAttribute(n)&&n.name.getText(t)===i),o=s?.initializer;return o&&e.isStringLiteral(o)?o.text:o&&e.isJsxExpression(o)&&o.expression&&e.isStringLiteralLike(o.expression)?o.expression.text:void 0},l=t=>t.properties.some(t=>e.isPropertyAssignment(t)&&(e.isIdentifier(t.name)||e.isStringLiteralLike(t.name))&&"value"===t.name.text&&e.isStringLiteralLike(t.initializer)&&""===t.initializer.text),c=n=>{if(e.isJsxElement(n)){const e=n.openingElement,i=e.tagName.getText(t),s="option"===i&&re.prompt&&""===a(e,"value");ne.has(i)&&!s&&r(n.children)}else if(e.isJsxAttribute(n))le.has(n.name.getText(t))&&o(n.initializer);else if(e.isPropertyAssignment(n)){const t=e.isIdentifier(n.name)||e.isStringLiteralLike(n.name)?n.name.text:"",i=re.prompt&&e.isObjectLiteralExpression(n.parent)&&l(n.parent);le.has(t)&&!i&&o(n.initializer)}e.forEachChild(n,c)};c(t)}(e,r,e=>(a["ellipsis-label"]??=[]).push(c(e))),a}var pe=new Set(["say","t"]),fe=e=>{const t=e.getText();return t.slice(t.lastIndexOf(".")+1)};function me(e){const t={};for(const[n,i]of Object.entries(e))i.length&&(t[n]=i.length);return t}function ge(e,t,n){const i=e.createSourceFile(t,n,e.ScriptTarget.Latest,!1),s=[];for(const t of i.statements)(e.isImportDeclaration(t)||e.isExportDeclaration(t))&&t.moduleSpecifier&&e.isStringLiteralLike(t.moduleSpecifier)&&s.push(t.moduleSpecifier.text);return s}var we=(e,t)=>e.some(e=>t.some(t=>t.endsWith("/*")?e.startsWith(t.slice(0,-1)):e===t));var ke=e=>new Map(e.allow.map(e=>[R(e.file,e.kind),e.count]));function xe(e,t){return e.kinds.filter(e=>t.kinds.includes(e))}var $e=(e,t,n)=>{if("kit-dep"===n)return` (${e.kitDeps.join(", ")})`;if("chart-dep"===n)return` (${e.chartDeps.join(", ")})`;const i=e.hits.get(t)?.[n]??[];if(0===i.length)return"";const s=i.slice(0,12).join(", ");return` (line${1===i.length?"":"s"} ${s}${i.length>12?", …":""})`};function be(e,t,n){const i=ke(e),s=new Map;for(const[e,o]of t.counts){const{kind:t}=E(e);if(!l(t)||!n.includes(t))continue;const r=o-(i.get(e)??0);r>0&&s.set(e,r)}return{kinds:a.filter(e=>n.includes(e)),counts:s}}function ye(e,t){let n=0;for(const i of new Set([...e.keys(),...t.keys()]))(e.get(i)??0)!==(t.get(i)??0)&&(n+=1);return n}var ve="\n// <button> in a comment is not a button, and <svg> in one is not a drawing\n/* nor is <input title=\"x\"> in this one, or dark:bg-black, or #fff */\nimport { createPortal } from 'react-dom';\nimport { Dialog } from '@headlessui/react';\nimport { TrashIcon } from '@heroicons/react/24/outline';\nimport type { Icon } from 'lucide-react';\nimport { Button, confirm } from 'efficient-shell';\nexport { Slot } from '@radix-ui/react-slot';\nexport { CheckIcon } from '@radix-ui/react-icons';\nimport { LineChart } from 'recharts';\nimport 'd3-scale';\nexport { VictoryPie } from 'victory';\nimport { BarChart } from '@mui/x-charts';\nimport Tree from 'react-d3-tree';\nimport { TimeSeriesChart } from 'efficient-shell/ui';\n// import 'chart.js' in a comment is not an import, and 'echarts' in a string is not one either\nconst chartLabel = 'd3-array';\n\nconst a = <button title=\"Says what it does\">x</button>;\nconst b = <input type=\"range\" />;\nconst c = <input type=\"text\" />;\nconst c2 = <input type={\"hidden\"} name=\"csrf\" />;\nconst c3 = <input type=\"hidden\" />;\nconst c4 = <input type={kind} />;\nconst d = <select />;\nconst d2 = <textarea />;\nconst e = <div role=\"dialog\" />;\nconst e2 = <dialog open />;\nconst e3 = <section role={'alertdialog'} />;\nconst f = <iframe title=\"Preview\" />;\nconst f2 = <object title=\"Chart\" />;\nconst g = <Button title=\"a prop, not a tooltip\" role=\"dialog\" />;\nconst g2 = (\n <button\n type=\"button\"\n title={hint}\n >\n y\n </button>\n);\nconst h = ReactDOM.createPortal(a, document.body);\nconst i = createPortal(a, document.body);\n\nasync function leave() {\n if (window.confirm('Sure?')) return;\n globalThis.alert('No');\n alert('native: nothing binds the name');\n prompt('native too');\n await confirm('the shell: the import binds it');\n record.confirm('a method, not the popup');\n}\n\nconst j = <div className=\"bg-white dark:bg-black dark:hover:text-white is-dark:no\" />;\nconst k = clsx('text-gray-900', on && 'dark:text-gray-100');\nconst l = <span style={{ color: '#fff', background: \"#12ab34\" }} className={`border-[#0a0b0c80] ${x}`} />;\nconst m = <a href=\"#faded\" id=\"#bad\" key=\"#abc\" to=\"#face\">skip</a>;\nconst n = <label htmlFor={'#dead'}>skip</label>;\nconst o = <span>&#1234; and BG#00340 and #12345 and #added are not colours</span>;\nconst p = 'entity &#x1f; ref BG#00340';\nconst q = <use xlinkHref=\"#abc\" fill=\"url(#fed)\" />;\nconst t = <div className=\"rounded-[4px] rounded-t-[0.5rem] hover:rounded-[2px] rounded-lg rounded-(--radius-card) rounded-[inherit] rounded-[var(--r)]\" />;\nconst u = <div style={{ borderRadius: 6, borderTopLeftRadius: '3px', borderBottomRightRadius: '50%', borderEndEndRadius: 'var(--radius-card)' }} />;\nconst v = <i style={{ borderRadius: 9999 }} />;\nconst w = <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 4h16\" /></svg>;\nconst w2 = <Svg viewBox=\"0 0 24 24\" />;\nconst w3 = '<svg viewBox=\"0 0 1 1\"></svg> in a string is not an element';\nconst r = lazy(() => import('@mui/material'));\nconst s = require('react-select');\nconst s2 = require('chart.js/auto');\nconst s3 = import('@nivo/line');\n",Se={button:2,input:2,range:1,textarea:1,select:1,dialog:3,title:2,portal:2,native:4,dark:3,hex:3,radius:5,kit:5,icon:3,svg:1,chart:5},je={kit:1,dark:1,portal:1,radius:2,chart:1},Ie=(...e)=>e.join("-"),Le=`\nconst s1 = <i className="${[Ie("px","2.5"),Ie("py","1.5"),"md:"+Ie("gap","1.5"),"-"+Ie("mt","1.5"),Ie("p","[10px]")].join(" ")}" />;\nconst s2 = <i className="${[Ie("p","0"),Ie("px","px"),Ie("p","0.5"),Ie("p","3"),Ie("gap-x","4"),Ie("p","12"),Ie("p","(--space-12)"),Ie("p","[var(--space-12)]"),Ie("space-x","reverse"),Ie("top","1.5")].join(" ")}" />;\nconst s3 = <i style={{ padding: 6, marginTop: '10px', gap: 8, margin: '0 auto', paddingInline: 'var(--space-12)' }} />;\nconst f1 = <i className="${[Ie("text","[11px]"),Ie("text","[0.8rem]"),Ie("text","xs"),Ie("text","[#fff]"),Ie("text","(--text-2xs)")].join(" ")}" />;\nconst f2 = <i style={{ fontSize: 12 }} />;\nconst f3 = { fontSize: 'var(--x)', font: 'inherit' };\nconst z1 = <i className="${[Ie("z","[9999]"),Ie("z","50"),Ie("z","10"),Ie("z","30"),"-"+Ie("z","10"),Ie("z","auto"),Ie("z","(--z-popup)"),Ie("z","[var(--z-popup)]")].join(" ")}" />;\nconst z2 = { zIndex: on ? 2020 : 2010 };\nconst z3 = { zIndex: Z_LAYERS.popup, top: 9999 };\nconst h1 = <i className="${[Ie("shadow","[0_1px_2px_#000]"),Ie("shadow","md"),"shadow",Ie("shadow","lg"),Ie("shadow","(--elevation-panel)"),Ie("shadow","black/20"),Ie("drop-shadow","md")].join(" ")}" />;\nconst h2 = { boxShadow: '0 1px 2px rgba(0,0,0,.1)' };\nconst h3 = { boxShadow: 'none', outline: 'var(--elevation-raised)' };\n`,ze={spacing:7,"font-size":3,"z-index":4,shadow:3,hex:1},Re={"ellipsis-label":9},Ee=e=>a.filter(t=>e[t]).map(t=>`${t} ${e[t]}`).join(", ")||"nothing";var Te="ui-kit.config.json",Ae="ui-kit.baseline.json",Ce="efficient-shell-ui-check",Me=`${Ce}: every surface a person operates takes its UI from efficient-shell (harness UI-24).\n\n ${Ce} check this repository against ${Ae}\n ${Ce} --print print today's counts as a baseline, and change nothing\n ${Ce} --summary print totals per kind and per folder, as Markdown\n ${Ce} --json print the result as JSON\n ${Ce} --update lower the lines whose counts fell, and delete the ones at zero\n ${Ce} --update --allow-move also follow a renamed or split file (no total may rise)\n ${Ce} --init write the first ${Ae}\n ${Ce} --init --kind <kind> take the baseline for a kind just added to "kinds"\n ${Ce} --no-base do not compare with the pull request's base branch\n\nKinds: ${a.join(", ")}\nReads ${Te} in the current directory.`;var Be=(e,t)=>`${e} ${t}${1===e?"":"s"}`,Pe=(e,t)=>{const n=B(e);return t.map(e=>`${e} ${n[e]??0}`).join(" · ")};process.exitCode=function(e,t){const r=function(e){const t={print:!1,summary:!1,json:!1,update:!1,allowMove:!1,init:!1,noBase:!1,help:!1,version:!1,kinds:[]};for(let n=0;n<e.length;n++){const i=e[n];if("--print"===i)t.print=!0;else if("--summary"===i)t.summary=!0;else if("--json"===i)t.json=!0;else if("--update"===i)t.update=!0;else if("--allow-move"===i)t.allowMove=!0;else if("--init"===i)t.init=!0;else if("--no-base"===i)t.noBase=!0;else if("--help"===i||"-h"===i)t.help=!0;else if("--version"===i||"-v"===i)t.version=!0;else if("--kind"===i){const i=e[++n];if(!i)return"--kind needs a kind after it";t.kinds.push(...i.split(","))}else{if(!i.startsWith("--kind="))return`unknown argument "${i}"`;t.kinds.push(...i.slice(7).split(","))}}return t.allowMove&&!t.update?"--allow-move goes with --update":t.kinds.length&&!t.init?"--kind goes with --init":[t.print,t.summary,t.update,t.init].filter(Boolean).length>1?"choose one of --print, --summary, --update and --init":t}(e);if("string"==typeof r)return t.err(`${Ce}: ${r}\n\n${Me}`),2;if(r.help)return t.out(Me),0;if(r.version)return t.out(t.version),0;const c=e=>(r.json?t.out(JSON.stringify({tool:Ce,version:t.version,ok:!1,failures:[e]},null,2)):t.err(`${Ce}: ${e}`),1),p=n(t.cwd,Te);if(!i(p))return c(`no ${Te} in ${t.cwd}. Run it from the repository root; the harness has the template.`);let f,m;try{f=function(e,t="ui-kit.config.json"){const n=[],i=e=>{n.push(e)},s=(e,t,{required:n=!1}={})=>{if(void 0===e&&!n)return[];if(!Array.isArray(e)||e.some(e=>"string"!=typeof e||""===e))return i(`${t} must be a list of non-empty strings`),[];n&&0===e.length&&i(`${t} must name at least one entry`);for(const n of e)(n.startsWith("/")||n.startsWith("./")||n.includes("\\")||n.split("/").includes(".."))&&i(`${t}: "${n}" must be a path from the repository root, written with / (no ./, .. or \\)`);return e},o=(e,t)=>"string"!=typeof e||e.trim().length<10?(i(`${t} needs a "reason" a reviewer can read (a sentence, not a word)`),""):e,r=(e,t)=>void 0===e?[]:!Array.isArray(e)||e.some(e=>!N(e))?(i(`${t} must be a list of objects`),[]):e;if(!N(e))throw new P(`${t}: must be a JSON object`);for(const t of Object.keys(e))D.has(t)||i(`unknown key "${t}"`);1!==e.schema&&i("number"==typeof e.schema&&e.schema>1?`"schema": ${e.schema} is newer than this efficient-shell reads (1); upgrade efficient-shell`:'"schema" must be 1');const c=[];if(Array.isArray(e.kinds)&&0!==e.kinds.length)for(const t of e.kinds)l(t)?c.includes(t)?i(`"kinds": "${t}" is listed twice`):c.push(t):i(`"kinds": unknown kind ${JSON.stringify(t)} (this efficient-shell knows: ${a.join(", ")})`);else i(`"kinds" must list the kinds this repository checks, from: ${a.join(", ")}`);const d=s(e.include,'"include"'),u=s(e.exclude,'"exclude"'),h=r(e.includeImporting,'"includeImporting"').map((e,t)=>({files:s(e.files,`"includeImporting"[${t}].files`,{required:!0}),modules:s(e.modules,`"includeImporting"[${t}].modules`,{required:!0}),reason:o(e.reason,`"includeImporting"[${t}]`)}));0===d.length&&0===h.length&&i('"include" must name the files that are operator UI (for example ["src/**/*.tsx"])');const p=r(e.output,'"output"').map((e,t)=>({files:s(e.files,`"output"[${t}].files`,{required:!0}),reason:o(e.reason,`"output"[${t}]`)})),f=[],m=new Set;if(r(e.allow,'"allow"').forEach((e,t)=>{const n=`"allow"[${t}]`,[r]=s([e.file],`${n}.file`),d=o(e.reason,n);if(!l(e.kind))return void i(`${n}.kind must be one of: ${a.join(", ")}`);if(c.includes(e.kind)||i(`${n}: kind "${e.kind}" is not in "kinds"`),"number"!=typeof e.count||!Number.isInteger(e.count)||e.count<1)return void i(`${n}.count must be a whole number, 1 or more`);if(!r)return;const u=`${r}:${e.kind}`;m.has(u)&&i(`${n}: ${r} already has an allow entry for "${e.kind}"`),m.add(u),f.push({file:r,kind:e.kind,count:e.count,reason:d})}),n.length)throw new P(`${t}:\n - ${n.join("\n - ")}`);return{schema:1,kinds:a.filter(e=>c.includes(e)),include:d,exclude:u,includeImporting:h,output:p,allow:f}}(JSON.parse(s(p,"utf8")),Te)}catch(e){return c(e instanceof P?e.message:`${Te} is not valid JSON: ${e.message}`)}try{m=t.loadTypeScript()}catch{return c('this check reads the TypeScript AST and found no "typescript" package here. Install it as a devDependency.')}const w=function(e){const t=[],n=u,i=[["fixture.tsx",ve,Se],["fixture.ts","\nimport { toast } from 'sonner';\nimport { extent } from 'd3-array';\nexport const tone = { warn: '#f59e0b' };\nexport const cls = 'ring-1 dark:ring-white rounded-[3px]';\nexport const box = { borderRadius: '0.25rem', radius: 4 };\nexport function ask(confirm: (message: string) => boolean) {\n return confirm('a parameter binds the name');\n}\nexport const mount = (node: unknown) => ReactDOM.createPortal(node, document.body);\n",je],["tokens.tsx",Le,ze],["labels.tsx","\n// <Button>Save…</Button> in a comment is not a label\nconst l1 = <Button>Extend trial…</Button>;\nconst l2 = <PopupMenuItem onClick={go}><span>Read from a PDF...</span></PopupMenuItem>;\nconst l3 = <Button>{busy ? 'Saving…' : 'Duplicate site…'}</Button>;\nconst l4 = <Item label=\"Translate…\" aria-label={'More…'} />;\nconst l5 = [{ label: 'Reject…' }, { value: CUSTOM, label: 'Custom…' }];\nconst l6 = <option value={CUSTOM}>Different address…</option>;\nconst l7 = <PopupMenuLabel>{say(\"Duplicate to page…\")}</PopupMenuLabel>;\nconst n7 = <Button>{t('team:menu.remove')}</Button>;\nconst n1 = <Button>{`${name.slice(0, 9)}…`}</Button>;\nconst n2 = <p>Loading weather…</p>;\nconst n3 = <Input placeholder=\"Search…\" />;\nconst n4 = <option value=\"\">Pick a carrier…</option>;\nconst n5 = [{ value: '', label: 'Select…' }];\nconst n6 = <Button>Extend trial</Button>;\n",Re]];for(const[s,o,r]of i){const i=me(he(e,s,o,n));n.some(e=>(i[e]??0)!==(r[e]??0))&&t.push(`${s}: read ${Ee(i)}; it holds ${Ee(r)}`)}const s=me(he(e,"fixture.tsx",ve,["button"]));return"button"!==Object.keys(s).join()&&t.push(`asked for button alone, the reader reported ${Ee(s)}`),t}(m);if(w.length)return c(`the reader misread its own fixtures with typescript ${m.version}, so nothing it says about this repository can be trusted:\n - `+w.join("\n - "));const k=function(e,t,o){const r=[],a=y(o.exclude),l=y(o.output.flatMap(e=>e.files)),c=new Map,u=e=>{let i=c.get(e);return void 0===i&&c.set(e,i=s(n(t,e),"utf8")),i},h=(e,n)=>{for(const i of e)0===I(t,[i]).length&&r.push(`${n}: "${i}" matches no file. Delete the line, or fix the path.`)};h(o.include,'"include"'),o.output.forEach((e,t)=>h(e.files,`"output"[${t}]`)),o.includeImporting.forEach((e,t)=>h(e.files,`"includeImporting"[${t}]`));const p=new Set,f=e=>(e=>/\.(?:[cm]?[jt]s|[jt]sx)$/.test(e)&&!e.endsWith(".d.ts"))(e)&&!a(e)&&!l(e);for(const e of I(t,o.include))f(e)&&p.add(e);for(const n of o.includeImporting)for(const i of I(t,n.files))f(i)&&!p.has(i)&&we(ge(e,i,u(i)),n.modules)&&p.add(i);const m=[...p].sort(),w=o.kinds.filter(e=>!d(e)),k=new Map,$=new Map,b=new Set;for(const t of m){const n=he(e,t,u(t),w,b);let i=!1;for(const e of w){const s=n[e]?.length??0;s&&($.set(R(t,e),s),i=!0)}i&&k.set(t,n)}let v=[],S=[],j=[];const L=o.kinds.filter(d);if(L.length){const e=n(t,O);if(i(e)){const t=JSON.parse(s(e,"utf8")),n=["dependencies","peerDependencies","optionalDependencies"].flatMap(e=>Object.keys(t[e]??{})),i=new Set([...b].flatMap(e=>g[e]??[])),r=[...new Set(n)].sort();if(o.kinds.includes("kit-dep")){const e=r.filter(e=>"kit-dep"===x(e));v=e.filter(e=>!i.has(e)),S=e.filter(e=>i.has(e)),v.length&&$.set(R(O,"kit-dep"),v.length)}o.kinds.includes("chart-dep")&&(j=r.filter(e=>"chart-dep"===x(e)),j.length&&$.set(R(O,"chart-dep"),j.length))}else for(const e of L)r.push(`"kinds" includes "${e}", and there is no ${O} here to read.`)}for(const e of o.allow)(d(e.kind)?e.file===O:p.has(e.file))||r.push(`"allow": ${e.file} (${e.kind}) is not a file this check reads. Delete the entry, or fix the path.`);return{files:m,hits:k,counts:$,kitDeps:v,shellPeers:S,chartDeps:j,problems:r}}(m,t.cwd,f);if(0===k.files.length)return c(`read no files. "include" in ${Te} matches nothing, so a pass would mean nothing.`);const $=n(t.cwd,Ae),b=r.json,v=e=>{b||t.out(e)};if(r.print)return t.out(M(be(f,k,f.kinds)).trimEnd()),0;if(r.summary){for(const e of function(e,t){const n=new Map,i=new Map;for(const[e,s]of t.counts){const{file:t,kind:o}=E(e);if(!l(o))continue;const r=n.get(o)??{count:0,files:new Set};r.count+=s,r.files.add(t),n.set(o,r);const a=t.split("/"),c=a.length>2?a.slice(0,2).join("/"):2===a.length?a[0]:".",d=i.get(c)??{};d[o]=(d[o]??0)+s,i.set(c,d)}const s=e.kinds.filter(e=>n.has(e)),o=[`**UI kit check (harness UI-24):** ${new Set([...t.counts.keys()].map(e=>E(e).file)).size} of ${Be(t.files.length,"file")} still draw UI of their own.`,"","| Kind | Count | Files | The shell has |","|---|---:|---:|---|",...e.kinds.map(e=>{const t=n.get(e);return`| \`${e}\` | ${t?.count??0} | ${t?.files.size??0} | ${h[e].instead} |`})];if(s.length&&i.size){const e=e=>s.reduce((t,n)=>t+(e[n]??0),0),t=[...i].sort((t,n)=>e(n[1])-e(t[1])||(t[0]<n[0]?-1:1));o.push("",`| Folder | ${s.map(e=>`\`${e}\``).join(" | ")} | Total |`,`|---|${s.map(()=>"---:").join("|")}|---:|`,...t.map(([t,n])=>`| \`${t}\` | ${s.map(e=>n[e]??0).join(" | ")} | ${e(n)} |`))}return o}(f,k))t.out(e);return 0}let S=null;if(i($))try{S=C(s($,"utf8"),Ae)}catch(e){return c(e instanceof z?e.message:String(e))}if(r.init){const e=r.kinds.filter(e=>!l(e)||!f.kinds.includes(e));if(e.length)return c(`--kind ${e.join(", ")}: not in "kinds" in ${Te}. Add it there first.`);const t=r.kinds;if(S){if(0===t.length)return c(`${Ae} already exists, and --init would overwrite what it holds. It is for the adoption pull request only. To start checking a kind, add it to "kinds" and run --init --kind <kind>.`);const e=t.filter(e=>S.kinds.includes(e));if(e.length)return c(`the baseline was already taken for ${e.join(", ")}. Its lines only go down; use --update.`);const n=be(f,k,t);S={kinds:[...S.kinds,...t],counts:new Map([...S.counts,...n.counts])}}else{if(t.length)return c(`there is no ${Ae} yet. Run --init on its own first.`);S=be(f,k,f.kinds)}o($,M(S)),v(`${Ce}: wrote ${Ae} (${Be(S.counts.size,"line")}: ${Pe(S.counts,S.kinds)})`)}if(!S)return c(`no ${Ae}. This repository has not adopted the check yet: run ${Ce} --init, and commit the file.`);if(r.update){const e=function(e,t,n,{allowMove:i=!1}={}){const s=xe(e,t),o=be(e,n,s),r=new Map([...t.counts].filter(([e])=>s.includes(E(e).kind)));if(i){const e=B(r),n=B(o.counts),i=s.filter(t=>(n[t]??0)>(e[t]??0)).map(t=>`${t}: ${n[t]??0} across the repository, and the baseline holds ${e[t]??0}`);return i.length?{baseline:t,lowered:0,refused:i}:{baseline:o,lowered:ye(r,o.counts),refused:[]}}const a=new Map;for(const[e,t]of r){const n=Math.min(t,o.counts.get(e)??0);n>0&&a.set(e,n)}return{baseline:{kinds:s,counts:a},lowered:ye(r,a),refused:[]}}(f,S,k,{allowMove:r.allowMove});if(e.refused.length)return c(`--allow-move follows code that moved, and this is more of it than before:\n - ${e.refused.join("\n - ")}\nNothing was written.`);S=e.baseline,o($,M(S)),v(`${Ce}: ${e.lowered?`changed ${Be(e.lowered,"line")} in`:"nothing to change in"} ${Ae}`)}const j=function(e,t,n){const i=[],s=[],o=[...n.problems],r=ke(e),a=new Set(xe(e,t)),c=e.kinds.filter(e=>!t.kinds.includes(e));c.length&&o.push(`"kinds" names ${c.map(e=>`"${e}"`).join(", ")}, and the baseline was never taken for ${1===c.length?"it":"them"}. Run: efficient-shell-ui-check --init ${c.map(e=>`--kind ${e}`).join(" ")}`);const d=t.kinds.filter(t=>!e.kinds.includes(t));d.length&&s.push(`the baseline still carries ${d.map(e=>`"${e}"`).join(", ")}, which "kinds" no longer names`);const u=new Set([...n.counts.keys(),...t.counts.keys(),...r.keys()]);for(const e of[...u].sort(A)){const{file:c,kind:d}=E(e);if(!l(d)||!a.has(d))continue;const u=n.counts.get(e)??0,p=r.get(e)??0,f=t.counts.get(e)??0;u>p+f?i.push(`${c}: ${d} ${u}, and its line allows ${p+f}${$e(n,c,d)}. ${h[d].counts} is counted; use ${h[d].instead}.`):u<p?o.push(`${c}: ${d} ${u}, and "allow" in ui-kit.config.json says ${p}. ${0===u?"Delete the entry":`Lower its count to ${u}`}: an exception does not outlive what it excused.`):u<p+f&&s.push(`${c}: ${d} ${u}, and its line says ${p+f}`)}return{grown:i,shrunk:s,other:o,updateFixes:0===i.length&&0===o.length&&s.length>0}}(f,S,k),L=r.noBase?{problems:[],note:""}:function(e,t,n){const i=e.env.GITHUB_BASE_REF;if(!i)return{problems:[],note:""};const s=e.git(["rev-parse","--show-prefix"]);if(null===s)return{problems:[],note:"not a git checkout; the base branch was not compared"};const o=`origin/${i}`;if(null===e.git(["rev-parse","--verify","--quiet",`${o}^{commit}`])&&(e.git(["fetch","--no-tags","--depth=1","origin",`+refs/heads/${i}:refs/remotes/origin/${i}`]),null===e.git(["rev-parse","--verify","--quiet",`${o}^{commit}`])))return{problems:[],note:`${o} could not be fetched; the base branch was not compared`};const r=e.git(["show",`${o}:${s.trim()}${Ae}`]);if(null===r)return{problems:[],note:`${o} has no ${Ae} yet (adoption)`};let a;try{a=C(r,`${o}:${Ae}`)}catch{return{problems:[],note:`${o}'s ${Ae} could not be read; the base branch was not compared`}}const l=B(a.counts),c=B(t.counts);return{problems:n.filter(e=>a.kinds.includes(e)&&(c[e]??0)>(l[e]??0)).map(e=>`${Ae} holds ${c[e]??0} of "${e}", and ${o} holds ${l[e]??0}. The baseline only goes down: use ${h[e].instead}. A count that is meant to stay goes in "allow" in ${Te}, with its reason.`),note:`compared with ${o}`}}(t,S,f.kinds),T=f.kinds.filter(e=>S.kinds.includes(e)),F=`${Ce} --update`,J=[...j.other,...j.grown,...j.shrunk.map(e=>`${e}. Run: ${F}`),...L.problems],U=0===J.length;if(r.json){const e=new Map(f.allow.map(e=>[`${e.file}:${e.kind}`,e.count]));return t.out(JSON.stringify({tool:Ce,version:t.version,ok:U,schema:f.schema,kinds:f.kinds,files:k.files.length,counts:B(k.counts),baseline:B(S.counts),allowed:B(e),kitDeps:k.kitDeps,shellPeers:k.shellPeers,chartDeps:k.chartDeps,failures:J},null,2)),U?0:1}t.out(`UI kit check (harness UI-24), efficient-shell ${t.version}\n`);const W=(e,n,i="")=>{if(0===n.length)return t.out(` ok ${e}`);t.err(` FAIL ${e}`);for(const e of n)t.err(` ${e}`);i&&t.err(` ${i}`)};t.out(` ok the reader reads its own fixtures (typescript ${m.version})`),t.out(` ok read ${Be(k.files.length,"file")}`),W(`${Te} and ${Ae} describe this repository`,j.other),W("no file draws more of its own UI than its line allows",j.grown),W("every line is exact: a count that fell is a line to lower",j.shrunk,`Run: ${F}${j.updateFixes?"":" (after the failures above are fixed)"}`),L.note&&W(`the baseline is no higher than the base branch (${L.note})`,L.problems);const q=new Set([...k.counts.keys()].map(e=>E(e).file));return t.out(` ok PROGRESS: ${q.size} of ${Be(k.files.length,"file")} still draw UI of their own: `+Pe(k.counts,T)),t.out(""),U?t.out("UI kit check: ok"):t.err(`UI kit check: FAILED (${Be(J.length,"problem")})`),U?0:1}(process.argv.slice(2),{cwd:process.cwd(),env:process.env,out:e=>console.log(e),err:e=>console.error(e),loadTypeScript:function(){for(const e of[n(process.cwd(),"package.json"),import.meta.url])try{return t(e)("typescript")}catch{}throw new Error("typescript is not installed")},git:function(t){try{return e("git",t,{cwd:process.cwd(),encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:6e4,maxBuffer:67108864})}catch{return null}},version:"7.43.0"});
2
+ import{execFileSync as e}from"child_process";import{createRequire as t}from"module";import{join as n}from"path";import{existsSync as i,readFileSync as s,writeFileSync as o,readdirSync as r}from"fs";var a=["button","input","range","textarea","select","dialog","title","portal","native","dark","hex","radius","spacing","font-size","z-index","shadow","kit","icon","svg","kit-dep","chart","chart-dep","ellipsis-label"],l=e=>"string"==typeof e&&a.includes(e),c=["kit-dep","chart-dep"],d=e=>c.includes(e),u=a.filter(e=>!d(e)),h={button:{counts:"a raw <button>",instead:"Button or IconButton from efficient-shell/ui"},input:{counts:"a raw <input> (not hidden, not a range)",instead:"Input, InputNumber, Checkbox, Radio or Switch from efficient-shell/ui"},range:{counts:'a raw <input type="range">',instead:"Slider from efficient-shell/ui"},textarea:{counts:"a raw <textarea>",instead:"Textarea from efficient-shell/ui"},select:{counts:"a raw <select>",instead:"Select or SearchableSelect from efficient-shell/ui"},dialog:{counts:'a raw <dialog>, or role="dialog" / role="alertdialog" on a raw element',instead:"Dialog or Modal from efficient-shell"},title:{counts:"a title= on a raw element (the browser's own tooltip)",instead:"Tooltip from efficient-shell/ui (harness UI-17)"},portal:{counts:"a createPortal(…) call (a layer the file floats itself)",instead:"Popover, PopupMenu, DropdownMenu, Tooltip or Dialog from efficient-shell/ui"},native:{counts:"window.confirm / alert / prompt, or a bare call that resolves to one",instead:"confirm, confirmDestructive, prompt or toast from efficient-shell (harness UI-20)"},dark:{counts:"a dark: variant in a class string",instead:"the light Tailwind class alone; the shell remaps it in dark mode (harness UI-7)"},hex:{counts:"a hex colour literal in a .tsx string",instead:"a shell token or a Tailwind palette class (harness FT-1)"},radius:{counts:"a literal corner radius (an arbitrary-value radius class, or an inline borderRadius)",instead:"a radius utility from the scale or a role token such as rounded-(--radius-control); the theme sets how round they are (harness UI-7)"},spacing:{counts:"a padding, margin or gap off the scale (6px, 10px, 14px …) or written as a literal length (an arbitrary-value class, an inline style)",instead:"a step of the scale 2/4/8/12/16/20/24/32/40/48 — a Tailwind step, or a role such as var(--space-control-x) (owner ruling 2026-10-12)"},"font-size":{counts:"a literal font size (an arbitrary-value text class, an inline fontSize)",instead:"a type step 9/11/12/14/16/18/20/24/30 — Tailwind's 3xs … 3xl text steps (owner ruling 2026-10-12)"},"z-index":{counts:"a stack order above 30 written as a number (a z utility, an arbitrary value, an inline zIndex)",instead:"a named layer: Z_LAYERS (efficient-shell/ui) in code, its --z-* custom property in markup"},shadow:{counts:"a literal shadow, or a shadow size that is not an elevation level (md, 2xl, xs)",instead:"an elevation: the sm / lg / xl utilities, or var(--elevation-panel) and its siblings (owner ruling 2026-10-12)"},kit:{counts:"an import of a second UI kit",instead:"the component from efficient-shell/ui, or fold it into the shell (harness FT-3)"},icon:{counts:"an import of an icon package",instead:"<Icon name> from efficient-shell/icons, drawn by the one set (harness UI-24)"},svg:{counts:"an <svg> element written in JSX: an icon drawn in place",instead:"<Icon name> from efficient-shell/icons, drawn by the one set (harness UI-24). A chart, an illustration or a mark a host supplies stays on the baseline"},"kit-dep":{counts:"a UI kit or icon package declared in package.json (not one the shell entries imported here need)",instead:"remove the dependency once nothing imports it (harness FT-3)"},chart:{counts:"an import of a second chart library",instead:"a chart from efficient-shell/ui (ChartFrame, TimeSeriesChart, ColumnChart, RankedBars, PieChart, FunnelChart, ScatterChart, …), or add the chart there: one chart system (harness FT-3)"},"chart-dep":{counts:"a chart library declared in package.json",instead:"remove the dependency once nothing imports it (harness FT-3)"},"ellipsis-label":{counts:'a button, link or menu label that ends in "…" or "..."',instead:'the label without the dots, saying what it does ("Extend trial"): "…" means only "the words are cut" (owner ruling 2026-10-14)'}},p=["@headlessui/","@radix-ui/","@mui/","@chakra-ui/","@mantine/","@floating-ui/","antd","react-aria","react-aria-","react-bootstrap","react-select","react-colorful","react-tooltip","react-hot-toast","react-toastify","sonner"],f=["@heroicons/","@tabler/icons","@tabler/icons-","@phosphor-icons/","@fortawesome/","@iconify/","@radix-ui/react-icons","@mui/icons-material","lucide","lucide-react","simple-icons","react-icons","react-feather"],m=["recharts","chart.js","react-chartjs-2","d3","d3-","@nivo/","victory","victory-","echarts","echarts-for-react","apexcharts","react-apexcharts","@visx/","highcharts","highcharts-react-official","plotly.js","plotly.js-dist","react-plotly.js","lightweight-charts","@antv/g2","@antv/g2plot","chartist","billboard.js","c3","uplot"],g={"efficient-shell":["@headlessui/react"]};function w(e,t){return t.some(t=>t.endsWith("/")||t.endsWith("-")?e.startsWith(t):e===t||e.startsWith(`${t}/`))}function k(e){return w(e,f)?"icon":w(e,p)?"kit":w(e,m)?"chart":null}function x(e){const t=k(e);return"kit"===t||"icon"===t?"kit-dep":"chart"===t?"chart-dep":null}var $=/[.+^$()|[\]\\]/g;function b(e){let t="",n=0;for(let i=0;i<e.length;i++){const s=e[i];"*"===s?"*"===e[i+1]?"/"===e[i+2]?(t+="(?:[^/]+/)*",i+=2):(t+=".*",i+=1):t+="[^/]*":"?"===s?t+="[^/]":"{"===s?(t+="(?:",n+=1):"}"===s&&n>0?(t+=")",n-=1):t+=","===s&&n>0?"|":s.replace($,"\\$&")}if(0!==n)throw new Error(`unbalanced { in glob "${e}"`);return new RegExp(`^${t}$`)}function y(e){const t=e.map(b);return e=>t.some(t=>t.test(e))}var v=new Set(["node_modules",".git"]),S=new Set(["dist","coverage",".next",".turbo"]);function j(e){const t=e.search(/[*?{]/),n=-1===t?e:e.slice(0,t),i=n.lastIndexOf("/");return-1===i?"":n.slice(0,i)}function I(e,t){const i=y(t),s=[...new Set(t.map(j))].sort(),o=s.filter(e=>!s.some(t=>t!==e&&(""===t||e.startsWith(`${t}/`)))),a=new Set,l=t=>{let s;try{s=r(n(e,t),{withFileTypes:!0})}catch{return}for(const e of s){const n=t?`${t}/${e.name}`:e.name;e.isDirectory()?v.has(e.name)||""===t&&S.has(e.name)||l(n):e.isFile()&&i(n)&&a.add(n)}};for(const e of o)l(e);return[...a].sort(L)}var L=(e,t)=>e<t?-1:e>t?1:0,z=class extends Error{},R=(e,t)=>`${e}:${t}`;function E(e){const t=e.lastIndexOf(":");return{file:e.slice(0,t),kind:e.slice(t+1)}}var T=e=>a.indexOf(e);function A(e,t){const n=E(e),i=E(t);return L(n.file,i.file)||T(n.kind)-T(i.kind)}function C(e,t="ui-kit.baseline.json"){let n;try{n=JSON.parse(e)}catch(e){throw new z(`${t} is not valid JSON: ${e.message}`)}const i=e=>{throw new z(`${t}: ${e}. The tool writes this file; do not edit it by hand.`)};if("object"!=typeof n||null===n||Array.isArray(n))return i("must be a JSON object");const s=n;if(1!==s.schema)return i("number"==typeof s.schema&&s.schema>1?`"schema": ${s.schema} is newer than this efficient-shell reads (1); upgrade efficient-shell`:'"schema" must be 1');if(!Array.isArray(s.kinds)||s.kinds.some(e=>"string"!=typeof e))return i('"kinds" must be a list');const o=s.kinds.filter(l);if("object"!=typeof s.counts||null===s.counts||Array.isArray(s.counts))return i('"counts" must be an object');const r=new Map;for(const[e,t]of Object.entries(s.counts)){const{file:n,kind:s}=E(e);if(!n||!s)return i(`"${e}" is not "<file>:<kind>"`);if("number"!=typeof t||!Number.isInteger(t)||t<1)return i(`"${e}" must be a whole number, 1 or more (a line that reaches 0 is deleted)`);l(s)&&r.set(e,t)}return{kinds:o,counts:r}}function M(e){const t=a.filter(t=>e.kinds.includes(t)),n=[...e.counts.keys()].filter(t=>(e.counts.get(t)??0)>0).sort(A).map(t=>` ${JSON.stringify(t)}: ${e.counts.get(t)}`);return["{",' "schema": 1,',` "kinds": [${t.map(e=>JSON.stringify(e)).join(", ")}],`,n.length?` "counts": {\n${n.join(",\n")}\n }`:' "counts": {}',"}",""].join("\n")}function B(e){const t={};for(const[n,i]of e){const{kind:e}=E(n);l(e)&&(t[e]=(t[e]??0)+i)}return t}var P=class extends Error{},N=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),D=new Set(["$schema","schema","kinds","include","exclude","includeImporting","output","allow"]);var O="package.json",F=[2,4,8,12,16,20,24,32,40,48];function J(e){if("0"===e||"px"===e)return!0;const t=Number(e);return!!Number.isFinite(t)&&F.includes(4*t)}var U=new Set(["iframe","frame","object","embed"]),W=new Set(["href","xlinkHref","to","id","key","htmlFor"]),q=/(?<![&\w])(?<!url\()#(?:[0-9a-fA-F]{8}|[0-9a-fA-F]{6}|[0-9a-fA-F]{3,4})(?![\w-])/g,_=/(?<![\w-])rounded(?:-(?:[trblse]|tl|tr|br|bl|ss|se|ee|es))?-\[([^\]]*)\]/g,G=/^border(?:(?:Top|Bottom)(?:Left|Right)|(?:Start|End)(?:Start|End))?Radius$/,K=/^(?:inherit|initial|unset|revert)$|var\(|^(?:50|100)%$|^(?:999|9999)(?:px)?$/,H=/(?<![\w-])-?(?:p|px|py|pt|pr|pb|pl|ps|pe|m|mx|my|mt|mr|mb|ml|ms|me|gap|gap-x|gap-y|space-x|space-y)-(\d+(?:\.\d+)?|px|\[[^\]]*\])(?![\w.[/-])/g,Q=/(?<![\w-])text-\[(?:length:)?(\d*\.?\d+(?:px|rem|em|%))\]/g,V=/(?<![\w-])z-(\d+|\[[^\]]*\])(?![\w.[/-])/g,X=/(?<![\w-])shadow-(xs|2xs|md|2xl|\[[^\]]*\])(?![\w.[/-])/g,Y=/var\(|^(?:inherit|initial|unset|revert|revert-layer|none|auto)$/,Z=/^(?:(?:padding|margin)(?:Top|Right|Bottom|Left|Inline|Block|InlineStart|InlineEnd|BlockStart|BlockEnd)?|gap|rowGap|columnGap)$/,ee=new Set([0,...F]),te=/(?<![\w-])dark:(?=[\w[\-!@*(])/g,ne=new Set(["button","a","option","Button","IconButton","SplitButton","Link","NavLink","PopupMenuItem","PopupMenuLabel","DropdownMenuItem","MenuItem","ContextMenuItem"]),ie=/(?:…|\.\.\.|&hellip;)\s*$/,se=new RegExp("\\p{L}","u"),oe=new RegExp("\\p{L}[\\p{L}-]*","u"),re={busy:{words:["Accepting","Adding","Applying","Approving","Arranging","Asking","Assigning","Booking","Building","Calculating","Cancelling","Capturing","Changing","Checking","Choosing","Closing","Combining","Comparing","Completing","Confirming","Connecting","Converting","Copying","Correcting","Counting","Creating","Deleting","Detaching","Downloading","Drawing","Duplicating","Emailing","Ending","Exporting","Fetching","Filing","Finding","Flushing","Generating","Grouping","Importing","Linking","Loading","Locating","Looking","Making","Marking","Matching","Measuring","Merging","Moving","Opening","Ordering","Paying","Pending","Posting","Preparing","Previewing","Pricing","Processing","Provisioning","Publishing","Purging","Pushing","Queued","Queuing","Quoting","Re-booking","Re-importing","Re-opening","Reading","Rebooting","Rebuilding","Receiving","Reconciling","Reconnecting","Recording","Refreshing","Refunding","Regenerating","Registering","Reinstating","Rejecting","Removing","Reopening","Requesting","Resending","Resetting","Resolving","Restarting","Restoring","Resuming","Retrying","Reversing","Reverting","Running","Saving","Searching","Sending","Setting","Settling","Sharing","Signing","Splitting","Starting","Submitting","Suggesting","Switching","Syncing","Taking","Testing","Transferring","Typing","Updating","Uploading","Verifying","Waiting","Withdrawing","Working"],zhStarts:["正在"],zhEnds:["中"]},placeholder:{},prompt:{}},ae=new Set((re.busy?.words??[]).map(e=>e.toLowerCase())),le=new Set(["label","aria-label",...re.placeholder?[]:["placeholder","searchPlaceholder","emptyOptionLabel","blankLabel"]]),ce=(e,t)=>{if(!ie.test(t)||!se.test(e))return!1;const n=e.match(oe)?.[0]?.toLowerCase();if(n&&ae.has(n))return!1;const i=e.replace(ie,"").trim(),s=re.busy;return!(s&&(s.zhStarts.some(e=>i.startsWith(e))||s.zhEnds.some(e=>i.endsWith(e))))},de=new Set(["confirm","alert","prompt"]),ue=new Set(["window","globalThis","self"]);function he(e,t,n,i,s){const o=new Set(i),r=e.createSourceFile(t,n,e.ScriptTarget.Latest,!0,function(e,t){return t.endsWith(".tsx")?e.ScriptKind.TSX:t.endsWith(".jsx")?e.ScriptKind.JSX:/\.[cm]?js$/.test(t)?e.ScriptKind.JS:e.ScriptKind.TS}(e,t)),a={},l=/\.[jt]sx$/.test(t),c=e=>r.getLineAndCharacterOfPosition(e).line+1,d=(e,t)=>{o.has(e)&&(a[e]??=[]).push(c(t.getStart(r)))},u=(t,n)=>t.attributes.properties.find(t=>e.isJsxAttribute(t)&&t.name.getText(r)===n),h=t=>{const n=t?.initializer;if(n)return e.isStringLiteral(n)?n.text:e.isJsxExpression(n)&&n.expression&&e.isStringLiteralLike(n.expression)?n.expression.text:void 0},p=new Set;if(o.has("native")){const t=n=>{if(n)if(e.isIdentifier(n))de.has(n.text)&&p.add(n.text);else if(e.isObjectBindingPattern(n)||e.isArrayBindingPattern(n))for(const i of n.elements)e.isBindingElement(i)&&t(i.name)},n=i=>{(e.isImportClause(i)||e.isImportSpecifier(i)||e.isNamespaceImport(i)||e.isVariableDeclaration(i)||e.isParameter(i)||e.isFunctionDeclaration(i))&&t(i.name),e.forEachChild(i,n)};n(r)}const f=t=>t&&e.isStringLiteralLike(t)?t.text:void 0,m=(e,t)=>{e&&("efficient-shell"===e||e.startsWith("efficient-shell/"))&&s?.add(e);const n=e?k(e):null;n&&d(n,t)},g=(e,t,n)=>{if(o.has("dark"))for(const n of e.matchAll(te))d("dark",t);if(o.has("radius"))for(const n of e.matchAll(_))K.test(n[1].trim())||d("radius",t);if(n&&l&&o.has("hex"))for(const n of e.matchAll(q))d("hex",t);if(o.has("spacing"))for(const n of e.matchAll(H)){const e=n[1];(e.startsWith("[")?Y.test(e.slice(1,-1).trim()):J(e))||d("spacing",t)}if(o.has("font-size"))for(const n of e.matchAll(Q))d("font-size",t);if(o.has("z-index"))for(const n of e.matchAll(V)){const e=n[1].startsWith("[")?n[1].slice(1,-1).trim():n[1];/^\d+$/.test(e)&&Number(e)>30&&d("z-index",t)}if(o.has("shadow"))for(const n of e.matchAll(X))n[1].startsWith("[")&&Y.test(n[1].slice(1,-1).trim())||d("shadow",t)},w=(t,n,i)=>{const s=e.isStringLiteralLike(n)?n.text.trim():void 0;if(o.has("spacing")&&Z.test(t))e.isNumericLiteral(n)?ee.has(Number(n.text))||d("spacing",i):void 0!==s&&!Y.test(s)&&(e=>[...e.matchAll(/(-?\d*\.?\d+)(px|rem|em)\b/g)].map(e=>Math.abs(Number(e[1]))*("px"===e[2]?1:16)))(s).some(e=>!ee.has(e))&&d("spacing",i);else if(o.has("font-size")&&"fontSize"===t)(e.isNumericLiteral(n)||void 0!==s&&!Y.test(s)&&!/^(?:smaller|larger)$/.test(s))&&d("font-size",i);else if(o.has("z-index")&&"zIndex"===t){const t=[],s=n=>{e.isNumericLiteral(n)||e.isStringLiteralLike(n)&&/^\d+$/.test(n.text.trim())?t.push(Number(n.text)):e.forEachChild(n,s)};s(n);for(const e of t)e>30&&d("z-index",i)}else o.has("shadow")&&"boxShadow"===t&&(void 0===s||""===s||Y.test(s)||d("shadow",i))},x=(t,n)=>{if(e.isJsxOpeningElement(t)||e.isJsxSelfClosingElement(t)){const e=t.tagName.getText(r);if(/^[a-z]/.test(e)){const n=h(u(t,"type"));"svg"===e&&d("svg",t),"button"===e?d("button",t):"select"===e?d("select",t):"textarea"===e?d("textarea",t):"input"===e&&("range"===n?d("range",t):"hidden"!==n&&d("input",t));const i=h(u(t,"role"));"dialog"!==e&&"dialog"!==i&&"alertdialog"!==i||d("dialog",t),!U.has(e)&&u(t,"title")&&d("title",t)}}else if(e.isCallExpression(t)){const n=t.expression;e.isIdentifier(n)?"createPortal"===n.text?d("portal",t):de.has(n.text)&&!p.has(n.text)?d("native",t):"require"===n.text&&m(f(t.arguments[0]),t):e.isPropertyAccessExpression(n)?"createPortal"===n.name.text?d("portal",t):de.has(n.name.text)&&e.isIdentifier(n.expression)&&ue.has(n.expression.text)&&d("native",t):n.kind===e.SyntaxKind.ImportKeyword&&m(f(t.arguments[0]),t)}else{if(e.isImportDeclaration(t)||e.isExportDeclaration(t))return void m(f(t.moduleSpecifier),t);if(e.isPropertyAssignment(t)){const n=e.isIdentifier(t.name)||e.isStringLiteralLike(t.name)?t.name.text:"",i=t.initializer;w(n,i,t),o.has("radius")&&G.test(n)&&(e.isNumericLiteral(i)?K.test(i.text)||d("radius",t):e.isStringLiteralLike(i)&&!K.test(i.text.trim())&&d("radius",t))}else if(e.isStringLiteralLike(t))g(t.text,t,n);else if(e.isTemplateExpression(t)){g(t.head.text,t.head,n);for(const e of t.templateSpans)g(e.literal.text,e.literal,n)}}e.isJsxAttribute(t)&&W.has(t.name.getText(r))?e.forEachChild(t,e=>x(e,!1)):e.forEachChild(t,e=>x(e,n))};return x(r,!0),o.has("ellipsis-label")&&function(e,t,n){const i=new Set,s=(e,t)=>{i.has(e)||(i.add(e),n(t))},o=n=>{if(n)if(e.isStringLiteralLike(n))ce(n.text,n.text)&&s(n,n.getStart(t));else if(e.isTemplateExpression(n)){const e=[n.head.text,...n.templateSpans.map(e=>e.literal.text)];ce(e.join(" "),e[e.length-1])&&s(n,n.getStart(t))}else e.isConditionalExpression(n)?(o(n.whenTrue),o(n.whenFalse)):e.isBinaryExpression(n)?(o(n.left),o(n.right)):e.isParenthesizedExpression(n)||e.isAsExpression(n)||e.isJsxExpression(n)?o(n.expression):e.isCallExpression(n)&&pe.has(fe(n.expression))&&n.arguments[0]&&o(n.arguments[0])},r=n=>{for(const i of n)if(e.isJsxText(i)){const e=i.getText(t);ce(e,e)&&s(i,i.getStart(t)+(e.length-e.trimStart().length))}else e.isJsxExpression(i)?o(i.expression):(e.isJsxElement(i)||e.isJsxFragment(i))&&r(i.children)},a=(n,i)=>{const s=n.attributes.properties.find(n=>e.isJsxAttribute(n)&&n.name.getText(t)===i),o=s?.initializer;return o&&e.isStringLiteral(o)?o.text:o&&e.isJsxExpression(o)&&o.expression&&e.isStringLiteralLike(o.expression)?o.expression.text:void 0},l=t=>t.properties.some(t=>e.isPropertyAssignment(t)&&(e.isIdentifier(t.name)||e.isStringLiteralLike(t.name))&&"value"===t.name.text&&e.isStringLiteralLike(t.initializer)&&""===t.initializer.text),c=n=>{if(e.isJsxElement(n)){const e=n.openingElement,i=e.tagName.getText(t),s="option"===i&&re.prompt&&""===a(e,"value");ne.has(i)&&!s&&r(n.children)}else if(e.isJsxAttribute(n))le.has(n.name.getText(t))&&o(n.initializer);else if(e.isPropertyAssignment(n)){const t=e.isIdentifier(n.name)||e.isStringLiteralLike(n.name)?n.name.text:"",i=re.prompt&&e.isObjectLiteralExpression(n.parent)&&l(n.parent);le.has(t)&&!i&&o(n.initializer)}e.forEachChild(n,c)};c(t)}(e,r,e=>(a["ellipsis-label"]??=[]).push(c(e))),a}var pe=new Set(["say","t"]),fe=e=>{const t=e.getText();return t.slice(t.lastIndexOf(".")+1)};function me(e){const t={};for(const[n,i]of Object.entries(e))i.length&&(t[n]=i.length);return t}function ge(e,t,n){const i=e.createSourceFile(t,n,e.ScriptTarget.Latest,!1),s=[];for(const t of i.statements)(e.isImportDeclaration(t)||e.isExportDeclaration(t))&&t.moduleSpecifier&&e.isStringLiteralLike(t.moduleSpecifier)&&s.push(t.moduleSpecifier.text);return s}var we=(e,t)=>e.some(e=>t.some(t=>t.endsWith("/*")?e.startsWith(t.slice(0,-1)):e===t));var ke=e=>new Map(e.allow.map(e=>[R(e.file,e.kind),e.count]));function xe(e,t){return e.kinds.filter(e=>t.kinds.includes(e))}var $e=(e,t,n)=>{if("kit-dep"===n)return` (${e.kitDeps.join(", ")})`;if("chart-dep"===n)return` (${e.chartDeps.join(", ")})`;const i=e.hits.get(t)?.[n]??[];if(0===i.length)return"";const s=i.slice(0,12).join(", ");return` (line${1===i.length?"":"s"} ${s}${i.length>12?", …":""})`};function be(e,t,n){const i=ke(e),s=new Map;for(const[e,o]of t.counts){const{kind:t}=E(e);if(!l(t)||!n.includes(t))continue;const r=o-(i.get(e)??0);r>0&&s.set(e,r)}return{kinds:a.filter(e=>n.includes(e)),counts:s}}function ye(e,t){let n=0;for(const i of new Set([...e.keys(),...t.keys()]))(e.get(i)??0)!==(t.get(i)??0)&&(n+=1);return n}var ve="\n// <button> in a comment is not a button, and <svg> in one is not a drawing\n/* nor is <input title=\"x\"> in this one, or dark:bg-black, or #fff */\nimport { createPortal } from 'react-dom';\nimport { Dialog } from '@headlessui/react';\nimport { TrashIcon } from '@heroicons/react/24/outline';\nimport type { Icon } from 'lucide-react';\nimport { Button, confirm } from 'efficient-shell';\nexport { Slot } from '@radix-ui/react-slot';\nexport { CheckIcon } from '@radix-ui/react-icons';\nimport { LineChart } from 'recharts';\nimport 'd3-scale';\nexport { VictoryPie } from 'victory';\nimport { BarChart } from '@mui/x-charts';\nimport Tree from 'react-d3-tree';\nimport { TimeSeriesChart } from 'efficient-shell/ui';\n// import 'chart.js' in a comment is not an import, and 'echarts' in a string is not one either\nconst chartLabel = 'd3-array';\n\nconst a = <button title=\"Says what it does\">x</button>;\nconst b = <input type=\"range\" />;\nconst c = <input type=\"text\" />;\nconst c2 = <input type={\"hidden\"} name=\"csrf\" />;\nconst c3 = <input type=\"hidden\" />;\nconst c4 = <input type={kind} />;\nconst d = <select />;\nconst d2 = <textarea />;\nconst e = <div role=\"dialog\" />;\nconst e2 = <dialog open />;\nconst e3 = <section role={'alertdialog'} />;\nconst f = <iframe title=\"Preview\" />;\nconst f2 = <object title=\"Chart\" />;\nconst g = <Button title=\"a prop, not a tooltip\" role=\"dialog\" />;\nconst g2 = (\n <button\n type=\"button\"\n title={hint}\n >\n y\n </button>\n);\nconst h = ReactDOM.createPortal(a, document.body);\nconst i = createPortal(a, document.body);\n\nasync function leave() {\n if (window.confirm('Sure?')) return;\n globalThis.alert('No');\n alert('native: nothing binds the name');\n prompt('native too');\n await confirm('the shell: the import binds it');\n record.confirm('a method, not the popup');\n}\n\nconst j = <div className=\"bg-white dark:bg-black dark:hover:text-white is-dark:no\" />;\nconst k = clsx('text-gray-900', on && 'dark:text-gray-100');\nconst l = <span style={{ color: '#fff', background: \"#12ab34\" }} className={`border-[#0a0b0c80] ${x}`} />;\nconst m = <a href=\"#faded\" id=\"#bad\" key=\"#abc\" to=\"#face\">skip</a>;\nconst n = <label htmlFor={'#dead'}>skip</label>;\nconst o = <span>&#1234; and BG#00340 and #12345 and #added are not colours</span>;\nconst p = 'entity &#x1f; ref BG#00340';\nconst q = <use xlinkHref=\"#abc\" fill=\"url(#fed)\" />;\nconst t = <div className=\"rounded-[4px] rounded-t-[0.5rem] hover:rounded-[2px] rounded-lg rounded-(--radius-card) rounded-[inherit] rounded-[var(--r)]\" />;\nconst u = <div style={{ borderRadius: 6, borderTopLeftRadius: '3px', borderBottomRightRadius: '50%', borderEndEndRadius: 'var(--radius-card)' }} />;\nconst v = <i style={{ borderRadius: 9999 }} />;\nconst w = <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 4h16\" /></svg>;\nconst w2 = <Svg viewBox=\"0 0 24 24\" />;\nconst w3 = '<svg viewBox=\"0 0 1 1\"></svg> in a string is not an element';\nconst r = lazy(() => import('@mui/material'));\nconst s = require('react-select');\nconst s2 = require('chart.js/auto');\nconst s3 = import('@nivo/line');\n",Se={button:2,input:2,range:1,textarea:1,select:1,dialog:3,title:2,portal:2,native:4,dark:3,hex:3,radius:5,kit:5,icon:3,svg:1,chart:5},je={kit:1,dark:1,portal:1,radius:2,chart:1},Ie=(...e)=>e.join("-"),Le=`\nconst s1 = <i className="${[Ie("px","2.5"),Ie("py","1.5"),"md:"+Ie("gap","1.5"),"-"+Ie("mt","1.5"),Ie("p","[10px]")].join(" ")}" />;\nconst s2 = <i className="${[Ie("p","0"),Ie("px","px"),Ie("p","0.5"),Ie("p","3"),Ie("gap-x","4"),Ie("p","12"),Ie("p","(--space-12)"),Ie("p","[var(--space-12)]"),Ie("space-x","reverse"),Ie("top","1.5")].join(" ")}" />;\nconst s3 = <i style={{ padding: 6, marginTop: '10px', gap: 8, margin: '0 auto', paddingInline: 'var(--space-12)' }} />;\nconst f1 = <i className="${[Ie("text","[11px]"),Ie("text","[0.8rem]"),Ie("text","xs"),Ie("text","[#fff]"),Ie("text","(--text-2xs)")].join(" ")}" />;\nconst f2 = <i style={{ fontSize: 12 }} />;\nconst f3 = { fontSize: 'var(--x)', font: 'inherit' };\nconst z1 = <i className="${[Ie("z","[9999]"),Ie("z","50"),Ie("z","10"),Ie("z","30"),"-"+Ie("z","10"),Ie("z","auto"),Ie("z","(--z-popup)"),Ie("z","[var(--z-popup)]")].join(" ")}" />;\nconst z2 = { zIndex: on ? 2020 : 2010 };\nconst z3 = { zIndex: Z_LAYERS.popup, top: 9999 };\nconst h1 = <i className="${[Ie("shadow","[0_1px_2px_#000]"),Ie("shadow","md"),"shadow",Ie("shadow","lg"),Ie("shadow","(--elevation-panel)"),Ie("shadow","black/20"),Ie("drop-shadow","md")].join(" ")}" />;\nconst h2 = { boxShadow: '0 1px 2px rgba(0,0,0,.1)' };\nconst h3 = { boxShadow: 'none', outline: 'var(--elevation-raised)' };\n`,ze={spacing:7,"font-size":3,"z-index":4,shadow:3,hex:1},Re={"ellipsis-label":9},Ee=e=>a.filter(t=>e[t]).map(t=>`${t} ${e[t]}`).join(", ")||"nothing";var Te="ui-kit.config.json",Ae="ui-kit.baseline.json",Ce="efficient-shell-ui-check",Me=`${Ce}: every surface a person operates takes its UI from efficient-shell (harness UI-24).\n\n ${Ce} check this repository against ${Ae}\n ${Ce} --print print today's counts as a baseline, and change nothing\n ${Ce} --summary print totals per kind and per folder, as Markdown\n ${Ce} --json print the result as JSON\n ${Ce} --update lower the lines whose counts fell, and delete the ones at zero\n ${Ce} --update --allow-move also follow a renamed or split file (no total may rise)\n ${Ce} --init write the first ${Ae}\n ${Ce} --init --kind <kind> take the baseline for a kind just added to "kinds"\n ${Ce} --no-base do not compare with the pull request's base branch\n\nKinds: ${a.join(", ")}\nReads ${Te} in the current directory.`;var Be=(e,t)=>`${e} ${t}${1===e?"":"s"}`,Pe=(e,t)=>{const n=B(e);return t.map(e=>`${e} ${n[e]??0}`).join(" · ")};process.exitCode=function(e,t){const r=function(e){const t={print:!1,summary:!1,json:!1,update:!1,allowMove:!1,init:!1,noBase:!1,help:!1,version:!1,kinds:[]};for(let n=0;n<e.length;n++){const i=e[n];if("--print"===i)t.print=!0;else if("--summary"===i)t.summary=!0;else if("--json"===i)t.json=!0;else if("--update"===i)t.update=!0;else if("--allow-move"===i)t.allowMove=!0;else if("--init"===i)t.init=!0;else if("--no-base"===i)t.noBase=!0;else if("--help"===i||"-h"===i)t.help=!0;else if("--version"===i||"-v"===i)t.version=!0;else if("--kind"===i){const i=e[++n];if(!i)return"--kind needs a kind after it";t.kinds.push(...i.split(","))}else{if(!i.startsWith("--kind="))return`unknown argument "${i}"`;t.kinds.push(...i.slice(7).split(","))}}return t.allowMove&&!t.update?"--allow-move goes with --update":t.kinds.length&&!t.init?"--kind goes with --init":[t.print,t.summary,t.update,t.init].filter(Boolean).length>1?"choose one of --print, --summary, --update and --init":t}(e);if("string"==typeof r)return t.err(`${Ce}: ${r}\n\n${Me}`),2;if(r.help)return t.out(Me),0;if(r.version)return t.out(t.version),0;const c=e=>(r.json?t.out(JSON.stringify({tool:Ce,version:t.version,ok:!1,failures:[e]},null,2)):t.err(`${Ce}: ${e}`),1),p=n(t.cwd,Te);if(!i(p))return c(`no ${Te} in ${t.cwd}. Run it from the repository root; the harness has the template.`);let f,m;try{f=function(e,t="ui-kit.config.json"){const n=[],i=e=>{n.push(e)},s=(e,t,{required:n=!1}={})=>{if(void 0===e&&!n)return[];if(!Array.isArray(e)||e.some(e=>"string"!=typeof e||""===e))return i(`${t} must be a list of non-empty strings`),[];n&&0===e.length&&i(`${t} must name at least one entry`);for(const n of e)(n.startsWith("/")||n.startsWith("./")||n.includes("\\")||n.split("/").includes(".."))&&i(`${t}: "${n}" must be a path from the repository root, written with / (no ./, .. or \\)`);return e},o=(e,t)=>"string"!=typeof e||e.trim().length<10?(i(`${t} needs a "reason" a reviewer can read (a sentence, not a word)`),""):e,r=(e,t)=>void 0===e?[]:!Array.isArray(e)||e.some(e=>!N(e))?(i(`${t} must be a list of objects`),[]):e;if(!N(e))throw new P(`${t}: must be a JSON object`);for(const t of Object.keys(e))D.has(t)||i(`unknown key "${t}"`);1!==e.schema&&i("number"==typeof e.schema&&e.schema>1?`"schema": ${e.schema} is newer than this efficient-shell reads (1); upgrade efficient-shell`:'"schema" must be 1');const c=[];if(Array.isArray(e.kinds)&&0!==e.kinds.length)for(const t of e.kinds)l(t)?c.includes(t)?i(`"kinds": "${t}" is listed twice`):c.push(t):i(`"kinds": unknown kind ${JSON.stringify(t)} (this efficient-shell knows: ${a.join(", ")})`);else i(`"kinds" must list the kinds this repository checks, from: ${a.join(", ")}`);const d=s(e.include,'"include"'),u=s(e.exclude,'"exclude"'),h=r(e.includeImporting,'"includeImporting"').map((e,t)=>({files:s(e.files,`"includeImporting"[${t}].files`,{required:!0}),modules:s(e.modules,`"includeImporting"[${t}].modules`,{required:!0}),reason:o(e.reason,`"includeImporting"[${t}]`)}));0===d.length&&0===h.length&&i('"include" must name the files that are operator UI (for example ["src/**/*.tsx"])');const p=r(e.output,'"output"').map((e,t)=>({files:s(e.files,`"output"[${t}].files`,{required:!0}),reason:o(e.reason,`"output"[${t}]`)})),f=[],m=new Set;if(r(e.allow,'"allow"').forEach((e,t)=>{const n=`"allow"[${t}]`,[r]=s([e.file],`${n}.file`),d=o(e.reason,n);if(!l(e.kind))return void i(`${n}.kind must be one of: ${a.join(", ")}`);if(c.includes(e.kind)||i(`${n}: kind "${e.kind}" is not in "kinds"`),"number"!=typeof e.count||!Number.isInteger(e.count)||e.count<1)return void i(`${n}.count must be a whole number, 1 or more`);if(!r)return;const u=`${r}:${e.kind}`;m.has(u)&&i(`${n}: ${r} already has an allow entry for "${e.kind}"`),m.add(u),f.push({file:r,kind:e.kind,count:e.count,reason:d})}),n.length)throw new P(`${t}:\n - ${n.join("\n - ")}`);return{schema:1,kinds:a.filter(e=>c.includes(e)),include:d,exclude:u,includeImporting:h,output:p,allow:f}}(JSON.parse(s(p,"utf8")),Te)}catch(e){return c(e instanceof P?e.message:`${Te} is not valid JSON: ${e.message}`)}try{m=t.loadTypeScript()}catch{return c('this check reads the TypeScript AST and found no "typescript" package here. Install it as a devDependency.')}const w=function(e){const t=[],n=u,i=[["fixture.tsx",ve,Se],["fixture.ts","\nimport { toast } from 'sonner';\nimport { extent } from 'd3-array';\nexport const tone = { warn: '#f59e0b' };\nexport const cls = 'ring-1 dark:ring-white rounded-[3px]';\nexport const box = { borderRadius: '0.25rem', radius: 4 };\nexport function ask(confirm: (message: string) => boolean) {\n return confirm('a parameter binds the name');\n}\nexport const mount = (node: unknown) => ReactDOM.createPortal(node, document.body);\n",je],["tokens.tsx",Le,ze],["labels.tsx","\n// <Button>Save…</Button> in a comment is not a label\nconst l1 = <Button>Extend trial…</Button>;\nconst l2 = <PopupMenuItem onClick={go}><span>Read from a PDF...</span></PopupMenuItem>;\nconst l3 = <Button>{busy ? 'Saving…' : 'Duplicate site…'}</Button>;\nconst l4 = <Item label=\"Translate…\" aria-label={'More…'} />;\nconst l5 = [{ label: 'Reject…' }, { value: CUSTOM, label: 'Custom…' }];\nconst l6 = <option value={CUSTOM}>Different address…</option>;\nconst l7 = <PopupMenuLabel>{say(\"Duplicate to page…\")}</PopupMenuLabel>;\nconst n7 = <Button>{t('team:menu.remove')}</Button>;\nconst n1 = <Button>{`${name.slice(0, 9)}…`}</Button>;\nconst n2 = <p>Loading weather…</p>;\nconst n3 = <Input placeholder=\"Search…\" />;\nconst n4 = <option value=\"\">Pick a carrier…</option>;\nconst n5 = [{ value: '', label: 'Select…' }];\nconst n6 = <Button>Extend trial</Button>;\n",Re]];for(const[s,o,r]of i){const i=me(he(e,s,o,n));n.some(e=>(i[e]??0)!==(r[e]??0))&&t.push(`${s}: read ${Ee(i)}; it holds ${Ee(r)}`)}const s=me(he(e,"fixture.tsx",ve,["button"]));return"button"!==Object.keys(s).join()&&t.push(`asked for button alone, the reader reported ${Ee(s)}`),t}(m);if(w.length)return c(`the reader misread its own fixtures with typescript ${m.version}, so nothing it says about this repository can be trusted:\n - `+w.join("\n - "));const k=function(e,t,o){const r=[],a=y(o.exclude),l=y(o.output.flatMap(e=>e.files)),c=new Map,u=e=>{let i=c.get(e);return void 0===i&&c.set(e,i=s(n(t,e),"utf8")),i},h=(e,n)=>{for(const i of e)0===I(t,[i]).length&&r.push(`${n}: "${i}" matches no file. Delete the line, or fix the path.`)};h(o.include,'"include"'),o.output.forEach((e,t)=>h(e.files,`"output"[${t}]`)),o.includeImporting.forEach((e,t)=>h(e.files,`"includeImporting"[${t}]`));const p=new Set,f=e=>(e=>/\.(?:[cm]?[jt]s|[jt]sx)$/.test(e)&&!e.endsWith(".d.ts"))(e)&&!a(e)&&!l(e);for(const e of I(t,o.include))f(e)&&p.add(e);for(const n of o.includeImporting)for(const i of I(t,n.files))f(i)&&!p.has(i)&&we(ge(e,i,u(i)),n.modules)&&p.add(i);const m=[...p].sort(),w=o.kinds.filter(e=>!d(e)),k=new Map,$=new Map,b=new Set;for(const t of m){const n=he(e,t,u(t),w,b);let i=!1;for(const e of w){const s=n[e]?.length??0;s&&($.set(R(t,e),s),i=!0)}i&&k.set(t,n)}let v=[],S=[],j=[];const L=o.kinds.filter(d);if(L.length){const e=n(t,O);if(i(e)){const t=JSON.parse(s(e,"utf8")),n=["dependencies","peerDependencies","optionalDependencies"].flatMap(e=>Object.keys(t[e]??{})),i=new Set([...b].flatMap(e=>g[e]??[])),r=[...new Set(n)].sort();if(o.kinds.includes("kit-dep")){const e=r.filter(e=>"kit-dep"===x(e));v=e.filter(e=>!i.has(e)),S=e.filter(e=>i.has(e)),v.length&&$.set(R(O,"kit-dep"),v.length)}o.kinds.includes("chart-dep")&&(j=r.filter(e=>"chart-dep"===x(e)),j.length&&$.set(R(O,"chart-dep"),j.length))}else for(const e of L)r.push(`"kinds" includes "${e}", and there is no ${O} here to read.`)}for(const e of o.allow)(d(e.kind)?e.file===O:p.has(e.file))||r.push(`"allow": ${e.file} (${e.kind}) is not a file this check reads. Delete the entry, or fix the path.`);return{files:m,hits:k,counts:$,kitDeps:v,shellPeers:S,chartDeps:j,problems:r}}(m,t.cwd,f);if(0===k.files.length)return c(`read no files. "include" in ${Te} matches nothing, so a pass would mean nothing.`);const $=n(t.cwd,Ae),b=r.json,v=e=>{b||t.out(e)};if(r.print)return t.out(M(be(f,k,f.kinds)).trimEnd()),0;if(r.summary){for(const e of function(e,t){const n=new Map,i=new Map;for(const[e,s]of t.counts){const{file:t,kind:o}=E(e);if(!l(o))continue;const r=n.get(o)??{count:0,files:new Set};r.count+=s,r.files.add(t),n.set(o,r);const a=t.split("/"),c=a.length>2?a.slice(0,2).join("/"):2===a.length?a[0]:".",d=i.get(c)??{};d[o]=(d[o]??0)+s,i.set(c,d)}const s=e.kinds.filter(e=>n.has(e)),o=[`**UI kit check (harness UI-24):** ${new Set([...t.counts.keys()].map(e=>E(e).file)).size} of ${Be(t.files.length,"file")} still draw UI of their own.`,"","| Kind | Count | Files | The shell has |","|---|---:|---:|---|",...e.kinds.map(e=>{const t=n.get(e);return`| \`${e}\` | ${t?.count??0} | ${t?.files.size??0} | ${h[e].instead} |`})];if(s.length&&i.size){const e=e=>s.reduce((t,n)=>t+(e[n]??0),0),t=[...i].sort((t,n)=>e(n[1])-e(t[1])||(t[0]<n[0]?-1:1));o.push("",`| Folder | ${s.map(e=>`\`${e}\``).join(" | ")} | Total |`,`|---|${s.map(()=>"---:").join("|")}|---:|`,...t.map(([t,n])=>`| \`${t}\` | ${s.map(e=>n[e]??0).join(" | ")} | ${e(n)} |`))}return o}(f,k))t.out(e);return 0}let S=null;if(i($))try{S=C(s($,"utf8"),Ae)}catch(e){return c(e instanceof z?e.message:String(e))}if(r.init){const e=r.kinds.filter(e=>!l(e)||!f.kinds.includes(e));if(e.length)return c(`--kind ${e.join(", ")}: not in "kinds" in ${Te}. Add it there first.`);const t=r.kinds;if(S){if(0===t.length)return c(`${Ae} already exists, and --init would overwrite what it holds. It is for the adoption pull request only. To start checking a kind, add it to "kinds" and run --init --kind <kind>.`);const e=t.filter(e=>S.kinds.includes(e));if(e.length)return c(`the baseline was already taken for ${e.join(", ")}. Its lines only go down; use --update.`);const n=be(f,k,t);S={kinds:[...S.kinds,...t],counts:new Map([...S.counts,...n.counts])}}else{if(t.length)return c(`there is no ${Ae} yet. Run --init on its own first.`);S=be(f,k,f.kinds)}o($,M(S)),v(`${Ce}: wrote ${Ae} (${Be(S.counts.size,"line")}: ${Pe(S.counts,S.kinds)})`)}if(!S)return c(`no ${Ae}. This repository has not adopted the check yet: run ${Ce} --init, and commit the file.`);if(r.update){const e=function(e,t,n,{allowMove:i=!1}={}){const s=xe(e,t),o=be(e,n,s),r=new Map([...t.counts].filter(([e])=>s.includes(E(e).kind)));if(i){const e=B(r),n=B(o.counts),i=s.filter(t=>(n[t]??0)>(e[t]??0)).map(t=>`${t}: ${n[t]??0} across the repository, and the baseline holds ${e[t]??0}`);return i.length?{baseline:t,lowered:0,refused:i}:{baseline:o,lowered:ye(r,o.counts),refused:[]}}const a=new Map;for(const[e,t]of r){const n=Math.min(t,o.counts.get(e)??0);n>0&&a.set(e,n)}return{baseline:{kinds:s,counts:a},lowered:ye(r,a),refused:[]}}(f,S,k,{allowMove:r.allowMove});if(e.refused.length)return c(`--allow-move follows code that moved, and this is more of it than before:\n - ${e.refused.join("\n - ")}\nNothing was written.`);S=e.baseline,o($,M(S)),v(`${Ce}: ${e.lowered?`changed ${Be(e.lowered,"line")} in`:"nothing to change in"} ${Ae}`)}const j=function(e,t,n){const i=[],s=[],o=[...n.problems],r=ke(e),a=new Set(xe(e,t)),c=e.kinds.filter(e=>!t.kinds.includes(e));c.length&&o.push(`"kinds" names ${c.map(e=>`"${e}"`).join(", ")}, and the baseline was never taken for ${1===c.length?"it":"them"}. Run: efficient-shell-ui-check --init ${c.map(e=>`--kind ${e}`).join(" ")}`);const d=t.kinds.filter(t=>!e.kinds.includes(t));d.length&&s.push(`the baseline still carries ${d.map(e=>`"${e}"`).join(", ")}, which "kinds" no longer names`);const u=new Set([...n.counts.keys(),...t.counts.keys(),...r.keys()]);for(const e of[...u].sort(A)){const{file:c,kind:d}=E(e);if(!l(d)||!a.has(d))continue;const u=n.counts.get(e)??0,p=r.get(e)??0,f=t.counts.get(e)??0;u>p+f?i.push(`${c}: ${d} ${u}, and its line allows ${p+f}${$e(n,c,d)}. ${h[d].counts} is counted; use ${h[d].instead}.`):u<p?o.push(`${c}: ${d} ${u}, and "allow" in ui-kit.config.json says ${p}. ${0===u?"Delete the entry":`Lower its count to ${u}`}: an exception does not outlive what it excused.`):u<p+f&&s.push(`${c}: ${d} ${u}, and its line says ${p+f}`)}return{grown:i,shrunk:s,other:o,updateFixes:0===i.length&&0===o.length&&s.length>0}}(f,S,k),L=r.noBase?{problems:[],note:""}:function(e,t,n){const i=e.env.GITHUB_BASE_REF;if(!i)return{problems:[],note:""};const s=e.git(["rev-parse","--show-prefix"]);if(null===s)return{problems:[],note:"not a git checkout; the base branch was not compared"};const o=`origin/${i}`;if(null===e.git(["rev-parse","--verify","--quiet",`${o}^{commit}`])&&(e.git(["fetch","--no-tags","--depth=1","origin",`+refs/heads/${i}:refs/remotes/origin/${i}`]),null===e.git(["rev-parse","--verify","--quiet",`${o}^{commit}`])))return{problems:[],note:`${o} could not be fetched; the base branch was not compared`};const r=e.git(["show",`${o}:${s.trim()}${Ae}`]);if(null===r)return{problems:[],note:`${o} has no ${Ae} yet (adoption)`};let a;try{a=C(r,`${o}:${Ae}`)}catch{return{problems:[],note:`${o}'s ${Ae} could not be read; the base branch was not compared`}}const l=B(a.counts),c=B(t.counts);return{problems:n.filter(e=>a.kinds.includes(e)&&(c[e]??0)>(l[e]??0)).map(e=>`${Ae} holds ${c[e]??0} of "${e}", and ${o} holds ${l[e]??0}. The baseline only goes down: use ${h[e].instead}. A count that is meant to stay goes in "allow" in ${Te}, with its reason.`),note:`compared with ${o}`}}(t,S,f.kinds),T=f.kinds.filter(e=>S.kinds.includes(e)),F=`${Ce} --update`,J=[...j.other,...j.grown,...j.shrunk.map(e=>`${e}. Run: ${F}`),...L.problems],U=0===J.length;if(r.json){const e=new Map(f.allow.map(e=>[`${e.file}:${e.kind}`,e.count]));return t.out(JSON.stringify({tool:Ce,version:t.version,ok:U,schema:f.schema,kinds:f.kinds,files:k.files.length,counts:B(k.counts),baseline:B(S.counts),allowed:B(e),kitDeps:k.kitDeps,shellPeers:k.shellPeers,chartDeps:k.chartDeps,failures:J},null,2)),U?0:1}t.out(`UI kit check (harness UI-24), efficient-shell ${t.version}\n`);const W=(e,n,i="")=>{if(0===n.length)return t.out(` ok ${e}`);t.err(` FAIL ${e}`);for(const e of n)t.err(` ${e}`);i&&t.err(` ${i}`)};t.out(` ok the reader reads its own fixtures (typescript ${m.version})`),t.out(` ok read ${Be(k.files.length,"file")}`),W(`${Te} and ${Ae} describe this repository`,j.other),W("no file draws more of its own UI than its line allows",j.grown),W("every line is exact: a count that fell is a line to lower",j.shrunk,`Run: ${F}${j.updateFixes?"":" (after the failures above are fixed)"}`),L.note&&W(`the baseline is no higher than the base branch (${L.note})`,L.problems);const q=new Set([...k.counts.keys()].map(e=>E(e).file));return t.out(` ok PROGRESS: ${q.size} of ${Be(k.files.length,"file")} still draw UI of their own: `+Pe(k.counts,T)),t.out(""),U?t.out("UI kit check: ok"):t.err(`UI kit check: FAILED (${Be(J.length,"problem")})`),U?0:1}(process.argv.slice(2),{cwd:process.cwd(),env:process.env,out:e=>console.log(e),err:e=>console.error(e),loadTypeScript:function(){for(const e of[n(process.cwd(),"package.json"),import.meta.url])try{return t(e)("typescript")}catch{}throw new Error("typescript is not installed")},git:function(t){try{return e("git",t,{cwd:process.cwd(),encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:6e4,maxBuffer:67108864})}catch{return null}},version:"7.44.0"});
@@ -1 +1 @@
1
- import{VERSION as e}from"./chunk-7TD4XKYF.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)}},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}},K=/[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,D=/\b[a-z][a-z0-9+.-]*:\/\/\S+/gi,W=/\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,Y=/(?:\(|@|\bat\s+)?((?:[a-z][a-z0-9+.-]*:\/\/|\/)[^\s()@]*?):(\d+):(\d+)\)?\s*$/i;function Q(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=Y.exec(n.trim()),i=e&&Q(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(K,"[redacted]").replace(J,"[redacted]").replace(D,"[url]").replace(W,"[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,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;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,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),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};
1
+ import{VERSION as e}from"./chunk-TVSNBASY.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)}},B=[2500,4e3],N=[800,1800],j=e=>{document.prerendering?C(()=>j(e)):"complete"!==document.readyState?addEventListener("load",()=>j(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,V=/\b[a-z][a-z0-9+.-]*:\/\/\S+/gi,W=/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/gi,D=/\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,Y=/^[a-z][a-z0-9+.-]*:\/\/[^/]*/i,Q=/(?:\(|@|\bat\s+)?((?:[a-z][a-z0-9+.-]*:\/\/|\/)[^\s()@]*?):(\d+):(\d+)\)?\s*$/i;function X(e,t,n){const i=e.replace(Y,"").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&&X(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(Y,"").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(V,"[url]").replace(W,"[id]").replace(D,"[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;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,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,N,t.reportAllChanges);j(()=>{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,N,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,N,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,9 +1,9 @@
1
- import{VERSION as e}from"./chunk-7TD4XKYF.js";import{useWindowMenuItem as t,Modal as r}from"./chunk-OMOQC57R.js";import{navIcons as s}from"./chunk-DSSLOQDW.js";import{Icon as o}from"./chunk-3G5TA3IF.js";import{DEFAULT_SHELL_STRINGS as n,useShellStrings as i,splitAround as a}from"./chunk-LVCRH3K6.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=n.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(o,{name:"info",className:"h-4 w-4",strokeWidth:1.5}),v=/* @__PURE__ */p(o,{name:"window",className:"h-9 w-9",strokeWidth:1.5});function w({app:o}){const n=f[o],[u,w]=m(!1),g=c(()=>w(!0),[]),N=i().aboutApp,b=N.title(n.name);if(t(b,g,x),!u)return null;const y=s[n.route],k=l(y)?d(y,{className:"h-9 w-9"}):v,[j,D]=a(N.partOf);/* @__PURE__ */
1
+ import{VERSION as e}from"./chunk-TVSNBASY.js";import{useWindowMenuItem as t,Modal as r}from"./chunk-OMOQC57R.js";import{navIcons as s}from"./chunk-DSSLOQDW.js";import{Icon as o}from"./chunk-3G5TA3IF.js";import{DEFAULT_SHELL_STRINGS as n,useShellStrings as i,splitAround as a}from"./chunk-LVCRH3K6.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=n.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(o,{name:"info",className:"h-4 w-4",strokeWidth:1.5}),v=/* @__PURE__ */p(o,{name:"window",className:"h-9 w-9",strokeWidth:1.5});function w({app:o}){const n=f[o],[u,w]=m(!1),N=c(()=>w(!0),[]),g=i().aboutApp,b=g.title(n.name);if(t(b,N,x),!u)return null;const y=s[n.route],k=l(y)?d(y,{className:"h-9 w-9"}):v,[j,S]=a(g.partOf);/* @__PURE__ */
2
2
  return p(r,{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:n.name}),
5
- /* @__PURE__ */p("p",{className:"text-2xs font-mono text-gray-400",children:N.version(n.version)}),
6
- /* @__PURE__ */p("p",{className:"mt-2 text-xs text-gray-500 leading-relaxed",children:N[o]}),
5
+ /* @__PURE__ */p("p",{className:"text-2xs font-mono text-gray-400",children:g.version(n.version)}),
6
+ /* @__PURE__ */p("p",{className:"mt-2 text-xs text-gray-500 leading-relaxed",children:g[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"}),D]}),e&&/* @__PURE__ */p("p",{className:"mt-0.5 text-2xs font-mono text-gray-400",children:N.shellVersion(e)})]})]})})}export{w as AboutApp,f as BUILTIN_APP_INFO};
9
+ /* @__PURE__ */p("span",{className:"font-medium text-gray-700",children:"efficient-shell"}),S]}),e&&/* @__PURE__ */p("p",{className:"mt-0.5 text-2xs font-mono text-gray-400",children:g.shellVersion(e)})]})]})})}export{w as AboutApp,f as BUILTIN_APP_INFO};
@@ -1,4 +1,4 @@
1
- import{Breadcrumbs as e}from"./chunk-22EP5XS2.js";import{OneLineLabel as t,TH_ONE_LINE as r}from"./chunk-AHN2BTZR.js";import{inputClasses as n,PLACEHOLDER_INK as a,FILTER_ON as l,FILTER_ON_INK as i,FILTER_OFF as o,INPUT_BASE_ON as s,INPUT_BASE as c,INPUT_SIZES as d}from"./chunk-HJQAE6SP.js";import{SidebarLayout as u}from"./chunk-FBXOKW33.js";import{useShellLanguage as h}from"./chunk-PBZ2VHS3.js";import{IconButton_default as m,BrandMark as p}from"./chunk-7D6TZW44.js";import{loadIconSet as g,iconSetFor as f}from"./chunk-FWEGDHFT.js";import{isSafeLinkHref as b}from"./chunk-PJPK2ADX.js";import{toast_default as y}from"./chunk-WSRZRWN7.js";import{useIsMobile as x,useShortcutLabel as v,useShellPrefs as w}from"./chunk-QDCMVFK5.js";import{reportBoundaryError as N}from"./chunk-KNUR2UEG.js";import{useTabLayer as k,focusableIn as $,useFocusTrap as M,useScrollLock as C,dialogA11y as L,stopAfter as D}from"./chunk-BY3KWWWU.js";import{PopupMenu as S,PopupMenuDivider as A,PopupMenuLabel as P,menuTextRowStyle as j,itemLook as z,MenuCheckMark as F,MenuSemanticsContext as E,leavesContextMenuAlone as I}from"./chunk-UNA3BQJI.js";import{useDismissPopupsOnOpen as B}from"./chunk-UVBK6YSR.js";import{Button_default as T}from"./chunk-G5GERM76.js";import{Tooltip as O,useDropdownPosition as R,MENU_MAX_HEIGHT as W,placeMenu as K,popupBounds as _,followAnchor as q,VIEWPORT_MARGIN as H,swallowPress as U,describedByWith as V,OffWithReason as Y,POPUP_MAX_WIDTH as G,followRect as X,placeAtPoint as Z}from"./chunk-3E27HV76.js";import{glassStyle as J,GLASS_DIVIDER as Q,solidSurfaceStyle as ee}from"./chunk-7IQ3B77H.js";import{registerModalEscapeInterceptor as te,onOverlayOpen as re,Z_LAYERS as ne}from"./chunk-FIEA5CGB.js";import{iconButtonClasses as ae,buttonClasses as le}from"./chunk-K7PQXJO7.js";import{useBrowserLayoutEffect as ie,useBrowserValue as oe,useHydrated as se,useBrowserValueOnce as ce,useBrowserState as de}from"./chunk-D65T4H6J.js";import{Icon as ue,setIconSet as he}from"./chunk-3G5TA3IF.js";import{useFileIntake as me,humanSize as pe,FileIntakeAlert as ge}from"./chunk-UAG5IEAY.js";import{useShellStrings as fe,useShellLocale as be,DEFAULT_SHELL_STRINGS as ye,currentShellStrings as xe,splitAround as ve}from"./chunk-LVCRH3K6.js";import{formatPlain as we,formatFixed as Ne,formatPercent as ke}from"./chunk-C3QOHMR6.js";import{parseFocal as $e,formatFocal as Me,nudgeFocal as Ce,focalFromRect as Le}from"./chunk-AP2QEJXQ.js";import{calendarNames as De,firstDayOfWeek as Se,formatDate as Ae,EMPTY_VALUE as Pe,toInstant as je,timeAgo as ze,formatDateTime as Fe}from"./chunk-W32SKK3D.js";import{SpinnerRing as Ee,LoadingSpinner as Ie}from"./chunk-2J6F4EE7.js";import{forwardRef as Be,useCallback as Te,useState as Oe,useRef as Re,useId as We,useMemo as Ke,useEffect as _e,createContext as qe,Children as He,isValidElement as Ue,cloneElement as Ve,useContext as Ye,Fragment as Ge,Component as Xe,useSyncExternalStore as Ze,useLayoutEffect as Je}from"react";import{jsxs as Qe,jsx as et,Fragment as tt}from"react/jsx-runtime";import{createPortal as rt}from"react-dom";var nt=/(^|[\s:])!?z-/,at=e=>!!e&&"label"!==e.type&&"status"!==e.type&&"divider"!==e.type&&!e.disabled;function lt({trigger:e,items:t,align:r="end",side:n="bottom","aria-label":a,className:l="",triggerClassName:i,menuClassName:o="",minWidth:s=180,linkAs:c,disabled:d,id:u,"aria-describedby":h}){const[m,p]=Oe(!1),[g,f]=Oe(-1),b=Re(null),y=Re(null),x=Re(null),v=Re({text:"",at:0}),w=We(),N=We(),k=u??N,$=Te(e=>{p(!1),e&&y.current?.focus()},[]),M=(e,r)=>{const n=t.length;for(let a=0;a<n;a+=1){const l=((e+r*a)%n+n)%n;if(at(t[l]))return l}return-1},C=()=>x.current?.closest("[data-popup-menu-tree]")??null;_e(()=>{if(!m)return;const e=e=>{const t=e.target;b.current?.contains(t)||C()?.contains(t)||$(!1)};document.addEventListener("pointerdown",e,!0);const t=re(()=>$(!1));return()=>{document.removeEventListener("pointerdown",e,!0),t()}},[m,$]);const L=Te(()=>{const e=C(),t=y.current;if(!e||!t)return;const a=e.style;a.left="0px",a.top="0px",a.maxWidth="none",a.maxHeight="none";const l={width:e.offsetWidth,height:e.offsetHeight},i=K({trigger:t.getBoundingClientRect(),menu:l,bounds:_(t),align:r,side:n});a.left=`${i.left}px`,a.top=`${i.top}px`,a.maxWidth=`${i.maxWidth}px`,a.maxHeight=`${i.maxHeight}px`,a.overflowY=l.height>i.maxHeight?"auto":"",e.dataset.side=i.side,e.dataset.align=r},[r,n]);ie(()=>{m&&L()}),_e(()=>{if(m)return q(()=>y.current,L)},[m,L]),_e(()=>{if(!m)return;const e=x.current,r=at(t[g])?e?.querySelector(`[data-dropdown-index="${g}"]`):null;(r??e)?.focus({preventScroll:!0})},[m,g]),_e(()=>{if(m)return te(e=>"Escape"===e.key&&($(!0),!0),()=>x.current)},[m,$]);const D=e=>{f(e),p(!0)},E=e=>{e.disabled||($(!0),e.onSelect())},I=c??"a",B=e=>`${w}-status-${e}`,T=t.flatMap((e,t)=>"status"===e.type?[B(t)]:[]).join(" ")||void 0,O=(e,t)=>({"data-dropdown-index":e,tabIndex:e===g?0:-1,onMouseEnter:()=>{t.disabled||f(e)}}),R=(e,t)=>{if("divider"===e.type)/* @__PURE__ */
1
+ import{Breadcrumbs as e}from"./chunk-22EP5XS2.js";import{OneLineLabel as t,TH_ONE_LINE as r}from"./chunk-AHN2BTZR.js";import{inputClasses as n,PLACEHOLDER_INK as a,FILTER_ON as l,FILTER_ON_INK as i,FILTER_OFF as o,INPUT_BASE_ON as s,INPUT_BASE as c,INPUT_SIZES as d}from"./chunk-HJQAE6SP.js";import{SidebarLayout as u}from"./chunk-FBXOKW33.js";import{useShellLanguage as h}from"./chunk-PBZ2VHS3.js";import{IconButton_default as m,BrandMark as p}from"./chunk-7D6TZW44.js";import{loadIconSet as g,iconSetFor as f}from"./chunk-M2AM6DAA.js";import{isSafeLinkHref as b}from"./chunk-PJPK2ADX.js";import{toast_default as y}from"./chunk-WSRZRWN7.js";import{useIsMobile as x,useShortcutLabel as v,useShellPrefs as w}from"./chunk-QDCMVFK5.js";import{reportBoundaryError as N}from"./chunk-KNUR2UEG.js";import{useTabLayer as k,focusableIn as $,useFocusTrap as M,useScrollLock as C,dialogA11y as L,stopAfter as D}from"./chunk-BY3KWWWU.js";import{PopupMenu as S,PopupMenuDivider as A,PopupMenuLabel as P,menuTextRowStyle as j,itemLook as z,MenuCheckMark as F,MenuSemanticsContext as E,leavesContextMenuAlone as I}from"./chunk-UNA3BQJI.js";import{useDismissPopupsOnOpen as B}from"./chunk-UVBK6YSR.js";import{Button_default as T}from"./chunk-G5GERM76.js";import{Tooltip as O,useDropdownPosition as R,MENU_MAX_HEIGHT as W,placeMenu as K,popupBounds as _,followAnchor as q,VIEWPORT_MARGIN as H,swallowPress as U,describedByWith as V,OffWithReason as Y,POPUP_MAX_WIDTH as G,followRect as X,placeAtPoint as Z}from"./chunk-3E27HV76.js";import{glassStyle as J,GLASS_DIVIDER as Q,solidSurfaceStyle as ee}from"./chunk-7IQ3B77H.js";import{registerModalEscapeInterceptor as te,onOverlayOpen as re,Z_LAYERS as ne}from"./chunk-FIEA5CGB.js";import{iconButtonClasses as ae,buttonClasses as le}from"./chunk-K7PQXJO7.js";import{useBrowserLayoutEffect as ie,useBrowserValue as oe,useHydrated as se,useBrowserValueOnce as ce,useBrowserState as de}from"./chunk-D65T4H6J.js";import{Icon as ue,setIconSet as he}from"./chunk-3G5TA3IF.js";import{useFileIntake as me,humanSize as pe,FileIntakeAlert as ge}from"./chunk-UAG5IEAY.js";import{useShellStrings as fe,useShellLocale as be,DEFAULT_SHELL_STRINGS as ye,currentShellStrings as xe,splitAround as ve}from"./chunk-LVCRH3K6.js";import{formatPlain as we,formatFixed as Ne,formatPercent as ke}from"./chunk-C3QOHMR6.js";import{parseFocal as $e,formatFocal as Me,nudgeFocal as Ce,focalFromRect as Le}from"./chunk-AP2QEJXQ.js";import{calendarNames as De,firstDayOfWeek as Se,formatDate as Ae,EMPTY_VALUE as Pe,toInstant as je,timeAgo as ze,formatDateTime as Fe}from"./chunk-W32SKK3D.js";import{SpinnerRing as Ee,LoadingSpinner as Ie}from"./chunk-2J6F4EE7.js";import{forwardRef as Be,useCallback as Te,useState as Oe,useRef as Re,useId as We,useMemo as Ke,useEffect as _e,createContext as qe,Children as He,isValidElement as Ue,cloneElement as Ve,useContext as Ye,Fragment as Ge,Component as Xe,useSyncExternalStore as Ze,useLayoutEffect as Je}from"react";import{jsxs as Qe,jsx as et,Fragment as tt}from"react/jsx-runtime";import{createPortal as rt}from"react-dom";var nt=/(^|[\s:])!?z-/,at=e=>!!e&&"label"!==e.type&&"status"!==e.type&&"divider"!==e.type&&!e.disabled;function lt({trigger:e,items:t,align:r="end",side:n="bottom","aria-label":a,className:l="",triggerClassName:i,menuClassName:o="",minWidth:s=180,linkAs:c,disabled:d,id:u,"aria-describedby":h}){const[m,p]=Oe(!1),[g,f]=Oe(-1),b=Re(null),y=Re(null),x=Re(null),v=Re({text:"",at:0}),w=We(),N=We(),k=u??N,$=Te(e=>{p(!1),e&&y.current?.focus()},[]),M=(e,r)=>{const n=t.length;for(let a=0;a<n;a+=1){const l=((e+r*a)%n+n)%n;if(at(t[l]))return l}return-1},C=()=>x.current?.closest("[data-popup-menu-tree]")??null;_e(()=>{if(!m)return;const e=e=>{const t=e.target;b.current?.contains(t)||C()?.contains(t)||$(!1)};document.addEventListener("pointerdown",e,!0);const t=re(()=>$(!1));return()=>{document.removeEventListener("pointerdown",e,!0),t()}},[m,$]);const L=Te(()=>{const e=C(),t=y.current;if(!e||!t)return;const a=e.style;a.left="0px",a.top="0px",a.maxWidth="none",a.maxHeight="none";const l={width:e.offsetWidth,height:e.offsetHeight},i=K({trigger:t.getBoundingClientRect(),menu:l,bounds:_(t),align:r,side:n});a.left=`${i.left}px`,a.top=`${i.top}px`,a.maxWidth=`${i.maxWidth}px`,a.maxHeight=`${i.maxHeight}px`,a.overflowY=l.height>i.maxHeight?"auto":"",e.dataset.side=i.side,e.dataset.align=r},[r,n]);ie(()=>{m&&L()}),_e(()=>{if(m)return q(()=>y.current,L)},[m,L]),_e(()=>{if(!m)return;const e=x.current,r=at(t[g])?e?.querySelector(`[data-dropdown-index="${g}"]`):null;(r??e)?.focus({preventScroll:!0})},[m,g]),_e(()=>{if(m)return te(e=>"Escape"===e.key&&($(!0),!0),()=>x.current)},[m,$]);const D=e=>{f(e),p(!0)},E=e=>{e.disabled||($(!0),e.onSelect())},I=c??"a",B=e=>`${w}-status-${e}`,T=t.flatMap((e,t)=>"status"===e.type?[B(t)]:[]).join(" ")||void 0,O=(e,t)=>({"data-dropdown-index":e,tabIndex:e===g?0:-1,onMouseEnter:()=>{t.disabled||f(e)}}),R=(e,t)=>{if("divider"===e.type)/* @__PURE__ */
2
2
  return et("div",{role:"separator",children:/* @__PURE__ */et(A,{})},e.key);if("label"===e.type)/* @__PURE__ */
3
3
  return et("div",{id:`${w}-label-${t}`,children:/* @__PURE__ */et(P,{children:e.label})},e.key);if("status"===e.type)/* @__PURE__ */
4
4
  return et("div",{id:B(t),className:"text-xs",style:j(),children:e.label},e.key);if("checkbox"===e.type){const r=z(!1,e.disabled,"");/* @__PURE__ */
@@ -1 +1 @@
1
- import{loadThemeIconSet as e}from"./chunk-3G5TA3IF.js";var r=["academic-cap","accent","account","account-circle","add","add-circle","add-person","adjust","align-center","align-justify","align-left","align-right","align-separate","alignment","anchor","animation","apps","archive-box","arrow","arrow-down","arrow-left","arrow-left-end-on-rectangle","arrow-long-right","arrow-right","arrow-trending-down","arrow-trending-up","arrow-up","arrow-up-right","at-symbol","attach","background","bag","bank","bars-3-bottom-left","battery","beaker","bell","bell-alert","bell-plus","billing","black-and-white","block-badge","block-banner","block-box","block-button","block-column","block-coupon","block-divider","block-footer","block-heading","block-image","block-included-list","block-layered-images","block-product","block-product-title","block-section","block-social","block-spacer","block-text","block-video","blog-post","bold","bolt","book-open","bookmark","bookmark-square","border-all","border-bottom","border-left","border-right","border-top","braces","breadcrumb","briefcase","bug","bug-ant","building-library","building-office-2","button","button-arrow","button-icon","calculator","calendar","calendar-check","camera","caption","car","card-payment","caret","cart","case","case-capitalized","case-lower","case-normal","case-upper","category","chart","chart-bar","chart-bar-square","chart-line","chat","chat-bubble-left-right","chat-bubble-oval-left-ellipsis","check","check-circle","checkbox","chevron","chevron-double","chevron-double-left","chevron-double-right","chevron-down","chevron-left","chevron-right","chevron-up","chevron-up-down","circle-stack","clear-marks","clipboard","clipboard-check","clipboard-document-list","clipboard-list","clock","close","close-circle","cloud","cloud-alert","cloud-arrow-up","cloud-check","cloud-download","cloud-pause","cloud-slash","code","code-bracket","collapse","collapse-all","column-gap","column-widths","columns","company","compose","contrast","cookie","copied","copy","copy-style","copy-to-page","corner","crop","cube-transparent","cursor","cursor-arrow-rays","cursor-click","dashboard","date","desktop","diagram","direction","direction-down","direction-left","direction-right","direction-up","document","document-check","document-magnifying-glass","dollar","dot","download","drag","drop","duplicate","edit","email","emphasis","eraser","error","expand","external","eye","eye-off","face-smile","filter","finish","fire","flag","folder","folder-open","folder-plus","forward","full-width","gap","gem","gift","globe","grid","ground","hand","hand-thumb-up","hash","headquarters","heart","height","help","help-off","hexagon","home","hover","icon-after-text","icon-before-text","identification","image","image-off","images","inbox","info","italic","key","layers","layout","letter-spacing","lightbulb","line-between","line-dashed","line-dotted","line-solid","line-spacing","line-style","link","link-slash","list","list-format","location","lock","logo","logout","map","media","megaphone","menu","meta","microphone","money","moon","more","more-vertical","move-down","move-up","newspaper","no-symbol","note","nudge","numbered-list","opacity","own-text","package","package-open","padding-all","padding-bottom","padding-left","padding-left-right","padding-right","padding-top","padding-x","padding-y","page","paint-brush","panel-left","panel-right","paragraph-spacing","parcel","paste","paste-style","pause","pen","people","percent","phone","phone-hidden","placement","play","plus-minus","power","presentation-chart-bar","print","product","product-field","product-size","progress","quiet","radio-dot","radius","receipt","receipt-percent","receipt-refund","rectangle-group","redo","refresh","remove","remove-circle","rename","reply","reply-all","revert","robot","rotate","scale","scroll-point","scroll-text","search","select-all","send","server","settings","shadow","shape-ellipse","shape-rect","share","shield-check","shield-exclamation","sides-each","signal","signal-slash","sitemap","slide-arrows-bare","slide-arrows-round","slide-arrows-square","slide-picker-bar","slide-picker-cards","slide-picker-dots","slide-picker-numbers","sort","sparkles","speaker","speaker-wave","spec-table","spinner","split","square","star","state","status-circle","status-dot","sticky","stop-circle","store","strike","styles","subscript","success-burst","sun","superscript","swap","swatch","table","tablet","tabs","tag","target","team","telephone","template","text-color","text-lines","text-size","text-small","text-value","texture","theme","ticket","title","trash","trigger","truck","tv","type","tyre","underline","undo","upload","v-align","verified","video-off","view-columns","wallet","warning","weight","wheel","widgets","width","window","windows","words-from","wrap","wrench","wrench-screwdriver","zoom-in"],o=new Set(r),a=e=>"string"==typeof e&&o.has(e),t=[{name:"phosphor",label:"Phosphor"},{name:"iconoir",label:"Iconoir"},{name:"lucide",label:"Lucide"},{name:"tabler",label:"Tabler"}],l={pink:"phosphor",green:"iconoir",grey:"lucide",blue:"tabler"};function c(r){return e(r)}function i(e,r,o){return o?"string"==typeof r&&r?r:null:l[e]??null}export{r as ICON_NAMES,l as ICON_SET_FOR_THEME,t as THEME_ICON_SETS,i as iconSetFor,a as isIconName,c as loadIconSet};
1
+ import{loadThemeIconSet as e}from"./chunk-3G5TA3IF.js";var r=["academic-cap","accent","account","account-circle","add","add-circle","add-person","adjust","align-center","align-justify","align-left","align-right","align-separate","alignment","anchor","animation","apps","archive-box","arrow","arrow-down","arrow-left","arrow-left-end-on-rectangle","arrow-long-right","arrow-right","arrow-trending-down","arrow-trending-up","arrow-up","arrow-up-right","at-symbol","attach","background","bag","bank","bars-3-bottom-left","battery","beaker","bell","bell-alert","bell-plus","billing","black-and-white","block-badge","block-banner","block-box","block-button","block-column","block-coupon","block-divider","block-footer","block-heading","block-image","block-included-list","block-layered-images","block-product","block-product-title","block-section","block-social","block-spacer","block-text","block-video","blog-post","bold","bolt","book-open","bookmark","bookmark-square","border-all","border-bottom","border-left","border-right","border-top","braces","breadcrumb","briefcase","bug","bug-ant","building-library","building-office-2","button","button-arrow","button-icon","calculator","calendar","calendar-check","camera","caption","car","card-payment","caret","cart","case","case-capitalized","case-lower","case-normal","case-upper","category","chart","chart-bar","chart-bar-square","chart-line","chat","chat-bubble-left-right","chat-bubble-oval-left-ellipsis","check","check-circle","checkbox","chevron","chevron-double","chevron-double-left","chevron-double-right","chevron-down","chevron-left","chevron-right","chevron-up","chevron-up-down","circle-stack","clear-marks","clipboard","clipboard-check","clipboard-document-list","clipboard-list","clock","close","close-circle","cloud","cloud-alert","cloud-arrow-up","cloud-check","cloud-download","cloud-pause","cloud-slash","code","code-bracket","collapse","collapse-all","column-gap","column-widths","columns","company","compose","contrast","cookie","copied","copy","copy-style","copy-to-page","corner","crop","cube-transparent","cursor","cursor-arrow-rays","cursor-click","dashboard","date","desktop","diagram","direction","direction-down","direction-left","direction-right","direction-up","document","document-check","document-magnifying-glass","dollar","dot","download","drag","drop","duplicate","edit","email","emphasis","eraser","error","expand","external","eye","eye-off","face-smile","filter","finish","fire","flag","folder","folder-open","folder-plus","forward","full-width","gap","gem","gift","globe","grid","ground","hand","hand-thumb-up","hash","headquarters","heart","height","help","help-off","hexagon","home","hover","icon-after-text","icon-before-text","identification","image","image-off","images","inbox","info","italic","key","layers","layout","letter-spacing","lightbulb","line-between","line-dashed","line-dotted","line-solid","line-spacing","line-style","link","link-slash","list","list-format","list-none","location","lock","logo","logout","map","media","megaphone","menu","meta","microphone","money","moon","more","more-vertical","move-down","move-up","newspaper","no-symbol","note","nudge","numbered-list","opacity","own-text","package","package-open","padding-all","padding-bottom","padding-left","padding-left-right","padding-right","padding-top","padding-x","padding-y","page","paint-brush","panel-left","panel-right","paragraph-spacing","parcel","paste","paste-style","pause","pen","people","percent","phone","phone-hidden","placement","play","plus-minus","power","presentation-chart-bar","print","product","product-field","product-size","progress","quiet","radio-dot","radius","receipt","receipt-percent","receipt-refund","rectangle-group","redo","refresh","remove","remove-circle","rename","reply","reply-all","revert","robot","rotate","scale","scroll-point","scroll-text","search","select-all","send","server","settings","shadow","shape-ellipse","shape-rect","share","shield-check","shield-exclamation","sides-each","signal","signal-slash","sitemap","slide-arrows-bare","slide-arrows-round","slide-arrows-square","slide-picker-bar","slide-picker-cards","slide-picker-dots","slide-picker-numbers","sort","sparkles","speaker","speaker-wave","spec-table","spinner","split","square","star","state","status-circle","status-dot","sticky","stop-circle","store","strike","styles","subscript","success-burst","sun","superscript","swap","swatch","table","tablet","tabs","tag","target","team","telephone","template","text-color","text-lines","text-size","text-small","text-value","texture","theme","ticket","title","trash","trigger","truck","tv","type","tyre","underline","undo","upload","v-align","verified","video-off","view-columns","wallet","warning","weight","wheel","widgets","width","window","windows","words-from","wrap","wrench","wrench-screwdriver","zoom-in"],o=new Set(r),a=e=>"string"==typeof e&&o.has(e),t=[{name:"phosphor",label:"Phosphor"},{name:"iconoir",label:"Iconoir"},{name:"lucide",label:"Lucide"},{name:"tabler",label:"Tabler"}],l={pink:"phosphor",green:"iconoir",grey:"lucide",blue:"tabler"};function c(r){return e(r)}function i(e,r,o){return o?"string"==typeof r&&r?r:null:l[e]??null}export{r as ICON_NAMES,l as ICON_SET_FOR_THEME,t as THEME_ICON_SETS,i as iconSetFor,a as isIconName,c as loadIconSet};
@@ -0,0 +1 @@
1
+ var r="7.44.0",a=r;export{a as APP_VERSION,r as VERSION};
@@ -448,7 +448,8 @@ return e("svg",{width:i,height:i,viewBox:"0 0 20 20",fill:"currentColor","aria-h
448
448
  /* @__PURE__ */c("path",{d:"M12.232 4.232a2.5 2.5 0 0 1 3.536 3.536l-1.225 1.224a.75.75 0 0 0 1.061 1.06l1.224-1.224a4 4 0 0 0-5.656-5.656l-3 3a4 4 0 0 0 .225 5.865.75.75 0 0 0 .977-1.138 2.5 2.5 0 0 1-.142-3.667l3-3Z"}),
449
449
  /* @__PURE__ */c("path",{d:"M11.603 7.963a.75.75 0 0 0-.977 1.138 2.5 2.5 0 0 1 .142 3.667l-3 3a2.5 2.5 0 0 1-3.536-3.536l1.225-1.224a.75.75 0 0 0-1.061-1.06l-1.224 1.224a4 4 0 1 0 5.656 5.656l3-3a4 4 0 0 0-.225-5.865Z"})]})},"link-slash":function({size:e=18,...i}){/* @__PURE__ */
450
450
  return c("svg",{width:e,height:e,viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M2.22 2.22a.75.75 0 0 1 1.06 0l4.46 4.46c.128-.178.272-.349.432-.508l3-3a4 4 0 0 1 5.657 5.656l-1.225 1.225a.75.75 0 1 1-1.06-1.06l1.224-1.225a2.5 2.5 0 0 0-3.536-3.536l-3 3a2.504 2.504 0 0 0-.406.533l2.59 2.59a2.49 2.49 0 0 0-.79-1.254.75.75 0 1 1 .977-1.138 3.997 3.997 0 0 1 1.306 3.886l4.871 4.87a.75.75 0 1 1-1.06 1.061l-5.177-5.177-.006-.005-4.134-4.134a.65.65 0 0 1-.005-.006L2.22 3.28a.75.75 0 0 1 0-1.06Zm3.237 7.727a.75.75 0 0 1 0 1.06l-1.225 1.225a2.5 2.5 0 0 0 3.536 3.536l1.879-1.879a.75.75 0 1 1 1.06 1.06L8.83 16.83a4 4 0 0 1-5.657-5.657l1.224-1.225a.75.75 0 0 1 1.06 0Z",clipRule:"evenodd"})})},list:Vc,"list-format":function({size:e=18,...i}){/* @__PURE__ */
451
- return c("svg",{width:e,height:e,viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M3.125,2.375h2.5c0.49841,0.03274 1.09349,0.26507 1.41421,0.58579c0.32072,0.32072 0.55305,0.9158 0.58579,1.41421v11.25c-0.03274,0.49841 -0.26507,1.09349 -0.58579,1.41421c-0.32072,0.32072 -0.9158,0.55305 -1.41421,0.58579h-2.5c-0.49841,-0.03274 -1.09349,-0.26507 -1.41421,-0.58579c-0.32072,-0.32072 -0.55305,-0.9158 -0.58579,-1.41421v-11.25c0.03274,-0.49841 0.26507,-1.09349 0.58579,-1.41421c0.32072,-0.32072 0.9158,-0.55305 1.41421,-0.58579zM3.40273,5.27773c-0.20762,0.20762 -0.40273,0.64645 -0.40273,0.97227c0,0.32583 0.19511,0.76466 0.40273,0.97227c0.20762,0.20762 0.64645,0.40273 0.97227,0.40273c0.32583,0 0.76466,-0.19511 0.97227,-0.40273c0.20762,-0.20762 0.40273,-0.64645 0.40273,-0.97227c0,-0.32583 -0.19511,-0.76466 -0.40273,-0.97227c-0.20762,-0.20762 -0.64645,-0.40273 -0.97227,-0.40273c-0.32583,0 -0.76466,0.19511 -0.97227,0.40273zM4.375,6.37182c-0.01136,-0.00887 -0.06736,-0.03344 -0.08496,-0.03686c-0.00342,-0.0176 -0.02799,-0.0736 -0.03686,-0.08496c0.00887,-0.01136 0.03344,-0.06736 0.03686,-0.08496c0.0176,-0.00342 0.0736,-0.02799 0.08496,-0.03686c0.01136,0.00887 0.06736,0.03344 0.08496,0.03686c0.00342,0.0176 0.02799,0.0736 0.03686,0.08496c-0.00887,0.01136 -0.03344,0.06736 -0.03686,0.08496c-0.0176,0.00342 -0.0736,0.02799 -0.08496,0.03686zM3.40273,9.02773c-0.20762,0.20762 -0.40273,0.64645 -0.40273,0.97227c0,0.32583 0.19511,0.76466 0.40273,0.97227c0.20762,0.20762 0.64645,0.40273 0.97227,0.40273c0.32583,0 0.76466,-0.19511 0.97227,-0.40273c0.20762,-0.20762 0.40273,-0.64645 0.40273,-0.97227c0,-0.32583 -0.19511,-0.76466 -0.40273,-0.97227c-0.20762,-0.20762 -0.64645,-0.40273 -0.97227,-0.40273c-0.32583,0 -0.76466,0.19511 -0.97227,0.40273zM4.375,10.12182c-0.01136,-0.00887 -0.06736,-0.03344 -0.08496,-0.03686c-0.00342,-0.0176 -0.02799,-0.0736 -0.03686,-0.08496c0.00887,-0.01136 0.03344,-0.06736 0.03686,-0.08496c0.0176,-0.00342 0.0736,-0.02799 0.08496,-0.03686c0.01136,0.00887 0.06736,0.03344 0.08496,0.03686c0.00342,0.0176 0.02799,0.0736 0.03686,0.08496c-0.00887,0.01136 -0.03344,0.06736 -0.03686,0.08496c-0.0176,0.00342 -0.0736,0.02799 -0.08496,0.03686zM3.40273,12.77773c-0.20762,0.20762 -0.40273,0.64645 -0.40273,0.97227c0,0.32583 0.19511,0.76466 0.40273,0.97227c0.20762,0.20762 0.64645,0.40273 0.97227,0.40273c0.32583,0 0.76466,-0.19511 0.97227,-0.40273c0.20762,-0.20762 0.40273,-0.64645 0.40273,-0.97227c0,-0.32583 -0.19511,-0.76466 -0.40273,-0.97227c-0.20762,-0.20762 -0.64645,-0.40273 -0.97227,-0.40273c-0.32583,0 -0.76466,0.19511 -0.97227,0.40273zM4.375,13.87182c-0.01136,-0.00887 -0.06736,-0.03344 -0.08496,-0.03686c-0.00342,-0.0176 -0.02799,-0.0736 -0.03686,-0.08496c0.00887,-0.01136 0.03344,-0.06736 0.03686,-0.08496c0.0176,-0.00342 0.0736,-0.02799 0.08496,-0.03686c0.01136,0.00887 0.06736,0.03344 0.08496,0.03686c0.00342,0.0176 0.02799,0.0736 0.03686,0.08496c-0.00887,0.01136 -0.03344,0.06736 -0.03686,0.08496c-0.0176,0.00342 -0.0736,0.02799 -0.08496,0.03686zM16.75,6.25c0,0.41421 0.33579,0.75 0.75,0.75h-8.125c0.41421,0 0.75,-0.33579 0.75,-0.75c0,-0.41421 -0.33579,-0.75 -0.75,-0.75h8.125c-0.41421,0 -0.75,0.33579 -0.75,0.75zM16.75,10c0,0.41421 0.33579,0.75 0.75,0.75h-8.125c0.41421,0 0.75,-0.33579 0.75,-0.75c0,-0.41421 -0.33579,-0.75 -0.75,-0.75h8.125c-0.41421,0 -0.75,0.33579 -0.75,0.75zM16.75,13.75c0,0.41421 0.33579,0.75 0.75,0.75h-8.125c0.41421,0 0.75,-0.33579 0.75,-0.75c0,-0.41421 -0.33579,-0.75 -0.75,-0.75h8.125c-0.41421,0 -0.75,0.33579 -0.75,0.75z"})})},location:function({size:e=18,...i}){/* @__PURE__ */
451
+ return c("svg",{width:e,height:e,viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M3.125,2.375h2.5c0.49841,0.03274 1.09349,0.26507 1.41421,0.58579c0.32072,0.32072 0.55305,0.9158 0.58579,1.41421v11.25c-0.03274,0.49841 -0.26507,1.09349 -0.58579,1.41421c-0.32072,0.32072 -0.9158,0.55305 -1.41421,0.58579h-2.5c-0.49841,-0.03274 -1.09349,-0.26507 -1.41421,-0.58579c-0.32072,-0.32072 -0.55305,-0.9158 -0.58579,-1.41421v-11.25c0.03274,-0.49841 0.26507,-1.09349 0.58579,-1.41421c0.32072,-0.32072 0.9158,-0.55305 1.41421,-0.58579zM3.40273,5.27773c-0.20762,0.20762 -0.40273,0.64645 -0.40273,0.97227c0,0.32583 0.19511,0.76466 0.40273,0.97227c0.20762,0.20762 0.64645,0.40273 0.97227,0.40273c0.32583,0 0.76466,-0.19511 0.97227,-0.40273c0.20762,-0.20762 0.40273,-0.64645 0.40273,-0.97227c0,-0.32583 -0.19511,-0.76466 -0.40273,-0.97227c-0.20762,-0.20762 -0.64645,-0.40273 -0.97227,-0.40273c-0.32583,0 -0.76466,0.19511 -0.97227,0.40273zM4.375,6.37182c-0.01136,-0.00887 -0.06736,-0.03344 -0.08496,-0.03686c-0.00342,-0.0176 -0.02799,-0.0736 -0.03686,-0.08496c0.00887,-0.01136 0.03344,-0.06736 0.03686,-0.08496c0.0176,-0.00342 0.0736,-0.02799 0.08496,-0.03686c0.01136,0.00887 0.06736,0.03344 0.08496,0.03686c0.00342,0.0176 0.02799,0.0736 0.03686,0.08496c-0.00887,0.01136 -0.03344,0.06736 -0.03686,0.08496c-0.0176,0.00342 -0.0736,0.02799 -0.08496,0.03686zM3.40273,9.02773c-0.20762,0.20762 -0.40273,0.64645 -0.40273,0.97227c0,0.32583 0.19511,0.76466 0.40273,0.97227c0.20762,0.20762 0.64645,0.40273 0.97227,0.40273c0.32583,0 0.76466,-0.19511 0.97227,-0.40273c0.20762,-0.20762 0.40273,-0.64645 0.40273,-0.97227c0,-0.32583 -0.19511,-0.76466 -0.40273,-0.97227c-0.20762,-0.20762 -0.64645,-0.40273 -0.97227,-0.40273c-0.32583,0 -0.76466,0.19511 -0.97227,0.40273zM4.375,10.12182c-0.01136,-0.00887 -0.06736,-0.03344 -0.08496,-0.03686c-0.00342,-0.0176 -0.02799,-0.0736 -0.03686,-0.08496c0.00887,-0.01136 0.03344,-0.06736 0.03686,-0.08496c0.0176,-0.00342 0.0736,-0.02799 0.08496,-0.03686c0.01136,0.00887 0.06736,0.03344 0.08496,0.03686c0.00342,0.0176 0.02799,0.0736 0.03686,0.08496c-0.00887,0.01136 -0.03344,0.06736 -0.03686,0.08496c-0.0176,0.00342 -0.0736,0.02799 -0.08496,0.03686zM3.40273,12.77773c-0.20762,0.20762 -0.40273,0.64645 -0.40273,0.97227c0,0.32583 0.19511,0.76466 0.40273,0.97227c0.20762,0.20762 0.64645,0.40273 0.97227,0.40273c0.32583,0 0.76466,-0.19511 0.97227,-0.40273c0.20762,-0.20762 0.40273,-0.64645 0.40273,-0.97227c0,-0.32583 -0.19511,-0.76466 -0.40273,-0.97227c-0.20762,-0.20762 -0.64645,-0.40273 -0.97227,-0.40273c-0.32583,0 -0.76466,0.19511 -0.97227,0.40273zM4.375,13.87182c-0.01136,-0.00887 -0.06736,-0.03344 -0.08496,-0.03686c-0.00342,-0.0176 -0.02799,-0.0736 -0.03686,-0.08496c0.00887,-0.01136 0.03344,-0.06736 0.03686,-0.08496c0.0176,-0.00342 0.0736,-0.02799 0.08496,-0.03686c0.01136,0.00887 0.06736,0.03344 0.08496,0.03686c0.00342,0.0176 0.02799,0.0736 0.03686,0.08496c-0.00887,0.01136 -0.03344,0.06736 -0.03686,0.08496c-0.0176,0.00342 -0.0736,0.02799 -0.08496,0.03686zM16.75,6.25c0,0.41421 0.33579,0.75 0.75,0.75h-8.125c0.41421,0 0.75,-0.33579 0.75,-0.75c0,-0.41421 -0.33579,-0.75 -0.75,-0.75h8.125c-0.41421,0 -0.75,0.33579 -0.75,0.75zM16.75,10c0,0.41421 0.33579,0.75 0.75,0.75h-8.125c0.41421,0 0.75,-0.33579 0.75,-0.75c0,-0.41421 -0.33579,-0.75 -0.75,-0.75h8.125c-0.41421,0 -0.75,0.33579 -0.75,0.75zM16.75,13.75c0,0.41421 0.33579,0.75 0.75,0.75h-8.125c0.41421,0 0.75,-0.33579 0.75,-0.75c0,-0.41421 -0.33579,-0.75 -0.75,-0.75h8.125c-0.41421,0 -0.75,0.33579 -0.75,0.75z"})})},"list-none":function({size:e=18,...i}){/* @__PURE__ */
452
+ return c("svg",{width:e,height:e,viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{d:"M6.875 4.875h10a0.75 0.75 0 0 1 0 1.5h-10a0.75 0.75 0 0 1 0 -1.5ZM6.875 9.25h10a0.75 0.75 0 0 1 0 1.5h-10a0.75 0.75 0 0 1 0 -1.5ZM6.875 13.625h10a0.75 0.75 0 0 1 0 1.5h-10a0.75 0.75 0 0 1 0 -1.5ZM2.5961 14.581L5.0961 5.831A0.75 0.75 0 0 0 3.6539 5.419L1.1539 14.169A0.75 0.75 0 0 0 2.5961 14.581Z"})})},location:function({size:e=18,...i}){/* @__PURE__ */
452
453
  return c("svg",{width:e,height:e,viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"m9.69 18.933.003.001C9.89 19.02 10 19 10 19s.11.02.308-.066l.002-.001.006-.003.018-.008a5.741 5.741 0 0 0 .281-.14c.186-.096.446-.24.757-.433.62-.384 1.445-.966 2.274-1.765C15.302 14.988 17 12.493 17 9A7 7 0 1 0 3 9c0 3.492 1.698 5.988 3.355 7.584a13.731 13.731 0 0 0 2.273 1.765 11.842 11.842 0 0 0 .976.544l.062.029.018.008.006.003ZM10 11.25a2.25 2.25 0 1 0 0-4.5 2.25 2.25 0 0 0 0 4.5Z",clipRule:"evenodd"})})},lock:function({size:e=18,...i}){/* @__PURE__ */
453
454
  return c("svg",{width:e,height:e,viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M10 1a4.5 4.5 0 0 0-4.5 4.5V9H5a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2h-.5V5.5A4.5 4.5 0 0 0 10 1Zm3 8V5.5a3 3 0 1 0-6 0V9h6Z",clipRule:"evenodd"})})},logo:function({size:e=18,...i}){/* @__PURE__ */
454
455
  return c("svg",{width:e,height:e,viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M5,2.375h10c0.671,0.03274 1.42233,0.33502 1.85616,0.76884c0.43382,0.43382 0.73611,1.18515 0.76884,1.85616v10c-0.03274,0.671 -0.33502,1.42233 -0.76884,1.85616c-0.43382,0.43382 -1.18515,0.73611 -1.85616,0.76884h-10c-0.671,-0.03274 -1.42233,-0.33502 -1.85616,-0.76884c-0.43382,-0.43382 -0.73611,-1.18515 -0.76884,-1.85616v-10c0.03274,-0.671 0.33502,-1.42233 0.76884,-1.85616c0.43382,-0.43382 1.18515,-0.73611 1.85616,-0.76884zM5.55232,5.55232c-0.37727,0.37727 -0.67732,1.05048 -0.67732,1.63518c0,0.58471 0.30005,1.25791 0.67732,1.63518c0.37727,0.37727 1.05048,0.67732 1.63518,0.67732c0.58471,0 1.25791,-0.30005 1.63518,-0.67732c0.37727,-0.37727 0.67732,-1.05048 0.67732,-1.63518c0,-0.58471 -0.30005,-1.25791 -0.67732,-1.63518c-0.37727,-0.37727 -1.05048,-0.67732 -1.63518,-0.67732c-0.58471,0 -1.25791,0.30005 -1.63518,0.67732zM7.1875,6.375c0.27824,0 0.38628,0.04973 0.57452,0.23798c0.18824,0.18824 0.23798,0.29629 0.23798,0.57452c0,0.27824 -0.04973,0.38628 -0.23798,0.57452c-0.18824,0.18824 -0.29629,0.23798 -0.57452,0.23798c-0.27824,0 -0.38628,-0.04973 -0.57452,-0.23798c-0.18824,-0.18824 -0.23798,-0.29629 -0.23798,-0.57452c0,-0.27824 0.04973,-0.38628 0.23798,-0.57452c0.18824,-0.18824 0.29629,-0.23798 0.57452,-0.23798zM12.8125,4.875c-0.28408,0 -0.54378,0.1605 -0.67082,0.41459l-1.5625,3.125c-0.11625,0.23249 -0.10382,0.5086 0.03283,0.72971c0.13665,0.22111 0.37805,0.3557 0.63799,0.3557h3.125c0.25993,0 0.50133,-0.13459 0.63799,-0.3557c0.13665,-0.22111 0.14908,-0.49722 0.03283,-0.72971l-1.5625,-3.125c-0.12704,-0.25409 -0.38674,-0.41459 -0.67082,-0.41459zM12.8125,7.30205l0.34897,0.69795l-0.69795,0zM5.27773,11.52773c-0.20762,0.20762 -0.36999,0.64645 -0.40273,0.97227v1.25c0.03274,0.32583 0.19511,0.76466 0.40273,0.97227c0.20762,0.20762 0.64645,0.36999 0.97227,0.40273h7.5c0.32583,-0.03274 0.76466,-0.19511 0.97227,-0.40273c0.20762,-0.20762 0.36999,-0.64645 0.40273,-0.97227v-1.25c-0.03274,-0.32583 -0.19511,-0.76466 -0.40273,-0.97227c-0.20762,-0.20762 -0.64645,-0.36999 -0.97227,-0.40273h-7.5c-0.32583,0.03274 -0.76466,0.19511 -0.97227,0.40273zM6.375,12.625l7.25,0l0,1h-7.25z"})})},logout:function({size:i=18,...l}){/* @__PURE__ */
@@ -824,7 +825,8 @@ return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-h
824
825
  return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M4.5,15.75c0.36034,0 0.83042,0.2091 1.06066,0.43934c0.23024,0.23024 0.43934,0.70032 0.43934,1.06066c0,0.36034 -0.2091,0.83042 -0.43934,1.06066c-0.23024,0.23024 -0.70032,0.43934 -1.06066,0.43934c-0.36034,0 -0.83042,-0.2091 -1.06066,-0.43934c-0.23024,-0.23024 -0.43934,-0.70032 -0.43934,-1.06066c0,-0.36034 0.2091,-0.83042 0.43934,-1.06066c0.23024,-0.23024 0.70032,-0.43934 1.06066,-0.43934zM9.75,15.75c0.36034,0 0.83042,0.2091 1.06066,0.43934c0.23024,0.23024 0.43934,0.70032 0.43934,1.06066c0,0.36034 -0.2091,0.83042 -0.43934,1.06066c-0.23024,0.23024 -0.70032,0.43934 -1.06066,0.43934c-0.36034,0 -0.83042,-0.2091 -1.06066,-0.43934c-0.23024,-0.23024 -0.43934,-0.70032 -0.43934,-1.06066c0,-0.36034 0.2091,-0.83042 0.43934,-1.06066c0.23024,-0.23024 0.70032,-0.43934 1.06066,-0.43934zM15,15.75c0.36034,0 0.83042,0.2091 1.06066,0.43934c0.23024,0.23024 0.43934,0.70032 0.43934,1.06066c0,0.36034 -0.2091,0.83042 -0.43934,1.06066c-0.23024,0.23024 -0.70032,0.43934 -1.06066,0.43934c-0.36034,0 -0.83042,-0.2091 -1.06066,-0.43934c-0.23024,-0.23024 -0.43934,-0.70032 -0.43934,-1.06066c0,-0.36034 0.2091,-0.83042 0.43934,-1.06066c0.23024,-0.23024 0.70032,-0.43934 1.06066,-0.43934zM20.25,15.75c0.36034,0 0.83042,0.2091 1.06066,0.43934c0.23024,0.23024 0.43934,0.70032 0.43934,1.06066c0,0.36034 -0.2091,0.83042 -0.43934,1.06066c-0.23024,0.23024 -0.70032,0.43934 -1.06066,0.43934c-0.36034,0 -0.83042,-0.2091 -1.06066,-0.43934c-0.23024,-0.23024 -0.43934,-0.70032 -0.43934,-1.06066c0,-0.36034 0.2091,-0.83042 0.43934,-1.06066c0.23024,-0.23024 0.70032,-0.43934 1.06066,-0.43934zM3,6.75c0,-0.41421 0.33579,-0.75 0.75,-0.75h16.5c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-16.5c-0.41421,0 -0.75,-0.33579 -0.75,-0.75zM3,12c0,-0.41421 0.33579,-0.75 0.75,-0.75h3.375c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-3.375c-0.41421,0 -0.75,-0.33579 -0.75,-0.75zM9.375,12c0,-0.41421 0.33579,-0.75 0.75,-0.75h3.375c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-3.375c-0.41421,0 -0.75,-0.33579 -0.75,-0.75zM15.75,12c0,-0.41421 0.33579,-0.75 0.75,-0.75h3.375c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-3.375c-0.41421,0 -0.75,-0.33579 -0.75,-0.75z"})})},link:function({size:e=18,...i}){/* @__PURE__ */
825
826
  return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M19.902 4.098a3.75 3.75 0 0 0-5.304 0l-4.5 4.5a3.75 3.75 0 0 0 1.035 6.037.75.75 0 0 1-.646 1.353 5.25 5.25 0 0 1-1.449-8.45l4.5-4.5a5.25 5.25 0 1 1 7.424 7.424l-1.757 1.757a.75.75 0 1 1-1.06-1.06l1.757-1.757a3.75 3.75 0 0 0 0-5.304Zm-7.389 4.267a.75.75 0 0 1 1-.353 5.25 5.25 0 0 1 1.449 8.45l-4.5 4.5a5.25 5.25 0 1 1-7.424-7.424l1.757-1.757a.75.75 0 1 1 1.06 1.06l-1.757 1.757a3.75 3.75 0 1 0 5.304 5.304l4.5-4.5a3.75 3.75 0 0 0-1.035-6.037.75.75 0 0 1-.354-1Z",clipRule:"evenodd"})})},"link-slash":function({size:e=18,...i}){/* @__PURE__ */
826
827
  return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M19.892 4.09a3.75 3.75 0 0 0-5.303 0l-4.5 4.5c-.074.074-.144.15-.21.229l4.965 4.966a3.75 3.75 0 0 0-1.986-4.428.75.75 0 0 1 .646-1.353 5.253 5.253 0 0 1 2.502 6.944l5.515 5.515a.75.75 0 0 1-1.061 1.06l-18-18.001A.75.75 0 0 1 3.521 2.46l5.294 5.295a5.31 5.31 0 0 1 .213-.227l4.5-4.5a5.25 5.25 0 1 1 7.425 7.425l-1.757 1.757a.75.75 0 1 1-1.06-1.06l1.756-1.757a3.75 3.75 0 0 0 0-5.304ZM5.846 11.773a.75.75 0 0 1 0 1.06l-1.757 1.758a3.75 3.75 0 0 0 5.303 5.304l3.129-3.13a.75.75 0 1 1 1.06 1.061l-3.128 3.13a5.25 5.25 0 1 1-7.425-7.426l1.757-1.757a.75.75 0 0 1 1.061 0Zm2.401.26a.75.75 0 0 1 .957.458c.18.512.474.992.885 1.403.31.311.661.555 1.035.733a.75.75 0 0 1-.647 1.354 5.244 5.244 0 0 1-1.449-1.026 5.232 5.232 0 0 1-1.24-1.965.75.75 0 0 1 .46-.957Z",clipRule:"evenodd"})})},list:bc,"list-format":function({size:e=18,...i}){/* @__PURE__ */
827
- return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M3.75,3h3c0.56745,0.03274 1.22503,0.29305 1.59099,0.65901c0.36596,0.36596 0.62627,1.02354 0.65901,1.59099v13.5c-0.03274,0.56745 -0.29305,1.22503 -0.65901,1.59099c-0.36596,0.36596 -1.02354,0.62627 -1.59099,0.65901h-3c-0.56745,-0.03274 -1.22503,-0.29305 -1.59099,-0.65901c-0.36596,-0.36596 -0.62627,-1.02354 -0.65901,-1.59099v-13.5c0.03274,-0.56745 0.29305,-1.22503 0.65901,-1.59099c0.36596,-0.36596 1.02354,-0.62627 1.59099,-0.65901zM4.18934,6.43934c-0.23024,0.23024 -0.43934,0.70032 -0.43934,1.06066c0,0.36034 0.2091,0.83042 0.43934,1.06066c0.23024,0.23024 0.70032,0.43934 1.06066,0.43934c0.36034,0 0.83042,-0.2091 1.06066,-0.43934c0.23024,-0.23024 0.43934,-0.70032 0.43934,-1.06066c0,-0.36034 -0.2091,-0.83042 -0.43934,-1.06066c-0.23024,-0.23024 -0.70032,-0.43934 -1.06066,-0.43934c-0.36034,0 -0.83042,0.2091 -1.06066,0.43934zM5.2672,7.5c0.00198,0.00659 0.00166,0.01216 -0.00372,0.01034c-0.00055,0.00045 -0.00116,0.0009 -0.0018,0.00135c-0.00044,0.00064 -0.00089,0.00125 -0.00135,0.0018c0.00183,0.00538 -0.00375,0.0057 -0.01034,0.00372c-0.00659,0.00198 -0.01216,0.00166 -0.01034,-0.00372c-0.00045,-0.00055 -0.0009,-0.00116 -0.00135,-0.0018c-0.00064,-0.00044 -0.00125,-0.00089 -0.0018,-0.00135c-0.00538,0.00183 -0.0057,-0.00375 -0.00372,-0.01034c-0.00198,-0.00659 -0.00166,-0.01216 0.00372,-0.01034c0.00055,-0.00045 0.00116,-0.0009 0.0018,-0.00135c0.00044,-0.00064 0.00089,-0.00125 0.00135,-0.0018c0.00008,0.00024 0.00018,0.00049 0.00029,0.00075c0.00123,0.00288 0.00432,0.00701 0.01005,0.01273c0.00572,-0.00572 -0.00778,-0.01658 -0.01034,-0.01348c0,0 0,0 0,0c0.00255,-0.0031 0.00523,-0.00461 0.00721,-0.00264c0.00105,-0.00041 0.0021,-0.00077 0.00312,-0.00108c0.00102,0.00031 0.00207,0.00067 0.00312,0.00108c0.00199,-0.00196 0.00466,-0.00046 0.00721,0.00264c-0.00008,0.00024 -0.00018,0.00049 -0.00029,0.00075c0.00057,0.00034 0.00111,0.00069 0.00163,0.00105c0.00036,0.00052 0.00071,0.00107 0.00105,0.00163c0.00026,-0.00011 0.00051,-0.00021 0.00075,-0.00029c0.00538,-0.00183 0.0057,0.00375 0.00372,0.01034zM4.18934,10.93934c-0.23024,0.23024 -0.43934,0.70032 -0.43934,1.06066c0,0.36034 0.2091,0.83042 0.43934,1.06066c0.23024,0.23024 0.70032,0.43934 1.06066,0.43934c0.36034,0 0.83042,-0.2091 1.06066,-0.43934c0.23024,-0.23024 0.43934,-0.70032 0.43934,-1.06066c0,-0.36034 -0.2091,-0.83042 -0.43934,-1.06066c-0.23024,-0.23024 -0.70032,-0.43934 -1.06066,-0.43934c-0.36034,0 -0.83042,0.2091 -1.06066,0.43934zM5.23652,12.01034c-0.0031,-0.00255 -0.00461,-0.00523 -0.00264,-0.00721c-0.00041,-0.00105 -0.00077,-0.0021 -0.00108,-0.00312c0.00031,-0.00102 0.00067,-0.00207 0.00108,-0.00312c-0.00196,-0.00199 -0.00046,-0.00466 0.00264,-0.00721c0.00024,0.00008 0.00049,0.00018 0.00075,0.00029c0.00034,-0.00057 0.00069,-0.00111 0.00105,-0.00163c0.00052,-0.00036 0.00107,-0.00071 0.00163,-0.00105c-0.00011,-0.00026 -0.00021,-0.00051 -0.00029,-0.00075c0.00255,-0.0031 0.00523,-0.00461 0.00721,-0.00264c0.00105,-0.00041 0.0021,-0.00077 0.00312,-0.00108c0.00102,0.00031 0.00207,0.00067 0.00312,0.00108c0.00199,-0.00196 0.00466,-0.00046 0.00721,0.00264c-0.00008,0.00024 -0.00018,0.00049 -0.00029,0.00075c0.00057,0.00034 0.00111,0.00069 0.00163,0.00105c0.00036,0.00052 0.00071,0.00107 0.00105,0.00163c0.00026,-0.00011 0.00051,-0.00021 0.00075,-0.00029c0.0031,0.00255 0.00461,0.00523 0.00264,0.00721c0.00041,0.00105 0.00077,0.0021 0.00108,0.00312c-0.00031,0.00102 -0.00067,0.00207 -0.00108,0.00312c0.00196,0.00199 0.00046,0.00466 -0.00264,0.00721c-0.00024,-0.00008 -0.00049,-0.00018 -0.00075,-0.00029c-0.00034,0.00057 -0.00069,0.00111 -0.00105,0.00163c-0.00052,0.00036 -0.00107,0.00071 -0.00163,0.00105c0.00011,0.00026 0.00021,0.00051 0.00029,0.00075c-0.00255,0.0031 -0.00523,0.00461 -0.00721,0.00264c-0.00105,0.00041 -0.0021,0.00077 -0.00312,0.00108c-0.00102,-0.00031 -0.00207,-0.00067 -0.00312,-0.00108c-0.00199,0.00196 -0.00466,0.00046 -0.00721,-0.00264c0.00008,-0.00024 0.00018,-0.00049 0.00029,-0.00075c-0.00057,-0.00034 -0.00111,-0.00069 -0.00163,-0.00105c-0.00064,-0.00044 -0.00125,-0.00089 -0.0018,-0.00135zM4.18934,15.43934c-0.23024,0.23024 -0.43934,0.70032 -0.43934,1.06066c0,0.36034 0.2091,0.83042 0.43934,1.06066c0.23024,0.23024 0.70032,0.43934 1.06066,0.43934c0.36034,0 0.83042,-0.2091 1.06066,-0.43934c0.23024,-0.23024 0.43934,-0.70032 0.43934,-1.06066c0,-0.36034 -0.2091,-0.83042 -0.43934,-1.06066c-0.23024,-0.23024 -0.70032,-0.43934 -1.06066,-0.43934c-0.36034,0 -0.83042,0.2091 -1.06066,0.43934zM5.23652,16.51034c-0.0031,-0.00255 -0.00461,-0.00523 -0.00264,-0.00721c-0.00041,-0.00105 -0.00077,-0.0021 -0.00108,-0.00312c0.00031,-0.00102 0.00067,-0.00207 0.00108,-0.00312c-0.00196,-0.00199 -0.00046,-0.00466 0.00264,-0.00721c0.00024,0.00008 0.00049,0.00018 0.00075,0.00029c0.00034,-0.00057 0.00069,-0.00111 0.00105,-0.00163c0.00052,-0.00036 0.00107,-0.00071 0.00163,-0.00105c-0.00011,-0.00026 -0.00021,-0.00051 -0.00029,-0.00075c0.00255,-0.0031 0.00523,-0.00461 0.00721,-0.00264c0.00105,-0.00041 0.0021,-0.00077 0.00312,-0.00108c0.00102,0.00031 0.00207,0.00067 0.00312,0.00108c0.00199,-0.00196 0.00466,-0.00046 0.00721,0.00264c-0.00008,0.00024 -0.00018,0.00049 -0.00029,0.00075c0.00057,0.00034 0.00111,0.00069 0.00163,0.00105c0.00036,0.00052 0.00071,0.00107 0.00105,0.00163c0.00026,-0.00011 0.00051,-0.00021 0.00075,-0.00029c0.0031,0.00255 0.00461,0.00523 0.00264,0.00721c0.00041,0.00105 0.00077,0.0021 0.00108,0.00312c-0.00031,0.00102 -0.00067,0.00207 -0.00108,0.00312c0.00196,0.00199 0.00046,0.00466 -0.00264,0.00721c-0.00024,-0.00008 -0.00049,-0.00018 -0.00075,-0.00029c-0.00034,0.00057 -0.00069,0.00111 -0.00105,0.00163c-0.00052,0.00036 -0.00107,0.00071 -0.00163,0.00105c0.00011,0.00026 0.00021,0.00051 0.00029,0.00075c-0.00255,0.0031 -0.00523,0.00461 -0.00721,0.00264c-0.00105,0.00041 -0.0021,0.00077 -0.00312,0.00108c-0.00102,-0.00031 -0.00207,-0.00067 -0.00312,-0.00108c-0.00199,0.00196 -0.00466,0.00046 -0.00721,-0.00264c0.00008,-0.00024 0.00018,-0.00049 0.00029,-0.00075c-0.00057,-0.00034 -0.00111,-0.00069 -0.00163,-0.00105c-0.00064,-0.00044 -0.00125,-0.00089 -0.0018,-0.00135zM10.5,7.5c0,-0.41421 0.33579,-0.75 0.75,-0.75h9.75c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-9.75c-0.41421,0 -0.75,-0.33579 -0.75,-0.75zM10.5,12c0,-0.41421 0.33579,-0.75 0.75,-0.75h9.75c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-9.75c-0.41421,0 -0.75,-0.33579 -0.75,-0.75zM10.5,16.5c0,-0.41421 0.33579,-0.75 0.75,-0.75h9.75c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-9.75c-0.41421,0 -0.75,-0.33579 -0.75,-0.75z"})})},location:function({size:e=18,...i}){/* @__PURE__ */
828
+ return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M3.75,3h3c0.56745,0.03274 1.22503,0.29305 1.59099,0.65901c0.36596,0.36596 0.62627,1.02354 0.65901,1.59099v13.5c-0.03274,0.56745 -0.29305,1.22503 -0.65901,1.59099c-0.36596,0.36596 -1.02354,0.62627 -1.59099,0.65901h-3c-0.56745,-0.03274 -1.22503,-0.29305 -1.59099,-0.65901c-0.36596,-0.36596 -0.62627,-1.02354 -0.65901,-1.59099v-13.5c0.03274,-0.56745 0.29305,-1.22503 0.65901,-1.59099c0.36596,-0.36596 1.02354,-0.62627 1.59099,-0.65901zM4.18934,6.43934c-0.23024,0.23024 -0.43934,0.70032 -0.43934,1.06066c0,0.36034 0.2091,0.83042 0.43934,1.06066c0.23024,0.23024 0.70032,0.43934 1.06066,0.43934c0.36034,0 0.83042,-0.2091 1.06066,-0.43934c0.23024,-0.23024 0.43934,-0.70032 0.43934,-1.06066c0,-0.36034 -0.2091,-0.83042 -0.43934,-1.06066c-0.23024,-0.23024 -0.70032,-0.43934 -1.06066,-0.43934c-0.36034,0 -0.83042,0.2091 -1.06066,0.43934zM5.2672,7.5c0.00198,0.00659 0.00166,0.01216 -0.00372,0.01034c-0.00055,0.00045 -0.00116,0.0009 -0.0018,0.00135c-0.00044,0.00064 -0.00089,0.00125 -0.00135,0.0018c0.00183,0.00538 -0.00375,0.0057 -0.01034,0.00372c-0.00659,0.00198 -0.01216,0.00166 -0.01034,-0.00372c-0.00045,-0.00055 -0.0009,-0.00116 -0.00135,-0.0018c-0.00064,-0.00044 -0.00125,-0.00089 -0.0018,-0.00135c-0.00538,0.00183 -0.0057,-0.00375 -0.00372,-0.01034c-0.00198,-0.00659 -0.00166,-0.01216 0.00372,-0.01034c0.00055,-0.00045 0.00116,-0.0009 0.0018,-0.00135c0.00044,-0.00064 0.00089,-0.00125 0.00135,-0.0018c0.00008,0.00024 0.00018,0.00049 0.00029,0.00075c0.00123,0.00288 0.00432,0.00701 0.01005,0.01273c0.00572,-0.00572 -0.00778,-0.01658 -0.01034,-0.01348c0,0 0,0 0,0c0.00255,-0.0031 0.00523,-0.00461 0.00721,-0.00264c0.00105,-0.00041 0.0021,-0.00077 0.00312,-0.00108c0.00102,0.00031 0.00207,0.00067 0.00312,0.00108c0.00199,-0.00196 0.00466,-0.00046 0.00721,0.00264c-0.00008,0.00024 -0.00018,0.00049 -0.00029,0.00075c0.00057,0.00034 0.00111,0.00069 0.00163,0.00105c0.00036,0.00052 0.00071,0.00107 0.00105,0.00163c0.00026,-0.00011 0.00051,-0.00021 0.00075,-0.00029c0.00538,-0.00183 0.0057,0.00375 0.00372,0.01034zM4.18934,10.93934c-0.23024,0.23024 -0.43934,0.70032 -0.43934,1.06066c0,0.36034 0.2091,0.83042 0.43934,1.06066c0.23024,0.23024 0.70032,0.43934 1.06066,0.43934c0.36034,0 0.83042,-0.2091 1.06066,-0.43934c0.23024,-0.23024 0.43934,-0.70032 0.43934,-1.06066c0,-0.36034 -0.2091,-0.83042 -0.43934,-1.06066c-0.23024,-0.23024 -0.70032,-0.43934 -1.06066,-0.43934c-0.36034,0 -0.83042,0.2091 -1.06066,0.43934zM5.23652,12.01034c-0.0031,-0.00255 -0.00461,-0.00523 -0.00264,-0.00721c-0.00041,-0.00105 -0.00077,-0.0021 -0.00108,-0.00312c0.00031,-0.00102 0.00067,-0.00207 0.00108,-0.00312c-0.00196,-0.00199 -0.00046,-0.00466 0.00264,-0.00721c0.00024,0.00008 0.00049,0.00018 0.00075,0.00029c0.00034,-0.00057 0.00069,-0.00111 0.00105,-0.00163c0.00052,-0.00036 0.00107,-0.00071 0.00163,-0.00105c-0.00011,-0.00026 -0.00021,-0.00051 -0.00029,-0.00075c0.00255,-0.0031 0.00523,-0.00461 0.00721,-0.00264c0.00105,-0.00041 0.0021,-0.00077 0.00312,-0.00108c0.00102,0.00031 0.00207,0.00067 0.00312,0.00108c0.00199,-0.00196 0.00466,-0.00046 0.00721,0.00264c-0.00008,0.00024 -0.00018,0.00049 -0.00029,0.00075c0.00057,0.00034 0.00111,0.00069 0.00163,0.00105c0.00036,0.00052 0.00071,0.00107 0.00105,0.00163c0.00026,-0.00011 0.00051,-0.00021 0.00075,-0.00029c0.0031,0.00255 0.00461,0.00523 0.00264,0.00721c0.00041,0.00105 0.00077,0.0021 0.00108,0.00312c-0.00031,0.00102 -0.00067,0.00207 -0.00108,0.00312c0.00196,0.00199 0.00046,0.00466 -0.00264,0.00721c-0.00024,-0.00008 -0.00049,-0.00018 -0.00075,-0.00029c-0.00034,0.00057 -0.00069,0.00111 -0.00105,0.00163c-0.00052,0.00036 -0.00107,0.00071 -0.00163,0.00105c0.00011,0.00026 0.00021,0.00051 0.00029,0.00075c-0.00255,0.0031 -0.00523,0.00461 -0.00721,0.00264c-0.00105,0.00041 -0.0021,0.00077 -0.00312,0.00108c-0.00102,-0.00031 -0.00207,-0.00067 -0.00312,-0.00108c-0.00199,0.00196 -0.00466,0.00046 -0.00721,-0.00264c0.00008,-0.00024 0.00018,-0.00049 0.00029,-0.00075c-0.00057,-0.00034 -0.00111,-0.00069 -0.00163,-0.00105c-0.00064,-0.00044 -0.00125,-0.00089 -0.0018,-0.00135zM4.18934,15.43934c-0.23024,0.23024 -0.43934,0.70032 -0.43934,1.06066c0,0.36034 0.2091,0.83042 0.43934,1.06066c0.23024,0.23024 0.70032,0.43934 1.06066,0.43934c0.36034,0 0.83042,-0.2091 1.06066,-0.43934c0.23024,-0.23024 0.43934,-0.70032 0.43934,-1.06066c0,-0.36034 -0.2091,-0.83042 -0.43934,-1.06066c-0.23024,-0.23024 -0.70032,-0.43934 -1.06066,-0.43934c-0.36034,0 -0.83042,0.2091 -1.06066,0.43934zM5.23652,16.51034c-0.0031,-0.00255 -0.00461,-0.00523 -0.00264,-0.00721c-0.00041,-0.00105 -0.00077,-0.0021 -0.00108,-0.00312c0.00031,-0.00102 0.00067,-0.00207 0.00108,-0.00312c-0.00196,-0.00199 -0.00046,-0.00466 0.00264,-0.00721c0.00024,0.00008 0.00049,0.00018 0.00075,0.00029c0.00034,-0.00057 0.00069,-0.00111 0.00105,-0.00163c0.00052,-0.00036 0.00107,-0.00071 0.00163,-0.00105c-0.00011,-0.00026 -0.00021,-0.00051 -0.00029,-0.00075c0.00255,-0.0031 0.00523,-0.00461 0.00721,-0.00264c0.00105,-0.00041 0.0021,-0.00077 0.00312,-0.00108c0.00102,0.00031 0.00207,0.00067 0.00312,0.00108c0.00199,-0.00196 0.00466,-0.00046 0.00721,0.00264c-0.00008,0.00024 -0.00018,0.00049 -0.00029,0.00075c0.00057,0.00034 0.00111,0.00069 0.00163,0.00105c0.00036,0.00052 0.00071,0.00107 0.00105,0.00163c0.00026,-0.00011 0.00051,-0.00021 0.00075,-0.00029c0.0031,0.00255 0.00461,0.00523 0.00264,0.00721c0.00041,0.00105 0.00077,0.0021 0.00108,0.00312c-0.00031,0.00102 -0.00067,0.00207 -0.00108,0.00312c0.00196,0.00199 0.00046,0.00466 -0.00264,0.00721c-0.00024,-0.00008 -0.00049,-0.00018 -0.00075,-0.00029c-0.00034,0.00057 -0.00069,0.00111 -0.00105,0.00163c-0.00052,0.00036 -0.00107,0.00071 -0.00163,0.00105c0.00011,0.00026 0.00021,0.00051 0.00029,0.00075c-0.00255,0.0031 -0.00523,0.00461 -0.00721,0.00264c-0.00105,0.00041 -0.0021,0.00077 -0.00312,0.00108c-0.00102,-0.00031 -0.00207,-0.00067 -0.00312,-0.00108c-0.00199,0.00196 -0.00466,0.00046 -0.00721,-0.00264c0.00008,-0.00024 0.00018,-0.00049 0.00029,-0.00075c-0.00057,-0.00034 -0.00111,-0.00069 -0.00163,-0.00105c-0.00064,-0.00044 -0.00125,-0.00089 -0.0018,-0.00135zM10.5,7.5c0,-0.41421 0.33579,-0.75 0.75,-0.75h9.75c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-9.75c-0.41421,0 -0.75,-0.33579 -0.75,-0.75zM10.5,12c0,-0.41421 0.33579,-0.75 0.75,-0.75h9.75c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-9.75c-0.41421,0 -0.75,-0.33579 -0.75,-0.75zM10.5,16.5c0,-0.41421 0.33579,-0.75 0.75,-0.75h9.75c0.41421,0 0.75,0.33579 0.75,0.75c0,0.41421 -0.33579,0.75 -0.75,0.75h-9.75c-0.41421,0 -0.75,-0.33579 -0.75,-0.75z"})})},"list-none":function({size:e=18,...i}){/* @__PURE__ */
829
+ return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{d:"M8.25 6h12a0.75 0.75 0 0 1 0 1.5h-12a0.75 0.75 0 0 1 0 -1.5ZM8.25 11.25h12a0.75 0.75 0 0 1 0 1.5h-12a0.75 0.75 0 0 1 0 -1.5ZM8.25 16.5h12a0.75 0.75 0 0 1 0 1.5h-12a0.75 0.75 0 0 1 0 -1.5ZM2.9711 17.456L5.9711 6.956A0.75 0.75 0 0 0 4.5289 6.544L1.5289 17.044A0.75 0.75 0 0 0 2.9711 17.456Z"})})},location:function({size:e=18,...i}){/* @__PURE__ */
828
830
  return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"m11.54 22.351.07.04.028.016a.76.76 0 0 0 .723 0l.028-.015.071-.041a16.975 16.975 0 0 0 1.144-.742 19.58 19.58 0 0 0 2.683-2.282c1.944-1.99 3.963-4.98 3.963-8.827a8.25 8.25 0 0 0-16.5 0c0 3.846 2.02 6.837 3.963 8.827a19.58 19.58 0 0 0 2.682 2.282 16.975 16.975 0 0 0 1.145.742ZM12 13.5a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z",clipRule:"evenodd"})})},lock:function({size:e=18,...i}){/* @__PURE__ */
829
831
  return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M12 1.5a5.25 5.25 0 0 0-5.25 5.25v3a3 3 0 0 0-3 3v6.75a3 3 0 0 0 3 3h10.5a3 3 0 0 0 3-3v-6.75a3 3 0 0 0-3-3v-3c0-2.9-2.35-5.25-5.25-5.25Zm3.75 8.25v-3a3.75 3.75 0 1 0-7.5 0v3h7.5Z",clipRule:"evenodd"})})},logo:function({size:e=18,...i}){/* @__PURE__ */
830
832
  return c("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor","aria-hidden":"true",...i,children:/* @__PURE__ */c("path",{fillRule:"evenodd",d:"M6,3h12c0.77456,0.03274 1.61964,0.377 2.12132,0.87868c0.50168,0.50168 0.84594,1.34676 0.87868,2.12132v12c-0.03274,0.77456 -0.377,1.61964 -0.87868,2.12132c-0.50168,0.50168 -1.34676,0.84594 -2.12132,0.87868h-12c-0.77456,-0.03274 -1.61964,-0.377 -2.12132,-0.87868c-0.50168,-0.50168 -0.84594,-1.34676 -0.87868,-2.12132v-12c0.03274,-0.77456 0.377,-1.61964 0.87868,-2.12132c0.50168,-0.50168 1.34676,-0.84594 2.12132,-0.87868zM6.76884,6.76884c-0.43382,0.43382 -0.76884,1.18515 -0.76884,1.85616c0,0.671 0.33502,1.42233 0.76884,1.85616c0.43382,0.43382 1.18515,0.76884 1.85616,0.76884c0.671,0 1.42233,-0.33502 1.85616,-0.76884c0.43382,-0.43382 0.76884,-1.18515 0.76884,-1.85616c0,-0.671 -0.33502,-1.42233 -0.76884,-1.85616c-0.43382,-0.43382 -1.18515,-0.76884 -1.85616,-0.76884c-0.671,0 -1.42233,0.33502 -1.85616,0.76884zM8.625,7.5c0.36453,0 0.5507,0.08471 0.7955,0.3295c0.2448,0.2448 0.3295,0.43096 0.3295,0.7955c0,0.36453 -0.08471,0.5507 -0.3295,0.7955c-0.2448,0.2448 -0.43096,0.3295 -0.7955,0.3295c-0.36453,0 -0.5507,-0.08471 -0.7955,-0.3295c-0.2448,-0.2448 -0.3295,-0.43096 -0.3295,-0.7955c0,-0.36453 0.08471,-0.5507 0.3295,-0.7955c0.2448,-0.2448 0.43096,-0.3295 0.7955,-0.3295zM15.375,6c-0.28408,0 -0.54378,0.1605 -0.67082,0.41459l-1.875,3.75c-0.11625,0.23249 -0.10382,0.5086 0.03283,0.72971c0.13665,0.22111 0.37805,0.3557 0.63799,0.3557h3.75c0.25993,0 0.50133,-0.13459 0.63799,-0.3557c0.13665,-0.22111 0.14908,-0.49722 0.03283,-0.72971l-1.875,-3.75c-0.12704,-0.25409 -0.38674,-0.41459 -0.67082,-0.41459zM15.375,8.42705l0.66147,1.32295l-1.32295,0zM6.43934,13.93934c-0.23024,0.23024 -0.4066,0.70032 -0.43934,1.06066v1.5c0.03274,0.36034 0.2091,0.83042 0.43934,1.06066c0.23024,0.23024 0.70032,0.4066 1.06066,0.43934h9c0.36034,-0.03274 0.83042,-0.2091 1.06066,-0.43934c0.23024,-0.23024 0.4066,-0.70032 0.43934,-1.06066v-1.5c-0.03274,-0.36034 -0.2091,-0.83042 -0.43934,-1.06066c-0.23024,-0.23024 -0.70032,-0.4066 -1.06066,-0.43934h-9c-0.36034,0.03274 -0.83042,0.2091 -1.06066,0.43934zM16.5,15v1.5h-9v-1.5z"})})},logout:function({size:e=18,...i}){/* @__PURE__ */
@@ -253,7 +253,8 @@ declare const efficientIconMeanings: {
253
253
  readonly link: "link";
254
254
  readonly "link-slash": "link-slash";
255
255
  readonly 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.";
256
- readonly "list-format": "WHETHER the lines are a list, and WHICH KIND — the QUESTION, worn by the list row of the one text panel (No list / Bulleted list / Numbered list), in both editors. The answers draw themselves: `list` is Bulleted list and `numbered-list` is Numbered list. The column where a list mark goes is picked out in a frame, so the drawing names the PLACE for a mark, not one kind of mark. NOT `list`, which is the Bulleted list answer (and the Links and Phone order rows). Decided GG 2026-10-15, text panel v3.";
256
+ readonly "list-format": "WHETHER the lines are a list, and WHICH KIND — the QUESTION, worn by the list row of the one text panel (No list / Bulleted list / Numbered list), in both editors. The answers draw themselves: `list-none` is No list, `list` is Bulleted list and `numbered-list` is Numbered list. The column where a list mark goes is picked out in a frame, so the drawing names the PLACE for a mark, not one kind of mark. NOT `list`, which is the Bulleted list answer (and the Links and Phone order rows). Decided GG 2026-10-15, text panel v3.";
257
+ readonly "list-none": "NOT A LIST — the lines are plain lines, with no mark before them. Worn by the `No list` answer of the List row in the one text panel (easel `TextPartPanel`: No list / Bulleted / Numbered), in both editors, where the row's own glyph `list-format` asks the question. `list`'s three lines with ONE SLASH through the empty mark column: the place for a mark, with no mark in it. NOT `list` (Bulleted: dots in that column) and NOT `numbered-list` (Numbered: figures in it). NOT `list-format`, the question, which frames the column. NOT `align-left`, NOT `align-justify` (they say where lines sit) and NOT `text-lines` (the body-text row): those draw no mark column at all. Decided GG 2026-10-16, text panel E2.";
257
258
  readonly 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";
258
259
  readonly lock: "Locked";
259
260
  readonly logo: "a brand mark — the Header panel's Logo tab";
@@ -625,6 +626,7 @@ declare function LinkIcon({ size, ...rest }: EfficientIconProps): react_jsx_runt
625
626
  declare function LinkSlashIcon({ size, ...rest }: EfficientIconProps): react_jsx_runtime.JSX.Element;
626
627
  declare function ListIcon({ size, ...rest }: EfficientIconProps): react_jsx_runtime.JSX.Element;
627
628
  declare function ListFormatIcon({ size, ...rest }: EfficientIconProps): react_jsx_runtime.JSX.Element;
629
+ declare function ListNoneIcon({ size, ...rest }: EfficientIconProps): react_jsx_runtime.JSX.Element;
628
630
  declare function LocationIcon({ size, ...rest }: EfficientIconProps): react_jsx_runtime.JSX.Element;
629
631
  declare function LockIcon({ size, ...rest }: EfficientIconProps): react_jsx_runtime.JSX.Element;
630
632
  declare function LogoIcon({ size, ...rest }: EfficientIconProps): react_jsx_runtime.JSX.Element;
@@ -866,4 +868,4 @@ declare const TriggerIcon: typeof BoltIcon;
866
868
  declare const WheelIcon: typeof TargetIcon;
867
869
  declare const efficient: IconSet;
868
870
 
869
- export { AcademicCapIcon, AccentIcon, AccountCircleIcon, AccountIcon, AddCircleIcon, AddIcon, AddPersonIcon, AdjustIcon, AlignCenterIcon, AlignJustifyIcon, AlignLeftIcon, AlignRightIcon, AlignSeparateIcon, AlignmentIcon, AnchorIcon, AnimationIcon, AppsIcon, ArchiveBoxIcon, ArrowDownIcon, ArrowIcon, ArrowLeftEndOnRectangleIcon, ArrowLeftIcon, ArrowLongRightIcon, ArrowRightIcon, ArrowTrendingDownIcon, ArrowTrendingUpIcon, ArrowUpIcon, ArrowUpRightIcon, AtSymbolIcon, AttachIcon, BackgroundIcon, BagIcon, BankIcon, Bars3BottomLeftIcon, BatteryIcon, BeakerIcon, BellAlertIcon, BellIcon, BellPlusIcon, BillingIcon, BlackAndWhiteIcon, BlockBadgeIcon, BlockBannerIcon, BlockBoxIcon, BlockButtonIcon, BlockColumnIcon, BlockCouponIcon, BlockDividerIcon, BlockFooterIcon, BlockHeadingIcon, BlockImageIcon, BlockIncludedListIcon, BlockLayeredImagesIcon, BlockProductIcon, BlockProductTitleIcon, BlockSectionIcon, BlockSocialIcon, BlockSpacerIcon, BlockTextIcon, BlockVideoIcon, BlogPostIcon, BoldIcon, BoltIcon, BookOpenIcon, BookmarkIcon, BookmarkSquareIcon, BorderAllIcon, BorderBottomIcon, BorderLeftIcon, BorderRightIcon, BorderTopIcon, BracesIcon, BreadcrumbIcon, BriefcaseIcon, BugAntIcon, BugIcon, BuildingLibraryIcon, BuildingOffice2Icon, ButtonArrowIcon, ButtonIcon, ButtonIconIcon, CalculatorIcon, CalendarCheckIcon, CalendarIcon, CameraIcon, CaptionIcon, CarIcon, CardPaymentIcon, CaretIcon, CartIcon, CaseCapitalizedIcon, CaseIcon, CaseLowerIcon, CaseNormalIcon, CaseUpperIcon, CategoryIcon, ChartBarIcon, ChartBarSquareIcon, ChartIcon, ChartLineIcon, ChatBubbleLeftRightIcon, ChatBubbleOvalLeftEllipsisIcon, ChatIcon, CheckCircleIcon, CheckIcon, CheckboxIcon, ChevronDoubleIcon, ChevronDoubleLeftIcon, ChevronDoubleRightIcon, ChevronDownIcon, ChevronIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpDownIcon, ChevronUpIcon, CircleStackIcon, ClearMarksIcon, ClipboardCheckIcon, ClipboardDocumentListIcon, ClipboardIcon, ClipboardListIcon, ClockIcon, CloseCircleIcon, CloseIcon, CloudAlertIcon, CloudArrowUpIcon, CloudCheckIcon, CloudDownloadIcon, CloudIcon, CloudPauseIcon, CloudSlashIcon, CodeBracketIcon, CodeIcon, CollapseAllIcon, CollapseIcon, ColumnGapIcon, ColumnWidthsIcon, ColumnsIcon, CompanyIcon, ComposeIcon, ContrastIcon, CookieIcon, CopiedIcon, CopyIcon, CopyStyleIcon, CopyToPageIcon, CornerIcon, CropIcon, CubeTransparentIcon, CursorArrowRaysIcon, CursorClickIcon, CursorIcon, DashboardIcon, DateIcon, DesktopIcon, DiagramIcon, DirectionDownIcon, DirectionIcon, DirectionLeftIcon, DirectionRightIcon, DirectionUpIcon, DocumentCheckIcon, DocumentIcon, DocumentMagnifyingGlassIcon, DollarIcon, DotIcon, DownloadIcon, DragIcon, DropIcon, DuplicateIcon, EditIcon, type EfficientIconName, type EfficientIconProps, EmailIcon, EmphasisIcon, EraserIcon, ErrorIcon, ExpandIcon, ExternalIcon, EyeIcon, EyeOffIcon, FaceSmileIcon, FilterIcon, FinishIcon, FireIcon, FlagIcon, FolderIcon, FolderOpenIcon, FolderPlusIcon, ForwardIcon, FullWidthIcon, GapIcon, GemIcon, GiftIcon, GlobeIcon, GridIcon, GroundIcon, HandIcon, HandThumbUpIcon, HashIcon, HeadquartersIcon, HeartIcon, HeightIcon, HelpIcon, HelpOffIcon, HexagonIcon, HomeIcon, HoverIcon, IconAfterTextIcon, IconBeforeTextIcon, IdentificationIcon, ImageIcon, ImageOffIcon, ImagesIcon, InboxIcon, InfoIcon, ItalicIcon, KeyIcon, LayersIcon, LayoutIcon, LetterSpacingIcon, LightbulbIcon, LineBetweenIcon, LineDashedIcon, LineDottedIcon, LineSolidIcon, LineSpacingIcon, LineStyleIcon, LinkIcon, LinkSlashIcon, ListFormatIcon, ListIcon, LocationIcon, LockIcon, LogoIcon, LogoutIcon, MapIcon, MediaIcon, MegaphoneIcon, MenuIcon, MetaIcon, MicrophoneIcon, MoneyIcon, MoonIcon, MoreIcon, MoreVerticalIcon, MoveDownIcon, MoveUpIcon, NewspaperIcon, NoSymbolIcon, NoteIcon, NudgeIcon, NumberedListIcon, OpacityIcon, OwnTextIcon, PackageIcon, PackageOpenIcon, PaddingAllIcon, PaddingBottomIcon, PaddingLeftIcon, PaddingLeftRightIcon, PaddingRightIcon, PaddingTopIcon, PaddingXIcon, PaddingYIcon, PageIcon, PaintBrushIcon, PanelLeftIcon, PanelRightIcon, ParagraphSpacingIcon, ParcelIcon, PasteIcon, PasteStyleIcon, PauseIcon, PenIcon, PeopleIcon, PercentIcon, PhoneHiddenIcon, PhoneIcon, PlacementIcon, PlayIcon, PlusMinusIcon, PowerIcon, PresentationChartBarIcon, PrintIcon, ProductFieldIcon, ProductIcon, ProductSizeIcon, ProgressIcon, QuietIcon, RadioDotIcon, RadiusIcon, ReceiptIcon, ReceiptPercentIcon, ReceiptRefundIcon, RectangleGroupIcon, RedoIcon, RefreshIcon, RemoveCircleIcon, RemoveIcon, RenameIcon, ReplyAllIcon, ReplyIcon, RevertIcon, RobotIcon, RotateIcon, ScaleIcon, ScrollPointIcon, ScrollTextIcon, SearchIcon, SelectAllIcon, SendIcon, ServerIcon, SettingsIcon, ShadowIcon, ShapeEllipseIcon, ShapeRectIcon, ShareIcon, ShieldCheckIcon, ShieldExclamationIcon, SidesEachIcon, SignalIcon, SignalSlashIcon, SitemapIcon, SlideArrowsBareIcon, SlideArrowsRoundIcon, SlideArrowsSquareIcon, SlidePickerBarIcon, SlidePickerCardsIcon, SlidePickerDotsIcon, SlidePickerNumbersIcon, SortIcon, SparklesIcon, SpeakerIcon, SpeakerWaveIcon, SpecTableIcon, SpinnerIcon, SplitIcon, SquareIcon, StarIcon, StateIcon, StatusCircleIcon, StatusDotIcon, StickyIcon, StopCircleIcon, StoreIcon, StrikeIcon, StylesIcon, SubscriptIcon, SuccessBurstIcon, SunIcon, SuperscriptIcon, SwapIcon, SwatchIcon, TableIcon, TabletIcon, TabsIcon, TagIcon, TargetIcon, TeamIcon, TelephoneIcon, TemplateIcon, TextColorIcon, TextLinesIcon, TextSizeIcon, TextSmallIcon, TextValueIcon, TextureIcon, ThemeIcon, TicketIcon, TitleIcon, TrashIcon, TriggerIcon, TruckIcon, TvIcon, TypeIcon, TyreIcon, UnderlineIcon, UndoIcon, UploadIcon, VAlignIcon, VerifiedIcon, VideoOffIcon, ViewColumnsIcon, WalletIcon, WarningIcon, WeightIcon, WheelIcon, WidgetsIcon, WidthIcon, WindowIcon, WindowsIcon, WordsFromIcon, WrapIcon, WrenchIcon, WrenchScrewdriverIcon, ZoomInIcon, efficient, efficientIconMeanings };
871
+ export { AcademicCapIcon, AccentIcon, AccountCircleIcon, AccountIcon, AddCircleIcon, AddIcon, AddPersonIcon, AdjustIcon, AlignCenterIcon, AlignJustifyIcon, AlignLeftIcon, AlignRightIcon, AlignSeparateIcon, AlignmentIcon, AnchorIcon, AnimationIcon, AppsIcon, ArchiveBoxIcon, ArrowDownIcon, ArrowIcon, ArrowLeftEndOnRectangleIcon, ArrowLeftIcon, ArrowLongRightIcon, ArrowRightIcon, ArrowTrendingDownIcon, ArrowTrendingUpIcon, ArrowUpIcon, ArrowUpRightIcon, AtSymbolIcon, AttachIcon, BackgroundIcon, BagIcon, BankIcon, Bars3BottomLeftIcon, BatteryIcon, BeakerIcon, BellAlertIcon, BellIcon, BellPlusIcon, BillingIcon, BlackAndWhiteIcon, BlockBadgeIcon, BlockBannerIcon, BlockBoxIcon, BlockButtonIcon, BlockColumnIcon, BlockCouponIcon, BlockDividerIcon, BlockFooterIcon, BlockHeadingIcon, BlockImageIcon, BlockIncludedListIcon, BlockLayeredImagesIcon, BlockProductIcon, BlockProductTitleIcon, BlockSectionIcon, BlockSocialIcon, BlockSpacerIcon, BlockTextIcon, BlockVideoIcon, BlogPostIcon, BoldIcon, BoltIcon, BookOpenIcon, BookmarkIcon, BookmarkSquareIcon, BorderAllIcon, BorderBottomIcon, BorderLeftIcon, BorderRightIcon, BorderTopIcon, BracesIcon, BreadcrumbIcon, BriefcaseIcon, BugAntIcon, BugIcon, BuildingLibraryIcon, BuildingOffice2Icon, ButtonArrowIcon, ButtonIcon, ButtonIconIcon, CalculatorIcon, CalendarCheckIcon, CalendarIcon, CameraIcon, CaptionIcon, CarIcon, CardPaymentIcon, CaretIcon, CartIcon, CaseCapitalizedIcon, CaseIcon, CaseLowerIcon, CaseNormalIcon, CaseUpperIcon, CategoryIcon, ChartBarIcon, ChartBarSquareIcon, ChartIcon, ChartLineIcon, ChatBubbleLeftRightIcon, ChatBubbleOvalLeftEllipsisIcon, ChatIcon, CheckCircleIcon, CheckIcon, CheckboxIcon, ChevronDoubleIcon, ChevronDoubleLeftIcon, ChevronDoubleRightIcon, ChevronDownIcon, ChevronIcon, ChevronLeftIcon, ChevronRightIcon, ChevronUpDownIcon, ChevronUpIcon, CircleStackIcon, ClearMarksIcon, ClipboardCheckIcon, ClipboardDocumentListIcon, ClipboardIcon, ClipboardListIcon, ClockIcon, CloseCircleIcon, CloseIcon, CloudAlertIcon, CloudArrowUpIcon, CloudCheckIcon, CloudDownloadIcon, CloudIcon, CloudPauseIcon, CloudSlashIcon, CodeBracketIcon, CodeIcon, CollapseAllIcon, CollapseIcon, ColumnGapIcon, ColumnWidthsIcon, ColumnsIcon, CompanyIcon, ComposeIcon, ContrastIcon, CookieIcon, CopiedIcon, CopyIcon, CopyStyleIcon, CopyToPageIcon, CornerIcon, CropIcon, CubeTransparentIcon, CursorArrowRaysIcon, CursorClickIcon, CursorIcon, DashboardIcon, DateIcon, DesktopIcon, DiagramIcon, DirectionDownIcon, DirectionIcon, DirectionLeftIcon, DirectionRightIcon, DirectionUpIcon, DocumentCheckIcon, DocumentIcon, DocumentMagnifyingGlassIcon, DollarIcon, DotIcon, DownloadIcon, DragIcon, DropIcon, DuplicateIcon, EditIcon, type EfficientIconName, type EfficientIconProps, EmailIcon, EmphasisIcon, EraserIcon, ErrorIcon, ExpandIcon, ExternalIcon, EyeIcon, EyeOffIcon, FaceSmileIcon, FilterIcon, FinishIcon, FireIcon, FlagIcon, FolderIcon, FolderOpenIcon, FolderPlusIcon, ForwardIcon, FullWidthIcon, GapIcon, GemIcon, GiftIcon, GlobeIcon, GridIcon, GroundIcon, HandIcon, HandThumbUpIcon, HashIcon, HeadquartersIcon, HeartIcon, HeightIcon, HelpIcon, HelpOffIcon, HexagonIcon, HomeIcon, HoverIcon, IconAfterTextIcon, IconBeforeTextIcon, IdentificationIcon, ImageIcon, ImageOffIcon, ImagesIcon, InboxIcon, InfoIcon, ItalicIcon, KeyIcon, LayersIcon, LayoutIcon, LetterSpacingIcon, LightbulbIcon, LineBetweenIcon, LineDashedIcon, LineDottedIcon, LineSolidIcon, LineSpacingIcon, LineStyleIcon, LinkIcon, LinkSlashIcon, ListFormatIcon, ListIcon, ListNoneIcon, LocationIcon, LockIcon, LogoIcon, LogoutIcon, MapIcon, MediaIcon, MegaphoneIcon, MenuIcon, MetaIcon, MicrophoneIcon, MoneyIcon, MoonIcon, MoreIcon, MoreVerticalIcon, MoveDownIcon, MoveUpIcon, NewspaperIcon, NoSymbolIcon, NoteIcon, NudgeIcon, NumberedListIcon, OpacityIcon, OwnTextIcon, PackageIcon, PackageOpenIcon, PaddingAllIcon, PaddingBottomIcon, PaddingLeftIcon, PaddingLeftRightIcon, PaddingRightIcon, PaddingTopIcon, PaddingXIcon, PaddingYIcon, PageIcon, PaintBrushIcon, PanelLeftIcon, PanelRightIcon, ParagraphSpacingIcon, ParcelIcon, PasteIcon, PasteStyleIcon, PauseIcon, PenIcon, PeopleIcon, PercentIcon, PhoneHiddenIcon, PhoneIcon, PlacementIcon, PlayIcon, PlusMinusIcon, PowerIcon, PresentationChartBarIcon, PrintIcon, ProductFieldIcon, ProductIcon, ProductSizeIcon, ProgressIcon, QuietIcon, RadioDotIcon, RadiusIcon, ReceiptIcon, ReceiptPercentIcon, ReceiptRefundIcon, RectangleGroupIcon, RedoIcon, RefreshIcon, RemoveCircleIcon, RemoveIcon, RenameIcon, ReplyAllIcon, ReplyIcon, RevertIcon, RobotIcon, RotateIcon, ScaleIcon, ScrollPointIcon, ScrollTextIcon, SearchIcon, SelectAllIcon, SendIcon, ServerIcon, SettingsIcon, ShadowIcon, ShapeEllipseIcon, ShapeRectIcon, ShareIcon, ShieldCheckIcon, ShieldExclamationIcon, SidesEachIcon, SignalIcon, SignalSlashIcon, SitemapIcon, SlideArrowsBareIcon, SlideArrowsRoundIcon, SlideArrowsSquareIcon, SlidePickerBarIcon, SlidePickerCardsIcon, SlidePickerDotsIcon, SlidePickerNumbersIcon, SortIcon, SparklesIcon, SpeakerIcon, SpeakerWaveIcon, SpecTableIcon, SpinnerIcon, SplitIcon, SquareIcon, StarIcon, StateIcon, StatusCircleIcon, StatusDotIcon, StickyIcon, StopCircleIcon, StoreIcon, StrikeIcon, StylesIcon, SubscriptIcon, SuccessBurstIcon, SunIcon, SuperscriptIcon, SwapIcon, SwatchIcon, TableIcon, TabletIcon, TabsIcon, TagIcon, TargetIcon, TeamIcon, TelephoneIcon, TemplateIcon, TextColorIcon, TextLinesIcon, TextSizeIcon, TextSmallIcon, TextValueIcon, TextureIcon, ThemeIcon, TicketIcon, TitleIcon, TrashIcon, TriggerIcon, TruckIcon, TvIcon, TypeIcon, TyreIcon, UnderlineIcon, UndoIcon, UploadIcon, VAlignIcon, VerifiedIcon, VideoOffIcon, ViewColumnsIcon, WalletIcon, WarningIcon, WeightIcon, WheelIcon, WidgetsIcon, WidthIcon, WindowIcon, WindowsIcon, WordsFromIcon, WrapIcon, WrenchIcon, WrenchScrewdriverIcon, ZoomInIcon, efficient, efficientIconMeanings };