@eifi1/ui-kit 0.40.1 → 0.42.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.
- package/README.md +19 -6
- package/dist/admin/admin-area-labels.d.ts +55 -0
- package/dist/admin/admin-area-labels.js +33 -0
- package/dist/admin/admin-area-labels.js.map +1 -0
- package/dist/admin/admin-forbidden.d.ts +35 -0
- package/dist/admin/admin-forbidden.js +36 -0
- package/dist/admin/admin-forbidden.js.map +1 -0
- package/dist/admin/admin-overview.d.ts +93 -0
- package/dist/admin/admin-overview.js +69 -0
- package/dist/admin/admin-overview.js.map +1 -0
- package/dist/admin/admin-sections.d.ts +63 -0
- package/dist/admin/admin-sections.js +64 -0
- package/dist/admin/admin-sections.js.map +1 -0
- package/dist/admin/admin-tool-links.d.ts +48 -0
- package/dist/admin/admin-tool-links.js +31 -0
- package/dist/admin/admin-tool-links.js.map +1 -0
- package/dist/billing/billing-banner.d.ts +25 -2
- package/dist/billing/billing-banner.js +5 -2
- package/dist/billing/billing-banner.js.map +1 -1
- package/dist/billing/billing-labels.d.ts +32 -0
- package/dist/billing/billing-labels.js +9 -0
- package/dist/billing/billing-labels.js.map +1 -1
- package/dist/billing/billing-overview.d.ts +33 -0
- package/dist/billing/billing-overview.js +6 -0
- package/dist/billing/billing-overview.js.map +1 -1
- package/dist/billing/billing-standing.d.ts +8 -0
- package/dist/billing/billing-standing.js.map +1 -1
- package/dist/billing/cancel-subscription.d.ts +46 -0
- package/dist/billing/cancel-subscription.js +57 -0
- package/dist/billing/cancel-subscription.js.map +1 -0
- package/dist/billing/plan-card.d.ts +45 -1
- package/dist/billing/plan-card.js +53 -2
- package/dist/billing/plan-card.js.map +1 -1
- package/dist/billing/plan-switch.d.ts +10 -1
- package/dist/billing/plan-switch.js +22 -13
- package/dist/billing/plan-switch.js.map +1 -1
- package/dist/billing/subscription-actions.d.ts +37 -4
- package/dist/billing/subscription-actions.js +10 -3
- package/dist/billing/subscription-actions.js.map +1 -1
- package/dist/components/account-chips.d.ts +42 -1
- package/dist/components/account-chips.js +33 -0
- package/dist/components/account-chips.js.map +1 -1
- package/dist/components/empty-state.d.ts +2 -1
- package/dist/components/empty-state.js.map +1 -1
- package/dist/components/nav-pills.d.ts +2 -2
- package/dist/components/nav-pills.js.map +1 -1
- package/dist/components/tabs.d.ts +4 -32
- package/dist/components/tabs.js +30 -66
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/translation-review-parts.d.ts +2 -2
- package/dist/components/translation-review-parts.js.map +1 -1
- package/dist/eslint/index.js +1 -1
- package/dist/feedback/feedback-menu-labels.js +0 -2
- package/dist/feedback/feedback-menu-labels.js.map +1 -1
- package/dist/feedback/feedback-menu.d.ts +0 -6
- package/dist/feedback/feedback-menu.js.map +1 -1
- package/dist/i18n/defaults.js +5 -1
- package/dist/i18n/defaults.js.map +1 -1
- package/dist/i18n/german.js +79 -2
- package/dist/i18n/german.js.map +1 -1
- package/dist/i18n/kit-labels.d.ts +9 -0
- package/dist/i18n/kit-labels.js.map +1 -1
- package/dist/i18n/locales/en.js +93 -3
- package/dist/i18n/locales/en.js.map +3 -3
- package/dist/i18n/locales/es.js +76 -2
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.js +75 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hu.js +76 -2
- package/dist/i18n/locales/hu.js.map +1 -1
- package/dist/i18n/locales/it.js +76 -2
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/zh.js +75 -2
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/i18n/review.js +20 -1
- package/dist/i18n/review.js.map +1 -1
- package/dist/index.d.ts +18 -2
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -1
- package/dist/settings/settings-layout.d.ts +7 -1
- package/dist/settings/settings-layout.js +35 -27
- package/dist/settings/settings-layout.js.map +1 -1
- package/dist/shell/account-menu-language.d.ts +46 -0
- package/dist/shell/account-menu-language.js +64 -0
- package/dist/shell/account-menu-language.js.map +1 -0
- package/dist/shell/admin-menu.d.ts +46 -0
- package/dist/shell/admin-menu.js +60 -0
- package/dist/shell/admin-menu.js.map +1 -0
- package/dist/shell/app-shell.d.ts +10 -0
- package/dist/shell/app-shell.js +22 -4
- package/dist/shell/app-shell.js.map +1 -1
- package/dist/shell/dev-switchers.d.ts +53 -0
- package/dist/shell/dev-switchers.js +102 -0
- package/dist/shell/dev-switchers.js.map +1 -0
- package/dist/shell/sync-status-indicator.d.ts +86 -0
- package/dist/shell/sync-status-indicator.js +170 -0
- package/dist/shell/sync-status-indicator.js.map +1 -0
- package/dist/shell/top-bar-actions.d.ts +49 -0
- package/dist/shell/top-bar-actions.js +31 -0
- package/dist/shell/top-bar-actions.js.map +1 -0
- package/dist/shell/top-bar-parts-labels.d.ts +84 -0
- package/dist/shell/top-bar-parts-labels.js +48 -0
- package/dist/shell/top-bar-parts-labels.js.map +1 -0
- package/dist/shell/topbar-action-menu.d.ts +13 -1
- package/dist/shell/topbar-action-menu.js +5 -2
- package/dist/shell/topbar-action-menu.js.map +1 -1
- package/dist/shell/topbar-controls.d.ts +16 -3
- package/dist/shell/topbar-controls.js +5 -1
- package/dist/shell/topbar-controls.js.map +1 -1
- package/dist/shell/tour-menu.d.ts +58 -0
- package/dist/shell/tour-menu.js +73 -0
- package/dist/shell/tour-menu.js.map +1 -0
- package/dist/shell.d.ts +14 -0
- package/dist/shell.js +19 -0
- package/dist/shell.js.map +1 -1
- package/package.json +1 -1
- package/src/admin/admin-area-labels.ts +85 -0
- package/src/admin/admin-forbidden.tsx +75 -0
- package/src/admin/admin-overview.tsx +166 -0
- package/src/admin/admin-sections.tsx +137 -0
- package/src/admin/admin-tool-links.tsx +84 -0
- package/src/billing/billing-banner.tsx +32 -4
- package/src/billing/billing-labels.ts +53 -0
- package/src/billing/billing-overview.ts +37 -0
- package/src/billing/billing-standing.ts +8 -0
- package/src/billing/cancel-subscription.tsx +102 -0
- package/src/billing/plan-card.tsx +97 -1
- package/src/billing/plan-switch.tsx +16 -0
- package/src/billing/subscription-actions.tsx +64 -15
- package/src/components/account-chips.tsx +81 -1
- package/src/components/empty-state.tsx +2 -1
- package/src/components/nav-pills.tsx +2 -2
- package/src/components/tabs.tsx +19 -110
- package/src/components/translation-review-parts.tsx +2 -2
- package/src/feedback/feedback-menu-labels.ts +0 -2
- package/src/feedback/feedback-menu.tsx +0 -6
- package/src/i18n/defaults.ts +4 -0
- package/src/i18n/german.ts +92 -2
- package/src/i18n/kit-labels.tsx +9 -0
- package/src/i18n/locales/en.ts +19 -0
- package/src/i18n/locales/es.ts +86 -2
- package/src/i18n/locales/fr.ts +86 -2
- package/src/i18n/locales/hu.ts +84 -2
- package/src/i18n/locales/it.ts +87 -2
- package/src/i18n/locales/zh.ts +79 -2
- package/src/i18n/review.ts +19 -0
- package/src/index.ts +30 -2
- package/src/settings/settings-layout.tsx +58 -34
- package/src/shell/account-menu-language.tsx +116 -0
- package/src/shell/admin-menu.tsx +117 -0
- package/src/shell/app-shell.tsx +44 -3
- package/src/shell/dev-switchers.tsx +171 -0
- package/src/shell/sync-status-indicator.tsx +301 -0
- package/src/shell/top-bar-actions.tsx +79 -0
- package/src/shell/top-bar-parts-labels.ts +133 -0
- package/src/shell/topbar-action-menu.tsx +15 -2
- package/src/shell/topbar-controls.tsx +20 -3
- package/src/shell/tour-menu.tsx +144 -0
- package/src/shell.ts +24 -0
package/src/i18n/locales/fr.ts
CHANGED
|
@@ -110,8 +110,6 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
|
|
|
110
110
|
feedbackMenu: {
|
|
111
111
|
trigger: "Envoyer un retour",
|
|
112
112
|
myFeedback: "Mes retours",
|
|
113
|
-
viewFeedback: "Voir les retours",
|
|
114
|
-
allFeedback: "Tous les retours",
|
|
115
113
|
discussion: "Discussion des retours",
|
|
116
114
|
inbox: "Retours reçus",
|
|
117
115
|
},
|
|
@@ -1718,6 +1716,11 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
|
|
|
1718
1716
|
"Votre paiement est en cours de traitement. Votre formule démarre dès qu’il est confirmé\u202f; cette page se met à jour d’elle-même.",
|
|
1719
1717
|
choosePlan: "Choisir une formule",
|
|
1720
1718
|
updatePayment: "Mettre à jour le moyen de paiement",
|
|
1719
|
+
// 0.42 (§16.7 A): for an admin who isn't the buyer.
|
|
1720
|
+
paymentFailedAskBuyer: (buyer) =>
|
|
1721
|
+
buyer
|
|
1722
|
+
? `Le paiement a échoué. ${buyer} peut mettre à jour le moyen de paiement.`
|
|
1723
|
+
: "Le paiement a échoué. L’administrateur qui a souscrit l’abonnement peut mettre à jour le moyen de paiement.",
|
|
1721
1724
|
checkAgain: "Vérifier à nouveau",
|
|
1722
1725
|
lockReason: "Votre formule a pris fin. Choisissez une formule pour pouvoir de nouveau apporter des modifications.",
|
|
1723
1726
|
// As `characterCount.limitReached` ("Limite de caractères atteinte").
|
|
@@ -1749,6 +1752,20 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
|
|
|
1749
1752
|
switchCredited: "Crédité sur vos prochains paiements",
|
|
1750
1753
|
switchNextCharge: (date) => `Prochain prélèvement le ${date}`,
|
|
1751
1754
|
switchConfirm: "Changer de formule",
|
|
1755
|
+
// 0.42 (§16): the portal for the buyer only, the in-app cancel, the grant warning.
|
|
1756
|
+
buyerHolds: (buyer) =>
|
|
1757
|
+
buyer
|
|
1758
|
+
? `Le moyen de paiement et les factures sont gérés par ${buyer}, qui a souscrit l’abonnement.`
|
|
1759
|
+
: "Le moyen de paiement et les factures sont gérés par l’administrateur qui a souscrit l’abonnement.",
|
|
1760
|
+
cancelConfirmTitle: "Résilier l’abonnement",
|
|
1761
|
+
cancelConfirmBody: (date) =>
|
|
1762
|
+
`Votre abonnement prendra fin le ${date}. D’ici là, tout fonctionne comme avant.`,
|
|
1763
|
+
cancelConfirmAction: "Résilier maintenant",
|
|
1764
|
+
keepSubscription: "Conserver l’abonnement",
|
|
1765
|
+
grantWarningTitle: "Votre accès gratuit continue",
|
|
1766
|
+
grantWarningBody:
|
|
1767
|
+
"Votre accès gratuit n’a pas de date de fin. Tant qu’il dure, un achat ne change pas votre formule : vous paieriez pour une formule qui ne s’applique pas.",
|
|
1768
|
+
grantWarningAction: "Acheter quand même",
|
|
1752
1769
|
waitingChanges: (count) =>
|
|
1753
1770
|
`${n(count)} ${plural(count, "modification en attente", "modifications en attente")} d’une formule`,
|
|
1754
1771
|
// "Abandonner", as `wizard.cancelConfirmLabel`.
|
|
@@ -1822,6 +1839,73 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
|
|
|
1822
1839
|
more: "Plus",
|
|
1823
1840
|
moreTitle: "Autres pages",
|
|
1824
1841
|
},
|
|
1842
|
+
// 0.42.0 — docs/admin-harmonization.md §3.1: the admin area's shared words.
|
|
1843
|
+
adminArea: {
|
|
1844
|
+
title: "Administration",
|
|
1845
|
+
waiting: (count) => `${n(count)} en attente`,
|
|
1846
|
+
forbiddenTitle: "Réservé aux administrateurs",
|
|
1847
|
+
forbiddenBody: (appName) =>
|
|
1848
|
+
`C’est ici que les administrateurs gèrent ${appName}. Votre compte ne peut pas ouvrir cette page.`,
|
|
1849
|
+
forbiddenHome: "Aller à la page d’accueil",
|
|
1850
|
+
forbiddenReviewer: "Relire les traductions",
|
|
1851
|
+
sections: {
|
|
1852
|
+
overview: { title: "Vue d’ensemble", help: "Ce qui est en attente, en un coup d’œil." },
|
|
1853
|
+
users: { title: "Utilisateurs", help: "Qui a un compte, et ce que chacun peut faire." },
|
|
1854
|
+
invitations: { title: "Invitations", help: "Les liens qui permettent à une nouvelle personne d’entrer." },
|
|
1855
|
+
billing: { title: "Facturation", help: "L’offre, le paiement et les factures." },
|
|
1856
|
+
activity: { title: "Activité", help: "Ce que les administrateurs ont fait, du plus récent au plus ancien." },
|
|
1857
|
+
},
|
|
1858
|
+
tiles: {
|
|
1859
|
+
feedbackWaiting: "À trier",
|
|
1860
|
+
deletionRequests: "Demandes de suppression",
|
|
1861
|
+
invitationsPending: "Invitations en attente",
|
|
1862
|
+
users: "Utilisateurs",
|
|
1863
|
+
usersNew: (count) => `${n(count)} ${plural(count, "nouveau", "nouveaux")} en 7 jours`,
|
|
1864
|
+
},
|
|
1865
|
+
tools: "Outils",
|
|
1866
|
+
},
|
|
1867
|
+
// 0.42.0 — docs/top-bar-harmonization.md §3.1: the top bar's shared parts, keksdose's
|
|
1868
|
+
// reviewed sync words where they are not about its budgets; "formule" as `billing`.
|
|
1869
|
+
topBarParts: {
|
|
1870
|
+
tours: {
|
|
1871
|
+
menu: "Visites guidées",
|
|
1872
|
+
newDot: "Nouvelles visites",
|
|
1873
|
+
thisPage: "Sur cette page",
|
|
1874
|
+
newTours: "Nouvelles visites",
|
|
1875
|
+
allTours: "Toutes les visites…",
|
|
1876
|
+
badgeNew: "Nouveau",
|
|
1877
|
+
completed: "Terminée",
|
|
1878
|
+
},
|
|
1879
|
+
sync: {
|
|
1880
|
+
blocked: (count) =>
|
|
1881
|
+
`${n(count)} ${plural(count, "modification ne peut pas être envoyée", "modifications ne peuvent pas être envoyées")} depuis cet appareil`,
|
|
1882
|
+
offline: "Hors ligne — les modifications sont enregistrées sur cet appareil et seront synchronisées à la reconnexion",
|
|
1883
|
+
refused: "Le serveur a refusé la dernière synchronisation",
|
|
1884
|
+
syncing: "Synchronisation…",
|
|
1885
|
+
pending: (count) =>
|
|
1886
|
+
`${n(count)} ${plural(count, "modification", "modifications")} en attente de synchronisation`,
|
|
1887
|
+
syncedAt: (time) => `Synchronisé à ${time}`,
|
|
1888
|
+
idle: "À jour",
|
|
1889
|
+
syncHint: "Touchez pour synchroniser maintenant",
|
|
1890
|
+
offlineHint: "rien à synchroniser hors ligne",
|
|
1891
|
+
withHint: (state, hint) => `${state} — ${hint}`,
|
|
1892
|
+
scoped: (scope, state) => `${scope}\u00a0: ${state}`,
|
|
1893
|
+
offlineShort: "Hors ligne",
|
|
1894
|
+
syncingShort: "Synchronisation…",
|
|
1895
|
+
waitingShort: (count) => `${n(count)} en attente`,
|
|
1896
|
+
refusedShort: "Non synchronisé",
|
|
1897
|
+
offlineUnsaved: "Hors ligne — les modifications ne peuvent pas être enregistrées avant la reconnexion",
|
|
1898
|
+
saving: "Enregistrement…",
|
|
1899
|
+
},
|
|
1900
|
+
dev: {
|
|
1901
|
+
roleHeading: "Dev · rôle",
|
|
1902
|
+
switchPlan: "Changer de formule",
|
|
1903
|
+
plan: (value) => `Formule\u00a0: ${value}`,
|
|
1904
|
+
planHeading: "Dev · formule",
|
|
1905
|
+
backTo: (role) => `Revenir à ${role}`,
|
|
1906
|
+
billingOff: "La facturation est désactivée en local\u00a0: les formules ne changent rien",
|
|
1907
|
+
},
|
|
1908
|
+
},
|
|
1825
1909
|
};
|
|
1826
1910
|
}
|
|
1827
1911
|
|
package/src/i18n/locales/hu.ts
CHANGED
|
@@ -109,8 +109,6 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
|
|
|
109
109
|
feedbackMenu: {
|
|
110
110
|
trigger: "Visszajelzés küldése",
|
|
111
111
|
myFeedback: "Visszajelzéseim",
|
|
112
|
-
viewFeedback: "Visszajelzések megtekintése",
|
|
113
|
-
allFeedback: "Összes visszajelzés",
|
|
114
112
|
discussion: "Visszajelzések megvitatása",
|
|
115
113
|
inbox: "Beérkezett visszajelzések",
|
|
116
114
|
},
|
|
@@ -1686,6 +1684,11 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
|
|
|
1686
1684
|
"A fizetése feldolgozás alatt áll. A csomagja a megerősítés után azonnal elindul; ez az oldal magától frissül.",
|
|
1687
1685
|
choosePlan: "Csomag választása",
|
|
1688
1686
|
updatePayment: "Fizetési mód frissítése",
|
|
1687
|
+
// 0.42 (§16.7 A): for an admin who isn't the buyer.
|
|
1688
|
+
paymentFailedAskBuyer: (buyer) =>
|
|
1689
|
+
buyer
|
|
1690
|
+
? `A fizetés sikertelen volt. ${buyer} tudja frissíteni a fizetési módot.`
|
|
1691
|
+
: "A fizetés sikertelen volt. Az előfizetést megvásárló adminisztrátor tudja frissíteni a fizetési módot.",
|
|
1689
1692
|
checkAgain: "Újraellenőrzés",
|
|
1690
1693
|
lockReason: "A csomagja lejárt. Ha ismét módosítani szeretne, válasszon csomagot.",
|
|
1691
1694
|
// As `characterCount.limitReached` ("Elérte a karakterkorlátot").
|
|
@@ -1718,6 +1721,19 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
|
|
|
1718
1721
|
switchCredited: "A következő terhelésekből levonva",
|
|
1719
1722
|
switchNextCharge: (date) => `Következő terhelés: ${date}`,
|
|
1720
1723
|
switchConfirm: "Csomag módosítása",
|
|
1724
|
+
// 0.42 (§16): the portal for the buyer only, the in-app cancel, the grant warning.
|
|
1725
|
+
buyerHolds: (buyer) =>
|
|
1726
|
+
buyer
|
|
1727
|
+
? `A fizetési módot és a számlákat ${buyer} kezeli, aki az előfizetést megvásárolta.`
|
|
1728
|
+
: "A fizetési módot és a számlákat az előfizetést megvásárló adminisztrátor kezeli.",
|
|
1729
|
+
cancelConfirmTitle: "Előfizetés lemondása",
|
|
1730
|
+
cancelConfirmBody: (date) => `Az előfizetése ekkor ér véget: ${date}. Addig minden a megszokott módon működik.`,
|
|
1731
|
+
cancelConfirmAction: "Lemondás most",
|
|
1732
|
+
keepSubscription: "Előfizetés megtartása",
|
|
1733
|
+
grantWarningTitle: "Az ingyenes hozzáférése továbbra is él",
|
|
1734
|
+
grantWarningBody:
|
|
1735
|
+
"Az ingyenes hozzáférésének nincs lejárati dátuma. Amíg tart, a vásárlás nem változtatja meg a csomagját: olyan csomagért fizetne, amely nem érvényes.",
|
|
1736
|
+
grantWarningAction: "Mégis megvásárolom",
|
|
1721
1737
|
// No plural after a numeral (convention 2).
|
|
1722
1738
|
waitingChanges: (count) => `${n(count)} módosítás csomagra vár`,
|
|
1723
1739
|
// "Elvetés", as `wizard.cancelConfirmLabel`.
|
|
@@ -1789,6 +1805,72 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
|
|
|
1789
1805
|
more: "Továbbiak",
|
|
1790
1806
|
moreTitle: "További oldalak",
|
|
1791
1807
|
},
|
|
1808
|
+
// 0.42.0 — docs/admin-harmonization.md §3.1: the admin area's shared words. "Ön", as
|
|
1809
|
+
// the rest of the catalogue.
|
|
1810
|
+
adminArea: {
|
|
1811
|
+
title: "Adminisztráció",
|
|
1812
|
+
waiting: (count) => `${n(count)} várakozik`,
|
|
1813
|
+
forbiddenTitle: "Csak adminisztrátoroknak",
|
|
1814
|
+
forbiddenBody: (appName) =>
|
|
1815
|
+
`Itt kezelik az adminisztrátorok a(z) ${appName} alkalmazást. Az Ön fiókja nem nyithatja meg ezt az oldalt.`,
|
|
1816
|
+
forbiddenHome: "Ugrás a kezdőlapra",
|
|
1817
|
+
forbiddenReviewer: "Fordítások ellenőrzése",
|
|
1818
|
+
sections: {
|
|
1819
|
+
overview: { title: "Áttekintés", help: "Ami most várakozik, egy pillantásra." },
|
|
1820
|
+
users: { title: "Felhasználók", help: "Kinek van fiókja, és ki mit tehet." },
|
|
1821
|
+
invitations: { title: "Meghívások", help: "A linkek, amelyekkel új személy csatlakozhat." },
|
|
1822
|
+
billing: { title: "Számlázás", help: "A csomag, a fizetés és a számlák." },
|
|
1823
|
+
activity: { title: "Tevékenység", help: "Mit tettek az adminisztrátorok, a legújabb elöl." },
|
|
1824
|
+
},
|
|
1825
|
+
tiles: {
|
|
1826
|
+
feedbackWaiting: "Osztályozásra vár",
|
|
1827
|
+
deletionRequests: "Törlési kérelmek",
|
|
1828
|
+
invitationsPending: "Függő meghívások",
|
|
1829
|
+
users: "Felhasználók",
|
|
1830
|
+
usersNew: (count) => `${n(count)} új az elmúlt 7 napban`,
|
|
1831
|
+
},
|
|
1832
|
+
tools: "Eszközök",
|
|
1833
|
+
},
|
|
1834
|
+
// 0.42.0 — docs/top-bar-harmonization.md §3.1: the top bar's shared parts; "csomag" as
|
|
1835
|
+
// `billing`, the formal register as the rest of the catalogue.
|
|
1836
|
+
topBarParts: {
|
|
1837
|
+
tours: {
|
|
1838
|
+
menu: "Bemutatók",
|
|
1839
|
+
newDot: "Új bemutatók",
|
|
1840
|
+
thisPage: "Ezen az oldalon",
|
|
1841
|
+
newTours: "Új bemutatók",
|
|
1842
|
+
allTours: "Összes bemutató…",
|
|
1843
|
+
badgeNew: "Új",
|
|
1844
|
+
completed: "Elvégezve",
|
|
1845
|
+
},
|
|
1846
|
+
sync: {
|
|
1847
|
+
blocked: (count) => `${n(count)} módosítás nem küldhető el erről az eszközről`,
|
|
1848
|
+
offline: "Offline – a módosítások ezen az eszközön maradnak, és az újracsatlakozáskor szinkronizálódnak",
|
|
1849
|
+
refused: "A szerver elutasította a legutóbbi szinkronizálást",
|
|
1850
|
+
syncing: "Szinkronizálás…",
|
|
1851
|
+
pending: (count) => `${n(count)} módosítás szinkronizálásra vár`,
|
|
1852
|
+
syncedAt: (time) => `Szinkronizálva: ${time}`,
|
|
1853
|
+
idle: "Naprakész",
|
|
1854
|
+
syncHint: "Koppintson a szinkronizáláshoz",
|
|
1855
|
+
offlineHint: "offline nincs mit szinkronizálni",
|
|
1856
|
+
withHint: (state, hint) => `${state} – ${hint}`,
|
|
1857
|
+
scoped: (scope, state) => `${scope}: ${state}`,
|
|
1858
|
+
offlineShort: "Offline",
|
|
1859
|
+
syncingShort: "Szinkronizálás…",
|
|
1860
|
+
waitingShort: (count) => `${n(count)} várakozik`,
|
|
1861
|
+
refusedShort: "Nincs szinkronizálva",
|
|
1862
|
+
offlineUnsaved: "Offline – a módosítások az újracsatlakozásig nem menthetők",
|
|
1863
|
+
saving: "Mentés…",
|
|
1864
|
+
},
|
|
1865
|
+
dev: {
|
|
1866
|
+
roleHeading: "Dev · szerepkör",
|
|
1867
|
+
switchPlan: "Csomag váltása",
|
|
1868
|
+
plan: (value) => `Csomag: ${value}`,
|
|
1869
|
+
planHeading: "Dev · csomag",
|
|
1870
|
+
backTo: (role) => `Vissza: ${role}`,
|
|
1871
|
+
billingOff: "A számlázás helyben ki van kapcsolva: a csomagok semmin nem változtatnak",
|
|
1872
|
+
},
|
|
1873
|
+
},
|
|
1792
1874
|
};
|
|
1793
1875
|
}
|
|
1794
1876
|
|
package/src/i18n/locales/it.ts
CHANGED
|
@@ -112,8 +112,6 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
112
112
|
feedbackMenu: {
|
|
113
113
|
trigger: "Invia feedback",
|
|
114
114
|
myFeedback: "I miei feedback",
|
|
115
|
-
viewFeedback: "Visualizza feedback",
|
|
116
|
-
allFeedback: "Tutti i feedback",
|
|
117
115
|
discussion: "Discussione sui feedback",
|
|
118
116
|
inbox: "Feedback ricevuti",
|
|
119
117
|
},
|
|
@@ -1701,6 +1699,11 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
1701
1699
|
"Il Suo pagamento è in elaborazione. Il Suo piano inizia non appena viene confermato; questa pagina si aggiorna da sola.",
|
|
1702
1700
|
choosePlan: "Scegli un piano",
|
|
1703
1701
|
updatePayment: "Aggiorna il metodo di pagamento",
|
|
1702
|
+
// 0.42 (§16.7 A): for an admin who isn't the buyer.
|
|
1703
|
+
paymentFailedAskBuyer: (buyer) =>
|
|
1704
|
+
buyer
|
|
1705
|
+
? `Il pagamento non è andato a buon fine. ${buyer} può aggiornare il metodo di pagamento.`
|
|
1706
|
+
: "Il pagamento non è andato a buon fine. L’amministratore che ha sottoscritto l’abbonamento può aggiornare il metodo di pagamento.",
|
|
1704
1707
|
checkAgain: "Verifica di nuovo",
|
|
1705
1708
|
lockReason: "Il Suo piano è terminato. Scelga un piano per apportare di nuovo modifiche.",
|
|
1706
1709
|
// As `characterCount.limitReached` ("Limite di caratteri raggiunto").
|
|
@@ -1731,6 +1734,20 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
1731
1734
|
switchCredited: "Accreditato sui prossimi addebiti",
|
|
1732
1735
|
switchNextCharge: (date) => `Prossimo addebito il ${date}`,
|
|
1733
1736
|
switchConfirm: "Cambia piano",
|
|
1737
|
+
// 0.42 (§16): the portal for the buyer only, the in-app cancel, the grant warning.
|
|
1738
|
+
buyerHolds: (buyer) =>
|
|
1739
|
+
buyer
|
|
1740
|
+
? `Il metodo di pagamento e le fatture sono gestiti da ${buyer}, che ha sottoscritto l’abbonamento.`
|
|
1741
|
+
: "Il metodo di pagamento e le fatture sono gestiti dall’amministratore che ha sottoscritto l’abbonamento.",
|
|
1742
|
+
cancelConfirmTitle: "Disdici l’abbonamento",
|
|
1743
|
+
cancelConfirmBody: (date) =>
|
|
1744
|
+
`Il Suo abbonamento termina il ${date}. Fino ad allora tutto funziona come prima.`,
|
|
1745
|
+
cancelConfirmAction: "Disdici ora",
|
|
1746
|
+
keepSubscription: "Mantieni l’abbonamento",
|
|
1747
|
+
grantWarningTitle: "Il Suo accesso gratuito continua",
|
|
1748
|
+
grantWarningBody:
|
|
1749
|
+
"Il Suo accesso gratuito non ha una data di fine. Finché dura, un acquisto non cambia il Suo piano: pagherebbe per un piano che non si applica.",
|
|
1750
|
+
grantWarningAction: "Acquista comunque",
|
|
1734
1751
|
waitingChanges: (count) =>
|
|
1735
1752
|
`${n(count)} ${plural(count, "modifica in attesa", "modifiche in attesa")} di un piano`,
|
|
1736
1753
|
// "Scarta", as `wizard.cancelConfirmLabel`.
|
|
@@ -1801,6 +1818,74 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
|
|
|
1801
1818
|
more: "Altro",
|
|
1802
1819
|
moreTitle: "Altre pagine",
|
|
1803
1820
|
},
|
|
1821
|
+
// 0.42.0 — docs/admin-harmonization.md §3.1: the admin area's shared words. "Lei", as
|
|
1822
|
+
// the rest of the catalogue.
|
|
1823
|
+
adminArea: {
|
|
1824
|
+
title: "Amministrazione",
|
|
1825
|
+
waiting: (count) => `${n(count)} in attesa`,
|
|
1826
|
+
forbiddenTitle: "Solo per gli amministratori",
|
|
1827
|
+
forbiddenBody: (appName) =>
|
|
1828
|
+
`Qui gli amministratori gestiscono ${appName}. Il Suo account non può aprire questa pagina.`,
|
|
1829
|
+
forbiddenHome: "Vai alla pagina iniziale",
|
|
1830
|
+
forbiddenReviewer: "Rivedi le traduzioni",
|
|
1831
|
+
sections: {
|
|
1832
|
+
overview: { title: "Panoramica", help: "Ciò che è in attesa, a colpo d’occhio." },
|
|
1833
|
+
users: { title: "Utenti", help: "Chi ha un account e cosa può fare ciascuno." },
|
|
1834
|
+
invitations: { title: "Inviti", help: "I link con cui entra una persona nuova." },
|
|
1835
|
+
billing: { title: "Fatturazione", help: "Il piano, il pagamento e le fatture." },
|
|
1836
|
+
activity: { title: "Attività", help: "Ciò che hanno fatto gli amministratori, dal più recente." },
|
|
1837
|
+
},
|
|
1838
|
+
tiles: {
|
|
1839
|
+
feedbackWaiting: "Da smistare",
|
|
1840
|
+
deletionRequests: "Richieste di eliminazione",
|
|
1841
|
+
invitationsPending: "Inviti in sospeso",
|
|
1842
|
+
users: "Utenti",
|
|
1843
|
+
usersNew: (count) => `${n(count)} ${plural(count, "nuovo", "nuovi")} in 7 giorni`,
|
|
1844
|
+
},
|
|
1845
|
+
tools: "Strumenti",
|
|
1846
|
+
},
|
|
1847
|
+
// 0.42.0 — docs/top-bar-harmonization.md §3.1: the top bar's shared parts, keksdose's
|
|
1848
|
+
// reviewed sync words where they are not about its budgets; "piano" as `billing`.
|
|
1849
|
+
topBarParts: {
|
|
1850
|
+
tours: {
|
|
1851
|
+
menu: "Tour guidati",
|
|
1852
|
+
newDot: "Nuovi tour",
|
|
1853
|
+
thisPage: "In questa pagina",
|
|
1854
|
+
newTours: "Nuovi tour",
|
|
1855
|
+
allTours: "Tutti i tour…",
|
|
1856
|
+
badgeNew: "Nuovo",
|
|
1857
|
+
completed: "Completato",
|
|
1858
|
+
},
|
|
1859
|
+
sync: {
|
|
1860
|
+
blocked: (count) =>
|
|
1861
|
+
`${n(count)} ${plural(count, "modifica non può essere inviata", "modifiche non possono essere inviate")} da questo dispositivo`,
|
|
1862
|
+
offline: "Offline: le modifiche vengono salvate su questo dispositivo e sincronizzate alla riconnessione",
|
|
1863
|
+
refused: "Il server ha rifiutato l’ultima sincronizzazione",
|
|
1864
|
+
syncing: "Sincronizzazione…",
|
|
1865
|
+
pending: (count) =>
|
|
1866
|
+
`${n(count)} ${plural(count, "modifica", "modifiche")} in attesa di sincronizzazione`,
|
|
1867
|
+
syncedAt: (time) => `Sincronizzato alle ${time}`,
|
|
1868
|
+
idle: "Aggiornato",
|
|
1869
|
+
syncHint: "Tocchi per sincronizzare ora",
|
|
1870
|
+
offlineHint: "offline non c’è nulla da sincronizzare",
|
|
1871
|
+
withHint: (state, hint) => `${state} — ${hint}`,
|
|
1872
|
+
scoped: (scope, state) => `${scope}: ${state}`,
|
|
1873
|
+
offlineShort: "Offline",
|
|
1874
|
+
syncingShort: "Sincronizzazione…",
|
|
1875
|
+
waitingShort: (count) => `${n(count)} in attesa`,
|
|
1876
|
+
refusedShort: "Non sincronizzato",
|
|
1877
|
+
offlineUnsaved: "Offline: le modifiche non possono essere salvate finché non si riconnette",
|
|
1878
|
+
saving: "Salvataggio…",
|
|
1879
|
+
},
|
|
1880
|
+
dev: {
|
|
1881
|
+
roleHeading: "Dev · ruolo",
|
|
1882
|
+
switchPlan: "Cambia piano",
|
|
1883
|
+
plan: (value) => `Piano: ${value}`,
|
|
1884
|
+
planHeading: "Dev · piano",
|
|
1885
|
+
backTo: (role) => `Torna a ${role}`,
|
|
1886
|
+
billingOff: "La fatturazione è disattivata in locale: i piani non cambiano nulla",
|
|
1887
|
+
},
|
|
1888
|
+
},
|
|
1804
1889
|
};
|
|
1805
1890
|
}
|
|
1806
1891
|
|
package/src/i18n/locales/zh.ts
CHANGED
|
@@ -102,8 +102,6 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
102
102
|
feedbackMenu: {
|
|
103
103
|
trigger: "发送反馈",
|
|
104
104
|
myFeedback: "我的反馈",
|
|
105
|
-
viewFeedback: "查看反馈",
|
|
106
|
-
allFeedback: "全部反馈",
|
|
107
105
|
discussion: "反馈讨论",
|
|
108
106
|
inbox: "反馈收件箱",
|
|
109
107
|
},
|
|
@@ -1615,6 +1613,9 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
1615
1613
|
processing: "您的付款正在处理中。确认后您的套餐即会生效;此页面会自动更新。",
|
|
1616
1614
|
choosePlan: "选择套餐",
|
|
1617
1615
|
updatePayment: "更新付款方式",
|
|
1616
|
+
// 0.42 (§16.7 A): for an admin who isn't the buyer.
|
|
1617
|
+
paymentFailedAskBuyer: (buyer) =>
|
|
1618
|
+
buyer ? `付款未成功。${buyer} 可以更新付款方式。` : "付款未成功。购买该订阅的管理员可以更新付款方式。",
|
|
1618
1619
|
checkAgain: "再次检查",
|
|
1619
1620
|
lockReason: "您的套餐已结束。选择套餐后即可再次进行修改。",
|
|
1620
1621
|
// As `characterCount.limitReached` ("已达到字符数上限").
|
|
@@ -1645,6 +1646,18 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
1645
1646
|
switchCredited: "抵扣后续扣款",
|
|
1646
1647
|
switchNextCharge: (date) => `下次扣款日期:${date}`,
|
|
1647
1648
|
switchConfirm: "更改套餐",
|
|
1649
|
+
// 0.42 (§16): the portal for the buyer only, the in-app cancel, the grant warning.
|
|
1650
|
+
buyerHolds: (buyer) =>
|
|
1651
|
+
buyer
|
|
1652
|
+
? `付款方式和发票由购买该订阅的 ${buyer} 管理。`
|
|
1653
|
+
: "付款方式和发票由购买该订阅的管理员管理。",
|
|
1654
|
+
cancelConfirmTitle: "取消订阅",
|
|
1655
|
+
cancelConfirmBody: (date) => `您的订阅将于 ${date} 结束。在此之前,一切照常使用。`,
|
|
1656
|
+
cancelConfirmAction: "立即取消订阅",
|
|
1657
|
+
keepSubscription: "保留订阅",
|
|
1658
|
+
grantWarningTitle: "您的免费使用权仍然有效",
|
|
1659
|
+
grantWarningBody: "您的免费使用权没有结束日期。在此期间,购买不会改变您的套餐:您将为一个不生效的套餐付费。",
|
|
1660
|
+
grantWarningAction: "仍然购买",
|
|
1648
1661
|
waitingChanges: (count) => `${n(count)} 项修改正在等待套餐`,
|
|
1649
1662
|
// "放弃", as `wizard.cancelConfirmLabel`.
|
|
1650
1663
|
discardWaiting: "放弃等待中的修改",
|
|
@@ -1710,6 +1723,70 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
|
|
|
1710
1723
|
more: "更多",
|
|
1711
1724
|
moreTitle: "更多页面",
|
|
1712
1725
|
},
|
|
1726
|
+
// 0.42.0 — docs/admin-harmonization.md §3.1: the admin area's shared words.
|
|
1727
|
+
adminArea: {
|
|
1728
|
+
title: "管理",
|
|
1729
|
+
waiting: (count) => `${n(count)} 项待处理`,
|
|
1730
|
+
forbiddenTitle: "仅限管理员",
|
|
1731
|
+
forbiddenBody: (appName) => `管理员在这里管理 ${appName}。您的账户无法打开此页面。`,
|
|
1732
|
+
forbiddenHome: "前往首页",
|
|
1733
|
+
forbiddenReviewer: "审校翻译",
|
|
1734
|
+
sections: {
|
|
1735
|
+
overview: { title: "概览", help: "一眼看清待处理的事项。" },
|
|
1736
|
+
users: { title: "用户", help: "谁拥有账户,以及每个人可以做什么。" },
|
|
1737
|
+
invitations: { title: "邀请", help: "让新成员加入的链接。" },
|
|
1738
|
+
billing: { title: "账单", help: "套餐、付款和发票。" },
|
|
1739
|
+
activity: { title: "活动", help: "管理员的操作记录,最新的在前。" },
|
|
1740
|
+
},
|
|
1741
|
+
tiles: {
|
|
1742
|
+
feedbackWaiting: "待分类",
|
|
1743
|
+
deletionRequests: "删除请求",
|
|
1744
|
+
invitationsPending: "待接受的邀请",
|
|
1745
|
+
users: "用户",
|
|
1746
|
+
usersNew: (count) => `近 7 天新增 ${n(count)} 人`,
|
|
1747
|
+
},
|
|
1748
|
+
tools: "工具",
|
|
1749
|
+
},
|
|
1750
|
+
// 0.42.0 — docs/top-bar-harmonization.md §3.1: the top bar's shared parts; "套餐" as
|
|
1751
|
+
// `billing`.
|
|
1752
|
+
topBarParts: {
|
|
1753
|
+
tours: {
|
|
1754
|
+
menu: "导览",
|
|
1755
|
+
newDot: "有新导览",
|
|
1756
|
+
thisPage: "本页",
|
|
1757
|
+
newTours: "新导览",
|
|
1758
|
+
allTours: "全部导览…",
|
|
1759
|
+
badgeNew: "新",
|
|
1760
|
+
completed: "已完成",
|
|
1761
|
+
},
|
|
1762
|
+
sync: {
|
|
1763
|
+
blocked: (count) => `${n(count)} 项修改无法从此设备发送`,
|
|
1764
|
+
offline: "离线——修改已保存在此设备上,重新连接后会同步",
|
|
1765
|
+
refused: "服务器拒绝了上一次同步",
|
|
1766
|
+
syncing: "正在同步…",
|
|
1767
|
+
pending: (count) => `${n(count)} 项修改等待同步`,
|
|
1768
|
+
syncedAt: (time) => `已于 ${time} 同步`,
|
|
1769
|
+
idle: "已是最新",
|
|
1770
|
+
syncHint: "点按立即同步",
|
|
1771
|
+
offlineHint: "离线时无可同步内容",
|
|
1772
|
+
withHint: (state, hint) => `${state}——${hint}`,
|
|
1773
|
+
scoped: (scope, state) => `${scope}:${state}`,
|
|
1774
|
+
offlineShort: "离线",
|
|
1775
|
+
syncingShort: "正在同步…",
|
|
1776
|
+
waitingShort: (count) => `${n(count)} 项等待中`,
|
|
1777
|
+
refusedShort: "未同步",
|
|
1778
|
+
offlineUnsaved: "离线——重新连接前无法保存修改",
|
|
1779
|
+
saving: "正在保存…",
|
|
1780
|
+
},
|
|
1781
|
+
dev: {
|
|
1782
|
+
roleHeading: "开发 · 角色",
|
|
1783
|
+
switchPlan: "切换套餐",
|
|
1784
|
+
plan: (value) => `套餐:${value}`,
|
|
1785
|
+
planHeading: "开发 · 套餐",
|
|
1786
|
+
backTo: (role) => `返回 ${role}`,
|
|
1787
|
+
billingOff: "本地已关闭计费:切换套餐不会改变任何内容",
|
|
1788
|
+
},
|
|
1789
|
+
},
|
|
1713
1790
|
};
|
|
1714
1791
|
}
|
|
1715
1792
|
|
package/src/i18n/review.ts
CHANGED
|
@@ -393,9 +393,28 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
|
|
|
393
393
|
// 0.39: PlanSwitchConfirm's two lines with figures (§15.2.10).
|
|
394
394
|
"billing.switchFromTo": [["{{from}}", "{{to}}"]],
|
|
395
395
|
"billing.switchNextCharge": [["{{date}}"]],
|
|
396
|
+
// 0.42 (§16): the buyer's name, or none once they are gone; the cancel's period end.
|
|
397
|
+
"billing.buyerHolds": [["{{buyer}}"], [undefined]],
|
|
398
|
+
"billing.paymentFailedAskBuyer": [["{{buyer}}"], [undefined]],
|
|
399
|
+
"billing.cancelConfirmBody": [["{{date}}"]],
|
|
396
400
|
"planChange.current": [["{{plan}}"]],
|
|
397
401
|
"planChange.changed": [["{{from}}", "{{to}}"]],
|
|
398
402
|
"planChange.set": [["{{to}}"]],
|
|
399
403
|
"planChange.untilDone": [["{{date}}"]],
|
|
400
404
|
"planChange.usageOf": [["{{used}}", "{{limit}}", "{{dimension}}"]],
|
|
405
|
+
// 0.42.0 (docs/admin-harmonization.md §3.1): the menu row's count, the 403 page's app,
|
|
406
|
+
// the users tile's new accounts.
|
|
407
|
+
"adminArea.waiting": one,
|
|
408
|
+
"adminArea.forbiddenBody": [["{{app}}"]],
|
|
409
|
+
"adminArea.tiles.usersNew": one,
|
|
410
|
+
// 0.42.0 (docs/top-bar-harmonization.md §3.1): the sync indicator's counts, its time, the
|
|
411
|
+
// state joined to its hint or to the app's scope; the dev plan and the role to go back to.
|
|
412
|
+
"topBarParts.sync.blocked": one,
|
|
413
|
+
"topBarParts.sync.pending": one,
|
|
414
|
+
"topBarParts.sync.syncedAt": [["{{time}}"]],
|
|
415
|
+
"topBarParts.sync.withHint": [["{{state}}", "{{hint}}"]],
|
|
416
|
+
"topBarParts.sync.scoped": [["{{scope}}", "{{state}}"]],
|
|
417
|
+
"topBarParts.sync.waitingShort": one,
|
|
418
|
+
"topBarParts.dev.plan": [["{{plan}}"]],
|
|
419
|
+
"topBarParts.dev.backTo": [["{{role}}"]],
|
|
401
420
|
};
|
package/src/index.ts
CHANGED
|
@@ -412,6 +412,10 @@ export type { WriteLock, WriteLockLabels, WriteLockProviderProps, WriteLockKind,
|
|
|
412
412
|
// 0.18: the parts both apps' admin rosters repeat (Kurvenschmiede 6).
|
|
413
413
|
export { RoleChip, AccountStateChip, DateMark, dateColumn, DEFAULT_ACCOUNT_STATE_LABELS, ACCOUNT_STATE_TONES } from "./components/account-chips";
|
|
414
414
|
export type { RoleChipProps, RoleDefinition, RoleVocabulary, AccountState, AccountStateLabels, AccountStateChipProps, DateMarkProps, DateColumnOptions } from "./components/account-chips";
|
|
415
|
+
// 0.42 (docs/admin-harmonization.md §2.1): the role in the account menu's header, a link
|
|
416
|
+
// to the role's tool (`RoleDefinition.href`).
|
|
417
|
+
export { AccountRoleChip } from "./components/account-chips";
|
|
418
|
+
export type { AccountRoleChipProps } from "./components/account-chips";
|
|
415
419
|
// 0.18: the cold-start notice keksdose built (#199), for every app: the corner notice
|
|
416
420
|
// that explains the wait (its framework-free watchdog is lib/server-wake).
|
|
417
421
|
export { ServerWakeNotice, useServerWakeStage, DEFAULT_SERVER_WAKE_LABELS } from "./components/server-wake";
|
|
@@ -785,6 +789,25 @@ export type {
|
|
|
785
789
|
InvitationsPanelProps,
|
|
786
790
|
} from "./admin/invitations-panel";
|
|
787
791
|
export type { AdminPerson } from "./admin/admin-parts";
|
|
792
|
+
// 0.42.0 (docs/admin-harmonization.md §3.1): the admin area's template — its words, the
|
|
793
|
+
// shared sections and the catalogue helper, the 403 page, the overview and its tiles fed
|
|
794
|
+
// by `GET /admin/attention`, and the Tools list. The menu row is `./shell`'s.
|
|
795
|
+
export { DEFAULT_ADMIN_AREA_LABELS, useAdminAreaLabels } from "./admin/admin-area-labels";
|
|
796
|
+
export type { AdminAreaLabels, AdminTileLabels, AdminSharedSection } from "./admin/admin-area-labels";
|
|
797
|
+
export { ADMIN_SECTIONS, adminSections } from "./admin/admin-sections";
|
|
798
|
+
export type { AdminSectionDefinition, AdminOwnSection, AdminSectionsOptions } from "./admin/admin-sections";
|
|
799
|
+
export { AdminForbidden } from "./admin/admin-forbidden";
|
|
800
|
+
export type { AdminForbiddenProps } from "./admin/admin-forbidden";
|
|
801
|
+
export { AdminOverview, AttentionTile, adminWaitingCount, DEFAULT_ADMIN_ATTENTION_HREFS } from "./admin/admin-overview";
|
|
802
|
+
export type {
|
|
803
|
+
AdminAttention,
|
|
804
|
+
AdminAttentionTile,
|
|
805
|
+
AdminExtraTile,
|
|
806
|
+
AdminOverviewProps,
|
|
807
|
+
AttentionTileProps,
|
|
808
|
+
} from "./admin/admin-overview";
|
|
809
|
+
export { AdminToolLinks } from "./admin/admin-tool-links";
|
|
810
|
+
export type { AdminToolLink, AdminToolLinksProps } from "./admin/admin-tool-links";
|
|
788
811
|
// 0.33.0: the operator's plan parts (docs/billing-harmonization.md §14.12).
|
|
789
812
|
export {
|
|
790
813
|
planColumn,
|
|
@@ -811,8 +834,8 @@ export { DEFAULT_BILLING_LABELS, useBillingLabels, SUBSCRIPTION_STATUSES } from
|
|
|
811
834
|
export type { BillingLabels, SubscriptionStatus } from "./billing/billing-labels";
|
|
812
835
|
export { BILLING_INTERVALS, planPrice, minorToMajor, formatPlanPrice, billingCurrencyFor } from "./billing/plan-price";
|
|
813
836
|
export type { BillingInterval, BillingCurrency, PlanIntervalPrices, PlanPrices, PlanPriceAnswer } from "./billing/plan-price";
|
|
814
|
-
export { PlanCard, PlanPicker, planRelation } from "./billing/plan-card";
|
|
815
|
-
export type { BillingPlan, PlanRelation, PlanCardProps, PlanPickerProps, PlanChoice } from "./billing/plan-card";
|
|
837
|
+
export { PlanCard, PlanPicker, GrantWarningConfirm, planRelation } from "./billing/plan-card";
|
|
838
|
+
export type { BillingPlan, PlanRelation, PlanCardProps, PlanPickerProps, PlanChoice, GrantWarningConfirmProps } from "./billing/plan-card";
|
|
816
839
|
export { SubscriptionStatusChip, SUBSCRIPTION_STATUS_TONES } from "./billing/subscription-status-chip";
|
|
817
840
|
export type { SubscriptionStatusChipProps } from "./billing/subscription-status-chip";
|
|
818
841
|
export { BillingBanner } from "./billing/billing-banner";
|
|
@@ -855,6 +878,11 @@ export type { PlanLimitToastOptions } from "./billing/plan-limit-toast";
|
|
|
855
878
|
export { PlanSwitchConfirm } from "./billing/plan-switch";
|
|
856
879
|
export type { PlanSwitchConfirmProps, PlanSwitchSide } from "./billing/plan-switch";
|
|
857
880
|
export type { PaidPrice, PlanSwitchRequest, PlanSwitchPreview } from "./billing/billing-overview";
|
|
881
|
+
// 0.42 (§16): the portal for the buyer only, the in-app cancel, the permanent-grant warning.
|
|
882
|
+
export { isPermanentGrant } from "./billing/billing-overview";
|
|
883
|
+
export type { BillingPortalAccess } from "./billing/billing-overview";
|
|
884
|
+
export { CancelSubscriptionConfirm } from "./billing/cancel-subscription";
|
|
885
|
+
export type { CancelSubscriptionConfirmProps } from "./billing/cancel-subscription";
|
|
858
886
|
// The operator's plan parts (§14.12) are admin/plan-change, in the admin section.
|
|
859
887
|
|
|
860
888
|
// ── settings ─────────────────────────────────────────────────────────────────
|