Compare commits
5 Commits
landing-pa
...
hanan/empl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f6eb31c242 | ||
|
|
c267c26260 | ||
|
|
3281472f67 | ||
|
|
b3883c9a8d | ||
|
|
d8e8f91fbd |
@@ -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;
|
||||
|
||||
431
assets/hanan/employee-medical-analytic.html
Normal file
431
assets/hanan/employee-medical-analytic.html
Normal 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
2
assets/library/slick-1.8.1/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.sass-cache
|
||||
node_modules
|
||||
35
assets/library/slick-1.8.1/CONTRIBUTING.markdown
Normal file
35
assets/library/slick-1.8.1/CONTRIBUTING.markdown
Normal 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.*
|
||||
50
assets/library/slick-1.8.1/ISSUE_TEMPLATE.md
Normal file
50
assets/library/slick-1.8.1/ISSUE_TEMPLATE.md
Normal 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?
|
||||
|
||||
|
||||
|
||||
|
||||
20
assets/library/slick-1.8.1/LICENSE
Normal file
20
assets/library/slick-1.8.1/LICENSE
Normal 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.
|
||||
8
assets/library/slick-1.8.1/Makefile
Normal file
8
assets/library/slick-1.8.1/Makefile
Normal file
@@ -0,0 +1,8 @@
|
||||
|
||||
build: components slick.js slick.css
|
||||
@component build --dev
|
||||
|
||||
components: component.json
|
||||
@component install --dev
|
||||
|
||||
.PHONY: clean
|
||||
292
assets/library/slick-1.8.1/README.markdown
Normal file
292
assets/library/slick-1.8.1/README.markdown
Normal 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.
|
||||
32
assets/library/slick-1.8.1/bower.json
Normal file
32
assets/library/slick-1.8.1/bower.json
Normal 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"
|
||||
}
|
||||
}
|
||||
18
assets/library/slick-1.8.1/component.json
Normal file
18
assets/library/slick-1.8.1/component.json
Normal 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"
|
||||
}
|
||||
}
|
||||
373
assets/library/slick-1.8.1/index.html
Normal file
373
assets/library/slick-1.8.1/index.html
Normal 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>
|
||||
50
assets/library/slick-1.8.1/package.json
Normal file
50
assets/library/slick-1.8.1/package.json
Normal 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"
|
||||
}
|
||||
}
|
||||
34
assets/library/slick-1.8.1/slick.jquery.json
Normal file
34
assets/library/slick-1.8.1/slick.jquery.json
Normal 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"
|
||||
}
|
||||
}
|
||||
BIN
assets/library/slick-1.8.1/slick/ajax-loader.gif
Normal file
BIN
assets/library/slick-1.8.1/slick/ajax-loader.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 KiB |
10
assets/library/slick-1.8.1/slick/config.rb
Normal file
10
assets/library/slick-1.8.1/slick/config.rb
Normal 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
|
||||
BIN
assets/library/slick-1.8.1/slick/fonts/slick.eot
Normal file
BIN
assets/library/slick-1.8.1/slick/fonts/slick.eot
Normal file
Binary file not shown.
14
assets/library/slick-1.8.1/slick/fonts/slick.svg
Normal file
14
assets/library/slick-1.8.1/slick/fonts/slick.svg
Normal 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="→" 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="←" 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="•" 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="a" 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 |
BIN
assets/library/slick-1.8.1/slick/fonts/slick.ttf
Normal file
BIN
assets/library/slick-1.8.1/slick/fonts/slick.ttf
Normal file
Binary file not shown.
BIN
assets/library/slick-1.8.1/slick/fonts/slick.woff
Normal file
BIN
assets/library/slick-1.8.1/slick/fonts/slick.woff
Normal file
Binary file not shown.
204
assets/library/slick-1.8.1/slick/slick-theme.css
Normal file
204
assets/library/slick-1.8.1/slick/slick-theme.css
Normal 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;
|
||||
}
|
||||
168
assets/library/slick-1.8.1/slick/slick-theme.less
Normal file
168
assets/library/slick-1.8.1/slick/slick-theme.less
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
194
assets/library/slick-1.8.1/slick/slick-theme.scss
Normal file
194
assets/library/slick-1.8.1/slick/slick-theme.scss
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
119
assets/library/slick-1.8.1/slick/slick.css
Normal file
119
assets/library/slick-1.8.1/slick/slick.css
Normal 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;
|
||||
}
|
||||
3011
assets/library/slick-1.8.1/slick/slick.js
Normal file
3011
assets/library/slick-1.8.1/slick/slick.js
Normal file
File diff suppressed because it is too large
Load Diff
100
assets/library/slick-1.8.1/slick/slick.less
Normal file
100
assets/library/slick-1.8.1/slick/slick.less
Normal 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;
|
||||
}
|
||||
1
assets/library/slick-1.8.1/slick/slick.min.js
vendored
Normal file
1
assets/library/slick-1.8.1/slick/slick.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
100
assets/library/slick-1.8.1/slick/slick.scss
Normal file
100
assets/library/slick-1.8.1/slick/slick.scss
Normal 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;
|
||||
}
|
||||
@@ -342,7 +342,7 @@ License: You must have a valid license purchased only from themeforest(the above
|
||||
src="../assets/asset-corporate-portal/media/landingpage/jumbotron_left.png"
|
||||
class="img-fluid"
|
||||
alt="Your Brand"
|
||||
style="width: 100%; height: 100%"
|
||||
style="width: 100%; height: 100%;"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
26
cmd/main.go
26
cmd/main.go
@@ -24,7 +24,7 @@ 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/")
|
||||
})
|
||||
|
||||
uStore, err := db.NewUserStore(dbName)
|
||||
@@ -38,6 +38,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,6 +54,22 @@ func main() {
|
||||
xh := handlers.NewXsampleHandler(xs)
|
||||
handlers.SetupRoutesXsample(app, xh)
|
||||
|
||||
LpStore, err := db.NewLandingPageStore(dbName)
|
||||
if err != nil {
|
||||
app.Logger.Fatalf("failed to create store: %s", err)
|
||||
}
|
||||
lps := services.NewServicesLandingPage(services.LandingPage{}, LpStore)
|
||||
lphs := handlers.NewLandingPageHandler(lps)
|
||||
handlers.SetupRoutesLandingPage(app, lphs)
|
||||
|
||||
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"))
|
||||
}
|
||||
|
||||
|
||||
26
db/employee.store.go
Normal file
26
db/employee.store.go
Normal 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/landingpage.store.go
Normal file
26
db/landingpage.store.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
|
||||
_ "github.com/glebarez/go-sqlite"
|
||||
)
|
||||
|
||||
type LandingPageStore struct {
|
||||
Db *sql.DB
|
||||
}
|
||||
|
||||
func NewLandingPageStore(dbName string) (LandingPageStore, error) {
|
||||
Db, err := getConnection(dbName)
|
||||
if err != nil {
|
||||
return LandingPageStore{}, err
|
||||
}
|
||||
|
||||
if err := createMigrations(dbName, Db); err != nil {
|
||||
return LandingPageStore{}, err
|
||||
}
|
||||
|
||||
return LandingPageStore{
|
||||
Db,
|
||||
}, nil
|
||||
}
|
||||
26
db/login.store.go
Normal file
26
db/login.store.go
Normal 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
|
||||
}
|
||||
42
handlers/employee.handler.go
Normal file
42
handlers/employee.handler.go
Normal 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)
|
||||
}
|
||||
59
handlers/landingpage.handlers.go
Normal file
59
handlers/landingpage.handlers.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package handlers
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/a-h/templ"
|
||||
"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 {
|
||||
return &LandingPageHandler{
|
||||
LandingPageService: us,
|
||||
}
|
||||
}
|
||||
|
||||
type LandingPageHandler struct {
|
||||
LandingPageService LandingPageService
|
||||
}
|
||||
|
||||
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 {
|
||||
c.Response().Header().Set(echo.HeaderContentType, echo.MIMETextHTML)
|
||||
|
||||
return cmp.Render(c.Request().Context(), c.Response().Writer)
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
@@ -11,10 +11,22 @@ 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)
|
||||
}
|
||||
func SetupRoutesLandingPage(app *echo.Echo, h *LandingPageHandler) {
|
||||
Lp := app.Group("/landing_page")
|
||||
Lp.GET("/", h.ShowLandingPage)
|
||||
}
|
||||
func SetupRoutesEmployee(app *echo.Echo, e *EmployeeHandler) {
|
||||
employee := app.Group("/employee")
|
||||
employee.GET("/", e.ShowEmployee)
|
||||
}
|
||||
func SetupRoutesProject(app *echo.Echo) {
|
||||
|
||||
}
|
||||
|
||||
71
services/employee.services.go
Normal file
71
services/employee.services.go
Normal 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
|
||||
}
|
||||
181
services/landingpage.services.go
Normal file
181
services/landingpage.services.go
Normal file
@@ -0,0 +1,181 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/emarifer/go-templ-project-structure/db"
|
||||
)
|
||||
|
||||
func NewServicesLandingPage(u LandingPage, uStore db.LandingPageStore) *ServicesLandingPage {
|
||||
|
||||
return &ServicesLandingPage{
|
||||
LandingPage: u,
|
||||
LandingPageStore: uStore,
|
||||
}
|
||||
}
|
||||
|
||||
type LandingPage struct {
|
||||
ID int `json:"id"`
|
||||
LandingPagename string `json:"LandingPagename"`
|
||||
Email string `json:"email"`
|
||||
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
|
||||
}
|
||||
|
||||
func (su *ServicesLandingPage) GetAllLandingPages() ([]LandingPage, error) {
|
||||
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages ORDER BY created_at DESC`
|
||||
|
||||
rows, err := su.LandingPageStore.Db.Query(query)
|
||||
if err != nil {
|
||||
return []LandingPage{}, err
|
||||
}
|
||||
// We close the resource
|
||||
defer rows.Close()
|
||||
|
||||
LandingPages := []LandingPage{}
|
||||
for rows.Next() {
|
||||
rows.Scan(
|
||||
&su.LandingPage.ID,
|
||||
&su.LandingPage.LandingPagename,
|
||||
&su.LandingPage.Email,
|
||||
&su.LandingPage.CreatedAt,
|
||||
)
|
||||
|
||||
LandingPages = append(LandingPages, su.LandingPage)
|
||||
}
|
||||
|
||||
return LandingPages, nil
|
||||
}
|
||||
|
||||
func (su *ServicesLandingPage) GetLandingPageById(id int) (LandingPage, error) {
|
||||
|
||||
query := `SELECT id, LandingPagename, email, created_at FROM LandingPages
|
||||
WHERE id = ?`
|
||||
|
||||
stmt, err := su.LandingPageStore.Db.Prepare(query)
|
||||
if err != nil {
|
||||
return LandingPage{}, err
|
||||
}
|
||||
|
||||
defer stmt.Close()
|
||||
|
||||
su.LandingPage.ID = id
|
||||
err = stmt.QueryRow(
|
||||
su.LandingPage.ID,
|
||||
).Scan(
|
||||
&su.LandingPage.ID,
|
||||
&su.LandingPage.LandingPagename,
|
||||
&su.LandingPage.Email,
|
||||
&su.LandingPage.CreatedAt,
|
||||
)
|
||||
if err != nil {
|
||||
return LandingPage{}, err
|
||||
}
|
||||
|
||||
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: "/",
|
||||
},
|
||||
}
|
||||
|
||||
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: "",
|
||||
},
|
||||
}
|
||||
|
||||
return data, nil
|
||||
}
|
||||
59
services/login.services.go
Normal file
59
services/login.services.go
Normal 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
|
||||
}
|
||||
115
views/employee/employee.templ
Normal file
115
views/employee/employee.templ
Normal file
@@ -0,0 +1,115 @@
|
||||
package employee
|
||||
|
||||
import (
|
||||
"github.com/emarifer/go-templ-project-structure/views/layout"
|
||||
)
|
||||
|
||||
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 -->
|
||||
<!--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>
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
138
views/employee/employee_templ.go
Normal file
138
views/employee/employee_templ.go
Normal file
@@ -0,0 +1,138 @@
|
||||
// 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"
|
||||
)
|
||||
|
||||
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 --><!--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>")
|
||||
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
|
||||
})
|
||||
}
|
||||
60
views/employee/employeecomponent.templ
Normal file
60
views/employee/employeecomponent.templ
Normal 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>
|
||||
}
|
||||
154
views/employee/employeecomponent_templ.go
Normal file
154
views/employee/employeecomponent_templ.go
Normal 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
|
||||
})
|
||||
}
|
||||
263
views/landingpage/landingpage.templ
Normal file
263
views/landingpage/landingpage.templ
Normal file
@@ -0,0 +1,263 @@
|
||||
package landingpage
|
||||
|
||||
import (
|
||||
"github.com/emarifer/go-templ-project-structure/views/layout"
|
||||
)
|
||||
|
||||
templ MainLandingPage(medicalServiceComponent templ.Component, listAdvantageComponent templ.Component, listPromotion templ.Component, footer templ.Component) {
|
||||
<div class="d-block d-lg-none d-xl-none p-10 justify-content-center h1">Under development</div>
|
||||
<div class="d-none d-lg-block">
|
||||
<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"
|
||||
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 -->
|
||||
<!-- jumbotron START -->
|
||||
<!-- <div class="jumbotron jumbotron-lp d-none d-lg-block"> -->
|
||||
@HeaderCard()
|
||||
<!-- jumbotron END -->
|
||||
<!-- Our Medical Service START -->
|
||||
<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 p-0 mt-5 ">
|
||||
<div class="row">
|
||||
@HeaderSection("Why Westerindo", "With a dedicated team of professionals we’re 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">
|
||||
@HeaderSection("Promotions", "Seize This Opportunity to Enhance Your Health")
|
||||
</div>
|
||||
@listPromotion
|
||||
</div>
|
||||
<!-- Promotion END -->
|
||||
</div>
|
||||
<!-- footer START -->
|
||||
@footer
|
||||
<!-- footer END -->
|
||||
</div>
|
||||
}
|
||||
|
||||
templ CssLandingPage() {
|
||||
<div>
|
||||
<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"
|
||||
/>
|
||||
<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;
|
||||
}
|
||||
</style>
|
||||
</div>
|
||||
}
|
||||
|
||||
templ JsLandingPage() {
|
||||
}
|
||||
|
||||
templ ShowLandingPage(title string, cmp templ.Component, css templ.Component, js templ.Component) {
|
||||
@layout.PlaygroundLayout(title, css, js) {
|
||||
@cmp
|
||||
}
|
||||
}
|
||||
186
views/landingpage/landingpage_templ.go
Normal file
186
views/landingpage/landingpage_templ.go
Normal file
@@ -0,0 +1,186 @@
|
||||
// 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/views/layout"
|
||||
)
|
||||
|
||||
func MainLandingPage(medicalServiceComponent templ.Component, listAdvantageComponent templ.Component, listPromotion templ.Component, footer 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=\"d-block d-lg-none d-xl-none p-10 justify-content-center h1\">Under development</div><div class=\"d-none d-lg-block\"><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\" 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 --><!-- jumbotron START --><!-- <div class=\"jumbotron jumbotron-lp d-none d-lg-block\"> -->")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = HeaderCard().Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!-- jumbotron END --><!-- Our Medical Service START --><div class=\"row\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = 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.").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
|
||||
}
|
||||
templ_7745c5c3_Err = medicalServiceComponent.Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!-- Our Medical Service END --><!-- Why Westerindo START belum fix di ukuran < 1400 --><div class=\"container p-0 mt-5 \"><div class=\"row\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = HeaderSection("Why Westerindo", "With a dedicated team of professionals we’re committed to providing medical attention tailored to your needs, ensuring a journey to optimal health and vitality.").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
|
||||
}
|
||||
templ_7745c5c3_Err = listAdvantageComponent.Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><!-- Why Westerindo END --><!-- Promotion START --><div class=\"container mt-4\"><div class=\"row\">")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = HeaderSection("Promotions", "Seize This Opportunity to Enhance Your Health").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
|
||||
}
|
||||
templ_7745c5c3_Err = listPromotion.Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("</div><!-- Promotion END --></div><!-- footer START -->")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
templ_7745c5c3_Err = footer.Render(ctx, templ_7745c5c3_Buffer)
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("<!-- footer END --></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 CssLandingPage() 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("<div><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\"><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 .jumbotron-lp {\r\n border-radius: 32px;\r\n /* background: #3B4F9F; */\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 .title-jumbotron {\r\n /* color: #FFF; */\r\n font-family: Poppins;\r\n font-size: 52px;\r\n /* font-size: 3vw; */\r\n font-style: normal;\r\n font-weight: 600;\r\n }\r\n\r\n .sub-title-jumbotron {\r\n /* color: #FFF; */\r\n font-family: Poppins;\r\n font-size: 16px;\r\n /* font-size: 1vw; */\r\n font-style: normal;\r\n font-weight: 400;\r\n }\r\n\r\n .btn-login {\r\n border-radius: 40px;\r\n /* background-color: #3B4F9F; */\r\n box-shadow: 0px 8px 16px 0px rgba(59, 79, 159, 0.24);\r\n }\r\n\r\n .title-get-started {\r\n /* color: #0C518C; */\r\n font-family: Poppins;\r\n font-size: 20px;\r\n /* font-size: 1vw; */\r\n font-style: normal;\r\n font-weight: 700;\r\n }\r\n\r\n .custom-button-get-started {\r\n border-radius: 40px;\r\n /* background-color: #FFF; */\r\n box-shadow: 0px 8px 16px 0px rgba(12, 81, 140, 0.24);\r\n padding: 20px;\r\n margin-top: 44px;\r\n justify-content: center;\r\n align-items: center;\r\n width: 242px;\r\n }\r\n\r\n .title-section {\r\n /* color: #000; */\r\n font-family: Poppins;\r\n font-size: 40px;\r\n /* font-size: 3vw; */\r\n font-style: normal;\r\n font-weight: 600;\r\n line-height: 80px;\r\n margin-bottom: 16px;\r\n }\r\n\r\n .sub-title-section {\r\n /* color: #212B36; */\r\n font-family: Poppins;\r\n font-size: 20px;\r\n /* font-size: 1.5vw; */\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 36px;\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 .title-fs-20 {\r\n /* color: #0E1E28; */\r\n font-family: Poppins;\r\n font-size: 20px;\r\n /* font-size: 1.5vw; */\r\n font-style: normal;\r\n /* font-weight: 500; */\r\n line-height: 36px;\r\n }\r\n\r\n .sub-title-fs-12 {\r\n /* color: #0E1E28; */\r\n font-family: Poppins;\r\n font-size: 12px;\r\n /* font-size: 0.9vw; */\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 20px;\r\n margin-bottom: 16px;\r\n }\r\n\r\n .icon-container {\r\n display: inline-block;\r\n border-radius: 8px;\r\n margin-bottom: 16px;\r\n width: 40px;\r\n height: 40px;\r\n text-align: center;\r\n line-height: 40px;\r\n }\r\n\r\n .link-learn-more {\r\n /* color: #3B4F9F; */\r\n font-family: Poppins;\r\n font-size: 16px;\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: normal;\r\n text-decoration: none;\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 .footer-title {\r\n /* color: #FFF; */\r\n font-family: Poppins;\r\n font-size: 14px;\r\n font-style: normal;\r\n font-weight: 500;\r\n line-height: 20px;\r\n }\r\n\r\n .footer-sub-title {\r\n /* color: #C3C4C5; */\r\n font-family: Poppins;\r\n font-size: 12px;\r\n font-style: normal;\r\n font-weight: 400;\r\n line-height: 20px;\r\n }\r\n\r\n .logo-footer {\r\n margin-bottom: 24px;\r\n margin-top: -20px;\r\n }\r\n\r\n .garis {\r\n /* background: #C3C4C5; */\r\n height: 0.2px;\r\n }\r\n </style></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 JsLandingPage() 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 ShowLandingPage(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
|
||||
})
|
||||
}
|
||||
216
views/landingpage/medicalservice.templ
Normal file
216
views/landingpage/medicalservice.templ
Normal file
@@ -0,0 +1,216 @@
|
||||
package landingpage
|
||||
|
||||
import (
|
||||
"github.com/emarifer/go-templ-project-structure/services"
|
||||
)
|
||||
|
||||
templ MedicalService(title string, desciption string, icon string, link string) {
|
||||
<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={ icon }
|
||||
></span>
|
||||
</div>
|
||||
<h5 class="card-title title-fs-20">{ title }</h5>
|
||||
<p class="card-text sub-title-fs-12">
|
||||
{ desciption }
|
||||
</p>
|
||||
<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="container">
|
||||
<div class="row">
|
||||
for _, d := range medserData {
|
||||
@MedicalService(d.ClientServiceName, d.ClientServiceDescription, d.ClientServiceIcon, d.ClientServiceLink)
|
||||
}
|
||||
</div>
|
||||
</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() {
|
||||
<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">
|
||||
<!-- 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"
|
||||
alt="Your Brand"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
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 mt-4 mb-2">
|
||||
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>
|
||||
}
|
||||
374
views/landingpage/medicalservice_templ.go
Normal file
374
views/landingpage/medicalservice_templ.go
Normal file
@@ -0,0 +1,374 @@
|
||||
// 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-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=\"")
|
||||
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: 14, 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: 17, 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: 19, 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><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=\"container\"><div class=\"row\">")
|
||||
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>")
|
||||
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: 45, 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: 47, 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: 62, 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: 64, 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\"><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\" 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: 132, 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 mt-4 mb-2\">")
|
||||
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
|
||||
})
|
||||
}
|
||||
@@ -159,6 +159,13 @@ templ CanvasLayout(title string, css templ.Component, js templ.Component) {
|
||||
"font-family": "Poppins",
|
||||
};
|
||||
</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>
|
||||
<!--end::Global Config-->
|
||||
<!--begin::Global Theme Bundle(used by all pages)-->
|
||||
<script src="assets/plugins/global/plugins.bundle.js"></script>
|
||||
|
||||
@@ -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=\"https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js\" integrity=\"sha512-lYMiwcB608+RcqJmP93CMe7b4i9G9QK1RbixsNu4PzMRJMsqr/bUrkXUuFzCNsRUo3IXNUr5hz98lINURv5CNA==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></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
|
||||
}
|
||||
|
||||
@@ -166,6 +166,12 @@ 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="https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js"
|
||||
integrity="sha512-lYMiwcB608+RcqJmP93CMe7b4i9G9QK1RbixsNu4PzMRJMsqr/bUrkXUuFzCNsRUo3IXNUr5hz98lINURv5CNA=="
|
||||
crossorigin="anonymous"
|
||||
referrerpolicy="no-referrer"
|
||||
></script>
|
||||
@js
|
||||
<!--end::Page Scripts-->
|
||||
</body>
|
||||
|
||||
@@ -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=\"https://cdnjs.cloudflare.com/ajax/libs/iconify/2.0.0/iconify.min.js\" integrity=\"sha512-lYMiwcB608+RcqJmP93CMe7b4i9G9QK1RbixsNu4PzMRJMsqr/bUrkXUuFzCNsRUo3IXNUr5hz98lINURv5CNA==\" crossorigin=\"anonymous\" referrerpolicy=\"no-referrer\"></script>")
|
||||
if templ_7745c5c3_Err != nil {
|
||||
return templ_7745c5c3_Err
|
||||
}
|
||||
|
||||
@@ -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
274
views/login/logincomponent.templ
Normal file
274
views/login/logincomponent.templ
Normal 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>
|
||||
}
|
||||
107
views/login/logincomponent_templ.go
Normal file
107
views/login/logincomponent_templ.go
Normal 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
|
||||
})
|
||||
}
|
||||
@@ -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">
|
||||
← Back to User List
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user