@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 +8 -5
- package/README.md +5 -4
- package/dist/{chunk-HMYCJLA7.js → chunk-E2CTYJ6I.js} +2 -1
- package/dist/{chunk-GSANMFZ3.js → chunk-N6BHBXMD.js} +14 -4
- package/dist/element.cjs +21 -9
- package/dist/element.global.js +8 -8
- package/dist/element.js +6 -3
- package/dist/index.cjs +16 -4
- package/dist/index.d.cts +12 -3
- package/dist/index.d.ts +12 -3
- package/dist/index.js +4 -2
- package/dist/native.cjs +13 -4
- package/dist/native.d.cts +2 -2
- package/dist/native.d.ts +2 -2
- package/dist/native.js +1 -1
- package/dist/react.cjs +14 -4
- package/dist/react.d.cts +10 -2
- package/dist/react.d.ts +10 -2
- package/dist/react.js +14 -4
- package/dist/{url-DWglt3C7.d.cts → url-lHz60pDq.d.cts} +11 -3
- package/dist/{url-DWglt3C7.d.ts → url-lHz60pDq.d.ts} +11 -3
- package/package.json +1 -1
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.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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`;
|
|
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.
|
|
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
|
-
| `
|
|
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-
|
|
3
|
+
} from "./chunk-N6BHBXMD.js";
|
|
4
4
|
|
|
5
5
|
// src/core/assets.generated.ts
|
|
6
6
|
var WORDMARK_MASK = "data:image/webp;base64,UklGRgIYAABXRUJQVlA4TPYXAAAvRcMwEIcAEIT/cQsRAoEUZvCJJwqENpIkSc7gz7r69j4CETEBbk/0Z2cv7A+VVYPHdlQrX28weLS95vmo5qxaBcHKqnlOd7WdrY+pxmyfbHNsqzY/wRgrqNlOm4N9Q9W219hxMLYvVq0arEz0UdVgbpfGjMnWaqxGpStMDwRF7xfGahgUMfdhRJGP8y+3v+Lbtq26tW3bylyEEOKS//93wVKhgD3aqP0lov8TYMu2raC1rbUQEBFZs/7VdYfBTc573xH9nwBvt21VtW3bFgURi4iQ///fnQ8kl1JbJ/Apov8B/c6P8d9NH+/Khy1fp/vvxZEaJdsdzH8oTKyceIcfwvnPf5HMxdk1mu/nwpUbn+fL/y06GxW2+N2O1CjbLrsNzU2l9fhaPjXOLLIHTaHe23ylUDi7XzvQFGpux/cJlRpr3H+Fyq8v4zOV9mP3XVRf4g+Zi3p73nueC/bjZ3yl6nPr1RWA/CMXlfdj40Uuqr9gCtU32XamrYLi3zUu+Gy7SNF2R++9P6/cJuAR56Fxybzr5o4W3BaPNrfhFdeBi3bZc0UbbwOahxRecRw4eYzxbILuuXtDgqQvQnjFbaR8uQ6Hv49z7uiy41w8QfhsMnjFaaR0jRYv2wbojiusGCmYWwavuAyUjgbvc7AuG64zh4mhieDxGChcLEQPhrzhHpQw1VURFH+BwhHSJ3s3nLCdA1NEcHnzlG0e8gMhbreMEqYnEZy+XJMpBhMPdm23ivw8JJF+eLKNoglzO6rbrZEGjUkCr/gxhaIBkzPC7rtVIEmg+MmUbAemz+Gx2waJOpAkkL0kSjaH+W2YtiiSRD98BEo2B4XH8Np8QQvyB7wuHCWbg8o+0s3n1Zj3A9SBqRLNQWfds/DYgMP+pmBzUKqje5faERte85OSB7Seo7rb2u9Y3YDL2DWJALVp29q1oUfbQsEEvXHzVXJSbTA8ppGCBZo3XybK9WA4DR0Fm/k7lX7K8oYmdlnC4e+UBbjJ1hjULFDwxF+qASrbBuvRyJvAjV9iiKZ/ged7tUmiZc7z1xxIeBCpOMoI+85zZs45xdMbXRfo9BQIxeji+2p+mvtfkHdhgyAu4Od6B6unAES2VYZkkiTo8VPcSNn+4DYyKgvZ56AlkUy3m1WTe8MF7cl5Zo993UJ+2SRd1pKsQYdN8PA9ELJBFi/4MexGytaZO0jzj0qgq0lmq+ICELoV1gzGBqfv8p5YF+O2ha768iBtPdm8hkIy3waC0rP4Bf3q3S4EtVXswEPjZY0gryd5KDDyGKRAXdiDVbNAHak/D9SjpXQXVdLxSqitaHOEG0D4diK1L8viBxas27MToVgqXFSSqUN6g7SgegiVZAN7UPh3DZaxoHN/NhGSnXQXnr3p/Ku6orrmnTwWGal/VRa3K5RXYUeFVbsCF/cgdshvcKxol2m7AcTAOlJiDnZhxeuV35ENhNMqwoXlsA7Cq/JvCVlxJrosW2Ygz1dyWXigTszCzSzxvLJbOlizKj7iiKFDfYP49fcVWl9opj9ilnnnnbwW1pAir7MDK7reVuzWddYR1OaAj/YhD85XunK9CXUD4rTdAIeFTVRoSfjGkgWl7dz2lQJ1Mak+Kj+7zrRRl8UDTN+Q5yu5TSpCZF2omTU6OreT08saQrFI8PE8SB3SCNfywW5W5i1AFwubqLACHVgzkNsP88snQjSoPg49NZ0dNpPaaLTJjaa/2wNVQgfIJhVBOFX0xpqHMDY0XlZZ5Wf46EuxwzNCthiiyaaJ6t9tFwLhIM3EJlLOINUscqG8I9WXPQiJ3ny4lusgDesCZibz9gxwmpyoCyMJNodFJ0pbmv7KrLEzfLQ1hi60EdL6GUuEOqomHgQX4yQBstaPjdwhfG5J7WU3wsWV5mSCPMjDZwHjB6wNkCzsQo1xg4DHzsd458LHLUpdzO4p/JVYF6rCRxG1XegjxPUb6GLoqJgkhJMwVlry+OjOVCjshSaq2JP6yxqCMqU7GaSZgQ7LeipD+gDRwm70EJ/LY2zC3TgxyhTha1c6Xh4IkajwkUQThnEIWXFrpJhkRDsvtprT6fHRhMLJQjdz2xovO9nDS/GPuFD6yzrSJfcAiBY2UZz3MtycL5OEK7al8rKJkGhd/wYPMuzjgfrytZ+wRtSkoqrJpUaNMo1dG5t/ZPaykmizqqL1kw2CvHr3bzjpYuFB6LTYs1KpzGRuYzpfNhAy6Sb9tJokbLGgtnrjN6wDqIVdKOrwN/WKFOGKnYW/DtaEkkU1GWXRa8UmwbnkiXSxSKhqCJWavcRg19Z0vawjKGWQFqw6Sksnqot5KLEOoBZ2E7pZ5qzULZHE7d6UXh6oR0IWzVZJ9LZlD4Jj7QJ5LYk0k4KuOSY2arcCnRVsbrysIRTCQ1qwaqis2YXK2glbLdYBsoVN0maY2Kgf7z3YuTvll88hjukqmsyCTIMJIa5cZph5Ho8SaSYX4SFmYqP6koNAEzfbe15Wx3V6khGsqmgjdqN75S6UZyTSP7EOkC0OdEvFRp0t3zEe3nsH6ckStqf6sjrEOVlFs9lACWXUZd1SoDQhkmzmSSLNwiahEQmVCvMVPOZX8eMLhL/SuM15kGFWh2g3/hBc/4BIlR6H8Cnn2OcndgMkiwt5AV85u92ng9LBKr6A2is8Q+hUE00/01HeUFFbNTPEnVwZ8HqSSbU4/jObOblEB71ZPD46ej98Kr3iuMuEB+n2Ky46beckyEtmYhOvEI/86B/YAEgGNkEzb2Lj1HJaqO4b7KMXaOKzv4IOcU9coulnTnRuaehdLuNjpugp5vi5mQeFVItrrTk8d4Uz62WhPIknPFUAUJ/KL+lDxM9JtNnPTORbHCGtSYqSV865ULwZsWdB14JNgMPgWCoWzyNn5gP6rw15xXFo9xQ7O9nY1kkXsyKaINtRXRNP9RHSTctpoZJiYHOhGDw2mROTxYIebNqiqaO0M5tIeVMS1WA2kBNKCHEJm5E6tJ4XPACiQfuUDB77RvlkseQpXlcyP/qdZTY3DdLELIkWSA9UlvCA9LM2bfUixSB9iHgeKZ8sFp0sfOHi57wzG0h1SxbNwexCQawgyAImSDet16VEuvBtvNqBxyZRPDusWsWbfa56euzsYOE7BmnBzIM0I2YT6foVSCetT1u/AdSgSKoOj02hdAtYd2xInzyWqtmYdaS2IYtmuyqaIF9Rl9VLRmyACgppBjajGTx2hdK3wbpJvNvnovW4Mw+kxCapwW4iO8GDIP/tIat03U6IF61PowFwGiS3565RuB1YuW9ICw00uzFr7EZVNNll0YyZF2p/+/rmyUDcJ6joIo8BdY3C2WBlD9ZtsQLeO7OJlMkkNdh1FKYkhHPZymkwsWl9Gj4IorFrFD6xdhVPK4nQ76yyAU7Rwy6JNsztqK7aialJsDJ7yGXrGmWLw+IPG7Z8k7IzG0h1yYOUYNfQNYjiN0JatDqng/ANJ2mmrlH2Mlg8ide1THjuLLPpK000Gk5ku0C9ZTmkK2KYkQWbbUwEh6FrFG0Hlr9Y+JqNN804to7UFjzIHeyq6I0+K0JcI5uozhjEd9ggt51tFC0G6wfrBtMbXp4TC//UBbsYDlQ6S81lkSpikMuC3bZW0s1MoWjCBov4Qex6w+jYGlL/kEQ12B2i0/pLVZc1somq3CDHHic4rTJFT+zwZo9h094Uzx5Ix1+ddDHsqP3RVEEXqSEeUlkwQ/gm/UcSRQN26OKBWSOIjq2y8RffXsHOA9nuoO62SB5o7BokSAUSvxEoGrDFkzVs9CDFs02k8kd60YLhKZrQ38qQ18gaUt6TBSukDVGxcBQN2OPDLgmrBNFzZvMP255ly4l8Z6m9LVJiY08nUQyDdAPTRAIETTyNuiTuRGwS9WwD6ewQH73BsIhW9FEd0hpZR8o7kqiRO0kYZEoGCLpKFqPtZBWylXTxnFiYzrQnyfJG56Dqq4uU2NhxkQT5RHTSIyUTBAP7pO1mp5BNgOzZOtLVITyowTCJNtMdXDCukd1IB/MgboI9pLAdJW+8NzfHXpeLW6lKmmsPRNuhfkqWF0rQ6qwsUmadVcGKmY00sikSxbxzlR+zrsIKpD0AkmdrLA/8hxQMPZBTYx0hrpENpIQeck45CA7uRcHm8Dryqad2dopZI8W1TUTfIY+sZRUt0JuYLlJhnSRRO8WCKNVR8sDrxMeZOpmVSwTiurIycIMEywcFRTZQlzWyiZTASTLm3uSlFokLrwtfRuIhXDDxJpdrG4ihQyLZ7EpZtBlNGSEvUmUdPCRMagRCjBQsZtpNbOycUcnrO7NmOtvIiJU6uqB6orZINpF8KYnaSRmdPNMkHN6fbxrxYW6GBUB0bR0xdohsZqUkbHVVhLxIjbWlkxTMRjcvUTBC0LzBSXPhiqkXUd8pEG1nWsRKDWUoD1QXyQOFr9zknPaQl2YpWCB6vym0yq45iTTf1ljq4LHUREFbQ0h/sPWKoxtrSG3BRd20i0BYScLJhDed1pmfYw/A4dsD0XfynCraoN3Z8wdHKlY/iYV/KqRhekUnKWnjBeEASKwHNUw+yeXbKsvrDRTVWUeIa4SEFD9dJM1L6Cb1Dc1IdXKTXPielcjr3B7EsNohbPUlVhbJsvbpIWGeBamcpI0B0oW8pMLCLHsAovPM6mod3VhwoC5rhBsxjJKoVXATcPqGDPkAiJzG7LSLZOc2EONaHuhYISPoImVWR5VUKDzRwUja6Cd0kjkDFUwv5PGeWFrrFK1YcqK+SDYQw+Ait4aMMqNvyJhYSOEEuuY56d7tQnatieIaFSEvUmF18JCowdBNcG20M5w0yiF8zLMH4PDuARKWysJmDQvUFskmYuhEvYqHVELbkDD1BoiMyoyCi1zerQG71o0SFm0IaZEqK4BlBJWdgDA32DknORkdFSis5HFvcylhqSTsV3FWF8kmooedpOo4UZxO4glzD3IzJro0HKT5L0t2rQtVLNsRjkVqLMMucuvIKE23DX6STVAJLhw0GEE0CfGln2Nn+xwwNzWaUW3Ur5MaTh9ro9EmN5q4DQ98VOxlGo48bxw2SNTh6JqeLGN2ByBkZlUMkkz+EAY5dNgkOlvEj2mVxPkTVai8iO4dUadkkDrbWcX0g6T5hm4dJ7m3zoGg9PqyYHGeBdD5gaKOTOrWyWRqOQkms7hVMMA9/yCvw0nbOueoakncxgoUNlDnhaF0hK2jo6LlGKa5wU4NGbzTjqqWuq9US+AGcxoSwHRG9yJp/51TLlyh8ssKilp0I5VRUlNHOpVZWiHONhT+3tQfONmpI0CavZDXkkbX3mzM6xjfNZBdRDdSUKujMnUzfAFoPbZjnRqoLKGz8Sth6YyPKefMkvMdD/sPLu9I/7OacMkx2CmcnpcySTYzJZNkM884/UMFgMoPN9+W00hlbc13PIwMP5Ytlh8ziJzdSOT4lKkAmR9Ffqn+YvwCeZXbw7Bebg++Y5xh2Ud8odgomoyi4R3MhHtL3ExzP0FmTnRu6PhXVDcka9gBctfMhNQ1831c5cea85Vz+cB2KCNbNGJKO9pmWH6CxBT2G8q/U534cYgx5Q9k9ROSn+hrvmOQs+wTJJKf6CFwfAeDj0dqHZnkzrx4xpjyiKxO7NoQOKX4iWkbowrrcX89GcclxHN3lgF5yUWozV2VSwMrEqGZHzjMFs/NNWASy4aP1Do2JxUb8pwMvYNSSdJrEGyvYdxLodr/cQD4PGA2y/mOQcqwT/g2icMT733rGGmAuTs2J9AlqSJLkmUb2XfV/BxKxf8+wNE6luWQuyoVB/bbSB8ESLrWMfGA1DEL5JA0UOrCPhBJMv2/A7Z0TMuFTmWPaV3CryX2EbLH4GUid3QCF0m6F9IB1OQovABw/vsChJ8LpnY8VkPtxp7I3n4by75COnXIzGMQBWyXXmQAOF0dHUCXf56g/73gBnW50ClvaV3Ct7kGQcwOKhODJICbZDPPXgAtuAoXAFSvyercz/H/H66OwRr1NXYE9vbr1K5C/u4Q6VniIMnwKAGAOgsVAC6n2crvpxD7HYozO7jNw0vHhtrd+DaO/TUhDDLRDC4JVJL1UfmPeJMOoB+/Xf95F8Gu+FKd4e4o1pivzgJ7/3XC4JhgBoUYBqfISZL+gQBACd7CCQCvz5PWiNvPA+pvdg6SeX0podplfJ04sBNQu8ozdWBFTJceXP9J/kIBAHXZrDD1QZHigvk38wM1t/nq5GDvv08eYGbuQDOF/QURJJI0nxqANziUBgDJ4+VxoEQpJM46zMzmjFyO8lbkfCmB3GXI5SgfPZQpSZMJjX0xQq6LH04AyHM1yuepkP7TxEMjw6joOimdHLOCmd8c5GZ6EY/XtebZ+wkzk4c8JapxITUOi4EQMsn64QHQZW5mnQsKAOWHb5B1KSWI+RLpj7L2Cl/KXcZPVfLjxocX3j4JJHkMIgDcwWd4AeD0J9oA15wLFUYRLJjerOKP5CFJbcWx97+VdLKYgEbyHuh/otejA+hiX/4NcU5DjdHJNa+OOu3anJOL0N5e4Qupy5gRodmgTcma2h0MBB9FkrRdB/CEyQy9w3ABQLXPKLEE/ZyCEOdd1M+7R6DlN+LtGGQPHpJ0frLsw1e6O85rn0p+nGL0FsKPbHchhAwAp99QAeAyT+gkObFzEsvzjTTMV6v2Jni7BocHa6/5KXUVXykO3Az29ZOH1ke4STaEUAG04Fg6gH5YG1JSJpgc6Jn2IElBGiaS4cvmrnYtuPCQpPqXZR++0zE4J7iBuvEkGUIEgMtzOAHgNZ/kIVWQZ92vaGc1Ua/A0UkqJO/Gs097QOzqKHYV38kM7gnn4HSDSjIjdWZrSCQZVxvkJV0gzQrv0qQUpELjJEq6SNpNGdhN2I6hM60LXwp3RytXux78nCTpG8mEvZlKkn6xRkB6QJhl39HNGaKnips8pIfEzVzsEzaB1OUukmTFtwqDJBbYF0emkawk6TYH31WzVkGJ4oJuFsq7MqWJNqPiJJ3jon4vgX0z27AdPWBaF74WakcnZOogOkLiuGB3iCSZ1kpIKQU0TD/fMU2owhdUHgQHpSK7lYtDj20gdRkIJFnxvY5BMTKJ/R08uQ9hfygkeSxlk1RKB/c8K8AgdopbHRakUG7SsBFfOAzYiO3oUbvzi+HuWIxEYl/EFfKg4Qu4RrKZpToBwwOc85AFGGXMTR6htJMuBBe99xEyh+3ATpC6FEiymW9mSsfqX9nMvrngKwyub4CTJPNSFZ2EKugUBAneRiA0vg+jpRAo4URhC9bHu3GcLfZiO9Yu4pvBlI5M7pGNjX1zcIbc26+AzM9WjgrhARUKTZNgCy/MWSl5Qm2QLvMTmYXysPB5DZAd1DzxnkDq+mbm1Tzx2tTyzFcw94CsV/B9iIXj4rCd1xNannmQTFvNbgKZzoKXBkQRsl3+gw03ZYfp7QT3dBUtWEjyDpAeTK0z7lPEvKl509x3QGgDwWjwveYmEo7lKtLpQQ4Vpsn0JeecKR7piwpCmp0o7KOmYCC/FPKome8Hc1aBdlnI/lBIqznqMpkFK3SecpOrffNEXeaasFkjN+w9JsfpecrF4YG5Oj2wEKeLAHAxPyrXAXEbe6sm9naCjX0CPk6PAx9jjEHGxHGeSzHGGGTsJtDJSS4lyEt0++qG8MrMIZzwL9b4scU/woJwTDVRp8W0BR77bg+EMuEPc/9k/j1O9MrEIZqh1jV1j3+ZNYYin2/hjD+hJ0L9LhMFPXBN2XD7dp8Mr3zzLu7/hkgfMkmZwrcVml1VFbHgIYCeJGzh+xt/RHXM24iYwtdBFcytp3oseQsAyb4xsfF9s39FpI9ZrIBvfF2hPTQdLWJR2yTYLvvEXY2SEX9G9QNbeGMSBb06mNgUJItlDxGS5YreHzHmRtmCv6PSP5A5mAdHomTGiuask5LFyklouvtDEvInkiXHGGPOlG12CQAuNbEaLRYvFif+lNaPkwMWPq7yrt2nw/rm5d/4Wxo7P2F1H+KV+zvG4A02GTu7mD8m4aQXs9yuj85tFn9OlVwMflV5mc3hD2qhFoPfVSqvOPxJLcRi8NMq6zb4o6q0ZPDjpsZoJ/6unk1FC/h9Rft0MvjLam4Ft8VPHO8+lSz+uh51Uvb4mSW/X9tl8Rc2lAm3x2+dzjvYHQz+yrrURNpl8YsfpS2e2eGPrb/Ki5oO/FfThxjvnFOM3uK/jQ==";
|
|
@@ -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"),
|
|
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"),
|
package/dist/element.global.js
CHANGED
|
@@ -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,${
|
|
4
|
-
.mdc.mdc--dark{color:var(--matter-credit-color,${
|
|
5
|
-
.mdc.mdc--auto{color:var(--matter-credit-color,${
|
|
6
|
-
@media (prefers-color-scheme:dark){.mdc.mdc--auto{color:var(--matter-credit-color,${
|
|
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("${
|
|
16
|
-
.mdc__logo--mark{--mdc-logo:url("${
|
|
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(),
|
|
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={"&":"&","<":"<",">":">",'"':""","'":"'"};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-
|
|
4
|
+
} from "./chunk-E2CTYJ6I.js";
|
|
5
5
|
import {
|
|
6
|
+
LOCALE_CODES,
|
|
6
7
|
resolveCredit
|
|
7
|
-
} from "./chunk-
|
|
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"),
|
|
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-
|
|
2
|
-
export { B as BuildCreditUrlOptions, d as
|
|
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-
|
|
2
|
-
export { B as BuildCreditUrlOptions, d as
|
|
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-
|
|
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-
|
|
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-
|
|
4
|
-
export { C as CreditLocale,
|
|
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-
|
|
4
|
-
export { C as CreditLocale,
|
|
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
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
|
-
|
|
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
|
-
/**
|
|
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
|
-
|
|
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
|
-
/**
|
|
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
|
-
|
|
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
|
-
/**
|
|
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
|
|
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
|
-
|
|
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
|
-
/**
|
|
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
|
|
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.
|
|
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>",
|