@nadicodeai/design-system 9.2.0 → 10.0.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 +1 -1
- package/DESIGN.md +170 -287
- package/GLOSSARY.md +4 -4
- package/README.md +32 -27
- package/dist/assets/app-icon.png +0 -0
- package/dist/assets/app-icon.svg +1 -0
- package/dist/assets/logo-one-ink-white.png +0 -0
- package/dist/assets/logo-one-ink-white.svg +1 -0
- package/dist/assets/logo-one-ink.png +0 -0
- package/dist/assets/logo-one-ink.svg +1 -0
- package/dist/assets/logo-white.png +0 -0
- package/dist/assets/logo-white.svg +1 -0
- package/dist/assets/logo.png +0 -0
- package/dist/assets/logo.svg +1 -0
- package/dist/assets/mark-white.png +0 -0
- package/dist/assets/mark-white.svg +1 -0
- package/dist/assets/mark.png +0 -0
- package/dist/assets/mark.svg +1 -0
- package/dist/css/host.css +45 -150
- package/dist/css/index.css +113 -912
- package/dist/css/tokens.css +44 -149
- package/dist/favicon/apple-touch-icon.png +0 -0
- package/dist/favicon/favicon.ico +0 -0
- package/dist/favicon/favicon.svg +1 -7
- package/dist/favicon/icon-192.png +0 -0
- package/dist/favicon/icon-512.png +0 -0
- package/dist/favicon/site.webmanifest +4 -4
- package/dist/icons/agent.svg +1 -1
- package/dist/icons/approvals.svg +1 -1
- package/dist/icons/arch.svg +1 -1
- package/dist/tailwind/nadicode.tailwind.json +23 -91
- package/dist/tokens/nadicode.dtcg-resolved.json +56 -426
- package/dist/tokens/nadicode.dtcg.json +56 -426
- package/package.json +43 -83
- package/src/assets/logo-geometry.d.ts +10 -7
- package/src/assets/logo-geometry.js +119 -172
- package/dist/assets/logo-lockup-inverse.png +0 -0
- package/dist/assets/logo-lockup-inverse.svg +0 -4
- package/dist/assets/logo-lockup-mono.png +0 -0
- package/dist/assets/logo-lockup-mono.svg +0 -4
- package/dist/assets/logo-lockup-on-verde.png +0 -0
- package/dist/assets/logo-lockup-on-verde.svg +0 -4
- package/dist/assets/logo-lockup.png +0 -0
- package/dist/assets/logo-lockup.svg +0 -4
- package/dist/assets/logo-mark-inverse.png +0 -0
- package/dist/assets/logo-mark-inverse.svg +0 -6
- package/dist/assets/logo-mark-mono.png +0 -0
- package/dist/assets/logo-mark-mono.svg +0 -6
- package/dist/assets/logo-mark-on-verde.png +0 -0
- package/dist/assets/logo-mark-on-verde.svg +0 -6
- package/dist/assets/logo-mark.png +0 -0
- package/dist/assets/logo-mark.svg +0 -6
- package/dist/assets/logo-wordmark-inverse.png +0 -0
- package/dist/assets/logo-wordmark-inverse.svg +0 -4
- package/dist/assets/logo-wordmark-mono.png +0 -0
- package/dist/assets/logo-wordmark-mono.svg +0 -4
- package/dist/assets/logo-wordmark-on-verde.png +0 -0
- package/dist/assets/logo-wordmark-on-verde.svg +0 -4
- package/dist/assets/logo-wordmark.png +0 -0
- package/dist/assets/logo-wordmark.svg +0 -4
- package/src/assets/logo-mark.d.ts +0 -2
- package/src/assets/logo-wordmark.d.ts +0 -2
- /package/src/assets/{logo-lockup.d.ts → logo-asset.d.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nadicodeai/design-system",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -17,101 +17,61 @@
|
|
|
17
17
|
"./css/host": "./dist/css/host.css",
|
|
18
18
|
"./icons/*": "./dist/icons/*",
|
|
19
19
|
"./favicon/*": "./dist/favicon/*",
|
|
20
|
-
"./assets/logo
|
|
21
|
-
"types": "./src/assets/logo-
|
|
22
|
-
"default": "./dist/assets/logo
|
|
20
|
+
"./assets/logo": {
|
|
21
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
22
|
+
"default": "./dist/assets/logo.svg"
|
|
23
23
|
},
|
|
24
|
-
"./assets/logo
|
|
25
|
-
"types": "./src/assets/logo-
|
|
26
|
-
"default": "./dist/assets/logo
|
|
24
|
+
"./assets/logo.png": {
|
|
25
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
26
|
+
"default": "./dist/assets/logo.png"
|
|
27
27
|
},
|
|
28
|
-
"./assets/logo-
|
|
29
|
-
"types": "./src/assets/logo-
|
|
30
|
-
"default": "./dist/assets/logo-
|
|
28
|
+
"./assets/logo-white": {
|
|
29
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
30
|
+
"default": "./dist/assets/logo-white.svg"
|
|
31
31
|
},
|
|
32
|
-
"./assets/logo-
|
|
33
|
-
"types": "./src/assets/logo-
|
|
34
|
-
"default": "./dist/assets/logo-
|
|
32
|
+
"./assets/logo-white.png": {
|
|
33
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
34
|
+
"default": "./dist/assets/logo-white.png"
|
|
35
35
|
},
|
|
36
|
-
"./assets/logo-
|
|
37
|
-
"types": "./src/assets/logo-
|
|
38
|
-
"default": "./dist/assets/logo-
|
|
36
|
+
"./assets/logo-one-ink": {
|
|
37
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
38
|
+
"default": "./dist/assets/logo-one-ink.svg"
|
|
39
39
|
},
|
|
40
|
-
"./assets/logo-
|
|
41
|
-
"types": "./src/assets/logo-
|
|
42
|
-
"default": "./dist/assets/logo-
|
|
40
|
+
"./assets/logo-one-ink.png": {
|
|
41
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
42
|
+
"default": "./dist/assets/logo-one-ink.png"
|
|
43
43
|
},
|
|
44
|
-
"./assets/logo-
|
|
45
|
-
"types": "./src/assets/logo-
|
|
46
|
-
"default": "./dist/assets/logo-
|
|
44
|
+
"./assets/logo-one-ink-white": {
|
|
45
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
46
|
+
"default": "./dist/assets/logo-one-ink-white.svg"
|
|
47
47
|
},
|
|
48
|
-
"./assets/logo-
|
|
49
|
-
"types": "./src/assets/logo-
|
|
50
|
-
"default": "./dist/assets/logo-
|
|
48
|
+
"./assets/logo-one-ink-white.png": {
|
|
49
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
50
|
+
"default": "./dist/assets/logo-one-ink-white.png"
|
|
51
51
|
},
|
|
52
|
-
"./assets/
|
|
53
|
-
"types": "./src/assets/logo-
|
|
54
|
-
"default": "./dist/assets/
|
|
52
|
+
"./assets/mark": {
|
|
53
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
54
|
+
"default": "./dist/assets/mark.svg"
|
|
55
55
|
},
|
|
56
|
-
"./assets/
|
|
57
|
-
"types": "./src/assets/logo-
|
|
58
|
-
"default": "./dist/assets/
|
|
56
|
+
"./assets/mark.png": {
|
|
57
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
58
|
+
"default": "./dist/assets/mark.png"
|
|
59
59
|
},
|
|
60
|
-
"./assets/
|
|
61
|
-
"types": "./src/assets/logo-
|
|
62
|
-
"default": "./dist/assets/
|
|
60
|
+
"./assets/mark-white": {
|
|
61
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
62
|
+
"default": "./dist/assets/mark-white.svg"
|
|
63
63
|
},
|
|
64
|
-
"./assets/
|
|
65
|
-
"types": "./src/assets/logo-
|
|
66
|
-
"default": "./dist/assets/
|
|
64
|
+
"./assets/mark-white.png": {
|
|
65
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
66
|
+
"default": "./dist/assets/mark-white.png"
|
|
67
67
|
},
|
|
68
|
-
"./assets/
|
|
69
|
-
"types": "./src/assets/logo-
|
|
70
|
-
"default": "./dist/assets/
|
|
68
|
+
"./assets/app-icon": {
|
|
69
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
70
|
+
"default": "./dist/assets/app-icon.svg"
|
|
71
71
|
},
|
|
72
|
-
"./assets/
|
|
73
|
-
"types": "./src/assets/logo-
|
|
74
|
-
"default": "./dist/assets/
|
|
75
|
-
},
|
|
76
|
-
"./assets/logo-wordmark-mono.png": {
|
|
77
|
-
"types": "./src/assets/logo-wordmark.d.ts",
|
|
78
|
-
"default": "./dist/assets/logo-wordmark-mono.png"
|
|
79
|
-
},
|
|
80
|
-
"./assets/logo-wordmark-on-verde.png": {
|
|
81
|
-
"types": "./src/assets/logo-wordmark.d.ts",
|
|
82
|
-
"default": "./dist/assets/logo-wordmark-on-verde.png"
|
|
83
|
-
},
|
|
84
|
-
"./assets/logo-lockup": {
|
|
85
|
-
"types": "./src/assets/logo-lockup.d.ts",
|
|
86
|
-
"default": "./dist/assets/logo-lockup.svg"
|
|
87
|
-
},
|
|
88
|
-
"./assets/logo-lockup-inverse": {
|
|
89
|
-
"types": "./src/assets/logo-lockup.d.ts",
|
|
90
|
-
"default": "./dist/assets/logo-lockup-inverse.svg"
|
|
91
|
-
},
|
|
92
|
-
"./assets/logo-lockup-mono": {
|
|
93
|
-
"types": "./src/assets/logo-lockup.d.ts",
|
|
94
|
-
"default": "./dist/assets/logo-lockup-mono.svg"
|
|
95
|
-
},
|
|
96
|
-
"./assets/logo-lockup-on-verde": {
|
|
97
|
-
"types": "./src/assets/logo-lockup.d.ts",
|
|
98
|
-
"default": "./dist/assets/logo-lockup-on-verde.svg"
|
|
99
|
-
},
|
|
100
|
-
"./assets/logo-lockup.png": {
|
|
101
|
-
"types": "./src/assets/logo-lockup.d.ts",
|
|
102
|
-
"default": "./dist/assets/logo-lockup.png"
|
|
103
|
-
},
|
|
104
|
-
"./assets/logo-lockup-inverse.png": {
|
|
105
|
-
"types": "./src/assets/logo-lockup.d.ts",
|
|
106
|
-
"default": "./dist/assets/logo-lockup-inverse.png"
|
|
107
|
-
},
|
|
108
|
-
"./assets/logo-lockup-mono.png": {
|
|
109
|
-
"types": "./src/assets/logo-lockup.d.ts",
|
|
110
|
-
"default": "./dist/assets/logo-lockup-mono.png"
|
|
111
|
-
},
|
|
112
|
-
"./assets/logo-lockup-on-verde.png": {
|
|
113
|
-
"types": "./src/assets/logo-lockup.d.ts",
|
|
114
|
-
"default": "./dist/assets/logo-lockup-on-verde.png"
|
|
72
|
+
"./assets/app-icon.png": {
|
|
73
|
+
"types": "./src/assets/logo-asset.d.ts",
|
|
74
|
+
"default": "./dist/assets/app-icon.png"
|
|
115
75
|
},
|
|
116
76
|
"./assets/logo-geometry": {
|
|
117
77
|
"types": "./src/assets/logo-geometry.d.ts",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type LogoGeometryNode = Readonly<{
|
|
2
|
-
element: "
|
|
2
|
+
element: "circle" | "g" | "path" | "rect";
|
|
3
3
|
attributes: Readonly<Record<string, string>>;
|
|
4
4
|
children?: readonly LogoGeometryNode[];
|
|
5
5
|
}>;
|
|
@@ -9,19 +9,22 @@ export type LogoGeometry = Readonly<{
|
|
|
9
9
|
nodes: readonly LogoGeometryNode[];
|
|
10
10
|
}>;
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Presentation colours by role: `ink` paints every stroked letter, `dot` the
|
|
14
|
+
* single dot over the i, `tile` the icon's field. A geometry only names the
|
|
15
|
+
* roles it draws.
|
|
16
|
+
*/
|
|
17
|
+
export type LogoPaints = Readonly<Record<string, string>>;
|
|
16
18
|
|
|
17
19
|
export type LogoGeometryBindings = Readonly<{
|
|
18
20
|
paints: LogoPaints;
|
|
19
|
-
idPrefix?: string;
|
|
20
21
|
}>;
|
|
21
22
|
|
|
22
23
|
export declare const logoMarkGeometry: LogoGeometry;
|
|
23
24
|
export declare const logoWordmarkGeometry: LogoGeometry;
|
|
24
|
-
export declare const
|
|
25
|
+
export declare const APP_ICON_MARK_RATIO: number;
|
|
26
|
+
export declare const FAVICON_MARK_RATIO: number;
|
|
27
|
+
export declare function logoIconGeometry(size: number, markRatio: number): LogoGeometry;
|
|
25
28
|
export declare function resolveLogoGeometry(
|
|
26
29
|
geometry: LogoGeometry,
|
|
27
30
|
bindings: LogoGeometryBindings,
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Framework-neutral SVG geometry for the
|
|
2
|
+
* Framework-neutral SVG geometry for the nadicode wordmark, mark, and icon tile.
|
|
3
3
|
*
|
|
4
|
-
* Attribute values use
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Attribute values use one renderer binding: `{paint:<role>}` selects a
|
|
5
|
+
* presentation colour supplied at render time. The roles are `ink` (every
|
|
6
|
+
* stroked letter), `dot` (the single dot over the i) and `tile` (the icon's
|
|
7
|
+
* field). A geometry that names a role the caller did not supply fails loudly
|
|
8
|
+
* rather than rendering an unpainted shape.
|
|
8
9
|
*
|
|
9
10
|
* This module is the only authored logo geometry. Public SVG files, favicons,
|
|
10
11
|
* and React adapters render these descriptors instead of copying paths or rects.
|
|
12
|
+
*
|
|
13
|
+
* The drawing sits on a 100-unit x-height: the baseline is y=150, the x-height
|
|
14
|
+
* line y=50, the ascender y=0. Strokes are 18 units with flat ends; every bowl
|
|
15
|
+
* and the n's arch is radius 41 centred on y=100; the dot is radius 14, about
|
|
16
|
+
* one and a half stroke widths across so it survives at small sizes, centred
|
|
17
|
+
* 79 units above the baseline over the i's stem.
|
|
11
18
|
*/
|
|
12
19
|
|
|
13
20
|
const freezeNode = (node) => {
|
|
@@ -25,202 +32,142 @@ const freezeGeometry = (geometry) => {
|
|
|
25
32
|
return Object.freeze(geometry);
|
|
26
33
|
};
|
|
27
34
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
stroke: "{paint:ink}",
|
|
46
|
-
"stroke-width": "10",
|
|
47
|
-
x: "42",
|
|
48
|
-
y: "50",
|
|
49
|
-
width: "46",
|
|
50
|
-
height: "46",
|
|
51
|
-
rx: "13",
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
element: "rect",
|
|
56
|
-
attributes: {
|
|
57
|
-
fill: "none",
|
|
58
|
-
stroke: "{paint:primary}",
|
|
59
|
-
"stroke-width": "10",
|
|
60
|
-
x: "72",
|
|
61
|
-
y: "64",
|
|
62
|
-
width: "46",
|
|
63
|
-
height: "46",
|
|
64
|
-
rx: "13",
|
|
65
|
-
},
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
element: "rect",
|
|
69
|
-
attributes: {
|
|
70
|
-
fill: "none",
|
|
71
|
-
stroke: "{paint:ink}",
|
|
72
|
-
"stroke-width": "10",
|
|
73
|
-
x: "42",
|
|
74
|
-
y: "50",
|
|
75
|
-
width: "46",
|
|
76
|
-
height: "46",
|
|
77
|
-
rx: "13",
|
|
78
|
-
"clip-path": "url(#{id:mark-overlap})",
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
],
|
|
82
|
-
});
|
|
35
|
+
/** The n, drawn once and reused by the mark, the wordmark and the icon tile. */
|
|
36
|
+
const N_PATH = "M9 150V100A41 41 0 0 1 91 100V150";
|
|
37
|
+
|
|
38
|
+
/** The letters, in reading order, as children of one stroked group. */
|
|
39
|
+
const WORDMARK_LETTERS = [
|
|
40
|
+
{ element: "path", attributes: { d: N_PATH } },
|
|
41
|
+
{ element: "circle", attributes: { cx: "172", cy: "100", r: "41" } },
|
|
42
|
+
{ element: "path", attributes: { d: "M213 50V150" } },
|
|
43
|
+
{ element: "circle", attributes: { cx: "294", cy: "100", r: "41" } },
|
|
44
|
+
{ element: "path", attributes: { d: "M335 0V150" } },
|
|
45
|
+
{ element: "path", attributes: { d: "M375 50V150" } },
|
|
46
|
+
{ element: "path", attributes: { d: "M484.99 71.01A41 41 0 1 0 484.99 128.99" } },
|
|
47
|
+
{ element: "circle", attributes: { cx: "564", cy: "100", r: "41" } },
|
|
48
|
+
{ element: "circle", attributes: { cx: "686", cy: "100", r: "41" } },
|
|
49
|
+
{ element: "path", attributes: { d: "M727 0V150" } },
|
|
50
|
+
{ element: "path", attributes: { d: "M767 100H849A41 41 0 1 0 839.41 126.35" } },
|
|
51
|
+
];
|
|
83
52
|
|
|
53
|
+
/**
|
|
54
|
+
* The wordmark: nadicode in one geometric line. The dot is the only painted
|
|
55
|
+
* fill in the logo and the only place a second colour appears.
|
|
56
|
+
*/
|
|
84
57
|
export const logoWordmarkGeometry = freezeGeometry({
|
|
85
|
-
viewBox: "0 0
|
|
58
|
+
viewBox: "0 0 858 150",
|
|
86
59
|
nodes: [
|
|
87
60
|
{
|
|
88
61
|
element: "g",
|
|
89
|
-
attributes: {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
{
|
|
95
|
-
element: "path",
|
|
96
|
-
attributes: {
|
|
97
|
-
transform: "translate(0 0)",
|
|
98
|
-
d: "M74 0L74 710L242 710L524 220L524 710L676 710L676 0L506 0L226 473L226 0Z",
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
element: "path",
|
|
103
|
-
attributes: {
|
|
104
|
-
transform: "translate(706.867 0)",
|
|
105
|
-
d: "M225 -12Q142 -12 89.5 26.5Q37 65 37 134Q37 205 81.5 243.5Q126 282 213 300L386 334Q386 386 362.5 412.5Q339 439 295 439Q252 439 228 419.5Q204 400 197 362L46 369Q61 457 125.5 502.5Q190 548 295 548Q415 548 475.5 491Q536 434 536 324L536 141Q536 118 543.5 110.5Q551 103 566 103L581 103L581 0Q574 -2 558.5 -4Q543 -6 528 -6Q496 -6 468.5 5Q441 16 424 42.5Q407 69 407 118L420 108Q410 72 384.5 45Q359 18 318.5 3Q278 -12 225 -12ZM261 91Q298 91 326 105.5Q354 120 370 148Q386 176 386 214L386 240L264 214Q228 207 209.5 190.5Q191 174 191 148Q191 121 209 106Q227 91 261 91Z",
|
|
106
|
-
},
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
element: "path",
|
|
110
|
-
attributes: {
|
|
111
|
-
transform: "translate(1258.133 0)",
|
|
112
|
-
d: "M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z",
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
element: "path",
|
|
117
|
-
attributes: {
|
|
118
|
-
transform: "translate(1844.8 0)",
|
|
119
|
-
d: "M66 0L66 536L216 536L216 0ZM63 602L63 722L218 722L218 602Z",
|
|
120
|
-
},
|
|
121
|
-
},
|
|
122
|
-
{
|
|
123
|
-
element: "path",
|
|
124
|
-
attributes: {
|
|
125
|
-
transform: "translate(2082.667 0)",
|
|
126
|
-
d: "M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q380 548 436.5 523Q493 498 528 451Q563 404 571 338L416 331Q409 381 380.5 406.5Q352 432 309 432Q253 432 222 389Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Q352 103 381 129.5Q410 156 416 210L571 204Q564 138 529.5 89.5Q495 41 438.5 14.5Q382 -12 309 -12Z",
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
{
|
|
130
|
-
element: "path",
|
|
131
|
-
attributes: {
|
|
132
|
-
transform: "translate(2636.933 0)",
|
|
133
|
-
d: "M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q391 548 452 513Q513 478 547 415.5Q581 353 581 268Q581 183 547 120Q513 57 452 22.5Q391 -12 309 -12ZM309 103Q365 103 396 146.5Q427 190 427 268Q427 346 396 389.5Q365 433 309 433Q253 433 222 389.5Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Z",
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
element: "path",
|
|
138
|
-
attributes: {
|
|
139
|
-
transform: "translate(3211.6 0)",
|
|
140
|
-
d: "M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z",
|
|
141
|
-
},
|
|
142
|
-
},
|
|
143
|
-
{
|
|
144
|
-
element: "path",
|
|
145
|
-
attributes: {
|
|
146
|
-
transform: "translate(3802.267 0)",
|
|
147
|
-
d: "M307 -12Q225 -12 164.5 22.5Q104 57 70.5 120Q37 183 37 268Q37 353 70.5 415.5Q104 478 164 513Q224 548 306 548Q386 548 445 513Q504 478 536.5 413Q569 348 569 258L569 228L192 228Q195 164 226.5 133Q258 102 310 102Q348 102 373.5 118Q399 134 410 167L561 158Q540 78 472 33Q404 -12 307 -12ZM192 320L415 320Q412 379 382.5 408Q353 437 306 437Q259 437 228.5 406.5Q198 376 192 320Z",
|
|
148
|
-
},
|
|
149
|
-
},
|
|
150
|
-
],
|
|
62
|
+
attributes: { fill: "none", stroke: "{paint:ink}", "stroke-width": "18" },
|
|
63
|
+
children: WORDMARK_LETTERS.map((letter) => ({
|
|
64
|
+
element: letter.element,
|
|
65
|
+
attributes: { ...letter.attributes },
|
|
66
|
+
})),
|
|
151
67
|
},
|
|
152
68
|
{
|
|
153
|
-
element: "
|
|
154
|
-
attributes: {
|
|
155
|
-
fill: "{paint:primary}",
|
|
156
|
-
transform: "translate(259 76) scale(0.06 -0.06)",
|
|
157
|
-
},
|
|
158
|
-
children: [
|
|
159
|
-
{
|
|
160
|
-
element: "path",
|
|
161
|
-
attributes: {
|
|
162
|
-
transform: "translate(0 0)",
|
|
163
|
-
d: "M19 0L275 710L455 710L711 0L553 0L501 151L228 151L176 0ZM271 276L459 276L365 550Z",
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
element: "path",
|
|
168
|
-
attributes: {
|
|
169
|
-
transform: "translate(670.467 0)",
|
|
170
|
-
d: "M74 0L74 710L226 710L226 0Z",
|
|
171
|
-
},
|
|
172
|
-
},
|
|
173
|
-
],
|
|
69
|
+
element: "circle",
|
|
70
|
+
attributes: { cx: "375", cy: "21", r: "14", fill: "{paint:dot}" },
|
|
174
71
|
},
|
|
175
72
|
],
|
|
176
73
|
});
|
|
177
74
|
|
|
178
75
|
/**
|
|
179
|
-
* The
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
* asset and must not be tightened independently by a consumer.
|
|
76
|
+
* The mark: the plain n cut from the wordmark. The view box crops to the n's
|
|
77
|
+
* own square so the letter fills whatever box a consumer gives it; nothing is
|
|
78
|
+
* ever added to it, the dot included.
|
|
183
79
|
*/
|
|
184
|
-
export const
|
|
185
|
-
viewBox: "0
|
|
80
|
+
export const logoMarkGeometry = freezeGeometry({
|
|
81
|
+
viewBox: "0 50 100 100",
|
|
186
82
|
nodes: [
|
|
187
83
|
{
|
|
188
|
-
element: "
|
|
189
|
-
attributes: {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
children: [...logoWordmarkGeometry.nodes],
|
|
84
|
+
element: "path",
|
|
85
|
+
attributes: {
|
|
86
|
+
d: N_PATH,
|
|
87
|
+
fill: "none",
|
|
88
|
+
stroke: "{paint:ink}",
|
|
89
|
+
"stroke-width": "18",
|
|
90
|
+
},
|
|
196
91
|
},
|
|
197
92
|
],
|
|
198
93
|
});
|
|
199
94
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
95
|
+
/**
|
|
96
|
+
* The icon tile's corner radius, as a fraction of its side. One ratio serves
|
|
97
|
+
* every size, so a 1024 app icon and a 32 favicon carry the same corner.
|
|
98
|
+
*/
|
|
99
|
+
const TILE_RADIUS_RATIO = 0.225;
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* How wide the n sits inside its tile, as a fraction of the side. The app icon
|
|
103
|
+
* leaves the platform room to mask and shadow the corners; the favicon draws
|
|
104
|
+
* the n larger because at 16 px the same inset would eat the letter.
|
|
105
|
+
*/
|
|
106
|
+
export const APP_ICON_MARK_RATIO = 0.46;
|
|
107
|
+
export const FAVICON_MARK_RATIO = 0.56;
|
|
108
|
+
|
|
109
|
+
const round2 = (value) => Number(value.toFixed(2)).toString();
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* The icon: the n centred on a filled tile with rounded corners, at an exact
|
|
113
|
+
* pixel size. The n is the same path the mark draws, placed by a transform, so
|
|
114
|
+
* the tile never gets its own copy of the letter.
|
|
115
|
+
*/
|
|
116
|
+
export const logoIconGeometry = (size, markRatio) => {
|
|
117
|
+
const scale = (size * markRatio) / 100;
|
|
118
|
+
// The n spans 0..100 across and 50..150 down in its own units, so centring it
|
|
119
|
+
// shifts x by half the leftover and y by that same amount less the 50 units
|
|
120
|
+
// of empty space above the letter.
|
|
121
|
+
const inset = (size - 100 * scale) / 2;
|
|
122
|
+
return freezeGeometry({
|
|
123
|
+
viewBox: `0 0 ${size} ${size}`,
|
|
124
|
+
nodes: [
|
|
125
|
+
{
|
|
126
|
+
element: "rect",
|
|
127
|
+
attributes: {
|
|
128
|
+
width: String(size),
|
|
129
|
+
height: String(size),
|
|
130
|
+
rx: String(Math.round(size * TILE_RADIUS_RATIO)),
|
|
131
|
+
fill: "{paint:tile}",
|
|
132
|
+
},
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
element: "path",
|
|
136
|
+
attributes: {
|
|
137
|
+
d: N_PATH,
|
|
138
|
+
transform: `translate(${round2(inset)} ${round2(inset - 50 * scale)}) scale(${round2(scale)})`,
|
|
139
|
+
fill: "none",
|
|
140
|
+
stroke: "{paint:ink}",
|
|
141
|
+
"stroke-width": "18",
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
const resolveAttributeValue = (value, paints) => {
|
|
149
|
+
const paint = value.match(/^\{paint:([a-z0-9-]+)\}$/);
|
|
150
|
+
if (!paint) return value;
|
|
151
|
+
const resolved = paints[paint[1]];
|
|
152
|
+
if (resolved === undefined) {
|
|
153
|
+
throw new Error(`Logo geometry references an unsupplied paint role: ${value}`);
|
|
205
154
|
}
|
|
206
|
-
return
|
|
155
|
+
return resolved;
|
|
207
156
|
};
|
|
208
157
|
|
|
209
|
-
const resolveNode = (node, paints
|
|
158
|
+
const resolveNode = (node, paints) => ({
|
|
210
159
|
element: node.element,
|
|
211
160
|
attributes: Object.fromEntries(
|
|
212
161
|
Object.entries(node.attributes).map(([name, value]) => [
|
|
213
162
|
name,
|
|
214
|
-
resolveAttributeValue(value, paints
|
|
163
|
+
resolveAttributeValue(value, paints),
|
|
215
164
|
]),
|
|
216
165
|
),
|
|
217
|
-
...(node.children
|
|
218
|
-
? { children: node.children.map((child) => resolveNode(child, paints, idPrefix)) }
|
|
219
|
-
: {}),
|
|
166
|
+
...(node.children ? { children: node.children.map((child) => resolveNode(child, paints)) } : {}),
|
|
220
167
|
});
|
|
221
168
|
|
|
222
|
-
/** Resolve paint roles
|
|
223
|
-
export const resolveLogoGeometry = (geometry, { paints
|
|
169
|
+
/** Resolve paint roles without choosing a UI framework. */
|
|
170
|
+
export const resolveLogoGeometry = (geometry, { paints }) => ({
|
|
224
171
|
viewBox: geometry.viewBox,
|
|
225
|
-
nodes: geometry.nodes.map((node) => resolveNode(node, paints
|
|
172
|
+
nodes: geometry.nodes.map((node) => resolveNode(node, paints)),
|
|
226
173
|
});
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 100" role="img" aria-label="NadicodeAI">
|
|
2
|
-
<g transform="translate(-16 10) scale(0.5)"><clipPath id="logo-lockup-inverse-mark-overlap"><rect x="58" y="84" width="26" height="26"/></clipPath><rect fill="none" stroke="#ffffff" stroke-width="10" x="42" y="50" width="46" height="46" rx="13"/><rect fill="none" stroke="#2fd584" stroke-width="10" x="72" y="64" width="46" height="46" rx="13"/><rect fill="none" stroke="#ffffff" stroke-width="10" x="42" y="50" width="46" height="46" rx="13" clip-path="url(#logo-lockup-inverse-mark-overlap)"/></g>
|
|
3
|
-
<g transform="translate(72 0)"><g fill="#ffffff" transform="translate(0 76) scale(0.06 -0.06)"><path transform="translate(0 0)" d="M74 0L74 710L242 710L524 220L524 710L676 710L676 0L506 0L226 473L226 0Z"/><path transform="translate(706.867 0)" d="M225 -12Q142 -12 89.5 26.5Q37 65 37 134Q37 205 81.5 243.5Q126 282 213 300L386 334Q386 386 362.5 412.5Q339 439 295 439Q252 439 228 419.5Q204 400 197 362L46 369Q61 457 125.5 502.5Q190 548 295 548Q415 548 475.5 491Q536 434 536 324L536 141Q536 118 543.5 110.5Q551 103 566 103L581 103L581 0Q574 -2 558.5 -4Q543 -6 528 -6Q496 -6 468.5 5Q441 16 424 42.5Q407 69 407 118L420 108Q410 72 384.5 45Q359 18 318.5 3Q278 -12 225 -12ZM261 91Q298 91 326 105.5Q354 120 370 148Q386 176 386 214L386 240L264 214Q228 207 209.5 190.5Q191 174 191 148Q191 121 209 106Q227 91 261 91Z"/><path transform="translate(1258.133 0)" d="M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z"/><path transform="translate(1844.8 0)" d="M66 0L66 536L216 536L216 0ZM63 602L63 722L218 722L218 602Z"/><path transform="translate(2082.667 0)" d="M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q380 548 436.5 523Q493 498 528 451Q563 404 571 338L416 331Q409 381 380.5 406.5Q352 432 309 432Q253 432 222 389Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Q352 103 381 129.5Q410 156 416 210L571 204Q564 138 529.5 89.5Q495 41 438.5 14.5Q382 -12 309 -12Z"/><path transform="translate(2636.933 0)" d="M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q391 548 452 513Q513 478 547 415.5Q581 353 581 268Q581 183 547 120Q513 57 452 22.5Q391 -12 309 -12ZM309 103Q365 103 396 146.5Q427 190 427 268Q427 346 396 389.5Q365 433 309 433Q253 433 222 389.5Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Z"/><path transform="translate(3211.6 0)" d="M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z"/><path transform="translate(3802.267 0)" d="M307 -12Q225 -12 164.5 22.5Q104 57 70.5 120Q37 183 37 268Q37 353 70.5 415.5Q104 478 164 513Q224 548 306 548Q386 548 445 513Q504 478 536.5 413Q569 348 569 258L569 228L192 228Q195 164 226.5 133Q258 102 310 102Q348 102 373.5 118Q399 134 410 167L561 158Q540 78 472 33Q404 -12 307 -12ZM192 320L415 320Q412 379 382.5 408Q353 437 306 437Q259 437 228.5 406.5Q198 376 192 320Z"/></g><g fill="#2fd584" transform="translate(259 76) scale(0.06 -0.06)"><path transform="translate(0 0)" d="M19 0L275 710L455 710L711 0L553 0L501 151L228 151L176 0ZM271 276L459 276L365 550Z"/><path transform="translate(670.467 0)" d="M74 0L74 710L226 710L226 0Z"/></g></g>
|
|
4
|
-
</svg>
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 100" role="img" aria-label="NadicodeAI">
|
|
2
|
-
<g transform="translate(-16 10) scale(0.5)"><clipPath id="logo-lockup-mono-mark-overlap"><rect x="58" y="84" width="26" height="26"/></clipPath><rect fill="none" stroke="#111111" stroke-width="10" x="42" y="50" width="46" height="46" rx="13"/><rect fill="none" stroke="#111111" stroke-width="10" x="72" y="64" width="46" height="46" rx="13"/><rect fill="none" stroke="#111111" stroke-width="10" x="42" y="50" width="46" height="46" rx="13" clip-path="url(#logo-lockup-mono-mark-overlap)"/></g>
|
|
3
|
-
<g transform="translate(72 0)"><g fill="#111111" transform="translate(0 76) scale(0.06 -0.06)"><path transform="translate(0 0)" d="M74 0L74 710L242 710L524 220L524 710L676 710L676 0L506 0L226 473L226 0Z"/><path transform="translate(706.867 0)" d="M225 -12Q142 -12 89.5 26.5Q37 65 37 134Q37 205 81.5 243.5Q126 282 213 300L386 334Q386 386 362.5 412.5Q339 439 295 439Q252 439 228 419.5Q204 400 197 362L46 369Q61 457 125.5 502.5Q190 548 295 548Q415 548 475.5 491Q536 434 536 324L536 141Q536 118 543.5 110.5Q551 103 566 103L581 103L581 0Q574 -2 558.5 -4Q543 -6 528 -6Q496 -6 468.5 5Q441 16 424 42.5Q407 69 407 118L420 108Q410 72 384.5 45Q359 18 318.5 3Q278 -12 225 -12ZM261 91Q298 91 326 105.5Q354 120 370 148Q386 176 386 214L386 240L264 214Q228 207 209.5 190.5Q191 174 191 148Q191 121 209 106Q227 91 261 91Z"/><path transform="translate(1258.133 0)" d="M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z"/><path transform="translate(1844.8 0)" d="M66 0L66 536L216 536L216 0ZM63 602L63 722L218 722L218 602Z"/><path transform="translate(2082.667 0)" d="M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q380 548 436.5 523Q493 498 528 451Q563 404 571 338L416 331Q409 381 380.5 406.5Q352 432 309 432Q253 432 222 389Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Q352 103 381 129.5Q410 156 416 210L571 204Q564 138 529.5 89.5Q495 41 438.5 14.5Q382 -12 309 -12Z"/><path transform="translate(2636.933 0)" d="M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q391 548 452 513Q513 478 547 415.5Q581 353 581 268Q581 183 547 120Q513 57 452 22.5Q391 -12 309 -12ZM309 103Q365 103 396 146.5Q427 190 427 268Q427 346 396 389.5Q365 433 309 433Q253 433 222 389.5Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Z"/><path transform="translate(3211.6 0)" d="M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z"/><path transform="translate(3802.267 0)" d="M307 -12Q225 -12 164.5 22.5Q104 57 70.5 120Q37 183 37 268Q37 353 70.5 415.5Q104 478 164 513Q224 548 306 548Q386 548 445 513Q504 478 536.5 413Q569 348 569 258L569 228L192 228Q195 164 226.5 133Q258 102 310 102Q348 102 373.5 118Q399 134 410 167L561 158Q540 78 472 33Q404 -12 307 -12ZM192 320L415 320Q412 379 382.5 408Q353 437 306 437Q259 437 228.5 406.5Q198 376 192 320Z"/></g><g fill="#111111" transform="translate(259 76) scale(0.06 -0.06)"><path transform="translate(0 0)" d="M19 0L275 710L455 710L711 0L553 0L501 151L228 151L176 0ZM271 276L459 276L365 550Z"/><path transform="translate(670.467 0)" d="M74 0L74 710L226 710L226 0Z"/></g></g>
|
|
4
|
-
</svg>
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 100" role="img" aria-label="NadicodeAI">
|
|
2
|
-
<g transform="translate(-16 10) scale(0.5)"><clipPath id="logo-lockup-on-verde-mark-overlap"><rect x="58" y="84" width="26" height="26"/></clipPath><rect fill="none" stroke="#000000" stroke-width="10" x="42" y="50" width="46" height="46" rx="13"/><rect fill="none" stroke="#ffffff" stroke-width="10" x="72" y="64" width="46" height="46" rx="13"/><rect fill="none" stroke="#000000" stroke-width="10" x="42" y="50" width="46" height="46" rx="13" clip-path="url(#logo-lockup-on-verde-mark-overlap)"/></g>
|
|
3
|
-
<g transform="translate(72 0)"><g fill="#000000" transform="translate(0 76) scale(0.06 -0.06)"><path transform="translate(0 0)" d="M74 0L74 710L242 710L524 220L524 710L676 710L676 0L506 0L226 473L226 0Z"/><path transform="translate(706.867 0)" d="M225 -12Q142 -12 89.5 26.5Q37 65 37 134Q37 205 81.5 243.5Q126 282 213 300L386 334Q386 386 362.5 412.5Q339 439 295 439Q252 439 228 419.5Q204 400 197 362L46 369Q61 457 125.5 502.5Q190 548 295 548Q415 548 475.5 491Q536 434 536 324L536 141Q536 118 543.5 110.5Q551 103 566 103L581 103L581 0Q574 -2 558.5 -4Q543 -6 528 -6Q496 -6 468.5 5Q441 16 424 42.5Q407 69 407 118L420 108Q410 72 384.5 45Q359 18 318.5 3Q278 -12 225 -12ZM261 91Q298 91 326 105.5Q354 120 370 148Q386 176 386 214L386 240L264 214Q228 207 209.5 190.5Q191 174 191 148Q191 121 209 106Q227 91 261 91Z"/><path transform="translate(1258.133 0)" d="M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z"/><path transform="translate(1844.8 0)" d="M66 0L66 536L216 536L216 0ZM63 602L63 722L218 722L218 602Z"/><path transform="translate(2082.667 0)" d="M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q380 548 436.5 523Q493 498 528 451Q563 404 571 338L416 331Q409 381 380.5 406.5Q352 432 309 432Q253 432 222 389Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Q352 103 381 129.5Q410 156 416 210L571 204Q564 138 529.5 89.5Q495 41 438.5 14.5Q382 -12 309 -12Z"/><path transform="translate(2636.933 0)" d="M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q391 548 452 513Q513 478 547 415.5Q581 353 581 268Q581 183 547 120Q513 57 452 22.5Q391 -12 309 -12ZM309 103Q365 103 396 146.5Q427 190 427 268Q427 346 396 389.5Q365 433 309 433Q253 433 222 389.5Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Z"/><path transform="translate(3211.6 0)" d="M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z"/><path transform="translate(3802.267 0)" d="M307 -12Q225 -12 164.5 22.5Q104 57 70.5 120Q37 183 37 268Q37 353 70.5 415.5Q104 478 164 513Q224 548 306 548Q386 548 445 513Q504 478 536.5 413Q569 348 569 258L569 228L192 228Q195 164 226.5 133Q258 102 310 102Q348 102 373.5 118Q399 134 410 167L561 158Q540 78 472 33Q404 -12 307 -12ZM192 320L415 320Q412 379 382.5 408Q353 437 306 437Q259 437 228.5 406.5Q198 376 192 320Z"/></g><g fill="#ffffff" transform="translate(259 76) scale(0.06 -0.06)"><path transform="translate(0 0)" d="M19 0L275 710L455 710L711 0L553 0L501 151L228 151L176 0ZM271 276L459 276L365 550Z"/><path transform="translate(670.467 0)" d="M74 0L74 710L226 710L226 0Z"/></g></g>
|
|
4
|
-
</svg>
|
|
Binary file
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 100" role="img" aria-label="NadicodeAI">
|
|
2
|
-
<g transform="translate(-16 10) scale(0.5)"><clipPath id="logo-lockup-mark-overlap"><rect x="58" y="84" width="26" height="26"/></clipPath><rect fill="none" stroke="#111111" stroke-width="10" x="42" y="50" width="46" height="46" rx="13"/><rect fill="none" stroke="#007a3c" stroke-width="10" x="72" y="64" width="46" height="46" rx="13"/><rect fill="none" stroke="#111111" stroke-width="10" x="42" y="50" width="46" height="46" rx="13" clip-path="url(#logo-lockup-mark-overlap)"/></g>
|
|
3
|
-
<g transform="translate(72 0)"><g fill="#111111" transform="translate(0 76) scale(0.06 -0.06)"><path transform="translate(0 0)" d="M74 0L74 710L242 710L524 220L524 710L676 710L676 0L506 0L226 473L226 0Z"/><path transform="translate(706.867 0)" d="M225 -12Q142 -12 89.5 26.5Q37 65 37 134Q37 205 81.5 243.5Q126 282 213 300L386 334Q386 386 362.5 412.5Q339 439 295 439Q252 439 228 419.5Q204 400 197 362L46 369Q61 457 125.5 502.5Q190 548 295 548Q415 548 475.5 491Q536 434 536 324L536 141Q536 118 543.5 110.5Q551 103 566 103L581 103L581 0Q574 -2 558.5 -4Q543 -6 528 -6Q496 -6 468.5 5Q441 16 424 42.5Q407 69 407 118L420 108Q410 72 384.5 45Q359 18 318.5 3Q278 -12 225 -12ZM261 91Q298 91 326 105.5Q354 120 370 148Q386 176 386 214L386 240L264 214Q228 207 209.5 190.5Q191 174 191 148Q191 121 209 106Q227 91 261 91Z"/><path transform="translate(1258.133 0)" d="M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z"/><path transform="translate(1844.8 0)" d="M66 0L66 536L216 536L216 0ZM63 602L63 722L218 722L218 602Z"/><path transform="translate(2082.667 0)" d="M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q380 548 436.5 523Q493 498 528 451Q563 404 571 338L416 331Q409 381 380.5 406.5Q352 432 309 432Q253 432 222 389Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Q352 103 381 129.5Q410 156 416 210L571 204Q564 138 529.5 89.5Q495 41 438.5 14.5Q382 -12 309 -12Z"/><path transform="translate(2636.933 0)" d="M309 -12Q227 -12 166 22.5Q105 57 71 120Q37 183 37 268Q37 353 71 415.5Q105 478 166 513Q227 548 309 548Q391 548 452 513Q513 478 547 415.5Q581 353 581 268Q581 183 547 120Q513 57 452 22.5Q391 -12 309 -12ZM309 103Q365 103 396 146.5Q427 190 427 268Q427 346 396 389.5Q365 433 309 433Q253 433 222 389.5Q191 346 191 268Q191 190 222 146.5Q253 103 309 103Z"/><path transform="translate(3211.6 0)" d="M257 -12Q189 -12 139.5 22.5Q90 57 63.5 119.5Q37 182 37 268Q37 354 64 416.5Q91 479 140.5 513.5Q190 548 257 548Q314 548 355.5 524.5Q397 501 418 460L418 710L568 710L568 0L425 0L422 79Q400 36 356.5 12Q313 -12 257 -12ZM306 103Q342 103 367 122Q392 141 405 177.5Q418 214 418 268Q418 323 405 359.5Q392 396 367 414.5Q342 433 306 433Q253 433 222 388.5Q191 344 191 268Q191 193 222.5 148Q254 103 306 103Z"/><path transform="translate(3802.267 0)" d="M307 -12Q225 -12 164.5 22.5Q104 57 70.5 120Q37 183 37 268Q37 353 70.5 415.5Q104 478 164 513Q224 548 306 548Q386 548 445 513Q504 478 536.5 413Q569 348 569 258L569 228L192 228Q195 164 226.5 133Q258 102 310 102Q348 102 373.5 118Q399 134 410 167L561 158Q540 78 472 33Q404 -12 307 -12ZM192 320L415 320Q412 379 382.5 408Q353 437 306 437Q259 437 228.5 406.5Q198 376 192 320Z"/></g><g fill="#007a3c" transform="translate(259 76) scale(0.06 -0.06)"><path transform="translate(0 0)" d="M19 0L275 710L455 710L711 0L553 0L501 151L228 151L176 0ZM271 276L459 276L365 550Z"/><path transform="translate(670.467 0)" d="M74 0L74 710L226 710L226 0Z"/></g></g>
|
|
4
|
-
</svg>
|
|
Binary file
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" role="img" aria-label="NadicodeAI mark">
|
|
2
|
-
<clipPath id="logo-mark-inverse-mark-overlap"><rect x="58" y="84" width="26" height="26"/></clipPath>
|
|
3
|
-
<rect fill="none" stroke="#ffffff" stroke-width="10" x="42" y="50" width="46" height="46" rx="13"/>
|
|
4
|
-
<rect fill="none" stroke="#2fd584" stroke-width="10" x="72" y="64" width="46" height="46" rx="13"/>
|
|
5
|
-
<rect fill="none" stroke="#ffffff" stroke-width="10" x="42" y="50" width="46" height="46" rx="13" clip-path="url(#logo-mark-inverse-mark-overlap)"/>
|
|
6
|
-
</svg>
|
|
Binary file
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" role="img" aria-label="NadicodeAI mark">
|
|
2
|
-
<clipPath id="logo-mark-mono-mark-overlap"><rect x="58" y="84" width="26" height="26"/></clipPath>
|
|
3
|
-
<rect fill="none" stroke="#111111" stroke-width="10" x="42" y="50" width="46" height="46" rx="13"/>
|
|
4
|
-
<rect fill="none" stroke="#111111" stroke-width="10" x="72" y="64" width="46" height="46" rx="13"/>
|
|
5
|
-
<rect fill="none" stroke="#111111" stroke-width="10" x="42" y="50" width="46" height="46" rx="13" clip-path="url(#logo-mark-mono-mark-overlap)"/>
|
|
6
|
-
</svg>
|
|
Binary file
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 160 160" role="img" aria-label="NadicodeAI mark">
|
|
2
|
-
<clipPath id="logo-mark-on-verde-mark-overlap"><rect x="58" y="84" width="26" height="26"/></clipPath>
|
|
3
|
-
<rect fill="none" stroke="#000000" stroke-width="10" x="42" y="50" width="46" height="46" rx="13"/>
|
|
4
|
-
<rect fill="none" stroke="#ffffff" stroke-width="10" x="72" y="64" width="46" height="46" rx="13"/>
|
|
5
|
-
<rect fill="none" stroke="#000000" stroke-width="10" x="42" y="50" width="46" height="46" rx="13" clip-path="url(#logo-mark-on-verde-mark-overlap)"/>
|
|
6
|
-
</svg>
|
|
Binary file
|