diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..e43b0f988 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.DS_Store diff --git a/code/site/.DS_Store b/code/site/.DS_Store new file mode 100644 index 000000000..518b7adb7 Binary files /dev/null and b/code/site/.DS_Store differ diff --git a/code/site/joomlatools-pages/config.php b/code/site/joomlatools-pages/config.php new file mode 100644 index 000000000..8cd67676d --- /dev/null +++ b/code/site/joomlatools-pages/config.php @@ -0,0 +1,46 @@ +usePutenv()->load($_SERVER['HOME'].'/private_html/.env.'.getenv('SITE')); +} + +return array( + + // Site + 'site' => [ + 'body_class' => 'h-full', + 'main_color' => '#00adef', + 'name' => 'Joomlatools Pages', + ], + + // Page + 'page' => [ + + 'metadata' => [ + 'summary' => '', + 'og:site_name' => '', + 'og:url' => '', + 'og:title' => '', + 'og:description'=> '', + 'og:image' => '', + 'twitter:site' => '', + 'twitter:card' => '', + 'fb:admins' => '', + ], + + 'visible' => true, + 'published' => true, + ], + + 'aliases' => [ + 'theme://' => getenv('SITE') ? '/theme/' : '/joomlatools-pages/theme/', + 'images://' => getenv('SITE') ? '/images/' : '/joomlatools-pages/images/', + ], + + // Google Analytics + 'ga_code' => getenv('SITE') ? '' : '', + +); diff --git a/code/site/joomlatools-pages/images/agrea.jpg b/code/site/joomlatools-pages/images/agrea.jpg new file mode 100644 index 000000000..899801096 Binary files /dev/null and b/code/site/joomlatools-pages/images/agrea.jpg differ diff --git a/code/site/joomlatools-pages/images/albert-einstein.jpg b/code/site/joomlatools-pages/images/albert-einstein.jpg new file mode 100644 index 000000000..f64770da3 Binary files /dev/null and b/code/site/joomlatools-pages/images/albert-einstein.jpg differ diff --git a/code/site/joomlatools-pages/images/algorithms.jpg b/code/site/joomlatools-pages/images/algorithms.jpg new file mode 100644 index 000000000..48acaebf4 Binary files /dev/null and b/code/site/joomlatools-pages/images/algorithms.jpg differ diff --git a/code/site/joomlatools-pages/images/carol.jpg b/code/site/joomlatools-pages/images/carol.jpg new file mode 100644 index 000000000..14ef132ee Binary files /dev/null and b/code/site/joomlatools-pages/images/carol.jpg differ diff --git a/code/site/joomlatools-pages/images/christmas.jpg b/code/site/joomlatools-pages/images/christmas.jpg new file mode 100644 index 000000000..1e1c34101 Binary files /dev/null and b/code/site/joomlatools-pages/images/christmas.jpg differ diff --git a/code/site/joomlatools-pages/images/html2.png b/code/site/joomlatools-pages/images/html2.png new file mode 100644 index 000000000..f2aea9124 Binary files /dev/null and b/code/site/joomlatools-pages/images/html2.png differ diff --git a/code/site/joomlatools-pages/images/johan.png b/code/site/joomlatools-pages/images/johan.png new file mode 100644 index 000000000..81f4e03b8 Binary files /dev/null and b/code/site/joomlatools-pages/images/johan.png differ diff --git a/code/site/joomlatools-pages/images/joomla-menu-manager.jpg b/code/site/joomlatools-pages/images/joomla-menu-manager.jpg new file mode 100644 index 000000000..568c01fe9 Binary files /dev/null and b/code/site/joomlatools-pages/images/joomla-menu-manager.jpg differ diff --git a/code/site/joomlatools-pages/images/joomla.png b/code/site/joomlatools-pages/images/joomla.png new file mode 100644 index 000000000..47680953d Binary files /dev/null and b/code/site/joomlatools-pages/images/joomla.png differ diff --git a/code/site/joomlatools-pages/images/joomlatools-pages.png b/code/site/joomlatools-pages/images/joomlatools-pages.png new file mode 100644 index 000000000..21fae97f4 Binary files /dev/null and b/code/site/joomlatools-pages/images/joomlatools-pages.png differ diff --git a/code/site/joomlatools-pages/images/mambo-add-menu.jpg b/code/site/joomlatools-pages/images/mambo-add-menu.jpg new file mode 100644 index 000000000..7d0f4cc22 Binary files /dev/null and b/code/site/joomlatools-pages/images/mambo-add-menu.jpg differ diff --git a/code/site/joomlatools-pages/images/mambo-menu-manager.jpg b/code/site/joomlatools-pages/images/mambo-menu-manager.jpg new file mode 100644 index 000000000..96585c544 Binary files /dev/null and b/code/site/joomlatools-pages/images/mambo-menu-manager.jpg differ diff --git a/code/site/joomlatools-pages/images/mambo.jpg b/code/site/joomlatools-pages/images/mambo.jpg new file mode 100644 index 000000000..8ea6c7fc6 Binary files /dev/null and b/code/site/joomlatools-pages/images/mambo.jpg differ diff --git a/code/site/joomlatools-pages/images/pages-code.png b/code/site/joomlatools-pages/images/pages-code.png new file mode 100644 index 000000000..cc88b052c Binary files /dev/null and b/code/site/joomlatools-pages/images/pages-code.png differ diff --git a/code/site/joomlatools-pages/images/phposors.jpg b/code/site/joomlatools-pages/images/phposors.jpg new file mode 100644 index 000000000..7c591bb00 Binary files /dev/null and b/code/site/joomlatools-pages/images/phposors.jpg differ diff --git a/code/site/joomlatools-pages/images/the-project.png b/code/site/joomlatools-pages/images/the-project.png new file mode 100644 index 000000000..b7ebdae73 Binary files /dev/null and b/code/site/joomlatools-pages/images/the-project.png differ diff --git a/code/site/joomlatools-pages/images/treat.jpg b/code/site/joomlatools-pages/images/treat.jpg new file mode 100644 index 000000000..20485ed9e Binary files /dev/null and b/code/site/joomlatools-pages/images/treat.jpg differ diff --git a/code/site/joomlatools-pages/layouts/.DS_Store b/code/site/joomlatools-pages/layouts/.DS_Store new file mode 100644 index 000000000..5008ddfcf Binary files /dev/null and b/code/site/joomlatools-pages/layouts/.DS_Store differ diff --git a/code/site/joomlatools-pages/layouts/index.html.php b/code/site/joomlatools-pages/layouts/index.html.php new file mode 100644 index 000000000..e05addf28 --- /dev/null +++ b/code/site/joomlatools-pages/layouts/index.html.php @@ -0,0 +1,53 @@ + + + + + + + + + + + + + <?= title() ?> + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/code/site/joomlatools-pages/pages/.DS_Store b/code/site/joomlatools-pages/pages/.DS_Store new file mode 100644 index 000000000..adda46b39 Binary files /dev/null and b/code/site/joomlatools-pages/pages/.DS_Store differ diff --git a/code/site/joomlatools-pages/pages/index.html.php b/code/site/joomlatools-pages/pages/index.html.php new file mode 100644 index 000000000..3526e9969 --- /dev/null +++ b/code/site/joomlatools-pages/pages/index.html.php @@ -0,0 +1,1250 @@ +--- +layout: index +name: Home +title: Pages presentation +summary: The easy to use page generator for Joomla +slug: home +visible: false +--- + +
+ +
+ + +
+
+
+
+   +
+
+

There and back again

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + ]); + ?> + @joomlatools +
+
+ +
+ +
+
+
+   +
+
+

There and back again

+

A story about the evolution of web publishing
from 1990 to 2020

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + ]); + ?> + @joomlatools +
+
+ +
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Any intelligent fool can make things bigger and more complex... It takes a touch of genius — and a lot of courage to move in the opposite direction.

+ +

Albert Einstein

+
+
+ 0, + 'icon_size' => '10', + ]); + ?> +
+
+
+
+ + +
+
+
+
+   +
+
+

The HTMLolithic era

+

In the beginning, let’s call it the HTMLolithic era, if you wanted to publish on the internet you had no choice but to learn HTML, and produce a static HTML page that you could link to by its Unique Resource Location (URL)

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + 'icon_colour' => 'white', + ]); + ?> + @joomlatools +
+
+
+ +
+

1991

+
+ +
+

1991

+

The web is born...

+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

The first web page went live on August 6, 1991. It was dedicated to information on the World Wide Web project and was made by Tim Berners-Lee. It ran on a NeXT computer at the European Organization for Nuclear Research, CERN.

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

The first web page went live on August 6, 1991. It was dedicated to information on the World Wide Web project and was made by Tim Berners-Lee. It ran on a NeXT computer at the European Organization for Nuclear Research, CERN.

+

The first web page address was http://info.cern.ch/hypertext/WWW/TheProject.html.

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+
+ +
+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+ '1339507125467398145']);?> +
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

HTML 2.0 included everything from the original 1.0 specifications but added a few new features to the mix. » HTML 2.0 was the standard for website design until January 1997 and defined many core HTML features for the first time.

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

HTML 2.0 included everything from the original 1.0 specifications but added a few new features to the mix. » HTML 2.0 was the standard for website design until January 1997 and defined many core HTML features for the first time.

+

+<HEAD>
+	<TITLE>Getting started with HTML 2.0</TITLE>
+</HEAD>
+
+<UL>
+	<LI><A href="/article-1">Article 1</A>
+	<LI><A href="/article-2">Article 2</A>
+	<LI><A href="/article-3">Article 3</A>
+	<LI><A href="/article-4">Article 4</A>
+	<LI><A href="/article-5">Article 5</A>
+</UL>
+							
+

For more history: https://www.yourhtmlsource.com/starthere/historyofhtml.html

+
+ +
+
+
+ + +
+
+
+
+   +
+
+

The Dynamolithic era

+

In evolutionary terms, the next step for web publishing didn’t take too long. In the Dynamolithic era, instead of a single flat file to build and display a page, pages were split up into re-useable blocks and could be coupled to a database

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + 'icon_colour' => 'white', + ]); + ?> + @joomlatools +
+
+
+ +
+
+
+   +
+
+

The Dynamolithic era

+

In evolutionary terms, the next step for web publishing didn’t take too long. In the Dynamolithic era, instead of a single flat file to build and display a page, pages were split up into re-usable blocks and could be coupled to a database.

+

This made the task of publishing articles a lot easier as the developer could build multiple pages whilst reusing code for common areas like headers and footers, as well as import data that was held in a database, in order to display an HTML page.

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + 'icon_colour' => 'white', + ]); + ?> + @joomlatools +
+
+
+ +
+

1995

+
+ +
+

1995

+

PHP/FI is announced...

+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

PHP development began in 1994 when Rasmus Lerdorf wrote several Common Gateway Interface (CGI) programs in C, which he used to maintain his personal homepage. He extended them to work with web forms and to communicate with databases, and called this implementation "Personal Home Page/Forms Interpreter" or PHP/FI

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

PHP development began in 1994 when Rasmus Lerdorf wrote several Common Gateway Interface (CGI) programs in C, which he used to maintain his personal homepage. He extended them to work with web forms and to communicate with databases, and called this implementation "Personal Home Page/Forms Interpreter" or PHP/FI

+ +

PHP/FI could be used to build simple, dynamic web applications. To accelerate bug reporting and improve the code, Lerdorf initially announced the release of PHP/FI as "Personal Home Page Tools (PHP Tools) version 1.0”.

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Early PHP was not intended to be a new programming language, and grew organically, with Lerdorf noting in retrospect: "I don't know how to stop it, there was never any intent to write a programming language [...] I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way."

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Early PHP was not intended to be a new programming language, and grew organically, with Lerdorf noting in retrospect: "I don't know how to stop it, there was never any intent to write a programming language [...] I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way."

+

+<!-- include /text/header.html -->
+
+<!-- getenv HTTP_USER_AGENT -->
+<!-- if substr $exec_result Mozilla -->
+	Hey, you are using Netscape!<p>
+<!-- endif -->
+
+<!-- sql database select * from table where user='$username' -->
+<!-- ifless $numentries 1-->
+	Sorry, that record does not exist<p>
+<!-- endif exit -->
+	Welcome <!-- $user -->!<p>
+	You have <!-- $index:0--> credits left in your account.<p>
+
+<!-- endif -->
+<!-- include /text/footer.html -->
+							
+

A development team began to form and, after months of work and beta testing, officially released PHP/FI 2 in November 1997.

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Zeev Suraski and Andi Gutmans rewrote the parser in 1997 and formed the base of PHP3, changing the language's name to the recursive acronym PHP:Hypertext Preprocessor. Afterwards, public testing of PHP3 began, and the official launch came in June 1998.

+
+ +
+
+ + +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Zeev Suraski and Andi Gutmans rewrote the parser in 1997 and formed the base of PHP3, changing the language's name to the recursive acronym PHP:Hypertext Preprocessor. Afterwards, public testing of PHP3 began, and the official launch came in June 1998.

+ +

They then started a new rewrite of PHP's core, producing the Zend Engine in 1999 They also founded Zend Technologies in Ramat Gan, Israel. On May 22, 2000, PHP 4, powered by the Zend Engine 1.0, was released.

+
+ +
+
+ + +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Selecting data from a MySQL database and rendering HTML 4 using PHP.

+

+<?php 
+// Connecting, selecting database
+$link = mysql_connect( '[host]', '[user]', '[password]' )
+	or die('Could not connect: ' .mysql_error());
+
+mysql_select_db('[database]') or die('Could not select database');
+
+// Performing SQL query
+$query = 'SELCT * FROM articles';
+$result = mysql_query($query) or die('Query failed: ' mysql_error());
+
+// Printing results in HTML
+echo "<ul>\n";
+while ($article = mysql_fetch_array($result, MYSQL_ASSOC)) {
+	echo "\t<li>\n";
+	echo "\t\t<a href="/article-$article['id']">$article['title']</a>\n";
+	echo "<ul>\n";
+}
+echo "</ul>\n";
+
+// Free resultset
+mysql_free_result($result);
+
+// Closing connection
+mysql_close($link);
+?>
+
+
+ +
+
+
+ + +
+
+
+
+   +
+
+

The Webpubolithic era

+

Once the permanency of the internet had been established, individuals and businesses all over the world were clamouring to get a website online. This led to the natural evolution of web publishing systems that would allow non-developers to write and publish articles to a website

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + 'icon_colour' => 'white', + ]); + ?> + @joomlatools +
+
+
+ +
+
+
+   +
+
+

The Webpubolithic era

+

Once the permanency of the internet had been established, individuals and businesses all over the world were clamouring to get a website online. This led to the natural evolution of web publishing systems that would allow non-developers to write and publish articles to a website

+

Like their ancestors in the dynamolithic, web publishing systems could be connected to a database in order to provide dynamic content to an otherwise static HTML page.

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + 'icon_colour' => 'white', + ]); + ?> + @joomlatools +
+
+
+ +
+
+

2002

+
+
+ +
+
+

2002

+

Mambo Open Source

+
+
+ + +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Miro Construct Pty Ltd, registered in March 2000 in Melbourne [...] starts development of Mambo, a closed-source, proprietary content management system. The company adopted a dual licensing policy, releasing Mambo Site Server under the GPL on Sourceforge in April 2001.

+
+ +
+
+ + +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Miro Construct Pty Ltd, registered in March 2000 in Melbourne [...] starts development of Mambo, a closed-source, proprietary content management system. The company adopted a dual licensing policy, releasing Mambo Site Server under the GPL on Sourceforge in April 2001.

+ +

From this time until the middle of 2002, Miro was the only developer of Mambo, contributing bug-fixes and security patches but not really extending the code or adding to the feature sets.

+
+ +
+
+ + +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Miro Construct Pty Ltd, registered in March 2000 in Melbourne [...] starts development of Mambo, a closed-source, proprietary content management system. The company adopted a dual licensing policy, releasing Mambo Site Server under the GPL on Sourceforge in April 2001.

+ +

From this time until the middle of 2002, Miro was the only developer of Mambo, contributing bug-fixes and security patches but not really extending the code or adding to the feature sets.

+ +

With version 3.0.x, the open source Mambo Site Server becomes "Mambo Open Source" (commonly referred to as “MOS”). Robert Castley becomes Project Director of Mambo Open Source. By the end of 2002, Robert Castley had pulled together a volunteer team of developers. Mambo Open Source 4.0 is released.

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Rendering a list of weblinks in Mambo 4.5

+

+class HTML_weblinks {
+
+	function displaylist( &$categories, &$rows, $catid, $currentcat=NULL, &$params, $tabclass ) {
+		global $Itemid, $mosConfig_live_site, $hide_js;
+		if ( $params->get( 'page_title' ) ) {
+			?>
+			<div class="componentheading<?php echo $params->get( 'pageclass_sfx' ); ?>">
+			<?php echo $currentcat->header; ?>
+			</div>
+			<?php
+		}
+		?>
+		<form action="index.php" method="post" name="adminForm">
+
+		<table width="100%" cellpadding="4" cellspacing="0" border="0" align="center" class="contentpane<?php echo $params->get( 'pageclass_sfx' ); ?>">
+		<tr>
+			<td width="60%" valign="top" class="contentdescription<?php echo $params->get( 'pageclass_sfx' ); ?>" colspan="2">
+			<?php
+			// show image
+			if ( $currentcat->img ) {
+				?>
+				<img src="<?php echo $currentcat->img; ?>" align="<?php echo $currentcat->align; ?>" hspace="6" alt="<?php echo _WEBLINKS_TITLE; ?>" />
+				<?php
+			}
+			echo $currentcat->descrip;
+			?>
+			</td>
+		</tr>
+
+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Mambo 4.0 menu item manager

+
+ +
+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Mambo 4.5 menu item manager

+
+ +
+
+ +
+
+
+ + +
+
+
+
+   +
+
+

The Sepratolithic era

+

In the sepratolithic the number of websites on the internet multiplied exponentially, this was in response to the emergence of CMS systems that used separation of content and presentation architectures, for example using Model View Controller (MVC) design pattern

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + 'icon_colour' => 'white', + ]); + ?> + @joomlatools +
+
+
+ +
+
+
+   +
+
+

The Sepratolithic era

+

In the sepratolithic the number of websites on the internet multiplied exponentially, this was in response to the emergence of CMS systems that used separation of content and presentation architectures, for example using Model View Controller (MVC) design pattern

+

Coupled to their mysql databases, to separate the logic of page building from the display of the page, CMSs made it painless and easy for even the least-technical person on the editorial team to create and publish an article as a HTML page. The developer could even use the same data to output a really simple syndicated (RSS) feed of a website’s articles.

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + 'icon_colour' => 'white', + ]); + ?> + @joomlatools +
+
+
+ +
+

2008

+
+ +
+

2008

+

Joomla 1.5.0 released

+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Designers will notice marked improvements with Joomla! 1.5. Under the hood, the code base was better organized by separating program logic from presentation logic. What this does is empower designers with 100% control over how Joomla!'s content is presented. Now, template designers can use custom layouts, often referred to as template overrides, instead of the typical table heavy output from Joomla! core.

+
+ +
+
+ + +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Designers will notice marked improvements with Joomla! 1.5. Under the hood, the code base was better organized by separating program logic from presentation logic. What this does is empower designers with 100% control over how Joomla!'s content is presented. Now, template designers can use custom layouts, often referred to as template overrides, instead of the typical table heavy output from Joomla! core.

+ +

... Some highlights of the new framework include the document package which gives the extension developer control over the entire document rendered on any given page load whether it be an Atom or RSS feed, a PDF document, or a standard HTML page ...

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Designers will notice marked improvements with Joomla! 1.5. Under the hood, the code base was better organized by separating program logic from presentation logic. What this does is empower designers with 100% control over how Joomla!'s content is presented. Now, template designers can use custom layouts, often referred to as template overrides, instead of the typical table heavy output from Joomla! core.

+ +

... Some highlights of the new framework include the document package which gives the extension developer control over the entire document rendered on any given page load whether it be an Atom or RSS feed, a PDF document, or a standard HTML page ...

+ +

... Perhaps one of the most powerful features of the framework is the newMVCbased component objects. The clear separation between logic and presentation helps ensure code re-usability and maintainability.

+ +

From: https://www.joomla.org/announcements/release-news/4483-joomla-15-overview.html

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Rendering a list of weblinks in Joomla 1.5

+

+<?php defined('_JEXEC') or die('Restricted access'); ?>
+<script language="javascript" type="text/javascript">
+	function tableOrdering( order, dir, task ) {
+	var form = document.adminForm;
+
+	form.filter_order.value 	= order;
+	form.filter_order_Dir.value	= dir;
+	document.adminForm.submit( task );
+}
+</script>
+
+<form action="<?php echo JFilterOutput::ampReplace($this->action); ?>" method="post" name="adminForm">
+<table width="100%" border="0" cellspacing="0" cellpadding="0">
+<tr>
+	<td align="right" colspan="4">
+	<?php
+		echo JText::_('Display Num') .'&nbsp;';
+		echo $this->pagination->getLimitBox();
+	?>
+	</td>
+</tr>
+<?php if ( $this->params->def( 'show_headings', 1 ) ) : ?>
+<tr>
+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Joomla 1.5 menu item manager

+
+ +
+

Evolution: http://joomla15.blogspot.com/2006/10/evolution-adding-new-menu-item.html

+
+ +
+
+
+ + +
+
+
+
+   +
+
+

The Pageolithic era

+

Welcome to the future, you have now stepped into the Pageolithic era. This era has heralded the dawn of the dynamic page generator. Using MVC structured code and consuming source-agnostic data, which can come from any combination of a mysql database; a filesystem; or even a webservice. Dynamic page generators will allow you to display your content in almost anyway you want.

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + 'icon_colour' => 'white', + ]); + ?> + @joomlatools +
+
+
+ +
+
+
+   +
+
+

The Pageolithic era

+

Welcome to the future, you have now stepped into the Pageolithic era. This era has heralded the dawn of the dynamic page generator. Using MVC structured code and consuming source-agnostic data, which can come from any combination of a mysql database; a filesystem; or even a webservice. Dynamic page generators will allow you to display your content in almost anyway you want.

+

You’re no longer limited to just HTML and RSS output, you can now publish your content as HTML web pages, as an RSS feed, as a CSV spreadsheet, even as a JSON API that you could, for instance, use to populate a mobile app. The possibilities are endless, limited only by your imagination.

+
+
+ http://developer.joomlatools.com/ + 0, + 'icon_size' => '10', + 'icon_colour' => 'white', + ]); + ?> + @joomlatools +
+
+
+ +
+

2020

+
+ +
+

2020

+

Joomlatools Pages announced

+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Joomlatools Pages is a page generator inspired by the ideas and concepts of flat-file CMS systems likeGravandStatamicand static site generators.

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Joomlatools Pages is a page generator inspired by the ideas and concepts of flat-file CMS systems likeGravandStatamicand static site generators.

+ +

Pages is not a static site generator (SSG), Pages works in a dynamic, lazy and smart way. A page is dynamically generated, cached and only re-generated when its content or layout has changed

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Joomlatools Pages is a page generator inspired by the ideas and concepts of flat-file CMS systems likeGravandStatamicand static site generators.

+ +

Pages is not a static site generator (SSG), Pages works in a dynamic, lazy and smart way. A page is dynamically generated, cached and only re-generated when its content or layout has changed

+ +

Pages has a flat-file bias, and doesn't require a database to work you can use any kind of data source, for example you could use, a Joomla component, a database table, a headless CMS likeStrapi, or even a webservice likeAirtableorGoogle Sheet

+ +

From: https://www.joomla.org/announcements/release-news/4483-joomla-15-overview.html

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Rendering a list of weblinks in Joomlatools Pages

+

+---
+title: My Awesome Weblinks
+route: /path/to/weblinks.[csv|json]?
+collection
+    model: database?table=weblinks
+    state:
+        filter:
+            published: 1
+    format: csv, json
+---
+
+<ul>
+<? foreach (collection() as $item) : ?>
+	<li><a href="<?= $item->url ?>"><?= $item->title ?></a></li>
+<? endforeach ?>
+</ul>
+						
+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Joomlatools Pages provides a no-code MVC

+

+---
+title: My Awesome Weblinks
+route: /path/to/weblinks.[csv|json]?
+---
+						
+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Joomlatools Pages provides a no-code MVC

+

+---
+title: My Awesome Weblinks
+route: /path/to/weblinks.[csv|json]?
+collection
+    model: database?table=weblinks
+    state:
+        filter:
+            published: 1
+    format: csv, json
+---
+						
+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Joomlatools Pages provides a no-code MVC

+

+---
+title: My Awesome Weblinks
+route: /path/to/weblinks.[csv|json]?
+collection
+    model: database?table=weblinks
+    state:
+        filter:
+            published: 1
+    format: csv, json
+---
+
+<ul>
+<? foreach (collection() as $item) : ?>
+	<li><a href="<?= $item->url ?>"><?= $item->title ?></a></li>
+<? endforeach ?>
+</ul>
+						
+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Joomlatools Pages menu item manager

+
+ +
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+
+

Joomlatools Pages menu item manager

+
+ +
+

(you still can create dummy menu items)

+
+ +
+
+ +
+

A little treat

+
+ +
+

A little treat

+

Agrea.ph

+
+ +
+

Agrea.ph

+
+ +
+

+ https://github.com/johanjanssens/agrea.ph +

+
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+

Merry Christmas, Happy NY!

+
+ 0, + 'icon_size' => '10', + ]); + ?> +
+
+
+ +
+
+
+ 0, + 'icon_size' => '10', + ]); + ?> + joomlatools +
+ +
+ 0, + 'icon_size' => '10', + ]); + ?> +
+
+
+ +
+ +
\ No newline at end of file diff --git a/code/site/joomlatools-pages/partials/.DS_Store b/code/site/joomlatools-pages/partials/.DS_Store new file mode 100644 index 000000000..9b8de7509 Binary files /dev/null and b/code/site/joomlatools-pages/partials/.DS_Store differ diff --git a/code/site/joomlatools-pages/partials/logos/joomlatools.html.php b/code/site/joomlatools-pages/partials/logos/joomlatools.html.php new file mode 100644 index 000000000..46e0d3d62 --- /dev/null +++ b/code/site/joomlatools-pages/partials/logos/joomlatools.html.php @@ -0,0 +1,31 @@ + + + + + + + + + + + +Loaded in s + + \ No newline at end of file diff --git a/code/site/joomlatools-pages/partials/tweet.html.php b/code/site/joomlatools-pages/partials/tweet.html.php new file mode 100644 index 000000000..55ad3f220 --- /dev/null +++ b/code/site/joomlatools-pages/partials/tweet.html.php @@ -0,0 +1,40 @@ + + +
+ + + + \ No newline at end of file diff --git a/code/site/joomlatools-pages/theme/css/fonts.css b/code/site/joomlatools-pages/theme/css/fonts.css new file mode 100644 index 000000000..55abc5166 --- /dev/null +++ b/code/site/joomlatools-pages/theme/css/fonts.css @@ -0,0 +1,30 @@ +/** + * @license + * MyFonts Webfont Build ID 3961211, 2020-10-15T18:13:17-0400 + * + * The fonts listed in this notice are subject to the End User License + * Agreement(s) entered into by the website owner. All other parties are + * explicitly restricted from using the Licensed Webfonts(s). + * + * You may obtain a valid license at the URLs below. + * + * Webfont: VAGRoundedTL-Regular by Tilde + * URL: https://www.myfonts.com/fonts/tilde/vag-rounded/regular/ + * Copyright: Copyright 1990-2007 Bitstream Inc. All rights reserved. Modification for European languages. Copyright 1995-2007 Tilde, SIA. + * + * + * + * © 2020 MyFonts Inc +*/ + + +/* @import must be at top of file, otherwise CSS will not work */ +@import url("//hello.myfonts.net/count/3c717b"); + +@font-face { + font-family: 'VAGRoundedTL-Regular'; + font-display: swap; + src: local(''), + url('../fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff2') format('woff2'), + url('../fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff') format('woff'); +} diff --git a/code/site/joomlatools-pages/theme/css/input.css b/code/site/joomlatools-pages/theme/css/input.css new file mode 100644 index 000000000..34550ff0e --- /dev/null +++ b/code/site/joomlatools-pages/theme/css/input.css @@ -0,0 +1,134 @@ +/* tailwind */ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + + /********************************************* + * NAVIGATION CONTROLS + *********************************************/ + .reveal .controls { + color: #2a76dd; + } + + /********************************************* + * PROGRESS BAR + *********************************************/ + .reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #2a76dd; + } + + /********************************************* + * PRINT BACKGROUND + *********************************************/ + @media print { + .backgrounds { + background-color: #fff; + } + } + +} +@layer utilities { + /* Plyr.js video player */ + .plyr { + @apply rounded-lg; + } + /* lazyprogressive images */ + img.lazyprogressive { + @apply bg-cover; + } +} +/* Joomlatools logo colour override used /partials/logo/joomaltools.html.php */ +section { + --jt-blue:#00adef; + --jt-black:#000000; +} +/* Joomlatools logo in white */ +section[data-background="#4daae9"], +section[data-background*="einstein"], +section[data-background*="christmas"]{ + --jt-black:#ffffff; + --jt-blue:#ffffff; +} + +.browser-mockup { + border-top: 2em solid rgba(230, 230, 230, 0.7); + box-shadow: 0 0.1em .1em 0 rgba(0, 0, 0, 0.4); + position: relative; + border-radius: 3px 3px 0 0 +} + +.browser-mockup:before { + display: block; + position: absolute; + content: ''; + top: -1.25em; + left: 1em; + width: 0.5em; + height: 0.5em; + border-radius: 50%; + background-color: #f44; + box-shadow: 0 0 0 2px #f44, 1.5em 0 0 2px #9b3, 3em 0 0 2px #fb5; +} + +.browser-mockup.with-url:after { + display: block; + position: absolute; + content:attr(data-value); + font-size: 1rem; + top: -1.6em; + left: 5.5em; + width: calc(100% - 6em); + height: 1.2em; + border-radius: 2px; + background-color: white; +} + +.browser-mockup > * { + display: block; +} + +.terminal-mockup { + border-top: 2em solid rgba( 43, 40, 43, 0.7); + box-shadow: 0 0.1em .1em 0 rgba(0, 0, 0, 0.4); + position: relative; + border-radius: 12px; + background-color:#000; +} + +.terminal-mockup:before { + display: block; + position: absolute; + content: ''; + top: -1.25em; + left: 1em; + width: 0.5em; + height: 0.5em; + border-radius: 50%; + background-color: #f44; + box-shadow: 0 0 0 2px #f44, 1.5em 0 0 2px #9b3, 3em 0 0 2px #fb5; +} + +.terminal-mockup:after { + display: block; + position: absolute; + content:attr(data-value); + font-size: 0.9rem; + color:rgba( 150, 150, 150, 100%); + top: -1.6em; + left: 0; + width: 100%; + height: 1.2em; + border-radius: 2px; + text-align: center; +} + +.terminal-mockup > * { + display: block; +} + +.hljs { + border-radius: 0 0 12px 12px; +} \ No newline at end of file diff --git a/code/site/joomlatools-pages/theme/css/output.css b/code/site/joomlatools-pages/theme/css/output.css new file mode 100644 index 000000000..c1c863319 --- /dev/null +++ b/code/site/joomlatools-pages/theme/css/output.css @@ -0,0 +1,1254 @@ +/* tailwind */ + +/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */ + +/* +Document +======== +*/ + +/** +Use a better box model (opinionated). +*/ + +*, +*::before, +*::after { + box-sizing: border-box; +} + +/** +Use a more readable tab size (opinionated). +*/ + +:root { + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; +} + +/** +1. Correct the line height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +*/ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* +Sections +======== +*/ + +/** +Remove the margin in all browsers. +*/ + +body { + margin: 0; +} + +/** +Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) +*/ + +body { + font-family: + system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, + 'Segoe UI', + Roboto, + Helvetica, + Arial, + sans-serif, + 'Apple Color Emoji', + 'Segoe UI Emoji'; +} + +/* +Grouping content +================ +*/ + +/** +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ +} + +/* +Text-level semantics +==================== +*/ + +/** +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/** +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/** +1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) +2. Correct the odd 'em' font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: + ui-monospace, + SFMono-Regular, + Consolas, + 'Liberation Mono', + Menlo, + monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** +Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/** +Prevent 'sub' and 'sup' elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +Tabular data +============ +*/ + +/** +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ +} + +/* +Forms +===== +*/ + +/** +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** +Remove the inheritance of text transform in Edge and Firefox. +1. Remove the inheritance of text transform in Firefox. +*/ + +button, +select { /* 1 */ + text-transform: none; +} + +/** +Correct the inability to style clickable types in iOS and Safari. +*/ + +button, +[type='button'], +[type='submit'] { + -webkit-appearance: button; +} + +/** +Remove the inner border and padding in Firefox. +*/ + +/** +Restore the focus styles unset by the previous rule. +*/ + +/** +Remove the additional ':invalid' styles in Firefox. +See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737 +*/ + +/** +Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers. +*/ + +legend { + padding: 0; +} + +/** +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/** +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +/** +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +/** +Remove the inner padding in Chrome and Safari on macOS. +*/ + +/** +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to 'inherit' in Safari. +*/ + +/* +Interactive +=========== +*/ + +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/** + * Manually forked from SUIT CSS Base: https://github.com/suitcss/base + * A thin layer on top of normalize.css that provides a starting point more + * suitable for web applications. + */ + +/** + * Removes the default spacing and border for appropriate elements. + */ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +} + +button { + background-color: transparent; + background-image: none; +} + +/** + * Work around a Firefox/IE bug where the transparent `button` background + * results in a loss of the default `button` focus styles. + */ + +button:focus { + outline: 1px dotted; + outline: 5px auto -webkit-focus-ring-color; +} + +fieldset { + margin: 0; + padding: 0; +} + +ol, +ul { + list-style: none; + margin: 0; + padding: 0; +} + +/** + * Tailwind custom reset styles + */ + +/** + * 1. Use the user's configured `sans` font-family (with Tailwind's default + * sans-serif font stack as a fallback) as a sane default. + * 2. Use Tailwind's default "normal" line-height so the user isn't forced + * to override it to ensure consistency even when using the default theme. + */ + +html { + font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 1 */ + line-height: 1.5; /* 2 */ +} + +/** + * Inherit font-family and line-height from `html` so users can set them as + * a class directly on the `html` element. + */ + +body { + font-family: inherit; + line-height: inherit; +} + +/** + * 1. Prevent padding and border from affecting element width. + * + * We used to set this in the html element and inherit from + * the parent element for everything else. This caused issues + * in shadow-dom-enhanced elements like
where the content + * is wrapped by a div with box-sizing set to `content-box`. + * + * https://github.com/mozdevs/cssremedy/issues/4 + * + * + * 2. Allow adding a border to an element by just adding a border-width. + * + * By default, the way the browser specifies that an element should have no + * border is by setting it's border-style to `none` in the user-agent + * stylesheet. + * + * In order to easily add borders to elements by just setting the `border-width` + * property, we change the default border-style for all elements to `solid`, and + * use border-width to hide them instead. This way our `border` utilities only + * need to set the `border-width` property instead of the entire `border` + * shorthand, making our border utilities much more straightforward to compose. + * + * https://github.com/tailwindcss/tailwindcss/pull/116 + */ + +*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: #e5e7eb; /* 2 */ +} + +/* + * Ensure horizontal rules are visible by default + */ + +hr { + border-top-width: 1px; +} + +/** + * Undo the `border-style: none` reset that Normalize applies to images so that + * our `border-{width}` utilities have the expected effect. + * + * The Normalize reset is unnecessary for us since we default the border-width + * to 0 on all elements. + * + * https://github.com/tailwindcss/tailwindcss/issues/362 + */ + +img { + border-style: solid; +} + +textarea { + resize: vertical; +} + +input::-moz-placeholder, textarea::-moz-placeholder { + color: #9ca3af; +} + +input:-ms-input-placeholder, textarea:-ms-input-placeholder { + color: #9ca3af; +} + +input::placeholder, +textarea::placeholder { + color: #9ca3af; +} + +button { + cursor: pointer; +} + +table { + border-collapse: collapse; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/** + * Reset links to optimize for opt-in styling instead of + * opt-out. + */ + +a { + color: inherit; + text-decoration: inherit; +} + +/** + * Reset form element properties that are easy to forget to + * style explicitly so you don't inadvertently introduce + * styles that deviate from your design system. These styles + * supplement a partial reset that is already applied by + * normalize.css. + */ + +button, +input, +optgroup, +select, +textarea { + padding: 0; + line-height: inherit; + color: inherit; +} + +/** + * Use the configured 'mono' font family for elements that + * are expected to be rendered with a monospace font, falling + * back to the system monospace stack if there is no configured + * 'mono' font family. + */ + +pre, +code, +kbd, +samp { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; +} + +/** + * Make replaced elements `display: block` by default as that's + * the behavior you want almost all of the time. Inspired by + * CSS Remedy, with `svg` added as well. + * + * https://github.com/mozdevs/cssremedy/issues/14 + */ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; + vertical-align: middle; +} + +/** + * Constrain images and videos to the parent width and preserve + * their instrinsic aspect ratio. + * + * https://github.com/mozdevs/cssremedy/issues/14 + */ + +img, +video { + max-width: 100%; + height: auto; +} + +/********************************************* + * NAVIGATION CONTROLS + *********************************************/ + +.reveal .controls { + color: #2a76dd; +} + +/********************************************* + * PROGRESS BAR + *********************************************/ + +.reveal .progress { + background: rgba(0, 0, 0, 0.2); + color: #2a76dd; +} + +/********************************************* + * PRINT BACKGROUND + *********************************************/ + +@media print { + .backgrounds { + background-color: #fff; + } +} + +.container { + width: 100%; +} + +@media (min-width: 640px) { + .container { + max-width: 640px; + } +} + +@media (min-width: 768px) { + .container { + max-width: 768px; + } +} + +@media (min-width: 1024px) { + .container { + max-width: 1024px; + } +} + +@media (min-width: 1280px) { + .container { + max-width: 1280px; + } +} + +@media (min-width: 1536px) { + .container { + max-width: 1536px; + } +} + +.bg-black { + --tw-bg-opacity: 1; + background-color: rgba(0, 0, 0, var(--tw-bg-opacity)); +} + +.bg-gray-500 { + --tw-bg-opacity: 1; + background-color: rgba(107, 114, 128, var(--tw-bg-opacity)); +} + +.bg-blue-600 { + --tw-bg-opacity: 1; + background-color: rgba(0, 154, 213, var(--tw-bg-opacity)); +} + +.bg-blue-800 { + --tw-bg-opacity: 1; + background-color: rgba(0, 78, 108, var(--tw-bg-opacity)); +} + +.bg-brand { + --tw-bg-opacity: 1; + background-color: rgba(0, 173, 239, var(--tw-bg-opacity)); +} + +.hover\:bg-blue-100:hover { + --tw-bg-opacity: 1; + background-color: rgba(230, 247, 254, var(--tw-bg-opacity)); +} + +.hover\:bg-blue-500:hover { + --tw-bg-opacity: 1; + background-color: rgba(0, 173, 239, var(--tw-bg-opacity)); +} + +.bg-opacity-80 { + --tw-bg-opacity: 0.8; +} + +.bg-center { + background-position: center; +} + +.bg-right { + background-position: right; +} + +.bg-cover { + background-size: cover; +} + +.border-transparent { + border-color: transparent; +} + +.border-blue-500 { + --tw-border-opacity: 1; + border-color: rgba(0, 173, 239, var(--tw-border-opacity)); +} + +.rounded { + border-radius: 0.25rem; +} + +.rounded-md { + border-radius: 0.375rem; +} + +.rounded-lg { + border-radius: 0.5rem; +} + +.border { + border-width: 1px; +} + +.inline-block { + display: inline-block; +} + +.inline { + display: inline; +} + +.flex { + display: flex; +} + +.table { + display: table; +} + +.grid { + display: grid; +} + +.flex-row { + flex-direction: row; +} + +.flex-col { + flex-direction: column; +} + +.place-items-center { + align-items: center; + justify-items: center; + place-items: center; +} + +.items-center { + align-items: center; +} + +.content-between { + align-content: space-between; +} + +.justify-center { + justify-content: center; +} + +.font-jt { + font-family: VAGRoundedTL-Regular, Arial Rounded, sans-serif; +} + +.font-medium { + font-weight: 500; +} + +.font-bold { + font-weight: 700; +} + +.h-1 { + height: 0.25rem; +} + +.h-5 { + height: 1.25rem; +} + +.h-auto { + height: auto; +} + +.h-full { + height: 100%; +} + +.text-xs { + font-size: 0.75rem; + line-height: 1rem; +} + +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; +} + +.text-4xl { + font-size: 2.25rem; + line-height: 2.5rem; +} + +.text-6xl { + font-size: 3.75rem; + line-height: 1; +} + +.leading-relaxed { + line-height: 1.625; +} + +.my-0 { + margin-top: 0px; + margin-bottom: 0px; +} + +.mx-auto { + margin-left: auto; + margin-right: auto; +} + +.mb-4 { + margin-bottom: 1rem; +} + +.mb-6 { + margin-bottom: 1.5rem; +} + +.mt-8 { + margin-top: 2rem; +} + +.mb-8 { + margin-bottom: 2rem; +} + +.mb-10 { + margin-bottom: 2.5rem; +} + +.object-cover { + -o-object-fit: cover; + object-fit: cover; +} + +.object-center { + -o-object-position: center; + object-position: center; +} + +.object-right { + -o-object-position: right; + object-position: right; +} + +.focus\:outline-none:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.overflow-hidden { + overflow: hidden; +} + +.py-2 { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.py-4 { + padding-top: 1rem; + padding-bottom: 1rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.px-5 { + padding-left: 1.25rem; + padding-right: 1.25rem; +} + +.px-8 { + padding-left: 2rem; + padding-right: 2rem; +} + +.py-16 { + padding-top: 4rem; + padding-bottom: 4rem; +} + +.py-24 { + padding-top: 6rem; + padding-bottom: 6rem; +} + +.pl-3 { + padding-left: 0.75rem; +} + +.static { + position: static; +} + +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.inset-y-0 { + top: 0px; + bottom: 0px; +} + +.top-0 { + top: 0px; +} + +.left-0 { + left: 0px; +} + +* { + --tw-shadow: 0 0 rgba(0,0,0,0); +} + +* { + --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgba(0, 173, 239, 0.5); + --tw-ring-offset-shadow: 0 0 rgba(0,0,0,0); + --tw-ring-shadow: 0 0 rgba(0,0,0,0); +} + +.focus\:ring-2:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), 0 0 rgba(0,0,0,0); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 rgba(0,0,0,0)); +} + +.focus\:ring-offset-2:focus { + --tw-ring-offset-width: 2px; +} + +.focus\:ring-blue-500:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgba(0, 173, 239, var(--tw-ring-opacity)); +} + +.focus\:ring-blue-700:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgba(0, 104, 144, var(--tw-ring-opacity)); +} + +.text-left { + text-align: left; +} + +.text-center { + text-align: center; +} + +.text-white { + --tw-text-opacity: 1; + color: rgba(255, 255, 255, var(--tw-text-opacity)); +} + +.text-gray-500 { + --tw-text-opacity: 1; + color: rgba(107, 114, 128, var(--tw-text-opacity)); +} + +.text-gray-700 { + --tw-text-opacity: 1; + color: rgba(55, 65, 81, var(--tw-text-opacity)); +} + +.text-blue-500 { + --tw-text-opacity: 1; + color: rgba(0, 173, 239, var(--tw-text-opacity)); +} + +.group:hover .group-hover\:text-blue-900 { + --tw-text-opacity: 1; + color: rgba(0, 51, 70, var(--tw-text-opacity)); +} + +.hover\:text-blue-700:hover { + --tw-text-opacity: 1; + color: rgba(0, 104, 144, var(--tw-text-opacity)); +} + +.tracking-wider { + letter-spacing: 0.05em; +} + +.visible { + visibility: visible; +} + +.whitespace-pre { + white-space: pre; +} + +.w-5 { + width: 1.25rem; +} + +.w-10 { + width: 2.5rem; +} + +.w-5\/6 { + width: 83.333333%; +} + +.w-full { + width: 100%; +} + +.gap-4 { + grid-gap: 1rem; + gap: 1rem; +} + +.grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); +} + +.transform { + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +} + +.transition { + transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; +} + +.ease-in-out { + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); +} + +.duration-500 { + transition-duration: 500ms; +} + +@-webkit-keyframes spin { + to { + transform: rotate(360deg); + } +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} + +@-webkit-keyframes ping { + 75%, 100% { + transform: scale(2); + opacity: 0; + } +} + +@keyframes ping { + 75%, 100% { + transform: scale(2); + opacity: 0; + } +} + +@-webkit-keyframes pulse { + 50% { + opacity: .5; + } +} + +@keyframes pulse { + 50% { + opacity: .5; + } +} + +@-webkit-keyframes bounce { + 0%, 100% { + transform: translateY(-25%); + -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1); + animation-timing-function: cubic-bezier(0.8,0,1,1); + } + + 50% { + transform: none; + -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1); + animation-timing-function: cubic-bezier(0,0,0.2,1); + } +} + +@keyframes bounce { + 0%, 100% { + transform: translateY(-25%); + -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1); + animation-timing-function: cubic-bezier(0.8,0,1,1); + } + + 50% { + transform: none; + -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1); + animation-timing-function: cubic-bezier(0,0,0.2,1); + } +} + +/* Plyr.js video player */ + +/* lazyprogressive images */ + +img.lazyprogressive { + background-size: cover; +} + +/* Joomlatools logo colour override used /partials/logo/joomaltools.html.php */ + +section { + --jt-blue:#00adef; + --jt-black:#000000; +} + +/* Joomlatools logo in white */ + +section[data-background="#4daae9"], +section[data-background*="einstein"], +section[data-background*="christmas"]{ + --jt-black:#ffffff; + --jt-blue:#ffffff; +} + +.browser-mockup { + border-top: 2em solid rgba(230, 230, 230, 0.7); + box-shadow: 0 0.1em .1em 0 rgba(0, 0, 0, 0.4); + position: relative; + border-radius: 3px 3px 0 0 +} + +.browser-mockup:before { + display: block; + position: absolute; + content: ''; + top: -1.25em; + left: 1em; + width: 0.5em; + height: 0.5em; + border-radius: 50%; + background-color: #f44; + box-shadow: 0 0 0 2px #f44, 1.5em 0 0 2px #9b3, 3em 0 0 2px #fb5; +} + +.browser-mockup.with-url:after { + display: block; + position: absolute; + content:attr(data-value); + font-size: 1rem; + top: -1.6em; + left: 5.5em; + width: calc(100% - 6em); + height: 1.2em; + border-radius: 2px; + background-color: white; +} + +.browser-mockup > * { + display: block; +} + +.terminal-mockup { + border-top: 2em solid rgba( 43, 40, 43, 0.7); + box-shadow: 0 0.1em .1em 0 rgba(0, 0, 0, 0.4); + position: relative; + border-radius: 12px; + background-color:#000; +} + +.terminal-mockup:before { + display: block; + position: absolute; + content: ''; + top: -1.25em; + left: 1em; + width: 0.5em; + height: 0.5em; + border-radius: 50%; + background-color: #f44; + box-shadow: 0 0 0 2px #f44, 1.5em 0 0 2px #9b3, 3em 0 0 2px #fb5; +} + +.terminal-mockup:after { + display: block; + position: absolute; + content:attr(data-value); + font-size: 0.9rem; + color:rgba( 150, 150, 150, 100%); + top: -1.6em; + left: 0; + width: 100%; + height: 1.2em; + border-radius: 2px; + text-align: center; +} + +.terminal-mockup > * { + display: block; +} + +.hljs { + border-radius: 0 0 12px 12px; +} + +@media (min-width: 640px) { +} + +@media (min-width: 768px) { + .md\:flex-row { + flex-direction: row; + } + + .md\:items-start { + align-items: flex-start; + } + + .md\:mb-0 { + margin-bottom: 0px; + } + + .md\:pl-16 { + padding-left: 4rem; + } + + .md\:text-left { + text-align: left; + } + + .md\:w-1\/2 { + width: 50%; + } +} + +@media (min-width: 1024px) { + .lg\:flex-grow { + flex-grow: 1; + } + + .lg\:mr-0 { + margin-right: 0px; + } + + .lg\:max-w-lg { + max-width: 32rem; + } + + .lg\:pl-24 { + padding-left: 6rem; + } + + .lg\:w-2\/3 { + width: 66.666667%; + } + + .lg\:w-3\/4 { + width: 75%; + } + + .lg\:w-full { + width: 100%; + } +} + +@media (min-width: 1280px) { + .xl\:mr-0 { + margin-right: 0px; + } + + .xl\:w-1\/2 { + width: 50%; + } +} + +@media (min-width: 1536px) { +} +/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImlucHV0LmNzcyIsIjxubyBzb3VyY2U+Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGFBQWE7O0FBQ2IsOEZBQWM7O0FBQWQ7OztDQUFjOztBQUFkOztDQUFjOztBQUFkOzs7RUFBQSxzQkFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkO0VBQUEsZ0JBQWM7RUFBZCxjQUFjO0tBQWQsV0FBYztBQUFBOztBQUFkOzs7Q0FBYzs7QUFBZDtFQUFBLGlCQUFjLEVBQWQsTUFBYztFQUFkLDhCQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOzs7Q0FBYzs7QUFBZDs7Q0FBYzs7QUFBZDtFQUFBLFNBQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDtFQUFBOzs7Ozs7OztrQkFBYztBQUFBOztBQUFkOzs7Q0FBYzs7QUFBZDs7O0NBQWM7O0FBQWQ7RUFBQSxTQUFjLEVBQWQsTUFBYztFQUFkLGNBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkOztDQUFjOztBQUFkO0VBQUEseUNBQWM7VUFBZCxpQ0FBYztBQUFBOztBQUFkOztDQUFjOztBQUFkOztFQUFBLG1CQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkOzs7O0VBQUE7Ozs7OztXQUFjLEVBQWQsTUFBYztFQUFkLGNBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7RUFBQSxjQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7O0VBQUEsY0FBYztFQUFkLGNBQWM7RUFBZCxrQkFBYztFQUFkLHdCQUFjO0FBQUE7O0FBQWQ7RUFBQSxlQUFjO0FBQUE7O0FBQWQ7RUFBQSxXQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkOzs7Q0FBYzs7QUFBZDtFQUFBLGNBQWMsRUFBZCxNQUFjO0VBQWQscUJBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkOzs7Q0FBYzs7QUFBZDs7Ozs7RUFBQSxvQkFBYyxFQUFkLE1BQWM7RUFBZCxlQUFjLEVBQWQsTUFBYztFQUFkLGlCQUFjLEVBQWQsTUFBYztFQUFkLFNBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7OztDQUFjOztBQUFkO1NBQUEsTUFBYztFQUFkLG9CQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7OztFQUFBLDBCQUFjO0FBQUE7O0FBQWQ7O0NBQWM7O0FBQWQ7O0NBQWM7O0FBQWQ7OztDQUFjOztBQUFkOztDQUFjOztBQUFkO0VBQUEsVUFBYztBQUFBOztBQUFkOztDQUFjOztBQUFkO0VBQUEsd0JBQWM7QUFBQTs7QUFBZDs7Q0FBYzs7QUFBZDs7O0NBQWM7O0FBQWQ7O0NBQWM7O0FBQWQ7OztDQUFjOztBQUFkOzs7Q0FBYzs7QUFBZDs7Q0FBYzs7QUFBZDtFQUFBLGtCQUFjO0FBQUE7O0FBQWQ7Ozs7RUFBYzs7QUFBZDs7RUFBYzs7QUFBZDs7Ozs7Ozs7Ozs7OztFQUFBLFNBQWM7QUFBQTs7QUFBZDtFQUFBLDZCQUFjO0VBQWQsc0JBQWM7QUFBQTs7QUFBZDs7O0VBQWM7O0FBQWQ7RUFBQSxtQkFBYztFQUFkLDBDQUFjO0FBQUE7O0FBQWQ7RUFBQSxTQUFjO0VBQWQsVUFBYztBQUFBOztBQUFkOztFQUFBLGdCQUFjO0VBQWQsU0FBYztFQUFkLFVBQWM7QUFBQTs7QUFBZDs7RUFBYzs7QUFBZDs7Ozs7RUFBYzs7QUFBZDtFQUFBLHdSQUFjLEVBQWQsTUFBYztFQUFkLGdCQUFjLEVBQWQsTUFBYztBQUFBOztBQUFkOzs7RUFBYzs7QUFBZDtFQUFBLG9CQUFjO0VBQWQsb0JBQWM7QUFBQTs7QUFBZDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBQWM7O0FBQWQ7OztFQUFBLHNCQUFjLEVBQWQsTUFBYztFQUFkLGVBQWMsRUFBZCxNQUFjO0VBQWQsbUJBQWMsRUFBZCxNQUFjO0VBQWQscUJBQWMsRUFBZCxNQUFjO0FBQUE7O0FBQWQ7O0VBQWM7O0FBQWQ7RUFBQSxxQkFBYztBQUFBOztBQUFkOzs7Ozs7OztFQUFjOztBQUFkO0VBQUEsbUJBQWM7QUFBQTs7QUFBZDtFQUFBLGdCQUFjO0FBQUE7O0FBQWQ7RUFBQSxjQUFjO0FBQUE7O0FBQWQ7RUFBQSxjQUFjO0FBQUE7O0FBQWQ7O0VBQUEsY0FBYztBQUFBOztBQUFkO0VBQUEsZUFBYztBQUFBOztBQUFkO0VBQUEseUJBQWM7QUFBQTs7QUFBZDs7Ozs7O0VBQUEsa0JBQWM7RUFBZCxvQkFBYztBQUFBOztBQUFkOzs7RUFBYzs7QUFBZDtFQUFBLGNBQWM7RUFBZCx3QkFBYztBQUFBOztBQUFkOzs7Ozs7RUFBYzs7QUFBZDs7Ozs7RUFBQSxVQUFjO0VBQWQsb0JBQWM7RUFBZCxjQUFjO0FBQUE7O0FBQWQ7Ozs7O0VBQWM7O0FBQWQ7Ozs7RUFBQSwrR0FBYztBQUFBOztBQUFkOzs7Ozs7RUFBYzs7QUFBZDs7Ozs7Ozs7RUFBQSxjQUFjO0VBQWQsc0JBQWM7QUFBQTs7QUFBZDs7Ozs7RUFBYzs7QUFBZDs7RUFBQSxlQUFjO0VBQWQsWUFBYztBQUFBOztBQU1iOzsrQ0FFOEM7O0FBQzlDO0VBQ0MsY0FBYztBQUNmOztBQUVBOzsrQ0FFOEM7O0FBQzlDO0VBQ0MsOEJBQThCO0VBQzlCLGNBQWM7QUFDZjs7QUFFQTs7K0NBRThDOztBQUM5QztFQUNDO0lBQ0Msc0JBQXNCO0VBQ3ZCO0FBQ0Q7O0FBM0JEO0VBQUE7QUFBb0I7O0FBQXBCO0VBQUE7SUFBQTtFQUFvQjtBQUFBOztBQUFwQjtFQUFBO0lBQUE7RUFBb0I7QUFBQTs7QUFBcEI7RUFBQTtJQUFBO0VBQW9CO0FBQUE7O0FBQXBCO0VBQUE7SUFBQTtFQUFvQjtBQUFBOztBQUFwQjtFQUFBO0lBQUE7RUFBb0I7QUFBQTs7QUFDcEI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsc0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQixxQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsbUJBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxrQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsZUFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtLQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSwwQkFBbUI7S0FBbkI7QUFBbUI7O0FBQW5CO0VBQUEseUJBQW1CO0tBQW5CO0FBQW1COztBQUFuQjtFQUFBLDhCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQSxtQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsaUJBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGtCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxxQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsa0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLGlCQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxpQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsUUFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUE7QUFBbUI7O0FBQW5CO0VBQUEsNENBQW1CO0VBQW5CLDJCQUFtQjtFQUFuQiw0QkFBbUI7RUFBbkIsdUNBQW1CO0VBQW5CLDBDQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSwyR0FBbUI7RUFBbkIseUdBQW1CO0VBQW5CLGtGQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBLG9CQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQSxvQkFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsb0JBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLGNBQW1CO0VBQW5CO0FBQW1COztBQUFuQjtFQUFBO0FBQW1COztBQUFuQjtFQUFBLG1CQUFtQjtFQUFuQixtQkFBbUI7RUFBbkIsY0FBbUI7RUFBbkIsY0FBbUI7RUFBbkIsY0FBbUI7RUFBbkIsZUFBbUI7RUFBbkIsZUFBbUI7RUFBbkI7QUFBbUI7O0FBQW5CO0VBQUEsd0dBQW1CO0VBQW5CLHdEQUFtQjtFQUFuQjtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtBQUFtQjs7QUFBbkI7RUFBQTtJQUFBO0VBQW1CO0FBQUE7O0FBQW5CO0VBQUE7SUFBQTtFQUFtQjtBQUFBOztBQUFuQjtFQUFBO0lBQUEsbUJBQW1CO0lBQW5CO0VBQW1CO0FBQUE7O0FBQW5CO0VBQUE7SUFBQSxtQkFBbUI7SUFBbkI7RUFBbUI7QUFBQTs7QUFBbkI7RUFBQTtJQUFBO0VBQW1CO0FBQUE7O0FBQW5CO0VBQUE7SUFBQTtFQUFtQjtBQUFBOztBQUFuQjtFQUFBO0lBQUEsMkJBQW1CO0lBQW5CLDBEQUFtQjtZQUFuQjtFQUFtQjs7RUFBbkI7SUFBQSxlQUFtQjtJQUFuQiwwREFBbUI7WUFBbkI7RUFBbUI7QUFBQTs7QUFBbkI7RUFBQTtJQUFBLDJCQUFtQjtJQUFuQiwwREFBbUI7WUFBbkI7RUFBbUI7O0VBQW5CO0lBQUEsZUFBbUI7SUFBbkIsMERBQW1CO1lBQW5CO0VBQW1CO0FBQUE7O0FBOEJqQix5QkFBeUI7O0FBSXpCLDJCQUEyQjs7QUFDM0I7RUFuQ0Ysc0JBQW1CO0FBcUNqQjs7QUFFRiw4RUFBOEU7O0FBQzlFO0VBQ0MsaUJBQWlCO0VBQ2pCLGtCQUFrQjtBQUNuQjs7QUFDQSw4QkFBOEI7O0FBQzlCOzs7RUFHRSxrQkFBa0I7RUFDbEIsaUJBQWlCO0FBQ25COztBQUVBO0VBQ0UsOENBQThDO0VBQzlDLDZDQUE2QztFQUM3QyxrQkFBa0I7RUFDbEI7QUFDRjs7QUFFQTtFQUNFLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7RUFDWixTQUFTO0VBQ1QsWUFBWTtFQUNaLGFBQWE7RUFDYixrQkFBa0I7RUFDbEIsc0JBQXNCO0VBQ3RCLGdFQUFnRTtBQUNsRTs7QUFFQTtFQUNFLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsd0JBQXdCO0VBQ3hCLGVBQWU7RUFDZixXQUFXO0VBQ1gsV0FBVztFQUNYLHVCQUF1QjtFQUN2QixhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSw0Q0FBNEM7RUFDNUMsNkNBQTZDO0VBQzdDLGtCQUFrQjtFQUNsQixtQkFBbUI7RUFDbkIscUJBQXFCO0FBQ3ZCOztBQUVBO0VBQ0UsY0FBYztFQUNkLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtFQUNaLFNBQVM7RUFDVCxZQUFZO0VBQ1osYUFBYTtFQUNiLGtCQUFrQjtFQUNsQixzQkFBc0I7RUFDdEIsZ0VBQWdFO0FBQ2xFOztBQUVBO0VBQ0UsY0FBYztFQUNkLGtCQUFrQjtFQUNsQix3QkFBd0I7RUFDeEIsaUJBQWlCO0VBQ2pCLGdDQUFnQztFQUNoQyxXQUFXO0VBQ1gsT0FBTztFQUNQLFdBQVc7RUFDWCxhQUFhO0VBQ2Isa0JBQWtCO0VBQ2xCLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSw0QkFBNEI7QUFDOUI7O0FDcklBO0NBQUE7O0FBQUE7RURHQTtJQUFBO0VBQW1COztFQUFuQjtJQUFBO0VBQW1COztFQUFuQjtJQUFBO0VBQW1COztFQUFuQjtJQUFBO0VBQW1COztFQUFuQjtJQUFBO0VBQW1COztFQUFuQjtJQUFBO0VBQW1CO0NDSG5COztBQUFBO0VER0E7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjs7RUFBbkI7SUFBQTtFQUFtQjtDQ0huQjs7QUFBQTtFREdBO0lBQUE7RUFBbUI7O0VBQW5CO0lBQUE7RUFBbUI7Q0NIbkI7O0FBQUE7Q0FBQSIsImZpbGUiOiJvdXRwdXQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLyogdGFpbHdpbmQgKi9cbkB0YWlsd2luZCBiYXNlO1xuQHRhaWx3aW5kIGNvbXBvbmVudHM7XG5AdGFpbHdpbmQgdXRpbGl0aWVzO1xuXG5AbGF5ZXIgYmFzZSB7XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHQgKiBOQVZJR0FUSU9OIENPTlRST0xTXG5cdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cdC5yZXZlYWwgLmNvbnRyb2xzIHtcblx0XHRjb2xvcjogIzJhNzZkZDtcblx0fVxuXG5cdC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblx0ICogUFJPR1JFU1MgQkFSXG5cdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cdC5yZXZlYWwgLnByb2dyZXNzIHtcblx0XHRiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuMik7XG5cdFx0Y29sb3I6ICMyYTc2ZGQ7IFxuXHR9XG5cblx0LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXHQgKiBQUklOVCBCQUNLR1JPVU5EXG5cdCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cdEBtZWRpYSBwcmludCB7XG5cdFx0LmJhY2tncm91bmRzIHtcblx0XHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7IFxuXHRcdH0gXG5cdH1cblxufVxuQGxheWVyIHV0aWxpdGllcyB7XG4gIC8qIFBseXIuanMgdmlkZW8gcGxheWVyICovXG4gIC5wbHlyIHtcbiAgICBAYXBwbHkgcm91bmRlZC1sZztcbiAgfVxuICAvKiBsYXp5cHJvZ3Jlc3NpdmUgaW1hZ2VzICovXG4gIGltZy5sYXp5cHJvZ3Jlc3NpdmUge1xuICAgIEBhcHBseSBiZy1jb3ZlcjtcbiAgfVxufVxuLyogSm9vbWxhdG9vbHMgbG9nbyBjb2xvdXIgb3ZlcnJpZGUgdXNlZCAvcGFydGlhbHMvbG9nby9qb29tYWx0b29scy5odG1sLnBocCAqL1xuc2VjdGlvbiB7XG5cdC0tanQtYmx1ZTojMDBhZGVmO1xuXHQtLWp0LWJsYWNrOiMwMDAwMDA7XG59XG4vKiBKb29tbGF0b29scyBsb2dvIGluIHdoaXRlICovXG5zZWN0aW9uW2RhdGEtYmFja2dyb3VuZD1cIiM0ZGFhZTlcIl0sXG5zZWN0aW9uW2RhdGEtYmFja2dyb3VuZCo9XCJlaW5zdGVpblwiXSwgXG5zZWN0aW9uW2RhdGEtYmFja2dyb3VuZCo9XCJjaHJpc3RtYXNcIl17XG4gIC0tanQtYmxhY2s6I2ZmZmZmZjtcbiAgLS1qdC1ibHVlOiNmZmZmZmY7XG59XG5cbi5icm93c2VyLW1vY2t1cCB7XG4gIGJvcmRlci10b3A6IDJlbSBzb2xpZCByZ2JhKDIzMCwgMjMwLCAyMzAsIDAuNyk7XG4gIGJveC1zaGFkb3c6IDAgMC4xZW0gLjFlbSAwIHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBib3JkZXItcmFkaXVzOiAzcHggM3B4IDAgMFxufVxuXG4uYnJvd3Nlci1tb2NrdXA6YmVmb3JlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29udGVudDogJyc7XG4gIHRvcDogLTEuMjVlbTtcbiAgbGVmdDogMWVtO1xuICB3aWR0aDogMC41ZW07XG4gIGhlaWdodDogMC41ZW07XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2Y0NDtcbiAgYm94LXNoYWRvdzogMCAwIDAgMnB4ICNmNDQsIDEuNWVtIDAgMCAycHggIzliMywgM2VtIDAgMCAycHggI2ZiNTtcbn1cblxuLmJyb3dzZXItbW9ja3VwLndpdGgtdXJsOmFmdGVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgY29udGVudDphdHRyKGRhdGEtdmFsdWUpO1xuICBmb250LXNpemU6IDFyZW07XG4gIHRvcDogLTEuNmVtO1xuICBsZWZ0OiA1LjVlbTtcbiAgd2lkdGg6IGNhbGMoMTAwJSAtIDZlbSk7XG4gIGhlaWdodDogMS4yZW07XG4gIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG59XG5cbi5icm93c2VyLW1vY2t1cCA+ICoge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLnRlcm1pbmFsLW1vY2t1cCB7XG4gIGJvcmRlci10b3A6IDJlbSBzb2xpZCByZ2JhKCA0MywgNDAsIDQzLCAwLjcpO1xuICBib3gtc2hhZG93OiAwIDAuMWVtIC4xZW0gMCByZ2JhKDAsIDAsIDAsIDAuNCk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgYmFja2dyb3VuZC1jb2xvcjojMDAwO1xufVxuXG4udGVybWluYWwtbW9ja3VwOmJlZm9yZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIGNvbnRlbnQ6ICcnO1xuICB0b3A6IC0xLjI1ZW07XG4gIGxlZnQ6IDFlbTtcbiAgd2lkdGg6IDAuNWVtO1xuICBoZWlnaHQ6IDAuNWVtO1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNDQ7XG4gIGJveC1zaGFkb3c6IDAgMCAwIDJweCAjZjQ0LCAxLjVlbSAwIDAgMnB4ICM5YjMsIDNlbSAwIDAgMnB4ICNmYjU7XG59XG5cbi50ZXJtaW5hbC1tb2NrdXA6YWZ0ZXIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjb250ZW50OmF0dHIoZGF0YS12YWx1ZSk7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBjb2xvcjpyZ2JhKCAxNTAsIDE1MCwgMTUwLCAxMDAlKTtcbiAgdG9wOiAtMS42ZW07XG4gIGxlZnQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEuMmVtO1xuICBib3JkZXItcmFkaXVzOiAycHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLnRlcm1pbmFsLW1vY2t1cCA+ICoge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmhsanMge1xuICBib3JkZXItcmFkaXVzOiAwIDAgMTJweCAxMnB4O1xufSIsbnVsbF19 */ \ No newline at end of file diff --git a/code/site/joomlatools-pages/theme/css/output.min.css b/code/site/joomlatools-pages/theme/css/output.min.css new file mode 100644 index 000000000..1a8776b49 --- /dev/null +++ b/code/site/joomlatools-pages/theme/css/output.min.css @@ -0,0 +1 @@ +/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */:root{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,Helvetica,Arial,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,Helvetica Neue,Arial,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af}input::placeholder,textarea::placeholder{color:#9ca3af}button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}.reveal .controls{color:#2a76dd}.reveal .progress{background:rgba(0,0,0,.2);color:#2a76dd}@media print{.backgrounds{background-color:#fff}}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.bg-black{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity:1;background-color:rgba(0,154,213,var(--tw-bg-opacity))}.bg-blue-800{--tw-bg-opacity:1;background-color:rgba(0,78,108,var(--tw-bg-opacity))}.bg-brand{--tw-bg-opacity:1;background-color:rgba(0,173,239,var(--tw-bg-opacity))}.hover\:bg-blue-100:hover{--tw-bg-opacity:1;background-color:rgba(230,247,254,var(--tw-bg-opacity))}.hover\:bg-blue-500:hover{--tw-bg-opacity:1;background-color:rgba(0,173,239,var(--tw-bg-opacity))}.bg-opacity-80{--tw-bg-opacity:0.8}.bg-center{background-position:50%}.bg-right{background-position:100%}.bg-cover{background-size:cover}.border-transparent{border-color:transparent}.border-blue-500{--tw-border-opacity:1;border-color:rgba(0,173,239,var(--tw-border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.border{border-width:1px}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.table{display:table}.grid{display:grid}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.place-items-center{align-items:center;justify-items:center;place-items:center}.items-center{align-items:center}.content-between{align-content:space-between}.justify-center{justify-content:center}.font-jt{font-family:VAGRoundedTL-Regular,Arial Rounded,sans-serif}.font-medium{font-weight:500}.font-bold{font-weight:700}.h-1{height:.25rem}.h-5{height:1.25rem}.h-auto{height:auto}.h-full{height:100%}.text-xs{font-size:.75rem;line-height:1rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-6xl{font-size:3.75rem;line-height:1}.leading-relaxed{line-height:1.625}.my-0{margin-top:0;margin-bottom:0}.mx-auto{margin-left:auto;margin-right:auto}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mt-8{margin-top:2rem}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.object-right{-o-object-position:right;object-position:right}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-hidden{overflow:hidden}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-8{padding-left:2rem;padding-right:2rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-24{padding-top:6rem;padding-bottom:6rem}.pl-3{padding-left:.75rem}.static{position:static}.absolute{position:absolute}.relative{position:relative}.inset-y-0{top:0;bottom:0}.top-0{top:0}.left-0{left:0}*{--tw-shadow:0 0 transparent;--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(0,173,239,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 transparent;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(0,173,239,var(--tw-ring-opacity))}.focus\:ring-blue-700:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(0,104,144,var(--tw-ring-opacity))}.text-left{text-align:left}.text-center{text-align:center}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity:1;color:rgba(0,173,239,var(--tw-text-opacity))}.group:hover .group-hover\:text-blue-900{--tw-text-opacity:1;color:rgba(0,51,70,var(--tw-text-opacity))}.hover\:text-blue-700:hover{--tw-text-opacity:1;color:rgba(0,104,144,var(--tw-text-opacity))}.tracking-wider{letter-spacing:.05em}.visible{visibility:visible}.whitespace-pre{white-space:pre}.w-5{width:1.25rem}.w-10{width:2.5rem}.w-5\/6{width:83.333333%}.w-full{width:100%}.gap-4{grid-gap:1rem;gap:1rem}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-500{transition-duration:.5s}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}img.lazyprogressive{background-size:cover}section{--jt-blue:#00adef;--jt-black:#000}section[data-background*=christmas],section[data-background*=einstein],section[data-background="#4daae9"]{--jt-black:#fff;--jt-blue:#fff}.browser-mockup{border-top:2em solid hsla(0,0%,90.2%,.7);box-shadow:0 .1em .1em 0 rgba(0,0,0,.4);position:relative;border-radius:3px 3px 0 0}.browser-mockup:before{display:block;position:absolute;content:"";top:-1.25em;left:1em;width:.5em;height:.5em;border-radius:50%;background-color:#f44;box-shadow:0 0 0 2px #f44,1.5em 0 0 2px #9b3,3em 0 0 2px #fb5}.browser-mockup.with-url:after{display:block;position:absolute;content:attr(data-value);font-size:1rem;top:-1.6em;left:5.5em;width:calc(100% - 6em);height:1.2em;border-radius:2px;background-color:#fff}.browser-mockup>*{display:block}.terminal-mockup{border-top:2em solid rgba(43,40,43,.7);box-shadow:0 .1em .1em 0 rgba(0,0,0,.4);position:relative;border-radius:12px;background-color:#000}.terminal-mockup:before{display:block;position:absolute;content:"";top:-1.25em;left:1em;width:.5em;height:.5em;border-radius:50%;background-color:#f44;box-shadow:0 0 0 2px #f44,1.5em 0 0 2px #9b3,3em 0 0 2px #fb5}.terminal-mockup:after{display:block;position:absolute;content:attr(data-value);font-size:.9rem;color:rgba(150,150,150,100%);top:-1.6em;left:0;width:100%;height:1.2em;border-radius:2px;text-align:center}.terminal-mockup>*{display:block}.hljs{border-radius:0 0 12px 12px}@media (min-width:768px){.md\:flex-row{flex-direction:row}.md\:items-start{align-items:flex-start}.md\:mb-0{margin-bottom:0}.md\:pl-16{padding-left:4rem}.md\:text-left{text-align:left}.md\:w-1\/2{width:50%}}@media (min-width:1024px){.lg\:flex-grow{flex-grow:1}.lg\:mr-0{margin-right:0}.lg\:max-w-lg{max-width:32rem}.lg\:pl-24{padding-left:6rem}.lg\:w-2\/3{width:66.666667%}.lg\:w-3\/4{width:75%}.lg\:w-full{width:100%}}@media (min-width:1280px){.xl\:mr-0{margin-right:0}.xl\:w-1\/2{width:50%}} \ No newline at end of file diff --git a/code/site/joomlatools-pages/theme/fonts/.DS_Store b/code/site/joomlatools-pages/theme/fonts/.DS_Store new file mode 100644 index 000000000..d717ae3b0 Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/.DS_Store differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/LICENSE b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/LICENSE new file mode 100644 index 000000000..71b7a02a2 --- /dev/null +++ b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/LICENSE @@ -0,0 +1,45 @@ +SIL Open Font License + +Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name ‘Source’. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + +—————————————————————————————- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +—————————————————————————————- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS +“Font Software” refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +“Reserved Font Name” refers to any names specified as such after the copyright statement(s). + +“Original Version” refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +“Modified Version” refers to any derivative made by adding to, deleting, or substituting—in part or in whole—any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +“Author” refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. \ No newline at end of file diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-italic.eot b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-italic.eot new file mode 100755 index 000000000..32fe466bb Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-italic.eot differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf new file mode 100755 index 000000000..f9ac13ffc Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-italic.woff b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-italic.woff new file mode 100755 index 000000000..ceecbf17f Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-italic.woff differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-regular.eot b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-regular.eot new file mode 100755 index 000000000..4d29ddadd Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-regular.eot differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf new file mode 100755 index 000000000..00c833cdc Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-regular.woff b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-regular.woff new file mode 100755 index 000000000..630754abf Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-regular.woff differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot new file mode 100755 index 000000000..1104e074f Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf new file mode 100755 index 000000000..6d0253da9 Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff new file mode 100755 index 000000000..8888cf8d4 Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot new file mode 100755 index 000000000..cdf733438 Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf new file mode 100755 index 000000000..56442992a Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff new file mode 100755 index 000000000..7c2d3c74f Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff differ diff --git a/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro.css b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro.css new file mode 100644 index 000000000..99e4fb71a --- /dev/null +++ b/code/site/joomlatools-pages/theme/fonts/source-sans-pro/source-sans-pro.css @@ -0,0 +1,39 @@ +@font-face { + font-family: 'Source Sans Pro'; + src: url('./source-sans-pro-regular.eot'); + src: url('./source-sans-pro-regular.eot?#iefix') format('embedded-opentype'), + url('./source-sans-pro-regular.woff') format('woff'), + url('./source-sans-pro-regular.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('./source-sans-pro-italic.eot'); + src: url('./source-sans-pro-italic.eot?#iefix') format('embedded-opentype'), + url('./source-sans-pro-italic.woff') format('woff'), + url('./source-sans-pro-italic.ttf') format('truetype'); + font-weight: normal; + font-style: italic; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('./source-sans-pro-semibold.eot'); + src: url('./source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'), + url('./source-sans-pro-semibold.woff') format('woff'), + url('./source-sans-pro-semibold.ttf') format('truetype'); + font-weight: 600; + font-style: normal; +} + +@font-face { + font-family: 'Source Sans Pro'; + src: url('./source-sans-pro-semibolditalic.eot'); + src: url('./source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'), + url('./source-sans-pro-semibolditalic.woff') format('woff'), + url('./source-sans-pro-semibolditalic.ttf') format('truetype'); + font-weight: 600; + font-style: italic; +} diff --git a/code/site/joomlatools-pages/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff b/code/site/joomlatools-pages/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff new file mode 100644 index 000000000..4da21617b Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff differ diff --git a/code/site/joomlatools-pages/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff2 b/code/site/joomlatools-pages/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff2 new file mode 100644 index 000000000..e311cc056 Binary files /dev/null and b/code/site/joomlatools-pages/theme/fonts/vag-rounded-tl-regular/vag-rounded-tl-regular.woff2 differ diff --git a/code/site/joomlatools-pages/theme/mason.js b/code/site/joomlatools-pages/theme/mason.js new file mode 100644 index 000000000..0928b6f01 --- /dev/null +++ b/code/site/joomlatools-pages/theme/mason.js @@ -0,0 +1,92 @@ +const mason = require('@joomlatools/mason-tools-v1'); + +async function postcss() { + await mason.css.process(`css/input.css`, `css/output.css`, { + tailwind: { + purge: { + enabled: true, + content: [ + '../**/*.html.php', + ], + options: { + safelist: [ + // These classes are used by MIX, let's add them to the safe list + 'lazyprogressive', + 'bg-center', + 'bg-cover', + 'bg-right', + 'object-center', + 'object-right', + // These classes are used by reveal, let's add them to the safe list + 'reveal', + 'slides', + 'controls', + 'progress', + 'backgrounds', + 'w-5', + 'w-10', + ], + }, + }, + theme: { + extend: { + colors: { + // Joomlatools blue + 'brand': '#00adef', + 'blue': { + 50: '#f3fbff', + 100: '#e6f7fe', + 200: '#c0ebfb', + 300: '#97def9', + 400: '#4dc6f4', + 500: '#00adef', + 600: '#009ad5', + 700: '#006890', + 800: '#004e6c', + 900: '#003346' + }, + }, + // Joomlatools webfont + fontFamily: { + 'jt': ['VAGRoundedTL-Regular', 'Arial Rounded', 'sans-serif'], + }, + // Slide layout main grid + gridTemplateRows: { + 'splash': '1fr auto', + 'layout': 'auto 1fr auto', + }, + } + }, + variants: { + opacity: ['responsive', 'hover'], + borderWidth: ['responsive', 'hover', 'focus'], + }, + } + }); +} + +async function sync() { + mason.browserSync({ + watch: true, + server: { + baseDir: './joomlatools-pages/theme' + }, + files: 'css/*.css', + }); +} + +module.exports = { + version: '1.0', + tasks: { + postcss, + sync, + watch: { + path: ['.'], + callback: async (path) => { + if (path.endsWith('css/input.css')) { + await postcss(); + } + }, + }, + }, +};