@besaitech/ng-design-system-mcp 0.0.10 → 0.0.11
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/data/docs.json +235 -4
- package/package.json +1 -1
package/data/docs.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"libraryVersion": "0.0.
|
|
3
|
+
"libraryVersion": "0.0.41",
|
|
4
4
|
"packageName": "@besaitech/ng-design-system",
|
|
5
5
|
"devImport": "saitech-design-system",
|
|
6
|
-
"generatedAt": "2026-09-
|
|
7
|
-
"componentCount":
|
|
6
|
+
"generatedAt": "2026-09-15T12:45:18.055Z",
|
|
7
|
+
"componentCount": 33,
|
|
8
8
|
"components": [
|
|
9
9
|
{
|
|
10
10
|
"className": "SdsAccordion",
|
|
@@ -1576,6 +1576,179 @@
|
|
|
1576
1576
|
}
|
|
1577
1577
|
]
|
|
1578
1578
|
},
|
|
1579
|
+
{
|
|
1580
|
+
"className": "SdsLocalizedInput",
|
|
1581
|
+
"selector": "sds-localized-input",
|
|
1582
|
+
"kind": "component",
|
|
1583
|
+
"group": "primitive",
|
|
1584
|
+
"importName": "SdsLocalizedInput",
|
|
1585
|
+
"description": "Un seul champ pour saisir un texte traduit (titre, libellé, description) dans plusieurs langues. Un sélecteur compact bascule la traduction éditée ; une pastille marque les langues déjà renseignées. Le champ s'ouvre sur currentLanguage (sinon la première langue). Implémente ControlValueAccessor sur la map { langue: texte }.",
|
|
1586
|
+
"overviewDescription": null,
|
|
1587
|
+
"jsdoc": "One language-aware text field for editing a translated value (a {@link SdsLocalizedValue} — a title,\nlabel or description in several languages). Only one language is edited at a time; a compact switcher\nsitting **inside the field** flips which translation you are editing, and a dot marks the languages that\nalready have content, so a partially-translated value is obvious at a glance.\n\nThe active language defaults to {@link currentLanguage} when it is one of {@link languages}, otherwise the\nfirst accepted language — so the field \"opens on the language you are working in\". Empty translations are\npruned from the emitted value, keeping the stored map clean.\n\nImplements ControlValueAccessor over the map — use with reactive forms or `[(ngModel)]`:\n`<sds-localized-input [languages]=\"['fr','nl','en']\" [(ngModel)]=\"title\" />`.",
|
|
1588
|
+
"example": null,
|
|
1589
|
+
"cva": true,
|
|
1590
|
+
"usesNgModel": true,
|
|
1591
|
+
"inputs": [
|
|
1592
|
+
{
|
|
1593
|
+
"name": "label",
|
|
1594
|
+
"type": "string",
|
|
1595
|
+
"default": "''",
|
|
1596
|
+
"required": false,
|
|
1597
|
+
"transform": null,
|
|
1598
|
+
"alias": null,
|
|
1599
|
+
"jsdoc": null
|
|
1600
|
+
},
|
|
1601
|
+
{
|
|
1602
|
+
"name": "hint",
|
|
1603
|
+
"type": "string",
|
|
1604
|
+
"default": "''",
|
|
1605
|
+
"required": false,
|
|
1606
|
+
"transform": null,
|
|
1607
|
+
"alias": null,
|
|
1608
|
+
"jsdoc": null
|
|
1609
|
+
},
|
|
1610
|
+
{
|
|
1611
|
+
"name": "placeholder",
|
|
1612
|
+
"type": "string",
|
|
1613
|
+
"default": "''",
|
|
1614
|
+
"required": false,
|
|
1615
|
+
"transform": null,
|
|
1616
|
+
"alias": null,
|
|
1617
|
+
"jsdoc": null
|
|
1618
|
+
},
|
|
1619
|
+
{
|
|
1620
|
+
"name": "languages",
|
|
1621
|
+
"type": "string[]",
|
|
1622
|
+
"default": "[]",
|
|
1623
|
+
"required": false,
|
|
1624
|
+
"transform": null,
|
|
1625
|
+
"alias": null,
|
|
1626
|
+
"jsdoc": "The accepted language codes, in display order (e.g. `['fr','nl','en']`)."
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
"name": "currentLanguage",
|
|
1630
|
+
"type": "string | null",
|
|
1631
|
+
"default": "null",
|
|
1632
|
+
"required": false,
|
|
1633
|
+
"transform": null,
|
|
1634
|
+
"alias": null,
|
|
1635
|
+
"jsdoc": "Language to pre-select; used when it is one of {@link languages}, else the first accepted language."
|
|
1636
|
+
},
|
|
1637
|
+
{
|
|
1638
|
+
"name": "multiline",
|
|
1639
|
+
"type": "boolean",
|
|
1640
|
+
"default": "false",
|
|
1641
|
+
"required": false,
|
|
1642
|
+
"transform": "booleanAttribute",
|
|
1643
|
+
"alias": null,
|
|
1644
|
+
"jsdoc": null
|
|
1645
|
+
},
|
|
1646
|
+
{
|
|
1647
|
+
"name": "rows",
|
|
1648
|
+
"type": "number",
|
|
1649
|
+
"default": "3",
|
|
1650
|
+
"required": false,
|
|
1651
|
+
"transform": "numberAttribute",
|
|
1652
|
+
"alias": null,
|
|
1653
|
+
"jsdoc": null
|
|
1654
|
+
},
|
|
1655
|
+
{
|
|
1656
|
+
"name": "size",
|
|
1657
|
+
"type": "SdsLocalizedInputSize",
|
|
1658
|
+
"default": "'md'",
|
|
1659
|
+
"required": false,
|
|
1660
|
+
"transform": null,
|
|
1661
|
+
"alias": null,
|
|
1662
|
+
"jsdoc": null
|
|
1663
|
+
},
|
|
1664
|
+
{
|
|
1665
|
+
"name": "disabled",
|
|
1666
|
+
"type": "boolean",
|
|
1667
|
+
"default": "false",
|
|
1668
|
+
"required": false,
|
|
1669
|
+
"transform": "booleanAttribute",
|
|
1670
|
+
"alias": null,
|
|
1671
|
+
"jsdoc": null
|
|
1672
|
+
},
|
|
1673
|
+
{
|
|
1674
|
+
"name": "languageSwitcherLabel",
|
|
1675
|
+
"type": "string",
|
|
1676
|
+
"default": "'Langue'",
|
|
1677
|
+
"required": false,
|
|
1678
|
+
"transform": null,
|
|
1679
|
+
"alias": null,
|
|
1680
|
+
"jsdoc": "Accessible name for the in-field language switcher, and the \"no translation yet\" title suffix on each\nlanguage button. French defaults so existing consumers are unchanged; translate them in a multi-language\napp (the buttons are letter-only, so the title carries their meaning)."
|
|
1681
|
+
},
|
|
1682
|
+
{
|
|
1683
|
+
"name": "untranslatedLabel",
|
|
1684
|
+
"type": "string",
|
|
1685
|
+
"default": "'à traduire'",
|
|
1686
|
+
"required": false,
|
|
1687
|
+
"transform": null,
|
|
1688
|
+
"alias": null,
|
|
1689
|
+
"jsdoc": null
|
|
1690
|
+
}
|
|
1691
|
+
],
|
|
1692
|
+
"outputs": [],
|
|
1693
|
+
"exportedTypes": [
|
|
1694
|
+
{
|
|
1695
|
+
"name": "SdsLocalizedValue",
|
|
1696
|
+
"kind": "type",
|
|
1697
|
+
"body": "Record<string, string>"
|
|
1698
|
+
},
|
|
1699
|
+
{
|
|
1700
|
+
"name": "SdsLocalizedInputSize",
|
|
1701
|
+
"kind": "union",
|
|
1702
|
+
"body": "'sm' | 'md' | 'lg'"
|
|
1703
|
+
}
|
|
1704
|
+
],
|
|
1705
|
+
"projectionSlots": [],
|
|
1706
|
+
"hostBindings": {
|
|
1707
|
+
"class": "block"
|
|
1708
|
+
},
|
|
1709
|
+
"examples": [
|
|
1710
|
+
{
|
|
1711
|
+
"sectionTitle": "Basique",
|
|
1712
|
+
"sectionDescription": "Passez les langues acceptées ; le champ s'ouvre sur la langue courante et n'édite qu'une langue à la fois.",
|
|
1713
|
+
"code": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n [(ngModel)]=\"title\"\n/>\n\n// title: SdsLocalizedValue = {}; // e.g. { fr: 'Signaler un incident' }",
|
|
1714
|
+
"runnableExample": "<sds-localized-input label=\"Titre\" [languages]=\"['fr', 'nl', 'en']\" [(ngModel)]=\"title\" />",
|
|
1715
|
+
"stack": true,
|
|
1716
|
+
"dark": false
|
|
1717
|
+
},
|
|
1718
|
+
{
|
|
1719
|
+
"sectionTitle": "Valeur partiellement traduite",
|
|
1720
|
+
"sectionDescription": "Une pastille pleine marque les langues renseignées, une pastille creuse celles qui restent à traduire.",
|
|
1721
|
+
"code": "label = { fr: 'Applications & logiciels', en: 'Applications & software' };\n\n<sds-localized-input\n label=\"Libellé de catégorie\"\n [languages]=\"['fr', 'nl', 'en']\"\n [(ngModel)]=\"label\"\n/>",
|
|
1722
|
+
"runnableExample": "<sds-localized-input\n label=\"Libellé de catégorie\"\n [languages]=\"['fr', 'nl', 'en']\"\n [(ngModel)]=\"label\"\n />",
|
|
1723
|
+
"stack": true,
|
|
1724
|
+
"dark": false
|
|
1725
|
+
},
|
|
1726
|
+
{
|
|
1727
|
+
"sectionTitle": "Langue pré-sélectionnée",
|
|
1728
|
+
"sectionDescription": "currentLanguage ouvre le champ sur une langue précise quand elle fait partie des langues acceptées.",
|
|
1729
|
+
"code": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n currentLanguage=\"nl\"\n [(ngModel)]=\"title\"\n/>",
|
|
1730
|
+
"runnableExample": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n currentLanguage=\"nl\"\n [(ngModel)]=\"titleNl\"\n />",
|
|
1731
|
+
"stack": true,
|
|
1732
|
+
"dark": false
|
|
1733
|
+
},
|
|
1734
|
+
{
|
|
1735
|
+
"sectionTitle": "Multiligne",
|
|
1736
|
+
"sectionDescription": "multiline rend une zone de texte au lieu d'un champ simple.",
|
|
1737
|
+
"code": "<sds-localized-input\n label=\"Description\"\n [languages]=\"['fr', 'nl', 'en']\"\n multiline\n [rows]=\"3\"\n [(ngModel)]=\"description\"\n/>",
|
|
1738
|
+
"runnableExample": "<sds-localized-input\n label=\"Description\"\n [languages]=\"['fr', 'nl', 'en']\"\n multiline\n [rows]=\"3\"\n [(ngModel)]=\"description\"\n />",
|
|
1739
|
+
"stack": true,
|
|
1740
|
+
"dark": false
|
|
1741
|
+
},
|
|
1742
|
+
{
|
|
1743
|
+
"sectionTitle": "Désactivé",
|
|
1744
|
+
"sectionDescription": null,
|
|
1745
|
+
"code": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n [(ngModel)]=\"value\"\n disabled\n/>",
|
|
1746
|
+
"runnableExample": "<sds-localized-input\n label=\"Titre\"\n [languages]=\"['fr', 'nl', 'en']\"\n [ngModel]=\"label\"\n disabled\n />",
|
|
1747
|
+
"stack": true,
|
|
1748
|
+
"dark": false
|
|
1749
|
+
}
|
|
1750
|
+
]
|
|
1751
|
+
},
|
|
1579
1752
|
{
|
|
1580
1753
|
"className": "SdsMultiSelect",
|
|
1581
1754
|
"selector": "sds-multi-select",
|
|
@@ -3053,7 +3226,7 @@
|
|
|
3053
3226
|
"sectionTitle": "Navigation",
|
|
3054
3227
|
"sectionDescription": "Les items acceptent [link] (routerLink avec état actif automatique) ; ici active est défini manuellement pour la démo.",
|
|
3055
3228
|
"code": "<sds-sidebar>\n <sds-nav-group>\n <sds-nav-item icon=\"home\" label=\"Accueil\" link=\"/\" exact />\n </sds-nav-group>\n\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" link=\"/membres/creer\" />\n <sds-nav-item icon=\"building-2\" label=\"Recherche Occupants\" link=\"/membres/occupants\" />\n </sds-nav-group>\n\n <div sdsFooter>\n <sds-badge variant=\"warning\" dot>TEST V.1.0.0</sds-badge>\n </div>\n</sds-sidebar>",
|
|
3056
|
-
"runnableExample": "<div class=\"h-[460px] w-fit overflow-hidden rounded-card border border-border\">\n <sds-sidebar>\n <sds-nav-group>\n <sds-nav-item icon=\"home\" label=\"Accueil\" active />\n </sds-nav-group>\n\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" />\n <sds-nav-item icon=\"building-2\" label=\"Recherche Occupants\" />\n </sds-nav-group>\n\n <sds-nav-group label=\"Dotations\">\n <sds-nav-item icon=\"package-plus\" label=\"Créer une dotation\" />\n <sds-nav-item icon=\"rotate-ccw\" label=\"Retour de dotation\" />\n </sds-nav-group>\n\n <div sdsFooter>\n <
|
|
3229
|
+
"runnableExample": "<div class=\"h-[460px] w-fit overflow-hidden rounded-card border border-border\">\n <sds-sidebar>\n <sds-nav-group>\n <sds-nav-item icon=\"home\" label=\"Accueil\" active />\n </sds-nav-group>\n\n <sds-nav-group label=\"Membres\">\n <sds-nav-item icon=\"user-plus\" label=\"Créer un membre\" />\n <sds-nav-item icon=\"building-2\" label=\"Recherche Occupants\" />\n </sds-nav-group>\n\n <sds-nav-group label=\"Dotations\">\n <sds-nav-item icon=\"package-plus\" label=\"Créer une dotation\" />\n <sds-nav-item icon=\"rotate-ccw\" label=\"Retour de dotation\" />\n </sds-nav-group>\n\n <div sdsFooter class=\"text-[0.68rem] text-white/40 flex justify-center items-center\">\n <div class=\"font-mono\">Saitech Design System v{{ version }}</div>\n </div>\n </sds-sidebar>\n </div>",
|
|
3057
3230
|
"stack": true,
|
|
3058
3231
|
"dark": false
|
|
3059
3232
|
}
|
|
@@ -4013,6 +4186,52 @@
|
|
|
4013
4186
|
}
|
|
4014
4187
|
]
|
|
4015
4188
|
},
|
|
4189
|
+
{
|
|
4190
|
+
"className": "SdsToastHost",
|
|
4191
|
+
"selector": "sds-toast-host",
|
|
4192
|
+
"kind": "component",
|
|
4193
|
+
"group": "primitive",
|
|
4194
|
+
"importName": "SdsToastService, SdsToastHost",
|
|
4195
|
+
"description": "Notifications transitoires. Le code applicatif appelle SdsToastService.success / error / info après une action ; un unique <sds-toast-host> monté dans le shell affiche la file et chaque toast disparaît tout seul. Régions live accessibles : les erreurs interrompent (assertive), les succès/infos patientent (polite).",
|
|
4196
|
+
"overviewDescription": null,
|
|
4197
|
+
"jsdoc": "Renders the {@link SdsToastService} queue, fixed bottom-centre. Mount it once, in the app shell:\n`<sds-toast-host />`. Application code pushes toasts through the injected service.\n\nAccessibility: the two live regions are ALWAYS in the DOM (even when empty), because a live region must\npre-exist for its later content changes to be announced. Errors go to an assertive `role=\"alert\"` region\nso a failure interrupts; success/info go to a polite region so they queue.",
|
|
4198
|
+
"example": null,
|
|
4199
|
+
"cva": false,
|
|
4200
|
+
"usesNgModel": false,
|
|
4201
|
+
"inputs": [
|
|
4202
|
+
{
|
|
4203
|
+
"name": "closeLabel",
|
|
4204
|
+
"type": "string",
|
|
4205
|
+
"default": "'Fermer'",
|
|
4206
|
+
"required": false,
|
|
4207
|
+
"transform": null,
|
|
4208
|
+
"alias": null,
|
|
4209
|
+
"jsdoc": "Accessible name for each toast's close button. French default so existing consumers are unchanged; the\nbutton is icon-only, so an app serving more than one language MUST translate it."
|
|
4210
|
+
}
|
|
4211
|
+
],
|
|
4212
|
+
"outputs": [],
|
|
4213
|
+
"exportedTypes": [],
|
|
4214
|
+
"projectionSlots": [],
|
|
4215
|
+
"hostBindings": {},
|
|
4216
|
+
"examples": [
|
|
4217
|
+
{
|
|
4218
|
+
"sectionTitle": "Déclencher",
|
|
4219
|
+
"sectionDescription": "Injectez SdsToastService et appelez success / error / info. Les erreurs restent affichées plus longtemps.",
|
|
4220
|
+
"code": "private readonly toasts = inject(SdsToastService);\n\nsave(): void {\n this.api.save(form).subscribe({\n next: () => this.toasts.success('Formulaire enregistré.'),\n error: () => this.toasts.error('Échec de l’enregistrement.'),\n });\n}",
|
|
4221
|
+
"runnableExample": "<div class=\"flex flex-wrap gap-2\">\n <sds-button variant=\"secondary\" (click)=\"toasts.success('Formulaire enregistré.')\">\n Succès\n </sds-button>\n <sds-button variant=\"secondary\" (click)=\"toasts.error('Échec de l’enregistrement.')\">\n Erreur\n </sds-button>\n <sds-button variant=\"secondary\" (click)=\"toasts.info('Synchronisation en cours…')\">\n Info\n </sds-button>\n </div>",
|
|
4222
|
+
"stack": true,
|
|
4223
|
+
"dark": false
|
|
4224
|
+
},
|
|
4225
|
+
{
|
|
4226
|
+
"sectionTitle": "Mise en place",
|
|
4227
|
+
"sectionDescription": "Montez l'hôte une seule fois (dans le shell de l'application), puis poussez des toasts depuis n'importe quel service ou composant.",
|
|
4228
|
+
"code": "// Shell / app root — mount the host once:\n@Component({\n imports: [SdsToastHost /* … */],\n template: `\n <sds-shell> … </sds-shell>\n <sds-toast-host />\n `,\n})\nexport class AppShell {}",
|
|
4229
|
+
"runnableExample": "<p class=\"text-sm text-ink-soft\">\n <code class=\"rounded bg-muted px-1.5 py-0.5 text-xs\"><sds-toast-host /></code>\n est monté une fois en haut de l'application ; il n'a pas de rendu propre tant qu'aucun toast n'est\n actif.\n </p>",
|
|
4230
|
+
"stack": true,
|
|
4231
|
+
"dark": false
|
|
4232
|
+
}
|
|
4233
|
+
]
|
|
4234
|
+
},
|
|
4016
4235
|
{
|
|
4017
4236
|
"className": "SdsToggleSwitch",
|
|
4018
4237
|
"selector": "sds-toggle-switch",
|
|
@@ -4395,6 +4614,18 @@
|
|
|
4395
4614
|
],
|
|
4396
4615
|
"jsdoc": "Coordinates a single <sds-tabs> instance: holds the active value (shared from\nthe host's two-way model), tracks registered tabs for default selection and\ngenerates the ARIA ids that link each tab to its panel.\n\nProvided at the <sds-tabs> component level so every tab set is isolated."
|
|
4397
4616
|
},
|
|
4617
|
+
{
|
|
4618
|
+
"className": "SdsToastService",
|
|
4619
|
+
"providedIn": "root",
|
|
4620
|
+
"exports": [
|
|
4621
|
+
"toasts",
|
|
4622
|
+
"success()",
|
|
4623
|
+
"error()",
|
|
4624
|
+
"info()",
|
|
4625
|
+
"dismiss()"
|
|
4626
|
+
],
|
|
4627
|
+
"jsdoc": "A tiny transient-notification bus. Application code calls {@link success} / {@link error} / {@link info}\nafter an action; a single {@link SdsToastHost} mounted in the app shell renders the queue and each toast\nauto-dismisses. Deliberately minimal — no positions, no actions-in-toast — because it exists to confirm\nan action, not to be a notification centre.\n\n`providedIn: 'root'`, so injecting it anywhere shares one queue:\n\n```ts\nprivate readonly toasts = inject(SdsToastService);\nthis.toasts.success('Enregistré.');\n```\n\nMount the host once (e.g. in the shell): `<sds-toast-host />`."
|
|
4628
|
+
},
|
|
4398
4629
|
{
|
|
4399
4630
|
"className": "SidebarStore",
|
|
4400
4631
|
"providedIn": "root",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@besaitech/ng-design-system-mcp",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "MCP server that exposes the @besaitech/ng-design-system Angular component library documentation (API, examples, tokens, icons, setup) to AI coding tools.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|