@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
@@ -263,9 +263,6 @@ var colorMap = {
263
263
  white: "bg-background text-foreground",
264
264
  brand: "bg-brand",
265
265
  "brand-muted": "bg-brand-muted text-foreground",
266
- blue: "bg-section-blue",
267
- gray: "bg-section-gray text-foreground",
268
- cream: "bg-section-cream text-foreground",
269
266
  black: "bg-foreground text-background",
270
267
  cta: "bg-cta"
271
268
  };
@@ -359,11 +356,11 @@ function BrutalHero({
359
356
  variant === "centered" && "mx-auto"
360
357
  ), children: description }),
361
358
  /* @__PURE__ */ jsxs("div", { className: cn(
362
- "flex flex-wrap gap-4",
363
- variant === "centered" && "justify-center"
359
+ "flex flex-col gap-4 sm:flex-row sm:flex-wrap",
360
+ variant === "centered" && "sm:justify-center"
364
361
  ), children: [
365
- /* @__PURE__ */ jsx(Button, { variant: ctaVariant, size: "xl", render: /* @__PURE__ */ jsx("a", { href: ctaHref }), children: ctaText }),
366
- secondaryText && /* @__PURE__ */ jsx(Button, { variant: "outline", size: "xl", render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }), children: secondaryText })
362
+ /* @__PURE__ */ jsx(Button, { variant: ctaVariant, size: "xl", className: "w-full sm:w-auto", render: /* @__PURE__ */ jsx("a", { href: ctaHref }), children: ctaText }),
363
+ secondaryText && /* @__PURE__ */ jsx(Button, { variant: "outline", size: "xl", className: "w-full sm:w-auto", render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }), children: secondaryText })
367
364
  ] }),
368
365
  proof && /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-2 text-sm font-medium opacity-70", children: [
369
366
  /* @__PURE__ */ jsx("span", { className: "inline-flex size-5 items-center justify-center border border-current text-xs", children: "\u2713" }),
@@ -527,14 +524,6 @@ function CardContent({ className, ...props }) {
527
524
  }
528
525
  );
529
526
  }
530
- var accentColors = [
531
- "hsl(var(--brand))",
532
- "hsl(var(--cta))",
533
- "hsl(var(--section-blue))",
534
- "hsl(12 85% 62%)",
535
- "hsl(260 55% 68%)",
536
- "hsl(25 75% 48%)"
537
- ];
538
527
  var colMap = {
539
528
  2: "sm:grid-cols-2",
540
529
  3: "sm:grid-cols-2 lg:grid-cols-3",
@@ -552,7 +541,7 @@ function BrutalFeatureGrid({
552
541
  }) {
553
542
  return /* @__PURE__ */ jsxs(BrutalSection, { color, className, children: [
554
543
  /* @__PURE__ */ jsxs("div", { className: "mb-12 max-w-2xl", children: [
555
- badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-muted-foreground", children: badge }),
544
+ badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-brand", children: badge }),
556
545
  /* @__PURE__ */ jsx("h2", { className: "brutal-h2 mb-4", children: headline }),
557
546
  description && /* @__PURE__ */ jsx("p", { className: "brutal-body text-muted-foreground", children: description })
558
547
  ] }),
@@ -568,8 +557,7 @@ function BrutalFeatureGrid({
568
557
  {
569
558
  feature,
570
559
  variant,
571
- index: i,
572
- accentColor: accentColors[i % accentColors.length]
560
+ index: i
573
561
  },
574
562
  feature.title
575
563
  ))
@@ -580,38 +568,23 @@ function BrutalFeatureGrid({
580
568
  function FeatureCard({
581
569
  feature,
582
570
  variant,
583
- index,
584
- accentColor
571
+ index
585
572
  }) {
586
573
  const isBentoFeatured = variant === "bento" && feature.featured;
587
574
  if (variant === "icon-left") {
588
- return /* @__PURE__ */ jsxs(
589
- "div",
590
- {
591
- 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",
592
- style: { borderLeftColor: accentColor, borderLeftWidth: "4px" },
593
- children: [
594
- 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 }),
595
- /* @__PURE__ */ jsxs("div", { children: [
596
- feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
597
- /* @__PURE__ */ jsx("h3", { className: "brutal-h4 mb-1", children: feature.title }),
598
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
599
- ] })
600
- ]
601
- }
602
- );
575
+ 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: [
576
+ 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 }),
577
+ /* @__PURE__ */ jsxs("div", { children: [
578
+ feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
579
+ /* @__PURE__ */ jsx("h3", { className: "brutal-h4 mb-1", children: feature.title }),
580
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
581
+ ] })
582
+ ] });
603
583
  }
604
584
  if (variant === "numbered") {
605
585
  return /* @__PURE__ */ jsxs(Card, { children: [
606
586
  /* @__PURE__ */ jsxs(CardHeader, { children: [
607
- /* @__PURE__ */ jsx(
608
- "span",
609
- {
610
- className: "brutal-display mb-2 block opacity-15",
611
- style: { color: accentColor },
612
- children: String(index + 1).padStart(2, "0")
613
- }
614
- ),
587
+ /* @__PURE__ */ jsx("span", { className: "brutal-display mb-2 block text-brand opacity-20", children: String(index + 1).padStart(2, "0") }),
615
588
  feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
616
589
  /* @__PURE__ */ jsx(CardTitle, { children: feature.title })
617
590
  ] }),
@@ -626,14 +599,7 @@ function FeatureCard({
626
599
  ),
627
600
  children: [
628
601
  /* @__PURE__ */ jsxs(CardHeader, { children: [
629
- feature.icon && /* @__PURE__ */ jsx(
630
- "div",
631
- {
632
- className: "mb-2 inline-flex size-12 items-center justify-center border-brutal border-foreground bg-brand-muted text-2xl shadow-brutal-sm",
633
- style: { borderBottomColor: accentColor },
634
- children: feature.icon
635
- }
636
- ),
602
+ 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 }),
637
603
  feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
638
604
  /* @__PURE__ */ jsx(CardTitle, { children: feature.title })
639
605
  ] }),
@@ -813,7 +779,7 @@ function BrutalTestimonials({
813
779
  headline,
814
780
  testimonials,
815
781
  variant = "masonry",
816
- color = "blue",
782
+ color = "brand-muted",
817
783
  pattern,
818
784
  className
819
785
  }) {
@@ -1027,8 +993,8 @@ function FAQ({
1027
993
  className
1028
994
  }) {
1029
995
  return /* @__PURE__ */ jsxs(BrutalSection, { color, className, children: [
1030
- (headline || badge) && /* @__PURE__ */ jsxs("div", { className: "mb-10 max-w-2xl", children: [
1031
- badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-muted-foreground", children: badge }),
996
+ (headline || badge) && /* @__PURE__ */ jsxs("div", { className: "mb-10 mx-auto max-w-2xl", children: [
997
+ badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-brand", children: badge }),
1032
998
  headline && /* @__PURE__ */ jsx("h2", { className: "brutal-h2", children: headline })
1033
999
  ] }),
1034
1000
  /* @__PURE__ */ jsx(Accordion, { className: "mx-auto max-w-2xl", children: items.map((item, i) => /* @__PURE__ */ jsxs(
@@ -1055,12 +1021,13 @@ function CTAButtons({
1055
1021
  secondaryText,
1056
1022
  secondaryHref
1057
1023
  }) {
1058
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-4", children: [
1024
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:flex-wrap sm:items-center sm:justify-center", children: [
1059
1025
  /* @__PURE__ */ jsx(
1060
1026
  Button,
1061
1027
  {
1062
1028
  variant: ctaVariant,
1063
1029
  size: "xl",
1030
+ className: "w-full sm:w-auto",
1064
1031
  render: /* @__PURE__ */ jsx("a", { href: ctaHref }),
1065
1032
  children: ctaText
1066
1033
  }
@@ -1069,7 +1036,8 @@ function CTAButtons({
1069
1036
  Button,
1070
1037
  {
1071
1038
  variant: "outline",
1072
- size: "lg",
1039
+ size: "xl",
1040
+ className: "w-full sm:w-auto",
1073
1041
  render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }),
1074
1042
  children: secondaryText
1075
1043
  }
@@ -1099,12 +1067,13 @@ function SplitCTA(props) {
1099
1067
  /* @__PURE__ */ jsx("h2", { className: "brutal-h1 mb-6", children: props.headline }),
1100
1068
  props.description && /* @__PURE__ */ jsx("p", { className: "brutal-body mb-4 opacity-80", children: props.description }),
1101
1069
  props.stats && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-8 opacity-60", children: props.stats }),
1102
- /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-4", children: [
1070
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:flex-wrap", children: [
1103
1071
  /* @__PURE__ */ jsx(
1104
1072
  Button,
1105
1073
  {
1106
1074
  variant: props.ctaVariant || "cta",
1107
1075
  size: "xl",
1076
+ className: "w-full sm:w-auto",
1108
1077
  render: /* @__PURE__ */ jsx("a", { href: props.ctaHref || "#" }),
1109
1078
  children: props.ctaText
1110
1079
  }
@@ -1113,7 +1082,8 @@ function SplitCTA(props) {
1113
1082
  Button,
1114
1083
  {
1115
1084
  variant: "outline",
1116
- size: "lg",
1085
+ size: "xl",
1086
+ className: "w-full sm:w-auto",
1117
1087
  render: /* @__PURE__ */ jsx("a", { href: props.secondaryHref || "#" }),
1118
1088
  children: props.secondaryText
1119
1089
  }
@@ -1368,7 +1338,7 @@ function SaaSLaunchTemplate({
1368
1338
  }
1369
1339
  ),
1370
1340
  stats && stats.length > 0 && /* @__PURE__ */ jsx(StatsBar, { stats, color: "brand" }),
1371
- /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--brand))", to: "hsl(var(--section-blue))", variant: "torn-paper" }),
1341
+ /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--brand))", to: "hsl(var(--brand-muted))", variant: "torn-paper" }),
1372
1342
  /* @__PURE__ */ jsx(
1373
1343
  BrutalTestimonials,
1374
1344
  {
@@ -1376,10 +1346,10 @@ function SaaSLaunchTemplate({
1376
1346
  badge: testimonials.badge,
1377
1347
  headline: testimonials.headline,
1378
1348
  testimonials: testimonials.items,
1379
- color: "blue"
1349
+ color: "brand-muted"
1380
1350
  }
1381
1351
  ),
1382
- /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--section-blue))", to: "hsl(var(--background))", variant: "wave" }),
1352
+ /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--brand-muted))", to: "hsl(var(--background))", variant: "wave" }),
1383
1353
  pricing && /* @__PURE__ */ jsx(
1384
1354
  PricingTable,
1385
1355
  {
@@ -1391,7 +1361,7 @@ function SaaSLaunchTemplate({
1391
1361
  color: "white"
1392
1362
  }
1393
1363
  ),
1394
- faq && faq.length > 0 && /* @__PURE__ */ jsx(FAQ, { badge: "FAQ", headline: "Common Questions", items: faq, color: "gray" }),
1364
+ faq && faq.length > 0 && /* @__PURE__ */ jsx(FAQ, { badge: "FAQ", headline: "Common Questions", items: faq, color: "white" }),
1395
1365
  /* @__PURE__ */ jsx(
1396
1366
  BrutalCTA,
1397
1367
  {