@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
@@ -260,9 +260,6 @@ var colorMap = {
260
260
  white: "bg-background text-foreground",
261
261
  brand: "bg-brand",
262
262
  "brand-muted": "bg-brand-muted text-foreground",
263
- blue: "bg-section-blue",
264
- gray: "bg-section-gray text-foreground",
265
- cream: "bg-section-cream text-foreground",
266
263
  black: "bg-foreground text-background",
267
264
  cta: "bg-cta"
268
265
  };
@@ -356,11 +353,11 @@ function BrutalHero({
356
353
  variant === "centered" && "mx-auto"
357
354
  ), children: description }),
358
355
  /* @__PURE__ */ jsxs("div", { className: cn(
359
- "flex flex-wrap gap-4",
360
- variant === "centered" && "justify-center"
356
+ "flex flex-col gap-4 sm:flex-row sm:flex-wrap",
357
+ variant === "centered" && "sm:justify-center"
361
358
  ), children: [
362
- /* @__PURE__ */ jsx(Button, { variant: ctaVariant, size: "xl", render: /* @__PURE__ */ jsx("a", { href: ctaHref }), children: ctaText }),
363
- secondaryText && /* @__PURE__ */ jsx(Button, { variant: "outline", size: "xl", render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }), children: secondaryText })
359
+ /* @__PURE__ */ jsx(Button, { variant: ctaVariant, size: "xl", className: "w-full sm:w-auto", render: /* @__PURE__ */ jsx("a", { href: ctaHref }), children: ctaText }),
360
+ secondaryText && /* @__PURE__ */ jsx(Button, { variant: "outline", size: "xl", className: "w-full sm:w-auto", render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }), children: secondaryText })
364
361
  ] }),
365
362
  proof && /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-2 text-sm font-medium opacity-70", children: [
366
363
  /* @__PURE__ */ jsx("span", { className: "inline-flex size-5 items-center justify-center border border-current text-xs", children: "\u2713" }),
@@ -497,14 +494,6 @@ function CardContent({ className, ...props }) {
497
494
  }
498
495
  );
499
496
  }
500
- var accentColors = [
501
- "hsl(var(--brand))",
502
- "hsl(var(--cta))",
503
- "hsl(var(--section-blue))",
504
- "hsl(12 85% 62%)",
505
- "hsl(260 55% 68%)",
506
- "hsl(25 75% 48%)"
507
- ];
508
497
  var colMap = {
509
498
  2: "sm:grid-cols-2",
510
499
  3: "sm:grid-cols-2 lg:grid-cols-3",
@@ -522,7 +511,7 @@ function BrutalFeatureGrid({
522
511
  }) {
523
512
  return /* @__PURE__ */ jsxs(BrutalSection, { color, className, children: [
524
513
  /* @__PURE__ */ jsxs("div", { className: "mb-12 max-w-2xl", children: [
525
- badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-muted-foreground", children: badge }),
514
+ badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-brand", children: badge }),
526
515
  /* @__PURE__ */ jsx("h2", { className: "brutal-h2 mb-4", children: headline }),
527
516
  description && /* @__PURE__ */ jsx("p", { className: "brutal-body text-muted-foreground", children: description })
528
517
  ] }),
@@ -538,8 +527,7 @@ function BrutalFeatureGrid({
538
527
  {
539
528
  feature,
540
529
  variant,
541
- index: i,
542
- accentColor: accentColors[i % accentColors.length]
530
+ index: i
543
531
  },
544
532
  feature.title
545
533
  ))
@@ -550,38 +538,23 @@ function BrutalFeatureGrid({
550
538
  function FeatureCard({
551
539
  feature,
552
540
  variant,
553
- index,
554
- accentColor
541
+ index
555
542
  }) {
556
543
  const isBentoFeatured = variant === "bento" && feature.featured;
557
544
  if (variant === "icon-left") {
558
- return /* @__PURE__ */ jsxs(
559
- "div",
560
- {
561
- 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",
562
- style: { borderLeftColor: accentColor, borderLeftWidth: "4px" },
563
- children: [
564
- 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 }),
565
- /* @__PURE__ */ jsxs("div", { children: [
566
- feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
567
- /* @__PURE__ */ jsx("h3", { className: "brutal-h4 mb-1", children: feature.title }),
568
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
569
- ] })
570
- ]
571
- }
572
- );
545
+ 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: [
546
+ 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 }),
547
+ /* @__PURE__ */ jsxs("div", { children: [
548
+ feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
549
+ /* @__PURE__ */ jsx("h3", { className: "brutal-h4 mb-1", children: feature.title }),
550
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
551
+ ] })
552
+ ] });
573
553
  }
574
554
  if (variant === "numbered") {
575
555
  return /* @__PURE__ */ jsxs(Card, { children: [
576
556
  /* @__PURE__ */ jsxs(CardHeader, { children: [
577
- /* @__PURE__ */ jsx(
578
- "span",
579
- {
580
- className: "brutal-display mb-2 block opacity-15",
581
- style: { color: accentColor },
582
- children: String(index + 1).padStart(2, "0")
583
- }
584
- ),
557
+ /* @__PURE__ */ jsx("span", { className: "brutal-display mb-2 block text-brand opacity-20", children: String(index + 1).padStart(2, "0") }),
585
558
  feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
586
559
  /* @__PURE__ */ jsx(CardTitle, { children: feature.title })
587
560
  ] }),
@@ -596,14 +569,7 @@ function FeatureCard({
596
569
  ),
597
570
  children: [
598
571
  /* @__PURE__ */ jsxs(CardHeader, { children: [
599
- feature.icon && /* @__PURE__ */ jsx(
600
- "div",
601
- {
602
- className: "mb-2 inline-flex size-12 items-center justify-center border-brutal border-foreground bg-brand-muted text-2xl shadow-brutal-sm",
603
- style: { borderBottomColor: accentColor },
604
- children: feature.icon
605
- }
606
- ),
572
+ 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 }),
607
573
  feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
608
574
  /* @__PURE__ */ jsx(CardTitle, { children: feature.title })
609
575
  ] }),
@@ -722,7 +688,7 @@ function BrutalTestimonials({
722
688
  headline,
723
689
  testimonials,
724
690
  variant = "masonry",
725
- color = "blue",
691
+ color = "brand-muted",
726
692
  pattern,
727
693
  className
728
694
  }) {
@@ -788,12 +754,13 @@ function CTAButtons({
788
754
  secondaryText,
789
755
  secondaryHref
790
756
  }) {
791
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-4", children: [
757
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:flex-wrap sm:items-center sm:justify-center", children: [
792
758
  /* @__PURE__ */ jsx(
793
759
  Button,
794
760
  {
795
761
  variant: ctaVariant,
796
762
  size: "xl",
763
+ className: "w-full sm:w-auto",
797
764
  render: /* @__PURE__ */ jsx("a", { href: ctaHref }),
798
765
  children: ctaText
799
766
  }
@@ -802,7 +769,8 @@ function CTAButtons({
802
769
  Button,
803
770
  {
804
771
  variant: "outline",
805
- size: "lg",
772
+ size: "xl",
773
+ className: "w-full sm:w-auto",
806
774
  render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }),
807
775
  children: secondaryText
808
776
  }
@@ -832,12 +800,13 @@ function SplitCTA(props) {
832
800
  /* @__PURE__ */ jsx("h2", { className: "brutal-h1 mb-6", children: props.headline }),
833
801
  props.description && /* @__PURE__ */ jsx("p", { className: "brutal-body mb-4 opacity-80", children: props.description }),
834
802
  props.stats && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-8 opacity-60", children: props.stats }),
835
- /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-4", children: [
803
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:flex-wrap", children: [
836
804
  /* @__PURE__ */ jsx(
837
805
  Button,
838
806
  {
839
807
  variant: props.ctaVariant || "cta",
840
808
  size: "xl",
809
+ className: "w-full sm:w-auto",
841
810
  render: /* @__PURE__ */ jsx("a", { href: props.ctaHref || "#" }),
842
811
  children: props.ctaText
843
812
  }
@@ -846,7 +815,8 @@ function SplitCTA(props) {
846
815
  Button,
847
816
  {
848
817
  variant: "outline",
849
- size: "lg",
818
+ size: "xl",
819
+ className: "w-full sm:w-auto",
850
820
  render: /* @__PURE__ */ jsx("a", { href: props.secondaryHref || "#" }),
851
821
  children: props.secondaryText
852
822
  }
@@ -1080,7 +1050,7 @@ function StudioTemplate({
1080
1050
  }
1081
1051
  ),
1082
1052
  testimonials && /* @__PURE__ */ jsxs(Fragment, { children: [
1083
- /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--background))", to: "hsl(var(--section-gray))", variant: "diagonal" }),
1053
+ /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--background))", to: "hsl(var(--brand-muted))", variant: "diagonal" }),
1084
1054
  /* @__PURE__ */ jsx(
1085
1055
  BrutalTestimonials,
1086
1056
  {
@@ -1088,10 +1058,10 @@ function StudioTemplate({
1088
1058
  badge: testimonials.badge,
1089
1059
  headline: testimonials.headline,
1090
1060
  testimonials: testimonials.items,
1091
- color: "gray"
1061
+ color: "brand-muted"
1092
1062
  }
1093
1063
  ),
1094
- /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--section-gray))", to: "hsl(var(--background))", variant: "diagonal", flip: true })
1064
+ /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--brand-muted))", to: "hsl(var(--background))", variant: "diagonal", flip: true })
1095
1065
  ] }),
1096
1066
  newsletter && /* @__PURE__ */ jsx(
1097
1067
  Newsletter,