commit
6e3979f284
@ -0,0 +1,4 @@ |
||||
protected/src/IOcornerstone |
||||
protected/src/vendor |
||||
protected/logs/*.txt |
||||
protected/src/.env |
||||
@ -0,0 +1,22 @@ |
||||
The MIT License |
||||
|
||||
Copyright (c) 2010-2026 Robert Strutts |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining |
||||
a copy of this software and associated documentation files (the |
||||
"Software"), to deal in the Software without restriction, including |
||||
without limitation the rights to use, copy, modify, merge, publish, |
||||
distribute, sublicense, and/or sell copies of the Software, and to |
||||
permit persons to whom the Software is furnished to do so, subject to |
||||
the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be |
||||
included in all copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
@ -0,0 +1,4 @@ |
||||
# Project IOcornerstone PHP 8.5 |
||||
Author Robert Strutts |
||||
Copyright (c) 2010-2026 Robert Strutts |
||||
License MIT |
||||
@ -0,0 +1,74 @@ |
||||
/* |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
/** |
||||
* Author: Robert Strutts |
||||
* Created: May 27, 2026 |
||||
*/ |
||||
|
||||
CREATE TABLE emails ( |
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, |
||||
email CHAR(254) NOT NULL UNIQUE, |
||||
uuid CHAR(26) NOT NULL UNIQUE, |
||||
first_name VARCHAR(33) NOT NULL, |
||||
last_initial CHAR(1) NOT NULL, |
||||
last_name VARCHAR(63) NULL, |
||||
is_adult TINYINT UNSIGNED DEFAULT 0, |
||||
tos TINYINT UNSIGNED DEFAULT 0, |
||||
be_anon TINYINT UNSIGNED DEFAULT 0, |
||||
is_active TINYINT UNSIGNED DEFAULT 0, |
||||
ip VARBINARY(16) NULL, |
||||
is_banned TINYINT UNSIGNED DEFAULT 0, |
||||
is_subscribed TINYINT UNSIGNED DEFAULT 0, |
||||
send_newsletter TINYINT UNSIGNED DEFAULT 0, |
||||
sent_email TINYINT UNSIGNED DEFAULT 0 |
||||
); |
||||
|
||||
CREATE TABLE users ( |
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, |
||||
email_id INT UNSIGNED NOT NULL, |
||||
pwd TEXT NOT NULL, |
||||
access_level TINYINT UNSIGNED DEFAULT 1 |
||||
); |
||||
|
||||
CREATE TABLE goals ( |
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, |
||||
uuid CHAR(26) NOT NULL UNIQUE, |
||||
email_id INT UNSIGNED NOT NULL, |
||||
title VARCHAR(255) NOT NULL, |
||||
description TEXT, |
||||
approved TINYINT UNSIGNED DEFAULT 0, |
||||
youtube TINYINT UNSIGNED DEFAULT 0 |
||||
); |
||||
|
||||
CREATE TABLE tags ( |
||||
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, |
||||
name VARCHAR(100) UNIQUE |
||||
); |
||||
|
||||
CREATE TABLE goal_tags ( |
||||
goal_id BIGINT UNSIGNED, |
||||
tag_id INT UNSIGNED, |
||||
PRIMARY KEY(goal_id, tag_id) |
||||
); |
||||
|
||||
CREATE TABLE advice ( |
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, |
||||
goal_id BIGINT UNSIGNED NOT NULL, |
||||
email_id INT UNSIGNED NOT NULL, |
||||
content TEXT NOT NULL, |
||||
votes INT UNSIGNED DEFAULT 0, |
||||
approved TINYINT UNSIGNED DEFAULT 0, |
||||
youtube TINYINT UNSIGNED DEFAULT 0 |
||||
); |
||||
|
||||
CREATE TABLE advice_comments ( |
||||
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, |
||||
advice_id BIGINT UNSIGNED, |
||||
email_id INT UNSIGNED NOT NULL, |
||||
content TEXT, |
||||
approved TINYINT UNSIGNED DEFAULT 0, |
||||
youtube TINYINT UNSIGNED DEFAULT 0 |
||||
); |
||||
@ -0,0 +1,72 @@ |
||||
<?php |
||||
|
||||
declare(strict_types = 1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
namespace Project\Classes; |
||||
|
||||
use IOcornerstone\Framework\Http\HttpFactory; |
||||
use Psr\Http\Message\ServerRequestInterface; |
||||
use Psr\Http\Message\ResponseInterface; |
||||
use IOcornerstone\Framework\{ |
||||
HtmlDocument, |
||||
View |
||||
}; |
||||
|
||||
class BaseController |
||||
{ |
||||
public string $pageOutput = ''; // To keep views working...without Dynamic Variable Error! |
||||
public static $params; // To keep Routes working... |
||||
private $http; |
||||
public $view; |
||||
public $html; |
||||
protected string $footer = ""; |
||||
protected string $authors = ""; |
||||
|
||||
public function __construct( |
||||
public ServerRequestInterface $request |
||||
) { |
||||
$this->http = new HttpFactory(); |
||||
$this->view = new View(); |
||||
$this->html = new HtmlDocument(); |
||||
|
||||
// If the child controller has an init() method, call it automatically |
||||
if (method_exists($this, 'init')) { |
||||
$this->init(); |
||||
} |
||||
} |
||||
|
||||
public function returnResponse(string|array $body, int $status = 200, array $headers = []): ResponseInterface |
||||
{ |
||||
if (is_array($body)) { |
||||
if (! in_array("Content-Type", $headers)) { |
||||
$headers = ['Content-Type'=>'application/json']; |
||||
} |
||||
|
||||
return $this->http->createResponse($status, $headers, json_encode($body)); |
||||
} |
||||
return $this->http->createResponse($status, $headers, $body); |
||||
} |
||||
|
||||
public function setFooterAndAuthors() |
||||
{ |
||||
if (defined('\Project\MyPage::MyFooter')) { |
||||
$this->footer = \Project\MyPage::MyFooter; |
||||
} else { |
||||
$this->footer = ""; |
||||
} |
||||
|
||||
if (defined('\Project\MyPage::MyAuthors')) { |
||||
$this->authors = \Project\MyPage::MyAuthors; |
||||
} else { |
||||
$this->authors = ""; |
||||
} |
||||
|
||||
$this->html->setFooter($this->footer); |
||||
$this->html->setAuthor($this->authors); |
||||
} |
||||
} |
||||
@ -0,0 +1,36 @@ |
||||
<?php |
||||
|
||||
declare(strict_types = 1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
namespace Project\Classes\Logic; |
||||
|
||||
enum AccessLevelEnum: int { |
||||
case User = 1; |
||||
case Moderator = 2; |
||||
case Admin = 3; |
||||
|
||||
public function label(): string { |
||||
return match($this) { |
||||
self::User => 'User', |
||||
self::Moderator => 'Moderator', |
||||
self::Admin => 'Admin', |
||||
}; |
||||
} |
||||
|
||||
public function canUseSystem(): bool { |
||||
return $this->value >= self::User->value; |
||||
} |
||||
|
||||
public function canModerate(): bool { |
||||
return $this->value == self::Moderator->value; |
||||
} |
||||
|
||||
public function canAdmin(): bool { |
||||
return $this->value == self::Admin->value; |
||||
} |
||||
} |
||||
@ -0,0 +1,43 @@ |
||||
<?php |
||||
|
||||
declare(strict_types = 1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
namespace Project\Classes\Logic; |
||||
|
||||
/** |
||||
* Description of HomeSearch |
||||
* |
||||
* @author Robert Strutts |
||||
*/ |
||||
class HomeSearch |
||||
{ |
||||
|
||||
public static function Tags(): array |
||||
{ |
||||
$a['search'] = $_GET['search'] ?? false; |
||||
$a['tag'] = $_GET['tag'] ?? false; |
||||
|
||||
if (empty($a['search'])) { |
||||
$a['search'] = false; |
||||
} |
||||
|
||||
if (empty($a['tag'])) { |
||||
$a['tag'] = false; |
||||
} |
||||
|
||||
return $a; |
||||
} |
||||
|
||||
public static function MyUUID(): array |
||||
{ |
||||
$a['MyUUID'] = $_GET['g'] ?? false; |
||||
|
||||
return $a; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,32 @@ |
||||
<?php |
||||
|
||||
declare(strict_types = 1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
namespace Project\Classes\Logic; |
||||
|
||||
/** |
||||
* Description of IndexAuthContainer |
||||
* |
||||
* @author Robert Strutts |
||||
*/ |
||||
class IndexAuthContainer |
||||
{ |
||||
public static function Logins(): string |
||||
{ |
||||
$auth = '<div class="auth-container">'; |
||||
$loggedin = $_SESSION['email'] ?? false; |
||||
if ($loggedin === false) { |
||||
$auth .= '<a href="Login.html" class="btn login-btn">Login</a>'; |
||||
$auth .= '<a href="Register.html" class="btn register-btn">Register</a>'; |
||||
} else { |
||||
$auth .= '<a href="Logout.html" class="btn login-btn">Logout</a>'; |
||||
} |
||||
$auth .= '</div>'; |
||||
return $auth; |
||||
} |
||||
} |
||||
@ -0,0 +1,284 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace Project\Classes\Logic; |
||||
|
||||
use \Project\Classes\Models\RegPostSaveModel; |
||||
use \IOcornerstone\Framework\Uuids\UuidV7; |
||||
use \IOcornerstone\Framework\Configure; |
||||
|
||||
/** |
||||
* Description of RegPostLogic |
||||
* Verify Email, etc... |
||||
* @author Robert Strutts |
||||
*/ |
||||
class RegPostLogic |
||||
{ |
||||
|
||||
public static function DoSave(): array |
||||
{ |
||||
$errors = []; |
||||
$success = false; |
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') { |
||||
return $errors; |
||||
} |
||||
|
||||
$email = trim($_POST['email'] ?? ''); |
||||
$first_name = trim($_POST['first_name'] ?? ''); |
||||
$last_initial = strtoupper(trim($_POST['last_initial'] ?? '')); |
||||
$last_name = trim($_POST['last_name'] ?? ''); |
||||
$is_adult = isset($_POST['is_adult']) ? 1 : 0; |
||||
$tos = isset($_POST['tos']) ? 1 : 0; |
||||
$be_anon = isset($_POST['be_anon']) ? 1 : 0; |
||||
$send_newsletter = isset($_POST['send_newsletter']) ? 1 : 0; |
||||
|
||||
// validation |
||||
if (! self::isEmailValid($email)) { |
||||
$errors[] = "Invalid email"; |
||||
} |
||||
|
||||
if (self::isTempEmail($email)) { |
||||
$errors[] = "Please do not use Temp email addresses"; |
||||
} |
||||
|
||||
if (strlen($first_name) < 1 || strlen($first_name) > 33) { |
||||
$errors[] = "First name required (1–33 chars)"; |
||||
} |
||||
|
||||
if (!preg_match('/^[A-Z]$/', $last_initial)) { |
||||
$errors[] = "Last initial must be a single letter"; |
||||
} |
||||
|
||||
if ($tos !== 1) { |
||||
$errors[] = "You must accept Terms of Service"; |
||||
} |
||||
|
||||
$a['email'] = trim($_POST['email'] ?? ''); |
||||
$a['first_name'] = trim($_POST['first_name'] ?? ''); |
||||
$a['last_initial'] = strtoupper(trim($_POST['last_initial'] ?? '')); |
||||
$a['last_name'] = trim($_POST['last_name'] ?? ''); |
||||
$a['is_adult'] = isset($_POST['is_adult']) ? 1 : 0; |
||||
$a['tos'] = isset($_POST['tos']) ? 1 : 0; |
||||
$a['be_anon'] = isset($_POST['be_anon']) ? 1 : 0; |
||||
$a['send_newsletter'] = isset($_POST['send_newsletter']) ? 1 : 0; |
||||
|
||||
if (empty($errors)) { |
||||
$a['token'] = UuidV7::base32EncodedUuidV7(); |
||||
$a['ip'] = self::getIPBinary(); |
||||
|
||||
$pdo = Configure::get('db'); |
||||
$model = new RegPostSaveModel($pdo); |
||||
|
||||
$err = $model->SaveData($a); |
||||
if ($err['success'] === true) { |
||||
return ['success' => true]; |
||||
} |
||||
} |
||||
return $errors; |
||||
} |
||||
|
||||
private static function isTempEmail(string $email): bool |
||||
{ |
||||
$domain = substr(strrchr($email, "@"), 1); |
||||
$tempEmailDomains = [ |
||||
'mailinator.com', |
||||
'guerrillamail.com', |
||||
'guerrillamail.net', |
||||
'guerrillamail.org', |
||||
'guerrillamail.biz', |
||||
'10minutemail.com', |
||||
'10minutemail.net', |
||||
'10minutemail.org', |
||||
'throwawaymail.com', |
||||
'sharklasers.com', |
||||
'grr.la', |
||||
'pokemail.net', |
||||
'spam4.me', |
||||
'bccto.me', |
||||
'chacuo.net', |
||||
'mailnator.com', |
||||
'yopmail.com', |
||||
'yopmail.fr', |
||||
'yopmail.net', |
||||
'cool.fr.nf', |
||||
'jetable.com', |
||||
'jetable.net', |
||||
'jetable.org', |
||||
'temp-mail.org', |
||||
'temp-mail.net', |
||||
'temp-mail.com', |
||||
'tempmail.com', |
||||
'tempmail.net', |
||||
'tempmail.org', |
||||
'tempmailizer.com', |
||||
'fakeinbox.com', |
||||
'fake-mail.net', |
||||
'dispostable.com', |
||||
'spambox.us', |
||||
'spamgourmet.com', |
||||
'spamgourmet.net', |
||||
'spamgourmet.org', |
||||
'trashmail.com', |
||||
'trashmail.net', |
||||
'trashmail.org', |
||||
'wegwerfmail.de', |
||||
'wegwerfmail.net', |
||||
'wegwerfmail.org', |
||||
'mailcatch.com', |
||||
'mailmetrash.com', |
||||
'mintemail.com', |
||||
'mytrashmail.com', |
||||
'nospam.thanks', |
||||
'one-time.email', |
||||
'receivemail.com', |
||||
'safetymail.info', |
||||
'selfdestructingmail.com', |
||||
'sendspamhere.com', |
||||
'spamfree24.com', |
||||
'spamfree24.net', |
||||
'spamfree24.org', |
||||
'spamoff.de', |
||||
'spamobox.com', |
||||
'spamslicer.com', |
||||
'tempinbox.com', |
||||
'tempmail2.com', |
||||
'tempmaildemo.com', |
||||
'tempinbox.co.uk', |
||||
'tmpemails.com', |
||||
'tmpmail.net', |
||||
'tmpmail.org', |
||||
'tradermail.info', |
||||
'trash2009.com', |
||||
'trashymail.com', |
||||
'tyldd.com', |
||||
'uggsrock.com', |
||||
'wegwerfmail.com', |
||||
'wegwerfmail.info', |
||||
'wh4f.org', |
||||
'whyspam.me', |
||||
'willselfdestruct.com', |
||||
'winemaven.info', |
||||
'wronghead.com', |
||||
'wuzup.net', |
||||
'xagloo.com', |
||||
'xemaps.com', |
||||
'xents.com', |
||||
'xmaily.com', |
||||
'xoxy.net', |
||||
'yep.it', |
||||
'yogamaven.com', |
||||
'yopmail.com', |
||||
'yopmail.fr', |
||||
'yopmail.net', |
||||
'ypmail.webarnak.fr.eu.org', |
||||
'yuurok.com', |
||||
'zehnminutenmail.de', |
||||
'zippymail.info', |
||||
'zoaxe.com', |
||||
'zoemail.org', |
||||
'tempemail.net', |
||||
'mail-temp.com', |
||||
'tempalias.com', |
||||
'tempemail.co.za', |
||||
'tempinbox.co', |
||||
'tempmail.eu', |
||||
'tempmail.it', |
||||
'tempmail.pro', |
||||
'temp-mail.de', |
||||
'temp-mail.info', |
||||
'tempmailaddress.com', |
||||
'tempinbox.org', |
||||
'temp-mail.io', |
||||
'temp-mail.org', |
||||
'temp-mail.ru', |
||||
'tempmailer.com', |
||||
'tempomail.fr', |
||||
'temporarily.de', |
||||
'temporarioemail.com.br', |
||||
'temporary-email.com', |
||||
'temporaryemail.net', |
||||
'temporaryemail.us', |
||||
'temporaryforwarding.com', |
||||
'temporaryinbox.com', |
||||
'temporarymail.com', |
||||
'temporarymail.net', |
||||
'temporarymail.org', |
||||
'thankyou2010.com', |
||||
'thankyou2011.com', |
||||
'thisisnotmyrealemail.com', |
||||
'throwaway.email', |
||||
'throwawayemail.com', |
||||
'throwawayemailaddress.com', |
||||
'throwawaymail.com', |
||||
'throwawaymail.net', |
||||
'throwawaymail.org', |
||||
'tilien.com', |
||||
'tmail.com', |
||||
'tmailinator.com', |
||||
'tmailservices.com', |
||||
'tmmbt.net', |
||||
'tmpbox.net', |
||||
'tmpemails.com', |
||||
'tmpemails.net', |
||||
'tmpinbox.com', |
||||
'tmpinbox.net', |
||||
'tmpmail.com', |
||||
'tmpmail.net', |
||||
'tmpmail.org' |
||||
]; |
||||
return in_array(strtolower($domain), $tempEmailDomains); |
||||
} |
||||
|
||||
private static function isEmailValid(string $email): bool |
||||
{ |
||||
$parts = explode('@', $email); |
||||
$ok1 = (count($parts) === 2 && |
||||
strlen($parts[0]) <= 64 && |
||||
strlen($parts[1]) <= 200); |
||||
if ($ok1 === false) { |
||||
return false; |
||||
} |
||||
|
||||
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { |
||||
return false; |
||||
} |
||||
|
||||
$domainPart = $parts[1]; |
||||
// Validate domain has at least one dot |
||||
if (strpos($domainPart, '.') === false || str_contains($domainPart, 'localhost')) { |
||||
return false; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
// helper: get IP (IPv4/IPv6 binary) |
||||
private static function getIPBinary() |
||||
{ |
||||
if (empty($_SERVER['REMOTE_ADDR'])) { |
||||
return null; |
||||
} |
||||
|
||||
$ip = inet_pton($_SERVER['REMOTE_ADDR']); |
||||
|
||||
// inet_pton returns false on invalid input |
||||
if ($ip === false) { |
||||
return null; |
||||
} |
||||
|
||||
$len = strlen($ip); |
||||
|
||||
// Only allow valid sizes (IPv4 = 4, IPv6 = 16) |
||||
if ($len !== 4 && $len !== 16) { |
||||
return null; |
||||
} |
||||
|
||||
return $ip; |
||||
} |
||||
} |
||||
@ -0,0 +1,82 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace Project\Classes\Models; |
||||
|
||||
/** |
||||
* Description of HomeFetchModel |
||||
* |
||||
* @author Robert Strutts |
||||
*/ |
||||
class HomeFetchModel |
||||
{ |
||||
|
||||
public function __construct(private \PDO $pdo) |
||||
{ |
||||
} |
||||
|
||||
public function GetGoals(array $a) |
||||
{ |
||||
// SEARCH + TAG FILTER |
||||
$where = []; |
||||
$params = []; |
||||
|
||||
if ($a['search'] !== false) { |
||||
$where[] = "(g.title LIKE ? OR g.description LIKE ?)"; |
||||
$params[] = '%' . $a['search'] . '%'; |
||||
$params[] = '%' . $a['search'] . '%'; |
||||
} |
||||
|
||||
if ($a['tag'] !== false) { |
||||
$where[] = "t.name = ?"; |
||||
$params[] = $a['tag']; |
||||
} |
||||
|
||||
$sql = "SELECT DISTINCT g.id,g.title,g.uuid,g.created_at FROM goals g |
||||
LEFT JOIN goal_tags gt ON g.id=gt.goal_id |
||||
LEFT JOIN tags t ON gt.tag_id=t.id"; |
||||
|
||||
if ($where) { |
||||
$sql .= " WHERE " . implode(' AND ', $where) . " AND approved=1"; |
||||
} |
||||
$sql .= " ORDER BY g.created_at DESC"; |
||||
|
||||
$stmt = $this->pdo->prepare($sql); |
||||
$stmt->execute($params); |
||||
return $stmt->fetchAll(\PDO::FETCH_ASSOC); |
||||
} |
||||
|
||||
public function GetTags(array $g) |
||||
{ |
||||
$pdo = \IOcornerstone\Framework\Configure::get('db'); |
||||
|
||||
$tags=$pdo->prepare("SELECT name FROM tags t JOIN goal_tags gt ON t.id=gt.tag_id WHERE gt.goal_id=?"); |
||||
return $tags->execute([$g['id']]); |
||||
} |
||||
|
||||
public function GetGoal(array $a) |
||||
{ |
||||
$stmt= $this->pdo->prepare("SELECT id,title,description FROM goals WHERE uuid=? AND approved=1"); |
||||
$stmt->execute([$a['MyUUID']]); |
||||
return $stmt->fetch(\PDO::FETCH_ASSOC); |
||||
} |
||||
|
||||
public function GetVotes(array $a) |
||||
{ |
||||
$stmt= $this->pdo->prepare("SELECT id,content,votes FROM advice WHERE goal_id=? AND approved=1 ORDER BY votes DESC"); |
||||
return $stmt->execute([$a['id']]); |
||||
} |
||||
|
||||
public function GetComments(array $a) |
||||
{ |
||||
$comments=$this->pdo->prepare("SELECT content FROM advice_comments WHERE advice_id=? AND approved=1"); |
||||
return $comments->execute([$a['id']]); |
||||
} |
||||
} |
||||
@ -0,0 +1,91 @@ |
||||
<?php |
||||
|
||||
declare(strict_types = 1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
namespace Project\Classes\Models; |
||||
|
||||
/** |
||||
* Description of RegPostSaveModel |
||||
* |
||||
* @author Robert Strutts |
||||
*/ |
||||
class RegPostSaveModel |
||||
{ |
||||
|
||||
public function __construct(private \PDO $pdo) |
||||
{ |
||||
} |
||||
|
||||
public function SaveData(array $a): array |
||||
{ |
||||
return ['success'=>true]; |
||||
|
||||
$errors = []; |
||||
try { |
||||
$stmt = $this->pdo->prepare(" |
||||
INSERT INTO emails ( |
||||
email, |
||||
email_approved_token, |
||||
first_name, |
||||
last_initial, |
||||
last_name, |
||||
is_adult, |
||||
tos, |
||||
be_anon, |
||||
ip, |
||||
send_newsletter |
||||
) VALUES ( |
||||
:email, |
||||
:token, |
||||
:first_name, |
||||
:last_initial, |
||||
:last_name, |
||||
:is_adult, |
||||
:tos, |
||||
:be_anon, |
||||
:ip, |
||||
:send_newsletter |
||||
) |
||||
"); |
||||
|
||||
$success = $stmt->execute([ |
||||
':email' => $a['email'], |
||||
':token' => $a['token'], |
||||
':first_name' => $a['first_name'], |
||||
':last_initial' => $a['last_initial'], |
||||
':last_name' => $a['last_name'] ?: null, |
||||
':is_adult' => $a['is_adult'], |
||||
':tos' => $a['tos'], |
||||
':be_anon' => $a['be_anon'], |
||||
':ip' => $a['ip'], |
||||
':send_newsletter' => $a['send_newsletter'] |
||||
]); |
||||
|
||||
if ($success) { |
||||
$hash = password_hash($pwd, PASSWORD_ARGON2ID); |
||||
|
||||
// Add user to user table |
||||
} |
||||
|
||||
|
||||
// TODO: send email with approval token link |
||||
// example: https://yoursite.com/verify.php?token=$token |
||||
|
||||
} catch (\PDOException $e) { |
||||
$success = false; |
||||
if ($e->getCode() == 23000) { |
||||
$errors['code'] = "Email already registered"; |
||||
} else { |
||||
$errors['code'] = "Database error"; |
||||
} |
||||
} |
||||
|
||||
$errors['success'] = $success; |
||||
return $errors; |
||||
} |
||||
} |
||||
@ -0,0 +1,13 @@ |
||||
#!/usr/bin/env php |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
define("BaseDir", dirname(__DIR__, 3)); // Project DIR |
||||
const IO_CORNERSTONE_PROJECT = BaseDir . DIRECTORY_SEPARATOR . "protected". DIRECTORY_SEPARATOR. "src" . DIRECTORY_SEPARATOR; |
||||
|
||||
const CountFiles = true; // Should files be added to an array for count? |
||||
|
||||
const IO_CORNERSTONE_FRAMEWORK = BaseDir . DIRECTORY_SEPARATOR . "protected" . DIRECTORY_SEPARATOR . "src" . DIRECTORY_SEPARATOR . "IOcornerstone" . DIRECTORY_SEPARATOR; |
||||
|
||||
require_once IO_CORNERSTONE_FRAMEWORK . "Bootstrap.php"; |
||||
@ -0,0 +1,26 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
use IOcornerstone\Framework\Registry as Reg; |
||||
|
||||
Reg::get('di')->register('dotenv', function() { |
||||
if (! Reg::get('loader')->isLoaded('Dotenv')) { |
||||
|
||||
if (! is_dir(IO_CORNERSTONE_PROJECT . "/vendor/vlucas/phpdotenv/src")) { |
||||
die("Please Composer install DotEnv!!"); |
||||
} |
||||
|
||||
Reg::get('loader')->addNamespace("Dotenv", IO_CORNERSTONE_PROJECT . "/vendor/vlucas/phpdotenv/src"); |
||||
|
||||
Reg::get('loader')->addNamespace("PhpOption", IO_CORNERSTONE_PROJECT . "/vendor/phpoption/phpoption/src/PhpOption"); |
||||
|
||||
Reg::get('loader')->addNamespace("GrahamCampbell\\ResultType", IO_CORNERSTONE_PROJECT ."/vendor/graham-campbell/result-type/src"); |
||||
} |
||||
}); |
||||
@ -0,0 +1,17 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
use IOcornerstone\Framework\Registry as Reg; |
||||
|
||||
Reg::get('di')->get('dotenv'); |
||||
|
||||
$dotenv = \Dotenv\Dotenv::createImmutable(IO_CORNERSTONE_PROJECT); |
||||
$dotenv->load(); |
||||
$dotenv->required(['DB_HOST', 'DB_USER', 'DB_PASSWORD'])->notEmpty(); |
||||
@ -0,0 +1,11 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
unset($_REQUEST); // Request is dangerious as order of Vars is not Known |
||||
@ -0,0 +1,23 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
use IOcornerstone\Framework\Configure as Config; |
||||
use IOcornerstone\Framework\Common; |
||||
|
||||
Config::set('sessions', [ |
||||
'type' => 'cookies', // Session Type: php, files, redis, or cookies |
||||
'cookie_name' => 'prj', // If cookies are used name them... |
||||
'session_variable' => 'ses_app_', // set session variable name for project |
||||
'session_name' => 'main_SESS', // More secure then PHPSESSID |
||||
'session_table' => false, // DB PHP Session Table name, false = USE FILES |
||||
'session_key' => $_ENV['SESSION_KEY'], |
||||
]); |
||||
|
||||
Common::wipe($_ENV['SESSION_KEY']); |
||||
@ -0,0 +1,11 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
date_default_timezone_set('America/Detroit'); |
||||
@ -0,0 +1,18 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
// Setup php for working with Unicode data, if possible |
||||
if (extension_loaded('mbstring')) { |
||||
mb_internal_encoding('UTF-8'); |
||||
mb_http_output('UTF-8'); |
||||
mb_language('uni'); |
||||
mb_regex_encoding('UTF-8'); |
||||
setlocale(LC_ALL, "en_US.UTF-8"); |
||||
} |
||||
@ -0,0 +1,13 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
\IOcornerstone\Framework\Configure::set('viewMode', [ |
||||
'defaultPaths' => ['Common', 'Default'] |
||||
]); |
||||
@ -0,0 +1,91 @@ |
||||
<?php |
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace Project\Controllers\App; |
||||
|
||||
use Psr\Http\Message\ResponseInterface; |
||||
use Project\Classes\{ |
||||
BaseController, |
||||
Logic\HomeSearch, |
||||
Logic\IndexAuthContainer, |
||||
Models\HomeFetchModel |
||||
}; |
||||
use IOcornerstone\Framework\{ |
||||
BbCodeParser, |
||||
Configure, |
||||
Security |
||||
}; |
||||
|
||||
class HomeController extends BaseController |
||||
{ |
||||
|
||||
public function init() |
||||
{ |
||||
// INIT DB CONFIGS and SERVICES!!! |
||||
\IOcornerstone\InitMainDB::doInit(); |
||||
} |
||||
|
||||
public function Index(): ResponseInterface |
||||
{ |
||||
Security::initSessions(); |
||||
|
||||
$pdo = Configure::get('db'); |
||||
$model = new HomeFetchModel($pdo); |
||||
|
||||
$this->view->setView("App/Home/Index"); |
||||
$this->view->set("Model", $model); |
||||
|
||||
$inputs = HomeSearch::Tags(); |
||||
$goals = $model->GetGoals($inputs); |
||||
$this->view->set("Goals", $goals); |
||||
|
||||
$auth = IndexAuthContainer::Logins(); |
||||
$this->view->set("Auth", $auth); |
||||
|
||||
$uid = HomeSearch::MyUUID(); |
||||
$this->view->set("Uid", $uid); |
||||
|
||||
$bb = new BbCodeParser(); |
||||
$this->view->set("Bb", $bb); |
||||
|
||||
$myView = $this->view->fetch($this); |
||||
|
||||
return $this->returnResponse($myView); |
||||
} |
||||
|
||||
public function Register(): ResponseInterface |
||||
{ |
||||
$this->view->setView("App/Reg/Form"); |
||||
$this->view->setView("App/Home/TOS"); |
||||
$myView = $this->view->fetch($this); |
||||
$myView .= "</body>" . PHP_EOL . "</html>"; |
||||
return $this->returnResponse($myView); |
||||
} |
||||
|
||||
public function Login(): ResponseInterface |
||||
{ |
||||
Security::initSessions(); |
||||
|
||||
return $this->returnResponse(""); |
||||
} |
||||
|
||||
public function Logout(): ResponseInterface |
||||
{ |
||||
Security::initSessions(); |
||||
|
||||
$_SESSION = []; |
||||
unset($_SESSION); |
||||
|
||||
session_destroy(); |
||||
|
||||
$html = '<html><head><title>Logged Out</title></head><body><h1>Logged Out!</h1></body></html>'; |
||||
return $this->returnResponse($html); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,49 @@ |
||||
<?php |
||||
|
||||
declare(strict_types = 1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
namespace Project\Controllers\Data; |
||||
|
||||
use Psr\Http\Message\ResponseInterface; |
||||
use Project\Classes\BaseController; |
||||
use Project\Classes\Logic; |
||||
|
||||
/** |
||||
* Description of RegPostController |
||||
* Takes and handles User Registration Post Data |
||||
* |
||||
* @author Robert Strutts |
||||
*/ |
||||
class RegPostController extends BaseController |
||||
{ |
||||
public function init() |
||||
{ |
||||
// INIT DB CONFIGS and SERVICES!!! |
||||
\IOcornerstone\InitMainDB::doInit(); |
||||
} |
||||
|
||||
public function Save(): ResponseInterface |
||||
{ |
||||
|
||||
// Read raw JSON body |
||||
$json = file_get_contents("php://input"); |
||||
// Convert JSON into PHP array |
||||
$arrayOfPost = json_decode($json, true); |
||||
$_POST = array_merge($arrayOfPost, $_POST); |
||||
|
||||
$err = Logic\RegPostLogic::DoSave(); |
||||
$success = $err['success'] ?? false; |
||||
if ($success === true) { |
||||
return $this->returnResponse(["success"=>true]); |
||||
} |
||||
if (count($err)) { |
||||
return $this->returnResponse(['errors'=>$err], 501); |
||||
} |
||||
return $this->returnResponse(["success" => false, "message"=>"Bad data"], 502); |
||||
} |
||||
} |
||||
@ -0,0 +1,27 @@ |
||||
<?php |
||||
|
||||
declare(strict_types = 1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2025, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace Project\Providers; |
||||
|
||||
use IOcornerstone\Framework\Http\Contract\RouterInterface; |
||||
/* |
||||
use Psr\Http\Message\ServerRequestInterface; |
||||
use Psr\Http\Server\RequestHandlerInterface; |
||||
use IOcornerstone\Framework\Http\HttpFactory; |
||||
use Project\Controllers as CTRL; |
||||
*/ |
||||
|
||||
final class RouteServiceProvider |
||||
{ |
||||
public function register(RouterInterface $router): void |
||||
{ |
||||
|
||||
} |
||||
} |
||||
@ -0,0 +1,20 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace IOcornerstone; |
||||
|
||||
use IOcornerstone\Framework\Registry as Reg; |
||||
use IOcornerstone\Framework\Http\App\App; |
||||
use Psr\Http\Message\ResponseInterface; |
||||
|
||||
Reg::get('container')->set(App::class, function($c): App |
||||
{ |
||||
return new App(); |
||||
}); |
||||
@ -0,0 +1,22 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2025, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace IOcornerstone; |
||||
|
||||
use \IOcornerstone\Framework\CORSHandler; |
||||
|
||||
$corsConfig = [ |
||||
'exact' => [ |
||||
'http://localhost:8080', |
||||
'http://localhost', |
||||
], |
||||
]; |
||||
$cors = new CORSHandler($corsConfig); |
||||
$cors->handle(); |
||||
$cors->doPreflight(); |
||||
@ -0,0 +1,43 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace IOcornerstone; |
||||
|
||||
use IOcornerstone\Framework\Configure; |
||||
use IOcornerstone\Framework\Common; |
||||
|
||||
class Database |
||||
{ |
||||
|
||||
public function __construct( |
||||
private string $host, |
||||
private string $name, |
||||
private string $user, |
||||
#[\SensitiveParameter] private string $password) |
||||
{ |
||||
} |
||||
|
||||
public function getConnection(): void |
||||
{ |
||||
try { |
||||
$dsn = "mysql:host={$this->host};dbname={$this->name}"; |
||||
|
||||
$pdo = new \PDO($dsn, $this->user, $this->password, [\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION]); |
||||
} catch (\PDOException $e) { |
||||
die('DB Connection failed'); |
||||
} |
||||
|
||||
Configure::set('db', $pdo); |
||||
|
||||
Common::wipe($_ENV['DB_PASSWORD']); |
||||
Common::wipe($this->password); |
||||
unset($pdo); |
||||
} |
||||
} |
||||
@ -0,0 +1,14 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2025, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace IOcornerstone; |
||||
|
||||
use \IOcornerstone\Framework\Configure; |
||||
|
||||
Configure::setKey('security', 'show_dumps', true); |
||||
@ -0,0 +1,39 @@ |
||||
<?php |
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2025, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
namespace IOcornerstone; |
||||
|
||||
use IOcornerstone\Framework\Registry as Reg; |
||||
use IOcornerstone\Framework\Middleware\RequestLoggerMiddleware; |
||||
use IOcornerstone\Framework\Middleware\ErrorMiddleware; |
||||
use IOcornerstone\Framework\Logger; |
||||
use Psr\Log\LoggerInterface; |
||||
|
||||
/* Logger binding */ |
||||
Reg::get('container')->set(LoggerInterface::class, function () { |
||||
return new Logger( |
||||
filename: getenv('LOG_CHANNEL') ?: 'system', |
||||
maxCount: (int)(getenv('LOG_MAX_LINES') ?: 1000), |
||||
minLevel: getenv('LOG_LEVEL') ?: null |
||||
); |
||||
}); |
||||
|
||||
/* Middleware binding */ |
||||
Reg::get('container')->set(RequestLoggerMiddleware::class, function ($c) { |
||||
return new RequestLoggerMiddleware( |
||||
$c->get(LoggerInterface::class) |
||||
); |
||||
}); |
||||
|
||||
/* Error middleware config */ |
||||
Reg::get('container')->set(ErrorMiddleware::class, fn ($c) => |
||||
new ErrorMiddleware( |
||||
$c->get(LoggerInterface::class), |
||||
getenv('APP_ENV') !== 'production' |
||||
) |
||||
); |
||||
@ -0,0 +1,23 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace IOcornerstone; |
||||
|
||||
class Repository |
||||
{ |
||||
public function __construct(private Database $database) |
||||
{ |
||||
} |
||||
|
||||
public function initDB(): void |
||||
{ |
||||
$this->database->getConnection(); |
||||
} |
||||
} |
||||
@ -0,0 +1,32 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
// A more secure class is: \CodeHydrater\services\sodium_storage |
||||
|
||||
use IOcornerstone\Framework\Registry as Reg; |
||||
|
||||
Reg::get('di')->register('session_encryption', function($args) { |
||||
try { |
||||
if (!\IOcornerstone\Framework\Configure::has('sessions', 'session_key')) { |
||||
|
||||
$testing = new \IOcornerstone\Framework\Services\Encryption(); |
||||
echo "Here is a Key to use: " . $testing->generate_valid_key(); |
||||
die("Please assign the config for sessions, session_key!"); |
||||
} |
||||
|
||||
$enc = new \IOcornerstone\Framework\Services\Encryption( |
||||
\IOcornerstone\Framework\Configure::get('sessions', 'session_key') |
||||
); |
||||
$enc->changeSecurityLevel("lighting"); // Quickest but not secure... |
||||
return $enc; |
||||
} catch (\Exception $e) { |
||||
|
||||
} |
||||
}); |
||||
@ -0,0 +1,22 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
use IOcornerstone\Framework\Registry as Reg; |
||||
use IOcornerstone\Framework\Configure as Config; |
||||
|
||||
Reg::get('di')->register('sessions', function() { |
||||
$running = Reg::get('sessions_started') ?? false; |
||||
if ($running === false) { |
||||
$options = Config::get('sessions') ?? []; |
||||
\IOcornerstone\Framework\SessionManagement::start($options); |
||||
|
||||
Reg::set('sessions_started', true); |
||||
} |
||||
}); |
||||
@ -0,0 +1,38 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
namespace IOcornerstone; |
||||
|
||||
use IOcornerstone\Framework\Registry as Reg; |
||||
use IOcornerstone\Database as DB; |
||||
use IOcornerstone\Repository as Repo; |
||||
|
||||
class InitMainDB |
||||
{ |
||||
|
||||
public static function doInit(): void |
||||
{ |
||||
$container = Reg::get('di'); |
||||
$container->set(DB::class, function () { |
||||
return new DB(host: $_ENV['DB_HOST'], |
||||
name: $_ENV['DB_NAME'], |
||||
user: $_ENV['DB_USER'], |
||||
password: $_ENV['DB_PASSWORD'], |
||||
); |
||||
}); |
||||
|
||||
$container->set(REP::class, function () { |
||||
$conn = Reg::get('di')->get(DB::class); |
||||
return new Repo($conn); |
||||
}); |
||||
|
||||
$container->get(Repo::class)->initDB(); |
||||
} |
||||
} |
||||
@ -0,0 +1,138 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
function end_of_the_line(): void |
||||
{ |
||||
echo "</div>" . PHP_EOL . "</body>" . PHP_EOL . "</html>"; |
||||
exit; |
||||
} |
||||
|
||||
?> |
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<title>StickingToGoals.com</title> |
||||
<style> |
||||
body {font-family:Arial;background:#f4f6f9;margin:0} |
||||
.container {max-width:900px;margin:30px auto;background:#fff;padding:20px;border-radius:10px;box-shadow:0 4px 12px rgba(0,0,0,.1)} |
||||
input,textarea{width:100%;padding:10px;margin:8px 0;border-radius:6px;border:1px solid #ccc} |
||||
button{background:#4CAF50;color:#fff;border:none;padding:10px;border-radius:6px;cursor:pointer} |
||||
button:hover{background:#45a049} |
||||
.goal-item{padding:10px;border-bottom:1px solid #eee} |
||||
.advice-box{border:1px solid #ddd;border-radius:8px;padding:15px;margin-top:15px;background:#fafafa} |
||||
.vote{background:#eee;padding:5px 10px;border-radius:6px;display:inline-block} |
||||
.comment{margin-left:20px;border-left:2px solid #ccc;padding-left:8px;margin-top:5px} |
||||
.tag{display:inline-block;background:#3498db;color:#fff;padding:3px 8px;border-radius:5px;margin:2px;font-size:12px;cursor:pointer} |
||||
.auth-container { |
||||
display: flex; |
||||
gap: 20px; |
||||
} |
||||
|
||||
.btn { |
||||
padding: 12px 24px; |
||||
font-size: 16px; |
||||
border: none; |
||||
border-radius: 6px; |
||||
cursor: pointer; |
||||
transition: all 0.3s ease; |
||||
text-decoration: none; |
||||
color: white; |
||||
} |
||||
|
||||
.login-btn { |
||||
background: #3498db; |
||||
} |
||||
|
||||
.login-btn:hover { |
||||
background: #2980b9; |
||||
transform: translateY(-2px); |
||||
} |
||||
|
||||
.register-btn { |
||||
background: #2ecc71; |
||||
} |
||||
|
||||
.register-btn:hover { |
||||
background: #27ae60; |
||||
transform: translateY(-2px); |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
|
||||
<script> |
||||
function filterTag(tag){ |
||||
window.location='?tag='+encodeURIComponent(tag); |
||||
} |
||||
</script> |
||||
|
||||
<?= $Auth ?> |
||||
|
||||
<div class="container"> |
||||
<h1>🎯 StickingToGoals.com</h1> |
||||
<form method="GET"> |
||||
<input name="search" placeholder="Search"> |
||||
<button>Search</button> |
||||
</form> |
||||
|
||||
<h2>All Goals</h2> |
||||
<?php foreach($Goals as $g): ?> |
||||
<div class="goal-item"> |
||||
<a href="?g=<?= $g['uuid'] ?>"><b><?= htmlspecialchars($g['title']) ?></b></a>
|
||||
|
||||
<?php |
||||
$Tags = $Model->GetTags($g); |
||||
if ($Tags !== true && $Tags !== false) { |
||||
foreach($Tags as $t): ?> |
||||
<span class="tag" onclick="filterTag('<?= $t['name'] ?>')"><?= $t['name'] ?></span>
|
||||
<?php endforeach;
|
||||
} |
||||
?> |
||||
|
||||
</div> |
||||
<?php endforeach; ?> |
||||
|
||||
<?php |
||||
if ($Uid['MyUUID'] === false) { end_of_the_line(); } |
||||
$goal = $Model->GetGoal($Uid); |
||||
if ($goal === false) { end_of_the_line(); } |
||||
//<h3>GOAL ID = $myuuid |
||||
?> |
||||
|
||||
<hr> |
||||
<h2><?= htmlspecialchars($goal['title']) ?></h2>
|
||||
<p><?= $Bb->parse(nl2br(htmlspecialchars($goal['description']))) ?></p>
|
||||
|
||||
<?php |
||||
$stmt = $Model->GetVotes($goal); |
||||
foreach($stmt as $a): ?> |
||||
|
||||
<div class="advice-box"> |
||||
<p><?= $Bb->parse(htmlspecialchars($a['content'])) ?></p>
|
||||
|
||||
<div class="vote">👍 <span><?= $a['votes'] ?></span></div>
|
||||
|
||||
<h4>Comments</h4> |
||||
|
||||
<div id="comments-<?= $a['id'] ?>">
|
||||
<?php |
||||
$comments = $Model->GetComments($a); |
||||
foreach($comments as $c): ?> |
||||
<div class="comment"><?= $Bb->parse(htmlspecialchars($c['content'])) ?></div>
|
||||
<?php endforeach; ?> |
||||
</div> |
||||
|
||||
</div> |
||||
|
||||
<?php endforeach; ?> |
||||
|
||||
</div> |
||||
@ -0,0 +1,102 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
|
||||
?> |
||||
<header> |
||||
<h1>StickingToGoals.com</h1> |
||||
<h2>Terms of Service</h2> |
||||
<p><strong>Last Updated:</strong> April 16, 2026</p> |
||||
</header> |
||||
<blockquote> |
||||
<main> |
||||
<!-- 1. Acceptance of Terms --> |
||||
<section> |
||||
<h3>1. Acceptance of Terms</h3> |
||||
<p>By accessing or using StickingToGoals.com (the “Site”), you agree to be bound by these Terms of Service. If you do not agree, do not use the Site.</p> |
||||
</section> |
||||
|
||||
<!-- 2. Eligibility – Applicable Child Protection Laws (updated from COPA) --> |
||||
<section> |
||||
<h3>2. Eligibility – Compliance with Applicable Child Protection Laws</h3> |
||||
<p>To comply with applicable child protection laws (including but not limited to the Children's Online Privacy Protection Act (COPPA) and analogous regulations), you must be <strong>at least 18 years old</strong> (an adult) to use this Site. By using StickingToGoals.com, you represent and warrant that you are an adult.</p> |
||||
</section> |
||||
|
||||
<!-- 3. Ephemeral Nature & No Uptime Guarantee --> |
||||
<section> |
||||
<h3>3. Ephemeral Nature & No Uptime Guarantee</h3> |
||||
<ul> |
||||
<li><strong>All information on this Site is ephemeral</strong> – it may disappear, be deleted, or become inaccessible at any time without notice.</li> |
||||
<li>There is <strong>no guarantee of service uptime, availability, or data persistence</strong>. The Site may be offline, modified, interrupted, or discontinued at any time, without liability.</li> |
||||
</ul> |
||||
</section> |
||||
|
||||
<!-- 4. Content Moderation & Editing --> |
||||
<section> |
||||
<h3>4. Content Moderation & Editing</h3> |
||||
<p>Information will be added or modified as deemed appropriate for usage on the Site. Without limitation, StickingToGoals.com reserves the right to change:</p> |
||||
<ul> |
||||
<li>Spelling</li> |
||||
<li>Sentence structure</li> |
||||
<li>Word choice</li> |
||||
<li>Entire paragraphs</li> |
||||
<li>Language (including censorship of words, phrases, or entire sections)</li> |
||||
</ul> |
||||
<p>…to accommodate clarity of thought toward goals. No promise is made that original user meaning, tone, or expression will be preserved.</p> |
||||
</section> |
||||
|
||||
<!-- 5. Cookies, Ads, and Tracking --> |
||||
<section> |
||||
<h3>5. Cookies, Ads, and Tracking</h3> |
||||
<p>StickingToGoals.com reserves the right to use <strong>cookies</strong>, <strong>advertising technologies</strong> (including third-party ads), web beacons, local storage, and other tracking methods that may collect data about your visit, device, IP address, browsing behavior, and interactions. By using the Site, you expressly consent to such tracking and the placement of cookies on your device.</p> |
||||
</section> |
||||
|
||||
<!-- 6. Public Domain – Waiver of Rights --> |
||||
<section> |
||||
<h3>6. Public Domain – Waiver of Rights</h3> |
||||
<p><strong>All legal rights (including copyright, database rights, and any other intellectual property rights) to any content submitted, displayed, or generated on StickingToGoals.com are waived</strong> and placed irrevocably into the <strong>public domain</strong>. You agree that no content on the Site is owned by you, the Site operator, or any third party. Anyone may use, reproduce, distribute, modify, or perform the content without permission, attribution, or notice.</p> |
||||
</section> |
||||
|
||||
<!-- 7. Anonymous Posting --> |
||||
<section> |
||||
<h3>7. Anonymous Posting</h3> |
||||
<p>Content posted on StickingToGoals.com will be attributed <strong>anonymously</strong> using:</p> |
||||
<ul> |
||||
<li>User’s first name</li> |
||||
<li>First initial of user’s last name</li> |
||||
</ul> |
||||
<p>No full names, email addresses, usernames (unless identical to the first-name + initial pattern), or other personally identifiable information will be displayed in association with user contributions. The Site may retain additional data for operational purposes, but public attribution is limited as described.</p> |
||||
</section> |
||||
|
||||
<!-- 8. Limitation of Liability --> |
||||
<section> |
||||
<h3>8. Limitation of Liability</h3> |
||||
<p>To the fullest extent permitted by applicable law, StickingToGoals.com and its operators, owners, affiliates, and contributors are not liable for any loss of data, uptime failures, content changes, ephemeral nature, tracking activities, moderation decisions, public domain waiver consequences, or any other damages arising from use of the Site. The Site is provided “as is” and “as available,” with all faults.</p> |
||||
</section> |
||||
|
||||
<!-- 9. Changes to These Terms --> |
||||
<section> |
||||
<h3>9. Changes to These Terms</h3> |
||||
<p>We may update these Terms of Service at any time without prior notice. The “Last Updated” date at the top of this page will reflect the latest revision. Your continued use of the Site after any changes constitutes acceptance of the revised Terms.</p> |
||||
</section> |
||||
|
||||
<!-- 10. Contact / No Contact (optional omission per earlier example, but kept generic) --> |
||||
<section> |
||||
<h3>10. Contact Information</h3> |
||||
<p>For questions regarding these Terms, you may reach out via the Site’s internal messaging (if available). However, due to the ephemeral nature, response is not guaranteed. No formal contact method is required for operation.</p> |
||||
</section> |
||||
|
||||
<!-- final acknowledgment note --> |
||||
<hr> |
||||
<footer> |
||||
<p>By using StickingToGoals.com, you acknowledge that you have read, understood, and agreed to all of the above terms, including the ephemeral nature, public domain waiver, adult eligibility requirement, and tracking practices.</p> |
||||
<p><em>StickingToGoals.com — clarity of thought toward goals.</em></p> |
||||
</footer> |
||||
</main> |
||||
</blockquote> |
||||
@ -0,0 +1,126 @@ |
||||
<?php |
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright (c) 2026, Robert Strutts |
||||
* @license MIT |
||||
*/ |
||||
?> |
||||
|
||||
<!DOCTYPE html> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="UTF-8"> |
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<title>Register</title> |
||||
<style> |
||||
body { |
||||
font-family: Arial; |
||||
background:#f5f5f5; |
||||
} |
||||
.container { |
||||
width: 230px; |
||||
margin: 50px auto; |
||||
padding: 20px; |
||||
background: white; |
||||
border-radius: 8px; |
||||
} |
||||
input, button { |
||||
margin: 8px 0; |
||||
padding: 10px; |
||||
} |
||||
.hidden { |
||||
display:none; |
||||
} |
||||
.error { |
||||
color: red; |
||||
} |
||||
.mysuccess { |
||||
color: green; |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
|
||||
<div class="container"> |
||||
<h2>Register</h2> |
||||
|
||||
<div id="success" class="hidden mysuccess"> |
||||
<p>Registration successful! Check your email to verify.</p> |
||||
<p>This is not automated, so it may take a while. If it'd been a few business days, email share@StickingToGoals.com to let us know you did not get a registration email.</p> |
||||
</div> |
||||
|
||||
<p class="error" id="errors"></p> |
||||
|
||||
<form id="myForm"> |
||||
<input type="email" id="email" name="email" placeholder="Email" required size="25" maxlength="250"><br> |
||||
|
||||
<input type="text" id="first_name" name="first_name" placeholder="First Name" required maxlength="32"><br> |
||||
|
||||
<input type="text" id="last_initial" name="last_initial" placeholder="Last Initial" maxlength="1" required><br> |
||||
|
||||
<input type="text" id="last_name" name="last_name" placeholder="Last Name (optional)" maxlength="60"><br> |
||||
<table> |
||||
<tr> |
||||
<td><input type="checkbox" id="adult" name="is_adult" required></td> |
||||
<th align="left"><label for="adult">I am 18+ years old</label></th> |
||||
</tr><tr> |
||||
<td><input type="checkbox" id="anon" name="be_anon"></td> |
||||
<th align="left"><label for="anon">Stay anonymous</label></th> |
||||
</tr><tr> |
||||
<td><input type="checkbox" id="sub" name="send_newsletter"></td> |
||||
<th align="left"><label for="sub">Subscribe to newsletter</label></th> |
||||
</tr><tr> |
||||
<td><input type="checkbox" id="tos" name="tos" required></td> |
||||
<th align="left"><label for="tos">Accept Terms of Service</label></th> |
||||
</tr> |
||||
</table> |
||||
<button type="submit" id="reg">Register</button> |
||||
</form> |
||||
</div> |
||||
<script> |
||||
document.getElementById("myForm").addEventListener('submit', async function (e) { |
||||
e.preventDefault(); |
||||
|
||||
const formData = new FormData(e.target); |
||||
|
||||
/* Log all form data |
||||
for (let [key, value] of formData.entries()) { |
||||
console.log(key + ': ' + value); |
||||
} |
||||
*/ |
||||
|
||||
const formObject = Object.fromEntries(formData.entries()); |
||||
// console.log('Form object:', formObject); |
||||
|
||||
try { |
||||
const response = await fetch('/Data/RegPost/Save.html', { |
||||
method: 'POST', |
||||
headers: {"Content-Type": "application/json"}, |
||||
body: JSON.stringify(formObject) |
||||
}); |
||||
|
||||
const result = await response.json(); |
||||
|
||||
// Multiple ways to check success |
||||
if (response.status === 200 && result.success === true) { |
||||
console.log('Success:', result); |
||||
document.getElementById("success").classList.remove("hidden"); |
||||
document.getElementById("errors").textContent = ""; |
||||
document.getElementById("reg").disabled = true; |
||||
|
||||
//} else if (result.success) { |
||||
// console.log('Success:', result); |
||||
// } else if (result.error === false) { |
||||
// console.log('Success:', result); |
||||
} else { |
||||
document.getElementById("errors").textContent = result.errors; |
||||
console.error('Failed:', result); |
||||
} |
||||
} catch (error) { |
||||
document.getElementById("errors").textContent = error; |
||||
console.error('Error:', error); |
||||
} |
||||
}); |
||||
</script> |
||||
@ -0,0 +1,52 @@ |
||||
<?php |
||||
|
||||
declare(strict_types=1); |
||||
|
||||
/** |
||||
* @author Robert Strutts |
||||
* @copyright Copyright (c) 2022, Robert Strutts. |
||||
* @license MIT |
||||
*/ |
||||
|
||||
$protocol = "HTTP/1.0"; |
||||
if ( "HTTP/1.1" == $_SERVER["SERVER_PROTOCOL"] ) { |
||||
$protocol = "HTTP/1.1"; |
||||
} |
||||
|
||||
header( "{$protocol} 404 Not Found", true, 404 ); |
||||
header('Content-type: text/html; charset=utf-8'); |
||||
?> |
||||
<html lang="en"> |
||||
<head> |
||||
<meta charset="utf-8"> |
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
||||
<meta name="language" content="english"> |
||||
<meta name="robots" content="no-follow"> |
||||
<link rel="shortcut icon" href="/assets/favicon/favicon.ico"> |
||||
<title>404 Page not found!</title> |
||||
<style> |
||||
@media only screen and (max-width: 600px) { |
||||
#nopage { |
||||
height: 150px; |
||||
width: 300px; |
||||
} |
||||
} |
||||
@media only screen and (min-width: 600px) { |
||||
#nopage { |
||||
height: 500px; |
||||
width: 1500px; |
||||
} |
||||
} |
||||
</style> |
||||
</head> |
||||
<body> |
||||
<div id="wrap"> |
||||
<img src="/assets/images/404page.jpg" alt="Page not found." id="nopage"/> |
||||
<header><h1>404 Page not found!<h1></header> |
||||
<h3>Our apologies for the temporary inconvenience.</h3> |
||||
</div> |
||||
</body> |
||||
</html> |
||||
<?php |
||||
exit; |
||||
@ -0,0 +1,17 @@ |
||||
{ |
||||
"description": "StickingToGoals.com", |
||||
"license": "MIT", |
||||
"authors": [ |
||||
{ |
||||
"name": "Robert Strutts" |
||||
} |
||||
], |
||||
"config": { |
||||
"platform": { |
||||
"php": "8.5" |
||||
} |
||||
}, |
||||
"require": { |
||||
"vlucas/phpdotenv": "^5.6" |
||||
} |
||||
} |
||||
@ -0,0 +1,495 @@ |
||||
{ |
||||
"_readme": [ |
||||
"This file locks the dependencies of your project to a known state", |
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", |
||||
"This file is @generated automatically" |
||||
], |
||||
"content-hash": "1f06c8427699f747776f24f4389f751e", |
||||
"packages": [ |
||||
{ |
||||
"name": "graham-campbell/result-type", |
||||
"version": "v1.1.4", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/GrahamCampbell/Result-Type.git", |
||||
"reference": "e01f4a821471308ba86aa202fed6698b6b695e3b" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b", |
||||
"reference": "e01f4a821471308ba86aa202fed6698b6b695e3b", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"php": "^7.2.5 || ^8.0", |
||||
"phpoption/phpoption": "^1.9.5" |
||||
}, |
||||
"require-dev": { |
||||
"phpunit/phpunit": "^8.5.41 || ^9.6.22 || ^10.5.45 || ^11.5.7" |
||||
}, |
||||
"type": "library", |
||||
"autoload": { |
||||
"psr-4": { |
||||
"GrahamCampbell\\ResultType\\": "src/" |
||||
} |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"MIT" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Graham Campbell", |
||||
"email": "hello@gjcampbell.co.uk", |
||||
"homepage": "https://github.com/GrahamCampbell" |
||||
} |
||||
], |
||||
"description": "An Implementation Of The Result Type", |
||||
"keywords": [ |
||||
"Graham Campbell", |
||||
"GrahamCampbell", |
||||
"Result Type", |
||||
"Result-Type", |
||||
"result" |
||||
], |
||||
"support": { |
||||
"issues": "https://github.com/GrahamCampbell/Result-Type/issues", |
||||
"source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.4" |
||||
}, |
||||
"funding": [ |
||||
{ |
||||
"url": "https://github.com/GrahamCampbell", |
||||
"type": "github" |
||||
}, |
||||
{ |
||||
"url": "https://tidelift.com/funding/github/packagist/graham-campbell/result-type", |
||||
"type": "tidelift" |
||||
} |
||||
], |
||||
"time": "2025-12-27T19:43:20+00:00" |
||||
}, |
||||
{ |
||||
"name": "phpoption/phpoption", |
||||
"version": "1.9.5", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/schmittjoh/php-option.git", |
||||
"reference": "75365b91986c2405cf5e1e012c5595cd487a98be" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", |
||||
"reference": "75365b91986c2405cf5e1e012c5595cd487a98be", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"php": "^7.2.5 || ^8.0" |
||||
}, |
||||
"require-dev": { |
||||
"bamarni/composer-bin-plugin": "^1.8.2", |
||||
"phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" |
||||
}, |
||||
"type": "library", |
||||
"extra": { |
||||
"bamarni-bin": { |
||||
"bin-links": true, |
||||
"forward-command": false |
||||
}, |
||||
"branch-alias": { |
||||
"dev-master": "1.9-dev" |
||||
} |
||||
}, |
||||
"autoload": { |
||||
"psr-4": { |
||||
"PhpOption\\": "src/PhpOption/" |
||||
} |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"Apache-2.0" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Johannes M. Schmitt", |
||||
"email": "schmittjoh@gmail.com", |
||||
"homepage": "https://github.com/schmittjoh" |
||||
}, |
||||
{ |
||||
"name": "Graham Campbell", |
||||
"email": "hello@gjcampbell.co.uk", |
||||
"homepage": "https://github.com/GrahamCampbell" |
||||
} |
||||
], |
||||
"description": "Option Type for PHP", |
||||
"keywords": [ |
||||
"language", |
||||
"option", |
||||
"php", |
||||
"type" |
||||
], |
||||
"support": { |
||||
"issues": "https://github.com/schmittjoh/php-option/issues", |
||||
"source": "https://github.com/schmittjoh/php-option/tree/1.9.5" |
||||
}, |
||||
"funding": [ |
||||
{ |
||||
"url": "https://github.com/GrahamCampbell", |
||||
"type": "github" |
||||
}, |
||||
{ |
||||
"url": "https://tidelift.com/funding/github/packagist/phpoption/phpoption", |
||||
"type": "tidelift" |
||||
} |
||||
], |
||||
"time": "2025-12-27T19:41:33+00:00" |
||||
}, |
||||
{ |
||||
"name": "symfony/polyfill-ctype", |
||||
"version": "v1.37.0", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/symfony/polyfill-ctype.git", |
||||
"reference": "141046a8f9477948ff284fa65be2095baafb94f2" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/141046a8f9477948ff284fa65be2095baafb94f2", |
||||
"reference": "141046a8f9477948ff284fa65be2095baafb94f2", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"php": ">=7.2" |
||||
}, |
||||
"provide": { |
||||
"ext-ctype": "*" |
||||
}, |
||||
"suggest": { |
||||
"ext-ctype": "For best performance" |
||||
}, |
||||
"type": "library", |
||||
"extra": { |
||||
"thanks": { |
||||
"url": "https://github.com/symfony/polyfill", |
||||
"name": "symfony/polyfill" |
||||
} |
||||
}, |
||||
"autoload": { |
||||
"files": [ |
||||
"bootstrap.php" |
||||
], |
||||
"psr-4": { |
||||
"Symfony\\Polyfill\\Ctype\\": "" |
||||
} |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"MIT" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Gert de Pagter", |
||||
"email": "BackEndTea@gmail.com" |
||||
}, |
||||
{ |
||||
"name": "Symfony Community", |
||||
"homepage": "https://symfony.com/contributors" |
||||
} |
||||
], |
||||
"description": "Symfony polyfill for ctype functions", |
||||
"homepage": "https://symfony.com", |
||||
"keywords": [ |
||||
"compatibility", |
||||
"ctype", |
||||
"polyfill", |
||||
"portable" |
||||
], |
||||
"support": { |
||||
"source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" |
||||
}, |
||||
"funding": [ |
||||
{ |
||||
"url": "https://symfony.com/sponsor", |
||||
"type": "custom" |
||||
}, |
||||
{ |
||||
"url": "https://github.com/fabpot", |
||||
"type": "github" |
||||
}, |
||||
{ |
||||
"url": "https://github.com/nicolas-grekas", |
||||
"type": "github" |
||||
}, |
||||
{ |
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", |
||||
"type": "tidelift" |
||||
} |
||||
], |
||||
"time": "2026-04-10T16:19:22+00:00" |
||||
}, |
||||
{ |
||||
"name": "symfony/polyfill-mbstring", |
||||
"version": "v1.38.1", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/symfony/polyfill-mbstring.git", |
||||
"reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/14c5439eec4ccff081ac14eca2dc57feb2a66d92", |
||||
"reference": "14c5439eec4ccff081ac14eca2dc57feb2a66d92", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"ext-iconv": "*", |
||||
"php": ">=7.2" |
||||
}, |
||||
"provide": { |
||||
"ext-mbstring": "*" |
||||
}, |
||||
"suggest": { |
||||
"ext-mbstring": "For best performance" |
||||
}, |
||||
"type": "library", |
||||
"extra": { |
||||
"thanks": { |
||||
"url": "https://github.com/symfony/polyfill", |
||||
"name": "symfony/polyfill" |
||||
} |
||||
}, |
||||
"autoload": { |
||||
"files": [ |
||||
"bootstrap.php" |
||||
], |
||||
"psr-4": { |
||||
"Symfony\\Polyfill\\Mbstring\\": "" |
||||
} |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"MIT" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Nicolas Grekas", |
||||
"email": "p@tchwork.com" |
||||
}, |
||||
{ |
||||
"name": "Symfony Community", |
||||
"homepage": "https://symfony.com/contributors" |
||||
} |
||||
], |
||||
"description": "Symfony polyfill for the Mbstring extension", |
||||
"homepage": "https://symfony.com", |
||||
"keywords": [ |
||||
"compatibility", |
||||
"mbstring", |
||||
"polyfill", |
||||
"portable", |
||||
"shim" |
||||
], |
||||
"support": { |
||||
"source": "https://github.com/symfony/polyfill-mbstring/tree/v1.38.1" |
||||
}, |
||||
"funding": [ |
||||
{ |
||||
"url": "https://symfony.com/sponsor", |
||||
"type": "custom" |
||||
}, |
||||
{ |
||||
"url": "https://github.com/fabpot", |
||||
"type": "github" |
||||
}, |
||||
{ |
||||
"url": "https://github.com/nicolas-grekas", |
||||
"type": "github" |
||||
}, |
||||
{ |
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", |
||||
"type": "tidelift" |
||||
} |
||||
], |
||||
"time": "2026-05-26T12:51:13+00:00" |
||||
}, |
||||
{ |
||||
"name": "symfony/polyfill-php80", |
||||
"version": "v1.37.0", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/symfony/polyfill-php80.git", |
||||
"reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411", |
||||
"reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"php": ">=7.2" |
||||
}, |
||||
"type": "library", |
||||
"extra": { |
||||
"thanks": { |
||||
"url": "https://github.com/symfony/polyfill", |
||||
"name": "symfony/polyfill" |
||||
} |
||||
}, |
||||
"autoload": { |
||||
"files": [ |
||||
"bootstrap.php" |
||||
], |
||||
"psr-4": { |
||||
"Symfony\\Polyfill\\Php80\\": "" |
||||
}, |
||||
"classmap": [ |
||||
"Resources/stubs" |
||||
] |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"MIT" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Ion Bazan", |
||||
"email": "ion.bazan@gmail.com" |
||||
}, |
||||
{ |
||||
"name": "Nicolas Grekas", |
||||
"email": "p@tchwork.com" |
||||
}, |
||||
{ |
||||
"name": "Symfony Community", |
||||
"homepage": "https://symfony.com/contributors" |
||||
} |
||||
], |
||||
"description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", |
||||
"homepage": "https://symfony.com", |
||||
"keywords": [ |
||||
"compatibility", |
||||
"polyfill", |
||||
"portable", |
||||
"shim" |
||||
], |
||||
"support": { |
||||
"source": "https://github.com/symfony/polyfill-php80/tree/v1.37.0" |
||||
}, |
||||
"funding": [ |
||||
{ |
||||
"url": "https://symfony.com/sponsor", |
||||
"type": "custom" |
||||
}, |
||||
{ |
||||
"url": "https://github.com/fabpot", |
||||
"type": "github" |
||||
}, |
||||
{ |
||||
"url": "https://github.com/nicolas-grekas", |
||||
"type": "github" |
||||
}, |
||||
{ |
||||
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony", |
||||
"type": "tidelift" |
||||
} |
||||
], |
||||
"time": "2026-04-10T16:19:22+00:00" |
||||
}, |
||||
{ |
||||
"name": "vlucas/phpdotenv", |
||||
"version": "v5.6.3", |
||||
"source": { |
||||
"type": "git", |
||||
"url": "https://github.com/vlucas/phpdotenv.git", |
||||
"reference": "955e7815d677a3eaa7075231212f2110983adecc" |
||||
}, |
||||
"dist": { |
||||
"type": "zip", |
||||
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", |
||||
"reference": "955e7815d677a3eaa7075231212f2110983adecc", |
||||
"shasum": "" |
||||
}, |
||||
"require": { |
||||
"ext-pcre": "*", |
||||
"graham-campbell/result-type": "^1.1.4", |
||||
"php": "^7.2.5 || ^8.0", |
||||
"phpoption/phpoption": "^1.9.5", |
||||
"symfony/polyfill-ctype": "^1.26", |
||||
"symfony/polyfill-mbstring": "^1.26", |
||||
"symfony/polyfill-php80": "^1.26" |
||||
}, |
||||
"require-dev": { |
||||
"bamarni/composer-bin-plugin": "^1.8.2", |
||||
"ext-filter": "*", |
||||
"phpunit/phpunit": "^8.5.34 || ^9.6.13 || ^10.4.2" |
||||
}, |
||||
"suggest": { |
||||
"ext-filter": "Required to use the boolean validator." |
||||
}, |
||||
"type": "library", |
||||
"extra": { |
||||
"bamarni-bin": { |
||||
"bin-links": true, |
||||
"forward-command": false |
||||
}, |
||||
"branch-alias": { |
||||
"dev-master": "5.6-dev" |
||||
} |
||||
}, |
||||
"autoload": { |
||||
"psr-4": { |
||||
"Dotenv\\": "src/" |
||||
} |
||||
}, |
||||
"notification-url": "https://packagist.org/downloads/", |
||||
"license": [ |
||||
"BSD-3-Clause" |
||||
], |
||||
"authors": [ |
||||
{ |
||||
"name": "Graham Campbell", |
||||
"email": "hello@gjcampbell.co.uk", |
||||
"homepage": "https://github.com/GrahamCampbell" |
||||
}, |
||||
{ |
||||
"name": "Vance Lucas", |
||||
"email": "vance@vancelucas.com", |
||||
"homepage": "https://github.com/vlucas" |
||||
} |
||||
], |
||||
"description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", |
||||
"keywords": [ |
||||
"dotenv", |
||||
"env", |
||||
"environment" |
||||
], |
||||
"support": { |
||||
"issues": "https://github.com/vlucas/phpdotenv/issues", |
||||
"source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" |
||||
}, |
||||
"funding": [ |
||||
{ |
||||
"url": "https://github.com/GrahamCampbell", |
||||
"type": "github" |
||||
}, |
||||
{ |
||||
"url": "https://tidelift.com/funding/github/packagist/vlucas/phpdotenv", |
||||
"type": "tidelift" |
||||
} |
||||
], |
||||
"time": "2025-12-27T19:49:13+00:00" |
||||
} |
||||
], |
||||
"packages-dev": [], |
||||
"aliases": [], |
||||
"minimum-stability": "stable", |
||||
"stability-flags": {}, |
||||
"prefer-stable": false, |
||||
"prefer-lowest": false, |
||||
"platform": {}, |
||||
"platform-dev": {}, |
||||
"platform-overrides": { |
||||
"php": "8.5" |
||||
}, |
||||
"plugin-api-version": "2.9.0" |
||||
} |
||||
@ -0,0 +1,39 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Accordion |
||||
========================================================================== */ |
||||
/* Sub-object: `uk-accordion-title` |
||||
========================================================================== */ |
||||
.uk-accordion-title { |
||||
margin-top: 0; |
||||
margin-bottom: 15px; |
||||
padding: 5px 15px; |
||||
background: #f5f5f5; |
||||
font-size: 18px; |
||||
line-height: 24px; |
||||
cursor: pointer; |
||||
border: 1px solid #dddddd; |
||||
border-radius: 4px; |
||||
} |
||||
/* Sub-object: `uk-accordion-content` |
||||
========================================================================== */ |
||||
.uk-accordion-content { |
||||
padding: 0 15px 15px 15px; |
||||
} |
||||
/* |
||||
* Micro clearfix to make panels more robust |
||||
*/ |
||||
.uk-accordion-content:before, |
||||
.uk-accordion-content:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-accordion-content:after { |
||||
clear: both; |
||||
} |
||||
/* |
||||
* Remove margin from the last-child |
||||
*/ |
||||
.uk-accordion-content > :last-child { |
||||
margin-bottom: 0; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-accordion-title{margin-top:0;margin-bottom:15px;padding:5px 15px;background:#f5f5f5;font-size:18px;line-height:24px;cursor:pointer;border:1px solid #ddd;border-radius:4px}.uk-accordion-content{padding:0 15px 15px 15px}.uk-accordion-content:after,.uk-accordion-content:before{content:"";display:table}.uk-accordion-content:after{clear:both}.uk-accordion-content>:last-child{margin-bottom:0} |
||||
@ -0,0 +1,37 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Accordion |
||||
========================================================================== */ |
||||
/* Sub-object: `uk-accordion-title` |
||||
========================================================================== */ |
||||
.uk-accordion-title { |
||||
margin-top: 0; |
||||
margin-bottom: 15px; |
||||
padding: 5px 15px; |
||||
background: #eeeeee; |
||||
font-size: 18px; |
||||
line-height: 24px; |
||||
cursor: pointer; |
||||
} |
||||
/* Sub-object: `uk-accordion-content` |
||||
========================================================================== */ |
||||
.uk-accordion-content { |
||||
padding: 0 15px 15px 15px; |
||||
} |
||||
/* |
||||
* Micro clearfix to make panels more robust |
||||
*/ |
||||
.uk-accordion-content:before, |
||||
.uk-accordion-content:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-accordion-content:after { |
||||
clear: both; |
||||
} |
||||
/* |
||||
* Remove margin from the last-child |
||||
*/ |
||||
.uk-accordion-content > :last-child { |
||||
margin-bottom: 0; |
||||
} |
||||
@ -0,0 +1,39 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Accordion |
||||
========================================================================== */ |
||||
/* Sub-object: `uk-accordion-title` |
||||
========================================================================== */ |
||||
.uk-accordion-title { |
||||
margin-top: 0; |
||||
margin-bottom: 15px; |
||||
padding: 5px 15px; |
||||
background: #f7f7f7; |
||||
font-size: 18px; |
||||
line-height: 24px; |
||||
cursor: pointer; |
||||
border: 1px solid #dddddd; |
||||
border-radius: 4px; |
||||
} |
||||
/* Sub-object: `uk-accordion-content` |
||||
========================================================================== */ |
||||
.uk-accordion-content { |
||||
padding: 0 15px 15px 15px; |
||||
} |
||||
/* |
||||
* Micro clearfix to make panels more robust |
||||
*/ |
||||
.uk-accordion-content:before, |
||||
.uk-accordion-content:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-accordion-content:after { |
||||
clear: both; |
||||
} |
||||
/* |
||||
* Remove margin from the last-child |
||||
*/ |
||||
.uk-accordion-content > :last-child { |
||||
margin-bottom: 0; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-accordion-title{margin-top:0;margin-bottom:15px;padding:5px 15px;background:#f7f7f7;font-size:18px;line-height:24px;cursor:pointer;border:1px solid #ddd;border-radius:4px}.uk-accordion-content{padding:0 15px 15px 15px}.uk-accordion-content:after,.uk-accordion-content:before{content:"";display:table}.uk-accordion-content:after{clear:both}.uk-accordion-content>:last-child{margin-bottom:0} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-accordion-title{margin-top:0;margin-bottom:15px;padding:5px 15px;background:#eee;font-size:18px;line-height:24px;cursor:pointer}.uk-accordion-content{padding:0 15px 15px 15px}.uk-accordion-content:after,.uk-accordion-content:before{content:"";display:table}.uk-accordion-content:after{clear:both}.uk-accordion-content>:last-child{margin-bottom:0} |
||||
@ -0,0 +1,52 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Autocomplete |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Container width fits its content |
||||
* 2. Create position context |
||||
* 3. Prevent `inline-block` consequences |
||||
* 4. Remove the gap between the container and its child element |
||||
*/ |
||||
.uk-autocomplete { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
max-width: 100%; |
||||
/* 4 */ |
||||
vertical-align: middle; |
||||
} |
||||
/* Nav modifier `uk-nav-autocomplete` |
||||
========================================================================== */ |
||||
/* |
||||
* Items |
||||
*/ |
||||
.uk-nav-autocomplete > li > a { |
||||
color: #444444; |
||||
} |
||||
/* |
||||
* Active |
||||
* 1. Remove default focus style |
||||
*/ |
||||
.uk-nav-autocomplete > li.uk-active > a { |
||||
background: #00a8e6; |
||||
color: #ffffff; |
||||
/* 1 */ |
||||
outline: none; |
||||
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); |
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); |
||||
} |
||||
/* |
||||
* Sub-object: `uk-nav-header` |
||||
*/ |
||||
.uk-nav-autocomplete .uk-nav-header { |
||||
color: #999999; |
||||
} |
||||
/* |
||||
* Sub-object: `uk-nav-divider` |
||||
*/ |
||||
.uk-nav-autocomplete .uk-nav-divider { |
||||
border-top: 1px solid #dddddd; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-autocomplete{display:inline-block;position:relative;max-width:100%;vertical-align:middle}.uk-nav-autocomplete>li>a{color:#444}.uk-nav-autocomplete>li.uk-active>a{background:#00a8e6;color:#fff;outline:0;box-shadow:inset 0 0 5px rgba(0,0,0,.05);text-shadow:0 -1px 0 rgba(0,0,0,.1)}.uk-nav-autocomplete .uk-nav-header{color:#999}.uk-nav-autocomplete .uk-nav-divider{border-top:1px solid #ddd} |
||||
@ -0,0 +1,50 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Autocomplete |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Container width fits its content |
||||
* 2. Create position context |
||||
* 3. Prevent `inline-block` consequences |
||||
* 4. Remove the gap between the container and its child element |
||||
*/ |
||||
.uk-autocomplete { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
max-width: 100%; |
||||
/* 4 */ |
||||
vertical-align: middle; |
||||
} |
||||
/* Nav modifier `uk-nav-autocomplete` |
||||
========================================================================== */ |
||||
/* |
||||
* Items |
||||
*/ |
||||
.uk-nav-autocomplete > li > a { |
||||
color: #444444; |
||||
} |
||||
/* |
||||
* Active |
||||
* 1. Remove default focus style |
||||
*/ |
||||
.uk-nav-autocomplete > li.uk-active > a { |
||||
background: #00a8e6; |
||||
color: #ffffff; |
||||
/* 1 */ |
||||
outline: none; |
||||
} |
||||
/* |
||||
* Sub-object: `uk-nav-header` |
||||
*/ |
||||
.uk-nav-autocomplete .uk-nav-header { |
||||
color: #999999; |
||||
} |
||||
/* |
||||
* Sub-object: `uk-nav-divider` |
||||
*/ |
||||
.uk-nav-autocomplete .uk-nav-divider { |
||||
border-top: 1px solid #dddddd; |
||||
} |
||||
@ -0,0 +1,52 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Autocomplete |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Container width fits its content |
||||
* 2. Create position context |
||||
* 3. Prevent `inline-block` consequences |
||||
* 4. Remove the gap between the container and its child element |
||||
*/ |
||||
.uk-autocomplete { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
max-width: 100%; |
||||
/* 4 */ |
||||
vertical-align: middle; |
||||
} |
||||
/* Nav modifier `uk-nav-autocomplete` |
||||
========================================================================== */ |
||||
/* |
||||
* Items |
||||
*/ |
||||
.uk-nav-autocomplete > li > a { |
||||
color: #444444; |
||||
} |
||||
/* |
||||
* Active |
||||
* 1. Remove default focus style |
||||
*/ |
||||
.uk-nav-autocomplete > li.uk-active > a { |
||||
background: #009dd8; |
||||
color: #ffffff; |
||||
/* 1 */ |
||||
outline: none; |
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.2); |
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); |
||||
} |
||||
/* |
||||
* Sub-object: `uk-nav-header` |
||||
*/ |
||||
.uk-nav-autocomplete .uk-nav-header { |
||||
color: #999999; |
||||
} |
||||
/* |
||||
* Sub-object: `uk-nav-divider` |
||||
*/ |
||||
.uk-nav-autocomplete .uk-nav-divider { |
||||
border-top: 1px solid #dddddd; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-autocomplete{display:inline-block;position:relative;max-width:100%;vertical-align:middle}.uk-nav-autocomplete>li>a{color:#444}.uk-nav-autocomplete>li.uk-active>a{background:#009dd8;color:#fff;outline:0;box-shadow:inset 0 2px 4px rgba(0,0,0,.2);text-shadow:0 -1px 0 rgba(0,0,0,.2)}.uk-nav-autocomplete .uk-nav-header{color:#999}.uk-nav-autocomplete .uk-nav-divider{border-top:1px solid #ddd} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-autocomplete{display:inline-block;position:relative;max-width:100%;vertical-align:middle}.uk-nav-autocomplete>li>a{color:#444}.uk-nav-autocomplete>li.uk-active>a{background:#00a8e6;color:#fff;outline:0}.uk-nav-autocomplete .uk-nav-header{color:#999}.uk-nav-autocomplete .uk-nav-divider{border-top:1px solid #ddd} |
||||
@ -0,0 +1,129 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Datepicker |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Highest z-index |
||||
* 2. Reset dropdown width |
||||
* 3. Set animation |
||||
* 4. Needed for scale animation |
||||
*/ |
||||
.uk-datepicker { |
||||
/* 1 */ |
||||
z-index: 1050; |
||||
/* 2 */ |
||||
width: auto; |
||||
/* 3 */ |
||||
-webkit-animation: uk-fade 0.2s ease-in-out; |
||||
animation: uk-fade 0.2s ease-in-out; |
||||
/* 4 */ |
||||
-webkit-transform-origin: 0 0; |
||||
transform-origin: 0 0; |
||||
} |
||||
/* Sub-object: `uk-datepicker-nav` |
||||
========================================================================== */ |
||||
.uk-datepicker-nav { |
||||
margin-bottom: 15px; |
||||
text-align: center; |
||||
line-height: 20px; |
||||
} |
||||
/* |
||||
* Micro clearfix |
||||
*/ |
||||
.uk-datepicker-nav:before, |
||||
.uk-datepicker-nav:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-datepicker-nav:after { |
||||
clear: both; |
||||
} |
||||
/* |
||||
* Previous and next navigation |
||||
*/ |
||||
.uk-datepicker-nav a { |
||||
color: #444444; |
||||
text-decoration: none; |
||||
} |
||||
.uk-datepicker-nav a:hover { |
||||
color: #444444; |
||||
} |
||||
.uk-datepicker-previous { |
||||
float: left; |
||||
} |
||||
.uk-datepicker-next { |
||||
float: right; |
||||
} |
||||
.uk-datepicker-previous:after, |
||||
.uk-datepicker-next:after { |
||||
width: 20px; |
||||
font-family: FontAwesome; |
||||
} |
||||
.uk-datepicker-previous:after { |
||||
content: "\f053"; |
||||
} |
||||
.uk-datepicker-next:after { |
||||
content: "\f054"; |
||||
} |
||||
/* Sub-object: `uk-datepicker-heading` |
||||
========================================================================== */ |
||||
/* Sub-object: `uk-datepicker-table` |
||||
========================================================================== */ |
||||
/* Block element behavior */ |
||||
.uk-datepicker-table { |
||||
width: 100%; |
||||
} |
||||
.uk-datepicker-table th, |
||||
.uk-datepicker-table td { |
||||
padding: 2px; |
||||
} |
||||
.uk-datepicker-table th { |
||||
font-size: 12px; |
||||
} |
||||
/* |
||||
* Item |
||||
*/ |
||||
.uk-datepicker-table a { |
||||
display: block; |
||||
width: 26px; |
||||
line-height: 24px; |
||||
text-align: center; |
||||
color: #444444; |
||||
text-decoration: none; |
||||
border: 1px solid transparent; |
||||
border-radius: 4px; |
||||
} |
||||
/* |
||||
* Sub-object: `uk-datepicker-table-muted` |
||||
*/ |
||||
a.uk-datepicker-table-muted { |
||||
color: #999999; |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
* 2. Remove default focus style |
||||
*/ |
||||
.uk-datepicker-table a:hover, |
||||
.uk-datepicker-table a:focus { |
||||
background-color: #fafafa; |
||||
color: #444444; |
||||
/* 2 */ |
||||
outline: none; |
||||
border-color: rgba(0, 0, 0, 0.16); |
||||
text-shadow: 0 1px 0 #ffffff; |
||||
} |
||||
/* OnClick */ |
||||
.uk-datepicker-table a:active { |
||||
background-color: #eeeeee; |
||||
color: #444444; |
||||
} |
||||
/* |
||||
* Active |
||||
*/ |
||||
.uk-datepicker-table a.uk-active { |
||||
background: #00a8e6; |
||||
color: #ffffff; |
||||
box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.05); |
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1); |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-datepicker{z-index:1050;width:auto;-webkit-animation:uk-fade .2s ease-in-out;animation:uk-fade .2s ease-in-out;-webkit-transform-origin:0 0;transform-origin:0 0}.uk-datepicker-nav{margin-bottom:15px;text-align:center;line-height:20px}.uk-datepicker-nav:after,.uk-datepicker-nav:before{content:"";display:table}.uk-datepicker-nav:after{clear:both}.uk-datepicker-nav a{color:#444;text-decoration:none}.uk-datepicker-nav a:hover{color:#444}.uk-datepicker-previous{float:left}.uk-datepicker-next{float:right}.uk-datepicker-next:after,.uk-datepicker-previous:after{width:20px;font-family:FontAwesome}.uk-datepicker-previous:after{content:"\f053"}.uk-datepicker-next:after{content:"\f054"}.uk-datepicker-table{width:100%}.uk-datepicker-table td,.uk-datepicker-table th{padding:2px}.uk-datepicker-table th{font-size:12px}.uk-datepicker-table a{display:block;width:26px;line-height:24px;text-align:center;color:#444;text-decoration:none;border:1px solid transparent;border-radius:4px}a.uk-datepicker-table-muted{color:#999}.uk-datepicker-table a:focus,.uk-datepicker-table a:hover{background-color:#fafafa;color:#444;outline:0;border-color:rgba(0,0,0,.16);text-shadow:0 1px 0 #fff}.uk-datepicker-table a:active{background-color:#eee;color:#444}.uk-datepicker-table a.uk-active{background:#00a8e6;color:#fff;box-shadow:inset 0 0 5px rgba(0,0,0,.05);text-shadow:0 -1px 0 rgba(0,0,0,.1)} |
||||
@ -0,0 +1,123 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Datepicker |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Highest z-index |
||||
* 2. Reset dropdown width |
||||
* 3. Set animation |
||||
* 4. Needed for scale animation |
||||
*/ |
||||
.uk-datepicker { |
||||
/* 1 */ |
||||
z-index: 1050; |
||||
/* 2 */ |
||||
width: auto; |
||||
/* 3 */ |
||||
-webkit-animation: uk-fade 0.2s ease-in-out; |
||||
animation: uk-fade 0.2s ease-in-out; |
||||
/* 4 */ |
||||
-webkit-transform-origin: 0 0; |
||||
transform-origin: 0 0; |
||||
} |
||||
/* Sub-object: `uk-datepicker-nav` |
||||
========================================================================== */ |
||||
.uk-datepicker-nav { |
||||
margin-bottom: 15px; |
||||
text-align: center; |
||||
line-height: 20px; |
||||
} |
||||
/* |
||||
* Micro clearfix |
||||
*/ |
||||
.uk-datepicker-nav:before, |
||||
.uk-datepicker-nav:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-datepicker-nav:after { |
||||
clear: both; |
||||
} |
||||
/* |
||||
* Previous and next navigation |
||||
*/ |
||||
.uk-datepicker-nav a { |
||||
color: #444444; |
||||
text-decoration: none; |
||||
} |
||||
.uk-datepicker-nav a:hover { |
||||
color: #444444; |
||||
} |
||||
.uk-datepicker-previous { |
||||
float: left; |
||||
} |
||||
.uk-datepicker-next { |
||||
float: right; |
||||
} |
||||
.uk-datepicker-previous:after, |
||||
.uk-datepicker-next:after { |
||||
width: 20px; |
||||
font-family: FontAwesome; |
||||
} |
||||
.uk-datepicker-previous:after { |
||||
content: "\f053"; |
||||
} |
||||
.uk-datepicker-next:after { |
||||
content: "\f054"; |
||||
} |
||||
/* Sub-object: `uk-datepicker-heading` |
||||
========================================================================== */ |
||||
/* Sub-object: `uk-datepicker-table` |
||||
========================================================================== */ |
||||
/* Block element behavior */ |
||||
.uk-datepicker-table { |
||||
width: 100%; |
||||
} |
||||
.uk-datepicker-table th, |
||||
.uk-datepicker-table td { |
||||
padding: 2px; |
||||
} |
||||
.uk-datepicker-table th { |
||||
font-size: 12px; |
||||
} |
||||
/* |
||||
* Item |
||||
*/ |
||||
.uk-datepicker-table a { |
||||
display: block; |
||||
width: 26px; |
||||
line-height: 24px; |
||||
text-align: center; |
||||
color: #444444; |
||||
text-decoration: none; |
||||
} |
||||
/* |
||||
* Sub-object: `uk-datepicker-table-muted` |
||||
*/ |
||||
a.uk-datepicker-table-muted { |
||||
color: #999999; |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
* 2. Remove default focus style |
||||
*/ |
||||
.uk-datepicker-table a:hover, |
||||
.uk-datepicker-table a:focus { |
||||
background-color: #dddddd; |
||||
color: #444444; |
||||
/* 2 */ |
||||
outline: none; |
||||
} |
||||
/* OnClick */ |
||||
.uk-datepicker-table a:active { |
||||
background-color: #cccccc; |
||||
color: #444444; |
||||
} |
||||
/* |
||||
* Active |
||||
*/ |
||||
.uk-datepicker-table a.uk-active { |
||||
background: #00a8e6; |
||||
color: #ffffff; |
||||
} |
||||
@ -0,0 +1,139 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Datepicker |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Highest z-index |
||||
* 2. Reset dropdown width |
||||
* 3. Set animation |
||||
* 4. Needed for scale animation |
||||
*/ |
||||
.uk-datepicker { |
||||
/* 1 */ |
||||
z-index: 1050; |
||||
/* 2 */ |
||||
width: auto; |
||||
/* 3 */ |
||||
-webkit-animation: uk-fade 0.2s ease-in-out; |
||||
animation: uk-fade 0.2s ease-in-out; |
||||
/* 4 */ |
||||
-webkit-transform-origin: 0 0; |
||||
transform-origin: 0 0; |
||||
} |
||||
/* Sub-object: `uk-datepicker-nav` |
||||
========================================================================== */ |
||||
.uk-datepicker-nav { |
||||
margin-bottom: 15px; |
||||
text-align: center; |
||||
line-height: 20px; |
||||
} |
||||
/* |
||||
* Micro clearfix |
||||
*/ |
||||
.uk-datepicker-nav:before, |
||||
.uk-datepicker-nav:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-datepicker-nav:after { |
||||
clear: both; |
||||
} |
||||
/* |
||||
* Previous and next navigation |
||||
*/ |
||||
.uk-datepicker-nav a { |
||||
color: #444444; |
||||
text-decoration: none; |
||||
} |
||||
.uk-datepicker-nav a:hover { |
||||
color: #444444; |
||||
} |
||||
.uk-datepicker-previous { |
||||
float: left; |
||||
} |
||||
.uk-datepicker-next { |
||||
float: right; |
||||
} |
||||
.uk-datepicker-previous:after, |
||||
.uk-datepicker-next:after { |
||||
width: 20px; |
||||
font-family: FontAwesome; |
||||
} |
||||
.uk-datepicker-previous:after { |
||||
content: "\f053"; |
||||
} |
||||
.uk-datepicker-next:after { |
||||
content: "\f054"; |
||||
} |
||||
/* Sub-object: `uk-datepicker-heading` |
||||
========================================================================== */ |
||||
/* Sub-object: `uk-datepicker-table` |
||||
========================================================================== */ |
||||
/* Block element behavior */ |
||||
.uk-datepicker-table { |
||||
width: 100%; |
||||
} |
||||
.uk-datepicker-table th, |
||||
.uk-datepicker-table td { |
||||
padding: 2px; |
||||
} |
||||
.uk-datepicker-table th { |
||||
font-size: 12px; |
||||
} |
||||
/* |
||||
* Item |
||||
*/ |
||||
.uk-datepicker-table a { |
||||
display: block; |
||||
width: 26px; |
||||
line-height: 24px; |
||||
text-align: center; |
||||
color: #444444; |
||||
text-decoration: none; |
||||
border: 1px solid transparent; |
||||
border-radius: 4px; |
||||
background-origin: border-box; |
||||
} |
||||
/* |
||||
* Sub-object: `uk-datepicker-table-muted` |
||||
*/ |
||||
a.uk-datepicker-table-muted { |
||||
color: #999999; |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
* 2. Remove default focus style |
||||
*/ |
||||
.uk-datepicker-table a:hover, |
||||
.uk-datepicker-table a:focus { |
||||
background-color: #fafafa; |
||||
color: #444444; |
||||
/* 2 */ |
||||
outline: none; |
||||
border-color: rgba(0, 0, 0, 0.2); |
||||
border-bottom-color: rgba(0, 0, 0, 0.3); |
||||
text-shadow: 0 1px 0 #ffffff; |
||||
} |
||||
/* OnClick */ |
||||
.uk-datepicker-table a:active { |
||||
background-color: #f5f5f5; |
||||
color: #444444; |
||||
border-color: rgba(0, 0, 0, 0.2); |
||||
border-top-color: rgba(0, 0, 0, 0.3); |
||||
background-image: none; |
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1); |
||||
} |
||||
/* |
||||
* Active |
||||
*/ |
||||
.uk-datepicker-table a.uk-active { |
||||
background: #009dd8; |
||||
color: #ffffff; |
||||
border: 1px solid rgba(0, 0, 0, 0.2); |
||||
border-bottom-color: rgba(0, 0, 0, 0.4); |
||||
background-origin: border-box; |
||||
background-image: -webkit-linear-gradient(top, #00b4f5, #008dc5); |
||||
background-image: linear-gradient(to bottom, #00b4f5, #008dc5); |
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-datepicker{z-index:1050;width:auto;-webkit-animation:uk-fade .2s ease-in-out;animation:uk-fade .2s ease-in-out;-webkit-transform-origin:0 0;transform-origin:0 0}.uk-datepicker-nav{margin-bottom:15px;text-align:center;line-height:20px}.uk-datepicker-nav:after,.uk-datepicker-nav:before{content:"";display:table}.uk-datepicker-nav:after{clear:both}.uk-datepicker-nav a{color:#444;text-decoration:none}.uk-datepicker-nav a:hover{color:#444}.uk-datepicker-previous{float:left}.uk-datepicker-next{float:right}.uk-datepicker-next:after,.uk-datepicker-previous:after{width:20px;font-family:FontAwesome}.uk-datepicker-previous:after{content:"\f053"}.uk-datepicker-next:after{content:"\f054"}.uk-datepicker-table{width:100%}.uk-datepicker-table td,.uk-datepicker-table th{padding:2px}.uk-datepicker-table th{font-size:12px}.uk-datepicker-table a{display:block;width:26px;line-height:24px;text-align:center;color:#444;text-decoration:none;border:1px solid transparent;border-radius:4px;background-origin:border-box}a.uk-datepicker-table-muted{color:#999}.uk-datepicker-table a:focus,.uk-datepicker-table a:hover{background-color:#fafafa;color:#444;outline:0;border-color:rgba(0,0,0,.2);border-bottom-color:rgba(0,0,0,.3);text-shadow:0 1px 0 #fff}.uk-datepicker-table a:active{background-color:#f5f5f5;color:#444;border-color:rgba(0,0,0,.2);border-top-color:rgba(0,0,0,.3);background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.1)}.uk-datepicker-table a.uk-active{background:#009dd8;color:#fff;border:1px solid rgba(0,0,0,.2);border-bottom-color:rgba(0,0,0,.4);background-origin:border-box;background-image:-webkit-linear-gradient(top,#00b4f5,#008dc5);background-image:linear-gradient(to bottom,#00b4f5,#008dc5);text-shadow:0 -1px 0 rgba(0,0,0,.2)} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-datepicker{z-index:1050;width:auto;-webkit-animation:uk-fade .2s ease-in-out;animation:uk-fade .2s ease-in-out;-webkit-transform-origin:0 0;transform-origin:0 0}.uk-datepicker-nav{margin-bottom:15px;text-align:center;line-height:20px}.uk-datepicker-nav:after,.uk-datepicker-nav:before{content:"";display:table}.uk-datepicker-nav:after{clear:both}.uk-datepicker-nav a{color:#444;text-decoration:none}.uk-datepicker-nav a:hover{color:#444}.uk-datepicker-previous{float:left}.uk-datepicker-next{float:right}.uk-datepicker-next:after,.uk-datepicker-previous:after{width:20px;font-family:FontAwesome}.uk-datepicker-previous:after{content:"\f053"}.uk-datepicker-next:after{content:"\f054"}.uk-datepicker-table{width:100%}.uk-datepicker-table td,.uk-datepicker-table th{padding:2px}.uk-datepicker-table th{font-size:12px}.uk-datepicker-table a{display:block;width:26px;line-height:24px;text-align:center;color:#444;text-decoration:none}a.uk-datepicker-table-muted{color:#999}.uk-datepicker-table a:focus,.uk-datepicker-table a:hover{background-color:#ddd;color:#444;outline:0}.uk-datepicker-table a:active{background-color:#ccc;color:#444}.uk-datepicker-table a.uk-active{background:#00a8e6;color:#fff} |
||||
@ -0,0 +1,128 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Dotnav |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Gutter |
||||
* 2. Remove default list style |
||||
*/ |
||||
.uk-dotnav { |
||||
display: -ms-flexbox; |
||||
display: -webkit-flex; |
||||
display: flex; |
||||
-ms-flex-wrap: wrap; |
||||
-webkit-flex-wrap: wrap; |
||||
flex-wrap: wrap; |
||||
/* 1 */ |
||||
margin-left: -15px; |
||||
margin-top: -15px; |
||||
/* 2 */ |
||||
padding: 0; |
||||
list-style: none; |
||||
} |
||||
/* |
||||
* 1. Space is allocated solely based on content dimensions |
||||
* 2. Horizontal gutter is using `padding` so `uk-width-*` classes can be applied |
||||
*/ |
||||
.uk-dotnav > * { |
||||
/* 1 */ |
||||
-ms-flex: none; |
||||
-webkit-flex: none; |
||||
flex: none; |
||||
/* 2 */ |
||||
padding-left: 15px; |
||||
margin-top: 15px; |
||||
} |
||||
/* |
||||
* DEPRECATED IE9 Support |
||||
*/ |
||||
.uk-dotnav:before, |
||||
.uk-dotnav:after { |
||||
content: ""; |
||||
display: block; |
||||
overflow: hidden; |
||||
} |
||||
.uk-dotnav:after { |
||||
clear: both; |
||||
} |
||||
.uk-dotnav > * { |
||||
float: left; |
||||
} |
||||
/* Items |
||||
========================================================================== */ |
||||
/* |
||||
* Items |
||||
* 1. Hide text if present |
||||
*/ |
||||
.uk-dotnav > * > * { |
||||
display: block; |
||||
box-sizing: content-box; |
||||
width: 20px; |
||||
height: 20px; |
||||
border-radius: 50%; |
||||
background: rgba(50, 50, 50, 0.1); |
||||
/* 1 */ |
||||
text-indent: 100%; |
||||
overflow: hidden; |
||||
white-space: nowrap; |
||||
-webkit-transition: all 0.2s ease-in-out; |
||||
transition: all 0.2s ease-in-out; |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
* 2. Remove default focus style |
||||
*/ |
||||
.uk-dotnav > * > :hover, |
||||
.uk-dotnav > * > :focus { |
||||
background: rgba(50, 50, 50, 0.4); |
||||
/* 2 */ |
||||
outline: none; |
||||
} |
||||
/* OnClick */ |
||||
.uk-dotnav > * > :active { |
||||
background: rgba(50, 50, 50, 0.6); |
||||
} |
||||
/* Active */ |
||||
.uk-dotnav > .uk-active > * { |
||||
background: rgba(50, 50, 50, 0.4); |
||||
-webkit-transform: scale(1.3); |
||||
transform: scale(1.3); |
||||
} |
||||
/* Modifier: `uk-dotnav-contrast` |
||||
========================================================================== */ |
||||
.uk-dotnav-contrast > * > * { |
||||
background: rgba(255, 255, 255, 0.4); |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
*/ |
||||
.uk-dotnav-contrast > * > :hover, |
||||
.uk-dotnav-contrast > * > :focus { |
||||
background: rgba(255, 255, 255, 0.7); |
||||
} |
||||
/* OnClick */ |
||||
.uk-dotnav-contrast > * > :active { |
||||
background: rgba(255, 255, 255, 0.9); |
||||
} |
||||
/* Active */ |
||||
.uk-dotnav-contrast > .uk-active > * { |
||||
background: rgba(255, 255, 255, 0.9); |
||||
} |
||||
/* Modifier: 'uk-dotnav-vertical' |
||||
========================================================================== */ |
||||
/* |
||||
* DEPRECATED |
||||
*/ |
||||
.uk-dotnav-vertical { |
||||
-ms-flex-direction: column; |
||||
-webkit-flex-direction: column; |
||||
flex-direction: column; |
||||
} |
||||
/* |
||||
* DEPRECATED IE9 Support |
||||
*/ |
||||
.uk-dotnav-vertical > * { |
||||
float: none; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-dotnav{display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-top:-15px;padding:0;list-style:none}.uk-dotnav>*{-ms-flex:none;-webkit-flex:none;flex:none;padding-left:15px;margin-top:15px}.uk-dotnav:after,.uk-dotnav:before{content:"";display:block;overflow:hidden}.uk-dotnav:after{clear:both}.uk-dotnav>*{float:left}.uk-dotnav>*>*{display:block;box-sizing:content-box;width:20px;height:20px;border-radius:50%;background:rgba(50,50,50,.1);text-indent:100%;overflow:hidden;white-space:nowrap;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.uk-dotnav>*>:focus,.uk-dotnav>*>:hover{background:rgba(50,50,50,.4);outline:0}.uk-dotnav>*>:active{background:rgba(50,50,50,.6)}.uk-dotnav>.uk-active>*{background:rgba(50,50,50,.4);-webkit-transform:scale(1.3);transform:scale(1.3)}.uk-dotnav-contrast>*>*{background:rgba(255,255,255,.4)}.uk-dotnav-contrast>*>:focus,.uk-dotnav-contrast>*>:hover{background:rgba(255,255,255,.7)}.uk-dotnav-contrast>*>:active{background:rgba(255,255,255,.9)}.uk-dotnav-contrast>.uk-active>*{background:rgba(255,255,255,.9)}.uk-dotnav-vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.uk-dotnav-vertical>*{float:none} |
||||
@ -0,0 +1,124 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Dotnav |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Gutter |
||||
* 2. Remove default list style |
||||
*/ |
||||
.uk-dotnav { |
||||
display: -ms-flexbox; |
||||
display: -webkit-flex; |
||||
display: flex; |
||||
-ms-flex-wrap: wrap; |
||||
-webkit-flex-wrap: wrap; |
||||
flex-wrap: wrap; |
||||
/* 1 */ |
||||
margin-left: -15px; |
||||
margin-top: -15px; |
||||
/* 2 */ |
||||
padding: 0; |
||||
list-style: none; |
||||
} |
||||
/* |
||||
* 1. Space is allocated solely based on content dimensions |
||||
* 2. Horizontal gutter is using `padding` so `uk-width-*` classes can be applied |
||||
*/ |
||||
.uk-dotnav > * { |
||||
/* 1 */ |
||||
-ms-flex: none; |
||||
-webkit-flex: none; |
||||
flex: none; |
||||
/* 2 */ |
||||
padding-left: 15px; |
||||
margin-top: 15px; |
||||
} |
||||
/* |
||||
* DEPRECATED IE9 Support |
||||
*/ |
||||
.uk-dotnav:before, |
||||
.uk-dotnav:after { |
||||
content: ""; |
||||
display: block; |
||||
overflow: hidden; |
||||
} |
||||
.uk-dotnav:after { |
||||
clear: both; |
||||
} |
||||
.uk-dotnav > * { |
||||
float: left; |
||||
} |
||||
/* Items |
||||
========================================================================== */ |
||||
/* |
||||
* Items |
||||
* 1. Hide text if present |
||||
*/ |
||||
.uk-dotnav > * > * { |
||||
display: block; |
||||
box-sizing: content-box; |
||||
width: 20px; |
||||
height: 20px; |
||||
border-radius: 50%; |
||||
background: rgba(50, 50, 50, 0.1); |
||||
/* 1 */ |
||||
text-indent: 100%; |
||||
overflow: hidden; |
||||
white-space: nowrap; |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
* 2. Remove default focus style |
||||
*/ |
||||
.uk-dotnav > * > :hover, |
||||
.uk-dotnav > * > :focus { |
||||
background: rgba(50, 50, 50, 0.4); |
||||
/* 2 */ |
||||
outline: none; |
||||
} |
||||
/* OnClick */ |
||||
.uk-dotnav > * > :active { |
||||
background: rgba(50, 50, 50, 0.6); |
||||
} |
||||
/* Active */ |
||||
.uk-dotnav > .uk-active > * { |
||||
background: rgba(50, 50, 50, 0.4); |
||||
} |
||||
/* Modifier: `uk-dotnav-contrast` |
||||
========================================================================== */ |
||||
.uk-dotnav-contrast > * > * { |
||||
background: rgba(255, 255, 255, 0.4); |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
*/ |
||||
.uk-dotnav-contrast > * > :hover, |
||||
.uk-dotnav-contrast > * > :focus { |
||||
background: rgba(255, 255, 255, 0.7); |
||||
} |
||||
/* OnClick */ |
||||
.uk-dotnav-contrast > * > :active { |
||||
background: rgba(255, 255, 255, 0.9); |
||||
} |
||||
/* Active */ |
||||
.uk-dotnav-contrast > .uk-active > * { |
||||
background: rgba(255, 255, 255, 0.9); |
||||
} |
||||
/* Modifier: 'uk-dotnav-vertical' |
||||
========================================================================== */ |
||||
/* |
||||
* DEPRECATED |
||||
*/ |
||||
.uk-dotnav-vertical { |
||||
-ms-flex-direction: column; |
||||
-webkit-flex-direction: column; |
||||
flex-direction: column; |
||||
} |
||||
/* |
||||
* DEPRECATED IE9 Support |
||||
*/ |
||||
.uk-dotnav-vertical > * { |
||||
float: none; |
||||
} |
||||
@ -0,0 +1,128 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Dotnav |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Gutter |
||||
* 2. Remove default list style |
||||
*/ |
||||
.uk-dotnav { |
||||
display: -ms-flexbox; |
||||
display: -webkit-flex; |
||||
display: flex; |
||||
-ms-flex-wrap: wrap; |
||||
-webkit-flex-wrap: wrap; |
||||
flex-wrap: wrap; |
||||
/* 1 */ |
||||
margin-left: -15px; |
||||
margin-top: -15px; |
||||
/* 2 */ |
||||
padding: 0; |
||||
list-style: none; |
||||
} |
||||
/* |
||||
* 1. Space is allocated solely based on content dimensions |
||||
* 2. Horizontal gutter is using `padding` so `uk-width-*` classes can be applied |
||||
*/ |
||||
.uk-dotnav > * { |
||||
/* 1 */ |
||||
-ms-flex: none; |
||||
-webkit-flex: none; |
||||
flex: none; |
||||
/* 2 */ |
||||
padding-left: 15px; |
||||
margin-top: 15px; |
||||
} |
||||
/* |
||||
* DEPRECATED IE9 Support |
||||
*/ |
||||
.uk-dotnav:before, |
||||
.uk-dotnav:after { |
||||
content: ""; |
||||
display: block; |
||||
overflow: hidden; |
||||
} |
||||
.uk-dotnav:after { |
||||
clear: both; |
||||
} |
||||
.uk-dotnav > * { |
||||
float: left; |
||||
} |
||||
/* Items |
||||
========================================================================== */ |
||||
/* |
||||
* Items |
||||
* 1. Hide text if present |
||||
*/ |
||||
.uk-dotnav > * > * { |
||||
display: block; |
||||
box-sizing: content-box; |
||||
width: 20px; |
||||
height: 20px; |
||||
border-radius: 50%; |
||||
background: rgba(50, 50, 50, 0.1); |
||||
/* 1 */ |
||||
text-indent: 100%; |
||||
overflow: hidden; |
||||
white-space: nowrap; |
||||
-webkit-transition: all 0.2s ease-in-out; |
||||
transition: all 0.2s ease-in-out; |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
* 2. Remove default focus style |
||||
*/ |
||||
.uk-dotnav > * > :hover, |
||||
.uk-dotnav > * > :focus { |
||||
background: rgba(50, 50, 50, 0.4); |
||||
/* 2 */ |
||||
outline: none; |
||||
} |
||||
/* OnClick */ |
||||
.uk-dotnav > * > :active { |
||||
background: rgba(50, 50, 50, 0.6); |
||||
} |
||||
/* Active */ |
||||
.uk-dotnav > .uk-active > * { |
||||
background: rgba(50, 50, 50, 0.4); |
||||
-webkit-transform: scale(1.3); |
||||
transform: scale(1.3); |
||||
} |
||||
/* Modifier: `uk-dotnav-contrast` |
||||
========================================================================== */ |
||||
.uk-dotnav-contrast > * > * { |
||||
background: rgba(255, 255, 255, 0.4); |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
*/ |
||||
.uk-dotnav-contrast > * > :hover, |
||||
.uk-dotnav-contrast > * > :focus { |
||||
background: rgba(255, 255, 255, 0.7); |
||||
} |
||||
/* OnClick */ |
||||
.uk-dotnav-contrast > * > :active { |
||||
background: rgba(255, 255, 255, 0.9); |
||||
} |
||||
/* Active */ |
||||
.uk-dotnav-contrast > .uk-active > * { |
||||
background: rgba(255, 255, 255, 0.9); |
||||
} |
||||
/* Modifier: 'uk-dotnav-vertical' |
||||
========================================================================== */ |
||||
/* |
||||
* DEPRECATED |
||||
*/ |
||||
.uk-dotnav-vertical { |
||||
-ms-flex-direction: column; |
||||
-webkit-flex-direction: column; |
||||
flex-direction: column; |
||||
} |
||||
/* |
||||
* DEPRECATED IE9 Support |
||||
*/ |
||||
.uk-dotnav-vertical > * { |
||||
float: none; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-dotnav{display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-top:-15px;padding:0;list-style:none}.uk-dotnav>*{-ms-flex:none;-webkit-flex:none;flex:none;padding-left:15px;margin-top:15px}.uk-dotnav:after,.uk-dotnav:before{content:"";display:block;overflow:hidden}.uk-dotnav:after{clear:both}.uk-dotnav>*{float:left}.uk-dotnav>*>*{display:block;box-sizing:content-box;width:20px;height:20px;border-radius:50%;background:rgba(50,50,50,.1);text-indent:100%;overflow:hidden;white-space:nowrap;-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.uk-dotnav>*>:focus,.uk-dotnav>*>:hover{background:rgba(50,50,50,.4);outline:0}.uk-dotnav>*>:active{background:rgba(50,50,50,.6)}.uk-dotnav>.uk-active>*{background:rgba(50,50,50,.4);-webkit-transform:scale(1.3);transform:scale(1.3)}.uk-dotnav-contrast>*>*{background:rgba(255,255,255,.4)}.uk-dotnav-contrast>*>:focus,.uk-dotnav-contrast>*>:hover{background:rgba(255,255,255,.7)}.uk-dotnav-contrast>*>:active{background:rgba(255,255,255,.9)}.uk-dotnav-contrast>.uk-active>*{background:rgba(255,255,255,.9)}.uk-dotnav-vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.uk-dotnav-vertical>*{float:none} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-dotnav{display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-wrap:wrap;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin-left:-15px;margin-top:-15px;padding:0;list-style:none}.uk-dotnav>*{-ms-flex:none;-webkit-flex:none;flex:none;padding-left:15px;margin-top:15px}.uk-dotnav:after,.uk-dotnav:before{content:"";display:block;overflow:hidden}.uk-dotnav:after{clear:both}.uk-dotnav>*{float:left}.uk-dotnav>*>*{display:block;box-sizing:content-box;width:20px;height:20px;border-radius:50%;background:rgba(50,50,50,.1);text-indent:100%;overflow:hidden;white-space:nowrap}.uk-dotnav>*>:focus,.uk-dotnav>*>:hover{background:rgba(50,50,50,.4);outline:0}.uk-dotnav>*>:active{background:rgba(50,50,50,.6)}.uk-dotnav>.uk-active>*{background:rgba(50,50,50,.4)}.uk-dotnav-contrast>*>*{background:rgba(255,255,255,.4)}.uk-dotnav-contrast>*>:focus,.uk-dotnav-contrast>*>:hover{background:rgba(255,255,255,.7)}.uk-dotnav-contrast>*>:active{background:rgba(255,255,255,.9)}.uk-dotnav-contrast>.uk-active>*{background:rgba(255,255,255,.9)}.uk-dotnav-vertical{-ms-flex-direction:column;-webkit-flex-direction:column;flex-direction:column}.uk-dotnav-vertical>*{float:none} |
||||
@ -0,0 +1,78 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form advanced |
||||
Note: Only works in Webkit at the moment |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Style |
||||
* 2. Makes box more robust so it clips the child element |
||||
* 3. Vertical alignment |
||||
* 4. Remove default style |
||||
* 5. Fix black background on iOS |
||||
*/ |
||||
.uk-form input[type="radio"], |
||||
.uk-form input[type="checkbox"] { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
height: 14px; |
||||
width: 14px; |
||||
border: 1px solid #aaaaaa; |
||||
/* 2 */ |
||||
overflow: hidden; |
||||
/* 3 */ |
||||
margin-top: -4px; |
||||
vertical-align: middle; |
||||
/* 4 */ |
||||
-webkit-appearance: none; |
||||
outline: 0; |
||||
/* 5 */ |
||||
background: transparent; |
||||
} |
||||
/* Radio */ |
||||
.uk-form input[type="radio"] { |
||||
border-radius: 50%; |
||||
} |
||||
/* |
||||
* Checked |
||||
*/ |
||||
.uk-form input[type=radio]:before, |
||||
.uk-form input[type=checkbox]:before { |
||||
display: block; |
||||
} |
||||
/* Radio */ |
||||
.uk-form input[type=radio]:checked:before { |
||||
content: ''; |
||||
width: 8px; |
||||
height: 8px; |
||||
margin: 2px auto 0; |
||||
border-radius: 50%; |
||||
background: #00a8e6; |
||||
} |
||||
/* Checkbox */ |
||||
.uk-form input[type=checkbox]:checked:before, |
||||
.uk-form input[type=checkbox]:indeterminate:before { |
||||
content: "\f00c"; |
||||
font-family: FontAwesome; |
||||
font-size: 12px; |
||||
-webkit-font-smoothing: antialiased; |
||||
text-align: center; |
||||
line-height: 12px; |
||||
color: #00a8e6; |
||||
} |
||||
.uk-form input[type=checkbox]:indeterminate:before { |
||||
content: "\f068"; |
||||
} |
||||
/* |
||||
* Disabled |
||||
*/ |
||||
.uk-form input[type=radio]:disabled, |
||||
.uk-form input[type=checkbox]:disabled { |
||||
border-color: #dddddd; |
||||
} |
||||
.uk-form input[type=radio]:disabled:checked:before { |
||||
background-color: #aaaaaa; |
||||
} |
||||
.uk-form input[type=checkbox]:disabled:checked:before, |
||||
.uk-form input[type=checkbox]:disabled:indeterminate:before { |
||||
color: #aaaaaa; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form input[type=radio],.uk-form input[type=checkbox]{display:inline-block;height:14px;width:14px;border:1px solid #aaa;overflow:hidden;margin-top:-4px;vertical-align:middle;-webkit-appearance:none;outline:0;background:0 0}.uk-form input[type=radio]{border-radius:50%}.uk-form input[type=checkbox]:before,.uk-form input[type=radio]:before{display:block}.uk-form input[type=radio]:checked:before{content:'';width:8px;height:8px;margin:2px auto 0;border-radius:50%;background:#00a8e6}.uk-form input[type=checkbox]:checked:before,.uk-form input[type=checkbox]:indeterminate:before{content:"\f00c";font-family:FontAwesome;font-size:12px;-webkit-font-smoothing:antialiased;text-align:center;line-height:12px;color:#00a8e6}.uk-form input[type=checkbox]:indeterminate:before{content:"\f068"}.uk-form input[type=checkbox]:disabled,.uk-form input[type=radio]:disabled{border-color:#ddd}.uk-form input[type=radio]:disabled:checked:before{background-color:#aaa}.uk-form input[type=checkbox]:disabled:checked:before,.uk-form input[type=checkbox]:disabled:indeterminate:before{color:#aaa} |
||||
@ -0,0 +1,78 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form advanced |
||||
Note: Only works in Webkit at the moment |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Style |
||||
* 2. Makes box more robust so it clips the child element |
||||
* 3. Vertical alignment |
||||
* 4. Remove default style |
||||
* 5. Fix black background on iOS |
||||
*/ |
||||
.uk-form input[type="radio"], |
||||
.uk-form input[type="checkbox"] { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
height: 14px; |
||||
width: 14px; |
||||
border: 1px solid #aaaaaa; |
||||
/* 2 */ |
||||
overflow: hidden; |
||||
/* 3 */ |
||||
margin-top: -4px; |
||||
vertical-align: middle; |
||||
/* 4 */ |
||||
-webkit-appearance: none; |
||||
outline: 0; |
||||
/* 5 */ |
||||
background: transparent; |
||||
} |
||||
/* Radio */ |
||||
.uk-form input[type="radio"] { |
||||
border-radius: 50%; |
||||
} |
||||
/* |
||||
* Checked |
||||
*/ |
||||
.uk-form input[type=radio]:before, |
||||
.uk-form input[type=checkbox]:before { |
||||
display: block; |
||||
} |
||||
/* Radio */ |
||||
.uk-form input[type=radio]:checked:before { |
||||
content: ''; |
||||
width: 8px; |
||||
height: 8px; |
||||
margin: 2px auto 0; |
||||
border-radius: 50%; |
||||
background: #00a8e6; |
||||
} |
||||
/* Checkbox */ |
||||
.uk-form input[type=checkbox]:checked:before, |
||||
.uk-form input[type=checkbox]:indeterminate:before { |
||||
content: "\f00c"; |
||||
font-family: FontAwesome; |
||||
font-size: 12px; |
||||
-webkit-font-smoothing: antialiased; |
||||
text-align: center; |
||||
line-height: 12px; |
||||
color: #00a8e6; |
||||
} |
||||
.uk-form input[type=checkbox]:indeterminate:before { |
||||
content: "\f068"; |
||||
} |
||||
/* |
||||
* Disabled |
||||
*/ |
||||
.uk-form input[type=radio]:disabled, |
||||
.uk-form input[type=checkbox]:disabled { |
||||
border-color: #dddddd; |
||||
} |
||||
.uk-form input[type=radio]:disabled:checked:before { |
||||
background-color: #aaaaaa; |
||||
} |
||||
.uk-form input[type=checkbox]:disabled:checked:before, |
||||
.uk-form input[type=checkbox]:disabled:indeterminate:before { |
||||
color: #aaaaaa; |
||||
} |
||||
@ -0,0 +1,78 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form advanced |
||||
Note: Only works in Webkit at the moment |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Style |
||||
* 2. Makes box more robust so it clips the child element |
||||
* 3. Vertical alignment |
||||
* 4. Remove default style |
||||
* 5. Fix black background on iOS |
||||
*/ |
||||
.uk-form input[type="radio"], |
||||
.uk-form input[type="checkbox"] { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
height: 14px; |
||||
width: 14px; |
||||
border: 1px solid #aaaaaa; |
||||
/* 2 */ |
||||
overflow: hidden; |
||||
/* 3 */ |
||||
margin-top: -4px; |
||||
vertical-align: middle; |
||||
/* 4 */ |
||||
-webkit-appearance: none; |
||||
outline: 0; |
||||
/* 5 */ |
||||
background: transparent; |
||||
} |
||||
/* Radio */ |
||||
.uk-form input[type="radio"] { |
||||
border-radius: 50%; |
||||
} |
||||
/* |
||||
* Checked |
||||
*/ |
||||
.uk-form input[type=radio]:before, |
||||
.uk-form input[type=checkbox]:before { |
||||
display: block; |
||||
} |
||||
/* Radio */ |
||||
.uk-form input[type=radio]:checked:before { |
||||
content: ''; |
||||
width: 8px; |
||||
height: 8px; |
||||
margin: 2px auto 0; |
||||
border-radius: 50%; |
||||
background: #00a8e6; |
||||
} |
||||
/* Checkbox */ |
||||
.uk-form input[type=checkbox]:checked:before, |
||||
.uk-form input[type=checkbox]:indeterminate:before { |
||||
content: "\f00c"; |
||||
font-family: FontAwesome; |
||||
font-size: 12px; |
||||
-webkit-font-smoothing: antialiased; |
||||
text-align: center; |
||||
line-height: 12px; |
||||
color: #00a8e6; |
||||
} |
||||
.uk-form input[type=checkbox]:indeterminate:before { |
||||
content: "\f068"; |
||||
} |
||||
/* |
||||
* Disabled |
||||
*/ |
||||
.uk-form input[type=radio]:disabled, |
||||
.uk-form input[type=checkbox]:disabled { |
||||
border-color: #dddddd; |
||||
} |
||||
.uk-form input[type=radio]:disabled:checked:before { |
||||
background-color: #aaaaaa; |
||||
} |
||||
.uk-form input[type=checkbox]:disabled:checked:before, |
||||
.uk-form input[type=checkbox]:disabled:indeterminate:before { |
||||
color: #aaaaaa; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form input[type=radio],.uk-form input[type=checkbox]{display:inline-block;height:14px;width:14px;border:1px solid #aaa;overflow:hidden;margin-top:-4px;vertical-align:middle;-webkit-appearance:none;outline:0;background:0 0}.uk-form input[type=radio]{border-radius:50%}.uk-form input[type=checkbox]:before,.uk-form input[type=radio]:before{display:block}.uk-form input[type=radio]:checked:before{content:'';width:8px;height:8px;margin:2px auto 0;border-radius:50%;background:#00a8e6}.uk-form input[type=checkbox]:checked:before,.uk-form input[type=checkbox]:indeterminate:before{content:"\f00c";font-family:FontAwesome;font-size:12px;-webkit-font-smoothing:antialiased;text-align:center;line-height:12px;color:#00a8e6}.uk-form input[type=checkbox]:indeterminate:before{content:"\f068"}.uk-form input[type=checkbox]:disabled,.uk-form input[type=radio]:disabled{border-color:#ddd}.uk-form input[type=radio]:disabled:checked:before{background-color:#aaa}.uk-form input[type=checkbox]:disabled:checked:before,.uk-form input[type=checkbox]:disabled:indeterminate:before{color:#aaa} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form input[type=radio],.uk-form input[type=checkbox]{display:inline-block;height:14px;width:14px;border:1px solid #aaa;overflow:hidden;margin-top:-4px;vertical-align:middle;-webkit-appearance:none;outline:0;background:0 0}.uk-form input[type=radio]{border-radius:50%}.uk-form input[type=checkbox]:before,.uk-form input[type=radio]:before{display:block}.uk-form input[type=radio]:checked:before{content:'';width:8px;height:8px;margin:2px auto 0;border-radius:50%;background:#00a8e6}.uk-form input[type=checkbox]:checked:before,.uk-form input[type=checkbox]:indeterminate:before{content:"\f00c";font-family:FontAwesome;font-size:12px;-webkit-font-smoothing:antialiased;text-align:center;line-height:12px;color:#00a8e6}.uk-form input[type=checkbox]:indeterminate:before{content:"\f068"}.uk-form input[type=checkbox]:disabled,.uk-form input[type=radio]:disabled{border-color:#ddd}.uk-form input[type=radio]:disabled:checked:before{background-color:#aaa}.uk-form input[type=checkbox]:disabled:checked:before,.uk-form input[type=checkbox]:disabled:indeterminate:before{color:#aaa} |
||||
@ -0,0 +1,34 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form file |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Behave like form elements |
||||
* 2. Create position context for dropdowns |
||||
* 3. Clip content |
||||
*/ |
||||
.uk-form-file { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
overflow: hidden; |
||||
} |
||||
/* |
||||
* 1. Required for Firefox |
||||
* 2. Expand height and required for the cursor |
||||
*/ |
||||
.uk-form-file input[type="file"] { |
||||
position: absolute; |
||||
top: 0; |
||||
z-index: 1; |
||||
width: 100%; |
||||
opacity: 0; |
||||
cursor: pointer; |
||||
/* 1 */ |
||||
left: 0; |
||||
/* 2 */ |
||||
font-size: 500px; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form-file{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-file input[type=file]{position:absolute;top:0;z-index:1;width:100%;opacity:0;cursor:pointer;left:0;font-size:500px} |
||||
@ -0,0 +1,34 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form file |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Behave like form elements |
||||
* 2. Create position context for dropdowns |
||||
* 3. Clip content |
||||
*/ |
||||
.uk-form-file { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
overflow: hidden; |
||||
} |
||||
/* |
||||
* 1. Required for Firefox |
||||
* 2. Expand height and required for the cursor |
||||
*/ |
||||
.uk-form-file input[type="file"] { |
||||
position: absolute; |
||||
top: 0; |
||||
z-index: 1; |
||||
width: 100%; |
||||
opacity: 0; |
||||
cursor: pointer; |
||||
/* 1 */ |
||||
left: 0; |
||||
/* 2 */ |
||||
font-size: 500px; |
||||
} |
||||
@ -0,0 +1,34 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form file |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Behave like form elements |
||||
* 2. Create position context for dropdowns |
||||
* 3. Clip content |
||||
*/ |
||||
.uk-form-file { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
overflow: hidden; |
||||
} |
||||
/* |
||||
* 1. Required for Firefox |
||||
* 2. Expand height and required for the cursor |
||||
*/ |
||||
.uk-form-file input[type="file"] { |
||||
position: absolute; |
||||
top: 0; |
||||
z-index: 1; |
||||
width: 100%; |
||||
opacity: 0; |
||||
cursor: pointer; |
||||
/* 1 */ |
||||
left: 0; |
||||
/* 2 */ |
||||
font-size: 500px; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form-file{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-file input[type=file]{position:absolute;top:0;z-index:1;width:100%;opacity:0;cursor:pointer;left:0;font-size:500px} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form-file{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-file input[type=file]{position:absolute;top:0;z-index:1;width:100%;opacity:0;cursor:pointer;left:0;font-size:500px} |
||||
@ -0,0 +1,34 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form password |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Container width fits its content |
||||
* 2. Create position context |
||||
* 3. Prevent `inline-block` consequences |
||||
*/ |
||||
.uk-form-password { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
max-width: 100%; |
||||
} |
||||
.uk-form-password-toggle { |
||||
display: block; |
||||
position: absolute; |
||||
top: 50%; |
||||
right: 10px; |
||||
margin-top: -6px; |
||||
font-size: 13px; |
||||
line-height: 13px; |
||||
color: #999999; |
||||
} |
||||
.uk-form-password-toggle:hover { |
||||
color: #999999; |
||||
text-decoration: none; |
||||
} |
||||
.uk-form-password > input { |
||||
padding-right: 50px !important; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form-password{display:inline-block;position:relative;max-width:100%}.uk-form-password-toggle{display:block;position:absolute;top:50%;right:10px;margin-top:-6px;font-size:13px;line-height:13px;color:#999}.uk-form-password-toggle:hover{color:#999;text-decoration:none}.uk-form-password>input{padding-right:50px!important} |
||||
@ -0,0 +1,34 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form password |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Container width fits its content |
||||
* 2. Create position context |
||||
* 3. Prevent `inline-block` consequences |
||||
*/ |
||||
.uk-form-password { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
max-width: 100%; |
||||
} |
||||
.uk-form-password-toggle { |
||||
display: block; |
||||
position: absolute; |
||||
top: 50%; |
||||
right: 10px; |
||||
margin-top: -6px; |
||||
font-size: 13px; |
||||
line-height: 13px; |
||||
color: #999999; |
||||
} |
||||
.uk-form-password-toggle:hover { |
||||
color: #999999; |
||||
text-decoration: none; |
||||
} |
||||
.uk-form-password > input { |
||||
padding-right: 50px !important; |
||||
} |
||||
@ -0,0 +1,34 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form password |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Container width fits its content |
||||
* 2. Create position context |
||||
* 3. Prevent `inline-block` consequences |
||||
*/ |
||||
.uk-form-password { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
max-width: 100%; |
||||
} |
||||
.uk-form-password-toggle { |
||||
display: block; |
||||
position: absolute; |
||||
top: 50%; |
||||
right: 10px; |
||||
margin-top: -6px; |
||||
font-size: 13px; |
||||
line-height: 13px; |
||||
color: #999999; |
||||
} |
||||
.uk-form-password-toggle:hover { |
||||
color: #999999; |
||||
text-decoration: none; |
||||
} |
||||
.uk-form-password > input { |
||||
padding-right: 50px !important; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form-password{display:inline-block;position:relative;max-width:100%}.uk-form-password-toggle{display:block;position:absolute;top:50%;right:10px;margin-top:-6px;font-size:13px;line-height:13px;color:#999}.uk-form-password-toggle:hover{color:#999;text-decoration:none}.uk-form-password>input{padding-right:50px!important} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form-password{display:inline-block;position:relative;max-width:100%}.uk-form-password-toggle{display:block;position:absolute;top:50%;right:10px;margin-top:-6px;font-size:13px;line-height:13px;color:#999}.uk-form-password-toggle:hover{color:#999;text-decoration:none}.uk-form-password>input{padding-right:50px!important} |
||||
@ -0,0 +1,35 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form select |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Behave like form elements |
||||
* 2. Create position context for dropdowns |
||||
* 3. Clip content |
||||
*/ |
||||
.uk-form-select { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
overflow: hidden; |
||||
} |
||||
/* |
||||
* 1. Required for Firefox |
||||
* 1. Required for Webkit to make `height` work |
||||
*/ |
||||
.uk-form-select select { |
||||
position: absolute; |
||||
top: 0; |
||||
z-index: 1; |
||||
width: 100%; |
||||
height: 100%; |
||||
opacity: 0; |
||||
cursor: pointer; |
||||
/* 1 */ |
||||
left: 0; |
||||
/* 2 */ |
||||
-webkit-appearance: none; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form-select{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-select select{position:absolute;top:0;z-index:1;width:100%;height:100%;opacity:0;cursor:pointer;left:0;-webkit-appearance:none} |
||||
@ -0,0 +1,35 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form select |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Behave like form elements |
||||
* 2. Create position context for dropdowns |
||||
* 3. Clip content |
||||
*/ |
||||
.uk-form-select { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
overflow: hidden; |
||||
} |
||||
/* |
||||
* 1. Required for Firefox |
||||
* 1. Required for Webkit to make `height` work |
||||
*/ |
||||
.uk-form-select select { |
||||
position: absolute; |
||||
top: 0; |
||||
z-index: 1; |
||||
width: 100%; |
||||
height: 100%; |
||||
opacity: 0; |
||||
cursor: pointer; |
||||
/* 1 */ |
||||
left: 0; |
||||
/* 2 */ |
||||
-webkit-appearance: none; |
||||
} |
||||
@ -0,0 +1,35 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Form select |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Behave like form elements |
||||
* 2. Create position context for dropdowns |
||||
* 3. Clip content |
||||
*/ |
||||
.uk-form-select { |
||||
/* 1 */ |
||||
display: inline-block; |
||||
vertical-align: middle; |
||||
/* 2 */ |
||||
position: relative; |
||||
/* 3 */ |
||||
overflow: hidden; |
||||
} |
||||
/* |
||||
* 1. Required for Firefox |
||||
* 1. Required for Webkit to make `height` work |
||||
*/ |
||||
.uk-form-select select { |
||||
position: absolute; |
||||
top: 0; |
||||
z-index: 1; |
||||
width: 100%; |
||||
height: 100%; |
||||
opacity: 0; |
||||
cursor: pointer; |
||||
/* 1 */ |
||||
left: 0; |
||||
/* 2 */ |
||||
-webkit-appearance: none; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form-select{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-select select{position:absolute;top:0;z-index:1;width:100%;height:100%;opacity:0;cursor:pointer;left:0;-webkit-appearance:none} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-form-select{display:inline-block;vertical-align:middle;position:relative;overflow:hidden}.uk-form-select select{position:absolute;top:0;z-index:1;width:100%;height:100%;opacity:0;cursor:pointer;left:0;-webkit-appearance:none} |
||||
@ -0,0 +1,222 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: HTML editor |
||||
========================================================================== */ |
||||
/* Sub-object `uk-htmleditor-navbar` |
||||
========================================================================== */ |
||||
.uk-htmleditor-navbar { |
||||
background: #f5f5f5; |
||||
border: 1px solid rgba(0, 0, 0, 0.06); |
||||
border-top-left-radius: 4px; |
||||
border-top-right-radius: 4px; |
||||
} |
||||
/* |
||||
* Micro clearfix |
||||
*/ |
||||
.uk-htmleditor-navbar:before, |
||||
.uk-htmleditor-navbar:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-htmleditor-navbar:after { |
||||
clear: both; |
||||
} |
||||
/* Sub-object `uk-htmleditor-navbar-nav` |
||||
========================================================================== */ |
||||
.uk-htmleditor-navbar-nav { |
||||
margin: 0; |
||||
padding: 0; |
||||
list-style: none; |
||||
float: left; |
||||
} |
||||
.uk-htmleditor-navbar-nav > li { |
||||
float: left; |
||||
} |
||||
/* |
||||
* 1. Dimensions |
||||
* 2. Style |
||||
*/ |
||||
.uk-htmleditor-navbar-nav > li > a { |
||||
display: block; |
||||
box-sizing: border-box; |
||||
text-decoration: none; |
||||
/* 1 */ |
||||
height: 41px; |
||||
padding: 0 15px; |
||||
line-height: 40px; |
||||
/* 2 */ |
||||
color: #444444; |
||||
font-size: 11px; |
||||
cursor: pointer; |
||||
margin-top: -1px; |
||||
margin-left: -1px; |
||||
border: 1px solid transparent; |
||||
border-bottom-width: 0; |
||||
text-shadow: 0 1px 0 #ffffff; |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
* 2. Remove default focus style |
||||
*/ |
||||
.uk-htmleditor-navbar-nav > li:hover > a, |
||||
.uk-htmleditor-navbar-nav > li > a:focus { |
||||
background-color: #fafafa; |
||||
color: #444444; |
||||
outline: none; |
||||
/* 2 */ |
||||
position: relative; |
||||
z-index: 1; |
||||
border-left-color: rgba(0, 0, 0, 0.1); |
||||
border-right-color: rgba(0, 0, 0, 0.1); |
||||
border-top-color: rgba(0, 0, 0, 0.1); |
||||
} |
||||
/* OnClick */ |
||||
.uk-htmleditor-navbar-nav > li > a:active { |
||||
background-color: #eeeeee; |
||||
color: #444444; |
||||
border-left-color: rgba(0, 0, 0, 0.1); |
||||
border-right-color: rgba(0, 0, 0, 0.1); |
||||
border-top-color: rgba(0, 0, 0, 0.2); |
||||
} |
||||
/* Active */ |
||||
.uk-htmleditor-navbar-nav > li.uk-active > a { |
||||
background-color: #fafafa; |
||||
color: #444444; |
||||
border-left-color: rgba(0, 0, 0, 0.1); |
||||
border-right-color: rgba(0, 0, 0, 0.1); |
||||
border-top-color: rgba(0, 0, 0, 0.1); |
||||
} |
||||
/* Sub-object: `uk-htmleditor-navbar-flip` |
||||
========================================================================== */ |
||||
.uk-htmleditor-navbar-flip { |
||||
float: right; |
||||
} |
||||
/* Sub-object for special buttons |
||||
========================================================================== */ |
||||
[data-mode='split'] .uk-htmleditor-button-code, |
||||
[data-mode='split'] .uk-htmleditor-button-preview { |
||||
display: none; |
||||
} |
||||
/* Sub-object `uk-htmleditor-content` |
||||
========================================================================== */ |
||||
.uk-htmleditor-content { |
||||
border-left: 1px solid #dddddd; |
||||
border-right: 1px solid #dddddd; |
||||
border-bottom: 1px solid #dddddd; |
||||
background: #ffffff; |
||||
border-bottom-left-radius: 4px; |
||||
border-bottom-right-radius: 4px; |
||||
} |
||||
/* |
||||
* Micro clearfix |
||||
*/ |
||||
.uk-htmleditor-content:before, |
||||
.uk-htmleditor-content:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-htmleditor-content:after { |
||||
clear: both; |
||||
} |
||||
/* Modifier `uk-htmleditor-fullscreen` |
||||
========================================================================== */ |
||||
.uk-htmleditor-fullscreen { |
||||
position: fixed; |
||||
top: 0; |
||||
left: 0; |
||||
right: 0; |
||||
bottom: 0; |
||||
z-index: 990; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-htmleditor-content { |
||||
position: absolute; |
||||
top: 41px; |
||||
left: 0; |
||||
right: 0; |
||||
bottom: 0; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-icon-expand:before { |
||||
content: "\f066"; |
||||
} |
||||
/* Sub-objects `uk-htmleditor-code` and `uk-htmleditor-preview` |
||||
========================================================================== */ |
||||
.uk-htmleditor-code, |
||||
.uk-htmleditor-preview { |
||||
box-sizing: border-box; |
||||
} |
||||
.uk-htmleditor-preview { |
||||
padding: 20px; |
||||
overflow-y: scroll; |
||||
position: relative; |
||||
} |
||||
/* |
||||
* Tab view |
||||
*/ |
||||
[data-mode='tab'][data-active-tab='code'] .uk-htmleditor-preview, |
||||
[data-mode='tab'][data-active-tab='preview'] .uk-htmleditor-code { |
||||
display: none; |
||||
} |
||||
/* |
||||
* Split view |
||||
*/ |
||||
[data-mode='split'] .uk-htmleditor-code, |
||||
[data-mode='split'] .uk-htmleditor-preview { |
||||
float: left; |
||||
width: 50%; |
||||
} |
||||
[data-mode='split'] .uk-htmleditor-code { |
||||
border-right: 1px solid #eeeeee; |
||||
} |
||||
/* Sub-object `uk-htmleditor-iframe` |
||||
========================================================================== */ |
||||
.uk-htmleditor-iframe { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
/* CodeMirror modifications |
||||
========================================================================== */ |
||||
.uk-htmleditor .CodeMirror { |
||||
padding: 10px; |
||||
box-sizing: border-box; |
||||
} |
||||
/* |
||||
* Apply same `border-radius` as `uk-htmleditor-navbar` |
||||
*/ |
||||
.uk-htmleditor-navbar-nav:first-child > li:first-child > a { |
||||
border-top-left-radius: 4px; |
||||
} |
||||
/* |
||||
* Sub-modifier `uk-htmleditor-navbar-flip` |
||||
*/ |
||||
/* Collapse border */ |
||||
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav > li > a { |
||||
margin-left: 0; |
||||
margin-right: -1px; |
||||
} |
||||
/* Apply same `border-radius` as `uk-htmleditor-navbar` */ |
||||
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:first-child > li:first-child > a { |
||||
border-top-left-radius: 0; |
||||
} |
||||
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:last-child > li:last-child > a { |
||||
border-top-right-radius: 4px; |
||||
} |
||||
/* |
||||
* Sub-modifier `uk-htmleditor-fullscreen` |
||||
*/ |
||||
.uk-htmleditor-fullscreen .uk-htmleditor-navbar { |
||||
border-top: none; |
||||
border-left: none; |
||||
border-right: none; |
||||
border-radius: 0; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-htmleditor-content { |
||||
border: none; |
||||
border-radius: 0; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-htmleditor-navbar-nav > li > a { |
||||
border-radius: 0 !important; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-htmleditor-navbar{background:#f5f5f5;border:1px solid rgba(0,0,0,.06);border-top-left-radius:4px;border-top-right-radius:4px}.uk-htmleditor-navbar:after,.uk-htmleditor-navbar:before{content:"";display:table}.uk-htmleditor-navbar:after{clear:both}.uk-htmleditor-navbar-nav{margin:0;padding:0;list-style:none;float:left}.uk-htmleditor-navbar-nav>li{float:left}.uk-htmleditor-navbar-nav>li>a{display:block;box-sizing:border-box;text-decoration:none;height:41px;padding:0 15px;line-height:40px;color:#444;font-size:11px;cursor:pointer;margin-top:-1px;margin-left:-1px;border:1px solid transparent;border-bottom-width:0;text-shadow:0 1px 0 #fff}.uk-htmleditor-navbar-nav>li:hover>a,.uk-htmleditor-navbar-nav>li>a:focus{background-color:#fafafa;color:#444;outline:0;position:relative;z-index:1;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.1)}.uk-htmleditor-navbar-nav>li>a:active{background-color:#eee;color:#444;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.2)}.uk-htmleditor-navbar-nav>li.uk-active>a{background-color:#fafafa;color:#444;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.1)}.uk-htmleditor-navbar-flip{float:right}[data-mode=split] .uk-htmleditor-button-code,[data-mode=split] .uk-htmleditor-button-preview{display:none}.uk-htmleditor-content{border-left:1px solid #ddd;border-right:1px solid #ddd;border-bottom:1px solid #ddd;background:#fff;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.uk-htmleditor-content:after,.uk-htmleditor-content:before{content:"";display:table}.uk-htmleditor-content:after{clear:both}.uk-htmleditor-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;z-index:990}.uk-htmleditor-fullscreen .uk-htmleditor-content{position:absolute;top:41px;left:0;right:0;bottom:0}.uk-htmleditor-fullscreen .uk-icon-expand:before{content:"\f066"}.uk-htmleditor-code,.uk-htmleditor-preview{box-sizing:border-box}.uk-htmleditor-preview{padding:20px;overflow-y:scroll;position:relative}[data-mode=tab][data-active-tab=code] .uk-htmleditor-preview,[data-mode=tab][data-active-tab=preview] .uk-htmleditor-code{display:none}[data-mode=split] .uk-htmleditor-code,[data-mode=split] .uk-htmleditor-preview{float:left;width:50%}[data-mode=split] .uk-htmleditor-code{border-right:1px solid #eee}.uk-htmleditor-iframe{position:absolute;top:0;left:0;width:100%;height:100%}.uk-htmleditor .CodeMirror{padding:10px;box-sizing:border-box}.uk-htmleditor-navbar-nav:first-child>li:first-child>a{border-top-left-radius:4px}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav>li>a{margin-left:0;margin-right:-1px}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:first-child>li:first-child>a{border-top-left-radius:0}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:last-child>li:last-child>a{border-top-right-radius:4px}.uk-htmleditor-fullscreen .uk-htmleditor-navbar{border-top:none;border-left:none;border-right:none;border-radius:0}.uk-htmleditor-fullscreen .uk-htmleditor-content{border:none;border-radius:0}.uk-htmleditor-fullscreen .uk-htmleditor-navbar-nav>li>a{border-radius:0!important} |
||||
@ -0,0 +1,164 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: HTML editor |
||||
========================================================================== */ |
||||
/* Sub-object `uk-htmleditor-navbar` |
||||
========================================================================== */ |
||||
.uk-htmleditor-navbar { |
||||
background: #eeeeee; |
||||
} |
||||
/* |
||||
* Micro clearfix |
||||
*/ |
||||
.uk-htmleditor-navbar:before, |
||||
.uk-htmleditor-navbar:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-htmleditor-navbar:after { |
||||
clear: both; |
||||
} |
||||
/* Sub-object `uk-htmleditor-navbar-nav` |
||||
========================================================================== */ |
||||
.uk-htmleditor-navbar-nav { |
||||
margin: 0; |
||||
padding: 0; |
||||
list-style: none; |
||||
float: left; |
||||
} |
||||
.uk-htmleditor-navbar-nav > li { |
||||
float: left; |
||||
} |
||||
/* |
||||
* 1. Dimensions |
||||
* 2. Style |
||||
*/ |
||||
.uk-htmleditor-navbar-nav > li > a { |
||||
display: block; |
||||
box-sizing: border-box; |
||||
text-decoration: none; |
||||
/* 1 */ |
||||
height: 40px; |
||||
padding: 0 15px; |
||||
line-height: 40px; |
||||
/* 2 */ |
||||
color: #444444; |
||||
font-size: 11px; |
||||
cursor: pointer; |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
* 2. Remove default focus style |
||||
*/ |
||||
.uk-htmleditor-navbar-nav > li:hover > a, |
||||
.uk-htmleditor-navbar-nav > li > a:focus { |
||||
background-color: #f5f5f5; |
||||
color: #444444; |
||||
outline: none; |
||||
/* 2 */ |
||||
} |
||||
/* OnClick */ |
||||
.uk-htmleditor-navbar-nav > li > a:active { |
||||
background-color: #dddddd; |
||||
color: #444444; |
||||
} |
||||
/* Active */ |
||||
.uk-htmleditor-navbar-nav > li.uk-active > a { |
||||
background-color: #f5f5f5; |
||||
color: #444444; |
||||
} |
||||
/* Sub-object: `uk-htmleditor-navbar-flip` |
||||
========================================================================== */ |
||||
.uk-htmleditor-navbar-flip { |
||||
float: right; |
||||
} |
||||
/* Sub-object for special buttons |
||||
========================================================================== */ |
||||
[data-mode='split'] .uk-htmleditor-button-code, |
||||
[data-mode='split'] .uk-htmleditor-button-preview { |
||||
display: none; |
||||
} |
||||
/* Sub-object `uk-htmleditor-content` |
||||
========================================================================== */ |
||||
.uk-htmleditor-content { |
||||
border-left: 1px solid #dddddd; |
||||
border-right: 1px solid #dddddd; |
||||
border-bottom: 1px solid #dddddd; |
||||
background: #ffffff; |
||||
} |
||||
/* |
||||
* Micro clearfix |
||||
*/ |
||||
.uk-htmleditor-content:before, |
||||
.uk-htmleditor-content:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-htmleditor-content:after { |
||||
clear: both; |
||||
} |
||||
/* Modifier `uk-htmleditor-fullscreen` |
||||
========================================================================== */ |
||||
.uk-htmleditor-fullscreen { |
||||
position: fixed; |
||||
top: 0; |
||||
left: 0; |
||||
right: 0; |
||||
bottom: 0; |
||||
z-index: 990; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-htmleditor-content { |
||||
position: absolute; |
||||
top: 40px; |
||||
left: 0; |
||||
right: 0; |
||||
bottom: 0; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-icon-expand:before { |
||||
content: "\f066"; |
||||
} |
||||
/* Sub-objects `uk-htmleditor-code` and `uk-htmleditor-preview` |
||||
========================================================================== */ |
||||
.uk-htmleditor-code, |
||||
.uk-htmleditor-preview { |
||||
box-sizing: border-box; |
||||
} |
||||
.uk-htmleditor-preview { |
||||
padding: 20px; |
||||
overflow-y: scroll; |
||||
position: relative; |
||||
} |
||||
/* |
||||
* Tab view |
||||
*/ |
||||
[data-mode='tab'][data-active-tab='code'] .uk-htmleditor-preview, |
||||
[data-mode='tab'][data-active-tab='preview'] .uk-htmleditor-code { |
||||
display: none; |
||||
} |
||||
/* |
||||
* Split view |
||||
*/ |
||||
[data-mode='split'] .uk-htmleditor-code, |
||||
[data-mode='split'] .uk-htmleditor-preview { |
||||
float: left; |
||||
width: 50%; |
||||
} |
||||
[data-mode='split'] .uk-htmleditor-code { |
||||
border-right: 1px solid #eeeeee; |
||||
} |
||||
/* Sub-object `uk-htmleditor-iframe` |
||||
========================================================================== */ |
||||
.uk-htmleditor-iframe { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
/* CodeMirror modifications |
||||
========================================================================== */ |
||||
.uk-htmleditor .CodeMirror { |
||||
padding: 10px; |
||||
box-sizing: border-box; |
||||
} |
||||
@ -0,0 +1,229 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: HTML editor |
||||
========================================================================== */ |
||||
/* Sub-object `uk-htmleditor-navbar` |
||||
========================================================================== */ |
||||
.uk-htmleditor-navbar { |
||||
background: #f7f7f7; |
||||
border: 1px solid rgba(0, 0, 0, 0.1); |
||||
border-bottom-color: rgba(0, 0, 0, 0.2); |
||||
border-top-left-radius: 4px; |
||||
border-top-right-radius: 4px; |
||||
background-origin: border-box; |
||||
background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee); |
||||
background-image: linear-gradient(to bottom, #ffffff, #eeeeee); |
||||
} |
||||
/* |
||||
* Micro clearfix |
||||
*/ |
||||
.uk-htmleditor-navbar:before, |
||||
.uk-htmleditor-navbar:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-htmleditor-navbar:after { |
||||
clear: both; |
||||
} |
||||
/* Sub-object `uk-htmleditor-navbar-nav` |
||||
========================================================================== */ |
||||
.uk-htmleditor-navbar-nav { |
||||
margin: 0; |
||||
padding: 0; |
||||
list-style: none; |
||||
float: left; |
||||
} |
||||
.uk-htmleditor-navbar-nav > li { |
||||
float: left; |
||||
} |
||||
/* |
||||
* 1. Dimensions |
||||
* 2. Style |
||||
*/ |
||||
.uk-htmleditor-navbar-nav > li > a { |
||||
display: block; |
||||
box-sizing: border-box; |
||||
text-decoration: none; |
||||
/* 1 */ |
||||
height: 41px; |
||||
padding: 0 15px; |
||||
line-height: 40px; |
||||
/* 2 */ |
||||
color: #444444; |
||||
font-size: 11px; |
||||
cursor: pointer; |
||||
margin-top: -1px; |
||||
margin-left: -1px; |
||||
border: 1px solid transparent; |
||||
border-bottom-width: 0; |
||||
text-shadow: 0 1px 0 #ffffff; |
||||
} |
||||
/* |
||||
* Hover |
||||
* 1. Apply hover style also to focus state |
||||
* 2. Remove default focus style |
||||
*/ |
||||
.uk-htmleditor-navbar-nav > li:hover > a, |
||||
.uk-htmleditor-navbar-nav > li > a:focus { |
||||
background-color: transparent; |
||||
color: #444444; |
||||
outline: none; |
||||
/* 2 */ |
||||
position: relative; |
||||
z-index: 1; |
||||
border-left-color: rgba(0, 0, 0, 0.1); |
||||
border-right-color: rgba(0, 0, 0, 0.1); |
||||
border-top-color: rgba(0, 0, 0, 0.1); |
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1); |
||||
} |
||||
/* OnClick */ |
||||
.uk-htmleditor-navbar-nav > li > a:active { |
||||
background-color: #f5f5f5; |
||||
color: #444444; |
||||
border-left-color: rgba(0, 0, 0, 0.1); |
||||
border-right-color: rgba(0, 0, 0, 0.1); |
||||
border-top-color: rgba(0, 0, 0, 0.2); |
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1); |
||||
} |
||||
/* Active */ |
||||
.uk-htmleditor-navbar-nav > li.uk-active > a { |
||||
background-color: #fafafa; |
||||
color: #444444; |
||||
border-left-color: rgba(0, 0, 0, 0.1); |
||||
border-right-color: rgba(0, 0, 0, 0.1); |
||||
border-top-color: rgba(0, 0, 0, 0.2); |
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1); |
||||
} |
||||
/* Sub-object: `uk-htmleditor-navbar-flip` |
||||
========================================================================== */ |
||||
.uk-htmleditor-navbar-flip { |
||||
float: right; |
||||
} |
||||
/* Sub-object for special buttons |
||||
========================================================================== */ |
||||
[data-mode='split'] .uk-htmleditor-button-code, |
||||
[data-mode='split'] .uk-htmleditor-button-preview { |
||||
display: none; |
||||
} |
||||
/* Sub-object `uk-htmleditor-content` |
||||
========================================================================== */ |
||||
.uk-htmleditor-content { |
||||
border-left: 1px solid #dddddd; |
||||
border-right: 1px solid #dddddd; |
||||
border-bottom: 1px solid #dddddd; |
||||
background: #ffffff; |
||||
border-bottom-left-radius: 4px; |
||||
border-bottom-right-radius: 4px; |
||||
} |
||||
/* |
||||
* Micro clearfix |
||||
*/ |
||||
.uk-htmleditor-content:before, |
||||
.uk-htmleditor-content:after { |
||||
content: ""; |
||||
display: table; |
||||
} |
||||
.uk-htmleditor-content:after { |
||||
clear: both; |
||||
} |
||||
/* Modifier `uk-htmleditor-fullscreen` |
||||
========================================================================== */ |
||||
.uk-htmleditor-fullscreen { |
||||
position: fixed; |
||||
top: 0; |
||||
left: 0; |
||||
right: 0; |
||||
bottom: 0; |
||||
z-index: 990; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-htmleditor-content { |
||||
position: absolute; |
||||
top: 41px; |
||||
left: 0; |
||||
right: 0; |
||||
bottom: 0; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-icon-expand:before { |
||||
content: "\f066"; |
||||
} |
||||
/* Sub-objects `uk-htmleditor-code` and `uk-htmleditor-preview` |
||||
========================================================================== */ |
||||
.uk-htmleditor-code, |
||||
.uk-htmleditor-preview { |
||||
box-sizing: border-box; |
||||
} |
||||
.uk-htmleditor-preview { |
||||
padding: 20px; |
||||
overflow-y: scroll; |
||||
position: relative; |
||||
} |
||||
/* |
||||
* Tab view |
||||
*/ |
||||
[data-mode='tab'][data-active-tab='code'] .uk-htmleditor-preview, |
||||
[data-mode='tab'][data-active-tab='preview'] .uk-htmleditor-code { |
||||
display: none; |
||||
} |
||||
/* |
||||
* Split view |
||||
*/ |
||||
[data-mode='split'] .uk-htmleditor-code, |
||||
[data-mode='split'] .uk-htmleditor-preview { |
||||
float: left; |
||||
width: 50%; |
||||
} |
||||
[data-mode='split'] .uk-htmleditor-code { |
||||
border-right: 1px solid #eeeeee; |
||||
} |
||||
/* Sub-object `uk-htmleditor-iframe` |
||||
========================================================================== */ |
||||
.uk-htmleditor-iframe { |
||||
position: absolute; |
||||
top: 0; |
||||
left: 0; |
||||
width: 100%; |
||||
height: 100%; |
||||
} |
||||
/* CodeMirror modifications |
||||
========================================================================== */ |
||||
.uk-htmleditor .CodeMirror { |
||||
padding: 10px; |
||||
box-sizing: border-box; |
||||
} |
||||
/* |
||||
* Apply same `border-radius` as `uk-htmleditor-navbar` |
||||
*/ |
||||
.uk-htmleditor-navbar-nav:first-child > li:first-child > a { |
||||
border-top-left-radius: 4px; |
||||
} |
||||
/* |
||||
* Sub-modifier `uk-htmleditor-navbar-flip` |
||||
*/ |
||||
/* Collapse border */ |
||||
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav > li > a { |
||||
margin-left: 0; |
||||
margin-right: -1px; |
||||
} |
||||
/* Apply same `border-radius` as `uk-htmleditor-navbar` */ |
||||
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:first-child > li:first-child > a { |
||||
border-top-left-radius: 0; |
||||
} |
||||
.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:last-child > li:last-child > a { |
||||
border-top-right-radius: 4px; |
||||
} |
||||
/* |
||||
* Sub-modifier `uk-htmleditor-fullscreen` |
||||
*/ |
||||
.uk-htmleditor-fullscreen .uk-htmleditor-navbar { |
||||
border-top: none; |
||||
border-left: none; |
||||
border-right: none; |
||||
border-radius: 0; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-htmleditor-content { |
||||
border: none; |
||||
border-radius: 0; |
||||
} |
||||
.uk-htmleditor-fullscreen .uk-htmleditor-navbar-nav > li > a { |
||||
border-radius: 0 !important; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-htmleditor-navbar{background:#f7f7f7;border:1px solid rgba(0,0,0,.1);border-bottom-color:rgba(0,0,0,.2);border-top-left-radius:4px;border-top-right-radius:4px;background-origin:border-box;background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:linear-gradient(to bottom,#fff,#eee)}.uk-htmleditor-navbar:after,.uk-htmleditor-navbar:before{content:"";display:table}.uk-htmleditor-navbar:after{clear:both}.uk-htmleditor-navbar-nav{margin:0;padding:0;list-style:none;float:left}.uk-htmleditor-navbar-nav>li{float:left}.uk-htmleditor-navbar-nav>li>a{display:block;box-sizing:border-box;text-decoration:none;height:41px;padding:0 15px;line-height:40px;color:#444;font-size:11px;cursor:pointer;margin-top:-1px;margin-left:-1px;border:1px solid transparent;border-bottom-width:0;text-shadow:0 1px 0 #fff}.uk-htmleditor-navbar-nav>li:hover>a,.uk-htmleditor-navbar-nav>li>a:focus{background-color:transparent;color:#444;outline:0;position:relative;z-index:1;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.1);box-shadow:inset 0 2px 4px rgba(0,0,0,.1)}.uk-htmleditor-navbar-nav>li>a:active{background-color:#f5f5f5;color:#444;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.2);box-shadow:inset 0 2px 4px rgba(0,0,0,.1)}.uk-htmleditor-navbar-nav>li.uk-active>a{background-color:#fafafa;color:#444;border-left-color:rgba(0,0,0,.1);border-right-color:rgba(0,0,0,.1);border-top-color:rgba(0,0,0,.2);box-shadow:inset 0 2px 4px rgba(0,0,0,.1)}.uk-htmleditor-navbar-flip{float:right}[data-mode=split] .uk-htmleditor-button-code,[data-mode=split] .uk-htmleditor-button-preview{display:none}.uk-htmleditor-content{border-left:1px solid #ddd;border-right:1px solid #ddd;border-bottom:1px solid #ddd;background:#fff;border-bottom-left-radius:4px;border-bottom-right-radius:4px}.uk-htmleditor-content:after,.uk-htmleditor-content:before{content:"";display:table}.uk-htmleditor-content:after{clear:both}.uk-htmleditor-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;z-index:990}.uk-htmleditor-fullscreen .uk-htmleditor-content{position:absolute;top:41px;left:0;right:0;bottom:0}.uk-htmleditor-fullscreen .uk-icon-expand:before{content:"\f066"}.uk-htmleditor-code,.uk-htmleditor-preview{box-sizing:border-box}.uk-htmleditor-preview{padding:20px;overflow-y:scroll;position:relative}[data-mode=tab][data-active-tab=code] .uk-htmleditor-preview,[data-mode=tab][data-active-tab=preview] .uk-htmleditor-code{display:none}[data-mode=split] .uk-htmleditor-code,[data-mode=split] .uk-htmleditor-preview{float:left;width:50%}[data-mode=split] .uk-htmleditor-code{border-right:1px solid #eee}.uk-htmleditor-iframe{position:absolute;top:0;left:0;width:100%;height:100%}.uk-htmleditor .CodeMirror{padding:10px;box-sizing:border-box}.uk-htmleditor-navbar-nav:first-child>li:first-child>a{border-top-left-radius:4px}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav>li>a{margin-left:0;margin-right:-1px}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:first-child>li:first-child>a{border-top-left-radius:0}.uk-htmleditor-navbar-flip .uk-htmleditor-navbar-nav:last-child>li:last-child>a{border-top-right-radius:4px}.uk-htmleditor-fullscreen .uk-htmleditor-navbar{border-top:none;border-left:none;border-right:none;border-radius:0}.uk-htmleditor-fullscreen .uk-htmleditor-content{border:none;border-radius:0}.uk-htmleditor-fullscreen .uk-htmleditor-navbar-nav>li>a{border-radius:0!important} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-htmleditor-navbar{background:#eee}.uk-htmleditor-navbar:after,.uk-htmleditor-navbar:before{content:"";display:table}.uk-htmleditor-navbar:after{clear:both}.uk-htmleditor-navbar-nav{margin:0;padding:0;list-style:none;float:left}.uk-htmleditor-navbar-nav>li{float:left}.uk-htmleditor-navbar-nav>li>a{display:block;box-sizing:border-box;text-decoration:none;height:40px;padding:0 15px;line-height:40px;color:#444;font-size:11px;cursor:pointer}.uk-htmleditor-navbar-nav>li:hover>a,.uk-htmleditor-navbar-nav>li>a:focus{background-color:#f5f5f5;color:#444;outline:0}.uk-htmleditor-navbar-nav>li>a:active{background-color:#ddd;color:#444}.uk-htmleditor-navbar-nav>li.uk-active>a{background-color:#f5f5f5;color:#444}.uk-htmleditor-navbar-flip{float:right}[data-mode=split] .uk-htmleditor-button-code,[data-mode=split] .uk-htmleditor-button-preview{display:none}.uk-htmleditor-content{border-left:1px solid #ddd;border-right:1px solid #ddd;border-bottom:1px solid #ddd;background:#fff}.uk-htmleditor-content:after,.uk-htmleditor-content:before{content:"";display:table}.uk-htmleditor-content:after{clear:both}.uk-htmleditor-fullscreen{position:fixed;top:0;left:0;right:0;bottom:0;z-index:990}.uk-htmleditor-fullscreen .uk-htmleditor-content{position:absolute;top:40px;left:0;right:0;bottom:0}.uk-htmleditor-fullscreen .uk-icon-expand:before{content:"\f066"}.uk-htmleditor-code,.uk-htmleditor-preview{box-sizing:border-box}.uk-htmleditor-preview{padding:20px;overflow-y:scroll;position:relative}[data-mode=tab][data-active-tab=code] .uk-htmleditor-preview,[data-mode=tab][data-active-tab=preview] .uk-htmleditor-code{display:none}[data-mode=split] .uk-htmleditor-code,[data-mode=split] .uk-htmleditor-preview{float:left;width:50%}[data-mode=split] .uk-htmleditor-code{border-right:1px solid #eee}.uk-htmleditor-iframe{position:absolute;top:0;left:0;width:100%;height:100%}.uk-htmleditor .CodeMirror{padding:10px;box-sizing:border-box} |
||||
@ -0,0 +1,135 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Nestable |
||||
========================================================================== */ |
||||
.uk-nestable { |
||||
padding: 0; |
||||
list-style: none; |
||||
} |
||||
/* |
||||
* Disables the default callout shown when you touch and hold a touch target |
||||
* Currently only works in Webkit |
||||
*/ |
||||
.uk-nestable a, |
||||
.uk-nestable img { |
||||
-webkit-touch-callout: none; |
||||
} |
||||
/* Sub-object `uk-nestable-list` |
||||
========================================================================== */ |
||||
.uk-nestable-list { |
||||
margin: 0; |
||||
padding-left: 40px; |
||||
list-style: none; |
||||
} |
||||
/* Sub-modifier `uk-nestable-item` |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Deactivate browser touch actions in IE11 |
||||
*/ |
||||
.uk-nestable-item { |
||||
/* 1 */ |
||||
touch-action: none; |
||||
} |
||||
.uk-nestable-item + .uk-nestable-item { |
||||
margin-top: 10px; |
||||
} |
||||
.uk-nestable-list:not(.uk-nestable-dragged) > .uk-nestable-item:first-child { |
||||
margin-top: 10px; |
||||
} |
||||
/* Sub-modifier `uk-nestable-dragged` |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Reset style |
||||
*/ |
||||
.uk-nestable-dragged { |
||||
position: absolute; |
||||
z-index: 1050; |
||||
pointer-events: none; |
||||
/* 1 */ |
||||
padding-left: 0; |
||||
} |
||||
/* Sub-modifier `uk-nestable-placeholder` |
||||
========================================================================== */ |
||||
.uk-nestable-placeholder { |
||||
position: relative; |
||||
} |
||||
.uk-nestable-placeholder > * { |
||||
opacity: 0; |
||||
} |
||||
.uk-nestable-placeholder:after { |
||||
content: ''; |
||||
position: absolute; |
||||
top: 0; |
||||
bottom: 0; |
||||
left: 0; |
||||
right: 0; |
||||
border: 1px dashed #dddddd; |
||||
opacity: 1; |
||||
} |
||||
/* Empty List |
||||
========================================================================== */ |
||||
.uk-nestable-empty { |
||||
min-height: 30px; |
||||
} |
||||
/* Sub-object `uk-nestable-handle` |
||||
========================================================================== */ |
||||
/* |
||||
* Deactivate browser touch actions in IE11 |
||||
*/ |
||||
.uk-nestable-handle { |
||||
touch-action: none; |
||||
} |
||||
/* Hover */ |
||||
.uk-nestable-handle:hover { |
||||
cursor: move; |
||||
} |
||||
/* Sub-object `uk-nestable-moving` |
||||
========================================================================== */ |
||||
.uk-nestable-moving, |
||||
.uk-nestable-moving * { |
||||
cursor: move; |
||||
} |
||||
/* [data-nestable-action='toggle'] |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Makes text unselectable. Happens if double clicked by mistake |
||||
*/ |
||||
[data-nestable-action='toggle'] { |
||||
cursor: pointer; |
||||
/* 1 */ |
||||
-moz-user-select: none; |
||||
-webkit-user-select: none; |
||||
-ms-user-select: none; |
||||
user-select: none; |
||||
} |
||||
/* Sub-object `.uk-nestable-toggle` |
||||
========================================================================== */ |
||||
.uk-nestable-toggle { |
||||
display: inline-block; |
||||
visibility: hidden; |
||||
} |
||||
.uk-nestable-toggle:after { |
||||
content: "\f147"; |
||||
font-family: FontAwesome; |
||||
} |
||||
.uk-parent > :not(.uk-nestable-list) .uk-nestable-toggle { |
||||
visibility: visible; |
||||
} |
||||
/* |
||||
* Collapsed |
||||
*/ |
||||
.uk-collapsed .uk-nestable-list { |
||||
display: none; |
||||
} |
||||
.uk-collapsed .uk-nestable-toggle:after { |
||||
content: "\f196"; |
||||
} |
||||
/* Sub-object `uk-nestable-panel` |
||||
========================================================================== */ |
||||
.uk-nestable-panel { |
||||
padding: 5px; |
||||
background: #f5f5f5; |
||||
border-radius: 4px; |
||||
border: 1px solid rgba(0, 0, 0, 0.06); |
||||
text-shadow: 0 1px 0 #ffffff; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-nestable{padding:0;list-style:none}.uk-nestable a,.uk-nestable img{-webkit-touch-callout:none}.uk-nestable-list{margin:0;padding-left:40px;list-style:none}.uk-nestable-item{touch-action:none}.uk-nestable-item+.uk-nestable-item{margin-top:10px}.uk-nestable-list:not(.uk-nestable-dragged)>.uk-nestable-item:first-child{margin-top:10px}.uk-nestable-dragged{position:absolute;z-index:1050;pointer-events:none;padding-left:0}.uk-nestable-placeholder{position:relative}.uk-nestable-placeholder>*{opacity:0}.uk-nestable-placeholder:after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border:1px dashed #ddd;opacity:1}.uk-nestable-empty{min-height:30px}.uk-nestable-handle{touch-action:none}.uk-nestable-handle:hover{cursor:move}.uk-nestable-moving,.uk-nestable-moving *{cursor:move}[data-nestable-action=toggle]{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.uk-nestable-toggle{display:inline-block;visibility:hidden}.uk-nestable-toggle:after{content:"\f147";font-family:FontAwesome}.uk-parent>:not(.uk-nestable-list) .uk-nestable-toggle{visibility:visible}.uk-collapsed .uk-nestable-list{display:none}.uk-collapsed .uk-nestable-toggle:after{content:"\f196"}.uk-nestable-panel{padding:5px;background:#f5f5f5;border-radius:4px;border:1px solid rgba(0,0,0,.06);text-shadow:0 1px 0 #fff} |
||||
@ -0,0 +1,132 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Nestable |
||||
========================================================================== */ |
||||
.uk-nestable { |
||||
padding: 0; |
||||
list-style: none; |
||||
} |
||||
/* |
||||
* Disables the default callout shown when you touch and hold a touch target |
||||
* Currently only works in Webkit |
||||
*/ |
||||
.uk-nestable a, |
||||
.uk-nestable img { |
||||
-webkit-touch-callout: none; |
||||
} |
||||
/* Sub-object `uk-nestable-list` |
||||
========================================================================== */ |
||||
.uk-nestable-list { |
||||
margin: 0; |
||||
padding-left: 40px; |
||||
list-style: none; |
||||
} |
||||
/* Sub-modifier `uk-nestable-item` |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Deactivate browser touch actions in IE11 |
||||
*/ |
||||
.uk-nestable-item { |
||||
/* 1 */ |
||||
touch-action: none; |
||||
} |
||||
.uk-nestable-item + .uk-nestable-item { |
||||
margin-top: 10px; |
||||
} |
||||
.uk-nestable-list:not(.uk-nestable-dragged) > .uk-nestable-item:first-child { |
||||
margin-top: 10px; |
||||
} |
||||
/* Sub-modifier `uk-nestable-dragged` |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Reset style |
||||
*/ |
||||
.uk-nestable-dragged { |
||||
position: absolute; |
||||
z-index: 1050; |
||||
pointer-events: none; |
||||
/* 1 */ |
||||
padding-left: 0; |
||||
} |
||||
/* Sub-modifier `uk-nestable-placeholder` |
||||
========================================================================== */ |
||||
.uk-nestable-placeholder { |
||||
position: relative; |
||||
} |
||||
.uk-nestable-placeholder > * { |
||||
opacity: 0; |
||||
} |
||||
.uk-nestable-placeholder:after { |
||||
content: ''; |
||||
position: absolute; |
||||
top: 0; |
||||
bottom: 0; |
||||
left: 0; |
||||
right: 0; |
||||
border: 1px dashed #dddddd; |
||||
opacity: 1; |
||||
} |
||||
/* Empty List |
||||
========================================================================== */ |
||||
.uk-nestable-empty { |
||||
min-height: 30px; |
||||
} |
||||
/* Sub-object `uk-nestable-handle` |
||||
========================================================================== */ |
||||
/* |
||||
* Deactivate browser touch actions in IE11 |
||||
*/ |
||||
.uk-nestable-handle { |
||||
touch-action: none; |
||||
} |
||||
/* Hover */ |
||||
.uk-nestable-handle:hover { |
||||
cursor: move; |
||||
} |
||||
/* Sub-object `uk-nestable-moving` |
||||
========================================================================== */ |
||||
.uk-nestable-moving, |
||||
.uk-nestable-moving * { |
||||
cursor: move; |
||||
} |
||||
/* [data-nestable-action='toggle'] |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Makes text unselectable. Happens if double clicked by mistake |
||||
*/ |
||||
[data-nestable-action='toggle'] { |
||||
cursor: pointer; |
||||
/* 1 */ |
||||
-moz-user-select: none; |
||||
-webkit-user-select: none; |
||||
-ms-user-select: none; |
||||
user-select: none; |
||||
} |
||||
/* Sub-object `.uk-nestable-toggle` |
||||
========================================================================== */ |
||||
.uk-nestable-toggle { |
||||
display: inline-block; |
||||
visibility: hidden; |
||||
} |
||||
.uk-nestable-toggle:after { |
||||
content: "\f147"; |
||||
font-family: FontAwesome; |
||||
} |
||||
.uk-parent > :not(.uk-nestable-list) .uk-nestable-toggle { |
||||
visibility: visible; |
||||
} |
||||
/* |
||||
* Collapsed |
||||
*/ |
||||
.uk-collapsed .uk-nestable-list { |
||||
display: none; |
||||
} |
||||
.uk-collapsed .uk-nestable-toggle:after { |
||||
content: "\f196"; |
||||
} |
||||
/* Sub-object `uk-nestable-panel` |
||||
========================================================================== */ |
||||
.uk-nestable-panel { |
||||
padding: 5px; |
||||
background: #f5f5f5; |
||||
} |
||||
@ -0,0 +1,139 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Nestable |
||||
========================================================================== */ |
||||
.uk-nestable { |
||||
padding: 0; |
||||
list-style: none; |
||||
} |
||||
/* |
||||
* Disables the default callout shown when you touch and hold a touch target |
||||
* Currently only works in Webkit |
||||
*/ |
||||
.uk-nestable a, |
||||
.uk-nestable img { |
||||
-webkit-touch-callout: none; |
||||
} |
||||
/* Sub-object `uk-nestable-list` |
||||
========================================================================== */ |
||||
.uk-nestable-list { |
||||
margin: 0; |
||||
padding-left: 40px; |
||||
list-style: none; |
||||
} |
||||
/* Sub-modifier `uk-nestable-item` |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Deactivate browser touch actions in IE11 |
||||
*/ |
||||
.uk-nestable-item { |
||||
/* 1 */ |
||||
touch-action: none; |
||||
} |
||||
.uk-nestable-item + .uk-nestable-item { |
||||
margin-top: 10px; |
||||
} |
||||
.uk-nestable-list:not(.uk-nestable-dragged) > .uk-nestable-item:first-child { |
||||
margin-top: 10px; |
||||
} |
||||
/* Sub-modifier `uk-nestable-dragged` |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Reset style |
||||
*/ |
||||
.uk-nestable-dragged { |
||||
position: absolute; |
||||
z-index: 1050; |
||||
pointer-events: none; |
||||
/* 1 */ |
||||
padding-left: 0; |
||||
} |
||||
/* Sub-modifier `uk-nestable-placeholder` |
||||
========================================================================== */ |
||||
.uk-nestable-placeholder { |
||||
position: relative; |
||||
} |
||||
.uk-nestable-placeholder > * { |
||||
opacity: 0; |
||||
} |
||||
.uk-nestable-placeholder:after { |
||||
content: ''; |
||||
position: absolute; |
||||
top: 0; |
||||
bottom: 0; |
||||
left: 0; |
||||
right: 0; |
||||
border: 1px dashed #dddddd; |
||||
opacity: 1; |
||||
} |
||||
/* Empty List |
||||
========================================================================== */ |
||||
.uk-nestable-empty { |
||||
min-height: 30px; |
||||
} |
||||
/* Sub-object `uk-nestable-handle` |
||||
========================================================================== */ |
||||
/* |
||||
* Deactivate browser touch actions in IE11 |
||||
*/ |
||||
.uk-nestable-handle { |
||||
touch-action: none; |
||||
} |
||||
/* Hover */ |
||||
.uk-nestable-handle:hover { |
||||
cursor: move; |
||||
} |
||||
/* Sub-object `uk-nestable-moving` |
||||
========================================================================== */ |
||||
.uk-nestable-moving, |
||||
.uk-nestable-moving * { |
||||
cursor: move; |
||||
} |
||||
/* [data-nestable-action='toggle'] |
||||
========================================================================== */ |
||||
/* |
||||
* 1. Makes text unselectable. Happens if double clicked by mistake |
||||
*/ |
||||
[data-nestable-action='toggle'] { |
||||
cursor: pointer; |
||||
/* 1 */ |
||||
-moz-user-select: none; |
||||
-webkit-user-select: none; |
||||
-ms-user-select: none; |
||||
user-select: none; |
||||
} |
||||
/* Sub-object `.uk-nestable-toggle` |
||||
========================================================================== */ |
||||
.uk-nestable-toggle { |
||||
display: inline-block; |
||||
visibility: hidden; |
||||
} |
||||
.uk-nestable-toggle:after { |
||||
content: "\f147"; |
||||
font-family: FontAwesome; |
||||
} |
||||
.uk-parent > :not(.uk-nestable-list) .uk-nestable-toggle { |
||||
visibility: visible; |
||||
} |
||||
/* |
||||
* Collapsed |
||||
*/ |
||||
.uk-collapsed .uk-nestable-list { |
||||
display: none; |
||||
} |
||||
.uk-collapsed .uk-nestable-toggle:after { |
||||
content: "\f196"; |
||||
} |
||||
/* Sub-object `uk-nestable-panel` |
||||
========================================================================== */ |
||||
.uk-nestable-panel { |
||||
padding: 5px; |
||||
background: #f7f7f7; |
||||
border-radius: 4px; |
||||
border: 1px solid rgba(0, 0, 0, 0.2); |
||||
border-bottom-color: rgba(0, 0, 0, 0.3); |
||||
background-origin: border-box; |
||||
background-image: -webkit-linear-gradient(top, #ffffff, #eeeeee); |
||||
background-image: linear-gradient(to bottom, #ffffff, #eeeeee); |
||||
text-shadow: 0 1px 0 #ffffff; |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-nestable{padding:0;list-style:none}.uk-nestable a,.uk-nestable img{-webkit-touch-callout:none}.uk-nestable-list{margin:0;padding-left:40px;list-style:none}.uk-nestable-item{touch-action:none}.uk-nestable-item+.uk-nestable-item{margin-top:10px}.uk-nestable-list:not(.uk-nestable-dragged)>.uk-nestable-item:first-child{margin-top:10px}.uk-nestable-dragged{position:absolute;z-index:1050;pointer-events:none;padding-left:0}.uk-nestable-placeholder{position:relative}.uk-nestable-placeholder>*{opacity:0}.uk-nestable-placeholder:after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border:1px dashed #ddd;opacity:1}.uk-nestable-empty{min-height:30px}.uk-nestable-handle{touch-action:none}.uk-nestable-handle:hover{cursor:move}.uk-nestable-moving,.uk-nestable-moving *{cursor:move}[data-nestable-action=toggle]{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.uk-nestable-toggle{display:inline-block;visibility:hidden}.uk-nestable-toggle:after{content:"\f147";font-family:FontAwesome}.uk-parent>:not(.uk-nestable-list) .uk-nestable-toggle{visibility:visible}.uk-collapsed .uk-nestable-list{display:none}.uk-collapsed .uk-nestable-toggle:after{content:"\f196"}.uk-nestable-panel{padding:5px;background:#f7f7f7;border-radius:4px;border:1px solid rgba(0,0,0,.2);border-bottom-color:rgba(0,0,0,.3);background-origin:border-box;background-image:-webkit-linear-gradient(top,#fff,#eee);background-image:linear-gradient(to bottom,#fff,#eee);text-shadow:0 1px 0 #fff} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-nestable{padding:0;list-style:none}.uk-nestable a,.uk-nestable img{-webkit-touch-callout:none}.uk-nestable-list{margin:0;padding-left:40px;list-style:none}.uk-nestable-item{touch-action:none}.uk-nestable-item+.uk-nestable-item{margin-top:10px}.uk-nestable-list:not(.uk-nestable-dragged)>.uk-nestable-item:first-child{margin-top:10px}.uk-nestable-dragged{position:absolute;z-index:1050;pointer-events:none;padding-left:0}.uk-nestable-placeholder{position:relative}.uk-nestable-placeholder>*{opacity:0}.uk-nestable-placeholder:after{content:'';position:absolute;top:0;bottom:0;left:0;right:0;border:1px dashed #ddd;opacity:1}.uk-nestable-empty{min-height:30px}.uk-nestable-handle{touch-action:none}.uk-nestable-handle:hover{cursor:move}.uk-nestable-moving,.uk-nestable-moving *{cursor:move}[data-nestable-action=toggle]{cursor:pointer;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.uk-nestable-toggle{display:inline-block;visibility:hidden}.uk-nestable-toggle:after{content:"\f147";font-family:FontAwesome}.uk-parent>:not(.uk-nestable-list) .uk-nestable-toggle{visibility:visible}.uk-collapsed .uk-nestable-list{display:none}.uk-collapsed .uk-nestable-toggle:after{content:"\f196"}.uk-nestable-panel{padding:5px;background:#f5f5f5} |
||||
@ -0,0 +1,98 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Notify |
||||
========================================================================== */ |
||||
/* |
||||
* Message container for positioning |
||||
*/ |
||||
.uk-notify { |
||||
position: fixed; |
||||
top: 10px; |
||||
left: 10px; |
||||
z-index: 1040; |
||||
box-sizing: border-box; |
||||
width: 350px; |
||||
} |
||||
/* Position modifiers |
||||
========================================================================== */ |
||||
.uk-notify-top-right, |
||||
.uk-notify-bottom-right { |
||||
left: auto; |
||||
right: 10px; |
||||
} |
||||
.uk-notify-top-center, |
||||
.uk-notify-bottom-center { |
||||
left: 50%; |
||||
margin-left: -175px; |
||||
} |
||||
.uk-notify-bottom-left, |
||||
.uk-notify-bottom-right, |
||||
.uk-notify-bottom-center { |
||||
top: auto; |
||||
bottom: 10px; |
||||
} |
||||
/* Responsiveness |
||||
========================================================================== */ |
||||
/* Phones portrait and smaller */ |
||||
@media (max-width: 479px) { |
||||
/* |
||||
* Fit in small screen |
||||
*/ |
||||
.uk-notify { |
||||
left: 10px; |
||||
right: 10px; |
||||
width: auto; |
||||
margin: 0; |
||||
} |
||||
} |
||||
/* Sub-object: `uk-notify-message` |
||||
========================================================================== */ |
||||
.uk-notify-message { |
||||
position: relative; |
||||
margin-bottom: 10px; |
||||
padding: 15px; |
||||
background: #444444; |
||||
color: #ffffff; |
||||
font-size: 16px; |
||||
line-height: 22px; |
||||
cursor: pointer; |
||||
border: 1px solid #444444; |
||||
border-radius: 4px; |
||||
} |
||||
/* Close in notify |
||||
========================================================================== */ |
||||
.uk-notify-message > .uk-close { |
||||
visibility: hidden; |
||||
float: right; |
||||
} |
||||
.uk-notify-message:hover > .uk-close { |
||||
visibility: visible; |
||||
} |
||||
/* Modifier: `uk-alert-info` |
||||
========================================================================== */ |
||||
.uk-notify-message-primary { |
||||
background: #ebf7fd; |
||||
color: #2d7091; |
||||
border-color: rgba(45, 112, 145, 0.3); |
||||
} |
||||
/* Modifier: `uk-alert-success` |
||||
========================================================================== */ |
||||
.uk-notify-message-success { |
||||
background: #f2fae3; |
||||
color: #659f13; |
||||
border-color: rgba(101, 159, 19, 0.3); |
||||
} |
||||
/* Modifier: `uk-notify-message-warning` |
||||
========================================================================== */ |
||||
.uk-notify-message-warning { |
||||
background: #fffceb; |
||||
color: #e28327; |
||||
border-color: rgba(226, 131, 39, 0.3); |
||||
} |
||||
/* Modifier: `uk-notify-message-danger` |
||||
========================================================================== */ |
||||
.uk-notify-message-danger { |
||||
background: #fff1f0; |
||||
color: #d85030; |
||||
border-color: rgba(216, 80, 48, 0.3); |
||||
} |
||||
@ -0,0 +1,2 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
.uk-notify{position:fixed;top:10px;left:10px;z-index:1040;box-sizing:border-box;width:350px}.uk-notify-bottom-right,.uk-notify-top-right{left:auto;right:10px}.uk-notify-bottom-center,.uk-notify-top-center{left:50%;margin-left:-175px}.uk-notify-bottom-center,.uk-notify-bottom-left,.uk-notify-bottom-right{top:auto;bottom:10px}@media (max-width:479px){.uk-notify{left:10px;right:10px;width:auto;margin:0}}.uk-notify-message{position:relative;margin-bottom:10px;padding:15px;background:#444;color:#fff;font-size:16px;line-height:22px;cursor:pointer;border:1px solid #444;border-radius:4px}.uk-notify-message>.uk-close{visibility:hidden;float:right}.uk-notify-message:hover>.uk-close{visibility:visible}.uk-notify-message-primary{background:#ebf7fd;color:#2d7091;border-color:rgba(45,112,145,.3)}.uk-notify-message-success{background:#f2fae3;color:#659f13;border-color:rgba(101,159,19,.3)}.uk-notify-message-warning{background:#fffceb;color:#e28327;border-color:rgba(226,131,39,.3)}.uk-notify-message-danger{background:#fff1f0;color:#d85030;border-color:rgba(216,80,48,.3)} |
||||
@ -0,0 +1,92 @@ |
||||
/*! UIkit 2.26.1 | http://www.getuikit.com | (c) 2014 YOOtheme | MIT License */ |
||||
/* ======================================================================== |
||||
Component: Notify |
||||
========================================================================== */ |
||||
/* |
||||
* Message container for positioning |
||||
*/ |
||||
.uk-notify { |
||||
position: fixed; |
||||
top: 10px; |
||||
left: 10px; |
||||
z-index: 1040; |
||||
box-sizing: border-box; |
||||
width: 350px; |
||||
} |
||||
/* Position modifiers |
||||
========================================================================== */ |
||||
.uk-notify-top-right, |
||||
.uk-notify-bottom-right { |
||||
left: auto; |
||||
right: 10px; |
||||
} |
||||
.uk-notify-top-center, |
||||
.uk-notify-bottom-center { |
||||
left: 50%; |
||||
margin-left: -175px; |
||||
} |
||||
.uk-notify-bottom-left, |
||||
.uk-notify-bottom-right, |
||||
.uk-notify-bottom-center { |
||||
top: auto; |
||||
bottom: 10px; |
||||
} |
||||
/* Responsiveness |
||||
========================================================================== */ |
||||
/* Phones portrait and smaller */ |
||||
@media (max-width: 479px) { |
||||
/* |
||||
* Fit in small screen |
||||
*/ |
||||
.uk-notify { |
||||
left: 10px; |
||||
right: 10px; |
||||
width: auto; |
||||
margin: 0; |
||||
} |
||||
} |
||||
/* Sub-object: `uk-notify-message` |
||||
========================================================================== */ |
||||
.uk-notify-message { |
||||
position: relative; |
||||
margin-bottom: 10px; |
||||
padding: 15px; |
||||
background: #444444; |
||||
color: #ffffff; |
||||
font-size: 16px; |
||||
line-height: 22px; |
||||
cursor: pointer; |
||||
} |
||||
/* Close in notify |
||||
========================================================================== */ |
||||
.uk-notify-message > .uk-close { |
||||
visibility: hidden; |
||||
float: right; |
||||
} |
||||
.uk-notify-message:hover > .uk-close { |
||||
visibility: visible; |
||||
} |
||||
/* Modifier: `uk-alert-info` |
||||
========================================================================== */ |
||||
.uk-notify-message-primary { |
||||
background: #ebf7fd; |
||||
color: #2d7091; |
||||
} |
||||
/* Modifier: `uk-alert-success` |
||||
========================================================================== */ |
||||
.uk-notify-message-success { |
||||
background: #f2fae3; |
||||
color: #659f13; |
||||
} |
||||
/* Modifier: `uk-notify-message-warning` |
||||
========================================================================== */ |
||||
.uk-notify-message-warning { |
||||
background: #fffceb; |
||||
color: #e28327; |
||||
} |
||||
/* Modifier: `uk-notify-message-danger` |
||||
========================================================================== */ |
||||
.uk-notify-message-danger { |
||||
background: #fff1f0; |
||||
color: #d85030; |
||||
} |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue