@manta-eu/react 0.1.0 → 0.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.
Files changed (109) hide show
  1. package/README.md +101 -35
  2. package/dist/components/channel-icon/index.d.ts +1 -2
  3. package/dist/components/channel-icon/index.d.ts.map +1 -1
  4. package/dist/components/channel-icon/index.js +0 -4
  5. package/dist/components/plan-row/index.d.ts +2 -1
  6. package/dist/components/plan-row/index.d.ts.map +1 -1
  7. package/dist/components/plan-row/index.js +2 -14
  8. package/dist/globals.css +146 -90
  9. package/dist/graph/nodes/AdMockupCard.js +1 -1
  10. package/dist/graph/nodes/CreativeMediaCard.js +1 -1
  11. package/dist/graph/nodes/EntityCardShell.js +1 -1
  12. package/dist/hooks/use-conversation-starters.d.ts +1 -1
  13. package/dist/hooks/useValidateActionPlan.d.ts.map +1 -1
  14. package/dist/routes/memories/components/ChangeScopeDialog.d.ts +12 -0
  15. package/dist/routes/memories/components/ChangeScopeDialog.d.ts.map +1 -0
  16. package/dist/routes/memories/components/ChangeScopeDialog.js +89 -0
  17. package/dist/routes/memories/components/ConflictMemoryCard.d.ts +13 -0
  18. package/dist/routes/memories/components/ConflictMemoryCard.d.ts.map +1 -0
  19. package/dist/routes/memories/components/ConflictMemoryCard.js +43 -0
  20. package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts +7 -0
  21. package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts.map +1 -0
  22. package/dist/routes/memories/components/ConflictTimeoutFooter.js +6 -0
  23. package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts +61 -0
  24. package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts.map +1 -0
  25. package/dist/routes/memories/components/ConsolidationReviewDialog.js +121 -0
  26. package/dist/routes/memories/components/EmptyStates.d.ts +18 -0
  27. package/dist/routes/memories/components/EmptyStates.d.ts.map +1 -0
  28. package/dist/routes/memories/components/EmptyStates.js +22 -0
  29. package/dist/routes/memories/components/ImportanceSlider.d.ts +11 -0
  30. package/dist/routes/memories/components/ImportanceSlider.d.ts.map +1 -0
  31. package/dist/routes/memories/components/ImportanceSlider.js +31 -0
  32. package/dist/routes/memories/components/LiveContextTab.d.ts +6 -0
  33. package/dist/routes/memories/components/LiveContextTab.d.ts.map +1 -0
  34. package/dist/routes/memories/components/LiveContextTab.js +37 -0
  35. package/dist/routes/memories/components/LoadingSkeleton.d.ts +2 -0
  36. package/dist/routes/memories/components/LoadingSkeleton.d.ts.map +1 -0
  37. package/dist/routes/memories/components/LoadingSkeleton.js +7 -0
  38. package/dist/routes/memories/components/MemoriesFilters.d.ts +31 -0
  39. package/dist/routes/memories/components/MemoriesFilters.d.ts.map +1 -0
  40. package/dist/routes/memories/components/MemoriesFilters.js +88 -0
  41. package/dist/routes/memories/components/MemoriesPanel.d.ts +6 -0
  42. package/dist/routes/memories/components/MemoriesPanel.d.ts.map +1 -0
  43. package/dist/routes/memories/components/MemoriesPanel.js +99 -0
  44. package/dist/routes/memories/components/MemoriesTabPanel.d.ts +30 -0
  45. package/dist/routes/memories/components/MemoriesTabPanel.d.ts.map +1 -0
  46. package/dist/routes/memories/components/MemoriesTabPanel.js +11 -0
  47. package/dist/routes/memories/components/MemoryActions.d.ts +12 -0
  48. package/dist/routes/memories/components/MemoryActions.d.ts.map +1 -0
  49. package/dist/routes/memories/components/MemoryActions.js +24 -0
  50. package/dist/routes/memories/components/MemoryFields.d.ts +32 -0
  51. package/dist/routes/memories/components/MemoryFields.d.ts.map +1 -0
  52. package/dist/routes/memories/components/MemoryFields.js +30 -0
  53. package/dist/routes/memories/components/MemoryFormDialog.d.ts +15 -0
  54. package/dist/routes/memories/components/MemoryFormDialog.d.ts.map +1 -0
  55. package/dist/routes/memories/components/MemoryFormDialog.js +299 -0
  56. package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts +9 -0
  57. package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts.map +1 -0
  58. package/dist/routes/memories/components/MemoryOnboardingWizard.js +99 -0
  59. package/dist/routes/memories/components/RestoreBlockedDialog.d.ts +8 -0
  60. package/dist/routes/memories/components/RestoreBlockedDialog.d.ts.map +1 -0
  61. package/dist/routes/memories/components/RestoreBlockedDialog.js +7 -0
  62. package/dist/routes/memories/components/SchemasTab.d.ts +6 -0
  63. package/dist/routes/memories/components/SchemasTab.d.ts.map +1 -0
  64. package/dist/routes/memories/components/SchemasTab.js +35 -0
  65. package/dist/routes/memories/components/SupersessionConflictDialog.d.ts +18 -0
  66. package/dist/routes/memories/components/SupersessionConflictDialog.d.ts.map +1 -0
  67. package/dist/routes/memories/components/SupersessionConflictDialog.js +78 -0
  68. package/dist/routes/memories/components/TeamPicker.d.ts +8 -0
  69. package/dist/routes/memories/components/TeamPicker.d.ts.map +1 -0
  70. package/dist/routes/memories/components/TeamPicker.js +25 -0
  71. package/dist/routes/memories/components/badges.d.ts +50 -0
  72. package/dist/routes/memories/components/badges.d.ts.map +1 -0
  73. package/dist/routes/memories/components/badges.js +106 -0
  74. package/dist/routes/memories/expiry-utils.d.ts +23 -0
  75. package/dist/routes/memories/expiry-utils.d.ts.map +1 -0
  76. package/dist/routes/memories/expiry-utils.js +97 -0
  77. package/dist/routes/memories/hooks/useConflictCheck.d.ts +18 -0
  78. package/dist/routes/memories/hooks/useConflictCheck.d.ts.map +1 -0
  79. package/dist/routes/memories/hooks/useConflictCheck.js +35 -0
  80. package/dist/routes/memories/hooks/useDuplicateDetection.d.ts +11 -0
  81. package/dist/routes/memories/hooks/useDuplicateDetection.d.ts.map +1 -0
  82. package/dist/routes/memories/hooks/useDuplicateDetection.js +73 -0
  83. package/dist/routes/memories/hooks/useLiveContext.d.ts +23 -0
  84. package/dist/routes/memories/hooks/useLiveContext.d.ts.map +1 -0
  85. package/dist/routes/memories/hooks/useLiveContext.js +102 -0
  86. package/dist/routes/memories/hooks/useMemoryColumns.d.ts +33 -0
  87. package/dist/routes/memories/hooks/useMemoryColumns.d.ts.map +1 -0
  88. package/dist/routes/memories/hooks/useMemoryColumns.js +188 -0
  89. package/dist/routes/memories/hooks/useMemoryTable.d.ts +33 -0
  90. package/dist/routes/memories/hooks/useMemoryTable.d.ts.map +1 -0
  91. package/dist/routes/memories/hooks/useMemoryTable.js +121 -0
  92. package/dist/routes/memories/index.d.ts +11 -0
  93. package/dist/routes/memories/index.d.ts.map +1 -0
  94. package/dist/routes/memories/index.js +472 -0
  95. package/dist/routes/memories/memory-form-validation.d.ts +8 -0
  96. package/dist/routes/memories/memory-form-validation.d.ts.map +1 -0
  97. package/dist/routes/memories/memory-form-validation.js +33 -0
  98. package/dist/routes/memories/memory-mutation-input.d.ts +6 -0
  99. package/dist/routes/memories/memory-mutation-input.d.ts.map +1 -0
  100. package/dist/routes/memories/memory-mutation-input.js +41 -0
  101. package/dist/routes/plans/components/actionPlansTableConfig.d.ts +3 -3
  102. package/package.json +12 -7
  103. package/src/globals.css +13 -18
  104. package/src/themes/manta-dark.css +0 -4
  105. package/src/themes/standard.css +11 -11
  106. package/dist/components/channel-icon/marketer-icon.d.ts +0 -4
  107. package/dist/components/channel-icon/marketer-icon.d.ts.map +0 -1
  108. package/dist/components/channel-icon/marketer-icon.js +0 -6
  109. package/src/themes/marketer-dark.css +0 -70
package/dist/globals.css CHANGED
@@ -108,10 +108,9 @@
108
108
  --font-gellix: var(--font-gellix), sans-serif;
109
109
  --font-roobertpro: var(--font-roobertpro), sans-serif;
110
110
  --font-ad-preview: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif, var(--font-roobertpro);
111
- --color-marketer-300: #60c686;
112
- --color-marketer-400: #2fa974;
113
- --color-marketer-500: #037152;
114
- --color-marketer-800: #0d2c21;
111
+ --color-brand-300: #60c686;
112
+ --color-brand-400: #2fa974;
113
+ --color-brand-500: #037152;
115
114
  --color-neutral-150: #ededed;
116
115
  --color-background: var(--color-neutral-100);
117
116
  --color-base-background: var(--color-background);
@@ -123,8 +122,8 @@
123
122
  --color-input: #ffffff;
124
123
  --color-input-hover: var(--color-neutral-50);
125
124
  --color-disabled: var(--color-neutral-100);
126
- --color-primary: var(--color-marketer-300, #60c686);
127
- --color-primary-hover: var(--color-marketer-400, #2fa974);
125
+ --color-primary: var(--color-brand-300, #60c686);
126
+ --color-primary-hover: var(--color-brand-400, #2fa974);
128
127
  --color-secondary: var(--color-neutral-950, #0a0a0a);
129
128
  --color-secondary-hover: var(--color-neutral-800, #262626);
130
129
  --color-warning: #ffedd5;
@@ -140,7 +139,7 @@
140
139
  --color-muted-foreground: var(--color-neutral-500);
141
140
  --color-disabled-foreground: var(--color-neutral-400);
142
141
  --color-placeholder-foreground: var(--color-neutral-400);
143
- --color-accent-foreground: var(--color-marketer-500, #037152);
142
+ --color-accent-foreground: var(--color-brand-500, #037152);
144
143
  --color-primary-foreground: var(--color-neutral-900, #171717);
145
144
  --color-secondary-foreground: #ffffff;
146
145
  --color-success-foreground: #16a34a;
@@ -161,7 +160,7 @@
161
160
  --color-muted-border: var(--color-neutral-150);
162
161
  --color-input-border: var(--color-neutral-200);
163
162
  --color-disabled-border: var(--color-neutral-100);
164
- --color-active-border: var(--color-marketer-500);
163
+ --color-active-border: var(--color-brand-500);
165
164
  --color-error-border: #ef4444;
166
165
  --radius-xs-v4: 0.25rem;
167
166
  --radius-sm-v4: 0.5rem;
@@ -701,6 +700,9 @@
701
700
  .m-0\.5 {
702
701
  margin: calc(var(--spacing) * 0.5);
703
702
  }
703
+ .m-4 {
704
+ margin: calc(var(--spacing) * 4);
705
+ }
704
706
  .m-auto {
705
707
  margin: auto;
706
708
  }
@@ -710,6 +712,9 @@
710
712
  .-mx-2 {
711
713
  margin-inline: calc(var(--spacing) * -2);
712
714
  }
715
+ .-mx-8 {
716
+ margin-inline: calc(var(--spacing) * -8);
717
+ }
713
718
  .-mx-px {
714
719
  margin-inline: -1px;
715
720
  }
@@ -797,9 +802,15 @@
797
802
  .mr-2 {
798
803
  margin-right: calc(var(--spacing) * 2);
799
804
  }
805
+ .mr-auto {
806
+ margin-right: auto;
807
+ }
800
808
  .mb-0 {
801
809
  margin-bottom: calc(var(--spacing) * 0);
802
810
  }
811
+ .mb-0\.5 {
812
+ margin-bottom: calc(var(--spacing) * 0.5);
813
+ }
803
814
  .mb-1 {
804
815
  margin-bottom: calc(var(--spacing) * 1);
805
816
  }
@@ -860,6 +871,9 @@
860
871
  .ml-6 {
861
872
  margin-left: calc(var(--spacing) * 6);
862
873
  }
874
+ .ml-8 {
875
+ margin-left: calc(var(--spacing) * 8);
876
+ }
863
877
  .ml-auto {
864
878
  margin-left: auto;
865
879
  }
@@ -986,6 +1000,10 @@
986
1000
  width: calc(var(--spacing) * 1);
987
1001
  height: calc(var(--spacing) * 1);
988
1002
  }
1003
+ .size-1\.5 {
1004
+ width: calc(var(--spacing) * 1.5);
1005
+ height: calc(var(--spacing) * 1.5);
1006
+ }
989
1007
  .size-1\.25 {
990
1008
  width: calc(var(--spacing) * 1.25);
991
1009
  height: calc(var(--spacing) * 1.25);
@@ -1242,6 +1260,9 @@
1242
1260
  .h-82\.5 {
1243
1261
  height: calc(var(--spacing) * 82.5);
1244
1262
  }
1263
+ .h-96 {
1264
+ height: calc(var(--spacing) * 96);
1265
+ }
1245
1266
  .h-\[1em\] {
1246
1267
  height: 1em;
1247
1268
  }
@@ -1404,6 +1425,9 @@
1404
1425
  .min-h-55 {
1405
1426
  min-height: calc(var(--spacing) * 55);
1406
1427
  }
1428
+ .min-h-64 {
1429
+ min-height: calc(var(--spacing) * 64);
1430
+ }
1407
1431
  .min-h-96 {
1408
1432
  min-height: calc(var(--spacing) * 96);
1409
1433
  }
@@ -1656,6 +1680,9 @@
1656
1680
  .w-\[calc\(100\%-32px\)\] {
1657
1681
  width: calc(100% - 32px);
1658
1682
  }
1683
+ .w-\[var\(--radix-popover-trigger-width\,320px\)\] {
1684
+ width: var(--radix-popover-trigger-width,320px);
1685
+ }
1659
1686
  .w-auto {
1660
1687
  width: auto;
1661
1688
  }
@@ -1707,6 +1734,9 @@
1707
1734
  .max-w-50 {
1708
1735
  max-width: calc(var(--spacing) * 50);
1709
1736
  }
1737
+ .max-w-52 {
1738
+ max-width: calc(var(--spacing) * 52);
1739
+ }
1710
1740
  .max-w-55 {
1711
1741
  max-width: calc(var(--spacing) * 55);
1712
1742
  }
@@ -1728,6 +1758,9 @@
1728
1758
  .max-w-90 {
1729
1759
  max-width: calc(var(--spacing) * 90);
1730
1760
  }
1761
+ .max-w-96 {
1762
+ max-width: calc(var(--spacing) * 96);
1763
+ }
1731
1764
  .max-w-140 {
1732
1765
  max-width: calc(var(--spacing) * 140);
1733
1766
  }
@@ -1737,6 +1770,12 @@
1737
1770
  .max-w-270 {
1738
1771
  max-width: calc(var(--spacing) * 270);
1739
1772
  }
1773
+ .max-w-\[24ch\] {
1774
+ max-width: 24ch;
1775
+ }
1776
+ .max-w-\[28ch\] {
1777
+ max-width: 28ch;
1778
+ }
1740
1779
  .max-w-\[40\%\] {
1741
1780
  max-width: 40%;
1742
1781
  }
@@ -1848,21 +1887,33 @@
1848
1887
  .min-w-20 {
1849
1888
  min-width: calc(var(--spacing) * 20);
1850
1889
  }
1890
+ .min-w-24 {
1891
+ min-width: calc(var(--spacing) * 24);
1892
+ }
1851
1893
  .min-w-32 {
1852
1894
  min-width: calc(var(--spacing) * 32);
1853
1895
  }
1896
+ .min-w-36 {
1897
+ min-width: calc(var(--spacing) * 36);
1898
+ }
1854
1899
  .min-w-40 {
1855
1900
  min-width: calc(var(--spacing) * 40);
1856
1901
  }
1857
1902
  .min-w-45 {
1858
1903
  min-width: calc(var(--spacing) * 45);
1859
1904
  }
1905
+ .min-w-48 {
1906
+ min-width: calc(var(--spacing) * 48);
1907
+ }
1860
1908
  .min-w-50 {
1861
1909
  min-width: calc(var(--spacing) * 50);
1862
1910
  }
1863
1911
  .min-w-55 {
1864
1912
  min-width: calc(var(--spacing) * 55);
1865
1913
  }
1914
+ .min-w-56 {
1915
+ min-width: calc(var(--spacing) * 56);
1916
+ }
1866
1917
  .min-w-60 {
1867
1918
  min-width: calc(var(--spacing) * 60);
1868
1919
  }
@@ -1935,6 +1986,9 @@
1935
1986
  .grow {
1936
1987
  flex-grow: 1;
1937
1988
  }
1989
+ .table-fixed {
1990
+ table-layout: fixed;
1991
+ }
1938
1992
  .caption-bottom {
1939
1993
  caption-side: bottom;
1940
1994
  }
@@ -2140,6 +2194,9 @@
2140
2194
  .grid-cols-\[2\.5rem_1fr_2rem\] {
2141
2195
  grid-template-columns: 2.5rem 1fr 2rem;
2142
2196
  }
2197
+ .grid-cols-\[16fr_24fr_11fr_9fr_7fr_10fr_9fr_10fr_4fr\] {
2198
+ grid-template-columns: 16fr 24fr 11fr 9fr 7fr 10fr 9fr 10fr 4fr;
2199
+ }
2143
2200
  .grid-cols-\[110px_120px_150px_minmax\(480px\,1fr\)\] {
2144
2201
  grid-template-columns: 110px 120px 150px minmax(480px,1fr);
2145
2202
  }
@@ -2902,6 +2959,12 @@
2902
2959
  border-color: color-mix(in oklab, var(--color-warning-foreground) 40%, transparent);
2903
2960
  }
2904
2961
  }
2962
+ .border-warning\/30 {
2963
+ border-color: color-mix(in srgb, #ffedd5 30%, transparent);
2964
+ @supports (color: color-mix(in lab, red, red)) {
2965
+ border-color: color-mix(in oklab, var(--color-warning) 30%, transparent);
2966
+ }
2967
+ }
2905
2968
  .border-yellow-200 {
2906
2969
  border-color: var(--color-yellow-200);
2907
2970
  }
@@ -3127,6 +3190,12 @@
3127
3190
  background-color: color-mix(in oklab, var(--color-default-foreground) 40%, transparent);
3128
3191
  }
3129
3192
  }
3193
+ .bg-default-foreground\/50 {
3194
+ background-color: color-mix(in srgb, #171717 50%, transparent);
3195
+ @supports (color: color-mix(in lab, red, red)) {
3196
+ background-color: color-mix(in oklab, var(--color-default-foreground) 50%, transparent);
3197
+ }
3198
+ }
3130
3199
  .bg-error {
3131
3200
  background-color: var(--color-error);
3132
3201
  }
@@ -3385,6 +3454,12 @@
3385
3454
  background-color: color-mix(in oklab, var(--color-success-foreground) 15%, transparent);
3386
3455
  }
3387
3456
  }
3457
+ .bg-success\/10 {
3458
+ background-color: color-mix(in srgb, #dcfce7 10%, transparent);
3459
+ @supports (color: color-mix(in lab, red, red)) {
3460
+ background-color: color-mix(in oklab, var(--color-success) 10%, transparent);
3461
+ }
3462
+ }
3388
3463
  .bg-success\/40 {
3389
3464
  background-color: color-mix(in srgb, #dcfce7 40%, transparent);
3390
3465
  @supports (color: color-mix(in lab, red, red)) {
@@ -3977,6 +4052,9 @@
3977
4052
  .align-text-bottom {
3978
4053
  vertical-align: text-bottom;
3979
4054
  }
4055
+ .align-top {
4056
+ vertical-align: top;
4057
+ }
3980
4058
  .font-ad-preview {
3981
4059
  font-family: var(--font-ad-preview);
3982
4060
  }
@@ -4371,6 +4449,12 @@
4371
4449
  color: color-mix(in oklab, var(--color-default-foreground) 50%, transparent);
4372
4450
  }
4373
4451
  }
4452
+ .text-default-foreground\/60 {
4453
+ color: color-mix(in srgb, #171717 60%, transparent);
4454
+ @supports (color: color-mix(in lab, red, red)) {
4455
+ color: color-mix(in oklab, var(--color-default-foreground) 60%, transparent);
4456
+ }
4457
+ }
4374
4458
  .text-default-foreground\/70 {
4375
4459
  color: color-mix(in srgb, #171717 70%, transparent);
4376
4460
  @supports (color: color-mix(in lab, red, red)) {
@@ -4437,6 +4521,9 @@
4437
4521
  .text-instagram-accent-foreground {
4438
4522
  color: var(--color-instagram-accent-foreground);
4439
4523
  }
4524
+ .text-muted-border {
4525
+ color: var(--color-muted-border);
4526
+ }
4440
4527
  .text-muted-foreground {
4441
4528
  color: var(--color-muted-foreground);
4442
4529
  }
@@ -4672,7 +4759,7 @@
4672
4759
  box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.06),
4673
4760
  0 4px 8px 0 rgba(0, 0, 0, 0.04);
4674
4761
  }
4675
- .shadow-marketerlight {
4762
+ .shadow-light {
4676
4763
  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1),
4677
4764
  0 1px 2px -1px rgba(0, 0, 0, 0.1);
4678
4765
  }
@@ -5494,6 +5581,12 @@
5494
5581
  border-bottom-right-radius: var(--radius-2xl-v4);
5495
5582
  }
5496
5583
  }
5584
+ .last\:border-0 {
5585
+ &:last-child {
5586
+ border-style: var(--tw-border-style);
5587
+ border-width: 0px;
5588
+ }
5589
+ }
5497
5590
  .last\:border-b-0 {
5498
5591
  &:last-child {
5499
5592
  border-bottom-style: var(--tw-border-style);
@@ -5745,6 +5838,14 @@
5745
5838
  }
5746
5839
  }
5747
5840
  }
5841
+ .hover\:bg-muted\/80 {
5842
+ &:is(:hover, [data-state="hover"]) {
5843
+ background-color: color-mix(in srgb, #f5f5f5 80%, transparent);
5844
+ @supports (color: color-mix(in lab, red, red)) {
5845
+ background-color: color-mix(in oklab, var(--color-muted) 80%, transparent);
5846
+ }
5847
+ }
5848
+ }
5748
5849
  .hover\:bg-primary-hover {
5749
5850
  &:is(:hover, [data-state="hover"]) {
5750
5851
  background-color: var(--color-primary-hover);
@@ -5831,6 +5932,11 @@
5831
5932
  text-decoration-color: var(--color-primary);
5832
5933
  }
5833
5934
  }
5935
+ .hover\:opacity-70 {
5936
+ &:is(:hover, [data-state="hover"]) {
5937
+ opacity: 70%;
5938
+ }
5939
+ }
5834
5940
  .hover\:opacity-100 {
5835
5941
  &:is(:hover, [data-state="hover"]) {
5836
5942
  opacity: 100%;
@@ -7224,6 +7330,11 @@
7224
7330
  margin-top: calc(var(--spacing) * 3.5);
7225
7331
  }
7226
7332
  }
7333
+ .sm\:mr-auto {
7334
+ @media (width >= 40rem) {
7335
+ margin-right: auto;
7336
+ }
7337
+ }
7227
7338
  .sm\:block {
7228
7339
  @media (width >= 40rem) {
7229
7340
  display: block;
@@ -7587,6 +7698,21 @@
7587
7698
  padding-block: calc(var(--spacing) * 4);
7588
7699
  }
7589
7700
  }
7701
+ .\32 xl\:shrink {
7702
+ @media (width >= 96rem) {
7703
+ flex-shrink: 1;
7704
+ }
7705
+ }
7706
+ .\32 xl\:flex-row {
7707
+ @media (width >= 96rem) {
7708
+ flex-direction: row;
7709
+ }
7710
+ }
7711
+ .\32 xl\:items-center {
7712
+ @media (width >= 96rem) {
7713
+ align-items: center;
7714
+ }
7715
+ }
7590
7716
  .\@max-md\:hidden {
7591
7717
  @container (width < 28rem) {
7592
7718
  display: none;
@@ -8364,13 +8490,13 @@
8364
8490
  :root {
8365
8491
  --font-gellix: var(--font-gellix), sans-serif;
8366
8492
  --font-roobertpro: var(--font-roobertpro), sans-serif;
8367
- --color-marketer-50: #f0fff5;
8368
- --color-marketer-200: #98ecb7;
8369
- --color-marketer-300: #60c686;
8370
- --color-marketer-400: #2fa974;
8371
- --color-marketer-500: #037152;
8372
- --color-marketer-800: #0d2c21;
8373
- --color-marketer-950: #071812;
8493
+ --color-brand-50: #f0fff5;
8494
+ --color-brand-200: #98ecb7;
8495
+ --color-brand-300: #60c686;
8496
+ --color-brand-400: #2fa974;
8497
+ --color-brand-500: #037152;
8498
+ --color-brand-800: #0d2c21;
8499
+ --color-brand-950: #071812;
8374
8500
  --color-neutral-50: #fafafa;
8375
8501
  --color-neutral-100: #f5f5f5;
8376
8502
  --color-neutral-150: #ededed;
@@ -8392,8 +8518,8 @@
8392
8518
  --color-input: #ffffff;
8393
8519
  --color-input-hover: var(--color-neutral-50);
8394
8520
  --color-disabled: var(--color-neutral-100);
8395
- --color-primary: var(--color-marketer-300, #60c686);
8396
- --color-primary-hover: var(--color-marketer-400, #2fa974);
8521
+ --color-primary: var(--color-brand-300, #60c686);
8522
+ --color-primary-hover: var(--color-brand-400, #2fa974);
8397
8523
  --color-secondary: var(--color-neutral-950, #0a0a0a);
8398
8524
  --color-secondary-hover: var(--color-neutral-800, #262626);
8399
8525
  --color-warning: #ffedd5;
@@ -8409,7 +8535,7 @@
8409
8535
  --color-muted-foreground: var(--color-neutral-500);
8410
8536
  --color-disabled-foreground: var(--color-neutral-400);
8411
8537
  --color-placeholder-foreground: var(--color-neutral-400);
8412
- --color-accent-foreground: var(--color-marketer-500, #037152);
8538
+ --color-accent-foreground: var(--color-brand-500, #037152);
8413
8539
  --color-primary-foreground: var(--color-neutral-900, #171717);
8414
8540
  --color-secondary-foreground: #ffffff;
8415
8541
  --color-success-foreground: #16a34a;
@@ -8423,7 +8549,7 @@
8423
8549
  --color-muted-border: var(--color-neutral-150);
8424
8550
  --color-input-border: var(--color-neutral-200);
8425
8551
  --color-disabled-border: var(--color-neutral-100);
8426
- --color-active-border: var(--color-marketer-500);
8552
+ --color-active-border: var(--color-brand-500);
8427
8553
  --color-error-border: #ef4444;
8428
8554
  --color-google-accent-foreground: #1a0dab;
8429
8555
  --color-google-primary-background: #4285f4;
@@ -8589,73 +8715,6 @@
8589
8715
  --font-weight-semibold: 620;
8590
8716
  --font-weight-bold: 700;
8591
8717
  }
8592
- [data-theme="manta-dark"] .channel-icon-marketer {
8593
- color: white;
8594
- }
8595
- [data-theme="marketer-dark"] {
8596
- --color-background: #070807;
8597
- --color-faint: #151716;
8598
- --color-muted: #181b19;
8599
- --color-accent: #1f2321;
8600
- --color-card: #111211;
8601
- --color-base-background: var(--color-background);
8602
- --color-sidebar: var(--color-card);
8603
- --color-input: #111211;
8604
- --color-input-hover: #151716;
8605
- --color-disabled: #151716;
8606
- --color-primary: #60c686;
8607
- --color-primary-hover: #2fa974;
8608
- --color-secondary: #28342d;
8609
- --color-secondary-hover: #1f2823;
8610
- --color-warning: #331e0b;
8611
- --color-error: #3b1219;
8612
- --color-error-hover: #3b1219;
8613
- --color-success: #132d21;
8614
- --color-info: #111727;
8615
- --color-info-accent: #0c1021;
8616
- --color-rank-1: #422006;
8617
- --color-rank-2: #1e293b;
8618
- --color-rank-3: #431407;
8619
- --color-default-foreground: #ffffff;
8620
- --color-muted-foreground: #808a84;
8621
- --color-placeholder-foreground: #4e5551;
8622
- --color-disabled-foreground: #4e5551;
8623
- --color-primary-foreground: #171717;
8624
- --color-secondary-foreground: #ffffff;
8625
- --color-accent-foreground: #60c686;
8626
- --color-success-foreground: #3dd68c;
8627
- --color-warning-foreground: #ffa057;
8628
- --color-error-foreground: #ff9592;
8629
- --color-info-foreground: #7094ff;
8630
- --color-creative-accent: #0c1021;
8631
- --color-creative-accent-foreground: #1ea1f7;
8632
- --color-rank-1-foreground: #fbbf24;
8633
- --color-rank-2-foreground: #cbd5e1;
8634
- --color-rank-3-foreground: #fb923c;
8635
- --color-default-border: #2a322d;
8636
- --color-muted-border: #1c221e;
8637
- --color-input-border: #2a322d;
8638
- --color-disabled-border: #1c221e;
8639
- --color-active-border: #2fa974;
8640
- --color-error-border: #ff9592;
8641
- --color-google-accent-foreground: #ffffff;
8642
- --color-google-primary-background: #ffffff;
8643
- --color-google-primary-foreground: #171717;
8644
- --color-google-rating: #fbbc04;
8645
- --radius-xs-v4: 0.25rem;
8646
- --radius-sm-v4: 0.5rem;
8647
- --radius-md-v4: 0.75rem;
8648
- --radius-lg-v4: 1rem;
8649
- --radius-xl-v4: 1.5rem;
8650
- --radius-2xl-v4: 2rem;
8651
- --font-weight-normal: 470;
8652
- --font-weight-medium: 540;
8653
- --font-weight-semibold: 620;
8654
- --font-weight-bold: 720;
8655
- }
8656
- [data-theme="marketer-dark"] .channel-icon-marketer {
8657
- color: #ffffff;
8658
- }
8659
8718
  @layer base {
8660
8719
  *,
8661
8720
  ::after,
@@ -8686,9 +8745,6 @@
8686
8745
  body {
8687
8746
  height: 100%;
8688
8747
  }
8689
- .channel-icon-marketer {
8690
- color: var(--color-marketer-800);
8691
- }
8692
8748
  }
8693
8749
  @layer utilities {
8694
8750
  body {
@@ -12,7 +12,7 @@ export function AdMockupHeader(props) {
12
12
  export function AdMockupCard(props) {
13
13
  const { label, brandName, imageUrl, description, ctaLabel, selected, ringColor, onContextMenu, iri, schema } = props;
14
14
  const [platform, setPlatform] = useState("instagram");
15
- return (_jsxs("div", { className: "w-fit flex flex-col items-start gap-1", onContextMenu: onContextMenu, children: [_jsx(AdMockupHeader, { label: label, iri: iri, schema: schema }), _jsxs("div", { className: cn("rounded-[10px] overflow-hidden p-1 flex flex-col gap-1 transition-all duration-200 bg-card", !selected && "shadow-marketerlight"), style: selected && ringColor ? { boxShadow: `0 0 0 1.5px ${ringColor}` } : undefined, children: [_jsxs("div", { className: "flex items-center p-0.75 rounded-lg gap-0.75 bg-[#f3f6fc] dark:bg-[#1f2937]", children: [_jsx("button", { type: "button", "aria-label": "Instagram preview", "aria-pressed": platform === "instagram", onClick: (e) => {
15
+ return (_jsxs("div", { className: "w-fit flex flex-col items-start gap-1", onContextMenu: onContextMenu, children: [_jsx(AdMockupHeader, { label: label, iri: iri, schema: schema }), _jsxs("div", { className: cn("rounded-[10px] overflow-hidden p-1 flex flex-col gap-1 transition-all duration-200 bg-card", !selected && "shadow-light"), style: selected && ringColor ? { boxShadow: `0 0 0 1.5px ${ringColor}` } : undefined, children: [_jsxs("div", { className: "flex items-center p-0.75 rounded-lg gap-0.75 bg-[#f3f6fc] dark:bg-[#1f2937]", children: [_jsx("button", { type: "button", "aria-label": "Instagram preview", "aria-pressed": platform === "instagram", onClick: (e) => {
16
16
  e.stopPropagation();
17
17
  setPlatform("instagram");
18
18
  }, className: cn("flex-1 h-8 rounded-md flex items-center justify-center transition-all cursor-pointer", platform === "instagram"
@@ -16,7 +16,7 @@ export function CreativeMediaCard(props) {
16
16
  const { label, titlePrefix, imageUrl, sourceName, selected, ringColor, onContextMenu } = props;
17
17
  const [aspectRatio, setAspectRatio] = useState("portrait");
18
18
  const stop = (e) => e.stopPropagation();
19
- return (_jsxs("div", { className: "w-fit flex flex-col items-start gap-1", onContextMenu: onContextMenu, children: [_jsxs("div", { className: "flex w-48 items-center gap-1.25 px-1", children: [_jsx(ImageIcon, { size: 14, className: "shrink-0 text-muted-foreground" }), _jsxs("span", { className: "typography-tiny min-w-0 flex-1 truncate whitespace-nowrap text-muted-foreground", children: [titlePrefix, ": ", label] })] }), _jsxs("div", { className: cn("w-48 rounded-[10px] overflow-hidden p-1 flex flex-col gap-1 transition-all duration-200 bg-card", !selected && "shadow-marketerlight"), style: selected && ringColor ? { boxShadow: `0 0 0 1.5px ${ringColor}` } : undefined, children: [_jsxs("div", { className: "flex items-center p-0.75 rounded-lg gap-0.75 bg-[#f3f6fc] dark:bg-[#1f2937]", children: [_jsx(AspectButton, { active: aspectRatio === "square", ariaLabel: "Square aspect ratio", onClick: (e) => {
19
+ return (_jsxs("div", { className: "w-fit flex flex-col items-start gap-1", onContextMenu: onContextMenu, children: [_jsxs("div", { className: "flex w-48 items-center gap-1.25 px-1", children: [_jsx(ImageIcon, { size: 14, className: "shrink-0 text-muted-foreground" }), _jsxs("span", { className: "typography-tiny min-w-0 flex-1 truncate whitespace-nowrap text-muted-foreground", children: [titlePrefix, ": ", label] })] }), _jsxs("div", { className: cn("w-48 rounded-[10px] overflow-hidden p-1 flex flex-col gap-1 transition-all duration-200 bg-card", !selected && "shadow-light"), style: selected && ringColor ? { boxShadow: `0 0 0 1.5px ${ringColor}` } : undefined, children: [_jsxs("div", { className: "flex items-center p-0.75 rounded-lg gap-0.75 bg-[#f3f6fc] dark:bg-[#1f2937]", children: [_jsx(AspectButton, { active: aspectRatio === "square", ariaLabel: "Square aspect ratio", onClick: (e) => {
20
20
  stop(e);
21
21
  setAspectRatio("square");
22
22
  }, swatch: { w: "w-3", h: "h-3" } }), _jsx(AspectButton, { active: aspectRatio === "portrait", ariaLabel: "Portrait aspect ratio", onClick: (e) => {
@@ -3,5 +3,5 @@ import { memo } from "react";
3
3
  import { cn } from "#style";
4
4
  export const EntityCardShell = memo(function EntityCardShell(props) {
5
5
  const { icon: Icon, label, labelMaxWidth = "max-w-50", selected = false, ringColor, onContextMenu, children } = props;
6
- return (_jsxs("div", { className: "w-fit flex flex-col items-start gap-1", onContextMenu: onContextMenu, children: [_jsxs("div", { className: "flex items-center gap-1.25 px-1", children: [_jsx(Icon, { size: 14, className: "shrink-0 text-muted-foreground" }), _jsx("span", { title: typeof label === "string" ? label : undefined, className: cn("typography-tiny truncate whitespace-nowrap text-muted-foreground", labelMaxWidth), children: label })] }), _jsx("div", { className: cn("bg-card rounded-[10px] overflow-hidden p-1 transition-all duration-200", !selected && "shadow-marketerlight"), style: selected && ringColor ? { boxShadow: `0 0 0 1.5px ${ringColor}` } : undefined, children: children })] }));
6
+ return (_jsxs("div", { className: "w-fit flex flex-col items-start gap-1", onContextMenu: onContextMenu, children: [_jsxs("div", { className: "flex items-center gap-1.25 px-1", children: [_jsx(Icon, { size: 14, className: "shrink-0 text-muted-foreground" }), _jsx("span", { title: typeof label === "string" ? label : undefined, className: cn("typography-tiny truncate whitespace-nowrap text-muted-foreground", labelMaxWidth), children: label })] }), _jsx("div", { className: cn("bg-card rounded-[10px] overflow-hidden p-1 transition-all duration-200", !selected && "shadow-light"), style: selected && ringColor ? { boxShadow: `0 0 0 1.5px ${ringColor}` } : undefined, children: children })] }));
7
7
  });
@@ -1,7 +1,7 @@
1
1
  export declare function useConversationStarters(): import("@tanstack/react-query").UseQueryResult<{
2
2
  $id: string;
3
3
  label: string;
4
- integration: string | null;
5
4
  priority: number;
5
+ integration: string | null;
6
6
  }[], Error>;
7
7
  //# sourceMappingURL=use-conversation-starters.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useValidateActionPlan.d.ts","sourceRoot":"","sources":["../../src/hooks/useValidateActionPlan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS;;;;;;;;;sBAkBwz6H,CAAC;;sBAAwF,CAAC;iBAAsC,CAAC;uBAA4C,CAAC;;;mBAAuI,CAAC;;;;;EAD1s7H"}
1
+ {"version":3,"file":"useValidateActionPlan.d.ts","sourceRoot":"","sources":["../../src/hooks/useValidateActionPlan.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAErD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS;;;;;;;;;sBAkBm57H,CAAC;;sBAAwF,CAAC;iBAAsC,CAAC;uBAA4C,CAAC;;;mBAAuI,CAAC;;;;;EADry8H"}
@@ -0,0 +1,12 @@
1
+ import { GQLMemoryScope, type GQLMemory } from "@manta-eu/client";
2
+ export type ChangeScopeDialogProps = {
3
+ open: boolean;
4
+ onOpenChange: (open: boolean) => void;
5
+ memory: GQLMemory;
6
+ isOperator?: boolean;
7
+ onSave: (newScope: GQLMemoryScope, newTeams: string[], supersedesMemoryIris: string[]) => Promise<void>;
8
+ isSaving: boolean;
9
+ currentUserId?: string;
10
+ };
11
+ export declare function ChangeScopeDialog(props: ChangeScopeDialogProps): import("react/jsx-runtime").JSX.Element;
12
+ //# sourceMappingURL=ChangeScopeDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangeScopeDialog.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/ChangeScopeDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAA6B,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAiB7F,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxG,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAQF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,2CAuK9D"}
@@ -0,0 +1,89 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { GQLMemoryScope } from "@manta-eu/client";
3
+ import { isPresent } from "@manta-eu/lib/present";
4
+ import { useCallback, useEffect, useState } from "react";
5
+ import { useConflictCheck } from "../hooks/useConflictCheck.js";
6
+ import { SupersessionConflictDialog } from "./SupersessionConflictDialog.js";
7
+ import { TeamPicker } from "./TeamPicker.js";
8
+ import { Button } from "#components/button/index";
9
+ import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "#components/modal/index";
10
+ const scopeOptions = [
11
+ { value: GQLMemoryScope.User, label: "Personal" },
12
+ { value: GQLMemoryScope.Company, label: "Company" },
13
+ { value: GQLMemoryScope.Team, label: "Team" },
14
+ ];
15
+ export function ChangeScopeDialog(props) {
16
+ const { open, onOpenChange, memory, isOperator, onSave, isSaving, currentUserId } = props;
17
+ const [scope, setScope] = useState(memory.scope);
18
+ const [teams, setTeams] = useState(memory.teams);
19
+ const [pendingConflicts, setPendingConflicts] = useState([]);
20
+ const [pendingState, setPendingState] = useState(null);
21
+ const [timedOut, setTimedOut] = useState(false);
22
+ const { check, isChecking } = useConflictCheck();
23
+ useEffect(() => {
24
+ if (open) {
25
+ setScope(memory.scope);
26
+ setTeams(memory.teams);
27
+ setPendingConflicts([]);
28
+ setPendingState(null);
29
+ setTimedOut(false);
30
+ }
31
+ }, [open, memory]);
32
+ const isTeam = scope === GQLMemoryScope.Team;
33
+ const isSameScope = scope === memory.scope &&
34
+ (scope !== GQLMemoryScope.Team ||
35
+ (teams.length === memory.teams.length && teams.every((t) => memory.teams.includes(t))));
36
+ const canSave = !isSameScope && (!isTeam || isPresent(teams));
37
+ const isBusy = isSaving || isChecking;
38
+ const handleSave = useCallback(async () => {
39
+ const { conflicts, timedOut: checkTimedOut } = await check({
40
+ label: memory.label,
41
+ description: memory.description ?? "",
42
+ scope,
43
+ teams: isTeam ? teams : undefined,
44
+ excludeIri: memory.iri,
45
+ });
46
+ if (checkTimedOut) {
47
+ setPendingState({ scope, teams: isTeam ? teams : [] });
48
+ setTimedOut(true);
49
+ return;
50
+ }
51
+ if (!isPresent(conflicts)) {
52
+ await onSave(scope, isTeam ? teams : [], []);
53
+ return;
54
+ }
55
+ setPendingConflicts(conflicts);
56
+ setPendingState({ scope, teams: isTeam ? teams : [] });
57
+ }, [check, memory, scope, teams, isTeam, onSave]);
58
+ const handleConflictConfirm = useCallback(async (resolution) => {
59
+ if (!pendingState)
60
+ return;
61
+ const finalTeams = resolution.mergedTeams ?? pendingState.teams;
62
+ setPendingConflicts([]);
63
+ setPendingState(null);
64
+ await onSave(pendingState.scope, finalTeams, resolution.supersedesIris);
65
+ }, [pendingState, onSave]);
66
+ const handleSaveWithout = useCallback(async () => {
67
+ if (!pendingState)
68
+ return;
69
+ setPendingConflicts([]);
70
+ setPendingState(null);
71
+ await onSave(pendingState.scope, pendingState.teams, []);
72
+ }, [pendingState, onSave]);
73
+ const handleConflictCancel = useCallback(() => {
74
+ setPendingConflicts([]);
75
+ setPendingState(null);
76
+ }, []);
77
+ return (_jsxs(_Fragment, { children: [_jsx(Dialog, { open: open, onOpenChange: onOpenChange, children: _jsxs(DialogContent, { children: [_jsxs(DialogHeader, { children: [_jsx(DialogTitle, { text: "Change memory scope" }), _jsxs(DialogDescription, { children: ["Change the scope of \u201C", memory.label, "\u201D memory. All properties remain the same, but visibility changes."] })] }), _jsxs("div", { className: "flex flex-col gap-4 py-2", children: [_jsxs("div", { className: "flex flex-col gap-1.5", children: [_jsx("label", { className: "typography-small text-default-foreground", children: "Scope" }), _jsx("div", { className: "flex gap-2", children: scopeOptions
78
+ .filter(({ value }) => value !== GQLMemoryScope.Company || isOperator)
79
+ .map(({ value, label }) => (_jsx("button", { type: "button", onClick: () => setScope(value), className: `px-3 py-1.5 rounded-lg typography-small-medium transition-colors ${scope === value
80
+ ? "bg-primary text-primary-foreground"
81
+ : "bg-muted text-muted-foreground hover:bg-muted/80"}`, children: label }, value))) })] }), isTeam && _jsx(TeamPicker, { selected: teams, onChange: setTeams, isOperator: isOperator ?? false })] }), _jsx(DialogFooter, { children: timedOut && pendingState ? (_jsxs(_Fragment, { children: [_jsx("p", { className: "typography-small text-muted-foreground mr-auto", children: "Conflict check timed out. Move without checking?" }), _jsx(Button, { variant: "tertiary", onClick: () => {
82
+ setTimedOut(false);
83
+ setPendingState(null);
84
+ }, disabled: isSaving, children: "Cancel" }), _jsx(Button, { onClick: () => {
85
+ setTimedOut(false);
86
+ void onSave(pendingState.scope, pendingState.teams, []);
87
+ setPendingState(null);
88
+ }, disabled: isSaving, children: isSaving ? "Moving…" : "Move anyway" })] })) : (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "tertiary", onClick: () => onOpenChange(false), disabled: isBusy, children: "Cancel" }), _jsx(Button, { onClick: handleSave, disabled: !canSave || isBusy, children: isChecking ? "Checking…" : isSaving ? "Moving…" : "Move" })] })) })] }) }), isPresent(pendingConflicts) && pendingState && (_jsx(SupersessionConflictDialog, { open: true, conflicts: pendingConflicts, scope: pendingState.scope, newTeams: pendingState.teams, currentUserId: currentUserId, onConfirm: handleConflictConfirm, onSaveWithout: handleSaveWithout, onCancel: handleConflictCancel }))] }));
89
+ }
@@ -0,0 +1,13 @@
1
+ import { GQLMemoryScope, type GQLConflictingMemory } from "@manta-eu/client";
2
+ export type ConflictMemoryCardProps = {
3
+ conflict: GQLConflictingMemory;
4
+ scope: GQLMemoryScope;
5
+ checked: boolean;
6
+ onToggleChecked: () => void;
7
+ showMerge: boolean;
8
+ merging: boolean;
9
+ onToggleMerge: () => void;
10
+ currentUserId?: string;
11
+ };
12
+ export declare function ConflictMemoryCard(props: ConflictMemoryCardProps): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=ConflictMemoryCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConflictMemoryCard.d.ts","sourceRoot":"","sources":["../../../../src/routes/memories/components/ConflictMemoryCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAkC7E,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,KAAK,EAAE,cAAc,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAsEhE"}