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
+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;
}