@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.
- package/README.md +101 -35
- package/dist/components/channel-icon/index.d.ts +1 -2
- package/dist/components/channel-icon/index.d.ts.map +1 -1
- package/dist/components/channel-icon/index.js +0 -4
- package/dist/components/plan-row/index.d.ts +2 -1
- package/dist/components/plan-row/index.d.ts.map +1 -1
- package/dist/components/plan-row/index.js +2 -14
- package/dist/globals.css +146 -90
- package/dist/graph/nodes/AdMockupCard.js +1 -1
- package/dist/graph/nodes/CreativeMediaCard.js +1 -1
- package/dist/graph/nodes/EntityCardShell.js +1 -1
- package/dist/hooks/use-conversation-starters.d.ts +1 -1
- package/dist/hooks/useValidateActionPlan.d.ts.map +1 -1
- package/dist/routes/memories/components/ChangeScopeDialog.d.ts +12 -0
- package/dist/routes/memories/components/ChangeScopeDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/ChangeScopeDialog.js +89 -0
- package/dist/routes/memories/components/ConflictMemoryCard.d.ts +13 -0
- package/dist/routes/memories/components/ConflictMemoryCard.d.ts.map +1 -0
- package/dist/routes/memories/components/ConflictMemoryCard.js +43 -0
- package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts +7 -0
- package/dist/routes/memories/components/ConflictTimeoutFooter.d.ts.map +1 -0
- package/dist/routes/memories/components/ConflictTimeoutFooter.js +6 -0
- package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts +61 -0
- package/dist/routes/memories/components/ConsolidationReviewDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/ConsolidationReviewDialog.js +121 -0
- package/dist/routes/memories/components/EmptyStates.d.ts +18 -0
- package/dist/routes/memories/components/EmptyStates.d.ts.map +1 -0
- package/dist/routes/memories/components/EmptyStates.js +22 -0
- package/dist/routes/memories/components/ImportanceSlider.d.ts +11 -0
- package/dist/routes/memories/components/ImportanceSlider.d.ts.map +1 -0
- package/dist/routes/memories/components/ImportanceSlider.js +31 -0
- package/dist/routes/memories/components/LiveContextTab.d.ts +6 -0
- package/dist/routes/memories/components/LiveContextTab.d.ts.map +1 -0
- package/dist/routes/memories/components/LiveContextTab.js +37 -0
- package/dist/routes/memories/components/LoadingSkeleton.d.ts +2 -0
- package/dist/routes/memories/components/LoadingSkeleton.d.ts.map +1 -0
- package/dist/routes/memories/components/LoadingSkeleton.js +7 -0
- package/dist/routes/memories/components/MemoriesFilters.d.ts +31 -0
- package/dist/routes/memories/components/MemoriesFilters.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoriesFilters.js +88 -0
- package/dist/routes/memories/components/MemoriesPanel.d.ts +6 -0
- package/dist/routes/memories/components/MemoriesPanel.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoriesPanel.js +99 -0
- package/dist/routes/memories/components/MemoriesTabPanel.d.ts +30 -0
- package/dist/routes/memories/components/MemoriesTabPanel.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoriesTabPanel.js +11 -0
- package/dist/routes/memories/components/MemoryActions.d.ts +12 -0
- package/dist/routes/memories/components/MemoryActions.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryActions.js +24 -0
- package/dist/routes/memories/components/MemoryFields.d.ts +32 -0
- package/dist/routes/memories/components/MemoryFields.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryFields.js +30 -0
- package/dist/routes/memories/components/MemoryFormDialog.d.ts +15 -0
- package/dist/routes/memories/components/MemoryFormDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryFormDialog.js +299 -0
- package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts +9 -0
- package/dist/routes/memories/components/MemoryOnboardingWizard.d.ts.map +1 -0
- package/dist/routes/memories/components/MemoryOnboardingWizard.js +99 -0
- package/dist/routes/memories/components/RestoreBlockedDialog.d.ts +8 -0
- package/dist/routes/memories/components/RestoreBlockedDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/RestoreBlockedDialog.js +7 -0
- package/dist/routes/memories/components/SchemasTab.d.ts +6 -0
- package/dist/routes/memories/components/SchemasTab.d.ts.map +1 -0
- package/dist/routes/memories/components/SchemasTab.js +35 -0
- package/dist/routes/memories/components/SupersessionConflictDialog.d.ts +18 -0
- package/dist/routes/memories/components/SupersessionConflictDialog.d.ts.map +1 -0
- package/dist/routes/memories/components/SupersessionConflictDialog.js +78 -0
- package/dist/routes/memories/components/TeamPicker.d.ts +8 -0
- package/dist/routes/memories/components/TeamPicker.d.ts.map +1 -0
- package/dist/routes/memories/components/TeamPicker.js +25 -0
- package/dist/routes/memories/components/badges.d.ts +50 -0
- package/dist/routes/memories/components/badges.d.ts.map +1 -0
- package/dist/routes/memories/components/badges.js +106 -0
- package/dist/routes/memories/expiry-utils.d.ts +23 -0
- package/dist/routes/memories/expiry-utils.d.ts.map +1 -0
- package/dist/routes/memories/expiry-utils.js +97 -0
- package/dist/routes/memories/hooks/useConflictCheck.d.ts +18 -0
- package/dist/routes/memories/hooks/useConflictCheck.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useConflictCheck.js +35 -0
- package/dist/routes/memories/hooks/useDuplicateDetection.d.ts +11 -0
- package/dist/routes/memories/hooks/useDuplicateDetection.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useDuplicateDetection.js +73 -0
- package/dist/routes/memories/hooks/useLiveContext.d.ts +23 -0
- package/dist/routes/memories/hooks/useLiveContext.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useLiveContext.js +102 -0
- package/dist/routes/memories/hooks/useMemoryColumns.d.ts +33 -0
- package/dist/routes/memories/hooks/useMemoryColumns.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useMemoryColumns.js +188 -0
- package/dist/routes/memories/hooks/useMemoryTable.d.ts +33 -0
- package/dist/routes/memories/hooks/useMemoryTable.d.ts.map +1 -0
- package/dist/routes/memories/hooks/useMemoryTable.js +121 -0
- package/dist/routes/memories/index.d.ts +11 -0
- package/dist/routes/memories/index.d.ts.map +1 -0
- package/dist/routes/memories/index.js +472 -0
- package/dist/routes/memories/memory-form-validation.d.ts +8 -0
- package/dist/routes/memories/memory-form-validation.d.ts.map +1 -0
- package/dist/routes/memories/memory-form-validation.js +33 -0
- package/dist/routes/memories/memory-mutation-input.d.ts +6 -0
- package/dist/routes/memories/memory-mutation-input.d.ts.map +1 -0
- package/dist/routes/memories/memory-mutation-input.js +41 -0
- package/dist/routes/plans/components/actionPlansTableConfig.d.ts +3 -3
- package/package.json +12 -7
- package/src/globals.css +13 -18
- package/src/themes/manta-dark.css +0 -4
- package/src/themes/standard.css +11 -11
- package/dist/components/channel-icon/marketer-icon.d.ts +0 -4
- package/dist/components/channel-icon/marketer-icon.d.ts.map +0 -1
- package/dist/components/channel-icon/marketer-icon.js +0 -6
- 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-
|
|
112
|
-
--color-
|
|
113
|
-
--color-
|
|
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-
|
|
127
|
-
--color-primary-hover: var(--color-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
8368
|
-
--color-
|
|
8369
|
-
--color-
|
|
8370
|
-
--color-
|
|
8371
|
-
--color-
|
|
8372
|
-
--color-
|
|
8373
|
-
--color-
|
|
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-
|
|
8396
|
-
--color-primary-hover: var(--color-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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;;;;;;;;;
|
|
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"}
|