First Commit
This commit is contained in:
Vendored
BIN
Binary file not shown.
@@ -0,0 +1,25 @@
|
||||
<IfModule mod_rewrite.c>
|
||||
<IfModule mod_negotiation.c>
|
||||
Options -MultiViews -Indexes
|
||||
</IfModule>
|
||||
|
||||
RewriteEngine On
|
||||
|
||||
# Handle Authorization Header
|
||||
RewriteCond %{HTTP:Authorization} .
|
||||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||
|
||||
# Handle X-XSRF-Token Header
|
||||
RewriteCond %{HTTP:x-xsrf-token} .
|
||||
RewriteRule .* - [E=HTTP_X_XSRF_TOKEN:%{HTTP:X-XSRF-Token}]
|
||||
|
||||
# Redirect Trailing Slashes If Not A Folder...
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [L,R=301]
|
||||
|
||||
# Send Requests To Front Controller...
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteRule ^ index.php [L]
|
||||
</IfModule>
|
||||
+1024
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,121 @@
|
||||
:root {
|
||||
/* Palette — jaune moderne (tournesol) */
|
||||
--sun: #f0a90a;
|
||||
--sun-deep: #b07908;
|
||||
--sun-bright: #fbc02d;
|
||||
--sun-glow: rgba(240, 169, 10, 0.35);
|
||||
|
||||
--bg: #faf9f6;
|
||||
--bg-elevated: #ffffff;
|
||||
--surface: #ffffff;
|
||||
--surface-hover: #fdfaf1;
|
||||
--surface-alt: #f4f0e4;
|
||||
--border: #eae4d2;
|
||||
--border-strong: #d9cfb2;
|
||||
|
||||
--text: #1d1a12;
|
||||
--text-muted: #6f6752;
|
||||
--text-faint: #a09879;
|
||||
|
||||
--accent: var(--sun);
|
||||
--accent-strong: #8f6206;
|
||||
--accent-contrast: #241c04;
|
||||
--accent-soft: #fdf3d7;
|
||||
--accent-soft-strong: #f7e2a4;
|
||||
|
||||
--gold: #f0a90a;
|
||||
--green: #3f8a5c;
|
||||
--green-soft: #e3f1e7;
|
||||
--danger: #c1462f;
|
||||
--danger-soft: #fbe6e1;
|
||||
|
||||
/* Géométrie */
|
||||
--radius-sm: 10px;
|
||||
--radius: 16px;
|
||||
--radius-lg: 24px;
|
||||
--radius-full: 999px;
|
||||
|
||||
/* Ombres */
|
||||
--shadow-sm: 0 1px 2px rgba(29, 26, 18, 0.05), 0 1px 4px rgba(29, 26, 18, 0.04);
|
||||
--shadow-md: 0 8px 24px rgba(29, 26, 18, 0.09), 0 2px 8px rgba(29, 26, 18, 0.05);
|
||||
--shadow-lg: 0 24px 64px rgba(29, 26, 18, 0.16), 0 8px 24px rgba(29, 26, 18, 0.08);
|
||||
--shadow-accent: 0 8px 28px var(--sun-glow);
|
||||
--ring: 0 0 0 4px rgba(240, 169, 10, 0.20);
|
||||
|
||||
/* Dégradés */
|
||||
--gradient-accent: linear-gradient(135deg, #f0a90a 0%, #fbc02d 55%, #d18e07 100%);
|
||||
--gradient-hero:
|
||||
radial-gradient(110% 130% at 12% -8%, rgba(240, 169, 10, 0.13) 0%, transparent 55%),
|
||||
radial-gradient(90% 110% at 98% 4%, rgba(63, 138, 92, 0.08) 0%, transparent 55%);
|
||||
--gradient-text: linear-gradient(120deg, #b07908, #f0a90a 45%, #8f6206 90%);
|
||||
--navbar-glass: rgba(255, 255, 255, 0.72);
|
||||
|
||||
/* Typo */
|
||||
--font-xs: 0.75rem;
|
||||
--font-sm: 0.8125rem;
|
||||
--font-base: 0.9375rem;
|
||||
--font-md: 1.0625rem;
|
||||
--font-lg: 1.3125rem;
|
||||
--font-xl: 1.75rem;
|
||||
--font-2xl: 2.375rem;
|
||||
--font-3xl: 3.25rem;
|
||||
|
||||
/* Espacement */
|
||||
--space-1: 4px;
|
||||
--space-2: 8px;
|
||||
--space-3: 12px;
|
||||
--space-4: 16px;
|
||||
--space-5: 24px;
|
||||
--space-6: 32px;
|
||||
--space-7: 48px;
|
||||
--space-8: 80px;
|
||||
|
||||
/* Mouvement */
|
||||
--ease-out: cubic-bezier(0.16, 1, 0.3, 1);
|
||||
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
||||
--t-fast: 150ms var(--ease-out);
|
||||
--t-base: 280ms var(--ease-out);
|
||||
--t-slow: 500ms var(--ease-out);
|
||||
}
|
||||
|
||||
[data-theme="dark"] {
|
||||
--sun-bright: #ffd54f;
|
||||
--sun-glow: rgba(251, 192, 45, 0.28);
|
||||
|
||||
--bg: #141310;
|
||||
--bg-elevated: #1d1b15;
|
||||
--surface: #1d1b15;
|
||||
--surface-hover: #26231a;
|
||||
--surface-alt: #221f17;
|
||||
--border: #383321;
|
||||
--border-strong: #4b4429;
|
||||
|
||||
--text: #f4f1e6;
|
||||
--text-muted: #b3a884;
|
||||
--text-faint: #7d7660;
|
||||
|
||||
--accent: #fbc02d;
|
||||
--accent-strong: #ffd54f;
|
||||
--accent-contrast: #241c04;
|
||||
--accent-soft: #352c10;
|
||||
--accent-soft-strong: #4b3d14;
|
||||
|
||||
--gold: #fbc02d;
|
||||
--green: #6fbb8d;
|
||||
--green-soft: #1c2c22;
|
||||
--danger: #e2725a;
|
||||
--danger-soft: #3a231d;
|
||||
|
||||
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);
|
||||
--shadow-md: 0 10px 28px rgba(0, 0, 0, 0.5), 0 2px 10px rgba(0, 0, 0, 0.35);
|
||||
--shadow-lg: 0 28px 72px rgba(0, 0, 0, 0.6), 0 10px 28px rgba(0, 0, 0, 0.4);
|
||||
--shadow-accent: 0 8px 28px var(--sun-glow);
|
||||
--ring: 0 0 0 4px rgba(251, 192, 45, 0.22);
|
||||
|
||||
--gradient-accent: linear-gradient(135deg, #e8a812 0%, #fbc02d 55%, #c78f0a 100%);
|
||||
--gradient-hero:
|
||||
radial-gradient(110% 130% at 12% -8%, rgba(251, 192, 45, 0.10) 0%, transparent 55%),
|
||||
radial-gradient(90% 110% at 98% 4%, rgba(111, 187, 141, 0.07) 0%, transparent 55%);
|
||||
--gradient-text: linear-gradient(120deg, #fbc02d, #ffe082 45%, #f0a90a 90%);
|
||||
--navbar-glass: rgba(20, 19, 16, 0.72);
|
||||
}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 276 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 464 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 538 KiB |
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Foundation\Application;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
define('LARAVEL_START', microtime(true));
|
||||
|
||||
// Determine if the application is in maintenance mode...
|
||||
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
|
||||
require $maintenance;
|
||||
}
|
||||
|
||||
// Register the Composer autoloader...
|
||||
require __DIR__.'/../vendor/autoload.php';
|
||||
|
||||
// Bootstrap Laravel and handle the request...
|
||||
/** @var Application $app */
|
||||
$app = require_once __DIR__.'/../bootstrap/app.php';
|
||||
|
||||
$app->handleRequest(Request::capture());
|
||||
@@ -0,0 +1,34 @@
|
||||
(function () {
|
||||
function csrfToken() {
|
||||
var meta = document.querySelector('meta[name="csrf-token"]');
|
||||
return meta ? meta.getAttribute('content') : '';
|
||||
}
|
||||
|
||||
function post(url) {
|
||||
return fetch(url, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': csrfToken(),
|
||||
'Accept': 'application/json',
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
document.addEventListener('click', function (event) {
|
||||
var favoriteBtn = event.target.closest('[data-favorite-url]');
|
||||
if (favoriteBtn) {
|
||||
event.preventDefault();
|
||||
post(favoriteBtn.getAttribute('data-favorite-url')).then(function (res) {
|
||||
return res.json();
|
||||
}).then(function (data) {
|
||||
favoriteBtn.classList.toggle('is-favorite', !!data.is_favorite);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
var deleteForm = event.target.closest('[data-confirm]');
|
||||
if (deleteForm && !confirm(deleteForm.getAttribute('data-confirm'))) {
|
||||
event.preventDefault();
|
||||
}
|
||||
});
|
||||
})();
|
||||
@@ -0,0 +1,21 @@
|
||||
(function () {
|
||||
var STORAGE_KEY = 'bloomfeed-theme';
|
||||
|
||||
function applyTheme(theme) {
|
||||
document.documentElement.setAttribute('data-theme', theme);
|
||||
}
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
var toggle = document.querySelector('[data-theme-toggle]');
|
||||
if (!toggle) {
|
||||
return;
|
||||
}
|
||||
|
||||
toggle.addEventListener('click', function () {
|
||||
var current = document.documentElement.getAttribute('data-theme') === 'dark' ? 'dark' : 'light';
|
||||
var next = current === 'dark' ? 'light' : 'dark';
|
||||
applyTheme(next);
|
||||
localStorage.setItem(STORAGE_KEY, next);
|
||||
});
|
||||
});
|
||||
})();
|
||||
@@ -0,0 +1,2 @@
|
||||
User-agent: *
|
||||
Disallow:
|
||||
Reference in New Issue
Block a user