@besaitech/ng-design-system-mcp 0.0.5 → 0.0.7
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 +460 -3
- package/dist/doc-index.schema.js +3 -1
- package/dist/render.js +4 -5
- package/dist/server.js +1 -1
- 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.34",
|
|
4
4
|
"packageName": "@besaitech/ng-design-system",
|
|
5
5
|
"devImport": "saitech-design-system",
|
|
6
|
-
"generatedAt": "2026-
|
|
7
|
-
"componentCount":
|
|
6
|
+
"generatedAt": "2026-09-02T09:32:28.288Z",
|
|
7
|
+
"componentCount": 31,
|
|
8
8
|
"components": [
|
|
9
9
|
{
|
|
10
10
|
"className": "SdsAccordion",
|
|
@@ -415,6 +415,15 @@
|
|
|
415
415
|
"alias": null,
|
|
416
416
|
"jsdoc": null
|
|
417
417
|
},
|
|
418
|
+
{
|
|
419
|
+
"name": "shape",
|
|
420
|
+
"type": "SdsButtonShape",
|
|
421
|
+
"default": "'control'",
|
|
422
|
+
"required": false,
|
|
423
|
+
"transform": null,
|
|
424
|
+
"alias": null,
|
|
425
|
+
"jsdoc": "`pill` fully rounds the button. It is the shape a consumer-facing surface tends to want for its\nprimary action, and the same axis {@link SdsInput} exposes — a design system with pill inputs and\nno pill buttons would force any app that wants one back onto hand-rolled classes for its single\nmost important control."
|
|
426
|
+
},
|
|
418
427
|
{
|
|
419
428
|
"name": "type",
|
|
420
429
|
"type": "'button' | 'submit' | 'reset'",
|
|
@@ -481,6 +490,11 @@
|
|
|
481
490
|
"name": "SdsButtonSize",
|
|
482
491
|
"kind": "union",
|
|
483
492
|
"body": "'sm' | 'md' | 'lg'"
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"name": "SdsButtonShape",
|
|
496
|
+
"kind": "union",
|
|
497
|
+
"body": "'control' | 'pill'"
|
|
484
498
|
}
|
|
485
499
|
],
|
|
486
500
|
"projectionSlots": [
|
|
@@ -610,6 +624,51 @@
|
|
|
610
624
|
"transform": null,
|
|
611
625
|
"alias": null,
|
|
612
626
|
"jsdoc": null
|
|
627
|
+
},
|
|
628
|
+
{
|
|
629
|
+
"name": "calendarLabel",
|
|
630
|
+
"type": "string",
|
|
631
|
+
"default": "'Calendrier'",
|
|
632
|
+
"required": false,
|
|
633
|
+
"transform": null,
|
|
634
|
+
"alias": null,
|
|
635
|
+
"jsdoc": "Accessible name for the calendar container. French default so existing consumers are unchanged,\nbut an app serving more than one language MUST translate it."
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"name": "previousLabel",
|
|
639
|
+
"type": "string",
|
|
640
|
+
"default": "'Précédent'",
|
|
641
|
+
"required": false,
|
|
642
|
+
"transform": null,
|
|
643
|
+
"alias": null,
|
|
644
|
+
"jsdoc": "Accessible name for the \"previous\" nav button. It is icon-only, so this string is its ONLY\naccessible name — a hardcoded French one is simply wrong in every other locale. Translate it in\nthe consuming app."
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
"name": "nextLabel",
|
|
648
|
+
"type": "string",
|
|
649
|
+
"default": "'Suivant'",
|
|
650
|
+
"required": false,
|
|
651
|
+
"transform": null,
|
|
652
|
+
"alias": null,
|
|
653
|
+
"jsdoc": "Accessible name for the icon-only \"next\" nav button. See {@link previousLabel}."
|
|
654
|
+
},
|
|
655
|
+
{
|
|
656
|
+
"name": "todayActionLabel",
|
|
657
|
+
"type": "string",
|
|
658
|
+
"default": "\"Aujourd'hui\"",
|
|
659
|
+
"required": false,
|
|
660
|
+
"transform": null,
|
|
661
|
+
"alias": null,
|
|
662
|
+
"jsdoc": "Visible text of the \"today\" action (shown when {@link showActions} is true). Translate it in the\nconsuming app — the library ships no i18n of its own."
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
"name": "clearActionLabel",
|
|
666
|
+
"type": "string",
|
|
667
|
+
"default": "'Effacer'",
|
|
668
|
+
"required": false,
|
|
669
|
+
"transform": null,
|
|
670
|
+
"alias": null,
|
|
671
|
+
"jsdoc": "Visible text of the \"clear\" action. See {@link todayActionLabel}."
|
|
613
672
|
}
|
|
614
673
|
],
|
|
615
674
|
"outputs": [
|
|
@@ -922,6 +981,87 @@
|
|
|
922
981
|
"transform": null,
|
|
923
982
|
"alias": null,
|
|
924
983
|
"jsdoc": "Custom display formatter (default dd/MM/yyyy)."
|
|
984
|
+
},
|
|
985
|
+
{
|
|
986
|
+
"name": "clearLabel",
|
|
987
|
+
"type": "string",
|
|
988
|
+
"default": "'Effacer la date'",
|
|
989
|
+
"required": false,
|
|
990
|
+
"transform": null,
|
|
991
|
+
"alias": null,
|
|
992
|
+
"jsdoc": "Accessible name for the clear button. French default so existing consumers are unchanged, but an\napp serving more than one language MUST translate it — it is an icon-only control, so this string\nis its only name."
|
|
993
|
+
},
|
|
994
|
+
{
|
|
995
|
+
"name": "openCalendarLabel",
|
|
996
|
+
"type": "string",
|
|
997
|
+
"default": "'Ouvrir le calendrier'",
|
|
998
|
+
"required": false,
|
|
999
|
+
"transform": null,
|
|
1000
|
+
"alias": null,
|
|
1001
|
+
"jsdoc": "Accessible name for the icon-only calendar toggle while the panel is CLOSED. See\n{@link clearLabel} for why this has to be translatable."
|
|
1002
|
+
},
|
|
1003
|
+
{
|
|
1004
|
+
"name": "closeCalendarLabel",
|
|
1005
|
+
"type": "string",
|
|
1006
|
+
"default": "'Fermer le calendrier'",
|
|
1007
|
+
"required": false,
|
|
1008
|
+
"transform": null,
|
|
1009
|
+
"alias": null,
|
|
1010
|
+
"jsdoc": "Accessible name for the calendar toggle while the panel is OPEN. See {@link openCalendarLabel}."
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
"name": "panelLabel",
|
|
1014
|
+
"type": "string",
|
|
1015
|
+
"default": "'Sélection de date'",
|
|
1016
|
+
"required": false,
|
|
1017
|
+
"transform": null,
|
|
1018
|
+
"alias": null,
|
|
1019
|
+
"jsdoc": "Accessible name for the overlay dialog that holds the calendar."
|
|
1020
|
+
},
|
|
1021
|
+
{
|
|
1022
|
+
"name": "calendarLabel",
|
|
1023
|
+
"type": "string",
|
|
1024
|
+
"default": "'Calendrier'",
|
|
1025
|
+
"required": false,
|
|
1026
|
+
"transform": null,
|
|
1027
|
+
"alias": null,
|
|
1028
|
+
"jsdoc": "Labels forwarded to the embedded <sds-calendar>. They live here because the picker is how the\ncalendar is normally reached — without forwarding, a consumer could translate the field but not\nthe panel it opens. Defaults match SdsCalendar's own, so nothing changes for existing consumers."
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
"name": "previousLabel",
|
|
1032
|
+
"type": "string",
|
|
1033
|
+
"default": "'Précédent'",
|
|
1034
|
+
"required": false,
|
|
1035
|
+
"transform": null,
|
|
1036
|
+
"alias": null,
|
|
1037
|
+
"jsdoc": null
|
|
1038
|
+
},
|
|
1039
|
+
{
|
|
1040
|
+
"name": "nextLabel",
|
|
1041
|
+
"type": "string",
|
|
1042
|
+
"default": "'Suivant'",
|
|
1043
|
+
"required": false,
|
|
1044
|
+
"transform": null,
|
|
1045
|
+
"alias": null,
|
|
1046
|
+
"jsdoc": null
|
|
1047
|
+
},
|
|
1048
|
+
{
|
|
1049
|
+
"name": "todayActionLabel",
|
|
1050
|
+
"type": "string",
|
|
1051
|
+
"default": "\"Aujourd'hui\"",
|
|
1052
|
+
"required": false,
|
|
1053
|
+
"transform": null,
|
|
1054
|
+
"alias": null,
|
|
1055
|
+
"jsdoc": null
|
|
1056
|
+
},
|
|
1057
|
+
{
|
|
1058
|
+
"name": "clearActionLabel",
|
|
1059
|
+
"type": "string",
|
|
1060
|
+
"default": "'Effacer'",
|
|
1061
|
+
"required": false,
|
|
1062
|
+
"transform": null,
|
|
1063
|
+
"alias": null,
|
|
1064
|
+
"jsdoc": null
|
|
925
1065
|
}
|
|
926
1066
|
],
|
|
927
1067
|
"outputs": [],
|
|
@@ -1724,6 +1864,179 @@
|
|
|
1724
1864
|
},
|
|
1725
1865
|
"examples": []
|
|
1726
1866
|
},
|
|
1867
|
+
{
|
|
1868
|
+
"className": "SdsOtpInput",
|
|
1869
|
+
"selector": "sds-otp-input",
|
|
1870
|
+
"kind": "component",
|
|
1871
|
+
"group": "primitive",
|
|
1872
|
+
"importName": "SdsOtpInput",
|
|
1873
|
+
"description": "Champ de code à usage unique segmenté : une case par caractère, pour les courts codes numériques envoyés par e-mail ou SMS. Saisie automatique de case en case, collage réparti, navigation au clavier. Implémente ControlValueAccessor — utilisable avec les formulaires réactifs ou [(ngModel)] ; la valeur est la chaîne concaténée.",
|
|
1874
|
+
"overviewDescription": "Code à usage unique segmenté : saisie auto, collage, clavier.",
|
|
1875
|
+
"jsdoc": "A segmented one-time-code field: one box per character, for the short numeric codes emailed or\ntexted for sign-in and verification. Implements ControlValueAccessor — bind\n`formControlName`/`[(ngModel)]`; the value is the concatenated string (e.g. `\"483920\"`), and\n{@link completed} fires the moment every box is filled.\n\n<p>Only digits are accepted (`inputMode` is `numeric` by default). Typing auto-advances,\nBackspace steps back and clears, the arrow keys move between boxes, and pasting a whole code\ndistributes it across the boxes from the focused one — so a user can paste `483920` into the\nfirst box and have it land correctly.",
|
|
1876
|
+
"example": null,
|
|
1877
|
+
"cva": true,
|
|
1878
|
+
"usesNgModel": true,
|
|
1879
|
+
"inputs": [
|
|
1880
|
+
{
|
|
1881
|
+
"name": "length",
|
|
1882
|
+
"type": "number",
|
|
1883
|
+
"default": "6",
|
|
1884
|
+
"required": false,
|
|
1885
|
+
"transform": "numberAttribute",
|
|
1886
|
+
"alias": null,
|
|
1887
|
+
"jsdoc": "How many boxes / characters the code has."
|
|
1888
|
+
},
|
|
1889
|
+
{
|
|
1890
|
+
"name": "label",
|
|
1891
|
+
"type": "string",
|
|
1892
|
+
"default": "''",
|
|
1893
|
+
"required": false,
|
|
1894
|
+
"transform": null,
|
|
1895
|
+
"alias": null,
|
|
1896
|
+
"jsdoc": null
|
|
1897
|
+
},
|
|
1898
|
+
{
|
|
1899
|
+
"name": "ariaLabel",
|
|
1900
|
+
"type": "string",
|
|
1901
|
+
"default": "''",
|
|
1902
|
+
"required": false,
|
|
1903
|
+
"transform": null,
|
|
1904
|
+
"alias": null,
|
|
1905
|
+
"jsdoc": "Accessible name for the whole group when no visible [label] is provided."
|
|
1906
|
+
},
|
|
1907
|
+
{
|
|
1908
|
+
"name": "hint",
|
|
1909
|
+
"type": "string",
|
|
1910
|
+
"default": "''",
|
|
1911
|
+
"required": false,
|
|
1912
|
+
"transform": null,
|
|
1913
|
+
"alias": null,
|
|
1914
|
+
"jsdoc": null
|
|
1915
|
+
},
|
|
1916
|
+
{
|
|
1917
|
+
"name": "error",
|
|
1918
|
+
"type": "string",
|
|
1919
|
+
"default": "''",
|
|
1920
|
+
"required": false,
|
|
1921
|
+
"transform": null,
|
|
1922
|
+
"alias": null,
|
|
1923
|
+
"jsdoc": null
|
|
1924
|
+
},
|
|
1925
|
+
{
|
|
1926
|
+
"name": "size",
|
|
1927
|
+
"type": "SdsOtpInputSize",
|
|
1928
|
+
"default": "'md'",
|
|
1929
|
+
"required": false,
|
|
1930
|
+
"transform": null,
|
|
1931
|
+
"alias": null,
|
|
1932
|
+
"jsdoc": null
|
|
1933
|
+
},
|
|
1934
|
+
{
|
|
1935
|
+
"name": "inputMode",
|
|
1936
|
+
"type": "'numeric' | 'text'",
|
|
1937
|
+
"default": "'numeric'",
|
|
1938
|
+
"required": false,
|
|
1939
|
+
"transform": null,
|
|
1940
|
+
"alias": null,
|
|
1941
|
+
"jsdoc": "`numeric` for digit codes (the default); `text` for alphanumeric codes."
|
|
1942
|
+
},
|
|
1943
|
+
{
|
|
1944
|
+
"name": "disabled",
|
|
1945
|
+
"type": "boolean",
|
|
1946
|
+
"default": "false",
|
|
1947
|
+
"required": false,
|
|
1948
|
+
"transform": "booleanAttribute",
|
|
1949
|
+
"alias": null,
|
|
1950
|
+
"jsdoc": null
|
|
1951
|
+
},
|
|
1952
|
+
{
|
|
1953
|
+
"name": "autoFocus",
|
|
1954
|
+
"type": "boolean",
|
|
1955
|
+
"default": "false",
|
|
1956
|
+
"required": false,
|
|
1957
|
+
"transform": "booleanAttribute",
|
|
1958
|
+
"alias": null,
|
|
1959
|
+
"jsdoc": "Focus the first box on first render."
|
|
1960
|
+
},
|
|
1961
|
+
{
|
|
1962
|
+
"name": "cellLabel",
|
|
1963
|
+
"type": "string",
|
|
1964
|
+
"default": "'Chiffre'",
|
|
1965
|
+
"required": false,
|
|
1966
|
+
"transform": null,
|
|
1967
|
+
"alias": null,
|
|
1968
|
+
"jsdoc": "Accessible name for an individual box, suffixed with its 1-based position (\"Digit 1\", \"Digit\n2\", …). French default so existing consumers are unchanged; translate it in an app serving more\nthan one language, since each box is an icon-less control whose only name this is."
|
|
1969
|
+
}
|
|
1970
|
+
],
|
|
1971
|
+
"outputs": [
|
|
1972
|
+
{
|
|
1973
|
+
"name": "completed",
|
|
1974
|
+
"type": "string",
|
|
1975
|
+
"fromModel": false
|
|
1976
|
+
}
|
|
1977
|
+
],
|
|
1978
|
+
"exportedTypes": [
|
|
1979
|
+
{
|
|
1980
|
+
"name": "SdsOtpInputSize",
|
|
1981
|
+
"kind": "union",
|
|
1982
|
+
"body": "'md' | 'lg'"
|
|
1983
|
+
}
|
|
1984
|
+
],
|
|
1985
|
+
"projectionSlots": [],
|
|
1986
|
+
"hostBindings": {
|
|
1987
|
+
"class": "block"
|
|
1988
|
+
},
|
|
1989
|
+
"examples": [
|
|
1990
|
+
{
|
|
1991
|
+
"sectionTitle": "Basique",
|
|
1992
|
+
"sectionDescription": "Six cases, code numérique.",
|
|
1993
|
+
"code": "<sds-otp-input label=\"Code de vérification\" [(ngModel)]=\"code\" />",
|
|
1994
|
+
"runnableExample": "<sds-otp-input label=\"Code de vérification\" [(ngModel)]=\"code\" />\n <p class=\"text-sm text-ink-soft\">\n Valeur : <span class=\"font-mono font-medium text-ink\">{{ code() || '—' }}</span>\n </p>",
|
|
1995
|
+
"stack": true,
|
|
1996
|
+
"dark": false
|
|
1997
|
+
},
|
|
1998
|
+
{
|
|
1999
|
+
"sectionTitle": "Longueur",
|
|
2000
|
+
"sectionDescription": "Le nombre de cases est réglable.",
|
|
2001
|
+
"code": "<sds-otp-input label=\"Code à 4 chiffres\" [length]=\"4\" />",
|
|
2002
|
+
"runnableExample": "<sds-otp-input label=\"Code à 4 chiffres\" [length]=\"4\" />",
|
|
2003
|
+
"stack": true,
|
|
2004
|
+
"dark": false
|
|
2005
|
+
},
|
|
2006
|
+
{
|
|
2007
|
+
"sectionTitle": "Avec aide",
|
|
2008
|
+
"sectionDescription": null,
|
|
2009
|
+
"code": "<sds-otp-input\n label=\"Entrez le code\"\n hint=\"Nous avons envoyé un code à 6 chiffres à votre adresse e-mail.\"\n/>",
|
|
2010
|
+
"runnableExample": "<sds-otp-input\n label=\"Entrez le code\"\n hint=\"Nous avons envoyé un code à 6 chiffres à votre adresse e-mail.\"\n />",
|
|
2011
|
+
"stack": true,
|
|
2012
|
+
"dark": false
|
|
2013
|
+
},
|
|
2014
|
+
{
|
|
2015
|
+
"sectionTitle": "Erreur",
|
|
2016
|
+
"sectionDescription": null,
|
|
2017
|
+
"code": "<sds-otp-input label=\"Code de vérification\" error=\"Code invalide ou expiré.\" />",
|
|
2018
|
+
"runnableExample": "<sds-otp-input label=\"Code de vérification\" error=\"Code invalide ou expiré.\" />",
|
|
2019
|
+
"stack": true,
|
|
2020
|
+
"dark": false
|
|
2021
|
+
},
|
|
2022
|
+
{
|
|
2023
|
+
"sectionTitle": "Désactivé",
|
|
2024
|
+
"sectionDescription": null,
|
|
2025
|
+
"code": "<sds-otp-input label=\"Code de vérification\" [ngModel]=\"'12'\" disabled />",
|
|
2026
|
+
"runnableExample": "<sds-otp-input label=\"Code de vérification\" [ngModel]=\"'12'\" disabled />",
|
|
2027
|
+
"stack": true,
|
|
2028
|
+
"dark": false
|
|
2029
|
+
},
|
|
2030
|
+
{
|
|
2031
|
+
"sectionTitle": "Événement completed",
|
|
2032
|
+
"sectionDescription": "Émis dès que la dernière case est remplie.",
|
|
2033
|
+
"code": "<sds-otp-input label=\"Code de vérification\" (completed)=\"onCompleted($event)\" />",
|
|
2034
|
+
"runnableExample": "<sds-otp-input label=\"Code de vérification\" (completed)=\"onCompleted($event)\" />\n <p class=\"text-sm text-ink-soft\">\n Dernier code complet :\n <span class=\"font-mono font-medium text-ink\">{{ lastCompleted() || '—' }}</span>\n </p>",
|
|
2035
|
+
"stack": true,
|
|
2036
|
+
"dark": false
|
|
2037
|
+
}
|
|
2038
|
+
]
|
|
2039
|
+
},
|
|
1727
2040
|
{
|
|
1728
2041
|
"className": "SdsPaginator",
|
|
1729
2042
|
"selector": "sds-paginator",
|
|
@@ -1845,6 +2158,69 @@
|
|
|
1845
2158
|
"alias": null,
|
|
1846
2159
|
"jsdoc": null
|
|
1847
2160
|
},
|
|
2161
|
+
{
|
|
2162
|
+
"name": "paginationLabel",
|
|
2163
|
+
"type": "string",
|
|
2164
|
+
"default": "'Pagination'",
|
|
2165
|
+
"required": false,
|
|
2166
|
+
"transform": null,
|
|
2167
|
+
"alias": null,
|
|
2168
|
+
"jsdoc": "Accessible name for the <nav> wrapping the page controls, and for the four icon-only\nfirst/prev/next/last buttons. Those buttons have no text, so these strings are their ONLY\naccessible names — the French defaults keep existing consumers unchanged, but an app serving more\nthan one language MUST pass translated values."
|
|
2169
|
+
},
|
|
2170
|
+
{
|
|
2171
|
+
"name": "firstPageLabel",
|
|
2172
|
+
"type": "string",
|
|
2173
|
+
"default": "'Première page'",
|
|
2174
|
+
"required": false,
|
|
2175
|
+
"transform": null,
|
|
2176
|
+
"alias": null,
|
|
2177
|
+
"jsdoc": null
|
|
2178
|
+
},
|
|
2179
|
+
{
|
|
2180
|
+
"name": "previousPageLabel",
|
|
2181
|
+
"type": "string",
|
|
2182
|
+
"default": "'Page précédente'",
|
|
2183
|
+
"required": false,
|
|
2184
|
+
"transform": null,
|
|
2185
|
+
"alias": null,
|
|
2186
|
+
"jsdoc": null
|
|
2187
|
+
},
|
|
2188
|
+
{
|
|
2189
|
+
"name": "nextPageLabel",
|
|
2190
|
+
"type": "string",
|
|
2191
|
+
"default": "'Page suivante'",
|
|
2192
|
+
"required": false,
|
|
2193
|
+
"transform": null,
|
|
2194
|
+
"alias": null,
|
|
2195
|
+
"jsdoc": null
|
|
2196
|
+
},
|
|
2197
|
+
{
|
|
2198
|
+
"name": "lastPageLabel",
|
|
2199
|
+
"type": "string",
|
|
2200
|
+
"default": "'Dernière page'",
|
|
2201
|
+
"required": false,
|
|
2202
|
+
"transform": null,
|
|
2203
|
+
"alias": null,
|
|
2204
|
+
"jsdoc": null
|
|
2205
|
+
},
|
|
2206
|
+
{
|
|
2207
|
+
"name": "pageLinkLabel",
|
|
2208
|
+
"type": "string",
|
|
2209
|
+
"default": "'Page {page}'",
|
|
2210
|
+
"required": false,
|
|
2211
|
+
"transform": null,
|
|
2212
|
+
"alias": null,
|
|
2213
|
+
"jsdoc": "Accessible name of a numbered page link. `{page}` is replaced with the 1-based page number —\na token rather than a prefix because word order is not the same in every language."
|
|
2214
|
+
},
|
|
2215
|
+
{
|
|
2216
|
+
"name": "jumpToPageAriaLabel",
|
|
2217
|
+
"type": "string",
|
|
2218
|
+
"default": "'Aller à la page'",
|
|
2219
|
+
"required": false,
|
|
2220
|
+
"transform": null,
|
|
2221
|
+
"alias": null,
|
|
2222
|
+
"jsdoc": "Accessible name of the jump-to-page field. Separate from the visible {@link jumpToPageLabel}\n(\"Aller à\") on purpose: the visible text is terse because it sits next to the field, while the\naccessible name has to stand alone."
|
|
2223
|
+
},
|
|
1848
2224
|
{
|
|
1849
2225
|
"name": "size",
|
|
1850
2226
|
"type": "SdsPaginatorSize",
|
|
@@ -2076,6 +2452,87 @@
|
|
|
2076
2452
|
"transform": null,
|
|
2077
2453
|
"alias": null,
|
|
2078
2454
|
"jsdoc": null
|
|
2455
|
+
},
|
|
2456
|
+
{
|
|
2457
|
+
"name": "countryLabel",
|
|
2458
|
+
"type": "string",
|
|
2459
|
+
"default": "'Indicatif pays : {country}'",
|
|
2460
|
+
"required": false,
|
|
2461
|
+
"transform": null,
|
|
2462
|
+
"alias": null,
|
|
2463
|
+
"jsdoc": "Accessible name of the country selector. `{country}` is replaced with the selected country's\nname. A token rather than a prefix because word order differs per language. French default so\nexisting consumers are unchanged; translate it in any app serving more than one language.\n\nNote the interpolated country NAME still comes from the library's built-in country table, which\nis French-only — translating this template fixes the wrapper, not the name inside it."
|
|
2464
|
+
},
|
|
2465
|
+
{
|
|
2466
|
+
"name": "clearLabel",
|
|
2467
|
+
"type": "string",
|
|
2468
|
+
"default": "'Effacer'",
|
|
2469
|
+
"required": false,
|
|
2470
|
+
"transform": null,
|
|
2471
|
+
"alias": null,
|
|
2472
|
+
"jsdoc": "Accessible name for the clear button. It is icon-only, so this string is its ONLY accessible\nname — a hardcoded French one is simply wrong in every other locale."
|
|
2473
|
+
},
|
|
2474
|
+
{
|
|
2475
|
+
"name": "searchLabel",
|
|
2476
|
+
"type": "string",
|
|
2477
|
+
"default": "'Rechercher un pays'",
|
|
2478
|
+
"required": false,
|
|
2479
|
+
"transform": null,
|
|
2480
|
+
"alias": null,
|
|
2481
|
+
"jsdoc": "Accessible name for the country-search field inside the dropdown."
|
|
2482
|
+
},
|
|
2483
|
+
{
|
|
2484
|
+
"name": "searchPlaceholder",
|
|
2485
|
+
"type": "string",
|
|
2486
|
+
"default": "'Rechercher un pays…'",
|
|
2487
|
+
"required": false,
|
|
2488
|
+
"transform": null,
|
|
2489
|
+
"alias": null,
|
|
2490
|
+
"jsdoc": "Placeholder text of the country-search field."
|
|
2491
|
+
},
|
|
2492
|
+
{
|
|
2493
|
+
"name": "noResultsLabel",
|
|
2494
|
+
"type": "string",
|
|
2495
|
+
"default": "'Aucun pays'",
|
|
2496
|
+
"required": false,
|
|
2497
|
+
"transform": null,
|
|
2498
|
+
"alias": null,
|
|
2499
|
+
"jsdoc": "Shown in place of the list when no country matches the filter."
|
|
2500
|
+
},
|
|
2501
|
+
{
|
|
2502
|
+
"name": "incompleteMessage",
|
|
2503
|
+
"type": "string",
|
|
2504
|
+
"default": "'Numéro incomplet — {lengths} chiffres attendus'",
|
|
2505
|
+
"required": false,
|
|
2506
|
+
"transform": null,
|
|
2507
|
+
"alias": null,
|
|
2508
|
+
"jsdoc": "Built-in validation messages. `{lengths}` is replaced with the country's accepted national\nlengths, joined with {@link lengthSeparator}. Siblings of {@link requiredMessage}, which was\nalready translatable — these two were not, so an English or Dutch app showed French errors."
|
|
2509
|
+
},
|
|
2510
|
+
{
|
|
2511
|
+
"name": "invalidMessage",
|
|
2512
|
+
"type": "string",
|
|
2513
|
+
"default": "'Numéro invalide — {lengths} chiffres attendus'",
|
|
2514
|
+
"required": false,
|
|
2515
|
+
"transform": null,
|
|
2516
|
+
"alias": null,
|
|
2517
|
+
"jsdoc": null
|
|
2518
|
+
},
|
|
2519
|
+
{
|
|
2520
|
+
"name": "lengthSeparator",
|
|
2521
|
+
"type": "string",
|
|
2522
|
+
"default": "' ou '",
|
|
2523
|
+
"required": false,
|
|
2524
|
+
"transform": null,
|
|
2525
|
+
"alias": null,
|
|
2526
|
+
"jsdoc": "Joins the accepted lengths when a country allows more than one (e.g. \"8 ou 9\")."
|
|
2527
|
+
},
|
|
2528
|
+
{
|
|
2529
|
+
"name": "exampleHintTemplate",
|
|
2530
|
+
"type": "string",
|
|
2531
|
+
"default": "'Ex. {number}'",
|
|
2532
|
+
"required": false,
|
|
2533
|
+
"transform": null,
|
|
2534
|
+
"alias": null,
|
|
2535
|
+
"jsdoc": "Auto-generated example hint (see {@link showExampleHint}). `{number}` is replaced with the\nformatted international example number."
|
|
2079
2536
|
}
|
|
2080
2537
|
],
|
|
2081
2538
|
"outputs": [
|
package/dist/doc-index.schema.js
CHANGED
|
@@ -112,7 +112,9 @@ export const TokenSchema = z.object({
|
|
|
112
112
|
semanticNote: z.string().nullable(),
|
|
113
113
|
});
|
|
114
114
|
export const InstallSchema = z.object({
|
|
115
|
-
|
|
115
|
+
/** Legacy: the private-registry .npmrc block. The package is on public npm, so nothing emits this
|
|
116
|
+
any more. Kept optional rather than removed so an older generated docs.json still validates. */
|
|
117
|
+
npmrc: z.string().optional(),
|
|
116
118
|
installCommand: z.string(),
|
|
117
119
|
tailwindImport: z.string(),
|
|
118
120
|
sourceDirective: z.string(),
|
package/dist/render.js
CHANGED
|
@@ -59,14 +59,13 @@ export function renderLlmsTxt(index) {
|
|
|
59
59
|
const out = [];
|
|
60
60
|
out.push(`# saitech-design-system (${index.packageName}) v${index.libraryVersion}`);
|
|
61
61
|
out.push('');
|
|
62
|
-
out.push('> Angular
|
|
63
|
-
'
|
|
64
|
-
'Generated from source; do not hand-edit.');
|
|
62
|
+
out.push('> Angular standalone component library styled with Tailwind CSS v4. Components are `Sds*` ' +
|
|
63
|
+
'classes with `sds-*` selectors. Generated from source; do not hand-edit.');
|
|
65
64
|
out.push('');
|
|
66
65
|
out.push('## Setup');
|
|
67
|
-
out.push(`- Install: \`${index.install.installCommand}\` (
|
|
66
|
+
out.push(`- Install: \`${index.install.installCommand}\` (public npm registry)`);
|
|
68
67
|
out.push(`- Import: \`import { SdsButton } from '${index.packageName}';\``);
|
|
69
|
-
out.push('- Tailwind v4 is required in the consuming app: `@import "tailwindcss";`, the `@source` directive for the package, and
|
|
68
|
+
out.push('- Tailwind v4 is required in the consuming app: `@import "tailwindcss";`, the `@source` directive for the package, and a brand theme preset (`themes/saitech.css` or `themes/belvigo.css`) imported AFTER it — otherwise components render unstyled.');
|
|
70
69
|
out.push('');
|
|
71
70
|
const groups = ['primitive', 'form', 'layout', 'data'];
|
|
72
71
|
out.push('## Components');
|
package/dist/server.js
CHANGED
|
@@ -133,7 +133,7 @@ export function buildServer(loaded) {
|
|
|
133
133
|
});
|
|
134
134
|
server.registerTool('sds_get_setup', {
|
|
135
135
|
title: 'Get saitech-design-system install & Tailwind setup',
|
|
136
|
-
description: 'The install + Tailwind v4 setup checklist (
|
|
136
|
+
description: 'The install + Tailwind v4 setup checklist (install command, @import/@source, brand theme preset, peer deps, standalone usage). The #1 source of "components render unstyled" issues.',
|
|
137
137
|
inputSchema: {
|
|
138
138
|
context: z.enum(['consumer', 'contributor']).optional().describe('Audience (default: consumer).'),
|
|
139
139
|
},
|
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.7",
|
|
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": {
|