Skip to content

Instantly share code, notes, and snippets.

View brandonpittman's full-sized avatar

Brandon Pittman brandonpittman

View GitHub Profile
@brandonpittman
brandonpittman / parseDate.js
Last active February 11, 2024 23:32
TextExpander snippet to parse natural language into 'YYYY-MM-DD'
function parse(dateToParse) {
return chrono.parse(dateToParse)
}
function parseDate(dateToParse) {
return chrono.parseDate(dateToParse)
}
window = this;
@brandonpittman
brandonpittman / use-presence-with-tailwind.tsx
Last active February 1, 2024 04:23
`usePresence` with Tailwind animation utilities
import { AnimatePresence, usePresence } from "framer-motion";
import { classNames } from "~/lib/utils/class-names";
import { useCounter } from "@kyleshevlin/use-common";
import { useCallback } from "react";
const Box = ({ count }: { count: number }) => {
const [isPresent, safeToRemove] = usePresence();
const onAnimationEnd = useCallback(() => {
if (!isPresent) safeToRemove();
@brandonpittman
brandonpittman / readFile.js
Created January 23, 2014 07:04
read file with node.js
fs.readFile('test.md', {encoding: 'UTF-8'},function (err, data) {
if (err) throw err;
console.log(data);
});
@brandonpittman
brandonpittman / use-root-data.ts
Created November 30, 2022 04:28
Helper to grab Remix root loader data
import { useRouteData } from "remix-utils";
import type { SerializeFrom } from "@remix-run/server-runtime";
import type { loader } from "~/root";
export let useRootData = () =>
useRouteData<SerializeFrom<typeof loader>>("root");
@brandonpittman
brandonpittman / dracula.fish
Created June 2, 2016 11:51
Dracula colors for fish shell
set -x COMMENT 6272a4
set -x CYAN 8be9fd
set -x GREEN 50fa7b
set -x ORANGE ffb86c
set -x PINK ff79c6
set -x PURPLE bd93f9
set -x RED ff5555
set -x YELLOW f1fa8c
set -U fish_color_autosuggestion $COMMENT
@brandonpittman
brandonpittman / ToggleSpellcheck.vim
Last active November 18, 2022 12:59
Toggle spellcheck on/off in vim
" Toggle spellchecking
function! ToggleSpellCheck()
set spell!
if &spell
echo "Spellcheck ON"
else
echo "Spellcheck OFF"
endif
endfunction
@brandonpittman
brandonpittman / invalid-params.ts
Created November 18, 2022 02:44
Handle invalid SearchParams with Conform
let removeInvalidSearchParams = (
error: unknown,
request: Request,
prefix = "Unrecognized key(s) in object:"
) => {
let unrecongnizedKeysSchema = z.tuple([
z.tuple([z.string().length(0), z.string().startsWith(prefix)]),
]);
let result = unrecongnizedKeysSchema.safeParse(formatError(error));
@brandonpittman
brandonpittman / ProgressiveEnhancement.tsx
Created November 17, 2022 02:05
Progress enhancement helpers/components for Remix
import type { FetcherWithComponents, FormProps } from "@remix-run/react";
import type { ReactElement, ReactNode } from "react";
import { Form } from "@remix-run/react";
import { useHydrated } from "remix-utils";
export let NoJS = ({ children }: { children: ReactElement }) => {
let isHydrated = useHydrated();
if (!isHydrated) {
import {
createPortal as createReactPortal,
unmountComponentAtNode,
} from "react-dom";
import { useState, useCallback, useEffect } from "react";
export let usePortal = (el: Element = document.body) => {
let [portal, setPortal] = useState<{
render: Function;
remove: Function;