@matterdev/credit 0.1.0 → 0.2.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/AGENTS.md CHANGED
@@ -10,10 +10,13 @@ Every product Matter Development builds shows a "Developed by Matter Development
10
10
  - Astro → `import { renderCreditHTML } from "@matterdev/credit"` then `<Fragment set:html={renderCreditHTML({ source })} />`
11
11
  - Plain HTML → `<matter-credit source="…">` with `import "@matterdev/credit/element"` or the jsDelivr script
12
12
  3. Always pass `source` = the product's slug (e.g. `"optimo"`, `"pockly"`). It is how leads are attributed.
13
- 4. Leave `theme` at its default unless the design needs otherwise (`inherit` on web follows the site's text colour).
14
- 5. Electron: pass `onOpen={(url, e) => { e.preventDefault(); openExternal(url); }}`.
15
- 6. If the site has a strict CSP, allow `img-src data:` and inline styles (see README).
16
- 7. Look at the result in both light and dark mode before calling it done.
13
+ 4. Matter's own products (Optimo, Pockly, …) pass `kind="product"` so the badge reads "A product of"; client work
14
+ keeps the default "Developed by". Ask if it is unclear whose product it is.
15
+ 5. Leave `theme` at its default unless the design needs otherwise (`inherit` on web follows the site's text colour).
16
+ 6. Electron: pass `onOpen={(url, e) => { e.preventDefault(); openExternal(url); }}`.
17
+ 7. If the site has a strict CSP, allow `img-src data:` and inline styles (see README).
18
+ 8. Look at the result in both light and dark mode before calling it done.
17
19
 
18
20
  Placement conventions: website footer bottom row, centred (variant `stacked`); compact app footers or tight rows
19
- use `inline` or `mark`; French- or Arabic-language products pass `locale="fr"` / `locale="ar"`.
21
+ use `inline` or `mark`; products in another language pass its `locale`: `fr`, `ar`, `es`, `pt`, `de`, `no`, `zh`,
22
+ `ja` or `ko`.
package/README.md CHANGED
@@ -72,7 +72,7 @@ Rendered on the server: no JavaScript ships, nothing shifts when the page loads.
72
72
  ### Plain HTML
73
73
 
74
74
  ```html
75
- <script defer src="https://cdn.jsdelivr.net/npm/@matterdev/credit@0.1.0/dist/element.global.js"
75
+ <script defer src="https://cdn.jsdelivr.net/npm/@matterdev/credit@0.2.0/dist/element.global.js"
76
76
  integrity="sha384-…" crossorigin="anonymous"></script>
77
77
  <matter-credit source="client-site" variant="inline"></matter-credit>
78
78
  ```
@@ -81,7 +81,7 @@ Pin the version, and copy the `integrity` hash from the file's page on jsdelivr.
81
81
  inject script into the client's site.
82
82
 
83
83
  With a bundler, `import "@matterdev/credit/element"` registers the same tag. Attributes:
84
- `source variant theme size locale label nofollow no-animate href utm-medium utm-campaign utm-content`.
84
+ `source variant theme size locale kind label nofollow no-animate href utm-medium utm-campaign utm-content`.
85
85
  Listen for `matter-credit:open` (cancelable) to intercept the click.
86
86
 
87
87
  ## Options
@@ -92,8 +92,9 @@ Listen for `matter-credit:open` (cancelable) to intercept the click.
92
92
  | `variant` | `"stacked"` | `stacked` (label above logo), `inline` (one line), `mark` (M symbol only; label becomes a tooltip). |
93
93
  | `theme` | `"inherit"` web · `"auto"` native | See below. |
94
94
  | `size` | `"md"` | `sm` / `md` / `lg`, or the logo height in px. |
95
- | `locale` | `"en"` | `en`, `fr`, `ar` (right-to-left). |
96
- | `label` | per locale | Replaces "Developed by", in the visible text and the accessible name. |
95
+ | `locale` | `"en"` | `en`, `fr`, `ar` (right-to-left), `es`, `pt`, `de`, `no` (Bokmål), `zh` (Simplified), `ja`, `ko`. |
96
+ | `kind` | `"developed"` | `developed` ("Developed by") for client work; `product` ("A product of") for Matter's own products. |
97
+ | `label` | per locale and `kind` | Replaces the label text, in the visible text and the accessible name. |
97
98
  | `nofollow` | `false` | Adds `rel="nofollow"`. By default the link passes SEO value to matterdevelopment.com. |
98
99
  | `utm` | — | `{ medium, campaign, content, ...extra }` overrides. |
99
100
  | `animate` | `true` | Hover sheen + arrow nudge. Always off under `prefers-reduced-motion`. |
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveCredit
3
- } from "./chunk-GSANMFZ3.js";
3
+ } from "./chunk-N6BHBXMD.js";
4
4
 
5
5
  // src/core/assets.generated.ts
6
6
  var WORDMARK_MASK = "data:image/webp;base64,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";
@@ -65,6 +65,7 @@ function renderCreditMarkup(model) {
65
65
  `target="_blank"`,
66
66
  `rel="${model.rel}"`,
67
67
  `dir="${model.dir}"`,
68
+ `lang="${model.lang}"`,
68
69
  `aria-label="${escapeHtml(model.ariaLabel)}"`,
69
70
  model.title ? `title="${escapeHtml(model.title)}"` : null,
70
71
  `style="--mdc-label-size:${model.labelSize}px"`,
@@ -1,10 +1,18 @@
1
1
  // src/core/labels.ts
2
2
  var BRAND_NAME = "Matter Development";
3
3
  var LOCALES = {
4
- en: { label: "Developed by", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
5
- fr: { label: "D\xE9velopp\xE9 par", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
6
- ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" }
4
+ en: { label: "Developed by", productLabel: "A product of", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
5
+ fr: { label: "D\xE9velopp\xE9 par", productLabel: "Un produit de", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
6
+ ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", productLabel: "\u0623\u062D\u062F \u0645\u0646\u062A\u062C\u0627\u062A", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" },
7
+ es: { label: "Desarrollado por", productLabel: "Un producto de", newTab: "se abre en una pesta\xF1a nueva", opensBrowser: "se abre en tu navegador", dir: "ltr" },
8
+ pt: { label: "Desenvolvido por", productLabel: "Um produto de", newTab: "abre em uma nova aba", opensBrowser: "abre no seu navegador", dir: "ltr" },
9
+ de: { label: "Entwickelt von", productLabel: "Ein Produkt von", newTab: "\xF6ffnet in einem neuen Tab", opensBrowser: "\xF6ffnet im Browser", dir: "ltr" },
10
+ no: { label: "Utviklet av", productLabel: "Et produkt fra", newTab: "\xE5pnes i en ny fane", opensBrowser: "\xE5pnes i nettleseren", dir: "ltr" },
11
+ zh: { label: "\u5F00\u53D1\u8005", productLabel: "\u51FA\u54C1", newTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00", opensBrowser: "\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00", dir: "ltr" },
12
+ ja: { label: "\u958B\u767A", productLabel: "\u63D0\u4F9B", newTab: "\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304D\u307E\u3059", opensBrowser: "\u30D6\u30E9\u30A6\u30B6\u3067\u958B\u304D\u307E\u3059", dir: "ltr" },
13
+ ko: { label: "\uAC1C\uBC1C", productLabel: "\uC81C\uACF5", newTab: "\uC0C8 \uD0ED\uC5D0\uC11C \uC5F4\uB9BC", opensBrowser: "\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uC5F4\uB9BC", dir: "ltr" }
7
14
  };
15
+ var LOCALE_CODES = Object.keys(LOCALES);
8
16
  function localeStrings(locale) {
9
17
  return LOCALES[locale ?? "en"] ?? LOCALES.en;
10
18
  }
@@ -64,7 +72,7 @@ function resolveCredit(options = {}, platform = "web") {
64
72
  const variant = options.variant ?? "stacked";
65
73
  const theme = options.theme ?? "inherit";
66
74
  const strings = localeStrings(options.locale);
67
- const label = options.label?.trim() || strings.label;
75
+ const label = options.label?.trim() || (options.kind === "product" ? strings.productLabel : strings.label);
68
76
  const { height, label: labelSize } = sizes(variant, options.size);
69
77
  const ratio = variant === "mark" ? MARK_RATIO : WORDMARK_RATIO;
70
78
  return {
@@ -79,6 +87,7 @@ function resolveCredit(options = {}, platform = "web") {
79
87
  }),
80
88
  rel: options.nofollow ? "noopener nofollow" : "noopener",
81
89
  dir: strings.dir,
90
+ lang: options.locale && options.locale in LOCALES ? options.locale : "en",
82
91
  label: variant === "mark" ? null : label,
83
92
  ariaLabel: `${label} ${BRAND_NAME} (${platform === "native" ? strings.opensBrowser : strings.newTab})`,
84
93
  title: variant === "mark" ? `${label} ${BRAND_NAME}` : void 0,
@@ -101,6 +110,7 @@ function resolveCredit(options = {}, platform = "web") {
101
110
  export {
102
111
  BRAND_NAME,
103
112
  LOCALES,
113
+ LOCALE_CODES,
104
114
  MATTER_URL,
105
115
  normalizeSource,
106
116
  buildCreditUrl,
package/dist/element.cjs CHANGED
@@ -67,21 +67,29 @@ var EXTERNAL_ICON_PATHS = [
67
67
  "M15 3h6v6M10 14 21 3"
68
68
  ];
69
69
 
70
- // src/core/metrics.generated.ts
71
- var WORDMARK_RATIO = 4.2755;
72
- var MARK_RATIO = 1.3726;
73
-
74
70
  // src/core/labels.ts
75
71
  var BRAND_NAME = "Matter Development";
76
72
  var LOCALES = {
77
- en: { label: "Developed by", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
78
- fr: { label: "D\xE9velopp\xE9 par", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
79
- ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" }
73
+ en: { label: "Developed by", productLabel: "A product of", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
74
+ fr: { label: "D\xE9velopp\xE9 par", productLabel: "Un produit de", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
75
+ ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", productLabel: "\u0623\u062D\u062F \u0645\u0646\u062A\u062C\u0627\u062A", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" },
76
+ es: { label: "Desarrollado por", productLabel: "Un producto de", newTab: "se abre en una pesta\xF1a nueva", opensBrowser: "se abre en tu navegador", dir: "ltr" },
77
+ pt: { label: "Desenvolvido por", productLabel: "Um produto de", newTab: "abre em uma nova aba", opensBrowser: "abre no seu navegador", dir: "ltr" },
78
+ de: { label: "Entwickelt von", productLabel: "Ein Produkt von", newTab: "\xF6ffnet in einem neuen Tab", opensBrowser: "\xF6ffnet im Browser", dir: "ltr" },
79
+ no: { label: "Utviklet av", productLabel: "Et produkt fra", newTab: "\xE5pnes i en ny fane", opensBrowser: "\xE5pnes i nettleseren", dir: "ltr" },
80
+ zh: { label: "\u5F00\u53D1\u8005", productLabel: "\u51FA\u54C1", newTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00", opensBrowser: "\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00", dir: "ltr" },
81
+ ja: { label: "\u958B\u767A", productLabel: "\u63D0\u4F9B", newTab: "\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304D\u307E\u3059", opensBrowser: "\u30D6\u30E9\u30A6\u30B6\u3067\u958B\u304D\u307E\u3059", dir: "ltr" },
82
+ ko: { label: "\uAC1C\uBC1C", productLabel: "\uC81C\uACF5", newTab: "\uC0C8 \uD0ED\uC5D0\uC11C \uC5F4\uB9BC", opensBrowser: "\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uC5F4\uB9BC", dir: "ltr" }
80
83
  };
84
+ var LOCALE_CODES = Object.keys(LOCALES);
81
85
  function localeStrings(locale) {
82
86
  return LOCALES[locale ?? "en"] ?? LOCALES.en;
83
87
  }
84
88
 
89
+ // src/core/metrics.generated.ts
90
+ var WORDMARK_RATIO = 4.2755;
91
+ var MARK_RATIO = 1.3726;
92
+
85
93
  // src/core/url.ts
86
94
  var MATTER_URL = "https://matterdevelopment.com/";
87
95
  function normalizeSource(source) {
@@ -133,7 +141,7 @@ function resolveCredit(options = {}, platform = "web") {
133
141
  const variant = options.variant ?? "stacked";
134
142
  const theme = options.theme ?? "inherit";
135
143
  const strings = localeStrings(options.locale);
136
- const label = options.label?.trim() || strings.label;
144
+ const label = options.label?.trim() || (options.kind === "product" ? strings.productLabel : strings.label);
137
145
  const { height, label: labelSize } = sizes(variant, options.size);
138
146
  const ratio = variant === "mark" ? MARK_RATIO : WORDMARK_RATIO;
139
147
  return {
@@ -148,6 +156,7 @@ function resolveCredit(options = {}, platform = "web") {
148
156
  }),
149
157
  rel: options.nofollow ? "noopener nofollow" : "noopener",
150
158
  dir: strings.dir,
159
+ lang: options.locale && options.locale in LOCALES ? options.locale : "en",
151
160
  label: variant === "mark" ? null : label,
152
161
  ariaLabel: `${label} ${BRAND_NAME} (${platform === "native" ? strings.opensBrowser : strings.newTab})`,
153
162
  title: variant === "mark" ? `${label} ${BRAND_NAME}` : void 0,
@@ -189,6 +198,7 @@ function renderCreditMarkup(model) {
189
198
  `target="_blank"`,
190
199
  `rel="${model.rel}"`,
191
200
  `dir="${model.dir}"`,
201
+ `lang="${model.lang}"`,
192
202
  `aria-label="${escapeHtml(model.ariaLabel)}"`,
193
203
  model.title ? `title="${escapeHtml(model.title)}"` : null,
194
204
  `style="--mdc-label-size:${model.labelSize}px"`,
@@ -208,6 +218,7 @@ var ATTRIBUTES = [
208
218
  "theme",
209
219
  "size",
210
220
  "locale",
221
+ "kind",
211
222
  "label",
212
223
  "nofollow",
213
224
  "no-animate",
@@ -243,7 +254,8 @@ function defineMatterCredit(tag = MATTER_CREDIT_TAG) {
243
254
  variant: pick(this.getAttribute("variant"), ["stacked", "inline", "mark"]),
244
255
  theme: pick(this.getAttribute("theme"), ["inherit", "auto", "light", "dark"]),
245
256
  size: size && /^\d+(\.\d+)?$/.test(size) ? Number(size) : pick(size ?? null, ["sm", "md", "lg"]),
246
- locale: pick(this.getAttribute("locale"), ["en", "fr", "ar"]),
257
+ locale: pick(this.getAttribute("locale"), LOCALE_CODES),
258
+ kind: pick(this.getAttribute("kind"), ["developed", "product"]),
247
259
  label: attr("label"),
248
260
  nofollow: this.hasAttribute("nofollow"),
249
261
  animate: !this.hasAttribute("no-animate"),
@@ -1,9 +1,9 @@
1
- "use strict";(()=>{var w="data:image/webp;base64,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",T="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0ODIuNzIgMzUxLjY4Ij48cGF0aCBkPSJNNzYuNTQsMzQ5LjY3YzIuMzktLjcyLDQuMTUtMS40NSw1Ljg1LTIuMTcsNS4xNC0yLjE2LDEzLjAxLTUuNTQsMjAuMjgtMTIuODMsNC45My00Ljk0LDcuODQtOS45Miw5LjQ3LTEyLjc1LDAsMCwxLjcyLTIuOTksMy4yMS02LjMxLDE0LjAyLTMxLjMyLDExLjQtNzQuNjksMTEuNC03NC42OS0xLjc1LTI0LjUyLTYuNTktNDYuNTQtMTUuOTgtNzIuNTYtNC45My0xMy42Ni00LjctMTMuMTYtMTkuOTYtNDUuMjItNC44OS0xMC4zMS04LjI3LTE3LjYtMTAuNDEtMjIuNjItMS42Ni0zLjg5LTUuNC0xNC4zOS03LjU0LTIxLjE4LS41LTEuNTgtLjk5LTMuMzQtMS40Ni01LjY1LS45Ny00Ljc5LTEuMDMtOC4yNy0xLjA5LTE0LjA0LS4xLTkuMjksLjc0LTEyLjQ1LDEuMjktMTQuMjIsLjE5LS42MSwuNTktMS44NiwxLjI3LTMuMzMsNi4yMS0xMy40OSwxNC44LTE4LjA5LDI5LjIyLTE1LjYsNy44NSwxLjM1LDEyLDMuMTEsMjAuNzMsOC43OCwxMy40Nyw4Ljc3LDMwLjQ5LDI4LjQ1LDQ0Ljk0LDUyLjA1LDIuNzksNC41Niw0Ljc5LDguMDYsNi4xMiwxMC41NywyLjgsNS4yOSw0LjQ2LDkuMTQsNy42MywxNi41NSw0LjU2LDEwLjY1LDYuODQsMTUuOTcsOC4xNiwyMC40NSwuOTIsMy4xMSwyLjI3LDYuOTUsNC45OCwxNC42MiwuMTEsLjMyLC41MywxLjMxLDEuMzgsMy4yOCwxLjA3LDIuNSwxLjMxLDIuOTcsMS44LDMuMTgsMS4yLC41MSwyLjg0LS45Myw0LjM0LTIuMjMsMy4wNi0yLjYzLDYuMzEtNS4wNSw5LjMyLTcuNzMsNS41OC00Ljk3LDYuNDEtNS41Miw2Ljc4LTcuMjEsLjQyLTEuODktLjE4LTMuMTctMS45OC04LjAxLTIuODctNy43Mi0yLjM1LTYuMi0zLjU1LTEwLjAzLTQuNjMtMTQuODctMjIuNDMtNDguOC0zNS4yOS02Ny4zLTYuNS05LjM2LTEzLjgtMTcuODYtMjEuNTEtMjUuMDJDMTM2LjQxLDEwLjI1LDEyNC4wNSwzLjU0LDEwNC44OSwuNzJjLTExLjY3LTEuNzMtMjIuNTMtLjM2LTMzLjM5LDQuMi0xMC4yLDQuMjctMTYuMDgsOS44OS0yMS4yNywyMC4zNC04LjU0LDE3LjI2LTguOCwzNy4xMS0uOCw2MS43OSw0Ljk1LDE1LjMsNi43MSwxOS41OSwxNC4xNiwzNC42NywxMS42MiwyMy41OSwxNS4xMywzMS44MiwyMS4zNyw1MC40MSwyLjYxLDcuNzgsNS4xOSwxNi4yNiw1Ljc0LDE4Ljg1czIuMDYsOS4zNywzLjM1LDE1LjA4YzQuNjksMjAuNjUsNi4zOCwzNS4zNSw2LjI5LDU0LjY1LS4xMiwyNC41Ny0yLjUxLDM2LjU5LTkuNzUsNDkuMTMtMi4xOSwzLjc5LTQuNTEsNi40OS01LjEsNy4xMi00LjU5LDQuOTMtOS4yMiw2LjkzLTEwLjE0LDcuMzItLjU5LC4yNS0yLjU1LDEuMDUtNS4yNSwxLjYxLS43NywuMTYtMy41NywuNjMtNy42NiwuNi04LjczLS4wNS0xMy4wOS0xLjkyLTIwLjAxLTguNjEtOS41NS05LjIzLTEzLjI1LTIxLjUxLTE1Ljc5LTUyLjQ1LTIuMTEtMjUuNTksMy4zNS01OS4zOCwxMy41Ny04My45MSw2LjM1LTE1LjIyLDEyLjM1LTI4LjI5LDE0LjAxLTMwLjQ3LC45Ny0xLjI3LDEuNS0yLjMxLDEuNTctMy40LC4wNy0xLjE3LS4yNi0yLjE5LTMuMDItNi4yMy0yLjU0LTMuNzItMi4xNC0yLjctNS4yNC02Ljk2LTEuNjEtMi4yMS0xLjkyLTIuNzYtMi42OC0yLjg4LTEuODMtLjI4LTMuNjMsMi4zNS01Ljk2LDUuODQtNC45MSw3LjM2LTcuMzcsMTEuMDQtNy4zOCwxMS4wNy0xMC4wMywxNC45MS0xOSwzMi45OC0yMi45OCw0Ni4yNkMxLjY5LDIxNy42MSwuMTgsMjI4LjQ3LDAsMjU1LjQ2Yy0uMTcsMjkuMTksMi40Niw0NC4wMywxMS4xLDYyLjc0LDQuMDYsOC43Nyw4LjgyLDE1LjQ0LDE0Ljg3LDIwLjU1LDcuMTMsNi4wMiwxNC4xMiw4LjQ4LDE3LjcxLDkuNyw0LjAyLDEuMzYsMTcuNjQsNS43OCwzMi44NSwxLjIyWiIvPjxwYXRoIGQ9Ik0yNTcuMjQsMzI2LjU0YzcuMDItMi40NCwxNy40My04LjY1LDIxLjUxLTEyLjg1LDkuNTEtOS43NSwxNi45NS0yNS41MiwxOS44NS00Mi4wNCwyLjQ3LTE0LjIsMS41NC0zNi42My0yLjMtNTQuMjgtNC4yOS0xOS43NC0xMS42Ni0zOS42LTE3LjI5LTM5LjEtLjg1LC4wOC0xLjE2LC41Ny01LjY5LDQuMDEtMy42MiwyLjc0LTYuNjEsNC44NC04LjUsNi4xNC0xLjA2LDEuMDItMi4xMiwyLjA1LTMuMTgsMy4wNywxLjQ3LDQuMDcsMi45NCw4LjE0LDQuNDEsMTIuMjEsMy41NiwxMC43Miw0LjkxLDE1Ljc0LDcuNjYsMjguMjYsLjUyLDIuMzMsLjk5LDEwLjE5LDEuMDQsMTcuNDMsLjA5LDEwLjk2LS4yOCwxNC42My0yLjA4LDIxLjY3LTUuMTUsMTkuOTctMTEuOTEsMjguNTktMjYuMjIsMzMuMzktMTUuNjUsNS4yNy0yOS45NS0uNTUtMzcuMDktMTUuMDgtNi43NC0xMy44LTUuNC00NC43OSwyLjg0LTY0LjQyLDEwLjY0LTI1LjMyLDI3LjQ0LTQ4LjAxLDQ0LjQzLTU5Ljk1LDIuODUtMi4wMSw3LjUyLTUuMzMsMTAuMzgtNy40LDIwLjQ2LTE0Ljg1LDQ4LjQ0LTI0LjE2LDc2LjA3LTI1LjI4LDcuNDItLjI5LDEyLjgxLS45MiwxMy4zMi0xLjU0LC40NS0uNTcsMS4wNC01LjAxLDEuMy05Ljg3LC42Ni0xMS45MywuMjEtMTIuMzYtMTIuMjQtMTIuMzYtOS42MywwLTIyLjksMS4yNi0zMC44NywyLjk0LTguMDIsMS42OC0xMi44MywzLjI1LTMwLjE0LDkuODYtNy41NiwyLjg3LTI0LjI0LDExLjA3LTMzLjkzLDE2LjY3LTIwLjUxLDExLjg1LTM5Ljc5LDMwLjk5LTUzLjg4LDUzLjUyLTQuMDUsNi40My0xMi41NCwyMy43My0xMi41NCwyNS40OSwwLC41NS0uNjIsMi4zMy0xLjM4LDMuOTgtMi41Niw1LjUyLTQuNDMsMTMuNTQtNS40LDIzLjIyLS4yOSwyLjk0LS4zNSw1Ljk2LS40NywxMS45OS0uMDcsMy40NC0uMTMsNi45NSwwLDExLjU3LC4yMiw3LjQ1LC40LDEyLjcyLDIuMDUsMTkuNSwuNTksMi40NCwxLjE2LDQuMjEsMS41OCw1LjQ4LDIuNDEsNy40Miw0LjY0LDE0LjMsMTAuMzYsMjAuNjMsMy45OSw0LjQyLDguMTcsNi45LDEwLjE3LDguMDcsMy43LDIuMTYsNi45OCwzLjM3LDEwLjkxLDQuODEsMy40OSwxLjI5LDYuMjUsMS45Nyw2Ljk2LDIuMTQsLjQzLC4xLC43OSwuMTksMS4wNiwuMjUsNy44OCwxLjc2LDE0LjEzLDEuNTEsMTguMywxLjMyLDYuODktLjMyLDExLjg1LTEuNDYsMTMuMzgtMS44MywwLDAsMi45My0uNjgsNS42My0xLjYyWiIvPjxwYXRoIGQ9Ik00NDEuMzIsMzQ0Ljg3YzEzLjM4LTUuODgsMTguODMtMTAuMjIsMjYuMTUtMjAuOCw1LjU5LTguMDgsOC44Mi0xNC45OSwxMS40NS0yNC41LDQuODEtMTcuNDMsNS4xMi02MC41OSwuNTktODEuMjktNC4wNS0xOC40Ny0xMS45OC0zOS4zMi0yMC40MS01My42Ni0uOTItMS41Ni0zLjM5LTUuODEtNS41Mi05LjQyLTcuNTctMTIuODYtOS4xNC0xNy41OS0xMS44Ni0xNy40My0xLjU1LC4wOS0xLjYxLDEuNjMtNi44MSw4LjQtNC4xMiw1LjM2LTUuMTgsNS44Mi01LjgsOC4wNi0uNjgsMi40OC0uNzMsNS4wMywzLjA4LDExLjcxLDUuNzksMTAuMTcsOS43NSwxOC4wNSwxMS45NywyMy44MywxLjA1LDIuNzUsMi4yOCw1Ljg1LDIuNzEsNi44OCw0LjE1LDkuNzksOC40NywzMS40NCw5LjY1LDQ4LjMzLDIuODIsNDAuMzYtNS42LDY4LjA2LTIyLjk1LDc1LjU5LTYuODEsMi45Ni0xNy4yMiwzLjYtMjIuOTEsMS40NC0zLjU2LTEuMzUtNS45OC0yLjg2LTguMTgtNC4zOS0yLjItMS41My0xMy41NS05LjcyLTE3LjE4LTI0LjgxLS4zNy0xLjUyLS41Ni0yLjk3LS45Ni01Ljg3LTEuMTUtOC40MS0uODYtMTQuNzYtLjg2LTIyLjkxLDAtMjIuMzksLjQ1LTI2LjI5LDUuNjktNDguNTIsMi45NC0xMi40OSw5LjQ2LTMzLjE5LDEzLjUyLTQyLjg3LDEuNjMtMy44OSwzLjMtOC4xMywzLjc1LTkuNDIsLjQzLTEuMywxLjYzLTQuMDUsMi42Ni02LjEyLDcuMzctMTQuOCwxOC40LTQ0LjQxLDE5LjU4LTUyLjU0LC4zMS0yLjIsMS4yNS02LjU1LDIuMDYtOS42NSwyLjIzLTguNTgsMi4wOS00Mi4yMS0uMjEtNDkuOTQtNC44Mi0xNi4yNy0xMi41OS0yNy4xLTI0LjA3LTMzLjYyLTcuODktNC40OC0xMy43Ny01Ljg0LTI1LjQ2LTUuOS0yNC4zMS0uMTQtNDQuMTgsOS4yNS02NC4xNiwzMC4zLTE3LjA3LDE3Ljk4LTI2LjQ0LDMxLjMtMzYuNDIsNTEuNzQtNi45OSwxNC4zLTEwLDIyLjUtOS40OSwyNS45NywuMjQsMS43MywuODYsMi4xNCwzLjEzLDIuMDksNC43Mi0uMTIsMTcuNzMtMy4yMywyMC42OC00Ljk2LDIuNzctMS41OSw5Ljg3LTExLjMzLDE1LjYzLTIxLjM5LDYuMzUtMTEuMSwxNC44Ny0yMi43NywyNC4yNC0zMy4xNyw3LjA0LTcuODIsMjEuMjktMTkuMiwyNy42Ny0yMi4xLDUuMzYtMi40NCwxNC40NC0zLjg3LDIxLjA2LTMuMzQsMi45LC4yMyw1LjM4LC44Nyw3LjYxLDIuMDMsMS45OCwxLjAzLDUuMzksMy4yMSw4LjY5LDguNzksNi40OSwxMC45NSw2LjU0LDI0LjY0LDYuNDksMjguNDYtLjE3LDEzLjE2LTIuOTcsMjIuOTUtNS4zOCwzMS4xNC0zLjUsMTEuOTEtOC40LDIzLjAzLTE4LjMsNDUuMjItMy44Niw4LjY1LTYuNCwxNC45NC0xMS4zNiwyOC4yNy0uNjcsMS44Mi0yLjE2LDYuNDctMy4yOSwxMC4zNi0xLjEyLDMuODctMi42MSw4Ljk4LTMuMzIsMTEuMzEtLjY3LDIuMzItMS45Miw3LjQyLTIuNzMsMTEuMzEtLjgsMy44Ny0xLjg1LDguNTQtMi4zNSwxMC4zNi0uNSwxLjgyLTEuODMsMTAuOTMtMi45NiwyMC4yNS0zLjEsMjUuNjYtMS43OCw0NS4zNiw0LjMyLDY0LjA5LDEuNjIsNC45OCwzLjY1LDkuNDEsMy42NSw5LjQxLC4zNiwuNzMsMS4wOSwyLjEzLDIuMjEsMy45OSwyLjU1LDQuMjEsNy4yMSwxMS45MSwxNS43OSwxOS4xMSwyLjA3LDEuNzQsNS4yMSw0LjMsOS44Nyw2Ljc4LDIuNTIsMS4zNCw1LjE0LDIuNCw4LjQ5LDMuNTUsMy41NywxLjIyLDYuMzUsMS44MSw2Ljg5LDEuOTMsNS41MywxLjE4LDkuNjUsMS4wOSwxNi4yOCwuOTYsOC4xNS0uMTcsMTEuNTQtMS4wMiwxMy42My0xLjY2LDEuNTItLjQ3LDIuNjItLjg4LDMuNzItMS4zNloiLz48L3N2Zz4=";var m="#1F2A3B",S="#F3F5F7",y=`
1
+ "use strict";(()=>{var T="data:image/webp;base64,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",m="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0ODIuNzIgMzUxLjY4Ij48cGF0aCBkPSJNNzYuNTQsMzQ5LjY3YzIuMzktLjcyLDQuMTUtMS40NSw1Ljg1LTIuMTcsNS4xNC0yLjE2LDEzLjAxLTUuNTQsMjAuMjgtMTIuODMsNC45My00Ljk0LDcuODQtOS45Miw5LjQ3LTEyLjc1LDAsMCwxLjcyLTIuOTksMy4yMS02LjMxLDE0LjAyLTMxLjMyLDExLjQtNzQuNjksMTEuNC03NC42OS0xLjc1LTI0LjUyLTYuNTktNDYuNTQtMTUuOTgtNzIuNTYtNC45My0xMy42Ni00LjctMTMuMTYtMTkuOTYtNDUuMjItNC44OS0xMC4zMS04LjI3LTE3LjYtMTAuNDEtMjIuNjItMS42Ni0zLjg5LTUuNC0xNC4zOS03LjU0LTIxLjE4LS41LTEuNTgtLjk5LTMuMzQtMS40Ni01LjY1LS45Ny00Ljc5LTEuMDMtOC4yNy0xLjA5LTE0LjA0LS4xLTkuMjksLjc0LTEyLjQ1LDEuMjktMTQuMjIsLjE5LS42MSwuNTktMS44NiwxLjI3LTMuMzMsNi4yMS0xMy40OSwxNC44LTE4LjA5LDI5LjIyLTE1LjYsNy44NSwxLjM1LDEyLDMuMTEsMjAuNzMsOC43OCwxMy40Nyw4Ljc3LDMwLjQ5LDI4LjQ1LDQ0Ljk0LDUyLjA1LDIuNzksNC41Niw0Ljc5LDguMDYsNi4xMiwxMC41NywyLjgsNS4yOSw0LjQ2LDkuMTQsNy42MywxNi41NSw0LjU2LDEwLjY1LDYuODQsMTUuOTcsOC4xNiwyMC40NSwuOTIsMy4xMSwyLjI3LDYuOTUsNC45OCwxNC42MiwuMTEsLjMyLC41MywxLjMxLDEuMzgsMy4yOCwxLjA3LDIuNSwxLjMxLDIuOTcsMS44LDMuMTgsMS4yLC41MSwyLjg0LS45Myw0LjM0LTIuMjMsMy4wNi0yLjYzLDYuMzEtNS4wNSw5LjMyLTcuNzMsNS41OC00Ljk3LDYuNDEtNS41Miw2Ljc4LTcuMjEsLjQyLTEuODktLjE4LTMuMTctMS45OC04LjAxLTIuODctNy43Mi0yLjM1LTYuMi0zLjU1LTEwLjAzLTQuNjMtMTQuODctMjIuNDMtNDguOC0zNS4yOS02Ny4zLTYuNS05LjM2LTEzLjgtMTcuODYtMjEuNTEtMjUuMDJDMTM2LjQxLDEwLjI1LDEyNC4wNSwzLjU0LDEwNC44OSwuNzJjLTExLjY3LTEuNzMtMjIuNTMtLjM2LTMzLjM5LDQuMi0xMC4yLDQuMjctMTYuMDgsOS44OS0yMS4yNywyMC4zNC04LjU0LDE3LjI2LTguOCwzNy4xMS0uOCw2MS43OSw0Ljk1LDE1LjMsNi43MSwxOS41OSwxNC4xNiwzNC42NywxMS42MiwyMy41OSwxNS4xMywzMS44MiwyMS4zNyw1MC40MSwyLjYxLDcuNzgsNS4xOSwxNi4yNiw1Ljc0LDE4Ljg1czIuMDYsOS4zNywzLjM1LDE1LjA4YzQuNjksMjAuNjUsNi4zOCwzNS4zNSw2LjI5LDU0LjY1LS4xMiwyNC41Ny0yLjUxLDM2LjU5LTkuNzUsNDkuMTMtMi4xOSwzLjc5LTQuNTEsNi40OS01LjEsNy4xMi00LjU5LDQuOTMtOS4yMiw2LjkzLTEwLjE0LDcuMzItLjU5LC4yNS0yLjU1LDEuMDUtNS4yNSwxLjYxLS43NywuMTYtMy41NywuNjMtNy42NiwuNi04LjczLS4wNS0xMy4wOS0xLjkyLTIwLjAxLTguNjEtOS41NS05LjIzLTEzLjI1LTIxLjUxLTE1Ljc5LTUyLjQ1LTIuMTEtMjUuNTksMy4zNS01OS4zOCwxMy41Ny04My45MSw2LjM1LTE1LjIyLDEyLjM1LTI4LjI5LDE0LjAxLTMwLjQ3LC45Ny0xLjI3LDEuNS0yLjMxLDEuNTctMy40LC4wNy0xLjE3LS4yNi0yLjE5LTMuMDItNi4yMy0yLjU0LTMuNzItMi4xNC0yLjctNS4yNC02Ljk2LTEuNjEtMi4yMS0xLjkyLTIuNzYtMi42OC0yLjg4LTEuODMtLjI4LTMuNjMsMi4zNS01Ljk2LDUuODQtNC45MSw3LjM2LTcuMzcsMTEuMDQtNy4zOCwxMS4wNy0xMC4wMywxNC45MS0xOSwzMi45OC0yMi45OCw0Ni4yNkMxLjY5LDIxNy42MSwuMTgsMjI4LjQ3LDAsMjU1LjQ2Yy0uMTcsMjkuMTksMi40Niw0NC4wMywxMS4xLDYyLjc0LDQuMDYsOC43Nyw4LjgyLDE1LjQ0LDE0Ljg3LDIwLjU1LDcuMTMsNi4wMiwxNC4xMiw4LjQ4LDE3LjcxLDkuNyw0LjAyLDEuMzYsMTcuNjQsNS43OCwzMi44NSwxLjIyWiIvPjxwYXRoIGQ9Ik0yNTcuMjQsMzI2LjU0YzcuMDItMi40NCwxNy40My04LjY1LDIxLjUxLTEyLjg1LDkuNTEtOS43NSwxNi45NS0yNS41MiwxOS44NS00Mi4wNCwyLjQ3LTE0LjIsMS41NC0zNi42My0yLjMtNTQuMjgtNC4yOS0xOS43NC0xMS42Ni0zOS42LTE3LjI5LTM5LjEtLjg1LC4wOC0xLjE2LC41Ny01LjY5LDQuMDEtMy42MiwyLjc0LTYuNjEsNC44NC04LjUsNi4xNC0xLjA2LDEuMDItMi4xMiwyLjA1LTMuMTgsMy4wNywxLjQ3LDQuMDcsMi45NCw4LjE0LDQuNDEsMTIuMjEsMy41NiwxMC43Miw0LjkxLDE1Ljc0LDcuNjYsMjguMjYsLjUyLDIuMzMsLjk5LDEwLjE5LDEuMDQsMTcuNDMsLjA5LDEwLjk2LS4yOCwxNC42My0yLjA4LDIxLjY3LTUuMTUsMTkuOTctMTEuOTEsMjguNTktMjYuMjIsMzMuMzktMTUuNjUsNS4yNy0yOS45NS0uNTUtMzcuMDktMTUuMDgtNi43NC0xMy44LTUuNC00NC43OSwyLjg0LTY0LjQyLDEwLjY0LTI1LjMyLDI3LjQ0LTQ4LjAxLDQ0LjQzLTU5Ljk1LDIuODUtMi4wMSw3LjUyLTUuMzMsMTAuMzgtNy40LDIwLjQ2LTE0Ljg1LDQ4LjQ0LTI0LjE2LDc2LjA3LTI1LjI4LDcuNDItLjI5LDEyLjgxLS45MiwxMy4zMi0xLjU0LC40NS0uNTcsMS4wNC01LjAxLDEuMy05Ljg3LC42Ni0xMS45MywuMjEtMTIuMzYtMTIuMjQtMTIuMzYtOS42MywwLTIyLjksMS4yNi0zMC44NywyLjk0LTguMDIsMS42OC0xMi44MywzLjI1LTMwLjE0LDkuODYtNy41NiwyLjg3LTI0LjI0LDExLjA3LTMzLjkzLDE2LjY3LTIwLjUxLDExLjg1LTM5Ljc5LDMwLjk5LTUzLjg4LDUzLjUyLTQuMDUsNi40My0xMi41NCwyMy43My0xMi41NCwyNS40OSwwLC41NS0uNjIsMi4zMy0xLjM4LDMuOTgtMi41Niw1LjUyLTQuNDMsMTMuNTQtNS40LDIzLjIyLS4yOSwyLjk0LS4zNSw1Ljk2LS40NywxMS45OS0uMDcsMy40NC0uMTMsNi45NSwwLDExLjU3LC4yMiw3LjQ1LC40LDEyLjcyLDIuMDUsMTkuNSwuNTksMi40NCwxLjE2LDQuMjEsMS41OCw1LjQ4LDIuNDEsNy40Miw0LjY0LDE0LjMsMTAuMzYsMjAuNjMsMy45OSw0LjQyLDguMTcsNi45LDEwLjE3LDguMDcsMy43LDIuMTYsNi45OCwzLjM3LDEwLjkxLDQuODEsMy40OSwxLjI5LDYuMjUsMS45Nyw2Ljk2LDIuMTQsLjQzLC4xLC43OSwuMTksMS4wNiwuMjUsNy44OCwxLjc2LDE0LjEzLDEuNTEsMTguMywxLjMyLDYuODktLjMyLDExLjg1LTEuNDYsMTMuMzgtMS44MywwLDAsMi45My0uNjgsNS42My0xLjYyWiIvPjxwYXRoIGQ9Ik00NDEuMzIsMzQ0Ljg3YzEzLjM4LTUuODgsMTguODMtMTAuMjIsMjYuMTUtMjAuOCw1LjU5LTguMDgsOC44Mi0xNC45OSwxMS40NS0yNC41LDQuODEtMTcuNDMsNS4xMi02MC41OSwuNTktODEuMjktNC4wNS0xOC40Ny0xMS45OC0zOS4zMi0yMC40MS01My42Ni0uOTItMS41Ni0zLjM5LTUuODEtNS41Mi05LjQyLTcuNTctMTIuODYtOS4xNC0xNy41OS0xMS44Ni0xNy40My0xLjU1LC4wOS0xLjYxLDEuNjMtNi44MSw4LjQtNC4xMiw1LjM2LTUuMTgsNS44Mi01LjgsOC4wNi0uNjgsMi40OC0uNzMsNS4wMywzLjA4LDExLjcxLDUuNzksMTAuMTcsOS43NSwxOC4wNSwxMS45NywyMy44MywxLjA1LDIuNzUsMi4yOCw1Ljg1LDIuNzEsNi44OCw0LjE1LDkuNzksOC40NywzMS40NCw5LjY1LDQ4LjMzLDIuODIsNDAuMzYtNS42LDY4LjA2LTIyLjk1LDc1LjU5LTYuODEsMi45Ni0xNy4yMiwzLjYtMjIuOTEsMS40NC0zLjU2LTEuMzUtNS45OC0yLjg2LTguMTgtNC4zOS0yLjItMS41My0xMy41NS05LjcyLTE3LjE4LTI0LjgxLS4zNy0xLjUyLS41Ni0yLjk3LS45Ni01Ljg3LTEuMTUtOC40MS0uODYtMTQuNzYtLjg2LTIyLjkxLDAtMjIuMzksLjQ1LTI2LjI5LDUuNjktNDguNTIsMi45NC0xMi40OSw5LjQ2LTMzLjE5LDEzLjUyLTQyLjg3LDEuNjMtMy44OSwzLjMtOC4xMywzLjc1LTkuNDIsLjQzLTEuMywxLjYzLTQuMDUsMi42Ni02LjEyLDcuMzctMTQuOCwxOC40LTQ0LjQxLDE5LjU4LTUyLjU0LC4zMS0yLjIsMS4yNS02LjU1LDIuMDYtOS42NSwyLjIzLTguNTgsMi4wOS00Mi4yMS0uMjEtNDkuOTQtNC44Mi0xNi4yNy0xMi41OS0yNy4xLTI0LjA3LTMzLjYyLTcuODktNC40OC0xMy43Ny01Ljg0LTI1LjQ2LTUuOS0yNC4zMS0uMTQtNDQuMTgsOS4yNS02NC4xNiwzMC4zLTE3LjA3LDE3Ljk4LTI2LjQ0LDMxLjMtMzYuNDIsNTEuNzQtNi45OSwxNC4zLTEwLDIyLjUtOS40OSwyNS45NywuMjQsMS43MywuODYsMi4xNCwzLjEzLDIuMDksNC43Mi0uMTIsMTcuNzMtMy4yMywyMC42OC00Ljk2LDIuNzctMS41OSw5Ljg3LTExLjMzLDE1LjYzLTIxLjM5LDYuMzUtMTEuMSwxNC44Ny0yMi43NywyNC4yNC0zMy4xNyw3LjA0LTcuODIsMjEuMjktMTkuMiwyNy42Ny0yMi4xLDUuMzYtMi40NCwxNC40NC0zLjg3LDIxLjA2LTMuMzQsMi45LC4yMyw1LjM4LC44Nyw3LjYxLDIuMDMsMS45OCwxLjAzLDUuMzksMy4yMSw4LjY5LDguNzksNi40OSwxMC45NSw2LjU0LDI0LjY0LDYuNDksMjguNDYtLjE3LDEzLjE2LTIuOTcsMjIuOTUtNS4zOCwzMS4xNC0zLjUsMTEuOTEtOC40LDIzLjAzLTE4LjMsNDUuMjItMy44Niw4LjY1LTYuNCwxNC45NC0xMS4zNiwyOC4yNy0uNjcsMS44Mi0yLjE2LDYuNDctMy4yOSwxMC4zNi0xLjEyLDMuODctMi42MSw4Ljk4LTMuMzIsMTEuMzEtLjY3LDIuMzItMS45Miw3LjQyLTIuNzMsMTEuMzEtLjgsMy44Ny0xLjg1LDguNTQtMi4zNSwxMC4zNi0uNSwxLjgyLTEuODMsMTAuOTMtMi45NiwyMC4yNS0zLjEsMjUuNjYtMS43OCw0NS4zNiw0LjMyLDY0LjA5LDEuNjIsNC45OCwzLjY1LDkuNDEsMy42NSw5LjQxLC4zNiwuNzMsMS4wOSwyLjEzLDIuMjEsMy45OSwyLjU1LDQuMjEsNy4yMSwxMS45MSwxNS43OSwxOS4xMSwyLjA3LDEuNzQsNS4yMSw0LjMsOS44Nyw2Ljc4LDIuNTIsMS4zNCw1LjE0LDIuNCw4LjQ5LDMuNTUsMy41NywxLjIyLDYuMzUsMS44MSw2Ljg5LDEuOTMsNS41MywxLjE4LDkuNjUsMS4wOSwxNi4yOCwuOTYsOC4xNS0uMTcsMTEuNTQtMS4wMiwxMy42My0xLjY2LDEuNTItLjQ3LDIuNjItLjg4LDMuNzItMS4zNloiLz48L3N2Zz4=";var S="#1F2A3B",D="#F3F5F7",d=`
2
2
  .mdc.mdc{color:var(--matter-credit-color);text-decoration:none;font-family:var(--matter-credit-font,ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace)}
3
- .mdc.mdc--light{color:var(--matter-credit-color,${m})}
4
- .mdc.mdc--dark{color:var(--matter-credit-color,${S})}
5
- .mdc.mdc--auto{color:var(--matter-credit-color,${m})}
6
- @media (prefers-color-scheme:dark){.mdc.mdc--auto{color:var(--matter-credit-color,${S})}}
3
+ .mdc.mdc--light{color:var(--matter-credit-color,${S})}
4
+ .mdc.mdc--dark{color:var(--matter-credit-color,${D})}
5
+ .mdc.mdc--auto{color:var(--matter-credit-color,${S})}
6
+ @media (prefers-color-scheme:dark){.mdc.mdc--auto{color:var(--matter-credit-color,${D})}}
7
7
  .mdc{display:inline-flex;align-items:center;gap:.6em;vertical-align:middle;line-height:1;border-radius:6px;-webkit-tap-highlight-color:transparent}
8
8
  .mdc--stacked{flex-direction:column}
9
9
  .mdc--mark{gap:.35em}
@@ -12,8 +12,8 @@
12
12
  .mdc--stacked .mdc__label{margin-inline-end:-.14em}
13
13
  .mdc[dir=rtl] .mdc__label{letter-spacing:0;margin-inline-end:0;text-transform:none;font-family:var(--matter-credit-font-rtl,system-ui,sans-serif)}
14
14
  .mdc__row{display:inline-flex;align-items:center;gap:6px}
15
- .mdc__logo--wordmark{--mdc-logo:url("${w}")}
16
- .mdc__logo--mark{--mdc-logo:url("${T}")}
15
+ .mdc__logo--wordmark{--mdc-logo:url("${T}")}
16
+ .mdc__logo--mark{--mdc-logo:url("${m}")}
17
17
  .mdc__logo{display:block;flex:none;background-color:currentColor;opacity:.85;transition:opacity .2s ease;-webkit-print-color-adjust:exact;print-color-adjust:exact;-webkit-mask-image:var(--mdc-logo);mask-image:var(--mdc-logo);-webkit-mask-size:100% 100%;mask-size:100% 100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
18
18
  .mdc:hover .mdc__logo,.mdc:focus-visible .mdc__logo{opacity:1}
19
19
  .mdc__ext{display:block;flex:none;opacity:.6;transition:transform .25s ease,opacity .2s ease}
@@ -26,4 +26,4 @@
26
26
  .mdc--animate[dir=rtl]:hover .mdc__ext{transform:scaleX(-1) translate(2px,-2px)}
27
27
  }
28
28
  @media (forced-colors:active){.mdc__logo{forced-color-adjust:none;background-color:LinkText}}
29
- `.trim(),D=["M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6","M15 3h6v6M10 14 21 3"];var l="Matter Development",x={en:{label:"Developed by",newTab:"opens in a new tab",opensBrowser:"opens in your browser",dir:"ltr"},fr:{label:"D\xE9velopp\xE9 par",newTab:"s\u2019ouvre dans un nouvel onglet",opensBrowser:"s\u2019ouvre dans votre navigateur",dir:"ltr"},ar:{label:"\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629",newTab:"\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629",opensBrowser:"\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D",dir:"rtl"}};function C(t){return x[t??"en"]??x.en}var E="https://matterdevelopment.com/";function p(t){return t.trim().toLowerCase().replace(/^www\./,"").replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,100)}function I(t){try{let L=new URL(t);if(L.protocol==="https:"||L.protocol==="http:")return L}catch{}return new URL(E)}function g(t={}){let{source:L,utm:e={},variant:o,defaultMedium:M="credit_badge",href:i=E}=t,{medium:r,campaign:s,content:a,...k}=e,d=I(i),u=(c,n)=>{n&&d.searchParams.set(c,n)};u("utm_source",L?p(L):void 0),u("utm_medium",r??M),u("utm_campaign",s??"developed_by"),u("utm_content",a??o);for(let[c,n]of Object.entries(k))u(c,n);return d.toString()}var U={stacked:{sm:20,md:28,lg:36},inline:{sm:16,md:20,lg:26},mark:{sm:18,md:24,lg:32}},h={stacked:{sm:10,md:11,lg:13},inline:{sm:11,md:12,lg:14},mark:{sm:11,md:12,lg:14}},Q=t=>Math.round(t*100)/100;function b(t,L){if(typeof L=="number"&&L>0)return{height:L,label:Math.min(16,Math.max(10,Math.round(L*.42)))};let e=L==="sm"||L==="lg"?L:"md";return{height:U[t][e],label:h[t][e]}}function z(t={},L="web"){let e=t.variant??"stacked",o=t.theme??"inherit",M=C(t.locale),i=t.label?.trim()||M.label,{height:r,label:s}=b(e,t.size),a=e==="mark"?1.3726:4.2755;return{variant:e,theme:o,href:g({source:t.source,utm:t.utm,variant:e,defaultMedium:L==="native"?"app_credit":"credit_badge",href:t.href}),rel:t.nofollow?"noopener nofollow":"noopener",dir:M.dir,label:e==="mark"?null:i,ariaLabel:`${i} ${l} (${L==="native"?M.opensBrowser:M.newTab})`,title:e==="mark"?`${i} ${l}`:void 0,className:["mdc",`mdc--${e}`,`mdc--${o}`,t.animate===!1?null:"mdc--animate"].filter(Boolean).join(" "),logo:{kind:e==="mark"?"mark":"wordmark",width:Q(r*a),height:r},labelSize:s,iconSize:Math.max(10,Math.round(e==="stacked"?r*.46:s))}}var Y={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function N(t){return t.replace(/[&<>"']/g,L=>Y[L])}function A(t){let L=D.map(e=>`<path d="${e}"/>`).join("");return`<svg class="mdc__ext" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${L}</svg>`}function O(t){let L=[`class="${t.className}"`,`href="${N(t.href)}"`,'target="_blank"',`rel="${t.rel}"`,`dir="${t.dir}"`,`aria-label="${N(t.ariaLabel)}"`,t.title?`title="${N(t.title)}"`:null,`style="--mdc-label-size:${t.labelSize}px"`,'data-matter-credit=""'].filter(Boolean).join(" "),e=t.label?`<span class="mdc__label" aria-hidden="true">${N(t.label)}</span>`:"",o=`<span class="mdc__logo mdc__logo--${t.logo.kind}" aria-hidden="true" style="width:${t.logo.width}px;height:${t.logo.height}px"></span>`;return`<a ${L}>${e}<span class="mdc__row">${o}${A(t.iconSize)}</span></a>`}var f="matter-credit",v="matter-credit:open",R=["source","variant","theme","size","locale","label","nofollow","no-animate","href","utm-medium","utm-campaign","utm-content"];function j(t,L){return L.includes(t)?t:void 0}function B(t=f){if(typeof window>"u"||typeof customElements>"u"||customElements.get(t))return;class L extends HTMLElement{constructor(){super(...arguments);this.root=this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.isConnected&&this.render()}render(){let M=s=>this.getAttribute(s)??void 0,i=M("size"),r=z({source:M("source")??(location.hostname||void 0),variant:j(this.getAttribute("variant"),["stacked","inline","mark"]),theme:j(this.getAttribute("theme"),["inherit","auto","light","dark"]),size:i&&/^\d+(\.\d+)?$/.test(i)?Number(i):j(i??null,["sm","md","lg"]),locale:j(this.getAttribute("locale"),["en","fr","ar"]),label:M("label"),nofollow:this.hasAttribute("nofollow"),animate:!this.hasAttribute("no-animate"),href:M("href"),utm:{medium:M("utm-medium"),campaign:M("utm-campaign"),content:M("utm-content")}});this.root.innerHTML=`<style>:host{display:inline-block}:host([hidden]){display:none}${y}</style>${O(r)}`,this.root.querySelector("a")?.addEventListener("click",s=>{this.dispatchEvent(new CustomEvent(v,{detail:{url:r.href},cancelable:!0,bubbles:!0,composed:!0}))||s.preventDefault()})}}L.observedAttributes=R,customElements.define(t,L)}B();})();
29
+ `.trim(),C=["M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6","M15 3h6v6M10 14 21 3"];var y="Matter Development",n={en:{label:"Developed by",productLabel:"A product of",newTab:"opens in a new tab",opensBrowser:"opens in your browser",dir:"ltr"},fr:{label:"D\xE9velopp\xE9 par",productLabel:"Un produit de",newTab:"s\u2019ouvre dans un nouvel onglet",opensBrowser:"s\u2019ouvre dans votre navigateur",dir:"ltr"},ar:{label:"\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629",productLabel:"\u0623\u062D\u062F \u0645\u0646\u062A\u062C\u0627\u062A",newTab:"\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629",opensBrowser:"\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D",dir:"rtl"},es:{label:"Desarrollado por",productLabel:"Un producto de",newTab:"se abre en una pesta\xF1a nueva",opensBrowser:"se abre en tu navegador",dir:"ltr"},pt:{label:"Desenvolvido por",productLabel:"Um produto de",newTab:"abre em uma nova aba",opensBrowser:"abre no seu navegador",dir:"ltr"},de:{label:"Entwickelt von",productLabel:"Ein Produkt von",newTab:"\xF6ffnet in einem neuen Tab",opensBrowser:"\xF6ffnet im Browser",dir:"ltr"},no:{label:"Utviklet av",productLabel:"Et produkt fra",newTab:"\xE5pnes i en ny fane",opensBrowser:"\xE5pnes i nettleseren",dir:"ltr"},zh:{label:"\u5F00\u53D1\u8005",productLabel:"\u51FA\u54C1",newTab:"\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00",opensBrowser:"\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00",dir:"ltr"},ja:{label:"\u958B\u767A",productLabel:"\u63D0\u4F9B",newTab:"\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304D\u307E\u3059",opensBrowser:"\u30D6\u30E9\u30A6\u30B6\u3067\u958B\u304D\u307E\u3059",dir:"ltr"},ko:{label:"\uAC1C\uBC1C",productLabel:"\uC81C\uACF5",newTab:"\uC0C8 \uD0ED\uC5D0\uC11C \uC5F4\uB9BC",opensBrowser:"\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uC5F4\uB9BC",dir:"ltr"}},x=Object.keys(n);function E(t){return n[t??"en"]??n.en}var g="https://matterdevelopment.com/";function I(t){return t.trim().toLowerCase().replace(/^www\./,"").replace(/[^a-z0-9._-]+/g,"-").replace(/^-+|-+$/g,"").slice(0,100)}function b(t){try{let e=new URL(t);if(e.protocol==="https:"||e.protocol==="http:")return e}catch{}return new URL(g)}function z(t={}){let{source:e,utm:L={},variant:s,defaultMedium:r="credit_badge",href:i=g}=t,{medium:M,campaign:o,content:j,...k}=L,w=b(i),a=(l,N)=>{N&&w.searchParams.set(l,N)};a("utm_source",e?I(e):void 0),a("utm_medium",M??r),a("utm_campaign",o??"developed_by"),a("utm_content",j??s);for(let[l,N]of Object.entries(k))a(l,N);return w.toString()}var U={stacked:{sm:20,md:28,lg:36},inline:{sm:16,md:20,lg:26},mark:{sm:18,md:24,lg:32}},h={stacked:{sm:10,md:11,lg:13},inline:{sm:11,md:12,lg:14},mark:{sm:11,md:12,lg:14}},Q=t=>Math.round(t*100)/100;function A(t,e){if(typeof e=="number"&&e>0)return{height:e,label:Math.min(16,Math.max(10,Math.round(e*.42)))};let L=e==="sm"||e==="lg"?e:"md";return{height:U[t][L],label:h[t][L]}}function p(t={},e="web"){let L=t.variant??"stacked",s=t.theme??"inherit",r=E(t.locale),i=t.label?.trim()||(t.kind==="product"?r.productLabel:r.label),{height:M,label:o}=A(L,t.size),j=L==="mark"?1.3726:4.2755;return{variant:L,theme:s,href:z({source:t.source,utm:t.utm,variant:L,defaultMedium:e==="native"?"app_credit":"credit_badge",href:t.href}),rel:t.nofollow?"noopener nofollow":"noopener",dir:r.dir,lang:t.locale&&t.locale in n?t.locale:"en",label:L==="mark"?null:i,ariaLabel:`${i} ${y} (${e==="native"?r.opensBrowser:r.newTab})`,title:L==="mark"?`${i} ${y}`:void 0,className:["mdc",`mdc--${L}`,`mdc--${s}`,t.animate===!1?null:"mdc--animate"].filter(Boolean).join(" "),logo:{kind:L==="mark"?"mark":"wordmark",width:Q(M*j),height:M},labelSize:o,iconSize:Math.max(10,Math.round(L==="stacked"?M*.46:o))}}var Y={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"};function c(t){return t.replace(/[&<>"']/g,e=>Y[e])}function f(t){let e=C.map(L=>`<path d="${L}"/>`).join("");return`<svg class="mdc__ext" width="${t}" height="${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">${e}</svg>`}function O(t){let e=[`class="${t.className}"`,`href="${c(t.href)}"`,'target="_blank"',`rel="${t.rel}"`,`dir="${t.dir}"`,`lang="${t.lang}"`,`aria-label="${c(t.ariaLabel)}"`,t.title?`title="${c(t.title)}"`:null,`style="--mdc-label-size:${t.labelSize}px"`,'data-matter-credit=""'].filter(Boolean).join(" "),L=t.label?`<span class="mdc__label" aria-hidden="true">${c(t.label)}</span>`:"",s=`<span class="mdc__logo mdc__logo--${t.logo.kind}" aria-hidden="true" style="width:${t.logo.width}px;height:${t.logo.height}px"></span>`;return`<a ${e}>${L}<span class="mdc__row">${s}${f(t.iconSize)}</span></a>`}var v="matter-credit",B="matter-credit:open",R=["source","variant","theme","size","locale","kind","label","nofollow","no-animate","href","utm-medium","utm-campaign","utm-content"];function u(t,e){return e.includes(t)?t:void 0}function J(t=v){if(typeof window>"u"||typeof customElements>"u"||customElements.get(t))return;class e extends HTMLElement{constructor(){super(...arguments);this.root=this.attachShadow({mode:"open"})}connectedCallback(){this.render()}attributeChangedCallback(){this.isConnected&&this.render()}render(){let r=o=>this.getAttribute(o)??void 0,i=r("size"),M=p({source:r("source")??(location.hostname||void 0),variant:u(this.getAttribute("variant"),["stacked","inline","mark"]),theme:u(this.getAttribute("theme"),["inherit","auto","light","dark"]),size:i&&/^\d+(\.\d+)?$/.test(i)?Number(i):u(i??null,["sm","md","lg"]),locale:u(this.getAttribute("locale"),x),kind:u(this.getAttribute("kind"),["developed","product"]),label:r("label"),nofollow:this.hasAttribute("nofollow"),animate:!this.hasAttribute("no-animate"),href:r("href"),utm:{medium:r("utm-medium"),campaign:r("utm-campaign"),content:r("utm-content")}});this.root.innerHTML=`<style>:host{display:inline-block}:host([hidden]){display:none}${d}</style>${O(M)}`,this.root.querySelector("a")?.addEventListener("click",o=>{this.dispatchEvent(new CustomEvent(B,{detail:{url:M.href},cancelable:!0,bubbles:!0,composed:!0}))||o.preventDefault()})}}e.observedAttributes=R,customElements.define(t,e)}J();})();
package/dist/element.js CHANGED
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  CREDIT_CSS,
3
3
  renderCreditMarkup
4
- } from "./chunk-HMYCJLA7.js";
4
+ } from "./chunk-E2CTYJ6I.js";
5
5
  import {
6
+ LOCALE_CODES,
6
7
  resolveCredit
7
- } from "./chunk-GSANMFZ3.js";
8
+ } from "./chunk-N6BHBXMD.js";
8
9
 
9
10
  // src/element/index.ts
10
11
  var MATTER_CREDIT_TAG = "matter-credit";
@@ -15,6 +16,7 @@ var ATTRIBUTES = [
15
16
  "theme",
16
17
  "size",
17
18
  "locale",
19
+ "kind",
18
20
  "label",
19
21
  "nofollow",
20
22
  "no-animate",
@@ -50,7 +52,8 @@ function defineMatterCredit(tag = MATTER_CREDIT_TAG) {
50
52
  variant: pick(this.getAttribute("variant"), ["stacked", "inline", "mark"]),
51
53
  theme: pick(this.getAttribute("theme"), ["inherit", "auto", "light", "dark"]),
52
54
  size: size && /^\d+(\.\d+)?$/.test(size) ? Number(size) : pick(size ?? null, ["sm", "md", "lg"]),
53
- locale: pick(this.getAttribute("locale"), ["en", "fr", "ar"]),
55
+ locale: pick(this.getAttribute("locale"), LOCALE_CODES),
56
+ kind: pick(this.getAttribute("kind"), ["developed", "product"]),
54
57
  label: attr("label"),
55
58
  nofollow: this.hasAttribute("nofollow"),
56
59
  animate: !this.hasAttribute("no-animate"),
package/dist/index.cjs CHANGED
@@ -23,6 +23,7 @@ __export(core_exports, {
23
23
  BRAND_NAME: () => BRAND_NAME,
24
24
  CREDIT_CSS: () => CREDIT_CSS,
25
25
  LOCALES: () => LOCALES,
26
+ LOCALE_CODES: () => LOCALE_CODES,
26
27
  MATTER_ORGANIZATION: () => MATTER_ORGANIZATION,
27
28
  MATTER_URL: () => MATTER_URL,
28
29
  buildCreditUrl: () => buildCreditUrl,
@@ -39,10 +40,18 @@ module.exports = __toCommonJS(core_exports);
39
40
  // src/core/labels.ts
40
41
  var BRAND_NAME = "Matter Development";
41
42
  var LOCALES = {
42
- en: { label: "Developed by", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
43
- fr: { label: "D\xE9velopp\xE9 par", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
44
- ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" }
43
+ en: { label: "Developed by", productLabel: "A product of", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
44
+ fr: { label: "D\xE9velopp\xE9 par", productLabel: "Un produit de", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
45
+ ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", productLabel: "\u0623\u062D\u062F \u0645\u0646\u062A\u062C\u0627\u062A", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" },
46
+ es: { label: "Desarrollado por", productLabel: "Un producto de", newTab: "se abre en una pesta\xF1a nueva", opensBrowser: "se abre en tu navegador", dir: "ltr" },
47
+ pt: { label: "Desenvolvido por", productLabel: "Um produto de", newTab: "abre em uma nova aba", opensBrowser: "abre no seu navegador", dir: "ltr" },
48
+ de: { label: "Entwickelt von", productLabel: "Ein Produkt von", newTab: "\xF6ffnet in einem neuen Tab", opensBrowser: "\xF6ffnet im Browser", dir: "ltr" },
49
+ no: { label: "Utviklet av", productLabel: "Et produkt fra", newTab: "\xE5pnes i en ny fane", opensBrowser: "\xE5pnes i nettleseren", dir: "ltr" },
50
+ zh: { label: "\u5F00\u53D1\u8005", productLabel: "\u51FA\u54C1", newTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00", opensBrowser: "\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00", dir: "ltr" },
51
+ ja: { label: "\u958B\u767A", productLabel: "\u63D0\u4F9B", newTab: "\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304D\u307E\u3059", opensBrowser: "\u30D6\u30E9\u30A6\u30B6\u3067\u958B\u304D\u307E\u3059", dir: "ltr" },
52
+ ko: { label: "\uAC1C\uBC1C", productLabel: "\uC81C\uACF5", newTab: "\uC0C8 \uD0ED\uC5D0\uC11C \uC5F4\uB9BC", opensBrowser: "\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uC5F4\uB9BC", dir: "ltr" }
45
53
  };
54
+ var LOCALE_CODES = Object.keys(LOCALES);
46
55
  function localeStrings(locale) {
47
56
  return LOCALES[locale ?? "en"] ?? LOCALES.en;
48
57
  }
@@ -102,7 +111,7 @@ function resolveCredit(options = {}, platform = "web") {
102
111
  const variant = options.variant ?? "stacked";
103
112
  const theme = options.theme ?? "inherit";
104
113
  const strings = localeStrings(options.locale);
105
- const label = options.label?.trim() || strings.label;
114
+ const label = options.label?.trim() || (options.kind === "product" ? strings.productLabel : strings.label);
106
115
  const { height, label: labelSize } = sizes(variant, options.size);
107
116
  const ratio = variant === "mark" ? MARK_RATIO : WORDMARK_RATIO;
108
117
  return {
@@ -117,6 +126,7 @@ function resolveCredit(options = {}, platform = "web") {
117
126
  }),
118
127
  rel: options.nofollow ? "noopener nofollow" : "noopener",
119
128
  dir: strings.dir,
129
+ lang: options.locale && options.locale in LOCALES ? options.locale : "en",
120
130
  label: variant === "mark" ? null : label,
121
131
  ariaLabel: `${label} ${BRAND_NAME} (${platform === "native" ? strings.opensBrowser : strings.newTab})`,
122
132
  title: variant === "mark" ? `${label} ${BRAND_NAME}` : void 0,
@@ -199,6 +209,7 @@ function renderCreditMarkup(model) {
199
209
  `target="_blank"`,
200
210
  `rel="${model.rel}"`,
201
211
  `dir="${model.dir}"`,
212
+ `lang="${model.lang}"`,
202
213
  `aria-label="${escapeHtml(model.ariaLabel)}"`,
203
214
  model.title ? `title="${escapeHtml(model.title)}"` : null,
204
215
  `style="--mdc-label-size:${model.labelSize}px"`,
@@ -238,6 +249,7 @@ function creatorJsonLdScript(options) {
238
249
  BRAND_NAME,
239
250
  CREDIT_CSS,
240
251
  LOCALES,
252
+ LOCALE_CODES,
241
253
  MATTER_ORGANIZATION,
242
254
  MATTER_URL,
243
255
  buildCreditUrl,
package/dist/index.d.cts CHANGED
@@ -1,16 +1,23 @@
1
- import { C as CreditLocale, a as CreditVariant, b as CreditTheme, c as CreditOptions } from './url-DWglt3C7.cjs';
2
- export { B as BuildCreditUrlOptions, d as CreditSize, e as CreditUtm, M as MATTER_URL, f as buildCreditUrl, n as normalizeSource } from './url-DWglt3C7.cjs';
1
+ import { C as CreditLocale, a as CreditVariant, b as CreditTheme, c as CreditOptions } from './url-lHz60pDq.cjs';
2
+ export { B as BuildCreditUrlOptions, d as CreditKind, e as CreditSize, f as CreditUtm, M as MATTER_URL, g as buildCreditUrl, n as normalizeSource } from './url-lHz60pDq.cjs';
3
3
 
4
4
  declare const BRAND_NAME = "Matter Development";
5
5
  interface LocaleStrings {
6
6
  label: string;
7
+ /** Label for `kind: "product"`, on Matter's own products. */
8
+ productLabel: string;
7
9
  /** Appended to the accessible name: the link opens a new tab. */
8
10
  newTab: string;
9
11
  /** Same, for apps: the link leaves the app for the browser. */
10
12
  opensBrowser: string;
11
13
  dir: "ltr" | "rtl";
12
14
  }
15
+ /**
16
+ * The label always sits before the logo, so Chinese, Japanese and Korean use a
17
+ * caption-style noun ("Developer:") rather than their name-first "X 开发" order.
18
+ */
13
19
  declare const LOCALES: Record<CreditLocale, LocaleStrings>;
20
+ declare const LOCALE_CODES: CreditLocale[];
14
21
 
15
22
  /** Everything a renderer needs, resolved once so React, HTML and the custom element can't drift. */
16
23
  interface CreditModel {
@@ -19,6 +26,8 @@ interface CreditModel {
19
26
  href: string;
20
27
  rel: string;
21
28
  dir: "ltr" | "rtl";
29
+ /** BCP 47 tag, so browsers pick the right CJK glyphs and screen readers the right voice. */
30
+ lang: CreditLocale;
22
31
  /** Visible text; `null` for the `mark` variant, which shows it as a tooltip instead. */
23
32
  label: string | null;
24
33
  ariaLabel: string;
@@ -90,4 +99,4 @@ declare function creatorJsonLd({ name, url, type }: CreatorJsonLdOptions): {
90
99
  declare function serializeJsonLd(data: unknown): string;
91
100
  declare function creatorJsonLdScript(options: CreatorJsonLdOptions): string;
92
101
 
93
- export { BRAND_NAME, CREDIT_CSS, type CreatorJsonLdOptions, CreditLocale, type CreditModel, CreditOptions, type CreditPlatform, CreditTheme, CreditVariant, LOCALES, MATTER_ORGANIZATION, creatorJsonLd, creatorJsonLdScript, renderCreditHTML, renderCreditMarkup, resolveCredit, serializeJsonLd };
102
+ export { BRAND_NAME, CREDIT_CSS, type CreatorJsonLdOptions, CreditLocale, type CreditModel, CreditOptions, type CreditPlatform, CreditTheme, CreditVariant, LOCALES, LOCALE_CODES, MATTER_ORGANIZATION, creatorJsonLd, creatorJsonLdScript, renderCreditHTML, renderCreditMarkup, resolveCredit, serializeJsonLd };
package/dist/index.d.ts CHANGED
@@ -1,16 +1,23 @@
1
- import { C as CreditLocale, a as CreditVariant, b as CreditTheme, c as CreditOptions } from './url-DWglt3C7.js';
2
- export { B as BuildCreditUrlOptions, d as CreditSize, e as CreditUtm, M as MATTER_URL, f as buildCreditUrl, n as normalizeSource } from './url-DWglt3C7.js';
1
+ import { C as CreditLocale, a as CreditVariant, b as CreditTheme, c as CreditOptions } from './url-lHz60pDq.js';
2
+ export { B as BuildCreditUrlOptions, d as CreditKind, e as CreditSize, f as CreditUtm, M as MATTER_URL, g as buildCreditUrl, n as normalizeSource } from './url-lHz60pDq.js';
3
3
 
4
4
  declare const BRAND_NAME = "Matter Development";
5
5
  interface LocaleStrings {
6
6
  label: string;
7
+ /** Label for `kind: "product"`, on Matter's own products. */
8
+ productLabel: string;
7
9
  /** Appended to the accessible name: the link opens a new tab. */
8
10
  newTab: string;
9
11
  /** Same, for apps: the link leaves the app for the browser. */
10
12
  opensBrowser: string;
11
13
  dir: "ltr" | "rtl";
12
14
  }
15
+ /**
16
+ * The label always sits before the logo, so Chinese, Japanese and Korean use a
17
+ * caption-style noun ("Developer:") rather than their name-first "X 开发" order.
18
+ */
13
19
  declare const LOCALES: Record<CreditLocale, LocaleStrings>;
20
+ declare const LOCALE_CODES: CreditLocale[];
14
21
 
15
22
  /** Everything a renderer needs, resolved once so React, HTML and the custom element can't drift. */
16
23
  interface CreditModel {
@@ -19,6 +26,8 @@ interface CreditModel {
19
26
  href: string;
20
27
  rel: string;
21
28
  dir: "ltr" | "rtl";
29
+ /** BCP 47 tag, so browsers pick the right CJK glyphs and screen readers the right voice. */
30
+ lang: CreditLocale;
22
31
  /** Visible text; `null` for the `mark` variant, which shows it as a tooltip instead. */
23
32
  label: string | null;
24
33
  ariaLabel: string;
@@ -90,4 +99,4 @@ declare function creatorJsonLd({ name, url, type }: CreatorJsonLdOptions): {
90
99
  declare function serializeJsonLd(data: unknown): string;
91
100
  declare function creatorJsonLdScript(options: CreatorJsonLdOptions): string;
92
101
 
93
- export { BRAND_NAME, CREDIT_CSS, type CreatorJsonLdOptions, CreditLocale, type CreditModel, CreditOptions, type CreditPlatform, CreditTheme, CreditVariant, LOCALES, MATTER_ORGANIZATION, creatorJsonLd, creatorJsonLdScript, renderCreditHTML, renderCreditMarkup, resolveCredit, serializeJsonLd };
102
+ export { BRAND_NAME, CREDIT_CSS, type CreatorJsonLdOptions, CreditLocale, type CreditModel, CreditOptions, type CreditPlatform, CreditTheme, CreditVariant, LOCALES, LOCALE_CODES, MATTER_ORGANIZATION, creatorJsonLd, creatorJsonLdScript, renderCreditHTML, renderCreditMarkup, resolveCredit, serializeJsonLd };
package/dist/index.js CHANGED
@@ -2,15 +2,16 @@ import {
2
2
  CREDIT_CSS,
3
3
  renderCreditHTML,
4
4
  renderCreditMarkup
5
- } from "./chunk-HMYCJLA7.js";
5
+ } from "./chunk-E2CTYJ6I.js";
6
6
  import {
7
7
  BRAND_NAME,
8
8
  LOCALES,
9
+ LOCALE_CODES,
9
10
  MATTER_URL,
10
11
  buildCreditUrl,
11
12
  normalizeSource,
12
13
  resolveCredit
13
- } from "./chunk-GSANMFZ3.js";
14
+ } from "./chunk-N6BHBXMD.js";
14
15
 
15
16
  // src/core/jsonld.ts
16
17
  var MATTER_ORGANIZATION = {
@@ -37,6 +38,7 @@ export {
37
38
  BRAND_NAME,
38
39
  CREDIT_CSS,
39
40
  LOCALES,
41
+ LOCALE_CODES,
40
42
  MATTER_ORGANIZATION,
41
43
  MATTER_URL,
42
44
  buildCreditUrl,
package/dist/native.cjs CHANGED
@@ -33,10 +33,18 @@ var MARK_RATIO = 1.3726;
33
33
  // src/core/labels.ts
34
34
  var BRAND_NAME = "Matter Development";
35
35
  var LOCALES = {
36
- en: { label: "Developed by", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
37
- fr: { label: "D\xE9velopp\xE9 par", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
38
- ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" }
36
+ en: { label: "Developed by", productLabel: "A product of", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
37
+ fr: { label: "D\xE9velopp\xE9 par", productLabel: "Un produit de", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
38
+ ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", productLabel: "\u0623\u062D\u062F \u0645\u0646\u062A\u062C\u0627\u062A", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" },
39
+ es: { label: "Desarrollado por", productLabel: "Un producto de", newTab: "se abre en una pesta\xF1a nueva", opensBrowser: "se abre en tu navegador", dir: "ltr" },
40
+ pt: { label: "Desenvolvido por", productLabel: "Um produto de", newTab: "abre em uma nova aba", opensBrowser: "abre no seu navegador", dir: "ltr" },
41
+ de: { label: "Entwickelt von", productLabel: "Ein Produkt von", newTab: "\xF6ffnet in einem neuen Tab", opensBrowser: "\xF6ffnet im Browser", dir: "ltr" },
42
+ no: { label: "Utviklet av", productLabel: "Et produkt fra", newTab: "\xE5pnes i en ny fane", opensBrowser: "\xE5pnes i nettleseren", dir: "ltr" },
43
+ zh: { label: "\u5F00\u53D1\u8005", productLabel: "\u51FA\u54C1", newTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00", opensBrowser: "\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00", dir: "ltr" },
44
+ ja: { label: "\u958B\u767A", productLabel: "\u63D0\u4F9B", newTab: "\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304D\u307E\u3059", opensBrowser: "\u30D6\u30E9\u30A6\u30B6\u3067\u958B\u304D\u307E\u3059", dir: "ltr" },
45
+ ko: { label: "\uAC1C\uBC1C", productLabel: "\uC81C\uACF5", newTab: "\uC0C8 \uD0ED\uC5D0\uC11C \uC5F4\uB9BC", opensBrowser: "\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uC5F4\uB9BC", dir: "ltr" }
39
46
  };
47
+ var LOCALE_CODES = Object.keys(LOCALES);
40
48
  function localeStrings(locale) {
41
49
  return LOCALES[locale ?? "en"] ?? LOCALES.en;
42
50
  }
@@ -92,7 +100,7 @@ function resolveCredit(options = {}, platform = "web") {
92
100
  const variant = options.variant ?? "stacked";
93
101
  const theme = options.theme ?? "inherit";
94
102
  const strings = localeStrings(options.locale);
95
- const label = options.label?.trim() || strings.label;
103
+ const label = options.label?.trim() || (options.kind === "product" ? strings.productLabel : strings.label);
96
104
  const { height, label: labelSize } = sizes(variant, options.size);
97
105
  const ratio = variant === "mark" ? MARK_RATIO : WORDMARK_RATIO;
98
106
  return {
@@ -107,6 +115,7 @@ function resolveCredit(options = {}, platform = "web") {
107
115
  }),
108
116
  rel: options.nofollow ? "noopener nofollow" : "noopener",
109
117
  dir: strings.dir,
118
+ lang: options.locale && options.locale in LOCALES ? options.locale : "en",
110
119
  label: variant === "mark" ? null : label,
111
120
  ariaLabel: `${label} ${BRAND_NAME} (${platform === "native" ? strings.opensBrowser : strings.newTab})`,
112
121
  title: variant === "mark" ? `${label} ${BRAND_NAME}` : void 0,
package/dist/native.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { StyleProp, ViewStyle } from 'react-native';
3
- import { c as CreditOptions } from './url-DWglt3C7.cjs';
4
- export { C as CreditLocale, d as CreditSize, b as CreditTheme, e as CreditUtm, a as CreditVariant, f as buildCreditUrl } from './url-DWglt3C7.cjs';
3
+ import { c as CreditOptions } from './url-lHz60pDq.cjs';
4
+ export { C as CreditLocale, e as CreditSize, b as CreditTheme, f as CreditUtm, a as CreditVariant, g as buildCreditUrl } from './url-lHz60pDq.cjs';
5
5
 
6
6
  interface MatterCreditProps extends Omit<CreditOptions, "animate" | "source"> {
7
7
  /** App slug, e.g. `"optimo"`. Required: an app has no hostname to fall back on. */
package/dist/native.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as react from 'react';
2
2
  import { StyleProp, ViewStyle } from 'react-native';
3
- import { c as CreditOptions } from './url-DWglt3C7.js';
4
- export { C as CreditLocale, d as CreditSize, b as CreditTheme, e as CreditUtm, a as CreditVariant, f as buildCreditUrl } from './url-DWglt3C7.js';
3
+ import { c as CreditOptions } from './url-lHz60pDq.js';
4
+ export { C as CreditLocale, e as CreditSize, b as CreditTheme, f as CreditUtm, a as CreditVariant, g as buildCreditUrl } from './url-lHz60pDq.js';
5
5
 
6
6
  interface MatterCreditProps extends Omit<CreditOptions, "animate" | "source"> {
7
7
  /** App slug, e.g. `"optimo"`. Required: an app has no hostname to fall back on. */
package/dist/native.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildCreditUrl,
3
3
  resolveCredit
4
- } from "./chunk-GSANMFZ3.js";
4
+ } from "./chunk-N6BHBXMD.js";
5
5
 
6
6
  // src/native/index.tsx
7
7
  import {
package/dist/react.cjs CHANGED
@@ -74,10 +74,18 @@ var EXTERNAL_ICON_PATHS = [
74
74
  // src/core/labels.ts
75
75
  var BRAND_NAME = "Matter Development";
76
76
  var LOCALES = {
77
- en: { label: "Developed by", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
78
- fr: { label: "D\xE9velopp\xE9 par", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
79
- ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" }
77
+ en: { label: "Developed by", productLabel: "A product of", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
78
+ fr: { label: "D\xE9velopp\xE9 par", productLabel: "Un produit de", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
79
+ ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", productLabel: "\u0623\u062D\u062F \u0645\u0646\u062A\u062C\u0627\u062A", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" },
80
+ es: { label: "Desarrollado por", productLabel: "Un producto de", newTab: "se abre en una pesta\xF1a nueva", opensBrowser: "se abre en tu navegador", dir: "ltr" },
81
+ pt: { label: "Desenvolvido por", productLabel: "Um produto de", newTab: "abre em uma nova aba", opensBrowser: "abre no seu navegador", dir: "ltr" },
82
+ de: { label: "Entwickelt von", productLabel: "Ein Produkt von", newTab: "\xF6ffnet in einem neuen Tab", opensBrowser: "\xF6ffnet im Browser", dir: "ltr" },
83
+ no: { label: "Utviklet av", productLabel: "Et produkt fra", newTab: "\xE5pnes i en ny fane", opensBrowser: "\xE5pnes i nettleseren", dir: "ltr" },
84
+ zh: { label: "\u5F00\u53D1\u8005", productLabel: "\u51FA\u54C1", newTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00", opensBrowser: "\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00", dir: "ltr" },
85
+ ja: { label: "\u958B\u767A", productLabel: "\u63D0\u4F9B", newTab: "\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304D\u307E\u3059", opensBrowser: "\u30D6\u30E9\u30A6\u30B6\u3067\u958B\u304D\u307E\u3059", dir: "ltr" },
86
+ ko: { label: "\uAC1C\uBC1C", productLabel: "\uC81C\uACF5", newTab: "\uC0C8 \uD0ED\uC5D0\uC11C \uC5F4\uB9BC", opensBrowser: "\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uC5F4\uB9BC", dir: "ltr" }
80
87
  };
88
+ var LOCALE_CODES = Object.keys(LOCALES);
81
89
  function localeStrings(locale) {
82
90
  return LOCALES[locale ?? "en"] ?? LOCALES.en;
83
91
  }
@@ -156,7 +164,7 @@ function resolveCredit(options = {}, platform = "web") {
156
164
  const variant = options.variant ?? "stacked";
157
165
  const theme = options.theme ?? "inherit";
158
166
  const strings = localeStrings(options.locale);
159
- const label = options.label?.trim() || strings.label;
167
+ const label = options.label?.trim() || (options.kind === "product" ? strings.productLabel : strings.label);
160
168
  const { height, label: labelSize } = sizes(variant, options.size);
161
169
  const ratio = variant === "mark" ? MARK_RATIO : WORDMARK_RATIO;
162
170
  return {
@@ -171,6 +179,7 @@ function resolveCredit(options = {}, platform = "web") {
171
179
  }),
172
180
  rel: options.nofollow ? "noopener nofollow" : "noopener",
173
181
  dir: strings.dir,
182
+ lang: options.locale && options.locale in LOCALES ? options.locale : "en",
174
183
  label: variant === "mark" ? null : label,
175
184
  ariaLabel: `${label} ${BRAND_NAME} (${platform === "native" ? strings.opensBrowser : strings.newTab})`,
176
185
  title: variant === "mark" ? `${label} ${BRAND_NAME}` : void 0,
@@ -211,6 +220,7 @@ function MatterCredit({ onOpen, className, style, ...options }) {
211
220
  target: "_blank",
212
221
  rel: model.rel,
213
222
  dir: model.dir,
223
+ lang: model.lang,
214
224
  "aria-label": model.ariaLabel,
215
225
  title: model.title,
216
226
  style: { "--mdc-label-size": `${model.labelSize}px`, ...style },
package/dist/react.d.cts CHANGED
@@ -36,7 +36,13 @@ type CreditVariant = "stacked" | "inline" | "mark";
36
36
  */
37
37
  type CreditTheme = "inherit" | "auto" | "light" | "dark";
38
38
  type CreditSize = "sm" | "md" | "lg" | number;
39
- type CreditLocale = "en" | "fr" | "ar";
39
+ /** `no` is Norwegian Bokmål; `zh` is Simplified Chinese. */
40
+ type CreditLocale = "en" | "fr" | "ar" | "es" | "pt" | "de" | "no" | "zh" | "ja" | "ko";
41
+ /**
42
+ * - `developed`: "Developed by", for products built for a client. The default.
43
+ * - `product`: "A product of", for Matter's own products.
44
+ */
45
+ type CreditKind = "developed" | "product";
40
46
  interface CreditUtm {
41
47
  /** Defaults to `credit_badge` on the web and `app_credit` on native. */
42
48
  medium?: string;
@@ -57,7 +63,9 @@ interface CreditOptions {
57
63
  theme?: CreditTheme;
58
64
  size?: CreditSize;
59
65
  locale?: CreditLocale;
60
- /** Replaces the "Developed by" text. */
66
+ /** `"product"` on Matter's own products ("A product of"); client work keeps the default. */
67
+ kind?: CreditKind;
68
+ /** Replaces the "Developed by" / "A product of" text. */
61
69
  label?: string;
62
70
  /** Adds `rel="nofollow"`. Off by default, so the link passes SEO value. */
63
71
  nofollow?: boolean;
package/dist/react.d.ts CHANGED
@@ -36,7 +36,13 @@ type CreditVariant = "stacked" | "inline" | "mark";
36
36
  */
37
37
  type CreditTheme = "inherit" | "auto" | "light" | "dark";
38
38
  type CreditSize = "sm" | "md" | "lg" | number;
39
- type CreditLocale = "en" | "fr" | "ar";
39
+ /** `no` is Norwegian Bokmål; `zh` is Simplified Chinese. */
40
+ type CreditLocale = "en" | "fr" | "ar" | "es" | "pt" | "de" | "no" | "zh" | "ja" | "ko";
41
+ /**
42
+ * - `developed`: "Developed by", for products built for a client. The default.
43
+ * - `product`: "A product of", for Matter's own products.
44
+ */
45
+ type CreditKind = "developed" | "product";
40
46
  interface CreditUtm {
41
47
  /** Defaults to `credit_badge` on the web and `app_credit` on native. */
42
48
  medium?: string;
@@ -57,7 +63,9 @@ interface CreditOptions {
57
63
  theme?: CreditTheme;
58
64
  size?: CreditSize;
59
65
  locale?: CreditLocale;
60
- /** Replaces the "Developed by" text. */
66
+ /** `"product"` on Matter's own products ("A product of"); client work keeps the default. */
67
+ kind?: CreditKind;
68
+ /** Replaces the "Developed by" / "A product of" text. */
61
69
  label?: string;
62
70
  /** Adds `rel="nofollow"`. Off by default, so the link passes SEO value. */
63
71
  nofollow?: boolean;
package/dist/react.js CHANGED
@@ -47,10 +47,18 @@ var EXTERNAL_ICON_PATHS = [
47
47
  // src/core/labels.ts
48
48
  var BRAND_NAME = "Matter Development";
49
49
  var LOCALES = {
50
- en: { label: "Developed by", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
51
- fr: { label: "D\xE9velopp\xE9 par", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
52
- ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" }
50
+ en: { label: "Developed by", productLabel: "A product of", newTab: "opens in a new tab", opensBrowser: "opens in your browser", dir: "ltr" },
51
+ fr: { label: "D\xE9velopp\xE9 par", productLabel: "Un produit de", newTab: "s\u2019ouvre dans un nouvel onglet", opensBrowser: "s\u2019ouvre dans votre navigateur", dir: "ltr" },
52
+ ar: { label: "\u062A\u0645 \u0627\u0644\u062A\u0637\u0648\u064A\u0631 \u0628\u0648\u0627\u0633\u0637\u0629", productLabel: "\u0623\u062D\u062F \u0645\u0646\u062A\u062C\u0627\u062A", newTab: "\u064A\u0641\u062A\u062D \u0641\u064A \u0639\u0644\u0627\u0645\u0629 \u062A\u0628\u0648\u064A\u0628 \u062C\u062F\u064A\u062F\u0629", opensBrowser: "\u064A\u0641\u062A\u062D \u0641\u064A \u0627\u0644\u0645\u062A\u0635\u0641\u062D", dir: "rtl" },
53
+ es: { label: "Desarrollado por", productLabel: "Un producto de", newTab: "se abre en una pesta\xF1a nueva", opensBrowser: "se abre en tu navegador", dir: "ltr" },
54
+ pt: { label: "Desenvolvido por", productLabel: "Um produto de", newTab: "abre em uma nova aba", opensBrowser: "abre no seu navegador", dir: "ltr" },
55
+ de: { label: "Entwickelt von", productLabel: "Ein Produkt von", newTab: "\xF6ffnet in einem neuen Tab", opensBrowser: "\xF6ffnet im Browser", dir: "ltr" },
56
+ no: { label: "Utviklet av", productLabel: "Et produkt fra", newTab: "\xE5pnes i en ny fane", opensBrowser: "\xE5pnes i nettleseren", dir: "ltr" },
57
+ zh: { label: "\u5F00\u53D1\u8005", productLabel: "\u51FA\u54C1", newTab: "\u5728\u65B0\u6807\u7B7E\u9875\u4E2D\u6253\u5F00", opensBrowser: "\u5728\u6D4F\u89C8\u5668\u4E2D\u6253\u5F00", dir: "ltr" },
58
+ ja: { label: "\u958B\u767A", productLabel: "\u63D0\u4F9B", newTab: "\u65B0\u3057\u3044\u30BF\u30D6\u3067\u958B\u304D\u307E\u3059", opensBrowser: "\u30D6\u30E9\u30A6\u30B6\u3067\u958B\u304D\u307E\u3059", dir: "ltr" },
59
+ ko: { label: "\uAC1C\uBC1C", productLabel: "\uC81C\uACF5", newTab: "\uC0C8 \uD0ED\uC5D0\uC11C \uC5F4\uB9BC", opensBrowser: "\uBE0C\uB77C\uC6B0\uC800\uC5D0\uC11C \uC5F4\uB9BC", dir: "ltr" }
53
60
  };
61
+ var LOCALE_CODES = Object.keys(LOCALES);
54
62
  function localeStrings(locale) {
55
63
  return LOCALES[locale ?? "en"] ?? LOCALES.en;
56
64
  }
@@ -129,7 +137,7 @@ function resolveCredit(options = {}, platform = "web") {
129
137
  const variant = options.variant ?? "stacked";
130
138
  const theme = options.theme ?? "inherit";
131
139
  const strings = localeStrings(options.locale);
132
- const label = options.label?.trim() || strings.label;
140
+ const label = options.label?.trim() || (options.kind === "product" ? strings.productLabel : strings.label);
133
141
  const { height, label: labelSize } = sizes(variant, options.size);
134
142
  const ratio = variant === "mark" ? MARK_RATIO : WORDMARK_RATIO;
135
143
  return {
@@ -144,6 +152,7 @@ function resolveCredit(options = {}, platform = "web") {
144
152
  }),
145
153
  rel: options.nofollow ? "noopener nofollow" : "noopener",
146
154
  dir: strings.dir,
155
+ lang: options.locale && options.locale in LOCALES ? options.locale : "en",
147
156
  label: variant === "mark" ? null : label,
148
157
  ariaLabel: `${label} ${BRAND_NAME} (${platform === "native" ? strings.opensBrowser : strings.newTab})`,
149
158
  title: variant === "mark" ? `${label} ${BRAND_NAME}` : void 0,
@@ -184,6 +193,7 @@ function MatterCredit({ onOpen, className, style, ...options }) {
184
193
  target: "_blank",
185
194
  rel: model.rel,
186
195
  dir: model.dir,
196
+ lang: model.lang,
187
197
  "aria-label": model.ariaLabel,
188
198
  title: model.title,
189
199
  style: { "--mdc-label-size": `${model.labelSize}px`, ...style },
@@ -7,7 +7,13 @@ type CreditVariant = "stacked" | "inline" | "mark";
7
7
  */
8
8
  type CreditTheme = "inherit" | "auto" | "light" | "dark";
9
9
  type CreditSize = "sm" | "md" | "lg" | number;
10
- type CreditLocale = "en" | "fr" | "ar";
10
+ /** `no` is Norwegian Bokmål; `zh` is Simplified Chinese. */
11
+ type CreditLocale = "en" | "fr" | "ar" | "es" | "pt" | "de" | "no" | "zh" | "ja" | "ko";
12
+ /**
13
+ * - `developed`: "Developed by", for products built for a client. The default.
14
+ * - `product`: "A product of", for Matter's own products.
15
+ */
16
+ type CreditKind = "developed" | "product";
11
17
  interface CreditUtm {
12
18
  /** Defaults to `credit_badge` on the web and `app_credit` on native. */
13
19
  medium?: string;
@@ -28,7 +34,9 @@ interface CreditOptions {
28
34
  theme?: CreditTheme;
29
35
  size?: CreditSize;
30
36
  locale?: CreditLocale;
31
- /** Replaces the "Developed by" text. */
37
+ /** `"product"` on Matter's own products ("A product of"); client work keeps the default. */
38
+ kind?: CreditKind;
39
+ /** Replaces the "Developed by" / "A product of" text. */
32
40
  label?: string;
33
41
  /** Adds `rel="nofollow"`. Off by default, so the link passes SEO value. */
34
42
  nofollow?: boolean;
@@ -57,4 +65,4 @@ interface BuildCreditUrlOptions {
57
65
  */
58
66
  declare function buildCreditUrl(options?: BuildCreditUrlOptions): string;
59
67
 
60
- export { type BuildCreditUrlOptions as B, type CreditLocale as C, MATTER_URL as M, type CreditVariant as a, type CreditTheme as b, type CreditOptions as c, type CreditSize as d, type CreditUtm as e, buildCreditUrl as f, normalizeSource as n };
68
+ export { type BuildCreditUrlOptions as B, type CreditLocale as C, MATTER_URL as M, type CreditVariant as a, type CreditTheme as b, type CreditOptions as c, type CreditKind as d, type CreditSize as e, type CreditUtm as f, buildCreditUrl as g, normalizeSource as n };
@@ -7,7 +7,13 @@ type CreditVariant = "stacked" | "inline" | "mark";
7
7
  */
8
8
  type CreditTheme = "inherit" | "auto" | "light" | "dark";
9
9
  type CreditSize = "sm" | "md" | "lg" | number;
10
- type CreditLocale = "en" | "fr" | "ar";
10
+ /** `no` is Norwegian Bokmål; `zh` is Simplified Chinese. */
11
+ type CreditLocale = "en" | "fr" | "ar" | "es" | "pt" | "de" | "no" | "zh" | "ja" | "ko";
12
+ /**
13
+ * - `developed`: "Developed by", for products built for a client. The default.
14
+ * - `product`: "A product of", for Matter's own products.
15
+ */
16
+ type CreditKind = "developed" | "product";
11
17
  interface CreditUtm {
12
18
  /** Defaults to `credit_badge` on the web and `app_credit` on native. */
13
19
  medium?: string;
@@ -28,7 +34,9 @@ interface CreditOptions {
28
34
  theme?: CreditTheme;
29
35
  size?: CreditSize;
30
36
  locale?: CreditLocale;
31
- /** Replaces the "Developed by" text. */
37
+ /** `"product"` on Matter's own products ("A product of"); client work keeps the default. */
38
+ kind?: CreditKind;
39
+ /** Replaces the "Developed by" / "A product of" text. */
32
40
  label?: string;
33
41
  /** Adds `rel="nofollow"`. Off by default, so the link passes SEO value. */
34
42
  nofollow?: boolean;
@@ -57,4 +65,4 @@ interface BuildCreditUrlOptions {
57
65
  */
58
66
  declare function buildCreditUrl(options?: BuildCreditUrlOptions): string;
59
67
 
60
- export { type BuildCreditUrlOptions as B, type CreditLocale as C, MATTER_URL as M, type CreditVariant as a, type CreditTheme as b, type CreditOptions as c, type CreditSize as d, type CreditUtm as e, buildCreditUrl as f, normalizeSource as n };
68
+ export { type BuildCreditUrlOptions as B, type CreditLocale as C, MATTER_URL as M, type CreditVariant as a, type CreditTheme as b, type CreditOptions as c, type CreditKind as d, type CreditSize as e, type CreditUtm as f, buildCreditUrl as g, normalizeSource as n };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@matterdev/credit",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "The \"Developed by Matter Development\" credit badge for React, React Native, Astro and plain HTML.",
5
5
  "license": "UNLICENSED",
6
6
  "author": "Matter Development <hello@matterdevelopment.com>",