{ "$schema": "https://ui.shadcn.com/schema/registry.json", "name": "byDefaultHuman", "homepage": "https://bydefaulthuman.fun", "items": [ { "name": "font-display", "type": "registry:font", "title": "Caveat", "description": "Handwritten display font for byDefaultHuman labels and annotations.", "font": { "family": "'Caveat Variable', cursive", "provider": "google", "import": "Caveat", "variable": "--font-display", "subsets": ["latin"], "weight": ["400", "500", "600", "700"], "dependency": "@fontsource-variable/caveat" } }, { "name": "crumble-theme", "type": "registry:base", "title": "byDefaultHuman Design System", "description": "Foundational theme, custom CSS variables, and font configuration for Crumble.", "config": { "style": "new-york", "tailwind": { "baseColor": "neutral", "cssVariables": true } }, "dependencies": ["roughjs", "tw-animate-css"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/font-display.json", "utils" ], "cssVars": { "light": { "cr-stroke": "currentColor", "cr-stroke-muted": "color-mix(in srgb, currentColor 40%, transparent)", "cr-stroke-error": "var(--destructive)", "cr-fill": "transparent", "cr-sketch-duration": "600ms", "cr-sketch-easing": "cubic-bezier(0.4, 0, 0.2, 1)", "cr-wiggle-duration": "120ms", "cr-radius": "4px", "cr-weight": "1px", "color-ivory": "oklch(97.22% 0.002 102.31)", "color-sandalwood": "oklch(74.51% 0.15 65.88)", "color-muted-gold": "oklch(84.12% 0.12 80.11)", "color-indigo": "oklch(37% 0.12 260)" }, "dark": { "cr-stroke": "currentColor", "cr-stroke-muted": "color-mix(in srgb, currentColor 40%, transparent)", "cr-stroke-error": "var(--destructive)", "cr-fill": "transparent", "cr-sketch-duration": "600ms", "cr-sketch-easing": "cubic-bezier(0.4, 0, 0.2, 1)", "cr-wiggle-duration": "120ms", "cr-radius": "4px", "cr-weight": "1px", "color-ivory": "oklch(97.22% 0.002 102.31)", "color-sandalwood": "oklch(74.51% 0.15 65.88)", "color-muted-gold": "oklch(84.12% 0.12 80.11)", "color-indigo": "oklch(37% 0.12 260)" } }, "css": { "@layer base": { "[data-crumble-theme='pencil']": { "--cr-weight": "1px", "--cr-sketch-duration": "800ms" }, "[data-crumble-theme='ink']": { "--cr-weight": "2px", "--cr-sketch-duration": "400ms" }, "[data-crumble-theme='crayon']": { "--cr-weight": "3.5px", "--cr-sketch-duration": "600ms" } } } }, { "name": "rough-lib", "type": "registry:lib", "title": "Rough Theme Config", "description": "Core Rough.js theme presets, getRoughOptions, stableSeed, randomSeed, CrumbleContext, and resolveRoughVars. Required by all byDefaultHuman components.", "dependencies": ["roughjs"], "files": [ { "path": "registry/new-york/lib/rough.ts", "type": "registry:lib", "target": "lib/rough.ts" } ] }, { "name": "utils", "type": "registry:lib", "title": "Utils", "description": "cn() helper — clsx + tailwind-merge.", "dependencies": ["clsx", "tailwind-merge"], "files": [ { "path": "registry/new-york/lib/utils.ts", "type": "registry:lib", "target": "lib/utils.ts" } ] }, { "name": "use-rough", "type": "registry:hook", "title": "useRough", "description": "Core Rough.js SVG drawing hook — drawRect, drawLine, drawCircle, drawPath, getOptions, theme-aware.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/hooks/use-rough.ts", "type": "registry:hook", "target": "hooks/use-rough.ts" } ] }, { "name": "rough-arrow", "type": "registry:ui", "title": "RoughArrow", "description": "Hand-drawn curved arrow SVG primitive.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/primitives/rough-arrow.tsx", "type": "registry:ui", "target": "components/crumble/primitives/rough-arrow.tsx" } ] }, { "name": "rough-circle", "type": "registry:ui", "title": "RoughCircle", "description": "Hand-drawn circle SVG primitive.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/primitives/rough-circle.tsx", "type": "registry:ui", "target": "components/crumble/primitives/rough-circle.tsx" } ] }, { "name": "rough-highlight", "type": "registry:ui", "title": "RoughHighlight", "description": "Hand-drawn text annotation — underline, box, circle, highlight, strike-through, bracket.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/primitives/rough-highlight.tsx", "type": "registry:ui", "target": "components/crumble/primitives/rough-highlight.tsx" } ] }, { "name": "rough-line", "type": "registry:ui", "title": "RoughLine", "description": "Hand-drawn horizontal or vertical line primitive.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/primitives/rough-line.tsx", "type": "registry:ui", "target": "components/crumble/primitives/rough-line.tsx" } ] }, { "name": "rough-path", "type": "registry:ui", "title": "RoughPath", "description": "Hand-drawn SVG path primitive for arbitrary d strings.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/primitives/rough-path.tsx", "type": "registry:ui", "target": "components/crumble/primitives/rough-path.tsx" } ] }, { "name": "rough-rect", "type": "registry:ui", "title": "RoughRect", "description": "Hand-drawn rectangle wrapper with optional children.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/primitives/rough-rect.tsx", "type": "registry:ui", "target": "components/crumble/primitives/rough-rect.tsx" } ] }, { "name": "annotation", "type": "registry:ui", "title": "Annotation", "description": "Inline rough callout annotation — box, circle, underline, bracket, arrow-label types.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "utils" ], "files": [ { "path": "registry/new-york/ui/annotation.tsx", "type": "registry:ui", "target": "components/crumble/ui/annotation.tsx" } ] }, { "name": "button", "type": "registry:ui", "title": "Button", "description": "Hand-drawn button with hover redraw animation. Supports default, ghost, and destructive variants.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/ui/button.tsx", "type": "registry:ui", "target": "components/crumble/ui/button.tsx" } ] }, { "name": "card", "type": "registry:ui", "title": "Card", "description": "Hand-drawn card with optional stacked paper effect.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/ui/card.tsx", "type": "registry:ui", "target": "components/crumble/ui/card.tsx" } ] }, { "name": "checkbox", "type": "registry:ui", "title": "Checkbox", "description": "Hand-drawn checkbox with tick animation.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/ui/checkbox.tsx", "type": "registry:ui", "target": "components/crumble/ui/checkbox.tsx" } ] }, { "name": "input", "type": "registry:ui", "title": "Input", "description": "Hand-drawn text input — box or underline style with focus and error states.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/ui/input.tsx", "type": "registry:ui", "target": "components/crumble/ui/input.tsx" } ] }, { "name": "tabs", "type": "registry:ui", "title": "Tabs", "description": "Hand-drawn tabs with rough active-tab underline indicator.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/ui/tabs.tsx", "type": "registry:ui", "target": "components/crumble/ui/tabs.tsx" } ] }, { "name": "callout-arrow", "type": "registry:ui", "title": "CalloutArrow", "description": "Hand-drawn curved arrow connecting two DOM elements via refs. Uses common-ancestor positioning — zero scroll listeners, zero redraws on scroll.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "utils" ], "files": [ { "path": "registry/new-york/ui/callout-arrow.tsx", "type": "registry:ui", "target": "components/crumble/ui/callout-arrow.tsx" } ] }, { "name": "accordion", "type": "registry:ui", "title": "Accordion", "description": "Collapsible sections with rough chevrons and hand-drawn separators.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/accordion.tsx", "type": "registry:ui", "target": "components/crumble/ui/accordion.tsx" } ] }, { "name": "avatar", "type": "registry:ui", "title": "Avatar", "description": "A hand-drawn circle border around a profile image or initials fallback.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/avatar.tsx", "type": "registry:ui", "target": "components/crumble/ui/avatar.tsx" } ] }, { "name": "badge", "type": "registry:ui", "title": "Badge", "description": "A hand-drawn label badge with rough border and semantic variants.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/badge.tsx", "type": "registry:ui", "target": "components/crumble/ui/badge.tsx" } ] }, { "name": "bar-chart", "type": "registry:ui", "title": "Bar Chart", "description": "A hand-drawn bar chart with hachure-filled bars and animated mount.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/bar-chart.tsx", "type": "registry:ui", "target": "components/crumble/ui/bar-chart.tsx" } ] }, { "name": "color-picker", "type": "registry:ui", "title": "Color Picker", "description": "A hand-drawn color picker with preset swatches and editable hex input.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/color-picker.tsx", "type": "registry:ui", "target": "components/crumble/ui/color-picker.tsx" } ] }, { "name": "combobox", "type": "registry:ui", "title": "Combobox", "description": "A searchable hand-drawn select with filtered dropdown and keyboard navigation.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/combobox.tsx", "type": "registry:ui", "target": "components/crumble/ui/combobox.tsx" } ] }, { "name": "dialog", "type": "registry:ui", "title": "Dialog", "description": "A modal dialog using the native browser dialog element with a rough-drawn border that redraws fresh on every open.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/dialog.tsx", "type": "registry:ui", "target": "components/crumble/ui/dialog.tsx" } ] }, { "name": "drawer", "type": "registry:ui", "title": "Drawer", "description": "A panel that slides in from any edge with a rough line on the exposed side.", "dependencies": ["react-dom", "roughjs"], "registryDependencies": [ "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/drawer.tsx", "type": "registry:ui", "target": "components/crumble/ui/drawer.tsx" } ] }, { "name": "file-upload", "type": "registry:ui", "title": "File Upload", "description": "A hand-drawn dropzone that becomes more expressive when a file is dragged over it.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/file-upload.tsx", "type": "registry:ui", "target": "components/crumble/ui/file-upload.tsx" } ] }, { "name": "line-chart", "type": "registry:ui", "title": "Line Chart", "description": "A hand-drawn line chart with Catmull-Rom curves and animated draw-on.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/line-chart.tsx", "type": "registry:ui", "target": "components/crumble/ui/line-chart.tsx" } ] }, { "name": "notebook", "type": "registry:ui", "title": "Notebook", "description": "A hand-drawn lined paper container with ruled lines and a red margin.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/notebook.tsx", "type": "registry:ui", "target": "components/crumble/ui/notebook.tsx" } ] }, { "name": "number-input", "type": "registry:ui", "title": "Number Input", "description": "A hand-drawn number input with rough increment and decrement buttons.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/number-input.tsx", "type": "registry:ui", "target": "components/crumble/ui/number-input.tsx" } ] }, { "name": "otp-input", "type": "registry:ui", "title": "OTP Input", "description": "A row of hand-drawn single-character boxes for one-time passwords.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/otp-input.tsx", "type": "registry:ui", "target": "components/crumble/ui/otp-input.tsx" } ] }, { "name": "pie-chart", "type": "registry:ui", "title": "Pie Chart", "description": "A hand-drawn pie or donut chart with hachure-filled slices and d3-shape arc math.", "dependencies": ["roughjs", "d3-shape"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/pie-chart.tsx", "type": "registry:ui", "target": "components/crumble/ui/pie-chart.tsx" } ] }, { "name": "progress", "type": "registry:ui", "title": "Progress", "description": "A hand-drawn progress bar with animated hachure fill.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/progress.tsx", "type": "registry:ui", "target": "components/crumble/ui/progress.tsx" } ] }, { "name": "radio", "type": "registry:ui", "title": "Radio", "description": "Hand-drawn radio buttons with a filled inner circle when selected.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "utils" ], "files": [ { "path": "registry/new-york/ui/radio.tsx", "type": "registry:ui", "target": "components/crumble/ui/radio.tsx" } ] }, { "name": "rating", "type": "registry:ui", "title": "Rating", "description": "A hand-drawn star rating with hover fill and hachure.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/rating.tsx", "type": "registry:ui", "target": "components/crumble/ui/rating.tsx" } ] }, { "name": "scribble", "type": "registry:ui", "title": "Scribble", "description": "Draw rough freehand scribbles over content for emphasis, redaction, or playful UI effects.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/scribble.tsx", "type": "registry:ui", "target": "components/crumble/ui/scribble.tsx" } ] }, { "name": "select", "type": "registry:ui", "title": "Select", "description": "A hand-drawn select dropdown with a rough chevron indicator.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/ui/select.tsx", "type": "registry:ui", "target": "components/crumble/ui/select.tsx" } ] }, { "name": "separator", "type": "registry:ui", "title": "Separator", "description": "A hand-drawn horizontal or vertical divider line.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/separator.tsx", "type": "registry:ui", "target": "components/crumble/ui/separator.tsx" } ] }, { "name": "slider", "type": "registry:ui", "title": "Slider", "description": "A hand-drawn range slider with a sketchy track and circle thumb.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "utils" ], "files": [ { "path": "registry/new-york/ui/slider.tsx", "type": "registry:ui", "target": "components/crumble/ui/slider.tsx" } ] }, { "name": "sparkline", "type": "registry:ui", "title": "Sparkline", "description": "An inline mini chart that drops naturally into text and table cells.", "dependencies": ["roughjs", "d3-shape", "d3-scale"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/sparkline.tsx", "type": "registry:ui", "target": "components/crumble/ui/sparkline.tsx" } ] }, { "name": "stat-card", "type": "registry:ui", "title": "Stat Card", "description": "A hand-drawn card preset for dashboard metrics with an optional trend arrow.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/stat-card.tsx", "type": "registry:ui", "target": "components/crumble/ui/stat-card.tsx" } ] }, { "name": "sticky-note", "type": "registry:ui", "title": "Sticky Note", "description": "A hand-drawn sticky note with a folded corner and five color variants.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/sticky-note.tsx", "type": "registry:ui", "target": "components/crumble/ui/sticky-note.tsx" } ] }, { "name": "table", "type": "registry:ui", "title": "Table", "description": "A data table where row separators are hand-drawn rough lines instead of CSS borders.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/table.tsx", "type": "registry:ui", "target": "components/crumble/ui/table.tsx" } ] }, { "name": "textarea", "type": "registry:ui", "title": "Textarea", "description": "A hand-drawn textarea with optional auto-grow and resize support.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/ui/textarea.tsx", "type": "registry:ui", "target": "components/crumble/ui/textarea.tsx" } ] }, { "name": "timeline", "type": "registry:ui", "title": "Timeline", "description": "A vertical event list with rough circle nodes and connecting lines.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/timeline.tsx", "type": "registry:ui", "target": "components/crumble/ui/timeline.tsx" } ] }, { "name": "toggle", "type": "registry:ui", "title": "Toggle", "description": "A hand-drawn toggle switch with a sliding circle thumb.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "utils" ], "files": [ { "path": "registry/new-york/ui/toggle.tsx", "type": "registry:ui", "target": "components/crumble/ui/toggle.tsx" } ] }, { "name": "tooltip", "type": "registry:ui", "title": "Tooltip", "description": "A hand-drawn callout that appears on hover with a rough polygon arrow.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json" ], "files": [ { "path": "registry/new-york/ui/tooltip.tsx", "type": "registry:ui", "target": "components/crumble/ui/tooltip.tsx" } ] }, { "name": "activity-feed", "type": "registry:block", "title": "Activity Feed", "description": "A block for displaying a list of recent activities with rough styling.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/avatar.json", "https://www.bydefaulthuman.fun/r/button.json", "https://www.bydefaulthuman.fun/r/badge.json", "https://www.bydefaulthuman.fun/r/card.json", "https://www.bydefaulthuman.fun/r/timeline.json" ], "files": [ { "path": "registry/new-york/blocks/ActivityFeedBlock.tsx", "type": "registry:ui", "target": "components/crumble/blocks/activity-feed.tsx" } ] }, { "name": "feedback-form", "type": "registry:block", "title": "Feedback Form", "description": "A block for collecting user feedback with a rough styling.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/input.json", "https://www.bydefaulthuman.fun/r/button.json", "https://www.bydefaulthuman.fun/r/checkbox.json", "https://www.bydefaulthuman.fun/r/card.json", "https://www.bydefaulthuman.fun/r/textarea.json", "https://www.bydefaulthuman.fun/r/rating.json" ], "files": [ { "path": "registry/new-york/blocks/FeedbackFormBlock.tsx", "type": "registry:ui", "target": "components/crumble/blocks/feedback-form.tsx" } ] }, { "name": "onboarding-stepper", "type": "registry:block", "title": "Onboarding Stepper", "description": "A block for guiding users through an onboarding process with rough styling.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/button.json", "https://www.bydefaulthuman.fun/r/progress.json", "https://www.bydefaulthuman.fun/r/card.json", "https://www.bydefaulthuman.fun/r/timeline.json" ], "files": [ { "path": "registry/new-york/blocks/OnboardingStepperBlock.tsx", "type": "registry:ui", "target": "components/crumble/blocks/onboarding-stepper.tsx" } ] }, { "name": "feedback-form", "type": "registry:block", "title": "Feedback Form", "description": "A block for collecting user feedback with a rough styling.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/input.json", "https://www.bydefaulthuman.fun/r/button.json", "https://www.bydefaulthuman.fun/r/checkbox.json", "https://www.bydefaulthuman.fun/r/card.json", "https://www.bydefaulthuman.fun/r/textarea.json", "https://www.bydefaulthuman.fun/r/rating.json" ], "files": [ { "path": "registry/new-york/blocks/FeedbackFormBlock.tsx", "type": "registry:ui", "target": "components/crumble/blocks/feedback-form.tsx" } ] }, { "name": "metrics-comparison", "type": "registry:block", "title": "Metrics Comparison", "description": "A block for comparing key metrics with a rough styling.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/line-chart.json", "https://www.bydefaulthuman.fun/r/bar-chart.json", "https://www.bydefaulthuman.fun/r/stat-card.json", "https://www.bydefaulthuman.fun/r/tabs.json", "https://www.bydefaulthuman.fun/r/card.json" ], "files": [ { "path": "registry/new-york/blocks/MetricsComparisonBlock.tsx", "type": "registry:ui", "target": "components/crumble/blocks/metrics-comparison.tsx" } ] }, { "name": "notification-center", "type": "registry:block", "title": "Notification Center", "description": "A block for displaying notifications with a rough styling.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/avatar.json", "https://www.bydefaulthuman.fun/r/badge.json", "https://www.bydefaulthuman.fun/r/button.json", "https://www.bydefaulthuman.fun/r/card.json", "https://www.bydefaulthuman.fun/r/seperator.json", "https://www.bydefaulthuman.fun/r/toggle.json" ], "files": [ { "path": "registry/new-york/blocks/NotificationCenterBlock.tsx", "type": "registry:ui", "target": "components/crumble/blocks/notification-center.tsx" } ] }, { "name": "pricing", "type": "registry:block", "title": "Pricing", "description": "A block for displaying pricing information with a rough styling.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/badge.json", "https://www.bydefaulthuman.fun/r/button.json", "https://www.bydefaulthuman.fun/r/card.json", "https://www.bydefaulthuman.fun/r/seperator.json", "https://www.bydefaulthuman.fun/r/rough-highlight.json" ], "files": [ { "path": "registry/new-york/blocks/NotificationCenterBlock.tsx", "type": "registry:ui", "target": "components/crumble/blocks/notification-center.tsx" } ] }, { "name": "profile-card", "type": "registry:block", "title": "Profile Card", "description": "A block for displaying a user's profile information with a rough styling.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/avatar.json", "https://www.bydefaulthuman.fun/r/badge.json", "https://www.bydefaulthuman.fun/r/button.json", "https://www.bydefaulthuman.fun/r/card.json", "https://www.bydefaulthuman.fun/r/tooltip.json", "https://www.bydefaulthuman.fun/r/rough-line.json" ], "files": [ { "path": "registry/new-york/blocks/ProfileCardBlock.tsx", "type": "registry:ui", "target": "components/crumble/blocks/profile-card.tsx" } ] }, { "name": "kanban", "type": "registry:block", "title": "Kanban Board", "description": "A block for displaying a kanban board with a rough styling.", "dependencies": ["roughjs"], "registryDependencies": [ "https://www.bydefaulthuman.fun/r/use-rough.json", "utils", "https://www.bydefaulthuman.fun/r/crumble-theme.json", "https://www.bydefaulthuman.fun/r/rough-lib.json", "https://www.bydefaulthuman.fun/r/avatar.json", "https://www.bydefaulthuman.fun/r/badge.json", "https://www.bydefaulthuman.fun/r/button.json", "https://www.bydefaulthuman.fun/r/card.json", "https://www.bydefaulthuman.fun/r/textarea.json", "https://www.bydefaulthuman.fun/r/tooltip.json", "https://www.bydefaulthuman.fun/r/input.json", "https://www.bydefaulthuman.fun/r/sticky-note.json", "https://www.bydefaulthuman.fun/r/select.json" ], "files": [ { "path": "registry/new-york/blocks/KanbanColumnBlock.tsx", "type": "registry:ui", "target": "components/crumble/blocks/kanban-column.tsx" } ] } ] }