@snow-labs/brutal-ui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/AGENTS.md +1244 -0
  2. package/dist/components/brutal/cta-section.js +8 -7
  3. package/dist/components/brutal/cta-section.js.map +1 -1
  4. package/dist/components/brutal/faq.d.ts +1 -1
  5. package/dist/components/brutal/faq.js +2 -5
  6. package/dist/components/brutal/faq.js.map +1 -1
  7. package/dist/components/brutal/feature-grid.d.ts +1 -1
  8. package/dist/components/brutal/feature-grid.js +13 -47
  9. package/dist/components/brutal/feature-grid.js.map +1 -1
  10. package/dist/components/brutal/hero.d.ts +1 -1
  11. package/dist/components/brutal/hero.js +4 -7
  12. package/dist/components/brutal/hero.js.map +1 -1
  13. package/dist/components/brutal/index.js +28 -58
  14. package/dist/components/brutal/index.js.map +1 -1
  15. package/dist/components/brutal/integration-grid.d.ts +1 -1
  16. package/dist/components/brutal/integration-grid.js +0 -3
  17. package/dist/components/brutal/integration-grid.js.map +1 -1
  18. package/dist/components/brutal/logo-cloud.d.ts +1 -1
  19. package/dist/components/brutal/logo-cloud.js +0 -3
  20. package/dist/components/brutal/logo-cloud.js.map +1 -1
  21. package/dist/components/brutal/newsletter.d.ts +1 -1
  22. package/dist/components/brutal/newsletter.js +0 -3
  23. package/dist/components/brutal/newsletter.js.map +1 -1
  24. package/dist/components/brutal/pricing-table.d.ts +1 -1
  25. package/dist/components/brutal/pricing-table.js +0 -3
  26. package/dist/components/brutal/pricing-table.js.map +1 -1
  27. package/dist/components/brutal/section.d.ts +1 -1
  28. package/dist/components/brutal/section.js +0 -3
  29. package/dist/components/brutal/section.js.map +1 -1
  30. package/dist/components/brutal/stats-bar.d.ts +1 -1
  31. package/dist/components/brutal/stats-bar.js +0 -3
  32. package/dist/components/brutal/stats-bar.js.map +1 -1
  33. package/dist/components/brutal/testimonials.js +1 -4
  34. package/dist/components/brutal/testimonials.js.map +1 -1
  35. package/dist/components/ui/badge.d.ts +1 -1
  36. package/dist/components/ui/button.d.ts +1 -1
  37. package/dist/components/ui/tabs.d.ts +1 -1
  38. package/dist/index.js +35 -65
  39. package/dist/index.js.map +1 -1
  40. package/dist/templates/index.js +35 -65
  41. package/dist/templates/index.js.map +1 -1
  42. package/dist/templates/saas-launch.js +32 -62
  43. package/dist/templates/saas-launch.js.map +1 -1
  44. package/dist/templates/studio.js +29 -59
  45. package/dist/templates/studio.js.map +1 -1
  46. package/dist/theme.css +5 -15
  47. package/package.json +3 -2
@@ -20,9 +20,6 @@ var colorMap = {
20
20
  white: "bg-background text-foreground",
21
21
  brand: "bg-brand",
22
22
  "brand-muted": "bg-brand-muted text-foreground",
23
- blue: "bg-section-blue",
24
- gray: "bg-section-gray text-foreground",
25
- cream: "bg-section-cream text-foreground",
26
23
  black: "bg-foreground text-background",
27
24
  cta: "bg-cta"
28
25
  };
@@ -229,11 +226,11 @@ function BrutalHero({
229
226
  variant === "centered" && "mx-auto"
230
227
  ), children: description }),
231
228
  /* @__PURE__ */ jsxs("div", { className: cn(
232
- "flex flex-wrap gap-4",
233
- variant === "centered" && "justify-center"
229
+ "flex flex-col gap-4 sm:flex-row sm:flex-wrap",
230
+ variant === "centered" && "sm:justify-center"
234
231
  ), children: [
235
- /* @__PURE__ */ jsx(Button, { variant: ctaVariant, size: "xl", render: /* @__PURE__ */ jsx("a", { href: ctaHref }), children: ctaText }),
236
- secondaryText && /* @__PURE__ */ jsx(Button, { variant: "outline", size: "xl", render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }), children: secondaryText })
232
+ /* @__PURE__ */ jsx(Button, { variant: ctaVariant, size: "xl", className: "w-full sm:w-auto", render: /* @__PURE__ */ jsx("a", { href: ctaHref }), children: ctaText }),
233
+ secondaryText && /* @__PURE__ */ jsx(Button, { variant: "outline", size: "xl", className: "w-full sm:w-auto", render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }), children: secondaryText })
237
234
  ] }),
238
235
  proof && /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-2 text-sm font-medium opacity-70", children: [
239
236
  /* @__PURE__ */ jsx("span", { className: "inline-flex size-5 items-center justify-center border border-current text-xs", children: "\u2713" }),
@@ -313,14 +310,6 @@ function CardContent({ className, ...props }) {
313
310
  }
314
311
  );
315
312
  }
316
- var accentColors = [
317
- "hsl(var(--brand))",
318
- "hsl(var(--cta))",
319
- "hsl(var(--section-blue))",
320
- "hsl(12 85% 62%)",
321
- "hsl(260 55% 68%)",
322
- "hsl(25 75% 48%)"
323
- ];
324
313
  var colMap = {
325
314
  2: "sm:grid-cols-2",
326
315
  3: "sm:grid-cols-2 lg:grid-cols-3",
@@ -338,7 +327,7 @@ function BrutalFeatureGrid({
338
327
  }) {
339
328
  return /* @__PURE__ */ jsxs(BrutalSection, { color, className, children: [
340
329
  /* @__PURE__ */ jsxs("div", { className: "mb-12 max-w-2xl", children: [
341
- badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-muted-foreground", children: badge }),
330
+ badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-brand", children: badge }),
342
331
  /* @__PURE__ */ jsx("h2", { className: "brutal-h2 mb-4", children: headline }),
343
332
  description && /* @__PURE__ */ jsx("p", { className: "brutal-body text-muted-foreground", children: description })
344
333
  ] }),
@@ -354,8 +343,7 @@ function BrutalFeatureGrid({
354
343
  {
355
344
  feature,
356
345
  variant,
357
- index: i,
358
- accentColor: accentColors[i % accentColors.length]
346
+ index: i
359
347
  },
360
348
  feature.title
361
349
  ))
@@ -366,38 +354,23 @@ function BrutalFeatureGrid({
366
354
  function FeatureCard({
367
355
  feature,
368
356
  variant,
369
- index,
370
- accentColor
357
+ index
371
358
  }) {
372
359
  const isBentoFeatured = variant === "bento" && feature.featured;
373
360
  if (variant === "icon-left") {
374
- return /* @__PURE__ */ jsxs(
375
- "div",
376
- {
377
- className: "flex gap-4 border-brutal border-foreground bg-background p-5 shadow-brutal transition-all duration-150 hover:-translate-x-0.5 hover:-translate-y-0.5 hover:shadow-brutal-lg",
378
- style: { borderLeftColor: accentColor, borderLeftWidth: "4px" },
379
- children: [
380
- feature.icon && /* @__PURE__ */ jsx("div", { className: "flex size-12 shrink-0 items-center justify-center border-brutal border-foreground bg-brand-muted text-2xl shadow-brutal-sm", children: feature.icon }),
381
- /* @__PURE__ */ jsxs("div", { children: [
382
- feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
383
- /* @__PURE__ */ jsx("h3", { className: "brutal-h4 mb-1", children: feature.title }),
384
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
385
- ] })
386
- ]
387
- }
388
- );
361
+ return /* @__PURE__ */ jsxs("div", { className: "flex gap-4 border-brutal border-foreground border-l-4 border-l-brand bg-background p-5 shadow-brutal transition-all duration-150 hover:-translate-x-0.5 hover:-translate-y-0.5 hover:shadow-brutal-lg", children: [
362
+ feature.icon && /* @__PURE__ */ jsx("div", { className: "flex size-12 shrink-0 items-center justify-center border-brutal border-foreground bg-brand-muted text-2xl shadow-brutal-sm", children: feature.icon }),
363
+ /* @__PURE__ */ jsxs("div", { children: [
364
+ feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
365
+ /* @__PURE__ */ jsx("h3", { className: "brutal-h4 mb-1", children: feature.title }),
366
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
367
+ ] })
368
+ ] });
389
369
  }
390
370
  if (variant === "numbered") {
391
371
  return /* @__PURE__ */ jsxs(Card, { children: [
392
372
  /* @__PURE__ */ jsxs(CardHeader, { children: [
393
- /* @__PURE__ */ jsx(
394
- "span",
395
- {
396
- className: "brutal-display mb-2 block opacity-15",
397
- style: { color: accentColor },
398
- children: String(index + 1).padStart(2, "0")
399
- }
400
- ),
373
+ /* @__PURE__ */ jsx("span", { className: "brutal-display mb-2 block text-brand opacity-20", children: String(index + 1).padStart(2, "0") }),
401
374
  feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
402
375
  /* @__PURE__ */ jsx(CardTitle, { children: feature.title })
403
376
  ] }),
@@ -412,14 +385,7 @@ function FeatureCard({
412
385
  ),
413
386
  children: [
414
387
  /* @__PURE__ */ jsxs(CardHeader, { children: [
415
- feature.icon && /* @__PURE__ */ jsx(
416
- "div",
417
- {
418
- className: "mb-2 inline-flex size-12 items-center justify-center border-brutal border-foreground bg-brand-muted text-2xl shadow-brutal-sm",
419
- style: { borderBottomColor: accentColor },
420
- children: feature.icon
421
- }
422
- ),
388
+ feature.icon && /* @__PURE__ */ jsx("div", { className: "mb-2 inline-flex size-12 items-center justify-center border-brutal border-foreground border-b-brand bg-brand-muted text-2xl shadow-brutal-sm", children: feature.icon }),
423
389
  feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
424
390
  /* @__PURE__ */ jsx(CardTitle, { children: feature.title })
425
391
  ] }),
@@ -538,7 +504,7 @@ function BrutalTestimonials({
538
504
  headline,
539
505
  testimonials,
540
506
  variant = "masonry",
541
- color = "blue",
507
+ color = "brand-muted",
542
508
  pattern,
543
509
  className
544
510
  }) {
@@ -598,12 +564,13 @@ function CTAButtons({
598
564
  secondaryText,
599
565
  secondaryHref
600
566
  }) {
601
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-4", children: [
567
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:flex-wrap sm:items-center sm:justify-center", children: [
602
568
  /* @__PURE__ */ jsx(
603
569
  Button,
604
570
  {
605
571
  variant: ctaVariant,
606
572
  size: "xl",
573
+ className: "w-full sm:w-auto",
607
574
  render: /* @__PURE__ */ jsx("a", { href: ctaHref }),
608
575
  children: ctaText
609
576
  }
@@ -612,7 +579,8 @@ function CTAButtons({
612
579
  Button,
613
580
  {
614
581
  variant: "outline",
615
- size: "lg",
582
+ size: "xl",
583
+ className: "w-full sm:w-auto",
616
584
  render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }),
617
585
  children: secondaryText
618
586
  }
@@ -642,12 +610,13 @@ function SplitCTA(props) {
642
610
  /* @__PURE__ */ jsx("h2", { className: "brutal-h1 mb-6", children: props.headline }),
643
611
  props.description && /* @__PURE__ */ jsx("p", { className: "brutal-body mb-4 opacity-80", children: props.description }),
644
612
  props.stats && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-8 opacity-60", children: props.stats }),
645
- /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-4", children: [
613
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:flex-wrap", children: [
646
614
  /* @__PURE__ */ jsx(
647
615
  Button,
648
616
  {
649
617
  variant: props.ctaVariant || "cta",
650
618
  size: "xl",
619
+ className: "w-full sm:w-auto",
651
620
  render: /* @__PURE__ */ jsx("a", { href: props.ctaHref || "#" }),
652
621
  children: props.ctaText
653
622
  }
@@ -656,7 +625,8 @@ function SplitCTA(props) {
656
625
  Button,
657
626
  {
658
627
  variant: "outline",
659
- size: "lg",
628
+ size: "xl",
629
+ className: "w-full sm:w-auto",
660
630
  render: /* @__PURE__ */ jsx("a", { href: props.secondaryHref || "#" }),
661
631
  children: props.secondaryText
662
632
  }
@@ -1338,8 +1308,8 @@ function FAQ({
1338
1308
  className
1339
1309
  }) {
1340
1310
  return /* @__PURE__ */ jsxs(BrutalSection, { color, className, children: [
1341
- (headline || badge) && /* @__PURE__ */ jsxs("div", { className: "mb-10 max-w-2xl", children: [
1342
- badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-muted-foreground", children: badge }),
1311
+ (headline || badge) && /* @__PURE__ */ jsxs("div", { className: "mb-10 mx-auto max-w-2xl", children: [
1312
+ badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-brand", children: badge }),
1343
1313
  headline && /* @__PURE__ */ jsx("h2", { className: "brutal-h2", children: headline })
1344
1314
  ] }),
1345
1315
  /* @__PURE__ */ jsx(Accordion, { className: "mx-auto max-w-2xl", children: items.map((item, i) => /* @__PURE__ */ jsxs(