Progress
This commit is contained in:
parent
309d01693c
commit
fef952edab
@ -4,6 +4,7 @@ namespace App\Commands;
|
|||||||
|
|
||||||
use App\Build\SiteParser;
|
use App\Build\SiteParser;
|
||||||
use App\Models\ContentCollection;
|
use App\Models\ContentCollection;
|
||||||
|
use App\Models\Page;
|
||||||
use App\SiteConfiguration;
|
use App\SiteConfiguration;
|
||||||
use Illuminate\Console\Scheduling\Schedule;
|
use Illuminate\Console\Scheduling\Schedule;
|
||||||
use LaravelZero\Framework\Commands\Command;
|
use LaravelZero\Framework\Commands\Command;
|
||||||
@ -30,13 +31,16 @@ class ParseConfigCommand extends Command
|
|||||||
*/
|
*/
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
// $col = new ContentCollection("projects");
|
dd(collectionPages('projects'));
|
||||||
// dd(SiteConfiguration::collections());
|
// dd(new Page("projects/authentikate/docs/quick-start/index.md"));
|
||||||
foreach ((new SiteParser)->getPages() as $p) {
|
// dd(new Page("projects/flowtodo.md"));
|
||||||
$this->info($p->key);
|
// foreach ((new SiteParser)->getPages() as $p) {
|
||||||
$this->warn("- " . $p->entityName);
|
// $this->info($p->key);
|
||||||
$this->warn("- " . $p->collection);
|
// $this->warn("- Entity Name: " . $p->entityName);
|
||||||
$this->warn("- " . $p->layout);
|
// $this->warn("- Collection: " . $p->collection);
|
||||||
}
|
// $this->warn("- Layout: " . $p->layout);
|
||||||
|
// var_dump($p->collectionProps);
|
||||||
|
// var_dump($p->collectionHierarchy);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,17 +23,22 @@ use function Illuminate\Filesystem\join_paths;
|
|||||||
class Page
|
class Page
|
||||||
{
|
{
|
||||||
public string $filename;
|
public string $filename;
|
||||||
|
public string $fileBaseName; // Name of the file with extension removed
|
||||||
public string $fileExtension;
|
public string $fileExtension;
|
||||||
public string $directory;
|
public string $directory;
|
||||||
public string $title;
|
public string $title;
|
||||||
public string $slug;
|
public string $slug;
|
||||||
public bool $isIndex;
|
public bool $isIndex = false;
|
||||||
|
public bool $isNestedIndex = false;
|
||||||
public string $key;
|
public string $key;
|
||||||
protected Filesystem $sourceDisk;
|
protected Filesystem $sourceDisk;
|
||||||
public ?string $layout;
|
public ?string $layout;
|
||||||
public ?string $collection = null;
|
|
||||||
public string $entityName; // The name of this page. Ex: projects/myproject = myproject
|
public string $entityName; // The name of this page. Ex: projects/myproject = myproject
|
||||||
protected string $content;
|
protected string $content;
|
||||||
|
// Collection data
|
||||||
|
public ?string $collection = null;
|
||||||
|
public array $collectionHierarchy = []; // All collections matched from least to most
|
||||||
|
public array $collectionProps = [];
|
||||||
|
|
||||||
public function __construct(public string $path)
|
public function __construct(public string $path)
|
||||||
{
|
{
|
||||||
@ -42,47 +47,95 @@ class Page
|
|||||||
$this->filename = basename($this->path);
|
$this->filename = basename($this->path);
|
||||||
$this->fileExtension = (str_ends_with($this->filename, '.blade.php')) ? 'blade.php' : pathinfo($this->filename, PATHINFO_EXTENSION);
|
$this->fileExtension = (str_ends_with($this->filename, '.blade.php')) ? 'blade.php' : pathinfo($this->filename, PATHINFO_EXTENSION);
|
||||||
$this->fileExtension = str($this->fileExtension)->trim('.')->toString();
|
$this->fileExtension = str($this->fileExtension)->trim('.')->toString();
|
||||||
|
$this->fileBaseName = str($this->filename)->remove("." . $this->fileExtension)->toString();
|
||||||
$this->title = str($this->filename)->remove("." . $this->fileExtension)->title()->toString();
|
$this->title = str($this->filename)->remove("." . $this->fileExtension)->title()->toString();
|
||||||
$this->slug = str($this->title)->slug();
|
$this->slug = str($this->title)->slug();
|
||||||
$this->isIndex = str($this->filename)->remove("." . $this->fileExtension)->toString() == "index";
|
|
||||||
$this->directory = dirname($this->path);
|
$this->directory = dirname($this->path);
|
||||||
$this->key = str($this->path)->remove("." . $this->fileExtension)->replace("/", ".")->lower()->toString();
|
$this->key = str($this->path)->remove("." . $this->fileExtension)->replace("/", ".")->lower()->toString();
|
||||||
|
|
||||||
|
if ($this->fileBaseName == "index") {
|
||||||
|
$this->isIndex = true;
|
||||||
|
$this->isNestedIndex = true;
|
||||||
|
}
|
||||||
|
|
||||||
$this->entityName = $this->isIndex ? basename($this->directory) : $this->slug;
|
$this->entityName = $this->isIndex ? basename($this->directory) : $this->slug;
|
||||||
|
|
||||||
$this->detectCollection();
|
$this->detectCollection();
|
||||||
$this->fillAdditionalData();
|
$this->fillAdditionalData();
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Do something with the [params]
|
public function __get($name)
|
||||||
// from the collection name if present.
|
{
|
||||||
// Maybe store it in a $collectionParams
|
if (!empty($this->$name)) {
|
||||||
// array on the page or something.
|
return $this->name;
|
||||||
|
}
|
||||||
|
return $this->collectionProps[$name] ?? null;
|
||||||
|
}
|
||||||
|
|
||||||
public function detectCollection()
|
public function detectCollection()
|
||||||
{
|
{
|
||||||
$key_parts = explode('.', $this->key);
|
$key_parts = explode('.', $this->key);
|
||||||
$collections = SiteConfiguration::collections();
|
$collections = SiteConfiguration::collections();
|
||||||
|
// Turn collections into an array containing
|
||||||
|
// the parts and the length so we can easily
|
||||||
|
// filter likely matches.
|
||||||
|
$collections = collect($collections)->map(function ($name) {
|
||||||
|
$parts = explode('.', $name);
|
||||||
|
return [
|
||||||
|
'name' => $name,
|
||||||
|
'parts' => $parts,
|
||||||
|
'length' => count($parts)
|
||||||
|
];
|
||||||
|
})
|
||||||
|
->filter(fn($col) => $col['length'] <= count($key_parts))
|
||||||
|
->sortBy('length');
|
||||||
|
|
||||||
foreach ($collections as $c) {
|
foreach ($collections as $c) {
|
||||||
$parts = explode('.', $c);
|
$parts = $c['parts'];
|
||||||
// If we have key: projects.something
|
|
||||||
// and collection projects.[project_name].docs
|
|
||||||
// then it's not it
|
|
||||||
if (count($parts) > $key_parts) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Get a subset of max length key parts
|
// Get a subset of max length key parts
|
||||||
$key_compare = array_slice($key_parts, 0, count($parts));
|
$key_compare = array_slice($key_parts, 0, count($parts));
|
||||||
|
$props = [];
|
||||||
$match = true;
|
$match = true;
|
||||||
foreach ($key_compare as $i => $v) {
|
foreach ($key_compare as $i => $v) {
|
||||||
// TODO: Use regex here to search for [] instead of just [
|
$check = $parts[$i];
|
||||||
if ($v !== $parts[$i] && !str($parts[$i])->contains("[")) {
|
// Check if it's a parameter like [project_name]
|
||||||
|
if (str($check)->isMatch('/\[[a-z_]+\]/')) {
|
||||||
|
$key = str($check)->remove(['[', ']'])->toString();
|
||||||
|
$props[$key] = $v;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($v !== $check) {
|
||||||
$match = false;
|
$match = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($match) $this->collection = $c;
|
if ($match) {
|
||||||
|
$this->collectionHierarchy[] = $c['name'];
|
||||||
|
$this->collection = $c['name'];
|
||||||
|
$this->collectionProps = $props;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// After detecting the collection, we can also
|
||||||
|
// determine if the file is an index in that
|
||||||
|
// collection. Example:
|
||||||
|
// collection = projects
|
||||||
|
// file path = projects/myproject.md
|
||||||
|
if (str($this->key)->remove($this->collection)->remove(".") == $this->fileBaseName) {
|
||||||
|
$this->isIndex = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function applyCollectionSettings(string $collection)
|
||||||
|
{
|
||||||
|
$config = SiteConfiguration::getConfig()['collections'][$collection];
|
||||||
|
|
||||||
|
$fill = ['layout'];
|
||||||
|
|
||||||
|
foreach ($fill as $field) {
|
||||||
|
$this->$field = $config[$field];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,20 +148,24 @@ class Page
|
|||||||
*/
|
*/
|
||||||
public function fillAdditionalData()
|
public function fillAdditionalData()
|
||||||
{
|
{
|
||||||
// If we have a collection, get the settings from it
|
// Apply collection settings in a hierarchical
|
||||||
if (!empty($this->collection)) {
|
// manner, with the settings from the most
|
||||||
$config = SiteConfiguration::getConfig()['collections'][$this->collection];
|
// matched collection taking precedence
|
||||||
|
// over the least.
|
||||||
$fillIfEmpty = ['layout'];
|
foreach ($this->collectionHierarchy as $collection) {
|
||||||
|
$this->applyCollectionSettings($collection);
|
||||||
foreach ($fillIfEmpty as $field) {
|
|
||||||
if (empty($this->$field) && !empty($config[$field])) {
|
|
||||||
$this->$field = $config[$field];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grab front matter data if any
|
// After the hierarchy, also apply settings
|
||||||
|
// from the detected collection to be
|
||||||
|
// safe.
|
||||||
|
if (!empty($this->collection)) {
|
||||||
|
$this->applyCollectionSettings($collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grab front matter data if any. Apply any settings
|
||||||
|
// from it since it takes precedence over
|
||||||
|
// collection settings.
|
||||||
if ($this->fileExtension == 'md') {
|
if ($this->fileExtension == 'md') {
|
||||||
// Build the markdown parser
|
// Build the markdown parser
|
||||||
$mdEnvironment = new Environment();
|
$mdEnvironment = new Environment();
|
||||||
@ -150,6 +207,16 @@ class Page
|
|||||||
return join_paths($baseDirectory, "{$this->slug}", "index.html");
|
return join_paths($baseDirectory, "{$this->slug}", "index.html");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function url(): string
|
||||||
|
{
|
||||||
|
$baseDirectory = $this->directory;
|
||||||
|
if ($this->isIndex && $this->isNestedIndex) {
|
||||||
|
return str($this->directory)->prepend("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
return str(join_paths($baseDirectory, "{$this->slug}"))->prepend("/");
|
||||||
|
}
|
||||||
|
|
||||||
public function content(): string
|
public function content(): string
|
||||||
{
|
{
|
||||||
if (!empty($this->content)) {
|
if (!empty($this->content)) {
|
||||||
|
@ -1,6 +1,34 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
function yatusabe()
|
use App\Build\SiteParser;
|
||||||
|
use Illuminate\Support\Collection;
|
||||||
|
|
||||||
|
// TODO: Have to make site parser a singleton
|
||||||
|
/**
|
||||||
|
* Get the pages belonging to a collection. If props
|
||||||
|
* are passed, also filter by those.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
* $collection = projects.[project_name].docs
|
||||||
|
* $props = ['project_name' => 'myproject']
|
||||||
|
*
|
||||||
|
* @param string $collection
|
||||||
|
* @param array $props
|
||||||
|
* @param bool $loose
|
||||||
|
* @return Collection<\App\Models\Page>
|
||||||
|
*/
|
||||||
|
function collectionPages(string $collection, array $props = [], bool $loose = false): Collection
|
||||||
{
|
{
|
||||||
return "worked papo";
|
$pages = (new SiteParser)->getPages();
|
||||||
|
if ($loose) {
|
||||||
|
$pages = $pages->filter(fn($p) => in_array($collection, $p->collectionHierarchy));
|
||||||
|
} else {
|
||||||
|
$pages = $pages->where('collection', $collection);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($props as $k => $v) {
|
||||||
|
$pages = $pages->filter(fn($p) => $p->collectionProps[$k] == $v);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $pages;
|
||||||
}
|
}
|
||||||
|
3
bun.lock
3
bun.lock
@ -5,6 +5,7 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tailwindcss/typography": "^0.5.16",
|
"@tailwindcss/typography": "^0.5.16",
|
||||||
"@tailwindcss/vite": "^4.1.12",
|
"@tailwindcss/vite": "^4.1.12",
|
||||||
|
"@tailwindplus/elements": "^1.0.9",
|
||||||
"tailwindcss": "^4.1.12",
|
"tailwindcss": "^4.1.12",
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -149,6 +150,8 @@
|
|||||||
|
|
||||||
"@tailwindcss/vite": ["@tailwindcss/vite@4.1.12", "", { "dependencies": { "@tailwindcss/node": "4.1.12", "@tailwindcss/oxide": "4.1.12", "tailwindcss": "4.1.12" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-4pt0AMFDx7gzIrAOIYgYP0KCBuKWqyW8ayrdiLEjoJTT4pKTjrzG/e4uzWtTLDziC+66R9wbUqZBccJalSE5vQ=="],
|
"@tailwindcss/vite": ["@tailwindcss/vite@4.1.12", "", { "dependencies": { "@tailwindcss/node": "4.1.12", "@tailwindcss/oxide": "4.1.12", "tailwindcss": "4.1.12" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-4pt0AMFDx7gzIrAOIYgYP0KCBuKWqyW8ayrdiLEjoJTT4pKTjrzG/e4uzWtTLDziC+66R9wbUqZBccJalSE5vQ=="],
|
||||||
|
|
||||||
|
"@tailwindplus/elements": ["@tailwindplus/elements@1.0.9", "", {}, "sha512-QRJ/GdkHnMArYaM3/zFcB913xL/QMaP32Odg8GWKzeolcL5uFH4xvZ/DHQwTLRHJyZn44xmaNXBx7l0OM8VHQg=="],
|
||||||
|
|
||||||
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
|
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="],
|
||||||
|
|
||||||
"chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="],
|
"chownr": ["chownr@3.0.0", "", {}, "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g=="],
|
||||||
|
651
package-lock.json
generated
Normal file
651
package-lock.json
generated
Normal file
@ -0,0 +1,651 @@
|
|||||||
|
{
|
||||||
|
"name": "zap",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"dependencies": {
|
||||||
|
"@tailwindcss/typography": "^0.5.16",
|
||||||
|
"@tailwindcss/vite": "^4.1.12",
|
||||||
|
"@tailwindplus/elements": "^1.0.9",
|
||||||
|
"basecoat-css": "^0.3.2",
|
||||||
|
"tailwindcss": "^4.1.12"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"vite": "^7.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@esbuild/linux-x64": {
|
||||||
|
"version": "0.25.9",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@isaacs/fs-minipass": {
|
||||||
|
"version": "4.0.1",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"minipass": "^7.0.4"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/gen-mapping": {
|
||||||
|
"version": "0.3.13",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.5.0",
|
||||||
|
"@jridgewell/trace-mapping": "^0.3.24"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/remapping": {
|
||||||
|
"version": "2.3.5",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/gen-mapping": "^0.3.5",
|
||||||
|
"@jridgewell/trace-mapping": "^0.3.24"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/resolve-uri": {
|
||||||
|
"version": "3.1.2",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/sourcemap-codec": {
|
||||||
|
"version": "1.5.5",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@jridgewell/trace-mapping": {
|
||||||
|
"version": "0.3.30",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/resolve-uri": "^3.1.0",
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.4.14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-x64-gnu": {
|
||||||
|
"version": "4.46.3",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@rollup/rollup-linux-x64-musl": {
|
||||||
|
"version": "4.46.3",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"node_modules/@tailwindcss/node": {
|
||||||
|
"version": "4.1.12",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/remapping": "^2.3.4",
|
||||||
|
"enhanced-resolve": "^5.18.3",
|
||||||
|
"jiti": "^2.5.1",
|
||||||
|
"lightningcss": "1.30.1",
|
||||||
|
"magic-string": "^0.30.17",
|
||||||
|
"source-map-js": "^1.2.1",
|
||||||
|
"tailwindcss": "4.1.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@tailwindcss/oxide": {
|
||||||
|
"version": "4.1.12",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"detect-libc": "^2.0.4",
|
||||||
|
"tar": "^7.4.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@tailwindcss/oxide-android-arm64": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-darwin-arm64": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-darwin-x64": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-freebsd-x64": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-linux-arm-gnueabihf": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-linux-arm64-gnu": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-linux-arm64-musl": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-linux-x64-gnu": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-linux-x64-musl": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-wasm32-wasi": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-win32-arm64-msvc": "4.1.12",
|
||||||
|
"@tailwindcss/oxide-win32-x64-msvc": "4.1.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@tailwindcss/oxide-linux-x64-gnu": {
|
||||||
|
"version": "4.1.12",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@tailwindcss/oxide-linux-x64-musl": {
|
||||||
|
"version": "4.1.12",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@tailwindcss/typography": {
|
||||||
|
"version": "0.5.16",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"lodash.castarray": "^4.4.0",
|
||||||
|
"lodash.isplainobject": "^4.0.6",
|
||||||
|
"lodash.merge": "^4.6.2",
|
||||||
|
"postcss-selector-parser": "6.0.10"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@tailwindcss/vite": {
|
||||||
|
"version": "4.1.12",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@tailwindcss/node": "4.1.12",
|
||||||
|
"@tailwindcss/oxide": "4.1.12",
|
||||||
|
"tailwindcss": "4.1.12"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"vite": "^5.2.0 || ^6 || ^7"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@tailwindplus/elements": {
|
||||||
|
"version": "1.0.9",
|
||||||
|
"license": "SEE LICENSE IN LICENSE.md"
|
||||||
|
},
|
||||||
|
"node_modules/@types/estree": {
|
||||||
|
"version": "1.0.8",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/basecoat-css": {
|
||||||
|
"version": "0.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/basecoat-css/-/basecoat-css-0.3.2.tgz",
|
||||||
|
"integrity": "sha512-WLdyYnyLU4kr3rZNl5n4YG0i3YUamYIISjpip0ipah9l4wwbmEEB/3v/K3l4tKCYg3PaEaallnvs04ZfxHZ7YQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/chownr": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"license": "BlueOak-1.0.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/cssesc": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"cssesc": "bin/cssesc"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/detect-libc": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/enhanced-resolve": {
|
||||||
|
"version": "5.18.3",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"graceful-fs": "^4.2.4",
|
||||||
|
"tapable": "^2.2.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.13.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/esbuild": {
|
||||||
|
"version": "0.25.9",
|
||||||
|
"hasInstallScript": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"esbuild": "bin/esbuild"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@esbuild/aix-ppc64": "0.25.9",
|
||||||
|
"@esbuild/android-arm": "0.25.9",
|
||||||
|
"@esbuild/android-arm64": "0.25.9",
|
||||||
|
"@esbuild/android-x64": "0.25.9",
|
||||||
|
"@esbuild/darwin-arm64": "0.25.9",
|
||||||
|
"@esbuild/darwin-x64": "0.25.9",
|
||||||
|
"@esbuild/freebsd-arm64": "0.25.9",
|
||||||
|
"@esbuild/freebsd-x64": "0.25.9",
|
||||||
|
"@esbuild/linux-arm": "0.25.9",
|
||||||
|
"@esbuild/linux-arm64": "0.25.9",
|
||||||
|
"@esbuild/linux-ia32": "0.25.9",
|
||||||
|
"@esbuild/linux-loong64": "0.25.9",
|
||||||
|
"@esbuild/linux-mips64el": "0.25.9",
|
||||||
|
"@esbuild/linux-ppc64": "0.25.9",
|
||||||
|
"@esbuild/linux-riscv64": "0.25.9",
|
||||||
|
"@esbuild/linux-s390x": "0.25.9",
|
||||||
|
"@esbuild/linux-x64": "0.25.9",
|
||||||
|
"@esbuild/netbsd-arm64": "0.25.9",
|
||||||
|
"@esbuild/netbsd-x64": "0.25.9",
|
||||||
|
"@esbuild/openbsd-arm64": "0.25.9",
|
||||||
|
"@esbuild/openbsd-x64": "0.25.9",
|
||||||
|
"@esbuild/openharmony-arm64": "0.25.9",
|
||||||
|
"@esbuild/sunos-x64": "0.25.9",
|
||||||
|
"@esbuild/win32-arm64": "0.25.9",
|
||||||
|
"@esbuild/win32-ia32": "0.25.9",
|
||||||
|
"@esbuild/win32-x64": "0.25.9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fdir": {
|
||||||
|
"version": "6.5.0",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"picomatch": "^3 || ^4"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"picomatch": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/graceful-fs": {
|
||||||
|
"version": "4.2.11",
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/jiti": {
|
||||||
|
"version": "2.5.1",
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"jiti": "lib/jiti-cli.mjs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/lightningcss": {
|
||||||
|
"version": "1.30.1",
|
||||||
|
"license": "MPL-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"detect-libc": "^2.0.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"lightningcss-darwin-arm64": "1.30.1",
|
||||||
|
"lightningcss-darwin-x64": "1.30.1",
|
||||||
|
"lightningcss-freebsd-x64": "1.30.1",
|
||||||
|
"lightningcss-linux-arm-gnueabihf": "1.30.1",
|
||||||
|
"lightningcss-linux-arm64-gnu": "1.30.1",
|
||||||
|
"lightningcss-linux-arm64-musl": "1.30.1",
|
||||||
|
"lightningcss-linux-x64-gnu": "1.30.1",
|
||||||
|
"lightningcss-linux-x64-musl": "1.30.1",
|
||||||
|
"lightningcss-win32-arm64-msvc": "1.30.1",
|
||||||
|
"lightningcss-win32-x64-msvc": "1.30.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/lightningcss-linux-x64-gnu": {
|
||||||
|
"version": "1.30.1",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MPL-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/lightningcss-linux-x64-musl": {
|
||||||
|
"version": "1.30.1",
|
||||||
|
"cpu": [
|
||||||
|
"x64"
|
||||||
|
],
|
||||||
|
"license": "MPL-2.0",
|
||||||
|
"optional": true,
|
||||||
|
"os": [
|
||||||
|
"linux"
|
||||||
|
],
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/parcel"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/lodash.castarray": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/lodash.isplainobject": {
|
||||||
|
"version": "4.0.6",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/lodash.merge": {
|
||||||
|
"version": "4.6.2",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/magic-string": {
|
||||||
|
"version": "0.30.17",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jridgewell/sourcemap-codec": "^1.5.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/minipass": {
|
||||||
|
"version": "7.1.2",
|
||||||
|
"license": "ISC",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16 || 14 >=14.17"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/minizlib": {
|
||||||
|
"version": "3.0.2",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"minipass": "^7.1.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/mkdirp": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"mkdirp": "dist/cjs/src/bin.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/isaacs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/nanoid": {
|
||||||
|
"version": "3.3.11",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"nanoid": "bin/nanoid.cjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/picocolors": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/picomatch": {
|
||||||
|
"version": "4.0.3",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/jonschlinkert"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/postcss": {
|
||||||
|
"version": "8.5.6",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/postcss/"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/postcss"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/ai"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"nanoid": "^3.3.11",
|
||||||
|
"picocolors": "^1.1.1",
|
||||||
|
"source-map-js": "^1.2.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^10 || ^12 || >=14"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/postcss-selector-parser": {
|
||||||
|
"version": "6.0.10",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"cssesc": "^3.0.0",
|
||||||
|
"util-deprecate": "^1.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=4"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/rollup": {
|
||||||
|
"version": "4.46.3",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/estree": "1.0.8"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"rollup": "dist/bin/rollup"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.0.0",
|
||||||
|
"npm": ">=8.0.0"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"@rollup/rollup-android-arm-eabi": "4.46.3",
|
||||||
|
"@rollup/rollup-android-arm64": "4.46.3",
|
||||||
|
"@rollup/rollup-darwin-arm64": "4.46.3",
|
||||||
|
"@rollup/rollup-darwin-x64": "4.46.3",
|
||||||
|
"@rollup/rollup-freebsd-arm64": "4.46.3",
|
||||||
|
"@rollup/rollup-freebsd-x64": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-arm-gnueabihf": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-arm-musleabihf": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-arm64-gnu": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-arm64-musl": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-loongarch64-gnu": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-ppc64-gnu": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-riscv64-gnu": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-riscv64-musl": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-s390x-gnu": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-x64-gnu": "4.46.3",
|
||||||
|
"@rollup/rollup-linux-x64-musl": "4.46.3",
|
||||||
|
"@rollup/rollup-win32-arm64-msvc": "4.46.3",
|
||||||
|
"@rollup/rollup-win32-ia32-msvc": "4.46.3",
|
||||||
|
"@rollup/rollup-win32-x64-msvc": "4.46.3",
|
||||||
|
"fsevents": "~2.3.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/source-map-js": {
|
||||||
|
"version": "1.2.1",
|
||||||
|
"license": "BSD-3-Clause",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tailwindcss": {
|
||||||
|
"version": "4.1.12",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/tapable": {
|
||||||
|
"version": "2.2.2",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tar": {
|
||||||
|
"version": "7.4.3",
|
||||||
|
"license": "ISC",
|
||||||
|
"dependencies": {
|
||||||
|
"@isaacs/fs-minipass": "^4.0.0",
|
||||||
|
"chownr": "^3.0.0",
|
||||||
|
"minipass": "^7.1.2",
|
||||||
|
"minizlib": "^3.0.1",
|
||||||
|
"mkdirp": "^3.0.1",
|
||||||
|
"yallist": "^5.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tinyglobby": {
|
||||||
|
"version": "0.2.14",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fdir": "^6.4.4",
|
||||||
|
"picomatch": "^4.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/SuperchupuDev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/util-deprecate": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/vite": {
|
||||||
|
"version": "7.1.2",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"esbuild": "^0.25.0",
|
||||||
|
"fdir": "^6.4.6",
|
||||||
|
"picomatch": "^4.0.3",
|
||||||
|
"postcss": "^8.5.6",
|
||||||
|
"rollup": "^4.43.0",
|
||||||
|
"tinyglobby": "^0.2.14"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"vite": "bin/vite.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": "^20.19.0 || >=22.12.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/vitejs/vite?sponsor=1"
|
||||||
|
},
|
||||||
|
"optionalDependencies": {
|
||||||
|
"fsevents": "~2.3.3"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@types/node": "^20.19.0 || >=22.12.0",
|
||||||
|
"jiti": ">=1.21.0",
|
||||||
|
"less": "^4.0.0",
|
||||||
|
"lightningcss": "^1.21.0",
|
||||||
|
"sass": "^1.70.0",
|
||||||
|
"sass-embedded": "^1.70.0",
|
||||||
|
"stylus": ">=0.54.8",
|
||||||
|
"sugarss": "^5.0.0",
|
||||||
|
"terser": "^5.16.0",
|
||||||
|
"tsx": "^4.8.1",
|
||||||
|
"yaml": "^2.4.2"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"@types/node": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"jiti": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"less": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"lightningcss": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sass": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sass-embedded": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"stylus": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"sugarss": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"terser": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"tsx": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"yaml": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/yallist": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"license": "BlueOak-1.0.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,9 +7,11 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tailwindcss/typography": "^0.5.16",
|
"@tailwindcss/typography": "^0.5.16",
|
||||||
"@tailwindcss/vite": "^4.1.12",
|
"@tailwindcss/vite": "^4.1.12",
|
||||||
|
"@tailwindplus/elements": "^1.0.9",
|
||||||
|
"basecoat-css": "^0.3.2",
|
||||||
"tailwindcss": "^4.1.12"
|
"tailwindcss": "^4.1.12"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"vite": "^7.1.2"
|
"vite": "^7.1.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user