Buckets:
| import { createSignal } from "solid-js" | |
| import { BasicToolV2 } from "./basic-tool-v2" | |
| const docs = `### Overview | |
| Compact collapsible tool row showing title, subtitle, args, and diff changes, with an expand/collapse chevron. | |
| ### API | |
| - \`BasicToolV2\` wraps Kobalte \`Collapsible\`. Pass \`open\`, \`defaultOpen\`, and \`onOpenChange\` for controlled/uncontrolled disclosure. | |
| - \`trigger\` accepts either a \`BasicToolV2TriggerTitle\` object (title, subtitle, args, changes) or arbitrary JSX. | |
| - When \`status\` is \`"pending"\` or \`"running"\`, subtitle/args/chevron hide and the title shows a shimmer animation. | |
| - Pass \`children\` for expandable detail content. | |
| ### Theming | |
| - Uses \`data-component="basic-tool-v2"\` and slot attributes; colors via \`--bt-*\` CSS variables. | |
| ` | |
| export default { | |
| title: "UI V2/BasicTool", | |
| id: "components-basic-tool-v2", | |
| component: BasicToolV2, | |
| tags: ["autodocs"], | |
| parameters: { | |
| frameBackground: "#fff", | |
| layout: "padded", | |
| docs: { | |
| description: { | |
| component: docs, | |
| }, | |
| }, | |
| }, | |
| } | |
| export const Default = { | |
| render: () => ( | |
| <BasicToolV2 | |
| trigger={{ | |
| title: "Read", | |
| subtitle: "src/index.ts", | |
| args: ["lines=1-50"], | |
| changes: { additions: 12, deletions: 3 }, | |
| }} | |
| defaultOpen={false} | |
| > | |
| File content appears here. | |
| </BasicToolV2> | |
| ), | |
| } | |
| export const Expanded = { | |
| render: () => ( | |
| <BasicToolV2 | |
| trigger={{ | |
| title: "Read", | |
| subtitle: "src/index.ts", | |
| args: ["lines=1-50"], | |
| changes: { additions: 12, deletions: 3 }, | |
| }} | |
| defaultOpen={true} | |
| > | |
| File content appears here. | |
| </BasicToolV2> | |
| ), | |
| } | |
| export const Pending = { | |
| render: () => ( | |
| <BasicToolV2 | |
| trigger={{ | |
| title: "Read", | |
| subtitle: "src/index.ts", | |
| args: ["lines=1-50"], | |
| changes: { additions: 12, deletions: 3 }, | |
| }} | |
| status="pending" | |
| /> | |
| ), | |
| } | |
| export const NoChildren = { | |
| render: () => ( | |
| <BasicToolV2 | |
| trigger={{ | |
| title: "Grep", | |
| subtitle: "pattern=TODO", | |
| args: ["recursive=true"], | |
| }} | |
| /> | |
| ), | |
| } | |
| export const CustomTrigger = { | |
| render: () => ( | |
| <BasicToolV2 | |
| trigger={ | |
| <span style={{ color: "#161616", "font-size": "13px", "font-weight": "440" }}>Custom trigger content</span> | |
| } | |
| > | |
| Expandable detail for custom trigger. | |
| </BasicToolV2> | |
| ), | |
| } | |
| export const Controlled = { | |
| render: () => { | |
| const [open, setOpen] = createSignal(false) | |
| return ( | |
| <div style={{ display: "flex", "flex-direction": "column", gap: "16px", "max-width": "420px" }}> | |
| <button | |
| type="button" | |
| onClick={() => setOpen((o) => !o)} | |
| style={{ | |
| padding: "4px 10px", | |
| "font-size": "12px", | |
| "border-radius": "6px", | |
| border: "1px solid rgba(0,0,0,0.15)", | |
| background: "#fff", | |
| color: "#161616", | |
| cursor: "pointer", | |
| }} | |
| > | |
| Toggle from outside: {open() ? "Open" : "Closed"} | |
| </button> | |
| <BasicToolV2 | |
| trigger={{ | |
| title: "Write", | |
| subtitle: "src/utils.ts", | |
| changes: { additions: 8, deletions: 2 }, | |
| }} | |
| open={open()} | |
| onOpenChange={setOpen} | |
| > | |
| Controlled content. | |
| </BasicToolV2> | |
| </div> | |
| ) | |
| }, | |
| } | |
Xet Storage Details
- Size:
- 3.41 kB
- Xet hash:
- 1fbe08dc086e4a4815b62b95eb9a7d6e5f19711dd2413d9e08ef1175ddf752e8
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.