Skip to content

mrmartineau/kit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

@mrmartineau/kit

A personal collection of sounds, utilities, components, and hooks for use across projects.

Installation

bun add @mrmartineau/kit

This package provides configuration files and static assets only — it does not install the underlying tools. Install whichever tools you actually need in your project:

# Biome (linter + formatter)
bun add -d @biomejs/biome

# oxc (linter + formatter)
bun add -d oxlint oxfmt

# ESLint + Prettier
bun add -d eslint prettier

You don't need all of them — just pick the tools you want to use and reference the matching config from this package.

Project structure

src/
├── biome/        # Shared Biome config
├── eslint/       # Shared ESLint flat config
├── oxfmt/        # Shared oxfmt config
├── oxlint/       # Shared oxlint config
├── prettier/     # Shared Prettier config
├── sounds/       # Static audio assets (.mp3) — not bundled
├── utils/        # Utility functions
├── components/   # Reusable components
├── hooks/        # Reusable hooks
└── scripts/      # Standalone scripts

Usage

Sounds

Sound files are exposed as raw .mp3 files via subpath exports — they are not bundled or transformed. Your bundler or runtime resolves them as static assets.

Import a sound file directly:

// Resolves to the raw .mp3 file in node_modules
import clickSound from '@mrmartineau/kit/sounds/click_001.mp3'

// Use with Audio API
const audio = new Audio(clickSound)
audio.play()

Use the metadata module for programmatic access:

import {
  sounds,
  soundCategories,
  getSoundsByCategory,
  getSoundPath,
} from '@mrmartineau/kit/sounds'

// List all sound names
console.log(sounds)

// Get all sounds in a category
const clickSounds = getSoundsByCategory('click')
// => ["click_001", "click_002", "click_003", "click_004", "click_005"]

Available sound categories: back, bite, bong, boop, buy, click, close, confirmation, disable, drop, enable, error, glass, glitch, maximize, menu, minimize, open, pluck, plunger, pop, question, rising, scratch, scroll, select, switch, tick, toggle

Biome

Shared Biome config for linting and formatting. Biome natively supports extending from packages via its extends field.

In your project's biome.json:

{
  "$schema": "https://biomejs.dev/schemas/2.1.3/schema.json",
  "extends": ["@mrmartineau/kit/biome"]
}

Included settings: space indentation, single quotes, no semicolons, import sorting, sorted keys, recommended lint rules, React domain rules.

oxlint

Shared oxlint config. Reference it via extends in your .oxlintrc.json:

{
  "$schema": "./node_modules/oxlint/configuration_schema.json",
  "extends": ["./node_modules/@mrmartineau/kit/src/oxlint/.oxlintrc.json"]
}

Included settings: correctness (error), suspicious + perf (warn), typescript/unicorn/import/react/jsx-a11y plugins, no-console warn, no-debugger error.

oxfmt

Shared oxfmt config. Reference it when running oxfmt:

oxfmt -c ./node_modules/@mrmartineau/kit/src/oxfmt/.oxfmtrc.json

Or copy the settings into your own .oxfmtrc.json. The settings are kept consistent with the Biome config: single quotes, no semicolons, 2-space indentation, 100 print width.

ESLint

Shared ESLint flat config with sensible base rules (no formatting rules — use Prettier/Biome/oxfmt for that).

In your project's eslint.config.ts (or .js):

import packConfig from '@mrmartineau/kit/eslint'
import { defineConfig } from 'eslint/config'

export default defineConfig([
  {
    files: ['**/*.{ts,tsx,js,jsx}'],
    extends: [packConfig],
  },
])

Included rules: prefer-const, no-var, no-console (warn), no-debugger (error), eqeqeq, object-shorthand, prefer-template, prefer-arrow-callback, curly (multi-line). Add your own TypeScript/React plugins on top.

Prettier

Shared Prettier config. Reference it in your package.json:

{
  "prettier": "@mrmartineau/kit/prettier"
}

Or create a .prettierrc.json:

"@mrmartineau/kit/prettier"

Included settings: single quotes, no semicolons, 2-space indentation, trailing commas, 100 print width.

Utils, Components, Hooks

import { ... } from "@mrmartineau/kit/utils";
import { ... } from "@mrmartineau/kit/components";
import { ... } from "@mrmartineau/kit/hooks";

Exports map

Specifier Resolves to
@mrmartineau/kit src/index.ts
@mrmartineau/kit/biome src/biome/biome.json
@mrmartineau/kit/eslint src/eslint/index.ts
@mrmartineau/kit/oxlint src/oxlint/.oxlintrc.json
@mrmartineau/kit/oxfmt src/oxfmt/.oxfmtrc.json
@mrmartineau/kit/prettier src/prettier/.prettierrc.json
@mrmartineau/kit/sounds src/sounds/index.ts (metadata)
@mrmartineau/kit/sounds/*.mp3 src/sounds/*.mp3 (raw files)
@mrmartineau/kit/utils src/utils/index.ts
@mrmartineau/kit/components src/components/index.ts
@mrmartineau/kit/hooks src/hooks/index.ts

Attribution

Sounds

Sounds by Kenney, licensed under CC0 1.0 and some from use-sound by Josh Comeau

About

A personal collection of sounds, utilities, components, and config for use across projects

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors