everything semi working before sample implementation
This commit is contained in:
@@ -164,36 +164,58 @@ class CustomOrderController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function depositPayment(Request $request)
|
public function depositPayment(Request $request)
|
||||||
{
|
{
|
||||||
|
Log::info('Deposit payment initiated', [
|
||||||
|
'request_data' => $request->all(),
|
||||||
|
'user_id' => auth()->id(),
|
||||||
|
]);
|
||||||
$validated = $request->validate([
|
$validated = $request->validate([
|
||||||
'custom_order_id' => 'required|exists:custom_orders,id',
|
'custom_order_id' => 'required|exists:custom_orders,id',
|
||||||
]);
|
]);
|
||||||
|
Log::info('Deposit payment validation passed', $validated);
|
||||||
|
|
||||||
$customOrder = CustomOrder::findOrFail($validated['custom_order_id']);
|
$customOrder = CustomOrder::findOrFail($validated['custom_order_id']);
|
||||||
|
|
||||||
// Check authorization
|
// Check authorization
|
||||||
if ($customOrder->user_id !== auth()->id()) {
|
if ($customOrder->user_id !== auth()->id()) {
|
||||||
|
Log::warning('Unauthorized deposit payment attempt', [
|
||||||
|
'custom_order_id' => $customOrder->id,
|
||||||
|
'user_id' => auth()->id(),
|
||||||
|
]);
|
||||||
abort(403);
|
abort(403);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if already paid
|
// Check if already paid
|
||||||
if ($customOrder->deposit_status === 'paid') {
|
if ($customOrder->deposit_status === 'paid') {
|
||||||
|
Log::info('Deposit already paid for custom order', [
|
||||||
|
'custom_order_id' => $customOrder->id,
|
||||||
|
]);
|
||||||
return redirect()->route('custom-orders.show', $customOrder)
|
return redirect()->route('custom-orders.show', $customOrder)
|
||||||
->with('info', 'Deposit already paid for this order.');
|
->with('info', 'Deposit already paid for this order.');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initiate Yoco payment for deposit
|
// Initiate Yoco payment for deposit
|
||||||
|
Log::info('Initiating Yoco payment for custom order deposit', [
|
||||||
|
'custom_order_id' => $customOrder->id,
|
||||||
|
'deposit_amount' => $customOrder->deposit_amount,
|
||||||
|
]);
|
||||||
$yocoResponse = $this->initiateYocoPayment(
|
$yocoResponse = $this->initiateYocoPayment(
|
||||||
amount: (int)($customOrder->deposit_amount * 100), // Convert to cents
|
amount: (int)($customOrder->deposit_amount * 100), // Convert to cents
|
||||||
orderId: $customOrder->uuid,
|
customOrder: $customOrder,
|
||||||
orderType: 'custom_deposit',
|
orderType: 'custom_deposit',
|
||||||
description: "Deposit for Custom {$customOrder->type} Order #{$customOrder->order_number}"
|
description: "Deposit for Order #{$customOrder->order_number}"
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!$yocoResponse) {
|
if (!$yocoResponse) {
|
||||||
|
Log::error('Failed to initiate Yoco payment for custom order deposit', [
|
||||||
|
'custom_order_id' => $customOrder->id,
|
||||||
|
]);
|
||||||
return redirect()->route('custom-orders.show', $customOrder)
|
return redirect()->route('custom-orders.show', $customOrder)
|
||||||
->with('error', 'Failed to initiate payment. Please try again.');
|
->with('error', 'Failed to initiate payment. Please try again.');
|
||||||
}
|
}
|
||||||
|
Log::info('Yoco payment initiated successfully for custom order deposit', [
|
||||||
|
'custom_order_id' => $customOrder->id,
|
||||||
|
'checkout_url' => $yocoResponse['checkout_url'],
|
||||||
|
]);
|
||||||
return redirect($yocoResponse['checkout_url']);
|
return redirect($yocoResponse['checkout_url']);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -207,11 +229,11 @@ class CustomOrderController extends Controller
|
|||||||
abort(403);
|
abort(403);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update order status
|
// // Update order status
|
||||||
$customOrder->update([
|
// $customOrder->update([
|
||||||
'deposit_status' => 'paid',
|
// 'deposit_status' => 'paid',
|
||||||
'status' => 'submitted',
|
// 'status' => 'submitted',
|
||||||
]);
|
// ]);
|
||||||
|
|
||||||
return view('custom-orders.deposit-success', [
|
return view('custom-orders.deposit-success', [
|
||||||
'customOrder' => $customOrder,
|
'customOrder' => $customOrder,
|
||||||
@@ -250,67 +272,143 @@ class CustomOrderController extends Controller
|
|||||||
/**
|
/**
|
||||||
* Initiate Yoco payment
|
* Initiate Yoco payment
|
||||||
*/
|
*/
|
||||||
private function initiateYocoPayment($amount, $orderId, $orderType, $description)
|
private function initiateYocoPayment($amount, $customOrder, $orderType, $description)
|
||||||
{
|
{
|
||||||
$yocoSecret = config('services.yoco.secret_key');
|
|
||||||
|
|
||||||
if (!$yocoSecret) {
|
Log::info('Initiating Yoco payment', [
|
||||||
|
'order_id' => $customOrder->uuid,
|
||||||
|
'order_type' => $orderType,
|
||||||
|
'amount' => $amount,
|
||||||
|
'description' => $description,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (!$customOrder) {
|
||||||
|
Log::error('Custom order not found for Yoco payment', [
|
||||||
|
'order_id' => $customOrder->uuid ?? 'unknown',
|
||||||
|
]);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Log::info('Custom order found for Yoco payment', [
|
||||||
|
'order_id' => $customOrder->uuid,
|
||||||
|
'custom_order_data' => $customOrder->toArray(),
|
||||||
|
]);
|
||||||
|
// Get configuration
|
||||||
|
$secretKey = config('services.yoco.secret_key');
|
||||||
|
$mode = config('services.yoco.mode');
|
||||||
|
|
||||||
|
Log::info('Yoco configuration', [
|
||||||
|
'mode' => $mode,
|
||||||
|
'secret_key_set' => !empty($secretKey) && $secretKey !== 'sk_test_your_key_here',
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Check if API key is configured
|
||||||
|
if (empty($secretKey) || $secretKey === 'sk_test_your_key_here') {
|
||||||
Log::error('Yoco secret key not configured');
|
Log::error('Yoco secret key not configured');
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
$payload = [
|
$baseUrl = $mode === 'live'
|
||||||
|
? 'https://payments.yoco.com/api/checkouts'
|
||||||
|
: 'https://payments.yoco.com/api/checkouts';
|
||||||
|
|
||||||
|
$checkoutData = [
|
||||||
'amount' => $amount,
|
'amount' => $amount,
|
||||||
'currency' => 'ZAR',
|
'currency' => 'ZAR',
|
||||||
'successUrl' => route('yoco-custom-deposit-success', ['customOrder' => $orderId]),
|
'successUrl' => route('yoco-custom-deposit-success', ['customOrder' => $customOrder->uuid]),
|
||||||
'failureUrl' => route('custom-orders.show', ['customOrder' => $orderId]),
|
'cancelUrl' => route('custom-orders.show', ['customOrder' => $customOrder->uuid]),
|
||||||
'cancelUrl' => route('custom-orders.show', ['customOrder' => $orderId]),
|
'failureUrl' => route('custom-orders.show', ['customOrder' => $customOrder->uuid]),
|
||||||
'metadata' => [
|
'metadata' => [
|
||||||
'order_uuid' => $orderId,
|
'order_uuid' => $customOrder->uuid,
|
||||||
'order_type' => $orderType,
|
'order_type' => $orderType,
|
||||||
],
|
'site' => 'additional_design',
|
||||||
'description' => $description,
|
'description' => $description
|
||||||
|
]
|
||||||
];
|
];
|
||||||
|
|
||||||
|
Log::info('Yoco checkout data prepared', [
|
||||||
|
'order_id' => $customOrder->uuid,
|
||||||
|
'checkout_data' => $checkoutData,
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Make API request to Yoco
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Log::info('Initiating Yoco payment', [
|
|
||||||
'amount' => $amount,
|
|
||||||
'orderId' => $orderId,
|
|
||||||
'description' => $description
|
|
||||||
]);
|
|
||||||
|
|
||||||
$response = Http::withHeaders([
|
$response = Http::withHeaders([
|
||||||
'Authorization' => 'Bearer ' . $yocoSecret,
|
'Authorization' => 'Bearer ' . $secretKey,
|
||||||
'Content-Type' => 'application/json',
|
'Content-Type' => 'application/json',
|
||||||
])->post('https://payments.yoco.com/api/checkouts', $payload);
|
])->post($baseUrl, $checkoutData);
|
||||||
|
|
||||||
Log::info('Yoco API response', [
|
|
||||||
'status' => $response->status(),
|
|
||||||
'body' => $response->body()
|
|
||||||
]);
|
|
||||||
|
|
||||||
if ($response->successful()) {
|
if ($response->successful()) {
|
||||||
$data = $response->json();
|
$checkout = $response->json();
|
||||||
Log::info('Yoco payment success', [
|
|
||||||
'checkout_url' => $data['redirectUrl'] ?? 'N/A',
|
$checkoutId = $checkout['id'] ?? null;
|
||||||
'checkout_id' => $data['id'] ?? 'N/A'
|
$redirectUrl = $checkout['redirectUrl'] ?? null;
|
||||||
|
|
||||||
|
Log::info('Yoco checkout created for custom order', [
|
||||||
|
'order_uuid' => $customOrder->uuid,
|
||||||
|
'checkout_id' => $checkoutId,
|
||||||
|
'redirect_url' => $redirectUrl,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
if (!$checkoutId || !$redirectUrl) {
|
||||||
|
Log::error('Invalid Yoco checkout response: missing id or redirectUrl', [
|
||||||
|
'order_uuid' => $customOrder->uuid,
|
||||||
|
'response' => $checkout,
|
||||||
|
]);
|
||||||
|
throw new \Exception('Invalid Yoco checkout response: missing id or redirectUrl');
|
||||||
|
}
|
||||||
|
|
||||||
|
// Persist checkout info to database
|
||||||
|
try {
|
||||||
|
$customOrder->update([
|
||||||
|
'yoco_checkout_id' => $checkoutId,
|
||||||
|
'yoco_redirect_url' => $redirectUrl,
|
||||||
|
'yoco_checkout_response' => json_encode($checkout),
|
||||||
|
]);
|
||||||
|
|
||||||
|
// Reload the model to verify update
|
||||||
|
$customOrder->refresh();
|
||||||
|
|
||||||
|
if ($customOrder->yoco_checkout_id) {
|
||||||
|
Log::info('Yoco checkout info saved successfully for custom order', [
|
||||||
|
'order_uuid' => $customOrder->uuid,
|
||||||
|
'yoco_checkout_id' => $customOrder->yoco_checkout_id,
|
||||||
|
]);
|
||||||
|
} else {
|
||||||
|
Log::warning('Yoco checkout ID not saved after update for custom order', [
|
||||||
|
'order_uuid' => $customOrder->uuid,
|
||||||
|
'order_data' => $customOrder->toArray(),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} catch (\Exception $dbException) {
|
||||||
|
Log::error('Database error while saving Yoco checkout info for custom order', [
|
||||||
|
'order_uuid' => $customOrder->uuid,
|
||||||
|
'error_message' => $dbException->getMessage(),
|
||||||
|
'error_code' => $dbException->getCode(),
|
||||||
|
'checkout_id' => $checkoutId,
|
||||||
|
'redirect_url' => $redirectUrl,
|
||||||
|
]);
|
||||||
|
throw $dbException;
|
||||||
|
}
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'checkout_url' => $data['redirectUrl'],
|
'checkout_url' => $redirectUrl,
|
||||||
'checkout_id' => $data['id'],
|
'checkout_id' => $checkoutId,
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
Log::error('Yoco payment API error', [
|
Log::error('Yoco API Error for custom order', [
|
||||||
|
'order_uuid' => $customOrder->uuid,
|
||||||
'status' => $response->status(),
|
'status' => $response->status(),
|
||||||
'body' => $response->body()
|
'body' => $response->body()
|
||||||
]);
|
]);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
Log::error('Yoco payment exception: ' . $e->getMessage(), [
|
Log::error('Yoco Payment Exception for custom order', [
|
||||||
'trace' => $e->getTraceAsString()
|
'order_uuid' => $customOrder->uuid,
|
||||||
|
'message' => $e->getMessage()
|
||||||
]);
|
]);
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Http\Controllers;
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\CustomOrder;
|
||||||
use App\Models\Order;
|
use App\Models\Order;
|
||||||
use App\Models\OrderItem;
|
use App\Models\OrderItem;
|
||||||
use App\Models\Product;
|
use App\Models\Product;
|
||||||
@@ -267,6 +268,7 @@ class OrderController extends Controller
|
|||||||
'metadata' => [
|
'metadata' => [
|
||||||
'order_uuid' => $order->uuid,
|
'order_uuid' => $order->uuid,
|
||||||
'order_number' => $order->order_number,
|
'order_number' => $order->order_number,
|
||||||
|
'order_type' => 'standard',
|
||||||
'site' => 'additional_design',
|
'site' => 'additional_design',
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
@@ -477,6 +479,7 @@ class OrderController extends Controller
|
|||||||
|
|
||||||
$metadata = $payload['metadata'] ?? [];
|
$metadata = $payload['metadata'] ?? [];
|
||||||
$orderUuid = $metadata['order_uuid'] ?? null;
|
$orderUuid = $metadata['order_uuid'] ?? null;
|
||||||
|
$orderType = $metadata['order_type'] ?? null;
|
||||||
$site = $metadata['site'] ?? null;
|
$site = $metadata['site'] ?? null;
|
||||||
$paymentId = $payload['id'] ?? null;
|
$paymentId = $payload['id'] ?? null;
|
||||||
$status = $payload['status'] ?? null;
|
$status = $payload['status'] ?? null;
|
||||||
@@ -484,6 +487,7 @@ class OrderController extends Controller
|
|||||||
\Log::info('Yoco Webhook: Payload extracted', [
|
\Log::info('Yoco Webhook: Payload extracted', [
|
||||||
'type' => $type,
|
'type' => $type,
|
||||||
'site' => $site,
|
'site' => $site,
|
||||||
|
'order_type' => $orderType,
|
||||||
'order_uuid' => $orderUuid,
|
'order_uuid' => $orderUuid,
|
||||||
'payment_id' => $paymentId,
|
'payment_id' => $paymentId,
|
||||||
'status' => $status,
|
'status' => $status,
|
||||||
@@ -506,49 +510,107 @@ class OrderController extends Controller
|
|||||||
return response()->json(['error' => 'Invalid payload'], 400);
|
return response()->json(['error' => 'Invalid payload'], 400);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 7. Update Payment State
|
// 7. Update Payment State where orderType is 'standard'
|
||||||
$order = Order::where('uuid', $orderUuid)->first();
|
if ($orderType === 'standard') {
|
||||||
|
|
||||||
if (!$order) {
|
$order = Order::where('uuid', $orderUuid)->first();
|
||||||
\Log::warning('Yoco Webhook: Order not found', ['order_uuid' => $orderUuid]);
|
|
||||||
return response()->json(['error' => 'Order not found'], 404);
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($status === 'succeeded') {
|
if (!$order) {
|
||||||
\Log::info('Yoco Webhook: Processing successful payment', [
|
\Log::warning('Yoco Webhook: Order not found', ['order_uuid' => $orderUuid]);
|
||||||
'order_uuid' => $orderUuid,
|
return response()->json(['error' => 'Order not found'], 404);
|
||||||
'payment_id' => $paymentId,
|
}
|
||||||
]);
|
|
||||||
|
|
||||||
if ($order->payment_status !== 'paid') {
|
if ($status === 'succeeded') {
|
||||||
$order->update([
|
\Log::info('Yoco Webhook: Processing successful payment', [
|
||||||
'payment_status' => 'paid',
|
'order_uuid' => $orderUuid,
|
||||||
'status' => 'processing',
|
'payment_id' => $paymentId,
|
||||||
'yoco_checkout_response' => json_encode($payload),
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Reduce stock
|
if ($order->payment_status !== 'paid') {
|
||||||
foreach ($order->items as $item) {
|
$order->update([
|
||||||
$product = $item->product;
|
'payment_status' => 'paid',
|
||||||
$product->stock -= $item->quantity;
|
'status' => 'processing',
|
||||||
$product->save();
|
'yoco_checkout_response' => json_encode($payload),
|
||||||
}
|
]);
|
||||||
|
|
||||||
\Log::info('Yoco Webhook: Order updated for successful payment', [
|
// Reduce stock
|
||||||
|
foreach ($order->items as $item) {
|
||||||
|
$product = $item->product;
|
||||||
|
$product->stock -= $item->quantity;
|
||||||
|
$product->save();
|
||||||
|
}
|
||||||
|
|
||||||
|
\Log::info('Yoco Webhook: Order updated for successful payment', [
|
||||||
|
'order_uuid' => $orderUuid,
|
||||||
|
'order_id' => $order->id,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} elseif ($status === 'failed' || $status === 'cancelled') {
|
||||||
|
\Log::info('Yoco Webhook: Processing failed/cancelled payment', [
|
||||||
'order_uuid' => $orderUuid,
|
'order_uuid' => $orderUuid,
|
||||||
'order_id' => $order->id,
|
'payment_id' => $paymentId,
|
||||||
|
'status' => $status,
|
||||||
|
]);
|
||||||
|
|
||||||
|
$order->update([
|
||||||
|
'payment_status' => 'failed',
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
} elseif ($status === 'failed' || $status === 'cancelled') {
|
} elseif ($orderType === 'custom_deposit' || $orderType === 'custom_balance') {
|
||||||
\Log::info('Yoco Webhook: Processing failed/cancelled payment', [
|
|
||||||
'order_uuid' => $orderUuid,
|
|
||||||
'payment_id' => $paymentId,
|
|
||||||
'status' => $status,
|
|
||||||
]);
|
|
||||||
|
|
||||||
$order->update([
|
$order = CustomOrder::where('uuid', $orderUuid)->first();
|
||||||
'payment_status' => 'failed',
|
|
||||||
]);
|
if (!$order) {
|
||||||
|
\Log::warning('Yoco Webhook: Order not found', ['order_uuid' => $orderUuid]);
|
||||||
|
return response()->json(['error' => 'Order not found'], 404);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($status === 'succeeded') {
|
||||||
|
\Log::info('Yoco Webhook: Processing successful payment', [
|
||||||
|
'order_uuid' => $orderUuid,
|
||||||
|
'payment_id' => $paymentId,
|
||||||
|
'order_type' => $orderType,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($orderType === 'custom_deposit' && $order->deposit_status !== 'paid') {
|
||||||
|
$order->update([
|
||||||
|
'deposit_status' => 'paid',
|
||||||
|
'status' => 'submitted',
|
||||||
|
'yoco_checkout_response' => json_encode($payload),
|
||||||
|
]);
|
||||||
|
|
||||||
|
\Log::info('Yoco Webhook: Order updated for successful deposit payment', [
|
||||||
|
'order_uuid' => $orderUuid,
|
||||||
|
'order_id' => $order->id,
|
||||||
|
'order_type' => $orderType,
|
||||||
|
]);
|
||||||
|
|
||||||
|
} elseif ($orderType === 'custom_balance' && $order->balance_status !== 'paid') {
|
||||||
|
$order->update([
|
||||||
|
'balance_status' => 'paid',
|
||||||
|
'status' => 'in production',
|
||||||
|
'yoco_checkout_response' => json_encode($payload),
|
||||||
|
]);
|
||||||
|
|
||||||
|
\Log::info('Yoco Webhook: Order updated for successful balance payment', [
|
||||||
|
'order_uuid' => $orderUuid,
|
||||||
|
'order_id' => $order->id,
|
||||||
|
'order_type' => $orderType,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
} elseif ($status === 'failed' || $status === 'cancelled') {
|
||||||
|
\Log::info('Yoco Webhook: Processing failed/cancelled payment', [
|
||||||
|
'order_uuid' => $orderUuid,
|
||||||
|
'payment_id' => $paymentId,
|
||||||
|
'status' => $status,
|
||||||
|
]);
|
||||||
|
|
||||||
|
if ($orderType === 'custom_deposit') {
|
||||||
|
$order->update(['deposit_status' => 'failed']);
|
||||||
|
} elseif ($orderType === 'custom_balance') {
|
||||||
|
$order->update(['balance_status' => 'failed']);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
\Log::info('Yoco Webhook: Processed successfully', [
|
\Log::info('Yoco Webhook: Processed successfully', [
|
||||||
|
|||||||
@@ -23,6 +23,9 @@ class CustomOrder extends Model
|
|||||||
'balance_amount',
|
'balance_amount',
|
||||||
'deposit_status',
|
'deposit_status',
|
||||||
'balance_status',
|
'balance_status',
|
||||||
|
'yoco_checkout_id',
|
||||||
|
'yoco_redirect_url',
|
||||||
|
'yoco_checkout_response',
|
||||||
'customer_brief',
|
'customer_brief',
|
||||||
'admin_notes',
|
'admin_notes',
|
||||||
'submitted_at',
|
'submitted_at',
|
||||||
|
|||||||
+32
-2
@@ -163,7 +163,8 @@ a:hover {
|
|||||||
|
|
||||||
header {
|
header {
|
||||||
background-color: var(--bg-primary);
|
background-color: var(--bg-primary);
|
||||||
padding: var(--spacing-md) 0;
|
/* backdrop-filter: blur(10px); */
|
||||||
|
padding: var(--spacing-xs) 0;
|
||||||
border-bottom: 1px solid var(--border-color);
|
border-bottom: 1px solid var(--border-color);
|
||||||
position: sticky;
|
position: sticky;
|
||||||
top: 0;
|
top: 0;
|
||||||
@@ -306,6 +307,35 @@ nav a:hover {
|
|||||||
|
|
||||||
/* ===== CARDS ===== */
|
/* ===== CARDS ===== */
|
||||||
.card {
|
.card {
|
||||||
|
background-color: white;
|
||||||
|
padding: var(--spacing-lg);
|
||||||
|
border-radius: 20px;
|
||||||
|
border: 1px solid var(--border-color);
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
|
||||||
|
margin-bottom: var(--spacing-lg);
|
||||||
|
transition: var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card:hover {
|
||||||
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card--pink {
|
||||||
|
background-color: var(--accent-light);
|
||||||
|
padding: var(--spacing-lg);
|
||||||
|
border-radius: 20px;
|
||||||
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
|
||||||
|
margin-bottom: var(--spacing-lg);
|
||||||
|
/* box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); */
|
||||||
|
transition: var(--transition);
|
||||||
|
}
|
||||||
|
|
||||||
|
.card--pink:hover {
|
||||||
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Product cards (with image on top) */
|
||||||
|
.product-card {
|
||||||
background-color: white;
|
background-color: white;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
transition: var(--transition);
|
transition: var(--transition);
|
||||||
@@ -313,7 +343,7 @@ nav a:hover {
|
|||||||
border-radius: 20px;
|
border-radius: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.card:hover {
|
.product-card:hover {
|
||||||
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
|
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,10 +50,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.table-container {
|
.table-container {
|
||||||
background: white;
|
border-radius: 20px;
|
||||||
border-radius: 8px;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
@@ -114,10 +112,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.empty-state {
|
.empty-state {
|
||||||
background-color: var(--bg-secondary);
|
border-radius: 20px;
|
||||||
border-radius: 8px;
|
|
||||||
padding: var(--spacing-xl);
|
|
||||||
text-align: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.empty-state p {
|
.empty-state p {
|
||||||
@@ -184,7 +179,7 @@
|
|||||||
<h2>Standard Orders</h2>
|
<h2>Standard Orders</h2>
|
||||||
|
|
||||||
@if ($standardOrders->count() > 0)
|
@if ($standardOrders->count() > 0)
|
||||||
<div class="table-container">
|
<div class="table-container card">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -215,7 +210,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<div class="empty-state">
|
<div class="empty-state card--pink">
|
||||||
<p>You haven't placed any standard orders yet.</p>
|
<p>You haven't placed any standard orders yet.</p>
|
||||||
<a href="{{ route('wallpapers') }}">Browse Products</a>
|
<a href="{{ route('wallpapers') }}">Browse Products</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -230,7 +225,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
@if ($customOrders->count() > 0)
|
@if ($customOrders->count() > 0)
|
||||||
<div class="table-container">
|
<div class="table-container card">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -267,7 +262,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<div class="empty-state">
|
<div class="empty-state card--pink">
|
||||||
<p>You haven't created any custom orders yet.</p>
|
<p>You haven't created any custom orders yet.</p>
|
||||||
<a href="{{ route('custom-orders.create') }}">Create Custom Order</a>
|
<a href="{{ route('custom-orders.create') }}">Create Custom Order</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -28,10 +28,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
background: white;
|
border-radius: 20px;
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.card h2 {
|
.card h2 {
|
||||||
@@ -129,9 +126,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.help-box {
|
.help-box {
|
||||||
background-color: var(--accent-light);
|
border-radius: 20px;
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.help-box h3 {
|
.help-box h3 {
|
||||||
@@ -257,7 +252,7 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="help-box">
|
<div class="card--pink help-box">
|
||||||
<h3>Need Help?</h3>
|
<h3>Need Help?</h3>
|
||||||
<p>Contact us for assistance with your account or orders.</p>
|
<p>Contact us for assistance with your account or orders.</p>
|
||||||
<a href="mailto:support@example.com">support@example.com</a>
|
<a href="mailto:support@example.com">support@example.com</a>
|
||||||
|
|||||||
@@ -18,11 +18,7 @@
|
|||||||
margin-bottom: 3rem;
|
margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cart-items {
|
|
||||||
background: white;
|
|
||||||
padding: 2rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.empty-cart {
|
.empty-cart {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -111,9 +107,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.summary {
|
.summary {
|
||||||
background: white;
|
|
||||||
padding: 2rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -221,7 +214,7 @@
|
|||||||
@if(count($items) > 0)
|
@if(count($items) > 0)
|
||||||
<div class="cart-container">
|
<div class="cart-container">
|
||||||
<!-- Cart Items -->
|
<!-- Cart Items -->
|
||||||
<div class="cart-items">
|
<div class="cart-items card">
|
||||||
@foreach($items as $item)
|
@foreach($items as $item)
|
||||||
<div class="cart-item">
|
<div class="cart-item">
|
||||||
@if($item['product']->images->count() > 0)
|
@if($item['product']->images->count() > 0)
|
||||||
@@ -277,7 +270,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Summary -->
|
<!-- Summary -->
|
||||||
<div class="summary">
|
<div class="summary card">
|
||||||
<h2>Order Summary</h2>
|
<h2>Order Summary</h2>
|
||||||
|
|
||||||
<div class="summary-row">
|
<div class="summary-row">
|
||||||
|
|||||||
@@ -20,9 +20,7 @@
|
|||||||
|
|
||||||
.checkout-form,
|
.checkout-form,
|
||||||
.order-summary {
|
.order-summary {
|
||||||
background: white;
|
border-radius: 20px;
|
||||||
padding: 2rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.checkout-form h2,
|
.checkout-form h2,
|
||||||
@@ -193,7 +191,7 @@
|
|||||||
|
|
||||||
<div class="checkout-container">
|
<div class="checkout-container">
|
||||||
<!-- Checkout Form -->
|
<!-- Checkout Form -->
|
||||||
<form action="{{ route('order-process') }}" method="POST" class="checkout-form">
|
<form action="{{ route('order-process') }}" method="POST" class="checkout-form card">
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
<h2>Delivery Information</h2>
|
<h2>Delivery Information</h2>
|
||||||
@@ -231,7 +229,7 @@
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- Order Summary -->
|
<!-- Order Summary -->
|
||||||
<div class="order-summary">
|
<div class="order-summary card">
|
||||||
<h2>Order Summary</h2>
|
<h2>Order Summary</h2>
|
||||||
|
|
||||||
@foreach($items as $item)
|
@foreach($items as $item)
|
||||||
|
|||||||
@@ -3,9 +3,9 @@
|
|||||||
<div class="footer-content">
|
<div class="footer-content">
|
||||||
<div class="footer-column">
|
<div class="footer-column">
|
||||||
<h4>Contact</h4>
|
<h4>Contact</h4>
|
||||||
<p>Email: info@additionaldesign.com</p>
|
<p>Email: info@additional.co.za</p>
|
||||||
<p>Phone: (555) 123-4567</p>
|
<p>Phone: +27 081 702 7873</p>
|
||||||
<p>Address: 123 Design Street, Creative City, ST 12345</p>
|
<p>Address: 360 Furrow Rd, Pretoria, South Africa</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-column">
|
<div class="footer-column">
|
||||||
@@ -21,25 +21,23 @@
|
|||||||
|
|
||||||
<div class="footer-column">
|
<div class="footer-column">
|
||||||
<h4>Follow Us</h4>
|
<h4>Follow Us</h4>
|
||||||
<div class="social-links">
|
|
||||||
<a href="#" target="_blank">Facebook</a>
|
<a href="#" target="_blank">Facebook</a>
|
||||||
<a href="#" target="_blank">Instagram</a>
|
<a href="#" target="_blank">Instagram</a>
|
||||||
<a href="#" target="_blank">Pinterest</a>
|
<a href="#" target="_blank">Pinterest</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-column">
|
<div class="footer-column">
|
||||||
<h4>Newsletter</h4>
|
<h4>Newsletter</h4>
|
||||||
<p>Subscribe to stay updated on new collections and exclusive offers.</p>
|
<p>Subscribe to stay updated on new collections and exclusive offers.</p>
|
||||||
<form style="display: flex; gap: 8px; margin-top: var(--spacing-sm);">
|
<form style="display: flex; gap: 8px; margin-top: var(--spacing-sm);">
|
||||||
<input type="email" placeholder="Your email" style="flex: 1; padding: 8px 12px; border: 1px solid rgba(255,255,255,0.2); background-color: rgba(255,255,255,0.1); color: white; font-size: 0.9rem;">
|
<input type="email" placeholder="Your email" style="border-radius: 20px; padding: 8px 12px; border: 1px solid rgba(255,255,255,0.2); background-color: rgba(255,255,255,0.1); color: white; font-size: 0.9rem;">
|
||||||
<button type="submit" class="btn" style="padding: 8px 16px;">Subscribe</button>
|
<button type="submit" class="btn btn--secondary" style="padding: 8px 16px;">Subscribe</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-bottom">
|
<div class="footer-bottom">
|
||||||
<p>© 2025 Additional Design. All rights reserved. Designed with care and creativity.</p>
|
<p>© <?= date('Y'); ?> Additional Design is a registered trading name of TWO TALES & CO. (PTY) LTD. All rights reserved. Site design and development by TTDEV.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<a href="{{ route('product-detail', $product) }}" style="text-decoration: none; color: inherit;">
|
<a href="{{ route('product-detail', $product) }}" style="text-decoration: none; color: inherit;">
|
||||||
<div class="card" data-category="{{ $product->category->slug }}">
|
<div class="product-card" data-category="{{ $product->category->slug }}">
|
||||||
@if($product->images->count() > 0)
|
@if($product->images->count() > 0)
|
||||||
<img src="{{ asset('storage/' . $product->images->first()->image_path) }}" alt="{{ $product->name }}" class="card-image" style="background-size: cover; background-position: center;">
|
<img src="{{ asset('storage/' . $product->images->first()->image_path) }}" alt="{{ $product->name }}" class="card-image" style="background-size: cover; background-position: center;">
|
||||||
@else
|
@else
|
||||||
|
|||||||
@@ -21,10 +21,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form-card {
|
.form-card {
|
||||||
background: white;
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 20px;
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
margin-bottom: var(--spacing-lg);
|
margin-bottom: var(--spacing-lg);
|
||||||
max-width: 700px;
|
max-width: 700px;
|
||||||
}
|
}
|
||||||
@@ -196,10 +192,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.info-box {
|
.info-box {
|
||||||
background-color: var(--accent-light);
|
|
||||||
border: 1px solid var(--border-color);
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 20px;
|
|
||||||
margin-bottom: var(--spacing-lg);
|
margin-bottom: var(--spacing-lg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,12 +226,7 @@
|
|||||||
top: 120px;
|
top: 120px;
|
||||||
}
|
}
|
||||||
.cost-summary-content {
|
.cost-summary-content {
|
||||||
background: white;
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 20px;
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
margin-bottom: var(--spacing-md);
|
margin-bottom: var(--spacing-md);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.cost-summary-content h3 {
|
.cost-summary-content h3 {
|
||||||
@@ -350,7 +337,7 @@
|
|||||||
@endif
|
@endif
|
||||||
|
|
||||||
<!-- Info Box -->
|
<!-- Info Box -->
|
||||||
<div class="info-box">
|
<div class="info-box card--pink">
|
||||||
<h2>How It Works</h2>
|
<h2>How It Works</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Submit your custom order with design specifications and reference images</li>
|
<li>Submit your custom order with design specifications and reference images</li>
|
||||||
@@ -362,7 +349,7 @@
|
|||||||
|
|
||||||
<!-- Form -->
|
<!-- Form -->
|
||||||
<div class="form-wrapper">
|
<div class="form-wrapper">
|
||||||
<form action="{{ route('custom-orders.store') }}" method="POST" enctype="multipart/form-data" id="custom-order-form" class="form-card" data-action="{{ route('custom-orders.store') }}">
|
<form action="{{ route('custom-orders.store') }}" method="POST" enctype="multipart/form-data" id="custom-order-form" class="form-card card" data-action="{{ route('custom-orders.store') }}">
|
||||||
@csrf
|
@csrf
|
||||||
|
|
||||||
<!-- Order Type & Dimensions -->
|
<!-- Order Type & Dimensions -->
|
||||||
@@ -492,7 +479,7 @@
|
|||||||
|
|
||||||
<!-- Cost Summary Sidebar -->
|
<!-- Cost Summary Sidebar -->
|
||||||
<div class="cost-summary">
|
<div class="cost-summary">
|
||||||
<div class="cost-summary-content">
|
<div class="cost-summary-content card">
|
||||||
<h3>Cost Summary</h3>
|
<h3>Cost Summary</h3>
|
||||||
|
|
||||||
<div class="cost-item disabled" id="material-cost-item">
|
<div class="cost-item disabled" id="material-cost-item">
|
||||||
@@ -520,7 +507,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="background: var(--accent-light); padding: 1.5rem; border-radius: 20px; margin-bottom: 1rem;">
|
<div class="card" style="padding: 1.5rem; margin-bottom: 1rem; background: var(--accent-light);">
|
||||||
<p style="margin: 0 0 0.5rem 0; color: black;">Estimated Total:</p>
|
<p style="margin: 0 0 0.5rem 0; color: black;">Estimated Total:</p>
|
||||||
<div style="font-family: 'Abril Fatface', cursive; font-size: 3rem; font-weight: 400; color: white;">R<span id="total-cost">0.00</span></div>
|
<div style="font-family: 'Abril Fatface', cursive; font-size: 3rem; font-weight: 400; color: white;">R<span id="total-cost">0.00</span></div>
|
||||||
<small style="color: #fff; display: block; margin-top: 0.5rem;">incl. VAT</small>
|
<small style="color: #fff; display: block; margin-top: 0.5rem;">incl. VAT</small>
|
||||||
|
|||||||
@@ -5,47 +5,43 @@
|
|||||||
@section('styles')
|
@section('styles')
|
||||||
<style>
|
<style>
|
||||||
.success-container {
|
.success-container {
|
||||||
max-width: 600px;
|
|
||||||
margin: var(--spacing-xl) auto;
|
|
||||||
padding: var(--spacing-xl);
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
border: 2px solid var(--accent-pink);
|
|
||||||
border-radius: 20px;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
margin: 3rem 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.success-icon {
|
.success-icon {
|
||||||
font-size: 4rem;
|
font-size: 4rem;
|
||||||
color: var(--accent-pink);
|
margin-bottom: 1.5rem;
|
||||||
margin-bottom: var(--spacing-md);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.success-title {
|
h1 {
|
||||||
font-family: var(--font-serif);
|
font-family: 'Abril Fatface', cursive;
|
||||||
font-size: 2rem;
|
font-size: 2.5rem;
|
||||||
color: var(--text-primary);
|
color: var(--primary-color);
|
||||||
margin-bottom: var(--spacing-md);
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.success-message {
|
.subtitle {
|
||||||
color: var(--text-secondary);
|
color: #666;
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
font-size: 1.1rem;
|
font-size: 1.1rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.order-details {
|
.order-details {
|
||||||
background-color: white;
|
margin: 2rem 0;
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 8px;
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.order-details-inner {
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
.detail-row {
|
.detail-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
padding: var(--spacing-sm) 0;
|
padding: 1rem 0;
|
||||||
border-bottom: 1px solid var(--border-color);
|
border-bottom: 1px solid #eee;
|
||||||
}
|
}
|
||||||
|
|
||||||
.detail-row:last-child {
|
.detail-row:last-child {
|
||||||
@@ -53,98 +49,96 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.detail-label {
|
.detail-label {
|
||||||
color: var(--text-secondary);
|
font-weight: 600;
|
||||||
font-weight: 500;
|
color: var(--primary-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
.detail-value {
|
.detail-value {
|
||||||
color: var(--text-primary);
|
color: #666;
|
||||||
font-weight: 600;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.next-steps {
|
.next-steps-title {
|
||||||
|
font-family: 'Abril Fatface', cursive;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
color: var(--primary-color);
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
background-color: white;
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 8px;
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.next-steps h3 {
|
.next-steps-inner {
|
||||||
color: var(--text-primary);
|
padding: 2rem;
|
||||||
margin-bottom: var(--spacing-md);
|
border-radius: 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.next-steps ol {
|
.next-steps ul {
|
||||||
color: var(--text-secondary);
|
color: #666;
|
||||||
padding-left: var(--spacing-lg);
|
padding-left: 0;
|
||||||
|
list-style: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.next-steps li {
|
.next-steps li {
|
||||||
margin-bottom: var(--spacing-sm);
|
margin-bottom: 0.8rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.action-buttons {
|
.actions {
|
||||||
display: flex;
|
margin-top: 2rem;
|
||||||
gap: var(--spacing-md);
|
text-align: center;
|
||||||
justify-content: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.action-buttons .btn {
|
|
||||||
flex: 1;
|
|
||||||
min-width: 150px;
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
<div class="container">
|
<main class="container">
|
||||||
<div class="success-container">
|
<div class="success-container">
|
||||||
<div class="success-icon">✓</div>
|
<div class="success-icon">✓</div>
|
||||||
<h1 class="success-title">Payment Successful!</h1>
|
<h1>Deposit Payment Successful!</h1>
|
||||||
<p class="success-message">
|
<p class="subtitle">Your deposit payment has been received and processed successfully.</p>
|
||||||
Your deposit payment has been received and processed successfully.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<div class="order-details">
|
<!-- Order Details -->
|
||||||
<div class="detail-row">
|
<div class="order-details card">
|
||||||
<span class="detail-label">Order Number:</span>
|
<div class="order-details-inner">
|
||||||
<span class="detail-value">{{ $customOrder->order_number }}</span>
|
<div class="detail-row">
|
||||||
</div>
|
<span class="detail-label">Order Number:</span>
|
||||||
<div class="detail-row">
|
<span class="detail-value"><strong>{{ $customOrder->order_number }}</strong></span>
|
||||||
<span class="detail-label">Order Type:</span>
|
</div>
|
||||||
<span class="detail-value">{{ ucfirst($customOrder->type) }}</span>
|
<div class="detail-row">
|
||||||
</div>
|
<span class="detail-label">Order Type:</span>
|
||||||
<div class="detail-row">
|
<span class="detail-value">{{ ucfirst($customOrder->type) }}</span>
|
||||||
<span class="detail-label">Deposit Amount:</span>
|
</div>
|
||||||
<span class="detail-value">R{{ number_format($customOrder->deposit_amount, 2) }}</span>
|
<div class="detail-row">
|
||||||
</div>
|
<span class="detail-label">Deposit Amount Paid:</span>
|
||||||
<div class="detail-row">
|
<span class="detail-value"><strong>R{{ number_format($customOrder->deposit_amount, 2) }}</strong></span>
|
||||||
<span class="detail-label">Remaining Balance:</span>
|
</div>
|
||||||
<span class="detail-value">R{{ number_format($customOrder->balance_amount, 2) }}</span>
|
<div class="detail-row">
|
||||||
</div>
|
<span class="detail-label">Remaining Balance:</span>
|
||||||
<div class="detail-row">
|
<span class="detail-value">R{{ number_format($customOrder->balance_amount, 2) }}</span>
|
||||||
<span class="detail-label">Payment Status:</span>
|
</div>
|
||||||
<span class="detail-value"><span class="status-badge paid">Paid</span></span>
|
<div class="detail-row">
|
||||||
|
<span class="detail-label">Total Project Cost:</span>
|
||||||
|
<span class="detail-value"><strong>R{{ number_format($customOrder->total_cost, 2) }}</strong></span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="next-steps">
|
<!-- What's Next -->
|
||||||
<h3>What Happens Next?</h3>
|
<div class="card--pink">
|
||||||
<ol>
|
<div class="next-steps-inner">
|
||||||
<li>Your design requirements have been received</li>
|
<h2 class="next-steps-title" style="text-align: center;">What Happens Next?</h2>
|
||||||
<li>Our design team will review your specifications</li>
|
<ul class="next-steps">
|
||||||
<li>You'll receive proof designs for your approval within 3-5 business days</li>
|
<li>Your design requirements have been received and confirmed</li>
|
||||||
<li>Once you approve the proofs, we'll prepare for printing</li>
|
<li>Our design team will review your specifications and reference images</li>
|
||||||
<li>The remaining balance (80%) will be due before printing begins</li>
|
<li>You'll receive proof designs for your approval within 3-5 business days</li>
|
||||||
</ol>
|
<li>Once you approve the proofs, we'll prepare for printing</li>
|
||||||
</div>
|
<li>The remaining balance (80%) will be due before printing begins</li>
|
||||||
|
</ul>
|
||||||
<div class="action-buttons">
|
</div>
|
||||||
<a href="{{ route('custom-orders.show', $customOrder) }}" class="btn">View Order Details</a>
|
|
||||||
<a href="{{ route('my-orders') }}" class="btn btn--secondary">Back to Orders</a>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
|
<!-- Actions -->
|
||||||
|
<div class="actions">
|
||||||
|
<a href="{{ route('custom-orders.show', $customOrder) }}" class="btn">View Order Details</a>
|
||||||
|
<a href="{{ route('custom-orders.index') }}" class="btn btn--secondary">Back to My Orders</a>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
@endsection
|
@endsection
|
||||||
|
|||||||
@@ -65,14 +65,10 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.order-card {
|
.order-card {
|
||||||
background: white;
|
|
||||||
border-radius: 8px;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
transition: var(--transition);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.order-card:hover {
|
.order-card.card:hover {
|
||||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -260,7 +256,7 @@
|
|||||||
@else
|
@else
|
||||||
<div class="orders-grid">
|
<div class="orders-grid">
|
||||||
@foreach ($customOrders as $order)
|
@foreach ($customOrders as $order)
|
||||||
<div class="order-card">
|
<div class="order-card card">
|
||||||
<div class="order-card-header">
|
<div class="order-card-header">
|
||||||
<div>
|
<div>
|
||||||
<div class="order-number">Order #{{ $order->order_number }}</div>
|
<div class="order-number">Order #{{ $order->order_number }}</div>
|
||||||
|
|||||||
@@ -37,24 +37,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Timeline-specific styles */
|
/* Timeline-specific styles */
|
||||||
.card {
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover {
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.timeline-container {
|
.timeline-container {
|
||||||
background: white;
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 20px;
|
|
||||||
margin-bottom: var(--spacing-lg);
|
margin-bottom: var(--spacing-lg);
|
||||||
transition: var(--transition);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.timeline-container:hover {
|
.timeline-container.card:hover {
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,7 +172,7 @@
|
|||||||
@endif
|
@endif
|
||||||
|
|
||||||
<!-- Timeline -->
|
<!-- Timeline -->
|
||||||
<div class="timeline-container">
|
<div class="timeline-container card">
|
||||||
<h2 class="timeline-title">Order Progress</h2>
|
<h2 class="timeline-title">Order Progress</h2>
|
||||||
<div class="timeline">
|
<div class="timeline">
|
||||||
@php
|
@php
|
||||||
@@ -366,7 +353,7 @@
|
|||||||
<!-- Payment Status -->
|
<!-- Payment Status -->
|
||||||
<h3 style="margin-top: var(--spacing-lg); margin-bottom: var(--spacing-md);">Payment Status</h3>
|
<h3 style="margin-top: var(--spacing-lg); margin-bottom: var(--spacing-md);">Payment Status</h3>
|
||||||
|
|
||||||
<div style="padding: var(--spacing-sm); background-color: var(--accent-light); border-radius: 20px; margin-bottom: var(--spacing-md);">
|
<div class="card" style="padding: var(--spacing-sm); background-color: var(--accent-light); margin-bottom: var(--spacing-md);">
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs);">
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs);">
|
||||||
<strong>Deposit (20%)</strong>
|
<strong>Deposit (20%)</strong>
|
||||||
<span class="status-badge {{ $customOrder->deposit_status }}">{{ ucfirst($customOrder->deposit_status) }}</span>
|
<span class="status-badge {{ $customOrder->deposit_status }}">{{ ucfirst($customOrder->deposit_status) }}</span>
|
||||||
@@ -374,7 +361,7 @@
|
|||||||
<p style="color: var(--text-secondary); margin: 0; font-size: 0.9rem;">R{{ number_format($customOrder->deposit_amount, 2) }}</p>
|
<p style="color: var(--text-secondary); margin: 0; font-size: 0.9rem;">R{{ number_format($customOrder->deposit_amount, 2) }}</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="padding: var(--spacing-sm); background-color: var(--accent-light); border-radius: 20px; margin-bottom: var(--spacing-lg);">
|
<div class="card" style="padding: var(--spacing-sm); background-color: var(--accent-light); margin-bottom: var(--spacing-lg);">
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs);">
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs);">
|
||||||
<strong>Balance (80%)</strong>
|
<strong>Balance (80%)</strong>
|
||||||
<span class="status-badge {{ $customOrder->balance_status }}">{{ ucfirst($customOrder->balance_status) }}</span>
|
<span class="status-badge {{ $customOrder->balance_status }}">{{ ucfirst($customOrder->balance_status) }}</span>
|
||||||
@@ -395,7 +382,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Terms -->
|
<!-- Terms -->
|
||||||
<div class="terms-box">
|
<div class="terms-box card--pink">
|
||||||
<h3 style="color: var(--text-primary); margin-top: 0;">Payment Terms</h3>
|
<h3 style="color: var(--text-primary); margin-top: 0;">Payment Terms</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>The 20% deposit is non-refundable</li>
|
<li>The 20% deposit is non-refundable</li>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
|
|
||||||
<div class="grid grid--3">
|
<div class="grid grid--3">
|
||||||
<!-- Upholstery Fabrics -->
|
<!-- Upholstery Fabrics -->
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<img src="https://images.unsplash.com/photo-1555041469-a586c61ea9bc?w=500&q=80" alt="Upholstery Fabrics" class="card-image" style="object-fit: cover;">
|
<img src="https://images.unsplash.com/photo-1555041469-a586c61ea9bc?w=500&q=80" alt="Upholstery Fabrics" class="card-image" style="object-fit: cover;">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Upholstery Fabrics</div>
|
<div class="card-title">Upholstery Fabrics</div>
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Curtain & Drape Fabrics -->
|
<!-- Curtain & Drape Fabrics -->
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<img src="https://images.unsplash.com/photo-1578926314433-8e18d4f89b16?w=500&q=80" alt="Curtain Fabrics" class="card-image" style="object-fit: cover;">
|
<img src="https://images.unsplash.com/photo-1578926314433-8e18d4f89b16?w=500&q=80" alt="Curtain Fabrics" class="card-image" style="object-fit: cover;">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Curtain & Drape Fabrics</div>
|
<div class="card-title">Curtain & Drape Fabrics</div>
|
||||||
@@ -45,7 +45,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Decorative Textiles -->
|
<!-- Decorative Textiles -->
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<img src="https://images.unsplash.com/photo-1606389506042-4bc31f98b485?w=500&q=80" alt="Decorative Textiles" class="card-image" style="object-fit: cover;">
|
<img src="https://images.unsplash.com/photo-1606389506042-4bc31f98b485?w=500&q=80" alt="Decorative Textiles" class="card-image" style="object-fit: cover;">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Decorative Textiles</div>
|
<div class="card-title">Decorative Textiles</div>
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
|
|
||||||
<div class="grid grid--3">
|
<div class="grid grid--3">
|
||||||
<!-- Botanical Garden Fabric -->
|
<!-- Botanical Garden Fabric -->
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<img src="https://images.unsplash.com/photo-1520763185298-1b434c919eba?w=500&q=80" alt="Botanical Garden" class="card-image" style="object-fit: cover;">
|
<img src="https://images.unsplash.com/photo-1520763185298-1b434c919eba?w=500&q=80" alt="Botanical Garden" class="card-image" style="object-fit: cover;">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Botanical Garden</div>
|
<div class="card-title">Botanical Garden</div>
|
||||||
@@ -80,7 +80,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Geometric Modern -->
|
<!-- Geometric Modern -->
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<img src="https://images.unsplash.com/photo-1577720643272-265f434b3f6f?w=500&q=80" alt="Geometric Modern" class="card-image" style="object-fit: cover;">
|
<img src="https://images.unsplash.com/photo-1577720643272-265f434b3f6f?w=500&q=80" alt="Geometric Modern" class="card-image" style="object-fit: cover;">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Geometric Modern</div>
|
<div class="card-title">Geometric Modern</div>
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Vintage Elegance -->
|
<!-- Vintage Elegance -->
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<img src="https://images.unsplash.com/photo-1578500494198-246f612d03b3?w=500&q=80" alt="Vintage Elegance" class="card-image" style="object-fit: cover;">
|
<img src="https://images.unsplash.com/photo-1578500494198-246f612d03b3?w=500&q=80" alt="Vintage Elegance" class="card-image" style="object-fit: cover;">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Vintage Elegance</div>
|
<div class="card-title">Vintage Elegance</div>
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Tropical Vibrancy -->
|
<!-- Tropical Vibrancy -->
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<img src="https://images.unsplash.com/photo-1505142468610-359e7d316be0?w=500&q=80" alt="Tropical Vibrancy" class="card-image" style="object-fit: cover;">
|
<img src="https://images.unsplash.com/photo-1505142468610-359e7d316be0?w=500&q=80" alt="Tropical Vibrancy" class="card-image" style="object-fit: cover;">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Tropical Vibrancy</div>
|
<div class="card-title">Tropical Vibrancy</div>
|
||||||
@@ -119,7 +119,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Minimalist Serenity -->
|
<!-- Minimalist Serenity -->
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<img src="https://images.unsplash.com/photo-1511884642898-4c92249e20b6?w=500&q=80" alt="Minimalist Serenity" class="card-image" style="object-fit: cover;">
|
<img src="https://images.unsplash.com/photo-1511884642898-4c92249e20b6?w=500&q=80" alt="Minimalist Serenity" class="card-image" style="object-fit: cover;">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Minimalist Serenity</div>
|
<div class="card-title">Minimalist Serenity</div>
|
||||||
@@ -132,7 +132,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Luxe Textured -->
|
<!-- Luxe Textured -->
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<img src="https://images.unsplash.com/photo-1578926078328-123alce3f3ce?w=500&q=80" alt="Luxe Textured" class="card-image" style="object-fit: cover;">
|
<img src="https://images.unsplash.com/photo-1578926078328-123alce3f3ce?w=500&q=80" alt="Luxe Textured" class="card-image" style="object-fit: cover;">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Luxe Textured</div>
|
<div class="card-title">Luxe Textured</div>
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
<section class="section">
|
<section class="section">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>Fabric Specifications & Care</h2>
|
<h2>Fabric Specifications & Care</h2>
|
||||||
<div style="background-color: var(--bg-secondary); padding: var(--spacing-lg); border-radius: 8px;">
|
<div style="background-color: var(--bg-secondary); padding: var(--spacing-lg); border-radius: 20px;">
|
||||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-lg);">
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-lg);">
|
||||||
<div>
|
<div>
|
||||||
<h4 style="color: var(--accent-dark); margin-bottom: 1rem;">Standard Widths</h4>
|
<h4 style="color: var(--accent-dark); margin-bottom: 1rem;">Standard Widths</h4>
|
||||||
|
|||||||
@@ -163,7 +163,7 @@
|
|||||||
|
|
||||||
<div class="grid grid--3">
|
<div class="grid grid--3">
|
||||||
@forelse($categories as $category)
|
@forelse($categories as $category)
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<div class="card-image" style="background-image: url('{{ $category->image }}'); background-size: cover; background-position: center;"></div>
|
<div class="card-image" style="background-image: url('{{ $category->image }}'); background-size: cover; background-position: center;"></div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">{{ $category->name }}</div>
|
<div class="card-title">{{ $category->name }}</div>
|
||||||
@@ -235,7 +235,7 @@
|
|||||||
<p>Our work spans luxury hotels, high-end residences, and commercial spaces. See how we transform environments with our custom wallpaper and fabric solutions.</p>
|
<p>Our work spans luxury hotels, high-end residences, and commercial spaces. See how we transform environments with our custom wallpaper and fabric solutions.</p>
|
||||||
|
|
||||||
<div class="grid grid--3">
|
<div class="grid grid--3">
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Luxury Resort Redesign</div>
|
<div class="card-title">Luxury Resort Redesign</div>
|
||||||
@@ -244,7 +244,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Modern Executive Office</div>
|
<div class="card-title">Modern Executive Office</div>
|
||||||
@@ -253,7 +253,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1568605114967-8130f3a36994?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1568605114967-8130f3a36994?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Residential Penthouse</div>
|
<div class="card-title">Residential Penthouse</div>
|
||||||
@@ -276,7 +276,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="background-color: var(--bg-secondary); padding: var(--spacing-lg); border-radius: 20px;">
|
<div class="card--pink">
|
||||||
<h3 style="color: var(--accent-dark); margin-bottom: var(--spacing-md);">Sustainability Commitment</h3>
|
<h3 style="color: var(--accent-dark); margin-bottom: var(--spacing-md);">Sustainability Commitment</h3>
|
||||||
<ul style="list-style: none; color: var(--text-secondary);">
|
<ul style="list-style: none; color: var(--text-secondary);">
|
||||||
<li style="margin-bottom: 12px;"><strong>Low-VOC Inks:</strong> Non-toxic printing processes safe for your home and the environment.</li>
|
<li style="margin-bottom: 12px;"><strong>Low-VOC Inks:</strong> Non-toxic printing processes safe for your home and the environment.</li>
|
||||||
|
|||||||
@@ -229,15 +229,15 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>About Our Murals</h2>
|
<h2>About Our Murals</h2>
|
||||||
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-top: 2rem;">
|
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-top: 2rem;">
|
||||||
<div style="background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.05);">
|
<div class="card">
|
||||||
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Custom Dimensions</h4>
|
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Custom Dimensions</h4>
|
||||||
<p>Order murals in any size. Simply provide your width and height measurements, and we'll print to exact specifications.</p>
|
<p>Order murals in any size. Simply provide your width and height measurements, and we'll print to exact specifications.</p>
|
||||||
</div>
|
</div>
|
||||||
<div style="background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.05);">
|
<div class="card">
|
||||||
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Non-Repeating Design</h4>
|
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Non-Repeating Design</h4>
|
||||||
<p>Unlike wallpapers, murals are single cohesive images perfect for accent walls. One stunning focal point for your space.</p>
|
<p>Unlike wallpapers, murals are single cohesive images perfect for accent walls. One stunning focal point for your space.</p>
|
||||||
</div>
|
</div>
|
||||||
<div style="background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.05);">
|
<div class="card">
|
||||||
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Premium Quality</h4>
|
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Premium Quality</h4>
|
||||||
<p>High-resolution printing with vibrant colors and excellent durability. Professional installation guides included.</p>
|
<p>High-resolution printing with vibrant colors and excellent durability. Professional installation guides included.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -12,9 +12,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.empty-state {
|
.empty-state {
|
||||||
background: white;
|
|
||||||
padding: 3rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -31,9 +28,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.order-card {
|
.order-card {
|
||||||
background: white;
|
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
border-radius: 8px;
|
|
||||||
border-left: 4px solid var(--primary-color);
|
border-left: 4px solid var(--primary-color);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,7 +159,7 @@
|
|||||||
@if($orders->count() > 0)
|
@if($orders->count() > 0)
|
||||||
<div class="orders-list">
|
<div class="orders-list">
|
||||||
@foreach($orders as $order)
|
@foreach($orders as $order)
|
||||||
<div class="order-card">
|
<div class="order-card card">
|
||||||
<!-- Order Header -->
|
<!-- Order Header -->
|
||||||
<div class="order-header">
|
<div class="order-header">
|
||||||
<div class="order-info">
|
<div class="order-info">
|
||||||
@@ -210,7 +205,7 @@
|
|||||||
@endforeach
|
@endforeach
|
||||||
</div>
|
</div>
|
||||||
@else
|
@else
|
||||||
<div class="empty-state">
|
<div class="empty-state card--pink">
|
||||||
<p>No orders found. Start shopping today!</p>
|
<p>No orders found. Start shopping today!</p>
|
||||||
<a href="{{ route('wallpapers') }}" class="btn">Browse Products</a>
|
<a href="{{ route('wallpapers') }}" class="btn">Browse Products</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -5,9 +5,6 @@
|
|||||||
@section('styles')
|
@section('styles')
|
||||||
<style>
|
<style>
|
||||||
.success-container {
|
.success-container {
|
||||||
background: white;
|
|
||||||
padding: 3rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 3rem 0;
|
margin: 3rem 0;
|
||||||
}
|
}
|
||||||
@@ -31,13 +28,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.order-details {
|
.order-details {
|
||||||
background: #f9f9f9;
|
|
||||||
padding: 2rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.order-details-inner {
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
.detail-row {
|
.detail-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@@ -58,10 +57,13 @@
|
|||||||
color: #666;
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.order-items {
|
margin: 2rem 0;
|
||||||
background: #f9f9f9;
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-items-inner {
|
||||||
padding: 2rem;
|
padding: 2rem;
|
||||||
border-radius: 8px;
|
border-radius: 20pxpx;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
@@ -127,6 +129,13 @@
|
|||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-left: 4px solid var(--primary-color);
|
border-left: 4px solid var(--primary-color);
|
||||||
}
|
}
|
||||||
|
.next-steps-title {
|
||||||
|
font-family: 'Abril Fatface', cursive;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
color: var(--primary-color);
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@endsection
|
@endsection
|
||||||
|
|
||||||
@@ -138,8 +147,8 @@
|
|||||||
<p class="subtitle">Thank you for your purchase. Your order has been successfully received.</p>
|
<p class="subtitle">Thank you for your purchase. Your order has been successfully received.</p>
|
||||||
|
|
||||||
<!-- Order Details -->
|
<!-- Order Details -->
|
||||||
<div class="order-details">
|
<div class="order-details card">
|
||||||
<div class="detail-row">
|
<div class="order-details-inner">
|
||||||
<span class="detail-label">Order Number:</span>
|
<span class="detail-label">Order Number:</span>
|
||||||
<span class="detail-value"><strong>{{ $order->order_number }}</strong></span>
|
<span class="detail-value"><strong>{{ $order->order_number }}</strong></span>
|
||||||
</div>
|
</div>
|
||||||
@@ -162,9 +171,11 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Order Items -->
|
<!-- Order Items -->
|
||||||
<div class="order-items">
|
<div class="order-items card">
|
||||||
|
<div class="order-items-inner">
|
||||||
<h2>Order Items</h2>
|
<h2>Order Items</h2>
|
||||||
@foreach($order->items as $item)
|
@foreach($order->items as $item)
|
||||||
<div class="item-row">
|
<div class="item-row">
|
||||||
@@ -172,23 +183,23 @@
|
|||||||
<div class="item-name">{{ $item->product->name }}</div>
|
<div class="item-name">{{ $item->product->name }}</div>
|
||||||
<div class="item-qty">
|
<div class="item-qty">
|
||||||
@php
|
@php
|
||||||
$stock = $item->printStock;
|
$stock = $item->printStock;
|
||||||
$stockText = $stock ? "{$stock->name}" : "Standard";
|
$stockText = $stock ? "{$stock->name}" : "Standard";
|
||||||
$stockCost = 0;
|
$stockCost = 0;
|
||||||
|
|
||||||
if ($stock) {
|
if ($stock) {
|
||||||
$stockCost = $item->type === 'wallpaper' ? $stock->cost_per_meter : $stock->cost_per_m2;
|
$stockCost = $item->type === 'wallpaper' ? $stock->cost_per_meter : $stock->cost_per_m2;
|
||||||
}
|
}
|
||||||
@endphp
|
@endphp
|
||||||
|
|
||||||
@if($item->type === 'wallpaper')
|
@if($item->type === 'wallpaper')
|
||||||
Length: {{ $item->length }}m | Finish: {{ $stockText }}<br>
|
Length: {{ $item->length }}m | Finish: {{ $stockText }}<br>
|
||||||
<small>Stock Cost: R{{ number_format($stockCost, 2) }}/m</small>
|
<small>Stock Cost: R{{ number_format($stockCost, 2) }}/m</small>
|
||||||
@elseif($item->type === 'mural')
|
@elseif($item->type === 'mural')
|
||||||
Dimensions: {{ $item->width }}m × {{ $item->height }}m ({{ number_format($item->width * $item->height, 2) }}m²) | Finish: {{ $stockText }}<br>
|
Dimensions: {{ $item->width }}m × {{ $item->height }}m ({{ number_format($item->width * $item->height, 2) }}m²) | Finish: {{ $stockText }}<br>
|
||||||
<small>Stock Cost: R{{ number_format($stockCost, 2) }}/m²</small>
|
<small>Stock Cost: R{{ number_format($stockCost, 2) }}/m²</small>
|
||||||
@else
|
@else
|
||||||
<small>Price: R{{ number_format($stockCost, 2) }} per unit</small>
|
<small>Price: R{{ number_format($stockCost, 2) }} per unit</small>
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -207,22 +218,25 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endforeach
|
@endforeach
|
||||||
<div class="total-row">
|
|
||||||
<span>Order Total:</span>
|
|
||||||
<span>R{{ number_format($order->total, 2) }}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="total-row">
|
||||||
|
<span>Order Total:</span>
|
||||||
|
<span>R{{ number_format($order->total, 2) }}</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card--pink">
|
||||||
|
<h2 class="next-steps-title" style="text-align: center;">What Happens Next?</h2>
|
||||||
|
A confirmation email has been sent to <strong>{{ $order->customer_email }}</strong>. You'll receive updates about your order status and shipping information shortly.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="note">
|
|
||||||
<strong>🔔 What's Next?</strong><br>
|
|
||||||
A confirmation email has been sent to <strong>{{ $order->customer_email }}</strong>. You'll receive updates about your order status and shipping information shortly.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Actions -->
|
|
||||||
<div class="actions">
|
<!-- Actions -->
|
||||||
<a href="{{ route('wallpapers') }}" class="btn">Continue Shopping</a>
|
<div class="actions">
|
||||||
<a href="{{ route('home') }}" class="btn btn--secondary">Back to Home</a>
|
<a href="{{ route('wallpapers') }}" class="btn">Continue Shopping</a>
|
||||||
</div>
|
<a href="{{ route('home') }}" class="btn btn--secondary">Back to Home</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
@endsection
|
@endsection
|
||||||
@@ -457,11 +457,11 @@
|
|||||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 2rem;">
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 2rem;">
|
||||||
<div>
|
<div>
|
||||||
<label for="width" style="display: block; font-weight: 600; margin-bottom: 0.5rem;">Width (meters):</label>
|
<label for="width" style="display: block; font-weight: 600; margin-bottom: 0.5rem;">Width (meters):</label>
|
||||||
<input type="number" id="width" name="width" min="0.5" step="0.1" value="2" required style="width: 100%; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
|
<input type="number" id="width" name="width" min="0.5" step="0.1" value="2" required style="font-family: var(--font-sans); width: 100%; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label for="height" style="display: block; font-weight: 600; margin-bottom: 0.5rem;">Height (meters):</label>
|
<label for="height" style="display: block; font-weight: 600; margin-bottom: 0.5rem;">Height (meters):</label>
|
||||||
<input type="number" id="height" name="height" min="0.5" step="0.1" value="2.7" required style="width: 100%; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
|
<input type="number" id="height" name="height" min="0.5" step="0.1" value="2.7" required style="font-family: var(--font-sans); width: 100%; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
@@ -477,6 +477,9 @@
|
|||||||
<button type="submit" class="btn" style="flex: 1;">Add to Cart</button>
|
<button type="submit" class="btn" style="flex: 1;">Add to Cart</button>
|
||||||
<a href="{{ route('cart') }}" class="btn btn--secondary" style="flex: 1; text-align: center;">View Cart</a>
|
<a href="{{ route('cart') }}" class="btn btn--secondary" style="flex: 1; text-align: center;">View Cart</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="btn-group " style="margin-top: 1rem; gap: 1rem;">
|
||||||
|
<button class="btn btn--secondary" style="flex: 1;">Order Sample</button>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
+4
-2
@@ -8,6 +8,7 @@ use App\Http\Controllers\FabricsController;
|
|||||||
use App\Http\Controllers\ProductController;
|
use App\Http\Controllers\ProductController;
|
||||||
use App\Http\Controllers\CartController;
|
use App\Http\Controllers\CartController;
|
||||||
use App\Http\Controllers\OrderController;
|
use App\Http\Controllers\OrderController;
|
||||||
|
use App\Http\Controllers\CustomOrderController;
|
||||||
use App\Http\Controllers\Auth\GoogleAuthController;
|
use App\Http\Controllers\Auth\GoogleAuthController;
|
||||||
|
|
||||||
Route::get('/', [HomeController::class, 'index'])->name('home');
|
Route::get('/', [HomeController::class, 'index'])->name('home');
|
||||||
@@ -49,10 +50,11 @@ Route::middleware('auth')->group(function () {
|
|||||||
Route::post('/my-account', 'App\Http\Controllers\AccountController@update')->name('my-account.update');
|
Route::post('/my-account', 'App\Http\Controllers\AccountController@update')->name('my-account.update');
|
||||||
Route::get('/my-orders', 'App\Http\Controllers\AccountController@orders')->name('my-orders');
|
Route::get('/my-orders', 'App\Http\Controllers\AccountController@orders')->name('my-orders');
|
||||||
Route::get('/my-orders/{order:uuid}', 'App\Http\Controllers\AccountController@orderDetail')->name('my-orders.detail');
|
Route::get('/my-orders/{order:uuid}', 'App\Http\Controllers\AccountController@orderDetail')->name('my-orders.detail');
|
||||||
|
Route::get('/custom-orders', [CustomOrderController::class, 'index'])->name('custom-orders.index');
|
||||||
Route::get('/custom-orders/create', 'App\Http\Controllers\CustomOrderController@create')->name('custom-orders.create');
|
Route::get('/custom-orders/create', 'App\Http\Controllers\CustomOrderController@create')->name('custom-orders.create');
|
||||||
Route::post('/custom-orders', 'App\Http\Controllers\CustomOrderController@store')->name('custom-orders.store');
|
Route::post('/custom-orders', 'App\Http\Controllers\CustomOrderController@store')->name('custom-orders.store');
|
||||||
Route::get('/custom-orders/{customOrder:uuid}', 'App\Http\Controllers\CustomOrderController@show')->name('custom-orders.show');
|
Route::get('/custom-orders/{customOrder:uuid}', 'App\Http\Controllers\CustomOrderController@show')->name('custom-orders.show');
|
||||||
Route::post('/payment/yoco/custom/deposit', 'App\Http\Controllers\CustomOrderController@depositPayment')->name('yoco-custom-deposit');
|
Route::post('/payment/yoco/custom/deposit', [CustomOrderController::class, 'depositPayment'])->name('yoco-custom-deposit');
|
||||||
Route::get('/payment/yoco/custom/deposit/success/{customOrder:uuid}', 'App\Http\Controllers\CustomOrderController@depositSuccess')->name('yoco-custom-deposit-success');
|
Route::get('/payment/yoco/custom/deposit/success/{customOrder:uuid}', [CustomOrderController::class, 'depositSuccess'])->name('yoco-custom-deposit-success');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,6 @@
|
|||||||
<?php $__env->startSection('styles'); ?>
|
<?php $__env->startSection('styles'); ?>
|
||||||
<style>
|
<style>
|
||||||
.success-container {
|
.success-container {
|
||||||
background: white;
|
|
||||||
padding: 3rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
margin: 3rem 0;
|
margin: 3rem 0;
|
||||||
}
|
}
|
||||||
@@ -31,13 +28,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.order-details {
|
.order-details {
|
||||||
background: #f9f9f9;
|
|
||||||
padding: 2rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.order-details-inner {
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
.detail-row {
|
.detail-row {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
@@ -58,10 +57,13 @@
|
|||||||
color: #666;
|
color: #666;
|
||||||
}
|
}
|
||||||
|
|
||||||
.order-items {
|
margin: 2rem 0;
|
||||||
background: #f9f9f9;
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-items-inner {
|
||||||
padding: 2rem;
|
padding: 2rem;
|
||||||
border-radius: 8px;
|
border-radius: 20pxpx;
|
||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
text-align: left;
|
text-align: left;
|
||||||
}
|
}
|
||||||
@@ -127,6 +129,13 @@
|
|||||||
margin: 2rem 0;
|
margin: 2rem 0;
|
||||||
border-left: 4px solid var(--primary-color);
|
border-left: 4px solid var(--primary-color);
|
||||||
}
|
}
|
||||||
|
.next-steps-title {
|
||||||
|
font-family: 'Abril Fatface', cursive;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
color: var(--primary-color);
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<?php $__env->stopSection(); ?>
|
<?php $__env->stopSection(); ?>
|
||||||
|
|
||||||
@@ -138,8 +147,8 @@
|
|||||||
<p class="subtitle">Thank you for your purchase. Your order has been successfully received.</p>
|
<p class="subtitle">Thank you for your purchase. Your order has been successfully received.</p>
|
||||||
|
|
||||||
<!-- Order Details -->
|
<!-- Order Details -->
|
||||||
<div class="order-details">
|
<div class="order-details card">
|
||||||
<div class="detail-row">
|
<div class="order-details-inner">
|
||||||
<span class="detail-label">Order Number:</span>
|
<span class="detail-label">Order Number:</span>
|
||||||
<span class="detail-value"><strong><?php echo e($order->order_number); ?></strong></span>
|
<span class="detail-value"><strong><?php echo e($order->order_number); ?></strong></span>
|
||||||
</div>
|
</div>
|
||||||
@@ -162,9 +171,11 @@
|
|||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- Order Items -->
|
<!-- Order Items -->
|
||||||
<div class="order-items">
|
<div class="order-items card">
|
||||||
|
<div class="order-items-inner">
|
||||||
<h2>Order Items</h2>
|
<h2>Order Items</h2>
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__currentLoopData = $order->items; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__currentLoopData = $order->items; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
||||||
<div class="item-row">
|
<div class="item-row">
|
||||||
@@ -172,23 +183,23 @@
|
|||||||
<div class="item-name"><?php echo e($item->product->name); ?></div>
|
<div class="item-name"><?php echo e($item->product->name); ?></div>
|
||||||
<div class="item-qty">
|
<div class="item-qty">
|
||||||
<?php
|
<?php
|
||||||
$stock = $item->printStock;
|
$stock = $item->printStock;
|
||||||
$stockText = $stock ? "{$stock->name}" : "Standard";
|
$stockText = $stock ? "{$stock->name}" : "Standard";
|
||||||
$stockCost = 0;
|
$stockCost = 0;
|
||||||
|
|
||||||
if ($stock) {
|
if ($stock) {
|
||||||
$stockCost = $item->type === 'wallpaper' ? $stock->cost_per_meter : $stock->cost_per_m2;
|
$stockCost = $item->type === 'wallpaper' ? $stock->cost_per_meter : $stock->cost_per_m2;
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($item->type === 'wallpaper'): ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($item->type === 'wallpaper'): ?>
|
||||||
Length: <?php echo e($item->length); ?>m | Finish: <?php echo e($stockText); ?><br>
|
Length: <?php echo e($item->length); ?>m | Finish: <?php echo e($stockText); ?><br>
|
||||||
<small>Stock Cost: R<?php echo e(number_format($stockCost, 2)); ?>/m</small>
|
<small>Stock Cost: R<?php echo e(number_format($stockCost, 2)); ?>/m</small>
|
||||||
<?php elseif($item->type === 'mural'): ?>
|
<?php elseif($item->type === 'mural'): ?>
|
||||||
Dimensions: <?php echo e($item->width); ?>m × <?php echo e($item->height); ?>m (<?php echo e(number_format($item->width * $item->height, 2)); ?>m²) | Finish: <?php echo e($stockText); ?><br>
|
Dimensions: <?php echo e($item->width); ?>m × <?php echo e($item->height); ?>m (<?php echo e(number_format($item->width * $item->height, 2)); ?>m²) | Finish: <?php echo e($stockText); ?><br>
|
||||||
<small>Stock Cost: R<?php echo e(number_format($stockCost, 2)); ?>/m²</small>
|
<small>Stock Cost: R<?php echo e(number_format($stockCost, 2)); ?>/m²</small>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<small>Price: R<?php echo e(number_format($stockCost, 2)); ?> per unit</small>
|
<small>Price: R<?php echo e(number_format($stockCost, 2)); ?> per unit</small>
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -208,24 +219,26 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
<div class="total-row">
|
|
||||||
<span>Order Total:</span>
|
|
||||||
<span>R<?php echo e(number_format($order->total, 2)); ?></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
<div class="total-row">
|
||||||
|
<span>Order Total:</span>
|
||||||
|
<span>R<?php echo e(number_format($order->total, 2)); ?></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="card--pink">
|
||||||
|
<h2 class="next-steps-title" style="text-align: center;">What Happens Next?</h2>
|
||||||
|
A confirmation email has been sent to <strong><?php echo e($order->customer_email); ?></strong>. You'll receive updates about your order status and shipping information shortly.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="note">
|
|
||||||
<strong>🔔 What's Next?</strong><br>
|
|
||||||
A confirmation email has been sent to <strong><?php echo e($order->customer_email); ?></strong>. You'll receive updates about your order status and shipping information shortly.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Actions -->
|
|
||||||
<div class="actions">
|
<!-- Actions -->
|
||||||
<a href="<?php echo e(route('wallpapers')); ?>" class="btn">Continue Shopping</a>
|
<div class="actions">
|
||||||
<a href="<?php echo e(route('home')); ?>" class="btn btn--secondary">Back to Home</a>
|
<a href="<?php echo e(route('wallpapers')); ?>" class="btn">Continue Shopping</a>
|
||||||
</div>
|
<a href="<?php echo e(route('home')); ?>" class="btn btn--secondary">Back to Home</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
||||||
<?php $__env->stopSection(); ?>
|
<?php $__env->stopSection(); ?>
|
||||||
|
|
||||||
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/resources/views/order-success.blade.php ENDPATH**/ ?>
|
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/resources/views/order-success.blade.php ENDPATH**/ ?>
|
||||||
@@ -1,424 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
<?php $__env->startSection('title', 'Order #' . $order->order_number . ' - Order Details'); ?>
|
|
||||||
|
|
||||||
<?php $__env->startSection('styles'); ?>
|
|
||||||
<style>
|
|
||||||
/* Page-specific typography overrides */
|
|
||||||
h1 {
|
|
||||||
font-family: 'Abril Fatface', cursive;
|
|
||||||
font-size: 2.5rem;
|
|
||||||
color: var(--text-primary);
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-family: 'Abril Fatface', cursive;
|
|
||||||
font-size: 1.6rem;
|
|
||||||
color: var(--text-primary);
|
|
||||||
margin-bottom: var(--spacing-md);
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-family: var(--font-sans);
|
|
||||||
font-size: 1.1rem;
|
|
||||||
font-weight: 600;
|
|
||||||
color: var(--text-primary);
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-intro {
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-intro p {
|
|
||||||
color: var(--text-secondary);
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Card styles */
|
|
||||||
.card {
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover {
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-section {
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
padding-bottom: var(--spacing-lg);
|
|
||||||
border-bottom: 1px solid var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-section:last-child {
|
|
||||||
border-bottom: none;
|
|
||||||
margin-bottom: 0;
|
|
||||||
padding-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 2fr 1fr;
|
|
||||||
gap: var(--spacing-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Order items styling */
|
|
||||||
.order-item {
|
|
||||||
padding: var(--spacing-md);
|
|
||||||
background-color: white;
|
|
||||||
border-radius: 20px;
|
|
||||||
margin-bottom: var(--spacing-md);
|
|
||||||
border: 1px solid var(--border-color);
|
|
||||||
transition: var(--transition);
|
|
||||||
}
|
|
||||||
|
|
||||||
.order-item:hover {
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-header {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: flex-start;
|
|
||||||
margin-bottom: var(--spacing-sm);
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-name {
|
|
||||||
font-weight: 600;
|
|
||||||
color: var(--text-primary);
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-price {
|
|
||||||
font-weight: 700;
|
|
||||||
color: var(--accent-dark);
|
|
||||||
font-size: 1.1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-meta {
|
|
||||||
color: var(--text-secondary);
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Payment action styling */
|
|
||||||
.payment-action-box {
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 20px;
|
|
||||||
margin-top: var(--spacing-lg);
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
gap: var(--spacing-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.payment-action-box.pending {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
border: 2px solid var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.payment-action-box.failed {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
border: 2px solid var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.payment-action-box.success {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
border: 2px solid var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.payment-amount {
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
|
|
||||||
.payment-amount-label {
|
|
||||||
color: var(--text-secondary);
|
|
||||||
font-size: 0.9rem;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.payment-amount-value {
|
|
||||||
font-size: 2rem;
|
|
||||||
font-weight: 700;
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.pending .payment-amount-value {
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.failed .payment-amount-value {
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.success .payment-amount-value {
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 1rem 2rem;
|
|
||||||
background-color: var(--accent-dark);
|
|
||||||
color: white;
|
|
||||||
text-decoration: none;
|
|
||||||
border-radius: 20px;
|
|
||||||
font-weight: 600;
|
|
||||||
transition: var(--transition);
|
|
||||||
border: none;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn:hover {
|
|
||||||
background-color: var(--accent-pink);
|
|
||||||
transform: translateY(-2px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-pending {var(--accent-dark);
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-failed {
|
|
||||||
background-color: var(--accent-dark)
|
|
||||||
background-color: #dc3545;
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.success-check {
|
|
||||||
font-sivar(--accent-dark)m;
|
|
||||||
color: #28a745;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-badge {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0.4rem 0.8rem;
|
|
||||||
border-radius: 20px;
|
|
||||||
font-size: 0.85rem;
|
|
||||||
font-weight: 600;
|
|
||||||
text-transform: capitalize;
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-badge.paid {var(--accent-light);
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-badge.pending {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-badge.failed {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-badge.processing {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-badge.shipped {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.status-badge.delivered {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
color: var(--accent-dark)or: #d4edda;
|
|
||||||
color: #155724;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.content-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 1.8rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.payment-action-box {
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: flex-start;
|
|
||||||
}
|
|
||||||
|
|
||||||
.payment-amount {
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<?php $__env->stopSection(); ?>
|
|
||||||
|
|
||||||
<?php $__env->startSection('content'); ?>
|
|
||||||
<div class="container">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>Order Details</h1>
|
|
||||||
<p>Order #<?php echo e($order->order_number); ?></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="content-grid">
|
|
||||||
<!-- Main Content -->
|
|
||||||
<div>
|
|
||||||
<!-- Order Status -->
|
|
||||||
<div class="card">
|
|
||||||
<h2>Order Status</h2>
|
|
||||||
<div class="card-section">
|
|
||||||
<span class="status-badge <?php echo e($order->status); ?>">
|
|
||||||
<?php echo e(str_replace('_', ' ', ucfirst($order->status))); ?>
|
|
||||||
|
|
||||||
</span>
|
|
||||||
<p style="margin-top: var(--spacing-sm); color: var(--text-secondary); font-size: 0.9rem;">
|
|
||||||
Ordered on <?php echo e($order->created_at->format('d M Y \a\t H:i')); ?>
|
|
||||||
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Order Items -->
|
|
||||||
<div class="card">
|
|
||||||
<h2>Order Items</h2>
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__currentLoopData = $order->items; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
|
||||||
<div class="order-item">
|
|
||||||
<div class="item-header">
|
|
||||||
<div>
|
|
||||||
<div class="item-name"><?php echo e($item->product->name); ?></div>
|
|
||||||
<div class="item-meta"><?php echo e($item->type); ?></div>
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($item->length): ?>
|
|
||||||
<div class="item-meta">Length: <?php echo e($item->length); ?>m</div>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($item->width && $item->height): ?>
|
|
||||||
<div class="item-meta">Dimensions: <?php echo e($item->width); ?>m × <?php echo e($item->height); ?>m</div>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<div class="item-price">R <?php echo e(number_format($item->price, 2)); ?></div>
|
|
||||||
<div class="item-meta" style="text-align: right;">Qty: <?php echo e($item->quantity); ?></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Shipping Details -->
|
|
||||||
<div class="card">
|
|
||||||
<h2>Delivery Details</h2>
|
|
||||||
|
|
||||||
<div class="card-section">
|
|
||||||
<h3>Customer Information</h3>
|
|
||||||
<dl style="color: var(--text-secondary);">
|
|
||||||
<div class="spec-group">
|
|
||||||
<dt>Name:</dt>
|
|
||||||
<dd><?php echo e($order->customer_name); ?></dd>
|
|
||||||
</div>
|
|
||||||
<div class="spec-group">
|
|
||||||
<dt>Email:</dt>
|
|
||||||
<dd><?php echo e($order->customer_email); ?></dd>
|
|
||||||
</div>
|
|
||||||
<div class="spec-group">
|
|
||||||
<dt>Phone:</dt>
|
|
||||||
<dd><?php echo e($order->customer_phone); ?></dd>
|
|
||||||
</div>
|
|
||||||
</dl>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="card-section">
|
|
||||||
<h3>Shipping Address</h3>
|
|
||||||
<p style="color: var(--text-secondary); line-height: 1.6;"><?php echo e($order->shipping_address); ?></p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($order->notes): ?>
|
|
||||||
<div class="card-section">
|
|
||||||
<h3>Order Notes</h3>
|
|
||||||
<p style="color: var(--text-secondary);"><?php echo e($order->notes); ?></p>
|
|
||||||
</div>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Sidebar -->
|
|
||||||
<div>
|
|
||||||
<!-- Order Summary & Payment -->
|
|
||||||
<div class="card">
|
|
||||||
<h2>Order Summary</h2>
|
|
||||||
|
|
||||||
<div class="card-section">
|
|
||||||
<div class="payment-row" style="display: flex; justify-content: space-between; margin-bottom: var(--spacing-sm); color: var(--text-secondary);">
|
|
||||||
<span>Subtotal:</span>
|
|
||||||
<span>R <?php echo e(number_format($order->total, 2)); ?></span>
|
|
||||||
</div>
|
|
||||||
<div class="payment-row total" style="display: flex; justify-content: space-between; border-top: 2px solid var(--border-color); padding-top: var(--spacing-md); font-weight: 700; font-size: 1.2rem;">
|
|
||||||
<span>Total:</span>
|
|
||||||
<span>R <?php echo e(number_format($order->total, 2)); ?></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<h3 style="margin-top: var(--spacing-lg); margin-bottom: var(--spacing-md);">Payment Status</h3>
|
|
||||||
|
|
||||||
<div style="padding: var(--spacing-sm); background-color: var(--accent-light); border-radius: 20px; margin-bottom: var(--spacing-lg);">
|
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center;">
|
|
||||||
<strong>Payment</strong>
|
|
||||||
<span class="status-badge <?php echo e($order->payment_status); ?>"><?php echo e(ucfirst($order->payment_status)); ?></span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Payment Actions -->
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($order->payment_status === 'pending' && $order->yoco_redirect_url): ?>
|
|
||||||
<div class="payment-action-box pending">
|
|
||||||
<div>
|
|
||||||
<h3 style="margin-top: 0; color: var(--accent-dark);">Payment Required</h3>
|
|
||||||
<p style="color: var(--accent-dark); margin: var(--spacing-sm) 0 0 0;">Click below to complete your payment.</p>
|
|
||||||
<a href="<?php echo e($order->yoco_redirect_url); ?>"
|
|
||||||
target="_blank"
|
|
||||||
class="btn btn-pending"
|
|
||||||
style="margin-top: var(--spacing-md);">
|
|
||||||
Pay Now
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="payment-amount">
|
|
||||||
<div class="payment-amount-label">Amount Due</div>
|
|
||||||
<div class="payment-amount-value">R <?php echo e(number_format($order->total, 2)); ?></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php elseif($order->payment_status === 'failed' && $order->yoco_redirect_url): ?>
|
|
||||||
<div class="payment-action-box failed">
|
|
||||||
<div>
|
|
||||||
<h3 style="margin-top: 0; color: var(--accent-dark);">Payment Failed</h3>
|
|
||||||
<p style="color: var(--accent-dark); margin: var(--spacing-sm) 0 0 0;">Please try your payment again.</p>
|
|
||||||
<a href="<?php echo e($order->yoco_redirect_url); ?>"
|
|
||||||
target="_blank"
|
|
||||||
class="btn btn-failed"
|
|
||||||
style="margin-top: var(--spacing-md);">
|
|
||||||
Retry Payment
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<div class="payment-amount">
|
|
||||||
<div class="payment-amount-label">Amount Due</div>
|
|
||||||
<div class="payment-amount-value">R <?php echo e(number_format($order->total, 2)); ?></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php elseif($order->payment_status === 'paid'): ?>
|
|
||||||
<div class="payment-action-box success">
|
|
||||||
<div style="display: flex; gap: var(--spacing-md); align-items: flex-start;">
|
|
||||||
<div class="success-check">✓</div>
|
|
||||||
<div>
|
|
||||||
<h3 style="margin-top: 0; color: var(--accent-dark);">Payment Received</h3>
|
|
||||||
<p style="color: var(--accent-dark); margin: var(--spacing-sm) 0 0 0; font-size: 0.9rem;">Thank you! Your order is being processed.</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Back Link -->
|
|
||||||
<div style="text-align: center; margin-top: var(--spacing-lg);">
|
|
||||||
<a href="<?php echo e(route('my-orders')); ?>" style="color: var(--accent-dark); text-decoration: none; font-weight: 600;">
|
|
||||||
← Back to Orders
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php $__env->stopSection(); ?>
|
|
||||||
|
|
||||||
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/resources/views/account/order-detail.blade.php ENDPATH**/ ?>
|
|
||||||
@@ -1,191 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
<?php $__env->startSection('title', 'Sign In - Additional Design'); ?>
|
|
||||||
|
|
||||||
<?php $__env->startSection('styles'); ?>
|
|
||||||
<style>
|
|
||||||
h1 {
|
|
||||||
font-family: 'Abril Fatface', cursive;
|
|
||||||
font-size: 2.5rem;
|
|
||||||
color: var(--text-primary);
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-container {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
min-height: 70vh;
|
|
||||||
padding: var(--spacing-lg) 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card {
|
|
||||||
background: white;
|
|
||||||
padding: 3rem;
|
|
||||||
border-radius: 20px;
|
|
||||||
max-width: 400px;
|
|
||||||
width: 100%;
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.login-card p {
|
|
||||||
text-align: center;
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
color: var(--text-secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-google {
|
|
||||||
width: 100%;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
gap: var(--spacing-sm);
|
|
||||||
padding: var(--spacing-sm) var(--spacing-md);
|
|
||||||
background-color: white;
|
|
||||||
border: 2px solid var(--border-color);
|
|
||||||
color: var(--text-primary);
|
|
||||||
border-radius: 50px;
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 1rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: var(--transition);
|
|
||||||
margin-bottom: var(--spacing-md);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-google:hover {
|
|
||||||
background-color: var(--bg-secondary);
|
|
||||||
border-color: var(--text-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-google svg {
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
gap: var(--spacing-sm);
|
|
||||||
margin: var(--spacing-lg) 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider-line {
|
|
||||||
flex: 1;
|
|
||||||
height: 1px;
|
|
||||||
background-color: var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.divider-text {
|
|
||||||
font-size: 0.85rem;
|
|
||||||
color: var(--text-secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-guest {
|
|
||||||
width: 100%;
|
|
||||||
display: block;
|
|
||||||
text-align: center;
|
|
||||||
padding: var(--spacing-sm) var(--spacing-md);
|
|
||||||
background-color: var(--bg-secondary);
|
|
||||||
color: var(--text-primary);
|
|
||||||
border: none;
|
|
||||||
border-radius: 50px;
|
|
||||||
font-weight: 600;
|
|
||||||
font-size: 1rem;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: var(--transition);
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-guest:hover {
|
|
||||||
background-color: var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.terms {
|
|
||||||
margin-top: var(--spacing-lg);
|
|
||||||
padding-top: var(--spacing-lg);
|
|
||||||
border-top: 1px solid var(--border-color);
|
|
||||||
text-align: center;
|
|
||||||
font-size: 0.85rem;
|
|
||||||
color: var(--text-secondary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.terms a {
|
|
||||||
color: var(--accent-dark);
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.alert {
|
|
||||||
padding: var(--spacing-sm);
|
|
||||||
border-radius: 4px;
|
|
||||||
margin-bottom: var(--spacing-md);
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.alert-error {
|
|
||||||
background-color: #fce8e8;
|
|
||||||
border: 1px solid #f5c6cb;
|
|
||||||
color: #721c24;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.login-card {
|
|
||||||
padding: 2rem;
|
|
||||||
margin: 0 var(--spacing-md);
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 2rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<?php $__env->stopSection(); ?>
|
|
||||||
|
|
||||||
<?php $__env->startSection('content'); ?>
|
|
||||||
<div class="login-container">
|
|
||||||
<div class="login-card">
|
|
||||||
<h1>Sign In</h1>
|
|
||||||
<p>Create an account or continue as guest to access your orders and custom designs</p>
|
|
||||||
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(session('error')): ?>
|
|
||||||
<div class="alert alert-error">
|
|
||||||
<?php echo e(session('error')); ?>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($errors->any()): ?>
|
|
||||||
<div class="alert alert-error">
|
|
||||||
<?php echo e($errors->first()); ?>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
|
|
||||||
<a href="<?php echo e(route('auth.google')); ?>" class="btn-google">
|
|
||||||
<svg viewBox="0 0 24 24" fill="currentColor">
|
|
||||||
<path d="M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z"/>
|
|
||||||
<path d="M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z"/>
|
|
||||||
<path d="M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z"/>
|
|
||||||
<path d="M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z"/>
|
|
||||||
</svg>
|
|
||||||
Sign in with Google
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="divider">
|
|
||||||
<div class="divider-line"></div>
|
|
||||||
<span class="divider-text">or</span>
|
|
||||||
<div class="divider-line"></div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<a href="<?php echo e(route('home')); ?>" class="btn-guest">
|
|
||||||
Continue as Guest
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="terms">
|
|
||||||
By signing in, you agree to our <a href="#">Terms of Service</a> and <a href="#">Privacy Policy</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php $__env->stopSection(); ?>
|
|
||||||
|
|
||||||
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/resources/views/auth/login.blade.php ENDPATH**/ ?>
|
|
||||||
@@ -37,24 +37,11 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Timeline-specific styles */
|
/* Timeline-specific styles */
|
||||||
.card {
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card:hover {
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.timeline-container {
|
.timeline-container {
|
||||||
background: white;
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 20px;
|
|
||||||
margin-bottom: var(--spacing-lg);
|
margin-bottom: var(--spacing-lg);
|
||||||
transition: var(--transition);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.timeline-container:hover {
|
.timeline-container.card:hover {
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -187,7 +174,7 @@
|
|||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
|
|
||||||
<!-- Timeline -->
|
<!-- Timeline -->
|
||||||
<div class="timeline-container">
|
<div class="timeline-container card">
|
||||||
<h2 class="timeline-title">Order Progress</h2>
|
<h2 class="timeline-title">Order Progress</h2>
|
||||||
<div class="timeline">
|
<div class="timeline">
|
||||||
<?php
|
<?php
|
||||||
@@ -372,7 +359,7 @@
|
|||||||
<!-- Payment Status -->
|
<!-- Payment Status -->
|
||||||
<h3 style="margin-top: var(--spacing-lg); margin-bottom: var(--spacing-md);">Payment Status</h3>
|
<h3 style="margin-top: var(--spacing-lg); margin-bottom: var(--spacing-md);">Payment Status</h3>
|
||||||
|
|
||||||
<div style="padding: var(--spacing-sm); background-color: var(--accent-light); border-radius: 20px; margin-bottom: var(--spacing-md);">
|
<div class="card" style="padding: var(--spacing-sm); background-color: var(--accent-light); margin-bottom: var(--spacing-md);">
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs);">
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs);">
|
||||||
<strong>Deposit (20%)</strong>
|
<strong>Deposit (20%)</strong>
|
||||||
<span class="status-badge <?php echo e($customOrder->deposit_status); ?>"><?php echo e(ucfirst($customOrder->deposit_status)); ?></span>
|
<span class="status-badge <?php echo e($customOrder->deposit_status); ?>"><?php echo e(ucfirst($customOrder->deposit_status)); ?></span>
|
||||||
@@ -380,7 +367,7 @@
|
|||||||
<p style="color: var(--text-secondary); margin: 0; font-size: 0.9rem;">R<?php echo e(number_format($customOrder->deposit_amount, 2)); ?></p>
|
<p style="color: var(--text-secondary); margin: 0; font-size: 0.9rem;">R<?php echo e(number_format($customOrder->deposit_amount, 2)); ?></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="padding: var(--spacing-sm); background-color: var(--accent-light); border-radius: 20px; margin-bottom: var(--spacing-lg);">
|
<div class="card" style="padding: var(--spacing-sm); background-color: var(--accent-light); margin-bottom: var(--spacing-lg);">
|
||||||
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs);">
|
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs);">
|
||||||
<strong>Balance (80%)</strong>
|
<strong>Balance (80%)</strong>
|
||||||
<span class="status-badge <?php echo e($customOrder->balance_status); ?>"><?php echo e(ucfirst($customOrder->balance_status)); ?></span>
|
<span class="status-badge <?php echo e($customOrder->balance_status); ?>"><?php echo e(ucfirst($customOrder->balance_status)); ?></span>
|
||||||
@@ -401,7 +388,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Terms -->
|
<!-- Terms -->
|
||||||
<div class="terms-box">
|
<div class="terms-box card--pink">
|
||||||
<h3 style="color: var(--text-primary); margin-top: 0;">Payment Terms</h3>
|
<h3 style="color: var(--text-primary); margin-top: 0;">Payment Terms</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>The 20% deposit is non-refundable</li>
|
<li>The 20% deposit is non-refundable</li>
|
||||||
|
|||||||
@@ -1,257 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
<?php $__env->startSection('title', 'Wallpapers - Premium Custom Designs'); ?>
|
|
||||||
|
|
||||||
<?php $__env->startSection('styles'); ?>
|
|
||||||
<style>
|
|
||||||
.hero-slider {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
border-radius: 20px;
|
|
||||||
margin: 20px;
|
|
||||||
height: 600px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-slide {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
opacity: 0;
|
|
||||||
transition: opacity 0.8s ease-in-out;
|
|
||||||
background-size: cover;
|
|
||||||
background-position: center;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-slide.active {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-slide-content {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 1fr 1fr;
|
|
||||||
gap: 3rem;
|
|
||||||
align-items: center;
|
|
||||||
padding: 6rem 5rem;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-dots {
|
|
||||||
position: absolute;
|
|
||||||
bottom: 30px;
|
|
||||||
left: 50%;
|
|
||||||
transform: translateX(-50%);
|
|
||||||
display: flex;
|
|
||||||
gap: 12px;
|
|
||||||
z-index: 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-dot {
|
|
||||||
width: 12px;
|
|
||||||
height: 12px;
|
|
||||||
border-radius: 50%;
|
|
||||||
background: rgba(255, 255, 255, 0.5);
|
|
||||||
cursor: pointer;
|
|
||||||
transition: all 0.3s ease;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-dot.active {
|
|
||||||
background: white;
|
|
||||||
width: 32px;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-content {
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-cta {
|
|
||||||
display: flex;
|
|
||||||
gap: 1rem;
|
|
||||||
margin-top: 1.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-slider:hover .hero-dot {
|
|
||||||
background: rgba(255, 255, 255, 0.7);
|
|
||||||
}
|
|
||||||
|
|
||||||
.hero-slider:hover .hero-dot.active {
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<?php $__env->stopSection(); ?>
|
|
||||||
|
|
||||||
<?php $__env->startSection('content'); ?>
|
|
||||||
<!-- HERO SECTION -->
|
|
||||||
<section class="section" id="hero">
|
|
||||||
<div class="hero-slider">
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__empty_1 = true; $__currentLoopData = $heroImages; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $index => $image): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
|
|
||||||
<div class="hero-slide <?php if($index === 0): ?> active <?php endif; ?>" style="background-image: url('<?php echo e(asset('storage/' . $image->image_path)); ?>');">
|
|
||||||
<div class="hero-slide-content">
|
|
||||||
<div>
|
|
||||||
<div class="hero-content">
|
|
||||||
<h1 style="color: white; font-size: 3rem;"><?php echo e($image->title); ?></h1>
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($image->description): ?>
|
|
||||||
<p style="color: rgba(255, 255, 255, 0.9); font-size: 1.1rem; max-width: 95%;"><?php echo e($image->description); ?></p>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
<div class="hero-cta">
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($image->button_text && $image->button_link): ?>
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(str_starts_with($image->button_link, '#')): ?>
|
|
||||||
<button class="btn" onclick="document.getElementById('<?php echo e(substr($image->button_link, 1)); ?>').scrollIntoView({behavior: 'smooth'})"><?php echo e($image->button_text); ?></button>
|
|
||||||
<?php else: ?>
|
|
||||||
<a href="<?php echo e($image->button_link); ?>" class="btn"><?php echo e($image->button_text); ?></a>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
<?php else: ?>
|
|
||||||
<button class="btn" onclick="document.getElementById('wallpaper-grid').scrollIntoView({behavior: 'smooth'})">Browse Wallpapers</button>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
|
|
||||||
<!-- Fallback hero image if none are configured in admin -->
|
|
||||||
<div class="hero-slide active" style="background: linear-gradient(to right, rgba(45, 80, 71, 0.7), rgba(45, 80, 71, 0.5)), url('https://images.unsplash.com/photo-1552321554-5fefe8c9ef14?w=1200&q=80') center/cover no-repeat;">
|
|
||||||
<div class="hero-slide-content">
|
|
||||||
<div>
|
|
||||||
<div class="hero-content">
|
|
||||||
<h1 style="color: white; font-size: 3rem;">Premium Custom Wallpapers</h1>
|
|
||||||
<p style="color: rgba(255, 255, 255, 0.95); font-size: 1.1rem;">Transform your spaces with our carefully curated collection of high-quality wallpapers. From botanical motifs to contemporary geometric patterns, each design is crafted with precision and printed to perfection.</p>
|
|
||||||
<div class="hero-cta">
|
|
||||||
<button class="btn" onclick="document.getElementById('wallpaper-grid').scrollIntoView({behavior: 'smooth'})">Browse Wallpapers</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div></div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
|
|
||||||
<div class="hero-dots">
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__empty_1 = true; $__currentLoopData = $heroImages; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $index => $image): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
|
|
||||||
<div class="hero-dot <?php if($index === 0): ?> active <?php endif; ?>" data-slide="<?php echo e($index); ?>"></div>
|
|
||||||
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
|
|
||||||
<div class="hero-dot active" data-slide="0"></div>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
document.addEventListener('DOMContentLoaded', function() {
|
|
||||||
const slides = document.querySelectorAll('.hero-slide');
|
|
||||||
const dots = document.querySelectorAll('.hero-dot');
|
|
||||||
const slider = document.querySelector('.hero-slider');
|
|
||||||
let currentSlide = 0;
|
|
||||||
let autoAdvanceInterval;
|
|
||||||
|
|
||||||
function showSlide(n) {
|
|
||||||
if (slides.length === 0) return;
|
|
||||||
slides.forEach(s => s.classList.remove('active'));
|
|
||||||
dots.forEach(d => d.classList.remove('active'));
|
|
||||||
currentSlide = (n + slides.length) % slides.length;
|
|
||||||
slides[currentSlide].classList.add('active');
|
|
||||||
dots[currentSlide].classList.add('active');
|
|
||||||
}
|
|
||||||
|
|
||||||
function startAutoAdvance() {
|
|
||||||
autoAdvanceInterval = setInterval(() => {
|
|
||||||
showSlide(currentSlide + 1);
|
|
||||||
}, 5000);
|
|
||||||
}
|
|
||||||
|
|
||||||
function resetAutoAdvance() {
|
|
||||||
clearInterval(autoAdvanceInterval);
|
|
||||||
startAutoAdvance();
|
|
||||||
}
|
|
||||||
|
|
||||||
dots.forEach(dot => {
|
|
||||||
dot.addEventListener('click', () => {
|
|
||||||
showSlide(parseInt(dot.getAttribute('data-slide')));
|
|
||||||
resetAutoAdvance();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
slider.addEventListener('mouseenter', () => clearInterval(autoAdvanceInterval));
|
|
||||||
slider.addEventListener('mouseleave', startAutoAdvance);
|
|
||||||
|
|
||||||
startAutoAdvance();
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- WALLPAPER GRID -->
|
|
||||||
<section class="section" id="wallpaper-grid" style="padding: 2rem 0;">
|
|
||||||
<div class="container">
|
|
||||||
<div style="display: flex; gap: 2rem; justify-content: space-between; align-items: center; flex-wrap: wrap; margin-bottom: 2rem;">
|
|
||||||
<div>
|
|
||||||
<h3>All Wallpapers</h3>
|
|
||||||
<p style="color: var(--text-secondary);">Showing all designs</p>
|
|
||||||
</div>
|
|
||||||
<div style="display: flex; gap: 1rem;">
|
|
||||||
<select style="padding: 8px 12px; border: 1px solid var(--border-color); border-radius: 4px; font-size: 0.9rem;">
|
|
||||||
<option>Sort by: Featured</option>
|
|
||||||
<option>Newest</option>
|
|
||||||
<option>Price: Low to High</option>
|
|
||||||
<option>Price: High to Low</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="display: flex; gap: 1rem; flex-wrap: wrap; margin-bottom: 2rem;">
|
|
||||||
<button class="filter-btn active" data-filter="all">All</button>
|
|
||||||
<button class="filter-btn" data-filter="botanical">Botanical</button>
|
|
||||||
<button class="filter-btn" data-filter="vintage">Vintage</button>
|
|
||||||
<button class="filter-btn" data-filter="modern">Modern</button>
|
|
||||||
<button class="filter-btn" data-filter="geometric">Geometric</button>
|
|
||||||
<button class="filter-btn" data-filter="texture">Texture</button>
|
|
||||||
<button class="filter-btn" data-filter="floral">Floral</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="container">
|
|
||||||
<div class="grid grid--3">
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__empty_1 = true; $__currentLoopData = $products; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $product): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
|
|
||||||
<?php echo $__env->make('components.product-card', ['product' => $product], array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?>
|
|
||||||
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
|
|
||||||
<p>No products available</p>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<!-- CTA SECTION -->
|
|
||||||
<section class="section section--highlight">
|
|
||||||
<div class="container" style="text-align: center;">
|
|
||||||
<h2>Need Help Choosing?</h2>
|
|
||||||
<p style="max-width: 600px; margin: 0 auto var(--spacing-lg); color: var(--text-primary);">
|
|
||||||
Schedule a free consultation with our design experts. We'll help you find the perfect wallpaper for your space.
|
|
||||||
</p>
|
|
||||||
<button class="btn btn--secondary">Book a Free Consultation</button>
|
|
||||||
</div>
|
|
||||||
</section>
|
|
||||||
<?php $__env->stopSection(); ?>
|
|
||||||
|
|
||||||
<?php $__env->startSection('scripts'); ?>
|
|
||||||
<script>
|
|
||||||
document.querySelectorAll('.filter-btn').forEach(btn => {
|
|
||||||
btn.addEventListener('click', function() {
|
|
||||||
const filter = this.dataset.filter;
|
|
||||||
document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active'));
|
|
||||||
this.classList.add('active');
|
|
||||||
|
|
||||||
document.querySelectorAll('[data-category]').forEach(card => {
|
|
||||||
if (filter === 'all' || card.dataset.category === filter) {
|
|
||||||
card.style.display = '';
|
|
||||||
} else {
|
|
||||||
card.style.display = 'none';
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<?php $__env->stopSection(); ?>
|
|
||||||
|
|
||||||
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/resources/views/wallpapers.blade.php ENDPATH**/ ?>
|
|
||||||
@@ -1,292 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
<?php $__env->startSection('title', 'My Account - Additional Design'); ?>
|
|
||||||
|
|
||||||
<?php $__env->startSection('styles'); ?>
|
|
||||||
<style>
|
|
||||||
h1 {
|
|
||||||
font-family: 'Abril Fatface', cursive;
|
|
||||||
font-size: 2.5rem;
|
|
||||||
color: var(--text-primary);
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-intro {
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-intro p {
|
|
||||||
color: var(--text-secondary);
|
|
||||||
font-size: 1.1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.account-grid {
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: 2fr 1fr;
|
|
||||||
gap: var(--spacing-lg);
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card {
|
|
||||||
background: white;
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 8px;
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card h2 {
|
|
||||||
font-family: 'Abril Fatface', cursive;
|
|
||||||
font-size: 1.8rem;
|
|
||||||
color: var(--text-primary);
|
|
||||||
margin-bottom: var(--spacing-md);
|
|
||||||
}
|
|
||||||
|
|
||||||
.card h3 {
|
|
||||||
font-family: var(--font-sans);
|
|
||||||
font-size: 1.3rem;
|
|
||||||
font-weight: 600;
|
|
||||||
color: var(--text-primary);
|
|
||||||
margin-bottom: var(--spacing-md);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group {
|
|
||||||
margin-bottom: var(--spacing-md);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group label {
|
|
||||||
display: block;
|
|
||||||
font-weight: 600;
|
|
||||||
color: var(--text-primary);
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group input,
|
|
||||||
.form-group textarea {
|
|
||||||
width: 100%;
|
|
||||||
padding: 0.75rem;
|
|
||||||
border: 1px solid var(--border-color);
|
|
||||||
border-radius: 4px;
|
|
||||||
font-size: 1rem;
|
|
||||||
font-family: inherit;
|
|
||||||
background-color: var(--bg-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.form-group input:focus,
|
|
||||||
.form-group textarea:focus {
|
|
||||||
outline: none;
|
|
||||||
border-color: var(--text-primary);
|
|
||||||
box-shadow: 0 0 0 3px rgba(0, 0, 0, 0.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.account-type {
|
|
||||||
padding: var(--spacing-sm) 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.badge {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0.4rem 1rem;
|
|
||||||
border-radius: 20px;
|
|
||||||
font-size: 0.85rem;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.badge-admin {
|
|
||||||
background-color: var(--accent-pink);
|
|
||||||
color: white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.badge-customer {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
color: var(--text-primary);
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-card {
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-card ul {
|
|
||||||
list-style: none;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-card li {
|
|
||||||
padding: 0.75rem 0;
|
|
||||||
border-bottom: 1px solid var(--border-color);
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-card li:last-child {
|
|
||||||
border-bottom: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-card a {
|
|
||||||
color: var(--text-primary);
|
|
||||||
font-weight: 500;
|
|
||||||
transition: var(--transition);
|
|
||||||
}
|
|
||||||
|
|
||||||
.sidebar-card a:hover {
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-box {
|
|
||||||
background-color: var(--accent-light);
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-box h3 {
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-box p {
|
|
||||||
font-size: 0.95rem;
|
|
||||||
margin-bottom: var(--spacing-sm);
|
|
||||||
}
|
|
||||||
|
|
||||||
.help-box a {
|
|
||||||
font-weight: 600;
|
|
||||||
color: var(--accent-dark);
|
|
||||||
}
|
|
||||||
|
|
||||||
.alert {
|
|
||||||
padding: var(--spacing-sm);
|
|
||||||
border-radius: 4px;
|
|
||||||
margin-bottom: var(--spacing-lg);
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.alert-success {
|
|
||||||
background-color: #e8f5e9;
|
|
||||||
border: 1px solid #c8e6c9;
|
|
||||||
color: #2e7d32;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-logout {
|
|
||||||
color: #c53030;
|
|
||||||
font-weight: 600;
|
|
||||||
cursor: pointer;
|
|
||||||
padding: 0;
|
|
||||||
border: none;
|
|
||||||
background: none;
|
|
||||||
transition: var(--transition);
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-logout:hover {
|
|
||||||
color: #a02424;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
|
||||||
.account-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
h1 {
|
|
||||||
font-size: 2rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card h2 {
|
|
||||||
font-size: 1.5rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
<?php $__env->stopSection(); ?>
|
|
||||||
|
|
||||||
<?php $__env->startSection('content'); ?>
|
|
||||||
<div class="container">
|
|
||||||
<div class="page-intro">
|
|
||||||
<h1>My Account</h1>
|
|
||||||
<p>Manage your profile and view your orders</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(session('success')): ?>
|
|
||||||
<div class="alert alert-success">
|
|
||||||
<?php echo e(session('success')); ?>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
|
|
||||||
<div class="account-grid">
|
|
||||||
<!-- Profile Section -->
|
|
||||||
<div>
|
|
||||||
<div class="card">
|
|
||||||
<h2>Profile Information</h2>
|
|
||||||
|
|
||||||
<form action="<?php echo e(route('my-account.update')); ?>" method="POST">
|
|
||||||
<?php echo csrf_field(); ?>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="name">Name</label>
|
|
||||||
<input type="text" id="name" name="name" value="<?php echo e(auth()->user()->name); ?>" required>
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__errorArgs = ['name'];
|
|
||||||
$__bag = $errors->getBag($__errorArgs[1] ?? 'default');
|
|
||||||
if ($__bag->has($__errorArgs[0])) :
|
|
||||||
if (isset($message)) { $__messageOriginal = $message; }
|
|
||||||
$message = $__bag->first($__errorArgs[0]); ?>
|
|
||||||
<p style="color: #c53030; font-size: 0.9rem; margin-top: 0.25rem;"><?php echo e($message); ?></p>
|
|
||||||
<?php unset($message);
|
|
||||||
if (isset($__messageOriginal)) { $message = $__messageOriginal; }
|
|
||||||
endif;
|
|
||||||
unset($__errorArgs, $__bag); ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="email">Email</label>
|
|
||||||
<input type="email" id="email" name="email" value="<?php echo e(auth()->user()->email); ?>" required>
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__errorArgs = ['email'];
|
|
||||||
$__bag = $errors->getBag($__errorArgs[1] ?? 'default');
|
|
||||||
if ($__bag->has($__errorArgs[0])) :
|
|
||||||
if (isset($message)) { $__messageOriginal = $message; }
|
|
||||||
$message = $__bag->first($__errorArgs[0]); ?>
|
|
||||||
<p style="color: #c53030; font-size: 0.9rem; margin-top: 0.25rem;"><?php echo e($message); ?></p>
|
|
||||||
<?php unset($message);
|
|
||||||
if (isset($__messageOriginal)) { $message = $__messageOriginal; }
|
|
||||||
endif;
|
|
||||||
unset($__errorArgs, $__bag); ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="form-group account-type">
|
|
||||||
<label>Account Type</label>
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(auth()->user()->is_admin): ?>
|
|
||||||
<span class="badge badge-admin">Admin</span>
|
|
||||||
<?php else: ?>
|
|
||||||
<span class="badge badge-customer">Customer</span>
|
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<button type="submit" class="btn">Update Profile</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Sidebar -->
|
|
||||||
<div>
|
|
||||||
<div class="card sidebar-card">
|
|
||||||
<h3>Quick Links</h3>
|
|
||||||
<ul>
|
|
||||||
<li>
|
|
||||||
<a href="<?php echo e(route('my-orders')); ?>">📦 My Orders</a>
|
|
||||||
</li>
|
|
||||||
<li>
|
|
||||||
<a href="<?php echo e(route('custom-orders.create')); ?>">➕ New Custom Order</a>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="help-box">
|
|
||||||
<h3>Need Help?</h3>
|
|
||||||
<p>Contact us for assistance with your account or orders.</p>
|
|
||||||
<a href="mailto:support@example.com">support@example.com</a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div style="text-align: center; padding: var(--spacing-lg) 0; border-top: 1px solid var(--border-color);">
|
|
||||||
<form action="<?php echo e(route('logout')); ?>" method="POST" style="display: inline;">
|
|
||||||
<?php echo csrf_field(); ?>
|
|
||||||
<button type="submit" class="btn-logout">Sign Out</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<?php $__env->stopSection(); ?>
|
|
||||||
|
|
||||||
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/resources/views/account/profile.blade.php ENDPATH**/ ?>
|
|
||||||
@@ -163,7 +163,7 @@
|
|||||||
|
|
||||||
<div class="grid grid--3">
|
<div class="grid grid--3">
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__empty_1 = true; $__currentLoopData = $categories; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $category): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__empty_1 = true; $__currentLoopData = $categories; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $category): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<div class="card-image" style="background-image: url('<?php echo e($category->image); ?>'); background-size: cover; background-position: center;"></div>
|
<div class="card-image" style="background-image: url('<?php echo e($category->image); ?>'); background-size: cover; background-position: center;"></div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title"><?php echo e($category->name); ?></div>
|
<div class="card-title"><?php echo e($category->name); ?></div>
|
||||||
@@ -235,7 +235,7 @@
|
|||||||
<p>Our work spans luxury hotels, high-end residences, and commercial spaces. See how we transform environments with our custom wallpaper and fabric solutions.</p>
|
<p>Our work spans luxury hotels, high-end residences, and commercial spaces. See how we transform environments with our custom wallpaper and fabric solutions.</p>
|
||||||
|
|
||||||
<div class="grid grid--3">
|
<div class="grid grid--3">
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Luxury Resort Redesign</div>
|
<div class="card-title">Luxury Resort Redesign</div>
|
||||||
@@ -244,7 +244,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1631049307264-da0ec9d70304?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Modern Executive Office</div>
|
<div class="card-title">Modern Executive Office</div>
|
||||||
@@ -253,7 +253,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="card">
|
<div class="product-card">
|
||||||
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1568605114967-8130f3a36994?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
<div class="card-image" style="background-image: url('https://images.unsplash.com/photo-1568605114967-8130f3a36994?w=500&q=80'); background-size: cover; background-position: center;"></div>
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<div class="card-title">Residential Penthouse</div>
|
<div class="card-title">Residential Penthouse</div>
|
||||||
@@ -276,7 +276,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="background-color: var(--bg-secondary); padding: var(--spacing-lg); border-radius: 20px;">
|
<div class="card--pink">
|
||||||
<h3 style="color: var(--accent-dark); margin-bottom: var(--spacing-md);">Sustainability Commitment</h3>
|
<h3 style="color: var(--accent-dark); margin-bottom: var(--spacing-md);">Sustainability Commitment</h3>
|
||||||
<ul style="list-style: none; color: var(--text-secondary);">
|
<ul style="list-style: none; color: var(--text-secondary);">
|
||||||
<li style="margin-bottom: 12px;"><strong>Low-VOC Inks:</strong> Non-toxic printing processes safe for your home and the environment.</li>
|
<li style="margin-bottom: 12px;"><strong>Low-VOC Inks:</strong> Non-toxic printing processes safe for your home and the environment.</li>
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
<?php $__env->startSection('title', __('Page Expired')); ?>
|
|
||||||
<?php $__env->startSection('code', '419'); ?>
|
|
||||||
<?php $__env->startSection('message', __('Page Expired')); ?>
|
|
||||||
|
|
||||||
<?php echo $__env->make('errors::minimal', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/vendor/laravel/framework/src/Illuminate/Foundation/Exceptions/views/419.blade.php ENDPATH**/ ?>
|
|
||||||
@@ -0,0 +1,146 @@
|
|||||||
|
|
||||||
|
|
||||||
|
<?php $__env->startSection('title', 'Deposit Payment Successful'); ?>
|
||||||
|
|
||||||
|
<?php $__env->startSection('styles'); ?>
|
||||||
|
<style>
|
||||||
|
.success-container {
|
||||||
|
text-align: center;
|
||||||
|
margin: 3rem 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.success-icon {
|
||||||
|
font-size: 4rem;
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-family: 'Abril Fatface', cursive;
|
||||||
|
font-size: 2.5rem;
|
||||||
|
color: var(--primary-color);
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.subtitle {
|
||||||
|
color: #666;
|
||||||
|
font-size: 1.1rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-details {
|
||||||
|
margin: 2rem 0;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-details-inner {
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-row {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
padding: 1rem 0;
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-row:last-child {
|
||||||
|
border-bottom: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-label {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--primary-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.detail-value {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next-steps-title {
|
||||||
|
font-family: 'Abril Fatface', cursive;
|
||||||
|
font-size: 1.3rem;
|
||||||
|
color: var(--primary-color);
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next-steps-inner {
|
||||||
|
padding: 2rem;
|
||||||
|
border-radius: 20px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next-steps ul {
|
||||||
|
color: #666;
|
||||||
|
padding-left: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.next-steps li {
|
||||||
|
margin-bottom: 0.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.actions {
|
||||||
|
margin-top: 2rem;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<?php $__env->stopSection(); ?>
|
||||||
|
|
||||||
|
<?php $__env->startSection('content'); ?>
|
||||||
|
<main class="container">
|
||||||
|
<div class="success-container">
|
||||||
|
<div class="success-icon">✓</div>
|
||||||
|
<h1>Deposit Payment Successful!</h1>
|
||||||
|
<p class="subtitle">Your deposit payment has been received and processed successfully.</p>
|
||||||
|
|
||||||
|
<!-- Order Details -->
|
||||||
|
<div class="order-details card">
|
||||||
|
<div class="order-details-inner">
|
||||||
|
<div class="detail-row">
|
||||||
|
<span class="detail-label">Order Number:</span>
|
||||||
|
<span class="detail-value"><strong><?php echo e($customOrder->order_number); ?></strong></span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-row">
|
||||||
|
<span class="detail-label">Order Type:</span>
|
||||||
|
<span class="detail-value"><?php echo e(ucfirst($customOrder->type)); ?></span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-row">
|
||||||
|
<span class="detail-label">Deposit Amount Paid:</span>
|
||||||
|
<span class="detail-value"><strong>R<?php echo e(number_format($customOrder->deposit_amount, 2)); ?></strong></span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-row">
|
||||||
|
<span class="detail-label">Remaining Balance:</span>
|
||||||
|
<span class="detail-value">R<?php echo e(number_format($customOrder->balance_amount, 2)); ?></span>
|
||||||
|
</div>
|
||||||
|
<div class="detail-row">
|
||||||
|
<span class="detail-label">Total Project Cost:</span>
|
||||||
|
<span class="detail-value"><strong>R<?php echo e(number_format($customOrder->total_cost, 2)); ?></strong></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- What's Next -->
|
||||||
|
<div class="card--pink">
|
||||||
|
<div class="next-steps-inner">
|
||||||
|
<h2 class="next-steps-title" style="text-align: center;">What Happens Next?</h2>
|
||||||
|
<ul class="next-steps">
|
||||||
|
<li>Your design requirements have been received and confirmed</li>
|
||||||
|
<li>Our design team will review your specifications and reference images</li>
|
||||||
|
<li>You'll receive proof designs for your approval within 3-5 business days</li>
|
||||||
|
<li>Once you approve the proofs, we'll prepare for printing</li>
|
||||||
|
<li>The remaining balance (80%) will be due before printing begins</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Actions -->
|
||||||
|
<div class="actions">
|
||||||
|
<a href="<?php echo e(route('custom-orders.show', $customOrder)); ?>" class="btn">View Order Details</a>
|
||||||
|
<a href="<?php echo e(route('custom-orders.index')); ?>" class="btn btn--secondary">Back to My Orders</a>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<?php $__env->stopSection(); ?>
|
||||||
|
|
||||||
|
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/resources/views/custom-orders/deposit-success.blade.php ENDPATH**/ ?>
|
||||||
@@ -229,15 +229,15 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>About Our Murals</h2>
|
<h2>About Our Murals</h2>
|
||||||
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-top: 2rem;">
|
<div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; margin-top: 2rem;">
|
||||||
<div style="background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.05);">
|
<div class="card">
|
||||||
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Custom Dimensions</h4>
|
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Custom Dimensions</h4>
|
||||||
<p>Order murals in any size. Simply provide your width and height measurements, and we'll print to exact specifications.</p>
|
<p>Order murals in any size. Simply provide your width and height measurements, and we'll print to exact specifications.</p>
|
||||||
</div>
|
</div>
|
||||||
<div style="background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.05);">
|
<div class="card">
|
||||||
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Non-Repeating Design</h4>
|
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Non-Repeating Design</h4>
|
||||||
<p>Unlike wallpapers, murals are single cohesive images perfect for accent walls. One stunning focal point for your space.</p>
|
<p>Unlike wallpapers, murals are single cohesive images perfect for accent walls. One stunning focal point for your space.</p>
|
||||||
</div>
|
</div>
|
||||||
<div style="background: white; padding: 2rem; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.05);">
|
<div class="card">
|
||||||
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Premium Quality</h4>
|
<h4 style="color: var(--primary-color); margin-bottom: 1rem;">Premium Quality</h4>
|
||||||
<p>High-resolution printing with vibrant colors and excellent durability. Professional installation guides included.</p>
|
<p>High-resolution printing with vibrant colors and excellent durability. Professional installation guides included.</p>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<a href="<?php echo e(route('product-detail', $product)); ?>" style="text-decoration: none; color: inherit;">
|
<a href="<?php echo e(route('product-detail', $product)); ?>" style="text-decoration: none; color: inherit;">
|
||||||
<div class="card" data-category="<?php echo e($product->category->slug); ?>">
|
<div class="product-card" data-category="<?php echo e($product->category->slug); ?>">
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($product->images->count() > 0): ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($product->images->count() > 0): ?>
|
||||||
<img src="<?php echo e(asset('storage/' . $product->images->first()->image_path)); ?>" alt="<?php echo e($product->name); ?>" class="card-image" style="background-size: cover; background-position: center;">
|
<img src="<?php echo e(asset('storage/' . $product->images->first()->image_path)); ?>" alt="<?php echo e($product->name); ?>" class="card-image" style="background-size: cover; background-position: center;">
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
|
|||||||
@@ -459,11 +459,11 @@
|
|||||||
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 2rem;">
|
<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 2rem;">
|
||||||
<div>
|
<div>
|
||||||
<label for="width" style="display: block; font-weight: 600; margin-bottom: 0.5rem;">Width (meters):</label>
|
<label for="width" style="display: block; font-weight: 600; margin-bottom: 0.5rem;">Width (meters):</label>
|
||||||
<input type="number" id="width" name="width" min="0.5" step="0.1" value="2" required style="width: 100%; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
|
<input type="number" id="width" name="width" min="0.5" step="0.1" value="2" required style="font-family: var(--font-sans); width: 100%; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
|
||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<label for="height" style="display: block; font-weight: 600; margin-bottom: 0.5rem;">Height (meters):</label>
|
<label for="height" style="display: block; font-weight: 600; margin-bottom: 0.5rem;">Height (meters):</label>
|
||||||
<input type="number" id="height" name="height" min="0.5" step="0.1" value="2.7" required style="width: 100%; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
|
<input type="number" id="height" name="height" min="0.5" step="0.1" value="2.7" required style="font-family: var(--font-sans); width: 100%; padding: 0.5rem; border: 1px solid #ddd; border-radius: 4px;">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
@@ -479,6 +479,9 @@
|
|||||||
<button type="submit" class="btn" style="flex: 1;">Add to Cart</button>
|
<button type="submit" class="btn" style="flex: 1;">Add to Cart</button>
|
||||||
<a href="<?php echo e(route('cart')); ?>" class="btn btn--secondary" style="flex: 1; text-align: center;">View Cart</a>
|
<a href="<?php echo e(route('cart')); ?>" class="btn btn--secondary" style="flex: 1; text-align: center;">View Cart</a>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="btn-group " style="margin-top: 1rem; gap: 1rem;">
|
||||||
|
<button class="btn btn--secondary" style="flex: 1;">Order Sample</button>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -0,0 +1,358 @@
|
|||||||
|
|
||||||
|
|
||||||
|
<?php $__env->startSection('title', 'My Custom Orders'); ?>
|
||||||
|
|
||||||
|
<?php $__env->startSection('styles'); ?>
|
||||||
|
<style>
|
||||||
|
h1 {
|
||||||
|
font-family: 'Abril Fatface', cursive;
|
||||||
|
font-size: 2.5rem;
|
||||||
|
color: var(--text-primary);
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-family: 'Abril Fatface', cursive;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
color: var(--text-primary);
|
||||||
|
margin-bottom: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-header {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: flex-start;
|
||||||
|
margin-bottom: var(--spacing-lg);
|
||||||
|
gap: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-header-content {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-header p {
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-state {
|
||||||
|
background-color: var(--bg-secondary);
|
||||||
|
border-radius: 8px;
|
||||||
|
padding: var(--spacing-xl);
|
||||||
|
text-align: center;
|
||||||
|
margin-bottom: var(--spacing-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-state-icon {
|
||||||
|
font-size: 3rem;
|
||||||
|
margin-bottom: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-state h2 {
|
||||||
|
margin-bottom: 0.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-state p {
|
||||||
|
color: var(--text-secondary);
|
||||||
|
margin-bottom: var(--spacing-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.orders-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));
|
||||||
|
gap: var(--spacing-lg);
|
||||||
|
margin-bottom: var(--spacing-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card {
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card.card:hover {
|
||||||
|
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card-header {
|
||||||
|
padding: var(--spacing-lg);
|
||||||
|
border-bottom: 1px solid var(--border-color);
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-number {
|
||||||
|
font-family: var(--font-sans);
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-primary);
|
||||||
|
font-size: 1.1rem;
|
||||||
|
margin-bottom: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-date {
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card-body {
|
||||||
|
padding: var(--spacing-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-detail {
|
||||||
|
margin-bottom: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-detail:last-child {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-detail-label {
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--text-primary);
|
||||||
|
font-size: 0.9rem;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.5px;
|
||||||
|
margin-bottom: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-detail-value {
|
||||||
|
color: var(--text-secondary);
|
||||||
|
font-size: 1rem;
|
||||||
|
text-transform: capitalize;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-details-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr 1fr;
|
||||||
|
gap: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card-footer {
|
||||||
|
padding: var(--spacing-lg);
|
||||||
|
border-top: 1px solid var(--border-color);
|
||||||
|
display: flex;
|
||||||
|
gap: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card-footer a {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-indicator {
|
||||||
|
display: flex;
|
||||||
|
gap: var(--spacing-sm);
|
||||||
|
margin-bottom: var(--spacing-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-step {
|
||||||
|
flex: 1;
|
||||||
|
height: 4px;
|
||||||
|
background-color: var(--border-color);
|
||||||
|
border-radius: 2px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-step.active {
|
||||||
|
background-color: var(--accent-dark);
|
||||||
|
}
|
||||||
|
|
||||||
|
.progress-step.completed {
|
||||||
|
background-color: #4caf50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-flow {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: var(--spacing-sm);
|
||||||
|
font-size: 0.85rem;
|
||||||
|
color: var(--text-secondary);
|
||||||
|
margin-bottom: var(--spacing-md);
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-flow-item {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-flow-arrow {
|
||||||
|
color: var(--border-color);
|
||||||
|
margin: 0 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert {
|
||||||
|
padding: var(--spacing-md);
|
||||||
|
border-radius: 8px;
|
||||||
|
margin-bottom: var(--spacing-lg);
|
||||||
|
border: 1px solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.alert-success {
|
||||||
|
background-color: #e8f5e9;
|
||||||
|
border-color: #c8e6c9;
|
||||||
|
color: #2e7d32;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 768px) {
|
||||||
|
h1 {
|
||||||
|
font-size: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.page-header {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.orders-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-details-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card-footer {
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
|
.order-card-footer a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.status-flow {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: flex-start;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<?php $__env->stopSection(); ?>
|
||||||
|
|
||||||
|
<?php $__env->startSection('content'); ?>
|
||||||
|
<div class="container" style="margin-top:20px;">
|
||||||
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(session('success')): ?>
|
||||||
|
<div class="alert alert-success">
|
||||||
|
<?php echo e(session('success')); ?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
|
|
||||||
|
<div class="page-header">
|
||||||
|
<div class="page-header-content">
|
||||||
|
<h1>My Custom Orders</h1>
|
||||||
|
<p>Track and manage your custom printing orders</p>
|
||||||
|
</div>
|
||||||
|
<a href="<?php echo e(route('custom-orders.create')); ?>" class="btn">Create New Order</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($customOrders->isEmpty()): ?>
|
||||||
|
<div class="empty-state">
|
||||||
|
<div class="empty-state-icon">📋</div>
|
||||||
|
<h2>No Custom Orders Yet</h2>
|
||||||
|
<p>You haven't created any custom orders yet. Start by designing your unique print today!</p>
|
||||||
|
<a href="<?php echo e(route('custom-orders.create')); ?>" class="btn">Create Your First Order</a>
|
||||||
|
</div>
|
||||||
|
<?php else: ?>
|
||||||
|
<div class="orders-grid">
|
||||||
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__currentLoopData = $customOrders; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $order): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
||||||
|
<div class="order-card card">
|
||||||
|
<div class="order-card-header">
|
||||||
|
<div>
|
||||||
|
<div class="order-number">Order #<?php echo e($order->order_number); ?></div>
|
||||||
|
<div class="order-date"><?php echo e($order->created_at->format('d M Y')); ?></div>
|
||||||
|
</div>
|
||||||
|
<span class="status-badge <?php echo e($order->status); ?>">
|
||||||
|
<?php echo e(str_replace('_', ' ', ucfirst($order->status))); ?>
|
||||||
|
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="order-card-body">
|
||||||
|
<!-- Progress Indicator -->
|
||||||
|
<div class="progress-indicator">
|
||||||
|
<?php
|
||||||
|
$statuses = ['submitted', 'approved', 'in_production', 'proof_ready', 'completed'];
|
||||||
|
$currentIndex = array_search($order->status, $statuses);
|
||||||
|
?>
|
||||||
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__currentLoopData = $statuses; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $index => $status): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
||||||
|
<div class="progress-step <?php echo e($index <= $currentIndex ? 'completed' : ($index === $currentIndex + 1 ? 'active' : '')); ?>"></div>
|
||||||
|
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Order Details Grid -->
|
||||||
|
<div class="order-details-grid">
|
||||||
|
<div class="order-detail">
|
||||||
|
<div class="order-detail-label">Type</div>
|
||||||
|
<div class="order-detail-value"><?php echo e(ucfirst($order->type)); ?></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="order-detail">
|
||||||
|
<div class="order-detail-label">Status</div>
|
||||||
|
<div class="order-detail-value">
|
||||||
|
<?php echo e(str_replace('_', ' ', ucfirst($order->status))); ?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($order->specifications): ?>
|
||||||
|
<div class="order-detail">
|
||||||
|
<div class="order-detail-label">Quantity</div>
|
||||||
|
<div class="order-detail-value"><?php echo e($order->specifications->quantity); ?></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="order-detail">
|
||||||
|
<div class="order-detail-label">Stock</div>
|
||||||
|
<div class="order-detail-value">
|
||||||
|
<?php echo e($order->specifications->printStock ? $order->specifications->printStock->name : 'N/A'); ?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Payment Status -->
|
||||||
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($order->total_cost): ?>
|
||||||
|
<div class="order-detail">
|
||||||
|
<div class="order-detail-label">Total Cost</div>
|
||||||
|
<div class="order-detail-value" style="font-weight: 600; color: var(--accent-dark); font-size: 1.1rem;">
|
||||||
|
R<?php echo e(number_format($order->total_cost, 2)); ?>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
|
|
||||||
|
<!-- Status Flow -->
|
||||||
|
<div class="status-flow">
|
||||||
|
<div class="status-flow-item">
|
||||||
|
<span><?php echo e($order->deposit_status === 'paid' ? '✓' : '○'); ?></span>
|
||||||
|
<span>Deposit</span>
|
||||||
|
</div>
|
||||||
|
<div class="status-flow-arrow">→</div>
|
||||||
|
<div class="status-flow-item">
|
||||||
|
<span><?php echo e($order->status === 'approved' ? '✓' : '○'); ?></span>
|
||||||
|
<span>Approved</span>
|
||||||
|
</div>
|
||||||
|
<div class="status-flow-arrow">→</div>
|
||||||
|
<div class="status-flow-item">
|
||||||
|
<span><?php echo e(in_array($order->status, ['in_production', 'proof_ready', 'completed']) ? '✓' : '○'); ?></span>
|
||||||
|
<span>Production</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="order-card-footer">
|
||||||
|
<a href="<?php echo e(route('custom-orders.show', $order->uuid)); ?>">View Details</a>
|
||||||
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($order->deposit_status === 'unpaid'): ?>
|
||||||
|
<a href="<?php echo e(route('custom-orders.show', $order->uuid)); ?>" class="secondary">Pay Deposit</a>
|
||||||
|
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<?php $__env->stopSection(); ?>
|
||||||
|
|
||||||
|
<?php echo $__env->make('layouts.app', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?><?php /**PATH /var/www/additional_design/resources/views/custom-orders/index.blade.php ENDPATH**/ ?>
|
||||||
@@ -3,9 +3,9 @@
|
|||||||
<div class="footer-content">
|
<div class="footer-content">
|
||||||
<div class="footer-column">
|
<div class="footer-column">
|
||||||
<h4>Contact</h4>
|
<h4>Contact</h4>
|
||||||
<p>Email: info@additionaldesign.com</p>
|
<p>Email: info@additional.co.za</p>
|
||||||
<p>Phone: (555) 123-4567</p>
|
<p>Phone: +27 081 702 7873</p>
|
||||||
<p>Address: 123 Design Street, Creative City, ST 12345</p>
|
<p>Address: 360 Furrow Rd, Pretoria, South Africa</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-column">
|
<div class="footer-column">
|
||||||
@@ -21,25 +21,23 @@
|
|||||||
|
|
||||||
<div class="footer-column">
|
<div class="footer-column">
|
||||||
<h4>Follow Us</h4>
|
<h4>Follow Us</h4>
|
||||||
<div class="social-links">
|
|
||||||
<a href="#" target="_blank">Facebook</a>
|
<a href="#" target="_blank">Facebook</a>
|
||||||
<a href="#" target="_blank">Instagram</a>
|
<a href="#" target="_blank">Instagram</a>
|
||||||
<a href="#" target="_blank">Pinterest</a>
|
<a href="#" target="_blank">Pinterest</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-column">
|
<div class="footer-column">
|
||||||
<h4>Newsletter</h4>
|
<h4>Newsletter</h4>
|
||||||
<p>Subscribe to stay updated on new collections and exclusive offers.</p>
|
<p>Subscribe to stay updated on new collections and exclusive offers.</p>
|
||||||
<form style="display: flex; gap: 8px; margin-top: var(--spacing-sm);">
|
<form style="display: flex; gap: 8px; margin-top: var(--spacing-sm);">
|
||||||
<input type="email" placeholder="Your email" style="flex: 1; padding: 8px 12px; border: 1px solid rgba(255,255,255,0.2); background-color: rgba(255,255,255,0.1); color: white; font-size: 0.9rem;">
|
<input type="email" placeholder="Your email" style="border-radius: 20px; padding: 8px 12px; border: 1px solid rgba(255,255,255,0.2); background-color: rgba(255,255,255,0.1); color: white; font-size: 0.9rem;">
|
||||||
<button type="submit" class="btn" style="padding: 8px 16px;">Subscribe</button>
|
<button type="submit" class="btn btn--secondary" style="padding: 8px 16px;">Subscribe</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="footer-bottom">
|
<div class="footer-bottom">
|
||||||
<p>© 2025 Additional Design. All rights reserved. Designed with care and creativity.</p>
|
<p>© <?= date('Y'); ?> Additional Design is a registered trading name of TWO TALES & CO. (PTY) LTD. All rights reserved. Site design and development by TTDEV.</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
|
|||||||
@@ -50,10 +50,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.table-container {
|
.table-container {
|
||||||
background: white;
|
border-radius: 20px;
|
||||||
border-radius: 8px;
|
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
table {
|
table {
|
||||||
@@ -114,10 +112,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.empty-state {
|
.empty-state {
|
||||||
background-color: var(--bg-secondary);
|
border-radius: 20px;
|
||||||
border-radius: 8px;
|
|
||||||
padding: var(--spacing-xl);
|
|
||||||
text-align: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.empty-state p {
|
.empty-state p {
|
||||||
@@ -184,7 +179,7 @@
|
|||||||
<h2>Standard Orders</h2>
|
<h2>Standard Orders</h2>
|
||||||
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($standardOrders->count() > 0): ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($standardOrders->count() > 0): ?>
|
||||||
<div class="table-container">
|
<div class="table-container card">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -216,7 +211,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<div class="empty-state">
|
<div class="empty-state card--pink">
|
||||||
<p>You haven't placed any standard orders yet.</p>
|
<p>You haven't placed any standard orders yet.</p>
|
||||||
<a href="<?php echo e(route('wallpapers')); ?>">Browse Products</a>
|
<a href="<?php echo e(route('wallpapers')); ?>">Browse Products</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -231,7 +226,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($customOrders->count() > 0): ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($customOrders->count() > 0): ?>
|
||||||
<div class="table-container">
|
<div class="table-container card">
|
||||||
<table>
|
<table>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -270,7 +265,7 @@
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<div class="empty-state">
|
<div class="empty-state card--pink">
|
||||||
<p>You haven't created any custom orders yet.</p>
|
<p>You haven't created any custom orders yet.</p>
|
||||||
<a href="<?php echo e(route('custom-orders.create')); ?>">Create Custom Order</a>
|
<a href="<?php echo e(route('custom-orders.create')); ?>">Create Custom Order</a>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -20,9 +20,7 @@
|
|||||||
|
|
||||||
.checkout-form,
|
.checkout-form,
|
||||||
.order-summary {
|
.order-summary {
|
||||||
background: white;
|
border-radius: 20px;
|
||||||
padding: 2rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.checkout-form h2,
|
.checkout-form h2,
|
||||||
@@ -193,7 +191,7 @@
|
|||||||
|
|
||||||
<div class="checkout-container">
|
<div class="checkout-container">
|
||||||
<!-- Checkout Form -->
|
<!-- Checkout Form -->
|
||||||
<form action="<?php echo e(route('order-process')); ?>" method="POST" class="checkout-form">
|
<form action="<?php echo e(route('order-process')); ?>" method="POST" class="checkout-form card">
|
||||||
<?php echo csrf_field(); ?>
|
<?php echo csrf_field(); ?>
|
||||||
|
|
||||||
<h2>Delivery Information</h2>
|
<h2>Delivery Information</h2>
|
||||||
@@ -231,7 +229,7 @@
|
|||||||
</form>
|
</form>
|
||||||
|
|
||||||
<!-- Order Summary -->
|
<!-- Order Summary -->
|
||||||
<div class="order-summary">
|
<div class="order-summary card">
|
||||||
<h2>Order Summary</h2>
|
<h2>Order Summary</h2>
|
||||||
|
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__currentLoopData = $items; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__currentLoopData = $items; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
||||||
|
|||||||
@@ -21,10 +21,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form-card {
|
.form-card {
|
||||||
background: white;
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 20px;
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
margin-bottom: var(--spacing-lg);
|
margin-bottom: var(--spacing-lg);
|
||||||
max-width: 700px;
|
max-width: 700px;
|
||||||
}
|
}
|
||||||
@@ -196,10 +192,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.info-box {
|
.info-box {
|
||||||
background-color: var(--accent-light);
|
|
||||||
border: 1px solid var(--border-color);
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 20px;
|
|
||||||
margin-bottom: var(--spacing-lg);
|
margin-bottom: var(--spacing-lg);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,12 +226,7 @@
|
|||||||
top: 120px;
|
top: 120px;
|
||||||
}
|
}
|
||||||
.cost-summary-content {
|
.cost-summary-content {
|
||||||
background: white;
|
|
||||||
padding: var(--spacing-lg);
|
|
||||||
border-radius: 20px;
|
|
||||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
|
|
||||||
margin-bottom: var(--spacing-md);
|
margin-bottom: var(--spacing-md);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.cost-summary-content h3 {
|
.cost-summary-content h3 {
|
||||||
@@ -351,7 +338,7 @@
|
|||||||
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
<?php endif; ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if ENDBLOCK]><![endif]--><?php endif; ?>
|
||||||
|
|
||||||
<!-- Info Box -->
|
<!-- Info Box -->
|
||||||
<div class="info-box">
|
<div class="info-box card--pink">
|
||||||
<h2>How It Works</h2>
|
<h2>How It Works</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Submit your custom order with design specifications and reference images</li>
|
<li>Submit your custom order with design specifications and reference images</li>
|
||||||
@@ -363,7 +350,7 @@
|
|||||||
|
|
||||||
<!-- Form -->
|
<!-- Form -->
|
||||||
<div class="form-wrapper">
|
<div class="form-wrapper">
|
||||||
<form action="<?php echo e(route('custom-orders.store')); ?>" method="POST" enctype="multipart/form-data" id="custom-order-form" class="form-card" data-action="<?php echo e(route('custom-orders.store')); ?>">
|
<form action="<?php echo e(route('custom-orders.store')); ?>" method="POST" enctype="multipart/form-data" id="custom-order-form" class="form-card card" data-action="<?php echo e(route('custom-orders.store')); ?>">
|
||||||
<?php echo csrf_field(); ?>
|
<?php echo csrf_field(); ?>
|
||||||
|
|
||||||
<!-- Order Type & Dimensions -->
|
<!-- Order Type & Dimensions -->
|
||||||
@@ -549,7 +536,7 @@ unset($__errorArgs, $__bag); ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendB
|
|||||||
|
|
||||||
<!-- Cost Summary Sidebar -->
|
<!-- Cost Summary Sidebar -->
|
||||||
<div class="cost-summary">
|
<div class="cost-summary">
|
||||||
<div class="cost-summary-content">
|
<div class="cost-summary-content card">
|
||||||
<h3>Cost Summary</h3>
|
<h3>Cost Summary</h3>
|
||||||
|
|
||||||
<div class="cost-item disabled" id="material-cost-item">
|
<div class="cost-item disabled" id="material-cost-item">
|
||||||
@@ -577,7 +564,7 @@ unset($__errorArgs, $__bag); ?><?php if(\Livewire\Mechanisms\ExtendBlade\ExtendB
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="background: var(--accent-light); padding: 1.5rem; border-radius: 20px; margin-bottom: 1rem;">
|
<div class="card" style="padding: 1.5rem; margin-bottom: 1rem; background: var(--accent-light);">
|
||||||
<p style="margin: 0 0 0.5rem 0; color: black;">Estimated Total:</p>
|
<p style="margin: 0 0 0.5rem 0; color: black;">Estimated Total:</p>
|
||||||
<div style="font-family: 'Abril Fatface', cursive; font-size: 3rem; font-weight: 400; color: white;">R<span id="total-cost">0.00</span></div>
|
<div style="font-family: 'Abril Fatface', cursive; font-size: 3rem; font-weight: 400; color: white;">R<span id="total-cost">0.00</span></div>
|
||||||
<small style="color: #fff; display: block; margin-top: 0.5rem;">incl. VAT</small>
|
<small style="color: #fff; display: block; margin-top: 0.5rem;">incl. VAT</small>
|
||||||
|
|||||||
@@ -18,11 +18,7 @@
|
|||||||
margin-bottom: 3rem;
|
margin-bottom: 3rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.cart-items {
|
|
||||||
background: white;
|
|
||||||
padding: 2rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.empty-cart {
|
.empty-cart {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
@@ -111,9 +107,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.summary {
|
.summary {
|
||||||
background: white;
|
|
||||||
padding: 2rem;
|
|
||||||
border-radius: 8px;
|
|
||||||
height: fit-content;
|
height: fit-content;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -223,7 +216,7 @@
|
|||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(count($items) > 0): ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if(count($items) > 0): ?>
|
||||||
<div class="cart-container">
|
<div class="cart-container">
|
||||||
<!-- Cart Items -->
|
<!-- Cart Items -->
|
||||||
<div class="cart-items">
|
<div class="cart-items card">
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__currentLoopData = $items; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php $__currentLoopData = $items; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
|
||||||
<div class="cart-item">
|
<div class="cart-item">
|
||||||
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($item['product']->images->count() > 0): ?>
|
<?php if(\Livewire\Mechanisms\ExtendBlade\ExtendBlade::isRenderingLivewireComponent()): ?><!--[if BLOCK]><![endif]--><?php endif; ?><?php if($item['product']->images->count() > 0): ?>
|
||||||
@@ -279,7 +272,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Summary -->
|
<!-- Summary -->
|
||||||
<div class="summary">
|
<div class="summary card">
|
||||||
<h2>Order Summary</h2>
|
<h2>Order Summary</h2>
|
||||||
|
|
||||||
<div class="summary-row">
|
<div class="summary-row">
|
||||||
|
|||||||
Reference in New Issue
Block a user