From 99bfadc0dce96b3bcab92bf358899e24b0985bf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Tue, 27 Oct 2020 14:44:12 +0100 Subject: [PATCH 1/2] Remove old designs & old bootstrap theme --- app/Designs/AbstractDesign.php | 27 -- app/Designs/Bold.php | 141 ------- app/Designs/Business.php | 149 ------- app/Designs/Clean.php | 150 ------- app/Designs/Creative.php | 128 ------ app/Designs/Custom.php | 46 -- app/Designs/Designer.php | 396 ------------------ app/Designs/Elegant.php | 144 ------- app/Designs/Hipster.php | 153 ------- app/Designs/Modern.php | 151 ------- app/Designs/Photo.php | 154 ------- app/Designs/Plain.php | 131 ------ app/Designs/Playful.php | 143 ------- .../views/portal/default/auth/login.blade.php | 103 ----- .../default/auth/passwords/email.blade.php | 51 --- .../default/auth/passwords/reset.blade.php | 71 ---- .../portal/default/client/edit.blade.php | 160 ------- .../portal/default/dashboard/index.blade.php | 109 ----- .../portal/default/flash-message.blade.php | 40 -- .../views/portal/default/footer.blade.php | 18 - .../default/gateways/authorize.blade.php | 27 -- .../portal/default/gateways/pay_now.blade.php | 71 ---- .../gateways/stripe/add_credit_card.blade.php | 139 ------ .../gateways/stripe/credit_card.blade.php | 174 -------- .../views/portal/default/header.blade.php | 61 --- .../portal/default/invoices/index.blade.php | 271 ------------ .../portal/default/invoices/payment.blade.php | 222 ---------- .../portal/default/invoices/show.blade.php | 46 -- .../portal/default/layouts/guest.blade.php | 47 --- .../portal/default/layouts/master.blade.php | 71 ---- .../default/payment_methods/index.blade.php | 92 ---- .../default/payment_methods/show.blade.php | 67 --- .../portal/default/payments/index.blade.php | 82 ---- .../portal/default/payments/show.blade.php | 43 -- .../profile/client_information.blade.php | 135 ------ .../profile/client_localization.blade.php | 35 -- .../portal/default/profile/index.blade.php | 68 --- .../recurring_invoices/index.blade.php | 82 ---- .../request_cancellation.blade.php | 43 -- .../default/recurring_invoices/show.blade.php | 70 ---- .../views/portal/default/sidebar.blade.php | 15 - 41 files changed, 4326 deletions(-) delete mode 100644 app/Designs/AbstractDesign.php delete mode 100644 app/Designs/Bold.php delete mode 100644 app/Designs/Business.php delete mode 100644 app/Designs/Clean.php delete mode 100644 app/Designs/Creative.php delete mode 100644 app/Designs/Custom.php delete mode 100644 app/Designs/Designer.php delete mode 100644 app/Designs/Elegant.php delete mode 100644 app/Designs/Hipster.php delete mode 100644 app/Designs/Modern.php delete mode 100644 app/Designs/Photo.php delete mode 100644 app/Designs/Plain.php delete mode 100644 app/Designs/Playful.php delete mode 100644 resources/views/portal/default/auth/login.blade.php delete mode 100644 resources/views/portal/default/auth/passwords/email.blade.php delete mode 100644 resources/views/portal/default/auth/passwords/reset.blade.php delete mode 100644 resources/views/portal/default/client/edit.blade.php delete mode 100644 resources/views/portal/default/dashboard/index.blade.php delete mode 100644 resources/views/portal/default/flash-message.blade.php delete mode 100644 resources/views/portal/default/footer.blade.php delete mode 100644 resources/views/portal/default/gateways/authorize.blade.php delete mode 100644 resources/views/portal/default/gateways/pay_now.blade.php delete mode 100644 resources/views/portal/default/gateways/stripe/add_credit_card.blade.php delete mode 100644 resources/views/portal/default/gateways/stripe/credit_card.blade.php delete mode 100644 resources/views/portal/default/header.blade.php delete mode 100644 resources/views/portal/default/invoices/index.blade.php delete mode 100644 resources/views/portal/default/invoices/payment.blade.php delete mode 100644 resources/views/portal/default/invoices/show.blade.php delete mode 100644 resources/views/portal/default/layouts/guest.blade.php delete mode 100644 resources/views/portal/default/layouts/master.blade.php delete mode 100644 resources/views/portal/default/payment_methods/index.blade.php delete mode 100644 resources/views/portal/default/payment_methods/show.blade.php delete mode 100644 resources/views/portal/default/payments/index.blade.php delete mode 100644 resources/views/portal/default/payments/show.blade.php delete mode 100644 resources/views/portal/default/profile/client_information.blade.php delete mode 100644 resources/views/portal/default/profile/client_localization.blade.php delete mode 100644 resources/views/portal/default/profile/index.blade.php delete mode 100644 resources/views/portal/default/recurring_invoices/index.blade.php delete mode 100644 resources/views/portal/default/recurring_invoices/request_cancellation.blade.php delete mode 100644 resources/views/portal/default/recurring_invoices/show.blade.php delete mode 100644 resources/views/portal/default/sidebar.blade.php diff --git a/app/Designs/AbstractDesign.php b/app/Designs/AbstractDesign.php deleted file mode 100644 index 1f56ae33437e..000000000000 --- a/app/Designs/AbstractDesign.php +++ /dev/null @@ -1,27 +0,0 @@ -$number - - - - -'; - } - - public function header() - { - return '
-
-
-
- $company_logo -
-
-
- $company_details -
-
- $company_address -
-
-
'; - } - - public function body() - { - return '
-
-
-

$entity_label

-
$client_details
-
-
-
-
- $entity_details -
-
-
-
-
- -
- - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
-
-
-
- $entity.public_notes -
-
-
- $subtotal_label $discount_label $total_tax_labels $line_tax_labels -
-
- $subtotal $discount $total_tax_values $line_tax_values -
-
-
- -
-
-

$terms_label

- $terms -
-
-
- $balance_due_label -
-
- $balance_due -
-
-
-'; - } - - public function task() - { - return ''; - } - - public function product() - { - return ''; - } - - public function footer() - { - return ' -'; - } -} diff --git a/app/Designs/Business.php b/app/Designs/Business.php deleted file mode 100644 index 445f4ea44d0d..000000000000 --- a/app/Designs/Business.php +++ /dev/null @@ -1,149 +0,0 @@ -$number - - - - - -'; - } - - public function header() - { - return '
-
-
- $company_logo -
-
- $company_details -
-
- $company_address -
-
'; - } - - public function body() - { - return '
-
- $client_details -
-
-
- $entity_details -
-
-
- - - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
-
-
-
-

$entity.public_notes

-
-
-
-
-
- $discount_label - $total_tax_labels - $line_tax_labels -
-
- $discount - $total_tax_values - $line_tax_values -
-
-
-
-
-
-
-

$terms_label

-

$terms

-
-
-
-
-

$balance_due_label

-

$balance_due

-
-
-
-
'; - } - - public function task() - { - return ''; - } - - public function product() - { - return ''; - } - - public function footer() - { - return ' -'; - } -} diff --git a/app/Designs/Clean.php b/app/Designs/Clean.php deleted file mode 100644 index 551076160a44..000000000000 --- a/app/Designs/Clean.php +++ /dev/null @@ -1,150 +0,0 @@ -$number - - - - -'; - } - - public function header() - { - return '
-
-
-
$company_logo
-
-
-
- $company_details -
-
- $company_address -
-
-
'; - } - - public function body() - { - return '

- $entity_label -

- -
- -
-
-
- $entity_labels -
-
- $entity_details -
-
- $client_details -
-
-
-
- - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
-
-
- $entity.public_notes -
-
-
- $discount_label - $total_tax_labels - $line_tax_labels -
-
- $discount - $total_tax_values - $line_tax_values -
-
-
- -
-
-

$terms_label

- $terms -
-
-
- $balance_due_label -
-
- $balance_due -
-
-
-
'; - } - - public function task() - { - return ''; - } - - public function product() - { - return ''; - } - - public function footer() - { - return ' -'; - } -} diff --git a/app/Designs/Creative.php b/app/Designs/Creative.php deleted file mode 100644 index 1b35a25794f8..000000000000 --- a/app/Designs/Creative.php +++ /dev/null @@ -1,128 +0,0 @@ -$number - - - - -'; - } - - public function header() - { - return '
-
-
$client_details
-
$company_details
-
$company_address
-
$company_logo
-
'; - } - - public function body() - { - return '
-
-

#$entity_number

-
-
$entity_details
-
- - - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
-
-
-
-

$entity.public_notes

-
-
-
- $subtotal_label $discount_label $total_tax_labels $line_tax_labels -
-
- $subtotal $discount $total_tax_values $line_tax_values -
-
-
-
-
-
-

$terms_label

-

N21

-
-
-
-
-
-

$balance_due_label

-

$balance

-
-
'; - } - - public function task() - { - return ''; - } - - public function product() - { - return ''; - } - - public function footer() - { - return ' -'; - } -} diff --git a/app/Designs/Custom.php b/app/Designs/Custom.php deleted file mode 100644 index 38b600991548..000000000000 --- a/app/Designs/Custom.php +++ /dev/null @@ -1,46 +0,0 @@ -name = $design->name; - - $this->includes = $design->design->includes; - - $this->header = $design->design->header; - - $this->body = $design->design->body; - - $this->product = $design->design->product; - - $this->task = $design->design->task; - - $this->footer = $design->design->footer; - } -} diff --git a/app/Designs/Designer.php b/app/Designs/Designer.php deleted file mode 100644 index 14510e3777a8..000000000000 --- a/app/Designs/Designer.php +++ /dev/null @@ -1,396 +0,0 @@ -entity = $entity; - - $this->design = $design->design; - - $this->input_variables = json_decode(json_encode($input_variables), 1); - - $this->entity_string = $entity_string; - } - - /** - * Returns the design - * formatted HTML. - * @return string The HTML design built - */ - public function build():self - { - $this->setHtml() - ->exportVariables() - ->setDesign($this->getSection('includes')) - ->setDesign($this->getSection('header')) - ->setDesign($this->getSection('body')) - ->setDesign($this->getSection('footer')); - - return $this; - } - - public function init() - { - $this->setHtml() - ->exportVariables(); - - return $this; - } - - public function getIncludes() - { - return $this->getSection('includes'); - } - - public function getHeader() - { - return $this->getSection('header'); - } - - public function getFooter() - { - $div = ' - %s -
- %s - %s -
'; - - $signature = ''; - $logo = '
'; - - if (! $this->entity->user->account->isPaid()) { - $logo = ''; - } - - return sprintf($div, $this->getSection('footer'), $signature, $logo); - } - - public function getBody() - { - return $this->getSection('body'); - } - - public function getHtml():string - { - return $this->html; - } - - public function setHtml() - { - $this->html = ''; - - return $this; - } - - private function setDesign($section) - { - $this->html .= $section; - - return $this; - } - - /** - * Returns the template section on with the - * stacked variables replaced with single variables. - * - * @param string $section the method name to be executed ie header/body/table/footer - * @return string The HTML of the template section - */ - public function getSection($section):string - { - return strtr($this->design->{$section}, $this->exported_variables); - // return str_replace(array_keys($this->exported_variables), array_values($this->exported_variables), $this->design->{$section}); - } - - private function exportVariables() - { - //$s = microtime(true); - $company = $this->entity->company; - - $this->exported_variables['$custom_css'] = $this->entity->generateCustomCSS(); - $this->exported_variables['$app_url'] = $this->entity->generateAppUrl(); - $this->exported_variables['$client_details'] = $this->processVariables($this->input_variables['client_details'], $this->clientDetails($company)); - $this->exported_variables['$company_details'] = $this->processVariables($this->input_variables['company_details'], $this->companyDetails($company)); - $this->exported_variables['$company_address'] = $this->processVariables($this->input_variables['company_address'], $this->companyAddress($company)); - - if ($this->entity_string == 'invoice') { - //$this->exported_variables['$entity_labels'] = $this->processLabels($this->input_variables['invoice_details'], $this->invoiceDetails($company)); - $this->exported_variables['$entity_details'] = $this->processVariables($this->input_variables['invoice_details'], $this->invoiceDetails($company)); - } elseif ($this->entity_string == 'credit') { - //$this->exported_variables['$entity_labels'] = $this->processLabels($this->input_variables['credit_details'], $this->creditDetails($company)); - $this->exported_variables['$entity_details'] = $this->processVariables($this->input_variables['credit_details'], $this->creditDetails($company)); - } elseif ($this->entity_string == 'quote') { - //$this->exported_variables['$entity_labels'] = $this->processLabels($this->input_variables['quote_details'], $this->quoteDetails($company)); - $this->exported_variables['$entity_details'] = $this->processVariables($this->input_variables['quote_details'], $this->quoteDetails($company)); - } else { - $this->exported_variables['$entity_details'] = $this->processVariables($this->input_variables['invoice_details'], $this->quoteDetails($company)); - } - - $this->exported_variables['$product_table_header'] = $this->entity->buildTableHeader($this->input_variables['product_columns']); - $this->exported_variables['$product_table_body'] = $this->entity->buildTableBody($this->input_variables['product_columns'], $this->design->product, '$product'); - $this->exported_variables['$task_table_header'] = $this->entity->buildTableHeader($this->input_variables['task_columns']); - $this->exported_variables['$task_table_body'] = $this->entity->buildTableBody($this->input_variables['task_columns'], $this->design->task, '$task'); - - if (strlen($this->exported_variables['$task_table_body']) == 0) { - $this->exported_variables['$task_table_header'] = ''; - } - - if (strlen($this->exported_variables['$product_table_body']) == 0) { - $this->exported_variables['$product_table_header'] = ''; - } - - return $this; - } - - private function processVariables($input_variables, $variables):string - { - $output = ''; - - foreach (array_values($input_variables) as $value) { - if (array_key_exists($value, $variables)) { - $output .= $variables[$value]; - } - } - - return $output; - } - - private function processLabels($input_variables, $variables):string - { - $output = ''; - - foreach (array_keys($input_variables) as $value) { - if (array_key_exists($value, $variables)) { - //$tmp = str_replace("", "_label", $variables[$value]); - $tmp = strtr($variables[$value], '', '_label'); - $output .= $tmp; - } - } - - return $output; - } - - private function clientDetails(Company $company) - { - $data = [ - '$client.name' => '

$client.name

', - '$client.id_number' => '

$client.id_number

', - '$client.vat_number' => '

$client.vat_number

', - '$client.address1' => '

$client.address1

', - '$client.address2' => '

$client.address2

', - '$client.city_state_postal' => '

$client.city_state_postal

', - '$client.postal_city_state' => '

$client.postal_city_state

', - '$client.country' => '

$client.country

', - '$contact.email' => '

$client.email

', - '$client.custom1' => '

$client.custom1

', - '$client.custom2' => '

$client.custom2

', - '$client.custom3' => '

$client.custom3

', - '$client.custom4' => '

$client.custom4

', - '$contact.contact1' => '

$contact.custom1

', - '$contact.contact2' => '

$contact.custom2

', - '$contact.contact3' => '

$contact.custom3

', - '$contact.contact4' => '

$contact.custom4

', - ]; - - return $this->processCustomFields($company, $data); - } - - private function companyDetails(Company $company) - { - $data = [ - '$company.name' => '$company.name', - '$company.id_number' => '$company.id_number', - '$company.vat_number' => '$company.vat_number', - '$company.website' => '$company.website', - '$company.email' => '$company.email', - '$company.phone' => '$company.phone', - '$company.company1' => '$company1', - '$company.company2' => '$company2', - '$company.company3' => '$company3', - '$company.company4' => '$company4', - ]; - - return $this->processCustomFields($company, $data); - } - - private function companyAddress(Company $company) - { - $data = [ - '$company.address1' => '$company.address1', - '$company.address2' => '$company.address2', - '$company.city_state_postal' => '$company.city_state_postal', - '$company.postal_city_state' => '$company.postal_city_state', - '$company.country' => '$company.country', - '$company.company1' => '$company1', - '$company.company2' => '$company2', - '$company.company3' => '$company3', - '$company.company4' => '$company4', - ]; - - return $this->processCustomFields($company, $data); - } - - private function invoiceDetails(Company $company) - { - $data = [ - '$invoice.number' => '$invoice.number_label: $invoice.number', - '$invoice.po_number' => '$invoice.po_number_label: $invoice.po_number', - '$invoice.date' => '$invoice.date_label: $invoice.date', - '$invoice.due_date' => '$invoice.due_date_label: $invoice.due_date', - '$invoice.balance_due' => '$invoice.balance_due_label: $invoice.balance_due', - '$invoice.total' => '$invoice.total_label: $invoice.total', - '$invoice.partial_due' => '$invoice.partial_due_label: $invoice.partial_due', - '$invoice.custom1' => '$invoice1_label: $invoice.custom1', - '$invoice.custom2' => '$invoice2_label: $invoice.custom2', - '$invoice.custom3' => '$invoice3_label: $invoice.custom3', - '$invoice.custom4' => '$invoice4_label: $invoice.custom4', - '$surcharge1' => '$surcharge1_label: $surcharge1', - '$surcharge2' => '$surcharge2_label: $surcharge2', - '$surcharge3' => '$surcharge3_label: $surcharge3', - '$surcharge4' => '$surcharge4_label: $surcharge4', - - ]; - - return $this->processCustomFields($company, $data); - } - - private function quoteDetails(Company $company) - { - $data = [ - '$quote.quote_number' => '$quote.number_label: $quote.number', - '$quote.po_number' => '$quote.po_number_label: $quote.po_number', - '$quote.quote_date' => '$quote.date_label: $quote.date', - '$quote.valid_until' => '$quote.valid_until_label: $quote.valid_until', - '$quote.balance_due' => '$quote.balance_due_label: $quote.balance_due', - '$quote.quote_total' => '$quote.total_label: $quote.total', - '$quote.partial_due' => '$quote.partial_due_label: $quote.partial_due', - '$quote.custom1' => '$quote.custom1_label: $quote.custom1', - '$quote.custom2' => '$quote.custom2_label: $quote.custom2', - '$quote.custom3' => '$quote.custom3_label: $quote.custom3', - '$quote.custom4' => '$quote.custom4_label: $quote.custom4', - '$quote.surcharge1' => '$surcharge1_label: $surcharge1', - '$quote.surcharge2' => '$surcharge2_label: $surcharge2', - '$quote.surcharge3' => '$surcharge3_label: $surcharge3', - '$quote.surcharge4' => '$surcharge4_label: $surcharge4', - - ]; - - return $this->processCustomFields($company, $data); - } - - private function creditDetails(Company $company) - { - $data = [ - '$credit.number' => '$credit.number_label$credit.number', - '$credit.po_number' => '$credit.po_number_label$credit.po_number', - '$credit.date' => '$credit.date_label$credit.date', - '$credit.balance' => '$credit.balance_label$credit.balance', - '$credit.total' => '$credit.total_label$credit.total', - '$credit.partial_due' => '$credit.partial_due_label$credit.partial_due', - '$credit.custom1' => '$credit.custom1_label$credit.custom1', - '$credit.custom2' => '$credit.custom2_label$credit.custom2', - '$credit.custom3' => '$credit.custom3_label$credit.custom3', - '$credit.custom4' => '$credit.custom4_label$credit.custom4', - '$credit.surcharge1' => '$surcharge1_label$surcharge1_label: $surcharge1', - '$credit.surcharge2' => '$surcharge2_label$surcharge2_label: $surcharge2', - '$credit.surcharge3' => '$surcharge3_label$surcharge3_label: $surcharge3', - '$credit.surcharge4' => '$surcharge4_label$surcharge4_label: $surcharge4', - - ]; - - return $this->processCustomFields($company, $data); - } - - private function processCustomFields(Company $company, $data) - { - $custom_fields = $company->custom_fields; - - if (! $custom_fields) { - return $data; - } - - foreach (self::$custom_fields as $cf) { - if (! property_exists($custom_fields, $cf) || (strlen($custom_fields->{$cf}) == 0)) { - unset($data[$cf]); - } - } - - return $data; - } - - // private function processInputVariables($company, $variables) - // { - // if(is_object($variables)) - // $variables = json_decode(json_encode($variables),true); - - // $custom_fields = $company->custom_fields; - - // $matches = array_intersect(self::$custom_fields, $variables); - - // foreach ($matches as $match) { - - // if (!property_exists($custom_fields, $match) || (strlen($custom_fields->{$match}) == 0)) { - // foreach ($variables as $key => $value) { - // if ($value == $match) { - // unset($variables[$key]); - // } - // } - // } - - // } - - // return $variables; - - // } -} diff --git a/app/Designs/Elegant.php b/app/Designs/Elegant.php deleted file mode 100644 index d2b3e18a7889..000000000000 --- a/app/Designs/Elegant.php +++ /dev/null @@ -1,144 +0,0 @@ -$number - - - - -'; - } - - public function header() - { - return '
-
-
- $company_logo -
-
- $entity_details -
-
-
'; - } - - public function body() - { - return '
-
- $client_details -
-
- $company_details -
-
- $company_address -
-
- - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
-
-
-
-

$entity.public_notes

-
-
-
-
-
- $discount_label - $total_tax_labels - $line_tax_labels -
-
- $discount - $total_tax_values - $line_tax_values -
-
-
-
-
-
-
-

$terms_label

-

$terms

-
-
-
-
-

$balance_due_label

-

$balance

-
-
-
-
-

Thanks

-
-
-
'; - } - - public function task() - { - return ''; - } - - public function product() - { - return ''; - } - - public function footer() - { - return ' -'; - } -} diff --git a/app/Designs/Hipster.php b/app/Designs/Hipster.php deleted file mode 100644 index ac71ee633f34..000000000000 --- a/app/Designs/Hipster.php +++ /dev/null @@ -1,153 +0,0 @@ -$number - - - - -'; - } - - public function header() - { - return '
-
-
-

From:

-
-
- $company_details -
-
- $company_address -
-
-
-
-

To:

- $client_details -
-
- $company_logo -
-
'; - } - - public function body() - { - return '
-

$entity_label

-
- $entity_number -
- $date_label - $date -
-
- $due_date_label - $due_date -
-
- $balance_due_label - $balance_due -
-
-
- - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
-
-
-
-

$entity.public_notes

-
-

$terms_label

-

$terms

-
-
-
-
-
-
- $discount_label - $total_tax_labels - $line_tax_labels -
-
- $discount - $total_tax_values - $line_tax_values -
-
-
-

$balance_due_label

-

$balance_due

-
-
-
-
'; - } - - public function task() - { - return ''; - } - - public function product() - { - return ''; - } - - public function footer() - { - return ' -'; - } -} diff --git a/app/Designs/Modern.php b/app/Designs/Modern.php deleted file mode 100644 index 411fd1a34546..000000000000 --- a/app/Designs/Modern.php +++ /dev/null @@ -1,151 +0,0 @@ -$number - - - - - - -'; - } - - public function header() - { - return ' -
-
-
-

$company.name

-
-
- $company_details -
-
- $entity_details -
-
-
'; - } - - public function body() - { - return ' - -
-
-
- $company_logo -
-
- $client_details -
-
- -
- - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
-
-
- $entity.public_notes -
-
-
- $discount_label - $total_tax_labels - $line_tax_labels -
-
- $discount - $total_tax_values - $line_tax_values -
-
-
-
-
-
-

$terms_label

- $terms -
-
- -
-
-
-
-

$balance_due_label

-
-

$balance_due

-
-
-
-
-
-'; - } - - public function task() - { - return ''; - } - - public function product() - { - return ''; - } - - public function footer() - { - return ' -'; - } -} diff --git a/app/Designs/Photo.php b/app/Designs/Photo.php deleted file mode 100644 index 264c08bc741f..000000000000 --- a/app/Designs/Photo.php +++ /dev/null @@ -1,154 +0,0 @@ -$number - - - - -'; - } - - public function header() - { - return '
-
-
- $company_logo -
-
-
- $entity_details -
-
-
-
'; - } - - public function body() - { - return '
-
-
-

$to_label:

-
- $client_details -
-
-
-

$from_label:

-
- $company_details -
-
-
-
-
- - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
-
-
-
-

$entity.public_notes

-
-
-
-
-
- $discount_label - $total_tax_labels - $line_tax_labels -
-
- $discount - $total_tax_values - $line_tax_values -
-
-
-
-
-
-
-

$terms_label

-

$terms

-
-
-
-
-

$balance_due_label

-

$balance_due

-
-
-
-
- -'; - } - - public function task() - { - return ''; - } - - public function product() - { - return ''; - } - - public function footer() - { - return ' -'; - } -} diff --git a/app/Designs/Plain.php b/app/Designs/Plain.php deleted file mode 100644 index 016620a7f38a..000000000000 --- a/app/Designs/Plain.php +++ /dev/null @@ -1,131 +0,0 @@ -$number - - - - -'; - } - - public function header() - { - return '
-
-
- $company_logo -
-
- $company_details -
-
- $entity_details -
-
'; - } - - public function body() - { - return '
- $client_details -
- - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
- -
-
-
-

$entity.public_notes

-
-

$terms_label

-

$terms

-
-
-
-
-
-
- $discount_label - $total_tax_labels - $line_tax_labels -
-
- $discount - $total_tax_values - $line_tax_values -
-
-
-
- $balance_due_label -
-
- $balance_due -
-
-
- - -'; - } -} diff --git a/app/Designs/Playful.php b/app/Designs/Playful.php deleted file mode 100644 index 573f6655fff0..000000000000 --- a/app/Designs/Playful.php +++ /dev/null @@ -1,143 +0,0 @@ -$number - - - - -'; - } - - public function header() - { - return '
-
-
- $company_logo -
-
-
- $entity_details -
-
-
'; - } - - public function body() - { - return '
-
-
-

$to_label:

-
-
- $client_details -
-
-
-
-
-
-

$from_label:

-
-
- $company_details -
-
-
-
-
- - - $product_table_header - - - $product_table_body - -
- - - $task_table_header - - - $task_table_body - -
-
-
- $entity.public_notes -
-
-
- $discount_label - $total_tax_labels - $line_tax_labels -
-
- $discount - $total_tax_values - $line_tax_values -
-
-
-

$terms_label

-

$terms

-
-
-
-

$balance_due_label

-

$balance_due

-
-
-
'; - } - - public function task() - { - return ''; - } - - public function product() - { - return ''; - } - - public function footer() - { - return ' -
- -
'; - } -} diff --git a/resources/views/portal/default/auth/login.blade.php b/resources/views/portal/default/auth/login.blade.php deleted file mode 100644 index 569a1a401731..000000000000 --- a/resources/views/portal/default/auth/login.blade.php +++ /dev/null @@ -1,103 +0,0 @@ -@extends('portal.default.layouts.guest') - -@section('body') - -
-
-
-
-
-
- @if (session('info')) -
-
-
- - {{ session('info') }} -
-
-
- @elseif (session('error')) -
-
-
- - {{ session('error') }} -
-
-
- @endif -
- @csrf -

{{ trans('texts.account_login') }}

- @if (Session::has('error')) -
-
  • {!! Session::get('error') !!}
  • -
    - @endif -

    -
    -
    - - - -
    - - - @if ($errors->has('email')) - - {{ $errors->first('email') }} - - @endif - -
    -
    -
    - - - -
    - - - @if ($errors->has('password')) - - {{ $errors->first('password') }} - - @endif -
    - -
    -
    - -
    - -
    - - -
    -
    -
    - @env('hosted') - - @endenv -
    -
    -
    -
    - -@endsection - - diff --git a/resources/views/portal/default/auth/passwords/email.blade.php b/resources/views/portal/default/auth/passwords/email.blade.php deleted file mode 100644 index b3678ab72399..000000000000 --- a/resources/views/portal/default/auth/passwords/email.blade.php +++ /dev/null @@ -1,51 +0,0 @@ -@extends('portal.default.layouts.guest') - -@section('body') - -
    -
    -
    -
    -
    -
    - @if (session('status')) - - @endif -
    - @csrf -

    {{trans('texts.password_recovery')}}

    -

    -
    -
    - - - -
    - - - @if ($errors->has('email')) - - {{ $errors->first('email') }} - - @endif - -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - -@endsection - - diff --git a/resources/views/portal/default/auth/passwords/reset.blade.php b/resources/views/portal/default/auth/passwords/reset.blade.php deleted file mode 100644 index 16cf68dc3906..000000000000 --- a/resources/views/portal/default/auth/passwords/reset.blade.php +++ /dev/null @@ -1,71 +0,0 @@ -@extends('portal.default.layouts.guest') - -@section('body') - -
    -
    -
    -
    -
    -
    -
    -
    - @csrf - -

    {{trans('texts.change_password')}}

    -

    -
    -
    - - - -
    - - - @if ($errors->has('email')) - - {{ $errors->first('email') }} - - @endif - -
    - -
    -
    - - - -
    - - - @if ($errors->has('password')) - - {{ $errors->first('password') }} - - @endif -
    - -
    -
    - - - -
    - -
    - -
    -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    -
    - -@endsection diff --git a/resources/views/portal/default/client/edit.blade.php b/resources/views/portal/default/client/edit.blade.php deleted file mode 100644 index ab5e975ae2ca..000000000000 --- a/resources/views/portal/default/client/edit.blade.php +++ /dev/null @@ -1,160 +0,0 @@ -@extends('portal.default.layouts.master') -@push('css') - - - -@endpush -@section('body') -
    -
    - -
    - -
    - - {!! Former::framework('TwitterBootstrap4'); !!} - - {!! Former::horizontal_open() - ->id('update_contact') - ->route('client.profile.update', auth()->user()->hashed_id) - ->method('PUT'); !!} - -
    - -
    - - {{ ctrans('texts.avatar') }} -
    - -
    - - - -
    - -
    - -
    - -
    - -
    - -
    - - {{ ctrans('texts.client_information') }} - -
    - -
    - - {!! Former::text('name')->placeholder( ctrans('texts.first_name'))->label('') !!} - {!! Former::text('phone')->placeholder( ctrans('texts.phone'))->label('') !!} - {!! Former::text('website')->placeholder( ctrans('texts.website'))->label('') !!} - - {!! Former::text('address1')->placeholder( ctrans('texts.address1'))->label('') !!} - {!! Former::text('address2')->placeholder( ctrans('texts.address2'))->label('') !!} - {!! Former::text('city')->placeholder( ctrans('texts.city'))->label('') !!} - {!! Former::text('state')->placeholder( ctrans('texts.state'))->label('') !!} - {!! Former::text('postal_code')->placeholder( ctrans('texts.postal_code'))->label('') !!} - - - {!! Former::select('country_id') - ->addOption('','') - ->autocomplete('off') - ->label('') - ->fromQuery($countries, 'name', 'id') !!} - - - - {!! Former::text('shipping_address1')->placeholder( ctrans('texts.shipping_address1'))->label('') !!} - {!! Former::text('shipping_address2')->placeholder( ctrans('texts.shipping_address2'))->label('') !!} - {!! Former::text('shipping_city')->placeholder( ctrans('texts.shipping_city'))->label('') !!} - {!! Former::text('shipping_state')->placeholder( ctrans('texts.shipping_state'))->label('') !!} - {!! Former::text('shipping_postal_code')->placeholder( ctrans('texts.shipping_postal_code'))->label('') !!} - - {!! Former::select('shipping_country_id') - ->addOption('','') - ->autocomplete('off') - ->label('') - ->fromQuery($countries, 'name', 'id') !!} - -
    - - -
    - -
    - -
    - - {{ ctrans('texts.user_details') }} - -
    - -
    - - - {!! Former::text('first_name')->placeholder( ctrans('texts.first_name'))->label('') !!} - - {!! Former::text('last_name')->placeholder( ctrans('texts.last_name'))->label('') !!} - - {!! Former::text('email')->placeholder( ctrans('texts.email'))->label('') !!} - - {!! Former::text('phone')->placeholder( ctrans('texts.phone'))->label('') !!} - -
    - - -
    - - {!! Former::close() !!} - -
    - -
    - -
    -
    - -@endsection -@push('scripts') - -@endpush - -@section('footer') - - - -@endsection \ No newline at end of file diff --git a/resources/views/portal/default/dashboard/index.blade.php b/resources/views/portal/default/dashboard/index.blade.php deleted file mode 100644 index fb3fb58520ba..000000000000 --- a/resources/views/portal/default/dashboard/index.blade.php +++ /dev/null @@ -1,109 +0,0 @@ -@extends('portal.default.layouts.master') - -@section('body') -
    -
    - @if($settings->enable_client_portal_dashboard == 'true') -
    -
    -
    -
    - -
    -
    $1.999,50
    -
    {{ ctrans('texts.total_invoiced')}}
    -
    -
    -
    -
    - -
    -
    -
    - -
    -
    $1.999,50
    -
    {{ ctrans('texts.paid_to_date') }}
    -
    -
    -
    -
    - -
    -
    -
    - -
    -
    $1.999,50
    -
    {{ ctrans('texts.open_balance')}}
    -
    -
    -
    -
    -
    - @endif - -
    -
    -
    -
    {{ctrans('texts.client_information')}}
    -
    -

    {{ $client->present()->name() }}

    -
    - {!! $client->present()->address() !!} -
    -
    -
    - -
    -
    -
    {{ctrans('texts.contact_us')}}
    -
    - - @if ($company->logo) - {!! Html::image($company->logo) !!} - @else -

    {{ $company->present()->name() }}

    - @endif -
    - {!! $company->present()->address() !!} - -
    -
    -
    - -
    - - -
    -
    - -@endsection \ No newline at end of file diff --git a/resources/views/portal/default/flash-message.blade.php b/resources/views/portal/default/flash-message.blade.php deleted file mode 100644 index 7ca9fb7c516f..000000000000 --- a/resources/views/portal/default/flash-message.blade.php +++ /dev/null @@ -1,40 +0,0 @@ -
    - @if ($message = Session::get('success')) -
    - - {{ $message }} -
    - @endif - - - @if ($message = Session::get('error')) -
    - - {{ $message }} -
    - @endif - - - @if ($message = Session::get('warning')) -
    - - {{ $message }} -
    - @endif - - - @if ($message = Session::get('info')) -
    - - {{ $message }} -
    - @endif - - - @if ($errors->any()) -
    - - Please check the form below for errors -
    - @endif -
    \ No newline at end of file diff --git a/resources/views/portal/default/footer.blade.php b/resources/views/portal/default/footer.blade.php deleted file mode 100644 index a719959a3e25..000000000000 --- a/resources/views/portal/default/footer.blade.php +++ /dev/null @@ -1,18 +0,0 @@ -
    -
    -
    - @if(!$user->company->account->isPaid()) - Powered by - InvoiceNinja © 2019 Invoice Ninja LLC. - @endif -
    -
    - - - - - -@stack('scripts') - \ No newline at end of file diff --git a/resources/views/portal/default/gateways/authorize.blade.php b/resources/views/portal/default/gateways/authorize.blade.php deleted file mode 100644 index 68b9885daa20..000000000000 --- a/resources/views/portal/default/gateways/authorize.blade.php +++ /dev/null @@ -1,27 +0,0 @@ -@extends('portal.default.layouts.master') -@section('header') - -@stop -@section('body') -
    -
    -
    -
    -
    -
    - {{ ctrans('texts.add_payment_method')}} -
    -
    - - @yield('credit_card') - -
    -
    -
    -
    -
    -
    - -@endsection -@push('scripts') -@endpush \ No newline at end of file diff --git a/resources/views/portal/default/gateways/pay_now.blade.php b/resources/views/portal/default/gateways/pay_now.blade.php deleted file mode 100644 index 8a42afe6a558..000000000000 --- a/resources/views/portal/default/gateways/pay_now.blade.php +++ /dev/null @@ -1,71 +0,0 @@ -@extends('portal.default.layouts.master') -@section('header') - -@stop -@section('body') -
    -
    -
    -
    -
    -
    - {{ ctrans('texts.payment')}} -
    -
    - - -
    -
      -
    • {{ ctrans('texts.total')}} -

      {{ $amount }}

      -
    • - @if($credit_totals > 0) -
    • {{ ctrans('texts.credit_amount')}} -

      {{ $credit_totals }}

      -
    • - @endif - @if($fee > 0) -
    • {{ ctrans('texts.gateway_fee')}} -

      {{ $fee }}

      -
    • -
    • {{ ctrans('texts.amount_due')}} -

      {{ $amount_with_fee }}

      -
    • - @endif -
    -
    - - @yield('pay_now') - -
    -
    -
    -
    -
    -
    - -@endsection -@push('scripts') -@endpush -@section('footer') -@endsection - diff --git a/resources/views/portal/default/gateways/stripe/add_credit_card.blade.php b/resources/views/portal/default/gateways/stripe/add_credit_card.blade.php deleted file mode 100644 index b2aaa1e42aa2..000000000000 --- a/resources/views/portal/default/gateways/stripe/add_credit_card.blade.php +++ /dev/null @@ -1,139 +0,0 @@ -@extends('portal.default.gateways.authorize') - -@section('credit_card') - -{!! Former::framework('TwitterBootstrap4'); !!} - -{!! Former::horizontal_open() - ->id('server_response') - ->route('client.payment_methods.store') - ->method('POST'); !!} - -{!! Former::hidden('company_gateway_id')->value($gateway->gateway_id) !!} -{!! Former::hidden('gateway_type_id')->value(1) !!} -{!! Former::hidden('gateway_response')->id('gateway_response') !!} -{!! Former::hidden('is_default')->id('is_default') !!} - -{!! Former::close() !!} - - -
    -
    - -
    - - -
    -
    -
    - -
    - - -
    - - - - -
    - -
    -
    - -@endsection -@push('scripts') - - - - -@endpush - -@push('css') - - -@endpush \ No newline at end of file diff --git a/resources/views/portal/default/gateways/stripe/credit_card.blade.php b/resources/views/portal/default/gateways/stripe/credit_card.blade.php deleted file mode 100644 index fd9c9bd57491..000000000000 --- a/resources/views/portal/default/gateways/stripe/credit_card.blade.php +++ /dev/null @@ -1,174 +0,0 @@ -@extends('portal.default.gateways.pay_now') - -@section('pay_now') - -{!! Former::framework('TwitterBootstrap4'); !!} - -{!! Former::horizontal_open() - ->id('server_response') - ->route('client.payments.response') - ->method('POST'); !!} - -{!! Former::hidden('gateway_response')->id('gateway_response') !!} -{!! Former::hidden('store_card')->id('store_card') !!} -{!! Former::hidden('payment_hash')->value($payment_hash) !!} -{!! Former::hidden('company_gateway_id')->value($payment_method_id) !!} -{!! Former::hidden('payment_method_id')->value($gateway->getCompanyGatewayId()) !!} -{!! Former::close() !!} - - -@if($token) -
    - -
    - -
    -
    - -@else -
    -
    - -
    - - -
    -
    -
    - -
    - - -
    - - - - -
    - -
    -
    -@endif - -@endsection - -@push('scripts') - - - - -@endpush - -@push('css') - - -@endpush \ No newline at end of file diff --git a/resources/views/portal/default/header.blade.php b/resources/views/portal/default/header.blade.php deleted file mode 100644 index 6a8544cd4cfd..000000000000 --- a/resources/views/portal/default/header.blade.php +++ /dev/null @@ -1,61 +0,0 @@ - - \ No newline at end of file diff --git a/resources/views/portal/default/invoices/index.blade.php b/resources/views/portal/default/invoices/index.blade.php deleted file mode 100644 index ec669c3581ae..000000000000 --- a/resources/views/portal/default/invoices/index.blade.php +++ /dev/null @@ -1,271 +0,0 @@ -@extends('portal.default.layouts.master') -@section('header') - @parent - - -@stop -@section('body') -
    -
    - -{!! Former::framework('TwitterBootstrap4'); !!} - -{!! Former::horizontal_open() - ->id('payment_form') - ->route('client.invoices.bulk') - ->method('POST'); !!} - -{!! Former::hidden('hashed_ids')->id('hashed_ids') !!} -{!! Former::hidden('action')->id('action') !!} - -{!! Former::close() !!} - -
    - @include('portal.default.flash-message') - -
    - -
    - -
    - - - -
    - - - - -
    - - -
    - - -
    -
    - -
    - -
    -
    - - {!! $html->table(['class' => 'table table-hover table-striped', 'id' => 'datatable'], true) !!} - -
    -
    - -
    -
    - -@endsection -@push('scripts') - - - - - - -@endpush - diff --git a/resources/views/portal/default/invoices/payment.blade.php b/resources/views/portal/default/invoices/payment.blade.php deleted file mode 100644 index 4e21ebd358a8..000000000000 --- a/resources/views/portal/default/invoices/payment.blade.php +++ /dev/null @@ -1,222 +0,0 @@ -@extends('portal.default.layouts.master') -@section('header') - -@stop -@section('body') -
    -
    -{!! Former::framework('TwitterBootstrap4'); !!} - -{!! Former::horizontal_open() - ->id('payment_form') - ->route('client.payments.process') - ->method('POST'); !!} - -{!! Former::hidden('hashed_ids')->id('hashed_ids')->value($hashed_ids) !!} -{!! Former::hidden('company_gateway_id')->id('company_gateway_id') !!} -{!! Former::hidden('payment_method_id')->id('payment_method_id') !!} - -{!! Former::close() !!} - -
    -
    -
    -
    - {{ ctrans('texts.payment')}} -
    -
    - - -
    -
      -
    • {{ ctrans('texts.total')}} -

      {{ $formatted_total }}

      -
    • -
    -
    - - -
    - - -
    - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - -@endsection -@push('css') - -@endpush -@push('scripts') - - - -@endpush -@section('footer') -@endsection - diff --git a/resources/views/portal/default/invoices/show.blade.php b/resources/views/portal/default/invoices/show.blade.php deleted file mode 100644 index 607e3956326f..000000000000 --- a/resources/views/portal/default/invoices/show.blade.php +++ /dev/null @@ -1,46 +0,0 @@ -@extends('portal.default.layouts.master') -@section('body') -
    -
    - -{!! Former::framework('TwitterBootstrap4'); !!} - -{!! Former::horizontal_open() - ->id('payment_form') - ->route('client.invoices.bulk') - ->method('POST'); !!} - -{!! Former::hidden('hashed_ids')->id('hashed_ids')->value( $invoice->hashed_id ) !!} -{!! Former::hidden('action')->id('action')->value('payment') !!} - - - -
    -
    - - @if($invoice->isPayable()) -
    - -
    - @endif - -
    -
    - -{!! Former::close() !!} - -
    -
    - - - - - -
    - -
    -
    - -@endsection \ No newline at end of file diff --git a/resources/views/portal/default/layouts/guest.blade.php b/resources/views/portal/default/layouts/guest.blade.php deleted file mode 100644 index 4462f3baacd0..000000000000 --- a/resources/views/portal/default/layouts/guest.blade.php +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - @if (config('services.analytics.tracking_id')) - - - - @else - - @endif - - - @yield('meta_title', 'Invoice Ninja') | {{ config('app.name') }} - - - - - - - - - - - - - - - - @yield('head') - -@section('body') -@yield('body') - \ No newline at end of file diff --git a/resources/views/portal/default/layouts/master.blade.php b/resources/views/portal/default/layouts/master.blade.php deleted file mode 100644 index 2740b9e857f0..000000000000 --- a/resources/views/portal/default/layouts/master.blade.php +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - @if (config('services.analytics.tracking_id')) - - - - @else - - @endif - - @php - $user = auth()->guard('contact')->user(); - @endphp - - - @yield('meta_title', 'Invoice Ninja') | {{ config('app.name') }} - - - - - - - - - - - - - - - - - @stack('css') - @yield('head') - -@include('portal.default.header') -@yield('header') -@include('portal.default.sidebar') -@yield('sidebar') -@section('body') -@yield('body') -@include('portal.default.footer') -@yield('footer') - - - \ No newline at end of file diff --git a/resources/views/portal/default/payment_methods/index.blade.php b/resources/views/portal/default/payment_methods/index.blade.php deleted file mode 100644 index 1714363aeb2a..000000000000 --- a/resources/views/portal/default/payment_methods/index.blade.php +++ /dev/null @@ -1,92 +0,0 @@ -@extends('portal.default.layouts.master') -@section('header') - @parent - - -@stop -@section('body') -
    -
    - -{!! Former::framework('TwitterBootstrap4'); !!} - -{!! Former::horizontal_open() - ->id('payment_form') - ->route('client.invoices.bulk') - ->method('POST'); !!} - -{!! Former::hidden('hashed_ids')->id('hashed_ids') !!} -{!! Former::hidden('action')->id('action') !!} - -{!! Former::close() !!} - -
    - -
    - - - @if(auth()->user()->client->getCreditCardGateway()) - - @endif -
    -
    - - -
    -
    - {!! $html->table(['class' => 'table table-hover table-striped', 'id' => 'datatable'], true) !!} -
    -
    - - -
    -
    - -@endsection -@push('scripts') - - - - -@endpush \ No newline at end of file diff --git a/resources/views/portal/default/payment_methods/show.blade.php b/resources/views/portal/default/payment_methods/show.blade.php deleted file mode 100644 index 53c1b1e05d23..000000000000 --- a/resources/views/portal/default/payment_methods/show.blade.php +++ /dev/null @@ -1,67 +0,0 @@ -@section('meta_title', __('texts.payment_methods')) -@extends('portal.default.layouts.master') - -@section('body') -
    -
    -
    -
    -
    -
    - {{ ctrans("texts.{$payment_method->gateway_type->alias}") }} -
    -
    -

    - {{ ctrans('texts.payment_type') }}: - {{ $payment_method->gateway_type->name }} -

    -

    - {{ ctrans('texts.type') }}: - {{ ucfirst($payment_method->meta->brand) }} -

    - -

    - {{ ctrans('texts.card_number') }}: - **** **** **** {{ ucfirst($payment_method->meta->last4) }} -

    - - @isset($payment_method->meta->exp_month) -

    - {{ ctrans('texts.expires') }}: - {{ "{$payment_method->meta->exp_month}/{$payment_method->meta->exp_year}" }} -

    - @endisset - -

    - {{ ctrans('texts.date_created') }}: - {{ date(auth()->user()->client->date_format(), $payment_method->created_at) }} -

    -

    - {{ ctrans('texts.default') }}: - {{ $payment_method->is_default ? ctrans('texts.yes') : ctrans('texts.no') }} -

    -
    -
    -
    -
    -
    -
    - {{ ctrans("texts.delete_payment_method") }} -
    -
    -

    - {{ ctrans('texts.about_to_delete_payment_method') }} - {{ ctrans('texts.action_cant_be_reversed') }}. -

    -
    - -
    -
    -
    -
    -
    -@endsection diff --git a/resources/views/portal/default/payments/index.blade.php b/resources/views/portal/default/payments/index.blade.php deleted file mode 100644 index ce49bcd67c9a..000000000000 --- a/resources/views/portal/default/payments/index.blade.php +++ /dev/null @@ -1,82 +0,0 @@ -@extends('portal.default.layouts.master') -@section('header') - @parent - -@stop -@section('body') -
    -
    - -
    - -
    - -
    -
    - - {!! $html->table(['class' => 'table table-hover table-striped', 'id' => 'datatable'], true) !!} - -
    -
    -
    - -
    - -
    -
    - -@endsection -@push('scripts') - - -@endpush -@section('footer') - -@endsection - diff --git a/resources/views/portal/default/payments/show.blade.php b/resources/views/portal/default/payments/show.blade.php deleted file mode 100644 index bb1870f2ce54..000000000000 --- a/resources/views/portal/default/payments/show.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('portal.default.layouts.master') -@section('header') - -@stop -@section('body') -
    -
    -
    -
    -
    -
    - {{ ctrans('texts.payment')}} -
    -
    - - - - - - -
    {{ctrans('texts.payment_date')}}{!! $payment->clientPaymentDate() !!}
    {{ctrans('texts.transaction_reference')}}{{$payment->transaction_reference}}
    {{ctrans('texts.method')}}{{$payment->type->name}}
    {{ctrans('texts.amount')}}{{$payment->formattedAmount()}}
    {{ctrans('texts.status')}}{!! $payment::badgeForStatus($payment->status_id) !!}
    - - - @foreach($payment->invoices as $invoice) - - @endforeach -
    {{ ctrans('texts.invoice_number')}}{{ $invoice->number }}
    -
    -
    -
    -
    -
    -
    - - -@endsection -@push('css') -@endpush -@push('scripts') -@endpush -@section('footer') -@endsection - diff --git a/resources/views/portal/default/profile/client_information.blade.php b/resources/views/portal/default/profile/client_information.blade.php deleted file mode 100644 index c04e69346009..000000000000 --- a/resources/views/portal/default/profile/client_information.blade.php +++ /dev/null @@ -1,135 +0,0 @@ -
    - -
    - - {!! Former::framework('TwitterBootstrap4'); !!} - - {!! Former::horizontal_open_for_files() - ->id('update_settings') - ->route('client.profile.edit_client', auth()->user()->hashed_id) - ->method('PUT'); !!} - - {!! Former::populate(auth()->user()->client) !!} - - @csrf - -
    - -
    - {{ ctrans('texts.client_information') }} -
    - -
    - -
    -
    -
    -
    - @if(auth()->user()->client->logo) - - @else - - @endif - - {!! Former::file('logo') - ->max(2, 'MB') - ->accept('image') - ->label('') - ->inlineHelp(trans('texts.logo_help')) !!} -
    -
    -
    -
    -
    - {!! Former::text('name')->label( ctrans('texts.name')) !!} - {!! Former::text('website')->label( ctrans('texts.website')) !!} -
    -
    -
    - -
    - -
    -
    -
    - {{ ctrans('texts.address') }} -
    -
    - - {!! Former::text('address1')->label( ctrans('texts.address1')) !!} - {!! Former::text('address2')->label( ctrans('texts.address2')) !!} - {!! Former::text('city')->label( ctrans('texts.city')) !!} - {!! Former::text('state')->label( ctrans('texts.state')) !!} - {!! Former::text('postal_code')->label( ctrans('texts.postal_code')) !!} - - {!! Former::select('country_id') - ->addOption('','') - ->autocomplete('off') - ->label(ctrans('texts.country')) - ->fromQuery($countries, 'name', 'id') !!} - -
    -
    -
    - - -
    -
    -
    - {{ ctrans('texts.shipping_address') }} -
    -
    - - {!! Former::text('shipping_address1')->label( ctrans('texts.shipping_address1')) !!} - {!! Former::text('shipping_address2')->label( ctrans('texts.shipping_address2')) !!} - {!! Former::text('shipping_city')->label(ctrans('texts.shipping_city')) !!} - {!! Former::text('shipping_state')->label(ctrans('texts.shipping_state')) !!} - {!! Former::text('shipping_postal_code')->label(ctrans('texts.shipping_postal_code')) !!} - - {!! Former::select('shipping_country_id') - ->addOption('','') - ->autocomplete('off') - ->label(ctrans('texts.shipping_country')) - ->fromQuery($countries, 'name', 'id') !!} -
    -
    -
    - -
    - - - -
    - - {!! Former::close() !!} - -
    -@push('scripts') - - -@endpush \ No newline at end of file diff --git a/resources/views/portal/default/profile/client_localization.blade.php b/resources/views/portal/default/profile/client_localization.blade.php deleted file mode 100644 index d094a1599c42..000000000000 --- a/resources/views/portal/default/profile/client_localization.blade.php +++ /dev/null @@ -1,35 +0,0 @@ -
    - -
    - - {!! Former::framework('TwitterBootstrap4'); !!} - - {!! Former::horizontal_open() - ->id('update_settings') - ->route('client.profile.edit_localization', auth()->user()->hashed_id) - ->method('PUT'); !!} - - {!! Former::populate(auth()->user()->client->settings) !!} - - @csrf - -
    - -
    - {{ ctrans('texts.localization') }} -
    - -
    - - {!! Former::text('timezone_id')->label( ctrans('texts.timezone_id')) !!} - {!! Former::text('language_id')->label( ctrans('texts.language')) !!} - {!! Former::text('date_format')->label( ctrans('texts.date_format')) !!} - {!! Former::text('datetime_format')->label( ctrans('texts.datetime_format')) !!} - - - -
    - - {!! Former::close() !!} - -
    diff --git a/resources/views/portal/default/profile/index.blade.php b/resources/views/portal/default/profile/index.blade.php deleted file mode 100644 index 885e2f9c6ad9..000000000000 --- a/resources/views/portal/default/profile/index.blade.php +++ /dev/null @@ -1,68 +0,0 @@ -@extends('portal.default.layouts.master') -@push('css') - - - -@endpush -@section('body') -
    -
    -
    -
    -
    -
    - {{ ctrans('texts.details') }} -
    - - {!! Former::framework('TwitterBootstrap4'); !!} - - {!! Former::horizontal_open_for_files() - ->id('update_contact') - ->route('client.profile.update', auth()->user()->hashed_id) - ->method('PUT'); !!} - - @csrf - -
    - -
    -
    -
    -
    - {!! Former::text('first_name')->label( ctrans('texts.first_name'))->value(auth()->user()->first_name) !!} - - {!! Former::text('last_name')->placeholder('')->label( ctrans('texts.last_name'))->value(auth()->user()->last_name) !!} - - {!! Former::text('email')->placeholder('')->label(ctrans('texts.email'))->value(auth()->user()->email) !!} - - {!! Former::text('phone')->placeholder('')->label(ctrans('texts.phone'))->value(auth()->user()->phone) !!} - - {!! Former::password('password')->placeholder('')->label(ctrans('texts.password')) !!} - - {!! Former::password('password_confirmation')->placeholder('')->label(ctrans('texts.confirm_password')) !!} - -
    - -
    -
    -
    -
    -
    -
    -
    -
    -
    - - {!! Former::close() !!} - - @include('portal.default.profile.client_information') -
    -
    - -@endsection -@section('footer') -@endsection \ No newline at end of file diff --git a/resources/views/portal/default/recurring_invoices/index.blade.php b/resources/views/portal/default/recurring_invoices/index.blade.php deleted file mode 100644 index 6728bd2d475b..000000000000 --- a/resources/views/portal/default/recurring_invoices/index.blade.php +++ /dev/null @@ -1,82 +0,0 @@ -@extends('portal.default.layouts.master') -@section('header') - @parent - -@stop -@section('body') -
    -
    - -
    - -
    - -
    -
    - - {!! $html->table(['class' => 'table table-hover table-striped', 'id' => 'datatable'], true) !!} - -
    -
    -
    - -
    - -
    -
    - -@endsection -@push('scripts') - - -@endpush -@section('footer') - -@endsection - diff --git a/resources/views/portal/default/recurring_invoices/request_cancellation.blade.php b/resources/views/portal/default/recurring_invoices/request_cancellation.blade.php deleted file mode 100644 index 59fa8926a899..000000000000 --- a/resources/views/portal/default/recurring_invoices/request_cancellation.blade.php +++ /dev/null @@ -1,43 +0,0 @@ -@extends('portal.default.layouts.master') - -@section('body') -
    -
    -
    -
    -
    -
    - {{ ctrans('texts.cancellation') }} -
    -
    - - - - - - - - - - - - - - - - - - - - - - -
    {{ctrans('texts.start_date')}}{!! $invoice->start_date !!}
    {{ctrans('texts.next_send_date')}}{!! $invoice->next_send_date !!}
    {{ctrans('texts.frequency')}}{!! App\Models\RecurringInvoice::frequencyForKey($invoice->frequency_id) !!}
    {{ctrans('texts.cycles_remaining')}}{!! $invoice->remaining_cycles !!}
    {{ctrans('texts.amount')}}{!! $invoice->amount !!}
    - -
    -
    -
    -
    -
    -
    -@endsection \ No newline at end of file diff --git a/resources/views/portal/default/recurring_invoices/show.blade.php b/resources/views/portal/default/recurring_invoices/show.blade.php deleted file mode 100644 index df82793c0b6b..000000000000 --- a/resources/views/portal/default/recurring_invoices/show.blade.php +++ /dev/null @@ -1,70 +0,0 @@ -@extends('portal.default.layouts.master') -@section('header') -@stop -@section('body') -
    -
    -
    -
    -
    -
    - {{ ctrans('texts.recurring_invoice')}} -
    -
    - - - - - - - -
    {{ctrans('texts.start_date')}}{!! $invoice->formatDate($invoice->start_date,$invoice->client->date_format()) !!}
    {{ctrans('texts.next_send_date')}}{!! $invoice->formatDate($invoice->next_send_date,$invoice->client->date_format()) !!}
    {{ctrans('texts.frequency')}}{!! App\Models\RecurringInvoice::frequencyForKey($invoice->frequency_id) !!}
    {{ctrans('texts.cycles_remaining')}}{!! $invoice->remaining_cycles !!}
    {{ctrans('texts.amount')}}{!! App\Utils\Number::formatMoney($invoice->amount, $invoice->client) !!}
    - - - @foreach($invoice->invoices as $inv) - {{ $inv->id }} - {{ $inv->amount }} - @endforeach -
    - - @if($invoice->remaining_cycles >=1) -
    - -
    - @endif -
    -
    -
    -
    -
    -
    - - - -@endsection -@push('css') -@endpush -@push('scripts') -@endpush -@section('footer') -@endsection - diff --git a/resources/views/portal/default/sidebar.blade.php b/resources/views/portal/default/sidebar.blade.php deleted file mode 100644 index e966b003275a..000000000000 --- a/resources/views/portal/default/sidebar.blade.php +++ /dev/null @@ -1,15 +0,0 @@ -
    - From e78aacdcfcfcc5be463235127974871768de4348 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20Beganovi=C4=87?= Date: Tue, 27 Oct 2020 16:04:28 +0100 Subject: [PATCH 2/2] Password reset e-mai l& fix for button --- app/Models/User.php | 12 ++++ .../ResetPasswordNotification.php | 61 +++++++++++++++++++ public/css/app.css | 2 +- public/mix-manifest.json | 2 +- .../views/email/auth/password-reset.blade.php | 22 +++++++ .../views/email/components/footer.blade.php | 6 +- .../views/email/template/master.blade.php | 4 +- .../ninja2020/auth/passwords/reset.blade.php | 2 +- tailwind.config.js | 1 + 9 files changed, 104 insertions(+), 8 deletions(-) create mode 100644 app/Notifications/ResetPasswordNotification.php create mode 100644 resources/views/email/auth/password-reset.blade.php diff --git a/app/Models/User.php b/app/Models/User.php index dd2b77a9cbe0..5b5bc5c0b7e2 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -17,6 +17,7 @@ use App\Models\CompanyUser; use App\Models\Filterable; use App\Models\Language; use App\Models\Traits\UserTrait; +use App\Notifications\ResetPasswordNotification; use App\Utils\Traits\MakesHash; use App\Utils\Traits\UserSessionAttributes; use App\Utils\Traits\UserSettings; @@ -354,4 +355,15 @@ class User extends Authenticatable implements MustVerifyEmail ->withTrashed() ->where('id', $this->decodePrimaryKey($value))->firstOrFail(); } + + /** + * Send the password reset notification. + * + * @param string $token + * @return void + */ + public function sendPasswordResetNotification($token) + { + $this->notify(new ResetPasswordNotification($token)); + } } diff --git a/app/Notifications/ResetPasswordNotification.php b/app/Notifications/ResetPasswordNotification.php new file mode 100644 index 000000000000..56a341e5fcd5 --- /dev/null +++ b/app/Notifications/ResetPasswordNotification.php @@ -0,0 +1,61 @@ +token = $token; + } + + /** + * Get the notification's delivery channels. + * + * @param mixed $notifiable + * @return array + */ + public function via($notifiable) + { + return ['mail']; + } + + /** + * Get the mail representation of the notification. + * + * @param mixed $notifiable + * @return \Illuminate\Notifications\Messages\MailMessage + */ + public function toMail($notifiable) + { + return (new MailMessage) + ->view('email.auth.password-reset', ['link' => route('password.reset', $this->token)]); + } + + /** + * Get the array representation of the notification. + * + * @param mixed $notifiable + * @return array + */ + public function toArray($notifiable) + { + return [ + // + ]; + } +} diff --git a/public/css/app.css b/public/css/app.css index 5174cdc9082a..ff1ba295d0c1 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -1 +1 @@ -/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:Open Sans,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;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus,.form-radio:checked{border-color:transparent}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{opacity:.5;cursor:not-allowed}.button-primary{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.button-primary:hover{font-weight:600}.button-block{display:block;width:100%}.button-danger{--bg-opacity:1;background-color:#f05252;background-color:rgba(240,82,82,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.button-danger:hover{--bg-opacity:1;background-color:#e02424;background-color:rgba(224,36,36,var(--bg-opacity))}.button-secondary{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.button-secondary:hover{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.button-link:hover{font-weight:600;text-decoration:underline}.button-link:focus{outline:2px solid transparent;outline-offset:2px;text-decoration:underline}.validation{border-left-width:2px;margin-top:.5rem;margin-bottom:.25rem;--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));padding:.25rem .75rem}.validation-fail{border-color:#f05252;border-color:rgba(240,82,82,var(--border-opacity))}.validation-fail,.validation-pass{--border-opacity:1;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));font-size:.875rem}.validation-pass{border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.input{align-items:center;border-width:1px;--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));border-radius:.25rem;margin-top:.5rem;padding:.5rem 1rem;font-size:.875rem}.input:focus{outline:2px solid transparent;outline-offset:2px;--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.input-label{font-size:.875rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.alert{padding:.75rem 1rem;font-size:.875rem;border-left-width:2px;margin-top:.5rem;margin-bottom:.25rem;--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.alert-success{--border-opacity:1;border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.alert-failure{--border-opacity:1;border-color:#f05252;border-color:rgba(240,82,82,var(--border-opacity))}.badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:9999px;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.badge-light,.badge-primary{--bg-opacity:1;--text-opacity:1}.badge-primary{background-color:#c3ddfd;background-color:rgba(195,221,253,var(--bg-opacity));color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.badge-danger{background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity));color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.badge-danger,.badge-success{--bg-opacity:1;--text-opacity:1}.badge-success{background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity));color:#0e9f6e;color:rgba(14,159,110,var(--text-opacity))}.badge-secondary{--bg-opacity:1;background-color:#252f3f;background-color:rgba(37,47,63,var(--bg-opacity));--text-opacity:1;color:#e5e7eb;color:rgba(229,231,235,var(--text-opacity))}.badge-warning{background-color:#feecdc;background-color:rgba(254,236,220,var(--bg-opacity));color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.badge-info,.badge-warning{--bg-opacity:1;--text-opacity:1}.badge-info{background-color:#e1effe;background-color:rgba(225,239,254,var(--bg-opacity));color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}@media (min-width:640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width:1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;align-items:center!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;border-radius:.25rem!important;margin-top:.5rem!important;font-size:.875rem!important;margin-left:.5rem!important;margin-right:.5rem!important;padding:.5rem!important}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background-color:#fff!important;border-radius:.375rem!important;font-size:1rem!important;line-height:1.5!important;align-items:center!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;border-radius:.25rem!important;margin-top:.5rem!important;padding:.5rem 1rem!important;font-size:.875rem!important}@media (min-width:1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;font-size:.875rem!important;line-height:1rem!important;font-weight:500!important;border-radius:.25rem!important;--text-opacity:1!important;color:#374151!important;color:rgba(55,65,81,var(--text-opacity))!important;margin-right:.25rem!important;padding:.5rem 1rem!important;cursor:pointer!important}.dataTables_paginate .current{--bg-opacity:1!important;background-color:#1c64f2!important;background-color:rgba(28,100,242,var(--bg-opacity))!important;--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important}.dataTables_info{font-size:.875rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;border-top-width:2px!important;border-color:transparent!important;padding-top:1rem!important;padding-left:1rem!important;padding-right:1rem!important;display:inline-flex!important;align-items:center!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;--text-opacity:1!important;color:#6b7280!important;color:rgba(107,114,128,var(--text-opacity))!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important;cursor:pointer!important}.pagination .page-link:hover{--text-opacity:1!important;color:#374151!important;color:rgba(55,65,81,var(--text-opacity))!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.pagination .page-link:focus{outline:2px solid transparent;outline-offset:2px;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.pagination .active>span{--text-opacity:1!important;color:#1c64f2!important;color:rgba(28,100,242,var(--text-opacity))!important;--border-opacity:1!important;border-color:#1c64f2!important;border-color:rgba(28,100,242,var(--border-opacity))!important}.space-x-1>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.25rem*var(--space-x-reverse));margin-left:calc(0.25rem*(1 - var(--space-x-reverse)))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-gray-600{--bg-opacity:1;background-color:#4b5563;background-color:rgba(75,85,99,var(--bg-opacity))}.bg-gray-800{--bg-opacity:1;background-color:#252f3f;background-color:rgba(37,47,63,var(--bg-opacity))}.bg-gray-900{--bg-opacity:1;background-color:#161e2e;background-color:rgba(22,30,46,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-600{--bg-opacity:1;background-color:#1c64f2;background-color:rgba(28,100,242,var(--bg-opacity))}.focus\:bg-gray-100:focus,.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.focus\:bg-gray-600:focus{--bg-opacity:1;background-color:#4b5563;background-color:rgba(75,85,99,var(--bg-opacity))}.active\:bg-gray-50:active{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-800{--border-opacity:1;border-color:#252f3f;border-color:rgba(37,47,63,var(--border-opacity))}.border-green-500{--border-opacity:1;border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.border-blue-500{--border-opacity:1;border-color:#3f83f8;border-color:rgba(63,131,248,var(--border-opacity))}.border-blue-600{--border-opacity:1;border-color:#1c64f2;border-color:rgba(28,100,242,var(--border-opacity))}.hover\:border-gray-300:hover{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.focus\:border-gray-400:focus{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded-sm{border-radius:.125rem}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-none{border-style:none}.border-0{border-width:0}.border{border-width:1px}.border-t-2{border-top-width:2px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.font-sans{font-family:Open Sans,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}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.focus\:font-semibold:focus,.hover\:font-semibold:hover{font-weight:600}.h-0{height:0}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-12{height:3rem}.h-16{height:4rem}.h-32{height:8rem}.h-screen{height:100vh}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.m-auto{margin:auto}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mb-10{margin-bottom:2.5rem}.-mr-1{margin-right:-.25rem}.-ml-1{margin-left:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-px{margin-top:-1px}.max-w-xs{max-width:20rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.min-h-screen{min-height:100vh}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.pr-1{padding-right:.25rem}.pl-1{padding-left:.25rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pb-20{padding-bottom:5rem}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.inset-x-0{right:0;left:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.shadow-xs{box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.focus\:shadow-outline:focus{box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{box-shadow:0 0 0 3px rgba(164,202,254,.45)}.fill-current{fill:currentColor}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-blue-600{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.hover\:text-gray-300:hover{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-600:hover{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.hover\:text-gray-700:hover{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-600:hover{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.hover\:text-indigo-900:hover{--text-opacity:1;color:#362f78;color:rgba(54,47,120,var(--text-opacity))}.focus\:text-gray-500:focus{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.focus\:text-gray-600:focus{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.focus\:text-gray-700:focus{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-gray-800:active{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.uppercase{text-transform:uppercase}.focus\:underline:focus{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.whitespace-no-wrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.w-0{width:0}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-48{width:12rem}.w-56{width:14rem}.w-64{width:16rem}.w-auto{width:auto}.w-1\/2{width:50%}.w-full{width:100%}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.gap-4{grid-gap:1rem;gap:1rem}.gap-6{grid-gap:1.5rem;gap:1.5rem}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-12{grid-column:span 12/span 12}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-5{grid-column-start:5}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.translate-y-0{--transform-translate-y:0}.translate-y-4{--transform-translate-y:1rem}.transition-all{transition-property:all}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform}.transition-opacity{transition-property:opacity}.ease-linear{transition-timing-function:linear}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{transition-duration:75ms}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@media (min-width:640px){.sm\:container{width:100%;max-width:640px}@media (min-width:768px){.sm\:container{max-width:768px}}@media (min-width:1024px){.sm\:container{max-width:1024px}}@media (min-width:1280px){.sm\:container{max-width:1280px}}.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:flex-shrink-0{flex-shrink:0}.sm\:h-10{height:2.5rem}.sm\:h-screen{height:100vh}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:mt-4{margin-top:1rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:gap-4{grid-gap:1rem;gap:1rem}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.sm\:scale-100{--transform-scale-x:1;--transform-scale-y:1}.sm\:translate-y-0{--transform-translate-y:0}}@media (min-width:768px){.md\:container{width:100%}@media (min-width:640px){.md\:container{max-width:640px}}@media (min-width:768px){.md\:container{max-width:768px}}@media (min-width:1024px){.md\:container{max-width:1024px}}@media (min-width:1280px){.md\:container{max-width:1280px}}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}.md\:justify-between{justify-content:space-between}.md\:flex-shrink-0{flex-shrink:0}.md\:mt-0{margin-top:0}.md\:mr-2{margin-right:.5rem}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mt-10{margin-top:2.5rem}.md\:-mr-1{margin-right:-.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:gap-6{grid-gap:1.5rem;gap:1.5rem}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-start-2{grid-column-start:2}.md\:col-start-4{grid-column-start:4}}@media (min-width:1024px){.lg\:container{width:100%}@media (min-width:640px){.lg\:container{max-width:640px}}@media (min-width:768px){.lg\:container{max-width:768px}}@media (min-width:1024px){.lg\:container{max-width:1024px}}@media (min-width:1280px){.lg\:container{max-width:1280px}}.lg\:block{display:block}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:col-span-3{grid-column:span 3/span 3}}@media (min-width:1280px){.xl\:container{width:100%}@media (min-width:640px){.xl\:container{max-width:640px}}@media (min-width:768px){.xl\:container{max-width:768px}}@media (min-width:1024px){.xl\:container{max-width:1024px}}@media (min-width:1280px){.xl\:container{max-width:1280px}}} \ No newline at end of file +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:Open Sans,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;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea:-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus,.form-radio:checked{border-color:transparent}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:focus{outline:none;box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{opacity:.5;cursor:not-allowed}.button-primary{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.button-primary:hover{font-weight:600}.button-block{display:block;width:100%}.button-danger{--bg-opacity:1;background-color:#f05252;background-color:rgba(240,82,82,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.button-danger:hover{--bg-opacity:1;background-color:#e02424;background-color:rgba(224,36,36,var(--bg-opacity))}.button-secondary{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.button-secondary:hover{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.button-link:hover{font-weight:600;text-decoration:underline}.button-link:focus{outline:2px solid transparent;outline-offset:2px;text-decoration:underline}.validation{border-left-width:2px;margin-top:.5rem;margin-bottom:.25rem;--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));padding:.25rem .75rem}.validation-fail{border-color:#f05252;border-color:rgba(240,82,82,var(--border-opacity))}.validation-fail,.validation-pass{--border-opacity:1;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));font-size:.875rem}.validation-pass{border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.input{align-items:center;border-width:1px;--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));border-radius:.25rem;margin-top:.5rem;padding:.5rem 1rem;font-size:.875rem}.input:focus{outline:2px solid transparent;outline-offset:2px;--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.input-label{font-size:.875rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.alert{padding:.75rem 1rem;font-size:.875rem;border-left-width:2px;margin-top:.5rem;margin-bottom:.25rem;--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.alert-success{--border-opacity:1;border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.alert-failure{--border-opacity:1;border-color:#f05252;border-color:rgba(240,82,82,var(--border-opacity))}.badge{display:inline-flex;align-items:center;padding:.125rem .625rem;border-radius:9999px;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.badge-light,.badge-primary{--bg-opacity:1;--text-opacity:1}.badge-primary{background-color:#c3ddfd;background-color:rgba(195,221,253,var(--bg-opacity));color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.badge-danger{background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity));color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.badge-danger,.badge-success{--bg-opacity:1;--text-opacity:1}.badge-success{background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity));color:#0e9f6e;color:rgba(14,159,110,var(--text-opacity))}.badge-secondary{--bg-opacity:1;background-color:#252f3f;background-color:rgba(37,47,63,var(--bg-opacity));--text-opacity:1;color:#e5e7eb;color:rgba(229,231,235,var(--text-opacity))}.badge-warning{background-color:#feecdc;background-color:rgba(254,236,220,var(--bg-opacity));color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.badge-info,.badge-warning{--bg-opacity:1;--text-opacity:1}.badge-info{background-color:#e1effe;background-color:rgba(225,239,254,var(--bg-opacity));color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}@media (min-width:640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width:1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;align-items:center!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;border-radius:.25rem!important;margin-top:.5rem!important;font-size:.875rem!important;margin-left:.5rem!important;margin-right:.5rem!important;padding:.5rem!important}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{-webkit-appearance:none!important;-moz-appearance:none!important;appearance:none!important;background-color:#fff!important;border-radius:.375rem!important;font-size:1rem!important;line-height:1.5!important;align-items:center!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;border-radius:.25rem!important;margin-top:.5rem!important;padding:.5rem 1rem!important;font-size:.875rem!important}@media (min-width:1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important;font-size:.875rem!important;line-height:1rem!important;font-weight:500!important;border-radius:.25rem!important;--text-opacity:1!important;color:#374151!important;color:rgba(55,65,81,var(--text-opacity))!important;margin-right:.25rem!important;padding:.5rem 1rem!important;cursor:pointer!important}.dataTables_paginate .current{--bg-opacity:1!important;background-color:#1c64f2!important;background-color:rgba(28,100,242,var(--bg-opacity))!important;--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important}.dataTables_info{font-size:.875rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;border-top-width:2px!important;border-color:transparent!important;padding-top:1rem!important;padding-left:1rem!important;padding-right:1rem!important;display:inline-flex!important;align-items:center!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;--text-opacity:1!important;color:#6b7280!important;color:rgba(107,114,128,var(--text-opacity))!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-duration:.15s!important;cursor:pointer!important}.pagination .page-link:hover{--text-opacity:1!important;color:#374151!important;color:rgba(55,65,81,var(--text-opacity))!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.pagination .page-link:focus{outline:2px solid transparent;outline-offset:2px;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.pagination .active>span{--text-opacity:1!important;color:#1c64f2!important;color:rgba(28,100,242,var(--text-opacity))!important;--border-opacity:1!important;border-color:#1c64f2!important;border-color:rgba(28,100,242,var(--border-opacity))!important}.space-x-1>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.25rem*var(--space-x-reverse));margin-left:calc(0.25rem*(1 - var(--space-x-reverse)))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-gray-600{--bg-opacity:1;background-color:#4b5563;background-color:rgba(75,85,99,var(--bg-opacity))}.bg-gray-800{--bg-opacity:1;background-color:#252f3f;background-color:rgba(37,47,63,var(--bg-opacity))}.bg-gray-900{--bg-opacity:1;background-color:#161e2e;background-color:rgba(22,30,46,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-green-500{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-600{--bg-opacity:1;background-color:#1c64f2;background-color:rgba(28,100,242,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-green-600:hover{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.focus\:bg-gray-600:focus{--bg-opacity:1;background-color:#4b5563;background-color:rgba(75,85,99,var(--bg-opacity))}.active\:bg-gray-50:active{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-800{--border-opacity:1;border-color:#252f3f;border-color:rgba(37,47,63,var(--border-opacity))}.border-green-500{--border-opacity:1;border-color:#0e9f6e;border-color:rgba(14,159,110,var(--border-opacity))}.border-blue-500{--border-opacity:1;border-color:#3f83f8;border-color:rgba(63,131,248,var(--border-opacity))}.border-blue-600{--border-opacity:1;border-color:#1c64f2;border-color:rgba(28,100,242,var(--border-opacity))}.hover\:border-gray-300:hover{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.focus\:border-gray-400:focus{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded-sm{border-radius:.125rem}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-none{border-style:none}.border-0{border-width:0}.border{border-width:1px}.border-t-2{border-top-width:2px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-pointer{cursor:pointer}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.hidden{display:none}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.font-sans{font-family:Open Sans,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}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.focus\:font-semibold:focus,.hover\:font-semibold:hover{font-weight:600}.h-0{height:0}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-12{height:3rem}.h-16{height:4rem}.h-32{height:8rem}.h-screen{height:100vh}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-tight{line-height:1.25}.m-auto{margin:auto}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mb-10{margin-bottom:2.5rem}.-mr-1{margin-right:-.25rem}.-ml-1{margin-left:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-px{margin-top:-1px}.max-w-xs{max-width:20rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.min-h-screen{min-height:100vh}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overflow-y-scroll{overflow-y:scroll}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.px-10{padding-left:2.5rem;padding-right:2.5rem}.pr-1{padding-right:.25rem}.pl-1{padding-left:.25rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pb-20{padding-bottom:5rem}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.inset-x-0{right:0;left:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.shadow-xs{box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.focus\:shadow-outline:focus{box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{box-shadow:0 0 0 3px rgba(164,202,254,.45)}.fill-current{fill:currentColor}.table-auto{table-layout:auto}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-600{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.hover\:text-gray-300:hover{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-600:hover{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.hover\:text-gray-700:hover{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-600:hover{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity))}.hover\:text-indigo-900:hover{--text-opacity:1;color:#362f78;color:rgba(54,47,120,var(--text-opacity))}.focus\:text-gray-500:focus{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.focus\:text-gray-600:focus{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.focus\:text-gray-700:focus{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-gray-800:active{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.uppercase{text-transform:uppercase}.focus\:underline:focus{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wider{letter-spacing:.05em}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.whitespace-no-wrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.w-0{width:0}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-8{width:2rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-48{width:12rem}.w-56{width:14rem}.w-64{width:16rem}.w-auto{width:auto}.w-1\/2{width:50%}.w-full{width:100%}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.gap-4{grid-gap:1rem;gap:1rem}.gap-6{grid-gap:1.5rem;gap:1.5rem}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.col-span-6{grid-column:span 6/span 6}.col-span-7{grid-column:span 7/span 7}.col-span-12{grid-column:span 12/span 12}.col-start-2{grid-column-start:2}.col-start-3{grid-column-start:3}.col-start-5{grid-column-start:5}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.translate-y-0{--transform-translate-y:0}.translate-y-4{--transform-translate-y:1rem}.transition-all{transition-property:all}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform}.transition-opacity{transition-property:opacity}.ease-linear{transition-timing-function:linear}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{transition-duration:75ms}.duration-100{transition-duration:.1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}@media (min-width:640px){.sm\:container{width:100%;max-width:640px}@media (min-width:768px){.sm\:container{max-width:768px}}@media (min-width:1024px){.sm\:container{max-width:1024px}}@media (min-width:1280px){.sm\:container{max-width:1280px}}.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:flex-shrink-0{flex-shrink:0}.sm\:h-10{height:2.5rem}.sm\:h-screen{height:100vh}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:mt-4{margin-top:1rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:ml-6{margin-left:1.5rem}.sm\:max-w-sm{max-width:24rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:gap-4{grid-gap:1rem;gap:1rem}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-span-3{grid-column:span 3/span 3}.sm\:col-span-4{grid-column:span 4/span 4}.sm\:col-span-6{grid-column:span 6/span 6}.sm\:scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.sm\:scale-100{--transform-scale-x:1;--transform-scale-y:1}.sm\:translate-y-0{--transform-translate-y:0}}@media (min-width:768px){.md\:container{width:100%}@media (min-width:640px){.md\:container{max-width:640px}}@media (min-width:768px){.md\:container{max-width:768px}}@media (min-width:1024px){.md\:container{max-width:1024px}}@media (min-width:1280px){.md\:container{max-width:1280px}}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:flex-row{flex-direction:row}.md\:justify-between{justify-content:space-between}.md\:flex-shrink-0{flex-shrink:0}.md\:text-3xl{font-size:1.875rem}.md\:mt-0{margin-top:0}.md\:mr-2{margin-right:.5rem}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mt-10{margin-top:2.5rem}.md\:-mr-1{margin-right:-.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:gap-6{grid-gap:1.5rem;gap:1.5rem}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:col-span-1{grid-column:span 1/span 1}.md\:col-span-2{grid-column:span 2/span 2}.md\:col-span-3{grid-column:span 3/span 3}.md\:col-span-4{grid-column:span 4/span 4}.md\:col-span-6{grid-column:span 6/span 6}.md\:col-start-2{grid-column-start:2}.md\:col-start-4{grid-column-start:4}}@media (min-width:1024px){.lg\:container{width:100%}@media (min-width:640px){.lg\:container{max-width:640px}}@media (min-width:768px){.lg\:container{max-width:768px}}@media (min-width:1024px){.lg\:container{max-width:1024px}}@media (min-width:1280px){.lg\:container{max-width:1280px}}.lg\:block{display:block}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:col-span-3{grid-column:span 3/span 3}}@media (min-width:1280px){.xl\:container{width:100%}@media (min-width:640px){.xl\:container{max-width:640px}}@media (min-width:768px){.xl\:container{max-width:768px}}@media (min-width:1024px){.xl\:container{max-width:1024px}}@media (min-width:1280px){.xl\:container{max-width:1280px}}} \ No newline at end of file diff --git a/public/mix-manifest.json b/public/mix-manifest.json index 341a1e00b28a..b9ff545bf2fc 100644 --- a/public/mix-manifest.json +++ b/public/mix-manifest.json @@ -1,6 +1,6 @@ { "/js/app.js": "/js/app.js?id=a33a5a58bfc6e2174841", - "/css/app.css": "/css/app.css?id=fc37092c9a39881e5e2e", + "/css/app.css": "/css/app.css?id=0bd4f816cc00fc0faae6", "/js/clients/invoices/action-selectors.js": "/js/clients/invoices/action-selectors.js?id=b0f29d5fdfa492962c22", "/js/clients/invoices/payment.js": "/js/clients/invoices/payment.js?id=d7e708d66a9c769b4c6e", "/js/clients/payment_methods/authorize-ach.js": "/js/clients/payment_methods/authorize-ach.js?id=c73d32c192c36fe44123", diff --git a/resources/views/email/auth/password-reset.blade.php b/resources/views/email/auth/password-reset.blade.php new file mode 100644 index 000000000000..73f8dbe8ae3b --- /dev/null +++ b/resources/views/email/auth/password-reset.blade.php @@ -0,0 +1,22 @@ +@component('email.template.master', ['design' => 'light']) + +@slot('header') + @component('email.components.header', ['p' => '', 'logo' => 'https://www.invoiceninja.com/wp-content/uploads/2019/01/InvoiceNinja-Logo-Round-300x300.png']) + Hello! + @endcomponent + +@endslot + +You are receiving this email because we received a password reset request for your account. + +@component('email.components.button', ['url' => $link, 'show_link' => true]) + Reset Password +@endcomponent + + +@component('email.components.footer', ['url' => 'https://invoiceninja.com', 'url_text' => '© InvoiceNinja']) + If you’re having trouble clicking the "Reset Password" button, copy and paste the URL below into your web browser: + {{ $link }} +@endcomponent + +@endcomponent \ No newline at end of file diff --git a/resources/views/email/components/footer.blade.php b/resources/views/email/components/footer.blade.php index 55c822b3426c..de4fd154de31 100644 --- a/resources/views/email/components/footer.blade.php +++ b/resources/views/email/components/footer.blade.php @@ -1,8 +1,8 @@ -
    -

    {{ $slot }}

    +
    +

    {{ $slot }}

    @isset($url) - + @isset($url_text) {!! $url_text !!} @else diff --git a/resources/views/email/template/master.blade.php b/resources/views/email/template/master.blade.php index 7ca372a82fee..49f163c4817a 100644 --- a/resources/views/email/template/master.blade.php +++ b/resources/views/email/template/master.blade.php @@ -13,11 +13,11 @@ if(!isset($design)) $design = 'light';