Skip to content

Instantly share code, notes, and snippets.

View julrich's full-sized avatar
🍋
squeezing!

Jonas Ulrich julrich

🍋
squeezing!
View GitHub Profile
@julrich
julrich / cport.json
Created April 3, 2024 13:35
Conversion result for kickstartDS Schema and cport converter
{
"components": [
{
"id": "headline",
"name": "Headline",
"groups": [
{
"id": "default",
"name": "Default",
"contentTypeId": "headline",
@julrich
julrich / createPresets.test.ts
Last active January 29, 2024 11:58
Storybook "Extraction" revamped
/// <reference types="vite/client"/>
// @vitest-environment happy-dom
import path from "node:path";
import fs from "node:fs";
import fg from "fast-glob";
import { describe, test } from "vitest";
import { ReactRenderer, composeStories } from "@storybook/react";
import { Store_CSFExports } from "@storybook/types";
import reactElementToJSXString from "react-element-to-jsx-string";
@julrich
julrich / csf.patch
Created January 26, 2024 08:24
Add a `gt` operator for array / count controls
diff --git a/node_modules/@storybook/csf/dist/index.mjs b/node_modules/@storybook/csf/dist/index.mjs
index 537d489..3ddcc5f 100644
--- a/node_modules/@storybook/csf/dist/index.mjs
+++ b/node_modules/@storybook/csf/dist/index.mjs
@@ -1,3 +1,3 @@
-var B=Object.create;var R=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var h=Object.getPrototypeOf,w=Object.prototype.hasOwnProperty;var I=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports);var E=(r,e,n,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of C(e))!w.call(r,a)&&a!==n&&R(r,a,{get:()=>e[a],enumerable:!(t=b(e,a))||t.enumerable});return r};var v=(r,e,n)=>(n=r!=null?B(h(r)):{},E(e||!r||!r.__esModule?R(n,"default",{value:r,enumerable:!0}):n,r));var x=I(T=>{Object.defineProperty(T,"__esModule",{value:!0}),T.isEqual=function(){var r=Object.prototype.toString,e=Object.getPrototypeOf,n=Object.getOwnPropertySymbols?function(t){return Object.keys(t).concat(Object.getOwnPropertySymbols(t))}:Object.keys;r
@julrich
julrich / createPlayroomSnippets.js
Created January 25, 2024 17:43
Storybook "Extraction"
const path = require("node:path");
const fs = require("node:fs");
const babelRegister = require("@babel/register");
const registerRequireContextHook = require("@storybook/babel-plugin-require-context-hook/register");
const registerGlobalJSDOM = require("global-jsdom");
const fg = require("fast-glob");
const esbuild = require("esbuild");
const reactElementToJSXString = require("react-element-to-jsx-string");
const { normalizeStories } = require("@storybook/core-common");
const { toRequireContext } = require("@storybook/core-webpack");
@julrich
julrich / 11ty-kds-plugin.js
Created August 15, 2023 20:20
11ty + kickstartDS (Plugin)
const esbuild = require("esbuild");
const { sassPlugin } = require("esbuild-sass-plugin");
const { nodeExternalsPlugin } = require("esbuild-node-externals");
const { renderToStaticMarkup } = require("react-dom/server");
const lightningcss = require("lightningcss");
const browserslistToEsbuild = require("browserslist-to-esbuild");
const browserslist = require("browserslist");
const browsers = browserslist();
const esbuildTargets = browserslistToEsbuild(browsers);
@julrich
julrich / components_Component.js
Last active October 17, 2022 14:55
Usage of `kickstartDS` in `Next.js`
import { createElement, createContext, useContext } from "react";
const ComponentContext = createContext({});
export function createComponentProvider(componentMap) {
return function (props) {
const prevComponentMap = useContext(ComponentContext);
return createElement(ComponentContext.Provider, {
...props,
value: { ...prevComponentMap, ...componentMap },
@julrich
julrich / JourneyContext.tsx
Created September 16, 2022 16:05
Immer.js based state provider in React
import {
createContext,
FC,
PropsWithChildren,
useContext,
useEffect,
} from "react";
import noop from "lodash/noop";
import { Updater, useImmer, History } from "../utils/useImmer";
import { Journey } from "../types/journey";
@julrich
julrich / package.json
Last active May 20, 2022 09:12
Parallel Watch
{
"name": "parallel-watch",
"version": "0.0.1",
"scripts": {
"start": "concurrently -r \"start-storybook -p 6006\" \"yarn watch-tokens\"",
"build-tokens": "kickstartDS tokens compile --cleanup --rc-only",
"watch-tokens": "chokidar \"tokens/*.json\" -c \"yarn build-tokens\""
},
"dependencies": {
"@storybook/addon-actions": "^6.5.3",
@julrich
julrich / .example-demorc.json
Created May 15, 2022 15:39
kickstartDS CLI prompt schema for demo task
{
"definitions": {},
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://kickstartds.com/example-demo.json",
"type": "object",
"title": "kickstartDS Example Demo task",
"required": [
"demo"
],
"properties": {
@julrich
julrich / collectGraphQLFragments.js
Created April 14, 2022 10:06
Collecting Fragments
const GatsbyParser = require('gatsby/dist/query/file-parser').default;
/**
* Collect all graphql fragments from a directory
* @see https://github.com/gatsbyjs/gatsby/issues/12155#issuecomment-618424527
*/
exports.collectGraphQLFragments = async (fragmentNamesToExtract, gqlPath) => {
const parser = new GatsbyParser();
const result = await parser.parseFile(`${gqlPath}/page.fragments.js`);