This commit is contained in:
David Bomba 2022-09-17 11:49:53 +10:00
parent e0d5b6be18
commit af8becfc68
2 changed files with 624 additions and 238 deletions

View File

@ -196,7 +196,7 @@ class NinjaPlanController extends Controller
public function plan()
{
// return $this->trial();
return $this->trial();
//harvest the current plan
$data = [];
$data['late_invoice'] = false;

View File

@ -5,15 +5,6 @@
<style>
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600;1,700;1,800&display=swap');
/*
! tailwindcss v3.0.24 | MIT License | https://tailwindcss.com
*/
/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/
*,
::before,
::after {
@ -23,7 +14,7 @@
/* 2 */
border-style: solid;
/* 2 */
border-color: #e5e7eb;
border-color: currentColor;
/* 2 */
}
@ -49,12 +40,10 @@ html {
-o-tab-size: 4;
tab-size: 4;
/* 3 */
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
/* 4 */
}
.main_layout {
/*background-color: white;*/
}
/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
@ -477,6 +466,18 @@ Ensure the default browser behavior of the `hidden` attribute.
--tw-backdrop-sepia: ;
}
.sr-only{
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
.absolute{
position: absolute;
}
@ -502,6 +503,16 @@ Ensure the default browser behavior of the `hidden` attribute.
margin-right: auto;
}
.mx-\[22px\]{
margin-left: 22px;
margin-right: 22px;
}
.mx-\[40px\]{
margin-left: 40px;
margin-right: 40px;
}
.mb-\[30px\]{
margin-bottom: 30px;
}
@ -558,6 +569,58 @@ Ensure the default browser behavior of the `hidden` attribute.
margin-bottom: 26px;
}
.mb-\[25px\]{
margin-bottom: 25px;
}
.mb-\[20px\]{
margin-bottom: 20px;
}
.mb-\[5px\]{
margin-bottom: 5px;
}
.mb-\[40px\]{
margin-bottom: 40px;
}
.mr-5{
margin-right: 1.25rem;
}
.ml-5{
margin-left: 1.25rem;
}
.ml-\[10px\]{
margin-left: 10px;
}
.mb-6{
margin-bottom: 1.5rem;
}
.mb-8{
margin-bottom: 2rem;
}
.mb-1\.5{
margin-bottom: 0.375rem;
}
.mb-1{
margin-bottom: 0.25rem;
}
.mb-5{
margin-bottom: 1.25rem;
}
.mb-\[36px\]{
margin-bottom: 36px;
}
.block{
display: block;
}
@ -566,14 +629,30 @@ Ensure the default browser behavior of the `hidden` attribute.
display: flex;
}
.inline-flex{
display: inline-flex;
}
.hidden{
display: none;
}
.h-\[40px\]{
height: 40px;
}
.min-h-\[450px\]{
min-height: 450px;
}
.min-h-\[57\%\]{
min-height: 57%;
}
.min-h-\[411px\]{
min-height: 411px;
}
.w-\[100\%\]{
width: 100%;
}
@ -582,6 +661,10 @@ Ensure the default browser behavior of the `hidden` attribute.
width: 100%;
}
.w-\[87px\]{
width: 87px;
}
.max-w-\[625px\]{
max-width: 625px;
}
@ -590,6 +673,10 @@ Ensure the default browser behavior of the `hidden` attribute.
max-width: 212px;
}
.max-w-\[450px\]{
max-width: 450px;
}
.flex-1{
flex: 1 1 0%;
}
@ -602,6 +689,10 @@ Ensure the default browser behavior of the `hidden` attribute.
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.cursor-pointer{
cursor: pointer;
}
.flex-col{
flex-direction: column;
}
@ -610,6 +701,22 @@ Ensure the default browser behavior of the `hidden` attribute.
flex-direction: column-reverse;
}
.content-start{
align-content: flex-start;
}
.items-start{
align-items: flex-start;
}
.items-center{
align-items: center;
}
.justify-start{
justify-content: flex-start;
}
.justify-end{
justify-content: flex-end;
}
@ -663,10 +770,26 @@ Ensure the default browser behavior of the `hidden` attribute.
border-radius: 5px;
}
.rounded-full{
border-radius: 9999px;
}
.rounded-lg{
border-radius: 0.5rem;
}
.rounded-\[10px\]{
border-radius: 10px;
}
.border{
border-width: 1px;
}
.border-\[10px\]{
border-width: 10px;
}
.border-t-\[0px\]{
border-top-width: 0px;
}
@ -697,6 +820,16 @@ Ensure the default browser behavior of the `hidden` attribute.
border-color: transparent;
}
.border-\[\#28CA42\]{
--tw-border-opacity: 1;
border-color: rgb(40 202 66 / var(--tw-border-opacity));
}
.border-primary-green{
--tw-border-opacity: 1;
border-color: rgb(40 202 66 / var(--tw-border-opacity));
}
.bg-secondary-dark{
--tw-bg-opacity: 1;
background-color: rgb(73 68 68 / var(--tw-bg-opacity));
@ -712,6 +845,28 @@ Ensure the default browser behavior of the `hidden` attribute.
background-color: rgb(0 145 234 / var(--tw-bg-opacity));
}
.bg-primary-blue\/\[\.05\]{
background-color: rgb(0 145 234 / .05);
}
.bg-primary-grey{
--tw-bg-opacity: 1;
background-color: rgb(229 229 229 / var(--tw-bg-opacity));
}
.bg-primary-blue\/50{
background-color: rgb(0 145 234 / 0.5);
}
.bg-primary-blue\/5{
background-color: rgb(0 145 234 / 0.05);
}
.bg-\[\#F2F9FE\]{
--tw-bg-opacity: 1;
background-color: rgb(242 249 254 / var(--tw-bg-opacity));
}
.bg-clip-padding{
background-clip: padding-box;
}
@ -724,6 +879,10 @@ Ensure the default browser behavior of the `hidden` attribute.
padding: 20px;
}
.p-\[12px\]{
padding: 12px;
}
.py-\[36px\]{
padding-top: 36px;
padding-bottom: 36px;
@ -801,6 +960,26 @@ Ensure the default browser behavior of the `hidden` attribute.
padding-bottom: 26px;
}
.pb-\[58px\]{
padding-bottom: 58px;
}
.pt-\[35px\]{
padding-top: 35px;
}
.pb-\[34px\]{
padding-bottom: 34px;
}
.pt-\[29px\]{
padding-top: 29px;
}
.pb-\[56px\]{
padding-bottom: 56px;
}
.text-left{
text-align: left;
}
@ -847,6 +1026,18 @@ Ensure the default browser behavior of the `hidden` attribute.
font-size: 14px;
}
.text-\[16px\]{
font-size: 16px;
}
.text-\[22px\]{
font-size: 22px;
}
.text-\[35px\]{
font-size: 35px;
}
.font-normal{
font-weight: 400;
}
@ -887,6 +1078,14 @@ Ensure the default browser behavior of the `hidden` attribute.
line-height: 1.5em;
}
.leading-\[1\.375em\]{
line-height: 1.375em;
}
.leading-\[1\.2rem\]{
line-height: 1.2rem;
}
.text-white{
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
@ -897,11 +1096,6 @@ Ensure the default browser behavior of the `hidden` attribute.
color: rgb(0 145 234 / var(--tw-text-opacity));
}
.text-gray-700{
--tw-text-opacity: 1;
color: rgb(55 65 81 / var(--tw-text-opacity));
}
.text-dark-grey{
--tw-text-opacity: 1;
color: rgb(142 147 167 / var(--tw-text-opacity));
@ -912,6 +1106,21 @@ Ensure the default browser behavior of the `hidden` attribute.
color: rgb(219 220 222 / var(--tw-text-opacity));
}
.text-black{
--tw-text-opacity: 1;
color: rgb(0 0 0 / var(--tw-text-opacity));
}
.text-primary-dark{
--tw-text-opacity: 1;
color: rgb(46 44 44 / var(--tw-text-opacity));
}
.text-gray{
--tw-text-opacity: 1;
color: rgb(100 111 121 / var(--tw-text-opacity));
}
.transition{
transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
@ -958,7 +1167,7 @@ Ensure the default browser behavior of the `hidden` attribute.
top: 0px;
width: 30px;
height: 30px;
background: url('/images/checkmark-round.svg') center/contain no-repeat;
background: url('../src/images/checkmark-round.svg') center/contain no-repeat;
}
.list-checkmark {
@ -978,7 +1187,11 @@ Ensure the default browser behavior of the `hidden` attribute.
top: 4px;
width: 16px;
height: 16px;
background: url('/images/checkmark.svg') center/contain no-repeat;
background: url('../src/images/checkmark.svg') center/contain no-repeat;
}
.list-checkmark_green li::before {
background: url('../src/images/checkmark-green.svg') center/contain no-repeat;
}
/* Main Content */
@ -988,19 +1201,6 @@ Ensure the default browser behavior of the `hidden` attribute.
overflow: hidden;
}
.pro-plan-trial::before {
content: "";
position: absolute;
right: 0;
bottom: 0;
width: 601px;
height: 601px;
background: #0091EA;
border-radius: 50%;
transform: translate(129px, 449px);
z-index: 1;
}
.success-banner {
position: relative;
overflow: hidden;
@ -1013,7 +1213,7 @@ Ensure the default browser behavior of the `hidden` attribute.
bottom: 0;
width: 60%;
height: 100%;
background: url(/images/test.svg) right center/cover no-repeat;
background: url(../src/images/test.svg) right center/cover no-repeat;
z-index: 1;
}
@ -1023,6 +1223,64 @@ Ensure the default browser behavior of the `hidden` attribute.
}
}
.after\:absolute::after{
content: var(--tw-content);
position: absolute;
}
.after\:top-\[5px\]::after{
content: var(--tw-content);
top: 5px;
}
.after\:left-\[8px\]::after{
content: var(--tw-content);
left: 8px;
}
.after\:h-\[30px\]::after{
content: var(--tw-content);
height: 30px;
}
.after\:w-\[30px\]::after{
content: var(--tw-content);
width: 30px;
}
.after\:rounded-full::after{
content: var(--tw-content);
border-radius: 9999px;
}
.after\:bg-white::after{
content: var(--tw-content);
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
.after\:transition-all::after{
content: var(--tw-content);
transition-property: all;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.after\:content-\[\'\'\]::after{
--tw-content: '';
content: var(--tw-content);
}
.hover\:bg-primary-green:hover{
--tw-bg-opacity: 1;
background-color: rgb(40 202 66 / var(--tw-bg-opacity));
}
.hover\:text-white:hover{
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
.hover\:opacity-80:hover{
opacity: 0.8;
}
@ -1037,6 +1295,32 @@ Ensure the default browser behavior of the `hidden` attribute.
outline-offset: 2px;
}
.peer:checked ~ .peer-checked\:bg-primary-blue{
--tw-bg-opacity: 1;
background-color: rgb(0 145 234 / var(--tw-bg-opacity));
}
.peer:checked ~ .peer-checked\:text-gray{
--tw-text-opacity: 1;
color: rgb(100 111 121 / var(--tw-text-opacity));
}
.peer:checked ~ .peer-checked\:text-black{
--tw-text-opacity: 1;
color: rgb(0 0 0 / var(--tw-text-opacity));
}
.peer:checked ~ .peer-checked\:after\:translate-x-\[140\%\]::after{
content: var(--tw-content);
--tw-translate-x: 140%;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
.peer:focus ~ .peer-focus\:outline-none{
outline: 2px solid transparent;
outline-offset: 2px;
}
@media (min-width: 768px){
.md\:mx-\[0\]{
margin-left: 0;
@ -1051,6 +1335,10 @@ Ensure the default browser behavior of the `hidden` attribute.
display: flex;
}
.md\:min-h-\[411px\]{
min-height: 411px;
}
.md\:w-1\/2{
width: 50%;
}
@ -1059,6 +1347,18 @@ Ensure the default browser behavior of the `hidden` attribute.
width: 33.333333%;
}
.md\:shrink{
flex-shrink: 1;
}
.md\:grow-0{
flex-grow: 0;
}
.md\:basis-\[449px\]{
flex-basis: 449px;
}
.md\:flex-row{
flex-direction: row;
}
@ -1077,6 +1377,18 @@ Ensure the default browser behavior of the `hidden` attribute.
padding-right: 58px;
}
.md\:px-\[40px\]{
padding-left: 40px;
padding-right: 40px;
}
@media (min-width: 768px){
.md\:md\:px-\[40px\]{
padding-left: 40px;
padding-right: 40px;
}
}
.md\:pl-\[61px\]{
padding-left: 61px;
}
@ -1085,6 +1397,22 @@ Ensure the default browser behavior of the `hidden` attribute.
padding-right: 20px;
}
.md\:pt-\[58px\]{
padding-top: 58px;
}
.md\:pb-\[40px\]{
padding-bottom: 40px;
}
.md\:pl-\[52px\]{
padding-left: 52px;
}
.md\:pr-\[48px\]{
padding-right: 48px;
}
.md\:text-left{
text-align: left;
}
@ -1093,46 +1421,39 @@ Ensure the default browser behavior of the `hidden` attribute.
font-size: 30px;
}
}
@media (min-width: 1024px){
.lg\:max-w-\[80\%\]{
max-width: 80%;
}
}
</style>
<meta name="stripe-publishable-key" content="{{ $gateway->getPublishableKey()}}">
<meta name="client-postal-code" content="{{ $client->postal_code }}">
<meta name="client-name" content="{{ $client->present()->name() }}">
<div class="flex flex-col gap-[25px] justify-stretch overflow-hidden md:flex-row">
<div class="w-1/1 flex flex-col overflow-hidden md:flex-row md:w-1/2 md:flex ">
<div class="flex flex-col justify-stretch overflow-hidden md:flex-row border border-light-grey rounded">
<div class="w-1/1 flex flex-col md:flex-row md:w-1/2 md:flex ">
<div
class="w-[100%] pro-plan-trial py-[36px] px-[20px] bg-secondary-dark rounded text-white md:pl-[61px] md:pr-[20px]"
>
<h2 class="text-[24px] leading-[1.3em] font-semibold mb-[30px] relative z-10">
Enjoy 14 days of our Pro Plan
</h2>
<ul class="list-checkmark-round relative z-10">
<li class="mb-[11px]">Unlimited Clients & Invoices & Quotes</li>
<li class="mb-[11px]">Remove "Created by Invoice Ninja"</li>
<li class="mb-[11px]">10 Professional Invoice & Quote Templates</li>
<li class="mb-[11px]">Send Invoice Emails Sent via Your Gmail</li>
<li class="mb-[11px]">Attach Invoice PDF's to Client Emails</li>
<li class="mb-[11px]">Customize Auto-Reminder Emails</li>
<li class="mb-[11px]">Display Client E-Signatures on Invoices</li>
<li>Enable a Client "Approve Terms' Checkbox</li>
</ul>
<p class="mt-[30px] font-semibold text-[18px] italic relative z-10">
&amp; Much More!
class="bg-white w-[100%] flex flex-col py-[33px] px-[20px] md:pt-[58px] md:pb-[40px] md:pl-[52px] md:pr-[48px]">
<p class="text-primary-blue uppercase text-[15px] leading-[1.375em] font-bold">
Free Trial
</p>
</div>
</div>
<div class="w-1/1 flex flex-col overflow-hidden md:flex-row md:w-1/2 md:flex ">
<div
class="w-[100%] flex flex-col py-[33px] px-[20px] border border-light-grey rounded md:px-[58px]"
>
<h2 class="text-primary-blue text-[24px] leading-[1.3em] font-semibold mb-[21px]">
Start your 14 day Pro Trial!
<h2 class="text-black text-[24px] leading-[1.3em] font-bold mb-[25px]">
14 Day Pro Plan!
</h2>
<form id="card-form" action="{{ route('client.trial.response') }}" method="post">
@csrf
<input type="hidden" name="gateway_response" />
<form
id="card-form"
action="https://invoiceninja.invoicing.co/client/ninja/trial_confirmation"
method="post"
>
<input
type="hidden"
name="_token"
value="aTsghwYfoGsnKvMpaT5zst5fQa3hNNhz7XjjG1pY"
/>
<input type="hidden" name="gateway_response"/>
<div class="alert alert-failure mb-4" hidden="" id="errors"></div>
<div class="form-group mb-[10px]">
<input
@ -1141,8 +1462,8 @@ Ensure the default browser behavior of the `hidden` attribute.
id="name"
placeholder="{{ ctrans('texts.name') }}"
name="name"
value="{{$client->present()->name()}}">
value="{{$client->present()->name()}}"
/>
</div>
<div class="form-group mb-[10px]">
<input
@ -1151,8 +1472,8 @@ Ensure the default browser behavior of the `hidden` attribute.
id="address1"
placeholder="{{ ctrans('texts.address1') }}"
name="address1"
value="{{$client->address1}}">
value="{{$client->address1}}"
/>
</div>
<div class="form-group mb-[10px]">
<input
@ -1161,7 +1482,8 @@ Ensure the default browser behavior of the `hidden` attribute.
id="address2"
placeholder="{{ ctrans('texts.address2') }}"
name="address2"
value="{{$client->address2}}">
value="{{$client->address2}}"
/>
</div>
<div
class="flex form-group flex justify-center gap-[13px] mb-[10px]"
@ -1174,7 +1496,8 @@ Ensure the default browser behavior of the `hidden` attribute.
id="city"
placeholder="{{ ctrans('texts.city') }}"
name="city"
value="{{$client->city}}">
value="{{$client->city}}"
/>
</div>
</div>
<div class="w-full gap-x-2 md:w-1/3">
@ -1185,7 +1508,8 @@ Ensure the default browser behavior of the `hidden` attribute.
id="state"
placeholder="{{ ctrans('texts.state') }}"
name="state"
value="{{$client->state}}">
value="{{$client->state}}"
/>
</div>
</div>
<div class="w-full gap-x-2 md:w-1/3">
@ -1196,12 +1520,13 @@ Ensure the default browser behavior of the `hidden` attribute.
id="postal_code"
placeholder="{{ ctrans('texts.postal_code') }}"
name="postal_code"
value="{{$client->postal_code}}">
value="{{$client->postal_code}}"
/>
</div>
</div>
</div>
<div class="form-group mb-[10px]">
<select name="country" id="country" class="form-select w-full py-[9.5px] px-[12px] border border-light-grey rounded transition ease-in-out m-0 focus:border-primary-blue focus:outline-none">
<select name="country" id="country" class="form-select w-full py-[9.5px] px-[12px] border border-light-grey rounded transition ease-in-out m-0 focus:border-primary-blue focus:outline-none bg-white">
<option value="{{ $client->country->id}}" selected>{{ $client->country->iso_3166_2 }} ({{ $client->country->name }})</option>
@foreach($countries as $country)
<option value="{{ $country->id }}">{{ $country->iso_3166_2 }} ({{ $country->name }})></option>
@ -1209,7 +1534,15 @@ Ensure the default browser behavior of the `hidden` attribute.
</select>
</div>
<div class="mb-[10px]">
<div id="card-element" class="border p-4 rounded text-base font-normal text-gray-700 bg-white bg-clip-padding border border-light-grey rounded focus:border-primary-blue focus:outline-none StripeElement StripeElement--empty"></div>
<div
id="card-element"
class="border p-4 rounded text-base font-normal text-gray-700 bg-white bg-clip-padding border border-light-grey rounded focus:border-primary-blue focus:outline-none StripeElement StripeElement--empty"
>
</div>
</div>
<div class="flex justify-start mb-[25px]">
<span class="text-[12px]">* At the end of your 14 day trial your card will be charged $10/month. Cancel anytime.</span>
</div>
<div class="flex justify-end">
<button
@ -1226,89 +1559,135 @@ Ensure the default browser behavior of the `hidden` attribute.
<span>{{ $slot ?? ctrans('texts.trial_call_to_action') }}</span>
</button>
</div>
<div class="flex justify-end mt-5">
<span class="text-[12px]"
>* At the end of your 14 day trial your card will be charged
$10/month. Cancel anytime.</span
>
</div>
</form>
</div>
</div>
<div class="w-1/1 flex flex-col md:flex-row md:w-1/2 md:flex ">
<div class="w-[100%] flex flex-col content-start justify-center pro-plan-trial py-[36px] px-[20px] bg-[#F2F9FE] overflow-hidden text-primary-dark md:pl-[61px] md:pr-[20px]">
<h2 class="text-primary-blue uppercase text-[16px] leading-[1.3em] font-bold mb-[20px] relative z-10">
Pro Plan Includes
</h2>
<ul class="list-checkmark relative z-10">
<li class="mb-[5px]">Unlimited Clients & Invoices & Quotes</li>
<li class="mb-[5px]">Remove "Created by Invoice Ninja"</li>
<li class="mb-[5px]">Send Invoice Emails via Gmail or MSN Accounts</li>
<li class="mb-[5px]">10 Professional Invoice & Quote Template Designs</li>
<li class="mb-[5px]">Branded URL Option: "YourBrand".Invoicing.co"</li>
<li class="mb-[5px]">Customize Invoice Designs & Email Templates</li>
<li class="mb-[5px]">Create Client Subscriptions: Recurring & Auto-billing</li>
<li class="mb-[5px]">API Integration with 3rd Party Apps & Platforms</li>
<li class="mb-[5px]">Display Clients E-Signature on Invoices & Quotes</li>
<li>Setup Custom Payment Auto-Reminder Emails</li>
</ul>
<p class="text-primary-blue mt-[30px] font-bold text-[16px] italic relative z-10">
&amp; Much More!
</p>
</div>
</div>
</div>
<div class="mt-[50px]">
<h2 class="text-center text-[24px] mb-[50px] leading-[1.3em]">
Skip the 14-day trial and get a discounted annual upgrade!
<h2 class="text-center text-[24px] mb-[40px] leading-[1.3em] font-bold">
Skip the 14-day trial and go into a monthly or annual upgrade!
</h2>
<div class="flex flex-col gap-y-[20px] justify-center md:flex-row md:gap-x-[21px]">
<div class="w-1/1 md:w-1/2 md:flex">
<div
class="w-[100%] flex flex-col border border-light-grey rounded text-center border-t-[0px]"
>
<div
class="border-t-[10px] border-primary-blue rounded pt-[17px] pb-[23px] py-[22px]"
>
<h4 class="text-[18px] text-dark-grey uppercase">PRO Plan</h4>
<h3
class="text-[40px] font-semibold leading-[1.35em] mb-[8px] text-primary-blue"
>
$100<span class="font-normal text-[18px] ml-[5px] text-dark-grey"
>/year</span
>
</h3>
<p class="font-[16px] leading-[1.36em]">
Buy 10 months, get 2 free!
</p>
</div>
<div class="grow flex flex-col border-t-[1px] border-light-grey pt-[21px] pb-[26px] px-[22px]">
<h5 class="text-[14px] font-semibold leading-[1.36em] uppercase text-dark-grey mb-[21px]">Whats included</h5>
<ul class="mb-[24px] gap-[10px] text-left list-checkmark flex justify-between md:gap-[18px]">
<li>Unlimited Clients & Invoicing</li>
<li>Remove "Created by Invoice Ninja"</li>
<li>API Integration with 3rd Party Apps</li>
</ul>
<p
class="mb-[30px] font-semibold text-[18px] text-center italic"
>
&amp; Much More!
</p>
<a href="https://invoiceninja.invoicing.co/client/subscriptions/q9wdL9wejP/purchase" class="mt-[auto] bg-primary-blue hover:opacity-80 button button-primary bg-primary rounded-sm text-sm transition duration-300 ease-in"> Buy Now! </a>
</div>
</div>
</div>
<div class="w-1/1 md:w-1/2 md:flex">
<div
class="w-[100%] flex flex-col border border-light-grey rounded text-center"
>
<div
class="border-t-[11px] border-[transparent] rounded pt-[17px] pb-[23px] py-[22px]"
>
<h4 class="text-[18px] text-dark-grey uppercase">Enterprise Plan</h4>
<h3
class="text-[40px] font-semibold leading-[1.35em] mb-[8px] text-primary-blue"
>
$140<span class="font-normal text-[18px] ml-[5px] text-dark-grey"
>/year</span
>
</h3>
<p class="font-[16px] leading-[1.36em]">
Buy 10 months, get 2 free!
</p>
</div>
<div class="grow flex flex-col border-t-[1px] border-light-grey pt-[21px] pb-[26px] px-[22px]">
<h5 class="text-[14px] font-semibold leading-[1.36em] uppercase text-dark-grey mb-[21px]">Whats included</h5>
<ul class="mb-[24px] gap-[10px] text-left list-checkmark flex justify-between md:gap-[18px]">
<li>Additional Account Users</li>
<li>Fully Branded Client Portal</li>
<li>Attach 3rd Party Documents</li>
</ul>
<p
class="mb-[30px] font-semibold text-[18px] text-center italic"
>
&amp; Much More!
<div>
<div class="w-full text-center mb-[40px]">
<label for="large-toggle" class="inline-flex items-center cursor-pointer">
<input type="checkbox" value="" id="large-toggle" class="sr-only peer">
<span class="mr-5 text-base font-semibold text-black peer-checked:text-gray">Monthly</span>
<div class="switcher w-[87px] h-[40px] relative bg-primary-blue
peer-focus:outline-none rounded-full peer dark:bg-gray-700 peer-checked:after:translate-x-[140%] after:content-['']
after:absolute after:top-[5px] after:left-[8px] after:bg-white after:rounded-full after:h-[30px] after:w-[30px]
after:transition-all peer-checked:bg-primary-blue"></div>
<span class="ml-5 text-base font-semibold text-gray peer-checked:text-black">Annual</span>
</label>
</div>
<div class="flex flex-col gap-y-[20px] justify-center items-start md:flex-row md:gap-x-[21px]">
<div class="w-1/1 bg-white rounded-[10px] justify-end md:basis-[449px] md:shrink md:grow-0">
<div class="w-[100%] max-w-[450px] flex flex-col border border-primary-green rounded-lg border-t-[0px] pb-[58px]">
<div class="flex flex-col border-t-[10px] border-primary-green rounded-lg pt-[35px] pb-[56px] px-[22px] md:min-h-[411px] md:px-[40px]">
<h4 class="text-[22px] text-black font-bold mb-[11px]">Ninja Pro</h4>
<p class="font-[16px] leading-[1.36em] text-gray mb-4 lg:max-w-[80%]">
Pay annually for 10 months + 2 free!
</p>
<a href="https://invoiceninja.invoicing.co/client/subscriptions/LYqaQWldnj/purchase" class="mt-[auto] bg-primary-blue hover:opacity-80 button button-primary bg-primary rounded-sm text-sm transition duration-300 ease-in"> Buy Now! </a>
<h3 class="text-[35px] font-bold leading-[1.35em] mb-[36px] text-black">
$10<span class="font-normal text-base ml-[10px] text-gray">Per month</span>
</h3>
<button
type="button"
class="bg-white text-primary-dark text-center button w-full p-[12px] border border-primary-green mt-[auto] rounded-full text-base leading-[1.2rem] transition duration-300 ease-in hover:bg-primary-green hover:text-white hover:opacity-80">
Go Pro!
</button>
</div>
<div class="flex flex-col border-t-[1px] border-light-grey pt-[29px] mx-[22px] md: mx-[40px]">
<h5 class="text-base font-bold leading-[1.36em] text-primary-dark uppercase mb-4">All Free Features +</h5>
<ul class="list-checkmark list-checkmark_green relative z-10">
<li class="mb-[5px]">Unlimited Clients & Invoices</li>
<li class="mb-[5px]">Remove "Created by Invoice Ninja"</li>
<li class="mb-[5px]">Email Invoices via Gmail & MSN</li>
<li class="mb-[5px]">Branded URL: 'YourSite".Invoicing.co'</li>
<li class="mb-[5px]">10 Professional Invoice Templates</li>
<li class="mb-[5px]">Customize Invoice Designs</li>
<li class="mb-[5px]">Recurring & Auto-Billing Invoices</li>
<li class="mb-[5px]">API Integration with 3rd Party Apps</li>
<li class="mb-[5px]">Password Protect Client-Side Portal</li>
<li class="mb-[5px]">Set Up Auto-Reminder Emails</li>
<li class="mb-[5px]">Auto-Attached Invoice PDF to Emails</li>
<li class="mb-[5px]">Display Clients E-Signature on Invoices</li>
<li class="mb-[5px]">Enable an 'Approve Terms' Checkbox</li>
<li class="mb-[5px]">Reports: Invoices, Expenses, P&L, more</li>
<li class="mb-[5px]">Bulk Email Invoices, Quotes, Credits</li>
<li class="mb-[5px]">Interlink 10 Companies with 1 Login</li>
<li>Create Unique "Client Group" Settings</li>
</ul>
</div>
</div>
</div>
<div class="w-1/1 bg-white rounded-[10px] md:basis-[449px] md:shrink md:grow-0">
<div class="w-[100%] max-w-[450px] flex flex-col border border-primary-blue rounded-lg border-t-[0px] pb-[58px]">
<div class="flex flex-col border-t-[10px] border-primary-blue rounded-lg pt-[35px] pb-[56px] px-[22px] md:min-h-[411px] md:px-[40px]">
<h4 class="text-[22px] text-black font-bold mb-[11px]">Enterprise</h4>
<p class="font-[16px] leading-[1.36em] text-gray mb-4 lg:max-w-[80%]">
Pay annually for 10 months + 2 free!
</p>
<h3 class="text-[35px] font-bold leading-[1.35em] mb-[36px] text-black">
$14<span class="font-normal text-base ml-[10px] text-gray">Per month</span>
</h3>
<form
id="plan-form"
action="#"
method="post"
>
<div class="form-group mb-[10px]">
<label for="users" class="font-base primary-dark mb-1.5">Plan selected:</label>
<select
name="users"
id="users"
class="form-select w-full py-[9.5px] px-[12px] mb-5 border border-light-grey rounded-lg transition ease-in-out m-0 focus:border-primary-blue focus:outline-none bg-white"
>
<option value="1" selected="">1-2 users</option>
<option value="2">3-4 users</option>
<option value="3">5-6 users</option>
</select>
</div>
</form>
<button
type="button"
class="bg-primary-blue hover:opacity-80 text-white text-center button w-full p-[12px] border border-primary-blue mt-[auto] rounded-full text-base leading-[1.2rem] transition duration-300 ease-in">
Go Enterprise!
</button>
</div>
<div class="flex flex-col border-t-[1px] border-light-grey pt-[29px] mx-[22px] md: mx-[40px]">
<h5 class="text-base font-bold leading-[1.36em] text-primary-dark mb-4 uppercase ">All Free Features +</h5>
<ul class="list-checkmark relative z-10">
<li class="mb-[20px]">Create Additional Account Users (up to 20!) & Set Access Permissions per User</li>
<li class="mb-[20px]">Attach Files to Emails & Client-Portal (pdf, jpg, ppt, xls, doc & more)</li>
<li>Fully Branded Client Portal: "Billing.YourCompany.com"</li>
</ul>
</div>
</div>
</div>
</div>
@ -1333,7 +1712,7 @@ var elements = stripe.elements({
var cardElement = elements.create('card', {
value: {
postalCode: document.querySelector('input[name=postal_code]').content,
name: document.querySelector('input[name=name]').content
name: document.querySelector('input[name=name]').content,
}
});
@ -1358,6 +1737,13 @@ var country_value = e.options[e.selectedIndex].value;
payment_method_data: {
billing_details: {
name: document.querySelector('input[name=name]').content,
address: {
line1: document.querySelector('input[name=address1]').content,
line2: document.querySelector('input[name=address2]').content,
city: document.querySelector('input[name=city]').content,
postal_code: document.querySelector('input[name=postal_code]').content,
state: document.querySelector('input[name=state]').content,
}
},
}
})