Compare commits

..

24 Commits

Author SHA1 Message Date
sindhu
90d632a515 fix cdn all dan google font 2024-05-02 16:37:32 +07:00
sindhu
a90d4843cc Merge branch 'fixrelative' base href 2024-05-02 15:50:00 +07:00
sindhu
202f4d22f4 fix relative base href 2024-05-02 15:49:09 +07:00
Hanan Askarim
defc0d41c2 fix sub title jumbotron 2024-05-02 14:01:28 +07:00
Hanan Askarim
01d0c0ec07 Merge branch 'hanan/responsive-tablet-and-hp' 2024-05-02 13:36:56 +07:00
Hanan Askarim
7cc0ce51ba add responsive tablet dan hp 2024-05-02 13:35:38 +07:00
Hanan Askarim
62d7735ee1 add under development card employee page 2024-05-02 09:36:37 +07:00
Hanan Askarim
e193769da1 Merge branch 'hanan/employee-medical-analityc' 2024-05-02 09:29:28 +07:00
Hanan Askarim
f6eb31c242 add templ medical analityc 2024-05-02 08:46:05 +07:00
Sas Andy
b25c1c3669 Merge branch 'andy/bar-chart' 2024-05-01 16:55:49 +07:00
sindhu
638e9724c8 Merge branch 'sindhu_dev_peserta' pie chart mcu peserta 2024-05-01 11:00:27 +07:00
sindhu
6260d3bc25 step 1 : komponen mcu peserta 2024-05-01 10:28:57 +07:00
Sas Andy
d601cc0801 kelainan global chart 2024-04-30 17:16:21 +07:00
Hanan Askarim
0219959594 Merge branch 'hanan/login' 2024-04-30 17:15:35 +07:00
Hanan Askarim
c267c26260 employee medical analityc 2024-04-30 17:07:59 +07:00
sindhu
3c9c63dd2a Merge branch 'sindhu_pie_chart' 2024-04-30 14:01:48 +07:00
sindhu
012f1db6e4 bar chart type 2024-04-30 14:00:59 +07:00
sindhu
ae59d63940 generate pie chart templ 2024-04-30 13:51:19 +07:00
Hanan Askarim
3281472f67 create templ login 2024-04-30 13:10:53 +07:00
Sas Andy
976753fc8e under development component 2024-04-29 15:56:07 +07:00
Sas Andy
22e7cadb2d Merge branch 'andy/coba-landingpage' 2024-04-29 15:29:12 +07:00
Sas Andy
dc2c1491fd revisi landing page scroll card 2024-04-29 15:26:58 +07:00
Sas Andy
b3883c9a8d revisi templ landing page 2024-04-29 14:38:20 +07:00
Sas Andy
d8e8f91fbd landing page templ & slick library 2024-04-29 10:10:24 +07:00
84 changed files with 11619 additions and 1319 deletions

838
assets/andy/underdev.html Normal file
View File

@@ -0,0 +1,838 @@
<!DOCTYPE html>
<!--
Template Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme
Author: KeenThemes
Website: http://www.keenthemes.com/
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
Purchase: https://1.envato.market/EA4JP
Renew Support: https://1.envato.market/EA4JP
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head>
<base href="../" />
<meta charset="utf-8" />
<title>Westerindo</title>
<meta name="description" content="Updates and statistics" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<!--begin::Fonts-->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700"
/>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Public Sans:300,400,500,600,700"
/>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700"
/>
<!--end::Fonts-->
<!--begin::Page Vendors Styles(used by this page)-->
<link
href="assets/plugins/custom/fullcalendar/fullcalendar.bundle.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Page Vendors Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link
href="assets/plugins/global/plugins.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/plugins/custom/prismjs/prismjs.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link
href="assets/css/themes/layout/header/base/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/header/menu/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/brand/dark.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/aside/dark.css"
rel="stylesheet"
type="text/css"
/>
<!-- <link href="asset-corporate-portal/media/landingpage/" rel="stylesheet" type="text/css" /> -->
<!--end::Layout Themes-->
<link rel="shortcut icon" href="assets/media/logos/favicon.ico" />
<link
href=" https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"
rel="stylesheet"
type="text/css"
/>
<script src="//code.iconify.design/1/1.0.6/iconify.min.js"></script>
<!-- CUSTOM BUNDLE CSS -->
<link
href="asset-corporate-portal/css/sas.bundle.css"
rel="stylesheet"
type="text/css"
/>
<style>
body {
background-color: white;
/* padding-right: 100px;
padding-left: 100px; */
}
.navbar-lp {
padding-top: 40px;
padding-bottom: 40px;
}
.jumbotron-lp {
border-radius: 32px;
/* background: #3B4F9F; */
}
.title {
/* color: #FFF; */
font-family: Poppins;
font-size: 15px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 700;
}
.title-jumbotron {
/* color: #FFF; */
font-family: Poppins;
font-size: 52px;
/* font-size: 3vw; */
font-style: normal;
font-weight: 600;
}
.sub-title-jumbotron {
/* color: #FFF; */
font-family: Poppins;
font-size: 16px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 400;
}
.btn-login {
border-radius: 40px;
/* background-color: #3B4F9F; */
box-shadow: 0px 8px 16px 0px rgba(59, 79, 159, 0.24);
}
.title-get-started {
/* color: #0C518C; */
font-family: Poppins;
font-size: 20px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 700;
}
.custom-button-get-started {
border-radius: 40px;
/* background-color: #FFF; */
box-shadow: 0px 8px 16px 0px rgba(12, 81, 140, 0.24);
padding: 20px;
margin-top: 44px;
justify-content: center;
align-items: center;
width: 242px;
}
.title-section {
/* color: #000; */
font-family: Poppins;
font-size: 40px;
/* font-size: 3vw; */
font-style: normal;
font-weight: 600;
line-height: 80px;
margin-bottom: 16px;
}
.sub-title-section {
/* color: #212B36; */
font-family: Poppins;
font-size: 20px;
/* font-size: 1.5vw; */
font-style: normal;
font-weight: 400;
line-height: 36px;
}
.custom-card-lp {
border-radius: 24px;
border: 1px solid #d9d9d9;
margin-top: 40px;
}
.title-fs-20 {
/* color: #0E1E28; */
font-family: Poppins;
font-size: 20px;
/* font-size: 1.5vw; */
font-style: normal;
/* font-weight: 500; */
line-height: 36px;
}
.sub-title-fs-12 {
/* color: #0E1E28; */
font-family: Poppins;
font-size: 12px;
/* font-size: 0.9vw; */
font-style: normal;
font-weight: 400;
line-height: 20px;
margin-bottom: 16px;
}
.icon-container {
display: inline-block;
border-radius: 8px;
margin-bottom: 16px;
width: 40px;
height: 40px;
text-align: center;
line-height: 40px;
}
.link-learn-more {
/* color: #3B4F9F; */
font-family: Poppins;
font-size: 16px;
font-style: normal;
font-weight: 500;
line-height: normal;
text-decoration: none;
}
.wrapper-custom {
/* background: #1B1D1F; */
padding-left: 10vw;
padding-right: 10vw;
}
.media-left-icon {
width: 40px;
height: 40px;
}
.footer-title {
/* color: #FFF; */
font-family: Poppins;
font-size: 14px;
font-style: normal;
font-weight: 500;
line-height: 20px;
}
.footer-sub-title {
/* color: #C3C4C5; */
font-family: Poppins;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 20px;
}
.logo-footer {
margin-bottom: 24px;
margin-top: -20px;
}
.garis {
/* background: #C3C4C5; */
height: 0.2px;
}
.img-header {
object-fit: contain;
}
.underdev {
font-family: "Public Sans";
font-size: 64px;
font-style: normal;
font-weight: 700;
line-height: normal;
}
.underdevsub {
font-family: "Public Sans";
font-size: 26px;
font-style: normal;
font-weight: 400;
line-height: normal;
}
</style>
</head>
<!--end::Head-->
<!--begin::Body-->
<body
id="kt_body"
class="header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading"
>
<div class="wrapper-custom">
<!-- Navbar Start -->
<nav
class="navbar navbar-expand-sm navbar-expand-lg navbar-lp justify-content-between"
>
<a class="navbar-brand" href="#">
<img
src="../assets/asset-corporate-portal/media/landingpage/logo.png"
width="126"
height="40"
class="d-inline-block align-top"
alt="Your Brand"
/>
</a>
<button type="button" class="btn btn-lg btn-primary btn-pill">
<span class="title">Login</span>
</button>
</nav>
<!-- Navbar End -->
<div class="d-flex justify-content-center text-center flex-column mt-20">
<div class="text-primary underdev">Site Under Development</div>
<div class="text-disabled underdevsub mb-10">
"Stay Tuned, We're Building Excitement!"
</div>
<div>
<img
src="../assets/asset-corporate-portal/media/under_development/under_development.png"
class="d-inline-block align-top"
alt="Your Brand"
/>
</div>
</div>
<div>
<!-- jumbotron START -->
<!-- <div class="jumbotron jumbotron-lp d-none d-lg-block"> -->
<div class="jumbotron bg-primary">
<div class="container">
<div class="row">
<div class="col-md-8 d-flex flex-column">
<div class="mb-3">
<h1 class="title-jumbotron text-white">
Invest in Your Well-being with Our Comprehensive Medical
Check-Up
</h1>
<p class="sub-title-jumbotron text-white">
Elevate your health journey with our thorough medical
assessments, empowering you to take proactive steps towards
a healthier, happier life.
</p>
<button type="button" class="btn btn-lg btn-pill bg-white">
<span class="title-get-started">Get Started</span>
</button>
</div>
<div class="mt-auto"></div>
</div>
<div class="col-md-4 d-flex justify-content-md-end">
<div
style="
flex: 2;
margin: 10px;
display: flex;
align-items: center;
"
>
<img
src="../assets/asset-corporate-portal/media/landingpage/jumbotron_left.png"
class="img-fluid img-header"
alt="Your Brand"
style="width: 100%; height: 100%;"
/>
</div>
</div>
</div>
</div>
</div>
<!-- jumbotron END -->
<!-- Our Medical Service START -->
<div class="container">
<div class="row">
<div class="col-md-12 text-left">
<h2 class="title-section text-black">Our Medical Services</h2>
<p class="sub-title-section text-black">
Discover excellence in healthcare at Our Medical Services. From
diagnosis to treatment, our dedicated team provides personalized
care for your well-being.
</p>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="card custom-card-lp">
<div class="card-body">
<div class="icon-container bg-primary-transparent">
<span
class="iconify text-primary w-20 h-20"
data-icon="uil:clinic-medical"
></span>
</div>
<h5 class="card-title title-fs-20">In House Clinic</h5>
<p class="card-text sub-title-fs-12">
Maintaining health in the workplace by carrying out
promotional, preventive, curative and rehabilitative
programs.
</p>
<a href="#" class="link-learn-more text-primary"
>Learn More
<span
class="iconify text-primary w-20 h-20"
data-icon="eva:arrow-forward-outline"
></span>
</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card custom-card-lp">
<div class="card-body">
<div class="icon-container bg-primary-transparent">
<span
class="iconify text-primary w-20 h-20"
data-icon="healthicons:clinical-a-outline"
></span>
</div>
<h5 class="card-title title-fs-20">Laboratorium Test</h5>
<p class="card-text sub-title-fs-12">
Maintaining health in the workplace by carrying out
promotional, preventive, curative and rehabilitative
programs.
</p>
<a href="#" class="link-learn-more text-primary"
>Learn More
<span
class="iconify text-primary w-20 h-20"
data-icon="eva:arrow-forward-outline"
></span>
</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card custom-card-lp">
<div class="card-body">
<div class="icon-container bg-primary-transparent">
<span
class="iconify text-primary w-20 h-20"
data-icon="jam:medical"
></span>
</div>
<h5 class="card-title title-fs-20">Medical Check Up</h5>
<p class="card-text sub-title-fs-12">
Maintaining health in the workplace by carrying out
promotional, preventive, curative and rehabilitative
programs.
</p>
<a href="#" class="link-learn-more text-primary"
>Learn More
<span
class="iconify text-primary w-20 h-20"
data-icon="eva:arrow-forward-outline"
></span>
</a>
</div>
</div>
</div>
</div>
</div>
<!-- Our Medical Service END -->
<!-- Why Westerindo START belum fix di ukuran < 1400 -->
<div class="container mt-5">
<div class="row">
<div class="col-md-12 col-lg-12 text-left">
<h2 class="title-section text-black">Why Westerindo</h2>
<p class="sub-title-section text-black">
With a dedicated team of professionals were committed to
providing medical attention tailored to your needs, ensuring a
journey to optimal health and vitality.
</p>
</div>
</div>
<div class="row mt-5">
<div class="col-md-6">
<img
src="../assets/asset-corporate-portal/media/landingpage/why_westerindo_right.png"
alt="Your Brand"
class="align-top w-100 h-100 pt-4 pb-4"
/>
</div>
<div class="col-md-6 d-flex flex-column">
<!-- 1 -->
<div class="row flex-grow-1">
<div class="media">
<div class="media-left">
<span
class="iconify text-primary media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">ISO Certificate</h4>
<p class="sub-title-fs-12 text-black ml-4">
Westerindo Clinical Laboratory has obtained ISO 15189:2009
(ISO 15189:2007) Accreditation from the National
Accreditation Committee (KAN) and the Health Laboratory
Accreditation Commission (KALK).
</p>
</div>
</div>
</div>
<!-- 2 -->
<div class="row flex-grow-1">
<div class="media">
<div class="media-left">
<span
class="iconify text-primary media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">
Modern Technology
</h4>
<p class="sub-title-fs-12 text-black ml-4">
Laboratory Information System (LIS) is an information
system in which laboratory equipment and diagnostic
support have been integrated automatically so that
examination results can be immediately filled in in
employee data. This eliminates the possibility of human
error.
</p>
</div>
</div>
</div>
<!-- 3 -->
<div class="row flex-grow-1">
<div class="media">
<div class="media-left">
<span
class="iconify media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">
Good Quality Facilities
</h4>
<p class="sub-title-fs-12 text-black ml-4">
The laboratory and medical support equipment used at the
Westerindo Clinical Laboratory is international scale for
precise, fast and accurate results. Lab and medical
equipment certificates are periodically renewed according
to standards.
</p>
</div>
</div>
</div>
<!-- 4 -->
<div class="row flex-grow-1">
<div class="media">
<div class="media-left">
<span
class="iconify media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">
Professional Service
</h4>
<p class="sub-title-fs-12 text-black ml-4">
Westerindo Clinical Laboratory is committed to providing
professional and excellent service. Therefore, all staff
and doctors at the Westerindo Clinical Laboratory have
competency certification according to their field.
</p>
</div>
</div>
</div>
<!-- 5 -->
<div class="row">
<div class="media">
<div class="media-left">
<span
class="iconify media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">Experienced</h4>
<p class="sub-title-fs-12 text-black ml-4">
Westerindo Clinical Laboratory is very experienced in
carrying out Medical Check Ups both onsite and insite, in
all corners of Indonesia. Serving various kinds of
companies, from oil and gas companies, automotive,
manufacturing, offices, and others.
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Why Westerindo END -->
<!-- Promotion START -->
<div class="container mt-4">
<div class="row">
<div class="col-md-12 text-left">
<h2 class="title-section text-black">Promotions</h2>
<p class="sub-title-section text-black">
Seize This Opportunity to Enhance Your Health
</p>
</div>
</div>
<div class="row mt-4 mb-2">
<div class="col-md-4 mt-2">
<img
src="../assets/asset-corporate-portal/media/landingpage/promotion_1.png"
class="img-fluid"
alt="Your Brand"
/>
</div>
<div class="col-md-4 mt-2">
<img
src="../assets/asset-corporate-portal/media/landingpage/promotion_2.png"
class="img-fluid"
alt="Your Brand"
/>
</div>
<div class="col-md-4 mt-2">
<img
src="../assets/asset-corporate-portal/media/landingpage/promotion_3.png"
class="img-fluid"
alt="Your Brand"
/>
</div>
</div>
</div>
<!-- Promotion END -->
</div>
<!-- footer START -->
<footer class="wrapper-custom bg-black pb-25 pt-25">
<div class="row mb-5">
<div class="col-md-12 col-lg">
<img
src="asset-corporate-portal/media/landingpage/logo.png"
class="logo-footer"
width="126"
height="40"
alt="Your Brand"
/>
<div class="text-white d-flex flex-row mb-3">
<!-- style="display: flex; flex-direction: row; color: white;align-items: start; margin-bottom: 24px;" -->
<div class="mr-3 mt-1">
<i
class="fas fa-map-marker-alt marker footer-icon text-warning"
></i>
</div>
<div class="flex-grow-1">
<p class="footer-sub-title text-grey">
Jl. Cipaku I No.5, RT.2/RW.4, Petogogan, Kec. Kby. Baru, Kota
Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12170
</p>
</div>
</div>
<div class="d-flex flex-row">
<div class="mr-3 mt-1">
<i class="fas fa-phone footer-icon text-warning"></i>
</div>
<div class="flex-grow-1">
<p class="footer-sub-title text-grey">021-7392345</p>
<p class="footer-sub-title text-grey">021-2702525</p>
<p class="footer-sub-title text-grey">021-7255080</p>
</div>
</div>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white mb-3">Dashboard</h4>
<p class="footer-sub-title text-grey">
Employee Medical Health Analytic Clinic Admission
</p>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white">Benefit</h4>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white">Finance & Claims</h4>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white">Membership</h4>
</div>
</div>
<div class="garis bg-grey"></div>
<div class="row mt-4">
<div class="col-md-6">
<p class="footer-sub-title text-grey">
© Copyright 2024. Organized PT SADHANA ABIYASA SAMPOERNA (Privacy
Policy)
</p>
</div>
<div class="col-md-6 text-right">
<p class="footer-icons">
<a href="#" class="mr-3"><i class="fab fa-whatsapp"></i></a>
<a href="#" class="mr-3"><i class="fab fa-facebook"></i></a>
<a href="#"><i class="fab fa-instagram"></i></a>
</p>
</div>
</div>
</footer>
<!-- footer END -->
</div>
<script>
var HOST_URL =
"https://preview.keenthemes.com/metronic/theme/html/tools/preview";
</script>
<!--begin::Global Config(global config for global JS scripts)-->
<script>
var KTAppSettings = {
breakpoints: {
sm: 576,
md: 768,
lg: 992,
xl: 1200,
xxl: 1400,
},
colors: {
theme: {
base: {
white: "#ffffff",
primary: "#3699FF",
secondary: "#E5EAEE",
success: "#1BC5BD",
info: "#8950FC",
warning: "#FFA800",
danger: "#F64E60",
light: "#E4E6EF",
dark: "#181C32",
},
light: {
white: "#ffffff",
primary: "#E1F0FF",
secondary: "#EBEDF3",
success: "#C9F7F5",
info: "#EEE5FF",
warning: "#FFF4DE",
danger: "#FFE2E5",
light: "#F3F6F9",
dark: "#D6D6E0",
},
inverse: {
white: "#ffffff",
primary: "#ffffff",
secondary: "#3F4254",
success: "#ffffff",
info: "#ffffff",
warning: "#ffffff",
danger: "#ffffff",
light: "#464E5F",
dark: "#ffffff",
},
},
gray: {
"gray-100": "#F3F6F9",
"gray-200": "#EBEDF3",
"gray-300": "#E4E6EF",
"gray-400": "#D1D3E0",
"gray-500": "#B5B5C3",
"gray-600": "#7E8299",
"gray-700": "#5E6278",
"gray-800": "#3F4254",
"gray-900": "#181C32",
},
},
"font-family": "Poppins",
};
</script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<!--begin::Page Vendors(used by this page)-->
<script src="assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<!--end::Page Vendors-->
<!--begin::Page Scripts(used by this page)-->
<script src="assets/js/pages/widgets.js"></script>
<!--end::Page Scripts-->
<!-- echartjs.min.js -->
<script src="assets/js/echarts-js/echart.min.js"></script>
<!-- helper htmx -->
<script src="assets/js/helper-htmx/helper.js"></script>
<!-- iconify -->
<script
src="https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js"
integrity="sha512-lYMiwcB608+RcqJmP93CMe7b4i9G9QK1RbixsNu4PzMRJMsqr/bUrkXUuFzCNsRUo3IXNUr5hz98lINURv5CNA=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
<!-- htmx -->
<script
src="https://unpkg.com/htmx.org@1.9.11/dist/htmx.js"
integrity="sha384-l9bYT9SL4CAW0Hl7pAOpfRc18mys1b0wK4U8UtGnWOxPVbVMgrOdB+jyz/WY8Jue"
crossorigin="anonymous"
></script>
<!-- SCRIPT -->
<script type="text/javascript" async></script>
<!-- SCRIPT -->
</body>
<!--end::Body-->
</html>

View File

@@ -219,6 +219,9 @@ a.text-white:focus {
.bg-gray {
background-color: var(--gray) !important;
}
.bg-field {
background-color: var(--fieldbg) !important;
}
/* ### BACKGROUND TRANSPARENT */
.bg-black-transparent {
background-color: var(--dark) !important;
@@ -4000,19 +4003,6 @@ a.text-white:focus {
box-shadow: 0px 9px 16px 0px rgba(var(--dangerrgb), var(--opacity03)) !important;
}
/* ### NAV*/
.nav-tabs .nav-link.active,
.nav-tabs .nav-item.show .nav-link {
color: var(--primary) !important;
background-color: #ffffff;
border-color: #e4e6ef #e4e6ef #ffffff;
}
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
color: #ffffff;
background-color: var(--primary) !important;
}
/* ### BUTTON HOVER TEXT */
/* ## PRIMARY */
.btn.btn-hover-text-primary:not(:disabled):not(.disabled):active:not(.btn-text),
.btn.btn-hover-text-primary:not(:disabled):not(.disabled).active,
@@ -4057,7 +4047,63 @@ a.text-white:focus {
.show .btn.btn-hover-text-danger.btn-dropdown {
color: var(--danger) !important;
}
/* ### NAV & BREADCRUMB*/
.breadcrumb {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
padding: 0px 0px !important;
padding-left: 0 !important;
margin-bottom: 1rem;
list-style: none;
background-color: var(--white) !important;
border-radius: 0.42rem;
}
.breadcrumb-item a {
color: var(--text-black) !important;
font-family: Poppins !important;
font-size: 13px !important;
font-style: normal !important;
font-weight: 500 !important;
line-height: 21px !important;
}
.breadcrumb-item.active {
color: var(--text-disabled) !important;
font-family: Poppins !important;
font-size: 13px !important;
font-style: normal !important;
font-weight: 500 !important;
line-height: 21px !important;
}
.nav-tabs {
border-bottom: 0px solid #000000 !important;
}
.nav-link {
color: var(--text-grey) !important;
font-family: Public Sans !important;
font-size: 14px !important;
font-style: normal !important;
font-weight: 600 !important;
line-height: 22px !important;
text-align: center !important;
}
.nav-link.active {
color: var(--text-black) !important; /* Warna teks untuk tab yang aktif */
border-bottom: 2px solid var(--primary) !important; /* Garis bawah untuk tab yang aktif */
font-family: Public Sans !important;
font-size: 14px !important;
font-style: normal !important;
font-weight: 600 !important;
line-height: 22px !important;
text-align: center !important;
}
/* ### BUTTON HOVER TEXT */
/* ### */
/* ## PRIMARY */
/* ## SECONDARY */

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -0,0 +1,80 @@
/* latin-ext */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLDz8Z1JlFc-K.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLDz8Z1xlFQ.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiEyp8kv8JHgFVrJJnecmNE.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiEyp8kv8JHgFVrJJfecg.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLGT9Z1JlFc-K.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLGT9Z1xlFQ.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 600;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLEj6Z1JlFc-K.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 600;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLEj6Z1xlFQ.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLCz7Z1JlFc-K.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/poppins/v21/pxiByp8kv8JHgFVrLCz7Z1xlFQ.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

View File

@@ -0,0 +1,120 @@
/* vietnamese */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNJfJ7Cww.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNIfJ7Cww.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNGfJ4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNJfJ7Cww.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNIfJ7Cww.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNGfJ4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNJfJ7Cww.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNIfJ7Cww.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNGfJ4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 600;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNJfJ7Cww.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 600;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNIfJ7Cww.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 600;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNGfJ4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* vietnamese */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNJfJ7Cww.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNIfJ7Cww.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Public Sans';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/publicsans/v15/ijwRs572Xtc6ZYQws9YVwnNGfJ4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

View File

@@ -0,0 +1,224 @@
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCRc4EsA.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fABc4EsA.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCBc4EsA.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBxc4EsA.woff2) format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fCxc4EsA.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fChc4EsA.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 300;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmSU5fBBc4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu72xKOzY.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu5mxKOzY.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7mxKOzY.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4WxKOzY.woff2) format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7WxKOzY.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu7GxKOzY.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 400;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOmCnqEu92Fr1Mu4mxK.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmEU9fCRc4EsA.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmEU9fABc4EsA.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmEU9fCBc4EsA.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmEU9fBxc4EsA.woff2) format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmEU9fCxc4EsA.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmEU9fChc4EsA.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 500;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmEU9fBBc4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCRc4EsA.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfABc4EsA.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* greek-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCBc4EsA.woff2) format('woff2');
unicode-range: U+1F00-1FFF;
}
/* greek */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBxc4EsA.woff2) format('woff2');
unicode-range: U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF;
}
/* vietnamese */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfCxc4EsA.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfChc4EsA.woff2) format('woff2');
unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Roboto';
font-style: normal;
font-weight: 700;
src: url(https://fonts.gstatic.com/s/roboto/v30/KFOlCnqEu92Fr1MmWUlfBBc4.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

View File

@@ -0,0 +1,2 @@
@charset 'UTF-8';.slick-loading .slick-list{background:#fff url(ajax-loader.gif) center center no-repeat}@font-face{font-family:slick;font-weight:400;font-style:normal;src:url(fonts/slick.eot);src:url(fonts/slick.eot?#iefix) format('embedded-opentype'),url(fonts/slick.woff) format('woff'),url(fonts/slick.ttf) format('truetype'),url(fonts/slick.svg#slick) format('svg')}.slick-next,.slick-prev{font-size:0;line-height:0;position:absolute;top:50%;display:block;width:20px;height:20px;padding:0;-webkit-transform:translate(0,-50%);-ms-transform:translate(0,-50%);transform:translate(0,-50%);cursor:pointer;color:transparent;border:none;outline:0;background:0 0}.slick-next:focus,.slick-next:hover,.slick-prev:focus,.slick-prev:hover{color:transparent;outline:0;background:0 0}.slick-next:focus:before,.slick-next:hover:before,.slick-prev:focus:before,.slick-prev:hover:before{opacity:1}.slick-next.slick-disabled:before,.slick-prev.slick-disabled:before{opacity:.25}.slick-next:before,.slick-prev:before{font-family:slick;font-size:20px;line-height:1;opacity:.75;color:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-prev{left:-25px}[dir=rtl] .slick-prev{right:-25px;left:auto}.slick-prev:before{content:'←'}[dir=rtl] .slick-prev:before{content:'→'}.slick-next{right:-25px}[dir=rtl] .slick-next{right:auto;left:-25px}.slick-next:before{content:'→'}[dir=rtl] .slick-next:before{content:'←'}.slick-dotted.slick-slider{margin-bottom:30px}.slick-dots{position:absolute;bottom:-25px;display:block;width:100%;padding:0;margin:0;list-style:none;text-align:center}.slick-dots li{position:relative;display:inline-block;width:20px;height:20px;margin:0 5px;padding:0;cursor:pointer}.slick-dots li button{font-size:0;line-height:0;display:block;width:20px;height:20px;padding:5px;cursor:pointer;color:transparent;border:0;outline:0;background:0 0}.slick-dots li button:focus,.slick-dots li button:hover{outline:0}.slick-dots li button:focus:before,.slick-dots li button:hover:before{opacity:1}.slick-dots li button:before{font-family:slick;font-size:6px;line-height:20px;position:absolute;top:0;left:0;width:20px;height:20px;content:'•';text-align:center;opacity:.25;color:#000;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.slick-dots li.slick-active button:before{opacity:.75;color:#000}
/*# sourceMappingURL=slick-theme.min.css.map */

View File

@@ -0,0 +1,119 @@
/* Slider */
.slick-slider
{
position: relative;
display: block;
box-sizing: border-box;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-touch-callout: none;
-khtml-user-select: none;
-ms-touch-action: pan-y;
touch-action: pan-y;
-webkit-tap-highlight-color: transparent;
}
.slick-list
{
position: relative;
display: block;
overflow: hidden;
margin: 0;
padding: 0;
}
.slick-list:focus
{
outline: none;
}
.slick-list.dragging
{
cursor: pointer;
cursor: hand;
}
.slick-slider .slick-track,
.slick-slider .slick-list
{
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.slick-track
{
position: relative;
top: 0;
left: 0;
display: block;
margin-left: auto;
margin-right: auto;
}
.slick-track:before,
.slick-track:after
{
display: table;
content: '';
}
.slick-track:after
{
clear: both;
}
.slick-loading .slick-track
{
visibility: hidden;
}
.slick-slide
{
display: none;
float: left;
height: 100%;
min-height: 1px;
}
[dir='rtl'] .slick-slide
{
float: right;
}
.slick-slide img
{
display: block;
}
.slick-slide.slick-loading img
{
display: none;
}
.slick-slide.dragging img
{
pointer-events: none;
}
.slick-initialized .slick-slide
{
display: block;
}
.slick-loading .slick-slide
{
visibility: hidden;
}
.slick-vertical .slick-slide
{
display: block;
height: auto;
border: 1px solid transparent;
}
.slick-arrow.slick-hidden {
display: none;
}

1
assets/assets/js/htmx/htmx.min.js vendored Normal file

File diff suppressed because one or more lines are too long

13
assets/assets/js/iconify/iconify.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
assets/assets/js/slick/slick.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,431 @@
<!DOCTYPE html>
<!--
Template Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme
Author: KeenThemes
Website: http://www.keenthemes.com/
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
Purchase: https://1.envato.market/EA4JP
Renew Support: https://1.envato.market/EA4JP
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head>
<base href="../" />
<meta charset="utf-8" />
<title>Westerindo</title>
<meta name="description" content="Updates and statistics" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<!--begin::Fonts-->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700"
/>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Public Sans:300,400,500,600,700"
/>
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,600,700"
/>
<!--end::Fonts-->
<!--begin::Page Vendors Styles(used by this page)-->
<link
href="assets/plugins/custom/fullcalendar/fullcalendar.bundle.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Page Vendors Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link
href="assets/plugins/global/plugins.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/plugins/custom/prismjs/prismjs.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link
href="assets/css/themes/layout/header/base/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/header/menu/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/brand/dark.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/aside/dark.css"
rel="stylesheet"
type="text/css"
/>
<!-- <link href="asset-corporate-portal/media/landingpage/" rel="stylesheet" type="text/css" /> -->
<!--end::Layout Themes-->
<link rel="shortcut icon" href="assets/media/logos/favicon.ico" />
<link
href=" https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css"
rel="stylesheet"
type="text/css"
/>
<script src="//code.iconify.design/1/1.0.6/iconify.min.js"></script>
<!-- CUSTOM BUNDLE CSS -->
<link
href="asset-corporate-portal/css/sas.bundle.css"
rel="stylesheet"
type="text/css"
/>
<style>
body {
background-color: white;
/* padding-right: 100px;
padding-left: 100px; */
}
.navbar-lp {
padding-top: 40px;
padding-bottom: 40px;
}
.title {
/* color: #FFF; */
font-family: Poppins;
font-size: 15px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 700;
}
.custom-card-lp {
border-radius: 24px;
border: 1px solid #d9d9d9;
margin-top: 40px;
}
.wrapper-custom {
/* background: #1B1D1F; */
padding-left: 10vw;
padding-right: 10vw;
}
.media-left-icon {
width: 40px;
height: 40px;
}
.items-content {
padding: 24px;
margin-bottom: 24px;
}
.content-page {
padding-top: 24px;
padding-left: 24px;
padding-right: 24px;
padding-bottom: 24px;
}
.item-foto {
width: 32px;
height: 32px;
}
.heading {
padding-top: 40px;
}
.card:hover {
background-color: rgba(197, 200, 211, 0.5);
}
</style>
</head>
<!--end::Head-->
<!--begin::Body-->
<body
id="kt_body"
class="header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading"
>
<div class="wrapper-custom">
<!-- Navbar Start -->
<nav
class="navbar navbar-expand-sm navbar-expand-lg navbar-lp justify-content-between"
>
<a class="navbar-brand" href="#">
<img
src="../assets/asset-corporate-portal/media/landingpage/logo.png"
width="126"
height="40"
class="d-inline-block align-top"
alt="Your Brand"
/>
</a>
<img
src="../assets/asset-corporate-portal/media/logo/foto.png"
alt="..."
class="item-foto rounded-circle"
/>
</nav>
<!-- Navbar End -->
<!--begin::Page Heading-->
<div class="heading d-flex justify-content-between">
<div class="align-items-center flex-wrap">
<!--begin::Page Title-->
<h5 class="text-dark font-weight-bold my-1 mr-5">
PT. Sadhana Abiyasa Sampoerna
</h5>
<!--end::Page Title-->
<!--begin::Breadcrumb-->
<ul
class="breadcrumb breadcrumb-transparent font-weight-bold p-0 my-2 font-size-sm"
>
<li class="breadcrumb-item">
<a href="" class="text-muted">Dashboard</a>
</li>
<li class="breadcrumb-item">
<a href="" class="text-muted">Employee Health Medical Analytic</a>
</li>
</ul>
<!--end::Breadcrumb-->
</div>
<div class="d-flex align-items-center">
<!--begin::Actions-->
<a href="#" class="btn btn-primary font-weight-bolder btn-lg">
<i class="fas fa-filter"></i> Filter
</a>
<!--end::Actions-->
</div>
</div>
<!--end::Page Heading-->
<!-- content -->
<div class="align-items-center pt-15 flex-column">
<div class="bg-field rounded">
<div class="content-page">
<!-- card -->
<a href="">
<div class="items-content card shadow">
<div class="row d-flex align-items-center">
<div class="col-7">
<h3 class="text-black">MCU Calon Karyawan</h3>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde"
>Tanggal Pelaksanaan</span
>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde"
>01/04/2024 - 06/04/2024</span
>
</div>
</div>
</div>
</a>
<!-- end card -->
<!-- card -->
<a href="">
<div class="items-content card shadow">
<div class="row d-flex align-items-center">
<div class="col-7">
<h3 class="text-black">MCU Karyawan</h3>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde"
>Tanggal Pelaksanaan</span
>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde"
>01/04/2024 - 06/04/2024</span
>
</div>
</div>
</div>
</a>
<!-- end card -->
<!-- card -->
<a href="">
<div class="items-content card shadow">
<div class="row d-flex align-items-center">
<div class="col-7">
<h3 class="text-black">MCU Eselon 1</h3>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde"
>Tanggal Pelaksanaan</span
>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde"
>01/04/2024 - 06/04/2024</span
>
</div>
</div>
</div>
</a>
<!-- end card -->
<!-- card -->
<a href="">
<div class="items-content card shadow">
<div class="row d-flex align-items-center">
<div class="col-7">
<h3 class="text-black">MCU Eselon 2</h3>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde"
>Tanggal Pelaksanaan</span
>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde"
>01/04/2024 - 06/04/2024</span
>
</div>
</div>
</div>
</a>
<!-- end card -->
</div>
</div>
</div>
<!-- end content -->
</div>
<script>
var HOST_URL =
"https://preview.keenthemes.com/metronic/theme/html/tools/preview";
</script>
<!--begin::Global Config(global config for global JS scripts)-->
<script>
var KTAppSettings = {
breakpoints: {
sm: 576,
md: 768,
lg: 992,
xl: 1200,
xxl: 1400,
},
colors: {
theme: {
base: {
white: "#ffffff",
primary: "#3699FF",
secondary: "#E5EAEE",
success: "#1BC5BD",
info: "#8950FC",
warning: "#FFA800",
danger: "#F64E60",
light: "#E4E6EF",
dark: "#181C32",
},
light: {
white: "#ffffff",
primary: "#E1F0FF",
secondary: "#EBEDF3",
success: "#C9F7F5",
info: "#EEE5FF",
warning: "#FFF4DE",
danger: "#FFE2E5",
light: "#F3F6F9",
dark: "#D6D6E0",
},
inverse: {
white: "#ffffff",
primary: "#ffffff",
secondary: "#3F4254",
success: "#ffffff",
info: "#ffffff",
warning: "#ffffff",
danger: "#ffffff",
light: "#464E5F",
dark: "#ffffff",
},
},
gray: {
"gray-100": "#F3F6F9",
"gray-200": "#EBEDF3",
"gray-300": "#E4E6EF",
"gray-400": "#D1D3E0",
"gray-500": "#B5B5C3",
"gray-600": "#7E8299",
"gray-700": "#5E6278",
"gray-800": "#3F4254",
"gray-900": "#181C32",
},
},
"font-family": "Poppins",
};
</script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<!--begin::Page Vendors(used by this page)-->
<script src="assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<!--end::Page Vendors-->
<!--begin::Page Scripts(used by this page)-->
<script src="assets/js/pages/widgets.js"></script>
<!--end::Page Scripts-->
<!-- echartjs.min.js -->
<script src="assets/js/echarts-js/echart.min.js"></script>
<!-- helper htmx -->
<script src="assets/js/helper-htmx/helper.js"></script>
<!-- iconify -->
<script
src="https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js"
integrity="sha512-lYMiwcB608+RcqJmP93CMe7b4i9G9QK1RbixsNu4PzMRJMsqr/bUrkXUuFzCNsRUo3IXNUr5hz98lINURv5CNA=="
crossorigin="anonymous"
referrerpolicy="no-referrer"
></script>
<!-- htmx -->
<script
src="https://unpkg.com/htmx.org@1.9.11/dist/htmx.js"
integrity="sha384-l9bYT9SL4CAW0Hl7pAOpfRc18mys1b0wK4U8UtGnWOxPVbVMgrOdB+jyz/WY8Jue"
crossorigin="anonymous"
></script>
<!-- SCRIPT -->
<script type="text/javascript" async></script>
<!-- SCRIPT -->
</body>
<!--end::Body-->
</html>

2
assets/library/slick-1.8.1/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
.sass-cache
node_modules

View File

@@ -0,0 +1,35 @@
## Submitting issues
### Test case required
**All bug reports and problem issues require a jsFiddle**.
[Please fork this JSFiddle as a baseline](http://jsfiddle.net/simeydotme/fmo50w7n/).
+ A test case clearly demonstrates the bug or issue.
+ It contains the bare minimum HTML, CSS, and JavaScript required to demonstrate the bug.
+ Assets are not minified (we cannot debug .min.js files).
+ A link to your production site is **not** a reduced test case.
Providing a test case is the best way to get your issue addressed. Without a test case; your issue may be closed.
You must provide a clear and simple way to reproduce the issue with the provided fiddle.
## Support
Although Slick is designed to be super easy to use, there's always things that can go wrong, especially when interacting with other plugins and complicated websites. If you are **having problems getting Slick to work**, or can't figure something out, **this repository**'s issues section **is not the place to ask about it**.
I have set up a subreddit for Slick discussion at [reddit.com/r/slickcarousel](http://www.reddit.com/r/slickcarousel/).
And a gitter chatroom here: [gitter.im/kenwheeler/slick](https://gitter.im/kenwheeler/slick).
And finally you can ask the world for help, and find out if anyone else has your problem at [stackoverflow](http://stackoverflow.com/search?q=slick+carousel).
Please use these forums as an area to discuss Slick and any issues you may have.
## Feature Requests
If you would like to request or propose a feature, please do so in the the Slick subreddit or gitter chat:
[reddit.com/r/slickcarousel](http://www.reddit.com/r/slickcarousel/) / [gitter.im/kenwheeler/slick](https://gitter.im/kenwheeler/slick).
## Pull requests
**Contributions are welcome**! That said, please *be prepared to edit* your pull request at request, and provide a jsFiddle of your fork working interoperably with every "mode" that Slick supports, and with varying numbers of slides, slidesToShow & slidesToScroll. Failure to do so will result in your pull request being closed.
*Please note that while Slick is open source, this is still my baby, and by submitting a pull request you are authorizing me to edit or modify it in any way shape or form. You will be listed in Github as a contributor, but I have and will continue to steer the direction of this project.*

View File

@@ -0,0 +1,50 @@
> short description of the bug / issue, provide more detail below.
====================================================================
###### `[ paste your jsfiddle link here ]`
use this jsfiddle to reproduce your bug:
http://jsfiddle.net/simeydotme/fmo50w7n/
we will likely close your issue without it.
====================================================================
#### Steps to reproduce the problem
1. ...
2. ...
====================================================================
#### What is the expected behaviour?
...
====================================================================
#### What is observed behaviour?
...
====================================================================
#### More Details
- Which browsers/versions does it happen on?
- Which jQuery/Slick version are you using?
- Did this work before?

View File

@@ -0,0 +1,20 @@
The MIT License (MIT)
Copyright (c) 2013-2016
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -0,0 +1,8 @@
build: components slick.js slick.css
@component build --dev
components: component.json
@component install --dev
.PHONY: clean

View File

@@ -0,0 +1,292 @@
slick
-------
[1]: <https://github.com/kenwheeler/slick>
_the last carousel you'll ever need_
#### Demo
[http://kenwheeler.github.io/slick](http://kenwheeler.github.io/slick/)
#### CDN
To start working with Slick right away, there's a couple of CDN choices availabile
to serve the files as close, and fast as possible to your users:
- https://cdnjs.com/libraries/slick-carousel
- https://www.jsdelivr.com/projects/jquery.slick
##### Example using jsDelivr
Just add a link to the css file in your `<head>`:
```html
<!-- Add the slick-theme.css if you want default styling -->
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/gh/kenwheeler/slick@1.8.0/slick/slick.css"/>
<!-- Add the slick-theme.css if you want default styling -->
<link rel="stylesheet" type="text/css" href="//cdn.jsdelivr.net/gh/kenwheeler/slick@1.8.0/slick/slick-theme.css"/>
```
Then, before your closing ```<body>``` tag add:
```html
<script type="text/javascript" src="//cdn.jsdelivr.net/gh/kenwheeler/slick@1.8.0/slick/slick.min.js"></script>
```
#### Package Managers
```sh
# Bower
bower install --save slick-carousel
# NPM
npm install slick-carousel
```
#### Contributing
PLEASE review CONTRIBUTING.markdown prior to requesting a feature, filing a pull request or filing an issue.
### Data Attribute Settings
In slick 1.5 you can now add settings using the data-slick attribute. You still need to call $(element).slick() to initialize slick on the element.
Example:
```html
<div data-slick='{"slidesToShow": 4, "slidesToScroll": 4}'>
<div><h3>1</h3></div>
<div><h3>2</h3></div>
<div><h3>3</h3></div>
<div><h3>4</h3></div>
<div><h3>5</h3></div>
<div><h3>6</h3></div>
</div>
```
### Settings
Option | Type | Default | Description
------ | ---- | ------- | -----------
accessibility | boolean | true | Enables tabbing and arrow key navigation. Unless `autoplay: true`, sets browser focus to current slide (or first of current slide set, if multiple `slidesToShow`) after slide change. For full a11y compliance enable focusOnChange in addition to this.
adaptiveHeight | boolean | false | Adapts slider height to the current slide
appendArrows | string | $(element) | Change where the navigation arrows are attached (Selector, htmlString, Array, Element, jQuery object)
appendDots | string | $(element) | Change where the navigation dots are attached (Selector, htmlString, Array, Element, jQuery object)
arrows | boolean | true | Enable Next/Prev arrows
asNavFor | string | $(element) | Enables syncing of multiple sliders
autoplay | boolean | false | Enables auto play of slides
autoplaySpeed | int | 3000 | Auto play change interval
centerMode | boolean | false | Enables centered view with partial prev/next slides. Use with odd numbered slidesToShow counts.
centerPadding | string | '50px' | Side padding when in center mode. (px or %)
cssEase | string | 'ease' | CSS3 easing
customPaging | function | n/a | Custom paging templates. See source for use example.
dots | boolean | false | Current slide indicator dots
dotsClass | string | 'slick-dots' | Class for slide indicator dots container
draggable | boolean | true | Enables desktop dragging
easing | string | 'linear' | animate() fallback easing
edgeFriction | integer | 0.15 | Resistance when swiping edges of non-infinite carousels
fade | boolean | false | Enables fade
focusOnSelect | boolean | false | Enable focus on selected element (click)
focusOnChange | boolean | false | Puts focus on slide after change
infinite | boolean | true | Infinite looping
initialSlide | integer | 0 | Slide to start on
lazyLoad | string | 'ondemand' | Accepts 'ondemand' or 'progressive' for lazy load technique. 'ondemand' will load the image as soon as you slide to it, 'progressive' loads one image after the other when the page loads.
mobileFirst | boolean | false | Responsive settings use mobile first calculation
nextArrow | string (html \| jQuery selector) \| object (DOM node \| jQuery object) | `<button type="button" class="slick-next">Next</button>` | Allows you to select a node or customize the HTML for the "Next" arrow.
pauseOnDotsHover | boolean | false | Pauses autoplay when a dot is hovered
pauseOnFocus | boolean | true | Pauses autoplay when slider is focussed
pauseOnHover | boolean | true | Pauses autoplay on hover
prevArrow | string (html \| jQuery selector) \| object (DOM node \| jQuery object) | `<button type="button" class="slick-prev">Previous</button>` | Allows you to select a node or customize the HTML for the "Previous" arrow.
respondTo | string | 'window' | Width that responsive object responds to. Can be 'window', 'slider' or 'min' (the smaller of the two).
responsive | array | null | Array of objects [containing breakpoints and settings objects (see example)](#responsive-option-example). Enables settings at given `breakpoint`. Set `settings` to "unslick" instead of an object to disable slick at a given breakpoint.
rows | int | 1 | Setting this to more than 1 initializes grid mode. Use slidesPerRow to set how many slides should be in each row.
rtl | boolean | false | Change the slider's direction to become right-to-left
slide | string | '' | Slide element query
slidesPerRow | int | 1 | With grid mode initialized via the rows option, this sets how many slides are in each grid row.
slidesToScroll | int | 1 | # of slides to scroll at a time
slidesToShow | int | 1 | # of slides to show at a time
speed | int | 300 | Transition speed
swipe | boolean | true | Enables touch swipe
swipeToSlide | boolean | false | Swipe to slide irrespective of slidesToScroll
touchMove | boolean | true | Enables slide moving with touch
touchThreshold | int | 5 | To advance slides, the user must swipe a length of (1/touchThreshold) * the width of the slider.
useCSS | boolean | true | Enable/Disable CSS Transitions
useTransform | boolean | true | Enable/Disable CSS Transforms
variableWidth | boolean | false | Disables automatic slide width calculation
vertical | boolean | false | Vertical slide direction
verticalSwiping | boolean | false | Changes swipe direction to vertical
waitForAnimate | boolean | true | Ignores requests to advance the slide while animating
zIndex | number | 1000 | Set the zIndex values for slides, useful for IE9 and lower
##### Responsive Option Example
The responsive option, and value, is quite unique and powerful.
You can use it like so:
```javascript
$(".slider").slick({
// normal options...
infinite: false,
// the magic
responsive: [{
breakpoint: 1024,
settings: {
slidesToShow: 3,
infinite: true
}
}, {
breakpoint: 600,
settings: {
slidesToShow: 2,
dots: true
}
}, {
breakpoint: 300,
settings: "unslick" // destroys slick
}]
});
```
### Events
In slick 1.4, callback methods were deprecated and replaced with events. Use them before the initialization of slick as shown below:
```javascript
// On swipe event
$('.your-element').on('swipe', function(event, slick, direction){
console.log(direction);
// left
});
// On edge hit
$('.your-element').on('edge', function(event, slick, direction){
console.log('edge was hit')
});
// On before slide change
$('.your-element').on('beforeChange', function(event, slick, currentSlide, nextSlide){
console.log(nextSlide);
});
```
Event | Params | Description
------ | -------- | -----------
afterChange | event, slick, currentSlide | After slide change callback
beforeChange | event, slick, currentSlide, nextSlide | Before slide change callback
breakpoint | event, slick, breakpoint | Fires after a breakpoint is hit
destroy | event, slick | When slider is destroyed, or unslicked.
edge | event, slick, direction | Fires when an edge is overscrolled in non-infinite mode.
init | event, slick | When Slick initializes for the first time callback. Note that this event should be defined before initializing the slider.
reInit | event, slick | Every time Slick (re-)initializes callback
setPosition | event, slick | Every time Slick recalculates position
swipe | event, slick, direction | Fires after swipe/drag
lazyLoaded | event, slick, image, imageSource | Fires after image loads lazily
lazyLoadError | event, slick, image, imageSource | Fires after image fails to load
#### Methods
Methods are called on slick instances through the slick method itself in version 1.4, see below:
```javascript
// Add a slide
$('.your-element').slick('slickAdd',"<div></div>");
// Get the current slide
var currentSlide = $('.your-element').slick('slickCurrentSlide');
```
This new syntax allows you to call any internal slick method as well:
```javascript
// Manually refresh positioning of slick
$('.your-element').slick('setPosition');
```
Method | Argument | Description
------ | -------- | -----------
`slick` | options : object | Initializes Slick
`unslick` | | Destroys Slick
`slickNext` | | Triggers next slide
`slickPrev` | | Triggers previous slide
`slickPause` | | Pause Autoplay
`slickPlay` | | Start Autoplay (_will also set `autoplay` option to `true`_)
`slickGoTo` | index : int, dontAnimate : bool | Goes to slide by index, skipping animation if second parameter is set to true
`slickCurrentSlide` | | Returns the current slide index
`slickAdd` | element : html or DOM object, index: int, addBefore: bool | Add a slide. If an index is provided, will add at that index, or before if addBefore is set. If no index is provided, add to the end or to the beginning if addBefore is set. Accepts HTML String || Object
`slickRemove` | index: int, removeBefore: bool | Remove slide by index. If removeBefore is set true, remove slide preceding index, or the first slide if no index is specified. If removeBefore is set to false, remove the slide following index, or the last slide if no index is set.
`slickFilter` | filter : selector or function | Filters slides using jQuery .filter syntax
`slickUnfilter` | | Removes applied filter
`slickGetOption` | option : string(option name) | Gets an option value.
`slickSetOption` | change an option, `refresh` is always `boolean` and will update UI changes...
| `option, value, refresh` | change a [single `option`](https://github.com/kenwheeler/slick#settings) to given `value`; `refresh` is optional.
| `"responsive", [{ breakpoint: n, settings: {} }, ... ], refresh` | change or add [whole sets of responsive options](#responsive-option-example)
| `{ option: value, option: value, ... }, refresh` | change [multiple `option`s](https://github.com/kenwheeler/slick#settings) to corresponding `value`s.
#### Example
Initialize with:
```javascript
$(element).slick({
dots: true,
speed: 500
});
```
Change the speed with:
```javascript
$(element).slick('slickSetOption', 'speed', 5000, true);
```
Destroy with:
```javascript
$(element).slick('unslick');
```
#### Sass Variables
Variable | Type | Default | Description
------ | ---- | ------- | -----------
$slick-font-path | string | "./fonts/" | Directory path for the slick icon font
$slick-font-family | string | "slick" | Font-family for slick icon font
$slick-loader-path | string | "./" | Directory path for the loader image
$slick-arrow-color | color | white | Color of the left/right arrow icons
$slick-dot-color | color | black | Color of the navigation dots
$slick-dot-color-active | color | $slick-dot-color | Color of the active navigation dot
$slick-prev-character | string | '\2190' | Unicode character code for the previous arrow icon
$slick-next-character | string | '\2192' | Unicode character code for the next arrow icon
$slick-dot-character | string | '\2022' | Unicode character code for the navigation dot icon
$slick-dot-size | pixels | 6px | Size of the navigation dots
#### Browser support
Slick works on IE8+ in addition to other modern browsers such as Chrome, Firefox, and Safari.
#### Dependencies
jQuery 1.7
#### License
Copyright (c) 2017 Ken Wheeler
Licensed under the MIT license.
Free as in Bacon.

View File

@@ -0,0 +1,32 @@
{
"name": "slick-carousel",
"main": [
"slick/slick.js",
"slick/slick.css",
"slick/slick.less",
"slick/slick.scss"
],
"homepage": "https://github.com/kenwheeler/slick",
"authors": [
"Ken Wheeler <ken_wheeler@me.com>"
],
"description": "the last carousel you'll ever need",
"keywords": [
"responsive",
"carousel",
"jquery"
],
"license": "MIT",
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests",
"package.json",
"index.html"
],
"dependencies": {
"jquery": ">=1.7"
}
}

View File

@@ -0,0 +1,18 @@
{
"name": "slick",
"repo": "kenwheeler/slick",
"description": "the last carousel you'll ever need",
"version": "1.8.0",
"keywords": ["ui", "jquery", "carousel", "responsive", "slider"],
"dependencies": {
"component/jquery": "*"
},
"development": {},
"scripts": {
"slick/slick.js": "slick.js"
},
"styles": {
"slick/slick.css": "slick.css",
"slick/slick-theme.css": "slick-theme.css"
}
}

View File

@@ -0,0 +1,373 @@
<!DOCTYPE html>
<html>
<head>
<title>Slick Playground</title>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="./slick/slick.css">
<link rel="stylesheet" type="text/css" href="./slick/slick-theme.css">
<style type="text/css">
html, body {
margin: 0;
padding: 0;
}
* {
box-sizing: border-box;
}
.slider {
width: 50%;
margin: 100px auto;
}
.slick-slide {
margin: 0px 20px;
}
.slick-slide img {
width: 100%;
}
.slick-prev:before,
.slick-next:before {
color: black;
}
.slick-slide {
transition: all ease-in-out .3s;
opacity: .2;
}
.slick-active {
opacity: .5;
}
.slick-current {
opacity: 1;
}
</style>
</head>
<body>
<section class="vertical-center-4 slider">
<div>
<img src="http://placehold.it/350x100?text=1">
</div>
<div>
<img src="http://placehold.it/350x100?text=2">
</div>
<div>
<img src="http://placehold.it/350x100?text=3">
</div>
<div>
<img src="http://placehold.it/350x100?text=4">
</div>
<div>
<img src="http://placehold.it/350x100?text=5">
</div>
<div>
<img src="http://placehold.it/350x100?text=6">
</div>
<div>
<img src="http://placehold.it/350x100?text=7">
</div>
<div>
<img src="http://placehold.it/350x100?text=8">
</div>
<div>
<img src="http://placehold.it/350x100?text=9">
</div>
<div>
<img src="http://placehold.it/350x100?text=10">
</div>
</section>
<section class="vertical-center-3 slider">
<div>
<img src="http://placehold.it/350x100?text=1">
</div>
<div>
<img src="http://placehold.it/350x100?text=2">
</div>
<div>
<img src="http://placehold.it/350x100?text=3">
</div>
<div>
<img src="http://placehold.it/350x100?text=4">
</div>
<div>
<img src="http://placehold.it/350x100?text=5">
</div>
<div>
<img src="http://placehold.it/350x100?text=6">
</div>
<div>
<img src="http://placehold.it/350x100?text=7">
</div>
<div>
<img src="http://placehold.it/350x100?text=8">
</div>
<div>
<img src="http://placehold.it/350x100?text=9">
</div>
<div>
<img src="http://placehold.it/350x100?text=10">
</div>
</section>
<section class="vertical-center-2 slider">
<div>
<img src="http://placehold.it/350x100?text=1">
</div>
<div>
<img src="http://placehold.it/350x100?text=2">
</div>
<div>
<img src="http://placehold.it/350x100?text=3">
</div>
<div>
<img src="http://placehold.it/350x100?text=4">
</div>
<div>
<img src="http://placehold.it/350x100?text=5">
</div>
<div>
<img src="http://placehold.it/350x100?text=6">
</div>
<div>
<img src="http://placehold.it/350x100?text=7">
</div>
<div>
<img src="http://placehold.it/350x100?text=8">
</div>
<div>
<img src="http://placehold.it/350x100?text=9">
</div>
<div>
<img src="http://placehold.it/350x100?text=10">
</div>
</section>
<section class="vertical-center slider">
<div>
<img src="http://placehold.it/350x100?text=1">
</div>
<div>
<img src="http://placehold.it/350x100?text=2">
</div>
<div>
<img src="http://placehold.it/350x100?text=3">
</div>
<div>
<img src="http://placehold.it/350x100?text=4">
</div>
<div>
<img src="http://placehold.it/350x100?text=5">
</div>
<div>
<img src="http://placehold.it/350x100?text=6">
</div>
<div>
<img src="http://placehold.it/350x100?text=7">
</div>
<div>
<img src="http://placehold.it/350x100?text=8">
</div>
<div>
<img src="http://placehold.it/350x100?text=9">
</div>
<div>
<img src="http://placehold.it/350x100?text=10">
</div>
</section>
<section class="vertical slider">
<div>
<img src="http://placehold.it/350x100?text=1">
</div>
<div>
<img src="http://placehold.it/350x100?text=2">
</div>
<div>
<img src="http://placehold.it/350x100?text=3">
</div>
<div>
<img src="http://placehold.it/350x100?text=4">
</div>
<div>
<img src="http://placehold.it/350x100?text=5">
</div>
<div>
<img src="http://placehold.it/350x100?text=6">
</div>
<div>
<img src="http://placehold.it/350x100?text=7">
</div>
<div>
<img src="http://placehold.it/350x100?text=8">
</div>
<div>
<img src="http://placehold.it/350x100?text=9">
</div>
<div>
<img src="http://placehold.it/350x100?text=10">
</div>
</section>
<section class="regular slider">
<div>
<img src="http://placehold.it/350x300?text=1">
</div>
<div>
<img src="http://placehold.it/350x300?text=2">
</div>
<div>
<img src="http://placehold.it/350x300?text=3">
</div>
<div>
<img src="http://placehold.it/350x300?text=4">
</div>
<div>
<img src="http://placehold.it/350x300?text=5">
</div>
<div>
<img src="http://placehold.it/350x300?text=6">
</div>
</section>
<section class="center slider">
<div>
<img src="http://placehold.it/350x300?text=1">
</div>
<div>
<img src="http://placehold.it/350x300?text=2">
</div>
<div>
<img src="http://placehold.it/350x300?text=3">
</div>
<div>
<img src="http://placehold.it/350x300?text=4">
</div>
<div>
<img src="http://placehold.it/350x300?text=5">
</div>
<div>
<img src="http://placehold.it/350x300?text=6">
</div>
<div>
<img src="http://placehold.it/350x300?text=7">
</div>
<div>
<img src="http://placehold.it/350x300?text=8">
</div>
<div>
<img src="http://placehold.it/350x300?text=9">
</div>
</section>
<section class="variable slider">
<div>
<img src="http://placehold.it/350x300?text=1">
</div>
<div>
<img src="http://placehold.it/200x300?text=2">
</div>
<div>
<img src="http://placehold.it/100x300?text=3">
</div>
<div>
<img src="http://placehold.it/200x300?text=4">
</div>
<div>
<img src="http://placehold.it/350x300?text=5">
</div>
<div>
<img src="http://placehold.it/300x300?text=6">
</div>
</section>
<section class="lazy slider" data-sizes="50vw">
<div>
<img data-lazy="http://placehold.it/350x300?text=1-350w" data-srcset="http://placehold.it/650x300?text=1-650w 650w, http://placehold.it/960x300?text=1-960w 960w" data-sizes="100vw">
</div>
<div>
<img data-lazy="http://placehold.it/350x300?text=2-350w" data-srcset="http://placehold.it/650x300?text=2-650w 650w, http://placehold.it/960x300?text=2-960w 960w" data-sizes="100vw">
</div>
<div>
<img data-lazy="http://placehold.it/350x300?text=3-350w" data-srcset="http://placehold.it/650x300?text=3-650w 650w, http://placehold.it/960x300?text=3-960w 960w" data-sizes="100vw">
</div>
<div>
<img data-lazy="http://placehold.it/350x300?text=4-350w" data-srcset="http://placehold.it/650x300?text=4-650w 650w, http://placehold.it/960x300?text=4-960w 960w" data-sizes="100vw">
</div>
<div>
<img data-lazy="http://placehold.it/350x300?text=5-350w" data-srcset="http://placehold.it/650x300?text=5-650w 650w, http://placehold.it/960x300?text=5-960w 960w" data-sizes="100vw">
</div>
<div>
<!-- this slide should inherit the sizes attr from the parent slider -->
<img data-lazy="http://placehold.it/350x300?text=6-350w" data-srcset="http://placehold.it/650x300?text=6-650w 650w, http://placehold.it/960x300?text=6-960w 960w">
</div>
</section>
<script src="https://code.jquery.com/jquery-2.2.0.min.js" type="text/javascript"></script>
<script src="./slick/slick.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
$(document).on('ready', function() {
$(".vertical-center-4").slick({
dots: true,
vertical: true,
centerMode: true,
slidesToShow: 4,
slidesToScroll: 2
});
$(".vertical-center-3").slick({
dots: true,
vertical: true,
centerMode: true,
slidesToShow: 3,
slidesToScroll: 3
});
$(".vertical-center-2").slick({
dots: true,
vertical: true,
centerMode: true,
slidesToShow: 2,
slidesToScroll: 2
});
$(".vertical-center").slick({
dots: true,
vertical: true,
centerMode: true,
});
$(".vertical").slick({
dots: true,
vertical: true,
slidesToShow: 3,
slidesToScroll: 3
});
$(".regular").slick({
dots: true,
infinite: true,
slidesToShow: 3,
slidesToScroll: 3
});
$(".center").slick({
dots: true,
infinite: true,
centerMode: true,
slidesToShow: 5,
slidesToScroll: 3
});
$(".variable").slick({
dots: true,
infinite: true,
variableWidth: true
});
$(".lazy").slick({
lazyLoad: 'ondemand', // ondemand progressive anticipated
infinite: true
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,50 @@
{
"name": "slick-carousel",
"version": "1.8.1",
"description": "the last carousel you'll ever need",
"main": "slick/slick.js",
"repository": {
"type": "git",
"url": "https://github.com/kenwheeler/slick.git"
},
"keywords": [
"carousel",
"slick",
"responsive",
"js",
"slider"
],
"author": "Ken Wheeler <ken_wheeler@me.com>",
"contributors": [
{
"name": "ken wheeler",
"email": "ken_wheeler@me.com",
"url": "http://kenwheeler.github.io/"
},
{
"name": "simon goellner",
"email": "simey.me@gmail.com",
"url": "http://simey.me"
},
{
"name": "ahmad el-alfy",
"email": "ahmadalfy@gmail.com",
"url": "http://www.alfy.me"
},
{
"name": "leggomuhgreggo",
"email": "gwestneat@gmail.com"
},
{
"name": "ashley mcknight",
"email": "ash@sharpteef.net"
}
],
"license": "MIT",
"bugs": {
"url": "https://github.com/kenwheeler/slick/issues"
},
"peerDependencies": {
"jquery": ">=1.8.0"
}
}

View File

@@ -0,0 +1,34 @@
{
"name": "slick",
"title": "slick",
"description": "A jQuery responsive touch carousel",
"keywords": [
"responsive",
"slider",
"carousel",
"touch",
"mobile"
],
"version": "1.8.0",
"author": {
"name": "Ken Wheeler",
"url": "http://kenwheeler.github.io"
},
"maintainers": [{
"name": "Ken Wheeler",
"email": "dubmediagroup@gmail.com",
"url": "http://www.dubmediagroup.com"
}],
"licenses": [{
"type": "MIT",
"url": "https://github.com/kenwheeler/slick/blob/master/LICENSE"
}],
"demo": "http://kenwheeler.github.io/slick/",
"bugs": "https://github.com/kenwheeler/slick/issues",
"homepage": "https://github.com/kenwheeler/slick/",
"docs": "https://github.com/kenwheeler/slick/",
"download": "https://github.com/kenwheeler/slick/archive/master.zip",
"dependencies": {
"jquery": ">=1.7"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

View File

@@ -0,0 +1,10 @@
css_dir = "."
sass_dir = "."
images_dir = "."
fonts_dir = "fonts"
relative_assets = true
output_style = :compact
line_comments = false
preferred_syntax = :scss

Binary file not shown.

View File

@@ -0,0 +1,14 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Generated by Fontastic.me</metadata>
<defs>
<font id="slick" horiz-adv-x="512">
<font-face font-family="slick" units-per-em="512" ascent="480" descent="-32"/>
<missing-glyph horiz-adv-x="512" />
<glyph unicode="&#8594;" d="M241 113l130 130c4 4 6 8 6 13 0 5-2 9-6 13l-130 130c-3 3-7 5-12 5-5 0-10-2-13-5l-29-30c-4-3-6-7-6-12 0-5 2-10 6-13l87-88-87-88c-4-3-6-8-6-13 0-5 2-9 6-12l29-30c3-3 8-5 13-5 5 0 9 2 12 5z m234 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
<glyph unicode="&#8592;" d="M296 113l29 30c4 3 6 7 6 12 0 5-2 10-6 13l-87 88 87 88c4 3 6 8 6 13 0 5-2 9-6 12l-29 30c-3 3-8 5-13 5-5 0-9-2-12-5l-130-130c-4-4-6-8-6-13 0-5 2-9 6-13l130-130c3-3 7-5 12-5 5 0 10 2 13 5z m179 143c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
<glyph unicode="&#8226;" d="M475 256c0-40-9-77-29-110-20-34-46-60-80-80-33-20-70-29-110-29-40 0-77 9-110 29-34 20-60 46-80 80-20 33-29 70-29 110 0 40 9 77 29 110 20 34 46 60 80 80 33 20 70 29 110 29 40 0 77-9 110-29 34-20 60-46 80-80 20-33 29-70 29-110z"/>
<glyph unicode="&#97;" d="M475 439l0-128c0-5-1-9-5-13-4-4-8-5-13-5l-128 0c-8 0-13 3-17 11-3 7-2 14 4 20l40 39c-28 26-62 39-100 39-20 0-39-4-57-11-18-8-33-18-46-32-14-13-24-28-32-46-7-18-11-37-11-57 0-20 4-39 11-57 8-18 18-33 32-46 13-14 28-24 46-32 18-7 37-11 57-11 23 0 44 5 64 15 20 9 38 23 51 42 2 1 4 3 7 3 3 0 5-1 7-3l39-39c2-2 3-3 3-6 0-2-1-4-2-6-21-25-46-45-76-59-29-14-60-20-93-20-30 0-58 5-85 17-27 12-51 27-70 47-20 19-35 43-47 70-12 27-17 55-17 85 0 30 5 58 17 85 12 27 27 51 47 70 19 20 43 35 70 47 27 12 55 17 85 17 28 0 55-5 81-15 26-11 50-26 70-45l37 37c6 6 12 7 20 4 8-4 11-9 11-17z"/>
</font></defs></svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,204 @@
@charset 'UTF-8';
/* Slider */
.slick-loading .slick-list
{
background: #fff url('./ajax-loader.gif') center center no-repeat;
}
/* Icons */
@font-face
{
font-family: 'slick';
font-weight: normal;
font-style: normal;
src: url('./fonts/slick.eot');
src: url('./fonts/slick.eot?#iefix') format('embedded-opentype'), url('./fonts/slick.woff') format('woff'), url('./fonts/slick.ttf') format('truetype'), url('./fonts/slick.svg#slick') format('svg');
}
/* Arrows */
.slick-prev,
.slick-next
{
font-size: 0;
line-height: 0;
position: absolute;
top: 50%;
display: block;
width: 20px;
height: 20px;
padding: 0;
-webkit-transform: translate(0, -50%);
-ms-transform: translate(0, -50%);
transform: translate(0, -50%);
cursor: pointer;
color: transparent;
border: none;
outline: none;
background: transparent;
}
.slick-prev:hover,
.slick-prev:focus,
.slick-next:hover,
.slick-next:focus
{
color: transparent;
outline: none;
background: transparent;
}
.slick-prev:hover:before,
.slick-prev:focus:before,
.slick-next:hover:before,
.slick-next:focus:before
{
opacity: 1;
}
.slick-prev.slick-disabled:before,
.slick-next.slick-disabled:before
{
opacity: .25;
}
.slick-prev:before,
.slick-next:before
{
font-family: 'slick';
font-size: 20px;
line-height: 1;
opacity: .75;
color: white;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.slick-prev
{
left: -25px;
}
[dir='rtl'] .slick-prev
{
right: -25px;
left: auto;
}
.slick-prev:before
{
content: '←';
}
[dir='rtl'] .slick-prev:before
{
content: '→';
}
.slick-next
{
right: -25px;
}
[dir='rtl'] .slick-next
{
right: auto;
left: -25px;
}
.slick-next:before
{
content: '→';
}
[dir='rtl'] .slick-next:before
{
content: '←';
}
/* Dots */
.slick-dotted.slick-slider
{
margin-bottom: 30px;
}
.slick-dots
{
position: absolute;
bottom: -25px;
display: block;
width: 100%;
padding: 0;
margin: 0;
list-style: none;
text-align: center;
}
.slick-dots li
{
position: relative;
display: inline-block;
width: 20px;
height: 20px;
margin: 0 5px;
padding: 0;
cursor: pointer;
}
.slick-dots li button
{
font-size: 0;
line-height: 0;
display: block;
width: 20px;
height: 20px;
padding: 5px;
cursor: pointer;
color: transparent;
border: 0;
outline: none;
background: transparent;
}
.slick-dots li button:hover,
.slick-dots li button:focus
{
outline: none;
}
.slick-dots li button:hover:before,
.slick-dots li button:focus:before
{
opacity: 1;
}
.slick-dots li button:before
{
font-family: 'slick';
font-size: 6px;
line-height: 20px;
position: absolute;
top: 0;
left: 0;
width: 20px;
height: 20px;
content: '•';
text-align: center;
opacity: .25;
color: black;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.slick-dots li.slick-active button:before
{
opacity: .75;
color: black;
}

View File

@@ -0,0 +1,168 @@
@charset "UTF-8";
// Default Variables
@slick-font-path: "./fonts/";
@slick-font-family: "slick";
@slick-loader-path: "./";
@slick-arrow-color: white;
@slick-dot-color: black;
@slick-dot-color-active: @slick-dot-color;
@slick-prev-character: "←";
@slick-next-character: "→";
@slick-dot-character: "•";
@slick-dot-size: 6px;
@slick-opacity-default: 0.75;
@slick-opacity-on-hover: 1;
@slick-opacity-not-active: 0.25;
/* Slider */
.slick-loading .slick-list{
background: #fff url('@{slick-loader-path}ajax-loader.gif') center center no-repeat;
}
/* Arrows */
.slick-prev,
.slick-next {
position: absolute;
display: block;
height: 20px;
width: 20px;
line-height: 0px;
font-size: 0px;
cursor: pointer;
background: transparent;
color: transparent;
top: 50%;
-webkit-transform: translate(0, -50%);
-ms-transform: translate(0, -50%);
transform: translate(0, -50%);
padding: 0;
border: none;
outline: none;
&:hover, &:focus {
outline: none;
background: transparent;
color: transparent;
&:before {
opacity: @slick-opacity-on-hover;
}
}
&.slick-disabled:before {
opacity: @slick-opacity-not-active;
}
}
.slick-prev:before, .slick-next:before {
font-family: @slick-font-family;
font-size: 20px;
line-height: 1;
color: @slick-arrow-color;
opacity: @slick-opacity-default;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
& when ( @slick-font-family = 'slick' ) {
/* Icons */
@font-face {
font-family: 'slick';
font-weight: normal;
font-style: normal;
src: url('@{slick-font-path}slick.eot');
src: url('@{slick-font-path}slick.eot?#iefix') format('embedded-opentype'), url('@{slick-font-path}slick.woff') format('woff'), url('@{slick-font-path}slick.ttf') format('truetype'), url('@{slick-font-path}slick.svg#slick') format('svg');
}
}
}
.slick-prev {
left: -25px;
[dir="rtl"] & {
left: auto;
right: -25px;
}
&:before {
content: @slick-prev-character;
[dir="rtl"] & {
content: @slick-next-character;
}
}
}
.slick-next {
right: -25px;
[dir="rtl"] & {
left: -25px;
right: auto;
}
&:before {
content: @slick-next-character;
[dir="rtl"] & {
content: @slick-prev-character;
}
}
}
/* Dots */
.slick-dotted .slick-slider {
margin-bottom: 30px;
}
.slick-dots {
position: absolute;
bottom: -25px;
list-style: none;
display: block;
text-align: center;
padding: 0;
margin: 0;
width: 100%;
li {
position: relative;
display: inline-block;
height: 20px;
width: 20px;
margin: 0 5px;
padding: 0;
cursor: pointer;
button {
border: 0;
background: transparent;
display: block;
height: 20px;
width: 20px;
outline: none;
line-height: 0px;
font-size: 0px;
color: transparent;
padding: 5px;
cursor: pointer;
&:hover, &:focus {
outline: none;
&:before {
opacity: @slick-opacity-on-hover;
}
}
&:before {
position: absolute;
top: 0;
left: 0;
content: @slick-dot-character;
width: 20px;
height: 20px;
font-family: @slick-font-family;
font-size: @slick-dot-size;
line-height: 20px;
text-align: center;
color: @slick-dot-color;
opacity: @slick-opacity-not-active;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
}
&.slick-active button:before {
color: @slick-dot-color-active;
opacity: @slick-opacity-default;
}
}
}

View File

@@ -0,0 +1,194 @@
@charset "UTF-8";
// Default Variables
// Slick icon entity codes outputs the following
// "\2190" outputs ascii character "←"
// "\2192" outputs ascii character "→"
// "\2022" outputs ascii character "•"
$slick-font-path: "./fonts/" !default;
$slick-font-family: "slick" !default;
$slick-loader-path: "./" !default;
$slick-arrow-color: white !default;
$slick-dot-color: black !default;
$slick-dot-color-active: $slick-dot-color !default;
$slick-prev-character: "\2190" !default;
$slick-next-character: "\2192" !default;
$slick-dot-character: "\2022" !default;
$slick-dot-size: 6px !default;
$slick-opacity-default: 0.75 !default;
$slick-opacity-on-hover: 1 !default;
$slick-opacity-not-active: 0.25 !default;
@function slick-image-url($url) {
@if function-exists(image-url) {
@return image-url($url);
}
@else {
@return url($slick-loader-path + $url);
}
}
@function slick-font-url($url) {
@if function-exists(font-url) {
@return font-url($url);
}
@else {
@return url($slick-font-path + $url);
}
}
/* Slider */
.slick-list {
.slick-loading & {
background: #fff slick-image-url("ajax-loader.gif") center center no-repeat;
}
}
/* Icons */
@if $slick-font-family == "slick" {
@font-face {
font-family: "slick";
src: slick-font-url("slick.eot");
src: slick-font-url("slick.eot?#iefix") format("embedded-opentype"), slick-font-url("slick.woff") format("woff"), slick-font-url("slick.ttf") format("truetype"), slick-font-url("slick.svg#slick") format("svg");
font-weight: normal;
font-style: normal;
}
}
/* Arrows */
.slick-prev,
.slick-next {
position: absolute;
display: block;
height: 20px;
width: 20px;
line-height: 0px;
font-size: 0px;
cursor: pointer;
background: transparent;
color: transparent;
top: 50%;
-webkit-transform: translate(0, -50%);
-ms-transform: translate(0, -50%);
transform: translate(0, -50%);
padding: 0;
border: none;
outline: none;
&:hover, &:focus {
outline: none;
background: transparent;
color: transparent;
&:before {
opacity: $slick-opacity-on-hover;
}
}
&.slick-disabled:before {
opacity: $slick-opacity-not-active;
}
&:before {
font-family: $slick-font-family;
font-size: 20px;
line-height: 1;
color: $slick-arrow-color;
opacity: $slick-opacity-default;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
}
.slick-prev {
left: -25px;
[dir="rtl"] & {
left: auto;
right: -25px;
}
&:before {
content: $slick-prev-character;
[dir="rtl"] & {
content: $slick-next-character;
}
}
}
.slick-next {
right: -25px;
[dir="rtl"] & {
left: -25px;
right: auto;
}
&:before {
content: $slick-next-character;
[dir="rtl"] & {
content: $slick-prev-character;
}
}
}
/* Dots */
.slick-dotted.slick-slider {
margin-bottom: 30px;
}
.slick-dots {
position: absolute;
bottom: -25px;
list-style: none;
display: block;
text-align: center;
padding: 0;
margin: 0;
width: 100%;
li {
position: relative;
display: inline-block;
height: 20px;
width: 20px;
margin: 0 5px;
padding: 0;
cursor: pointer;
button {
border: 0;
background: transparent;
display: block;
height: 20px;
width: 20px;
outline: none;
line-height: 0px;
font-size: 0px;
color: transparent;
padding: 5px;
cursor: pointer;
&:hover, &:focus {
outline: none;
&:before {
opacity: $slick-opacity-on-hover;
}
}
&:before {
position: absolute;
top: 0;
left: 0;
content: $slick-dot-character;
width: 20px;
height: 20px;
font-family: $slick-font-family;
font-size: $slick-dot-size;
line-height: 20px;
text-align: center;
color: $slick-dot-color;
opacity: $slick-opacity-not-active;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
}
&.slick-active button:before {
color: $slick-dot-color-active;
opacity: $slick-opacity-default;
}
}
}

View File

@@ -0,0 +1,119 @@
/* Slider */
.slick-slider
{
position: relative;
display: block;
box-sizing: border-box;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-touch-callout: none;
-khtml-user-select: none;
-ms-touch-action: pan-y;
touch-action: pan-y;
-webkit-tap-highlight-color: transparent;
}
.slick-list
{
position: relative;
display: block;
overflow: hidden;
margin: 0;
padding: 0;
}
.slick-list:focus
{
outline: none;
}
.slick-list.dragging
{
cursor: pointer;
cursor: hand;
}
.slick-slider .slick-track,
.slick-slider .slick-list
{
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.slick-track
{
position: relative;
top: 0;
left: 0;
display: block;
margin-left: auto;
margin-right: auto;
}
.slick-track:before,
.slick-track:after
{
display: table;
content: '';
}
.slick-track:after
{
clear: both;
}
.slick-loading .slick-track
{
visibility: hidden;
}
.slick-slide
{
display: none;
float: left;
height: 100%;
min-height: 1px;
}
[dir='rtl'] .slick-slide
{
float: right;
}
.slick-slide img
{
display: block;
}
.slick-slide.slick-loading img
{
display: none;
}
.slick-slide.dragging img
{
pointer-events: none;
}
.slick-initialized .slick-slide
{
display: block;
}
.slick-loading .slick-slide
{
visibility: hidden;
}
.slick-vertical .slick-slide
{
display: block;
height: auto;
border: 1px solid transparent;
}
.slick-arrow.slick-hidden {
display: none;
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,100 @@
/* Slider */
.slick-slider {
position: relative;
display: block;
box-sizing: border-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-ms-touch-action: pan-y;
touch-action: pan-y;
-webkit-tap-highlight-color: transparent;
}
.slick-list {
position: relative;
overflow: hidden;
display: block;
margin: 0;
padding: 0;
&:focus {
outline: none;
}
&.dragging {
cursor: pointer;
cursor: hand;
}
}
.slick-slider .slick-track,
.slick-slider .slick-list {
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.slick-track {
position: relative;
left: 0;
top: 0;
display: block;
margin-left: auto;
margin-right: auto;
&:before,
&:after {
content: "";
display: table;
}
&:after {
clear: both;
}
.slick-loading & {
visibility: hidden;
}
}
.slick-slide {
float: left;
height: 100%;
min-height: 1px;
[dir="rtl"] & {
float: right;
}
img {
display: block;
}
&.slick-loading img {
display: none;
}
display: none;
&.dragging img {
pointer-events: none;
}
.slick-initialized & {
display: block;
}
.slick-loading & {
visibility: hidden;
}
.slick-vertical & {
display: block;
height: auto;
border: 1px solid transparent;
}
}
.slick-arrow.slick-hidden {
display: none;
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,100 @@
/* Slider */
.slick-slider {
position: relative;
display: block;
box-sizing: border-box;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-ms-touch-action: pan-y;
touch-action: pan-y;
-webkit-tap-highlight-color: transparent;
}
.slick-list {
position: relative;
overflow: hidden;
display: block;
margin: 0;
padding: 0;
&:focus {
outline: none;
}
&.dragging {
cursor: pointer;
cursor: hand;
}
}
.slick-slider .slick-track,
.slick-slider .slick-list {
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
-o-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
}
.slick-track {
position: relative;
left: 0;
top: 0;
display: block;
margin-left: auto;
margin-right: auto;
&:before,
&:after {
content: "";
display: table;
}
&:after {
clear: both;
}
.slick-loading & {
visibility: hidden;
}
}
.slick-slide {
float: left;
height: 100%;
min-height: 1px;
[dir="rtl"] & {
float: right;
}
img {
display: block;
}
&.slick-loading img {
display: none;
}
display: none;
&.dragging img {
pointer-events: none;
}
.slick-initialized & {
display: block;
}
.slick-loading & {
visibility: hidden;
}
.slick-vertical & {
display: block;
height: auto;
border: 1px solid transparent;
}
}
.slick-arrow.slick-hidden {
display: none;
}

View File

@@ -0,0 +1,338 @@
<!DOCTYPE html>
<!--
Template Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme
Author: KeenThemes
Website: http://www.keenthemes.com/
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
Purchase: https://1.envato.market/EA4JP
Renew Support: https://1.envato.market/EA4JP
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head>
<base href="../" />
<meta charset="utf-8" />
<title>KELAINAN GLOBAL | MCU004</title>
<meta name="description" content="Login page example" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<!--begin::Fonts-->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700"
/>
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
<link
href="assets/css/pages/login/login-1.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Page Custom Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link
href="assets/plugins/global/plugins.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/plugins/custom/prismjs/prismjs.bundle.css"
rel="stylesheet"
type="text/css"
/>
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link
href="assets/css/themes/layout/header/base/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/header/menu/light.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/brand/dark.css"
rel="stylesheet"
type="text/css"
/>
<link
href="assets/css/themes/layout/aside/dark.css"
rel="stylesheet"
type="text/css"
/>
<!--end::Layout Themes-->
<link rel="shortcut icon" href="assets/media/logos/favicon.ico" />
<style>
#mcu-004 {
height: 50%;
width: auto;
}
#mcu-005 {
height: 40%;
width: "100%";
}
</style>
</head>
<!--end::Head-->
<!--begin::Body-->
<body
id="kt_body"
class="header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading"
>
<!--begin::Main-->
<div class="d-flex flex-column flex-root bg-white">
<!-- begin::Navbar -->
<div class="d-flex justify-content-center">
<h3 class="mb-3">Data Persentase Kelainan Global</h3>
</div>
<div id="mcu-004" class="mt-5"></div>
<div id="mcu-005"></div>
<!-- end::Navbar -->
</div>
<!--end::Main-->
<script>
var HOST_URL =
"https://preview.keenthemes.com/metronic/theme/html/tools/preview";
</script>
<!--begin::Global Config(global config for global JS scripts)-->
<script>
var KTAppSettings = {
breakpoints: {
sm: 576,
md: 768,
lg: 992,
xl: 1200,
xxl: 1400,
},
colors: {
theme: {
base: {
white: "#ffffff",
primary: "#3699FF",
secondary: "#E5EAEE",
success: "#1BC5BD",
info: "#8950FC",
warning: "#FFA800",
danger: "#F64E60",
light: "#E4E6EF",
dark: "#181C32",
},
light: {
white: "#ffffff",
primary: "#E1F0FF",
secondary: "#EBEDF3",
success: "#C9F7F5",
info: "#EEE5FF",
warning: "#FFF4DE",
danger: "#FFE2E5",
light: "#F3F6F9",
dark: "#D6D6E0",
},
inverse: {
white: "#ffffff",
primary: "#ffffff",
secondary: "#3F4254",
success: "#ffffff",
info: "#ffffff",
warning: "#ffffff",
danger: "#ffffff",
light: "#464E5F",
dark: "#ffffff",
},
},
gray: {
"gray-100": "#F3F6F9",
"gray-200": "#EBEDF3",
"gray-300": "#E4E6EF",
"gray-400": "#D1D3E0",
"gray-500": "#B5B5C3",
"gray-600": "#7E8299",
"gray-700": "#5E6278",
"gray-800": "#3F4254",
"gray-900": "#181C32",
},
},
"font-family": "Poppins",
};
</script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<!--begin::Page Vendors(used by this page)-->
<script src="assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<!--end::Page Vendors-->
<!--begin::Page Scripts(used by this page)-->
<script src="assets/js/pages/widgets.js"></script>
<!--end::Page Scripts-->
<!-- echartjs.min.js -->
<script src="assets/js/echarts-js/echart.min.js"></script>
<!-- SCRIPT -->
<script type="text/javascript">
// Initialize the echarts instance based on the prepared dom
var chartMCU004 = echarts.init(document.getElementById("mcu-004"));
var optMCU004 = {
title: {
text: "Kelainan MCU",
// subtext: 'Living Expenses in Shenzhen'
},
dataset: {
source: [
["score", "amount", "product", "percentage"],
[200, 447, "Body Mass Index"],
[150, 314, "Pemeriksaan Mata"],
[125, 314, "Fungsi Lemak"],
[100, 254, "Autospirometri"],
[90, 200, "Hematologi"],
[80, 180, "ECG"],
[75, 160, "Hiperuricemia"],
[70, 125, "Tekanan Darah"],
[60, 118, "Urine Lengkap"],
[50, 87, "Fungsi Hati"],
],
},
grid: {
containLabel: true,
},
xAxis: {
name: "amount",
},
yAxis: {
type: "category",
},
visualMap: {
orient: "horizontal",
left: "center",
min: 10,
max: 100,
show: false,
// text: ['High Score', 'Low Score'],
// Map the score column to color
dimension: 0,
inRange: {
color: ["#42aaf5", "#00eaf2", "#035bff"],
},
},
series: [
{
label: {
position: "right",
show: true,
formatter: "{@[3]} %",
},
type: "bar",
encode: {
// Map the "amount" column to X axis.
x: "amount",
// Map the "product" column to Y axis
y: "product",
},
},
],
};
window.addEventListener("resize", function () {
chartMCU004.resize();
});
// Display the chart using the configuration items and data just specified.
chartMCU004.setOption(optMCU004);
//MCU005
// Initialize the echarts instance based on the prepared dom
var chartMCU005 = echarts.init(document.getElementById("mcu-005"));
var optMCU005 = {
title: {
text: "Kelainan Fisik",
// subtext: 'Living Expenses in Shenzhen'
},
dataset: {
source: [
["score", "amount", "product", "percentage"],
[200, 400, "Obesitas Stage 1"],
[150, 300, "Pre Hipertensi"],
[133, 250, "Kelainan Refraksi"],
[125, 180, "Overweight"],
[100, 125, "Obesitas Stage 2"],
[80, 100, "Hipertensi grade 1"],
[70, 80, "Kel. Refrakti terkoreksi"],
[60, 70, "Kel. Refrakti tidak terkoreksi"],
[55, 55, "Hipertensi grade 2"],
],
},
grid: {
containLabel: true,
},
xAxis: {
name: "amount",
},
yAxis: {
type: "category",
},
visualMap: {
orient: "horizontal",
left: "center",
min: 10,
max: 100,
show: false,
// text: ['High Score', 'Low Score'],
// Map the score column to color
dimension: 0,
inRange: {
color: ["#42aaf5", "#00eaf2", "#035bff"],
},
},
series: [
{
label: {
position: "right",
show: true,
formatter: "{@[3]} %",
},
type: "bar",
encode: {
// Map the "amount" column to X axis.
x: "amount",
// Map the "product" column to Y axis
y: "product",
},
},
],
};
window.addEventListener("resize", function () {
chartMCU005.resize();
});
// Display the chart using the configuration items and data just specified.
chartMCU005.setOption(optMCU005);
</script>
<!-- SCRIPT -->
</body>
<!--end::Body-->
</html>

View File

@@ -1,301 +0,0 @@
<!DOCTYPE html>
<!--
Template Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme
Author: KeenThemes
Website: http://www.keenthemes.com/
Contact: support@keenthemes.com
Follow: www.twitter.com/keenthemes
Dribbble: www.dribbble.com/keenthemes
Like: www.facebook.com/keenthemes
Purchase: https://1.envato.market/EA4JP
Renew Support: https://1.envato.market/EA4JP
License: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.
-->
<html lang="en">
<!--begin::Head-->
<head>
<base href="../" />
<meta charset="utf-8" />
<title>KELAINAN GLOBAL | MCU004</title>
<meta name="description" content="Login page example" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<!--begin::Fonts-->
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700" />
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
<link href="assets/css/pages/login/login-1.css" rel="stylesheet" type="text/css" />
<!--end::Page Custom Styles-->
<!--begin::Global Theme Styles(used by all pages)-->
<link href="assets/plugins/global/plugins.bundle.css" rel="stylesheet" type="text/css" />
<link href="assets/plugins/custom/prismjs/prismjs.bundle.css" rel="stylesheet" type="text/css" />
<link href="assets/css/style.bundle.css" rel="stylesheet" type="text/css" />
<!--end::Global Theme Styles-->
<!--begin::Layout Themes(used by all pages)-->
<link href="assets/css/themes/layout/header/base/light.css" rel="stylesheet" type="text/css" />
<link href="assets/css/themes/layout/header/menu/light.css" rel="stylesheet" type="text/css" />
<link href="assets/css/themes/layout/brand/dark.css" rel="stylesheet" type="text/css" />
<link href="assets/css/themes/layout/aside/dark.css" rel="stylesheet" type="text/css" />
<!--end::Layout Themes-->
<link rel="shortcut icon" href="assets/media/logos/favicon.ico" />
<style>
#mcu-004 {
height: 100vh;
/* overflow-x: scroll; */
width: "100%";
}
#mcu-005 {
height: 100vh;
/* overflow-x: scroll; */
width: "100%";
}
</style>
</head>
<!--end::Head-->
<!--begin::Body-->
<body id="kt_body" class="header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading">
<!--begin::Main-->
<div class="d-flex flex-column flex-root bg-white">
<!-- begin::Navbar -->
<div class="d-flex justify-content-center ">
<h3 class="mb-3">Data Persentase Kelainan Global</h3>
</div>
<div id="mcu-004" class="mt-5">
</div>
<div id="mcu-005">
</div>
<!-- end::Navbar -->
</div>
<!--end::Main-->
<script>
var HOST_URL = "https://preview.keenthemes.com/metronic/theme/html/tools/preview";
</script>
<!--begin::Global Config(global config for global JS scripts)-->
<script>
var KTAppSettings = {
"breakpoints": {
"sm": 576,
"md": 768,
"lg": 992,
"xl": 1200,
"xxl": 1400
},
"colors": {
"theme": {
"base": {
"white": "#ffffff",
"primary": "#3699FF",
"secondary": "#E5EAEE",
"success": "#1BC5BD",
"info": "#8950FC",
"warning": "#FFA800",
"danger": "#F64E60",
"light": "#E4E6EF",
"dark": "#181C32"
},
"light": {
"white": "#ffffff",
"primary": "#E1F0FF",
"secondary": "#EBEDF3",
"success": "#C9F7F5",
"info": "#EEE5FF",
"warning": "#FFF4DE",
"danger": "#FFE2E5",
"light": "#F3F6F9",
"dark": "#D6D6E0"
},
"inverse": {
"white": "#ffffff",
"primary": "#ffffff",
"secondary": "#3F4254",
"success": "#ffffff",
"info": "#ffffff",
"warning": "#ffffff",
"danger": "#ffffff",
"light": "#464E5F",
"dark": "#ffffff"
}
},
"gray": {
"gray-100": "#F3F6F9",
"gray-200": "#EBEDF3",
"gray-300": "#E4E6EF",
"gray-400": "#D1D3E0",
"gray-500": "#B5B5C3",
"gray-600": "#7E8299",
"gray-700": "#5E6278",
"gray-800": "#3F4254",
"gray-900": "#181C32"
}
},
"font-family": "Poppins"
};
</script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<!--begin::Page Vendors(used by this page)-->
<script src="assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<!--end::Page Vendors-->
<!--begin::Page Scripts(used by this page)-->
<script src="assets/js/pages/widgets.js"></script>
<!--end::Page Scripts-->
<!-- echartjs.min.js -->
<script src="assets/js/echarts-js/echart.min.js"></script>
<!-- SCRIPT -->
<script type="text/javascript">
// Initialize the echarts instance based on the prepared dom
var chartMCU004 = echarts.init(document.getElementById('mcu-004'));
var optMCU004 = {
title: {
text: 'Kelainan MCU',
// subtext: 'Living Expenses in Shenzhen'
},
dataset: {
source: [
['score', 'amount', 'product', 'percentage'],
[200, 447, 'Body Mass Index'],
[150, 314, 'Pemeriksaan Mata'],
[125, 314, 'Fungsi Lemak'],
[100, 254, 'Autospirometri'],
[90, 200, 'Hematologi'],
[80, 180, 'ECG'],
[75, 160, 'Hiperuricemia'],
[70, 125, 'Tekanan Darah'],
[60, 118, 'Urine Lengkap'],
[50, 87, 'Fungsi Hati']
]
},
grid: {
containLabel: true
},
xAxis: {
name: 'amount'
},
yAxis: {
type: 'category'
},
visualMap: {
orient: 'horizontal',
left: 'center',
min: 10,
max: 100,
show: false,
// text: ['High Score', 'Low Score'],
// Map the score column to color
dimension: 0,
inRange: {
color: ['#42aaf5', '#00eaf2', '#035bff']
}
},
series: [{
label: {
position: 'right',
show: true,
formatter: "{@[3]} %"
},
type: 'bar',
encode: {
// Map the "amount" column to X axis.
x: 'amount',
// Map the "product" column to Y axis
y: 'product'
}
}]
};
window.addEventListener('resize', function() {
chartMCU004.resize();
});
// Display the chart using the configuration items and data just specified.
chartMCU004.setOption(optMCU004);
//MCU005
// Initialize the echarts instance based on the prepared dom
var chartMCU005 = echarts.init(document.getElementById('mcu-005'));
var optMCU005 = {
title: {
text: 'Kelainan Fisik',
// subtext: 'Living Expenses in Shenzhen'
},
dataset: {
source: [
['score', 'amount', 'product', 'percentage'],
[200, 400, 'Obesitas Stage 1'],
[150, 300, 'Pre Hipertensi'],
[133, 250, 'Kelainan Refraksi'],
[125, 180, 'Overweight'],
[100, 125, 'Obesitas Stage 2'],
[80, 100, 'Hipertensi grade 1'],
[70, 80, 'Kel. Refrakti terkoreksi'],
[60, 70, 'Kel. Refrakti tidak terkoreksi'],
[55, 55, 'Hipertensi grade 2']
]
},
grid: {
containLabel: true
},
xAxis: {
name: 'amount'
},
yAxis: {
type: 'category'
},
visualMap: {
orient: 'horizontal',
left: 'center',
min: 10,
max: 100,
show: false,
// text: ['High Score', 'Low Score'],
// Map the score column to color
dimension: 0,
inRange: {
color: ['#42aaf5', '#00eaf2', '#035bff']
}
},
series: [{
label: {
position: 'right',
show: true,
formatter: "{@[3]} %"
},
type: 'bar',
encode: {
// Map the "amount" column to X axis.
x: 'amount',
// Map the "product" column to Y axis
y: 'product'
}
}]
};;
window.addEventListener('resize', function() {
chartMCU005.resize();
});
// Display the chart using the configuration items and data just specified.
chartMCU005.setOption(optMCU005);
</script>
<!-- SCRIPT -->
</body>
<!--end::Body-->
</html>

View File

@@ -277,17 +277,8 @@ License: You must have a valid license purchased only from themeforest(the above
/* background: #C3C4C5; */
height: 0.2px;
}
.w-logo {
width: 126px;
height: 40px;
}
.jumbotron-left {
flex: 2;
margin: 10px;
display: flex;
align-items: center;
.img-header {
object-fit: contain;
}
</style>
</head>
@@ -307,7 +298,9 @@ License: You must have a valid license purchased only from themeforest(the above
<a class="navbar-brand" href="#">
<img
src="../assets/asset-corporate-portal/media/landingpage/logo.png"
class="d-inline-block align-top w-logo"
width="126"
height="40"
class="d-inline-block align-top"
alt="Your Brand"
/>
</a>
@@ -340,12 +333,19 @@ License: You must have a valid license purchased only from themeforest(the above
<div class="mt-auto"></div>
</div>
<div class="col-md-4 d-flex justify-content-md-end">
<div class="jumbotron-left">
<div
style="
flex: 2;
margin: 10px;
display: flex;
align-items: center;
"
>
<img
src="../assets/asset-corporate-portal/media/landingpage/jumbotron_left.png"
class="img-fluid"
class="img-fluid img-header"
alt="Your Brand"
style="width: 100%; height: 100%"
style="width: 100%; height: 100%;"
/>
</div>
</div>

View File

@@ -24,7 +24,11 @@ func main() {
// We redirect the root route to the "/user" route
app.GET("/", func(c echo.Context) error {
return c.Redirect(http.StatusMovedPermanently, "/user")
return c.Redirect(http.StatusMovedPermanently, "/landing_page/")
})
app.GET("/pie_chart", func(c echo.Context) error {
return c.Redirect(http.StatusMovedPermanently, "/pie_chart/")
})
uStore, err := db.NewUserStore(dbName)
@@ -38,6 +42,14 @@ func main() {
handlers.SetupRoutes(app, h)
LStore, err := db.NewLoginStore(dbName)
if err != nil {
app.Logger.Fatalf("failed to create store: %s", err)
}
l := services.NewServicesLogin(services.Login{}, LStore)
lh := handlers.NewLoginHandler(l)
handlers.SetupRoutesLogin(app, lh)
xStore, err := db.NewXsampleStore(dbName)
if err != nil {
app.Logger.Fatalf("failed to create store: %s", err)
@@ -46,13 +58,34 @@ func main() {
xh := handlers.NewXsampleHandler(xs)
handlers.SetupRoutesXsample(app, xh)
lStore, err := db.NewLandingPageStore(dbName)
LpStore, err := db.NewLandingPageStore(dbName)
if err != nil {
app.Logger.Fatalf("failed to create store: %s", err)
}
ls := services.NewServicesLandingPage(services.LandingPage{}, lStore)
lh := handlers.NewLandingPageHandler(ls)
handlers.SetupRoutesLandingPage(app, lh)
lps := services.NewServicesLandingPage(services.LandingPage{}, LpStore)
lphs := handlers.NewLandingPageHandler(lps)
handlers.SetupRoutesLandingPage(app, lphs)
LpchartStore, err := db.NewPieChartStore(dbName)
if err != nil {
app.Logger.Fatalf("failed to create store: %s", err)
}
bchart, err := db.NewBarChartStore(dbName)
if err != nil {
app.Logger.Fatalf("failed to create store: %s", err)
}
lpchart := services.NewServicesPiechart(services.Piechart{}, services.Barchart{}, LpchartStore, bchart)
lphsx := handlers.NewPiechartHandler(lpchart)
handlers.SetupRoutesPieChart(app, lphsx)
eStore, err := db.NewEmployeeStore(dbName)
if err != nil {
app.Logger.Fatalf("failed to create store: %s", err)
}
el := services.NewServicesEmployee(services.Employee{}, eStore)
ehs := handlers.NewEmployeeHandler(el)
handlers.SetupRoutesEmployee(app, ehs)
app.Logger.Fatal(app.Start(":5000"))
}

43
db/chart.store.go Normal file
View File

@@ -0,0 +1,43 @@
package db
import (
"database/sql"
_ "github.com/glebarez/go-sqlite"
)
type PieChartStore struct {
Db *sql.DB
}
type BarChartStore struct {
Db *sql.DB
}
func NewPieChartStore(dbName string) (PieChartStore, error) {
Db, err := getConnection(dbName)
if err != nil {
return PieChartStore{}, err
}
if err := createMigrations(dbName, Db); err != nil {
return PieChartStore{}, err
}
return PieChartStore{
Db,
}, nil
}
func NewBarChartStore(dbName string) (BarChartStore, error) {
Db, err := getConnection(dbName)
if err != nil {
return BarChartStore{}, err
}
if err := createMigrations(dbName, Db); err != nil {
return BarChartStore{}, err
}
return BarChartStore{
Db,
}, nil
}

26
db/employee.store.go Normal file
View File

@@ -0,0 +1,26 @@
package db
import (
"database/sql"
_ "github.com/glebarez/go-sqlite"
)
type EmployeeStore struct {
Db *sql.DB
}
func NewEmployeeStore(dbName string) (EmployeeStore, error) {
Db, err := getConnection(dbName)
if err != nil {
return EmployeeStore{}, err
}
if err := createMigrations(dbName, Db); err != nil {
return EmployeeStore{}, err
}
return EmployeeStore{
Db,
}, nil
}

26
db/login.store.go Normal file
View File

@@ -0,0 +1,26 @@
package db
import (
"database/sql"
_ "github.com/glebarez/go-sqlite"
)
type LoginStore struct {
Db *sql.DB
}
func NewLoginStore(dbName string) (LoginStore, error) {
Db, err := getConnection(dbName)
if err != nil {
return LoginStore{}, err
}
if err := createMigrations(dbName, Db); err != nil {
return LoginStore{}, err
}
return LoginStore{
Db,
}, nil
}

181
handlers/chart.handlers.go Normal file
View File

@@ -0,0 +1,181 @@
package handlers
import (
"crypto/md5"
"encoding/hex"
"encoding/json"
"fmt"
"strings"
"time"
"github.com/a-h/templ"
"github.com/emarifer/go-templ-project-structure/services"
kelainanglobal "github.com/emarifer/go-templ-project-structure/views/mcu/kelainan_global"
mcupeserta "github.com/emarifer/go-templ-project-structure/views/mcu/peserta"
"github.com/emarifer/go-templ-project-structure/views/piechart"
"github.com/emarifer/go-templ-project-structure/views/xsample"
"github.com/labstack/echo/v4"
)
type PiechartService interface {
GetPieChart(string, int) (string, services.Piechart, error)
GetBarChart(code string, id int) (string, services.Barchart, error)
}
func NewPiechartHandler(us PiechartService) *PiechartHandler {
return &PiechartHandler{
PiechartService: us,
}
}
type PiechartHandler struct {
PiechartService PiechartService
}
func (uh *PiechartHandler) Hello(c echo.Context) error {
helo := xsample.ShowHelo("Hello World", xsample.HelloWorld("Hello World"), xsample.CssHelo(), xsample.JsHelo())
return uh.View(c, helo)
}
// example pie chart
func (uh *PiechartHandler) ShowPieChart(c echo.Context) error {
// helo := piechart.MainPieChart("main_001")
var code = "mcu006"
title, udata, err := uh.PiechartService.GetPieChart(code, 1)
if err != nil {
// fmt.Println(err)
return err
}
jsonData, err := json.MarshalIndent(udata, "", " ")
if err != nil {
fmt.Println("Error:", err)
return err
}
// randomID := md5.Sum([]byte(title + time.Now().String()))
seed := title + time.Now().String()
hash := md5.Sum([]byte(seed))
randomID := hex.EncodeToString(hash[:])
randomID = strings.ReplaceAll(randomID, "-", "")
// randomID := hex.EncodeToString(md5.Sum([]byte(title + time.Now().String())))
helo := piechart.ShowPieChart("Chart", piechart.MainPieChart(randomID, string(jsonData)), piechart.CssPieChart(), piechart.JsPieChart())
return uh.View(c, helo)
}
func (uh *PiechartHandler) ShowBarChart(c echo.Context) error {
// helo := piechart.MainPieChart("main_001")
var code = "mcu004"
title, udata, err := uh.PiechartService.GetBarChart(code, 1)
if err != nil {
// fmt.Println(err)
return err
}
var code2 = "mcu005"
title2, udata2, err := uh.PiechartService.GetBarChart(code2, 1)
if err != nil {
// fmt.Println(err)
return err
}
jsonData, err := json.MarshalIndent(udata, "", " ")
if err != nil {
fmt.Println("Error:", err)
return err
}
jsonData2, err := json.MarshalIndent(udata2, "", " ")
if err != nil {
fmt.Println("Error:", err)
return err
}
// randomID := md5.Sum([]byte(title + time.Now().String()))
seed := title + time.Now().String()
hash := md5.Sum([]byte(seed))
randomID := hex.EncodeToString(hash[:])
randomID = strings.ReplaceAll(randomID, "-", "")
seed2 := title2 + time.Now().String()
hash2 := md5.Sum([]byte(seed2))
randomID2 := hex.EncodeToString(hash2[:])
randomID2 = strings.ReplaceAll(randomID2, "-", "")
// randomID := hex.EncodeToString(md5.Sum([]byte(title + time.Now().String())))
helo := kelainanglobal.ShowKelainanGlobal("Kelainan global", kelainanglobal.MainKelainanGlobal(randomID, string(jsonData), randomID2, string(jsonData2)), kelainanglobal.CssKelainanGlobal(), kelainanglobal.JsKelainanGlobal())
return uh.View(c, helo)
}
// mcu peserta
func (uh *PiechartHandler) ShowMcuPeserta(c echo.Context) error {
// 1
var code001 = "mcu001"
title001, udata001, err001 := uh.PiechartService.GetPieChart(code001, 1)
if err001 != nil {
return err001
}
jsonData001, err001 := json.MarshalIndent(udata001, "", " ")
if err001 != nil {
fmt.Println("Error:", err001)
return err001
}
seed001 := title001 + time.Now().String()
hash001 := md5.Sum([]byte(seed001))
randomID001 := hex.EncodeToString(hash001[:])
randomID001 = strings.ReplaceAll(randomID001, "-", "")
// 2
var code002 = "mcu002"
title002, udata002, err002 := uh.PiechartService.GetPieChart(code002, 1)
if err002 != nil {
return err002
}
jsonData002, err002 := json.MarshalIndent(udata002, "", " ")
if err002 != nil {
fmt.Println("Error:", err002)
return err002
}
seed002 := title002 + time.Now().String()
hash002 := md5.Sum([]byte(seed002))
randomID002 := hex.EncodeToString(hash002[:])
randomID002 = strings.ReplaceAll(randomID002, "-", "")
// 3
var code003 = "mcu003"
title003, udata003, err003 := uh.PiechartService.GetPieChart(code003, 1)
if err003 != nil {
return err003
}
jsonData003, err003 := json.MarshalIndent(udata003, "", " ")
if err003 != nil {
fmt.Println("Error:", err003)
return err003
}
seed003 := title003 + time.Now().String()
hash003 := md5.Sum([]byte(seed003))
randomID003 := hex.EncodeToString(hash003[:])
randomID003 = strings.ReplaceAll(randomID003, "-", "")
helo := mcupeserta.ShowMcuPeserta("Peserta", mcupeserta.MainMcuPeserta(
randomID001, string(jsonData001),
randomID002, string(jsonData002),
randomID003, string(jsonData003),
),
mcupeserta.CssMcuPeserta(),
mcupeserta.JsMcuPeserta(),
)
return uh.View(c, helo)
}
func (uh *PiechartHandler) View(c echo.Context, cmp templ.Component) error {
c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML)
return cmp.Render(c.Request().Context(), c.Response().Writer)
}

View File

@@ -0,0 +1,42 @@
package handlers
import (
"fmt"
"github.com/a-h/templ"
"github.com/emarifer/go-templ-project-structure/services"
"github.com/emarifer/go-templ-project-structure/views/employee"
"github.com/labstack/echo/v4"
)
type EmployeeService interface {
GetEmployeeService() ([]services.EmployeeService, error)
}
func NewEmployeeHandler(us EmployeeService) *EmployeeHandler {
return &EmployeeHandler{
EmployeeService: us,
}
}
type EmployeeHandler struct {
EmployeeService EmployeeService
}
func (eh *EmployeeHandler) ShowEmployee(c echo.Context) error {
udata, err := eh.EmployeeService.GetEmployeeService()
if err != nil {
// fmt.Println(err)
return err
}
fmt.Printf("%+v\n", udata)
e := employee.ShowEmployee("Employee", employee.MainEmployee(employee.ListCardService(udata)), employee.CssEmployee(), employee.JsEmployee())
return eh.View(c, e)
}
func (eh *EmployeeHandler) View(c echo.Context, cmp templ.Component) error {
c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML)
return cmp.Render(c.Request().Context(), c.Response().Writer)
}

View File

@@ -1,13 +1,19 @@
package handlers
import (
"fmt"
"github.com/a-h/templ"
"github.com/emarifer/go-templ-project-structure/views/landingpage"
"github.com/emarifer/go-templ-project-structure/services"
landingpage "github.com/emarifer/go-templ-project-structure/views/landingpage"
"github.com/labstack/echo/v4"
)
type LandingPageService interface {
GetClientService() ([]services.ClientService, error)
GetClientAdvantage() ([]services.AdvantageClient, error)
GetPromotionList() ([]services.Promotion, error)
}
func NewLandingPageHandler(us LandingPageService) *LandingPageHandler {
@@ -20,9 +26,30 @@ type LandingPageHandler struct {
LandingPageService LandingPageService
}
func (uh *LandingPageHandler) HendlerShowLandingPage(c echo.Context) error {
lp := landingpage.ShowLandingPage("Landing Page", landingpage.BodyLandingPage(), landingpage.CssLandingPage(), landingpage.JsLandingPage())
return uh.View(c, lp)
func (uh *LandingPageHandler) ShowLandingPage(c echo.Context) error {
udata, err := uh.LandingPageService.GetClientService()
if err != nil {
// fmt.Println(err)
return err
}
adData, err := uh.LandingPageService.GetClientAdvantage()
if err != nil {
// fmt.Println(err)
return err
}
lpData, err := uh.LandingPageService.GetPromotionList()
if err != nil {
// fmt.Println(err)
return err
}
fmt.Printf("%+v\n", udata)
helo := landingpage.ShowLandingPage("Hello World",
landingpage.MainLandingPage(landingpage.ListMedicalService(udata),
landingpage.ListAdvantage(adData), landingpage.ListPromotion(lpData),
landingpage.Footer()),
landingpage.CssLandingPage(),
landingpage.JsLandingPage())
return uh.View(c, helo)
}
func (uh *LandingPageHandler) View(c echo.Context, cmp templ.Component) error {

View File

@@ -2,19 +2,34 @@ package handlers
import (
"github.com/a-h/templ"
"github.com/emarifer/go-templ-project-structure/services"
"github.com/emarifer/go-templ-project-structure/views/login"
"github.com/labstack/echo/v4"
)
func HandlerShowLoginCompany(c echo.Context) error {
// si := user.ShowIndex("| Home", user.Show(udata))
si := login.ShowLogin("Login ", login.DivLogin(), login.CssLogin(), login.JsLogin())
return ViewLoginCompany(c, si)
type LoginService interface {
GetLogin(Email string, Password string) (services.Login, error)
}
func ViewLoginCompany(c echo.Context, cmp templ.Component) error {
func NewLoginHandler(us LoginService) *LoginHandler {
return &LoginHandler{
LoginService: us,
}
}
type LoginHandler struct {
LoginService LoginService
}
func (lh *LoginHandler) HandlerShowLogin(c echo.Context) error {
si := login.ShowLogin("Login ", login.MainLogin(), login.CssLogin(), login.JsLogin())
return lh.ViewLogin(c, si)
}
func (uh *LoginHandler) ViewLogin(c echo.Context, cmp templ.Component) error {
c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML)
return cmp.Render(c.Request().Context(), c.Response().Writer)

View File

@@ -11,17 +11,28 @@ func SetupRoutes(app *echo.Echo, h *UserHandler) {
}
//PLAYGROUND TESTING
func SetupRoutesLogin(app *echo.Echo, h *LoginHandler) {
l := app.Group("/login")
l.GET("/", h.HandlerShowLogin)
}
func SetupRoutesXsample(app *echo.Echo, h *XsampleHandler) {
xSample := app.Group("/xsample")
xSample.GET("/xsample01", h.Hello)
}
//LANDINGPAGE TESTING
func SetupRoutesLandingPage(app *echo.Echo, h *LandingPageHandler) {
LandingPage := app.Group("/landingpage")
LandingPage.GET("/", h.HendlerShowLandingPage)
Lp := app.Group("/landing_page")
Lp.GET("/", h.ShowLandingPage)
}
func SetupRoutesPieChart(app *echo.Echo, h *PiechartHandler) {
Lp := app.Group("/pie_chart")
Lp.GET("/", h.ShowPieChart)
Lp.GET("/peserta", h.ShowMcuPeserta)
Lp.GET("/bar", h.ShowBarChart)
}
func SetupRoutesEmployee(app *echo.Echo, e *EmployeeHandler) {
employee := app.Group("/employee")
employee.GET("/", e.ShowEmployee)
}
func SetupRoutesProject(app *echo.Echo) {
}

830
services/chart.services.go Normal file
View File

@@ -0,0 +1,830 @@
package services
import (
"fmt"
"github.com/emarifer/go-templ-project-structure/db"
)
func NewServicesPiechart(u Piechart, b Barchart, uStore db.PieChartStore, bStore db.BarChartStore) *ServicesPiechart {
return &ServicesPiechart{
Piechart: u,
Barchart: b,
BarChartStore: bStore,
PieChartStore: uStore,
}
}
// type Option struct {
// Title struct {
// Text string
// Left string
// }
// Tooltip struct {
// Trigger string
// }
// Legend struct {
// Top string
// Left string
// Orient string
// }
// Series []Series
// }
type SeriesData struct {
Value int `json:"value"`
Name string `json:"name"`
}
type Series struct {
Label struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
} `json:"label"`
Name string `json:"name"`
Type string `json:"type"`
Radius []string `json:"radius"`
ItemStyle struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
} `json:"itemStyle"`
Data []SeriesData `json:"data"`
Emphasis struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
} `json:"emphasis"`
}
type Barchart struct {
Title struct {
Text string `json:"text"`
} `json:"title"`
Dataset struct {
Source [][]interface{} `json:"source"`
} `json:"dataset"`
Grid struct {
ContainLabel bool `json:"containLabel"`
} `json:"grid"`
XAxis struct {
Name string `json:"name"`
} `json:"xAxis"`
YAxis struct {
Type string `json:"type"`
} `json:"yAxis"`
VisualMap struct {
Orient string `json:"orient"`
Left string `json:"left"`
Min int `json:"min"`
Max int `json:"max"`
Show bool `json:"show"`
Dimension int `json:"dimension"`
InRange struct {
Color []string `json:"color"`
} `json:"inRange"`
} `json:"visualMap"`
Series []struct {
Label struct {
Position string `json:"position"`
Show bool `json:"show"`
Formatter string `json:"formatter"`
} `json:"label"`
Type string `json:"type"`
Encode struct {
X string `json:"x"`
Y string `json:"y"`
} `json:"encode"`
} `json:"series"`
}
type Piechart struct {
// ID int `json:"id"`
// Xsamplename string `json:"Xsamplename"`
// Email string `json:"email"`
// CreatedAt time.Time `json:"created_at,omitempty"`
Title struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
} `json:"title"`
Tooltip struct {
Trigger string `json:"trigger"`
} `json:"tooltip"`
Legend struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
} `json:"legend"`
Series []Series `json:"series"`
}
type ServicesPiechart struct {
Piechart Piechart
Barchart Barchart
BarChartStore db.BarChartStore
PieChartStore db.PieChartStore
}
// func (su *ServicesPiechart) GetAllXsamples() ([]Piechart, error) {
// query := `SELECT id, Xsamplename, email, created_at FROM Xsamples ORDER BY created_at DESC`
// rows, err := su.PieChartStore.Db.Query(query)
// if err != nil {
// return []Piechart{}, err
// }
// // We close the resource
// defer rows.Close()
// Xsamples := []Piechart{}
// for rows.Next() {
// rows.Scan(
// &su.Piechart.ID,
// &su.Piechart.Xsamplename,
// &su.Piechart.Email,
// &su.Piechart.CreatedAt,
// )
// Xsamples = append(Xsamples, su.Piechart)
// }
// return Xsamples, nil
// }
// func (su *ServicesPiechart) GetXsampleById(id int) (Piechart, error) {
// query := `SELECT id, Xsamplename, email, created_at FROM Xsamples
// WHERE id = ?`
// stmt, err := su.PieChartStore.Db.Prepare(query)
// if err != nil {
// return Piechart{}, err
// }
// defer stmt.Close()
// su.Piechart.ID = id
// err = stmt.QueryRow(
// su.Piechart.ID,
// ).Scan(
// &su.Piechart.ID,
// &su.Piechart.Xsamplename,
// &su.Piechart.Email,
// &su.Piechart.CreatedAt,
// )
// if err != nil {
// return Piechart{}, err
// }
// return su.Piechart, nil
// }
// Peserta MCU -- MCU001
func GetPieChartMcu001(code string, id int) (string, Piechart, error) {
var title = "Peserta MCU"
option := Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: "Total Peserta 506",
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
// KALAU BERTABRAKAN DGN ATASNYA SETTING PAKE DIBAWAH INI
// Top: "bottom",
// Left: "center",
// Orient: "horizontal",
},
Series: []Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: []SeriesData{
{Value: 506, Name: "Sudah MCU : 506 Peserta"},
{Value: 54, Name: "Belum MCU : 54 Peserta"},
},
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
return title, option, nil
}
// Kepersertaan MCU Berdasarkan Jenis Kelamin -- MCU002
func GetPieChartMcu002(code string, id int) (string, Piechart, error) {
var title = "Kepesertaan MCU"
option := Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: "Berdasarkan Jenis Kelamin",
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
// KALAU BERTABRAKAN DGN ATASNYA SETTING PAKE DIBAWAH INI
// Top: "bottom",
// Left: "center",
// Orient: "horizontal",
},
Series: []Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: []SeriesData{
{Value: 143, Name: "Laki-laki : 143 Peserta"},
{Value: 114, Name: "Perempuan : 114 Peserta"},
},
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
return title, option, nil
}
// Peserta MCU berdasarkan umur
func GetPieChartMcu003(code string, id int) (string, Piechart, error) {
var title = "Peserta MCU"
option := Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: "Berdasarkan Umur",
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
// KALAU BERTABRAKAN DGN ATASNYA SETTING PAKE DIBAWAH INI
// Top: "bottom",
// Left: "center",
// Orient: "horizontal",
},
Series: []Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: []SeriesData{
{Value: 188, Name: "< 30 Tahun : 188 Peserta"},
{Value: 194, Name: "30 - < 40 Tahun : 194 Peserta"},
{Value: 123, Name: "40 - < 50 Tahun : 123 Peserta"},
{Value: 55, Name: "≥ 50 Tahun : 55 Peserta"},
},
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
return title, option, nil
}
// Status Index Masa Tubuh (BMI) -- MCU006
func GetPieChartMcu006(code string, id int) (string, Piechart, error) {
var title = "Status Index Masa Tubuh (BMI)"
option := Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: "",
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
// KALAU BERTABRAKAN DGN ATASNYA SETTING PAKE DIBAWAH INI
// Top: "bottom",
// Left: "center",
// Orient: "horizontal",
},
Series: []Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: []SeriesData{
{Value: 19, Name: "Underweight : 19 Peserta"},
{Value: 104, Name: "Normal : 104 Peserta"},
{Value: 230, Name: "Obese 1 : 230 Peserta"},
{Value: 99, Name: "Obese 2 : 99 Peserta"},
},
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
return title, option, nil
}
// Kriteria Hipertensi -- MCU007
func GetPieChartMcu007(code string, id int) (string, Piechart, error) {
var title = "Kriteria Hipertensi"
option := Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: "",
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
// KALAU BERTABRAKAN DGN ATASNYA SETTING PAKE DIBAWAH INI
// Top: "bottom",
// Left: "center",
// Orient: "horizontal",
},
Series: []Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: []SeriesData{
{Value: 237, Name: "Normal : 237 Peserta"},
{Value: 215, Name: "Prehipertensi : 215 Peserta"},
{Value: 66, Name: "Hipertensi Grade I : 66 Peserta"},
{Value: 33, Name: "Hipertensi Grade II : 33 Peserta"},
},
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
return title, option, nil
}
// Visus Jauh -- MCU008
func GetPieChartMcu008(code string, id int) (string, Piechart, error) {
var title = "Visus Jauh"
option := Piechart{
Title: struct {
Text string `json:"text"`
SubText string `json:"subtext"`
Left string `json:"left"`
}{
Text: title,
SubText: "",
Left: "center",
},
Tooltip: struct {
Trigger string `json:"trigger"`
}{
Trigger: "item",
},
Legend: struct {
Top string `json:"top"`
Left string `json:"left"`
Orient string `json:"orient"`
}{
Top: "bottom",
Left: "center",
Orient: "vertical",
// KALAU BERTABRAKAN DGN ATASNYA SETTING PAKE DIBAWAH INI
// Top: "bottom",
// Left: "center",
// Orient: "horizontal",
},
Series: []Series{
{
Label: struct {
Position string `json:"position"`
Formatter string `json:"formatter"`
}{
Position: "inner",
Formatter: "{d}%",
},
Name: "Access From",
Type: "pie",
Radius: []string{"20%", "50%"},
ItemStyle: struct {
BorderRadius int `json:"borderRadius"`
BorderColor string `json:"borderColor"`
BorderWidth int `json:"borderWidth"`
}{
BorderRadius: 10,
BorderColor: "#fff",
BorderWidth: 2,
},
Data: []SeriesData{
{Value: 237, Name: "Normal : 237 Peserta"},
{Value: 194, Name: "Kelainan Refraksi : 194 Peserta"},
{Value: 64, Name: "Kelainan Refraksi terkoreksi : 64 Peserta"},
{Value: 56, Name: "Kelainan Refraksi tidak terkoreksi : 56 Peserta"},
},
Emphasis: struct {
ItemStyle struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
} `json:"itemStyle"`
}{
ItemStyle: struct {
ShadowBlur int `json:"shadowBlur"`
ShadowOffsetX int `json:"shadowOffsetX"`
ShadowColor string `json:"shadowColor"`
}{
ShadowBlur: 10,
ShadowOffsetX: 0,
ShadowColor: "rgba(0, 0, 0, 0.5)",
},
},
},
},
}
return title, option, nil
}
// Kelainan MCU - MCU004
func GetBarChartMcu004(code string, id int) (string, Barchart, error) {
title := "Kelainan MCU"
option := Barchart{}
option.Title = struct {
Text string "json:\"text\""
}{title}
option.Dataset = struct {
Source [][]interface{} "json:\"source\""
}{[][]interface{}{
{"score", "amount", "product", "percentage"},
{200, 447, "Body Mass Index"},
{150, 314, "Pemeriksaan Mata"},
{125, 314, "Fungsi Lemak"},
{100, 254, "Autospirometri"},
{90, 200, "Hematologi"},
{80, 180, "ECG"},
{75, 160, "Hiperuricemia"},
{70, 125, "Tekanan Darah"},
{60, 118, "Urine Lengkap"},
{50, 87, "Fungsi Hati"},
}}
option.Grid.ContainLabel = true
option.XAxis.Name = "amount"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 10
option.VisualMap.Max = 100
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#42aaf5", "#00eaf2", "#035bff"}
option.Series = []struct {
Label struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
} "json:\"label\""
Type string "json:\"type\""
Encode struct {
X string "json:\"x\""
Y string "json:\"y\""
} "json:\"encode\""
}{
{Label: struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
}{Position: "right", Show: true, Formatter: "{@[3]} %"},
Type: "bar", Encode: struct {
X string "json:\"x\""
Y string "json:\"y\""
}{X: "amount", Y: "product"}},
}
return title, option, nil
}
// Kelainan MCU - MCU004
func GetBarChartMcu005(code string, id int) (string, Barchart, error) {
title := "Kelainan Fisik"
option := Barchart{}
option.Title = struct {
Text string "json:\"text\""
}{title}
option.Dataset = struct {
Source [][]interface{} "json:\"source\""
}{[][]interface{}{
{"score", "amount", "product", "percentage"},
{200, 400, "Obesitas Stage 1"},
{150, 300, "Pre Hipertensi"},
{133, 250, "Kelainan Refraksi"},
{125, 180, "Overweight"},
{100, 125, "Obesitas Stage 2"},
{80, 100, "Hipertensi grade 1"},
{70, 80, "Kel. Refrakti terkoreksi"},
{60, 70, "Kel. Refrakti tidak terkoreksi"},
{55, 55, "Hipertensi grade 2"},
}}
option.Grid.ContainLabel = true
option.XAxis.Name = "amount"
option.YAxis.Type = "category"
option.VisualMap.Orient = "horizontal"
option.VisualMap.Left = "center"
option.VisualMap.Min = 10
option.VisualMap.Max = 100
option.VisualMap.Show = false
option.VisualMap.Dimension = 0
option.VisualMap.InRange.Color = []string{"#42aaf5", "#00eaf2", "#035bff"}
option.Series = []struct {
Label struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
} "json:\"label\""
Type string "json:\"type\""
Encode struct {
X string "json:\"x\""
Y string "json:\"y\""
} "json:\"encode\""
}{
{Label: struct {
Position string "json:\"position\""
Show bool "json:\"show\""
Formatter string "json:\"formatter\""
}{Position: "right", Show: true, Formatter: "{@[3]} %"},
Type: "bar", Encode: struct {
X string "json:\"x\""
Y string "json:\"y\""
}{X: "amount", Y: "product"}},
}
return title, option, nil
}
func (su *ServicesPiechart) GetPieChart(code string, id int) (string, Piechart, error) {
if code == "mcu001" {
return GetPieChartMcu001(code, id)
}
if code == "mcu002" {
return GetPieChartMcu002(code, id)
}
if code == "mcu003" {
return GetPieChartMcu003(code, id)
}
if code == "mcu006" {
return GetPieChartMcu006(code, id)
}
if code == "mcu007" {
return GetPieChartMcu007(code, id)
}
if code == "mcu008" {
return GetPieChartMcu008(code, id)
}
return "", Piechart{}, fmt.Errorf("code " + code + " not found")
}
func (su *ServicesPiechart) GetBarChart(code string, id int) (string, Barchart, error) {
if code == "mcu004" {
return GetBarChartMcu004(code, id)
}
if code == "mcu005" {
return GetBarChartMcu005(code, id)
}
return "", Barchart{}, fmt.Errorf("code " + code + " not found")
}

View File

@@ -0,0 +1,71 @@
package services
import (
"time"
"github.com/emarifer/go-templ-project-structure/db"
)
func NewServicesEmployee(u Employee, uStore db.EmployeeStore) *ServicesEmployee {
return &ServicesEmployee{
Employee: u,
EmployeeStore: uStore,
}
}
type Employee struct {
ID int `json:"id"`
Employeename string `json:"Employeename"`
Email string `json:"email"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type EmployeeService struct {
EmployeeID int `json:"EmployeeID"`
EmployeeTitle string `json:"EmployeeTitle"`
EmployeeDescription string `json:"EmployeeDescription"`
EmployeeStartDate string `json:"EmployeeStartDate"`
EmployeeEndDate string `json:"EmployeeEndDate"`
}
type ServicesEmployee struct {
Employee Employee
EmployeeStore db.EmployeeStore
}
func (se *ServicesEmployee) GetEmployeeService() ([]EmployeeService, error) {
data := []EmployeeService{
{
EmployeeID: 1,
EmployeeTitle: "MCU Calon Karyawan",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
{
EmployeeID: 2,
EmployeeTitle: "MCU Karyawan",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
{
EmployeeID: 1,
EmployeeTitle: "MCU Eselon 1",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
{
EmployeeID: 1,
EmployeeTitle: "MCU Eselon 2",
EmployeeDescription: "Tanggal Pelaksanaan",
EmployeeStartDate: "01/04/2024",
EmployeeEndDate: "06/04/2024",
},
}
return data, nil
}

View File

@@ -21,6 +21,25 @@ type LandingPage struct {
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ClientService struct {
ClientServiceID int `json:"ClientServiceID"`
ClientServiceName string `json:"ClientServiceName"`
ClientServiceDescription string `json:"ClientServiceDescription"`
ClientServiceIcon string `json:"ClientServiceIcon"`
ClientServiceLink string `json:"ClientServiceLink"`
}
type AdvantageClient struct {
AdvantageClientID int `json:"AdvantageClientID"`
AdvantageClientName string `json:"AdvantageClientName"`
AdvantageClientDesc string `json:"AdvantageClientDesc"`
}
type Promotion struct {
PromotionID int `json:"PromotionID"`
PromotionAsset string `json:"PromotionAsset"`
PromotionLink string `json:"PromotionLink"`
}
type ServicesLandingPage struct {
LandingPage LandingPage
LandingPageStore db.LandingPageStore
@@ -78,3 +97,109 @@ func (su *ServicesLandingPage) GetLandingPageById(id int) (LandingPage, error) {
return su.LandingPage, nil
}
func (su *ServicesLandingPage) GetClientService() ([]ClientService, error) {
data := []ClientService{
{
ClientServiceID: 1,
ClientServiceName: "In House Clinic",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "uil:clinic-medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 2,
ClientServiceName: "Laboratorium Test",
ClientServiceDescription: "Maintaining health in the workplace by carrying out promotional, preventive, curative and rehabilitative programs.",
ClientServiceIcon: "healthicons:clinical-a-outline",
ClientServiceLink: "/",
},
{
ClientServiceID: 3,
ClientServiceName: "Medical Check Up",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 4,
ClientServiceName: "Medical Check Up 2",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
{
ClientServiceID: 5,
ClientServiceName: "Medical Check Up 3",
ClientServiceDescription: "Supported by a professional medical, paramedical team, and as well as laboratory equipment ",
ClientServiceIcon: "jam:medical",
ClientServiceLink: "/",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetClientAdvantage() ([]AdvantageClient, error) {
data := []AdvantageClient{
{
AdvantageClientID: 1,
AdvantageClientName: "ISO Certificate",
AdvantageClientDesc: "Westerindo Clinical Laboratory has obtained ISO 15189:2009 (ISO 15189:2007) Accreditation from the National Accreditation Committee (KAN) and the Health Laboratory Accreditation Commission (KALK).",
},
{
AdvantageClientID: 2,
AdvantageClientName: "Modern Technology",
AdvantageClientDesc: "Laboratory Information System (LIS) is an information system in which laboratory equipment and diagnostic support have been integrated automatically so that examination results can be immediately filled in in employee data. This eliminates the possibility of human error.",
},
{
AdvantageClientID: 3,
AdvantageClientName: "Good Quality Facilities",
AdvantageClientDesc: "The laboratory and medical support equipment used at the Westerindo Clinical Laboratory is international scale for precise, fast and accurate results. Lab and medical equipment certificates are periodically renewed according to standards.",
},
{
AdvantageClientID: 4,
AdvantageClientName: "Professional Service",
AdvantageClientDesc: "Westerindo Clinical Laboratory is committed to providing professional and excellent service. Therefore, all staff and doctors at the Westerindo Clinical Laboratory have competency certification according to their field.",
},
{
AdvantageClientID: 5,
AdvantageClientName: "Experienced",
AdvantageClientDesc: "Westerindo Clinical Laboratory is very experienced in carrying out Medical Check Ups both onsite and insite, in all corners of Indonesia. Serving various kinds of companies, from oil and gas companies, automotive, manufacturing, offices, and others.",
},
}
return data, nil
}
func (su *ServicesLandingPage) GetPromotionList() ([]Promotion, error) {
data := []Promotion{
{
PromotionID: 1,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_1.png",
PromotionLink: "",
},
{
PromotionID: 2,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 3,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
{
PromotionID: 4,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_2.png",
PromotionLink: "",
},
{
PromotionID: 5,
PromotionAsset: "../../asset-corporate-portal/media/landingpage/promotion_3.png",
PromotionLink: "",
},
}
return data, nil
}

View File

@@ -0,0 +1,59 @@
package services
import (
"time"
"github.com/emarifer/go-templ-project-structure/db"
)
func NewServicesLogin(u Login, uStore db.LoginStore) *ServicesLogin {
return &ServicesLogin{
Login: u,
LoginStore: uStore,
}
}
type Login struct {
ID int `json:"id"`
Loginname string `json:"Loginname"`
Email string `json:"Email"`
Password string `json:"Password"`
CreatedAt time.Time `json:"created_at,omitempty"`
}
type ServicesLogin struct {
Login Login
LoginStore db.LoginStore
}
func (su *ServicesLogin) GetLogin(Email string, Password string) (Login, error) {
query := `SELECT id, Loginname, Email, Password, created_at FROM Login
WHERE Email = ? AND Password = ?`
stmt, err := su.LoginStore.Db.Prepare(query)
if err != nil {
return Login{}, err
}
defer stmt.Close()
su.Login.Email = Email
su.Login.Password = Password
err = stmt.QueryRow(
su.Login.Email,
su.Login.Password,
).Scan(
&su.Login.ID,
&su.Login.Loginname,
&su.Login.Email,
&su.Login.Password,
&su.Login.CreatedAt,
)
if err != nil {
return Login{}, err
}
return su.Login, nil
}

View File

@@ -0,0 +1,30 @@
package chart
templ ShowChart(idDiv string, udata string) {
<div id={ idDiv } class="mx-auto"></div>
@GenerateChart(idDiv, udata)
}
script GenerateChart(idDiv string, udata string) {
htmx.onLoad(function(elt) {
console.log("elt ",elt)
var element = document.getElementById(idDiv);
console.log("element ",element)
if (element) {
element.style.height = "400px";
element.style.width = "100%";
}
var myChart = {};
var option = {};
// var myChart_001 = echarts.init(document.getElementById(idDiv));
myChart[idDiv] = echarts.init(element);
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
console.log("option ", option)
// myChart_001.setOption(option_001);
myChart[idDiv].setOption(option[idDiv]);
});
}

View File

@@ -0,0 +1,82 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package chart
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
func ShowChart(idDiv string, udata string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(idDiv)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\component\chart\chart.templ`, Line: 4, Col: 19}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"mx-auto\"></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = GenerateChart(idDiv, udata).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func GenerateChart(idDiv string, udata string) templ.ComponentScript {
return templ.ComponentScript{
Name: `__templ_GenerateChart_4c73`,
Function: `function __templ_GenerateChart_4c73(idDiv, udata){htmx.onLoad(function(elt) {
console.log("elt ",elt)
var element = document.getElementById(idDiv);
console.log("element ",element)
if (element) {
element.style.height = "400px";
element.style.width = "100%";
}
var myChart = {};
var option = {};
// var myChart_001 = echarts.init(document.getElementById(idDiv));
myChart[idDiv] = echarts.init(element);
// var option_001 = JSON.parse(udata);
option[idDiv] = JSON.parse(udata);
console.log("option ", option)
// myChart_001.setOption(option_001);
myChart[idDiv].setOption(option[idDiv]);
});
}`,
Call: templ.SafeScript(`__templ_GenerateChart_4c73`, idDiv, udata),
CallInline: templ.SafeScriptInline(`__templ_GenerateChart_4c73`, idDiv, udata),
}
}

View File

@@ -0,0 +1,121 @@
package employee
import (
"github.com/emarifer/go-templ-project-structure/views/layout"
"github.com/emarifer/go-templ-project-structure/views/under_development"
)
templ MainEmployee(cardServiceComponent templ.Component) {
<div class="wrapper-custom">
<!-- Navbar Start -->
<nav
class="navbar navbar-expand-sm navbar-expand-lg navbar-lp justify-content-between"
>
<a class="navbar-brand" href="#">
<img
src="/asset-corporate-portal/media/landingpage/logo.png"
width="126"
height="40"
class="d-inline-block align-top"
alt="Your Brand"
/>
</a>
<img
src="/asset-corporate-portal/media/logo/foto.png"
alt="..."
class="item-foto rounded-circle"
/>
</nav>
<!-- Navbar End -->
<div class="d-block d-lg-none d-xl-none">
@under_development.UnderDevelopment()
</div>
<div class="d-none d-lg-block">
<!--begin::Page Heading-->
@HeadingEmployee("PT. Sadhana Abiyasa Sampoerna")
<!--end::Page Heading-->
<!-- content -->
<div class="align-items-center pt-15 flex-column">
<div class="bg-field rounded">
<div class="content-page">
<!-- card -->
@cardServiceComponent
<!-- end card -->
</div>
</div>
</div>
<!-- end content -->
</div>
</div>
}
templ CssEmployee() {
<style>
body {
background-color: white;
/* padding-right: 100px;
padding-left: 100px; */
}
.navbar-lp {
padding-top: 40px;
padding-bottom: 40px;
}
.title {
/* color: #FFF; */
font-family: Poppins;
font-size: 15px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 700;
}
.custom-card-lp {
border-radius: 24px;
border: 1px solid #d9d9d9;
margin-top: 40px;
}
.wrapper-custom {
/* background: #1B1D1F; */
padding-left: 10vw;
padding-right: 10vw;
}
.media-left-icon {
width: 40px;
height: 40px;
}
.items-content {
padding: 24px;
margin-bottom: 24px;
}
.content-page {
padding-top: 24px;
padding-left: 24px;
padding-right: 24px;
padding-bottom: 24px;
}
.item-foto {
width: 32px;
height: 32px;
}
.heading {
padding-top: 40px;
}
.card:hover {
background-color: rgba(197, 200, 211, 0.5);
}
</style>
}
templ JsEmployee() {
}
templ ShowEmployee(title string, cmp templ.Component, css templ.Component, js templ.Component) {
@layout.PlaygroundLayout(title, css, js) {
@cmp
}
}

View File

@@ -0,0 +1,147 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package employee
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import (
"github.com/emarifer/go-templ-project-structure/views/layout"
"github.com/emarifer/go-templ-project-structure/views/under_development"
)
func MainEmployee(cardServiceComponent templ.Component) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"wrapper-custom\"><!-- Navbar Start --><nav class=\"navbar navbar-expand-sm navbar-expand-lg navbar-lp justify-content-between\"><a class=\"navbar-brand\" href=\"#\"><img src=\"/asset-corporate-portal/media/landingpage/logo.png\" width=\"126\" height=\"40\" class=\"d-inline-block align-top\" alt=\"Your Brand\"></a> <img src=\"/asset-corporate-portal/media/logo/foto.png\" alt=\"...\" class=\"item-foto rounded-circle\"></nav><!-- Navbar End --><div class=\"d-block d-lg-none d-xl-none\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = under_development.UnderDevelopment().Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"d-none d-lg-block\"><!--begin::Page Heading-->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = HeadingEmployee("PT. Sadhana Abiyasa Sampoerna").Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Page Heading--><!-- content --><div class=\"align-items-center pt-15 flex-column\"><div class=\"bg-field rounded\"><div class=\"content-page\"><!-- card -->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = cardServiceComponent.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!-- end card --></div></div></div><!-- end content --></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func CssEmployee() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var2 := templ.GetChildren(ctx)
if templ_7745c5c3_Var2 == nil {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<style>\r\n body {\r\n background-color: white;\r\n /* padding-right: 100px;\r\n padding-left: 100px; */\r\n }\r\n\r\n .navbar-lp {\r\n padding-top: 40px;\r\n padding-bottom: 40px;\r\n }\r\n\r\n .title {\r\n /* color: #FFF; */\r\n font-family: Poppins;\r\n font-size: 15px;\r\n /* font-size: 1vw; */\r\n font-style: normal;\r\n font-weight: 700;\r\n }\r\n\r\n .custom-card-lp {\r\n border-radius: 24px;\r\n border: 1px solid #d9d9d9;\r\n margin-top: 40px;\r\n }\r\n\r\n .wrapper-custom {\r\n /* background: #1B1D1F; */\r\n padding-left: 10vw;\r\n padding-right: 10vw;\r\n }\r\n\r\n .media-left-icon {\r\n width: 40px;\r\n height: 40px;\r\n }\r\n\r\n .items-content {\r\n padding: 24px;\r\n margin-bottom: 24px;\r\n }\r\n .content-page {\r\n padding-top: 24px;\r\n padding-left: 24px;\r\n padding-right: 24px;\r\n padding-bottom: 24px;\r\n }\r\n .item-foto {\r\n width: 32px;\r\n height: 32px;\r\n }\r\n .heading {\r\n padding-top: 40px;\r\n }\r\n .card:hover {\r\n background-color: rgba(197, 200, 211, 0.5);\r\n }\r\n </style>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func JsEmployee() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ShowEmployee(title string, cmp templ.Component, css templ.Component, js templ.Component) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var5 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
templ_7745c5c3_Err = cmp.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer)
}
return templ_7745c5c3_Err
})
templ_7745c5c3_Err = layout.PlaygroundLayout(title, css, js).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -0,0 +1,60 @@
package employee
import (
"github.com/emarifer/go-templ-project-structure/services"
)
templ CardService(title string, description string, startdate string, enddate string) {
<a href="">
<div class="items-content card shadow">
<div class="row d-flex align-items-center">
<div class="col-7">
<h3 class="text-black">{ title }</h3>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde">{ description }</span>
</div>
<div class="col-md col-lg text-right">
<span class="text-black font-weight-bolde">{ startdate } - { enddate }</span>
</div>
</div>
</div>
</a>
}
templ ListCardService(cardData []services.EmployeeService) {
for _, d := range cardData {
@CardService(d.EmployeeTitle, d.EmployeeDescription, d.EmployeeStartDate, d.EmployeeEndDate)
}
}
templ HeadingEmployee(title string) {
<div class="heading d-flex justify-content-between">
<div class="align-items-center flex-wrap">
<!--begin::Page Title-->
<h5 class="text-dark font-weight-bold my-1 mr-5">
{ title }
</h5>
<!--end::Page Title-->
<!--begin::Breadcrumb-->
<ul
class="breadcrumb breadcrumb-transparent font-weight-bold p-0 my-2 font-size-sm"
>
<li class="breadcrumb-item">
<a href="" class="text-muted">Dashboard</a>
</li>
<li class="breadcrumb-item">
<a href="" class="text-muted">Employee Health Medical Analytic</a>
</li>
</ul>
<!--end::Breadcrumb-->
</div>
<div class="d-flex align-items-center">
<!--begin::Actions-->
<a href="#" class="btn btn-primary font-weight-bolder btn-lg">
<i class="fas fa-filter"></i> Filter
</a>
<!--end::Actions-->
</div>
</div>
}

View File

@@ -0,0 +1,154 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package employee
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import (
"github.com/emarifer/go-templ-project-structure/services"
)
func CardService(title string, description string, startdate string, enddate string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<a href=\"\"><div class=\"items-content card shadow\"><div class=\"row d-flex align-items-center\"><div class=\"col-7\"><h3 class=\"text-black\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\employee\employeecomponent.templ`, Line: 12, Col: 35}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</h3></div><div class=\"col-md col-lg text-right\"><span class=\"text-black font-weight-bolde\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(description)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\employee\employeecomponent.templ`, Line: 15, Col: 61}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</span></div><div class=\"col-md col-lg text-right\"><span class=\"text-black font-weight-bolde\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(startdate)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\employee\employeecomponent.templ`, Line: 18, Col: 59}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" - ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(enddate)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\employee\employeecomponent.templ`, Line: 18, Col: 73}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</span></div></div></div></a>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ListCardService(cardData []services.EmployeeService) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var6 := templ.GetChildren(ctx)
if templ_7745c5c3_Var6 == nil {
templ_7745c5c3_Var6 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
for _, d := range cardData {
templ_7745c5c3_Err = CardService(d.EmployeeTitle, d.EmployeeDescription, d.EmployeeStartDate, d.EmployeeEndDate).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func HeadingEmployee(title string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var7 := templ.GetChildren(ctx)
if templ_7745c5c3_Var7 == nil {
templ_7745c5c3_Var7 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"heading d-flex justify-content-between\"><div class=\"align-items-center flex-wrap\"><!--begin::Page Title--><h5 class=\"text-dark font-weight-bold my-1 mr-5\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\employee\employeecomponent.templ`, Line: 36, Col: 11}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</h5><!--end::Page Title--><!--begin::Breadcrumb--><ul class=\"breadcrumb breadcrumb-transparent font-weight-bold p-0 my-2 font-size-sm\"><li class=\"breadcrumb-item\"><a href=\"\" class=\"text-muted\">Dashboard</a></li><li class=\"breadcrumb-item\"><a href=\"\" class=\"text-muted\">Employee Health Medical Analytic</a></li></ul><!--end::Breadcrumb--></div><div class=\"d-flex align-items-center\"><!--begin::Actions--><a href=\"#\" class=\"btn btn-primary font-weight-bolder btn-lg\"><i class=\"fas fa-filter\"></i> Filter\r</a><!--end::Actions--></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -4,55 +4,18 @@ import (
"github.com/emarifer/go-templ-project-structure/views/layout"
)
templ BodyLandingPage() {
<div class="cards-wrapper carousel slide carousel-fade" id="carouselExampleControls" data-ride="carousel">
<div class="carousel-inner">
<div class="card carousel-item active">
<img src="..." class="card-img-top" alt="..."/>
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
<div class="card carousel-item">
<img src="..." class="card-img-top" alt="..."/>
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
<div class="card carousel-item">
<img src="..." class="card-img-top" alt="..."/>
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<br/>
<br/>
<br/>
<div class="wrapper-custom">
templ MainLandingPage(medicalServiceComponent templ.Component, listAdvantageComponent templ.Component, listPromotion templ.Component, footer templ.Component) {
<div class="wrapper-custom mb-25">
<!-- Navbar Start -->
<nav
class="navbar navbar-expand-sm navbar-expand-lg navbar-lp justify-content-between"
>
<a class="navbar-brand" href="#">
<img
src="../../../asset-corporate-portal/media/landingpage/logo.png"
class="d-inline-block align-top w-logo"
src="/asset-corporate-portal/media/landingpage/logo.png"
width="126"
height="40"
class="d-inline-block align-top"
alt="Your Brand"
/>
</a>
@@ -63,601 +26,329 @@ templ BodyLandingPage() {
<!-- Navbar End -->
<!-- jumbotron START -->
<!-- <div class="jumbotron jumbotron-lp d-none d-lg-block"> -->
<div class="jumbotron bg-primary">
<div class="container">
<div class="row">
<div class="col-md-8 d-flex flex-column">
<div class="mb-3">
<h1 class="title-jumbotron text-white">
Invest in Your Well-being with Our Comprehensive Medical
Check-Up
</h1>
<p class="sub-title-jumbotron text-white">
Elevate your health journey with our thorough medical
assessments, empowering you to take proactive steps towards a
healthier, happier life.
</p>
<button type="button" class="btn btn-lg btn-pill bg-white">
<span class="title-get-started">Get Started</span>
</button>
</div>
<div class="mt-auto"></div>
</div>
<div class="col-md-4 d-flex justify-content-md-end">
<div class="jumbotron-left">
<img
src="../../..//asset-corporate-portal/media/landingpage/jumbotron_left.png"
class="img-fluid"
alt="Your Brand"
style="width: 100%; height: 100%"
/>
</div>
</div>
</div>
</div>
</div>
@HeaderCard()
<!-- jumbotron END -->
<!-- Our Medical Service START -->
<div class="container">
<div class="row">
<div class="col-md-12 text-left">
<h2 class="title-section text-black">Our Medical Services</h2>
<p class="sub-title-section text-black">
Discover excellence in healthcare at Our Medical Services. From
diagnosis to treatment, our dedicated team provides personalized
care for your well-being.
</p>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="card custom-card-lp">
<div class="card-body">
<div class="icon-container bg-primary-transparent">
<span
class="iconify text-primary w-20 h-20"
data-icon="uil:clinic-medical"
></span>
</div>
<h5 class="card-title title-fs-20">In House Clinic</h5>
<p class="card-text sub-title-fs-12">
Maintaining health in the workplace by carrying out
promotional, preventive, curative and rehabilitative programs.
</p>
<a href="#" class="link-learn-more text-primary">
Learn More
<span
class="iconify text-primary w-20 h-20"
data-icon="eva:arrow-forward-outline"
></span>
</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card custom-card-lp">
<div class="card-body">
<div class="icon-container bg-primary-transparent">
<span
class="iconify text-primary w-20 h-20"
data-icon="healthicons:clinical-a-outline"
></span>
</div>
<h5 class="card-title title-fs-20">Laboratorium Test</h5>
<p class="card-text sub-title-fs-12">
Maintaining health in the workplace by carrying out
promotional, preventive, curative and rehabilitative programs.
</p>
<a href="#" class="link-learn-more text-primary">
Learn More
<span
class="iconify text-primary w-20 h-20"
data-icon="eva:arrow-forward-outline"
></span>
</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card custom-card-lp">
<div class="card-body">
<div class="icon-container bg-primary-transparent">
<span
class="iconify text-primary w-20 h-20"
data-icon="jam:medical"
></span>
</div>
<h5 class="card-title title-fs-20">Medical Check Up</h5>
<p class="card-text sub-title-fs-12">
Maintaining health in the workplace by carrying out
promotional, preventive, curative and rehabilitative programs.
</p>
<a href="#" class="link-learn-more text-primary">
Learn More
<span
class="iconify text-primary w-20 h-20"
data-icon="eva:arrow-forward-outline"
></span>
</a>
</div>
</div>
</div>
</div>
<div class="row">
@HeaderSection("Our Medical Services", "Discover excellence in healthcare at Our Medical Services. From diagnosis to treatment, our dedicated team provides personalized care for your well-being.")
</div>
@medicalServiceComponent
<!-- Our Medical Service END -->
<!-- Why Westerindo START belum fix di ukuran < 1400 -->
<div class="container mt-5">
<div class="container p-0 mt-5 ">
<div class="row">
<div class="col-md-12 col-lg-12 text-left">
<h2 class="title-section text-black">Why Westerindo</h2>
<p class="sub-title-section text-black">
With a dedicated team of professionals were committed to
providing medical attention tailored to your needs, ensuring a
journey to optimal health and vitality.
</p>
</div>
</div>
<div class="row mt-5">
<div class="col-md-6">
<img
src="../../..//asset-corporate-portal/media/landingpage/why_westerindo_right.png"
alt="Your Brand"
class="align-top w-100 h-100 pt-4 pb-4"
/>
</div>
<div class="col-md-6 d-flex flex-column">
<!-- 1 -->
<div class="row flex-grow-1">
<div class="media">
<div class="media-left">
<span
class="iconify text-primary media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">ISO Certificate</h4>
<p class="sub-title-fs-12 text-black ml-4">
Westerindo Clinical Laboratory has obtained ISO 15189:2009
(ISO 15189:2007) Accreditation from the National
Accreditation Committee (KAN) and the Health Laboratory
Accreditation Commission (KALK).
</p>
</div>
</div>
</div>
<!-- 2 -->
<div class="row flex-grow-1">
<div class="media">
<div class="media-left">
<span
class="iconify text-primary media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">Modern Technology</h4>
<p class="sub-title-fs-12 text-black ml-4">
Laboratory Information System (LIS) is an information system
in which laboratory equipment and diagnostic support have
been integrated automatically so that examination results
can be immediately filled in in employee data. This
eliminates the possibility of human error.
</p>
</div>
</div>
</div>
<!-- 3 -->
<div class="row flex-grow-1">
<div class="media">
<div class="media-left">
<span
class="iconify media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">
Good Quality Facilities
</h4>
<p class="sub-title-fs-12 text-black ml-4">
The laboratory and medical support equipment used at the
Westerindo Clinical Laboratory is international scale for
precise, fast and accurate results. Lab and medical
equipment certificates are periodically renewed according to
standards.
</p>
</div>
</div>
</div>
<!-- 4 -->
<div class="row flex-grow-1">
<div class="media">
<div class="media-left">
<span
class="iconify media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">
Professional Service
</h4>
<p class="sub-title-fs-12 text-black ml-4">
Westerindo Clinical Laboratory is committed to providing
professional and excellent service. Therefore, all staff and
doctors at the Westerindo Clinical Laboratory have
competency certification according to their field.
</p>
</div>
</div>
</div>
<!-- 5 -->
<div class="row">
<div class="media">
<div class="media-left">
<span
class="iconify media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">Experienced</h4>
<p class="sub-title-fs-12 text-black ml-4">
Westerindo Clinical Laboratory is very experienced in
carrying out Medical Check Ups both onsite and insite, in
all corners of Indonesia. Serving various kinds of
companies, from oil and gas companies, automotive,
manufacturing, offices, and others.
</p>
</div>
</div>
</div>
</div>
@HeaderSection("Why Westerindo", "With a dedicated team of professionals were committed to providing medical attention tailored to your needs, ensuring a journey to optimal health and vitality.")
</div>
@listAdvantageComponent
</div>
<!-- Why Westerindo END -->
<!-- Promotion START -->
<div class="container mt-4">
<div class="row">
<div class="col-md-12 text-left">
<h2 class="title-section text-black">Promotions</h2>
<p class="sub-title-section text-black">
Seize This Opportunity to Enhance Your Health
</p>
</div>
</div>
<div class="row mt-4 mb-2">
<div class="col-md-4 mt-2">
<img
src="../../..//asset-corporate-portal/media/landingpage/promotion_1.png"
class="img-fluid"
alt="Your Brand"
/>
</div>
<div class="col-md-4 mt-2">
<img
src="../../..//asset-corporate-portal/media/landingpage/promotion_2.png"
class="img-fluid"
alt="Your Brand"
/>
</div>
<div class="col-md-4 mt-2">
<img
src="../../..//asset-corporate-portal/media/landingpage/promotion_3.png"
class="img-fluid"
alt="Your Brand"
/>
</div>
@HeaderSection("Promotions", "Seize This Opportunity to Enhance Your Health")
</div>
@listPromotion
</div>
<!-- Promotion END -->
<!-- footer START -->
@footer
<!-- footer END -->
</div>
<!-- footer START -->
<footer class="wrapper-custom bg-black pb-25 pt-25">
<div class="row mb-5">
<div class="col-md-12 col-lg">
<img
src="asset-corporate-portal/media/landingpage/logo.png"
class="logo-footer"
width="126"
height="40"
alt="Your Brand"
/>
<div class="text-white d-flex flex-row mb-3">
<!-- style="display: flex; flex-direction: row; color: white;align-items: start; margin-bottom: 24px;" -->
<div class="mr-3 mt-1">
<i
class="fas fa-map-marker-alt marker footer-icon text-warning"
></i>
</div>
<div class="flex-grow-1">
<p class="footer-sub-title text-grey">
Jl. Cipaku I No.5, RT.2/RW.4, Petogogan, Kec. Kby. Baru, Kota
Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12170
</p>
</div>
</div>
<div class="d-flex flex-row">
<div class="mr-3 mt-1">
<i class="fas fa-phone footer-icon text-warning"></i>
</div>
<div class="flex-grow-1">
<p class="footer-sub-title text-grey">021-7392345</p>
<p class="footer-sub-title text-grey">021-2702525</p>
<p class="footer-sub-title text-grey">021-7255080</p>
</div>
</div>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white mb-3">Dashboard</h4>
<p class="footer-sub-title text-grey">
Employee Medical Health Analytic Clinic Admission
</p>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white">Benefit</h4>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white">Finance & Claims</h4>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white">Membership</h4>
</div>
</div>
<div class="garis bg-grey"></div>
<div class="row mt-4">
<div class="col-md-6">
<p class="footer-sub-title text-grey">
© Copyright 2024. Organized PT SADHANA ABIYASA SAMPOERNA (Privacy
Policy)
</p>
</div>
<div class="col-md-6 text-right">
<p class="footer-icons">
<a href="#" class="mr-3"><i class="fab fa-whatsapp"></i></a>
<a href="#" class="mr-3"><i class="fab fa-facebook"></i></a>
<a href="#"><i class="fab fa-instagram"></i></a>
</p>
</div>
</div>
</footer>
<!-- footer END -->
}
templ CssLandingPage() {
<link
rel="stylesheet"
href="assets/css/googlefont/poppins.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/publicsans.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/roboto.css"
/>
<!-- slick -->
<link
rel="stylesheet"
type="text/css"
href="assets/css/slick/slick.css"
/>
<link
rel="stylesheet"
type="text/css"
href="assets/css/slick/slick-theme.css"
/>
<style>
body {
background-color: white;
/* padding-right: 100px;
body {
background-color: white;
/* padding-right: 100px;
padding-left: 100px; */
}
}
.navbar-lp {
padding-top: 40px;
padding-bottom: 40px;
}
.navbar-lp {
padding-top: 40px;
padding-bottom: 40px;
}
.jumbotron-lp {
border-radius: 32px;
/* background: #3B4F9F; */
}
.jumbotron-lp {
border-radius: 32px;
/* background: #3B4F9F; */
}
.title {
/* color: #FFF; */
font-family: Poppins;
font-size: 15px;
/* font-size: 1vw; */
.title {
/* color: #FFF; */
font-family: Poppins;
font-size: 15px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 700;
}
.title-jumbotron-sm {
/* color: #FFF; */
font-family: Poppins;
font-size: 32px;
/* font-size: 3vw; */
font-style: normal;
font-weight: 600;
}
.title-jumbotron-md {
/* color: #FFF; */
font-family: Poppins;
font-size: 42px;
/* font-size: 3vw; */
font-style: normal;
font-weight: 600;
}
.title-jumbotron {
/* color: #FFF; */
font-family: Poppins;
font-size: 52px;
/* font-size: 3vw; */
font-style: normal;
font-weight: 600;
}
.sub-title-jumbotron {
/* color: #FFF; */
font-family: Poppins;
font-size: 16px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 400;
}
.btn-login {
border-radius: 40px;
/* background-color: #3B4F9F; */
box-shadow: 0px 8px 16px 0px rgba(59, 79, 159, 0.24);
}
.title-get-started {
/* color: #0C518C; */
font-family: Poppins;
font-size: 20px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 700;
}
.custom-button-get-started {
border-radius: 40px;
/* background-color: #FFF; */
box-shadow: 0px 8px 16px 0px rgba(12, 81, 140, 0.24);
padding: 20px;
margin-top: 44px;
justify-content: center;
align-items: center;
width: 242px;
}
.title-section {
/* color: #000; */
font-family: Poppins;
font-size: 40px;
/* font-size: 3vw; */
font-style: normal;
font-weight: 600;
line-height: 80px;
margin-bottom: 16px;
}
.sub-title-section {
/* color: #212B36; */
font-family: Poppins;
font-size: 20px;
/* font-size: 1.5vw; */
font-style: normal;
font-weight: 400;
line-height: 36px;
}
.custom-card-lp {
border-radius: 24px;
border: 1px solid #d9d9d9;
margin-top: 40px;
}
.title-fs-20 {
/* color: #0E1E28; */
font-family: Poppins;
font-size: 20px;
/* font-size: 1.5vw; */
font-style: normal;
/* font-weight: 500; */
line-height: 36px;
}
.sub-title-fs-12 {
/* color: #0E1E28; */
font-family: Poppins;
font-size: 12px;
/* font-size: 0.9vw; */
font-style: normal;
font-weight: 400;
line-height: 20px;
margin-bottom: 16px;
}
.icon-container {
display: inline-block;
border-radius: 8px;
margin-bottom: 16px;
width: 40px;
height: 40px;
text-align: center;
line-height: 40px;
}
.link-learn-more {
/* color: #3B4F9F; */
font-family: Poppins;
font-size: 16px;
font-style: normal;
font-weight: 500;
line-height: normal;
text-decoration: none;
}
.wrapper-custom {
/* background: #1B1D1F; */
padding-left: 10vw;
padding-right: 10vw;
}
.media-left-icon {
width: 40px;
height: 40px;
}
.footer-title {
/* color: #FFF; */
font-family: Poppins;
font-size: 14px;
font-style: normal;
font-weight: 500;
line-height: 20px;
}
.footer-sub-title {
/* color: #C3C4C5; */
font-family: Poppins;
font-size: 12px;
font-style: normal;
font-weight: 400;
line-height: 20px;
}
.logo-footer {
margin-bottom: 24px;
margin-top: -20px;
}
.garis {
/* background: #C3C4C5; */
height: 0.2px;
}
.card-footer {
background-color: transparent !important;
border: none;
}
.slick-prev:before,
.slick-next:before {
color: var(--primarybg);
}
.img-header {
object-fit: contain;
}
.underdev {
font-family: "Public Sans";
font-size: 64px;
font-style: normal;
font-weight: 700;
}
.title-jumbotron {
/* color: #FFF; */
font-family: Poppins;
font-size: 52px;
/* font-size: 3vw; */
font-style: normal;
font-weight: 600;
}
.sub-title-jumbotron {
/* color: #FFF; */
font-family: Poppins;
font-size: 16px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 400;
}
.btn-login {
border-radius: 40px;
/* background-color: #3B4F9F; */
box-shadow: 0px 8px 16px 0px rgba(59, 79, 159, 0.24);
}
.title-get-started {
/* color: #0C518C; */
font-family: Poppins;
font-size: 20px;
/* font-size: 1vw; */
font-style: normal;
font-weight: 700;
}
.custom-button-get-started {
border-radius: 40px;
/* background-color: #FFF; */
box-shadow: 0px 8px 16px 0px rgba(12, 81, 140, 0.24);
padding: 20px;
margin-top: 44px;
justify-content: center;
align-items: center;
width: 242px;
}
.title-section {
/* color: #000; */
font-family: Poppins;
font-size: 40px;
/* font-size: 3vw; */
font-style: normal;
font-weight: 600;
line-height: 80px;
margin-bottom: 16px;
}
.sub-title-section {
/* color: #212B36; */
font-family: Poppins;
font-size: 20px;
/* font-size: 1.5vw; */
font-style: normal;
font-weight: 400;
line-height: 36px;
}
.custom-card-lp {
border-radius: 24px;
border: 1px solid #d9d9d9;
margin-top: 40px;
}
.title-fs-20 {
/* color: #0E1E28; */
font-family: Poppins;
font-size: 20px;
/* font-size: 1.5vw; */
font-style: normal;
/* font-weight: 500; */
line-height: 36px;
}
.sub-title-fs-12 {
/* color: #0E1E28; */
font-family: Poppins;
font-size: 12px;
/* font-size: 0.9vw; */
font-style: normal;
font-weight: 400;
line-height: 20px;
margin-bottom: 16px;
}
.icon-container {
display: inline-block;
border-radius: 8px;
margin-bottom: 16px;
width: 40px;
height: 40px;
text-align: center;
line-height: 40px;
}
.link-learn-more {
/* color: #3B4F9F; */
font-family: Poppins;
font-size: 16px;
font-style: normal;
font-weight: 500;
line-height: normal;
text-decoration: none;
}
.wrapper-custom {
/* background: #1B1D1F; */
padding-left: 10vw;
padding-right: 10vw;
}
.media-left-icon {
width: 40px;
height: 40px;
}
.footer-title {
/* color: #FFF; */
font-family: Poppins;
font-size: 14px;
font-style: normal;
font-weight: 500;
line-height: 20px;
}
.footer-sub-title {
/* color: #C3C4C5; */
font-family: Poppins;
font-size: 12px;
.underdevsub {
font-family: "Public Sans";
font-size: 26px;
font-style: normal;
font-weight: 400;
line-height: 20px;
line-height: normal;
}
.logo-footer {
margin-bottom: 24px;
margin-top: -20px;
}
.garis {
/* background: #C3C4C5; */
height: 0.2px;
}
.w-logo {
width: 126px;
height: 40px;
}
.jumbotron-left {
flex: 2;
margin: 10px;
display: flex;
align-items: center;
}
.cards-wrapper {
display: flex;
justify-content: center;
}
.card img {
max-width: 100%;
max-height: 100%;
}
.carousel-control-prev,
.carousel-control-next {
background-color: #e1e1e1;
width: 5vh;
height: 5vh;
border-radius: 50%;
top: 50%;
transform: translateY(-50%);
}
</style>
</style>
}
templ JsLandingPage() {
<!--begin::Page Vendors(used by this page)-->
<script src="assets/plugins/custom/fullcalendar/fullcalendar.bundle.js"></script>
<!--end::Page Vendors-->
<!--begin::Page Scripts(used by this page)-->
<script src="assets/js/pages/widgets.js"></script>
<!--end::Page Scripts-->
<!-- echartjs.min.js -->
<script src="assets/js/echarts-js/echart.min.js"></script>
<!-- helper htmx -->
<script src="assets/js/helper-htmx/helper.js"></script>
<!-- iconify -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js" integrity="sha512-lYMiwcB608+RcqJmP93CMe7b4i9G9QK1RbixsNu4PzMRJMsqr/bUrkXUuFzCNsRUo3IXNUr5hz98lINURv5CNA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<!-- htmx -->
<script src="https://unpkg.com/htmx.org@1.9.11/dist/htmx.js" integrity="sha384-l9bYT9SL4CAW0Hl7pAOpfRc18mys1b0wK4U8UtGnWOxPVbVMgrOdB+jyz/WY8Jue" crossorigin="anonymous"></script>
<!-- SCRIPT -->
<script type="text/javascript" async></script>
<script type="text/javascript" src="assets/js/slick/slick.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
// lg
$(".responsive-lg").slick({
dots: false,
autoplay: true,
autoplaySpeed: 2000,
infinite: true,
lazyLoad: "ondemand",
slidesToShow: 3,
slidesToScroll: 3,
nextArrow: '<button type="button" class="slick-next">Next</button>',
prevArrow:
'<button type="button" class="slick-prev">Previous</button>',
});
// md
$(".responsive-md").slick({
dots: false,
autoplay: true,
autoplaySpeed: 2000,
infinite: true,
lazyLoad: "ondemand",
slidesToShow: 2,
slidesToScroll: 2,
});
// sm
$(".responsive-sm").slick({
dots: false,
autoplay: true,
autoplaySpeed: 2000,
infinite: true,
lazyLoad: "ondemand",
slidesToShow: 1,
slidesToScroll: 1,
});
});
</script>
<!-- SCRIPT -->
}
templ ShowLandingPage(title string, cmp templ.Component, css templ.Component, js templ.Component) {
@layout.CanvasLayout(title, css, js) {
@layout.PlaygroundLayout(title, css, js) {
@cmp
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,307 @@
package landingpage
import (
"github.com/emarifer/go-templ-project-structure/services"
)
templ MedicalService(title string, desciption string, icon string, link string) {
<div class="col-lg-4">
<!-- 1 -->
<div class="card custom-card-lp mr-6">
<div class="card-body">
<div class="icon-container bg-primary-transparent">
<span
class="iconify text-primary w-20 h-20"
data-icon={ icon }
></span>
</div>
<h5 class="card-title title-fs-20">{ title }</h5>
<p class="card-text sub-title-fs-12">
{ desciption }
</p>
</div>
<div class="card-footer">
<a href={ templ.SafeURL(link) } class="link-learn-more text-primary">
Learn More
<span
class="iconify text-primary w-20 h-20"
data-icon="eva:arrow-forward-outline"
></span>
</a>
</div>
</div>
</div>
}
templ ListMedicalService(medserData []services.ClientService) {
<div class="row responsive-sm d-xs-block d-sm-block d-md-none">
for _, d := range medserData {
@MedicalService(d.ClientServiceName, d.ClientServiceDescription, d.ClientServiceIcon, d.ClientServiceLink)
}
</div>
<div class="row responsive-md d-none d-md-block d-lg-none">
for _, d := range medserData {
@MedicalService(d.ClientServiceName, d.ClientServiceDescription, d.ClientServiceIcon, d.ClientServiceLink)
}
</div>
<div class="row responsive-lg d-none d-lg-block">
for _, d := range medserData {
@MedicalService(d.ClientServiceName, d.ClientServiceDescription, d.ClientServiceIcon, d.ClientServiceLink)
}
</div>
}
templ HeaderSection(title string, desc string) {
<div class="col-md-12 text-left">
<h2 class="title-section text-black">{ title }</h2>
<p class="sub-title-section text-black">
{ desc }
</p>
</div>
}
templ Advantage(title string, desc string) {
<div class="row flex-grow-1">
<div class="media">
<div class="media-left">
<span
class="iconify text-primary media-left-icon"
data-icon="mingcute:certificate-line"
></span>
</div>
<div class="media-body">
<h4 class="title-fs-20 text-black ml-4">{ title }</h4>
<p class="sub-title-fs-12 text-black ml-4">
{ desc }
</p>
</div>
</div>
</div>
}
templ ListAdvantage(adData []services.AdvantageClient) {
<div class="row mt-5">
<div class="col-md-6">
<img
src="/asset-corporate-portal/media/landingpage/why_westerindo_right.png"
alt="Your Brand"
class="align-top w-100 h-100 pt-4 pb-4"
/>
</div>
<div class="col-md-6 d-flex flex-column">
for _, d := range adData {
@Advantage(d.AdvantageClientName, d.AdvantageClientDesc)
}
</div>
</div>
}
templ HeaderCard() {
// Hp
<div class="jumbotron bg-primary d-xs-block d-sm-block d-md-none">
<div class="container">
<div class="row">
<div class="col-sm-12 mb-3 d-flex justify-content-sm-end">
<div class="d-flex m-1 align-items-center">
<img
src="/asset-corporate-portal/media/landingpage/jumbotron_left.png"
class="img-fluid w-100 h-100 img-header"
alt="Your Brand"
/>
</div>
</div>
<div class="col-sm-12 d-flex flex-column">
<div class="mb-3">
<h1 class="title-jumbotron-sm text-white">
Invest in Your Well-being with Our Comprehensive Medical
Check-Up
</h1>
<p class="sub-title-jumbotron text-white">
Elevate your health journey with our thorough medical
assessments, empowering you to take proactive steps towards a
healthier, happier life.
</p>
<button type="button" class="btn btn-lg btn-pill bg-white">
<span class="title-get-started">Get Started</span>
</button>
</div>
<div class="mt-auto"></div>
</div>
</div>
</div>
</div>
// End Hp
// Tablet
<div class="jumbotron bg-primary d-none d-md-block d-lg-none">
<div class="container">
<div class="row">
<div class="col-md-12 mb-3 d-flex justify-content-md-end">
<div class="d-flex m-1 align-items-center">
<img
src="/asset-corporate-portal/media/landingpage/jumbotron_left.png"
class="img-fluid w-100 h-100 img-header"
alt="Your Brand"
/>
</div>
</div>
<div class="col-md-12 d-flex flex-column">
<div class="mb-3">
<h1 class="title-jumbotron-md text-white">
Invest in Your Well-being with Our Comprehensive Medical
Check-Up
</h1>
<p class="sub-title-jumbotron text-white">
Elevate your health journey with our thorough medical
assessments, empowering you to take proactive steps towards a
healthier, happier life.
</p>
<button type="button" class="btn btn-lg btn-pill bg-white">
<span class="title-get-started">Get Started</span>
</button>
</div>
<div class="mt-auto"></div>
</div>
</div>
</div>
</div>
// End Tablet
// Dekstop
<div class="jumbotron bg-primary d-none d-lg-block">
<div class="container">
<div class="row">
<div class="col-md-8 d-flex flex-column">
<div class="mb-3">
<h1 class="title-jumbotron text-white">
Invest in Your Well-being with Our Comprehensive Medical
Check-Up
</h1>
<p class="sub-title-jumbotron text-white">
Elevate your health journey with our thorough medical
assessments, empowering you to take proactive steps towards a
healthier, happier life.
</p>
<button type="button" class="btn btn-lg btn-pill bg-white">
<span class="title-get-started">Get Started</span>
</button>
</div>
<div class="mt-auto"></div>
</div>
<div class="col-md-4 d-flex justify-content-md-end">
<!-- style="
flex: 2;
margin: 10px;
display: flex;
align-items: center;
" -->
<div class="d-flex m-1o align-items-center">
<img
src="/asset-corporate-portal/media/landingpage/jumbotron_left.png"
class="img-fluid w-100 h-100 img-header"
alt="Your Brand"
/>
</div>
</div>
</div>
</div>
</div>
// End Dekstop
}
templ Promotion(prm services.Promotion) {
<div class="col-md-4 mt-2">
<img
src={ prm.PromotionAsset }
class="img-fluid"
alt="Your Brand"
/>
</div>
}
templ ListPromotion(prm []services.Promotion) {
<div class="row responsive-sm d-xs-block d-sm-block d-md-none">
for _, d := range prm {
@Promotion(d)
}
</div>
<div class="row responsive-md d-none d-md-block d-lg-none">
for _, d := range prm {
@Promotion(d)
}
</div>
<div class="row responsive-lg d-none d-lg-block d-xl-block">
for _, d := range prm {
@Promotion(d)
}
</div>
}
templ Footer() {
<footer class="wrapper-custom bg-black pb-25 pt-25 mt-25">
<div class="row mb-5">
<div class="col-md-12 col-lg">
<img
src="asset-corporate-portal/media/landingpage/logo.png"
class="logo-footer"
width="126"
height="40"
alt="Your Brand"
/>
<div class="text-white d-flex flex-row mb-3">
<!-- style="display: flex; flex-direction: row; color: white;align-items: start; margin-bottom: 24px;" -->
<div class="mr-3 mt-1">
<i
class="fas fa-map-marker-alt marker footer-icon text-warning"
></i>
</div>
<div class="flex-grow-1">
<p class="footer-sub-title text-grey">
Jl. Cipaku I No.5, RT.2/RW.4, Petogogan, Kec. Kby. Baru, Kota
Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12170
</p>
</div>
</div>
<div class="d-flex flex-row">
<div class="mr-3 mt-1">
<i class="fas fa-phone footer-icon text-warning"></i>
</div>
<div class="flex-grow-1">
<p class="footer-sub-title text-grey">021-7392345</p>
<p class="footer-sub-title text-grey">021-2702525</p>
<p class="footer-sub-title text-grey">021-7255080</p>
</div>
</div>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white mb-3">Dashboard</h4>
<p class="footer-sub-title text-grey">
Employee Medical Health Analytic Clinic Admission
</p>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white">Benefit</h4>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white">Finance & Claims</h4>
</div>
<div class="col-md col-lg">
<h4 class="footer-title text-white">Membership</h4>
</div>
</div>
<div class="garis bg-grey"></div>
<div class="row mt-4">
<div class="col-md-6">
<p class="footer-sub-title text-grey">
© Copyright 2024. Organized PT SADHANA ABIYASA SAMPOERNA (Privacy
Policy)
</p>
</div>
<div class="col-md-6 text-right">
<p class="footer-icons">
<a href="#" class="mr-3"><i class="fab fa-whatsapp"></i></a>
<a href="#" class="mr-3"><i class="fab fa-facebook"></i></a>
<a href="#"><i class="fab fa-instagram"></i></a>
</p>
</div>
</div>
</footer>
}

View File

@@ -0,0 +1,414 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package landingpage
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import (
"github.com/emarifer/go-templ-project-structure/services"
)
func MedicalService(title string, desciption string, icon string, link string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"col-lg-4\"><!-- 1 --><div class=\"card custom-card-lp mr-6\"><div class=\"card-body\"><div class=\"icon-container bg-primary-transparent\"><span class=\"iconify text-primary w-20 h-20\" data-icon=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(icon)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\landingpage\medicalservice.templ`, Line: 15, Col: 22}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\"></span></div><h5 class=\"card-title title-fs-20\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\landingpage\medicalservice.templ`, Line: 18, Col: 46}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</h5><p class=\"card-text sub-title-fs-12\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(desciption)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\landingpage\medicalservice.templ`, Line: 20, Col: 17}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</p></div><div class=\"card-footer\"><a href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 templ.SafeURL = templ.SafeURL(link)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(string(templ_7745c5c3_Var5)))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"link-learn-more text-primary\">Learn More\r <span class=\"iconify text-primary w-20 h-20\" data-icon=\"eva:arrow-forward-outline\"></span></a></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ListMedicalService(medserData []services.ClientService) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var6 := templ.GetChildren(ctx)
if templ_7745c5c3_Var6 == nil {
templ_7745c5c3_Var6 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row responsive-sm d-xs-block d-sm-block d-md-none\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, d := range medserData {
templ_7745c5c3_Err = MedicalService(d.ClientServiceName, d.ClientServiceDescription, d.ClientServiceIcon, d.ClientServiceLink).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"row responsive-md d-none d-md-block d-lg-none\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, d := range medserData {
templ_7745c5c3_Err = MedicalService(d.ClientServiceName, d.ClientServiceDescription, d.ClientServiceIcon, d.ClientServiceLink).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"row responsive-lg d-none d-lg-block\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, d := range medserData {
templ_7745c5c3_Err = MedicalService(d.ClientServiceName, d.ClientServiceDescription, d.ClientServiceIcon, d.ClientServiceLink).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func HeaderSection(title string, desc string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var7 := templ.GetChildren(ctx)
if templ_7745c5c3_Var7 == nil {
templ_7745c5c3_Var7 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"col-md-12 text-left\"><h2 class=\"title-section text-black\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var8 string
templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\landingpage\medicalservice.templ`, Line: 56, Col: 46}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</h2><p class=\"sub-title-section text-black\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var9 string
templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(desc)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\landingpage\medicalservice.templ`, Line: 58, Col: 9}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</p></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Advantage(title string, desc string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var10 := templ.GetChildren(ctx)
if templ_7745c5c3_Var10 == nil {
templ_7745c5c3_Var10 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row flex-grow-1\"><div class=\"media\"><div class=\"media-left\"><span class=\"iconify text-primary media-left-icon\" data-icon=\"mingcute:certificate-line\"></span></div><div class=\"media-body\"><h4 class=\"title-fs-20 text-black ml-4\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var11 string
templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\landingpage\medicalservice.templ`, Line: 73, Col: 51}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</h4><p class=\"sub-title-fs-12 text-black ml-4\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var12 string
templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(desc)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\landingpage\medicalservice.templ`, Line: 75, Col: 11}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</p></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ListAdvantage(adData []services.AdvantageClient) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var13 := templ.GetChildren(ctx)
if templ_7745c5c3_Var13 == nil {
templ_7745c5c3_Var13 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row mt-5\"><div class=\"col-md-6\"><img src=\"/asset-corporate-portal/media/landingpage/why_westerindo_right.png\" alt=\"Your Brand\" class=\"align-top w-100 h-100 pt-4 pb-4\"></div><div class=\"col-md-6 d-flex flex-column\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, d := range adData {
templ_7745c5c3_Err = Advantage(d.AdvantageClientName, d.AdvantageClientDesc).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func HeaderCard() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var14 := templ.GetChildren(ctx)
if templ_7745c5c3_Var14 == nil {
templ_7745c5c3_Var14 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"jumbotron bg-primary d-xs-block d-sm-block d-md-none\"><div class=\"container\"><div class=\"row\"><div class=\"col-sm-12 mb-3 d-flex justify-content-sm-end\"><div class=\"d-flex m-1 align-items-center\"><img src=\"/asset-corporate-portal/media/landingpage/jumbotron_left.png\" class=\"img-fluid w-100 h-100 img-header\" alt=\"Your Brand\"></div></div><div class=\"col-sm-12 d-flex flex-column\"><div class=\"mb-3\"><h1 class=\"title-jumbotron-sm text-white\">Invest in Your Well-being with Our Comprehensive Medical\r Check-Up\r</h1><p class=\"sub-title-jumbotron text-white\">Elevate your health journey with our thorough medical\r assessments, empowering you to take proactive steps towards a\r healthier, happier life.\r</p><button type=\"button\" class=\"btn btn-lg btn-pill bg-white\"><span class=\"title-get-started\">Get Started</span></button></div><div class=\"mt-auto\"></div></div></div></div></div><div class=\"jumbotron bg-primary d-none d-md-block d-lg-none\"><div class=\"container\"><div class=\"row\"><div class=\"col-md-12 mb-3 d-flex justify-content-md-end\"><div class=\"d-flex m-1 align-items-center\"><img src=\"/asset-corporate-portal/media/landingpage/jumbotron_left.png\" class=\"img-fluid w-100 h-100 img-header\" alt=\"Your Brand\"></div></div><div class=\"col-md-12 d-flex flex-column\"><div class=\"mb-3\"><h1 class=\"title-jumbotron-md text-white\">Invest in Your Well-being with Our Comprehensive Medical\r Check-Up\r</h1><p class=\"sub-title-jumbotron text-white\">Elevate your health journey with our thorough medical\r assessments, empowering you to take proactive steps towards a\r healthier, happier life.\r</p><button type=\"button\" class=\"btn btn-lg btn-pill bg-white\"><span class=\"title-get-started\">Get Started</span></button></div><div class=\"mt-auto\"></div></div></div></div></div><div class=\"jumbotron bg-primary d-none d-lg-block\"><div class=\"container\"><div class=\"row\"><div class=\"col-md-8 d-flex flex-column\"><div class=\"mb-3\"><h1 class=\"title-jumbotron text-white\">Invest in Your Well-being with Our Comprehensive Medical\r Check-Up\r</h1><p class=\"sub-title-jumbotron text-white\">Elevate your health journey with our thorough medical\r assessments, empowering you to take proactive steps towards a\r healthier, happier life.\r</p><button type=\"button\" class=\"btn btn-lg btn-pill bg-white\"><span class=\"title-get-started\">Get Started</span></button></div><div class=\"mt-auto\"></div></div><div class=\"col-md-4 d-flex justify-content-md-end\"><!-- style=\"\r\n flex: 2;\r\n margin: 10px;\r\n display: flex;\r\n align-items: center;\r\n \" --><div class=\"d-flex m-1o align-items-center\"><img src=\"/asset-corporate-portal/media/landingpage/jumbotron_left.png\" class=\"img-fluid w-100 h-100 img-header\" alt=\"Your Brand\"></div></div></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Promotion(prm services.Promotion) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var15 := templ.GetChildren(ctx)
if templ_7745c5c3_Var15 == nil {
templ_7745c5c3_Var15 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"col-md-4 mt-2\"><img src=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var16 string
templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(prm.PromotionAsset)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `views\landingpage\medicalservice.templ`, Line: 213, Col: 27}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("\" class=\"img-fluid\" alt=\"Your Brand\"></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ListPromotion(prm []services.Promotion) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var17 := templ.GetChildren(ctx)
if templ_7745c5c3_Var17 == nil {
templ_7745c5c3_Var17 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"row responsive-sm d-xs-block d-sm-block d-md-none\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, d := range prm {
templ_7745c5c3_Err = Promotion(d).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"row responsive-md d-none d-md-block d-lg-none\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, d := range prm {
templ_7745c5c3_Err = Promotion(d).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"row responsive-lg d-none d-lg-block d-xl-block\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, d := range prm {
templ_7745c5c3_Err = Promotion(d).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func Footer() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var18 := templ.GetChildren(ctx)
if templ_7745c5c3_Var18 == nil {
templ_7745c5c3_Var18 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<footer class=\"wrapper-custom bg-black pb-25 pt-25 mt-25\"><div class=\"row mb-5\"><div class=\"col-md-12 col-lg\"><img src=\"asset-corporate-portal/media/landingpage/logo.png\" class=\"logo-footer\" width=\"126\" height=\"40\" alt=\"Your Brand\"><div class=\"text-white d-flex flex-row mb-3\"><!-- style=\"display: flex; flex-direction: row; color: white;align-items: start; margin-bottom: 24px;\" --><div class=\"mr-3 mt-1\"><i class=\"fas fa-map-marker-alt marker footer-icon text-warning\"></i></div><div class=\"flex-grow-1\"><p class=\"footer-sub-title text-grey\">Jl. Cipaku I No.5, RT.2/RW.4, Petogogan, Kec. Kby. Baru, Kota\r Jakarta Selatan, Daerah Khusus Ibukota Jakarta 12170\r</p></div></div><div class=\"d-flex flex-row\"><div class=\"mr-3 mt-1\"><i class=\"fas fa-phone footer-icon text-warning\"></i></div><div class=\"flex-grow-1\"><p class=\"footer-sub-title text-grey\">021-7392345</p><p class=\"footer-sub-title text-grey\">021-2702525</p><p class=\"footer-sub-title text-grey\">021-7255080</p></div></div></div><div class=\"col-md col-lg\"><h4 class=\"footer-title text-white mb-3\">Dashboard</h4><p class=\"footer-sub-title text-grey\">Employee Medical Health Analytic Clinic Admission\r</p></div><div class=\"col-md col-lg\"><h4 class=\"footer-title text-white\">Benefit</h4></div><div class=\"col-md col-lg\"><h4 class=\"footer-title text-white\">Finance & Claims</h4></div><div class=\"col-md col-lg\"><h4 class=\"footer-title text-white\">Membership</h4></div></div><div class=\"garis bg-grey\"></div><div class=\"row mt-4\"><div class=\"col-md-6\"><p class=\"footer-sub-title text-grey\">© Copyright 2024. Organized PT SADHANA ABIYASA SAMPOERNA (Privacy\r Policy)\r</p></div><div class=\"col-md-6 text-right\"><p class=\"footer-icons\"><a href=\"#\" class=\"mr-3\"><i class=\"fab fa-whatsapp\"></i></a> <a href=\"#\" class=\"mr-3\"><i class=\"fab fa-facebook\"></i></a> <a href=\"#\"><i class=\"fab fa-instagram\"></i></a></p></div></div></footer>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -12,8 +12,8 @@ templ Base(title string) {
/>
<meta name="google" content="notranslate"/>
<link rel="shortcut icon" href="/img/templ.png" type="image/png"/>
<script src="https://cdn.tailwindcss.com"></script>
<link href="https://cdn.jsdelivr.net/npm/daisyui@4.4.10/dist/full.min.css" rel="stylesheet" type="text/css"/>
// <script src="https://cdn.tailwindcss.com"></script>
// <link href="https://cdn.jsdelivr.net/npm/daisyui@4.4.10/dist/full.min.css" rel="stylesheet" type="text/css"/>
<link rel="stylesheet" href="/css/styles.css"/>
<title>Project Structure Demo { title }</title>
<script src="https://unpkg.com/htmx.org@1.9.9" integrity="sha384-QFjmbokDn2DjBjq+fM+8LUIVrAgqcNW2s0PjAxHETgRn9l4fvX31ZxDxvwQnyMOX" crossorigin="anonymous"></script>

View File

@@ -23,7 +23,7 @@ func Base(title string) templ.Component {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><html lang=\"en\" data-theme=\"dark\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><meta name=\"description\" content=\"Go/Echo+Templ: User List App as an example of a project structured in layers, use of &#39;Templ&#39; Template language and frontend with HTMx technology\"><meta name=\"google\" content=\"notranslate\"><link rel=\"shortcut icon\" href=\"/img/templ.png\" type=\"image/png\"><script src=\"https://cdn.tailwindcss.com\"></script><link href=\"https://cdn.jsdelivr.net/npm/daisyui@4.4.10/dist/full.min.css\" rel=\"stylesheet\" type=\"text/css\"><link rel=\"stylesheet\" href=\"/css/styles.css\"><title>Project Structure Demo ")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><html lang=\"en\" data-theme=\"dark\"><head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"><meta name=\"description\" content=\"Go/Echo+Templ: User List App as an example of a project structured in layers, use of &#39;Templ&#39; Template language and frontend with HTMx technology\"><meta name=\"google\" content=\"notranslate\"><link rel=\"shortcut icon\" href=\"/img/templ.png\" type=\"image/png\"><link rel=\"stylesheet\" href=\"/css/styles.css\"><title>Project Structure Demo ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -17,7 +17,7 @@ templ CanvasLayout(title string, css templ.Component, js templ.Component) {
<html lang="en">
<!--begin::Head-->
<head>
<base href="../"/>
<base href="/"/>
<meta charset="utf-8"/>
<title>Company Portal | { title }</title>
<meta name="description" content="Company Portal"/>
@@ -28,7 +28,7 @@ templ CanvasLayout(title string, css templ.Component, js templ.Component) {
<!--begin::Fonts-->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700"
href="assets/css/googlefont/poppins.css"
/>
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
@@ -159,6 +159,8 @@ templ CanvasLayout(title string, css templ.Component, js templ.Component) {
"font-family": "Poppins",
};
</script>
<!-- iconify -->
<script src="assets/js/iconify/iconify.min.js"></script>
<!--end::Global Config-->
<!--begin::Global Theme Bundle(used by all pages)-->
<script src="assets/plugins/global/plugins.bundle.js"></script>

View File

@@ -23,7 +23,7 @@ func CanvasLayout(title string, css templ.Component, js templ.Component) templ.C
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><!--\r\n\t\tTemplate Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme\r\n\t\tAuthor: KeenThemes\r\n\t\tWebsite: http://www.keenthemes.com/\r\n\t\tContact: support@keenthemes.com\r\n\t\tFollow: www.twitter.com/keenthemes\r\n\t\tDribbble: www.dribbble.com/keenthemes\r\n\t\tLike: www.facebook.com/keenthemes\r\n\t\tPurchase: https://1.envato.market/EA4JP\r\n\t\tRenew Support: https://1.envato.market/EA4JP\r\n\t\tLicense: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.\r\n\t\t--><html lang=\"en\"><!--begin::Head--><head><base href=\"../\"><meta charset=\"utf-8\"><title>Company Portal | ")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><!--\r\n\t\tTemplate Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme\r\n\t\tAuthor: KeenThemes\r\n\t\tWebsite: http://www.keenthemes.com/\r\n\t\tContact: support@keenthemes.com\r\n\t\tFollow: www.twitter.com/keenthemes\r\n\t\tDribbble: www.dribbble.com/keenthemes\r\n\t\tLike: www.facebook.com/keenthemes\r\n\t\tPurchase: https://1.envato.market/EA4JP\r\n\t\tRenew Support: https://1.envato.market/EA4JP\r\n\t\tLicense: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.\r\n\t\t--><html lang=\"en\"><!--begin::Head--><head><base href=\"/\"><meta charset=\"utf-8\"><title>Company Portal | ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -36,7 +36,7 @@ func CanvasLayout(title string, css templ.Component, js templ.Component) templ.C
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</title><meta name=\"description\" content=\"Company Portal\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"><!--begin::Fonts--><link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700\"><!--end::Fonts--><!--begin::Page Custom Styles(used by this page)--><link href=\"assets/css/pages/login/login-1.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Page Custom Styles--><!--begin::Global Theme Styles(used by all pages)--><link href=\"assets/plugins/global/plugins.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/plugins/custom/prismjs/prismjs.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/style.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Global Theme Styles--><!--begin::Layout Themes(used by all pages)--><link href=\"assets/css/themes/layout/header/base/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/header/menu/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/brand/dark.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/aside/dark.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Layout Themes--><link rel=\"shortcut icon\" href=\"asset-corporate-portal/media/logo/logo-small.jpg\"><!--end::Layout Themes SAS--><link href=\"asset-corporate-portal/css/sas.bundle.css\" rel=\"stylesheet\" type=\"text/css\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</title><meta name=\"description\" content=\"Company Portal\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"><!--begin::Fonts--><link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><!--end::Fonts--><!--begin::Page Custom Styles(used by this page)--><link href=\"assets/css/pages/login/login-1.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Page Custom Styles--><!--begin::Global Theme Styles(used by all pages)--><link href=\"assets/plugins/global/plugins.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/plugins/custom/prismjs/prismjs.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/style.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Global Theme Styles--><!--begin::Layout Themes(used by all pages)--><link href=\"assets/css/themes/layout/header/base/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/header/menu/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/brand/dark.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/aside/dark.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Layout Themes--><link rel=\"shortcut icon\" href=\"asset-corporate-portal/media/logo/logo-small.jpg\"><!--end::Layout Themes SAS--><link href=\"asset-corporate-portal/css/sas.bundle.css\" rel=\"stylesheet\" type=\"text/css\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -52,7 +52,7 @@ func CanvasLayout(title string, css templ.Component, js templ.Component) templ.C
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Main--><script>\r\n var HOST_URL =\r\n \"https://preview.keenthemes.com/metronic/theme/html/tools/preview\";\r\n </script><!--begin::Global Config(global config for global JS scripts)--><script>\r\n var KTAppSettings = {\r\n breakpoints: {\r\n sm: 576,\r\n md: 768,\r\n lg: 992,\r\n xl: 1200,\r\n xxl: 1400,\r\n },\r\n colors: {\r\n theme: {\r\n base: {\r\n white: \"#ffffff\",\r\n primary: \"#3699FF\",\r\n secondary: \"#E5EAEE\",\r\n success: \"#1BC5BD\",\r\n info: \"#8950FC\",\r\n warning: \"#FFA800\",\r\n danger: \"#F64E60\",\r\n light: \"#E4E6EF\",\r\n dark: \"#181C32\",\r\n },\r\n light: {\r\n white: \"#ffffff\",\r\n primary: \"#E1F0FF\",\r\n secondary: \"#EBEDF3\",\r\n success: \"#C9F7F5\",\r\n info: \"#EEE5FF\",\r\n warning: \"#FFF4DE\",\r\n danger: \"#FFE2E5\",\r\n light: \"#F3F6F9\",\r\n dark: \"#D6D6E0\",\r\n },\r\n inverse: {\r\n white: \"#ffffff\",\r\n primary: \"#ffffff\",\r\n secondary: \"#3F4254\",\r\n success: \"#ffffff\",\r\n info: \"#ffffff\",\r\n warning: \"#ffffff\",\r\n danger: \"#ffffff\",\r\n light: \"#464E5F\",\r\n dark: \"#ffffff\",\r\n },\r\n },\r\n gray: {\r\n \"gray-100\": \"#F3F6F9\",\r\n \"gray-200\": \"#EBEDF3\",\r\n \"gray-300\": \"#E4E6EF\",\r\n \"gray-400\": \"#D1D3E0\",\r\n \"gray-500\": \"#B5B5C3\",\r\n \"gray-600\": \"#7E8299\",\r\n \"gray-700\": \"#5E6278\",\r\n \"gray-800\": \"#3F4254\",\r\n \"gray-900\": \"#181C32\",\r\n },\r\n },\r\n \"font-family\": \"Poppins\",\r\n };\r\n </script><!--end::Global Config--><!--begin::Global Theme Bundle(used by all pages)--><script src=\"assets/plugins/global/plugins.bundle.js\"></script><script src=\"assets/plugins/custom/prismjs/prismjs.bundle.js\"></script><script src=\"assets/js/scripts.bundle.js\"></script><!--end::Global Theme Bundle-->")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Main--><script>\r\n var HOST_URL =\r\n \"https://preview.keenthemes.com/metronic/theme/html/tools/preview\";\r\n </script><!--begin::Global Config(global config for global JS scripts)--><script>\r\n var KTAppSettings = {\r\n breakpoints: {\r\n sm: 576,\r\n md: 768,\r\n lg: 992,\r\n xl: 1200,\r\n xxl: 1400,\r\n },\r\n colors: {\r\n theme: {\r\n base: {\r\n white: \"#ffffff\",\r\n primary: \"#3699FF\",\r\n secondary: \"#E5EAEE\",\r\n success: \"#1BC5BD\",\r\n info: \"#8950FC\",\r\n warning: \"#FFA800\",\r\n danger: \"#F64E60\",\r\n light: \"#E4E6EF\",\r\n dark: \"#181C32\",\r\n },\r\n light: {\r\n white: \"#ffffff\",\r\n primary: \"#E1F0FF\",\r\n secondary: \"#EBEDF3\",\r\n success: \"#C9F7F5\",\r\n info: \"#EEE5FF\",\r\n warning: \"#FFF4DE\",\r\n danger: \"#FFE2E5\",\r\n light: \"#F3F6F9\",\r\n dark: \"#D6D6E0\",\r\n },\r\n inverse: {\r\n white: \"#ffffff\",\r\n primary: \"#ffffff\",\r\n secondary: \"#3F4254\",\r\n success: \"#ffffff\",\r\n info: \"#ffffff\",\r\n warning: \"#ffffff\",\r\n danger: \"#ffffff\",\r\n light: \"#464E5F\",\r\n dark: \"#ffffff\",\r\n },\r\n },\r\n gray: {\r\n \"gray-100\": \"#F3F6F9\",\r\n \"gray-200\": \"#EBEDF3\",\r\n \"gray-300\": \"#E4E6EF\",\r\n \"gray-400\": \"#D1D3E0\",\r\n \"gray-500\": \"#B5B5C3\",\r\n \"gray-600\": \"#7E8299\",\r\n \"gray-700\": \"#5E6278\",\r\n \"gray-800\": \"#3F4254\",\r\n \"gray-900\": \"#181C32\",\r\n },\r\n },\r\n \"font-family\": \"Poppins\",\r\n };\r\n </script><!-- iconify --><script src=\"assets/js/iconify/iconify.min.js\"></script><!--end::Global Config--><!--begin::Global Theme Bundle(used by all pages)--><script src=\"assets/plugins/global/plugins.bundle.js\"></script><script src=\"assets/plugins/custom/prismjs/prismjs.bundle.js\"></script><script src=\"assets/js/scripts.bundle.js\"></script><!--end::Global Theme Bundle-->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -18,7 +18,7 @@ templ PlaygroundLayout(title string, css templ.Component, js templ.Component) {
<html lang="en">
<!--begin::Head-->
<head>
<base href="../"/>
<base href="/"/>
<meta charset="utf-8"/>
<title>Company Portal | { title }</title>
<meta name="description" content="Company Portal"/>
@@ -29,7 +29,7 @@ templ PlaygroundLayout(title string, css templ.Component, js templ.Component) {
<!--begin::Fonts-->
<link
rel="stylesheet"
href="https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700"
href="assets/css/googlefont/poppins.css"
/>
<!--end::Fonts-->
<!--begin::Page Custom Styles(used by this page)-->
@@ -92,6 +92,8 @@ templ PlaygroundLayout(title string, css templ.Component, js templ.Component) {
id="kt_body"
class="header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading"
>
// htmx
<script src="assets/js/htmx/htmx.min.js"></script>
<!--begin::Main-->
{ children... }
<!--end::Main-->
@@ -166,6 +168,7 @@ templ PlaygroundLayout(title string, css templ.Component, js templ.Component) {
<script src="assets/plugins/custom/prismjs/prismjs.bundle.js"></script>
<script src="assets/js/scripts.bundle.js"></script>
<!--end::Global Theme Bundle-->
<script src="assets/js/iconify/iconify.min.js"></script>
@js
<!--end::Page Scripts-->
</body>

View File

@@ -24,7 +24,7 @@ func PlaygroundLayout(title string, css templ.Component, js templ.Component) tem
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><!--\r\n\t\tTemplate Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme\r\n\t\tAuthor: KeenThemes\r\n\t\tWebsite: http://www.keenthemes.com/\r\n\t\tContact: support@keenthemes.com\r\n\t\tFollow: www.twitter.com/keenthemes\r\n\t\tDribbble: www.dribbble.com/keenthemes\r\n\t\tLike: www.facebook.com/keenthemes\r\n\t\tPurchase: https://1.envato.market/EA4JP\r\n\t\tRenew Support: https://1.envato.market/EA4JP\r\n\t\tLicense: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.\r\n\t\t--><html lang=\"en\"><!--begin::Head--><head><base href=\"../\"><meta charset=\"utf-8\"><title>Company Portal | ")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!doctype html><!--\r\n\t\tTemplate Name: Metronic - Bootstrap 4 HTML, React, Angular 9 & VueJS Admin Dashboard Theme\r\n\t\tAuthor: KeenThemes\r\n\t\tWebsite: http://www.keenthemes.com/\r\n\t\tContact: support@keenthemes.com\r\n\t\tFollow: www.twitter.com/keenthemes\r\n\t\tDribbble: www.dribbble.com/keenthemes\r\n\t\tLike: www.facebook.com/keenthemes\r\n\t\tPurchase: https://1.envato.market/EA4JP\r\n\t\tRenew Support: https://1.envato.market/EA4JP\r\n\t\tLicense: You must have a valid license purchased only from themeforest(the above link) in order to legally use the theme for your project.\r\n\t\t--><html lang=\"en\"><!--begin::Head--><head><base href=\"/\"><meta charset=\"utf-8\"><title>Company Portal | ")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -37,7 +37,7 @@ func PlaygroundLayout(title string, css templ.Component, js templ.Component) tem
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</title><meta name=\"description\" content=\"Company Portal\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"><!--begin::Fonts--><link rel=\"stylesheet\" href=\"https://fonts.googleapis.com/css?family=Poppins:300,400,500,600,700\"><!--end::Fonts--><!--begin::Page Custom Styles(used by this page)--><link href=\"assets/css/pages/login/login-1.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Page Custom Styles--><!--begin::Global Theme Styles(used by all pages)--><link href=\"assets/plugins/global/plugins.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/plugins/custom/prismjs/prismjs.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/style.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Global Theme Styles--><!--begin::Layout Themes(used by all pages)--><link href=\"assets/css/themes/layout/header/base/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/header/menu/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/brand/dark.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/aside/dark.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Layout Themes--><link rel=\"shortcut icon\" href=\"asset-corporate-portal/media/logo/logo-small.jpg\"><!--end::Layout Themes SAS--><link href=\"asset-corporate-portal/css/sas.bundle.css\" rel=\"stylesheet\" type=\"text/css\">")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</title><meta name=\"description\" content=\"Company Portal\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\"><!--begin::Fonts--><link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><!--end::Fonts--><!--begin::Page Custom Styles(used by this page)--><link href=\"assets/css/pages/login/login-1.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Page Custom Styles--><!--begin::Global Theme Styles(used by all pages)--><link href=\"assets/plugins/global/plugins.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/plugins/custom/prismjs/prismjs.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/style.bundle.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Global Theme Styles--><!--begin::Layout Themes(used by all pages)--><link href=\"assets/css/themes/layout/header/base/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/header/menu/light.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/brand/dark.css\" rel=\"stylesheet\" type=\"text/css\"><link href=\"assets/css/themes/layout/aside/dark.css\" rel=\"stylesheet\" type=\"text/css\"><!--end::Layout Themes--><link rel=\"shortcut icon\" href=\"asset-corporate-portal/media/logo/logo-small.jpg\"><!--end::Layout Themes SAS--><link href=\"asset-corporate-portal/css/sas.bundle.css\" rel=\"stylesheet\" type=\"text/css\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -45,7 +45,7 @@ func PlaygroundLayout(title string, css templ.Component, js templ.Component) tem
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</head><!--end::Head--><!--begin::Body--><body id=\"kt_body\" class=\"header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading\"><!--begin::Main-->")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</head><!--end::Head--><!--begin::Body--><body id=\"kt_body\" class=\"header-fixed header-mobile-fixed subheader-enabled subheader-fixed subheader-mobile-fixed aside-enabled aside-fixed aside-minimize-hoverable page-loading\"><script src=\"assets/js/htmx/htmx.min.js\"></script><!--begin::Main-->")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
@@ -53,7 +53,7 @@ func PlaygroundLayout(title string, css templ.Component, js templ.Component) tem
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Main--><script>\r\n var HOST_URL =\r\n \"https://preview.keenthemes.com/metronic/theme/html/tools/preview\";\r\n </script><!--begin::Global Config(global config for global JS scripts)--><script>\r\n var KTAppSettings = {\r\n breakpoints: {\r\n sm: 576,\r\n md: 768,\r\n lg: 992,\r\n xl: 1200,\r\n xxl: 1400,\r\n },\r\n colors: {\r\n theme: {\r\n base: {\r\n white: \"#ffffff\",\r\n primary: \"#3699FF\",\r\n secondary: \"#E5EAEE\",\r\n success: \"#1BC5BD\",\r\n info: \"#8950FC\",\r\n warning: \"#FFA800\",\r\n danger: \"#F64E60\",\r\n light: \"#E4E6EF\",\r\n dark: \"#181C32\",\r\n },\r\n light: {\r\n white: \"#ffffff\",\r\n primary: \"#E1F0FF\",\r\n secondary: \"#EBEDF3\",\r\n success: \"#C9F7F5\",\r\n info: \"#EEE5FF\",\r\n warning: \"#FFF4DE\",\r\n danger: \"#FFE2E5\",\r\n light: \"#F3F6F9\",\r\n dark: \"#D6D6E0\",\r\n },\r\n inverse: {\r\n white: \"#ffffff\",\r\n primary: \"#ffffff\",\r\n secondary: \"#3F4254\",\r\n success: \"#ffffff\",\r\n info: \"#ffffff\",\r\n warning: \"#ffffff\",\r\n danger: \"#ffffff\",\r\n light: \"#464E5F\",\r\n dark: \"#ffffff\",\r\n },\r\n },\r\n gray: {\r\n \"gray-100\": \"#F3F6F9\",\r\n \"gray-200\": \"#EBEDF3\",\r\n \"gray-300\": \"#E4E6EF\",\r\n \"gray-400\": \"#D1D3E0\",\r\n \"gray-500\": \"#B5B5C3\",\r\n \"gray-600\": \"#7E8299\",\r\n \"gray-700\": \"#5E6278\",\r\n \"gray-800\": \"#3F4254\",\r\n \"gray-900\": \"#181C32\",\r\n },\r\n },\r\n \"font-family\": \"Poppins\",\r\n };\r\n </script><!--end::Global Config--><!--begin::Global Theme Bundle(used by all pages)--><script src=\"assets/plugins/global/plugins.bundle.js\"></script><script src=\"assets/plugins/custom/prismjs/prismjs.bundle.js\"></script><script src=\"assets/js/scripts.bundle.js\"></script><!--end::Global Theme Bundle-->")
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!--end::Main--><script>\r\n var HOST_URL =\r\n \"https://preview.keenthemes.com/metronic/theme/html/tools/preview\";\r\n </script><!--begin::Global Config(global config for global JS scripts)--><script>\r\n var KTAppSettings = {\r\n breakpoints: {\r\n sm: 576,\r\n md: 768,\r\n lg: 992,\r\n xl: 1200,\r\n xxl: 1400,\r\n },\r\n colors: {\r\n theme: {\r\n base: {\r\n white: \"#ffffff\",\r\n primary: \"#3699FF\",\r\n secondary: \"#E5EAEE\",\r\n success: \"#1BC5BD\",\r\n info: \"#8950FC\",\r\n warning: \"#FFA800\",\r\n danger: \"#F64E60\",\r\n light: \"#E4E6EF\",\r\n dark: \"#181C32\",\r\n },\r\n light: {\r\n white: \"#ffffff\",\r\n primary: \"#E1F0FF\",\r\n secondary: \"#EBEDF3\",\r\n success: \"#C9F7F5\",\r\n info: \"#EEE5FF\",\r\n warning: \"#FFF4DE\",\r\n danger: \"#FFE2E5\",\r\n light: \"#F3F6F9\",\r\n dark: \"#D6D6E0\",\r\n },\r\n inverse: {\r\n white: \"#ffffff\",\r\n primary: \"#ffffff\",\r\n secondary: \"#3F4254\",\r\n success: \"#ffffff\",\r\n info: \"#ffffff\",\r\n warning: \"#ffffff\",\r\n danger: \"#ffffff\",\r\n light: \"#464E5F\",\r\n dark: \"#ffffff\",\r\n },\r\n },\r\n gray: {\r\n \"gray-100\": \"#F3F6F9\",\r\n \"gray-200\": \"#EBEDF3\",\r\n \"gray-300\": \"#E4E6EF\",\r\n \"gray-400\": \"#D1D3E0\",\r\n \"gray-500\": \"#B5B5C3\",\r\n \"gray-600\": \"#7E8299\",\r\n \"gray-700\": \"#5E6278\",\r\n \"gray-800\": \"#3F4254\",\r\n \"gray-900\": \"#181C32\",\r\n },\r\n },\r\n \"font-family\": \"Poppins\",\r\n };\r\n </script><!--end::Global Config--><!--begin::Global Theme Bundle(used by all pages)--><script src=\"assets/plugins/global/plugins.bundle.js\"></script><script src=\"assets/plugins/custom/prismjs/prismjs.bundle.js\"></script><script src=\"assets/js/scripts.bundle.js\"></script><!--end::Global Theme Bundle--><script src=\"assets/js/iconify/iconify.min.js\"></script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View File

@@ -4,44 +4,14 @@ import (
"github.com/emarifer/go-templ-project-structure/views/layout"
)
templ DivLogin() {
templ MainLogin() {
<div class="d-flex flex-column flex-root">
<div
class="login login-1 login-signin-on d-flex flex-column flex-lg-row flex-column-fluid bg-white"
id="kt_login"
>
<!--begin::Aside-->
<div
class="login-aside d-flex flex-column flex-row-auto"
style="background-color: #3b4f9f"
>
<!--begin::Aside Top-->
<div class="d-flex flex-column-auto flex-column pt-lg-40 pt-15 px-10">
<!--begin::Aside header-->
<div class="aside-title mb-5">
Empowering Your Workforce's Health
</div>
<!--end::Aside header-->
<!--begin::Aside title-->
<div class="aside-subtitle">
Discover peace of mind and prioritize your health with our
comprehensive medical check-up packages
</div>
<!--end::Aside title-->
</div>
<!--end::Aside Top-->
<!--begin::Aside Bottom-->
<div
class="d-flex bgi-no-repeat flex-row-fluid justify-content-center align-items-end"
>
<img
src="asset-corporate-portal/media/login-company-vector.png"
class="img-fluid"
style="height: 55vh; width: 55vh"
/>
</div>
<!--end::Aside Bottom-->
</div>
@AsideLeft()
<!--begin::Aside-->
<!--begin::Content-->
<div
@@ -52,254 +22,21 @@ templ DivLogin() {
<!--begin::Signin-->
<div class="login-form login-signin">
<!--begin::Form-->
<form
class="form"
novalidate="novalidate"
id="kt_login_signin_form"
>
<!--begin::Title-->
<div class="d-flex justify-content-center mb-5">
<img
src="asset-corporate-portal/media/logo.png"
alt=""
style="height: 103px"
/>
</div>
<div class="pt-2">
<h3
class="d-flex justify-content-center title-company"
style="color: black"
>
Welcome to Corporate Portal
</h3>
</div>
<div class="pb-10 pt-0">
<h3 class="subtitle-company" style="color: #a7a8bb">
Sign in to access your account
</h3>
</div>
<!--begin::Title-->
<!--begin::Form group-->
<div class="form-group">
<label class="font-size-h6 font-weight-bolder text-dark">Email</label>
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg"
type="text"
name="username"
autocomplete="off"
placeholder="Enter your email"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<div class="d-flex justify-content-between mt-n5">
<label
class="font-size-h6 font-weight-bolder text-dark pt-5"
>Password</label>
</div>
<div class="input-group">
<!-- form-control form-control-solid -->
<input
class="h-auto form-control form-control-solid py-7 px-6 rounded-lg rounded-right-0"
type="password"
name="password"
id="user-password"
autocomplete="off"
placeholder="Enter your password"
/>
<div class="input-group-append">
<span
class="input-group-text rounded-lg rounded-left-0"
style="border: 0"
>
<!-- far fa-eye-slash -->
<a class="btn" role="button" id="btn-show">
<i class="far fa-eye-slash" id="password-icon"></i>
</a>
</span>
</div>
</div>
</div>
<div class="d-flex justify-content-end">
<a
href="javascript:;"
class="font-size-h6 font-weight-bolder text-hover-primary mb-5"
id="kt_login_forgot"
style="color: #0c518c"
>
Forgot Password ?
</a>
</div>
<!--end::Form group-->
<!--begin::Action-->
<div class="pb-lg-0 pb-5 pt-5">
<button
type="button"
id="kt_login_signin_submit"
style="background-color: #0c518c"
class="btn btn-block font-weight-bolder text-white font-size-h6 px-8 py-4 my-3 mr-3 mt-5"
>
Sign In
</button>
</div>
<!--end::Action-->
</form>
@FormSignin()
<!--end::Form-->
</div>
<!--end::Signin-->
<!--begin::Signup -->
<div class="login-form login-signup">
<!--begin::Form -->
<form
class="form"
novalidate="novalidate"
id="kt_login_signup_form"
>
<!--begin::Title -->
<div class="pb-13 pt-lg-0 pt-5">
<h3
class="font-weight-bolder text-dark font-size-h4 font-size-h1-lg"
>
Sign Up
</h3>
<p class="text-muted font-weight-bold font-size-h4">
Enter your details to create your account
</p>
</div>
<!--end::Title -->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="text"
placeholder="Fullname"
name="fullname"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="email"
placeholder="Email"
name="email"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="password"
placeholder="Password"
name="password"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="password"
placeholder="Confirm password"
name="cpassword"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<label class="checkbox mb-0">
<input type="checkbox" name="agree"/>I Agree the
<a href="#">terms and conditions</a>.
<span></span>
</label>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group d-flex flex-wrap pb-lg-0 pb-3">
<button
type="button"
id="kt_login_signup_submit"
class="btn btn-primary font-weight-bolder font-size-h6 px-8 py-4 my-3 mr-4"
>
Submit
</button>
<button
type="button"
id="kt_login_signup_cancel"
class="btn btn-light-primary font-weight-bolder font-size-h6 px-8 py-4 my-3"
>
Cancel
</button>
</div>
<!--end::Form group-->
</form>
@FormSignup()
<!--end::Form -->
</div>
<!--end::Signup -->
<!--begin::Forgot-->
<div class="login-form login-forgot">
<!--begin::Form-->
<form
class="form"
novalidate="novalidate"
id="kt_login_forgot_form"
>
<!--begin::Title-->
<div class="d-flex justify-content-center mb-5">
<img
src="asset-corporate-portal/media/logo.png"
alt=""
style="height: 103px"
/>
</div>
<div class="pb-13 pt-lg-0 pt-5">
<h3
class="font-weight-bolder text-dark font-size-h4 font-size-h1-lg"
>
Forgotten Password ?
</h3>
<p class="text-muted font-weight-bold font-size-h4">
Enter your email to reset your password
</p>
</div>
<!--end::Title-->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="email"
placeholder="Email"
name="email"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group d-flex flex-wrap pb-lg-0">
<button
type="button"
id="kt_login_forgot_submit"
class="btn btn-primary font-weight-bolder font-size-h6 px-8 py-4 my-3 btn-block btn-submit"
>
Submit
</button>
<button
type="button"
id="kt_login_forgot_cancel"
class="btn btn-light-primary font-weight-bolder font-size-h6 px-8 py-4 my-3 btn-block btn-cancel"
>
Cancel
</button>
</div>
<!--end::Form group-->
</form>
@ForgotPassword()
<!--end::Form-->
</div>
<!--end::Forgot-->
@@ -315,73 +52,52 @@ templ DivLogin() {
templ CssLogin() {
<style>
.title-company {
color: #181c32;
font-family: Poppins;
font-size: 31px;
font-style: normal;
font-weight: 600;
line-height: normal;
letter-spacing: -0.3px;
}
.subtitle-company {
color: #a7a8bb;
font-family: Poppins;
font-size: 18px;
font-style: normal;
font-weight: 500;
line-height: normal;
.title-company {
color: #181c32;
font-family: Poppins;
font-size: 31px;
font-style: normal;
font-weight: 600;
line-height: normal;
letter-spacing: -0.3px;
}
.subtitle-company {
color: #a7a8bb;
font-family: Poppins;
font-size: 18px;
font-style: normal;
font-weight: 500;
line-height: normal;
}
.aside-title {
color: #fff;
text-align: center;
font-family: Poppins;
font-size: 28px;
font-style: normal;
font-weight: 600;
line-height: normal;
letter-spacing: -0.84px;
}
.aside-subtitle {
color: #fff;
text-align: center;
font-family: Poppins;
font-size: 16px;
font-style: normal;
font-weight: 500;
line-height: 30px; /* 187.5% */
letter-spacing: -0.48px;
}
</style>
}
.aside-title {
color: #fff;
text-align: center;
font-family: Poppins;
font-size: 28px;
font-style: normal;
font-weight: 600;
line-height: normal;
letter-spacing: -0.84px;
}
.aside-subtitle {
color: #fff;
text-align: center;
font-family: Poppins;
font-size: 16px;
font-style: normal;
font-weight: 500;
line-height: 30px;
/* 187.5% */
letter-spacing: -0.48px;
}
.btn-submit {
background-color: #3b4f9f !important
}
.btn-cancel {
color: #3b4f9f !important;
background-color: #e1f0ff !important;
}
</style>
}
// templ CssLoginCompany() {
// <link
// rel="stylesheet"
// type="text/css"
// href="asset-corporate-portal/css/login.css"
// />
// }
templ JsLogin() {
<script src="asset-corporate-portal/js/login-general.js"></script>
<script src="/asset-corporate-portal/js/login-general.js"></script>
}
templ ShowLogin(title string, cmp templ.Component, css templ.Component, js templ.Component) {
@layout.CanvasLayout(title, css, js) {
@layout.PlaygroundLayout(title, css, js) {
@cmp
}
}

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,274 @@
package login
templ AsideLeft() {
<div class="login-aside d-flex flex-column flex-row-auto bg-primary">
<!--begin::Aside Top-->
<div class="d-flex flex-column-auto flex-column pt-lg-40 pt-15 px-10">
<!--begin::Aside header-->
<div class="aside-title mb-5">
Empowering Your Workforce's Health
</div>
<!--end::Aside header-->
<!--begin::Aside title-->
<div class="aside-subtitle">
Discover peace of mind and prioritize your health with our
comprehensive medical check-up packages
</div>
<!--end::Aside title-->
</div>
<!--end::Aside Top-->
<!--begin::Aside Bottom-->
<div
class="d-flex bgi-no-repeat flex-row-fluid justify-content-center align-items-end"
>
<img
src="/asset-corporate-portal/media/login/login-company-vector.png"
class="img-fluid"
style="height: 55vh; width: 55vh"
/>
</div>
<!--end::Aside Bottom-->
</div>
}
templ FormSignin() {
<form
class="form"
novalidate="novalidate"
id="kt_login_signin_form"
>
<!--begin::Title-->
<div class="d-flex justify-content-center mb-5">
<img
src="/asset-corporate-portal/media/logo/logo.png"
alt=""
style="height: 103px"
/>
</div>
<div class="pt-2">
<h3
class="d-flex justify-content-center title-company text-dark"
>
Welcome to Corporate Portal
</h3>
</div>
<div class="pb-10 pt-0">
<h3 class="subtitle-company" style="color: #a7a8bb">
Sign in to access your account
</h3>
</div>
<!--begin::Title-->
<!--begin::Form group-->
<div class="form-group">
<label class="font-size-h6 font-weight-bolder text-dark">Email</label>
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg"
type="text"
name="username"
autocomplete="off"
placeholder="Enter your email"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<div class="d-flex justify-content-between mt-n5">
<label
class="font-size-h6 font-weight-bolder text-dark pt-5"
>Password</label>
</div>
<div class="input-group">
<!-- form-control form-control-solid -->
<input
class="h-auto form-control form-control-solid py-7 px-6 rounded-lg rounded-right-0"
type="password"
name="password"
id="user-password"
autocomplete="off"
placeholder="Enter your password"
/>
<div class="input-group-append">
<span
class="input-group-text rounded-lg rounded-left-0"
style="border: 0"
>
<!-- far fa-eye-slash -->
<a class="btn" role="button" id="btn-show">
<i class="far fa-eye-slash" id="password-icon"></i>
</a>
</span>
</div>
</div>
</div>
<div class="d-flex justify-content-end">
<a
href="javascript:;"
class="font-size-h6 font-weight-bolder text-hover-primary mb-5 text-primary"
id="kt_login_forgot"
>
Forgot Password ?
</a>
</div>
<!--end::Form group-->
<!--begin::Action-->
<div class="pb-lg-0 pb-5 pt-5">
<button
type="button"
id="kt_login_signin_submit"
class="btn btn-block font-weight-bolder text-white font-size-h6 px-8 py-4 my-3 mr-3 mt-5 btn-primary"
>
Sign In
</button>
</div>
<!--end::Action-->
</form>
}
templ FormSignup() {
<form
class="form"
novalidate="novalidate"
id="kt_login_signup_form"
>
<!--begin::Title -->
<div class="pb-13 pt-lg-0 pt-5">
<h3
class="font-weight-bolder text-dark font-size-h4 font-size-h1-lg"
>
Sign Up
</h3>
<p class="text-muted font-weight-bold font-size-h4">
Enter your details to create your account
</p>
</div>
<!--end::Title -->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="text"
placeholder="Fullname"
name="fullname"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="email"
placeholder="Email"
name="email"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="password"
placeholder="Password"
name="password"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="password"
placeholder="Confirm password"
name="cpassword"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group">
<label class="checkbox mb-0">
<input type="checkbox" name="agree"/>I Agree the
<a href="#">terms and conditions</a>.
<span></span>
</label>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group d-flex flex-wrap pb-lg-0 pb-3">
<button
type="button"
id="kt_login_signup_submit"
class="btn btn-primary font-weight-bolder font-size-h6 px-8 py-4 my-3 mr-4"
>
Submit
</button>
<button
type="button"
id="kt_login_signup_cancel"
class="btn btn-light-primary font-weight-bolder font-size-h6 px-8 py-4 my-3"
>
Cancel
</button>
</div>
<!--end::Form group-->
</form>
}
templ ForgotPassword() {
<form
class="form"
novalidate="novalidate"
id="kt_login_forgot_form"
>
<!--begin::Title-->
<div class="d-flex justify-content-center mb-5">
<img
src="/asset-corporate-portal/media/logo/logo.png"
alt=""
style="height: 103px"
/>
</div>
<div class="pb-13 pt-lg-0 pt-5">
<h3
class="font-weight-bolder text-dark font-size-h4 font-size-h1-lg"
>
Forgotten Password ?
</h3>
<p class="text-muted font-weight-bold font-size-h4">
Enter your email to reset your password
</p>
</div>
<!--end::Title-->
<!--begin::Form group-->
<div class="form-group">
<input
class="form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6"
type="email"
placeholder="Email"
name="email"
autocomplete="off"
/>
</div>
<!--end::Form group-->
<!--begin::Form group-->
<div class="form-group d-flex flex-wrap pb-lg-0">
<button
type="button"
id="kt_login_forgot_submit"
class="btn btn-primary font-weight-bolder font-size-h6 px-8 py-4 my-3 btn-block btn-submit"
>
Submit
</button>
<button
type="button"
id="kt_login_forgot_cancel"
class="btn btn-light-primary font-weight-bolder font-size-h6 px-8 py-4 my-3 btn-block btn-cancel"
>
Cancel
</button>
</div>
<!--end::Form group-->
</form>
}

View File

@@ -0,0 +1,107 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package login
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
func AsideLeft() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"login-aside d-flex flex-column flex-row-auto bg-primary\"><!--begin::Aside Top--><div class=\"d-flex flex-column-auto flex-column pt-lg-40 pt-15 px-10\"><!--begin::Aside header--><div class=\"aside-title mb-5\">Empowering Your Workforce's Health\r</div><!--end::Aside header--><!--begin::Aside title--><div class=\"aside-subtitle\">Discover peace of mind and prioritize your health with our\r comprehensive medical check-up packages\r</div><!--end::Aside title--></div><!--end::Aside Top--><!--begin::Aside Bottom--><div class=\"d-flex bgi-no-repeat flex-row-fluid justify-content-center align-items-end\"><img src=\"/asset-corporate-portal/media/login/login-company-vector.png\" class=\"img-fluid\" style=\"height: 55vh; width: 55vh\"></div><!--end::Aside Bottom--></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func FormSignin() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var2 := templ.GetChildren(ctx)
if templ_7745c5c3_Var2 == nil {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<form class=\"form\" novalidate=\"novalidate\" id=\"kt_login_signin_form\"><!--begin::Title--><div class=\"d-flex justify-content-center mb-5\"><img src=\"/asset-corporate-portal/media/logo/logo.png\" alt=\"\" style=\"height: 103px\"></div><div class=\"pt-2\"><h3 class=\"d-flex justify-content-center title-company text-dark\">Welcome to Corporate Portal\r</h3></div><div class=\"pb-10 pt-0\"><h3 class=\"subtitle-company\" style=\"color: #a7a8bb\">Sign in to access your account\r</h3></div><!--begin::Title--><!--begin::Form group--><div class=\"form-group\"><label class=\"font-size-h6 font-weight-bolder text-dark\">Email</label> <input class=\"form-control form-control-solid h-auto py-7 px-6 rounded-lg\" type=\"text\" name=\"username\" autocomplete=\"off\" placeholder=\"Enter your email\"></div><!--end::Form group--><!--begin::Form group--><div class=\"form-group\"><div class=\"d-flex justify-content-between mt-n5\"><label class=\"font-size-h6 font-weight-bolder text-dark pt-5\">Password</label></div><div class=\"input-group\"><!-- form-control form-control-solid --><input class=\"h-auto form-control form-control-solid py-7 px-6 rounded-lg rounded-right-0\" type=\"password\" name=\"password\" id=\"user-password\" autocomplete=\"off\" placeholder=\"Enter your password\"><div class=\"input-group-append\"><span class=\"input-group-text rounded-lg rounded-left-0\" style=\"border: 0\"><!-- far fa-eye-slash --><a class=\"btn\" role=\"button\" id=\"btn-show\"><i class=\"far fa-eye-slash\" id=\"password-icon\"></i></a></span></div></div></div><div class=\"d-flex justify-content-end\"><a href=\"javascript:;\" class=\"font-size-h6 font-weight-bolder text-hover-primary mb-5 text-primary\" id=\"kt_login_forgot\">Forgot Password ?\r</a></div><!--end::Form group--><!--begin::Action--><div class=\"pb-lg-0 pb-5 pt-5\"><button type=\"button\" id=\"kt_login_signin_submit\" class=\"btn btn-block font-weight-bolder text-white font-size-h6 px-8 py-4 my-3 mr-3 mt-5 btn-primary\">Sign In\r</button></div><!--end::Action--></form>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func FormSignup() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<form class=\"form\" novalidate=\"novalidate\" id=\"kt_login_signup_form\"><!--begin::Title --><div class=\"pb-13 pt-lg-0 pt-5\"><h3 class=\"font-weight-bolder text-dark font-size-h4 font-size-h1-lg\">Sign Up\r</h3><p class=\"text-muted font-weight-bold font-size-h4\">Enter your details to create your account\r</p></div><!--end::Title --><!--begin::Form group--><div class=\"form-group\"><input class=\"form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6\" type=\"text\" placeholder=\"Fullname\" name=\"fullname\" autocomplete=\"off\"></div><!--end::Form group--><!--begin::Form group--><div class=\"form-group\"><input class=\"form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6\" type=\"email\" placeholder=\"Email\" name=\"email\" autocomplete=\"off\"></div><!--end::Form group--><!--begin::Form group--><div class=\"form-group\"><input class=\"form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6\" type=\"password\" placeholder=\"Password\" name=\"password\" autocomplete=\"off\"></div><!--end::Form group--><!--begin::Form group--><div class=\"form-group\"><input class=\"form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6\" type=\"password\" placeholder=\"Confirm password\" name=\"cpassword\" autocomplete=\"off\"></div><!--end::Form group--><!--begin::Form group--><div class=\"form-group\"><label class=\"checkbox mb-0\"><input type=\"checkbox\" name=\"agree\">I Agree the\r <a href=\"#\">terms and conditions</a>.\r <span></span></label></div><!--end::Form group--><!--begin::Form group--><div class=\"form-group d-flex flex-wrap pb-lg-0 pb-3\"><button type=\"button\" id=\"kt_login_signup_submit\" class=\"btn btn-primary font-weight-bolder font-size-h6 px-8 py-4 my-3 mr-4\">Submit\r</button> <button type=\"button\" id=\"kt_login_signup_cancel\" class=\"btn btn-light-primary font-weight-bolder font-size-h6 px-8 py-4 my-3\">Cancel\r</button></div><!--end::Form group--></form>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ForgotPassword() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<form class=\"form\" novalidate=\"novalidate\" id=\"kt_login_forgot_form\"><!--begin::Title--><div class=\"d-flex justify-content-center mb-5\"><img src=\"/asset-corporate-portal/media/logo/logo.png\" alt=\"\" style=\"height: 103px\"></div><div class=\"pb-13 pt-lg-0 pt-5\"><h3 class=\"font-weight-bolder text-dark font-size-h4 font-size-h1-lg\">Forgotten Password ?\r</h3><p class=\"text-muted font-weight-bold font-size-h4\">Enter your email to reset your password\r</p></div><!--end::Title--><!--begin::Form group--><div class=\"form-group\"><input class=\"form-control form-control-solid h-auto py-7 px-6 rounded-lg font-size-h6\" type=\"email\" placeholder=\"Email\" name=\"email\" autocomplete=\"off\"></div><!--end::Form group--><!--begin::Form group--><div class=\"form-group d-flex flex-wrap pb-lg-0\"><button type=\"button\" id=\"kt_login_forgot_submit\" class=\"btn btn-primary font-weight-bolder font-size-h6 px-8 py-4 my-3 btn-block btn-submit\">Submit\r</button> <button type=\"button\" id=\"kt_login_forgot_cancel\" class=\"btn btn-light-primary font-weight-bolder font-size-h6 px-8 py-4 my-3 btn-block btn-cancel\">Cancel\r</button></div><!--end::Form group--></form>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -0,0 +1,131 @@
package kelainanglobal
import (
"github.com/emarifer/go-templ-project-structure/views/layout"
chart "github.com/emarifer/go-templ-project-structure/views/component/chart"
)
templ MainKelainanGlobal(divMcu string, dataMcu string, divFisik string, dataFisik string) {
<div id="div-chart">
@HeaderKelainanGlobal()
<div class="d-flex flex-column flex-root bg-white mt-25">
<!-- begin::Navbar -->
<div class="d-flex justify-content-center ">
<h3 class="mb-3 title">Data Persentase Kelainan Global</h3>
</div>
<div class="row justify-content-center">
<div class="col-12 text-center mb-10">
@chart.ShowChart(divMcu, dataMcu)
</div>
<div class="col-12 text-center">
@chart.ShowChart(divFisik, dataFisik)
</div>
</div>
<!-- end::Navbar -->
</div>
</div>
}
templ CssKelainanGlobal() {
<link
rel="stylesheet"
href="assets/css/googlefont/poppins.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/publicsans.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/roboto.css"
/>
<style>
body {
background-color: white;
/* padding-right: 100px;
padding-left: 100px; */
}
#div-chart {
/* overflow-x: scroll; */
margin: 40px 10vw 40px 10vw;
}
.title {
font-size:20px;
font-weight: bold;
}
#title {
font-weight: 600;
}
</style>
}
templ JsKelainanGlobal() {
// echart
<script src="assets/js/echarts-js/echart.min.js"></script>
}
templ HeaderKelainanGlobal() {
<!-- breadcrumb & icon tanya START -->
<div class="row">
<div class="col-11">
<h1 class="title text-black" style="margin-bottom: 0">
PT. Sadhana Abiyasa Sampoerna
</h1>
<nav aria-label="breadcrumb">
<ol class="breadcrumb" style="margin-bottom: 0">
<li class="breadcrumb-item"><a href="#">Dashboard</a></li>
<li class="breadcrumb-item">
<a href="#">Employee Health Medical Analytic</a>
</li>
<li class="breadcrumb-item">
<a href="#">PT. Sadhana Abiyasa Sampoerna</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
Mcu Karyawan
</li>
</ol>
</nav>
</div>
<div class="col-1 align-content-center">
<!-- align-content-center -->
<div class="d-flex justify-content-end">
<a href="#">
<i class="fas fa-info-circle text-primary"></i>
</a>
</div>
</div>
</div>
<!-- breadcrumb & icon tanya END -->
<div class="mt-10">
<ul class="nav nav-tabs nav-tabs-line">
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_1">Peserta</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_2">Kelainan global</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_3">Kelainan Lab</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_4">kelainan Non Lab</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_5">kelainan Fisik</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_6">Kesimpulan & Saran</a>
</li>
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#kt_tab_pane_7">Daftar Peserta</a>
</li>
</ul>
</div>
}
templ ShowKelainanGlobal(title string, cmp templ.Component, css templ.Component, js templ.Component) {
@layout.PlaygroundLayout(title, css, js) {
@cmp
}
}

View File

@@ -0,0 +1,175 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package kelainanglobal
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import (
chart "github.com/emarifer/go-templ-project-structure/views/component/chart"
"github.com/emarifer/go-templ-project-structure/views/layout"
)
func MainKelainanGlobal(divMcu string, dataMcu string, divFisik string, dataFisik string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"div-chart\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = HeaderKelainanGlobal().Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex flex-column flex-root bg-white mt-25\"><!-- begin::Navbar --><div class=\"d-flex justify-content-center \"><h3 class=\"mb-3 title\">Data Persentase Kelainan Global</h3></div><div class=\"row justify-content-center\"><div class=\"col-12 text-center mb-10\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = chart.ShowChart(divMcu, dataMcu).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"col-12 text-center\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = chart.ShowChart(divFisik, dataFisik).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div><!-- end::Navbar --></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func CssKelainanGlobal() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var2 := templ.GetChildren(ctx)
if templ_7745c5c3_Var2 == nil {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/publicsans.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/roboto.css\"><style>\r\n body {\r\n background-color: white;\r\n /* padding-right: 100px;\r\n padding-left: 100px; */\r\n }\r\n #div-chart {\r\n /* overflow-x: scroll; */\r\n margin: 40px 10vw 40px 10vw;\r\n }\r\n .title {\r\n font-size:20px;\r\n font-weight: bold;\r\n }\r\n #title {\r\n font-weight: 600;\r\n }\r\n \r\n</style>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func JsKelainanGlobal() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script src=\"assets/js/echarts-js/echart.min.js\"></script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func HeaderKelainanGlobal() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!-- breadcrumb & icon tanya START --><div class=\"row\"><div class=\"col-11\"><h1 class=\"title text-black\" style=\"margin-bottom: 0\">PT. Sadhana Abiyasa Sampoerna\r</h1><nav aria-label=\"breadcrumb\"><ol class=\"breadcrumb\" style=\"margin-bottom: 0\"><li class=\"breadcrumb-item\"><a href=\"#\">Dashboard</a></li><li class=\"breadcrumb-item\"><a href=\"#\">Employee Health Medical Analytic</a></li><li class=\"breadcrumb-item\"><a href=\"#\">PT. Sadhana Abiyasa Sampoerna</a></li><li class=\"breadcrumb-item active\" aria-current=\"page\">Mcu Karyawan\r</li></ol></nav></div><div class=\"col-1 align-content-center\"><!-- align-content-center --><div class=\"d-flex justify-content-end\"><a href=\"#\"><i class=\"fas fa-info-circle text-primary\"></i></a></div></div></div><!-- breadcrumb & icon tanya END --><div class=\"mt-10\"><ul class=\"nav nav-tabs nav-tabs-line\"><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_1\">Peserta</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_2\">Kelainan global</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_3\">Kelainan Lab</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_4\">kelainan Non Lab</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_5\">kelainan Fisik</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_6\">Kesimpulan & Saran</a></li><li class=\"nav-item\"><a class=\"nav-link active\" data-toggle=\"tab\" href=\"#kt_tab_pane_7\">Daftar Peserta</a></li></ul></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ShowKelainanGlobal(title string, cmp templ.Component, css templ.Component, js templ.Component) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var5 := templ.GetChildren(ctx)
if templ_7745c5c3_Var5 == nil {
templ_7745c5c3_Var5 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var6 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
templ_7745c5c3_Err = cmp.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer)
}
return templ_7745c5c3_Err
})
templ_7745c5c3_Err = layout.PlaygroundLayout(title, css, js).Render(templ.WithChildren(ctx, templ_7745c5c3_Var6), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

View File

@@ -0,0 +1,132 @@
package mcupeserta
import (
"github.com/emarifer/go-templ-project-structure/views/layout"
chart "github.com/emarifer/go-templ-project-structure/views/component/chart"
)
templ MainMcuPeserta(divPesertaMcu string, dataPesertaMcu string, divKepesertaanMcu string, dataKepesertaanMcu string, divPesertaMcuUmur string, dataPesertaMcuUmur string) {
<div id="div-chart">
@HeaderMcuPeserta()
<div class="d-flex flex-column flex-root bg-white mt-25">
<div class="d-flex justify-content-center ">
<h3 class="mb-3 title">Data Kepesertaan MCU</h3>
</div>
<div class="row justify-content-center">
<div class="col-12 text-center mb-10">
@chart.ShowChart(divPesertaMcu, dataPesertaMcu)
</div>
<div class="col-12 text-center mb-10">
@chart.ShowChart(divKepesertaanMcu, dataKepesertaanMcu)
</div>
<div class="col-12 text-center">
@chart.ShowChart(divPesertaMcuUmur, dataPesertaMcuUmur)
</div>
</div>
</div>
</div>
}
templ CssMcuPeserta() {
<link
rel="stylesheet"
href="assets/css/googlefont/poppins.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/publicsans.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/roboto.css"
/>
<style>
body {
background-color: white;
/* padding-right: 100px;
padding-left: 100px; */
}
#div-chart {
/* overflow-x: scroll; */
margin: 40px 10vw 40px 10vw;
}
.title {
font-size:20px;
font-weight: bold;
}
#title {
font-weight: 600;
}
</style>
}
templ JsMcuPeserta() {
// echart
<script src="assets/js/echarts-js/echart.min.js"></script>
}
templ HeaderMcuPeserta() {
<!-- breadcrumb & icon tanya START -->
<div class="row">
<div class="col-11">
<h1 class="title text-black" style="margin-bottom: 0">
PT. Sadhana Abiyasa Sampoerna
</h1>
<nav aria-label="breadcrumb">
<ol class="breadcrumb" style="margin-bottom: 0">
<li class="breadcrumb-item"><a href="#">Dashboard</a></li>
<li class="breadcrumb-item">
<a href="#">Employee Health Medical Analytic</a>
</li>
<li class="breadcrumb-item">
<a href="#">PT. Sadhana Abiyasa Sampoerna</a>
</li>
<li class="breadcrumb-item active" aria-current="page">
Mcu Karyawan
</li>
</ol>
</nav>
</div>
<div class="col-1 align-content-center">
<!-- align-content-center -->
<div class="d-flex justify-content-end">
<a href="#">
<i class="fas fa-info-circle text-primary"></i>
</a>
</div>
</div>
</div>
<!-- breadcrumb & icon tanya END -->
<div class="mt-10">
<ul class="nav nav-tabs nav-tabs-line">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#kt_tab_pane_1">Peserta</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_2">Kelainan global</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_3">Kelainan Lab</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_4">kelainan Non Lab</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_5">kelainan Fisik</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_6">Kesimpulan & Saran</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#kt_tab_pane_7">Daftar Peserta</a>
</li>
</ul>
</div>
}
templ ShowMcuPeserta(title string, cmp templ.Component, css templ.Component, js templ.Component) {
@layout.PlaygroundLayout(title, css, js) {
@cmp
}
}

View File

@@ -0,0 +1,183 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package mcupeserta
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import (
chart "github.com/emarifer/go-templ-project-structure/views/component/chart"
"github.com/emarifer/go-templ-project-structure/views/layout"
)
func MainMcuPeserta(divPesertaMcu string, dataPesertaMcu string, divKepesertaanMcu string, dataKepesertaanMcu string, divPesertaMcuUmur string, dataPesertaMcuUmur string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div id=\"div-chart\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = HeaderMcuPeserta().Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex flex-column flex-root bg-white mt-25\"><div class=\"d-flex justify-content-center \"><h3 class=\"mb-3 title\">Data Kepesertaan MCU</h3></div><div class=\"row justify-content-center\"><div class=\"col-12 text-center mb-10\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = chart.ShowChart(divPesertaMcu, dataPesertaMcu).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"col-12 text-center mb-10\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = chart.ShowChart(divKepesertaanMcu, dataKepesertaanMcu).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><div class=\"col-12 text-center\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = chart.ShowChart(divPesertaMcuUmur, dataPesertaMcuUmur).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func CssMcuPeserta() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var2 := templ.GetChildren(ctx)
if templ_7745c5c3_Var2 == nil {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/publicsans.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/roboto.css\"><style>\r\n body {\r\n background-color: white;\r\n /* padding-right: 100px;\r\n padding-left: 100px; */\r\n }\r\n #div-chart {\r\n /* overflow-x: scroll; */\r\n margin: 40px 10vw 40px 10vw;\r\n }\r\n .title {\r\n font-size:20px;\r\n font-weight: bold;\r\n }\r\n #title {\r\n font-weight: 600;\r\n }\r\n \r\n</style>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func JsMcuPeserta() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script src=\"assets/js/echarts-js/echart.min.js\"></script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func HeaderMcuPeserta() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!-- breadcrumb & icon tanya START --><div class=\"row\"><div class=\"col-11\"><h1 class=\"title text-black\" style=\"margin-bottom: 0\">PT. Sadhana Abiyasa Sampoerna\r</h1><nav aria-label=\"breadcrumb\"><ol class=\"breadcrumb\" style=\"margin-bottom: 0\"><li class=\"breadcrumb-item\"><a href=\"#\">Dashboard</a></li><li class=\"breadcrumb-item\"><a href=\"#\">Employee Health Medical Analytic</a></li><li class=\"breadcrumb-item\"><a href=\"#\">PT. Sadhana Abiyasa Sampoerna</a></li><li class=\"breadcrumb-item active\" aria-current=\"page\">Mcu Karyawan\r</li></ol></nav></div><div class=\"col-1 align-content-center\"><!-- align-content-center --><div class=\"d-flex justify-content-end\"><a href=\"#\"><i class=\"fas fa-info-circle text-primary\"></i></a></div></div></div><!-- breadcrumb & icon tanya END --><div class=\"mt-10\"><ul class=\"nav nav-tabs nav-tabs-line\"><li class=\"nav-item\"><a class=\"nav-link active\" data-toggle=\"tab\" href=\"#kt_tab_pane_1\">Peserta</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_2\">Kelainan global</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_3\">Kelainan Lab</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_4\">kelainan Non Lab</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_5\">kelainan Fisik</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_6\">Kesimpulan & Saran</a></li><li class=\"nav-item\"><a class=\"nav-link\" data-toggle=\"tab\" href=\"#kt_tab_pane_7\">Daftar Peserta</a></li></ul></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ShowMcuPeserta(title string, cmp templ.Component, css templ.Component, js templ.Component) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var5 := templ.GetChildren(ctx)
if templ_7745c5c3_Var5 == nil {
templ_7745c5c3_Var5 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var6 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
templ_7745c5c3_Err = cmp.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer)
}
return templ_7745c5c3_Err
})
templ_7745c5c3_Err = layout.PlaygroundLayout(title, css, js).Render(templ.WithChildren(ctx, templ_7745c5c3_Var6), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -0,0 +1,59 @@
package piechart
import (
"github.com/emarifer/go-templ-project-structure/views/layout"
chart "github.com/emarifer/go-templ-project-structure/views/component/chart"
)
templ MainPieChart(idDiv string, udata string) {
<!-- title -->
<div class="row justify-content-center mb-3 mt-3">
<div class="col-lg-8 col-xxl-8 col-md-10 text-center">
<p class="title">Data Kepesertaan MCU</p>
</div>
</div>
<!-- title -->
<div class="row justify-content-center">
<div class="col-lg-8 col-xxl-8 col-md-10 text-center" style="margin-bottom: 40px;">
@chart.ShowChart(idDiv, udata)
</div>
</div>
}
templ CssPieChart() {
<link
rel="stylesheet"
href="assets/css/googlefont/poppins.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/publicsans.css"
/>
<link
rel="stylesheet"
href="assets/css/googlefont/roboto.css"
/>
<style>
body {
background-color: white;
/* padding-right: 100px;
padding-left: 100px; */
}
.title {
font-size:20px;
font-weight: bold;
}
</style>
}
templ JsPieChart() {
// echart
<script src="assets/js/echarts-js/echart.min.js"></script>
}
templ ShowPieChart(title string, cmp templ.Component, css templ.Component, js templ.Component) {
@layout.PlaygroundLayout(title, css, js) {
@cmp
}
}

View File

@@ -0,0 +1,135 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package piechart
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
import (
chart "github.com/emarifer/go-templ-project-structure/views/component/chart"
"github.com/emarifer/go-templ-project-structure/views/layout"
)
func MainPieChart(idDiv string, udata string) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!-- title --><div class=\"row justify-content-center mb-3 mt-3\"><div class=\"col-lg-8 col-xxl-8 col-md-10 text-center\"><p class=\"title\">Data Kepesertaan MCU</p></div></div><!-- title --><div class=\"row justify-content-center\"><div class=\"col-lg-8 col-xxl-8 col-md-10 text-center\" style=\"margin-bottom: 40px;\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = chart.ShowChart(idDiv, udata).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func CssPieChart() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var2 := templ.GetChildren(ctx)
if templ_7745c5c3_Var2 == nil {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<link rel=\"stylesheet\" href=\"assets/css/googlefont/poppins.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/publicsans.css\"><link rel=\"stylesheet\" href=\"assets/css/googlefont/roboto.css\"><style>\r\n body {\r\n background-color: white;\r\n /* padding-right: 100px;\r\n padding-left: 100px; */\r\n }\r\n\r\n .title {\r\n font-size:20px;\r\n font-weight: bold;\r\n }\r\n </style>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func JsPieChart() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var3 := templ.GetChildren(ctx)
if templ_7745c5c3_Var3 == nil {
templ_7745c5c3_Var3 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<script src=\"assets/js/echarts-js/echart.min.js\"></script>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}
func ShowPieChart(title string, cmp templ.Component, css templ.Component, js templ.Component) templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var4 := templ.GetChildren(ctx)
if templ_7745c5c3_Var4 == nil {
templ_7745c5c3_Var4 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var5 := templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
templ_7745c5c3_Err = cmp.Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = io.Copy(templ_7745c5c3_W, templ_7745c5c3_Buffer)
}
return templ_7745c5c3_Err
})
templ_7745c5c3_Err = layout.PlaygroundLayout(title, css, js).Render(templ.WithChildren(ctx, templ_7745c5c3_Var5), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -0,0 +1,17 @@
package under_development
templ UnderDevelopment() {
<div class="d-flex justify-content-center text-center flex-column mt-20">
<div class="text-primary underdev">Site Under Development</div>
<div class="text-disabled underdevsub mb-10">
"Stay Tuned, We're Building Excitement!"
</div>
<div>
<img
src="/asset-corporate-portal/media/under_development/under_development.png"
class="img-fluid"
alt="Your Brand"
/>
</div>
</div>
}

View File

@@ -0,0 +1,35 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.2.663
package under_development
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import "context"
import "io"
import "bytes"
func UnderDevelopment() templ.Component {
return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) {
templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer)
if !templ_7745c5c3_IsBuffer {
templ_7745c5c3_Buffer = templ.GetBuffer()
defer templ.ReleaseBuffer(templ_7745c5c3_Buffer)
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<div class=\"d-flex justify-content-center text-center flex-column mt-20\"><div class=\"text-primary underdev\">Site Under Development</div><div class=\"text-disabled underdevsub mb-10\">\"Stay Tuned, We're Building Excitement!\"\r</div><div><img src=\"/asset-corporate-portal/media/under_development/under_development.png\" class=\"img-fluid\" alt=\"Your Brand\"></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if !templ_7745c5c3_IsBuffer {
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W)
}
return templ_7745c5c3_Err
})
}

View File

@@ -32,9 +32,9 @@ templ Details(tz string, user services.User) {
<div class="divider divider-secondary -m-4"></div>
<div class="card-actions justify-end">
<a
hx-swap="transition:true"
class="block w-fit h-fit badge badge-outline hover:scale-[1.03] ease-in duration-300"
href="/user"
hx-swap="transition:true"
class="block w-fit h-fit badge badge-outline hover:scale-[1.03] ease-in duration-300"
href="/user"
>
<p class="m-1">
&larr; Back to User List

View File

@@ -30,19 +30,19 @@ templ Show(users []services.User) {
<th>{ strconv.Itoa(int(user.ID)) }</th>
<td>
<a
hx-swap="transition:true"
hx-headers="js:{'X-TimeZone': Intl.DateTimeFormat().resolvedOptions().timeZone}"
class="hover:text-sky-500 ease-in duration-300 hover:underline flex gap-2 justify-between"
href={ templ.URL(
hx-swap="transition:true"
hx-headers="js:{'X-TimeZone': Intl.DateTimeFormat().resolvedOptions().timeZone}"
class="hover:text-sky-500 ease-in duration-300 hover:underline flex gap-2 justify-between"
href={ templ.URL(
fmt.Sprintf(
"/user/details/%d", user.ID,
)) }
>
{ user.Username }
<img
class="hover:scale-[1.2] ease-in duration-300"
src="/img/info_icon.svg"
alt="Info icon"
class="hover:scale-[1.2] ease-in duration-300"
src="/img/info_icon.svg"
alt="Info icon"
/>
</a>
</td>