---
title: "Open Source | Bret Oreta"
canonical_url: "https://bretoreta.me/open-source"
last_updated: "2026-10-27T23:50:39.354Z"
meta:
  description: "MIT-licensed Vue components and tools by Bret Oreta, built for the community. No paywalls, no telemetry."
  "og:description": "MIT-licensed Vue components and tools by Bret Oreta, built for the community. No paywalls, no telemetry."
  "og:title": "Open Source"
---

**Open source**

# **Tools I build for the **community.

Focused packages I use in production, shared under MIT. No paywalls, no telemetry, no open-core bait — just components I wanted to exist.

**v0.1.0****MIT****Vue 3.5+****0 dependencies**

**Package **

**pullcord-vue**

A ceiling pull-cord theme switch

**v0.1.0 **

bun add pullcord-vue

## **pullcord-vue **

A ceiling pull-cord for Vue 3 with a real rope. Grab it, pull it, and it swings back — a theme switch with actual physics. This site uses it.

### **A real rope**

Verlet nodes and distance constraints. It hangs under gravity, swings when grabbed, and goes to sleep when it settles — so an idle cord costs nothing.

### **Accessible by default**

A real button with click and Enter support, aria-pressed state, and a focus ring. The drop-in and the pull gesture are disabled under reduced motion.

### **Small surface area**

One component, one CSS file, zero runtime dependencies. Vue 3.5+ is the only peer dependency. MIT licensed, forever.

**Credit:** a Vue port of [**pullcord**](https://github.com/mortspace/pullcord) by iisac. The physics, geometry and timing are carried over; the Vue plumbing, pointer handling and per-instance SVG ids are new.

**Install **

`bun add pullcord-vue`

**Use it **

```
<script setup lang="ts">
import { PullCord } from 'pullcord-vue'
import 'pullcord-vue/pullcord.css'

const light = ref(false)
</script>

<template>
  <PullCord :pulled="light" @pull="light = !light" />
</template>
```

[**View on npm **](https://www.npmjs.com/package/pullcord-vue) [** Source **](https://github.com/bretoreta/pullcord-vue)

Desktop note: this portfolio uses the package as its theme switch. Pull the cord in the top-right corner.

## **Need something custom?**

I build production components and design systems for teams. If you need a piece that does not exist yet, let's talk.

[** Or send an email **](https://bretoreta.me/contact)