# Page snapshot

```yaml
- main [ref=e4]:
  - generic [ref=e6]:
    - complementary
    - generic [ref=e7]:
      - generic [ref=e8]:
        - generic [ref=e11]:
          - link "(<sx>)" [ref=e12] [cursor=pointer]:
            - /url: /sx/
            - generic [ref=e14]: (<sx>)
          - paragraph [ref=e15]: The framework-free reactive hypermedium
          - paragraph [ref=e17]: © Giles Bradshaw 2026· /sx/(geography.(hypermedia.(example.delete-row)))
        - generic [ref=e18]:
          - link "← Etc" [ref=e19] [cursor=pointer]:
            - /url: /sx/(etc)
          - link "Geography" [ref=e20] [cursor=pointer]:
            - /url: /sx/(geography)
          - link "Language →" [ref=e21] [cursor=pointer]:
            - /url: /sx/(language)
        - generic [ref=e22]:
          - link "← Reactive Islands" [ref=e23] [cursor=pointer]:
            - /url: /sx/(geography.(reactive))
          - link "Hypermedia Lakes" [ref=e24] [cursor=pointer]:
            - /url: /sx/(geography.(hypermedia))
          - link "Scopes →" [ref=e25] [cursor=pointer]:
            - /url: /sx/(geography.(scopes))
        - generic [ref=e26]:
          - link "← Reference" [ref=e27] [cursor=pointer]:
            - /url: /sx/(geography.(hypermedia.(reference)))
          - link "Examples" [ref=e28] [cursor=pointer]:
            - /url: /sx/(geography.(hypermedia.(example)))
          - link "Reference →" [ref=e29] [cursor=pointer]:
            - /url: /sx/(geography.(hypermedia.(reference)))
        - generic [ref=e30]:
          - link "← Polling" [ref=e31] [cursor=pointer]:
            - /url: /sx/(geography.(hypermedia.(example.polling)))
          - link "Delete Row" [ref=e32] [cursor=pointer]:
            - /url: /sx/(geography.(hypermedia.(example.delete-row)))
          - link "Inline Edit →" [ref=e33] [cursor=pointer]:
            - /url: /sx/(geography.(hypermedia.(example.inline-edit)))
      - generic [ref=e37]:
        - paragraph [ref=e38]: sx-delete with sx-swap "outerHTML" and an empty response removes the row from the DOM.
        - generic [ref=e40]:
          - generic [ref=e41]:
            - heading "Demo" [level=3] [ref=e42]
            - paragraph [ref=e43]: Click delete to remove a row. Uses sx-confirm for confirmation.
          - table [ref=e47]:
            - rowgroup [ref=e48]:
              - row "Item" [ref=e49]:
                - columnheader "Item" [ref=e50]
                - columnheader [ref=e51]
            - rowgroup [ref=e52]:
              - row "Fix login bug delete" [ref=e53]:
                - cell "Fix login bug" [ref=e54]
                - cell "delete" [ref=e55]:
                  - button "delete" [ref=e56] [cursor=pointer]
              - row "Write documentation delete" [ref=e57]:
                - cell "Write documentation" [ref=e58]
                - cell "delete" [ref=e59]:
                  - button "delete" [ref=e60] [cursor=pointer]
              - row "Deploy to production delete" [ref=e61]:
                - cell "Deploy to production" [ref=e62]
                - cell "delete" [ref=e63]:
                  - button "delete" [ref=e64] [cursor=pointer]
              - row "Add unit tests delete" [ref=e65]:
                - cell "Add unit tests" [ref=e66]
                - cell "delete" [ref=e67]:
                  - button "delete" [ref=e68] [cursor=pointer]
        - heading "S-expression" [level=3] [ref=e69]
        - code [ref=e73]: (button :sx-delete "/sx/(geography.(hypermedia.(example.(api.(delete.1)))))" :sx-target "#row-1" :sx-swap "outerHTML" :sx-confirm "Delete this item?" "delete")
        - heading "Component" [level=3] [ref=e74]
        - code [ref=e79]: (defcomp ~examples/delete-row (id name) (tr :id (str "row-" id) (~tw :tokens "border-b border-stone-100 transition-all") (td (~tw :tokens "px-3 py-2 text-stone-700") name) (td (~tw :tokens "px-3 py-2") (button :sx-delete (str "/sx/(geography.(hypermedia.(example.(api.(delete." id ")))))") :sx-target (str "#row-" id) :sx-swap "outerHTML" :sx-confirm "Delete this item?" (~tw :tokens "text-rose-500 hover:text-rose-700 text-sm") "delete"))))
        - heading "Server handler" [level=3] [ref=e80]
        - code [ref=e84]: (:path "/sx/(geography.(hypermedia.(example.(api.(delete.<sx:item_id>)))))" :method :delete :csrf false ("item-id") (<> (~docs/oob-code :target-id "delete-comp" :text (helper "component-source" "~examples/delete-row")) (~docs/oob-code :target-id "delete-wire" :text "(empty — row removed by outerHTML swap)")))
        - generic [ref=e85]:
          - heading "Wire response" [level=3] [ref=e86]
          - button "Clear component cache" [ref=e87] [cursor=pointer]
        - paragraph [ref=e88]: Empty body — outerHTML swap replaces the target element with nothing.
        - code [ref=e93]: (empty — row removed by outerHTML swap)
```