@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
package/dist/index.js CHANGED
@@ -2900,9 +2900,6 @@ var colorMap = {
2900
2900
  white: "bg-background text-foreground",
2901
2901
  brand: "bg-brand",
2902
2902
  "brand-muted": "bg-brand-muted text-foreground",
2903
- blue: "bg-section-blue",
2904
- gray: "bg-section-gray text-foreground",
2905
- cream: "bg-section-cream text-foreground",
2906
2903
  black: "bg-foreground text-background",
2907
2904
  cta: "bg-cta"
2908
2905
  };
@@ -3053,11 +3050,11 @@ function BrutalHero({
3053
3050
  variant === "centered" && "mx-auto"
3054
3051
  ), children: description }),
3055
3052
  /* @__PURE__ */ jsxs("div", { className: cn(
3056
- "flex flex-wrap gap-4",
3057
- variant === "centered" && "justify-center"
3053
+ "flex flex-col gap-4 sm:flex-row sm:flex-wrap",
3054
+ variant === "centered" && "sm:justify-center"
3058
3055
  ), children: [
3059
- /* @__PURE__ */ jsx(Button, { variant: ctaVariant, size: "xl", render: /* @__PURE__ */ jsx("a", { href: ctaHref }), children: ctaText }),
3060
- secondaryText && /* @__PURE__ */ jsx(Button, { variant: "outline", size: "xl", render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }), children: secondaryText })
3056
+ /* @__PURE__ */ jsx(Button, { variant: ctaVariant, size: "xl", className: "w-full sm:w-auto", render: /* @__PURE__ */ jsx("a", { href: ctaHref }), children: ctaText }),
3057
+ secondaryText && /* @__PURE__ */ jsx(Button, { variant: "outline", size: "xl", className: "w-full sm:w-auto", render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }), children: secondaryText })
3061
3058
  ] }),
3062
3059
  proof && /* @__PURE__ */ jsxs("p", { className: "flex items-center gap-2 text-sm font-medium opacity-70", children: [
3063
3060
  /* @__PURE__ */ jsx("span", { className: "inline-flex size-5 items-center justify-center border border-current text-xs", children: "\u2713" }),
@@ -3081,14 +3078,6 @@ function BrutalHero({
3081
3078
  ] })
3082
3079
  ] });
3083
3080
  }
3084
- var accentColors = [
3085
- "hsl(var(--brand))",
3086
- "hsl(var(--cta))",
3087
- "hsl(var(--section-blue))",
3088
- "hsl(12 85% 62%)",
3089
- "hsl(260 55% 68%)",
3090
- "hsl(25 75% 48%)"
3091
- ];
3092
3081
  var colMap = {
3093
3082
  2: "sm:grid-cols-2",
3094
3083
  3: "sm:grid-cols-2 lg:grid-cols-3",
@@ -3106,7 +3095,7 @@ function BrutalFeatureGrid({
3106
3095
  }) {
3107
3096
  return /* @__PURE__ */ jsxs(BrutalSection, { color, className, children: [
3108
3097
  /* @__PURE__ */ jsxs("div", { className: "mb-12 max-w-2xl", children: [
3109
- badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-muted-foreground", children: badge }),
3098
+ badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-brand", children: badge }),
3110
3099
  /* @__PURE__ */ jsx("h2", { className: "brutal-h2 mb-4", children: headline }),
3111
3100
  description && /* @__PURE__ */ jsx("p", { className: "brutal-body text-muted-foreground", children: description })
3112
3101
  ] }),
@@ -3122,8 +3111,7 @@ function BrutalFeatureGrid({
3122
3111
  {
3123
3112
  feature,
3124
3113
  variant,
3125
- index: i,
3126
- accentColor: accentColors[i % accentColors.length]
3114
+ index: i
3127
3115
  },
3128
3116
  feature.title
3129
3117
  ))
@@ -3134,38 +3122,23 @@ function BrutalFeatureGrid({
3134
3122
  function FeatureCard({
3135
3123
  feature,
3136
3124
  variant,
3137
- index,
3138
- accentColor
3125
+ index
3139
3126
  }) {
3140
3127
  const isBentoFeatured = variant === "bento" && feature.featured;
3141
3128
  if (variant === "icon-left") {
3142
- return /* @__PURE__ */ jsxs(
3143
- "div",
3144
- {
3145
- 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",
3146
- style: { borderLeftColor: accentColor, borderLeftWidth: "4px" },
3147
- children: [
3148
- 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 }),
3149
- /* @__PURE__ */ jsxs("div", { children: [
3150
- feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
3151
- /* @__PURE__ */ jsx("h3", { className: "brutal-h4 mb-1", children: feature.title }),
3152
- /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
3153
- ] })
3154
- ]
3155
- }
3156
- );
3129
+ 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: [
3130
+ 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 }),
3131
+ /* @__PURE__ */ jsxs("div", { children: [
3132
+ feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
3133
+ /* @__PURE__ */ jsx("h3", { className: "brutal-h4 mb-1", children: feature.title }),
3134
+ /* @__PURE__ */ jsx("p", { className: "text-sm text-muted-foreground", children: feature.description })
3135
+ ] })
3136
+ ] });
3157
3137
  }
3158
3138
  if (variant === "numbered") {
3159
3139
  return /* @__PURE__ */ jsxs(Card, { children: [
3160
3140
  /* @__PURE__ */ jsxs(CardHeader, { children: [
3161
- /* @__PURE__ */ jsx(
3162
- "span",
3163
- {
3164
- className: "brutal-display mb-2 block opacity-15",
3165
- style: { color: accentColor },
3166
- children: String(index + 1).padStart(2, "0")
3167
- }
3168
- ),
3141
+ /* @__PURE__ */ jsx("span", { className: "brutal-display mb-2 block text-brand opacity-20", children: String(index + 1).padStart(2, "0") }),
3169
3142
  feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
3170
3143
  /* @__PURE__ */ jsx(CardTitle, { children: feature.title })
3171
3144
  ] }),
@@ -3180,14 +3153,7 @@ function FeatureCard({
3180
3153
  ),
3181
3154
  children: [
3182
3155
  /* @__PURE__ */ jsxs(CardHeader, { children: [
3183
- feature.icon && /* @__PURE__ */ jsx(
3184
- "div",
3185
- {
3186
- className: "mb-2 inline-flex size-12 items-center justify-center border-brutal border-foreground bg-brand-muted text-2xl shadow-brutal-sm",
3187
- style: { borderBottomColor: accentColor },
3188
- children: feature.icon
3189
- }
3190
- ),
3156
+ 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 }),
3191
3157
  feature.stat && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-1 text-brand", children: feature.stat }),
3192
3158
  /* @__PURE__ */ jsx(CardTitle, { children: feature.title })
3193
3159
  ] }),
@@ -3306,7 +3272,7 @@ function BrutalTestimonials({
3306
3272
  headline,
3307
3273
  testimonials,
3308
3274
  variant = "masonry",
3309
- color = "blue",
3275
+ color = "brand-muted",
3310
3276
  pattern,
3311
3277
  className
3312
3278
  }) {
@@ -3366,12 +3332,13 @@ function CTAButtons({
3366
3332
  secondaryText,
3367
3333
  secondaryHref
3368
3334
  }) {
3369
- return /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center justify-center gap-4", children: [
3335
+ return /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:flex-wrap sm:items-center sm:justify-center", children: [
3370
3336
  /* @__PURE__ */ jsx(
3371
3337
  Button,
3372
3338
  {
3373
3339
  variant: ctaVariant,
3374
3340
  size: "xl",
3341
+ className: "w-full sm:w-auto",
3375
3342
  render: /* @__PURE__ */ jsx("a", { href: ctaHref }),
3376
3343
  children: ctaText
3377
3344
  }
@@ -3380,7 +3347,8 @@ function CTAButtons({
3380
3347
  Button,
3381
3348
  {
3382
3349
  variant: "outline",
3383
- size: "lg",
3350
+ size: "xl",
3351
+ className: "w-full sm:w-auto",
3384
3352
  render: /* @__PURE__ */ jsx("a", { href: secondaryHref || "#" }),
3385
3353
  children: secondaryText
3386
3354
  }
@@ -3410,12 +3378,13 @@ function SplitCTA(props) {
3410
3378
  /* @__PURE__ */ jsx("h2", { className: "brutal-h1 mb-6", children: props.headline }),
3411
3379
  props.description && /* @__PURE__ */ jsx("p", { className: "brutal-body mb-4 opacity-80", children: props.description }),
3412
3380
  props.stats && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-8 opacity-60", children: props.stats }),
3413
- /* @__PURE__ */ jsxs("div", { className: "flex flex-wrap gap-4", children: [
3381
+ /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-4 sm:flex-row sm:flex-wrap", children: [
3414
3382
  /* @__PURE__ */ jsx(
3415
3383
  Button,
3416
3384
  {
3417
3385
  variant: props.ctaVariant || "cta",
3418
3386
  size: "xl",
3387
+ className: "w-full sm:w-auto",
3419
3388
  render: /* @__PURE__ */ jsx("a", { href: props.ctaHref || "#" }),
3420
3389
  children: props.ctaText
3421
3390
  }
@@ -3424,7 +3393,8 @@ function SplitCTA(props) {
3424
3393
  Button,
3425
3394
  {
3426
3395
  variant: "outline",
3427
- size: "lg",
3396
+ size: "xl",
3397
+ className: "w-full sm:w-auto",
3428
3398
  render: /* @__PURE__ */ jsx("a", { href: props.secondaryHref || "#" }),
3429
3399
  children: props.secondaryText
3430
3400
  }
@@ -3907,8 +3877,8 @@ function FAQ({
3907
3877
  className
3908
3878
  }) {
3909
3879
  return /* @__PURE__ */ jsxs(BrutalSection, { color, className, children: [
3910
- (headline || badge) && /* @__PURE__ */ jsxs("div", { className: "mb-10 max-w-2xl", children: [
3911
- badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-muted-foreground", children: badge }),
3880
+ (headline || badge) && /* @__PURE__ */ jsxs("div", { className: "mb-10 mx-auto max-w-2xl", children: [
3881
+ badge && /* @__PURE__ */ jsx("p", { className: "brutal-label mb-4 text-brand", children: badge }),
3912
3882
  headline && /* @__PURE__ */ jsx("h2", { className: "brutal-h2", children: headline })
3913
3883
  ] }),
3914
3884
  /* @__PURE__ */ jsx(Accordion, { className: "mx-auto max-w-2xl", children: items.map((item, i) => /* @__PURE__ */ jsxs(
@@ -4774,7 +4744,7 @@ function SaaSLaunchTemplate({
4774
4744
  }
4775
4745
  ),
4776
4746
  stats && stats.length > 0 && /* @__PURE__ */ jsx(StatsBar, { stats, color: "brand" }),
4777
- /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--brand))", to: "hsl(var(--section-blue))", variant: "torn-paper" }),
4747
+ /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--brand))", to: "hsl(var(--brand-muted))", variant: "torn-paper" }),
4778
4748
  /* @__PURE__ */ jsx(
4779
4749
  BrutalTestimonials,
4780
4750
  {
@@ -4782,10 +4752,10 @@ function SaaSLaunchTemplate({
4782
4752
  badge: testimonials.badge,
4783
4753
  headline: testimonials.headline,
4784
4754
  testimonials: testimonials.items,
4785
- color: "blue"
4755
+ color: "brand-muted"
4786
4756
  }
4787
4757
  ),
4788
- /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--section-blue))", to: "hsl(var(--background))", variant: "wave" }),
4758
+ /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--brand-muted))", to: "hsl(var(--background))", variant: "wave" }),
4789
4759
  pricing && /* @__PURE__ */ jsx(
4790
4760
  PricingTable,
4791
4761
  {
@@ -4797,7 +4767,7 @@ function SaaSLaunchTemplate({
4797
4767
  color: "white"
4798
4768
  }
4799
4769
  ),
4800
- faq && faq.length > 0 && /* @__PURE__ */ jsx(FAQ, { badge: "FAQ", headline: "Common Questions", items: faq, color: "gray" }),
4770
+ faq && faq.length > 0 && /* @__PURE__ */ jsx(FAQ, { badge: "FAQ", headline: "Common Questions", items: faq, color: "white" }),
4801
4771
  /* @__PURE__ */ jsx(
4802
4772
  BrutalCTA,
4803
4773
  {
@@ -4864,7 +4834,7 @@ function StudioTemplate({
4864
4834
  }
4865
4835
  ),
4866
4836
  testimonials && /* @__PURE__ */ jsxs(Fragment, { children: [
4867
- /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--background))", to: "hsl(var(--section-gray))", variant: "diagonal" }),
4837
+ /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--background))", to: "hsl(var(--brand-muted))", variant: "diagonal" }),
4868
4838
  /* @__PURE__ */ jsx(
4869
4839
  BrutalTestimonials,
4870
4840
  {
@@ -4872,10 +4842,10 @@ function StudioTemplate({
4872
4842
  badge: testimonials.badge,
4873
4843
  headline: testimonials.headline,
4874
4844
  testimonials: testimonials.items,
4875
- color: "gray"
4845
+ color: "brand-muted"
4876
4846
  }
4877
4847
  ),
4878
- /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--section-gray))", to: "hsl(var(--background))", variant: "diagonal", flip: true })
4848
+ /* @__PURE__ */ jsx(SectionDivider, { from: "hsl(var(--brand-muted))", to: "hsl(var(--background))", variant: "diagonal", flip: true })
4879
4849
  ] }),
4880
4850
  newsletter && /* @__PURE__ */ jsx(
4881
4851
  Newsletter,