@parto-system-design/ui 1.0.5 → 1.1.1

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.
package/dist/index.css CHANGED
@@ -245,8 +245,8 @@
245
245
  .max-h-\[300px\] {
246
246
  max-height: 300px;
247
247
  }
248
- .min-h-\[38px\] {
249
- min-height: 38px;
248
+ .min-h-\[34px\] {
249
+ min-height: 34px;
250
250
  }
251
251
  .min-h-\[200px\] {
252
252
  min-height: 200px;
@@ -320,8 +320,8 @@
320
320
  .min-w-\[12rem\] {
321
321
  min-width: 12rem;
322
322
  }
323
- .min-w-\[120px\] {
324
- min-width: 120px;
323
+ .min-w-\[80px\] {
324
+ min-width: 80px;
325
325
  }
326
326
  .min-w-\[140px\] {
327
327
  min-width: 140px;
@@ -886,27 +886,27 @@
886
886
  .bg-warning-300 {
887
887
  background-color: hsl(var(--warning-300));
888
888
  }
889
+ .bg-warning-500 {
890
+ background-color: hsl(var(--warning-500));
891
+ }
889
892
  .bg-warning-600 {
890
893
  background-color: hsl(var(--warning-600));
891
894
  }
892
- .bg-yellow-500 {
893
- background-color: #eab308;
894
- }
895
895
  .bg-gradient-to-br {
896
896
  --tw-gradient-position: to bottom right in oklab;
897
897
  background-image: linear-gradient(var(--tw-gradient-stops));
898
898
  }
899
- .from-amber-500 {
900
- --tw-gradient-from: #f59e0b;
899
+ .from-brand-400 {
900
+ --tw-gradient-from: hsl(var(--brand-400));
901
901
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
902
902
  }
903
- .via-yellow-400 {
904
- --tw-gradient-via: #facc15;
903
+ .via-brand {
904
+ --tw-gradient-via: hsl(var(--brand-default));
905
905
  --tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
906
906
  --tw-gradient-stops: var(--tw-gradient-via-stops);
907
907
  }
908
- .to-amber-500 {
909
- --tw-gradient-to: #f59e0b;
908
+ .to-brand-400 {
909
+ --tw-gradient-to: hsl(var(--brand-400));
910
910
  --tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
911
911
  }
912
912
  .fill-brand {
@@ -915,6 +915,9 @@
915
915
  .fill-current {
916
916
  fill: currentcolor;
917
917
  }
918
+ .object-contain {
919
+ object-fit: contain;
920
+ }
918
921
  .object-cover {
919
922
  object-fit: cover;
920
923
  }
@@ -1107,6 +1110,9 @@
1107
1110
  .opacity-0 {
1108
1111
  opacity: 0%;
1109
1112
  }
1113
+ .opacity-40 {
1114
+ opacity: 40%;
1115
+ }
1110
1116
  .opacity-50 {
1111
1117
  opacity: 50%;
1112
1118
  }
@@ -1133,8 +1139,8 @@
1133
1139
  --tw-ring-shadow: var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color, currentcolor);
1134
1140
  box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
1135
1141
  }
1136
- .\[--tw-ring-color\:conic-gradient\(from_180deg\,\#f59e0b\,\#fbbf24\,\#f59e0b\)\] {
1137
- --tw-ring-color: conic-gradient(from 180deg,#f59e0b,#fbbf24,#f59e0b);
1142
+ .\[--tw-ring-color\:conic-gradient\(from_180deg\,\#22c55e\,\#4ade80\,\#22c55e\)\] {
1143
+ --tw-ring-color: conic-gradient(from 180deg,#22c55e,#4ade80,#22c55e);
1138
1144
  }
1139
1145
  .ring-background {
1140
1146
  --tw-ring-color: hsl(var(--background-default));
@@ -1313,6 +1319,13 @@
1313
1319
  }
1314
1320
  }
1315
1321
  }
1322
+ .group-hover\:scale-\[1\.02\] {
1323
+ &:is(:where(.group):hover *) {
1324
+ @media (hover: hover) {
1325
+ scale: 1.02;
1326
+ }
1327
+ }
1328
+ }
1316
1329
  .group-hover\:opacity-100 {
1317
1330
  &:is(:where(.group):hover *) {
1318
1331
  @media (hover: hover) {
@@ -1667,6 +1680,17 @@
1667
1680
  --tw-ring-offset-shadow: var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);
1668
1681
  }
1669
1682
  }
1683
+ .focus-within\:ring-offset-foreground-muted {
1684
+ &:focus-within {
1685
+ --tw-ring-offset-color: hsl(var(--foreground-muted));
1686
+ }
1687
+ }
1688
+ .focus-within\:outline-none {
1689
+ &:focus-within {
1690
+ --tw-outline-style: none;
1691
+ outline-style: none;
1692
+ }
1693
+ }
1670
1694
  .hover\:border-brand-600 {
1671
1695
  &:hover {
1672
1696
  @media (hover: hover) {
@@ -2140,11 +2164,6 @@
2140
2164
  outline-offset: 1px;
2141
2165
  }
2142
2166
  }
2143
- .focus-visible\:outline-amber-700 {
2144
- &:focus-visible {
2145
- outline-color: #b45309;
2146
- }
2147
- }
2148
2167
  .focus-visible\:outline-border-strong {
2149
2168
  &:focus-visible {
2150
2169
  outline-color: hsl(var(--border-strong));
package/dist/index.d.cts CHANGED
@@ -869,6 +869,10 @@ interface InstagramPostProps extends React$1.HTMLAttributes<HTMLDivElement>, Var
869
869
  onAIAnalysis?: () => void;
870
870
  onOpenInstagram?: () => void;
871
871
  instagramUrl?: string;
872
+ disableCommentAnalyzer?: boolean;
873
+ disableBooster?: boolean;
874
+ disableAIAnalysis?: boolean;
875
+ disableOpenInstagram?: boolean;
872
876
  placeholderText?: string;
873
877
  }
874
878
  declare const instagramPostVariants: (props?: ({
package/dist/index.d.ts CHANGED
@@ -869,6 +869,10 @@ interface InstagramPostProps extends React$1.HTMLAttributes<HTMLDivElement>, Var
869
869
  onAIAnalysis?: () => void;
870
870
  onOpenInstagram?: () => void;
871
871
  instagramUrl?: string;
872
+ disableCommentAnalyzer?: boolean;
873
+ disableBooster?: boolean;
874
+ disableAIAnalysis?: boolean;
875
+ disableOpenInstagram?: boolean;
872
876
  placeholderText?: string;
873
877
  }
874
878
  declare const instagramPostVariants: (props?: ({
package/dist/index.js CHANGED
@@ -668,7 +668,7 @@ var buttonVariants = cva2(
668
668
  bg-destructive-300 dark:bg-destructive-400 hover:bg-destructive-400 dark:hover:bg-destructive/50
669
669
  border-destructive-500 hover:border-destructive
670
670
  hover:text-hi-contrast
671
- focus-visible:outline-amber-700
671
+ focus-visible:outline-brand-600
672
672
  data-[state=open]:border-destructive
673
673
  data-[state=open]:bg-destructive-400 dark:data-[state=open]:bg-destructive/50
674
674
  data-[state=open]:outline-destructive
@@ -678,7 +678,7 @@ var buttonVariants = cva2(
678
678
  bg-warning-300 dark:bg-warning-400 hover:bg-warning-400 dark:hover:bg-warning/50
679
679
  border-warning-500 hover:border-warning
680
680
  hover:text-hi-contrast
681
- focus-visible:outline-amber-700
681
+ focus-visible:outline-brand-600
682
682
  data-[state=open]:border-warning
683
683
  data-[state=open]:bg-warning-400 dark:data-[state=open]:bg-warning/50
684
684
  data-[state=open]:outline-warning
@@ -688,7 +688,7 @@ var buttonVariants = cva2(
688
688
  bg-destructive-300 dark:bg-destructive-400 hover:bg-destructive-400 dark:hover:bg-destructive/50
689
689
  border-destructive-500 hover:border-destructive
690
690
  hover:text-hi-contrast
691
- focus-visible:outline-amber-700
691
+ focus-visible:outline-brand-600
692
692
  data-[state=open]:border-destructive
693
693
  data-[state=open]:bg-destructive-400 dark:data-[state=open]:bg-destructive/50
694
694
  data-[state=open]:outline-destructive
@@ -4014,12 +4014,16 @@ import { X as X3 } from "lucide-react";
4014
4014
  import { cva as cva7 } from "class-variance-authority";
4015
4015
  import { jsx as jsx35, jsxs as jsxs20 } from "react/jsx-runtime";
4016
4016
  var tagInputVariants = cva7(
4017
- "flex min-h-[38px] w-full flex-wrap gap-2 rounded-md border border-control bg-background px-3 py-2 text-sm ring-offset-background focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
4017
+ cn(
4018
+ "flex min-h-[34px] w-full flex-wrap gap-1.5 rounded-md border border-control bg-foreground/[.026] px-3 py-1.5 text-sm text-foreground",
4019
+ "focus-within:outline-none focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 focus-within:ring-offset-foreground-muted",
4020
+ "disabled:cursor-not-allowed disabled:text-foreground-muted disabled:opacity-50"
4021
+ ),
4018
4022
  {
4019
4023
  variants: {
4020
4024
  variant: {
4021
- default: "bg-background",
4022
- secondary: "bg-secondary"
4025
+ default: "",
4026
+ secondary: "bg-surface-200"
4023
4027
  }
4024
4028
  },
4025
4029
  defaultVariants: {
@@ -4090,7 +4094,7 @@ var TagInput = React14.forwardRef(
4090
4094
  Badge,
4091
4095
  {
4092
4096
  variant: "secondary",
4093
- className: "gap-1 pe-1 ps-2 h-7 hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
4097
+ className: "gap-1 pe-1 ps-2 h-6 text-xs font-medium hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
4094
4098
  children: [
4095
4099
  tag,
4096
4100
  /* @__PURE__ */ jsxs20(
@@ -4124,7 +4128,7 @@ var TagInput = React14.forwardRef(
4124
4128
  value: inputValue,
4125
4129
  onChange: (e) => setInputValue(e.target.value),
4126
4130
  onKeyDown: handleKeyDown,
4127
- className: "flex-1 bg-transparent outline-none placeholder:text-muted-foreground min-w-[120px] text-sm h-7",
4131
+ className: "flex-1 bg-transparent outline-none placeholder:text-foreground-muted min-w-[80px] text-sm leading-4",
4128
4132
  placeholder: value.length === 0 ? placeholder : void 0,
4129
4133
  disabled
4130
4134
  }
@@ -4142,12 +4146,16 @@ import { X as X4 } from "lucide-react";
4142
4146
  import { cva as cva8 } from "class-variance-authority";
4143
4147
  import { jsx as jsx36, jsxs as jsxs21 } from "react/jsx-runtime";
4144
4148
  var hashtagInputVariants = cva8(
4145
- "flex min-h-[38px] w-full flex-wrap gap-2 rounded-md border border-control bg-background px-3 py-2 text-sm ring-offset-background focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50",
4149
+ cn(
4150
+ "flex min-h-[34px] w-full flex-wrap gap-1.5 rounded-md border border-control bg-foreground/[.026] px-3 py-1.5 text-sm text-foreground",
4151
+ "focus-within:outline-none focus-within:ring-2 focus-within:ring-background-control focus-within:ring-offset-2 focus-within:ring-offset-foreground-muted",
4152
+ "disabled:cursor-not-allowed disabled:text-foreground-muted disabled:opacity-50"
4153
+ ),
4146
4154
  {
4147
4155
  variants: {
4148
4156
  variant: {
4149
- default: "bg-background",
4150
- secondary: "bg-secondary"
4157
+ default: "",
4158
+ secondary: "bg-surface-200"
4151
4159
  }
4152
4160
  },
4153
4161
  defaultVariants: {
@@ -4218,7 +4226,7 @@ var HashtagInput = React15.forwardRef(
4218
4226
  Badge,
4219
4227
  {
4220
4228
  variant: "secondary",
4221
- className: "gap-1 pe-1 ps-2 h-7 hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
4229
+ className: "gap-1 pe-1 ps-2 h-6 text-xs font-medium hover:!bg-primary/20 hover:!text-primary transition-colors [&:hover_svg]:!text-primary",
4222
4230
  children: [
4223
4231
  "#",
4224
4232
  tag,
@@ -4253,7 +4261,7 @@ var HashtagInput = React15.forwardRef(
4253
4261
  value: inputValue,
4254
4262
  onChange: (e) => setInputValue(e.target.value),
4255
4263
  onKeyDown: handleKeyDown,
4256
- className: "flex-1 bg-transparent outline-none placeholder:text-muted-foreground min-w-[120px] text-sm h-7",
4264
+ className: "flex-1 bg-transparent outline-none placeholder:text-foreground-muted min-w-[80px] text-sm leading-4",
4257
4265
  placeholder: value.length === 0 ? placeholder : void 0,
4258
4266
  disabled
4259
4267
  }
@@ -4588,8 +4596,9 @@ function InstagramPostMedia({
4588
4596
  {
4589
4597
  className: cn(
4590
4598
  "flex items-center justify-center bg-muted/30",
4591
- variant === "vertical" ? "aspect-square" : "w-[20%] shrink-0 h-full min-h-[200px] -my-[1px] -ms-[1px]"
4599
+ variant === "vertical" ? "w-full" : "w-[20%] shrink-0 h-full min-h-[200px] -my-[1px] -ms-[1px]"
4592
4600
  ),
4601
+ style: variant === "vertical" ? { aspectRatio: "4/5" } : void 0,
4593
4602
  children: /* @__PURE__ */ jsxs23("div", { className: "text-center p-4", children: [
4594
4603
  /* @__PURE__ */ jsx41(ImageOff, { className: "size-12 mx-auto mb-2 text-muted-foreground" }),
4595
4604
  /* @__PURE__ */ jsx41("p", { className: "text-sm text-muted-foreground", children: placeholderText })
@@ -4613,19 +4622,33 @@ function InstagramPostMedia({
4613
4622
  )
4614
4623
  ] });
4615
4624
  }
4616
- const ratio = getAspectRatio(item.aspectRatio || "1:1");
4617
- return /* @__PURE__ */ jsxs23("div", { className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30", style: { aspectRatio: ratio }, children: [
4618
- /* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4619
- imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
4620
- "img",
4621
- {
4622
- src: item.url,
4623
- alt: "Post media",
4624
- className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
4625
- onError: () => handleImageError(item.url)
4626
- }
4627
- )
4628
- ] });
4625
+ const aspectRatio = item.aspectRatio || "4:5";
4626
+ const isPortrait = aspectRatio === "9:16" || aspectRatio === "4:5";
4627
+ const instagramRatio = isPortrait ? "4/5" : getAspectRatioCSS(aspectRatio);
4628
+ return /* @__PURE__ */ jsxs23(
4629
+ "div",
4630
+ {
4631
+ className: "w-full relative overflow-hidden group cursor-pointer bg-black",
4632
+ style: { aspectRatio: instagramRatio },
4633
+ children: [
4634
+ /* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4635
+ imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
4636
+ "img",
4637
+ {
4638
+ src: item.url,
4639
+ alt: "Post media",
4640
+ className: cn(
4641
+ "w-full h-full transition-transform duration-300 group-hover:scale-[1.02]",
4642
+ // For portrait images: object-contain to show full image like Instagram
4643
+ // For square/landscape: object-cover
4644
+ isPortrait ? "object-contain" : "object-cover"
4645
+ ),
4646
+ onError: () => handleImageError(item.url)
4647
+ }
4648
+ )
4649
+ ]
4650
+ }
4651
+ );
4629
4652
  }
4630
4653
  if (mediaType === "video" || media.length === 1 && media[0].type === "video") {
4631
4654
  const item = media[0];
@@ -4643,19 +4666,31 @@ function InstagramPostMedia({
4643
4666
  )
4644
4667
  ] });
4645
4668
  }
4646
- const ratio = getAspectRatio(item.aspectRatio || "16:9");
4647
- return /* @__PURE__ */ jsxs23("div", { className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30", style: { aspectRatio: ratio }, children: [
4648
- /* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4649
- imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
4650
- "img",
4651
- {
4652
- src: item.url,
4653
- alt: "Post media",
4654
- className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
4655
- onError: () => handleImageError(item.url)
4656
- }
4657
- )
4658
- ] });
4669
+ const aspectRatio = item.aspectRatio || "4:5";
4670
+ const isPortrait = aspectRatio === "9:16" || aspectRatio === "4:5";
4671
+ const instagramRatio = isPortrait ? "4/5" : getAspectRatioCSS(aspectRatio);
4672
+ return /* @__PURE__ */ jsxs23(
4673
+ "div",
4674
+ {
4675
+ className: "w-full relative overflow-hidden group cursor-pointer bg-black",
4676
+ style: { aspectRatio: instagramRatio },
4677
+ children: [
4678
+ /* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4679
+ imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
4680
+ "img",
4681
+ {
4682
+ src: item.url,
4683
+ alt: "Post media",
4684
+ className: cn(
4685
+ "w-full h-full transition-transform duration-300 group-hover:scale-[1.02]",
4686
+ isPortrait ? "object-contain" : "object-cover"
4687
+ ),
4688
+ onError: () => handleImageError(item.url)
4689
+ }
4690
+ )
4691
+ ]
4692
+ }
4693
+ );
4659
4694
  }
4660
4695
  if (mediaType === "carousel" || media.length > 1) {
4661
4696
  if (variant === "horizontal") {
@@ -4677,38 +4712,47 @@ function InstagramPostMedia({
4677
4712
  ] }) });
4678
4713
  }
4679
4714
  return /* @__PURE__ */ jsxs23(Carousel, { className: "w-full", children: [
4680
- /* @__PURE__ */ jsx41(CarouselContent, { children: media.map((item, index) => /* @__PURE__ */ jsx41(CarouselItem, { children: /* @__PURE__ */ jsxs23(
4681
- "div",
4682
- {
4683
- className: "w-full relative overflow-hidden group cursor-pointer bg-muted/30",
4684
- style: { aspectRatio: getAspectRatio(item.aspectRatio || (item.type === "video" ? "16:9" : "1:1")) },
4685
- children: [
4686
- /* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4687
- imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
4688
- "img",
4689
- {
4690
- src: item.url,
4691
- alt: `Post media ${index + 1}`,
4692
- className: "w-full h-full object-cover group-hover:scale-110 transition-transform duration-300",
4693
- onError: () => handleImageError(item.url)
4694
- }
4695
- )
4696
- ]
4697
- }
4698
- ) }, index)) }),
4715
+ /* @__PURE__ */ jsx41(CarouselContent, { children: media.map((item, index) => {
4716
+ const itemAspect = item.aspectRatio || "4:5";
4717
+ const itemIsPortrait = itemAspect === "9:16" || itemAspect === "4:5";
4718
+ const itemRatio = itemIsPortrait ? "4/5" : getAspectRatioCSS(itemAspect);
4719
+ return /* @__PURE__ */ jsx41(CarouselItem, { children: /* @__PURE__ */ jsxs23(
4720
+ "div",
4721
+ {
4722
+ className: "w-full relative overflow-hidden group cursor-pointer bg-black",
4723
+ style: { aspectRatio: itemRatio },
4724
+ children: [
4725
+ /* @__PURE__ */ jsx41("div", { className: "absolute inset-0 bg-black/0 group-hover:bg-black/20 transition-colors duration-300 z-10" }),
4726
+ imageError[item.url] ? renderPlaceholder() : /* @__PURE__ */ jsx41(
4727
+ "img",
4728
+ {
4729
+ src: item.url,
4730
+ alt: `Post media ${index + 1}`,
4731
+ className: cn(
4732
+ "w-full h-full transition-transform duration-300",
4733
+ itemIsPortrait ? "object-contain" : "object-cover"
4734
+ ),
4735
+ onError: () => handleImageError(item.url)
4736
+ }
4737
+ )
4738
+ ]
4739
+ }
4740
+ ) }, index);
4741
+ }) }),
4699
4742
  /* @__PURE__ */ jsx41(CarouselPrevious, { className: "ms-2" }),
4700
4743
  /* @__PURE__ */ jsx41(CarouselNext, { className: "me-2" })
4701
4744
  ] });
4702
4745
  }
4703
4746
  return null;
4704
4747
  }
4705
- function getAspectRatio(ratio) {
4748
+ function getAspectRatioCSS(ratio) {
4706
4749
  const ratios = {
4707
- "16:9": 16 / 9,
4708
- "9:16": 9 / 16,
4709
- "1:1": 1,
4710
- "4:5": 4 / 5,
4711
- "5:4": 5 / 4
4750
+ "16:9": "16/9",
4751
+ "9:16": "4/5",
4752
+ // Instagram standard portrait
4753
+ "1:1": "1/1",
4754
+ "4:5": "4/5",
4755
+ "5:4": "5/4"
4712
4756
  };
4713
4757
  return ratios[ratio];
4714
4758
  }
@@ -4931,7 +4975,11 @@ function InstagramPostActions({
4931
4975
  onBooster,
4932
4976
  onAIAnalysis,
4933
4977
  onOpenInstagram,
4934
- instagramUrl
4978
+ instagramUrl,
4979
+ disableCommentAnalyzer = false,
4980
+ disableBooster = false,
4981
+ disableAIAnalysis = false,
4982
+ disableOpenInstagram = false
4935
4983
  }) {
4936
4984
  if (!showActions) return null;
4937
4985
  const handleOpenInstagram = () => {
@@ -4941,21 +4989,6 @@ function InstagramPostActions({
4941
4989
  window.open(instagramUrl, "_blank", "noopener,noreferrer");
4942
4990
  }
4943
4991
  };
4944
- const handleCommentAnalyzer = () => {
4945
- if (onCommentAnalyzer) {
4946
- onCommentAnalyzer();
4947
- }
4948
- };
4949
- const handleBooster = () => {
4950
- if (onBooster) {
4951
- onBooster();
4952
- }
4953
- };
4954
- const handleAIAnalysis = () => {
4955
- if (onAIAnalysis) {
4956
- onAIAnalysis();
4957
- }
4958
- };
4959
4992
  return /* @__PURE__ */ jsx41(TooltipProvider, { children: /* @__PURE__ */ jsxs23("div", { className: "absolute top-2 end-2 flex items-center gap-1 opacity-0 group-hover:opacity-100 transition-opacity z-10", children: [
4960
4993
  /* @__PURE__ */ jsxs23(Tooltip, { children: [
4961
4994
  /* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
@@ -4963,13 +4996,17 @@ function InstagramPostActions({
4963
4996
  {
4964
4997
  variant: "ghost",
4965
4998
  size: "icon",
4966
- className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
4967
- onClick: handleCommentAnalyzer,
4999
+ className: cn(
5000
+ "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5001
+ disableCommentAnalyzer && "opacity-40 cursor-not-allowed pointer-events-none"
5002
+ ),
5003
+ onClick: disableCommentAnalyzer ? void 0 : onCommentAnalyzer,
5004
+ disabled: disableCommentAnalyzer,
4968
5005
  "aria-label": "Comment Analyzer",
4969
5006
  children: /* @__PURE__ */ jsx41(Icons.messageCircle, { className: "size-4" })
4970
5007
  }
4971
5008
  ) }),
4972
- /* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u062A\u062D\u0644\u06CC\u0644 \u06A9\u0627\u0645\u0646\u062A\u200C\u0647\u0627" }) })
5009
+ /* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: disableCommentAnalyzer ? "\u062A\u062D\u0644\u06CC\u0644 \u06A9\u0627\u0645\u0646\u062A\u200C\u0647\u0627 (\u063A\u06CC\u0631\u0641\u0639\u0627\u0644)" : "\u062A\u062D\u0644\u06CC\u0644 \u06A9\u0627\u0645\u0646\u062A\u200C\u0647\u0627" }) })
4973
5010
  ] }),
4974
5011
  /* @__PURE__ */ jsxs23(Tooltip, { children: [
4975
5012
  /* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
@@ -4977,13 +5014,17 @@ function InstagramPostActions({
4977
5014
  {
4978
5015
  variant: "ghost",
4979
5016
  size: "icon",
4980
- className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
4981
- onClick: handleBooster,
5017
+ className: cn(
5018
+ "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5019
+ disableBooster && "opacity-40 cursor-not-allowed pointer-events-none"
5020
+ ),
5021
+ onClick: disableBooster ? void 0 : onBooster,
5022
+ disabled: disableBooster,
4982
5023
  "aria-label": "Booster",
4983
5024
  children: /* @__PURE__ */ jsx41(Icons.rocket, { className: "size-4" })
4984
5025
  }
4985
5026
  ) }),
4986
- /* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u0628\u0648\u0633\u062A\u0631" }) })
5027
+ /* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: disableBooster ? "\u0628\u0648\u0633\u062A\u0631 (\u063A\u06CC\u0631\u0641\u0639\u0627\u0644)" : "\u0628\u0648\u0633\u062A\u0631" }) })
4987
5028
  ] }),
4988
5029
  /* @__PURE__ */ jsxs23(Tooltip, { children: [
4989
5030
  /* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
@@ -4991,13 +5032,17 @@ function InstagramPostActions({
4991
5032
  {
4992
5033
  variant: "ghost",
4993
5034
  size: "icon",
4994
- className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
4995
- onClick: handleAIAnalysis,
5035
+ className: cn(
5036
+ "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5037
+ disableAIAnalysis && "opacity-40 cursor-not-allowed pointer-events-none"
5038
+ ),
5039
+ onClick: disableAIAnalysis ? void 0 : onAIAnalysis,
5040
+ disabled: disableAIAnalysis,
4996
5041
  "aria-label": "AI Analysis",
4997
5042
  children: /* @__PURE__ */ jsx41(Icons.sparkles, { className: "size-4" })
4998
5043
  }
4999
5044
  ) }),
5000
- /* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u062A\u062D\u0644\u06CC\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06CC" }) })
5045
+ /* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: disableAIAnalysis ? "\u062A\u062D\u0644\u06CC\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06CC (\u063A\u06CC\u0631\u0641\u0639\u0627\u0644)" : "\u062A\u062D\u0644\u06CC\u0644 \u0647\u0648\u0634 \u0645\u0635\u0646\u0648\u0639\u06CC" }) })
5001
5046
  ] }),
5002
5047
  /* @__PURE__ */ jsxs23(Tooltip, { children: [
5003
5048
  /* @__PURE__ */ jsx41(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsx41(
@@ -5005,13 +5050,17 @@ function InstagramPostActions({
5005
5050
  {
5006
5051
  variant: "ghost",
5007
5052
  size: "icon",
5008
- className: "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5009
- onClick: handleOpenInstagram,
5053
+ className: cn(
5054
+ "size-8 bg-background/80 backdrop-blur-sm hover:bg-background",
5055
+ disableOpenInstagram && "opacity-40 cursor-not-allowed pointer-events-none"
5056
+ ),
5057
+ onClick: disableOpenInstagram ? void 0 : handleOpenInstagram,
5058
+ disabled: disableOpenInstagram,
5010
5059
  "aria-label": "Open on Instagram",
5011
5060
  children: /* @__PURE__ */ jsx41(Icons.instagram, { className: "size-4" })
5012
5061
  }
5013
5062
  ) }),
5014
- /* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: "\u0628\u0627\u0632 \u06A9\u0631\u062F\u0646 \u062F\u0631 \u0627\u06CC\u0646\u0633\u062A\u0627\u06AF\u0631\u0627\u0645" }) })
5063
+ /* @__PURE__ */ jsx41(TooltipContent, { children: /* @__PURE__ */ jsx41("p", { children: disableOpenInstagram ? "\u0628\u0627\u0632 \u06A9\u0631\u062F\u0646 \u062F\u0631 \u0627\u06CC\u0646\u0633\u062A\u0627\u06AF\u0631\u0627\u0645 (\u063A\u06CC\u0631\u0641\u0639\u0627\u0644)" : "\u0628\u0627\u0632 \u06A9\u0631\u062F\u0646 \u062F\u0631 \u0627\u06CC\u0646\u0633\u062A\u0627\u06AF\u0631\u0627\u0645" }) })
5015
5064
  ] })
5016
5065
  ] }) });
5017
5066
  }
@@ -5067,6 +5116,10 @@ var InstagramPost = React19.forwardRef(
5067
5116
  onAIAnalysis,
5068
5117
  onOpenInstagram,
5069
5118
  instagramUrl,
5119
+ disableCommentAnalyzer = false,
5120
+ disableBooster = false,
5121
+ disableAIAnalysis = false,
5122
+ disableOpenInstagram = false,
5070
5123
  placeholderText,
5071
5124
  dir,
5072
5125
  ...props
@@ -5088,7 +5141,11 @@ var InstagramPost = React19.forwardRef(
5088
5141
  onBooster,
5089
5142
  onAIAnalysis,
5090
5143
  onOpenInstagram,
5091
- instagramUrl
5144
+ instagramUrl,
5145
+ disableCommentAnalyzer,
5146
+ disableBooster,
5147
+ disableAIAnalysis,
5148
+ disableOpenInstagram
5092
5149
  }
5093
5150
  ),
5094
5151
  isVertical ? /* @__PURE__ */ jsxs23(Fragment4, { children: [
@@ -6365,7 +6422,7 @@ var ProfileCard = React22.forwardRef(
6365
6422
  onClick: onCardClick,
6366
6423
  ...props,
6367
6424
  children: [
6368
- /* @__PURE__ */ jsx50("div", { className: "relative flex-shrink-0", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ jsx50("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-amber-500 via-yellow-400 to-amber-500", children: /* @__PURE__ */ jsxs30(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
6425
+ /* @__PURE__ */ jsx50("div", { className: "relative flex-shrink-0", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ jsx50("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-brand-400 via-brand to-brand-400", children: /* @__PURE__ */ jsxs30(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
6369
6426
  /* @__PURE__ */ jsx50(AvatarImage, { src: avatarSrc, alt: avatarAlt || name }),
6370
6427
  /* @__PURE__ */ jsx50(AvatarFallback, { className: "bg-surface-300 text-foreground font-medium", children: initials || name.charAt(0) })
6371
6428
  ] }) }) : avatarBorderVariant === "primary" ? /* @__PURE__ */ jsxs30(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-offset-2 ring-offset-background ring-primary"), children: [
@@ -6443,7 +6500,7 @@ var ProfileInfo = React23.forwardRef(
6443
6500
  transparent: "bg-transparent"
6444
6501
  };
6445
6502
  const borderClasses = {
6446
- gold: "ring-2 ring-offset-2 ring-offset-background [--tw-ring-color:conic-gradient(from_180deg,#f59e0b,#fbbf24,#f59e0b)]",
6503
+ gold: "ring-2 ring-offset-2 ring-offset-background [--tw-ring-color:conic-gradient(from_180deg,#22c55e,#4ade80,#22c55e)]",
6447
6504
  primary: "ring-2 ring-offset-2 ring-offset-background ring-primary",
6448
6505
  none: ""
6449
6506
  };
@@ -6463,7 +6520,7 @@ var ProfileInfo = React23.forwardRef(
6463
6520
  ...props,
6464
6521
  children: [
6465
6522
  /* @__PURE__ */ jsxs31("div", { className: "flex items-center gap-4", children: [
6466
- /* @__PURE__ */ jsx51("div", { className: "relative", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ jsx51("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-amber-500 via-yellow-400 to-amber-500", children: /* @__PURE__ */ jsxs31(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
6523
+ /* @__PURE__ */ jsx51("div", { className: "relative", children: avatarBorderVariant === "gold" ? /* @__PURE__ */ jsx51("div", { className: "relative p-0.5 rounded-full bg-gradient-to-br from-brand-400 via-brand to-brand-400", children: /* @__PURE__ */ jsxs31(Avatar, { className: cn(currentSize.avatar, "ring-2 ring-background"), children: [
6467
6524
  /* @__PURE__ */ jsx51(AvatarImage, { src: avatarSrc, alt: avatarAlt || name }),
6468
6525
  /* @__PURE__ */ jsx51(AvatarFallback, { className: "bg-surface-300 text-foreground font-medium", children: initials || name.charAt(0) })
6469
6526
  ] }) }) : /* @__PURE__ */ jsxs31(Avatar, { className: cn(currentSize.avatar, borderClasses[avatarBorderVariant]), children: [
@@ -6716,10 +6773,10 @@ var EngagementRate = React24.forwardRef(
6716
6773
  min: r.average[0],
6717
6774
  max: r.average[1],
6718
6775
  display: `${r.average[0]}% - ${r.average[1]}%`,
6719
- color: "#eab308",
6720
- // yellow-500
6721
- hoverColor: "#ca8a04"
6722
- // yellow-600
6776
+ color: "#22c55e",
6777
+ // brand green (green-500)
6778
+ hoverColor: "#16a34a"
6779
+ // brand green hover (green-600)
6723
6780
  },
6724
6781
  {
6725
6782
  label: t.couldBeImproved,
@@ -7060,10 +7117,10 @@ var EngagementRateBar = React25.forwardRef(
7060
7117
  label: t.average,
7061
7118
  min: r.average[0],
7062
7119
  max: r.average[1],
7063
- color: "#eab308",
7064
- // yellow-500
7065
- hoverColor: "#ca8a04"
7066
- // yellow-600
7120
+ color: "#22c55e",
7121
+ // brand green (green-500)
7122
+ hoverColor: "#16a34a"
7123
+ // brand green hover (green-600)
7067
7124
  },
7068
7125
  {
7069
7126
  label: t.couldBeImproved,
@@ -7203,7 +7260,7 @@ var progressIndicatorVariants = cva12(
7203
7260
  primary: "bg-brand-500",
7204
7261
  secondary: "bg-foreground",
7205
7262
  success: "bg-green-500",
7206
- warning: "bg-yellow-500",
7263
+ warning: "bg-warning-500",
7207
7264
  destructive: "bg-destructive-500"
7208
7265
  }
7209
7266
  },