- WIP on reworking lean-api's visual

This commit is contained in:
Dave Mc Nicoll committed 2024-11-11 15:52:46 +00:00
1 parent d2202066ba
commit cb27ab7974
12 files changed
+92 -1

No files matched your search

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

+3
View File
@@ -0,0 +1,3 @@
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svgjs="http://svgjs.dev/svgjs" width="677" height="454" viewBox="0 0 677 454"><image width="677" height="454" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqUAAAHGCAYAAABNUPJbAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AYht+2SkUrHewg4pChOogVURFHrUIRKoRaoVUHk0v/oElDkuLiKLgWHPxZrDq4OOvq4CoIgj8gzg5Oii5S4ndJoUWMdxz38N73vtx9B/jrZaaaHeOAqllGKhEXMtlVIfiKHpphjGBMYqY+J4pJeI6ve/j4fhfjWd51f45eJWcywCcQzzLdsIg3iKc3LZ3zPnGEFSWF+Jx41KALEj9yXXb5jXPBYT/PjBjp1DxxhFgotLHcxqxoqMRTxFFF1Sjfn3FZ4bzFWS1XWfOe/IWhnLayzHVag0hgEUsQIUBGFSWUYSFGu0aKiRSdxz38A45fJJdMrhIYORZQgQrJ8YP/we/emvnJCTcpFAc6X2z7YwgI7gKNmm1/H9t24wQIPANXWstfqQMzn6TXWlr0CAhvAxfXLU3eAy53gP4nXTIkRwrQ8ufzwPsZfVMW6LsFutfcvjXPcfoApKlXyRvg4BAYLlD2use7u9r79m9Ns38/rG5yvmooBL0AAAAGYktHRAD/AP8A/6C9p5MAAAAJcEhZcwAALiMAAC4jAXilP3YAAAAHdElNRQfoCwsPLx51XcdsAAAAGXRFWHRDb21tZW50AENyZWF0ZWQgd2l0aCBHSU1QV4EOFwAAIABJREFUeNrs3Xd4FGXb9/FzdjcJhNA7hB5AkN4EQRFUFFRuUbGCCSRBERVFRG97L1iwgEASUmhiRW8UFLGgVKmh9yYkIRBISAjJtuv9Q3xeG7Cb7M7O7nw/x+Hx+HhvdmbOc2bnN9c0raggXwAAAIBAslACAAAAEEoBAABAKKUEAAAAIJQCAACAUEoJAAAAQCgFAAAAoZQSAAAAgFAKAAAAQiklAAAAAKEUAAAAhFJKAAAAAEIpAAAACKWUAAAAAIRSAAAAEEopAQAAAAilAAAAMD0bJfid0+nYbS+1x5wpOSMlJSViLykVh9NOYQAAAWOxWKRChYpSoUIFCQ+PkIgKERIRUUGjMiCUhoBjuTnqyOHDcvRojvz40wo5fCSXtQAAEEzUH/9yy5ABUq9BA6lXt55EN246yGazLaI8CFZaUUF+SC/gyZMn1J5dO+Wbb5fIzl0H6TgAIKSNjBsqMa1aS3R0Y81i4So9EEoD6syZM2rr5kx5570UOgwAMK3rB/aVPn37SnR0Y075g1Cqp53bt6pJ706ToqIzdBYAgD+5J/FOuaRnbwmPiCCgglDqD0op2bZ1i3r1tXfpJgAAF3D3XTfKZX37S8XISMIpCKW+krlhnXrjral0EQAAL911+2Dpf9UAiajA3fwglJbZ8WO56qGHn6B7AACU00MPJkjX7pdomkY2BaHUYw67Q/34/bcyc84XdA4AAB96680XpG69BiRTEEov5PDhQ+rxx1+gYwAA+Mm9o+6SPpf3I5iCUHoua39dpXi8EwAA/mezWWXqB5O4EQqE0j8rLSlRj4x/XPLzi+gUAAA6evWVp6VR4yYEUxBKC08VqNH3PUKHAAAIkMceHSPtO3YmmEIXhnz/WF7ecQIpAAAB9vobU2TViuWKSsCUoTQ7K0uNHfs4nQEAwAAmf5Amixd9RTCFuUJpTlaWenTCM3QFAAADmTnnC/lxyWKCKcwRSvPzT6rxBFIAAAxpRvrHsnolp/IR4qH0dFGRuv/+R+kGAAAG9v6UNNmcuZFgitAMpQ6HY/c99z5EJwAACAKvvzFZfjt0kGCK0AulM9NTY2gDAADB479PvCjFxacJpgidUJq5cZ36cekaugAAQJAZNWqsKEUuRQiE0rzjx9Qbb06lAwAABKkVv/xEKkVwh1KllIx96L9UHwCAIDY1aY4cy80hmCJ4Q+mqlctYgQEACAEPj3uKIiA4Q2lx8Wk15YMMKg8AQIjI3LCOwSYEXyidPnUaVQcAIIS88dZUKSk5QzBF8ITSrKzDat2G7VQdAIAQ89P331EEBE8onThxEhUHACAEzf7wf3LmDKOlCIJQmncsVx0/XkDFAQAIUct/+ZEiwPihNDk5hWoDABDC0md+LvbSUkZLYdxQWlBQoLZs20e1AQAIcb+uXkERYNxQun7taioNAIAJTEuaQxFQJjY9JjIj7WMqDQBBrlbNqtKzRyepXDkqJJevsKhI1q7bIjlH83SZXr26NWX4sFulZauLJLJSJe2P/15aWqL27tkt33/3vaxeuyUoa5mTna3q1a+vsdXAG1pRQb5fJ3D48CH1+OMvUGkACEK3Dx0kvS7tIzVr1zFVwMjLO67WrFohsz/8n1++/+23XpI6detdsKYFBQUqNSVFgu1xirffOkiuH3wToRTGCqXz5s5SXy1cSqUBIMhMnvyGVKtW3dTB4lRBgbpvzCM++77Y4TfJVQMGaprmXVnXrVmtJr2bHFS1mzUr2evlhLn5/ZpSAikABJfohnUkPX3aILMHUhGRKlWrajMzpmvdurQp93fdk3CnXH3NoDIFta7dL9GefOKhoKrdkcO/cRc+jBNKT548wQoJAEHmpZdfGGSz2RZRibM7SqtVHhz7ULkCescOLeWyK/qX6zvatG2njYwbGjR1271rBysPjBNK9+zaSYUBIIhMnvyGEEj/PZhOm1r2txLef/8DPpmPK/pfHTSj19zkDEOF0m++XUKFASBI3D50kHDK/tyiKlfW7h4+xOu/i7v7JqkYGemTulosFnns0TFBUzOXy8WKA2OE0p27DlJhAAgSPS/tQxEu4JKe3teoc9cePp2HNhe32xMs9Tr820Eu40PgQ2lpaQkrIgAEkVome+xTWVStWtXrGtWsWcundbXZwlpGRVUMinrlZGez0iDwoTT36FGqCwBBolq1KIrgoY4dWnoRIK1+mYfB110ZFLU6dowsAAOE0mO5OVQXAIJEzx6dKIKH2rX1/PFQl3Rr55d5qFK1alDUat7HC1lhYIBQejSX6gJAkCg8VUgRPORyOT3+bFFxsV/mwelw0ggQSj218td1VBcAgsTyVZkUwUNr123y+LOZm3b7ZR5O5p+kESCUemrP3sNUFwCCiFLcn+rR/m3f4YDX9bP5i4OmXnaHnRULgQ2lAIDgcujgAcLDBRzNyfK6Rod/O+TTup45cyao+lRaUsKKA0IpAMBz778/jSJcwNw5H3r9N4u+/tqn87B29cqgqpmdUApCKQDAGzlH8+TggX2Mlp5DdtYRtW7Ddq//7ufl6+VY7lGf1LWk5IyanjI3qOpWUlrKygNCKQDAO08+9YoUFp4imP5NcfFp9eiEZ8v89w+Pe1KcTke57npSSslLL7wSdLVz2AmlIJQCAMpg9Ohxkp+fTzA9q7DwlBo1amy5v+fVV16LcbvdZf77JYsXqQOHgu8NSUrxojAQSgEAZXT//eNl6+ZNpg+mO3dsU6NHj/PNd+06KHffPUqVlHh3o5LL5ZKkqR+ojFmfs2IipNkoAQDg37z6+nsiIurhsYnS5uJ2EhlZyRRDXiUlZ9SObVvkzben++X7ExIekAfvH6m6X9JL07Tzl3Tb1s3qlVffZWWEKWhFBfl++eJhwxI49QMAwHkMHNBHOnXuItVq1JBKlaKkpLhY8gtOyr49u2XuR1+FxDK++Px/pVmLFpzDxwUxUgoAQIAsWrxMFi1eRiEA4ZpSAAAAEEoBAAAAQikAAAAIpQAAAAChFAAAAIRSAAAAgFAKAAAAQikAAABAKAUAAAChFAAAACCUAgAAgFAKAAAAEEoBAABAKAUAAAAIpQAAACCUAgAAAIRSAAAAEEoBAAAAQikAAAAIpQAAAAChFAAAAIRSAAAAgFAKAAAAQikAAABAKAUAAIAB2EJhIcbcF0snAQDw0Mm8PJn70VcUAoRSX+rXt7v0uvQyjVYCAOCZQwcPKCGUwmA4fQ8AAABCKQAAAEAoBQAAAKEUAAAAIJQCAACAUAoAAAAQSgEAAEAoBQAAAAilAAAAIJQCAAAAhFIAAAAQSgEAAAAbJQAAwFxq1a4tT/x3rFStWk2iKleR8LAwv00rIiJCo+IglAIAgH+IjKyktb24PYWAoXD6HgAAAIRSAAAAgFAKAAAAQikAAABAKAUAAAChFAAAACCUAgAAgFAKAAAAEEoBAABAKAUAAAAIpQAAACCUAgAAAIRSAAAABJyNEgAAYE6W/F3KkpspmqPQ79NSkfXEVberqMi6GpUHoRQAAIi4nQMjVj2/MHbUf0SkmY4T/k3SPv1BOS66g2CKfx4kUQIAAMwlfFPS2UCqvxG3tBRr9ipFF0AoBQDA1JTEDesR0Dmw7fmCNoBQCgCAmWnFxwM+Shk7+hYaAUIpAADmDqXZFAGEUgAAEOAd/+kcY4Tj0gKuKwWhFAAAs9KKDBJKi3NoBgilAACYNpQa5PS9VpRFM0AoBQDArLZtqmWMAHKaa1tBKAUAwLQmTupoiPnQCKUglAIAgICH0iKuKQWhFAAAc3KVGOaO99gxt9EPEEoBADDlTr+IU+YglAIAgAAz3HWcLjvPKgWhFAAA84VSY13HaSk+SlNAKAUAwHQ7fYOFUu7AB6EUAAATMtp77zWucQWhFAAA84kd9R9CMgilAAAAfwkhnL4HoRQAALMx3o3usYk30BYQSgEAMBPtTB6PXwKhFAAABDiUGvZUOVkZhFIAAMyzwz9tzHfNayUnSaUglAIAYBZGHSnVTmfRHBBKAQD4S0AqzlGa/VRIjtxpBh0pNeoIbrkot2jFxxTX8XrHRgkALine truncated
@media (prefers-color-scheme: dark) { :root { filter: none; } }
</style></svg>

After

Width:  |  Height:  |  Size: 26 KiB

+21
View File
@@ -0,0 +1,21 @@
{
"name": "API",
"short_name": "API",
"icons": [
{
"src": "/static/favicon/web-app-manifest-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "/static/favicon/web-app-manifest-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

+2
View File
@@ -38,8 +38,10 @@
"lean" : {
"autoload": {
"definitions" : [
"meta/definitions/software.php"
],
"config": [
"meta/config.php"
]
}
}
+9
View File
@@ -0,0 +1,9 @@
<?php
return [
'lean' => [
'autoload' => [
'lean.api',
]
],
];
+38
View File
@@ -0,0 +1,38 @@
<?php
$path = dirname(__DIR__, 2);
return [
'lean.api' => [
'picea' => [
'context' => Lean\Api\View::class,
'view' => [
[
'path' => implode(DIRECTORY_SEPARATOR, [ $path , "view", '' ]),
'order' => 99,
],
],
'asset' => [
[
'path' => implode(DIRECTORY_SEPARATOR, [ $path, "asset", '' ]),
'order' => 10
],
],
],
'tell' => [
'json' => [
[
'path' => implode(DIRECTORY_SEPARATOR, [ $path, "meta", "i18n", "" ]),
'order' => 99,
],
]
],
'routes' => [
'Lean\\Api\\Controller' => implode(DIRECTORY_SEPARATOR, [ $path, "src", "Controller", "" ]),
],
],
];
+16
View File
@@ -0,0 +1,16 @@
<?php
namespace Lean\Api\Attribute;
#[\Attribute(\Attribute::TARGET_PROPERTY | \Attribute::TARGET_CLASS)]
class EntityField
{
public function __construct(
public string $description = "",
public bool $mandatory = false,
public ?int $minLength = null,
public ?int $maxLength = null,
public ?string $regexFormat = null,
public mixed $example = null,
) {}
}
+3 -1
View File
@@ -2,6 +2,7 @@
namespace Lean\Api;
use Lean\Api\Attribute\EntityField;
use Lean\Factory\HttpFactory;
use Notes\ObjectReflection;
use Notes\Route\Attribute\Method\Route;
@@ -80,6 +81,7 @@ class EntityDescriptor
$table = $reflector->reflectClass()->getAttribute(Table::class);
foreach($reflector->reflectProperties() as $property) {
$entityField = $property->getAttribute(EntityField::class);
$field = $property->getAttribute(Field::class);
if ($field) {
@@ -87,7 +89,7 @@ class EntityDescriptor
$propertyHtml .= sprintf(
$this->entityField,
$property->name,
$field->object->description,
$entityField->object->description ?? "",
$field->object->name ?: $property->name,
$field->tag,
$field->object->type ?? implode(' | ', array_map(fn($e) => $e->type, $types)),