diff --git a/packages/metavinci/landing/image.png b/packages/metavinci/landing/image.png
new file mode 100644
index 0000000..f232ed5
Binary files /dev/null and b/packages/metavinci/landing/image.png differ
diff --git a/packages/metavinci/landing/landing.css b/packages/metavinci/landing/landing.css
new file mode 100644
index 0000000..f7a6c17
--- /dev/null
+++ b/packages/metavinci/landing/landing.css
@@ -0,0 +1,102 @@
+
+body {
+ background-color: black;
+}
+
+.header {
+ font-family: Graphik Web Regular;
+ font-style: italic;
+ font-weight: 500;
+ font-size: 2rem;
+ line-height: 40px;
+
+ color: #FFFFFF;
+ border: 1px solid #000000;
+
+}
+
+.subheader {
+ font-family: Graphik Web Regular;
+ font-style: normal;
+ font-weight: 500;
+ font-size: 36px;
+ line-height: 48px;
+
+ color: #FFFFFF;
+ margin: 42px 0px;
+}
+
+.text {
+ font-family: Graphik Web Regular;
+ font-style: normal;
+ font-weight: normal;
+ font-size: 18px;
+ line-height: 1.5;
+
+ color: rgba(255, 255, 255, 0.7);
+
+}
+
+.image {
+ width: 100%;
+ height: 100vw;
+
+ background: url(image.png);
+ background-repeat: no-repeat;
+ background-size: contain;
+}
+
+/* button {
+ display: flex;
+ flex-direction: row;
+ justify-content: center;
+ align-items: center;
+ padding: 20px 10px;
+
+ position: static;
+ width: 350px;
+ height: 59px;
+ left: 0px;
+ top: 69px;
+
+ background: linear-gradient(270deg, #616774 7.29%, #403F4C 100%);
+ border-radius: 8px;
+
+ flex: none;
+ order: 1;
+ flex-grow: 0;
+ margin: 15px 0px;
+
+ color: white;
+}
+
+.email-input {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+ padding: 16px 10px 16px 24px;
+
+ position: static;
+ width: 348px;
+ height: 54px;
+ left: 0px;
+ top: 0px;
+
+ background: #282828;
+ border-radius: 8px;
+
+ flex: none;
+ order: 0;
+ flex-grow: 0;
+ margin: 15px 0px;
+} */
+
+.typeform-widget {
+ height: 360px !important;
+}
+
+#form {
+ width: 100%;
+ max-width: 400px;
+ margin-bottom: 50px;
+}
diff --git a/packages/metavinci/landing/landing.html b/packages/metavinci/landing/landing.html
new file mode 100644
index 0000000..7cb94c5
--- /dev/null
+++ b/packages/metavinci/landing/landing.html
@@ -0,0 +1,47 @@
+
+
+
+ Metaplex NFT Marketplace
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Metaplex is an open source NFT framework built on Solana that puts creators and artists in the drivers
+ seat.
+
+
+ With Metaplex, you can launch an NFT marketplace in minutes.
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/metavinci/src/views/auctionCreate/index.tsx b/packages/metavinci/src/views/auctionCreate/index.tsx
index e30b921..adb3f84 100644
--- a/packages/metavinci/src/views/auctionCreate/index.tsx
+++ b/packages/metavinci/src/views/auctionCreate/index.tsx
@@ -53,6 +53,7 @@ import {
WinningConstraint,
} from '../../models/metaplex';
import { serialize } from 'borsh';
+import moment from 'moment'
import {
createAuctionManager,
SafetyDepositDraft,
@@ -94,7 +95,8 @@ export interface AuctionState {
// suggested date time when auction should end UTC+0
endDate?: Date;
- // Jose's attributes
+
+ //////////////////
category: AuctionCategory;
saleType?: 'auction' | 'sale';
@@ -362,7 +364,7 @@ export const AuctionCreateView = () => {
)}
{stepsByCategory[attributes.category][step][1]}
- {0 < step && step < (stepsByCategory[attributes.category].length -1) && (
+ {0 < step && step < (stepsByCategory[attributes.category].length - 1) && (
gotoNextStep(step - 1)}
@@ -526,12 +528,12 @@ const CopiesStep = (props: {
tiers:
!props.attributes.tiers || props.attributes.tiers?.length == 0
? [
- {
- to: 0,
- name: 'Default Tier',
- items: props.attributes.items,
- },
- ]
+ {
+ to: 0,
+ name: 'Default Tier',
+ items: props.attributes.items,
+ },
+ ]
: props.attributes.tiers,
});
props.confirm();
@@ -599,28 +601,39 @@ const TierWinners = (props: {
tier: Tier;
setTier: Function;
previousTo?: number;
+ lastTier?: Tier;
}) => {
+ const from = (props.previousTo || 0) + 1
return (
<>
Winners
- null}
+ onChange={value =>
+ null
+ }
/>
to
- null}
+ onChange={value =>
+ props.setTier(props.idx, {
+ ...props.tier,
+ to: value || props.tier.to,
+ })
+ }
/>
@@ -654,7 +667,7 @@ const TierWinners = (props: {
/>
- {}} allowMultiple={true} />
+ { }} allowMultiple={true} />
>
);
};
@@ -703,7 +716,7 @@ const TierStep = (props: {
(_, idx) => ({
to: Math.trunc(
((idx + 1) * (props.attributes.spots as number)) /
- parseInt(info.target.value),
+ parseInt(info.target.value),
),
name: '',
description: '',
@@ -722,8 +735,10 @@ const TierStep = (props: {
tier={tier}
setTier={setTier}
previousTo={tiers[idx - 1]?.to}
+ lastTier={tiers.slice(-1)[0]}
/>
))}
+
@@ -903,7 +918,6 @@ const PriceAuction = (props: {
(true);
const [listNow, setListNow] = useState(true);
+ const [saleMoment, setSaleMoment] = useState(props.attributes.startSaleTS ? moment.unix(props.attributes.startSaleTS) : undefined)
+ const [listMoment, setListMoment] = useState(props.attributes.startListTS ? moment.unix(props.attributes.startListTS) : undefined)
+
+ useEffect(() => {
+ props.setAttributes({
+ ...props.attributes,
+ startSaleTS: saleMoment && saleMoment.unix() * 1000
+ })
+ }, [saleMoment])
+
+ useEffect(() => {
+ props.setAttributes({
+ ...props.attributes,
+ startListTS: listMoment && listMoment.unix() * 1000
+ })
+ }, [listMoment])
+
+ useEffect(() => {
+ if (startNow) setSaleMoment(moment())
+ }, [startNow])
+
+ useEffect(() => {
+ if (listNow) setListMoment(moment())
+ }, [listNow])
+
return (
<>
@@ -1104,7 +1143,6 @@ const EndingPhaseAuction = (props: {
void;
}) => {
const [untilSold, setUntilSold] = useState(true);
+ const [endMoment, setEndMoment] = useState(props.attributes.endTS ? moment.unix(props.attributes.endTS) : undefined)
+
+ useEffect(() => {
+ props.setAttributes({
+ ...props.attributes,
+ endTS: endMoment && endMoment.unix() * 1000
+ })
+ }, [endMoment])
+
+ useEffect(() => {
+ if (untilSold) setEndMoment(undefined)
+ }, [untilSold])
return (
<>
@@ -1199,12 +1248,33 @@ const EndingPhaseSale = (props: {
console.log(dt?.unix())}
+ disabledDate={current => current && current < moment().endOf('day')}
+ value={endMoment}
+ onChange={value => {
+ if (!value) return
+ if (!endMoment) return setEndMoment(value)
+
+ const currentMoment = endMoment.clone()
+ currentMoment.hour(value.hour())
+ currentMoment.minute(value.minute())
+ currentMoment.second(value.second())
+ setEndMoment(currentMoment)
+ }}
/>
console.log(dt?.unix())}
+ value={endMoment}
+ onChange={value => {
+ if (!value) return
+ if (!endMoment) return setEndMoment(value)
+
+ const currentMoment = endMoment.clone()
+ currentMoment.hour(value.hour())
+ currentMoment.minute(value.minute())
+ currentMoment.second(value.second())
+ setEndMoment(currentMoment)
+ }}
/>
)}
@@ -1242,7 +1312,7 @@ const ParticipationStep = (props: {
{}}
+ setSelected={() => { }}
allowMultiple={false}
>
Select NFT