platform-brand 0.0.0-stage → 0.1.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 CHANGED
@@ -1,3 +1,18 @@
1
- # Temporary Holding Version
1
+ # platform-brand
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Brand packs read by every platform repo: identity, hosts per stage, contacts, social handles, product names, colours and art.
4
+
5
+ Generated from `brand/packs.json` in sinfactura/marketing; do not edit a published copy. The source of every value
6
+ and the schema are `brand/*.json` and `scripts/brand-contract.mjs` there.
7
+
8
+ Packs: `sinfactura`, `ficticia` (a fake brand for rebrand proofs). Default: `sinfactura`.
9
+ 1 pack(s) not yet cleared for public use are not in this build.
10
+
11
+ ```js
12
+ import { brand, getPack, hosts, origin, literals, socialUrl, art } from 'platform-brand';
13
+ brand.name; // BRAND=<slug> selects the pack in Node; a bundler calls getPack(slug)
14
+ hosts('dev').api; // a hostname, or null where the stage has none
15
+ origin('app', 'prod'); // https://…
16
+ literals(); // { current, legacy } for a literal lint
17
+ art('markCurrentColor').svg; // inline markup; files at platform-brand/packs/<slug>/art/<role>.svg
18
+ ```
package/index.cjs ADDED
@@ -0,0 +1,536 @@
1
+ // Generated by sinfactura/marketing scripts/brand-package.mjs from brand/packs.json. Do not edit.
2
+ 'use strict';
3
+ const freeze = value => { if (value && typeof value === 'object') { Object.values(value).forEach(freeze); Object.freeze(value); } return value; };
4
+ const PACKS = freeze({
5
+ "sinfactura": {
6
+ "schemaVersion": 1,
7
+ "name": "SINFACTURA",
8
+ "slug": "sinfactura",
9
+ "legacyNames": [],
10
+ "domain": "sinfactura.com",
11
+ "siteUrl": "https://www.sinfactura.com",
12
+ "appDomain": "app.sinfactura.com",
13
+ "storefrontDomain": "cesta.ar",
14
+ "trialDays": 30,
15
+ "cta": {
16
+ "primary": "Probá 30 días gratis",
17
+ "short": "Probá gratis",
18
+ "trust": "Sin tarjeta de crédito · Cancelá cuando quieras",
19
+ "signup": "Creá tu cuenta",
20
+ "google": "Registrate con Google",
21
+ "demo": "Ver demostración",
22
+ "whatsapp": "Escribinos por WhatsApp"
23
+ },
24
+ "contact": {
25
+ "whatsapp": "+5492236904075",
26
+ "whatsappDigits": "5492236904075",
27
+ "phone": "+54-223-690-4075",
28
+ "emailJobs": "empleo@sinfactura.com",
29
+ "emailSupport": "soporte@sinfactura.com",
30
+ "emailSales": "ventas@sinfactura.com",
31
+ "emailPrivacy": "privacidad@sinfactura.com",
32
+ "emailNoReply": null,
33
+ "smsPrefix": "SINFACTURA: "
34
+ },
35
+ "legal": {
36
+ "name": "BACKSPACE S.A.",
37
+ "cuit": "30-71521975-8",
38
+ "street": "España 1138",
39
+ "postalCode": "7600",
40
+ "city": "Mar del Plata",
41
+ "province": "Buenos Aires",
42
+ "country": "Argentina",
43
+ "ivaRate": 0.21
44
+ },
45
+ "colors": {
46
+ "primary": "#590d82",
47
+ "primaryDark": "#390854",
48
+ "primaryLight": "#9816df",
49
+ "cta": "#FF5722",
50
+ "ctaDark": "#E64A19",
51
+ "ctaLight": "#FFAB91",
52
+ "green": "#1db954",
53
+ "greenLight": "#4ade80",
54
+ "ink": "#0b0214",
55
+ "paper": "#ffffff",
56
+ "seedPrimary": "#590d82",
57
+ "seedNavbar": "#590d82",
58
+ "maskableBackground": "#ffffff",
59
+ "emailHeader": "#590d82"
60
+ },
61
+ "fonts": {
62
+ "family": "Helvetica Neue",
63
+ "heavy": "Bold",
64
+ "bold": "Bold",
65
+ "semibold": "Bold",
66
+ "regular": "Regular"
67
+ },
68
+ "shortName": "SINFACTURA",
69
+ "nameCase": "upper",
70
+ "pronunciation": "sin factura",
71
+ "tagline": "",
72
+ "legacyDomains": [],
73
+ "initials": "SF",
74
+ "description": "Facturación, ventas y caja en la nube",
75
+ "productNames": {
76
+ "pos": "Punto de venta",
77
+ "store": "Tienda online",
78
+ "printAgent": "SINFACTURA Cloud Print",
79
+ "mobileApp": "SINFACTURA"
80
+ },
81
+ "hosts": {
82
+ "prod": {
83
+ "site": "www.sinfactura.com",
84
+ "app": "app.sinfactura.com",
85
+ "api": "api.sinfactura.com",
86
+ "apiWeb": "api-web.sinfactura.com",
87
+ "apiOps": "api-ops.sinfactura.com",
88
+ "wss": "wss.sinfactura.com",
89
+ "auth": "auth.sinfactura.com",
90
+ "images": "images.sinfactura.com",
91
+ "download": "download.sinfactura.com",
92
+ "help": "app.sinfactura.com",
93
+ "docs": "docs.sinfactura.com",
94
+ "test": null,
95
+ "storefront": "cesta.ar"
96
+ },
97
+ "dev": {
98
+ "site": null,
99
+ "app": "test.sinfactura.com",
100
+ "api": "api-dev.sinfactura.com",
101
+ "apiWeb": "api-web-dev.sinfactura.com",
102
+ "apiOps": "api-ops-dev.sinfactura.com",
103
+ "wss": "wss-dev.sinfactura.com",
104
+ "auth": "auth.sinfactura.com",
105
+ "images": "images.sinfactura.com",
106
+ "download": "download.sinfactura.com",
107
+ "help": "app.sinfactura.com",
108
+ "docs": "docs.sinfactura.com",
109
+ "test": "test.sinfactura.com",
110
+ "storefront": "dev.cesta.ar"
111
+ }
112
+ },
113
+ "social": {
114
+ "facebook": "sfactura",
115
+ "instagram": "sfactura",
116
+ "youtube": "nofactura",
117
+ "linkedin": "sinfactura",
118
+ "x": "nofactura"
119
+ },
120
+ "logos": {
121
+ "mark": "art/mark.svg",
122
+ "markWhite": "art/markWhite.svg",
123
+ "favicon": "art/favicon.svg",
124
+ "lockupWhite": "art/lockupWhite.svg",
125
+ "wordmarkWhite": "art/wordmarkWhite.svg",
126
+ "wordmarkPrimary": "art/wordmarkPrimary.svg",
127
+ "mark3d": "art/mark3d.svg",
128
+ "markCurrentColor": "art/markCurrentColor.svg",
129
+ "installedIcon": "art/installedIcon.svg",
130
+ "maskable": "art/maskable.svg",
131
+ "notification": "art/notification.svg"
132
+ },
133
+ "art": {
134
+ "mark": {
135
+ "file": "art/mark.svg",
136
+ "viewBox": {
137
+ "x": 0,
138
+ "y": 0,
139
+ "width": 765.1,
140
+ "height": 135
141
+ },
142
+ "svg": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 765.1 135\" style=\"enable-background:new 0 0 765.1 135;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0{fill:#FFFFFF;}\n\t.st1{fill:#b237f5;}\n</style>\n<g>\n\t<path class=\"st0\" d=\"M212.6,65l-18.3-7.4c-3-1-5-3.8-5-7c0-4.7,4.7-7.5,9.1-7.5H215c0.1,0,0.2,0,0.4,0c2.3,0,4-1.9,4-4.2\n\t\tc0-2-1.5-4-4.4-4h-16.6c-8.9,0-17.4,6.3-17.4,15.7c0,6.7,4,12.1,10.2,14.7l18.2,7.4c3.2,1.5,5.2,4.7,5.1,8.3\n\t\tc0,6.3-5.3,10.2-11.2,10.2h-18.8c-2.9,0-4.4,1.9-4.4,4c0,0.1,0,0.2,0,0.3c0.2,2.2,2.1,3.9,4.4,3.8h18.8c10.4,0,19.4-7.5,19.4-18.4\n\t\tC222.8,74.1,218.9,67.6,212.6,65z\"/>\n\t<path class=\"st0\" d=\"M240.1,34.7c-2.3,0.1-4,2-3.9,4.3v56.2c0,0.1,0,0.3,0,0.4c0.1,2.3,2,4,4.3,3.9c2.3-0.1,4-2,3.9-4.3V39\n\t\tc0-0.1,0-0.3,0-0.4C244.3,36.3,242.3,34.6,240.1,34.7z\"/>\n\t<path class=\"st0\" d=\"M240.1,13.4c-3.5,0-6.4,2.9-6.3,6.4s2.9,6.4,6.4,6.3c3.5,0,6.3-2.8,6.3-6.3c0,0,0-0.1,0-0.1\n\t\tC246.5,16.2,243.7,13.4,240.1,13.4z\"/>\n\t<path class=\"st0\" d=\"M307.7,95.2c0,0.2,0,0.4,0,0.6c0.2,2.3,2.1,4,4.4,3.8c2.3-0.2,4-2.1,3.8-4.4V63c-0.3-15.1-12.5-27.3-27.6-27.6\n\t\tc-15.5-0.3-28.4,12.1-28.6,27.6v32.2c0,0.2,0,0.4,0,0.6c0.2,2.3,2.1,4,4.4,3.8c2.3-0.2,4-2.1,3.8-4.4V63c0-0.3,0-0.6,0-0.9\n\t\tc0.2-11,9.3-19.7,20.3-19.4c11,0.2,19.7,9.3,19.4,20.3V95.2z\"/>\n\t<path class=\"st0\" d=\"M377,46.4h-30c3.4-13.8,15.8-23.6,30.1-23.7c5.2,0,7.8-3.5,7.8-7.3c0-3.8-2.5-7.4-7.8-7.4\n\t\tc-12.1,0-23.6,4.9-32.2,13.5c-8.6,8.5-13.5,20.1-13.5,32.2v13.8c0,0.1,0,0.3,0,0.4v28.5c0,9.2-7.4,16.6-16.6,16.6\n\t\tc-0.2,0-0.4,0-0.5,0c-4,0.1-7.2,3.5-7,7.6c0.1,4,3.5,7.2,7.6,7c17.2,0,31.2-14,31.2-31.2v-4.1c0-0.1,0-0.1,0-0.2V61h31\n\t\tc5.2,0,7.9-3.8,7.9-7.4C384.9,50,382.2,46.4,377,46.4z\"/>\n\t<path class=\"st0\" d=\"M426.5,33.1c-18.3,0-33.1,14.8-33.2,33c0,18.3,14.8,33.1,33,33.2c6.7,0,13.2-2,18.7-5.8c0.6,3.4,3.6,5.9,7,5.8\n\t\tc3.7,0,7.4-2.5,7.4-7.8l0-25.2c0,0,0,0,0,0C459.6,48,444.8,33.2,426.5,33.1z M426.3,84.7c-10.2,0-18.5-8.4-18.5-18.6\n\t\tc0-10.2,8.4-18.5,18.6-18.5c10.2,0.1,18.4,8.4,18.5,18.6C444.8,76.5,436.5,84.8,426.3,84.7z\"/>\n\t<path class=\"st0\" d=\"M501.9,47.2c2.6,0,5.2,0.6,7.6,1.6c2.4,1.1,4.6,2.6,6.3,4.6c1.5,1.7,3.6,2.7,5.8,2.7c4,0,7.2-3.2,7.3-7.2\n\t\tc-0.1-2-0.9-4-2.3-5.4c-0.6-0.6-1.2-1.3-1.9-1.9C511.2,29,490,29.9,477.4,43.5c-12.6,13.6-11.7,34.8,1.9,47.4s34.8,11.7,47.4-1.9\n\t\tc1.4-1.5,2.3-3.4,2.3-5.5c-0.1-4-3.3-7.1-7.3-7.2c-2.3,0-4.4,1-5.8,2.8c-1.8,1.9-3.9,3.4-6.3,4.5c-2.4,1-5,1.6-7.6,1.6\n\t\tc-10.5,0-19-8.5-19-19S491.4,47.2,501.9,47.2z\"/>\n\t<path class=\"st0\" d=\"M570.2,47.7c5.2,0,7.8-3.6,7.8-7.3c0-3.6-2.6-7.3-7.8-7.3h-15.1V15.4c0-5.2-3.6-7.9-7.3-7.9s-7.3,2.7-7.3,7.9\n\t\tv54.8c0,16.1,13.1,29.1,29.2,29.1c5.3,0,7.8-3.6,7.8-7.3c0-3.6-2.6-7.3-7.8-7.3c-8-0.1-14.5-6.6-14.6-14.6V47.7H570.2z\"/>\n\t<path class=\"st0\" d=\"M640,33.1c-3.6,0-7.3,2.5-7.3,7.8v29.6c-0.2,7.9-6.5,14.2-14.4,14.4c-8.1,0.2-14.9-6.2-15.1-14.4V40.9\n\t\tc0-5.2-3.6-7.8-7.3-7.8s-7.3,2.5-7.3,7.8v29.6c0,16.2,13.2,29.3,29.4,29.4c16.2,0,29.4-13.1,29.4-29.4V40.9\n\t\tC647.4,35.7,643.7,33.1,640,33.1z\"/>\n\t<path class=\"st0\" d=\"M688.4,33.1c-16.2,0-29.4,13.2-29.4,29.4V92c0,5.2,3.7,7.8,7.3,7.8s7.3-2.6,7.3-7.8V62.5\n\t\tc0-3.9,1.6-7.7,4.4-10.4c2.8-2.8,6.5-4.4,10.5-4.4c5.2,0,7.7-3.6,7.7-7.3C696.2,36.8,693.7,33.1,688.4,33.1z\"/>\n\t<path class=\"st0\" d=\"M732.1,33.1c-18.3,0-33.1,14.8-33.2,33s14.8,33.1,33,33.2c6.7,0,13.2-2,18.7-5.8c0.6,3.4,3.6,5.9,7,5.8\n\t\tc3.6,0,7.4-2.5,7.4-7.8l0.1-25.2c0,0,0,0,0,0C765.2,48,750.4,33.2,732.1,33.1z M750.4,66.3c-0.1,10.2-8.4,18.5-18.6,18.4\n\t\tc-10.2-0.1-18.5-8.4-18.4-18.6c0.1-10.2,8.4-18.5,18.6-18.4C742.2,47.8,750.4,56.1,750.4,66.3C750.4,66.3,750.4,66.3,750.4,66.3z\"\n\t\t/>\n\t<path class=\"st1\" d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4\n\t\tC140.6,64,132.6,34.2,111,15.9z\"/>\n\t<path class=\"st1\" d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6\n\t\tC43.6,118.7,59.3,102.7,59.3,83.1z\"/>\n</g>\n</svg>"
143
+ },
144
+ "markWhite": {
145
+ "file": "art/markWhite.svg",
146
+ "viewBox": {
147
+ "x": 0,
148
+ "y": 0,
149
+ "width": 135,
150
+ "height": 135
151
+ },
152
+ "svg": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 135 135\" style=\"enable-background:new 0 0 135 135;\" xml:space=\"preserve\">\n<g fill=\"#FFFFFF\">\n\t<path d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4\n\t\tC140.6,64,132.6,34.2,111,15.9z\"/>\n\t<path d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6\n\t\tC43.6,118.7,59.3,102.7,59.3,83.1z\"/>\n</g>\n</svg>"
153
+ },
154
+ "favicon": {
155
+ "file": "art/favicon.svg",
156
+ "viewBox": {
157
+ "x": 0,
158
+ "y": 0,
159
+ "width": 135,
160
+ "height": 135
161
+ },
162
+ "svg": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 135 135\" style=\"enable-background:new 0 0 135 135;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0{fill:#9816df;}\n</style>\n<g>\n\t<path class=\"st0\" d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4\n\t\tC140.6,64,132.6,34.2,111,15.9z\"/>\n\t<path class=\"st0\" d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6\n\t\tC43.6,118.7,59.3,102.7,59.3,83.1z\"/>\n</g>\n</svg>"
163
+ },
164
+ "lockupWhite": {
165
+ "file": "art/lockupWhite.svg",
166
+ "viewBox": {
167
+ "x": 0,
168
+ "y": 0,
169
+ "width": 765.1,
170
+ "height": 135
171
+ },
172
+ "svg": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 765.1 135\" style=\"enable-background:new 0 0 765.1 135;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0{fill:#FFFFFF;}\n</style>\n<g>\n\t<path class=\"st0\" d=\"M212.6,65l-18.3-7.4c-3-1-5-3.8-5-7c0-4.7,4.7-7.5,9.1-7.5H215c0.1,0,0.2,0,0.4,0c2.3,0,4-1.9,4-4.2\n\t\tc0-2-1.5-4-4.4-4h-16.6c-8.9,0-17.4,6.3-17.4,15.7c0,6.7,4,12.1,10.2,14.7l18.2,7.4c3.2,1.5,5.2,4.7,5.1,8.3\n\t\tc0,6.3-5.3,10.2-11.2,10.2h-18.8c-2.9,0-4.4,1.9-4.4,4c0,0.1,0,0.2,0,0.3c0.2,2.2,2.1,3.9,4.4,3.8h18.8c10.4,0,19.4-7.5,19.4-18.4\n\t\tC222.8,74.1,218.9,67.6,212.6,65z\"/>\n\t<path class=\"st0\" d=\"M240.1,34.7c-2.3,0.1-4,2-3.9,4.3v56.2c0,0.1,0,0.3,0,0.4c0.1,2.3,2,4,4.3,3.9c2.3-0.1,4-2,3.9-4.3V39\n\t\tc0-0.1,0-0.3,0-0.4C244.3,36.3,242.3,34.6,240.1,34.7z\"/>\n\t<path class=\"st0\" d=\"M240.1,13.4c-3.5,0-6.4,2.9-6.3,6.4s2.9,6.4,6.4,6.3c3.5,0,6.3-2.8,6.3-6.3c0,0,0-0.1,0-0.1\n\t\tC246.5,16.2,243.7,13.4,240.1,13.4z\"/>\n\t<path class=\"st0\" d=\"M307.7,95.2c0,0.2,0,0.4,0,0.6c0.2,2.3,2.1,4,4.4,3.8c2.3-0.2,4-2.1,3.8-4.4V63c-0.3-15.1-12.5-27.3-27.6-27.6\n\t\tc-15.5-0.3-28.4,12.1-28.6,27.6v32.2c0,0.2,0,0.4,0,0.6c0.2,2.3,2.1,4,4.4,3.8c2.3-0.2,4-2.1,3.8-4.4V63c0-0.3,0-0.6,0-0.9\n\t\tc0.2-11,9.3-19.7,20.3-19.4c11,0.2,19.7,9.3,19.4,20.3V95.2z\"/>\n\t<path class=\"st0\" d=\"M377,46.4h-30c3.4-13.8,15.8-23.6,30.1-23.7c5.2,0,7.8-3.5,7.8-7.3c0-3.8-2.5-7.4-7.8-7.4\n\t\tc-12.1,0-23.6,4.9-32.2,13.5c-8.6,8.5-13.5,20.1-13.5,32.2v13.8c0,0.1,0,0.3,0,0.4v28.5c0,9.2-7.4,16.6-16.6,16.6\n\t\tc-0.2,0-0.4,0-0.5,0c-4,0.1-7.2,3.5-7,7.6c0.1,4,3.5,7.2,7.6,7c17.2,0,31.2-14,31.2-31.2v-4.1c0-0.1,0-0.1,0-0.2V61h31\n\t\tc5.2,0,7.9-3.8,7.9-7.4C384.9,50,382.2,46.4,377,46.4z\"/>\n\t<path class=\"st0\" d=\"M426.5,33.1c-18.3,0-33.1,14.8-33.2,33c0,18.3,14.8,33.1,33,33.2c6.7,0,13.2-2,18.7-5.8c0.6,3.4,3.6,5.9,7,5.8\n\t\tc3.7,0,7.4-2.5,7.4-7.8l0-25.2c0,0,0,0,0,0C459.6,48,444.8,33.2,426.5,33.1z M426.3,84.7c-10.2,0-18.5-8.4-18.5-18.6\n\t\tc0-10.2,8.4-18.5,18.6-18.5c10.2,0.1,18.4,8.4,18.5,18.6C444.8,76.5,436.5,84.8,426.3,84.7z\"/>\n\t<path class=\"st0\" d=\"M501.9,47.2c2.6,0,5.2,0.6,7.6,1.6c2.4,1.1,4.6,2.6,6.3,4.6c1.5,1.7,3.6,2.7,5.8,2.7c4,0,7.2-3.2,7.3-7.2\n\t\tc-0.1-2-0.9-4-2.3-5.4c-0.6-0.6-1.2-1.3-1.9-1.9C511.2,29,490,29.9,477.4,43.5c-12.6,13.6-11.7,34.8,1.9,47.4s34.8,11.7,47.4-1.9\n\t\tc1.4-1.5,2.3-3.4,2.3-5.5c-0.1-4-3.3-7.1-7.3-7.2c-2.3,0-4.4,1-5.8,2.8c-1.8,1.9-3.9,3.4-6.3,4.5c-2.4,1-5,1.6-7.6,1.6\n\t\tc-10.5,0-19-8.5-19-19S491.4,47.2,501.9,47.2z\"/>\n\t<path class=\"st0\" d=\"M570.2,47.7c5.2,0,7.8-3.6,7.8-7.3c0-3.6-2.6-7.3-7.8-7.3h-15.1V15.4c0-5.2-3.6-7.9-7.3-7.9s-7.3,2.7-7.3,7.9\n\t\tv54.8c0,16.1,13.1,29.1,29.2,29.1c5.3,0,7.8-3.6,7.8-7.3c0-3.6-2.6-7.3-7.8-7.3c-8-0.1-14.5-6.6-14.6-14.6V47.7H570.2z\"/>\n\t<path class=\"st0\" d=\"M640,33.1c-3.6,0-7.3,2.5-7.3,7.8v29.6c-0.2,7.9-6.5,14.2-14.4,14.4c-8.1,0.2-14.9-6.2-15.1-14.4V40.9\n\t\tc0-5.2-3.6-7.8-7.3-7.8s-7.3,2.5-7.3,7.8v29.6c0,16.2,13.2,29.3,29.4,29.4c16.2,0,29.4-13.1,29.4-29.4V40.9\n\t\tC647.4,35.7,643.7,33.1,640,33.1z\"/>\n\t<path class=\"st0\" d=\"M688.4,33.1c-16.2,0-29.4,13.2-29.4,29.4V92c0,5.2,3.7,7.8,7.3,7.8s7.3-2.6,7.3-7.8V62.5\n\t\tc0-3.9,1.6-7.7,4.4-10.4c2.8-2.8,6.5-4.4,10.5-4.4c5.2,0,7.7-3.6,7.7-7.3C696.2,36.8,693.7,33.1,688.4,33.1z\"/>\n\t<path class=\"st0\" d=\"M732.1,33.1c-18.3,0-33.1,14.8-33.2,33s14.8,33.1,33,33.2c6.7,0,13.2-2,18.7-5.8c0.6,3.4,3.6,5.9,7,5.8\n\t\tc3.6,0,7.4-2.5,7.4-7.8l0.1-25.2c0,0,0,0,0,0C765.2,48,750.4,33.2,732.1,33.1z M750.4,66.3c-0.1,10.2-8.4,18.5-18.6,18.4\n\t\tc-10.2-0.1-18.5-8.4-18.4-18.6c0.1-10.2,8.4-18.5,18.6-18.4C742.2,47.8,750.4,56.1,750.4,66.3C750.4,66.3,750.4,66.3,750.4,66.3z\"\n\t\t/>\n\t<path class=\"st0\" d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4\n\t\tC140.6,64,132.6,34.2,111,15.9z\"/>\n\t<path class=\"st0\" d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6\n\t\tC43.6,118.7,59.3,102.7,59.3,83.1z\"/>\n</g>\n</svg>"
173
+ },
174
+ "wordmarkWhite": {
175
+ "file": "art/wordmarkWhite.svg",
176
+ "viewBox": {
177
+ "x": 0,
178
+ "y": 0,
179
+ "width": 584.9,
180
+ "height": 120
181
+ },
182
+ "svg": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 584.9 120\" style=\"enable-background:new 0 0 584.9 120;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0{fill:#FFFFFF;}\n</style>\n<g>\n\t<path class=\"st0\" d=\"M32.4,57.5l-18.3-7.4c-3-1-5-3.8-5-7c0-4.7,4.7-7.5,9.1-7.5h16.6c0.1,0,0.2,0,0.4,0c2.2,0,4-1.9,4-4.1\n\t\tc0-2-1.4-4-4.4-4H18.2c-8.9,0-17.4,6.3-17.4,15.7c0,6.7,4,12.1,10.2,14.7l18.2,7.4c3.2,1.5,5.2,4.7,5.1,8.3\n\t\tc0,6.3-5.3,10.2-11.2,10.2H4.4c-2.9,0-4.4,1.9-4.4,4c0,0.1,0,0.2,0,0.3c0.2,2.2,2.1,3.9,4.4,3.8h18.8c10.5,0,19.4-7.5,19.5-18.4\n\t\tC42.6,66.6,38.8,60.1,32.4,57.5z\"/>\n\t<path class=\"st0\" d=\"M60,5.9c-3.5,0-6.4,2.9-6.3,6.4c0,3.5,2.9,6.4,6.4,6.3c3.5,0,6.3-2.8,6.3-6.3c0,0,0-0.1,0-0.1\n\t\tC66.4,8.7,63.5,5.9,60,5.9z\"/>\n\t<path class=\"st0\" d=\"M59.8,27c-2.3,0.2-4,2.1-3.8,4.4v56.2c0,0.2,0,0.4,0,0.6c0.2,2.3,2.1,4,4.4,3.8s4-2.1,3.8-4.4V31.5\n\t\tc0-0.2,0-0.4,0-0.6C64.1,28.6,62.1,26.9,59.8,27z\"/>\n\t<path class=\"st0\" d=\"M127.6,87.7c0,0.1,0,0.3,0,0.4c0.1,2.3,2,4,4.3,3.9c2.3-0.1,4-2,3.9-4.3V55.5c0-15.5-12.6-28.1-28.1-28.1\n\t\tS79.6,40,79.6,55.5v32.2c0,0.2,0,0.4,0,0.6c0.2,2.3,2.1,4,4.4,3.8s4-2.1,3.8-4.4V55.5c0-0.3,0-0.6,0-0.9c0.2-11,9.3-19.7,20.3-19.4\n\t\tc11,0.2,19.7,9.3,19.4,20.3V87.7z\"/>\n\t<path class=\"st0\" d=\"M196.9,15.2c5.2,0,7.8-3.5,7.8-7.3s-2.5-7.4-7.8-7.4c-12.1,0.1-23.7,4.9-32.2,13.5c-8.6,8.5-13.5,20-13.5,32.1\n\t\tv38.4c0,0.2,0,0.5,0,0.7v3.6c0,9.2-7.5,16.6-16.6,16.6c-3.8,0.1-6.9,3.2-7,7c-0.1,4,3,7.4,7,7.6c17.2,0,31.2-14,31.2-31.2V60.3\n\t\tc0-0.2,0-0.4,0-0.5c0-0.1,0-0.2,0-0.3v-5.8h31c5.2,0,7.9-3.8,7.9-7.4c0-3.6-2.7-7.3-7.9-7.3h-30C170.3,25,182.6,15.3,196.9,15.2z\"\n\t\t/>\n\t<path class=\"st0\" d=\"M246.4,25.6c-18.3,0-33.1,14.8-33.2,33c0,18.3,14.8,33.1,33,33.2c6.7,0,13.2-2,18.7-5.8c0.6,3.4,3.6,5.9,7,5.8\n\t\tc3.6,0,7.4-2.6,7.4-7.8l0-25.2c0,0,0,0,0,0C279.4,40.5,264.7,25.6,246.4,25.6z M264.7,58.8c0,10.2-8.4,18.5-18.6,18.4\n\t\tc-10.2,0-18.5-8.4-18.4-18.6c0-10.2,8.4-18.5,18.6-18.4C256.4,40.3,264.6,48.6,264.7,58.8C264.7,58.8,264.7,58.8,264.7,58.8z\"/>\n\t<path class=\"st0\" d=\"M321.7,39.7c2.6,0,5.2,0.6,7.7,1.6c2.4,1.1,4.6,2.6,6.3,4.6c1.5,1.7,3.6,2.7,5.8,2.7c4,0,7.2-3.2,7.3-7.2\n\t\tc-0.1-2-0.9-4-2.3-5.5c-0.6-0.6-1.2-1.3-1.9-1.9c-13.6-12.6-34.8-11.7-47.4,1.9c-12.6,13.6-11.7,34.8,1.9,47.4\n\t\tc13.6,12.6,34.8,11.7,47.4-1.9c1.4-1.5,2.2-3.4,2.3-5.5c-0.1-3.9-3.3-7.1-7.2-7.2c-2.3,0-4.4,1-5.8,2.8c-3.6,3.9-8.7,6.1-14,6.1\n\t\tc-10.5,0-19-8.5-19-19S311.2,39.7,321.7,39.7z\"/>\n\t<path class=\"st0\" d=\"M390.1,40.2c5.2,0,7.8-3.6,7.8-7.3c0-3.6-2.5-7.3-7.8-7.3H375V7.9c0-5.2-3.6-7.9-7.3-7.9\n\t\tc-3.7,0-7.3,2.7-7.3,7.9v54.8c0,16.1,13.1,29.1,29.1,29.1c5.2,0,7.8-3.6,7.8-7.3c0-3.6-2.5-7.3-7.8-7.3c-8-0.1-14.5-6.6-14.6-14.6\n\t\tV40.2H390.1z\"/>\n\t<path class=\"st0\" d=\"M459.9,25.6c-3.7,0-7.3,2.5-7.3,7.8V63c-0.2,7.9-6.5,14.2-14.4,14.4c-8.1,0.2-14.9-6.2-15.1-14.4V33.4\n\t\tc0-5.2-3.6-7.8-7.3-7.8c-3.7,0-7.3,2.5-7.3,7.8V63c0.3,15.8,13,28.6,28.8,28.8c16.2,0.3,29.6-12.6,29.9-28.8V33.4\n\t\tC467.3,28.2,463.5,25.6,459.9,25.6z\"/>\n\t<path class=\"st0\" d=\"M508.3,25.6c-16.2,0-29.4,13.2-29.4,29.4v29.5c0,5.2,3.7,7.8,7.3,7.8c3.6,0,7.3-2.5,7.3-7.8V55\n\t\tc0-3.9,1.6-7.7,4.4-10.4c2.8-2.8,6.5-4.4,10.4-4.4c5.2,0,7.8-3.7,7.8-7.3C516.1,29.3,513.5,25.6,508.3,25.6z\"/>\n\t<path class=\"st0\" d=\"M552,25.6c-18.3,0-33.1,14.8-33.2,33c0,18.3,14.8,33.1,33,33.2c6.7,0,13.2-2,18.7-5.8c0.6,3.4,3.6,5.9,7,5.8\n\t\tc3.6,0,7.4-2.6,7.4-7.8l0-25.2c0,0,0,0,0,0C585,40.5,570.2,25.6,552,25.6z M551.7,77.2c-10.2,0-18.5-8.4-18.5-18.6\n\t\ts8.4-18.5,18.6-18.5c10.2,0.1,18.4,8.4,18.5,18.6C570.2,69,561.9,77.3,551.7,77.2z\"/>\n</g>\n</svg>"
183
+ },
184
+ "wordmarkPrimary": {
185
+ "file": "art/wordmarkPrimary.svg",
186
+ "viewBox": {
187
+ "x": 0,
188
+ "y": 0,
189
+ "width": 584.9,
190
+ "height": 120
191
+ },
192
+ "svg": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- Generator: Adobe Illustrator 24.2.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\n<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n\t viewBox=\"0 0 584.9 120\" style=\"enable-background:new 0 0 584.9 120;\" xml:space=\"preserve\">\n<style type=\"text/css\">\n\t.st0{fill:#590D82;}\n</style>\n<g>\n\t<path class=\"st0\" d=\"M32.4,57.5l-18.3-7.4c-3-1-5-3.8-5-7c0-4.7,4.7-7.5,9.1-7.5h16.6c0.1,0,0.2,0,0.4,0c2.2,0,4-1.9,4-4.1\n\t\tc0-2-1.4-4-4.4-4H18.2c-8.9,0-17.4,6.3-17.4,15.7c0,6.7,4,12.1,10.2,14.7l18.2,7.4c3.2,1.5,5.2,4.7,5.1,8.3\n\t\tc0,6.3-5.3,10.2-11.2,10.2H4.4c-2.9,0-4.4,1.9-4.4,4c0,0.1,0,0.2,0,0.3c0.2,2.2,2.1,3.9,4.4,3.8h18.8c10.5,0,19.4-7.5,19.5-18.4\n\t\tC42.6,66.6,38.8,60.1,32.4,57.5z\"/>\n\t<path class=\"st0\" d=\"M60,5.9c-3.5,0-6.4,2.9-6.3,6.4c0,3.5,2.9,6.4,6.4,6.3c3.5,0,6.3-2.8,6.3-6.3c0,0,0-0.1,0-0.1\n\t\tC66.4,8.7,63.5,5.9,60,5.9z\"/>\n\t<path class=\"st0\" d=\"M59.8,27c-2.3,0.2-4,2.1-3.8,4.4v56.2c0,0.2,0,0.4,0,0.6c0.2,2.3,2.1,4,4.4,3.8s4-2.1,3.8-4.4V31.5\n\t\tc0-0.2,0-0.4,0-0.6C64.1,28.6,62.1,26.9,59.8,27z\"/>\n\t<path class=\"st0\" d=\"M127.6,87.7c0,0.1,0,0.3,0,0.4c0.1,2.3,2,4,4.3,3.9c2.3-0.1,4-2,3.9-4.3V55.5c0-15.5-12.6-28.1-28.1-28.1\n\t\tS79.6,40,79.6,55.5v32.2c0,0.2,0,0.4,0,0.6c0.2,2.3,2.1,4,4.4,3.8s4-2.1,3.8-4.4V55.5c0-0.3,0-0.6,0-0.9c0.2-11,9.3-19.7,20.3-19.4\n\t\tc11,0.2,19.7,9.3,19.4,20.3V87.7z\"/>\n\t<path class=\"st0\" d=\"M196.9,15.2c5.2,0,7.8-3.5,7.8-7.3s-2.5-7.4-7.8-7.4c-12.1,0.1-23.7,4.9-32.2,13.5c-8.6,8.5-13.5,20-13.5,32.1\n\t\tv38.4c0,0.2,0,0.5,0,0.7v3.6c0,9.2-7.5,16.6-16.6,16.6c-3.8,0.1-6.9,3.2-7,7c-0.1,4,3,7.4,7,7.6c17.2,0,31.2-14,31.2-31.2V60.3\n\t\tc0-0.2,0-0.4,0-0.5c0-0.1,0-0.2,0-0.3v-5.8h31c5.2,0,7.9-3.8,7.9-7.4c0-3.6-2.7-7.3-7.9-7.3h-30C170.3,25,182.6,15.3,196.9,15.2z\"\n\t\t/>\n\t<path class=\"st0\" d=\"M246.4,25.6c-18.3,0-33.1,14.8-33.2,33c0,18.3,14.8,33.1,33,33.2c6.7,0,13.2-2,18.7-5.8c0.6,3.4,3.6,5.9,7,5.8\n\t\tc3.6,0,7.4-2.6,7.4-7.8l0-25.2c0,0,0,0,0,0C279.4,40.5,264.7,25.6,246.4,25.6z M264.7,58.8c0,10.2-8.4,18.5-18.6,18.4\n\t\tc-10.2,0-18.5-8.4-18.4-18.6c0-10.2,8.4-18.5,18.6-18.4C256.4,40.3,264.6,48.6,264.7,58.8C264.7,58.8,264.7,58.8,264.7,58.8z\"/>\n\t<path class=\"st0\" d=\"M321.7,39.7c2.6,0,5.2,0.6,7.7,1.6c2.4,1.1,4.6,2.6,6.3,4.6c1.5,1.7,3.6,2.7,5.8,2.7c4,0,7.2-3.2,7.3-7.2\n\t\tc-0.1-2-0.9-4-2.3-5.5c-0.6-0.6-1.2-1.3-1.9-1.9c-13.6-12.6-34.8-11.7-47.4,1.9c-12.6,13.6-11.7,34.8,1.9,47.4\n\t\tc13.6,12.6,34.8,11.7,47.4-1.9c1.4-1.5,2.2-3.4,2.3-5.5c-0.1-3.9-3.3-7.1-7.2-7.2c-2.3,0-4.4,1-5.8,2.8c-3.6,3.9-8.7,6.1-14,6.1\n\t\tc-10.5,0-19-8.5-19-19S311.2,39.7,321.7,39.7z\"/>\n\t<path class=\"st0\" d=\"M390.1,40.2c5.2,0,7.8-3.6,7.8-7.3c0-3.6-2.5-7.3-7.8-7.3H375V7.9c0-5.2-3.6-7.9-7.3-7.9\n\t\tc-3.7,0-7.3,2.7-7.3,7.9v54.8c0,16.1,13.1,29.1,29.1,29.1c5.2,0,7.8-3.6,7.8-7.3c0-3.6-2.5-7.3-7.8-7.3c-8-0.1-14.5-6.6-14.6-14.6\n\t\tV40.2H390.1z\"/>\n\t<path class=\"st0\" d=\"M459.9,25.6c-3.7,0-7.3,2.5-7.3,7.8V63c-0.2,7.9-6.5,14.2-14.4,14.4c-8.1,0.2-14.9-6.2-15.1-14.4V33.4\n\t\tc0-5.2-3.6-7.8-7.3-7.8c-3.7,0-7.3,2.5-7.3,7.8V63c0.3,15.8,13,28.6,28.8,28.8c16.2,0.3,29.6-12.6,29.9-28.8V33.4\n\t\tC467.3,28.2,463.5,25.6,459.9,25.6z\"/>\n\t<path class=\"st0\" d=\"M508.3,25.6c-16.2,0-29.4,13.2-29.4,29.4v29.5c0,5.2,3.7,7.8,7.3,7.8c3.6,0,7.3-2.5,7.3-7.8V55\n\t\tc0-3.9,1.6-7.7,4.4-10.4c2.8-2.8,6.5-4.4,10.4-4.4c5.2,0,7.8-3.7,7.8-7.3C516.1,29.3,513.5,25.6,508.3,25.6z\"/>\n\t<path class=\"st0\" d=\"M552,25.6c-18.3,0-33.1,14.8-33.2,33c0,18.3,14.8,33.1,33,33.2c6.7,0,13.2-2,18.7-5.8c0.6,3.4,3.6,5.9,7,5.8\n\t\tc3.6,0,7.4-2.6,7.4-7.8l0-25.2c0,0,0,0,0,0C585,40.5,570.2,25.6,552,25.6z M551.7,77.2c-10.2,0-18.5-8.4-18.5-18.6\n\t\ts8.4-18.5,18.6-18.5c10.2,0.1,18.4,8.4,18.5,18.6C570.2,69,561.9,77.3,551.7,77.2z\"/>\n</g>\n</svg>"
193
+ },
194
+ "mark3d": {
195
+ "file": "art/mark3d.svg",
196
+ "viewBox": {
197
+ "x": 0,
198
+ "y": 0,
199
+ "width": 135,
200
+ "height": 135
201
+ },
202
+ "svg": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!-- The 3D mark: the white mark's two halves under one gradient (bottom-left primary #590d82 → primaryLight #9816df → lilac #d7a6f8 top-right) and a soft highlight. A vector approximation of the designer's Illustrator master, authored 2026-09-08; the operator's pick for video and social. -->\n<svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 135 135\">\n<defs>\n\t<linearGradient id=\"sf3d\" gradientUnits=\"userSpaceOnUse\" x1=\"8\" y1=\"128\" x2=\"128\" y2=\"8\"><stop offset=\"0\" stop-color=\"#590d82\"/><stop offset=\"0.52\" stop-color=\"#9816df\"/><stop offset=\"1\" stop-color=\"#d7a6f8\"/></linearGradient>\n\t<radialGradient id=\"sf3dHi\" gradientUnits=\"userSpaceOnUse\" cx=\"96\" cy=\"28\" r=\"92\"><stop offset=\"0\" stop-color=\"#ffffff\" stop-opacity=\"0.38\"/><stop offset=\"0.55\" stop-color=\"#ffffff\" stop-opacity=\"0.06\"/><stop offset=\"1\" stop-color=\"#ffffff\" stop-opacity=\"0\"/></radialGradient>\n</defs>\n\t<g id=\"right\"><path fill=\"url(#sf3d)\" d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4\n\t\tC140.6,64,132.6,34.2,111,15.9z\"/><path fill=\"url(#sf3dHi)\" d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4\n\t\tC140.6,64,132.6,34.2,111,15.9z\"/></g>\n\t<g id=\"left\"><path fill=\"url(#sf3d)\" d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6\n\t\tC43.6,118.7,59.3,102.7,59.3,83.1z\"/><path fill=\"url(#sf3dHi)\" d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6\n\t\tC43.6,118.7,59.3,102.7,59.3,83.1z\"/></g>\n</svg>"
203
+ },
204
+ "markCurrentColor": {
205
+ "file": "art/markCurrentColor.svg",
206
+ "viewBox": {
207
+ "x": 0,
208
+ "y": 0,
209
+ "width": 135,
210
+ "height": 135
211
+ },
212
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 135 135\"><g fill=\"currentColor\"><path d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4C140.6,64,132.6,34.2,111,15.9z\"/><path d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6C43.6,118.7,59.3,102.7,59.3,83.1z\"/></g></svg>"
213
+ },
214
+ "installedIcon": {
215
+ "file": "art/installedIcon.svg",
216
+ "viewBox": {
217
+ "x": 0,
218
+ "y": 0,
219
+ "width": 135,
220
+ "height": 135
221
+ },
222
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 135 135\"><rect width=\"135\" height=\"135\" fill=\"#ffffff\"/><g transform=\"translate(67.5 67.5) scale(0.8) translate(-67.5 -67.5)\" fill=\"#9816df\"><path d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4C140.6,64,132.6,34.2,111,15.9z\"/><path d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6C43.6,118.7,59.3,102.7,59.3,83.1z\"/></g></svg>"
223
+ },
224
+ "maskable": {
225
+ "file": "art/maskable.svg",
226
+ "viewBox": {
227
+ "x": 0,
228
+ "y": 0,
229
+ "width": 135,
230
+ "height": 135
231
+ },
232
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 135 135\"><rect width=\"135\" height=\"135\" fill=\"#ffffff\"/><g transform=\"translate(67.5 67.5) scale(0.56) translate(-67.5 -67.5)\" fill=\"#9816df\"><path d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4C140.6,64,132.6,34.2,111,15.9z\"/><path d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6C43.6,118.7,59.3,102.7,59.3,83.1z\"/></g></svg>"
233
+ },
234
+ "notification": {
235
+ "file": "art/notification.svg",
236
+ "viewBox": {
237
+ "x": 0,
238
+ "y": 0,
239
+ "width": 135,
240
+ "height": 135
241
+ },
242
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 135 135\"><g fill=\"#9816df\"><path d=\"M111,15.9c-19.6,0.4-35.3,16.4-35.3,36v31.1c0,20.7-12.2,39.5-31.2,47.9c35,12.7,73.8-5.4,86.5-40.4C140.6,64,132.6,34.2,111,15.9z\"/><path d=\"M59.3,83.1V51.9c0-20.7,12.2-39.5,31.2-47.9C55.5-8.7,16.8,9.4,4,44.4c-9.7,26.6-1.7,56.4,20,74.6C43.6,118.7,59.3,102.7,59.3,83.1z\"/></g></svg>"
243
+ }
244
+ },
245
+ "literals": {
246
+ "current": [
247
+ "https://www.sinfactura.com",
248
+ "app.sinfactura.com",
249
+ "sinfactura.com",
250
+ "SINFACTURA",
251
+ "sinfactura",
252
+ "cesta.ar"
253
+ ],
254
+ "legacy": []
255
+ }
256
+ },
257
+ "ficticia": {
258
+ "schemaVersion": 1,
259
+ "name": "Ficticia",
260
+ "slug": "ficticia",
261
+ "legacyNames": [],
262
+ "domain": "ficticia.example",
263
+ "siteUrl": "https://www.ficticia.example",
264
+ "appDomain": "app.ficticia.example",
265
+ "storefrontDomain": "tienda.ficticia.example",
266
+ "trialDays": 30,
267
+ "cta": {
268
+ "primary": "Probá Ficticia",
269
+ "short": "Probá Ficticia",
270
+ "trust": "Marca de prueba · No es una marca real",
271
+ "signup": "Creá tu cuenta de prueba",
272
+ "google": "Continuá con Google",
273
+ "demo": "Mirá la prueba",
274
+ "whatsapp": "Escribinos"
275
+ },
276
+ "contact": {
277
+ "whatsapp": "+5491100000000",
278
+ "whatsappDigits": "5491100000000",
279
+ "phone": "+54-11-0000-0000",
280
+ "emailJobs": "empleo@ficticia.example",
281
+ "emailSupport": "soporte@ficticia.example",
282
+ "emailSales": "ventas@ficticia.example",
283
+ "emailPrivacy": "privacidad@ficticia.example",
284
+ "emailNoReply": "no-responder@ficticia.example",
285
+ "smsPrefix": "Ficticia: "
286
+ },
287
+ "legal": {
288
+ "name": "Ficticia S.A. (marca de prueba)",
289
+ "cuit": "00-00000000-0",
290
+ "street": "Calle de prueba 123",
291
+ "postalCode": "0000",
292
+ "city": "Ciudad de prueba",
293
+ "province": "Buenos Aires",
294
+ "country": "Argentina",
295
+ "ivaRate": 0.21
296
+ },
297
+ "colors": {
298
+ "primary": "#2B4C7E",
299
+ "primaryDark": "#1B2F4E",
300
+ "primaryLight": "#6E8FC2",
301
+ "cta": "#3FA796",
302
+ "ctaDark": "#2A7366",
303
+ "ctaLight": "#A9DDD3",
304
+ "green": "#2E7D32",
305
+ "greenLight": "#81C784",
306
+ "ink": "#14181F",
307
+ "paper": "#FAFAFA",
308
+ "seedPrimary": "#2B4C7E",
309
+ "seedNavbar": "#1B2F4E",
310
+ "maskableBackground": "#2B4C7E",
311
+ "emailHeader": "#2B4C7E"
312
+ },
313
+ "fonts": {
314
+ "family": "Arial",
315
+ "regular": "Regular",
316
+ "bold": "Bold",
317
+ "heavy": "Bold",
318
+ "semibold": "Bold"
319
+ },
320
+ "shortName": "Ficticia",
321
+ "nameCase": "title",
322
+ "pronunciation": "ficticia",
323
+ "tagline": "Una marca de prueba",
324
+ "legacyDomains": [],
325
+ "initials": "FI",
326
+ "description": "Marca de prueba para verificar que nada escribe la marca real",
327
+ "productNames": {
328
+ "pos": "Caja Ficticia",
329
+ "store": "Tienda Ficticia",
330
+ "printAgent": "Ficticia Impresoras",
331
+ "mobileApp": "Ficticia Móvil"
332
+ },
333
+ "hosts": {
334
+ "prod": {
335
+ "site": "www.ficticia.example",
336
+ "app": "app.ficticia.example",
337
+ "api": "api.ficticia.example",
338
+ "apiWeb": "api-web.ficticia.example",
339
+ "apiOps": "api-ops.ficticia.example",
340
+ "wss": "wss.ficticia.example",
341
+ "auth": "auth.ficticia.example",
342
+ "images": "images.ficticia.example",
343
+ "download": "download.ficticia.example",
344
+ "help": "help.ficticia.example",
345
+ "docs": "docs.ficticia.example",
346
+ "test": null,
347
+ "storefront": "tienda.ficticia.example"
348
+ },
349
+ "dev": {
350
+ "site": null,
351
+ "app": "test.ficticia.example",
352
+ "api": "api-dev.ficticia.example",
353
+ "apiWeb": "api-web-dev.ficticia.example",
354
+ "apiOps": "api-ops-dev.ficticia.example",
355
+ "wss": "wss-dev.ficticia.example",
356
+ "auth": "auth-dev.ficticia.example",
357
+ "images": "images-dev.ficticia.example",
358
+ "download": "download-dev.ficticia.example",
359
+ "help": "help-dev.ficticia.example",
360
+ "docs": "docs-dev.ficticia.example",
361
+ "test": "test.ficticia.example",
362
+ "storefront": "dev.tienda.ficticia.example"
363
+ }
364
+ },
365
+ "social": {
366
+ "instagram": "ficticia.example",
367
+ "youtube": "ficticia.example"
368
+ },
369
+ "logos": {
370
+ "mark": "art/mark.svg",
371
+ "markWhite": "art/markWhite.svg",
372
+ "favicon": "art/favicon.svg",
373
+ "lockupWhite": "art/lockupWhite.svg",
374
+ "wordmarkWhite": "art/wordmarkWhite.svg",
375
+ "wordmarkPrimary": "art/wordmarkPrimary.svg",
376
+ "mark3d": "art/mark3d.svg",
377
+ "markCurrentColor": "art/markCurrentColor.svg",
378
+ "installedIcon": "art/installedIcon.svg",
379
+ "maskable": "art/maskable.svg",
380
+ "notification": "art/notification.svg"
381
+ },
382
+ "art": {
383
+ "mark": {
384
+ "file": "art/mark.svg",
385
+ "viewBox": {
386
+ "x": 0,
387
+ "y": 0,
388
+ "width": 100,
389
+ "height": 100
390
+ },
391
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"#2B4C7E\"/></svg>"
392
+ },
393
+ "markWhite": {
394
+ "file": "art/markWhite.svg",
395
+ "viewBox": {
396
+ "x": 0,
397
+ "y": 0,
398
+ "width": 100,
399
+ "height": 100
400
+ },
401
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"#ffffff\"/></svg>"
402
+ },
403
+ "favicon": {
404
+ "file": "art/favicon.svg",
405
+ "viewBox": {
406
+ "x": 0,
407
+ "y": 0,
408
+ "width": 100,
409
+ "height": 100
410
+ },
411
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><rect width=\"100\" height=\"100\" rx=\"20\" fill=\"#2B4C7E\"/><circle cx=\"50\" cy=\"50\" r=\"30\" fill=\"#ffffff\"/></svg>"
412
+ },
413
+ "lockupWhite": {
414
+ "file": "art/lockupWhite.svg",
415
+ "viewBox": {
416
+ "x": 0,
417
+ "y": 0,
418
+ "width": 520,
419
+ "height": 100
420
+ },
421
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 520 100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"#ffffff\"/><rect x=\"120\" y=\"30\" width=\"400\" height=\"40\" rx=\"20\" fill=\"#ffffff\"/></svg>"
422
+ },
423
+ "wordmarkWhite": {
424
+ "file": "art/wordmarkWhite.svg",
425
+ "viewBox": {
426
+ "x": 0,
427
+ "y": 0,
428
+ "width": 400,
429
+ "height": 80
430
+ },
431
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 80\"><rect x=\"0\" y=\"20\" width=\"400\" height=\"40\" rx=\"20\" fill=\"#ffffff\"/></svg>"
432
+ },
433
+ "wordmarkPrimary": {
434
+ "file": "art/wordmarkPrimary.svg",
435
+ "viewBox": {
436
+ "x": 0,
437
+ "y": 0,
438
+ "width": 400,
439
+ "height": 80
440
+ },
441
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 400 80\"><rect x=\"0\" y=\"20\" width=\"400\" height=\"40\" rx=\"20\" fill=\"#2B4C7E\"/></svg>"
442
+ },
443
+ "mark3d": {
444
+ "file": "art/mark3d.svg",
445
+ "viewBox": {
446
+ "x": 0,
447
+ "y": 0,
448
+ "width": 100,
449
+ "height": 100
450
+ },
451
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"#2B4C7E\"/></svg>"
452
+ },
453
+ "markCurrentColor": {
454
+ "file": "art/markCurrentColor.svg",
455
+ "viewBox": {
456
+ "x": 0,
457
+ "y": 0,
458
+ "width": 100,
459
+ "height": 100
460
+ },
461
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"currentColor\"/></svg>"
462
+ },
463
+ "installedIcon": {
464
+ "file": "art/installedIcon.svg",
465
+ "viewBox": {
466
+ "x": 0,
467
+ "y": 0,
468
+ "width": 100,
469
+ "height": 100
470
+ },
471
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><rect width=\"100\" height=\"100\" rx=\"20\" fill=\"#2B4C7E\"/><circle cx=\"50\" cy=\"50\" r=\"30\" fill=\"#ffffff\"/></svg>"
472
+ },
473
+ "maskable": {
474
+ "file": "art/maskable.svg",
475
+ "viewBox": {
476
+ "x": 0,
477
+ "y": 0,
478
+ "width": 100,
479
+ "height": 100
480
+ },
481
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><rect width=\"100\" height=\"100\" fill=\"#2B4C7E\"/><circle cx=\"50\" cy=\"50\" r=\"22\" fill=\"#ffffff\"/></svg>"
482
+ },
483
+ "notification": {
484
+ "file": "art/notification.svg",
485
+ "viewBox": {
486
+ "x": 0,
487
+ "y": 0,
488
+ "width": 100,
489
+ "height": 100
490
+ },
491
+ "svg": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><circle cx=\"50\" cy=\"50\" r=\"40\" fill=\"#2B4C7E\"/></svg>"
492
+ }
493
+ },
494
+ "literals": {
495
+ "current": [
496
+ "https://www.ficticia.example",
497
+ "tienda.ficticia.example",
498
+ "app.ficticia.example",
499
+ "ficticia.example",
500
+ "Ficticia",
501
+ "ficticia"
502
+ ],
503
+ "legacy": []
504
+ }
505
+ }
506
+ });
507
+ const DEFAULT_PACK = "sinfactura";
508
+ const STAGES = freeze(["prod","dev"]);
509
+ const SOCIAL_URL = freeze({"instagram":"https://www.instagram.com/{h}","youtube":"https://www.youtube.com/@{h}","tiktok":"https://www.tiktok.com/@{h}","linkedin":"https://www.linkedin.com/company/{h}","x":"https://x.com/{h}","facebook":"https://www.facebook.com/{h}"});
510
+ function getPack(slug = DEFAULT_PACK) {
511
+ if (typeof slug !== 'string' || !Object.prototype.hasOwnProperty.call(PACKS, slug)) throw new Error('Unknown brand pack: ' + slug + ' (' + Object.keys(PACKS).join(', ') + ')');
512
+ return PACKS[slug];
513
+ }
514
+ // BRAND selects the pack in Node builds; a bundler passes its own value to getPack().
515
+ const brand = getPack((typeof process !== 'undefined' && process.env && process.env.BRAND) || DEFAULT_PACK);
516
+ function hosts(stage, pack = brand) {
517
+ if (!STAGES.includes(stage)) throw new Error('Unknown stage: ' + stage + ' (' + STAGES.join(', ') + ')');
518
+ return pack.hosts[stage];
519
+ }
520
+ function origin(role, stage, pack = brand) {
521
+ const host = hosts(stage, pack)[role];
522
+ if (host === undefined) throw new Error('Unknown host role: ' + role);
523
+ return host === null ? null : 'https://' + host;
524
+ }
525
+ function literals(pack = brand) { return pack.literals; }
526
+ function socialUrl(network, pack = brand) {
527
+ if (!Object.prototype.hasOwnProperty.call(SOCIAL_URL, network)) throw new Error('Unknown network: ' + network);
528
+ const handle = pack.social[network];
529
+ return handle === undefined ? null : SOCIAL_URL[network].replace('{h}', handle);
530
+ }
531
+ function art(role, pack = brand) {
532
+ const entry = pack.art[role];
533
+ if (!entry) throw new Error('Unknown art role: ' + role);
534
+ return { ...entry, path: 'platform-brand/packs/' + pack.slug + '/' + entry.file };
535
+ }
536
+ module.exports = { packs: PACKS, DEFAULT_PACK, STAGES, getPack, brand, hosts, origin, literals, socialUrl, art };
package/index.d.cts ADDED
@@ -0,0 +1,37 @@
1
+ // Generated by sinfactura/marketing scripts/brand-package.mjs. Do not edit.
2
+ export type PackSlug = "sinfactura" | "ficticia";
3
+ export type Stage = "prod" | "dev";
4
+ export type HostRole = "site" | "app" | "api" | "apiWeb" | "apiOps" | "wss" | "auth" | "images" | "download" | "help" | "docs" | "test" | "storefront";
5
+ export type SocialNetwork = "instagram" | "youtube" | "tiktok" | "linkedin" | "x" | "facebook";
6
+ export type ArtRole = "mark" | "markWhite" | "favicon" | "lockupWhite" | "wordmarkWhite" | "wordmarkPrimary" | "mark3d" | "markCurrentColor" | "installedIcon" | "maskable" | "notification";
7
+ export interface ArtEntry { file: string; viewBox: { x: number; y: number; width: number; height: number }; svg: string }
8
+ export interface BrandPack {
9
+ schemaVersion: 1; name: string; shortName: string; slug: PackSlug; initials: string; nameCase: 'upper' | 'lower' | 'title' | 'preserved';
10
+ pronunciation: string; tagline: string; description: string; domain: string; siteUrl: string; appDomain: string; storefrontDomain: string;
11
+ legacyNames: readonly string[]; legacyDomains: readonly string[]; trialDays: number;
12
+ cta: Readonly<Record<'primary' | 'short' | 'trust' | 'signup' | 'google' | 'demo' | 'whatsapp', string>>;
13
+ contact: Readonly<{ whatsapp: string; whatsappDigits: string; phone: string; emailJobs: string; emailSupport: string; emailSales: string; emailPrivacy: string; emailNoReply: string | null; smsPrefix: string }>;
14
+ legal: Readonly<{ name: string; cuit: string; street: string; postalCode: string; city: string; province: string; country: string; ivaRate: number }>;
15
+ colors: Readonly<Record<string, string>>;
16
+ fonts: Readonly<Record<'family' | 'regular' | 'bold' | 'heavy' | 'semibold', string>>;
17
+ productNames: Readonly<Record<"pos" | "store" | "printAgent" | "mobileApp", string>>;
18
+ hosts: Readonly<Record<Stage, Readonly<Record<HostRole, string | null>>>>;
19
+ social: Readonly<Partial<Record<SocialNetwork, string>>>;
20
+ logos: Readonly<Record<ArtRole, string>>;
21
+ art: Readonly<Record<ArtRole, ArtEntry>>;
22
+ literals: Readonly<{ current: readonly string[]; legacy: readonly string[] }>;
23
+ }
24
+ export declare const packs: Readonly<Record<PackSlug, BrandPack>>;
25
+ export declare const DEFAULT_PACK: PackSlug;
26
+ export declare const STAGES: readonly Stage[];
27
+ /** The pack named by process.env.BRAND, else DEFAULT_PACK. */
28
+ export declare const brand: BrandPack;
29
+ export declare function getPack(slug?: PackSlug | string): BrandPack;
30
+ export declare function hosts(stage: Stage, pack?: BrandPack): Readonly<Record<HostRole, string | null>>;
31
+ /** https://<host>, or null where the stage has no such host. */
32
+ export declare function origin(role: HostRole, stage: Stage, pack?: BrandPack): string | null;
33
+ /** The strings a literal lint rejects outside the brand module: the pack's own identity and its legacy names and domains. */
34
+ export declare function literals(pack?: BrandPack): BrandPack['literals'];
35
+ export declare function socialUrl(network: SocialNetwork, pack?: BrandPack): string | null;
36
+ /** The art entry plus its import path inside this package. */
37
+ export declare function art(role: ArtRole, pack?: BrandPack): ArtEntry & { path: string };