// Decorative doodles — small inline SVGs to sprinkle through the UI.
// All Notion-friendly: hand-drawn feel, single-stroke, slightly imperfect.
// Export to window.Doodles.
const D = ({ children, w = 24, h = 24, className = '', style = {}, color = 'currentColor', ...rest }) => (
);
const Doodles = {
// four-point sparkle
Sparkle: ({ size = 18, color, className, style }) => (
),
// wavy underline
Scribble: ({ w = 80, h = 12, color, className, style }) => (
),
// dashed swoosh arc
DashedSwoosh: ({ w = 90, h = 30, color, className, style }) => (
),
// sun-burst radial lines from a tiny dot
Burst: ({ size = 28, color, className, style }) => (
{Array.from({ length: 8 }).map((_, i) => {
const a = (i * Math.PI * 2) / 8;
const x1 = 14 + Math.cos(a) * 5; const y1 = 14 + Math.sin(a) * 5;
const x2 = 14 + Math.cos(a) * 10; const y2 = 14 + Math.sin(a) * 10;
return ;
})}
),
// soft squiggle (looks like 〰)
Squiggle: ({ w = 60, h = 16, color, className, style }) => (
),
// a small bouncing dot constellation
Constellation: ({ w = 80, h = 40, color, className, style }) => (
),
// arrow that loops (like Notion "look here")
ArrowLoop: ({ w = 64, h = 56, color, className, style, flip = false }) => (
),
// 3 dots
ThreeDots: ({ color, className, style }) => (
),
// a tiny "highlighter" rect behind text
Highlighter: ({ w = 110, h = 14, color, className, style }) => (
),
};
// Floating sparkle field — random small marks within a parent box. Pure decorative.
function SparkleField({ count = 5, color = 'oklch(0.55 0.18 280)', seed = 7, className = '' }) {
// deterministic positions
let s = seed;
const rand = () => { s = (s * 9301 + 49297) % 233280; return s / 233280; };
return (
{Array.from({ length: count }).map((_, i) => {
const left = (rand() * 100).toFixed(1) + '%';
const top = (rand() * 100).toFixed(1) + '%';
const size = 10 + Math.round(rand() * 14);
const rot = (rand() * 360).toFixed(0);
const op = 0.4 + rand() * 0.5;
return (
);
})}
);
}
window.Doodles = Doodles;
window.SparkleField = SparkleField;