@agentiffai/design 1.3.21 → 1.3.23

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.cjs CHANGED
@@ -2232,7 +2232,7 @@ var TabPanelWrapper = styled48__default.default.div`
2232
2232
  overflow-y: auto;
2233
2233
  overflow-x: hidden; // Prevent horizontal overflow
2234
2234
  scrollbar-gutter: stable; // Always reserve space for scrollbar to prevent width jump
2235
- background-color: ${tokens.colors.surface.overlay};
2235
+ background-color: ${tokens.colors.background.dark};
2236
2236
  min-height: 0; // Enable proper flex shrinking and scrolling
2237
2237
 
2238
2238
  @media (max-width: ${tokens.breakpoints.mobile}px) {
@@ -8540,7 +8540,8 @@ var PostPreviewCard = ({
8540
8540
  isEditing = false,
8541
8541
  editContent,
8542
8542
  onContentChange,
8543
- isLoading = false
8543
+ isLoading = false,
8544
+ onImageChange
8544
8545
  }) => {
8545
8546
  const platformConfig = PLATFORM_CONFIGS[post.platform] || PLATFORM_CONFIGS.x;
8546
8547
  const [imageError, setImageError] = React4.useState(false);
@@ -8593,14 +8594,42 @@ var PostPreviewCard = ({
8593
8594
  hashtag.replace(/^#/, "")
8594
8595
  ] }, hashtag)) })
8595
8596
  ] }),
8596
- post.imageUrl && !imageError ? /* @__PURE__ */ jsxRuntime.jsx(ImagePreviewContainer, { children: /* @__PURE__ */ jsxRuntime.jsx(
8597
+ post.imageUrl && !imageError ? onImageChange ? /* @__PURE__ */ jsxRuntime.jsx(ImageChangeButton, { type: "button", onClick: onImageChange, "aria-label": "Change image", children: /* @__PURE__ */ jsxRuntime.jsxs(ImagePreviewContainer, { children: [
8598
+ /* @__PURE__ */ jsxRuntime.jsx(
8599
+ ImagePreview,
8600
+ {
8601
+ src: post.imageUrl,
8602
+ alt: "Post image preview",
8603
+ onError: () => setImageError(true)
8604
+ }
8605
+ ),
8606
+ /* @__PURE__ */ jsxRuntime.jsx(ImageOverlay, { children: /* @__PURE__ */ jsxRuntime.jsx(OverlayText, { children: "Change image" }) })
8607
+ ] }) }) : /* @__PURE__ */ jsxRuntime.jsx(ImagePreviewContainer, { children: /* @__PURE__ */ jsxRuntime.jsx(
8597
8608
  ImagePreview,
8598
8609
  {
8599
8610
  src: post.imageUrl,
8600
8611
  alt: "Post image preview",
8601
8612
  onError: () => setImageError(true)
8602
8613
  }
8603
- ) }) : post.imageUrl && imageError ? /* @__PURE__ */ jsxRuntime.jsxs(ImagePlaceholder, { children: [
8614
+ ) }) : post.imageUrl && imageError ? onImageChange ? /* @__PURE__ */ jsxRuntime.jsx(ImageChangeButton, { type: "button", onClick: onImageChange, "aria-label": "Replace image", children: /* @__PURE__ */ jsxRuntime.jsxs(ImagePlaceholder, { $clickable: true, children: [
8615
+ /* @__PURE__ */ jsxRuntime.jsx(PlaceholderIcon, { children: /* @__PURE__ */ jsxRuntime.jsxs(
8616
+ "svg",
8617
+ {
8618
+ viewBox: "0 0 24 24",
8619
+ fill: "none",
8620
+ stroke: "currentColor",
8621
+ strokeWidth: "2",
8622
+ role: "img",
8623
+ "aria-label": "Image unavailable",
8624
+ children: [
8625
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }),
8626
+ /* @__PURE__ */ jsxRuntime.jsx("circle", { cx: "8.5", cy: "8.5", r: "1.5" }),
8627
+ /* @__PURE__ */ jsxRuntime.jsx("polyline", { points: "21 15 16 10 5 21" })
8628
+ ]
8629
+ }
8630
+ ) }),
8631
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Tap to replace image" })
8632
+ ] }) }) : /* @__PURE__ */ jsxRuntime.jsxs(ImagePlaceholder, { children: [
8604
8633
  /* @__PURE__ */ jsxRuntime.jsx(PlaceholderIcon, { children: /* @__PURE__ */ jsxRuntime.jsxs(
8605
8634
  "svg",
8606
8635
  {
@@ -8618,7 +8647,25 @@ var PostPreviewCard = ({
8618
8647
  }
8619
8648
  ) }),
8620
8649
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Image unavailable" })
8621
- ] }) : ["instagram", "linkedin", "facebook", "youtube"].includes(post.platform) && /* @__PURE__ */ jsxRuntime.jsxs(ImagePlaceholder, { children: [
8650
+ ] }) : ["instagram", "linkedin", "facebook", "youtube"].includes(post.platform) && (onImageChange ? /* @__PURE__ */ jsxRuntime.jsx(ImageChangeButton, { type: "button", onClick: onImageChange, "aria-label": "Add image", children: /* @__PURE__ */ jsxRuntime.jsxs(ImagePlaceholder, { $clickable: true, children: [
8651
+ /* @__PURE__ */ jsxRuntime.jsx(PlaceholderIcon, { children: /* @__PURE__ */ jsxRuntime.jsxs(
8652
+ "svg",
8653
+ {
8654
+ viewBox: "0 0 24 24",
8655
+ fill: "none",
8656
+ stroke: "currentColor",
8657
+ strokeWidth: "2",
8658
+ role: "img",
8659
+ "aria-label": "Add image",
8660
+ children: [
8661
+ /* @__PURE__ */ jsxRuntime.jsx("rect", { x: "3", y: "3", width: "18", height: "18", rx: "2", ry: "2" }),
8662
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "12", y1: "8", x2: "12", y2: "16" }),
8663
+ /* @__PURE__ */ jsxRuntime.jsx("line", { x1: "8", y1: "12", x2: "16", y2: "12" })
8664
+ ]
8665
+ }
8666
+ ) }),
8667
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "Tap to add image" })
8668
+ ] }) }) : /* @__PURE__ */ jsxRuntime.jsxs(ImagePlaceholder, { children: [
8622
8669
  /* @__PURE__ */ jsxRuntime.jsx(PlaceholderIcon, { children: /* @__PURE__ */ jsxRuntime.jsxs(
8623
8670
  "svg",
8624
8671
  {
@@ -8636,7 +8683,7 @@ var PostPreviewCard = ({
8636
8683
  }
8637
8684
  ) }),
8638
8685
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: "No image attached" })
8639
- ] }),
8686
+ ] })),
8640
8687
  /* @__PURE__ */ jsxRuntime.jsx(ProgressBarContainer, { children: /* @__PURE__ */ jsxRuntime.jsx(ProgressBarTrack, { children: /* @__PURE__ */ jsxRuntime.jsx(
8641
8688
  ProgressBarFill2,
8642
8689
  {
@@ -8797,7 +8844,17 @@ var ProgressBarFill2 = styled48__default.default.div`
8797
8844
  return tokens.colors.success;
8798
8845
  }};
8799
8846
  `;
8847
+ var ImageChangeButton = styled48__default.default.button`
8848
+ display: block;
8849
+ width: 100%;
8850
+ padding: 0;
8851
+ border: none;
8852
+ background: none;
8853
+ cursor: pointer;
8854
+ -webkit-tap-highlight-color: transparent;
8855
+ `;
8800
8856
  var ImagePreviewContainer = styled48__default.default.div`
8857
+ position: relative;
8801
8858
  margin-bottom: ${tokens.spacing.sm};
8802
8859
  border-radius: ${tokens.borderRadius.sm};
8803
8860
  overflow: hidden;
@@ -8810,6 +8867,30 @@ var ImagePreview = styled48__default.default.img`
8810
8867
  object-fit: cover;
8811
8868
  display: block;
8812
8869
  `;
8870
+ var ImageOverlay = styled48__default.default.div`
8871
+ position: absolute;
8872
+ inset: 0;
8873
+ background: rgba(0, 0, 0, 0.5);
8874
+ display: flex;
8875
+ align-items: center;
8876
+ justify-content: center;
8877
+ opacity: 0;
8878
+ transition: opacity ${tokens.transitions.fast};
8879
+
8880
+ ${ImageChangeButton}:hover &,
8881
+ ${ImageChangeButton}:focus-visible & {
8882
+ opacity: 1;
8883
+ }
8884
+
8885
+ @media (hover: none) {
8886
+ opacity: 0.6;
8887
+ }
8888
+ `;
8889
+ var OverlayText = styled48__default.default.span`
8890
+ color: white;
8891
+ font-size: ${tokens.typography.fontSize.sm};
8892
+ font-weight: ${tokens.typography.fontWeight.semibold};
8893
+ `;
8813
8894
  var ImagePlaceholder = styled48__default.default.div`
8814
8895
  width: 100%;
8815
8896
  height: 200px;
@@ -8829,8 +8910,16 @@ var ImagePlaceholder = styled48__default.default.div`
8829
8910
  gap: ${tokens.spacing.sm};
8830
8911
  color: white;
8831
8912
  font-size: ${tokens.typography.fontSize.sm};
8832
- opacity: 0.8;
8913
+ opacity: ${({ $clickable }) => $clickable ? 0.9 : 0.8};
8833
8914
  margin-bottom: ${tokens.spacing.sm};
8915
+ transition: opacity ${tokens.transitions.fast};
8916
+
8917
+ ${({ $clickable }) => $clickable && `
8918
+ ${ImageChangeButton}:hover &,
8919
+ ${ImageChangeButton}:focus-visible & {
8920
+ opacity: 1;
8921
+ }
8922
+ `}
8834
8923
  `;
8835
8924
  var PlaceholderIcon = styled48__default.default.div`
8836
8925
  width: 48px;
@@ -8879,7 +8968,8 @@ var PlatformCarousel = ({
8879
8968
  editingIndex,
8880
8969
  editContent,
8881
8970
  onEditContentChange,
8882
- isLoading = false
8971
+ isLoading = false,
8972
+ onImageChangeRequest
8883
8973
  }) => {
8884
8974
  const [activeIndex, setActiveIndex] = React4.useState(0);
8885
8975
  React4.useEffect(() => {
@@ -8939,7 +9029,8 @@ var PlatformCarousel = ({
8939
9029
  isEditing,
8940
9030
  editContent: isEditing ? editContent : void 0,
8941
9031
  onContentChange: isEditing ? onEditContentChange : void 0,
8942
- isLoading
9032
+ isLoading,
9033
+ onImageChange: onImageChangeRequest ? () => onImageChangeRequest(index) : void 0
8943
9034
  }
8944
9035
  ) }, `slide-${post.platform}-${index}`);
8945
9036
  }) }),
@@ -9071,7 +9162,8 @@ var PlatformGrid = ({
9071
9162
  onEditContentChange,
9072
9163
  isLoading = false,
9073
9164
  activeIndex = 0,
9074
- onActiveChange
9165
+ onActiveChange,
9166
+ onImageChangeRequest
9075
9167
  }) => {
9076
9168
  if (posts.length === 0) {
9077
9169
  return /* @__PURE__ */ jsxRuntime.jsx(EmptyState2, { children: /* @__PURE__ */ jsxRuntime.jsx(EmptyStateText, { children: "No posts to display" }) });
@@ -9103,7 +9195,8 @@ var PlatformGrid = ({
9103
9195
  isEditing,
9104
9196
  editContent: isEditing ? editContent : void 0,
9105
9197
  onContentChange: isEditing ? onEditContentChange : void 0,
9106
- isLoading
9198
+ isLoading,
9199
+ onImageChange: onImageChangeRequest ? () => onImageChangeRequest(index) : void 0
9107
9200
  }
9108
9201
  )
9109
9202
  },
@@ -9295,7 +9388,8 @@ var SocialMediaCanvas = ({
9295
9388
  editContent,
9296
9389
  onEditContentChange,
9297
9390
  isLoading = false,
9298
- activeIndex = 0
9391
+ activeIndex = 0,
9392
+ onImageChangeRequest
9299
9393
  }) => {
9300
9394
  const [viewMode, setViewMode] = React4.useState(initialViewMode);
9301
9395
  const handleActiveChange = (index) => {
@@ -9352,7 +9446,8 @@ var SocialMediaCanvas = ({
9352
9446
  editingIndex,
9353
9447
  editContent,
9354
9448
  onEditContentChange,
9355
- isLoading
9449
+ isLoading,
9450
+ onImageChangeRequest
9356
9451
  }
9357
9452
  ) : /* @__PURE__ */ jsxRuntime.jsx(
9358
9453
  PlatformGrid,
@@ -9363,7 +9458,8 @@ var SocialMediaCanvas = ({
9363
9458
  onEditContentChange,
9364
9459
  isLoading,
9365
9460
  activeIndex,
9366
- onActiveChange: handleActiveChange
9461
+ onActiveChange: handleActiveChange,
9462
+ onImageChangeRequest
9367
9463
  }
9368
9464
  ) })
9369
9465
  ] });
@@ -10483,18 +10579,20 @@ var Card2 = styled48__default.default.div`
10483
10579
  display: flex;
10484
10580
  flex-direction: column;
10485
10581
  background: ${tokens.colors.background.darker};
10486
- border-radius: ${tokens.borderRadius.xl};
10487
10582
  border: 1px solid ${tokens.colors.border.default};
10583
+ border-radius: ${tokens.borderRadius.xl};
10584
+ height: 100%;
10488
10585
  overflow: hidden;
10489
10586
  `;
10490
10587
  var Header4 = styled48__default.default.div`
10491
10588
  display: flex;
10492
10589
  justify-content: space-between;
10493
10590
  align-items: center;
10494
- padding: ${tokens.spacing.sm} ${tokens.spacing.md};
10591
+ padding: 0 0.5rem;
10495
10592
  background: ${tokens.colors.background.darker};
10496
10593
  border-bottom: 1px solid ${tokens.colors.border.default};
10497
10594
  min-height: 48px;
10595
+ flex-shrink: 0;
10498
10596
  `;
10499
10597
  var Title2 = styled48__default.default.h3`
10500
10598
  margin: 0;
@@ -10560,6 +10658,9 @@ var TransactionsSection = styled48__default.default.div`
10560
10658
  gap: ${tokens.spacing.sm};
10561
10659
  padding: ${tokens.spacing.sm} ${tokens.spacing.md} ${tokens.spacing.md};
10562
10660
  border-top: 1px solid ${tokens.colors.border.subtle};
10661
+ flex: 1;
10662
+ overflow-y: auto;
10663
+ min-height: 0;
10563
10664
  `;
10564
10665
  var TransactionsHeader = styled48__default.default.h4`
10565
10666
  margin: 0;
@@ -10571,20 +10672,23 @@ var TransactionsHeader = styled48__default.default.h4`
10571
10672
  var TransactionsList = styled48__default.default.div`
10572
10673
  display: flex;
10573
10674
  flex-direction: column;
10574
- gap: ${tokens.spacing.xs};
10675
+ gap: ${tokens.spacing.sm};
10575
10676
  `;
10576
10677
  var TransactionItem = styled48__default.default.div`
10577
10678
  display: flex;
10578
10679
  align-items: center;
10579
10680
  gap: ${tokens.spacing.sm};
10580
10681
  padding: ${tokens.spacing.sm};
10581
- border-radius: ${tokens.borderRadius.sm};
10682
+ background: ${tokens.colors.background.dark};
10683
+ border-radius: ${tokens.borderRadius.lg};
10684
+ border: 1px solid ${tokens.colors.border.default};
10582
10685
  min-width: 0;
10583
10686
  overflow: hidden;
10584
- transition: background-color ${tokens.transitions.fast};
10687
+ transition: border-color ${tokens.transitions.fast},
10688
+ background-color ${tokens.transitions.fast};
10585
10689
 
10586
10690
  &:hover {
10587
- background-color: ${tokens.colors.surface.overlayHover};
10691
+ border-color: ${tokens.colors.border.hover};
10588
10692
  }
10589
10693
  `;
10590
10694
  var TransactionIcon = styled48__default.default.span`
@@ -10778,7 +10882,6 @@ var Card3 = styled48__default.default.button`
10778
10882
  }
10779
10883
 
10780
10884
  &:disabled {
10781
- opacity: 0.5;
10782
10885
  cursor: not-allowed;
10783
10886
  }
10784
10887
  `;