Getting Started
Build dynamic, mobile-first, web experiences with Catalyst.
Catalyst is a robust and flexible design system engineered to accelerate your web development workflow. Although optimized for static HTML/CSS and JavaScript projects, Catalyst's versatility extends to a wide range of applications. From sleek landing pages to sophisticated web applications, Catalyst equips you with the tools and optimizations needed to efficiently transform your vision into a polished, high-performance digital experience.
File Structure
catalyst-main
-
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 Catalyst'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 of code for blank HTML page. Use the below snippet as a way to quickly start any new blank page. If you are using Catalyst'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">
<!-- Catalyst: Imports -->
<link href="https://cardsite.live/code/custom/source.css" rel="stylesheet">
<!-- Catalyst: Themes -->
<link rel="stylesheet" href="https://cardsite.live/catalyst/assets/css/theme.min.css">
</head>
<body>
<h1>Hello, world!</h1>
<!-- Catalyst: Global Compulsory -->
<script src="https://cardsite.live/assets/vendor/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<!-- Catalyst: Core -->
<script src="https://cardsite.live/catalyst/assets/js/cs.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="@@autopath/@@vars.themeFont" rel="stylesheet">
<!-- CSS Catalyst Template -->
<!-- bundlecss:theme [@@autopath] -->
<link rel="stylesheet" href="@@autopath/assets/css/theme.css">
</head>
<body>
<h1>Hello, world!</h1>
<!-- JS Global Compulsory -->
<script src="@@autopath/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<!-- JS Implementing Plugins -->
<!-- bundlejs:vendor [@@autopath] -->
<!-- JS Catalyst -->
<!-- bundlejs:theme [@@autopath] -->
<script src="@@autopath/assets/js/cs.core.js"></script>
</body>
</html>
JavaScript structure
Core JavaScript
The foundation of the JavaScript structure in Catalyst 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 CSCore and the content of this object looks like this:
/*
* CSCore
* @version: 1.0.0
* @author: Cardsite
* @event-namespace: .CSCore
* @license: Cardsite Libraries (https://cardsite.com/licenses)
* Copyright 2024 Cardsite
*/
'use strict';
const CSCore = {
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)
})
}
}
CSCore.init()
Essentials of CS data-attributes
data-cs-*-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
- Framework Agnostic: Although not directly integrated, Catalyst's principles and components can be adapted for use with popular web frameworks like Angular, Vue, and React.
- Backend Compatibility: Catalyst is designed to work seamlessly with any backend technology, allowing you to integrate it into your existing tech stack.
- Customization: Leverage Catalyst's modular architecture to easily customize and extend components to fit your project's unique requirements.
- Performance Optimized: Built with modern web standards in mind, ensuring fast load times and smooth interactions.