|
1 | 1 | import { useState } from "react"; |
2 | | -import { Card, PageHeader, CopyButton, s } from "./shared/index.jsx"; |
| 2 | +import { Card, PageHeader, CopyButton, Checkbox, s } from "./shared/index.jsx"; |
3 | 3 |
|
4 | 4 | export default function SedGenerator() { |
5 | 5 | const [mode, setMode] = useState("substitute"); |
@@ -94,21 +94,13 @@ export default function SedGenerator() { |
94 | 94 | {mode === "substitute" && ( |
95 | 95 | <div style={{ display: "flex", gap: 16, marginTop: "1rem", flexWrap: "wrap" }}> |
96 | 96 | {[{ key: "g", label: "Global (-g)" }, { key: "i", label: "Case-insensitive (-I)" }, { key: "p", label: "Print matches (-p)" }, { key: "n", label: "Silent mode (-n)" }].map(({ key, label }) => ( |
97 | | - <label key={key} style={{ display: "flex", alignItems: "center", gap: 7, cursor: "pointer", fontSize: "var(--sm)", color: flags[key] ? "var(--green)" : "var(--text-muted)", userSelect: "none" }}> |
98 | | - <div onClick={() => setFlags((f) => ({ ...f, [key]: !f[key] }))} |
99 | | - style={{ width: 17, height: 17, border: `1px solid ${flags[key] ? "var(--green)" : "var(--border-2)"}`, borderRadius: 3, background: flags[key] ? "var(--green-bg)" : "var(--bg)", display: "flex", alignItems: "center", justifyContent: "center", fontSize: 10, color: flags[key] ? "var(--green)" : "transparent", fontFamily: "var(--font-mono)", fontWeight: 700, flexShrink: 0 }}>✓</div> |
100 | | - {label} |
101 | | - </label> |
| 97 | + <Checkbox key={key} checked={!!flags[key]} onChange={() => setFlags((f) => ({ ...f, [key]: !f[key] }))} label={label} /> |
102 | 98 | ))} |
103 | 99 | </div> |
104 | 100 | )} |
105 | 101 |
|
106 | 102 | <div style={{ display: "flex", alignItems: "center", gap: 12, marginTop: "1rem" }}> |
107 | | - <label style={{ display: "flex", alignItems: "center", gap: 7, cursor: "pointer", fontSize: "var(--sm)", color: inPlace ? "var(--green)" : "var(--text-muted)", userSelect: "none" }}> |
108 | | - <div onClick={() => setInPlace((v) => !v)} |
109 | | - style={{ width: 17, height: 17, border: `1px solid ${inPlace ? "var(--green)" : "var(--border-2)"}`, borderRadius: 3, background: inPlace ? "var(--green-bg)" : "var(--bg)", display: "flex", alignItems: "center", justifyContent: "center", fontSize: 10, color: inPlace ? "var(--green)" : "transparent", fontFamily: "var(--font-mono)", fontWeight: 700, flexShrink: 0 }}>✓</div> |
110 | | - In-place edit (-i) |
111 | | - </label> |
| 103 | + <Checkbox checked={inPlace} onChange={() => setInPlace((v) => !v)} label="In-place edit (-i)" /> |
112 | 104 | {inPlace && ( |
113 | 105 | <input value={backup} onChange={(e) => setBackup(e.target.value)} placeholder=".bak" |
114 | 106 | style={{ ...s.monoInput, width: 100, fontSize: "var(--sm)" }} /> |
|
0 commit comments