dowel-ui 0.30.0 → 0.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -9
- package/dist/eslint/index.d.ts +1 -0
- package/dist/eslint/index.d.ts.map +1 -1
- package/dist/eslint/index.js +13 -4
- package/dist/eslint/index.js.map +1 -1
- package/dist/eslint/no-implicit-locale.d.ts +3 -0
- package/dist/eslint/no-implicit-locale.d.ts.map +1 -0
- package/dist/eslint/no-implicit-locale.js +83 -0
- package/dist/eslint/no-implicit-locale.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/locale.d.ts +16 -0
- package/dist/locale.d.ts.map +1 -0
- package/dist/locale.js +55 -0
- package/dist/locale.js.map +1 -0
- package/dist/marks/atlas-L.svg +3 -0
- package/dist/marks/atlas-M.svg +1 -0
- package/dist/marks/atlas-S.svg +1 -0
- package/dist/marks/austeris-L.svg +6 -0
- package/dist/marks/austeris-M.svg +1 -0
- package/dist/marks/austeris-S.svg +1 -0
- package/dist/marks/dowel-L.svg +5 -0
- package/dist/marks/dowel-M.svg +1 -0
- package/dist/marks/dowel-S.svg +1 -0
- package/dist/marks/efema-L.svg +8 -0
- package/dist/marks/efema-M.svg +1 -0
- package/dist/marks/efema-S.svg +1 -0
- package/dist/marks/furca-L.svg +7 -0
- package/dist/marks/furca-M.svg +1 -0
- package/dist/marks/furca-S.svg +1 -0
- package/dist/marks/hilvan-L.svg +3 -0
- package/dist/marks/hilvan-M.svg +1 -0
- package/dist/marks/hilvan-S.svg +1 -0
- package/dist/marks/kasl-L.svg +4 -0
- package/dist/marks/kasl-M.svg +1 -0
- package/dist/marks/kasl-S.svg +1 -0
- package/dist/marks/kasl-server-L.svg +4 -0
- package/dist/marks/kasl-server-M.svg +1 -0
- package/dist/marks/kasl-server-S.svg +1 -0
- package/dist/marks/kilna-L.svg +3 -0
- package/dist/marks/kilna-M.svg +1 -0
- package/dist/marks/kilna-S.svg +1 -0
- package/dist/marks/lacodda-L.svg +1 -0
- package/dist/marks/lacodda-M.svg +1 -0
- package/dist/marks/lacodda-S.svg +1 -0
- package/dist/marks/lyrid-L.svg +8 -0
- package/dist/marks/lyrid-M.svg +1 -0
- package/dist/marks/lyrid-S.svg +1 -0
- package/dist/marks/lyrn-L.svg +3 -0
- package/dist/marks/lyrn-M.svg +1 -0
- package/dist/marks/lyrn-S.svg +1 -0
- package/dist/marks/midda-L.svg +4 -0
- package/dist/marks/midda-M.svg +1 -0
- package/dist/marks/midda-S.svg +1 -0
- package/dist/marks/nitid-L.svg +4 -0
- package/dist/marks/nitid-M.svg +1 -0
- package/dist/marks/nitid-S.svg +1 -0
- package/dist/marks/nooma-L.svg +12 -0
- package/dist/marks/nooma-M.svg +1 -0
- package/dist/marks/nooma-S.svg +1 -0
- package/dist/marks/rhapsod-L.svg +4 -0
- package/dist/marks/rhapsod-M.svg +1 -0
- package/dist/marks/rhapsod-S.svg +1 -0
- package/dist/marks/rigger-L.svg +8 -0
- package/dist/marks/rigger-M.svg +1 -0
- package/dist/marks/rigger-S.svg +1 -0
- package/dist/marks/scheda-L.svg +5 -0
- package/dist/marks/scheda-M.svg +1 -0
- package/dist/marks/scheda-S.svg +1 -0
- package/dist/marks/sefy-L.svg +4 -0
- package/dist/marks/sefy-M.svg +1 -0
- package/dist/marks/sefy-S.svg +1 -0
- package/dist/marks/turnout-L.svg +4 -0
- package/dist/marks/turnout-M.svg +1 -0
- package/dist/marks/turnout-S.svg +1 -0
- package/dist/marks.d.ts +12 -0
- package/dist/marks.d.ts.map +1 -0
- package/dist/marks.js +121 -0
- package/dist/marks.js.map +1 -0
- package/dist/palettes/atlas.json +1 -1
- package/dist/palettes/austeris.json +1 -1
- package/dist/palettes/dowel.json +1 -1
- package/dist/palettes/efema.json +1 -1
- package/dist/palettes/furca.json +1 -1
- package/dist/palettes/hilvan.json +1 -1
- package/dist/palettes/kasl-server.json +1 -1
- package/dist/palettes/kasl.json +1 -1
- package/dist/palettes/kilna.json +1 -1
- package/dist/palettes/lyrid.json +1 -1
- package/dist/palettes/lyrn.json +1 -1
- package/dist/palettes/midda.json +1 -1
- package/dist/palettes/nitid.json +1 -1
- package/dist/palettes/nooma.json +1 -1
- package/dist/palettes/rhapsod.json +1 -1
- package/dist/palettes/rigger.json +1 -1
- package/dist/palettes/scheda.json +1 -1
- package/dist/palettes/sefy.json +1 -1
- package/dist/palettes/turnout.json +1 -1
- package/dist/registry.json +310 -93
- package/package.json +8 -3
package/README.md
CHANGED
|
@@ -60,14 +60,13 @@ npx shadcn@latest add https://lacodda.github.io/dowel/r/button.json
|
|
|
60
60
|
npx shadcn@latest add https://lacodda.github.io/dowel/r/app.json # or a whole set
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
[Base UI](https://base-ui.com), menus
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
keyboard, a dependency budget and a picture in both themes.
|
|
63
|
+
A hundred and five primitives so far - controls and forms, overlays on
|
|
64
|
+
[Base UI](https://base-ui.com), menus, the command palette, tables and long
|
|
65
|
+
lists, charts, loading and empty screens, markdown, code and diffs, a screen's
|
|
66
|
+
frame and how it divides, a desktop window's own chrome, and the line's marks.
|
|
67
|
+
Each is written in the vocabulary - no raw colours, no `dark:` utilities, no
|
|
68
|
+
date in the browser's language - and runs its own gate: axe, the keyboard, a
|
|
69
|
+
dependency budget and a picture in both themes.
|
|
71
70
|
|
|
72
71
|
The full catalogue, live: **[the stand](https://lacodda.github.io/dowel/stand/)**.
|
|
73
72
|
One page per component: **[components](https://lacodda.github.io/dowel/components/button/)**.
|
|
@@ -153,7 +152,7 @@ where it measured 3.49:1. Derived, it is white there, at 6.01:1.
|
|
|
153
152
|
|
|
154
153
|
## Status
|
|
155
154
|
|
|
156
|
-
The theme, the scales, an accent per product, and
|
|
155
|
+
The theme, the scales, an accent per product, and a hundred and five primitives are
|
|
157
156
|
in daily use across two products of the line. Every component installs from a
|
|
158
157
|
versioned registry and passes its own gate - axe, the keyboard, a dependency
|
|
159
158
|
budget, a scale that refuses a length nobody argued for, a floor under every
|
package/dist/eslint/index.d.ts
CHANGED
|
@@ -9,5 +9,6 @@ declare const dowel: ESLint.Plugin & {
|
|
|
9
9
|
};
|
|
10
10
|
export default dowel;
|
|
11
11
|
export { noRawColor, findRawColor } from './no-raw-color.js';
|
|
12
|
+
export { noImplicitLocale } from './no-implicit-locale.js';
|
|
12
13
|
export { noNativeSelect } from './no-native-select.js';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAiD5C;;+EAE+E;AAC/E,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,MAAM,GAAG;IAAE,OAAO,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;KAAE,CAAA;CAEtE,CAAA;AAEF,eAAe,KAAK,CAAA;AACpB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA"}
|
package/dist/eslint/index.js
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
import { noImplicitLocale } from './no-implicit-locale.js';
|
|
1
2
|
import { noNativeSelect } from './no-native-select.js';
|
|
2
3
|
import { noRawColor } from './no-raw-color.js';
|
|
3
4
|
/*
|
|
4
5
|
* The dowel ESLint plugin.
|
|
5
6
|
*
|
|
6
|
-
*
|
|
7
|
-
* names colours from the vocabulary and never writes one down,
|
|
8
|
-
* uses a native `<select>`, which the browser draws in its own chrome
|
|
7
|
+
* Three rules, and each enforces a convention the system rests on: a
|
|
8
|
+
* component names colours from the vocabulary and never writes one down, no
|
|
9
|
+
* screen uses a native `<select>`, which the browser draws in its own chrome,
|
|
10
|
+
* and no date or number is formatted in the browser's language rather than
|
|
11
|
+
* the application's.
|
|
9
12
|
*
|
|
10
13
|
* It ships from the package rather than the registry because it is not a
|
|
11
14
|
* component - it is not copied into a product and edited there, it is a check
|
|
@@ -20,7 +23,11 @@ import { noRawColor } from './no-raw-color.js';
|
|
|
20
23
|
*/
|
|
21
24
|
const plugin = {
|
|
22
25
|
meta: { name: 'dowel' },
|
|
23
|
-
rules: {
|
|
26
|
+
rules: {
|
|
27
|
+
'no-raw-color': noRawColor,
|
|
28
|
+
'no-native-select': noNativeSelect,
|
|
29
|
+
'no-implicit-locale': noImplicitLocale,
|
|
30
|
+
},
|
|
24
31
|
};
|
|
25
32
|
/** The rules, applied where components live. Scoped to TypeScript sources:
|
|
26
33
|
* the theme is CSS and the build tools are Node, and neither is a component. */
|
|
@@ -31,6 +38,7 @@ const recommended = [
|
|
|
31
38
|
rules: {
|
|
32
39
|
'dowel/no-raw-color': 'error',
|
|
33
40
|
'dowel/no-native-select': 'error',
|
|
41
|
+
'dowel/no-implicit-locale': 'error',
|
|
34
42
|
},
|
|
35
43
|
},
|
|
36
44
|
];
|
|
@@ -42,5 +50,6 @@ const dowel = Object.assign(plugin, {
|
|
|
42
50
|
});
|
|
43
51
|
export default dowel;
|
|
44
52
|
export { noRawColor, findRawColor } from './no-raw-color.js';
|
|
53
|
+
export { noImplicitLocale } from './no-implicit-locale.js';
|
|
45
54
|
export { noNativeSelect } from './no-native-select.js';
|
|
46
55
|
//# sourceMappingURL=index.js.map
|
package/dist/eslint/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eslint/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IACvB,KAAK,EAAE;QACL,cAAc,EAAE,UAAU;QAC1B,kBAAkB,EAAE,cAAc;QAClC,oBAAoB,EAAE,gBAAgB;KACvC;CACsB,CAAA;AAEzB;gFACgF;AAChF,MAAM,WAAW,GAAoB;IACnC;QACE,KAAK,EAAE,CAAC,eAAe,CAAC;QACxB,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QAC1B,KAAK,EAAE;YACL,oBAAoB,EAAE,OAAO;YAC7B,wBAAwB,EAAE,OAAO;YACjC,0BAA0B,EAAE,OAAO;SACpC;KACF;CACF,CAAA;AAED;;+EAE+E;AAC/E,MAAM,KAAK,GAAkE,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;IACjG,OAAO,EAAE,EAAE,WAAW,EAAE;CACzB,CAAC,CAAA;AAEF,eAAe,KAAK,CAAA;AACpB,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-implicit-locale.d.ts","sourceRoot":"","sources":["../../src/eslint/no-implicit-locale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AA4DlC,eAAO,MAAM,gBAAgB,EAAE,IAAI,CAAC,UA+BnC,CAAA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* `no-implicit-locale` - a date or a number formatted without saying in which
|
|
3
|
+
* language.
|
|
4
|
+
*
|
|
5
|
+
* `toLocaleDateString()` with no argument, or with `[]`, or `new
|
|
6
|
+
* Intl.DateTimeFormat(undefined)`, asks for the *browser's* language. The
|
|
7
|
+
* interface is written in the application's. When the two differ - an English
|
|
8
|
+
* product in a browser set to Russian - the screen shows English headings over
|
|
9
|
+
* Russian weekdays, and nothing anywhere is wrong enough to fail: that is how
|
|
10
|
+
* kasl-server shipped it.
|
|
11
|
+
*
|
|
12
|
+
* The fix is one place that answers: `useLocale()` from `dowel-ui`, which reads
|
|
13
|
+
* the nearest `LocaleProvider` or the page's `<html lang>`. This rule reports
|
|
14
|
+
* every call that skips it. A variable passed as the locale is not reported -
|
|
15
|
+
* the rule cannot know where it came from, and naming one is the decision the
|
|
16
|
+
* rule is asking for.
|
|
17
|
+
*/
|
|
18
|
+
/** Methods whose first argument is the locale. */
|
|
19
|
+
const METHODS = new Set(['toLocaleString', 'toLocaleDateString', 'toLocaleTimeString']);
|
|
20
|
+
/** `Intl` constructors whose first argument is the locale. */
|
|
21
|
+
const FORMATTERS = new Set([
|
|
22
|
+
'DateTimeFormat',
|
|
23
|
+
'NumberFormat',
|
|
24
|
+
'RelativeTimeFormat',
|
|
25
|
+
'ListFormat',
|
|
26
|
+
'PluralRules',
|
|
27
|
+
'Collator',
|
|
28
|
+
'DisplayNames',
|
|
29
|
+
'Segmenter',
|
|
30
|
+
'DurationFormat',
|
|
31
|
+
]);
|
|
32
|
+
const MESSAGE = 'This formats in the browser\'s language, not the application\'s. Pass the locale from ' +
|
|
33
|
+
'`useLocale()` (dowel-ui), so a date or a number reads in the language the interface is written in.';
|
|
34
|
+
/** Whether an argument leaves the choice to the browser. */
|
|
35
|
+
function implicit(argument) {
|
|
36
|
+
if (argument === undefined)
|
|
37
|
+
return true;
|
|
38
|
+
if (argument.type === 'Identifier' && argument.name === 'undefined')
|
|
39
|
+
return true;
|
|
40
|
+
if (argument.type === 'ArrayExpression' && (argument.elements?.length ?? 0) === 0)
|
|
41
|
+
return true;
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
export const noImplicitLocale = {
|
|
45
|
+
meta: {
|
|
46
|
+
type: 'problem',
|
|
47
|
+
docs: {
|
|
48
|
+
description: 'Forbid formatting a date or a number without naming the locale.',
|
|
49
|
+
url: 'https://lacodda.github.io/dowel/guides/linting/',
|
|
50
|
+
},
|
|
51
|
+
schema: [],
|
|
52
|
+
messages: { implicit: MESSAGE },
|
|
53
|
+
},
|
|
54
|
+
create(context) {
|
|
55
|
+
return {
|
|
56
|
+
CallExpression(node) {
|
|
57
|
+
const call = node;
|
|
58
|
+
const callee = call.callee;
|
|
59
|
+
if (callee?.type !== 'MemberExpression' || callee.computed)
|
|
60
|
+
return;
|
|
61
|
+
if (!METHODS.has(callee.property?.name ?? ''))
|
|
62
|
+
return;
|
|
63
|
+
// `n.toLocaleString()` on a number or a date. A string has no
|
|
64
|
+
// `toLocaleString` that formats anything, so the name is enough.
|
|
65
|
+
if (implicit(call.arguments?.[0]))
|
|
66
|
+
context.report({ node, messageId: 'implicit' });
|
|
67
|
+
},
|
|
68
|
+
NewExpression(node) {
|
|
69
|
+
const call = node;
|
|
70
|
+
const callee = call.callee;
|
|
71
|
+
if (callee?.type !== 'MemberExpression' || callee.computed)
|
|
72
|
+
return;
|
|
73
|
+
if (callee.object?.type !== 'Identifier' || callee.object.name !== 'Intl')
|
|
74
|
+
return;
|
|
75
|
+
if (!FORMATTERS.has(callee.property?.name ?? ''))
|
|
76
|
+
return;
|
|
77
|
+
if (implicit(call.arguments?.[0]))
|
|
78
|
+
context.report({ node, messageId: 'implicit' });
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=no-implicit-locale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"no-implicit-locale.js","sourceRoot":"","sources":["../../src/eslint/no-implicit-locale.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AAEH,kDAAkD;AAClD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CAAA;AAEvF,8DAA8D;AAC9D,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,gBAAgB;IAChB,cAAc;IACd,oBAAoB;IACpB,YAAY;IACZ,aAAa;IACb,UAAU;IACV,cAAc;IACd,WAAW;IACX,gBAAgB;CACjB,CAAC,CAAA;AAEF,MAAM,OAAO,GACX,wFAAwF;IACxF,oGAAoG,CAAA;AActG,4DAA4D;AAC5D,SAAS,QAAQ,CAAC,QAA0B;IAC1C,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IACvC,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAA;IAChF,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAC9F,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,iEAAiE;YAC9E,GAAG,EAAE,iDAAiD;SACvD;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE;KAChC;IACD,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,cAAc,CAAC,IAAe;gBAC5B,MAAM,IAAI,GAAG,IAAuB,CAAA;gBACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;gBAC1B,IAAI,MAAM,EAAE,IAAI,KAAK,kBAAkB,IAAI,MAAM,CAAC,QAAQ;oBAAE,OAAM;gBAClE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;oBAAE,OAAM;gBACrD,8DAA8D;gBAC9D,iEAAiE;gBACjE,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;YACpF,CAAC;YACD,aAAa,CAAC,IAAe;gBAC3B,MAAM,IAAI,GAAG,IAAuB,CAAA;gBACpC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;gBAC1B,IAAI,MAAM,EAAE,IAAI,KAAK,kBAAkB,IAAI,MAAM,CAAC,QAAQ;oBAAE,OAAM;gBAClE,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM;oBAAE,OAAM;gBACjF,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;oBAAE,OAAM;gBACxD,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;oBAAE,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;YACpF,CAAC;SACmB,CAAA;IACxB,CAAC;CACF,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { cn } from './cn.js';
|
|
2
2
|
export { lineProducts, lineProduct, type LineProduct } from './line.js';
|
|
3
|
+
export { documentLocale, fallbackLocale, LocaleProvider, useLocale, type LocaleProviderProps, } from './locale.js';
|
|
3
4
|
export { defaultStorageKey, initTheme, nextTheme, resolvedTheme, useTheme, useThemeSwitch, type Theme, } from './theme.js';
|
|
4
5
|
/** Tokens that carry a colour. Ordered as they read on a screen: grounds,
|
|
5
6
|
* then hairlines, then ink, then the accent, then status. */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export { cn } from './cn.js';
|
|
18
18
|
export { lineProducts, lineProduct } from './line.js';
|
|
19
|
+
export { documentLocale, fallbackLocale, LocaleProvider, useLocale, } from './locale.js';
|
|
19
20
|
export { defaultStorageKey, initTheme, nextTheme, resolvedTheme, useTheme, useThemeSwitch, } from './theme.js';
|
|
20
21
|
/** Tokens that carry a colour. Ordered as they read on a screen: grounds,
|
|
21
22
|
* then hairlines, then ink, then the accent, then status. */
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/locale.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
/** The answer when nothing on the page names a language. */
|
|
3
|
+
export declare const fallbackLocale = "en";
|
|
4
|
+
/** The page's declared language, or the fallback. Safe outside a browser. */
|
|
5
|
+
export declare function documentLocale(): string;
|
|
6
|
+
export interface LocaleProviderProps {
|
|
7
|
+
/** A BCP 47 tag, as `<html lang>` takes it: `en`, `pt-BR`, `ru`. */
|
|
8
|
+
locale: string;
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
}
|
|
11
|
+
/** Sets the language for a part of the page that speaks another one. */
|
|
12
|
+
export declare function LocaleProvider({ locale, children }: LocaleProviderProps): import("react").FunctionComponentElement<import("react").ProviderProps<string | null>>;
|
|
13
|
+
/** The language to format in: an explicit one if given, else the nearest
|
|
14
|
+
* `LocaleProvider`, else `<html lang>`, else English. */
|
|
15
|
+
export declare function useLocale(explicit?: string): string;
|
|
16
|
+
//# sourceMappingURL=locale.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AA6BtG,4DAA4D;AAC5D,eAAO,MAAM,cAAc,OAAO,CAAA;AAElC,6EAA6E;AAC7E,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAWD,MAAM,WAAW,mBAAmB;IAClC,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB;AAED,wEAAwE;AACxE,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,mBAAmB,0FAEvE;AAED;yDACyD;AACzD,wBAAgB,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAInD"}
|
package/dist/locale.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { createContext, createElement, useContext, useSyncExternalStore } from 'react';
|
|
2
|
+
/*
|
|
3
|
+
* The language an application speaks, as the one place dates and numbers ask.
|
|
4
|
+
*
|
|
5
|
+
* kasl-server's interface was English and its week headings came out in
|
|
6
|
+
* Russian: `toLocaleDateString([])` asks for the *browser's* language, and the
|
|
7
|
+
* browser belonged to someone in Moscow. Nothing was wrong with the call, and
|
|
8
|
+
* nothing was wrong with the browser - the formatting simply asked a different
|
|
9
|
+
* question from the one the interface answers. Every product that formats a
|
|
10
|
+
* date without naming a locale carries the same defect, waiting for a reader
|
|
11
|
+
* whose browser speaks a language the product does not.
|
|
12
|
+
*
|
|
13
|
+
* So the question is asked of the application, and the application answers
|
|
14
|
+
* in one place it already has to fill in: `<html lang>`. That attribute is
|
|
15
|
+
* what a screen reader pronounces the page in and what axe insists on, so a
|
|
16
|
+
* product sets it anyway; from now on it also decides how a Tuesday is
|
|
17
|
+
* written. It is watched, so a product that switches language by setting the
|
|
18
|
+
* attribute re-renders every date without a provider.
|
|
19
|
+
*
|
|
20
|
+
* `LocaleProvider` is for a part of the page that speaks another language than
|
|
21
|
+
* the rest - a preview of a document in its own language, a settings screen
|
|
22
|
+
* showing the choice before it is applied. An explicit `locale` prop on a
|
|
23
|
+
* primitive beats both.
|
|
24
|
+
*
|
|
25
|
+
* When nothing is declared the answer is English, the line's default - never
|
|
26
|
+
* the browser's language, which is the defect this exists to close.
|
|
27
|
+
*/
|
|
28
|
+
/** The answer when nothing on the page names a language. */
|
|
29
|
+
export const fallbackLocale = 'en';
|
|
30
|
+
/** The page's declared language, or the fallback. Safe outside a browser. */
|
|
31
|
+
export function documentLocale() {
|
|
32
|
+
if (typeof document === 'undefined')
|
|
33
|
+
return fallbackLocale;
|
|
34
|
+
return document.documentElement.lang.trim() || fallbackLocale;
|
|
35
|
+
}
|
|
36
|
+
function subscribe(onChange) {
|
|
37
|
+
if (typeof MutationObserver === 'undefined' || typeof document === 'undefined')
|
|
38
|
+
return () => undefined;
|
|
39
|
+
const observer = new MutationObserver(onChange);
|
|
40
|
+
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['lang'] });
|
|
41
|
+
return () => observer.disconnect();
|
|
42
|
+
}
|
|
43
|
+
const LocaleContext = createContext(null);
|
|
44
|
+
/** Sets the language for a part of the page that speaks another one. */
|
|
45
|
+
export function LocaleProvider({ locale, children }) {
|
|
46
|
+
return createElement(LocaleContext.Provider, { value: locale }, children);
|
|
47
|
+
}
|
|
48
|
+
/** The language to format in: an explicit one if given, else the nearest
|
|
49
|
+
* `LocaleProvider`, else `<html lang>`, else English. */
|
|
50
|
+
export function useLocale(explicit) {
|
|
51
|
+
const provided = useContext(LocaleContext);
|
|
52
|
+
const declared = useSyncExternalStore(subscribe, documentLocale, () => fallbackLocale);
|
|
53
|
+
return explicit ?? provided ?? declared;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=locale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locale.js","sourceRoot":"","sources":["../src/locale.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAkB,MAAM,OAAO,CAAA;AAEtG;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAA;AAElC,6EAA6E;AAC7E,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,cAAc,CAAA;IAC1D,OAAO,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,cAAc,CAAA;AAC/D,CAAC;AAED,SAAS,SAAS,CAAC,QAAoB;IACrC,IAAI,OAAO,gBAAgB,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,GAAG,EAAE,CAAC,SAAS,CAAA;IACtG,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC/C,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAC3F,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;AACpC,CAAC;AAED,MAAM,aAAa,GAAG,aAAa,CAAgB,IAAI,CAAC,CAAA;AAQxD,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAuB;IACtE,OAAO,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAA;AAC3E,CAAC;AAED;yDACyD;AACzD,MAAM,UAAU,SAAS,CAAC,QAAiB;IACzC,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,CAAA;IACtF,OAAO,QAAQ,IAAI,QAAQ,IAAI,QAAQ,CAAA;AACzC,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#8A7DF5" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#8A7DF5">at</text><g transform="translate(0 6)">
|
|
2
|
+
<path d="M50 51 L53 63 L65 66 L53 69 L50 81 L47 69 L35 66 L47 63 Z" fill="#8A7DF5" fill-opacity="0.55"/>
|
|
3
|
+
<circle cx="66" cy="53" r="1.8" fill="#8A7DF5" fill-opacity="0.385"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#8A7DF5" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#8A7DF5">at</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#8A7DF5" stroke="#8A7DF5" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#F7F8F4">at</text></svg>
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#C25BD9" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#C25BD9">au</text><g transform="translate(0 6)" stroke="#C25BD9" stroke-linecap="round">
|
|
2
|
+
<line x1="31" y1="66" x2="69" y2="66" stroke-opacity="0.2475" stroke-width="2.04"/>
|
|
3
|
+
<line x1="38" y1="66" x2="38" y2="56" stroke-opacity="0.55" stroke-width="3.4"/>
|
|
4
|
+
<line x1="47" y1="66" x2="47" y2="52" stroke-opacity="0.55" stroke-width="3.4"/>
|
|
5
|
+
<line x1="56" y1="66" x2="56" y2="74" stroke-opacity="0.3025" stroke-width="3.4"/>
|
|
6
|
+
<line x1="65" y1="66" x2="65" y2="71" stroke-opacity="0.3025" stroke-width="3.4"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#C25BD9" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#C25BD9">au</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#C25BD9" stroke="#C25BD9" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#F7F8F4">au</text></svg>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#E8862D" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#E8862D">dw</text><g transform="translate(0 6)" stroke-linejoin="round">
|
|
2
|
+
<polygon points="40.5,54.3 45.87,57.4 45.87,63.6 40.5,66.7 35.13,63.6 35.13,57.4" fill="none" stroke="#E8862D" stroke-opacity="0.3025" stroke-width="2.04"/>
|
|
3
|
+
<polygon points="53.5,54.3 58.87,57.4 58.87,63.6 53.5,66.7 48.13,63.6 48.13,57.4" fill="none" stroke="#E8862D" stroke-opacity="0.3025" stroke-width="2.04"/>
|
|
4
|
+
<polygon points="47,65.6 52.37,68.7 52.37,74.9 47,78 41.63,74.9 41.63,68.7" fill="#E8862D" fill-opacity="0.55"/>
|
|
5
|
+
<polygon points="60,65.6 65.37,68.7 65.37,74.9 60,78 54.63,74.9 54.63,68.7" fill="none" stroke="#E8862D" stroke-opacity="0.3025" stroke-width="2.04"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#E8862D" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#E8862D">dw</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#E8862D" stroke="#E8862D" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#16191C">dw</text></svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#5470E8" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#5470E8">ef</text><g transform="translate(0 6)">
|
|
2
|
+
<rect x="33" y="55" width="9" height="4" rx="2" fill="#5470E8" fill-opacity="0.45"/>
|
|
3
|
+
<rect x="46" y="55" width="21" height="4" rx="2" fill="#5470E8" fill-opacity="0.25"/>
|
|
4
|
+
<rect x="33" y="62" width="9" height="4" rx="2" fill="#5470E8" fill-opacity="0.45"/>
|
|
5
|
+
<rect x="46" y="62" width="21" height="4" rx="2" fill="#5470E8" fill-opacity="0.25"/>
|
|
6
|
+
<rect x="33" y="69" width="9" height="4" rx="2" fill="#5470E8" fill-opacity="0.45"/>
|
|
7
|
+
<rect x="46" y="69" width="8" height="4" rx="2" fill="#5470E8" fill-opacity="0.25"/>
|
|
8
|
+
<circle cx="61" cy="71" r="3.6" fill="#5470E8" fill-opacity="0.55"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#5470E8" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#5470E8">ef</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#5470E8" stroke="#5470E8" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#F7F8F4">ef</text></svg>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><defs><linearGradient id="pair" gradientUnits="userSpaceOnUse" x1="11" y1="5" x2="89" y2="95"><stop offset="0" stop-color="#D9704A"/><stop offset="1" stop-color="#C0B83A"/></linearGradient></defs><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="url(#pair)" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="url(#pair)">fr</text><g transform="translate(0 6)" fill="none" stroke="url(#pair)" stroke-linecap="round">
|
|
2
|
+
<path d="M43 79 V53" stroke-opacity="0.25" stroke-width="2.55"/>
|
|
3
|
+
<path d="M43 68 C43 60 58 64 58 56" stroke-opacity="0.25" stroke-width="2.55"/>
|
|
4
|
+
<circle cx="43" cy="77" r="2.2" fill="url(#pair)" fill-opacity="0.33" stroke="none"/>
|
|
5
|
+
<circle cx="43" cy="66" r="2.2" fill="url(#pair)" fill-opacity="0.33" stroke="none"/>
|
|
6
|
+
<circle cx="43" cy="55" r="2.2" fill="url(#pair)" fill-opacity="0.33" stroke="none"/>
|
|
7
|
+
<circle cx="58" cy="55" r="2.6" fill="url(#pair)" fill-opacity="0.55" stroke="none"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><defs><linearGradient id="pair" gradientUnits="userSpaceOnUse" x1="11" y1="5" x2="89" y2="95"><stop offset="0" stop-color="#D9704A"/><stop offset="1" stop-color="#C0B83A"/></linearGradient></defs><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="url(#pair)" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="url(#pair)">fr</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><defs><linearGradient id="pair" gradientUnits="userSpaceOnUse" x1="11" y1="5" x2="89" y2="95"><stop offset="0" stop-color="#D9704A"/><stop offset="1" stop-color="#C0B83A"/></linearGradient></defs><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="url(#pair)" stroke="url(#pair)" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#16191C">fr</text></svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#D64550" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#D64550">hv</text><g transform="translate(0 6)" stroke="#D64550" stroke-linecap="round" stroke-linejoin="round" fill="none">
|
|
2
|
+
<path d="M36 53 H64 a4 4 0 0 1 4 4 V68 a4 4 0 0 1 -4 4 H49 L43 78 V72 H36 a4 4 0 0 1 -4 -4 V57 a4 4 0 0 1 4 -4 Z" stroke-opacity="0.33" stroke-width="2.38"/>
|
|
3
|
+
<line x1="40" y1="62.5" x2="60" y2="62.5" stroke-opacity="0.55" stroke-width="2.89" stroke-dasharray="6 4"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#D64550" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#D64550">hv</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#D64550" stroke="#D64550" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#F7F8F4">hv</text></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#A9C23F" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#A9C23F">ka</text><g fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 6)" stroke="#A9C23F" stroke-width="3.1">
|
|
2
|
+
<path d="M40 57 L46 63 L40 69" stroke-opacity="0.22"/>
|
|
3
|
+
<path d="M50 57 L56 63 L50 69" stroke-opacity="0.385"/>
|
|
4
|
+
<path d="M60 57 L66 63 L60 69" stroke-opacity="0.55"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#A9C23F" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#A9C23F">ka</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#A9C23F" stroke="#A9C23F" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#16191C">ka</text></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#D9A82E" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#D9A82E">ks</text><g fill="none" stroke-linecap="round" stroke-linejoin="round" transform="translate(0 6)" stroke="#D9A82E" stroke-width="3.1">
|
|
2
|
+
<path d="M34 57 L40 63 L34 69" stroke-opacity="0.2475"/>
|
|
3
|
+
<path d="M44 57 L50 63 L44 69" stroke-opacity="0.4125"/>
|
|
4
|
+
<path d="M58 53 L64 53 L64 73 L58 73" stroke-opacity="0.55"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#D9A82E" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#D9A82E">ks</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#D9A82E" stroke="#D9A82E" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#16191C">ks</text></svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#D9569E" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#D9569E">ki</text><g transform="translate(0 6)">
|
|
2
|
+
<path d="M50 78 Q39 70 44 60 Q46 65 49 66 Q46.5 56 55 50 Q52 62 58 66 Q61 72 50 78 Z" fill="#D9569E" fill-opacity="0.55"/>
|
|
3
|
+
<path d="M50 74 Q46 70 48.5 65 Q50 69 52.5 67 Q53 71 50 74 Z" fill="#1B2126" fill-opacity="0.34"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#D9569E" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#D9569E">ki</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#D9569E" stroke="#D9569E" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#F7F8F4">ki</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#8E9AA3" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="42" fill="#8E9AA3">λ</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#8E9AA3" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#8E9AA3">λ</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#8E9AA3" stroke="#8E9AA3" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#16191C">λ</text></svg>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#4A8FE8" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#4A8FE8">ly</text><g transform="translate(0 6)" stroke-linecap="round">
|
|
2
|
+
<path d="M42 55 L38 68 L52 74 L58 62 Z" fill="none" stroke="#4A8FE8" stroke-opacity="0.2475" stroke-width="1.6" stroke-linejoin="round"/>
|
|
3
|
+
<line x1="58" y1="62" x2="66" y2="54" stroke="#4A8FE8" stroke-opacity="0.2475" stroke-width="1.6"/>
|
|
4
|
+
<circle cx="66" cy="54" r="2.9" fill="#4A8FE8" fill-opacity="0.55"/>
|
|
5
|
+
<circle cx="42" cy="55" r="1.7" fill="#4A8FE8" fill-opacity="0.4125"/>
|
|
6
|
+
<circle cx="38" cy="68" r="1.7" fill="#4A8FE8" fill-opacity="0.4125"/>
|
|
7
|
+
<circle cx="52" cy="74" r="1.7" fill="#4A8FE8" fill-opacity="0.4125"/>
|
|
8
|
+
<circle cx="58" cy="62" r="1.7" fill="#4A8FE8" fill-opacity="0.4125"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#4A8FE8" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#4A8FE8">ly</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#4A8FE8" stroke="#4A8FE8" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#F7F8F4">ly</text></svg>
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#6D7BF2" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#6D7BF2">ln</text><g transform="translate(0 6)" stroke-linejoin="round" stroke-linecap="round">
|
|
2
|
+
<path d="M32 78 L50 52 L68 78" fill="none" stroke="#6D7BF2" stroke-opacity="0.33" stroke-width="2.04"/>
|
|
3
|
+
<path d="M44.5 60 L50 52 L55.5 60 L52.8 62.5 L50 60 L47.2 62.5 Z" fill="#6D7BF2" fill-opacity="0.55"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#6D7BF2" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#6D7BF2">ln</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#6D7BF2" stroke="#6D7BF2" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#F7F8F4">ln</text></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#A46BE8" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#A46BE8">mi</text><g transform="translate(0 6)">
|
|
2
|
+
<rect x="33" y="54" width="34" height="5" rx="2" fill="#A46BE8" fill-opacity="0.154"/>
|
|
3
|
+
<rect x="33" y="62" width="34" height="5" rx="2" fill="#A46BE8" fill-opacity="0.33"/>
|
|
4
|
+
<rect x="33" y="70" width="34" height="5" rx="2" fill="#A46BE8" fill-opacity="0.55"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#A46BE8" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#A46BE8">mi</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#A46BE8" stroke="#A46BE8" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#F7F8F4">mi</text></svg>
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#3FA9D9" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="52" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="30" fill="#3FA9D9">nd</text><g transform="translate(0 6)">
|
|
2
|
+
<rect x="33" y="59" width="9" height="14" rx="1.6" fill="#3FA9D9" fill-opacity="0.154"/>
|
|
3
|
+
<rect x="45" y="59" width="9" height="14" rx="1.6" fill="#3FA9D9" fill-opacity="0.341"/>
|
|
4
|
+
<rect x="57" y="59" width="9" height="14" rx="1.6" fill="#3FA9D9" fill-opacity="0.55"/></g></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#1B2126" stroke="#1B2126" stroke-width="9" stroke-linejoin="round"/><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="none" stroke="#3FA9D9" stroke-opacity="0.75" stroke-width="3.5" stroke-linejoin="round"/><text x="50" y="64" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="700" font-size="40" fill="#3FA9D9">nd</text></svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" viewBox="0 0 100 100"><polygon points="50,5 89,27.5 89,72.5 50,95 11,72.5 11,27.5" fill="#3FA9D9" stroke="#3FA9D9" stroke-width="9" stroke-linejoin="round"/><text x="50" y="66" text-anchor="middle" font-family='"Cascadia Code","JetBrains Mono",Consolas,ui-monospace,monospace' font-weight="800" font-size="46" fill="#F7F8F4">nd</text></svg>
|