File "index.tsx"
Full Path: /home/warrior1/public_html/wp-content/plugins/jetpack/jetpack_vendor/automattic/jetpack-videopress/src/client/admin/components/pricing-section/index.tsx
File size: 3.28 KB
MIME-type: text/x-java
Charset: utf-8
/**
* External dependencies
*/
import {
Button,
PricingTable,
PricingTableColumn,
PricingTableHeader,
PricingTableItem,
ProductPrice,
} from '@automattic/jetpack-components';
import { useConnection, useProductCheckoutWorkflow } from '@automattic/jetpack-connection';
import { __ } from '@wordpress/i18n';
import { useState } from 'react';
/**
* Internal dependencies
*/
import { usePlan } from '../../hooks/use-plan';
const PricingPage = ( { onRedirecting } ) => {
const { siteSuffix, adminUri, registrationNonce } = window.jetpackVideoPressInitialState;
const { siteProduct, product } = usePlan();
const { pricingForUi } = siteProduct;
const { handleRegisterSite, userIsConnecting } = useConnection( {
redirectUri: adminUri,
from: 'jetpack-videopress',
registrationNonce,
} );
const [ isConnecting, setIsConnecting ] = useState( false );
const { run, hasCheckoutStarted } = useProductCheckoutWorkflow( {
siteSuffix,
productSlug: product.productSlug,
redirectUrl: adminUri,
} );
const pricingItems = siteProduct.features.map( feature => ( { name: feature } ) );
/*
* Fallback to the product price if the site product price is not available.
* This can happen when the site is not connected yet.
*/
if ( ! pricingForUi?.fullPrice ) {
pricingForUi.fullPrice = product.cost;
pricingForUi.discountPrice = product.introductoryOffer.costPerInterval;
pricingForUi.currencyCode = product.currencyCode;
}
return (
<PricingTable title={ siteProduct.description } items={ pricingItems }>
<PricingTableColumn primary>
<PricingTableHeader>
<ProductPrice
price={ pricingForUi.fullPrice }
offPrice={ pricingForUi.discountPrice }
promoLabel={ __( '50% off', 'jetpack-videopress-pkg' ) }
legend={ __( '/month, billed yearly', 'jetpack-videopress-pkg' ) }
currency={ pricingForUi.currencyCode }
/>
<Button
onClick={ () => {
onRedirecting?.();
run();
} }
isLoading={ hasCheckoutStarted }
fullWidth
disabled={ isConnecting || hasCheckoutStarted || userIsConnecting }
>
{ __( 'Get VideoPress', 'jetpack-videopress-pkg' ) }
</Button>
</PricingTableHeader>
<PricingTableItem isIncluded={ true } />
<PricingTableItem isIncluded={ true } />
<PricingTableItem isIncluded={ true } />
<PricingTableItem isIncluded={ true } />
</PricingTableColumn>
<PricingTableColumn>
<PricingTableHeader>
<ProductPrice
price={ 0 }
legend=""
currency={ pricingForUi.currencyCode }
hidePriceFraction
/>
<Button
fullWidth
variant="secondary"
onClick={ () => {
setIsConnecting( true );
handleRegisterSite();
onRedirecting?.();
} }
isLoading={ userIsConnecting || isConnecting }
disabled={ userIsConnecting || isConnecting || hasCheckoutStarted }
>
{ __( 'Start for free', 'jetpack-videopress-pkg' ) }
</Button>
</PricingTableHeader>
<PricingTableItem
isIncluded={ false }
label={ <strong>{ __( 'Upload one video', 'jetpack-videopress-pkg' ) }</strong> }
/>
<PricingTableItem isIncluded={ true } />
<PricingTableItem isIncluded={ false } />
<PricingTableItem isIncluded={ false } />
</PricingTableColumn>
</PricingTable>
);
};
export default PricingPage;