M3 Integration fixes

This commit is contained in:
Mark Gregory
2026-09-21 14:12:25 +01:00
parent 9167b11f8b
commit bcbdd24f15
8 changed files with 221 additions and 234 deletions
@@ -482,7 +482,7 @@
<div id="ticket-comment-body-editor" dusk="comment-body" data-dusk="comment-body"
data-helpdesk-rich-editor data-helpdesk-sync-target="ticket-comment-body"
contenteditable="true" aria-label="Ticket comment body" spellcheck="true" lang="en-GB" autocorrect="on" autocomplete="on" autocapitalize="sentences" inputmode="text"
contenteditable="true" aria-label="Write a public reply or internal note" spellcheck="true" lang="en-GB" autocorrect="on" autocomplete="on" autocapitalize="sentences" inputmode="text"
class="prose prose-sm min-h-[12rem] max-w-none bg-white p-4 text-sm leading-6 text-zinc-900 outline-none dark:prose-invert dark:bg-zinc-950 dark:text-zinc-100"
data-placeholder="Write a public reply or internal note. Right-click or Ctrl-click underlined words for spelling suggestions.">{!! $oldCommentBody !!}</div>
+192 -177
View File
@@ -69,183 +69,8 @@ class GenerateGS1Cmd extends Command
'PackagesArray' => ['package 1', 'package 2'],
];
if ($sHUSER != '') {
// Get User CO & WH from Table ICM428M
$iCM428M = DB::connection(config('m3.connection', 'pgsql'))->table('icm428m')
->select('R428US', 'R428CO', 'R428WH', 'R428PL')
->where('R428US', '=', $sHUSER)
->first();
$cOMPANY = isset($iCM428M->R428CO) ? $iCM428M->R428CO : ''; // Company
$wHS = isset($iCM428M->R428WH) ? $iCM428M->R428WH : ''; // WareHouse
$macpkr = $gSArray['Macpkr'];
$packageType = '0';
$manufactID = '0826528'; // MAK : get ID from Nvent and save to Config File
$total_length = 9;
$html = '
<html>
<head>
<style>
.border_btm {
border-bottom: 1px solid;
}
.border_rght {
border-right: 1px solid;
}
.margin_t {
padding-top : 10px;
}
.align_lft {
text-align: left;
}
.align_center {
text-align: center;
}
@page { margin: 5px; }
body { margin: 0px; }
</style>
</head>
<body style="font-family: Arial, sans-serif;">';
// Get number of Pallets
$packageCount = count($gSArray['PackagesArray']);
$packageNum = 1;
while ($packageNum <= $packageCount) {
$table_style = $packageNum < $packageCount ? ' style="page-break-after: always;" ' : '';
if (Cache::has('GS1SEQUENCE')) {
$gS1SEQUENCE = Cache::get('GS1SEQUENCE');
$gS1SEQUENCE++;
$gS1SEQUENCEID = str_pad($gS1SEQUENCE, $total_length, '0', STR_PAD_LEFT);
}
// Box Number Not Found Get it from DB
else {
$gS1SEQUENCE = 1;
$gS1SEQUENCEID = str_pad($gS1SEQUENCE, $total_length, '0', STR_PAD_LEFT);
}
Cache::forever('GS1SEQUENCE', $gS1SEQUENCEID);
$this->info('>>> GS1 sequence Id: ' . $gS1SEQUENCEID);
$gs1_128_bc_1 = '00' . $packageType . $manufactID . $gS1SEQUENCEID;
// Calculate Check Digit
$digits = str_split($gs1_128_bc_1);
$sum = 0;
$length = count($digits);
// Loop through each digit starting from the right
for ($i = 0; $i < $length; $i++) {
$digit = $digits[$length - $i - 1];
// Assign a weight of 3 or 1 alternately
$weight = ($i % 2 == 0) ? 3 : 1;
// Add the product of the digit and its weight to the sum
$sum += $digit * $weight;
}
// Calculate the remainder when sum is divided by 10
$remainder = $sum % 10;
// If remainder is 0, check digit is 0; otherwise, subtract remainder from 10
$checkDigit = ($remainder == 0) ? 0 : 10 - $remainder;
$gs1_128_bc_desc = '(00)' . $packageType . $manufactID . $gS1SEQUENCEID . $checkDigit;
$data = [
'ship_to' => $gSArray['Recipient_CompanyName'] . '<br>' . $gSArray['Recipient_Address1'] . '<br>' .
$gSArray['Recipient_City'] . ',' . $gSArray['Recipient_State']
. '<br>' . $gSArray['Recipient_PostalCode'],
'from' => $gSArray['Sender_CompanyName'] . '<br>' . $gSArray['Sender_Address1'] . '<br>' .
$gSArray['Sender_City'] . ',' . $gSArray['Sender_State']
. '<br>' . $gSArray['Sender_PostalCode'],
'ship_to_lbl' => '420' . $gSArray['Recipient_PostalCode'],
'ship_to_desc' => '(420)' . $gSArray['Recipient_PostalCode'],
'pro' => '190071217845706',
'item_number' => '10000B',
'upc' => '098506095310',
'quantity' => '1',
'serial_shipping_container' => $gs1_128_bc_desc,
];
// Initialize barcode generator
$generator = new BarcodeGeneratorPNG;
// Generate barcodes
$shipToPostalCodeBarcode = $generator->getBarcode($data['ship_to_lbl'], $generator::TYPE_CODE_128);
$serialShippingContainerBarcode = $generator->getBarcode($data['serial_shipping_container'], $generator::TYPE_CODE_128, 2, 50);
// HTML content for the label
$html .= '
<table ' . $table_style . '>
<tr>
<td colspan="2" class="border_btm border_rght align_lft">
FROM:<br>' . $data['from'] . '
</td>
<td colspan="2" class="border_btm align_lft">
SHIP TO:<br>' . $data['ship_to'] . '
</td>
</tr>
<tr>
<td colspan="3" class="border_btm border_rght margin_t align_center">
<img src="data:image/png;base64,' . base64_encode($shipToPostalCodeBarcode) . '"> <br>
' . $data['ship_to_desc'] . '
</td>
<td class="border_btm margin_t align_lft">
Carrier: ' . $gSArray['CarrierName'] . ' <br>
PRO #: ' . $gSArray['ShipmentPONumber'] . ' <br>
B/L #: ' . $gSArray['BOLnumber'] . '
</td>
</tr>
<tr>
<td colspan="2" class="border_btm margin_t align_lft border_rght">
PURCHASE ORDER: ' . $gSArray['Macpkr'] . ' <br>
Vendor: ' . $manufactID . '
</td>
<td colspan="2" class="border_btm margin_t align_center">
Pallet # : ' . $packageNum . ' of ' . $packageCount . '
</td>
</tr>
<tr>
<td colspan="4" style="text-align: center;" class="margin_t">
<img src="data:image/png;base64,' . base64_encode($serialShippingContainerBarcode) . '"><br>
' . $data['serial_shipping_container'] . '
</td>
</tr>
</table>';
$packageNum++;
}
$html .= '</body> </html>';
ob_start();
// Initialize Dompdf
$dompdf = new Dompdf;
$dompdf->loadHtml($html);
$dompdf->setPaper('a6', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser
// $dompdf->stream();
$pdfContent = $dompdf->output();
$labelsPath = Config::get('arrays.PdfPath');
// Put the PDF in labels/CarrierLabel
$gSFolder = 'GSLabel';
$carrierFileName = $gSFolder . '_' . $macpkr . '_' . $cOMPANY . '_' . $wHS;
file_put_contents($labelsPath . $gSFolder . '/' . $carrierFileName . '.pdf', $pdfContent);
// Check if the PDF was generated correctly
// if (!file_exists($tempPdfPath) || filesize($tempPdfPath) === 0) {
// throw new Exception('PDF generation failed.');
// }
ob_end_clean();
if ($sHUSER !== '') {
$this->generateLabels($sHUSER, $gSArray);
}
Log::channel('LabelCron')->info('<<< GS1-128...End of Label Creation');
@@ -255,4 +80,194 @@ class GenerateGS1Cmd extends Command
Log::channel('LabelCron')->error($th);
}
}
private function generateLabels(string $sHUSER, array $gSArray): void
{
// Get User CO & WH from Table ICM428M
$iCM428M = DB::connection(config('m3.connection', 'pgsql'))->table('icm428m')
->select('R428US', 'R428CO', 'R428WH', 'R428PL')
->where('R428US', '=', $sHUSER)
->first();
$cOMPANY = isset($iCM428M->R428CO) ? $iCM428M->R428CO : ''; // Company
$wHS = isset($iCM428M->R428WH) ? $iCM428M->R428WH : ''; // WareHouse
$macpkr = $gSArray['Macpkr'];
$packageType = '0';
$manufactID = '0826528'; // MAK : get ID from Nvent and save to Config File
$total_length = 9;
$html = $this->buildLabelHtml($gSArray, $packageType, $manufactID, $total_length);
ob_start();
// Initialize Dompdf
$dompdf = new Dompdf;
$dompdf->loadHtml($html);
$dompdf->setPaper('a6', 'portrait');
// Render the HTML as PDF
$dompdf->render();
// Output the generated PDF to Browser
// $dompdf->stream();
$pdfContent = $dompdf->output();
$labelsPath = Config::get('arrays.PdfPath');
// Put the PDF in labels/CarrierLabel
$gSFolder = 'GSLabel';
$carrierFileName = $gSFolder . '_' . $macpkr . '_' . $cOMPANY . '_' . $wHS;
file_put_contents($labelsPath . $gSFolder . '/' . $carrierFileName . '.pdf', $pdfContent);
// Check if the PDF was generated correctly
// if (!file_exists($tempPdfPath) || filesize($tempPdfPath) === 0) {
// throw new Exception('PDF generation failed.');
// }
ob_end_clean();
}
private function buildLabelHtml(array $gSArray, string $packageType, string $manufactID, int $totalLength): string
{
$html = '
<html>
<head>
<style>
.border_btm {
border-bottom: 1px solid;
}
.border_rght {
border-right: 1px solid;
}
.margin_t {
padding-top : 10px;
}
.align_lft {
text-align: left;
}
.align_center {
text-align: center;
}
@page { margin: 5px; }
body { margin: 0px; }
</style>
</head>
<body style="font-family: Arial, sans-serif;">';
// Get number of Pallets
$packageCount = count($gSArray['PackagesArray']);
$packageNum = 1;
while ($packageNum <= $packageCount) {
$table_style = $packageNum < $packageCount ? ' style="page-break-after: always;" ' : '';
if (Cache::has('GS1SEQUENCE')) {
$gS1SEQUENCE = Cache::get('GS1SEQUENCE');
$gS1SEQUENCE++;
$gS1SEQUENCEID = str_pad($gS1SEQUENCE, $totalLength, '0', STR_PAD_LEFT);
}
// Box Number Not Found Get it from DB
else {
$gS1SEQUENCE = 1;
$gS1SEQUENCEID = str_pad($gS1SEQUENCE, $totalLength, '0', STR_PAD_LEFT);
}
Cache::forever('GS1SEQUENCE', $gS1SEQUENCEID);
$this->info('>>> GS1 sequence Id: ' . $gS1SEQUENCEID);
$gs1_128_bc_1 = '00' . $packageType . $manufactID . $gS1SEQUENCEID;
// Calculate Check Digit
$digits = str_split($gs1_128_bc_1);
$sum = 0;
$length = count($digits);
// Loop through each digit starting from the right
for ($i = 0; $i < $length; $i++) {
$digit = $digits[$length - $i - 1];
// Assign a weight of 3 or 1 alternately
$weight = ($i % 2 == 0) ? 3 : 1;
// Add the product of the digit and its weight to the sum
$sum += $digit * $weight;
}
// Calculate the remainder when sum is divided by 10
$remainder = $sum % 10;
// If remainder is 0, check digit is 0; otherwise, subtract remainder from 10
$checkDigit = ($remainder == 0) ? 0 : 10 - $remainder;
$gs1_128_bc_desc = '(00)' . $packageType . $manufactID . $gS1SEQUENCEID . $checkDigit;
$data = [
'ship_to' => $gSArray['Recipient_CompanyName'] . '<br>' . $gSArray['Recipient_Address1'] . '<br>' .
$gSArray['Recipient_City'] . ',' . $gSArray['Recipient_State']
. '<br>' . $gSArray['Recipient_PostalCode'],
'from' => $gSArray['Sender_CompanyName'] . '<br>' . $gSArray['Sender_Address1'] . '<br>' .
$gSArray['Sender_City'] . ',' . $gSArray['Sender_State']
. '<br>' . $gSArray['Sender_PostalCode'],
'ship_to_lbl' => '420' . $gSArray['Recipient_PostalCode'],
'ship_to_desc' => '(420)' . $gSArray['Recipient_PostalCode'],
'pro' => '190071217845706',
'item_number' => '10000B',
'upc' => '098506095310',
'quantity' => '1',
'serial_shipping_container' => $gs1_128_bc_desc,
];
// Initialize barcode generator
$generator = new BarcodeGeneratorPNG;
// Generate barcodes
$shipToPostalCodeBarcode = $generator->getBarcode($data['ship_to_lbl'], $generator::TYPE_CODE_128);
$serialShippingContainerBarcode = $generator->getBarcode($data['serial_shipping_container'], $generator::TYPE_CODE_128, 2, 50);
// HTML content for the label
$html .= '
<table ' . $table_style . '>
<tr>
<td colspan="2" class="border_btm border_rght align_lft">
FROM:<br>' . $data['from'] . '
</td>
<td colspan="2" class="border_btm align_lft">
SHIP TO:<br>' . $data['ship_to'] . '
</td>
</tr>
<tr>
<td colspan="3" class="border_btm border_rght margin_t align_center">
<img src="data:image/png;base64,' . base64_encode($shipToPostalCodeBarcode) . '"> <br>
' . $data['ship_to_desc'] . '
</td>
<td class="border_btm margin_t align_lft">
Carrier: ' . $gSArray['CarrierName'] . ' <br>
PRO #: ' . $gSArray['ShipmentPONumber'] . ' <br>
B/L #: ' . $gSArray['BOLnumber'] . '
</td>
</tr>
<tr>
<td colspan="2" class="border_btm margin_t align_lft border_rght">
PURCHASE ORDER: ' . $gSArray['Macpkr'] . ' <br>
Vendor: ' . $manufactID . '
</td>
<td colspan="2" class="border_btm margin_t align_center">
Pallet # : ' . $packageNum . ' of ' . $packageCount . '
</td>
</tr>
<tr>
<td colspan="4" style="text-align: center;" class="margin_t">
<img src="data:image/png;base64,' . base64_encode($serialShippingContainerBarcode) . '"><br>
' . $data['serial_shipping_container'] . '
</td>
</tr>
</table>';
$packageNum++;
}
$html .= '</body> </html>';
return $html;
}
}
@@ -2237,6 +2237,7 @@ div.table-responsive > table > tbody > tr:last-child > td{
border-inline-end-width: 1px;
border-radius: 0;
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
padding: 0.375rem 0.75rem;
}
@media (prefers-reduced-motion: reduce) {
.form-control::file-selector-button, .dataTable-input::file-selector-button {
@@ -2246,9 +2247,6 @@ div.table-responsive > table > tbody > tr:last-child > td{
.form-control:hover:not(:disabled):not([readonly])::file-selector-button, .dataTable-input:hover:not(:disabled):not([readonly])::file-selector-button {
background-color: #dde0e3;
}
@media (prefers-reduced-motion: reduce) {
}
.form-control-plaintext {
display: block;
width: 100%;
@@ -3640,13 +3638,11 @@ textarea.form-control-lg {
border-right: 0;
border-bottom: 0.3em solid transparent;
border-left: 0.3em solid;
vertical-align: 0;
}
.dropend .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropend .dropdown-toggle::after {
vertical-align: 0;
}
.dropstart .dropdown-menu[data-bs-popper] {
top: 0;
@@ -3660,8 +3656,6 @@ textarea.form-control-lg {
margin-left: 0.255em;
vertical-align: 0.255em;
content: "";
}
.dropstart .dropdown-toggle::after {
display: none;
}
.dropstart .dropdown-toggle::before {
@@ -3672,13 +3666,11 @@ textarea.form-control-lg {
border-top: 0.3em solid transparent;
border-right: 0.3em solid;
border-bottom: 0.3em solid transparent;
vertical-align: 0;
}
.dropstart .dropdown-toggle:empty::after {
margin-left: 0;
}
.dropstart .dropdown-toggle::before {
vertical-align: 0;
}
.dropdown-divider {
height: 0;
@@ -3744,7 +3736,7 @@ textarea.form-control-lg {
}
.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus {
color: #fff;
background-color: rgba(255, 255, 255, 0.15);
background-color: #495057;
}
.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active {
color: #fff;
@@ -4707,6 +4699,9 @@ textarea.form-control-lg {
padding: 0 0;
margin-bottom: 1rem;
list-style: none;
border: 1px solid #f3f3f3;
background-color: transparent;
border-radius: 0.25rem;
}
.breadcrumb-item + .breadcrumb-item {
@@ -4772,9 +4767,6 @@ textarea.form-control-lg {
border-color: #dee2e6;
}
.page-link, .dataTable-pagination a {
padding: 0.375rem 0.75rem;
}
.page-item:first-child .page-link, .page-item:first-child .dataTable-pagination a, .dataTable-pagination .page-item:first-child a, .dataTable-pagination li:first-child .page-link, .dataTable-pagination li:first-child a {
border-top-left-radius: 0.25rem;
@@ -11585,19 +11577,6 @@ body {
border-color: #dbe3e6
}
.breadcrumb {
border: 1px solid #f3f3f3
}
.breadcrumb {
display: flex;
flex-wrap: wrap;
padding: 0.56rem 1.13rem;
margin-bottom: 1rem;
list-style: none;
background-color: transparent;
border-radius: 0.25rem
}
nav {
display: block
@@ -11665,12 +11644,6 @@ a:link {
text-decoration: none
}
.breadcrumb-item+.breadcrumb-item::before {
display: inline-block;
padding-right: 0.5rem;
color: #6c757d;
content: "/"
}
.highcharts-figure, .highcharts-data-table table {
+2 -2
View File
@@ -102,7 +102,7 @@
align-items: center;
background: linear-gradient(135deg, rgba(15, 118, 110, 0.14), rgba(37, 99, 235, 0.12));
border-radius: 18px;
color: #0f766e;
color: #075e59;
display: flex;
font-size: 1.35rem;
height: 56px;
@@ -117,7 +117,7 @@
}
.wms-chart-card__eyebrow {
color: #0f766e;
color: #075e59;
font-size: 0.72rem;
font-weight: 800;
letter-spacing: 0.12em;
+16 -16
View File
@@ -185,7 +185,7 @@ select:focus[data-flux-control] {
.dark .wms-mobile-menu {
border-color: rgb(103 232 249 / 0.22);
background: linear-gradient(135deg, rgb(24 24 27), rgb(8 47 73));
color: rgb(165 243 252);
color: rgb(207 250 254);
}
.wms-sidebar-toggle {
@@ -201,7 +201,7 @@ select:focus[data-flux-control] {
.wms-mobile-close:hover,
.wms-mobile-menu:hover {
border-color: rgb(8 81 99);
color: rgb(14 116 144);
color: rgb(7 89 110);
}
.dark .wms-sidebar-toggle,
@@ -260,12 +260,12 @@ select:focus[data-flux-control] {
.wms-sidebar-link:hover {
background: rgb(244 244 245);
color: rgb(14 116 144);
color: rgb(7 89 110);
}
.wms-sidebar-link.is-active {
background: rgb(236 254 255);
color: rgb(14 116 144);
color: rgb(7 89 110);
}
.dark .wms-sidebar-link {
@@ -319,12 +319,12 @@ select:focus[data-flux-control] {
}
.wms-user-card-button:hover {
border-color: rgb(14 116 144);
border-color: rgb(7 89 110);
background: rgb(244 244 245);
}
.dark .wms-user-card-button:hover {
border-color: rgb(14 116 144);
border-color: rgb(7 89 110);
background: rgb(48 48 52);
}
@@ -482,7 +482,7 @@ select:focus[data-flux-control] {
border: 1px solid rgb(255 255 255 / 0.18);
background: rgb(255 255 255 / 0.10);
padding: 0.7rem 0.85rem;
color: rgb(219 234 254 / 0.90);
color: rgb(255 255 255);
box-shadow: 0 10px 24px rgb(0 0 0 / 0.18);
}
@@ -758,7 +758,7 @@ select:focus[data-flux-control] {
border-radius: 999px;
border: 1px solid rgb(14 116 144 / 0.24);
background: linear-gradient(135deg, rgb(14 116 144 / 0.14), rgb(37 99 235 / 0.12));
color: rgb(14 116 144);
color: rgb(7 89 110);
font-size: 0.72rem;
font-weight: 900;
letter-spacing: 0.12em;
@@ -767,7 +767,7 @@ select:focus[data-flux-control] {
.dark .wms-mobile-badge {
border-color: rgb(103 232 249 / 0.26);
background: linear-gradient(135deg, rgb(8 145 178 / 0.26), rgb(37 99 235 / 0.20));
color: rgb(165 243 252);
color: rgb(207 250 254);
}
.wms-page-hero {
@@ -846,7 +846,7 @@ select:focus[data-flux-control] {
border-radius: 0.9rem;
border: 1px solid rgb(14 116 144 / 0.28);
background: linear-gradient(135deg, rgb(255 255 255), rgb(236 254 255));
color: rgb(14 116 144);
color: rgb(7 89 110);
font-size: 1.05rem;
box-shadow: 0 12px 28px rgb(14 116 144 / 0.16);
}
@@ -854,7 +854,7 @@ select:focus[data-flux-control] {
.dark .wms-mobile-menu {
border-color: rgb(103 232 249 / 0.30);
background: linear-gradient(135deg, rgb(24 24 27), rgb(8 47 73));
color: rgb(165 243 252);
color: rgb(207 250 254);
}
.wms-mobile-title {
@@ -883,7 +883,7 @@ select:focus[data-flux-control] {
border-radius: 999px;
border: 1px solid rgb(14 116 144 / 0.24);
background: linear-gradient(135deg, rgb(14 116 144 / 0.14), rgb(37 99 235 / 0.12));
color: rgb(14 116 144);
color: rgb(7 89 110);
font-size: 0.72rem;
font-weight: 900;
letter-spacing: 0.12em;
@@ -892,7 +892,7 @@ select:focus[data-flux-control] {
.dark .wms-mobile-badge {
border-color: rgb(103 232 249 / 0.26);
background: linear-gradient(135deg, rgb(8 145 178 / 0.26), rgb(37 99 235 / 0.20));
color: rgb(165 243 252);
color: rgb(207 250 254);
}
.wms-sidebar {
@@ -1483,13 +1483,13 @@ html[data-wms-sidebar="collapsed"] .wms-sidebar {
}
.select2-container--default .select2-results__option--highlighted.select2-results__option--selectable {
background: rgb(8 145 178);
background: rgb(14 116 144);
color: white;
}
.select2-container--default .select2-results__option--selected {
background: rgb(236 254 255);
color: rgb(14 116 144);
color: rgb(7 89 110);
}
.dark .wms-select2-field .select2-container--default .select2-selection--single {
@@ -1523,7 +1523,7 @@ html[data-wms-sidebar="collapsed"] .wms-sidebar {
.dark .select2-container--default .select2-results__option--selected {
background: rgb(8 47 73);
color: rgb(165 243 252);
color: rgb(207 250 254);
}
}
+2 -2
View File
@@ -102,7 +102,7 @@
align-items: center;
background: linear-gradient(135deg, rgba(15, 118, 110, 0.14), rgba(37, 99, 235, 0.12));
border-radius: 18px;
color: #0f766e;
color: #075e59;
display: flex;
font-size: 1.35rem;
height: 56px;
@@ -117,7 +117,7 @@
}
.wms-chart-card__eyebrow {
color: #0f766e;
color: #075e59;
font-size: 0.72rem;
font-weight: 800;
letter-spacing: 0.12em;
-1
View File
@@ -41,7 +41,6 @@ const submit = () => {
class="mt-1 block w-full"
required
autofocus
autocomplete="name"
/>
<InputError class="mt-2" :message="form.errors.name" />
</div>
@@ -5,7 +5,7 @@
<x-settings.layout :heading="__('Profile')" :subheading="__('Update your name and email address')">
<form wire:submit="updateProfileInformation" class="my-6 w-full space-y-6">
<flux:input wire:model="name" :label="__('Name')" type="text" required autofocus autocomplete="name" name="name" />
<flux:input wire:model="name" :label="__('Name')" type="text" required autofocus name="name" />
<div>
<flux:input wire:model="email" :label="__('Email')" type="email" required autocomplete="email" name="email" />