@umami/shiso 1.17.0 → 1.19.0

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.
Files changed (64) hide show
  1. package/dist/chunks/App.js +1217 -196
  2. package/dist/chunks/architectureDiagram-5GKGNRK7.js +1 -1
  3. package/dist/chunks/chunk-GMAD6QVW.js +1 -1
  4. package/dist/chunks/cose-bilkent-JH36ORCC.js +1 -1
  5. package/dist/chunks/dist.js +1 -1
  6. package/dist/chunks/docs.js +843 -22
  7. package/dist/chunks/ganttDiagram-EL5Y4UJY.js +1 -1
  8. package/dist/chunks/src.js +1 -1
  9. package/dist/components.js +1 -1
  10. package/dist/entry-client.js +1 -1
  11. package/dist/entry-server.js +1 -1
  12. package/docs.schema.json +1164 -1131
  13. package/package.json +1 -2
  14. package/scripts/check-content.mjs +44 -15
  15. package/scripts/expand-openapi-navigation.mjs +47 -21
  16. package/scripts/generate-openapi.mjs +36 -11
  17. package/scripts/generate-search-index.mjs +19 -18
  18. package/scripts/lib/openapi-project.mjs +197 -0
  19. package/scripts/lib/openapi.mjs +257 -111
  20. package/scripts/lib/request-samples.mjs +323 -0
  21. package/scripts/load-docs-config.mjs +23 -15
  22. package/scripts/load-shiso-config.mjs +30 -1
  23. package/scripts/prerender.mjs +17 -14
  24. package/scripts/vite-docs-config.mjs +1 -0
  25. package/src/App.tsx +32 -22
  26. package/src/components/ApiPlayground.tsx +522 -0
  27. package/src/components/CodeBlock.tsx +3 -1
  28. package/src/components/DocContent.tsx +15 -4
  29. package/src/components/Docs.tsx +19 -2
  30. package/src/components/Footer.tsx +3 -1
  31. package/src/components/Header.tsx +4 -3
  32. package/src/components/LanguageSwitcher.tsx +38 -29
  33. package/src/components/OpenApiOperation.tsx +73 -20
  34. package/src/components/OpenApiSchema.tsx +97 -0
  35. package/src/components/PageActions.tsx +8 -7
  36. package/src/components/SideNav.tsx +2 -2
  37. package/src/components/docs/Changelog.tsx +5 -5
  38. package/src/components/docs/CodeGroup.tsx +3 -1
  39. package/src/components/docs/Mermaid.tsx +8 -6
  40. package/src/components/docs/PropertiesTable.tsx +11 -6
  41. package/src/components/docs/Tabs.tsx +3 -1
  42. package/src/components/docs/Tree.tsx +3 -1
  43. package/src/components/docs/ZoomableImage.tsx +4 -2
  44. package/src/components/ui/dialog.tsx +7 -2
  45. package/src/components/ui/sheet.tsx +5 -2
  46. package/src/lib/label-context.tsx +7 -0
  47. package/src/lib/labels.ts +37 -0
  48. package/src/lib/openapi.generated.ts +2 -1
  49. package/src/lib/openapi.ts +123 -16
  50. package/src/lib/site-config.ts +66 -2
  51. package/src/lib/site-model.ts +14 -32
  52. package/src/lib/standalone-pages.ts +15 -1
  53. package/src/lib/translations/de.json +99 -0
  54. package/src/lib/translations/en.json +99 -0
  55. package/src/lib/translations/es.json +99 -0
  56. package/src/lib/translations/fr.json +99 -0
  57. package/src/lib/translations/ja.json +99 -0
  58. package/src/lib/translations/zh-Hans.json +99 -0
  59. package/src/lib/translations/zh-Hant.json +99 -0
  60. package/src/lib/types.ts +109 -37
  61. package/types/config.d.ts +7 -1
  62. package/types/labels.d.ts +101 -0
  63. package/vite.config.ts +3 -4
  64. package/CHANGELOG.md +0 -8
@@ -8636,6 +8636,814 @@ function addEventListener(target, type, listener, options) {
8636
8636
  };
8637
8637
  }
8638
8638
 
8639
+ //#endregion
8640
+ //#region src/lib/locale.ts
8641
+ /** Primary language subtags written right-to-left. */
8642
+ const RTL_LANGUAGES = /* @__PURE__ */ new Set([
8643
+ "ar",
8644
+ "ckb",
8645
+ "dv",
8646
+ "fa",
8647
+ "he",
8648
+ "iw",
8649
+ "ps",
8650
+ "sd",
8651
+ "ug",
8652
+ "ur",
8653
+ "yi"
8654
+ ]);
8655
+ /** BCP 47-shaped tags with a 2-3 letter primary subtag, e.g. "es" or "pt-BR". */
8656
+ const LOCALE_PATTERN = /^[a-z]{2,3}(-[a-z0-9]{2,8})*$/i;
8657
+ function isValidLocale(value) {
8658
+ if (!value || !LOCALE_PATTERN.test(value)) return false;
8659
+ try {
8660
+ return Intl.getCanonicalLocales(value).length > 0;
8661
+ } catch {
8662
+ return false;
8663
+ }
8664
+ }
8665
+ /**
8666
+ * Locale for a page: its scope's language code when valid, then the
8667
+ * site-wide shiso.config `locale`, then en-US.
8668
+ */
8669
+ function resolveLocale(language, fallback) {
8670
+ if (isValidLocale(language)) return Intl.getCanonicalLocales(language)[0];
8671
+ if (isValidLocale(fallback)) return Intl.getCanonicalLocales(fallback)[0];
8672
+ return "en-US";
8673
+ }
8674
+ /** Document direction for a locale, e.g. "ar" and "he" read right-to-left. */
8675
+ function getTextDirection(locale) {
8676
+ const primary = locale.split("-")[0]?.toLowerCase() || "";
8677
+ return RTL_LANGUAGES.has(primary) ? "rtl" : "ltr";
8678
+ }
8679
+ /**
8680
+ * A language's name written in that language, for language selectors:
8681
+ * "ja" -> "日本語", "zh-Hant" -> "繁體中文", "es" -> "Español". Labels that
8682
+ * are not valid locale codes (e.g. "English") are returned unchanged.
8683
+ */
8684
+ function getLanguageName(language) {
8685
+ if (!isValidLocale(language)) return language;
8686
+ const locale = Intl.getCanonicalLocales(language)[0];
8687
+ try {
8688
+ const name = new Intl.DisplayNames([locale], {
8689
+ type: "language",
8690
+ fallback: "none"
8691
+ }).of(locale);
8692
+ if (!name) return language;
8693
+ return name.charAt(0).toLocaleUpperCase(locale) + name.slice(1);
8694
+ } catch {
8695
+ return language;
8696
+ }
8697
+ }
8698
+
8699
+ //#endregion
8700
+ //#region src/lib/translations/de.json
8701
+ var de_default = {
8702
+ menu: "Menü",
8703
+ documentationNavigation: "Dokumentationsnavigation",
8704
+ sections: "Abschnitte",
8705
+ tableOfContents: "Auf dieser Seite",
8706
+ tableOfContentsNavigation: "Inhaltsverzeichnis",
8707
+ searchTitle: "Suchen",
8708
+ searching: "Suche läuft...",
8709
+ searchUnavailable: "Suche nicht verfügbar",
8710
+ noResults: "Keine Ergebnisse",
8711
+ lastUpdated: "Zuletzt aktualisiert am",
8712
+ relatedTopics: "Verwandte Themen",
8713
+ previousPage: "Zurück",
8714
+ nextPage: "Weiter",
8715
+ notFound: "Seite nicht gefunden",
8716
+ dismissBanner: "Banner schließen",
8717
+ toggleTheme: "Design wechseln",
8718
+ moreOptions: "Weitere Optionen",
8719
+ copied: "Kopiert",
8720
+ expand: "Aufklappen",
8721
+ collapse: "Zuklappen",
8722
+ copyPage: "Seite kopieren",
8723
+ copyPageDescription: "Diese Seite als Markdown kopieren",
8724
+ viewMarkdown: "Als Markdown anzeigen",
8725
+ viewMarkdownDescription: "Diese Seite als reinen Markdown-Text öffnen",
8726
+ openInChatGPT: "In ChatGPT öffnen",
8727
+ openInClaude: "In Claude öffnen",
8728
+ openInPerplexity: "In Perplexity öffnen",
8729
+ askQuestionsAboutPage: "Fragen zu dieser Seite stellen",
8730
+ searchPlaceholder: "Suchen...",
8731
+ poweredBy: "Erstellt mit",
8732
+ copyCode: "Code kopieren",
8733
+ editPage: "Diese Seite bearbeiten",
8734
+ feedbackPrompt: "War diese Seite hilfreich?",
8735
+ feedbackYes: "Ja",
8736
+ feedbackNo: "Nein",
8737
+ feedbackSuccess: "Vielen Dank für dein Feedback!",
8738
+ feedbackError: "Feedback konnte nicht gesendet werden. Bitte versuche es erneut.",
8739
+ close: "Schließen",
8740
+ filterUpdates: "Aktualisierungen nach Tag filtern",
8741
+ clear: "Zurücksetzen",
8742
+ noUpdates: "Keine Aktualisierungen gefunden.",
8743
+ codeSnippets: "Codebeispiele",
8744
+ contentTabs: "Inhaltsregisterkarten",
8745
+ fileTree: "Dateibaum",
8746
+ diagram: "Diagramm",
8747
+ diagramError: "Dieses Diagramm konnte nicht angezeigt werden.",
8748
+ zoomOut: "Verkleinern",
8749
+ resetView: "Ansicht zurücksetzen",
8750
+ zoomIn: "Vergrößern",
8751
+ viewImage: "Bild in voller Größe anzeigen",
8752
+ viewNamedImage: "„{alt}“ in voller Größe anzeigen",
8753
+ fullSizeImage: "Bild in voller Größe",
8754
+ diagramSource: "Diagrammquelltext",
8755
+ fieldName: "Name",
8756
+ fieldType: "Typ",
8757
+ fieldDescription: "Beschreibung",
8758
+ fieldRequired: "erforderlich",
8759
+ fieldDeprecated: "veraltet",
8760
+ fieldDefault: "Standard:",
8761
+ fieldOptions: "Optionen:",
8762
+ allowedTypes: "Zulässige Typen",
8763
+ properties: "Eigenschaften",
8764
+ apiHeaders: "Header",
8765
+ apiPathParameters: "Pfadparameter",
8766
+ apiQueryParameters: "Abfrageparameter",
8767
+ apiCookieParameters: "Cookie-Parameter",
8768
+ apiRequestBody: "Anfragetext",
8769
+ apiResponses: "Antworten",
8770
+ apiCodeSamples: "Codebeispiele",
8771
+ apiExampleRequest: "Beispielanfrage",
8772
+ apiExampleResponse: "Beispiel für {status}",
8773
+ apiCredentials: "Anmeldedaten, z. B.",
8774
+ apiPlayground: "Ausprobieren",
8775
+ apiServer: "Server",
8776
+ apiAuthorization: "Autorisierung",
8777
+ apiUsername: "Benutzername",
8778
+ apiPassword: "Passwort",
8779
+ apiToken: "Token",
8780
+ apiApiKey: "API-Schlüssel",
8781
+ apiBody: "Body",
8782
+ apiSend: "Anfrage senden",
8783
+ apiSending: "Wird gesendet...",
8784
+ apiCancel: "Abbrechen",
8785
+ apiRequest: "Anfrage",
8786
+ apiResponse: "Antwort",
8787
+ apiResponseHeaders: "Antwort-Header",
8788
+ apiResponseBody: "Antwort-Body",
8789
+ apiNoResponse: "Senden Sie eine Anfrage, um die Antwort zu sehen.",
8790
+ apiRequestFailed: "Die Anfrage konnte nicht gesendet werden. Die API blockiert möglicherweise Browser-Anfragen (CORS) oder ist nicht erreichbar; konfigurieren Sie einen Playground-Proxy oder führen Sie das cURL-Beispiel im Terminal aus.",
8791
+ apiRequestTimedOut: "Zeitüberschreitung der Anfrage.",
8792
+ apiCookiesUnsupported: "Cookie-Parameter können im Browser nicht gesetzt werden und werden nicht gesendet.",
8793
+ apiOptional: "optional",
8794
+ apiElapsed: "{ms} ms",
8795
+ apiCredentialsStored: "Zugangsdaten bleiben in diesem Browser-Tab und werden nur an die API gesendet.",
8796
+ apiPayload: "Nutzdaten",
8797
+ apiSchemaProperties: "Eigenschaften",
8798
+ apiExample: "Beispiel"
8799
+ };
8800
+
8801
+ //#endregion
8802
+ //#region src/lib/translations/en.json
8803
+ var en_default = {
8804
+ menu: "Menu",
8805
+ documentationNavigation: "Documentation navigation",
8806
+ sections: "Sections",
8807
+ tableOfContents: "On this page",
8808
+ tableOfContentsNavigation: "Table of contents",
8809
+ searchTitle: "Search",
8810
+ searching: "Searching...",
8811
+ searchUnavailable: "Search unavailable",
8812
+ noResults: "No results",
8813
+ lastUpdated: "Last updated on",
8814
+ relatedTopics: "Related topics",
8815
+ previousPage: "Previous",
8816
+ nextPage: "Next",
8817
+ notFound: "Page not found",
8818
+ dismissBanner: "Dismiss banner",
8819
+ toggleTheme: "Toggle theme",
8820
+ moreOptions: "More options",
8821
+ copied: "Copied",
8822
+ expand: "Expand",
8823
+ collapse: "Collapse",
8824
+ copyPage: "Copy page",
8825
+ copyPageDescription: "Copy this page as Markdown",
8826
+ viewMarkdown: "View as Markdown",
8827
+ viewMarkdownDescription: "Open this page as plain Markdown",
8828
+ openInChatGPT: "Open in ChatGPT",
8829
+ openInClaude: "Open in Claude",
8830
+ openInPerplexity: "Open in Perplexity",
8831
+ askQuestionsAboutPage: "Ask questions about this page",
8832
+ searchPlaceholder: "Search...",
8833
+ poweredBy: "Powered by",
8834
+ copyCode: "Copy code",
8835
+ editPage: "Edit this page",
8836
+ feedbackPrompt: "Was this page helpful?",
8837
+ feedbackYes: "Yes",
8838
+ feedbackNo: "No",
8839
+ feedbackSuccess: "Thanks for your feedback!",
8840
+ feedbackError: "Could not send feedback. Please try again.",
8841
+ close: "Close",
8842
+ filterUpdates: "Filter updates by tag",
8843
+ clear: "Clear",
8844
+ noUpdates: "No updates found.",
8845
+ codeSnippets: "Code snippets",
8846
+ contentTabs: "Content tabs",
8847
+ fileTree: "File tree",
8848
+ diagram: "Diagram",
8849
+ diagramError: "Could not render this diagram.",
8850
+ zoomOut: "Zoom out",
8851
+ resetView: "Reset view",
8852
+ zoomIn: "Zoom in",
8853
+ viewImage: "View image full size",
8854
+ viewNamedImage: "View “{alt}” full size",
8855
+ fullSizeImage: "Full-size image",
8856
+ diagramSource: "Diagram source",
8857
+ fieldName: "Name",
8858
+ fieldType: "Type",
8859
+ fieldDescription: "Description",
8860
+ fieldRequired: "required",
8861
+ fieldDeprecated: "deprecated",
8862
+ fieldDefault: "Default:",
8863
+ fieldOptions: "Options:",
8864
+ allowedTypes: "Allowed types",
8865
+ properties: "properties",
8866
+ apiHeaders: "Headers",
8867
+ apiPathParameters: "Path parameters",
8868
+ apiQueryParameters: "Query parameters",
8869
+ apiCookieParameters: "Cookie parameters",
8870
+ apiRequestBody: "Request body",
8871
+ apiResponses: "Responses",
8872
+ apiCodeSamples: "Code samples",
8873
+ apiExampleRequest: "Example request",
8874
+ apiExampleResponse: "{status} example",
8875
+ apiCredentials: "Authentication credentials, e.g.",
8876
+ apiPlayground: "Try it",
8877
+ apiServer: "Server",
8878
+ apiAuthorization: "Authorization",
8879
+ apiUsername: "Username",
8880
+ apiPassword: "Password",
8881
+ apiToken: "Token",
8882
+ apiApiKey: "API key",
8883
+ apiBody: "Body",
8884
+ apiSend: "Send request",
8885
+ apiSending: "Sending...",
8886
+ apiCancel: "Cancel",
8887
+ apiRequest: "Request",
8888
+ apiResponse: "Response",
8889
+ apiResponseHeaders: "Response headers",
8890
+ apiResponseBody: "Response body",
8891
+ apiNoResponse: "Send a request to see the response.",
8892
+ apiRequestFailed: "The request could not be sent. The API may block browser requests (CORS) or be unreachable; configure a playground proxy or run the cURL sample from a terminal.",
8893
+ apiRequestTimedOut: "The request timed out.",
8894
+ apiCookiesUnsupported: "Cookie parameters cannot be set from the browser and are not sent.",
8895
+ apiOptional: "optional",
8896
+ apiElapsed: "{ms} ms",
8897
+ apiCredentialsStored: "Credentials stay in this browser tab and are never sent anywhere except the API.",
8898
+ apiPayload: "Payload",
8899
+ apiSchemaProperties: "Properties",
8900
+ apiExample: "Example"
8901
+ };
8902
+
8903
+ //#endregion
8904
+ //#region src/lib/translations/es.json
8905
+ var es_default = {
8906
+ menu: "Menú",
8907
+ documentationNavigation: "Navegación de documentación",
8908
+ sections: "Secciones",
8909
+ tableOfContents: "En esta página",
8910
+ tableOfContentsNavigation: "Índice",
8911
+ searchTitle: "Buscar",
8912
+ searching: "Buscando...",
8913
+ searchUnavailable: "Búsqueda no disponible",
8914
+ noResults: "Sin resultados",
8915
+ lastUpdated: "Última actualización el",
8916
+ relatedTopics: "Temas relacionados",
8917
+ previousPage: "Anterior",
8918
+ nextPage: "Siguiente",
8919
+ notFound: "Página no encontrada",
8920
+ dismissBanner: "Cerrar aviso",
8921
+ toggleTheme: "Cambiar tema",
8922
+ moreOptions: "Más opciones",
8923
+ copied: "Copiado",
8924
+ expand: "Expandir",
8925
+ collapse: "Contraer",
8926
+ copyPage: "Copiar página",
8927
+ copyPageDescription: "Copiar esta página como Markdown",
8928
+ viewMarkdown: "Ver como Markdown",
8929
+ viewMarkdownDescription: "Abrir esta página como Markdown sin formato",
8930
+ openInChatGPT: "Abrir en ChatGPT",
8931
+ openInClaude: "Abrir en Claude",
8932
+ openInPerplexity: "Abrir en Perplexity",
8933
+ askQuestionsAboutPage: "Hacer preguntas sobre esta página",
8934
+ searchPlaceholder: "Buscar...",
8935
+ poweredBy: "Desarrollado con",
8936
+ copyCode: "Copiar código",
8937
+ editPage: "Editar esta página",
8938
+ feedbackPrompt: "¿Te ha resultado útil esta página?",
8939
+ feedbackYes: "Sí",
8940
+ feedbackNo: "No",
8941
+ feedbackSuccess: "¡Gracias por tus comentarios!",
8942
+ feedbackError: "No se pudieron enviar los comentarios. Inténtalo de nuevo.",
8943
+ close: "Cerrar",
8944
+ filterUpdates: "Filtrar novedades por etiqueta",
8945
+ clear: "Limpiar",
8946
+ noUpdates: "No se encontraron novedades.",
8947
+ codeSnippets: "Fragmentos de código",
8948
+ contentTabs: "Pestañas de contenido",
8949
+ fileTree: "Árbol de archivos",
8950
+ diagram: "Diagrama",
8951
+ diagramError: "No se pudo mostrar este diagrama.",
8952
+ zoomOut: "Alejar",
8953
+ resetView: "Restablecer vista",
8954
+ zoomIn: "Acercar",
8955
+ viewImage: "Ver imagen a tamaño completo",
8956
+ viewNamedImage: "Ver «{alt}» a tamaño completo",
8957
+ fullSizeImage: "Imagen a tamaño completo",
8958
+ diagramSource: "Código del diagrama",
8959
+ fieldName: "Nombre",
8960
+ fieldType: "Tipo",
8961
+ fieldDescription: "Descripción",
8962
+ fieldRequired: "obligatorio",
8963
+ fieldDeprecated: "obsoleto",
8964
+ fieldDefault: "Predeterminado:",
8965
+ fieldOptions: "Opciones:",
8966
+ allowedTypes: "Tipos permitidos",
8967
+ properties: "propiedades",
8968
+ apiHeaders: "Cabeceras",
8969
+ apiPathParameters: "Parámetros de ruta",
8970
+ apiQueryParameters: "Parámetros de consulta",
8971
+ apiCookieParameters: "Parámetros de cookies",
8972
+ apiRequestBody: "Cuerpo de la solicitud",
8973
+ apiResponses: "Respuestas",
8974
+ apiCodeSamples: "Ejemplos de código",
8975
+ apiExampleRequest: "Ejemplo de solicitud",
8976
+ apiExampleResponse: "Ejemplo de {status}",
8977
+ apiCredentials: "Credenciales de autenticación, p. ej.",
8978
+ apiPlayground: "Probar",
8979
+ apiServer: "Servidor",
8980
+ apiAuthorization: "Autorización",
8981
+ apiUsername: "Usuario",
8982
+ apiPassword: "Contraseña",
8983
+ apiToken: "Token",
8984
+ apiApiKey: "Clave de API",
8985
+ apiBody: "Cuerpo",
8986
+ apiSend: "Enviar solicitud",
8987
+ apiSending: "Enviando...",
8988
+ apiCancel: "Cancelar",
8989
+ apiRequest: "Solicitud",
8990
+ apiResponse: "Respuesta",
8991
+ apiResponseHeaders: "Encabezados de respuesta",
8992
+ apiResponseBody: "Cuerpo de la respuesta",
8993
+ apiNoResponse: "Envía una solicitud para ver la respuesta.",
8994
+ apiRequestFailed: "No se pudo enviar la solicitud. Es posible que la API bloquee solicitudes del navegador (CORS) o no esté disponible; configura un proxy para el playground o ejecuta el ejemplo de cURL desde una terminal.",
8995
+ apiRequestTimedOut: "La solicitud excedió el tiempo de espera.",
8996
+ apiCookiesUnsupported: "Los parámetros de cookie no se pueden establecer desde el navegador y no se envían.",
8997
+ apiOptional: "opcional",
8998
+ apiElapsed: "{ms} ms",
8999
+ apiCredentialsStored: "Las credenciales permanecen en esta pestaña del navegador y solo se envían a la API.",
9000
+ apiPayload: "Carga útil",
9001
+ apiSchemaProperties: "Propiedades",
9002
+ apiExample: "Ejemplo"
9003
+ };
9004
+
9005
+ //#endregion
9006
+ //#region src/lib/translations/fr.json
9007
+ var fr_default = {
9008
+ menu: "Menu",
9009
+ documentationNavigation: "Navigation de la documentation",
9010
+ sections: "Sections",
9011
+ tableOfContents: "Sur cette page",
9012
+ tableOfContentsNavigation: "Table des matières",
9013
+ searchTitle: "Rechercher",
9014
+ searching: "Recherche en cours...",
9015
+ searchUnavailable: "Recherche indisponible",
9016
+ noResults: "Aucun résultat",
9017
+ lastUpdated: "Dernière mise à jour le",
9018
+ relatedTopics: "Sujets connexes",
9019
+ previousPage: "Précédent",
9020
+ nextPage: "Suivant",
9021
+ notFound: "Page introuvable",
9022
+ dismissBanner: "Fermer la bannière",
9023
+ toggleTheme: "Changer de thème",
9024
+ moreOptions: "Plus d’options",
9025
+ copied: "Copié",
9026
+ expand: "Développer",
9027
+ collapse: "Réduire",
9028
+ copyPage: "Copier la page",
9029
+ copyPageDescription: "Copier cette page au format Markdown",
9030
+ viewMarkdown: "Voir en Markdown",
9031
+ viewMarkdownDescription: "Ouvrir cette page en Markdown brut",
9032
+ openInChatGPT: "Ouvrir dans ChatGPT",
9033
+ openInClaude: "Ouvrir dans Claude",
9034
+ openInPerplexity: "Ouvrir dans Perplexity",
9035
+ askQuestionsAboutPage: "Poser des questions sur cette page",
9036
+ searchPlaceholder: "Rechercher...",
9037
+ poweredBy: "Propulsé par",
9038
+ copyCode: "Copier le code",
9039
+ editPage: "Modifier cette page",
9040
+ feedbackPrompt: "Cette page vous a-t-elle été utile ?",
9041
+ feedbackYes: "Oui",
9042
+ feedbackNo: "Non",
9043
+ feedbackSuccess: "Merci pour votre avis !",
9044
+ feedbackError: "Impossible d’envoyer votre avis. Veuillez réessayer.",
9045
+ close: "Fermer",
9046
+ filterUpdates: "Filtrer les mises à jour par étiquette",
9047
+ clear: "Effacer",
9048
+ noUpdates: "Aucune mise à jour trouvée.",
9049
+ codeSnippets: "Extraits de code",
9050
+ contentTabs: "Onglets de contenu",
9051
+ fileTree: "Arborescence des fichiers",
9052
+ diagram: "Diagramme",
9053
+ diagramError: "Impossible d’afficher ce diagramme.",
9054
+ zoomOut: "Zoom arrière",
9055
+ resetView: "Réinitialiser la vue",
9056
+ zoomIn: "Zoom avant",
9057
+ viewImage: "Afficher l’image en taille réelle",
9058
+ viewNamedImage: "Afficher « {alt} » en taille réelle",
9059
+ fullSizeImage: "Image en taille réelle",
9060
+ diagramSource: "Source du diagramme",
9061
+ fieldName: "Nom",
9062
+ fieldType: "Type",
9063
+ fieldDescription: "Description",
9064
+ fieldRequired: "obligatoire",
9065
+ fieldDeprecated: "obsolète",
9066
+ fieldDefault: "Valeur par défaut :",
9067
+ fieldOptions: "Options :",
9068
+ allowedTypes: "Types autorisés",
9069
+ properties: "propriétés",
9070
+ apiHeaders: "En-têtes",
9071
+ apiPathParameters: "Paramètres de chemin",
9072
+ apiQueryParameters: "Paramètres de requête",
9073
+ apiCookieParameters: "Paramètres de cookies",
9074
+ apiRequestBody: "Corps de la requête",
9075
+ apiResponses: "Réponses",
9076
+ apiCodeSamples: "Exemples de code",
9077
+ apiExampleRequest: "Exemple de requête",
9078
+ apiExampleResponse: "Exemple {status}",
9079
+ apiCredentials: "Identifiants d’authentification, par exemple",
9080
+ apiPlayground: "Essayer",
9081
+ apiServer: "Serveur",
9082
+ apiAuthorization: "Autorisation",
9083
+ apiUsername: "Nom d’utilisateur",
9084
+ apiPassword: "Mot de passe",
9085
+ apiToken: "Jeton",
9086
+ apiApiKey: "Clé API",
9087
+ apiBody: "Corps",
9088
+ apiSend: "Envoyer la requête",
9089
+ apiSending: "Envoi...",
9090
+ apiCancel: "Annuler",
9091
+ apiRequest: "Requête",
9092
+ apiResponse: "Réponse",
9093
+ apiResponseHeaders: "En-têtes de réponse",
9094
+ apiResponseBody: "Corps de la réponse",
9095
+ apiNoResponse: "Envoyez une requête pour voir la réponse.",
9096
+ apiRequestFailed: "La requête n’a pas pu être envoyée. L’API bloque peut-être les requêtes du navigateur (CORS) ou est injoignable ; configurez un proxy pour le playground ou exécutez l’exemple cURL depuis un terminal.",
9097
+ apiRequestTimedOut: "La requête a expiré.",
9098
+ apiCookiesUnsupported: "Les paramètres de cookie ne peuvent pas être définis depuis le navigateur et ne sont pas envoyés.",
9099
+ apiOptional: "facultatif",
9100
+ apiElapsed: "{ms} ms",
9101
+ apiCredentialsStored: "Les identifiants restent dans cet onglet du navigateur et ne sont envoyés qu’à l’API.",
9102
+ apiPayload: "Charge utile",
9103
+ apiSchemaProperties: "Propriétés",
9104
+ apiExample: "Exemple"
9105
+ };
9106
+
9107
+ //#endregion
9108
+ //#region src/lib/translations/ja.json
9109
+ var ja_default = {
9110
+ menu: "メニュー",
9111
+ documentationNavigation: "ドキュメントナビゲーション",
9112
+ sections: "セクション",
9113
+ tableOfContents: "このページの内容",
9114
+ tableOfContentsNavigation: "目次",
9115
+ searchTitle: "検索",
9116
+ searching: "検索中...",
9117
+ searchUnavailable: "検索を利用できません",
9118
+ noResults: "結果がありません",
9119
+ lastUpdated: "最終更新日",
9120
+ relatedTopics: "関連トピック",
9121
+ previousPage: "前へ",
9122
+ nextPage: "次へ",
9123
+ notFound: "ページが見つかりません",
9124
+ dismissBanner: "バナーを閉じる",
9125
+ toggleTheme: "テーマを切り替える",
9126
+ moreOptions: "その他のオプション",
9127
+ copied: "コピーしました",
9128
+ expand: "展開",
9129
+ collapse: "折りたたむ",
9130
+ copyPage: "ページをコピー",
9131
+ copyPageDescription: "このページをMarkdownとしてコピー",
9132
+ viewMarkdown: "Markdownで表示",
9133
+ viewMarkdownDescription: "このページをプレーンなMarkdownで開く",
9134
+ openInChatGPT: "ChatGPTで開く",
9135
+ openInClaude: "Claudeで開く",
9136
+ openInPerplexity: "Perplexityで開く",
9137
+ askQuestionsAboutPage: "このページについて質問する",
9138
+ searchPlaceholder: "検索...",
9139
+ poweredBy: "使用ツール:",
9140
+ copyCode: "コードをコピー",
9141
+ editPage: "このページを編集",
9142
+ feedbackPrompt: "このページは役に立ちましたか?",
9143
+ feedbackYes: "はい",
9144
+ feedbackNo: "いいえ",
9145
+ feedbackSuccess: "フィードバックありがとうございます!",
9146
+ feedbackError: "フィードバックを送信できませんでした。もう一度お試しください。",
9147
+ close: "閉じる",
9148
+ filterUpdates: "タグで更新情報を絞り込む",
9149
+ clear: "クリア",
9150
+ noUpdates: "更新情報が見つかりません。",
9151
+ codeSnippets: "コードスニペット",
9152
+ contentTabs: "コンテンツタブ",
9153
+ fileTree: "ファイルツリー",
9154
+ diagram: "図",
9155
+ diagramError: "この図を表示できませんでした。",
9156
+ zoomOut: "縮小",
9157
+ resetView: "表示をリセット",
9158
+ zoomIn: "拡大",
9159
+ viewImage: "画像を原寸で表示",
9160
+ viewNamedImage: "「{alt}」を原寸で表示",
9161
+ fullSizeImage: "原寸の画像",
9162
+ diagramSource: "図のソース",
9163
+ fieldName: "名前",
9164
+ fieldType: "型",
9165
+ fieldDescription: "説明",
9166
+ fieldRequired: "必須",
9167
+ fieldDeprecated: "非推奨",
9168
+ fieldDefault: "デフォルト:",
9169
+ fieldOptions: "選択肢:",
9170
+ allowedTypes: "許可される型",
9171
+ properties: "プロパティ",
9172
+ apiHeaders: "ヘッダー",
9173
+ apiPathParameters: "パスパラメーター",
9174
+ apiQueryParameters: "クエリパラメーター",
9175
+ apiCookieParameters: "Cookieパラメーター",
9176
+ apiRequestBody: "リクエストボディ",
9177
+ apiResponses: "レスポンス",
9178
+ apiCodeSamples: "コードサンプル",
9179
+ apiExampleRequest: "リクエスト例",
9180
+ apiExampleResponse: "{status} の例",
9181
+ apiCredentials: "認証情報(例):",
9182
+ apiPlayground: "試してみる",
9183
+ apiServer: "サーバー",
9184
+ apiAuthorization: "認証",
9185
+ apiUsername: "ユーザー名",
9186
+ apiPassword: "パスワード",
9187
+ apiToken: "トークン",
9188
+ apiApiKey: "APIキー",
9189
+ apiBody: "ボディ",
9190
+ apiSend: "リクエストを送信",
9191
+ apiSending: "送信中...",
9192
+ apiCancel: "キャンセル",
9193
+ apiRequest: "リクエスト",
9194
+ apiResponse: "レスポンス",
9195
+ apiResponseHeaders: "レスポンスヘッダー",
9196
+ apiResponseBody: "レスポンスボディ",
9197
+ apiNoResponse: "リクエストを送信するとレスポンスが表示されます。",
9198
+ apiRequestFailed: "リクエストを送信できませんでした。APIがブラウザーからのリクエストをブロックしている(CORS)か、到達できない可能性があります。プレイグラウンドのプロキシを設定するか、cURLのサンプルをターミナルで実行してください。",
9199
+ apiRequestTimedOut: "リクエストがタイムアウトしました。",
9200
+ apiCookiesUnsupported: "Cookieパラメーターはブラウザーから設定できないため送信されません。",
9201
+ apiOptional: "省略可",
9202
+ apiElapsed: "{ms} ms",
9203
+ apiCredentialsStored: "認証情報はこのブラウザータブ内に保持され、API以外には送信されません。",
9204
+ apiPayload: "ペイロード",
9205
+ apiSchemaProperties: "プロパティ",
9206
+ apiExample: "例"
9207
+ };
9208
+
9209
+ //#endregion
9210
+ //#region src/lib/translations/zh-Hans.json
9211
+ var zh_Hans_default = {
9212
+ menu: "菜单",
9213
+ documentationNavigation: "文档导航",
9214
+ sections: "章节",
9215
+ tableOfContents: "本页内容",
9216
+ tableOfContentsNavigation: "目录",
9217
+ searchTitle: "搜索",
9218
+ searching: "正在搜索...",
9219
+ searchUnavailable: "搜索不可用",
9220
+ noResults: "无结果",
9221
+ lastUpdated: "最后更新于",
9222
+ relatedTopics: "相关主题",
9223
+ previousPage: "上一页",
9224
+ nextPage: "下一页",
9225
+ notFound: "找不到页面",
9226
+ dismissBanner: "关闭横幅",
9227
+ toggleTheme: "切换主题",
9228
+ moreOptions: "更多选项",
9229
+ copied: "已复制",
9230
+ expand: "展开",
9231
+ collapse: "折叠",
9232
+ copyPage: "复制页面",
9233
+ copyPageDescription: "将此页面复制为 Markdown",
9234
+ viewMarkdown: "以 Markdown 查看",
9235
+ viewMarkdownDescription: "以纯 Markdown 打开此页面",
9236
+ openInChatGPT: "在 ChatGPT 中打开",
9237
+ openInClaude: "在 Claude 中打开",
9238
+ openInPerplexity: "在 Perplexity 中打开",
9239
+ askQuestionsAboutPage: "询问有关此页面的问题",
9240
+ searchPlaceholder: "搜索...",
9241
+ poweredBy: "由以下工具提供支持:",
9242
+ copyCode: "复制代码",
9243
+ editPage: "编辑此页面",
9244
+ feedbackPrompt: "此页面对您有帮助吗?",
9245
+ feedbackYes: "是",
9246
+ feedbackNo: "否",
9247
+ feedbackSuccess: "感谢您的反馈!",
9248
+ feedbackError: "无法发送反馈,请重试。",
9249
+ close: "关闭",
9250
+ filterUpdates: "按标签筛选更新",
9251
+ clear: "清除",
9252
+ noUpdates: "未找到更新。",
9253
+ codeSnippets: "代码片段",
9254
+ contentTabs: "内容选项卡",
9255
+ fileTree: "文件树",
9256
+ diagram: "图表",
9257
+ diagramError: "无法显示此图表。",
9258
+ zoomOut: "缩小",
9259
+ resetView: "重置视图",
9260
+ zoomIn: "放大",
9261
+ viewImage: "查看原尺寸图片",
9262
+ viewNamedImage: "查看“{alt}”的原尺寸图片",
9263
+ fullSizeImage: "原尺寸图片",
9264
+ diagramSource: "图表源代码",
9265
+ fieldName: "名称",
9266
+ fieldType: "类型",
9267
+ fieldDescription: "描述",
9268
+ fieldRequired: "必填",
9269
+ fieldDeprecated: "已弃用",
9270
+ fieldDefault: "默认值:",
9271
+ fieldOptions: "选项:",
9272
+ allowedTypes: "允许的类型",
9273
+ properties: "属性",
9274
+ apiHeaders: "请求头",
9275
+ apiPathParameters: "路径参数",
9276
+ apiQueryParameters: "查询参数",
9277
+ apiCookieParameters: "Cookie 参数",
9278
+ apiRequestBody: "请求体",
9279
+ apiResponses: "响应",
9280
+ apiCodeSamples: "代码示例",
9281
+ apiExampleRequest: "请求示例",
9282
+ apiExampleResponse: "{status} 示例",
9283
+ apiCredentials: "身份验证凭据,例如",
9284
+ apiPlayground: "试一试",
9285
+ apiServer: "服务器",
9286
+ apiAuthorization: "授权",
9287
+ apiUsername: "用户名",
9288
+ apiPassword: "密码",
9289
+ apiToken: "令牌",
9290
+ apiApiKey: "API 密钥",
9291
+ apiBody: "请求体",
9292
+ apiSend: "发送请求",
9293
+ apiSending: "发送中...",
9294
+ apiCancel: "取消",
9295
+ apiRequest: "请求",
9296
+ apiResponse: "响应",
9297
+ apiResponseHeaders: "响应头",
9298
+ apiResponseBody: "响应体",
9299
+ apiNoResponse: "发送请求以查看响应。",
9300
+ apiRequestFailed: "无法发送请求。API 可能阻止了浏览器请求(CORS)或无法访问;请配置 playground 代理,或在终端中运行 cURL 示例。",
9301
+ apiRequestTimedOut: "请求超时。",
9302
+ apiCookiesUnsupported: "Cookie 参数无法在浏览器中设置,因此不会发送。",
9303
+ apiOptional: "可选",
9304
+ apiElapsed: "{ms} 毫秒",
9305
+ apiCredentialsStored: "凭据仅保留在此浏览器标签页中,只会发送给该 API。",
9306
+ apiPayload: "负载",
9307
+ apiSchemaProperties: "属性",
9308
+ apiExample: "示例"
9309
+ };
9310
+
9311
+ //#endregion
9312
+ //#region src/lib/translations/zh-Hant.json
9313
+ var zh_Hant_default = {
9314
+ menu: "選單",
9315
+ documentationNavigation: "文件導覽",
9316
+ sections: "章節",
9317
+ tableOfContents: "本頁內容",
9318
+ tableOfContentsNavigation: "目錄",
9319
+ searchTitle: "搜尋",
9320
+ searching: "正在搜尋...",
9321
+ searchUnavailable: "搜尋無法使用",
9322
+ noResults: "沒有結果",
9323
+ lastUpdated: "最後更新於",
9324
+ relatedTopics: "相關主題",
9325
+ previousPage: "上一頁",
9326
+ nextPage: "下一頁",
9327
+ notFound: "找不到頁面",
9328
+ dismissBanner: "關閉橫幅",
9329
+ toggleTheme: "切換主題",
9330
+ moreOptions: "更多選項",
9331
+ copied: "已複製",
9332
+ expand: "展開",
9333
+ collapse: "收合",
9334
+ copyPage: "複製頁面",
9335
+ copyPageDescription: "將此頁面複製為 Markdown",
9336
+ viewMarkdown: "以 Markdown 檢視",
9337
+ viewMarkdownDescription: "以純 Markdown 開啟此頁面",
9338
+ openInChatGPT: "在 ChatGPT 中開啟",
9339
+ openInClaude: "在 Claude 中開啟",
9340
+ openInPerplexity: "在 Perplexity 中開啟",
9341
+ askQuestionsAboutPage: "詢問有關此頁面的問題",
9342
+ searchPlaceholder: "搜尋...",
9343
+ poweredBy: "由以下工具提供支援:",
9344
+ copyCode: "複製程式碼",
9345
+ editPage: "編輯此頁面",
9346
+ feedbackPrompt: "此頁面對您有幫助嗎?",
9347
+ feedbackYes: "是",
9348
+ feedbackNo: "否",
9349
+ feedbackSuccess: "感謝您的回饋!",
9350
+ feedbackError: "無法傳送回饋,請重試。",
9351
+ close: "關閉",
9352
+ filterUpdates: "依標籤篩選更新",
9353
+ clear: "清除",
9354
+ noUpdates: "找不到更新。",
9355
+ codeSnippets: "程式碼片段",
9356
+ contentTabs: "內容分頁",
9357
+ fileTree: "檔案樹",
9358
+ diagram: "圖表",
9359
+ diagramError: "無法顯示此圖表。",
9360
+ zoomOut: "縮小",
9361
+ resetView: "重設檢視",
9362
+ zoomIn: "放大",
9363
+ viewImage: "檢視原尺寸圖片",
9364
+ viewNamedImage: "檢視「{alt}」的原尺寸圖片",
9365
+ fullSizeImage: "原尺寸圖片",
9366
+ diagramSource: "圖表原始碼",
9367
+ fieldName: "名稱",
9368
+ fieldType: "類型",
9369
+ fieldDescription: "描述",
9370
+ fieldRequired: "必填",
9371
+ fieldDeprecated: "已棄用",
9372
+ fieldDefault: "預設值:",
9373
+ fieldOptions: "選項:",
9374
+ allowedTypes: "允許的類型",
9375
+ properties: "屬性",
9376
+ apiHeaders: "請求標頭",
9377
+ apiPathParameters: "路徑參數",
9378
+ apiQueryParameters: "查詢參數",
9379
+ apiCookieParameters: "Cookie 參數",
9380
+ apiRequestBody: "請求主體",
9381
+ apiResponses: "回應",
9382
+ apiCodeSamples: "程式碼範例",
9383
+ apiExampleRequest: "請求範例",
9384
+ apiExampleResponse: "{status} 範例",
9385
+ apiCredentials: "驗證憑證,例如",
9386
+ apiPlayground: "試一試",
9387
+ apiServer: "伺服器",
9388
+ apiAuthorization: "授權",
9389
+ apiUsername: "使用者名稱",
9390
+ apiPassword: "密碼",
9391
+ apiToken: "權杖",
9392
+ apiApiKey: "API 金鑰",
9393
+ apiBody: "請求主體",
9394
+ apiSend: "傳送請求",
9395
+ apiSending: "傳送中...",
9396
+ apiCancel: "取消",
9397
+ apiRequest: "請求",
9398
+ apiResponse: "回應",
9399
+ apiResponseHeaders: "回應標頭",
9400
+ apiResponseBody: "回應主體",
9401
+ apiNoResponse: "傳送請求以檢視回應。",
9402
+ apiRequestFailed: "無法傳送請求。API 可能封鎖了瀏覽器請求(CORS)或無法連線;請設定 playground 代理,或在終端機中執行 cURL 範例。",
9403
+ apiRequestTimedOut: "請求逾時。",
9404
+ apiCookiesUnsupported: "Cookie 參數無法在瀏覽器中設定,因此不會傳送。",
9405
+ apiOptional: "選填",
9406
+ apiElapsed: "{ms} 毫秒",
9407
+ apiCredentialsStored: "憑證僅保留在此瀏覽器分頁中,只會傳送給該 API。",
9408
+ apiPayload: "酬載",
9409
+ apiSchemaProperties: "屬性",
9410
+ apiExample: "範例"
9411
+ };
9412
+
9413
+ //#endregion
9414
+ //#region src/lib/labels.ts
9415
+ const englishLabels = en_default;
9416
+ const dictionaries = {
9417
+ en: en_default,
9418
+ de: de_default,
9419
+ es: es_default,
9420
+ fr: fr_default,
9421
+ ja: ja_default,
9422
+ "zh-Hans": zh_Hans_default,
9423
+ "zh-Hant": zh_Hant_default
9424
+ };
9425
+ /** Merge from least to most specific; overrides win at each locale level. */
9426
+ function resolveLabels(locale, overrides = {}) {
9427
+ const tag = new Intl.Locale(resolveLocale(locale, "en"));
9428
+ const script = tag.script || (tag.language === "zh" ? tag.maximize().script : void 0);
9429
+ const candidates = /* @__PURE__ */ new Set([
9430
+ "en",
9431
+ tag.language,
9432
+ ...script ? [`${tag.language}-${script}`] : [],
9433
+ tag.baseName
9434
+ ]);
9435
+ const labels = { ...englishLabels };
9436
+ for (const candidate of candidates) Object.assign(labels, dictionaries[candidate], overrides[candidate]);
9437
+ return labels;
9438
+ }
9439
+
9440
+ //#endregion
9441
+ //#region src/lib/label-context.tsx
9442
+ const LabelContext = createContext(englishLabels);
9443
+ function useLabels() {
9444
+ return useContext(LabelContext);
9445
+ }
9446
+
8639
9447
  //#endregion
8640
9448
  //#region src/components/docs/styles.ts
8641
9449
  /** Shared Tailwind utility groups for the built-in MDX components. */
@@ -8760,6 +9568,7 @@ const PLACEMENT_CLASS = {
8760
9568
  * replaces it with SVG via a lazy `mermaid` import (kept out of the SSR bundle).
8761
9569
  */
8762
9570
  function Mermaid({ chart, title, actions, placement = "bottom-right", children }) {
9571
+ const labels = useLabels();
8763
9572
  const source = mermaidSource(chart, children);
8764
9573
  const containerRef = useRef(null);
8765
9574
  const svgHostRef = useRef(null);
@@ -8822,34 +9631,34 @@ function Mermaid({ chart, title, actions, placement = "bottom-right", children }
8822
9631
  style: { transform: `scale(${zoom})` },
8823
9632
  dangerouslySetInnerHTML: { __html: svg },
8824
9633
  role: "img",
8825
- "aria-label": title ? String(title) : "Diagram"
9634
+ "aria-label": title ? String(title) : labels.diagram
8826
9635
  }) : /* @__PURE__ */ jsx("pre", {
8827
9636
  className: styles.mermaidFallback,
8828
- title: "Diagram source",
9637
+ title: labels.diagramSource,
8829
9638
  children: source
8830
9639
  }),
8831
9640
  error ? /* @__PURE__ */ jsx("p", {
8832
9641
  className: styles.mermaidError,
8833
- children: "Could not render this diagram."
9642
+ children: labels.diagramError
8834
9643
  }) : null,
8835
9644
  showControls && svg && !error ? /* @__PURE__ */ jsxs("div", {
8836
9645
  className: `${styles.mermaidControls} ${PLACEMENT_CLASS[placement]}`,
8837
9646
  children: [
8838
9647
  /* @__PURE__ */ jsx("button", {
8839
9648
  type: "button",
8840
- "aria-label": "Zoom out",
9649
+ "aria-label": labels.zoomOut,
8841
9650
  onClick: () => setZoom((z) => Math.max(.5, +(z - .25).toFixed(2))),
8842
9651
  children: "−"
8843
9652
  }),
8844
9653
  /* @__PURE__ */ jsx("button", {
8845
9654
  type: "button",
8846
- "aria-label": "Reset view",
9655
+ "aria-label": labels.resetView,
8847
9656
  onClick: () => setZoom(1),
8848
9657
  children: "⟳"
8849
9658
  }),
8850
9659
  /* @__PURE__ */ jsx("button", {
8851
9660
  type: "button",
8852
- "aria-label": "Zoom in",
9661
+ "aria-label": labels.zoomIn,
8853
9662
  onClick: () => setZoom((z) => Math.min(2.5, +(z + .25).toFixed(2))),
8854
9663
  children: "+"
8855
9664
  })
@@ -10873,6 +11682,7 @@ function updateInfo(children) {
10873
11682
  * Pages without any tagged updates render as a plain list.
10874
11683
  */
10875
11684
  function Changelog({ children }) {
11685
+ const labels = useLabels();
10876
11686
  const [searchParams, setSearchParams] = useSearchParams();
10877
11687
  const allTags = useMemo(() => {
10878
11688
  const seen = /* @__PURE__ */ new Map();
@@ -10917,7 +11727,7 @@ function Changelog({ children }) {
10917
11727
  /* @__PURE__ */ jsxs("div", {
10918
11728
  className: styles.changelogFilters,
10919
11729
  role: "group",
10920
- "aria-label": "Filter updates by tag",
11730
+ "aria-label": labels.filterUpdates,
10921
11731
  children: [allTags.map((tag) => {
10922
11732
  const active = selectedSet.has(tag.toLowerCase());
10923
11733
  return /* @__PURE__ */ jsx("button", {
@@ -10936,12 +11746,12 @@ function Changelog({ children }) {
10936
11746
  type: "button",
10937
11747
  onClick: clear,
10938
11748
  className: styles.changelogClear,
10939
- children: "Clear"
11749
+ children: labels.clear
10940
11750
  }) : null]
10941
11751
  }),
10942
11752
  visibleUpdates === 0 ? /* @__PURE__ */ jsx("p", {
10943
11753
  className: styles.changelogEmpty,
10944
- children: "No updates match the selected tags."
11754
+ children: labels.noUpdates
10945
11755
  }) : null,
10946
11756
  filtered
10947
11757
  ]
@@ -11814,6 +12624,7 @@ function TabsContent({ className, ...props }) {
11814
12624
  //#endregion
11815
12625
  //#region src/components/docs/CodeGroup.tsx
11816
12626
  function CodeGroup({ children }) {
12627
+ const labels = useLabels();
11817
12628
  const blocks = useMemo(() => {
11818
12629
  const counts = /* @__PURE__ */ new Map();
11819
12630
  return toElementArray(children).map((child, index) => {
@@ -11843,7 +12654,7 @@ function CodeGroup({ children }) {
11843
12654
  children: [/* @__PURE__ */ jsx(TabsList, {
11844
12655
  variant: "line",
11845
12656
  className: "h-9 w-full justify-start gap-5 overflow-x-auto overflow-y-hidden rounded-none px-3 py-0 shadow-[inset_0_-1px_0_var(--border)] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
11846
- "aria-label": "Code snippets",
12657
+ "aria-label": labels.codeSnippets,
11847
12658
  children: blocks.map((block) => /* @__PURE__ */ jsx(TabsTrigger, {
11848
12659
  value: block.id,
11849
12660
  className: "flex-none px-0 text-muted-foreground after:bg-primary data-active:text-foreground",
@@ -12274,6 +13085,7 @@ function displayValue(value) {
12274
13085
  return value === void 0 || value === null ? void 0 : String(value);
12275
13086
  }
12276
13087
  function PropertiesTable({ children }) {
13088
+ const labels = useLabels();
12277
13089
  const rows = toElementArray(children);
12278
13090
  if (!rows.length) return null;
12279
13091
  return /* @__PURE__ */ jsx("div", {
@@ -12284,18 +13096,19 @@ function PropertiesTable({ children }) {
12284
13096
  children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
12285
13097
  /* @__PURE__ */ jsx("th", {
12286
13098
  className: "w-[30%]",
12287
- children: "Name"
13099
+ children: labels.fieldName
12288
13100
  }),
12289
13101
  /* @__PURE__ */ jsx("th", {
12290
13102
  className: "w-[15%]",
12291
- children: "Type"
13103
+ children: labels.fieldType
12292
13104
  }),
12293
- /* @__PURE__ */ jsx("th", { children: "Description" })
13105
+ /* @__PURE__ */ jsx("th", { children: labels.fieldDescription })
12294
13106
  ] }) }), /* @__PURE__ */ jsx("tbody", { children: rows })]
12295
13107
  })
12296
13108
  });
12297
13109
  }
12298
13110
  function PropertiesTableRow({ name, type, required, deprecated, default: value, children, details }) {
13111
+ const labels = useLabels();
12299
13112
  const defaultValue = displayValue(value);
12300
13113
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsxs("tr", { children: [
12301
13114
  /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsxs("span", {
@@ -12305,11 +13118,11 @@ function PropertiesTableRow({ name, type, required, deprecated, default: value,
12305
13118
  required ? /* @__PURE__ */ jsx(Badge, {
12306
13119
  size: "sm",
12307
13120
  tone: "primary",
12308
- children: "required"
13121
+ children: labels.fieldRequired
12309
13122
  }) : null,
12310
13123
  deprecated ? /* @__PURE__ */ jsx(Badge, {
12311
13124
  size: "sm",
12312
- children: "deprecated"
13125
+ children: labels.fieldDeprecated
12313
13126
  }) : null
12314
13127
  ]
12315
13128
  }) }),
@@ -12318,7 +13131,11 @@ function PropertiesTableRow({ name, type, required, deprecated, default: value,
12318
13131
  className: "[&_p]:m-0",
12319
13132
  children: [children, defaultValue ? /* @__PURE__ */ jsxs("span", {
12320
13133
  className: "mt-1 block text-muted-foreground",
12321
- children: ["Default: ", defaultValue]
13134
+ children: [
13135
+ labels.fieldDefault,
13136
+ " ",
13137
+ defaultValue
13138
+ ]
12322
13139
  }) : null]
12323
13140
  })
12324
13141
  ] }), details && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", {
@@ -12368,6 +13185,7 @@ function Tab({ children }) {
12368
13185
  return /* @__PURE__ */ jsx(Fragment$1, { children });
12369
13186
  }
12370
13187
  function Tabs({ children, group }) {
13188
+ const labels = useLabels();
12371
13189
  const tabs = useMemo(() => {
12372
13190
  const counts = /* @__PURE__ */ new Map();
12373
13191
  return toElementArray(children).map((child, index) => {
@@ -12422,7 +13240,7 @@ function Tabs({ children, group }) {
12422
13240
  children: [/* @__PURE__ */ jsx(TabsList, {
12423
13241
  variant: "line",
12424
13242
  className: "w-full justify-start gap-5 overflow-x-auto overflow-y-hidden p-0 shadow-[inset_0_-1px_0_var(--border)] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
12425
- "aria-label": "Content tabs",
13243
+ "aria-label": labels.contentTabs,
12426
13244
  children: tabs.map((tab) => /* @__PURE__ */ jsx(TabsTrigger, {
12427
13245
  value: tab.id,
12428
13246
  className: "flex-none px-0 text-muted-foreground after:bg-primary data-active:text-foreground",
@@ -18707,6 +19525,7 @@ function visibleFocusables(root) {
18707
19525
  return [...root.querySelectorAll("[data-tree-focus]")].filter((element) => !element.closest("[hidden]"));
18708
19526
  }
18709
19527
  function TreeRoot({ children, style, className }) {
19528
+ const labels = useLabels();
18710
19529
  const rootRef = useRef(null);
18711
19530
  const searchRef = useRef({
18712
19531
  text: "",
@@ -18793,7 +19612,7 @@ function TreeRoot({ children, style, className }) {
18793
19612
  onKeyDown,
18794
19613
  children: /* @__PURE__ */ jsx("ul", {
18795
19614
  role: "tree",
18796
- "aria-label": "File tree",
19615
+ "aria-label": labels.fileTree,
18797
19616
  className: styles.treeList,
18798
19617
  children: content
18799
19618
  })
@@ -19631,6 +20450,7 @@ function DialogOverlay({ className, ...props }) {
19631
20450
  });
19632
20451
  }
19633
20452
  function DialogContent({ className, children, showCloseButton = true, overlayClassName, ...props }) {
20453
+ const labels = useLabels();
19634
20454
  return /* @__PURE__ */ jsxs(DialogPortal, { children: [/* @__PURE__ */ jsx(DialogOverlay, { className: overlayClassName }), /* @__PURE__ */ jsxs(DialogPopup, {
19635
20455
  "data-slot": "dialog-content",
19636
20456
  className: cn("fixed top-1/2 left-1/2 z-50 grid w-full max-w-[calc(100%-2rem)] -translate-x-1/2 -translate-y-1/2 gap-4 rounded-xl bg-popover p-4 text-sm text-popover-foreground ring-1 ring-foreground/10 duration-100 outline-none sm:max-w-sm data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className),
@@ -19644,7 +20464,7 @@ function DialogContent({ className, children, showCloseButton = true, overlayCla
19644
20464
  }),
19645
20465
  children: [/* @__PURE__ */ jsx(X, {}), /* @__PURE__ */ jsx("span", {
19646
20466
  className: "sr-only",
19647
- children: "Close"
20467
+ children: labels.close
19648
20468
  })]
19649
20469
  })]
19650
20470
  })] });
@@ -19660,6 +20480,7 @@ function DialogTitle({ className, ...props }) {
19660
20480
  //#endregion
19661
20481
  //#region src/components/docs/ZoomableImage.tsx
19662
20482
  function ZoomableImage({ noZoom = false, className, alt, src, ...props }) {
20483
+ const labels = useLabels();
19663
20484
  const image = /* @__PURE__ */ jsx("img", {
19664
20485
  ...props,
19665
20486
  src,
@@ -19667,7 +20488,7 @@ function ZoomableImage({ noZoom = false, className, alt, src, ...props }) {
19667
20488
  className: cn("block h-auto max-w-full rounded-lg", noZoom && "my-6", className)
19668
20489
  });
19669
20490
  if (noZoom || !src) return image;
19670
- const label = alt ? `View “${alt}” full size` : "View image full size";
20491
+ const label = alt ? labels.viewNamedImage.replace("{alt}", () => alt) : labels.viewImage;
19671
20492
  return /* @__PURE__ */ jsxs(Dialog, { children: [/* @__PURE__ */ jsx(DialogTrigger, {
19672
20493
  render: /* @__PURE__ */ jsx("button", {
19673
20494
  type: "button",
@@ -19682,7 +20503,7 @@ function ZoomableImage({ noZoom = false, className, alt, src, ...props }) {
19682
20503
  className: "flex max-h-[calc(100vh-2rem)] w-auto max-w-[calc(100vw-2rem)] items-center justify-center bg-transparent p-0 ring-0 shadow-none sm:max-w-[calc(100vw-2rem)]",
19683
20504
  children: [/* @__PURE__ */ jsx(DialogTitle, {
19684
20505
  className: "sr-only",
19685
- children: alt || "Full-size image"
20506
+ children: alt || labels.fullSizeImage
19686
20507
  }), /* @__PURE__ */ jsx("img", {
19687
20508
  src,
19688
20509
  srcSet: props.srcSet,
@@ -19744,4 +20565,4 @@ var docs_exports = /* @__PURE__ */ __exportAll({
19744
20565
  });
19745
20566
 
19746
20567
  //#endregion
19747
- export { useFloatingNodeId as $, useRenderElement as $n, resolveIcon as $t, safePolygon as A, isElementVisible as An, __commonJSMin as Ar, Column as At, attachPreventUnmountOnClose as B, getTarget as Bn, Callout as Bt, Tooltip as C, getNextTabbable as Cn, Router as Cr, Icon as Ct, useAnchorPositioning as D, findNonDisabledListIndex as Dn, createPath as Dr, Collapsible as Dt, getDisabledMountTransitionStyles as E, isOutsideEvent as En, useNavigate as Er, Expandable as Et, createInitialPopupStoreState as F, stopEvent as Fn, useCompositeItem as Ft, useTriggerDataForwarding as G, jsdom as Gn, Tip as Gt, useImplicitActiveTrigger as H, ARROW_LEFT$1 as Hn, Danger as Ht, popupStoreSelectors as I, getFloatingFocusElement as In, Changelog as It, useDismiss as J, useBaseUiId as Jn, Button as Jt, useSyncedFloatingRootContext as K, webkit as Kn, Warning as Kt, PopupTriggerMap as L, isTypeableCombobox as Ln, Update as Lt, useHoverFloatingInteraction as M, isListIndexDisabled as Mn, CodeGroup as Mt, useFocus as N, isVirtualClick as Nn, COMPOSITE_KEYS as Nt, popupTransitionStateMapping as O, getMaxListIndex as On, parsePath as Or, CollapsibleContent as Ot, usePopupHandleStore as P, isVirtualPointerEvent as Pn, inertValue as Pt, FloatingTree as Q, cn as Qn, AccordionGroup as Qt, FOCUSABLE_POPUP_PROPS as R, activeElement as Rn, Card as Rt, TreeFolder as S, useDirection as Sn, Route as Sr, Link as St, usePositioner as T, getTabbableBeforeElement as Tn, useLocation as Tr, renderInlineMarkdown as Tt, useOpenStateTransitions as U, ARROW_RIGHT$1 as Un, Info as Ut, setPopupOpenState as V, ARROW_DOWN$1 as Vn, Check as Vt, usePopupInteractionProps as W, ARROW_UP$1 as Wn, Note as Wt, FloatingFocusManager as X, useTimeout as Xn, Badge$1 as Xt, useClick as Y, useId$1 as Yn, Badge as Yt, FloatingNode as Z, Button$1 as Zn, Accordion as Zt, FileTree as _, triggerPress as _n, Check$1 as _r, Param as _t, DialogTitle as a, useAnimationFrame as an, ownerDocument as ar, POPUP_COLLISION_AVOIDANCE as at, Tree as b, mermaidSource as bn, Link$1 as br, usePanelContent as bt, useOpenInteractionType as c, escapeKey as cn, useIsoLayoutEffect as cr, fastComponent as ct, useScrollLock as d, itemPress as dn, getParentNode as dr, Tiles as dt, getIcon as en, EMPTY_ARRAY$1 as er, useFloatingParentNodeId as et, DialogPortal$1 as f, listNavigation as fn, getWindow as fr, Tab as ft, DialogBackdrop as g, triggerHover as gn, ChevronRight as gr, PropertiesTable as gt, DialogClose as h, triggerFocus as hn, X as hr, Steps as ht, DialogContent as i, useCompositeListItem as in, dispatchClickWithModifiers as ir, DROPDOWN_COLLISION_AVOIDANCE as it, useHoverReferenceInteraction as j, isIndexOutOfListBounds as jn, __toESM as jr, Columns as jt, pressableTriggerOpenStateMapping as k, getMinListIndex as kn, ABSOLUTE_URL_REGEX as kr, CollapsibleTrigger as kt, DialogTitle$1 as l, focusOut as ln, useStableCallback as lr, fastComponentRef as lt, DialogPopup as m, siblingOpen as mn, isLastTraversableNode as mr, Step as mt, ZoomableImage as n, useAnimationsFinished as nn, useMergedRefs as nr, FloatingTreeStore as nt, DialogTrigger as o, createChangeEventDetails as on, useCompositeRootContext as or, enqueueFocus as ot, InternalBackdrop as p, outsidePress as pn, isHTMLElement as pr, Tabs as pt, ReactStore as q, mac as qn, WarningBanner as qt, Dialog as r, useValueAsRef as rn, useButton as rr, FloatingPortal as rt, DialogTrigger$1 as s, cancelOpen as sn, mergeProps as sr, FocusGuard as st, docs_exports as t, useOpenChangeComplete as tn, EMPTY_OBJECT as tr, useFloatingTree as tt, DialogRoot as u, imperativeAction as un, useRefWithInit as ur, Tile as ut, FileTreeFile as v, CompositeList as vn, createLucideIcon as vr, Panel as vt, TooltipProvider as w, getTabbableAfterElement as wn, Routes as wr, Frame as wt, TreeFile as x, addEventListener as xn, Navigate as xr, useSetPanelContent as xt, FileTreeFolder as y, Mermaid as yn, BrowserRouter as yr, PanelProvider as yt, PopupHandleAttachment as z, contains as zn, CardGroup as zt };
20568
+ export { useFloatingNodeId as $, ARROW_LEFT$1 as $n, resolveIcon as $t, safePolygon as A, isValidLocale as An, createLucideIcon as Ar, Column as At, attachPreventUnmountOnClose as B, getMinListIndex as Bn, parsePath as Br, Callout as Bt, Tooltip as C, mermaidSource as Cn, getParentNode as Cr, Icon as Ct, useAnchorPositioning as D, resolveLabels as Dn, X as Dr, Collapsible as Dt, getDisabledMountTransitionStyles as E, englishLabels as En, isLastTraversableNode as Er, Expandable as Et, createInitialPopupStoreState as F, getTabbableAfterElement as Fn, Router as Fr, useCompositeItem as Ft, useTriggerDataForwarding as G, isVirtualPointerEvent as Gn, Tip as Gt, useImplicitActiveTrigger as H, isIndexOutOfListBounds as Hn, __commonJSMin as Hr, Danger as Ht, popupStoreSelectors as I, getTabbableBeforeElement as In, Routes as Ir, Changelog as It, useDismiss as J, isTypeableCombobox as Jn, Button as Jt, useSyncedFloatingRootContext as K, stopEvent as Kn, Warning as Kt, PopupTriggerMap as L, isOutsideEvent as Ln, useLocation as Lr, Update as Lt, useHoverFloatingInteraction as M, addEventListener as Mn, Link$1 as Mr, CodeGroup as Mt, useFocus as N, useDirection as Nn, Navigate as Nr, COMPOSITE_KEYS as Nt, popupTransitionStateMapping as O, getLanguageName as On, ChevronRight as Or, CollapsibleContent as Ot, usePopupHandleStore as P, getNextTabbable as Pn, Route as Pr, inertValue as Pt, FloatingTree as Q, ARROW_DOWN$1 as Qn, AccordionGroup as Qt, FOCUSABLE_POPUP_PROPS as R, findNonDisabledListIndex as Rn, useNavigate as Rr, Card as Rt, TreeFolder as S, Mermaid as Sn, useRefWithInit as Sr, Link as St, usePositioner as T, useLabels as Tn, isHTMLElement as Tr, renderInlineMarkdown as Tt, useOpenStateTransitions as U, isListIndexDisabled as Un, __toESM as Ur, Info as Ut, setPopupOpenState as V, isElementVisible as Vn, ABSOLUTE_URL_REGEX as Vr, Check as Vt, usePopupInteractionProps as W, isVirtualClick as Wn, Note as Wt, FloatingFocusManager as X, contains as Xn, Badge$1 as Xt, useClick as Y, activeElement as Yn, Badge as Yt, FloatingNode as Z, getTarget as Zn, Accordion as Zt, FileTree as _, triggerFocus as _n, ownerDocument as _r, Param as _t, DialogTitle as a, useCompositeListItem as an, useBaseUiId as ar, POPUP_COLLISION_AVOIDANCE as at, Tree as b, CompositeList as bn, useIsoLayoutEffect as br, usePanelContent as bt, useOpenInteractionType as c, createChangeEventDetails as cn, Button$1 as cr, fastComponent as ct, useScrollLock as d, focusOut as dn, EMPTY_ARRAY$1 as dr, Tiles as dt, getIcon as en, ARROW_RIGHT$1 as er, useFloatingParentNodeId as et, DialogPortal$1 as f, imperativeAction as fn, EMPTY_OBJECT as fr, Tab as ft, DialogBackdrop as g, siblingOpen as gn, dispatchClickWithModifiers as gr, PropertiesTable as gt, DialogClose as h, outsidePress as hn, useButton as hr, Steps as ht, DialogContent as i, transitionStatusMapping as in, mac as ir, DROPDOWN_COLLISION_AVOIDANCE as it, useHoverReferenceInteraction as j, resolveLocale as jn, BrowserRouter as jr, Columns as jt, pressableTriggerOpenStateMapping as k, getTextDirection as kn, Check$1 as kr, CollapsibleTrigger as kt, DialogTitle$1 as l, cancelOpen as ln, cn as lr, fastComponentRef as lt, DialogPopup as m, listNavigation as mn, useMergedRefs as mr, Step as mt, ZoomableImage as n, useAnimationsFinished as nn, jsdom as nr, FloatingTreeStore as nt, DialogTrigger as o, useTransitionStatus as on, useId$1 as or, enqueueFocus as ot, InternalBackdrop as p, itemPress as pn, NOOP as pr, Tabs as pt, ReactStore as q, getFloatingFocusElement as qn, WarningBanner as qt, Dialog as r, useValueAsRef as rn, webkit as rr, FloatingPortal as rt, DialogTrigger$1 as s, useAnimationFrame as sn, useTimeout as sr, FocusGuard as st, docs_exports as t, useOpenChangeComplete as tn, ARROW_UP$1 as tr, useFloatingTree as tt, DialogRoot as u, escapeKey as un, useRenderElement as ur, Tile as ut, FileTreeFile as v, triggerHover as vn, useCompositeRootContext as vr, Panel as vt, TooltipProvider as w, LabelContext as wn, getWindow as wr, Frame as wt, TreeFile as x, useControlled as xn, useStableCallback as xr, useSetPanelContent as xt, FileTreeFolder as y, triggerPress as yn, mergeProps as yr, PanelProvider as yt, PopupHandleAttachment as z, getMaxListIndex as zn, createPath as zr, CardGroup as zt };