Getting Started
Unify - Multipurpose Responsive Template for building responsive, mobile-first sites, with Bootstrap Framework.
Unify is a Static HTML Template
For the time being, we do NOT offer any tutorials or any other materials on how to integrate Unify with any CMS, Web Application Frameworks (including Angular, Vue, React, etc.) or any other similar technology. However, since Unify is a static HTML/CSS and JS template, then it should be compatible with any backend technology and frameworks.File Structure
Unify
-
src
-
assets
- css - Compiled CSS files
- img - Image files
- json - JSON files
- js - Core Javascript and library wrapper files
- scss - SASS (SCSS) source files
- svg - SVG files
- svg-src - SVG source files where variables can be passed (files will be generated into svg folder)
- vendor - Third pary libraries (plugins)
- partials - HTML partials, learn more details on Unify's Gulp Documentation page
- snippets - Snippet pages
- documentation - Documentation pages
- favicon.ico
- index.html
- ...
-
- dist - Generated distribution files
- gulpfiles - Gulp Toolkit files
-
build- Generated performance ready fully production files (by default the folder is not included) -
node_modules- NPM dependencies (by default the folder is not included) - config.js
- gulpfile.js
- package-lock.json
- package.json
- README.md
Starter template
Starter template is a snippet code for blank HTML page. Use the below snippet as a way to quickly start any new blank page. If you are using Unify's Gulp Toolkit, you may use HTML (Gulp) snippet code (read more about it on Gulp page).
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required Meta Tags Always Come First -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Title -->
<title>Hello, world!</title>
<!-- Favicon -->
<link rel="shortcut icon" href="./favicon.ico">
<!-- Font -->
<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">
<!-- CSS Unify Template -->
<link rel="stylesheet" href="./assets/css/theme.css">
</head>
<body>
<h1>Hello, world!</h1>
<!-- JS Global Compulsory -->
<script src="./assets/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<!-- JS Unify -->
<script src="./assets/js/hs.core.js"></script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<!-- Required Meta Tags Always Come First -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Title -->
<title>Hello, world!</title>
<!-- Favicon -->
<link rel="shortcut icon" href="@@autopath/favicon.ico">
<!-- Font -->
<link href="@@vars.googleFont" rel="stylesheet">
<!-- CSS Unify Template -->
<!-- bundlecss:theme [@@autopath] -->
<link rel="stylesheet" href="@@autopath/assets/css/theme.css">
</head>
<body>
<h1>Hello, world!</h1>
<script src="@@autopath/assets/vendor/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<!-- JS Implementing Plugins -->
<!-- bundlejs:vendor [@@autopath] -->
<!-- JS Unify -->
<!-- bundlejs:theme [@@autopath] -->
<script src="@@autopath/assets/js/hs.core.js"></script>
</body>
</html>
JavaScript structure
Core JavaScript
The foundation of the JavaScript structure in Unify is based on one main object which does not change the root when the new functionalities are added, but instead, it only extends without affecting the behavior of the core object. The name of the object is HSCore
and the content of this object looks like this:
/*
* HSCore
* @version: 2.0.0 (01 Apr 2021)
* @author: HtmlStream
* @event-namespace: .HSCore
* @license: Htmlstream Libraries (https://htmlstream.com/licenses)
* Copyright 2021 Htmlstream
*/
'use strict';
const HSCore = {
init: () => {
// Botostrap Tootltips
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl)
})
// Bootstrap Popovers
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
return new bootstrap.Popover(popoverTriggerEl)
})
}
}
HSCore.init()
Essentials of HS data-attributes
data-hs-*-options
- Using the date-attribute, you can completely specify the settings for all plug-in parameters (except for functions) that are in the official documentation. Special cases will be described in the documentation of the corresponding wrappers/plugins. *-
name of the wrapper/plugin.
Parameter names must be enclosed in double quotation marks ""
. "param": ...
For strings, quotation marks are required.
"stringParam": "Test string",
"hexParam": "#ff0000"
For numbers, quotation marks are optional. "intParam": 10
For boolean values, quotation marks can lead to not obvious consequences (due to implicit type conversion). It is recommended that you specify Boolean values without quotation marks. "boolParam": true
For arrays and objects - quotation marks can lead to errors, this does not apply to elements of arrays and objects, which can be simple types (see the description for simple types above).
"arrayParam": [1, "Test string", "#ff0000", false, 5],
"objectParam": {
"intParam": 1,
"stringParam": "Test string",
"hexParam": "#ff0000",
"boolParam": false,
"intParam2": 5
}
Advantages
- Avoiding the probabilities of conflicts between Unify codes and third party plugins (libraries).
- Intuitive clear architecture.
- Everything is structured, each component in its own file and in its component in the main object.
- The ability of extending functionality without affecting the behavior of the core object and not changing the existing functionality.
- Creation of wrapper components simply solves complicated initializations structures for the users.
- Very easy access to any starters components and core settings from anywhere in the template.