
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@noodleseed/marbles
Advanced tools
Beautiful animated marble/bubble gradient components for React. Create stunning, deterministic marble avatars with automatic color harmony generation from any brand colors.
npm install @noodleseed/marbles
import { Marble } from '@noodleseed/marbles'
// Basic usage with automatic color harmony
<Marble seed="user@example.com" />
// With brand color - generates triadic harmony automatically
<Marble
seed="john.doe"
color="#3b82f6"
size={120}
/>
// Different harmony types
<Marble
seed="analogous-marble"
color="#ef4444"
harmonyType="analogous"
size={150}
/>
// Multiple brand colors
<Marble
seed="multi-color"
color={["#3b82f6", "#ef4444", "#10b981"]}
size={140}
/>
// Animated marble with custom harmony
<Marble
seed="animated-marble"
color="#8b5cf6"
harmonyType="complementary"
size={150}
animated={true}
/>
// Spinning marble with monochromatic harmony
<Marble
seed="spinning-marble"
color="#f59e0b"
harmonyType="monochromatic"
size={120}
rotate={true}
/>
// Custom border styling
<Marble
seed="custom-border"
color="#ec4899"
size={120}
borderWidth={15}
borderColor="#fbbf24"
/>
// Fallback to variant when no color provided
<Marble
seed="fallback-example"
variant="secondary"
size={100}
/>
| Prop | Type | Default | Description |
|---|---|---|---|
size | number | 100 | Size of the marble in pixels |
seed | string | "default" | Seed string for deterministic generation |
className | string | "" | Additional CSS classes to apply |
color | string | string[] | undefined | Brand color(s) for harmony generation |
harmonyType | "triadic" | "analogous" | "complementary" | "monochromatic" | "triadic" | Type of color harmony to generate |
variant | "primary" | "secondary" | "tertiary" | "primary" | Fallback variant when no color provided |
blendMode | string | "multiply" | CSS blend mode for bubble layering |
animated | boolean | false | Whether to enable gentle animations |
rotate | boolean | false | Whether to enable spinning rotation |
borderWidth | number | 30 | Width of the border (0-30, 0 = no border) |
borderColor | string | "rgba(255, 255, 255, 1)" | Color of the border (any CSS color format) |
The marble component automatically generates beautiful color harmonies from your brand colors using color theory principles:
Creates a vibrant, balanced palette using colors 120° apart on the color wheel:
<Marble color="#3b82f6" harmonyType="triadic" />
// Generates: Blue → Red-Orange → Yellow-Green
Creates a harmonious, natural palette using adjacent colors:
<Marble color="#ef4444" harmonyType="analogous" />
// Generates: Red → Red-Orange → Orange
Creates high contrast using opposite colors on the color wheel:
<Marble color="#10b981" harmonyType="complementary" />
// Generates: Green → Red-Purple → Light Green
Creates a sophisticated palette using different shades of the same hue:
<Marble color="#8b5cf6" harmonyType="monochromatic" />
// Generates: Purple → Light Purple → Dark Purple
You can provide multiple brand colors for more complex harmonies:
// Uses provided colors directly
<Marble color={["#3b82f6", "#ef4444", "#10b981"]} />
// Generates harmony from first color if more than 3 provided
<Marble color={["#3b82f6", "#ef4444", "#10b981", "#f59e0b"]} />
The system includes robust color validation:
When no color prop is provided, the system uses predefined variants:
#00bec1, #4dd0e1, #80deea#fbc0c4, #f8bbd9, #f48fb1#e0f7fa)#fbc0c4, #f8bbd9, #f48fb1#ad9db5, #ce93d8, #ba68c8#fce4ec)#ad9db5, #ce93d8, #ba68c8#00bec1, #4dd0e1, #80deea#f3e5f5)Generate avatars that match your brand colors:
import { Marble } from "@noodleseed/marbles";
const BrandAvatar = ({ user, brandColor }) => (
<Marble
seed={user.email}
color={brandColor}
harmonyType="triadic"
size={64}
className="border-2 border-white shadow-lg"
/>
);
// Usage with different brand colors
<BrandAvatar user={user} brandColor="#3b82f6" /> // Blue theme
<BrandAvatar user={user} brandColor="#ef4444" /> // Red theme
<BrandAvatar user={user} brandColor="#10b981" /> // Green theme
Use different harmony types for different categories:
const CategoryIcon = ({ category }) => {
const harmonyMap = {
tech: "triadic",
design: "analogous",
business: "complementary",
personal: "monochromatic",
};
return (
<Marble
seed={category.name}
color={category.brandColor}
harmonyType={harmonyMap[category.type]}
size={48}
animated={true}
/>
);
};
Create galleries with consistent harmony across different brands:
const BrandGallery = ({ brands }) => (
<div className="flex gap-4">
{brands.map((brand) => (
<Marble
key={brand.id}
seed={brand.name}
color={brand.primaryColor}
harmonyType="triadic"
size={80}
animated={true}
className="hover:scale-110 transition-transform"
/>
))}
</div>
);
Perfect for companies going through rebranding:
// Before rebrand
<Marble seed="company" color="#ff6b6b" harmonyType="triadic" />
// After rebrand - same seed, new colors
<Marble seed="company" color="#3b82f6" harmonyType="triadic" />
// Maintains same bubble pattern but with new brand colors!
The package includes full TypeScript support:
import { Marble, MarbleProps } from "@noodleseed/marbles";
const CustomMarble: React.FC<MarbleProps> = (props) => {
return <Marble {...props} />;
};
// Type-safe harmony types
type HarmonyType = "triadic" | "analogous" | "complementary" | "monochromatic";
When animated={true}:
When rotate={true}:
animated={true}Each bubble uses one of 5 different gradient patterns for visual variety:
Control how bubble layers interact:
<Marble
color="#3b82f6"
blendMode="overlay" // High contrast
/>
<Marble
color="#ef4444"
blendMode="soft-light" // Subtle blending
/>
<Marble
color="#10b981"
blendMode="multiply" // Default, rich colors
/>
Same seed + same color always produces identical results:
// These will always look identical
<Marble seed="user123" color="#3b82f6" />
<Marble seed="user123" color="#3b82f6" />
// Different seed = different pattern, same colors
<Marble seed="user456" color="#3b82f6" />
Works in all modern browsers that support:
The new color system is backward compatible:
// v1.3.x - still works
<Marble variant="primary" seed="user" />
// v1.4.x - new color system
<Marble color="#3b82f6" seed="user" />
MIT © NoodleSeed
Issues and pull requests are welcome! Please visit our GitHub repository.
FAQs
Beautiful animated marble/bubble gradient components for React
The npm package @noodleseed/marbles receives a total of 0 weekly downloads. As such, @noodleseed/marbles popularity was classified as not popular.
We found that @noodleseed/marbles demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.