@lastbrain/app 0.1.39 → 0.1.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +6 -1
- package/dist/hooks/useNotifications.d.ts +1 -0
- package/dist/hooks/useNotifications.d.ts.map +1 -1
- package/dist/layouts/PublicLayout.js +1 -1
- package/dist/scripts/init-app.js +54 -12
- package/dist/scripts/module-add.d.ts.map +1 -1
- package/dist/scripts/module-add.js +28 -10
- package/dist/scripts/module-build.d.ts.map +1 -1
- package/dist/scripts/module-build.js +432 -48
- package/dist/scripts/module-list.d.ts.map +1 -1
- package/dist/scripts/module-list.js +38 -8
- package/dist/styles.css +1 -1
- package/dist/templates/DefaultDoc.d.ts.map +1 -1
- package/dist/templates/DefaultDoc.js +2 -2
- package/package.json +2 -2
- package/src/cli.ts +6 -1
- package/src/hooks/useNotifications.ts +1 -0
- package/src/layouts/PublicLayout.tsx +1 -1
- package/src/scripts/init-app.ts +56 -12
- package/src/scripts/module-add.ts +44 -11
- package/src/scripts/module-build.ts +499 -54
- package/src/scripts/module-list.ts +45 -8
- package/src/templates/DefaultDoc.tsx +325 -12
|
@@ -11,19 +11,40 @@ export async function listModules(targetDir: string) {
|
|
|
11
11
|
|
|
12
12
|
// Lire la config des modules installés
|
|
13
13
|
const modulesConfigPath = path.join(targetDir, ".lastbrain", "modules.json");
|
|
14
|
-
let
|
|
14
|
+
let installedPackages: string[] = [];
|
|
15
|
+
let inactivePackages: string[] = [];
|
|
15
16
|
|
|
16
17
|
if (fs.existsSync(modulesConfigPath)) {
|
|
17
18
|
const modulesConfig = await fs.readJson(modulesConfigPath);
|
|
18
|
-
|
|
19
|
+
const modules = modulesConfig.modules || [];
|
|
20
|
+
|
|
21
|
+
// Supporte deux formats:
|
|
22
|
+
// - Ancien: string[] des noms de packages
|
|
23
|
+
// - Actuel: { package: string; active?: boolean; migrations?: string[] }[]
|
|
24
|
+
if (Array.isArray(modules)) {
|
|
25
|
+
if (modules.length > 0 && typeof modules[0] === "string") {
|
|
26
|
+
installedPackages = modules as string[];
|
|
27
|
+
} else {
|
|
28
|
+
const entries = modules as Array<{ package: string; active?: boolean }>;
|
|
29
|
+
installedPackages = entries
|
|
30
|
+
.filter((m) => m && m.package && m.active !== false)
|
|
31
|
+
.map((m) => m.package);
|
|
32
|
+
inactivePackages = entries
|
|
33
|
+
.filter((m) => m && m.package && m.active === false)
|
|
34
|
+
.map((m) => m.package);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
19
37
|
}
|
|
20
38
|
|
|
21
39
|
// Afficher tous les modules disponibles
|
|
22
40
|
AVAILABLE_MODULES.forEach((module) => {
|
|
23
|
-
const isInstalled =
|
|
41
|
+
const isInstalled = installedPackages.includes(module.package);
|
|
42
|
+
const isInactive = inactivePackages.includes(module.package);
|
|
24
43
|
const status = isInstalled
|
|
25
44
|
? chalk.green("✓ installé")
|
|
26
|
-
:
|
|
45
|
+
: isInactive
|
|
46
|
+
? chalk.yellow("⤳ inactif")
|
|
47
|
+
: chalk.gray(" disponible");
|
|
27
48
|
|
|
28
49
|
console.log(
|
|
29
50
|
chalk.bold(
|
|
@@ -34,11 +55,27 @@ export async function listModules(targetDir: string) {
|
|
|
34
55
|
console.log(chalk.gray(` Package: ${module.package}`));
|
|
35
56
|
console.log(chalk.gray(` Description: ${module.description}`));
|
|
36
57
|
console.log(` Statut: ${status}`);
|
|
58
|
+
|
|
59
|
+
// Afficher la commande appropriée selon le statut
|
|
60
|
+
if (isInstalled) {
|
|
61
|
+
console.log(
|
|
62
|
+
chalk.cyan(` → pnpm lastbrain remove-module ${module.name}`),
|
|
63
|
+
);
|
|
64
|
+
} else if (isInactive || !isInstalled) {
|
|
65
|
+
console.log(chalk.cyan(` → pnpm lastbrain add-module ${module.name}`));
|
|
66
|
+
}
|
|
67
|
+
|
|
37
68
|
console.log();
|
|
38
69
|
});
|
|
39
70
|
|
|
40
|
-
console.log(chalk.gray("
|
|
41
|
-
console.log(chalk.
|
|
42
|
-
console.log(
|
|
43
|
-
|
|
71
|
+
console.log(chalk.gray("─".repeat(50)));
|
|
72
|
+
console.log(chalk.gray("\nCommandes disponibles:"));
|
|
73
|
+
console.log(
|
|
74
|
+
chalk.cyan(" pnpm lastbrain add-module <nom> ") +
|
|
75
|
+
chalk.gray("- Ajouter un module"),
|
|
76
|
+
);
|
|
77
|
+
console.log(
|
|
78
|
+
chalk.cyan(" pnpm lastbrain remove-module <nom> ") +
|
|
79
|
+
chalk.gray("- Supprimer un module\n"),
|
|
80
|
+
);
|
|
44
81
|
}
|
|
@@ -24,7 +24,7 @@ export function DefaultDocumentation() {
|
|
|
24
24
|
<CardHeader>
|
|
25
25
|
<h2 className="text-2xl font-semibold flex items-center gap-2">
|
|
26
26
|
<FileText size={24} />
|
|
27
|
-
|
|
27
|
+
LastBrain
|
|
28
28
|
</h2>
|
|
29
29
|
</CardHeader>
|
|
30
30
|
<CardBody className="space-y-4">
|
|
@@ -33,11 +33,62 @@ export function DefaultDocumentation() {
|
|
|
33
33
|
avec système de modules, authentification et base de données.
|
|
34
34
|
</p>
|
|
35
35
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
!
|
|
37
|
+
<a
|
|
38
|
+
href="https://img.shields.io/github/package-json/dependency-version/lastpublication/starter/next?label=Next.js&path=packages/app/package.json"
|
|
39
|
+
className="text-blue-600 hover:underline"
|
|
40
|
+
target="_blank"
|
|
41
|
+
rel="noopener noreferrer"
|
|
42
|
+
>
|
|
43
|
+
Next.js
|
|
44
|
+
</a>
|
|
45
|
+
</p>
|
|
46
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
47
|
+
<strong>Require\</strong>*
|
|
48
|
+
</p>
|
|
49
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
50
|
+
!
|
|
51
|
+
<a
|
|
52
|
+
href="https://img.shields.io/npm/v/@lastbrain/app?label=%40lastbrain%2Fapp"
|
|
53
|
+
className="text-blue-600 hover:underline"
|
|
54
|
+
target="_blank"
|
|
55
|
+
rel="noopener noreferrer"
|
|
56
|
+
>
|
|
57
|
+
npm version
|
|
58
|
+
</a>
|
|
38
59
|
</p>
|
|
39
60
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
40
|
-
|
|
61
|
+
!
|
|
62
|
+
<a
|
|
63
|
+
href="https://img.shields.io/npm/v/@lastbrain/core?label=%40lastbrain%2Fcore"
|
|
64
|
+
className="text-blue-600 hover:underline"
|
|
65
|
+
target="_blank"
|
|
66
|
+
rel="noopener noreferrer"
|
|
67
|
+
>
|
|
68
|
+
npm version
|
|
69
|
+
</a>
|
|
70
|
+
</p>
|
|
71
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
72
|
+
!
|
|
73
|
+
<a
|
|
74
|
+
href="https://img.shields.io/npm/v/@lastbrain/ui?label=%40lastbrain%2Fui"
|
|
75
|
+
className="text-blue-600 hover:underline"
|
|
76
|
+
target="_blank"
|
|
77
|
+
rel="noopener noreferrer"
|
|
78
|
+
>
|
|
79
|
+
npm version
|
|
80
|
+
</a>
|
|
81
|
+
</p>
|
|
82
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
83
|
+
!
|
|
84
|
+
<a
|
|
85
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-auth?label=%40lastbrain%2Fmodule-auth"
|
|
86
|
+
className="text-blue-600 hover:underline"
|
|
87
|
+
target="_blank"
|
|
88
|
+
rel="noopener noreferrer"
|
|
89
|
+
>
|
|
90
|
+
npm version
|
|
91
|
+
</a>
|
|
41
92
|
</p>
|
|
42
93
|
</CardBody>
|
|
43
94
|
</Card>
|
|
@@ -72,25 +123,37 @@ export function DefaultDocumentation() {
|
|
|
72
123
|
. Tous ces packages sont nécessaires pour le bon fonctionnement.
|
|
73
124
|
</p>
|
|
74
125
|
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
75
|
-
{`# 1.
|
|
126
|
+
{`# 1. Lancer Docker Desktop`}
|
|
127
|
+
</Snippet>
|
|
128
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
129
|
+
{`Attendre que Docker soit “Running”.`}
|
|
130
|
+
</Snippet>
|
|
131
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
132
|
+
{`# 2. Installer Supabase CLI (si pas déjà installé)`}
|
|
133
|
+
</Snippet>
|
|
134
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
135
|
+
{`brew install supabase/tap/supabase`}
|
|
136
|
+
</Snippet>
|
|
137
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
138
|
+
{`# 3. Créer une nouvelle application (utilise @latest pour la version la plus récente)`}
|
|
76
139
|
</Snippet>
|
|
77
140
|
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
78
141
|
{`pnpx @lastbrain/app@latest init mon-app`}
|
|
79
142
|
</Snippet>
|
|
80
143
|
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
81
|
-
{`#
|
|
144
|
+
{`# 4. Accéder au dossier`}
|
|
82
145
|
</Snippet>
|
|
83
146
|
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
84
147
|
{`cd mon-app`}
|
|
85
148
|
</Snippet>
|
|
86
149
|
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
87
|
-
{`#
|
|
150
|
+
{`# 5. Initialiser Supabase`}
|
|
88
151
|
</Snippet>
|
|
89
152
|
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
90
153
|
{`pnpm db:init`}
|
|
91
154
|
</Snippet>
|
|
92
155
|
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
93
|
-
{`#
|
|
156
|
+
{`# 6. Démarrer l'application si pas déjà lancé port :3000 par default`}
|
|
94
157
|
</Snippet>
|
|
95
158
|
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
96
159
|
{`pnpm dev`}
|
|
@@ -1305,7 +1368,15 @@ export function DocUsageCustom() {
|
|
|
1305
1368
|
[module-ai](../packages/module-ai/README.md)
|
|
1306
1369
|
</h4>
|
|
1307
1370
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1308
|
-
|
|
1371
|
+
!
|
|
1372
|
+
<a
|
|
1373
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-ai?label=%40lastbrain%2Fmodule-ai"
|
|
1374
|
+
className="text-blue-600 hover:underline"
|
|
1375
|
+
target="_blank"
|
|
1376
|
+
rel="noopener noreferrer"
|
|
1377
|
+
>
|
|
1378
|
+
npm version
|
|
1379
|
+
</a>
|
|
1309
1380
|
</p>
|
|
1310
1381
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1311
1382
|
<strong>Pages</strong>: 1 auth, 1 admin
|
|
@@ -1332,7 +1403,15 @@ export function DocUsageCustom() {
|
|
|
1332
1403
|
[module-auth](../packages/module-auth/README.md)
|
|
1333
1404
|
</h4>
|
|
1334
1405
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1335
|
-
|
|
1406
|
+
!
|
|
1407
|
+
<a
|
|
1408
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-auth?label=%40lastbrain%2Fmodule-auth"
|
|
1409
|
+
className="text-blue-600 hover:underline"
|
|
1410
|
+
target="_blank"
|
|
1411
|
+
rel="noopener noreferrer"
|
|
1412
|
+
>
|
|
1413
|
+
npm version
|
|
1414
|
+
</a>
|
|
1336
1415
|
</p>
|
|
1337
1416
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1338
1417
|
<strong>Pages</strong>: 3 publique(s), 4 auth, 2 admin
|
|
@@ -1356,11 +1435,237 @@ export function DocUsageCustom() {
|
|
|
1356
1435
|
</a>
|
|
1357
1436
|
</p>
|
|
1358
1437
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">---</p>
|
|
1438
|
+
<h4 className="font-medium mb-2">
|
|
1439
|
+
[module-billing](../packages/module-billing/README.md)
|
|
1440
|
+
</h4>
|
|
1441
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1442
|
+
!
|
|
1443
|
+
<a
|
|
1444
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-billing?label=%40lastbrain%2Fmodule-billing"
|
|
1445
|
+
className="text-blue-600 hover:underline"
|
|
1446
|
+
target="_blank"
|
|
1447
|
+
rel="noopener noreferrer"
|
|
1448
|
+
>
|
|
1449
|
+
npm version
|
|
1450
|
+
</a>
|
|
1451
|
+
</p>
|
|
1452
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1453
|
+
<strong>Pages</strong>: 3 auth, 2 admin
|
|
1454
|
+
</p>
|
|
1455
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1456
|
+
<strong>Tables</strong>: billing_invoice, billing_invoice_line,
|
|
1457
|
+
billing_invoice_payment, billing_invoice_log,
|
|
1458
|
+
billing_invoice_counter, billing_settings
|
|
1459
|
+
</p>
|
|
1460
|
+
<h4 className="font-medium mb-2">Installation du module billing</h4>
|
|
1461
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
1462
|
+
{`pnpm lastbrain add-module billing`}
|
|
1463
|
+
</Snippet>
|
|
1464
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1465
|
+
<a
|
|
1466
|
+
href="../packages/module-billing/README.md"
|
|
1467
|
+
className="text-blue-600 hover:underline"
|
|
1468
|
+
target="_blank"
|
|
1469
|
+
rel="noopener noreferrer"
|
|
1470
|
+
>
|
|
1471
|
+
📖 Documentation complète →
|
|
1472
|
+
</a>
|
|
1473
|
+
</p>
|
|
1474
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">---</p>
|
|
1475
|
+
<h4 className="font-medium mb-2">
|
|
1476
|
+
[module-core-cart](../packages/module-core-cart/README.md)
|
|
1477
|
+
</h4>
|
|
1478
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1479
|
+
!
|
|
1480
|
+
<a
|
|
1481
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-core-cart?label=%40lastbrain%2Fmodule-core-cart"
|
|
1482
|
+
className="text-blue-600 hover:underline"
|
|
1483
|
+
target="_blank"
|
|
1484
|
+
rel="noopener noreferrer"
|
|
1485
|
+
>
|
|
1486
|
+
npm version
|
|
1487
|
+
</a>
|
|
1488
|
+
</p>
|
|
1489
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1490
|
+
<strong>Pages</strong>: 2 auth, 1 admin
|
|
1491
|
+
</p>
|
|
1492
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1493
|
+
<strong>Tables</strong>: carts, cart_items
|
|
1494
|
+
</p>
|
|
1495
|
+
<h4 className="font-medium mb-2">Installation du module core-cart</h4>
|
|
1496
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
1497
|
+
{`pnpm lastbrain add-module core-cart`}
|
|
1498
|
+
</Snippet>
|
|
1499
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1500
|
+
<a
|
|
1501
|
+
href="../packages/module-core-cart/README.md"
|
|
1502
|
+
className="text-blue-600 hover:underline"
|
|
1503
|
+
target="_blank"
|
|
1504
|
+
rel="noopener noreferrer"
|
|
1505
|
+
>
|
|
1506
|
+
📖 Documentation complète →
|
|
1507
|
+
</a>
|
|
1508
|
+
</p>
|
|
1509
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">---</p>
|
|
1510
|
+
<h4 className="font-medium mb-2">
|
|
1511
|
+
[module-core-commerce](../packages/module-core-commerce/README.md)
|
|
1512
|
+
</h4>
|
|
1513
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1514
|
+
!
|
|
1515
|
+
<a
|
|
1516
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-core-commerce?label=%40lastbrain%2Fmodule-core-commerce"
|
|
1517
|
+
className="text-blue-600 hover:underline"
|
|
1518
|
+
target="_blank"
|
|
1519
|
+
rel="noopener noreferrer"
|
|
1520
|
+
>
|
|
1521
|
+
npm version
|
|
1522
|
+
</a>
|
|
1523
|
+
</p>
|
|
1524
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1525
|
+
<strong>Tables</strong>: commerce_events, commerce_stats_daily
|
|
1526
|
+
</p>
|
|
1527
|
+
<h4 className="font-medium mb-2">
|
|
1528
|
+
Installation du module core-commerce
|
|
1529
|
+
</h4>
|
|
1530
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
1531
|
+
{`pnpm lastbrain add-module core-commerce`}
|
|
1532
|
+
</Snippet>
|
|
1533
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1534
|
+
<a
|
|
1535
|
+
href="../packages/module-core-commerce/README.md"
|
|
1536
|
+
className="text-blue-600 hover:underline"
|
|
1537
|
+
target="_blank"
|
|
1538
|
+
rel="noopener noreferrer"
|
|
1539
|
+
>
|
|
1540
|
+
📖 Documentation complète →
|
|
1541
|
+
</a>
|
|
1542
|
+
</p>
|
|
1543
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">---</p>
|
|
1544
|
+
<h4 className="font-medium mb-2">
|
|
1545
|
+
[module-core-order](../packages/module-core-order/README.md)
|
|
1546
|
+
</h4>
|
|
1547
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1548
|
+
!
|
|
1549
|
+
<a
|
|
1550
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-core-order?label=%40lastbrain%2Fmodule-core-order"
|
|
1551
|
+
className="text-blue-600 hover:underline"
|
|
1552
|
+
target="_blank"
|
|
1553
|
+
rel="noopener noreferrer"
|
|
1554
|
+
>
|
|
1555
|
+
npm version
|
|
1556
|
+
</a>
|
|
1557
|
+
</p>
|
|
1558
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1559
|
+
<strong>Pages</strong>: 2 auth
|
|
1560
|
+
</p>
|
|
1561
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1562
|
+
<strong>Tables</strong>: orders, order_items, order_status_logs
|
|
1563
|
+
</p>
|
|
1564
|
+
<h4 className="font-medium mb-2">
|
|
1565
|
+
Installation du module core-order
|
|
1566
|
+
</h4>
|
|
1567
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
1568
|
+
{`pnpm lastbrain add-module core-order`}
|
|
1569
|
+
</Snippet>
|
|
1570
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1571
|
+
<a
|
|
1572
|
+
href="../packages/module-core-order/README.md"
|
|
1573
|
+
className="text-blue-600 hover:underline"
|
|
1574
|
+
target="_blank"
|
|
1575
|
+
rel="noopener noreferrer"
|
|
1576
|
+
>
|
|
1577
|
+
📖 Documentation complète →
|
|
1578
|
+
</a>
|
|
1579
|
+
</p>
|
|
1580
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">---</p>
|
|
1581
|
+
<h4 className="font-medium mb-2">
|
|
1582
|
+
[module-core-payment](../packages/module-core-payment/README.md)
|
|
1583
|
+
</h4>
|
|
1584
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1585
|
+
!
|
|
1586
|
+
<a
|
|
1587
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-core-payment?label=%40lastbrain%2Fmodule-core-payment"
|
|
1588
|
+
className="text-blue-600 hover:underline"
|
|
1589
|
+
target="_blank"
|
|
1590
|
+
rel="noopener noreferrer"
|
|
1591
|
+
>
|
|
1592
|
+
npm version
|
|
1593
|
+
</a>
|
|
1594
|
+
</p>
|
|
1595
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1596
|
+
<strong>Pages</strong>: 1 admin
|
|
1597
|
+
</p>
|
|
1598
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1599
|
+
<strong>Tables</strong>: payments
|
|
1600
|
+
</p>
|
|
1601
|
+
<h4 className="font-medium mb-2">
|
|
1602
|
+
Installation du module core-payment
|
|
1603
|
+
</h4>
|
|
1604
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
1605
|
+
{`pnpm lastbrain add-module core-payment`}
|
|
1606
|
+
</Snippet>
|
|
1607
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1608
|
+
<a
|
|
1609
|
+
href="../packages/module-core-payment/README.md"
|
|
1610
|
+
className="text-blue-600 hover:underline"
|
|
1611
|
+
target="_blank"
|
|
1612
|
+
rel="noopener noreferrer"
|
|
1613
|
+
>
|
|
1614
|
+
📖 Documentation complète →
|
|
1615
|
+
</a>
|
|
1616
|
+
</p>
|
|
1617
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">---</p>
|
|
1618
|
+
<h4 className="font-medium mb-2">
|
|
1619
|
+
[module-core-product](../packages/module-core-product/README.md)
|
|
1620
|
+
</h4>
|
|
1621
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1622
|
+
!
|
|
1623
|
+
<a
|
|
1624
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-core-product?label=%40lastbrain%2Fmodule-core-product"
|
|
1625
|
+
className="text-blue-600 hover:underline"
|
|
1626
|
+
target="_blank"
|
|
1627
|
+
rel="noopener noreferrer"
|
|
1628
|
+
>
|
|
1629
|
+
npm version
|
|
1630
|
+
</a>
|
|
1631
|
+
</p>
|
|
1632
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1633
|
+
<strong>Pages</strong>: 2 publique(s)
|
|
1634
|
+
</p>
|
|
1635
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1636
|
+
<strong>Tables</strong>: products, product_variants, product_stock,
|
|
1637
|
+
product_images, product_seo
|
|
1638
|
+
</p>
|
|
1639
|
+
<h4 className="font-medium mb-2">
|
|
1640
|
+
Installation du module core-product
|
|
1641
|
+
</h4>
|
|
1642
|
+
<Snippet symbol="" hideSymbol className="text-sm mb-2">
|
|
1643
|
+
{`pnpm lastbrain add-module core-product`}
|
|
1644
|
+
</Snippet>
|
|
1645
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1646
|
+
<a
|
|
1647
|
+
href="../packages/module-core-product/README.md"
|
|
1648
|
+
className="text-blue-600 hover:underline"
|
|
1649
|
+
target="_blank"
|
|
1650
|
+
rel="noopener noreferrer"
|
|
1651
|
+
>
|
|
1652
|
+
📖 Documentation complète →
|
|
1653
|
+
</a>
|
|
1654
|
+
</p>
|
|
1655
|
+
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">---</p>
|
|
1359
1656
|
<h4 className="font-medium mb-2">
|
|
1360
1657
|
[module-recipes](../packages/module-recipes/README.md)
|
|
1361
1658
|
</h4>
|
|
1362
1659
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1363
|
-
|
|
1660
|
+
!
|
|
1661
|
+
<a
|
|
1662
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-recipes?label=%40lastbrain%2Fmodule-recipes"
|
|
1663
|
+
className="text-blue-600 hover:underline"
|
|
1664
|
+
target="_blank"
|
|
1665
|
+
rel="noopener noreferrer"
|
|
1666
|
+
>
|
|
1667
|
+
npm version
|
|
1668
|
+
</a>
|
|
1364
1669
|
</p>
|
|
1365
1670
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1366
1671
|
<strong>Pages</strong>: 4 auth
|
|
@@ -1388,7 +1693,15 @@ export function DocUsageCustom() {
|
|
|
1388
1693
|
[module-tasks](../packages/module-tasks/README.md)
|
|
1389
1694
|
</h4>
|
|
1390
1695
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1391
|
-
|
|
1696
|
+
!
|
|
1697
|
+
<a
|
|
1698
|
+
href="https://img.shields.io/npm/v/@lastbrain/module-tasks?label=%40lastbrain%2Fmodule-tasks"
|
|
1699
|
+
className="text-blue-600 hover:underline"
|
|
1700
|
+
target="_blank"
|
|
1701
|
+
rel="noopener noreferrer"
|
|
1702
|
+
>
|
|
1703
|
+
npm version
|
|
1704
|
+
</a>
|
|
1392
1705
|
</p>
|
|
1393
1706
|
<p className="text-sm text-slate-600 dark:text-slate-400 mb-2">
|
|
1394
1707
|
<strong>Pages</strong>: 2 auth, 1 admin
|