diff options
| author | Jay V <[email protected]> | 2025-06-27 15:31:10 -0400 |
|---|---|---|
| committer | Jay V <[email protected]> | 2025-06-27 19:10:42 -0400 |
| commit | 289797f56dbe7a7b51bc74ef8413da1a41a1b95b (patch) | |
| tree | b6800b1b21629c177648363fea2261b6366e2bf2 /packages/web/src | |
| parent | be0811ecc30bb8a4fef14111437aacf6fa51fe27 (diff) | |
| download | opencode-289797f56dbe7a7b51bc74ef8413da1a41a1b95b.tar.gz opencode-289797f56dbe7a7b51bc74ef8413da1a41a1b95b.zip | |
docs: share cleanup title
Diffstat (limited to 'packages/web/src')
| -rw-r--r-- | packages/web/src/components/Share.tsx | 122 | ||||
| -rw-r--r-- | packages/web/src/components/share.module.css | 34 |
2 files changed, 89 insertions, 67 deletions
diff --git a/packages/web/src/components/Share.tsx b/packages/web/src/components/Share.tsx index e8879c50a..b48d04662 100644 --- a/packages/web/src/components/Share.tsx +++ b/packages/web/src/components/Share.tsx @@ -859,59 +859,15 @@ export default function Share(props: { <h1>{store.info?.title}</h1> </div> <div data-section="row"> - <ul data-section="stats"> - <li> - <span data-element-label>Cost</span> - {data().cost !== undefined ? ( - <span>${data().cost.toFixed(2)}</span> - ) : ( - <span data-placeholder>—</span> - )} - </li> - <li> - <span data-element-label>Input Tokens</span> - {data().tokens.input ? ( - <span>{data().tokens.input}</span> - ) : ( - <span data-placeholder>—</span> - )} - </li> - <li> - <span data-element-label>Output Tokens</span> - {data().tokens.output ? ( - <span>{data().tokens.output}</span> - ) : ( - <span data-placeholder>—</span> - )} - </li> - <li> - <span data-element-label>Reasoning Tokens</span> - {data().tokens.reasoning ? ( - <span>{data().tokens.reasoning}</span> - ) : ( - <span data-placeholder>—</span> - )} - </li> - </ul> - <Show when={data().rootDir}> - <ul data-section="stats" data-section-root> - <li title="Project root"> - <div data-stat-icon> - <IconFolder width={16} height={16} /> - </div> - <span>{data().rootDir}</span> - </li> - <li title="opencode version"> - <div data-stat-icon title="opencode"> - <IconOpencode width={16} height={16} /> - </div> - <Show when={store.info?.version} fallback="v0.0.1"> - <span>v{store.info?.version}</span> - </Show> - </li> - </ul> - </Show> <ul data-section="stats" data-section-models> + <li title="opencode version"> + <div data-stat-icon title="opencode"> + <IconOpencode width={16} height={16} /> + </div> + <Show when={store.info?.version} fallback="v0.0.1"> + <span>v{store.info?.version}</span> + </Show> + </li> {Object.values(data().models).length > 0 ? ( <For each={Object.values(data().models)}> {([provider, model]) => ( @@ -1305,12 +1261,12 @@ export default function Share(props: { > {(_part) => { const path = createMemo(() => - toolData()?.args.path !== data().rootDir + toolData()?.args?.path !== data().rootDir ? stripWorkingDirectory( - toolData()?.args.path, + toolData()?.args?.path, data().rootDir, ) - : toolData()?.args.path, + : toolData()?.args?.path, ) return ( @@ -1332,7 +1288,9 @@ export default function Share(props: { <div data-part-tool-body> <div data-part-title> <span data-element-label>LS</span> - <b>{path()}</b> + <b title={toolData()?.args?.path}> + {path()} + </b> </div> <Switch> <Match when={toolData()?.result}> @@ -1375,7 +1333,7 @@ export default function Share(props: { {(_part) => { const filePath = createMemo(() => stripWorkingDirectory( - toolData()?.args.filePath, + toolData()?.args?.filePath, data().rootDir, ), ) @@ -1398,7 +1356,9 @@ export default function Share(props: { <div data-part-tool-body> <div data-part-title> <span data-element-label>Read</span> - <b>{filePath()}</b> + <b title={toolData()?.args?.filePath}> + {filePath()} + </b> </div> <Switch> <Match when={hasError()}> @@ -1499,7 +1459,9 @@ export default function Share(props: { <div data-part-tool-body> <div data-part-title> <span data-element-label>Write</span> - <b>{filePath()}</b> + <b title={toolData()?.args?.filePath}> + {filePath()} + </b> </div> <Show when={diagnostics().length > 0}> <ErrorPart>{diagnostics()}</ErrorPart> @@ -1586,7 +1548,9 @@ export default function Share(props: { <div data-part-tool-body> <div data-part-title> <span data-element-label>Edit</span> - <b>{filePath()}</b> + <b title={toolData()?.args?.filePath}> + {filePath()} + </b> </div> <Switch> <Match when={hasError()}> @@ -1935,13 +1899,47 @@ export default function Share(props: { </For> )} </For> - <div data-section="part" data-part-type="connection-status"> + <div data-section="part" data-part-type="summary"> <div data-section="decoration"> <span data-status={connectionStatus()[0]}></span> <div></div> </div> <div data-section="content"> - <span>{getStatusText(connectionStatus())}</span> + <p data-section="copy">{getStatusText(connectionStatus())}</p> + <ul data-section="stats"> + <li> + <span data-element-label>Cost</span> + {data().cost !== undefined ? ( + <span>${data().cost.toFixed(2)}</span> + ) : ( + <span data-placeholder>—</span> + )} + </li> + <li> + <span data-element-label>Input Tokens</span> + {data().tokens.input ? ( + <span>{data().tokens.input}</span> + ) : ( + <span data-placeholder>—</span> + )} + </li> + <li> + <span data-element-label>Output Tokens</span> + {data().tokens.output ? ( + <span>{data().tokens.output}</span> + ) : ( + <span data-placeholder>—</span> + )} + </li> + <li> + <span data-element-label>Reasoning Tokens</span> + {data().tokens.reasoning ? ( + <span>{data().tokens.reasoning}</span> + ) : ( + <span data-placeholder>—</span> + )} + </li> + </ul> </div> </div> </div> diff --git a/packages/web/src/components/share.module.css b/packages/web/src/components/share.module.css index a52fd1765..41b257dad 100644 --- a/packages/web/src/components/share.module.css +++ b/packages/web/src/components/share.module.css @@ -89,7 +89,7 @@ padding: 0; margin: 0; display: flex; - gap: 0.5rem 1rem; + gap: 0.5rem 0.875rem; flex-wrap: wrap; li { @@ -104,8 +104,7 @@ } } - [data-section="stats"][data-section-root], - [data-section="stats"][data-section-models] { + [data-section="stats"] { li { gap: 0.3125rem; @@ -375,7 +374,7 @@ } } } - [data-part-type="connection-status"] { + [data-part-type="summary"] { & > [data-section="decoration"] { span:first-child { flex: 0 0 auto; @@ -405,12 +404,37 @@ } & > [data-section="content"] { - span { + display: flex; + flex-direction: column; + gap: 0.5rem; + + p[data-section="copy"] { display: block; line-height: 18px; font-size: 0.875rem; color: var(--sl-color-text-dimmed); } + + [data-section="stats"] { + list-style-type: none; + padding: 0; + margin: 0; + display: flex; + gap: 0.5rem 0.875rem; + flex-wrap: wrap; + + li { + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 0.75rem; + color: var(--sl-color-text-secondary); + + span[data-placeholder] { + color: var(--sl-color-text-dimmed); + } + } + } } } } |
