Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/components/datepicker/Calendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -69,9 +69,13 @@ export default function Calendar({
</CalendarHeader>
<CalendarRow>
{rows.map(({ text, value, current }: ICalendarCell, i: number) => {
const disabled: boolean = period
const isBeforeMinDate = minDate
? value?.isBefore(minDate, "day")
: false;
const isAfterMaxDate = maxDate
? value?.isAfter(maxDate, "day")
: false;
const disabled: boolean = isBeforeMinDate || isAfterMaxDate;

return (
<CalendarDay
Expand Down
17 changes: 13 additions & 4 deletions src/components/datepicker/DatePicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,6 +8,7 @@ dayjs.extend(timezone);

import { useCallback, useEffect, useRef, useState } from "react";

import { useDidMountEffect } from "../../lib/utils/hooks/useDidMountEffect";
import { FieldInput } from "../form/Field.styles";
import Calendar from "./Calendar";
import { DatePickerWrapper, Picker, PickerGrid } from "./DatePicker.style";
Expand All@@ -16,7 +17,7 @@ import SelectTime from "./SelectTime";

interface Props {
initialValue?: Dayjs | Array<Dayjs> | null;
onChange?: (selected: Dayjs | Array<Dayjs | null>) => void;
onChange?: (selected: Dayjs | Array<Dayjs | null> | null) => void;
error?: string;
period: boolean;
selectTime: boolean;
Expand All@@ -37,8 +38,10 @@ const handleInitialDates = (
let endDate: Dayjs | null = null;

if (Array.isArray(initialValue)) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
if (initialValue.length) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
}
} else {
startDate = dayjs(initialValue);
}
Expand DownExpand Up@@ -109,7 +112,7 @@ export default function DatePicker({
}
};

useEffect(() => {
useDidMountEffect(() => {
if (
(!period && date !== null) ||
(period && date !== null && secondDate !== null)
Expand All@@ -122,7 +125,13 @@ export default function DatePicker({
(period && date === null && secondDate === null)
) {
setShownDate("Choose dates...");
if (period) {
onChange?.([]);
} else {
onChange?.(null);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [date, secondDate, period]);

useEffect(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/components/form/Datepicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ import DatePicker from "../datepicker/DatePicker";
import Error from "./Error";
import type { DatepickerProps } from "./types";

export default function DatepickerComponent({
export default function Datepicker({
name,
period = false,
selectTime = false,
Expand All@@ -17,7 +17,7 @@ export default function DatepickerComponent({
const displayError =
typeof errorMessage === typeof "string" && errorMessage !== "";

const handleChange = (date: Dayjs | Array<Dayjs | null>) => {
const handleChange = (date: Dayjs | Array<Dayjs | null> | null) => {
if (!meta.touched) {
helpers.setTouched(true);
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/Modal.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -239,6 +239,8 @@ const Content = styled.div<{
`};
${({ $modalType }) => {
switch ($modalType) {
case "RELIST_OFFER":
case "EXPORT_EXCHANGES_WITH_DELIVERY":
case "REDEEM":
return css`
overflow: visible;
Expand Down
8 changes: 6 additions & 2 deletions src/components/modal/ModalComponents.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@ import ProductCreateSuccess from "./components/ProductCreateSuccess";
import ProgressBarModal from "./components/ProgressBarModal";
import RedeemModal from "./components/RedeemModal/RedeemModal";
import RedeemSuccessModal from "./components/RedeemModal/RedeemSuccessModal";
import { RelistOfferModal } from "./components/RelistOfferModal/RelistOfferModal";
import RetractDisputeModal from "./components/RetractDisputeModal";
import RevokeProduct from "./components/RevokeProduct";
import FinanceDeposit from "./components/SellerFinance/FinanceDeposit";
Expand DownExpand Up@@ -64,7 +65,8 @@ export const MODAL_TYPES = {
WAITING_FOR_CONFIRMATION: "WAITING_FOR_CONFIRMATION",
WHAT_IS_REDEEM: "WHAT_IS_REDEEM",
PROGRESS_BAR: "PROGRESS_BAR",
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY"
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY",
RELIST_OFFER: "RELIST_OFFER"
} as const;

export const MODAL_COMPONENTS = {
Expand DownExpand Up@@ -99,5 +101,7 @@ export const MODAL_COMPONENTS = {
[MODAL_TYPES.WAITING_FOR_CONFIRMATION]: WaitingForConfirmationModal,
[MODAL_TYPES.WHAT_IS_REDEEM]: WhatIsRedeem,
[MODAL_TYPES.PROGRESS_BAR]: ProgressBarModal,
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]: ExportExchangesWithDeliveryModal
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]:
ExportExchangesWithDeliveryModal,
[MODAL_TYPES.RELIST_OFFER]: RelistOfferModal
} as const;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
import dayjs, { Dayjs } from "dayjs";
import { useState } from "react";
import { useMemo, useState } from "react";

import DatePicker from "../../datepicker/DatePicker";
import BosonButton from "../../ui/BosonButton";
Expand All@@ -11,14 +11,11 @@ export default function ExportExchangesWithDeliveryModal({
}: {
onExport: (from?: Dayjs) => void;
}) {
const [from, setFrom] = useState<Dayjs | null>(dayjs());
const today = useMemo(() => dayjs(), []);
const [from, setFrom] = useState<Dayjs | null>(today);
const initialDate = useMemo(() => dayjs().startOf("month"), []);
return (
<Grid
flexDirection="column"
alignItems="flex-start"
gap="0.5rem"
$height="550px"
>
<Grid flexDirection="column" alignItems="flex-start" gap="5rem">
<Grid flexDirection="column" alignItems="flex-start" gap="0.5rem">
<Typography tag="h4">Option 1</Typography>
<p>
Expand All@@ -34,8 +31,8 @@ export default function ExportExchangesWithDeliveryModal({
period={false}
selectTime
minDate={null}
maxDate={dayjs()}
initialValue={dayjs()}
maxDate={today}
initialValue={initialDate}
onChange={(date) => {
setFrom(date as Dayjs);
}}
Expand All@@ -57,9 +54,7 @@ export default function ExportExchangesWithDeliveryModal({
delivery information.This option will always include, if it exists in
the chat conversation, the delivery information.
</p>
<BosonButton disabled={!from} onClick={() => onExport()}>
Export
</BosonButton>
<BosonButton onClick={() => onExport()}>Export</BosonButton>
</Grid>
</Grid>
);
Expand Down
56 changes: 25 additions & 31 deletions src/components/modal/components/ProductCreateSuccess.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,8 +15,7 @@ import {
Break,
ModalGrid,
ModalImageWrapper,
Widget,
WidgetButtonWrapper
Widget
} from "../../detail/Detail.style";
import DetailTable from "../../detail/DetailTable";
import TokenGated from "../../detail/DetailWidget/TokenGated";
Expand All@@ -31,7 +30,7 @@ interface Props {
name: string;
image: string;
offer: any;
onCreateNewProject: () => void;
onCreateNew?: () => void;
onViewMyItem: () => void;
hasMultipleVariants: boolean;
}
Expand DownExpand Up@@ -82,11 +81,6 @@ const StyledIndicator = styled(ProgressPrimitive.Indicator)`
height: 100%;
transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
`;
const StyledWidgetButtonWrapper = styled(WidgetButtonWrapper)`
button {
width: 50%;
}
`;

const FundTile = styled(Typography)`
font-weight: 600;
Expand DownExpand Up@@ -114,7 +108,7 @@ export default function ProductCreateSuccess({
name,
image,
offer,
onCreateNewProject,
onCreateNew,
onViewMyItem,
hasMultipleVariants
}: Props) {
Expand All@@ -133,10 +127,6 @@ export default function ProductCreateSuccess({
[convertedPrice, offer]
);

const handleCreateNew = () => {
onCreateNewProject();
};

const suggestedAmount = FixedNumber.fromString(
formatUnits(
BigNumber.from(offer?.sellerDeposit).mul(Number(offer?.quantityInitial)),
Expand DownExpand Up@@ -199,14 +189,16 @@ export default function ProductCreateSuccess({
/>
</Grid>
<Break />
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
{offer.condition && (
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
)}
<div style={{ paddingTop: "2rem" }}>
<DetailTable align noBorder data={OFFER_DETAIL_DATA} />
</div>
Expand DownExpand Up@@ -254,23 +246,25 @@ export default function ProductCreateSuccess({
</StyledProgress>
</Funds>
)}
<StyledWidgetButtonWrapper>
<Grid flex="1 1" gap="1rem" margin="1rem 0 0 0">
<BosonButton
type="button"
variant="primaryFill"
onClick={onViewMyItem}
>
View my item
</BosonButton>
<BosonButton
type="button"
variant="accentInverted"
onClick={handleCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
</StyledWidgetButtonWrapper>
{onCreateNew && (
<BosonButton
type="button"
variant="accentInverted"
onClick={onCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
)}
</Grid>
</div>
</ModalGrid>
</>
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/components/datepicker/Calendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -69,9 +69,13 @@ export default function Calendar({
</CalendarHeader>
<CalendarRow>
{rows.map(({ text, value, current }: ICalendarCell, i: number) => {
const disabled: boolean = period
const isBeforeMinDate = minDate
? value?.isBefore(minDate, "day")
: false;
const isAfterMaxDate = maxDate
? value?.isAfter(maxDate, "day")
: false;
const disabled: boolean = isBeforeMinDate || isAfterMaxDate;

return (
<CalendarDay
Expand Down
17 changes: 13 additions & 4 deletions src/components/datepicker/DatePicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,6 +8,7 @@ dayjs.extend(timezone);

import { useCallback, useEffect, useRef, useState } from "react";

import { useDidMountEffect } from "../../lib/utils/hooks/useDidMountEffect";
import { FieldInput } from "../form/Field.styles";
import Calendar from "./Calendar";
import { DatePickerWrapper, Picker, PickerGrid } from "./DatePicker.style";
Expand All@@ -16,7 +17,7 @@ import SelectTime from "./SelectTime";

interface Props {
initialValue?: Dayjs | Array<Dayjs> | null;
onChange?: (selected: Dayjs | Array<Dayjs | null>) => void;
onChange?: (selected: Dayjs | Array<Dayjs | null> | null) => void;
error?: string;
period: boolean;
selectTime: boolean;
Expand All@@ -37,8 +38,10 @@ const handleInitialDates = (
let endDate: Dayjs | null = null;

if (Array.isArray(initialValue)) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
if (initialValue.length) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
}
} else {
startDate = dayjs(initialValue);
}
Expand DownExpand Up@@ -109,7 +112,7 @@ export default function DatePicker({
}
};

useEffect(() => {
useDidMountEffect(() => {
if (
(!period && date !== null) ||
(period && date !== null && secondDate !== null)
Expand All@@ -122,7 +125,13 @@ export default function DatePicker({
(period && date === null && secondDate === null)
) {
setShownDate("Choose dates...");
if (period) {
onChange?.([]);
} else {
onChange?.(null);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [date, secondDate, period]);

useEffect(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/components/form/Datepicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ import DatePicker from "../datepicker/DatePicker";
import Error from "./Error";
import type { DatepickerProps } from "./types";

export default function DatepickerComponent({
export default function Datepicker({
name,
period = false,
selectTime = false,
Expand All@@ -17,7 +17,7 @@ export default function DatepickerComponent({
const displayError =
typeof errorMessage === typeof "string" && errorMessage !== "";

const handleChange = (date: Dayjs | Array<Dayjs | null>) => {
const handleChange = (date: Dayjs | Array<Dayjs | null> | null) => {
if (!meta.touched) {
helpers.setTouched(true);
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/Modal.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -239,6 +239,8 @@ const Content = styled.div<{
`};
${({ $modalType }) => {
switch ($modalType) {
case "RELIST_OFFER":
case "EXPORT_EXCHANGES_WITH_DELIVERY":
case "REDEEM":
return css`
overflow: visible;
Expand Down
8 changes: 6 additions & 2 deletions src/components/modal/ModalComponents.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@ import ProductCreateSuccess from "./components/ProductCreateSuccess";
import ProgressBarModal from "./components/ProgressBarModal";
import RedeemModal from "./components/RedeemModal/RedeemModal";
import RedeemSuccessModal from "./components/RedeemModal/RedeemSuccessModal";
import { RelistOfferModal } from "./components/RelistOfferModal/RelistOfferModal";
import RetractDisputeModal from "./components/RetractDisputeModal";
import RevokeProduct from "./components/RevokeProduct";
import FinanceDeposit from "./components/SellerFinance/FinanceDeposit";
Expand DownExpand Up@@ -64,7 +65,8 @@ export const MODAL_TYPES = {
WAITING_FOR_CONFIRMATION: "WAITING_FOR_CONFIRMATION",
WHAT_IS_REDEEM: "WHAT_IS_REDEEM",
PROGRESS_BAR: "PROGRESS_BAR",
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY"
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY",
RELIST_OFFER: "RELIST_OFFER"
} as const;

export const MODAL_COMPONENTS = {
Expand DownExpand Up@@ -99,5 +101,7 @@ export const MODAL_COMPONENTS = {
[MODAL_TYPES.WAITING_FOR_CONFIRMATION]: WaitingForConfirmationModal,
[MODAL_TYPES.WHAT_IS_REDEEM]: WhatIsRedeem,
[MODAL_TYPES.PROGRESS_BAR]: ProgressBarModal,
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]: ExportExchangesWithDeliveryModal
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]:
ExportExchangesWithDeliveryModal,
[MODAL_TYPES.RELIST_OFFER]: RelistOfferModal
} as const;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
import dayjs, { Dayjs } from "dayjs";
import { useState } from "react";
import { useMemo, useState } from "react";

import DatePicker from "../../datepicker/DatePicker";
import BosonButton from "../../ui/BosonButton";
Expand All@@ -11,14 +11,11 @@ export default function ExportExchangesWithDeliveryModal({
}: {
onExport: (from?: Dayjs) => void;
}) {
const [from, setFrom] = useState<Dayjs | null>(dayjs());
const today = useMemo(() => dayjs(), []);
const [from, setFrom] = useState<Dayjs | null>(today);
const initialDate = useMemo(() => dayjs().startOf("month"), []);
return (
<Grid
flexDirection="column"
alignItems="flex-start"
gap="0.5rem"
$height="550px"
>
<Grid flexDirection="column" alignItems="flex-start" gap="5rem">
<Grid flexDirection="column" alignItems="flex-start" gap="0.5rem">
<Typography tag="h4">Option 1</Typography>
<p>
Expand All@@ -34,8 +31,8 @@ export default function ExportExchangesWithDeliveryModal({
period={false}
selectTime
minDate={null}
maxDate={dayjs()}
initialValue={dayjs()}
maxDate={today}
initialValue={initialDate}
onChange={(date) => {
setFrom(date as Dayjs);
}}
Expand All@@ -57,9 +54,7 @@ export default function ExportExchangesWithDeliveryModal({
delivery information.This option will always include, if it exists in
the chat conversation, the delivery information.
</p>
<BosonButton disabled={!from} onClick={() => onExport()}>
Export
</BosonButton>
<BosonButton onClick={() => onExport()}>Export</BosonButton>
</Grid>
</Grid>
);
Expand Down
56 changes: 25 additions & 31 deletions src/components/modal/components/ProductCreateSuccess.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,8 +15,7 @@ import {
Break,
ModalGrid,
ModalImageWrapper,
Widget,
WidgetButtonWrapper
Widget
} from "../../detail/Detail.style";
import DetailTable from "../../detail/DetailTable";
import TokenGated from "../../detail/DetailWidget/TokenGated";
Expand All@@ -31,7 +30,7 @@ interface Props {
name: string;
image: string;
offer: any;
onCreateNewProject: () => void;
onCreateNew?: () => void;
onViewMyItem: () => void;
hasMultipleVariants: boolean;
}
Expand DownExpand Up@@ -82,11 +81,6 @@ const StyledIndicator = styled(ProgressPrimitive.Indicator)`
height: 100%;
transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
`;
const StyledWidgetButtonWrapper = styled(WidgetButtonWrapper)`
button {
width: 50%;
}
`;

const FundTile = styled(Typography)`
font-weight: 600;
Expand DownExpand Up@@ -114,7 +108,7 @@ export default function ProductCreateSuccess({
name,
image,
offer,
onCreateNewProject,
onCreateNew,
onViewMyItem,
hasMultipleVariants
}: Props) {
Expand All@@ -133,10 +127,6 @@ export default function ProductCreateSuccess({
[convertedPrice, offer]
);

const handleCreateNew = () => {
onCreateNewProject();
};

const suggestedAmount = FixedNumber.fromString(
formatUnits(
BigNumber.from(offer?.sellerDeposit).mul(Number(offer?.quantityInitial)),
Expand DownExpand Up@@ -199,14 +189,16 @@ export default function ProductCreateSuccess({
/>
</Grid>
<Break />
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
{offer.condition && (
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
)}
<div style={{ paddingTop: "2rem" }}>
<DetailTable align noBorder data={OFFER_DETAIL_DATA} />
</div>
Expand DownExpand Up@@ -254,23 +246,25 @@ export default function ProductCreateSuccess({
</StyledProgress>
</Funds>
)}
<StyledWidgetButtonWrapper>
<Grid flex="1 1" gap="1rem" margin="1rem 0 0 0">
<BosonButton
type="button"
variant="primaryFill"
onClick={onViewMyItem}
>
View my item
</BosonButton>
<BosonButton
type="button"
variant="accentInverted"
onClick={handleCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
</StyledWidgetButtonWrapper>
{onCreateNew && (
<BosonButton
type="button"
variant="accentInverted"
onClick={onCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
)}
</Grid>
</div>
</ModalGrid>
</>
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/components/datepicker/Calendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -69,9 +69,13 @@ export default function Calendar({
</CalendarHeader>
<CalendarRow>
{rows.map(({ text, value, current }: ICalendarCell, i: number) => {
const disabled: boolean = period
const isBeforeMinDate = minDate
? value?.isBefore(minDate, "day")
: false;
const isAfterMaxDate = maxDate
? value?.isAfter(maxDate, "day")
: false;
const disabled: boolean = isBeforeMinDate || isAfterMaxDate;

return (
<CalendarDay
Expand Down
17 changes: 13 additions & 4 deletions src/components/datepicker/DatePicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,6 +8,7 @@ dayjs.extend(timezone);

import { useCallback, useEffect, useRef, useState } from "react";

import { useDidMountEffect } from "../../lib/utils/hooks/useDidMountEffect";
import { FieldInput } from "../form/Field.styles";
import Calendar from "./Calendar";
import { DatePickerWrapper, Picker, PickerGrid } from "./DatePicker.style";
Expand All@@ -16,7 +17,7 @@ import SelectTime from "./SelectTime";

interface Props {
initialValue?: Dayjs | Array<Dayjs> | null;
onChange?: (selected: Dayjs | Array<Dayjs | null>) => void;
onChange?: (selected: Dayjs | Array<Dayjs | null> | null) => void;
error?: string;
period: boolean;
selectTime: boolean;
Expand All@@ -37,8 +38,10 @@ const handleInitialDates = (
let endDate: Dayjs | null = null;

if (Array.isArray(initialValue)) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
if (initialValue.length) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
}
} else {
startDate = dayjs(initialValue);
}
Expand DownExpand Up@@ -109,7 +112,7 @@ export default function DatePicker({
}
};

useEffect(() => {
useDidMountEffect(() => {
if (
(!period && date !== null) ||
(period && date !== null && secondDate !== null)
Expand All@@ -122,7 +125,13 @@ export default function DatePicker({
(period && date === null && secondDate === null)
) {
setShownDate("Choose dates...");
if (period) {
onChange?.([]);
} else {
onChange?.(null);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [date, secondDate, period]);

useEffect(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/components/form/Datepicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ import DatePicker from "../datepicker/DatePicker";
import Error from "./Error";
import type { DatepickerProps } from "./types";

export default function DatepickerComponent({
export default function Datepicker({
name,
period = false,
selectTime = false,
Expand All@@ -17,7 +17,7 @@ export default function DatepickerComponent({
const displayError =
typeof errorMessage === typeof "string" && errorMessage !== "";

const handleChange = (date: Dayjs | Array<Dayjs | null>) => {
const handleChange = (date: Dayjs | Array<Dayjs | null> | null) => {
if (!meta.touched) {
helpers.setTouched(true);
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/Modal.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -239,6 +239,8 @@ const Content = styled.div<{
`};
${({ $modalType }) => {
switch ($modalType) {
case "RELIST_OFFER":
case "EXPORT_EXCHANGES_WITH_DELIVERY":
case "REDEEM":
return css`
overflow: visible;
Expand Down
8 changes: 6 additions & 2 deletions src/components/modal/ModalComponents.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@ import ProductCreateSuccess from "./components/ProductCreateSuccess";
import ProgressBarModal from "./components/ProgressBarModal";
import RedeemModal from "./components/RedeemModal/RedeemModal";
import RedeemSuccessModal from "./components/RedeemModal/RedeemSuccessModal";
import { RelistOfferModal } from "./components/RelistOfferModal/RelistOfferModal";
import RetractDisputeModal from "./components/RetractDisputeModal";
import RevokeProduct from "./components/RevokeProduct";
import FinanceDeposit from "./components/SellerFinance/FinanceDeposit";
Expand DownExpand Up@@ -64,7 +65,8 @@ export const MODAL_TYPES = {
WAITING_FOR_CONFIRMATION: "WAITING_FOR_CONFIRMATION",
WHAT_IS_REDEEM: "WHAT_IS_REDEEM",
PROGRESS_BAR: "PROGRESS_BAR",
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY"
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY",
RELIST_OFFER: "RELIST_OFFER"
} as const;

export const MODAL_COMPONENTS = {
Expand DownExpand Up@@ -99,5 +101,7 @@ export const MODAL_COMPONENTS = {
[MODAL_TYPES.WAITING_FOR_CONFIRMATION]: WaitingForConfirmationModal,
[MODAL_TYPES.WHAT_IS_REDEEM]: WhatIsRedeem,
[MODAL_TYPES.PROGRESS_BAR]: ProgressBarModal,
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]: ExportExchangesWithDeliveryModal
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]:
ExportExchangesWithDeliveryModal,
[MODAL_TYPES.RELIST_OFFER]: RelistOfferModal
} as const;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
import dayjs, { Dayjs } from "dayjs";
import { useState } from "react";
import { useMemo, useState } from "react";

import DatePicker from "../../datepicker/DatePicker";
import BosonButton from "../../ui/BosonButton";
Expand All@@ -11,14 +11,11 @@ export default function ExportExchangesWithDeliveryModal({
}: {
onExport: (from?: Dayjs) => void;
}) {
const [from, setFrom] = useState<Dayjs | null>(dayjs());
const today = useMemo(() => dayjs(), []);
const [from, setFrom] = useState<Dayjs | null>(today);
const initialDate = useMemo(() => dayjs().startOf("month"), []);
return (
<Grid
flexDirection="column"
alignItems="flex-start"
gap="0.5rem"
$height="550px"
>
<Grid flexDirection="column" alignItems="flex-start" gap="5rem">
<Grid flexDirection="column" alignItems="flex-start" gap="0.5rem">
<Typography tag="h4">Option 1</Typography>
<p>
Expand All@@ -34,8 +31,8 @@ export default function ExportExchangesWithDeliveryModal({
period={false}
selectTime
minDate={null}
maxDate={dayjs()}
initialValue={dayjs()}
maxDate={today}
initialValue={initialDate}
onChange={(date) => {
setFrom(date as Dayjs);
}}
Expand All@@ -57,9 +54,7 @@ export default function ExportExchangesWithDeliveryModal({
delivery information.This option will always include, if it exists in
the chat conversation, the delivery information.
</p>
<BosonButton disabled={!from} onClick={() => onExport()}>
Export
</BosonButton>
<BosonButton onClick={() => onExport()}>Export</BosonButton>
</Grid>
</Grid>
);
Expand Down
56 changes: 25 additions & 31 deletions src/components/modal/components/ProductCreateSuccess.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,8 +15,7 @@ import {
Break,
ModalGrid,
ModalImageWrapper,
Widget,
WidgetButtonWrapper
Widget
} from "../../detail/Detail.style";
import DetailTable from "../../detail/DetailTable";
import TokenGated from "../../detail/DetailWidget/TokenGated";
Expand All@@ -31,7 +30,7 @@ interface Props {
name: string;
image: string;
offer: any;
onCreateNewProject: () => void;
onCreateNew?: () => void;
onViewMyItem: () => void;
hasMultipleVariants: boolean;
}
Expand DownExpand Up@@ -82,11 +81,6 @@ const StyledIndicator = styled(ProgressPrimitive.Indicator)`
height: 100%;
transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
`;
const StyledWidgetButtonWrapper = styled(WidgetButtonWrapper)`
button {
width: 50%;
}
`;

const FundTile = styled(Typography)`
font-weight: 600;
Expand DownExpand Up@@ -114,7 +108,7 @@ export default function ProductCreateSuccess({
name,
image,
offer,
onCreateNewProject,
onCreateNew,
onViewMyItem,
hasMultipleVariants
}: Props) {
Expand All@@ -133,10 +127,6 @@ export default function ProductCreateSuccess({
[convertedPrice, offer]
);

const handleCreateNew = () => {
onCreateNewProject();
};

const suggestedAmount = FixedNumber.fromString(
formatUnits(
BigNumber.from(offer?.sellerDeposit).mul(Number(offer?.quantityInitial)),
Expand DownExpand Up@@ -199,14 +189,16 @@ export default function ProductCreateSuccess({
/>
</Grid>
<Break />
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
{offer.condition && (
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
)}
<div style={{ paddingTop: "2rem" }}>
<DetailTable align noBorder data={OFFER_DETAIL_DATA} />
</div>
Expand DownExpand Up@@ -254,23 +246,25 @@ export default function ProductCreateSuccess({
</StyledProgress>
</Funds>
)}
<StyledWidgetButtonWrapper>
<Grid flex="1 1" gap="1rem" margin="1rem 0 0 0">
<BosonButton
type="button"
variant="primaryFill"
onClick={onViewMyItem}
>
View my item
</BosonButton>
<BosonButton
type="button"
variant="accentInverted"
onClick={handleCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
</StyledWidgetButtonWrapper>
{onCreateNew && (
<BosonButton
type="button"
variant="accentInverted"
onClick={onCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
)}
</Grid>
</div>
</ModalGrid>
</>
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/components/datepicker/Calendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -69,9 +69,13 @@ export default function Calendar({
</CalendarHeader>
<CalendarRow>
{rows.map(({ text, value, current }: ICalendarCell, i: number) => {
const disabled: boolean = period
const isBeforeMinDate = minDate
? value?.isBefore(minDate, "day")
: false;
const isAfterMaxDate = maxDate
? value?.isAfter(maxDate, "day")
: false;
const disabled: boolean = isBeforeMinDate || isAfterMaxDate;

return (
<CalendarDay
Expand Down
17 changes: 13 additions & 4 deletions src/components/datepicker/DatePicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,6 +8,7 @@ dayjs.extend(timezone);

import { useCallback, useEffect, useRef, useState } from "react";

import { useDidMountEffect } from "../../lib/utils/hooks/useDidMountEffect";
import { FieldInput } from "../form/Field.styles";
import Calendar from "./Calendar";
import { DatePickerWrapper, Picker, PickerGrid } from "./DatePicker.style";
Expand All@@ -16,7 +17,7 @@ import SelectTime from "./SelectTime";

interface Props {
initialValue?: Dayjs | Array<Dayjs> | null;
onChange?: (selected: Dayjs | Array<Dayjs | null>) => void;
onChange?: (selected: Dayjs | Array<Dayjs | null> | null) => void;
error?: string;
period: boolean;
selectTime: boolean;
Expand All@@ -37,8 +38,10 @@ const handleInitialDates = (
let endDate: Dayjs | null = null;

if (Array.isArray(initialValue)) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
if (initialValue.length) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
}
} else {
startDate = dayjs(initialValue);
}
Expand DownExpand Up@@ -109,7 +112,7 @@ export default function DatePicker({
}
};

useEffect(() => {
useDidMountEffect(() => {
if (
(!period && date !== null) ||
(period && date !== null && secondDate !== null)
Expand All@@ -122,7 +125,13 @@ export default function DatePicker({
(period && date === null && secondDate === null)
) {
setShownDate("Choose dates...");
if (period) {
onChange?.([]);
} else {
onChange?.(null);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [date, secondDate, period]);

useEffect(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/components/form/Datepicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ import DatePicker from "../datepicker/DatePicker";
import Error from "./Error";
import type { DatepickerProps } from "./types";

export default function DatepickerComponent({
export default function Datepicker({
name,
period = false,
selectTime = false,
Expand All@@ -17,7 +17,7 @@ export default function DatepickerComponent({
const displayError =
typeof errorMessage === typeof "string" && errorMessage !== "";

const handleChange = (date: Dayjs | Array<Dayjs | null>) => {
const handleChange = (date: Dayjs | Array<Dayjs | null> | null) => {
if (!meta.touched) {
helpers.setTouched(true);
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/Modal.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -239,6 +239,8 @@ const Content = styled.div<{
`};
${({ $modalType }) => {
switch ($modalType) {
case "RELIST_OFFER":
case "EXPORT_EXCHANGES_WITH_DELIVERY":
case "REDEEM":
return css`
overflow: visible;
Expand Down
8 changes: 6 additions & 2 deletions src/components/modal/ModalComponents.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@ import ProductCreateSuccess from "./components/ProductCreateSuccess";
import ProgressBarModal from "./components/ProgressBarModal";
import RedeemModal from "./components/RedeemModal/RedeemModal";
import RedeemSuccessModal from "./components/RedeemModal/RedeemSuccessModal";
import { RelistOfferModal } from "./components/RelistOfferModal/RelistOfferModal";
import RetractDisputeModal from "./components/RetractDisputeModal";
import RevokeProduct from "./components/RevokeProduct";
import FinanceDeposit from "./components/SellerFinance/FinanceDeposit";
Expand DownExpand Up@@ -64,7 +65,8 @@ export const MODAL_TYPES = {
WAITING_FOR_CONFIRMATION: "WAITING_FOR_CONFIRMATION",
WHAT_IS_REDEEM: "WHAT_IS_REDEEM",
PROGRESS_BAR: "PROGRESS_BAR",
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY"
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY",
RELIST_OFFER: "RELIST_OFFER"
} as const;

export const MODAL_COMPONENTS = {
Expand DownExpand Up@@ -99,5 +101,7 @@ export const MODAL_COMPONENTS = {
[MODAL_TYPES.WAITING_FOR_CONFIRMATION]: WaitingForConfirmationModal,
[MODAL_TYPES.WHAT_IS_REDEEM]: WhatIsRedeem,
[MODAL_TYPES.PROGRESS_BAR]: ProgressBarModal,
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]: ExportExchangesWithDeliveryModal
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]:
ExportExchangesWithDeliveryModal,
[MODAL_TYPES.RELIST_OFFER]: RelistOfferModal
} as const;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
import dayjs, { Dayjs } from "dayjs";
import { useState } from "react";
import { useMemo, useState } from "react";

import DatePicker from "../../datepicker/DatePicker";
import BosonButton from "../../ui/BosonButton";
Expand All@@ -11,14 +11,11 @@ export default function ExportExchangesWithDeliveryModal({
}: {
onExport: (from?: Dayjs) => void;
}) {
const [from, setFrom] = useState<Dayjs | null>(dayjs());
const today = useMemo(() => dayjs(), []);
const [from, setFrom] = useState<Dayjs | null>(today);
const initialDate = useMemo(() => dayjs().startOf("month"), []);
return (
<Grid
flexDirection="column"
alignItems="flex-start"
gap="0.5rem"
$height="550px"
>
<Grid flexDirection="column" alignItems="flex-start" gap="5rem">
<Grid flexDirection="column" alignItems="flex-start" gap="0.5rem">
<Typography tag="h4">Option 1</Typography>
<p>
Expand All@@ -34,8 +31,8 @@ export default function ExportExchangesWithDeliveryModal({
period={false}
selectTime
minDate={null}
maxDate={dayjs()}
initialValue={dayjs()}
maxDate={today}
initialValue={initialDate}
onChange={(date) => {
setFrom(date as Dayjs);
}}
Expand All@@ -57,9 +54,7 @@ export default function ExportExchangesWithDeliveryModal({
delivery information.This option will always include, if it exists in
the chat conversation, the delivery information.
</p>
<BosonButton disabled={!from} onClick={() => onExport()}>
Export
</BosonButton>
<BosonButton onClick={() => onExport()}>Export</BosonButton>
</Grid>
</Grid>
);
Expand Down
56 changes: 25 additions & 31 deletions src/components/modal/components/ProductCreateSuccess.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,8 +15,7 @@ import {
Break,
ModalGrid,
ModalImageWrapper,
Widget,
WidgetButtonWrapper
Widget
} from "../../detail/Detail.style";
import DetailTable from "../../detail/DetailTable";
import TokenGated from "../../detail/DetailWidget/TokenGated";
Expand All@@ -31,7 +30,7 @@ interface Props {
name: string;
image: string;
offer: any;
onCreateNewProject: () => void;
onCreateNew?: () => void;
onViewMyItem: () => void;
hasMultipleVariants: boolean;
}
Expand DownExpand Up@@ -82,11 +81,6 @@ const StyledIndicator = styled(ProgressPrimitive.Indicator)`
height: 100%;
transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
`;
const StyledWidgetButtonWrapper = styled(WidgetButtonWrapper)`
button {
width: 50%;
}
`;

const FundTile = styled(Typography)`
font-weight: 600;
Expand DownExpand Up@@ -114,7 +108,7 @@ export default function ProductCreateSuccess({
name,
image,
offer,
onCreateNewProject,
onCreateNew,
onViewMyItem,
hasMultipleVariants
}: Props) {
Expand All@@ -133,10 +127,6 @@ export default function ProductCreateSuccess({
[convertedPrice, offer]
);

const handleCreateNew = () => {
onCreateNewProject();
};

const suggestedAmount = FixedNumber.fromString(
formatUnits(
BigNumber.from(offer?.sellerDeposit).mul(Number(offer?.quantityInitial)),
Expand DownExpand Up@@ -199,14 +189,16 @@ export default function ProductCreateSuccess({
/>
</Grid>
<Break />
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
{offer.condition && (
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
)}
<div style={{ paddingTop: "2rem" }}>
<DetailTable align noBorder data={OFFER_DETAIL_DATA} />
</div>
Expand DownExpand Up@@ -254,23 +246,25 @@ export default function ProductCreateSuccess({
</StyledProgress>
</Funds>
)}
<StyledWidgetButtonWrapper>
<Grid flex="1 1" gap="1rem" margin="1rem 0 0 0">
<BosonButton
type="button"
variant="primaryFill"
onClick={onViewMyItem}
>
View my item
</BosonButton>
<BosonButton
type="button"
variant="accentInverted"
onClick={handleCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
</StyledWidgetButtonWrapper>
{onCreateNew && (
<BosonButton
type="button"
variant="accentInverted"
onClick={onCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
)}
</Grid>
</div>
</ModalGrid>
</>
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/components/datepicker/Calendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -69,9 +69,13 @@ export default function Calendar({
</CalendarHeader>
<CalendarRow>
{rows.map(({ text, value, current }: ICalendarCell, i: number) => {
const disabled: boolean = period
const isBeforeMinDate = minDate
? value?.isBefore(minDate, "day")
: false;
const isAfterMaxDate = maxDate
? value?.isAfter(maxDate, "day")
: false;
const disabled: boolean = isBeforeMinDate || isAfterMaxDate;

return (
<CalendarDay
Expand Down
17 changes: 13 additions & 4 deletions src/components/datepicker/DatePicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,6 +8,7 @@ dayjs.extend(timezone);

import { useCallback, useEffect, useRef, useState } from "react";

import { useDidMountEffect } from "../../lib/utils/hooks/useDidMountEffect";
import { FieldInput } from "../form/Field.styles";
import Calendar from "./Calendar";
import { DatePickerWrapper, Picker, PickerGrid } from "./DatePicker.style";
Expand All@@ -16,7 +17,7 @@ import SelectTime from "./SelectTime";

interface Props {
initialValue?: Dayjs | Array<Dayjs> | null;
onChange?: (selected: Dayjs | Array<Dayjs | null>) => void;
onChange?: (selected: Dayjs | Array<Dayjs | null> | null) => void;
error?: string;
period: boolean;
selectTime: boolean;
Expand All@@ -37,8 +38,10 @@ const handleInitialDates = (
let endDate: Dayjs | null = null;

if (Array.isArray(initialValue)) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
if (initialValue.length) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
}
} else {
startDate = dayjs(initialValue);
}
Expand DownExpand Up@@ -109,7 +112,7 @@ export default function DatePicker({
}
};

useEffect(() => {
useDidMountEffect(() => {
if (
(!period && date !== null) ||
(period && date !== null && secondDate !== null)
Expand All@@ -122,7 +125,13 @@ export default function DatePicker({
(period && date === null && secondDate === null)
) {
setShownDate("Choose dates...");
if (period) {
onChange?.([]);
} else {
onChange?.(null);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [date, secondDate, period]);

useEffect(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/components/form/Datepicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ import DatePicker from "../datepicker/DatePicker";
import Error from "./Error";
import type { DatepickerProps } from "./types";

export default function DatepickerComponent({
export default function Datepicker({
name,
period = false,
selectTime = false,
Expand All@@ -17,7 +17,7 @@ export default function DatepickerComponent({
const displayError =
typeof errorMessage === typeof "string" && errorMessage !== "";

const handleChange = (date: Dayjs | Array<Dayjs | null>) => {
const handleChange = (date: Dayjs | Array<Dayjs | null> | null) => {
if (!meta.touched) {
helpers.setTouched(true);
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/Modal.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -239,6 +239,8 @@ const Content = styled.div<{
`};
${({ $modalType }) => {
switch ($modalType) {
case "RELIST_OFFER":
case "EXPORT_EXCHANGES_WITH_DELIVERY":
case "REDEEM":
return css`
overflow: visible;
Expand Down
8 changes: 6 additions & 2 deletions src/components/modal/ModalComponents.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@ import ProductCreateSuccess from "./components/ProductCreateSuccess";
import ProgressBarModal from "./components/ProgressBarModal";
import RedeemModal from "./components/RedeemModal/RedeemModal";
import RedeemSuccessModal from "./components/RedeemModal/RedeemSuccessModal";
import { RelistOfferModal } from "./components/RelistOfferModal/RelistOfferModal";
import RetractDisputeModal from "./components/RetractDisputeModal";
import RevokeProduct from "./components/RevokeProduct";
import FinanceDeposit from "./components/SellerFinance/FinanceDeposit";
Expand DownExpand Up@@ -64,7 +65,8 @@ export const MODAL_TYPES = {
WAITING_FOR_CONFIRMATION: "WAITING_FOR_CONFIRMATION",
WHAT_IS_REDEEM: "WHAT_IS_REDEEM",
PROGRESS_BAR: "PROGRESS_BAR",
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY"
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY",
RELIST_OFFER: "RELIST_OFFER"
} as const;

export const MODAL_COMPONENTS = {
Expand DownExpand Up@@ -99,5 +101,7 @@ export const MODAL_COMPONENTS = {
[MODAL_TYPES.WAITING_FOR_CONFIRMATION]: WaitingForConfirmationModal,
[MODAL_TYPES.WHAT_IS_REDEEM]: WhatIsRedeem,
[MODAL_TYPES.PROGRESS_BAR]: ProgressBarModal,
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]: ExportExchangesWithDeliveryModal
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]:
ExportExchangesWithDeliveryModal,
[MODAL_TYPES.RELIST_OFFER]: RelistOfferModal
} as const;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
import dayjs, { Dayjs } from "dayjs";
import { useState } from "react";
import { useMemo, useState } from "react";

import DatePicker from "../../datepicker/DatePicker";
import BosonButton from "../../ui/BosonButton";
Expand All@@ -11,14 +11,11 @@ export default function ExportExchangesWithDeliveryModal({
}: {
onExport: (from?: Dayjs) => void;
}) {
const [from, setFrom] = useState<Dayjs | null>(dayjs());
const today = useMemo(() => dayjs(), []);
const [from, setFrom] = useState<Dayjs | null>(today);
const initialDate = useMemo(() => dayjs().startOf("month"), []);
return (
<Grid
flexDirection="column"
alignItems="flex-start"
gap="0.5rem"
$height="550px"
>
<Grid flexDirection="column" alignItems="flex-start" gap="5rem">
<Grid flexDirection="column" alignItems="flex-start" gap="0.5rem">
<Typography tag="h4">Option 1</Typography>
<p>
Expand All@@ -34,8 +31,8 @@ export default function ExportExchangesWithDeliveryModal({
period={false}
selectTime
minDate={null}
maxDate={dayjs()}
initialValue={dayjs()}
maxDate={today}
initialValue={initialDate}
onChange={(date) => {
setFrom(date as Dayjs);
}}
Expand All@@ -57,9 +54,7 @@ export default function ExportExchangesWithDeliveryModal({
delivery information.This option will always include, if it exists in
the chat conversation, the delivery information.
</p>
<BosonButton disabled={!from} onClick={() => onExport()}>
Export
</BosonButton>
<BosonButton onClick={() => onExport()}>Export</BosonButton>
</Grid>
</Grid>
);
Expand Down
56 changes: 25 additions & 31 deletions src/components/modal/components/ProductCreateSuccess.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,8 +15,7 @@ import {
Break,
ModalGrid,
ModalImageWrapper,
Widget,
WidgetButtonWrapper
Widget
} from "../../detail/Detail.style";
import DetailTable from "../../detail/DetailTable";
import TokenGated from "../../detail/DetailWidget/TokenGated";
Expand All@@ -31,7 +30,7 @@ interface Props {
name: string;
image: string;
offer: any;
onCreateNewProject: () => void;
onCreateNew?: () => void;
onViewMyItem: () => void;
hasMultipleVariants: boolean;
}
Expand DownExpand Up@@ -82,11 +81,6 @@ const StyledIndicator = styled(ProgressPrimitive.Indicator)`
height: 100%;
transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
`;
const StyledWidgetButtonWrapper = styled(WidgetButtonWrapper)`
button {
width: 50%;
}
`;

const FundTile = styled(Typography)`
font-weight: 600;
Expand DownExpand Up@@ -114,7 +108,7 @@ export default function ProductCreateSuccess({
name,
image,
offer,
onCreateNewProject,
onCreateNew,
onViewMyItem,
hasMultipleVariants
}: Props) {
Expand All@@ -133,10 +127,6 @@ export default function ProductCreateSuccess({
[convertedPrice, offer]
);

const handleCreateNew = () => {
onCreateNewProject();
};

const suggestedAmount = FixedNumber.fromString(
formatUnits(
BigNumber.from(offer?.sellerDeposit).mul(Number(offer?.quantityInitial)),
Expand DownExpand Up@@ -199,14 +189,16 @@ export default function ProductCreateSuccess({
/>
</Grid>
<Break />
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
{offer.condition && (
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
)}
<div style={{ paddingTop: "2rem" }}>
<DetailTable align noBorder data={OFFER_DETAIL_DATA} />
</div>
Expand DownExpand Up@@ -254,23 +246,25 @@ export default function ProductCreateSuccess({
</StyledProgress>
</Funds>
)}
<StyledWidgetButtonWrapper>
<Grid flex="1 1" gap="1rem" margin="1rem 0 0 0">
<BosonButton
type="button"
variant="primaryFill"
onClick={onViewMyItem}
>
View my item
</BosonButton>
<BosonButton
type="button"
variant="accentInverted"
onClick={handleCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
</StyledWidgetButtonWrapper>
{onCreateNew && (
<BosonButton
type="button"
variant="accentInverted"
onClick={onCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
)}
</Grid>
</div>
</ModalGrid>
</>
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/components/datepicker/Calendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -69,9 +69,13 @@ export default function Calendar({
</CalendarHeader>
<CalendarRow>
{rows.map(({ text, value, current }: ICalendarCell, i: number) => {
const disabled: boolean = period
const isBeforeMinDate = minDate
? value?.isBefore(minDate, "day")
: false;
const isAfterMaxDate = maxDate
? value?.isAfter(maxDate, "day")
: false;
const disabled: boolean = isBeforeMinDate || isAfterMaxDate;

return (
<CalendarDay
Expand Down
17 changes: 13 additions & 4 deletions src/components/datepicker/DatePicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,6 +8,7 @@ dayjs.extend(timezone);

import { useCallback, useEffect, useRef, useState } from "react";

import { useDidMountEffect } from "../../lib/utils/hooks/useDidMountEffect";
import { FieldInput } from "../form/Field.styles";
import Calendar from "./Calendar";
import { DatePickerWrapper, Picker, PickerGrid } from "./DatePicker.style";
Expand All@@ -16,7 +17,7 @@ import SelectTime from "./SelectTime";

interface Props {
initialValue?: Dayjs | Array<Dayjs> | null;
onChange?: (selected: Dayjs | Array<Dayjs | null>) => void;
onChange?: (selected: Dayjs | Array<Dayjs | null> | null) => void;
error?: string;
period: boolean;
selectTime: boolean;
Expand All@@ -37,8 +38,10 @@ const handleInitialDates = (
let endDate: Dayjs | null = null;

if (Array.isArray(initialValue)) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
if (initialValue.length) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
}
} else {
startDate = dayjs(initialValue);
}
Expand DownExpand Up@@ -109,7 +112,7 @@ export default function DatePicker({
}
};

useEffect(() => {
useDidMountEffect(() => {
if (
(!period && date !== null) ||
(period && date !== null && secondDate !== null)
Expand All@@ -122,7 +125,13 @@ export default function DatePicker({
(period && date === null && secondDate === null)
) {
setShownDate("Choose dates...");
if (period) {
onChange?.([]);
} else {
onChange?.(null);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [date, secondDate, period]);

useEffect(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/components/form/Datepicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ import DatePicker from "../datepicker/DatePicker";
import Error from "./Error";
import type { DatepickerProps } from "./types";

export default function DatepickerComponent({
export default function Datepicker({
name,
period = false,
selectTime = false,
Expand All@@ -17,7 +17,7 @@ export default function DatepickerComponent({
const displayError =
typeof errorMessage === typeof "string" && errorMessage !== "";

const handleChange = (date: Dayjs | Array<Dayjs | null>) => {
const handleChange = (date: Dayjs | Array<Dayjs | null> | null) => {
if (!meta.touched) {
helpers.setTouched(true);
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/Modal.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -239,6 +239,8 @@ const Content = styled.div<{
`};
${({ $modalType }) => {
switch ($modalType) {
case "RELIST_OFFER":
case "EXPORT_EXCHANGES_WITH_DELIVERY":
case "REDEEM":
return css`
overflow: visible;
Expand Down
8 changes: 6 additions & 2 deletions src/components/modal/ModalComponents.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@ import ProductCreateSuccess from "./components/ProductCreateSuccess";
import ProgressBarModal from "./components/ProgressBarModal";
import RedeemModal from "./components/RedeemModal/RedeemModal";
import RedeemSuccessModal from "./components/RedeemModal/RedeemSuccessModal";
import { RelistOfferModal } from "./components/RelistOfferModal/RelistOfferModal";
import RetractDisputeModal from "./components/RetractDisputeModal";
import RevokeProduct from "./components/RevokeProduct";
import FinanceDeposit from "./components/SellerFinance/FinanceDeposit";
Expand DownExpand Up@@ -64,7 +65,8 @@ export const MODAL_TYPES = {
WAITING_FOR_CONFIRMATION: "WAITING_FOR_CONFIRMATION",
WHAT_IS_REDEEM: "WHAT_IS_REDEEM",
PROGRESS_BAR: "PROGRESS_BAR",
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY"
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY",
RELIST_OFFER: "RELIST_OFFER"
} as const;

export const MODAL_COMPONENTS = {
Expand DownExpand Up@@ -99,5 +101,7 @@ export const MODAL_COMPONENTS = {
[MODAL_TYPES.WAITING_FOR_CONFIRMATION]: WaitingForConfirmationModal,
[MODAL_TYPES.WHAT_IS_REDEEM]: WhatIsRedeem,
[MODAL_TYPES.PROGRESS_BAR]: ProgressBarModal,
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]: ExportExchangesWithDeliveryModal
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]:
ExportExchangesWithDeliveryModal,
[MODAL_TYPES.RELIST_OFFER]: RelistOfferModal
} as const;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
import dayjs, { Dayjs } from "dayjs";
import { useState } from "react";
import { useMemo, useState } from "react";

import DatePicker from "../../datepicker/DatePicker";
import BosonButton from "../../ui/BosonButton";
Expand All@@ -11,14 +11,11 @@ export default function ExportExchangesWithDeliveryModal({
}: {
onExport: (from?: Dayjs) => void;
}) {
const [from, setFrom] = useState<Dayjs | null>(dayjs());
const today = useMemo(() => dayjs(), []);
const [from, setFrom] = useState<Dayjs | null>(today);
const initialDate = useMemo(() => dayjs().startOf("month"), []);
return (
<Grid
flexDirection="column"
alignItems="flex-start"
gap="0.5rem"
$height="550px"
>
<Grid flexDirection="column" alignItems="flex-start" gap="5rem">
<Grid flexDirection="column" alignItems="flex-start" gap="0.5rem">
<Typography tag="h4">Option 1</Typography>
<p>
Expand All@@ -34,8 +31,8 @@ export default function ExportExchangesWithDeliveryModal({
period={false}
selectTime
minDate={null}
maxDate={dayjs()}
initialValue={dayjs()}
maxDate={today}
initialValue={initialDate}
onChange={(date) => {
setFrom(date as Dayjs);
}}
Expand All@@ -57,9 +54,7 @@ export default function ExportExchangesWithDeliveryModal({
delivery information.This option will always include, if it exists in
the chat conversation, the delivery information.
</p>
<BosonButton disabled={!from} onClick={() => onExport()}>
Export
</BosonButton>
<BosonButton onClick={() => onExport()}>Export</BosonButton>
</Grid>
</Grid>
);
Expand Down
56 changes: 25 additions & 31 deletions src/components/modal/components/ProductCreateSuccess.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,8 +15,7 @@ import {
Break,
ModalGrid,
ModalImageWrapper,
Widget,
WidgetButtonWrapper
Widget
} from "../../detail/Detail.style";
import DetailTable from "../../detail/DetailTable";
import TokenGated from "../../detail/DetailWidget/TokenGated";
Expand All@@ -31,7 +30,7 @@ interface Props {
name: string;
image: string;
offer: any;
onCreateNewProject: () => void;
onCreateNew?: () => void;
onViewMyItem: () => void;
hasMultipleVariants: boolean;
}
Expand DownExpand Up@@ -82,11 +81,6 @@ const StyledIndicator = styled(ProgressPrimitive.Indicator)`
height: 100%;
transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
`;
const StyledWidgetButtonWrapper = styled(WidgetButtonWrapper)`
button {
width: 50%;
}
`;

const FundTile = styled(Typography)`
font-weight: 600;
Expand DownExpand Up@@ -114,7 +108,7 @@ export default function ProductCreateSuccess({
name,
image,
offer,
onCreateNewProject,
onCreateNew,
onViewMyItem,
hasMultipleVariants
}: Props) {
Expand All@@ -133,10 +127,6 @@ export default function ProductCreateSuccess({
[convertedPrice, offer]
);

const handleCreateNew = () => {
onCreateNewProject();
};

const suggestedAmount = FixedNumber.fromString(
formatUnits(
BigNumber.from(offer?.sellerDeposit).mul(Number(offer?.quantityInitial)),
Expand DownExpand Up@@ -199,14 +189,16 @@ export default function ProductCreateSuccess({
/>
</Grid>
<Break />
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
{offer.condition && (
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
)}
<div style={{ paddingTop: "2rem" }}>
<DetailTable align noBorder data={OFFER_DETAIL_DATA} />
</div>
Expand DownExpand Up@@ -254,23 +246,25 @@ export default function ProductCreateSuccess({
</StyledProgress>
</Funds>
)}
<StyledWidgetButtonWrapper>
<Grid flex="1 1" gap="1rem" margin="1rem 0 0 0">
<BosonButton
type="button"
variant="primaryFill"
onClick={onViewMyItem}
>
View my item
</BosonButton>
<BosonButton
type="button"
variant="accentInverted"
onClick={handleCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
</StyledWidgetButtonWrapper>
{onCreateNew && (
<BosonButton
type="button"
variant="accentInverted"
onClick={onCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
)}
</Grid>
</div>
</ModalGrid>
</>
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/components/datepicker/Calendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -69,9 +69,13 @@ export default function Calendar({
</CalendarHeader>
<CalendarRow>
{rows.map(({ text, value, current }: ICalendarCell, i: number) => {
const disabled: boolean = period
const isBeforeMinDate = minDate
? value?.isBefore(minDate, "day")
: false;
const isAfterMaxDate = maxDate
? value?.isAfter(maxDate, "day")
: false;
const disabled: boolean = isBeforeMinDate || isAfterMaxDate;

return (
<CalendarDay
Expand Down
17 changes: 13 additions & 4 deletions src/components/datepicker/DatePicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,6 +8,7 @@ dayjs.extend(timezone);

import { useCallback, useEffect, useRef, useState } from "react";

import { useDidMountEffect } from "../../lib/utils/hooks/useDidMountEffect";
import { FieldInput } from "../form/Field.styles";
import Calendar from "./Calendar";
import { DatePickerWrapper, Picker, PickerGrid } from "./DatePicker.style";
Expand All@@ -16,7 +17,7 @@ import SelectTime from "./SelectTime";

interface Props {
initialValue?: Dayjs | Array<Dayjs> | null;
onChange?: (selected: Dayjs | Array<Dayjs | null>) => void;
onChange?: (selected: Dayjs | Array<Dayjs | null> | null) => void;
error?: string;
period: boolean;
selectTime: boolean;
Expand All@@ -37,8 +38,10 @@ const handleInitialDates = (
let endDate: Dayjs | null = null;

if (Array.isArray(initialValue)) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
if (initialValue.length) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
}
} else {
startDate = dayjs(initialValue);
}
Expand DownExpand Up@@ -109,7 +112,7 @@ export default function DatePicker({
}
};

useEffect(() => {
useDidMountEffect(() => {
if (
(!period && date !== null) ||
(period && date !== null && secondDate !== null)
Expand All@@ -122,7 +125,13 @@ export default function DatePicker({
(period && date === null && secondDate === null)
) {
setShownDate("Choose dates...");
if (period) {
onChange?.([]);
} else {
onChange?.(null);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [date, secondDate, period]);

useEffect(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/components/form/Datepicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ import DatePicker from "../datepicker/DatePicker";
import Error from "./Error";
import type { DatepickerProps } from "./types";

export default function DatepickerComponent({
export default function Datepicker({
name,
period = false,
selectTime = false,
Expand All@@ -17,7 +17,7 @@ export default function DatepickerComponent({
const displayError =
typeof errorMessage === typeof "string" && errorMessage !== "";

const handleChange = (date: Dayjs | Array<Dayjs | null>) => {
const handleChange = (date: Dayjs | Array<Dayjs | null> | null) => {
if (!meta.touched) {
helpers.setTouched(true);
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/Modal.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -239,6 +239,8 @@ const Content = styled.div<{
`};
${({ $modalType }) => {
switch ($modalType) {
case "RELIST_OFFER":
case "EXPORT_EXCHANGES_WITH_DELIVERY":
case "REDEEM":
return css`
overflow: visible;
Expand Down
8 changes: 6 additions & 2 deletions src/components/modal/ModalComponents.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@ import ProductCreateSuccess from "./components/ProductCreateSuccess";
import ProgressBarModal from "./components/ProgressBarModal";
import RedeemModal from "./components/RedeemModal/RedeemModal";
import RedeemSuccessModal from "./components/RedeemModal/RedeemSuccessModal";
import { RelistOfferModal } from "./components/RelistOfferModal/RelistOfferModal";
import RetractDisputeModal from "./components/RetractDisputeModal";
import RevokeProduct from "./components/RevokeProduct";
import FinanceDeposit from "./components/SellerFinance/FinanceDeposit";
Expand DownExpand Up@@ -64,7 +65,8 @@ export const MODAL_TYPES = {
WAITING_FOR_CONFIRMATION: "WAITING_FOR_CONFIRMATION",
WHAT_IS_REDEEM: "WHAT_IS_REDEEM",
PROGRESS_BAR: "PROGRESS_BAR",
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY"
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY",
RELIST_OFFER: "RELIST_OFFER"
} as const;

export const MODAL_COMPONENTS = {
Expand DownExpand Up@@ -99,5 +101,7 @@ export const MODAL_COMPONENTS = {
[MODAL_TYPES.WAITING_FOR_CONFIRMATION]: WaitingForConfirmationModal,
[MODAL_TYPES.WHAT_IS_REDEEM]: WhatIsRedeem,
[MODAL_TYPES.PROGRESS_BAR]: ProgressBarModal,
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]: ExportExchangesWithDeliveryModal
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]:
ExportExchangesWithDeliveryModal,
[MODAL_TYPES.RELIST_OFFER]: RelistOfferModal
} as const;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
import dayjs, { Dayjs } from "dayjs";
import { useState } from "react";
import { useMemo, useState } from "react";

import DatePicker from "../../datepicker/DatePicker";
import BosonButton from "../../ui/BosonButton";
Expand All@@ -11,14 +11,11 @@ export default function ExportExchangesWithDeliveryModal({
}: {
onExport: (from?: Dayjs) => void;
}) {
const [from, setFrom] = useState<Dayjs | null>(dayjs());
const today = useMemo(() => dayjs(), []);
const [from, setFrom] = useState<Dayjs | null>(today);
const initialDate = useMemo(() => dayjs().startOf("month"), []);
return (
<Grid
flexDirection="column"
alignItems="flex-start"
gap="0.5rem"
$height="550px"
>
<Grid flexDirection="column" alignItems="flex-start" gap="5rem">
<Grid flexDirection="column" alignItems="flex-start" gap="0.5rem">
<Typography tag="h4">Option 1</Typography>
<p>
Expand All@@ -34,8 +31,8 @@ export default function ExportExchangesWithDeliveryModal({
period={false}
selectTime
minDate={null}
maxDate={dayjs()}
initialValue={dayjs()}
maxDate={today}
initialValue={initialDate}
onChange={(date) => {
setFrom(date as Dayjs);
}}
Expand All@@ -57,9 +54,7 @@ export default function ExportExchangesWithDeliveryModal({
delivery information.This option will always include, if it exists in
the chat conversation, the delivery information.
</p>
<BosonButton disabled={!from} onClick={() => onExport()}>
Export
</BosonButton>
<BosonButton onClick={() => onExport()}>Export</BosonButton>
</Grid>
</Grid>
);
Expand Down
56 changes: 25 additions & 31 deletions src/components/modal/components/ProductCreateSuccess.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,8 +15,7 @@ import {
Break,
ModalGrid,
ModalImageWrapper,
Widget,
WidgetButtonWrapper
Widget
} from "../../detail/Detail.style";
import DetailTable from "../../detail/DetailTable";
import TokenGated from "../../detail/DetailWidget/TokenGated";
Expand All@@ -31,7 +30,7 @@ interface Props {
name: string;
image: string;
offer: any;
onCreateNewProject: () => void;
onCreateNew?: () => void;
onViewMyItem: () => void;
hasMultipleVariants: boolean;
}
Expand DownExpand Up@@ -82,11 +81,6 @@ const StyledIndicator = styled(ProgressPrimitive.Indicator)`
height: 100%;
transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
`;
const StyledWidgetButtonWrapper = styled(WidgetButtonWrapper)`
button {
width: 50%;
}
`;

const FundTile = styled(Typography)`
font-weight: 600;
Expand DownExpand Up@@ -114,7 +108,7 @@ export default function ProductCreateSuccess({
name,
image,
offer,
onCreateNewProject,
onCreateNew,
onViewMyItem,
hasMultipleVariants
}: Props) {
Expand All@@ -133,10 +127,6 @@ export default function ProductCreateSuccess({
[convertedPrice, offer]
);

const handleCreateNew = () => {
onCreateNewProject();
};

const suggestedAmount = FixedNumber.fromString(
formatUnits(
BigNumber.from(offer?.sellerDeposit).mul(Number(offer?.quantityInitial)),
Expand DownExpand Up@@ -199,14 +189,16 @@ export default function ProductCreateSuccess({
/>
</Grid>
<Break />
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
{offer.condition && (
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
)}
<div style={{ paddingTop: "2rem" }}>
<DetailTable align noBorder data={OFFER_DETAIL_DATA} />
</div>
Expand DownExpand Up@@ -254,23 +246,25 @@ export default function ProductCreateSuccess({
</StyledProgress>
</Funds>
)}
<StyledWidgetButtonWrapper>
<Grid flex="1 1" gap="1rem" margin="1rem 0 0 0">
<BosonButton
type="button"
variant="primaryFill"
onClick={onViewMyItem}
>
View my item
</BosonButton>
<BosonButton
type="button"
variant="accentInverted"
onClick={handleCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
</StyledWidgetButtonWrapper>
{onCreateNew && (
<BosonButton
type="button"
variant="accentInverted"
onClick={onCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
)}
</Grid>
</div>
</ModalGrid>
</>
Expand Down
Loading
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/components/datepicker/Calendar.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -69,9 +69,13 @@ export default function Calendar({
</CalendarHeader>
<CalendarRow>
{rows.map(({ text, value, current }: ICalendarCell, i: number) => {
const disabled: boolean = period
const isBeforeMinDate = minDate
? value?.isBefore(minDate, "day")
: false;
const isAfterMaxDate = maxDate
? value?.isAfter(maxDate, "day")
: false;
const disabled: boolean = isBeforeMinDate || isAfterMaxDate;

return (
<CalendarDay
Expand Down
17 changes: 13 additions & 4 deletions src/components/datepicker/DatePicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -8,6 +8,7 @@ dayjs.extend(timezone);

import { useCallback, useEffect, useRef, useState } from "react";

import { useDidMountEffect } from "../../lib/utils/hooks/useDidMountEffect";
import { FieldInput } from "../form/Field.styles";
import Calendar from "./Calendar";
import { DatePickerWrapper, Picker, PickerGrid } from "./DatePicker.style";
Expand All@@ -16,7 +17,7 @@ import SelectTime from "./SelectTime";

interface Props {
initialValue?: Dayjs | Array<Dayjs> | null;
onChange?: (selected: Dayjs | Array<Dayjs | null>) => void;
onChange?: (selected: Dayjs | Array<Dayjs | null> | null) => void;
error?: string;
period: boolean;
selectTime: boolean;
Expand All@@ -37,8 +38,10 @@ const handleInitialDates = (
let endDate: Dayjs | null = null;

if (Array.isArray(initialValue)) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
if (initialValue.length) {
startDate = dayjs(initialValue[0]);
endDate = dayjs(initialValue[1]);
}
} else {
startDate = dayjs(initialValue);
}
Expand DownExpand Up@@ -109,7 +112,7 @@ export default function DatePicker({
}
};

useEffect(() => {
useDidMountEffect(() => {
if (
(!period && date !== null) ||
(period && date !== null && secondDate !== null)
Expand All@@ -122,7 +125,13 @@ export default function DatePicker({
(period && date === null && secondDate === null)
) {
setShownDate("Choose dates...");
if (period) {
onChange?.([]);
} else {
onChange?.(null);
}
}
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [date, secondDate, period]);

useEffect(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/components/form/Datepicker.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -5,7 +5,7 @@ import DatePicker from "../datepicker/DatePicker";
import Error from "./Error";
import type { DatepickerProps } from "./types";

export default function DatepickerComponent({
export default function Datepicker({
name,
period = false,
selectTime = false,
Expand All@@ -17,7 +17,7 @@ export default function DatepickerComponent({
const displayError =
typeof errorMessage === typeof "string" && errorMessage !== "";

const handleChange = (date: Dayjs | Array<Dayjs | null>) => {
const handleChange = (date: Dayjs | Array<Dayjs | null> | null) => {
if (!meta.touched) {
helpers.setTouched(true);
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/modal/Modal.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -239,6 +239,8 @@ const Content = styled.div<{
`};
${({ $modalType }) => {
switch ($modalType) {
case "RELIST_OFFER":
case "EXPORT_EXCHANGES_WITH_DELIVERY":
case "REDEEM":
return css`
overflow: visible;
Expand Down
8 changes: 6 additions & 2 deletions src/components/modal/ModalComponents.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -20,6 +20,7 @@ import ProductCreateSuccess from "./components/ProductCreateSuccess";
import ProgressBarModal from "./components/ProgressBarModal";
import RedeemModal from "./components/RedeemModal/RedeemModal";
import RedeemSuccessModal from "./components/RedeemModal/RedeemSuccessModal";
import { RelistOfferModal } from "./components/RelistOfferModal/RelistOfferModal";
import RetractDisputeModal from "./components/RetractDisputeModal";
import RevokeProduct from "./components/RevokeProduct";
import FinanceDeposit from "./components/SellerFinance/FinanceDeposit";
Expand DownExpand Up@@ -64,7 +65,8 @@ export const MODAL_TYPES = {
WAITING_FOR_CONFIRMATION: "WAITING_FOR_CONFIRMATION",
WHAT_IS_REDEEM: "WHAT_IS_REDEEM",
PROGRESS_BAR: "PROGRESS_BAR",
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY"
EXPORT_EXCHANGES_WITH_DELIVERY: "EXPORT_EXCHANGES_WITH_DELIVERY",
RELIST_OFFER: "RELIST_OFFER"
} as const;

export const MODAL_COMPONENTS = {
Expand DownExpand Up@@ -99,5 +101,7 @@ export const MODAL_COMPONENTS = {
[MODAL_TYPES.WAITING_FOR_CONFIRMATION]: WaitingForConfirmationModal,
[MODAL_TYPES.WHAT_IS_REDEEM]: WhatIsRedeem,
[MODAL_TYPES.PROGRESS_BAR]: ProgressBarModal,
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]: ExportExchangesWithDeliveryModal
[MODAL_TYPES.EXPORT_EXCHANGES_WITH_DELIVERY]:
ExportExchangesWithDeliveryModal,
[MODAL_TYPES.RELIST_OFFER]: RelistOfferModal
} as const;
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
import dayjs, { Dayjs } from "dayjs";
import { useState } from "react";
import { useMemo, useState } from "react";

import DatePicker from "../../datepicker/DatePicker";
import BosonButton from "../../ui/BosonButton";
Expand All@@ -11,14 +11,11 @@ export default function ExportExchangesWithDeliveryModal({
}: {
onExport: (from?: Dayjs) => void;
}) {
const [from, setFrom] = useState<Dayjs | null>(dayjs());
const today = useMemo(() => dayjs(), []);
const [from, setFrom] = useState<Dayjs | null>(today);
const initialDate = useMemo(() => dayjs().startOf("month"), []);
return (
<Grid
flexDirection="column"
alignItems="flex-start"
gap="0.5rem"
$height="550px"
>
<Grid flexDirection="column" alignItems="flex-start" gap="5rem">
<Grid flexDirection="column" alignItems="flex-start" gap="0.5rem">
<Typography tag="h4">Option 1</Typography>
<p>
Expand All@@ -34,8 +31,8 @@ export default function ExportExchangesWithDeliveryModal({
period={false}
selectTime
minDate={null}
maxDate={dayjs()}
initialValue={dayjs()}
maxDate={today}
initialValue={initialDate}
onChange={(date) => {
setFrom(date as Dayjs);
}}
Expand All@@ -57,9 +54,7 @@ export default function ExportExchangesWithDeliveryModal({
delivery information.This option will always include, if it exists in
the chat conversation, the delivery information.
</p>
<BosonButton disabled={!from} onClick={() => onExport()}>
Export
</BosonButton>
<BosonButton onClick={() => onExport()}>Export</BosonButton>
</Grid>
</Grid>
);
Expand Down
56 changes: 25 additions & 31 deletions src/components/modal/components/ProductCreateSuccess.tsx
Original file line numberDiff line numberDiff line change
Expand Up@@ -15,8 +15,7 @@ import {
Break,
ModalGrid,
ModalImageWrapper,
Widget,
WidgetButtonWrapper
Widget
} from "../../detail/Detail.style";
import DetailTable from "../../detail/DetailTable";
import TokenGated from "../../detail/DetailWidget/TokenGated";
Expand All@@ -31,7 +30,7 @@ interface Props {
name: string;
image: string;
offer: any;
onCreateNewProject: () => void;
onCreateNew?: () => void;
onViewMyItem: () => void;
hasMultipleVariants: boolean;
}
Expand DownExpand Up@@ -82,11 +81,6 @@ const StyledIndicator = styled(ProgressPrimitive.Indicator)`
height: 100%;
transition: transform 660ms cubic-bezier(0.65, 0, 0.35, 1);
`;
const StyledWidgetButtonWrapper = styled(WidgetButtonWrapper)`
button {
width: 50%;
}
`;

const FundTile = styled(Typography)`
font-weight: 600;
Expand DownExpand Up@@ -114,7 +108,7 @@ export default function ProductCreateSuccess({
name,
image,
offer,
onCreateNewProject,
onCreateNew,
onViewMyItem,
hasMultipleVariants
}: Props) {
Expand All@@ -133,10 +127,6 @@ export default function ProductCreateSuccess({
[convertedPrice, offer]
);

const handleCreateNew = () => {
onCreateNewProject();
};

const suggestedAmount = FixedNumber.fromString(
formatUnits(
BigNumber.from(offer?.sellerDeposit).mul(Number(offer?.quantityInitial)),
Expand DownExpand Up@@ -199,14 +189,16 @@ export default function ProductCreateSuccess({
/>
</Grid>
<Break />
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
{offer.condition && (
<TokenGated
offer={offer}
commitProxyAddress={commitProxyAddress}
openseaLinkToOriginalMainnetCollection={
openseaLinkToOriginalMainnetCollection
}
isConditionMet={false}
/>
)}
<div style={{ paddingTop: "2rem" }}>
<DetailTable align noBorder data={OFFER_DETAIL_DATA} />
</div>
Expand DownExpand Up@@ -254,23 +246,25 @@ export default function ProductCreateSuccess({
</StyledProgress>
</Funds>
)}
<StyledWidgetButtonWrapper>
<Grid flex="1 1" gap="1rem" margin="1rem 0 0 0">
<BosonButton
type="button"
variant="primaryFill"
onClick={onViewMyItem}
>
View my item
</BosonButton>
<BosonButton
type="button"
variant="accentInverted"
onClick={handleCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
</StyledWidgetButtonWrapper>
{onCreateNew && (
<BosonButton
type="button"
variant="accentInverted"
onClick={onCreateNew}
>
Create new
<Plus size={14} />
</BosonButton>
)}
</Grid>
</div>
</ModalGrid>
</>
Expand Down
Loading