feat: inisialisasi project kit v2

This commit is contained in:
2026-05-21 15:57:29 +07:00
commit d4fd478e1f
271 changed files with 35300 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title inertia>{{ config('app.name', 'Laravel') }}</title>
@php
$settings = \Illuminate\Support\Facades\Cache::get('system_settings', []);
$favicon = $settings['app_logo'] ?? null;
@endphp
@if($favicon)
<link rel="icon" type="image/x-icon" href="{{ $favicon }}">
@endif
<link href="https://fonts.googleapis.com/css2?family=Lexend:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<!-- Scripts -->
@routes
@viteReactRefresh
@vite(['resources/js/app.tsx', "resources/js/Pages/{$page['component']}.tsx"])
@inertiaHead
</head>
<body class="font-sans antialiased">
@inertia
</body>
</html>
+27
View File
@@ -0,0 +1,27 @@
@extends('errors.layout')
@section('title', '403 — Access Forbidden')
@section('code', '403')
@section('badge-label', 'Access Denied')
@section('dot-color', '#EF4444')
@section('icon-bg', '#FEF2F2')
@section('icon-color', '#EF4444')
@section('icon')
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z" />
</svg>
@endsection
@section('heading', 'Access Forbidden')
@section('description', "You don't have the required permissions to access this resource. Contact your administrator if you believe this is a mistake.")
@section('actions')
<a href="{{ url('/dashboard') }}" class="btn-primary">
<svg width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="3">
<path stroke-linecap="round" stroke-linejoin="round" d="M10 19l-7-7m0 0l7-7m-7 7h18" />
</svg>
Back to Dashboard
</a>
<a href="javascript:history.back()" class="btn-secondary">Go Back</a>
@endsection
+27
View File
@@ -0,0 +1,27 @@
@extends('errors.layout')
@section('title', '404 — Page Not Found')
@section('code', '404')
@section('badge-label', 'Page Not Found')
@section('dot-color', '#3B82F6')
@section('icon-bg', '#EFF6FF')
@section('icon-color', '#3B82F6')
@section('icon')
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
@endsection
@section('heading', 'Page Not Found')
@section('description', "The page you're looking for has been moved, deleted, or simply doesn't exist in this system.")
@section('actions')
<a href="{{ url('/dashboard') }}" class="btn-primary">
<svg width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="3">
<path stroke-linecap="round" stroke-linejoin="round" d="M10 19l-7-7m0 0l7-7m-7 7h18" />
</svg>
Back to Dashboard
</a>
<a href="javascript:history.back()" class="btn-secondary">Go Back</a>
@endsection
+27
View File
@@ -0,0 +1,27 @@
@extends('errors.layout')
@section('title', '500 — Server Error')
@section('code', '500')
@section('badge-label', 'Internal Server Error')
@section('dot-color', '#F59E0B')
@section('icon-bg', '#FEF3C7')
@section('icon-color', '#F59E0B')
@section('icon')
<svg fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
</svg>
@endsection
@section('heading', 'Something Went Wrong')
@section('description', 'The server encountered an unexpected condition that prevented it from fulfilling the request. Our team has been notified and is working on a fix.')
@section('actions')
<a href="{{ url('/dashboard') }}" class="btn-primary">
<svg width="16" height="16" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="3">
<path stroke-linecap="round" stroke-linejoin="round" d="M10 19l-7-7m0 0l7-7m-7 7h18" />
</svg>
Back to Dashboard
</a>
<button onclick="window.location.reload()" class="btn-secondary">Try Again</button>
@endsection
+171
View File
@@ -0,0 +1,171 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@yield('title') biiproject kit v2</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800;900&display=swap" rel="stylesheet">
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; font-family: 'Inter', sans-serif; background: #E3EBE8; color: #3D4E4B; }
.wrapper {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
padding: 2rem;
position: relative;
overflow: hidden;
}
/* Background orbs */
.orb {
position: absolute;
border-radius: 50%;
filter: blur(80px);
opacity: 0.25;
pointer-events: none;
}
.orb-1 { width: 500px; height: 500px; background: #3D4E4B; top: -100px; right: -100px; }
.orb-2 { width: 400px; height: 400px; background: #D4A017; bottom: -80px; left: -80px; }
.card {
background: white;
border-radius: 2.5rem;
padding: 4rem;
max-width: 560px;
width: 100%;
text-align: center;
border: 1px solid rgba(0,0,0,0.05);
box-shadow: 0 25px 60px rgba(61,78,75,0.08);
position: relative;
z-index: 1;
animation: fadeUp 0.5s ease both;
}
@keyframes fadeUp {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}
.badge {
display: inline-flex;
align-items: center;
gap: 0.5rem;
background: #E3EBE8;
border-radius: 999px;
padding: 0.4rem 1rem;
font-size: 0.7rem;
font-weight: 800;
letter-spacing: 0.12em;
text-transform: uppercase;
color: #3D4E4B;
margin-bottom: 2rem;
}
.badge-dot {
width: 6px; height: 6px;
border-radius: 50%;
background: @yield('dot-color', '#D4A017');
}
.code {
font-size: 7rem;
font-weight: 900;
color: #3D4E4B;
line-height: 1;
letter-spacing: -0.04em;
margin-bottom: 0.5rem;
opacity: 0.08;
position: absolute;
left: 50%;
transform: translateX(-50%);
top: 3rem;
user-select: none;
white-space: nowrap;
}
.icon-wrap {
width: 80px; height: 80px;
border-radius: 1.5rem;
display: flex; align-items: center; justify-content: center;
margin: 0 auto 1.5rem;
background: @yield('icon-bg', '#FEF3C7');
}
.icon-wrap svg { width: 36px; height: 36px; color: @yield('icon-color', '#D4A017'); }
h1 { font-size: 1.75rem; font-weight: 800; color: #3D4E4B; letter-spacing: -0.03em; margin-bottom: 0.75rem; }
p { font-size: 0.9rem; color: #6B7280; font-weight: 500; line-height: 1.7; max-width: 360px; margin: 0 auto 2.5rem; }
.btn-group { display: flex; gap: 0.75rem; justify-content: center; flex-wrap: wrap; }
.btn-primary {
display: inline-flex; align-items: center; gap: 0.5rem;
background: #3D4E4B; color: white;
padding: 0.75rem 1.75rem;
border-radius: 0.875rem;
font-size: 0.8rem; font-weight: 700;
text-decoration: none;
border: none; cursor: pointer;
transition: background 0.2s, transform 0.1s;
}
.btn-primary:hover { background: #2D3A38; transform: translateY(-1px); }
.btn-secondary {
display: inline-flex; align-items: center; gap: 0.5rem;
background: transparent; color: #6B7280;
padding: 0.75rem 1.75rem;
border-radius: 0.875rem;
font-size: 0.8rem; font-weight: 700;
text-decoration: none;
border: 1.5px solid #E5E7EB; cursor: pointer;
transition: all 0.2s;
}
.btn-secondary:hover { border-color: #3D4E4B; color: #3D4E4B; }
.footer-brand {
margin-top: 3rem;
display: flex; align-items: center; justify-content: center; gap: 0.5rem;
}
.brand-logo {
width: 28px; height: 28px; border-radius: 0.5rem;
background: #3D4E4B; color: #D4A017;
display: flex; align-items: center; justify-content: center;
font-size: 0.65rem; font-weight: 900;
}
.brand-name { font-size: 0.75rem; font-weight: 700; color: #9CA3AF; }
.brand-version { font-size: 0.65rem; font-weight: 800; color: #D4A017; }
</style>
</head>
<body>
<div class="wrapper">
<div class="orb orb-1"></div>
<div class="orb orb-2"></div>
<div class="card">
<span class="code">@yield('code')</span>
<div class="badge">
<span class="badge-dot"></span>
@yield('badge-label', 'System Error')
</div>
<div class="icon-wrap">
@yield('icon')
</div>
<h1>@yield('heading')</h1>
<p>@yield('description')</p>
<div class="btn-group">
@yield('actions')
</div>
<div class="footer-brand">
<div class="brand-logo">BK</div>
<span class="brand-name">biiproject kit</span>
<span class="brand-version">v2</span>
</div>
</div>
</div>
</body>
</html>
+920
View File
@@ -0,0 +1,920 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Laravel API Documentation</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans&display=swap" rel="stylesheet">
<link rel="stylesheet" href="{{ asset("/vendor/scribe/css/theme-default.style.css") }}" media="screen">
<link rel="stylesheet" href="{{ asset("/vendor/scribe/css/theme-default.print.css") }}" media="print">
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
<link rel="stylesheet"
href="https://unpkg.com/@highlightjs/cdn-assets@11.6.0/styles/obsidian.min.css">
<script src="https://unpkg.com/@highlightjs/cdn-assets@11.6.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jets/0.14.1/jets.min.js"></script>
<style id="language-style">
/* starts out as display none and is replaced with js later */
body .content .bash-example code { display: none; }
body .content .javascript-example code { display: none; }
</style>
<script>
var tryItOutBaseUrl = "http://localhost";
var useCsrf = Boolean();
var csrfUrl = "/sanctum/csrf-cookie";
</script>
<script src="{{ asset("/vendor/scribe/js/tryitout-5.9.0.js") }}"></script>
<script src="{{ asset("/vendor/scribe/js/theme-default-5.9.0.js") }}"></script>
</head>
<body data-languages="[&quot;bash&quot;,&quot;javascript&quot;]">
<a href="#" id="nav-button">
<span>
MENU
<img src="{{ asset("/vendor/scribe/images/navbar.png") }}" alt="navbar-image"/>
</span>
</a>
<div class="tocify-wrapper">
<div class="lang-selector">
<button type="button" class="lang-button" data-language-name="bash">bash</button>
<button type="button" class="lang-button" data-language-name="javascript">javascript</button>
</div>
<div class="search">
<input type="text" class="search" id="input-search" placeholder="Search">
</div>
<div id="toc">
<ul id="tocify-header-introduction" class="tocify-header">
<li class="tocify-item level-1" data-unique="introduction">
<a href="#introduction">Introduction</a>
</li>
</ul>
<ul id="tocify-header-authenticating-requests" class="tocify-header">
<li class="tocify-item level-1" data-unique="authenticating-requests">
<a href="#authenticating-requests">Authenticating requests</a>
</li>
</ul>
<ul id="tocify-header-authentication" class="tocify-header">
<li class="tocify-item level-1" data-unique="authentication">
<a href="#authentication">Authentication</a>
</li>
<ul id="tocify-subheader-authentication" class="tocify-subheader">
<li class="tocify-item level-2" data-unique="authentication-POSTapi-v1-auth-login">
<a href="#authentication-POSTapi-v1-auth-login">Login</a>
</li>
<li class="tocify-item level-2" data-unique="authentication-POSTapi-v1-auth-logout">
<a href="#authentication-POSTapi-v1-auth-logout">Logout</a>
</li>
</ul>
</ul>
<ul id="tocify-header-user-management" class="tocify-header">
<li class="tocify-item level-1" data-unique="user-management">
<a href="#user-management">User Management</a>
</li>
<ul id="tocify-subheader-user-management" class="tocify-subheader">
<li class="tocify-item level-2" data-unique="user-management-POSTapi-v1-users">
<a href="#user-management-POSTapi-v1-users">Create User</a>
</li>
<li class="tocify-item level-2" data-unique="user-management-PUTapi-v1-users--id-">
<a href="#user-management-PUTapi-v1-users--id-">Update User</a>
</li>
<li class="tocify-item level-2" data-unique="user-management-DELETEapi-v1-users--id-">
<a href="#user-management-DELETEapi-v1-users--id-">Delete User</a>
</li>
</ul>
</ul>
</div>
<ul class="toc-footer" id="toc-footer">
<li style="padding-bottom: 5px;"><a href="{{ route("scribe.postman") }}">View Postman collection</a></li>
<li style="padding-bottom: 5px;"><a href="{{ route("scribe.openapi") }}">View OpenAPI spec</a></li>
<li><a href="http://github.com/knuckleswtf/scribe">Documentation powered by Scribe </a></li>
</ul>
<ul class="toc-footer" id="last-updated">
<li>Last updated: May 7, 2026</li>
</ul>
</div>
<div class="page-wrapper">
<div class="dark-box"></div>
<div class="content">
<h1 id="introduction">Introduction</h1>
<aside>
<strong>Base URL</strong>: <code>http://localhost</code>
</aside>
<pre><code>This documentation aims to provide all the information you need to work with our API.
&lt;aside&gt;As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile).
You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile).&lt;/aside&gt;</code></pre>
<h1 id="authenticating-requests">Authenticating requests</h1>
<p>This API is not authenticated.</p>
<h1 id="authentication">Authentication</h1>
<p>APIs for managing authentication</p>
<h2 id="authentication-POSTapi-v1-auth-login">Login</h2>
<p>
</p>
<p>Authenticate a user and return a Sanctum token.</p>
<span id="example-requests-POSTapi-v1-auth-login">
<blockquote>Example request:</blockquote>
<div class="bash-example">
<pre><code class="language-bash">curl --request POST \
"http://localhost/api/v1/auth/login" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"email\": \"gbailey@example.net\",
\"password\": \"architecto\"
}"
</code></pre></div>
<div class="javascript-example">
<pre><code class="language-javascript">const url = new URL(
"http://localhost/api/v1/auth/login"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"email": "gbailey@example.net",
"password": "architecto"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response =&gt; response.json());</code></pre></div>
</span>
<span id="example-responses-POSTapi-v1-auth-login">
</span>
<span id="execution-results-POSTapi-v1-auth-login" hidden>
<blockquote>Received response<span
id="execution-response-status-POSTapi-v1-auth-login"></span>:
</blockquote>
<pre class="json"><code id="execution-response-content-POSTapi-v1-auth-login"
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
</span>
<span id="execution-error-POSTapi-v1-auth-login" hidden>
<blockquote>Request failed with error:</blockquote>
<pre><code id="execution-error-message-POSTapi-v1-auth-login">
Tip: Check that you&#039;re properly connected to the network.
If you&#039;re a maintainer of ths API, verify that your API is running and you&#039;ve enabled CORS.
You can check the Dev Tools console for debugging information.</code></pre>
</span>
<form id="form-POSTapi-v1-auth-login" data-method="POST"
data-path="api/v1/auth/login"
data-authed="0"
data-hasfiles="0"
data-isarraybody="0"
autocomplete="off"
onsubmit="event.preventDefault(); executeTryOut('POSTapi-v1-auth-login', this);">
<h3>
Request&nbsp;&nbsp;&nbsp;
<button type="button"
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-tryout-POSTapi-v1-auth-login"
onclick="tryItOut('POSTapi-v1-auth-login');">Try it out ⚡
</button>
<button type="button"
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-canceltryout-POSTapi-v1-auth-login"
onclick="cancelTryOut('POSTapi-v1-auth-login');" hidden>Cancel 🛑
</button>&nbsp;&nbsp;
<button type="submit"
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-executetryout-POSTapi-v1-auth-login"
data-initial-text="Send Request 💥"
data-loading-text="⏱ Sending..."
hidden>Send Request 💥
</button>
</h3>
<p>
<small class="badge badge-black">POST</small>
<b><code>api/v1/auth/login</code></b>
</p>
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Content-Type</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Content-Type" data-endpoint="POSTapi-v1-auth-login"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Accept</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Accept" data-endpoint="POSTapi-v1-auth-login"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
<h4 class="fancy-heading-panel"><b>Body Parameters</b></h4>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>email</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="email" data-endpoint="POSTapi-v1-auth-login"
value="gbailey@example.net"
data-component="body">
<br>
<p>Must be a valid email address. Example: <code>gbailey@example.net</code></p>
</div>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>password</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="password" data-endpoint="POSTapi-v1-auth-login"
value="architecto"
data-component="body">
<br>
<p>Example: <code>architecto</code></p>
</div>
</form>
<h2 id="authentication-POSTapi-v1-auth-logout">Logout</h2>
<p>
</p>
<p>Revoke the current user's token.</p>
<span id="example-requests-POSTapi-v1-auth-logout">
<blockquote>Example request:</blockquote>
<div class="bash-example">
<pre><code class="language-bash">curl --request POST \
"http://localhost/api/v1/auth/logout" \
--header "Content-Type: application/json" \
--header "Accept: application/json"</code></pre></div>
<div class="javascript-example">
<pre><code class="language-javascript">const url = new URL(
"http://localhost/api/v1/auth/logout"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "POST",
headers,
}).then(response =&gt; response.json());</code></pre></div>
</span>
<span id="example-responses-POSTapi-v1-auth-logout">
</span>
<span id="execution-results-POSTapi-v1-auth-logout" hidden>
<blockquote>Received response<span
id="execution-response-status-POSTapi-v1-auth-logout"></span>:
</blockquote>
<pre class="json"><code id="execution-response-content-POSTapi-v1-auth-logout"
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
</span>
<span id="execution-error-POSTapi-v1-auth-logout" hidden>
<blockquote>Request failed with error:</blockquote>
<pre><code id="execution-error-message-POSTapi-v1-auth-logout">
Tip: Check that you&#039;re properly connected to the network.
If you&#039;re a maintainer of ths API, verify that your API is running and you&#039;ve enabled CORS.
You can check the Dev Tools console for debugging information.</code></pre>
</span>
<form id="form-POSTapi-v1-auth-logout" data-method="POST"
data-path="api/v1/auth/logout"
data-authed="0"
data-hasfiles="0"
data-isarraybody="0"
autocomplete="off"
onsubmit="event.preventDefault(); executeTryOut('POSTapi-v1-auth-logout', this);">
<h3>
Request&nbsp;&nbsp;&nbsp;
<button type="button"
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-tryout-POSTapi-v1-auth-logout"
onclick="tryItOut('POSTapi-v1-auth-logout');">Try it out
</button>
<button type="button"
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-canceltryout-POSTapi-v1-auth-logout"
onclick="cancelTryOut('POSTapi-v1-auth-logout');" hidden>Cancel 🛑
</button>&nbsp;&nbsp;
<button type="submit"
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-executetryout-POSTapi-v1-auth-logout"
data-initial-text="Send Request 💥"
data-loading-text="⏱ Sending..."
hidden>Send Request 💥
</button>
</h3>
<p>
<small class="badge badge-black">POST</small>
<b><code>api/v1/auth/logout</code></b>
</p>
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Content-Type</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Content-Type" data-endpoint="POSTapi-v1-auth-logout"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Accept</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Accept" data-endpoint="POSTapi-v1-auth-logout"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
</form>
<h1 id="user-management">User Management</h1>
<p>APIs for managing users</p>
<h2 id="user-management-POSTapi-v1-users">Create User</h2>
<p>
</p>
<p>Create a new user with roles.</p>
<span id="example-requests-POSTapi-v1-users">
<blockquote>Example request:</blockquote>
<div class="bash-example">
<pre><code class="language-bash">curl --request POST \
"http://localhost/api/v1/users" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"firstName\": \"b\",
\"lastName\": \"n\",
\"email\": \"ashly64@example.com\",
\"password\": \"pBNvYg\",
\"status\": \"inactive\"
}"
</code></pre></div>
<div class="javascript-example">
<pre><code class="language-javascript">const url = new URL(
"http://localhost/api/v1/users"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"firstName": "b",
"lastName": "n",
"email": "ashly64@example.com",
"password": "pBNvYg",
"status": "inactive"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response =&gt; response.json());</code></pre></div>
</span>
<span id="example-responses-POSTapi-v1-users">
</span>
<span id="execution-results-POSTapi-v1-users" hidden>
<blockquote>Received response<span
id="execution-response-status-POSTapi-v1-users"></span>:
</blockquote>
<pre class="json"><code id="execution-response-content-POSTapi-v1-users"
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
</span>
<span id="execution-error-POSTapi-v1-users" hidden>
<blockquote>Request failed with error:</blockquote>
<pre><code id="execution-error-message-POSTapi-v1-users">
Tip: Check that you&#039;re properly connected to the network.
If you&#039;re a maintainer of ths API, verify that your API is running and you&#039;ve enabled CORS.
You can check the Dev Tools console for debugging information.</code></pre>
</span>
<form id="form-POSTapi-v1-users" data-method="POST"
data-path="api/v1/users"
data-authed="0"
data-hasfiles="0"
data-isarraybody="0"
autocomplete="off"
onsubmit="event.preventDefault(); executeTryOut('POSTapi-v1-users', this);">
<h3>
Request&nbsp;&nbsp;&nbsp;
<button type="button"
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-tryout-POSTapi-v1-users"
onclick="tryItOut('POSTapi-v1-users');">Try it out
</button>
<button type="button"
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-canceltryout-POSTapi-v1-users"
onclick="cancelTryOut('POSTapi-v1-users');" hidden>Cancel 🛑
</button>&nbsp;&nbsp;
<button type="submit"
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-executetryout-POSTapi-v1-users"
data-initial-text="Send Request 💥"
data-loading-text="⏱ Sending..."
hidden>Send Request 💥
</button>
</h3>
<p>
<small class="badge badge-black">POST</small>
<b><code>api/v1/users</code></b>
</p>
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Content-Type</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Content-Type" data-endpoint="POSTapi-v1-users"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Accept</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Accept" data-endpoint="POSTapi-v1-users"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
<h4 class="fancy-heading-panel"><b>Body Parameters</b></h4>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>firstName</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="firstName" data-endpoint="POSTapi-v1-users"
value="b"
data-component="body">
<br>
<p>Must not be greater than 100 characters. Example: <code>b</code></p>
</div>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>lastName</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="lastName" data-endpoint="POSTapi-v1-users"
value="n"
data-component="body">
<br>
<p>Must not be greater than 100 characters. Example: <code>n</code></p>
</div>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>email</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="email" data-endpoint="POSTapi-v1-users"
value="ashly64@example.com"
data-component="body">
<br>
<p>Must be a valid email address. Example: <code>ashly64@example.com</code></p>
</div>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>password</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="password" data-endpoint="POSTapi-v1-users"
value="pBNvYg"
data-component="body">
<br>
<p>Must be at least 8 characters. Example: <code>pBNvYg</code></p>
</div>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>status</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
<i>optional</i> &nbsp;
&nbsp;
<input type="text" style="display: none"
name="status" data-endpoint="POSTapi-v1-users"
value="inactive"
data-component="body">
<br>
<p>Example: <code>inactive</code></p>
Must be one of:
<ul style="list-style-type: square;"><li><code>active</code></li> <li><code>inactive</code></li> <li><code>suspended</code></li></ul>
</div>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>roles</code></b>&nbsp;&nbsp;
<small>object</small>&nbsp;
<i>optional</i> &nbsp;
&nbsp;
<input type="text" style="display: none"
name="roles" data-endpoint="POSTapi-v1-users"
value=""
data-component="body">
<br>
</div>
</form>
<h2 id="user-management-PUTapi-v1-users--id-">Update User</h2>
<p>
</p>
<p>Update a user's details.</p>
<span id="example-requests-PUTapi-v1-users--id-">
<blockquote>Example request:</blockquote>
<div class="bash-example">
<pre><code class="language-bash">curl --request PUT \
"http://localhost/api/v1/users/16" \
--header "Content-Type: application/json" \
--header "Accept: application/json" \
--data "{
\"firstName\": \"b\",
\"lastName\": \"n\",
\"status\": \"inactive\"
}"
</code></pre></div>
<div class="javascript-example">
<pre><code class="language-javascript">const url = new URL(
"http://localhost/api/v1/users/16"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"firstName": "b",
"lastName": "n",
"status": "inactive"
};
fetch(url, {
method: "PUT",
headers,
body: JSON.stringify(body),
}).then(response =&gt; response.json());</code></pre></div>
</span>
<span id="example-responses-PUTapi-v1-users--id-">
</span>
<span id="execution-results-PUTapi-v1-users--id-" hidden>
<blockquote>Received response<span
id="execution-response-status-PUTapi-v1-users--id-"></span>:
</blockquote>
<pre class="json"><code id="execution-response-content-PUTapi-v1-users--id-"
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
</span>
<span id="execution-error-PUTapi-v1-users--id-" hidden>
<blockquote>Request failed with error:</blockquote>
<pre><code id="execution-error-message-PUTapi-v1-users--id-">
Tip: Check that you&#039;re properly connected to the network.
If you&#039;re a maintainer of ths API, verify that your API is running and you&#039;ve enabled CORS.
You can check the Dev Tools console for debugging information.</code></pre>
</span>
<form id="form-PUTapi-v1-users--id-" data-method="PUT"
data-path="api/v1/users/{id}"
data-authed="0"
data-hasfiles="0"
data-isarraybody="0"
autocomplete="off"
onsubmit="event.preventDefault(); executeTryOut('PUTapi-v1-users--id-', this);">
<h3>
Request&nbsp;&nbsp;&nbsp;
<button type="button"
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-tryout-PUTapi-v1-users--id-"
onclick="tryItOut('PUTapi-v1-users--id-');">Try it out ⚡
</button>
<button type="button"
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-canceltryout-PUTapi-v1-users--id-"
onclick="cancelTryOut('PUTapi-v1-users--id-');" hidden>Cancel 🛑
</button>&nbsp;&nbsp;
<button type="submit"
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-executetryout-PUTapi-v1-users--id-"
data-initial-text="Send Request 💥"
data-loading-text="⏱ Sending..."
hidden>Send Request 💥
</button>
</h3>
<p>
<small class="badge badge-darkblue">PUT</small>
<b><code>api/v1/users/{id}</code></b>
</p>
<p>
<small class="badge badge-purple">PATCH</small>
<b><code>api/v1/users/{id}</code></b>
</p>
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Content-Type</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Content-Type" data-endpoint="PUTapi-v1-users--id-"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Accept</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Accept" data-endpoint="PUTapi-v1-users--id-"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
<h4 class="fancy-heading-panel"><b>URL Parameters</b></h4>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>id</code></b>&nbsp;&nbsp;
<small>integer</small>&nbsp;
&nbsp;
&nbsp;
<input type="number" style="display: none"
step="any" name="id" data-endpoint="PUTapi-v1-users--id-"
value="16"
data-component="url">
<br>
<p>The ID of the user. Example: <code>16</code></p>
</div>
<h4 class="fancy-heading-panel"><b>Body Parameters</b></h4>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>firstName</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
<i>optional</i> &nbsp;
&nbsp;
<input type="text" style="display: none"
name="firstName" data-endpoint="PUTapi-v1-users--id-"
value="b"
data-component="body">
<br>
<p>Must not be greater than 100 characters. Example: <code>b</code></p>
</div>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>lastName</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
<i>optional</i> &nbsp;
&nbsp;
<input type="text" style="display: none"
name="lastName" data-endpoint="PUTapi-v1-users--id-"
value="n"
data-component="body">
<br>
<p>Must not be greater than 100 characters. Example: <code>n</code></p>
</div>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>email</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
<i>optional</i> &nbsp;
&nbsp;
<input type="text" style="display: none"
name="email" data-endpoint="PUTapi-v1-users--id-"
value=""
data-component="body">
<br>
</div>
<div style=" padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>status</code></b>&nbsp;&nbsp;
<small>string</small>&nbsp;
<i>optional</i> &nbsp;
&nbsp;
<input type="text" style="display: none"
name="status" data-endpoint="PUTapi-v1-users--id-"
value="inactive"
data-component="body">
<br>
<p>Example: <code>inactive</code></p>
Must be one of:
<ul style="list-style-type: square;"><li><code>active</code></li> <li><code>inactive</code></li> <li><code>suspended</code></li></ul>
</div>
</form>
<h2 id="user-management-DELETEapi-v1-users--id-">Delete User</h2>
<p>
</p>
<p>Soft delete a user.</p>
<span id="example-requests-DELETEapi-v1-users--id-">
<blockquote>Example request:</blockquote>
<div class="bash-example">
<pre><code class="language-bash">curl --request DELETE \
"http://localhost/api/v1/users/16" \
--header "Content-Type: application/json" \
--header "Accept: application/json"</code></pre></div>
<div class="javascript-example">
<pre><code class="language-javascript">const url = new URL(
"http://localhost/api/v1/users/16"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
fetch(url, {
method: "DELETE",
headers,
}).then(response =&gt; response.json());</code></pre></div>
</span>
<span id="example-responses-DELETEapi-v1-users--id-">
</span>
<span id="execution-results-DELETEapi-v1-users--id-" hidden>
<blockquote>Received response<span
id="execution-response-status-DELETEapi-v1-users--id-"></span>:
</blockquote>
<pre class="json"><code id="execution-response-content-DELETEapi-v1-users--id-"
data-empty-response-text="<Empty response>" style="max-height: 400px;"></code></pre>
</span>
<span id="execution-error-DELETEapi-v1-users--id-" hidden>
<blockquote>Request failed with error:</blockquote>
<pre><code id="execution-error-message-DELETEapi-v1-users--id-">
Tip: Check that you&#039;re properly connected to the network.
If you&#039;re a maintainer of ths API, verify that your API is running and you&#039;ve enabled CORS.
You can check the Dev Tools console for debugging information.</code></pre>
</span>
<form id="form-DELETEapi-v1-users--id-" data-method="DELETE"
data-path="api/v1/users/{id}"
data-authed="0"
data-hasfiles="0"
data-isarraybody="0"
autocomplete="off"
onsubmit="event.preventDefault(); executeTryOut('DELETEapi-v1-users--id-', this);">
<h3>
Request&nbsp;&nbsp;&nbsp;
<button type="button"
style="background-color: #8fbcd4; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-tryout-DELETEapi-v1-users--id-"
onclick="tryItOut('DELETEapi-v1-users--id-');">Try it out ⚡
</button>
<button type="button"
style="background-color: #c97a7e; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-canceltryout-DELETEapi-v1-users--id-"
onclick="cancelTryOut('DELETEapi-v1-users--id-');" hidden>Cancel 🛑
</button>&nbsp;&nbsp;
<button type="submit"
style="background-color: #6ac174; padding: 5px 10px; border-radius: 5px; border-width: thin;"
id="btn-executetryout-DELETEapi-v1-users--id-"
data-initial-text="Send Request 💥"
data-loading-text="⏱ Sending..."
hidden>Send Request 💥
</button>
</h3>
<p>
<small class="badge badge-red">DELETE</small>
<b><code>api/v1/users/{id}</code></b>
</p>
<h4 class="fancy-heading-panel"><b>Headers</b></h4>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Content-Type</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Content-Type" data-endpoint="DELETEapi-v1-users--id-"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>Accept</code></b>&nbsp;&nbsp;
&nbsp;
&nbsp;
&nbsp;
<input type="text" style="display: none"
name="Accept" data-endpoint="DELETEapi-v1-users--id-"
value="application/json"
data-component="header">
<br>
<p>Example: <code>application/json</code></p>
</div>
<h4 class="fancy-heading-panel"><b>URL Parameters</b></h4>
<div style="padding-left: 28px; clear: unset;">
<b style="line-height: 2;"><code>id</code></b>&nbsp;&nbsp;
<small>integer</small>&nbsp;
&nbsp;
&nbsp;
<input type="number" style="display: none"
step="any" name="id" data-endpoint="DELETEapi-v1-users--id-"
value="16"
data-component="url">
<br>
<p>The ID of the user. Example: <code>16</code></p>
</div>
</form>
</div>
<div class="dark-box">
<div class="lang-selector">
<button type="button" class="lang-button" data-language-name="bash">bash</button>
<button type="button" class="lang-button" data-language-name="javascript">javascript</button>
</div>
</div>
</div>
</body>
</html>
+24
View File
@@ -0,0 +1,24 @@
@props([
'url',
'color' => 'primary',
'align' => 'center',
])
<table class="action" align="{{ $align }}" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td align="{{ $align }}">
<table width="100%" border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td align="{{ $align }}">
<table border="0" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td>
<a href="{{ $url }}" class="button button-{{ $color }}" target="_blank" rel="noopener">{!! $slot !!}</a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
+18
View File
@@ -0,0 +1,18 @@
@php
$settings = \Illuminate\Support\Facades\Cache::get('system_settings', []);
$appName = $settings['app_name'] ?? config('app.name');
@endphp
<tr>
<td>
<table class="footer" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td class="content-cell" align="center">
<p>
© {{ date('Y') }} {{ $appName }}. All rights reserved. <br>
Precision Identity Architecture & Governance.
</p>
</td>
</tr>
</table>
</td>
</tr>
+20
View File
@@ -0,0 +1,20 @@
@props(['url'])
@php
$settings = \Illuminate\Support\Facades\Cache::get('system_settings', []);
$appName = $settings['app_name'] ?? config('app.name');
$appLogo = $settings['app_logo'] ?? null;
$appLogoText = $settings['app_logo_text'] ?? substr($appName, 0, 1);
@endphp
<tr>
<td class="header">
<a href="{{ $url }}" style="display: inline-block; text-align: center;">
@if ($appLogo)
<img src="{{ $appLogo }}" class="logo" alt="{{ $appName }} Logo">
<br>
@endif
<span style="font-family: 'Plus Jakarta Sans', sans-serif; font-weight: 900; font-size: 18px; color: #3D4E4B; letter-spacing: 0.15em; text-transform: uppercase;">
{{ $appName }}
</span>
</a>
</td>
</tr>
+58
View File
@@ -0,0 +1,58 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<title>{{ config('app.name') }}</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="color-scheme" content="light">
<meta name="supported-color-schemes" content="light">
<style>
@media only screen and (max-width: 600px) {
.inner-body {
width: 100% !important;
}
.footer {
width: 100% !important;
}
}
@media only screen and (max-width: 500px) {
.button {
width: 100% !important;
}
}
</style>
{!! $head ?? '' !!}
</head>
<body>
<table class="wrapper" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td align="center">
<table class="content" width="100%" cellpadding="0" cellspacing="0" role="presentation">
{!! $header ?? '' !!}
<!-- Email Body -->
<tr>
<td class="body" width="100%" cellpadding="0" cellspacing="0" style="border: hidden !important;">
<table class="inner-body" align="center" width="570" cellpadding="0" cellspacing="0" role="presentation">
<!-- Body content -->
<tr>
<td class="content-cell">
{!! Illuminate\Mail\Markdown::parse($slot) !!}
{!! $subcopy ?? '' !!}
</td>
</tr>
</table>
</td>
</tr>
{!! $footer ?? '' !!}
</table>
</td>
</tr>
</table>
</body>
</html>
+27
View File
@@ -0,0 +1,27 @@
<x-mail::layout>
{{-- Header --}}
<x-slot:header>
<x-mail::header :url="config('app.url')">
{{ config('app.name') }}
</x-mail::header>
</x-slot:header>
{{-- Body --}}
{!! $slot !!}
{{-- Subcopy --}}
@isset($subcopy)
<x-slot:subcopy>
<x-mail::subcopy>
{!! $subcopy !!}
</x-mail::subcopy>
</x-slot:subcopy>
@endisset
{{-- Footer --}}
<x-slot:footer>
<x-mail::footer>
© {{ date('Y') }} {{ config('app.name') }}. {{ __('All rights reserved.') }}
</x-mail::footer>
</x-slot:footer>
</x-mail::layout>
+14
View File
@@ -0,0 +1,14 @@
<table class="panel" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td class="panel-content">
<table width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td class="panel-item">
{{ Illuminate\Mail\Markdown::parse($slot) }}
</td>
</tr>
</table>
</td>
</tr>
</table>
+7
View File
@@ -0,0 +1,7 @@
<table class="subcopy" width="100%" cellpadding="0" cellspacing="0" role="presentation">
<tr>
<td>
{{ Illuminate\Mail\Markdown::parse($slot) }}
</td>
</tr>
</table>
+3
View File
@@ -0,0 +1,3 @@
<div class="table">
{{ Illuminate\Mail\Markdown::parse($slot) }}
</div>
+161
View File
@@ -0,0 +1,161 @@
/* resources/views/vendor/mail/html/themes/default.css */
body,
body *:not(html):not(style):not(br):not(tr):not(code) {
box-sizing: border-box;
font-family: 'Plus Jakarta Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
position: relative;
}
body {
-webkit-text-size-adjust: none;
background-color: #E3EBE8;
color: #3D4E4B;
height: 100%;
line-height: 1.6;
margin: 0;
padding: 0;
width: 100% !important;
}
p, ul, ol, blockquote {
line-height: 1.6;
text-align: start;
}
a {
color: #D4A017;
text-decoration: none;
font-weight: bold;
}
h1 {
color: #3D4E4B;
font-size: 22px;
font-weight: 800;
margin-top: 0;
text-align: start;
text-transform: uppercase;
letter-spacing: -0.02em;
}
h2 {
font-size: 18px;
font-weight: 800;
margin-top: 0;
text-align: start;
color: #3D4E4B;
}
p {
font-size: 15px;
line-height: 1.6em;
margin-top: 0;
text-align: left;
color: #4A5568;
}
.wrapper {
background-color: #E3EBE8;
margin: 0;
padding: 0;
width: 100%;
}
.header {
padding: 40px 0;
text-align: center;
}
.header a {
color: #3D4E4B;
font-size: 20px;
font-weight: 900;
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.2em;
}
.logo {
height: 64px;
margin-bottom: 15px;
max-height: 64px;
border-radius: 16px;
}
.body {
background-color: #E3EBE8;
border-bottom: 0;
border-top: 0;
margin: 0;
padding: 0;
width: 100%;
}
.inner-body {
background-color: #ffffff;
border-color: #E3EBE8;
border-radius: 32px;
border-width: 1px;
box-shadow: 0 10px 40px rgba(61, 78, 75, 0.05);
margin: 0 auto;
padding: 0;
width: 570px;
}
.content-cell {
padding: 48px;
}
.footer {
margin: 0 auto;
padding: 32px 0;
text-align: center;
width: 570px;
}
.footer p {
color: #3D4E4B;
opacity: 0.4;
font-size: 11px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.1em;
text-align: center;
}
.button {
border-radius: 16px;
color: #fff;
display: inline-block;
overflow: hidden;
text-decoration: none;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 0.1em;
font-size: 12px;
}
.button-primary {
background-color: #3D4E4B;
border-bottom: 12px solid #3D4E4B;
border-left: 32px solid #3D4E4B;
border-right: 32px solid #3D4E4B;
border-top: 12px solid #3D4E4B;
}
.panel {
border-left: #D4A017 solid 4px;
margin: 24px 0;
background-color: #F7FAFA;
border-radius: 0 12px 12px 0;
}
.panel-content {
padding: 16px;
}
.subcopy {
border-top: 1px solid #E3EBE8;
margin-top: 32px;
padding-top: 24px;
}
+1
View File
@@ -0,0 +1 @@
{{ $slot }}: {{ $url }}
+1
View File
@@ -0,0 +1 @@
{{ $slot }}
+1
View File
@@ -0,0 +1 @@
{{ $slot }}: {{ $url }}
+9
View File
@@ -0,0 +1,9 @@
{!! strip_tags($header ?? '') !!}
{!! strip_tags($slot) !!}
@isset($subcopy)
{!! strip_tags($subcopy) !!}
@endisset
{!! strip_tags($footer ?? '') !!}
+27
View File
@@ -0,0 +1,27 @@
<x-mail::layout>
{{-- Header --}}
<x-slot:header>
<x-mail::header :url="config('app.url')">
{{ config('app.name') }}
</x-mail::header>
</x-slot:header>
{{-- Body --}}
{{ $slot }}
{{-- Subcopy --}}
@isset($subcopy)
<x-slot:subcopy>
<x-mail::subcopy>
{{ $subcopy }}
</x-mail::subcopy>
</x-slot:subcopy>
@endisset
{{-- Footer --}}
<x-slot:footer>
<x-mail::footer>
© {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.')
</x-mail::footer>
</x-slot:footer>
</x-mail::layout>
+1
View File
@@ -0,0 +1 @@
{{ $slot }}
+1
View File
@@ -0,0 +1 @@
{{ $slot }}
+1
View File
@@ -0,0 +1 @@
{{ $slot }}