| 852 | } |
| 853 | |
| 854 | function buildClassStyleSection(): HTMLDivElement { |
| 855 | const sel = mkInput("selector", ".badge"); |
| 856 | sel.style.width = "80px"; |
| 857 | const prop = mkInput("prop", "background"); |
| 858 | prop.style.width = "90px"; |
| 859 | const val = mkInput("value", "#8b5cf6"); |
| 860 | val.style.width = "90px"; |
| 861 | const apply = mkBtn("Apply", "primary", () => { |
| 862 | const selector = sel.value.trim(); |
| 863 | const styles = { [prop.value.trim()]: val.value.trim() || null }; |
| 864 | comp!.dispatch({ type: "setClassStyle", selector, styles }); |
| 865 | logEntry("op", { setClassStyle: { selector, ...styles } }); |
| 866 | }); |
| 867 | return opSection("setClassStyle", opRow(sel, prop, val, apply)); |
| 868 | } |
| 869 | |
| 870 | function buildAttributeSection(): HTMLDivElement { |
| 871 | const name = mkInput("name", "data-custom"); |