@021.is/brand-studio 0.6.0 → 0.6.7
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.
|
@@ -20,7 +20,10 @@ type BrandStudioProps = {
|
|
|
20
20
|
animatedLogo?: ReactNode;
|
|
21
21
|
/** Host app's own glyphs for the Icons section. The lib ships none. */
|
|
22
22
|
icons?: BrandIcon[];
|
|
23
|
+
/** Real wordmark lockups: Overview headline + Download previews. */
|
|
24
|
+
wordmark?: ReactNode;
|
|
25
|
+
wordmarkDark?: ReactNode;
|
|
23
26
|
};
|
|
24
|
-
declare function BrandStudio({ config, route, basePath, staticLogo, staticLogoDark, animatedLogo, icons, }: BrandStudioProps): react_jsx_runtime.JSX.Element;
|
|
27
|
+
declare function BrandStudio({ config, route, basePath, staticLogo, staticLogoDark, animatedLogo, icons, wordmark, wordmarkDark, }: BrandStudioProps): react_jsx_runtime.JSX.Element;
|
|
25
28
|
|
|
26
29
|
export { type BrandIcon as B, BrandStudio as a, type BrandStudioProps as b };
|
package/dist/app/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { B as BrandIcon, a as BrandStudio, b as BrandStudioProps } from '../BrandStudio-
|
|
1
|
+
export { B as BrandIcon, a as BrandStudio, b as BrandStudioProps } from '../BrandStudio-ksHBhiX3.js';
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
4
|
import { c as BrandStudioSection } from '../types-BycZ2igw.js';
|
package/dist/app/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export { BrandStudio, Navigation, buildNavigation } from '../chunk-
|
|
2
|
+
export { BrandStudio, Navigation, buildNavigation } from '../chunk-H3LCFXCK.js';
|
|
3
3
|
import '../chunk-YDZA26YU.js';
|
|
4
4
|
import '../chunk-MDTU2JR5.js';
|
|
5
5
|
export { contrastBadge, contrastRatio, relativeLuminance } from '../chunk-JQV3ASME.js';
|
|
@@ -10,7 +10,6 @@ var ITEMS = [
|
|
|
10
10
|
{ section: BrandStudioSection.Colors, label: "Colors" },
|
|
11
11
|
{ section: BrandStudioSection.Typography, label: "Type" },
|
|
12
12
|
{ section: BrandStudioSection.Icons, label: "Icons" },
|
|
13
|
-
{ section: BrandStudioSection.Motion, label: "Motion" },
|
|
14
13
|
{ section: BrandStudioSection.Download, label: "Download" }
|
|
15
14
|
];
|
|
16
15
|
function buildNavigation(basePath) {
|
|
@@ -30,7 +29,7 @@ function Navigation({ current, basePath, renderLink }) {
|
|
|
30
29
|
gap: "1.5rem",
|
|
31
30
|
listStyle: "none",
|
|
32
31
|
margin: 0,
|
|
33
|
-
padding:
|
|
32
|
+
padding: 0,
|
|
34
33
|
fontFamily: "var(--bs-mono, ui-monospace, monospace)",
|
|
35
34
|
fontSize: "0.78rem",
|
|
36
35
|
letterSpacing: "0.12em",
|
|
@@ -182,7 +181,9 @@ var WORDMARK_HEIGHTS = [32, 48, 64, 96, 128];
|
|
|
182
181
|
function DownloadSection({
|
|
183
182
|
config,
|
|
184
183
|
staticLogo,
|
|
185
|
-
staticLogoDark
|
|
184
|
+
staticLogoDark,
|
|
185
|
+
wordmark,
|
|
186
|
+
wordmarkDark
|
|
186
187
|
}) {
|
|
187
188
|
const iconLightRef = useRef(null);
|
|
188
189
|
const iconDarkRef = useRef(null);
|
|
@@ -204,7 +205,12 @@ function DownloadSection({
|
|
|
204
205
|
const iconDark = findEntry(downloads, DownloadKind.Icon, DownloadMode.Dark, iconSize);
|
|
205
206
|
const logoLight = findEntry(downloads, DownloadKind.Logo, DownloadMode.Light, wmHeight);
|
|
206
207
|
const logoDark = findEntry(downloads, DownloadKind.Logo, DownloadMode.Dark, wmHeight);
|
|
207
|
-
function downloadIcon(mode) {
|
|
208
|
+
async function downloadIcon(mode) {
|
|
209
|
+
const entry = mode === "light" ? iconLight : iconDark;
|
|
210
|
+
if (entry) {
|
|
211
|
+
await fetchAndSave(entry.url, entry.filename ?? lastSegment(entry.url));
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
208
214
|
const ref = mode === "light" ? iconLightRef : iconDarkRef;
|
|
209
215
|
const svg = ref.current?.querySelector("svg");
|
|
210
216
|
if (!svg) return;
|
|
@@ -218,6 +224,11 @@ function DownloadSection({
|
|
|
218
224
|
);
|
|
219
225
|
}
|
|
220
226
|
async function downloadWordmark(mode) {
|
|
227
|
+
const entry = mode === "light" ? logoLight : logoDark;
|
|
228
|
+
if (entry) {
|
|
229
|
+
await fetchAndSave(entry.url, entry.filename ?? lastSegment(entry.url));
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
221
232
|
await document.fonts?.ready;
|
|
222
233
|
const text = measureRef.current?.querySelector("text");
|
|
223
234
|
if (!text) return;
|
|
@@ -265,7 +276,9 @@ function DownloadSection({
|
|
|
265
276
|
style: {
|
|
266
277
|
display: "grid",
|
|
267
278
|
gap: "1.5rem",
|
|
268
|
-
|
|
279
|
+
// min(20rem, 100%) so the 20rem floor never exceeds the container on
|
|
280
|
+
// narrow viewports (which would force horizontal overflow).
|
|
281
|
+
gridTemplateColumns: "repeat(auto-fit, minmax(min(20rem, 100%), 1fr))"
|
|
269
282
|
},
|
|
270
283
|
children: [
|
|
271
284
|
/* @__PURE__ */ jsxs("div", { style: cardStyle, children: [
|
|
@@ -308,8 +321,8 @@ function DownloadSection({
|
|
|
308
321
|
/* @__PURE__ */ jsxs("div", { style: cardStyle, children: [
|
|
309
322
|
/* @__PURE__ */ jsx("p", { style: eyebrowStyle, children: "Wordmark \xB7 logo text" }),
|
|
310
323
|
/* @__PURE__ */ jsxs("div", { style: previewRow, children: [
|
|
311
|
-
/* @__PURE__ */ jsx(PreviewPane, { bg: lightBg, label: "Light", labelColor: lightLabel, children: /* @__PURE__ */ jsx(WordmarkPreview, { name: config.name, sans, color: lightInk }) }),
|
|
312
|
-
/* @__PURE__ */ jsx(PreviewPane, { bg: darkBg, label: "Dark", labelColor: darkLabel, children: /* @__PURE__ */ jsx(WordmarkPreview, { name: config.name, sans, color: darkInk }) })
|
|
324
|
+
/* @__PURE__ */ jsx(PreviewPane, { bg: lightBg, label: "Light", labelColor: lightLabel, children: wordmark ?? /* @__PURE__ */ jsx(WordmarkPreview, { name: config.name, sans, color: lightInk }) }),
|
|
325
|
+
/* @__PURE__ */ jsx(PreviewPane, { bg: darkBg, label: "Dark", labelColor: darkLabel, children: wordmarkDark ?? wordmark ?? /* @__PURE__ */ jsx(WordmarkPreview, { name: config.name, sans, color: darkInk }) })
|
|
313
326
|
] }),
|
|
314
327
|
/* @__PURE__ */ jsx(
|
|
315
328
|
Dropdown,
|
|
@@ -404,6 +417,23 @@ function triggerBlobDownload(svgString, filename) {
|
|
|
404
417
|
a.remove();
|
|
405
418
|
window.setTimeout(() => URL.revokeObjectURL(url), 1e3);
|
|
406
419
|
}
|
|
420
|
+
async function fetchAndSave(url, filename) {
|
|
421
|
+
try {
|
|
422
|
+
const res = await fetch(url, { cache: "no-store" });
|
|
423
|
+
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
424
|
+
const blob = await res.blob();
|
|
425
|
+
const objectUrl = URL.createObjectURL(blob);
|
|
426
|
+
const a = document.createElement("a");
|
|
427
|
+
a.href = objectUrl;
|
|
428
|
+
a.download = filename;
|
|
429
|
+
document.body.appendChild(a);
|
|
430
|
+
a.click();
|
|
431
|
+
a.remove();
|
|
432
|
+
window.setTimeout(() => URL.revokeObjectURL(objectUrl), 1e3);
|
|
433
|
+
} catch {
|
|
434
|
+
window.open(url, "_blank", "noopener,noreferrer");
|
|
435
|
+
}
|
|
436
|
+
}
|
|
407
437
|
function UrlPair({ light, dark }) {
|
|
408
438
|
return /* @__PURE__ */ jsxs(
|
|
409
439
|
"div",
|
|
@@ -423,12 +453,40 @@ function UrlPair({ light, dark }) {
|
|
|
423
453
|
function UrlRow({ label, entry }) {
|
|
424
454
|
const [copied, setCopied] = useState(false);
|
|
425
455
|
const url = entry?.url ?? null;
|
|
426
|
-
function onCopy() {
|
|
427
|
-
if (!url || typeof
|
|
428
|
-
|
|
456
|
+
async function onCopy() {
|
|
457
|
+
if (!url || typeof window === "undefined") return;
|
|
458
|
+
const text = toAbsolute(url);
|
|
459
|
+
let ok = false;
|
|
460
|
+
if (typeof navigator !== "undefined" && navigator.clipboard) {
|
|
461
|
+
try {
|
|
462
|
+
await navigator.clipboard.writeText(text);
|
|
463
|
+
ok = true;
|
|
464
|
+
} catch {
|
|
465
|
+
ok = false;
|
|
466
|
+
}
|
|
467
|
+
}
|
|
468
|
+
if (!ok) {
|
|
469
|
+
try {
|
|
470
|
+
const ta = document.createElement("textarea");
|
|
471
|
+
ta.value = text;
|
|
472
|
+
ta.setAttribute("readonly", "");
|
|
473
|
+
ta.style.position = "fixed";
|
|
474
|
+
ta.style.top = "0";
|
|
475
|
+
ta.style.left = "0";
|
|
476
|
+
ta.style.opacity = "0";
|
|
477
|
+
document.body.appendChild(ta);
|
|
478
|
+
ta.focus();
|
|
479
|
+
ta.select();
|
|
480
|
+
ok = document.execCommand("copy");
|
|
481
|
+
document.body.removeChild(ta);
|
|
482
|
+
} catch {
|
|
483
|
+
ok = false;
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
if (ok) {
|
|
429
487
|
setCopied(true);
|
|
430
|
-
window.setTimeout(() => setCopied(false),
|
|
431
|
-
}
|
|
488
|
+
window.setTimeout(() => setCopied(false), 1600);
|
|
489
|
+
}
|
|
432
490
|
}
|
|
433
491
|
const disabled = !url;
|
|
434
492
|
const downloadName = entry?.filename ?? lastSegment(url ?? "");
|
|
@@ -477,12 +535,15 @@ function UrlRow({ label, entry }) {
|
|
|
477
535
|
type: "button",
|
|
478
536
|
onClick: onCopy,
|
|
479
537
|
disabled,
|
|
480
|
-
title: "Copy URL",
|
|
538
|
+
title: copied ? "URL copied" : "Copy URL",
|
|
539
|
+
"aria-live": "polite",
|
|
481
540
|
style: {
|
|
482
541
|
...copyButtonStyle,
|
|
542
|
+
background: copied ? "var(--md-primary)" : copyButtonStyle.background,
|
|
543
|
+
color: copied ? "var(--md-on-primary)" : copyButtonStyle.color,
|
|
483
544
|
cursor: disabled ? "not-allowed" : "pointer"
|
|
484
545
|
},
|
|
485
|
-
children: copied ? "Copied" : "Copy"
|
|
546
|
+
children: copied ? "\u2713 Copied" : "Copy"
|
|
486
547
|
}
|
|
487
548
|
)
|
|
488
549
|
]
|
|
@@ -621,7 +682,11 @@ var cardStyle = {
|
|
|
621
682
|
border: "1px solid var(--md-outline-variant)",
|
|
622
683
|
borderRadius: "0.85rem",
|
|
623
684
|
padding: "1.25rem",
|
|
624
|
-
background: "var(--md-surface-container-low)"
|
|
685
|
+
background: "var(--md-surface-container-low)",
|
|
686
|
+
// Grid items default to min-width:auto (won't shrink below content min-content),
|
|
687
|
+
// so the URL row's truncating <a> can't shrink and the row overflows the card.
|
|
688
|
+
// minWidth:0 lets the card shrink and the ellipsis do its job.
|
|
689
|
+
minWidth: 0
|
|
625
690
|
};
|
|
626
691
|
var eyebrowStyle = {
|
|
627
692
|
fontFamily: "var(--bs-mono, ui-monospace, monospace)",
|
|
@@ -747,7 +812,7 @@ function IconsSection({ staticLogo, icons }) {
|
|
|
747
812
|
gap: "1.5rem"
|
|
748
813
|
},
|
|
749
814
|
children: [
|
|
750
|
-
staticLogo ? /* @__PURE__ */ jsx(Tile, { label: "logo", children: staticLogo }) : null,
|
|
815
|
+
staticLogo && items.length === 0 ? /* @__PURE__ */ jsx(Tile, { label: "logo", children: staticLogo }) : null,
|
|
751
816
|
items.map((it, i) => /* @__PURE__ */ jsx(Tile, { label: it.label, children: it.node }, it.label ?? `icon-${i}`))
|
|
752
817
|
]
|
|
753
818
|
}
|
|
@@ -890,128 +955,13 @@ var eyebrow4 = {
|
|
|
890
955
|
color: "var(--md-primary)",
|
|
891
956
|
margin: 0
|
|
892
957
|
};
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
["PulseLoop", "Scale + fade breathing"],
|
|
897
|
-
["RingDraw", "Stroke a ring into place"],
|
|
898
|
-
["Wobble", "Playful rotate-settle"],
|
|
899
|
-
["AppearGrow", "Pop in from nothing"],
|
|
900
|
-
["Sequence", "Compose steps, persist + loop"],
|
|
901
|
-
["Strikethrough", "Draw a line through"]
|
|
902
|
-
];
|
|
903
|
-
function MotionPlaygroundSection({
|
|
904
|
-
animatedLogo
|
|
958
|
+
function OverviewSection({
|
|
959
|
+
config,
|
|
960
|
+
lockup
|
|
905
961
|
}) {
|
|
906
962
|
return /* @__PURE__ */ jsxs("section", { children: [
|
|
907
|
-
/* @__PURE__ */
|
|
908
|
-
|
|
909
|
-
/* @__PURE__ */ jsx(
|
|
910
|
-
"h2",
|
|
911
|
-
{
|
|
912
|
-
style: {
|
|
913
|
-
fontSize: "clamp(1.5rem, 3vw, 2.25rem)",
|
|
914
|
-
letterSpacing: "-0.02em",
|
|
915
|
-
margin: "0.4rem 0 0",
|
|
916
|
-
fontWeight: 600,
|
|
917
|
-
color: "var(--md-on-surface)"
|
|
918
|
-
},
|
|
919
|
-
children: "Loading."
|
|
920
|
-
}
|
|
921
|
-
),
|
|
922
|
-
/* @__PURE__ */ jsxs(
|
|
923
|
-
"p",
|
|
924
|
-
{
|
|
925
|
-
style: { maxWidth: "56ch", color: "var(--md-on-surface-variant)", marginTop: "0.75rem" },
|
|
926
|
-
children: [
|
|
927
|
-
"The brand mark as a loading state. Pass your own animated mark via",
|
|
928
|
-
" ",
|
|
929
|
-
/* @__PURE__ */ jsx("code", { style: { fontFamily: "var(--bs-mono)" }, children: "animatedLogo" }),
|
|
930
|
-
"; otherwise a neutral spinner stands in."
|
|
931
|
-
]
|
|
932
|
-
}
|
|
933
|
-
)
|
|
934
|
-
] }),
|
|
935
|
-
/* @__PURE__ */ jsx(
|
|
936
|
-
"div",
|
|
937
|
-
{
|
|
938
|
-
style: {
|
|
939
|
-
marginTop: "2rem",
|
|
940
|
-
display: "flex",
|
|
941
|
-
justifyContent: "center",
|
|
942
|
-
padding: "3rem",
|
|
943
|
-
borderRadius: "0.75rem",
|
|
944
|
-
background: "var(--md-surface-container)",
|
|
945
|
-
border: "1px solid var(--md-outline-variant)",
|
|
946
|
-
color: "var(--md-primary)"
|
|
947
|
-
},
|
|
948
|
-
children: animatedLogo ?? /* @__PURE__ */ jsx(SpinnerLoadingMark, { size: 220, foreground: "var(--md-primary)" })
|
|
949
|
-
}
|
|
950
|
-
),
|
|
951
|
-
/* @__PURE__ */ jsxs("div", { style: { marginTop: "2.5rem" }, children: [
|
|
952
|
-
/* @__PURE__ */ jsx("p", { style: { ...eyebrow4, fontSize: "0.7rem", marginBottom: "1rem" }, children: "Motion primitives" }),
|
|
953
|
-
/* @__PURE__ */ jsx(
|
|
954
|
-
"div",
|
|
955
|
-
{
|
|
956
|
-
style: {
|
|
957
|
-
display: "grid",
|
|
958
|
-
gap: "0.6rem",
|
|
959
|
-
gridTemplateColumns: "repeat(auto-fill, minmax(220px, 1fr))"
|
|
960
|
-
},
|
|
961
|
-
children: PRIMITIVES.map(([name, desc]) => /* @__PURE__ */ jsxs(
|
|
962
|
-
"div",
|
|
963
|
-
{
|
|
964
|
-
style: {
|
|
965
|
-
padding: "0.9rem 1.1rem",
|
|
966
|
-
borderRadius: "0.6rem",
|
|
967
|
-
border: "1px solid var(--md-outline-variant)",
|
|
968
|
-
background: "var(--md-surface-container-low)"
|
|
969
|
-
},
|
|
970
|
-
children: [
|
|
971
|
-
/* @__PURE__ */ jsx(
|
|
972
|
-
"p",
|
|
973
|
-
{
|
|
974
|
-
style: {
|
|
975
|
-
margin: 0,
|
|
976
|
-
fontFamily: "var(--bs-mono)",
|
|
977
|
-
fontSize: "0.82rem",
|
|
978
|
-
color: "var(--md-on-surface)"
|
|
979
|
-
},
|
|
980
|
-
children: name
|
|
981
|
-
}
|
|
982
|
-
),
|
|
983
|
-
/* @__PURE__ */ jsx(
|
|
984
|
-
"p",
|
|
985
|
-
{
|
|
986
|
-
style: {
|
|
987
|
-
margin: "0.3rem 0 0",
|
|
988
|
-
fontSize: "0.8rem",
|
|
989
|
-
color: "var(--md-on-surface-variant)"
|
|
990
|
-
},
|
|
991
|
-
children: desc
|
|
992
|
-
}
|
|
993
|
-
)
|
|
994
|
-
]
|
|
995
|
-
},
|
|
996
|
-
name
|
|
997
|
-
))
|
|
998
|
-
}
|
|
999
|
-
)
|
|
1000
|
-
] })
|
|
1001
|
-
] });
|
|
1002
|
-
}
|
|
1003
|
-
var eyebrow5 = {
|
|
1004
|
-
fontFamily: "var(--bs-mono)",
|
|
1005
|
-
fontSize: "0.72rem",
|
|
1006
|
-
letterSpacing: "0.18em",
|
|
1007
|
-
textTransform: "uppercase",
|
|
1008
|
-
color: "var(--md-primary)",
|
|
1009
|
-
margin: 0
|
|
1010
|
-
};
|
|
1011
|
-
function OverviewSection({ config }) {
|
|
1012
|
-
return /* @__PURE__ */ jsxs("section", { children: [
|
|
1013
|
-
/* @__PURE__ */ jsx("p", { style: eyebrow5, children: "Brand kit" }),
|
|
1014
|
-
/* @__PURE__ */ jsxs(
|
|
963
|
+
/* @__PURE__ */ jsx("p", { style: eyebrow4, children: "Brand kit" }),
|
|
964
|
+
lockup ? /* @__PURE__ */ jsx("div", { style: { margin: "1.25rem 0 0", maxWidth: "22rem" }, children: lockup }) : /* @__PURE__ */ jsxs(
|
|
1015
965
|
"h1",
|
|
1016
966
|
{
|
|
1017
967
|
style: {
|
|
@@ -1040,7 +990,7 @@ function OverviewSection({ config }) {
|
|
|
1040
990
|
}
|
|
1041
991
|
) : null,
|
|
1042
992
|
config.voice && config.voice.length > 0 ? /* @__PURE__ */ jsxs("div", { style: { marginTop: "2.5rem" }, children: [
|
|
1043
|
-
/* @__PURE__ */ jsx("p", { style: { ...
|
|
993
|
+
/* @__PURE__ */ jsx("p", { style: { ...eyebrow4, fontSize: "0.7rem", letterSpacing: "0.16em" }, children: "Voice" }),
|
|
1044
994
|
/* @__PURE__ */ jsx(
|
|
1045
995
|
"ul",
|
|
1046
996
|
{
|
|
@@ -1222,7 +1172,6 @@ function resolveSection(route) {
|
|
|
1222
1172
|
case BrandStudioSection.Colors:
|
|
1223
1173
|
case BrandStudioSection.Typography:
|
|
1224
1174
|
case BrandStudioSection.Icons:
|
|
1225
|
-
case BrandStudioSection.Motion:
|
|
1226
1175
|
case BrandStudioSection.Download:
|
|
1227
1176
|
return head;
|
|
1228
1177
|
default:
|
|
@@ -1236,7 +1185,9 @@ function BrandStudio({
|
|
|
1236
1185
|
staticLogo,
|
|
1237
1186
|
staticLogoDark,
|
|
1238
1187
|
animatedLogo,
|
|
1239
|
-
icons
|
|
1188
|
+
icons,
|
|
1189
|
+
wordmark,
|
|
1190
|
+
wordmarkDark
|
|
1240
1191
|
}) {
|
|
1241
1192
|
const section = resolveSection(route);
|
|
1242
1193
|
const scheme = config.scheme ?? generateScheme(config.color);
|
|
@@ -1253,11 +1204,13 @@ function BrandStudio({
|
|
|
1253
1204
|
{
|
|
1254
1205
|
href,
|
|
1255
1206
|
style: {
|
|
1207
|
+
display: "inline-block",
|
|
1256
1208
|
color: isActive ? "var(--md-primary)" : "var(--md-on-surface-variant)",
|
|
1257
1209
|
textDecoration: "none",
|
|
1258
1210
|
fontWeight: isActive ? 600 : 400,
|
|
1259
1211
|
borderBottom: isActive ? "2px solid var(--md-primary)" : "2px solid transparent",
|
|
1260
|
-
paddingBottom: "0.
|
|
1212
|
+
paddingBottom: "0.6rem",
|
|
1213
|
+
marginBottom: "-1px"
|
|
1261
1214
|
},
|
|
1262
1215
|
children
|
|
1263
1216
|
}
|
|
@@ -1281,18 +1234,19 @@ function BrandStudio({
|
|
|
1281
1234
|
/* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: cssText } }),
|
|
1282
1235
|
/* @__PURE__ */ jsx(Navigation, { current: section, basePath, renderLink: link }),
|
|
1283
1236
|
/* @__PURE__ */ jsxs("div", { style: { marginTop: "3rem" }, children: [
|
|
1284
|
-
section === BrandStudioSection.Overview && /* @__PURE__ */ jsx(OverviewSection, { config }),
|
|
1237
|
+
section === BrandStudioSection.Overview && /* @__PURE__ */ jsx(OverviewSection, { config, lockup: wordmark }),
|
|
1285
1238
|
section === BrandStudioSection.Logo && /* @__PURE__ */ jsx(LogoSection, { config, staticLogo, animatedLogo }),
|
|
1286
1239
|
section === BrandStudioSection.Colors && /* @__PURE__ */ jsx(ColorsSection, { scheme }),
|
|
1287
1240
|
section === BrandStudioSection.Typography && /* @__PURE__ */ jsx(TypographySection, { config }),
|
|
1288
1241
|
section === BrandStudioSection.Icons && /* @__PURE__ */ jsx(IconsSection, { staticLogo, icons }),
|
|
1289
|
-
section === BrandStudioSection.Motion && /* @__PURE__ */ jsx(MotionPlaygroundSection, { animatedLogo, staticLogo }),
|
|
1290
1242
|
section === BrandStudioSection.Download && /* @__PURE__ */ jsx(
|
|
1291
1243
|
DownloadSection,
|
|
1292
1244
|
{
|
|
1293
1245
|
config,
|
|
1294
1246
|
staticLogo,
|
|
1295
|
-
staticLogoDark
|
|
1247
|
+
staticLogoDark,
|
|
1248
|
+
wordmark,
|
|
1249
|
+
wordmarkDark
|
|
1296
1250
|
}
|
|
1297
1251
|
)
|
|
1298
1252
|
] }),
|
|
@@ -1316,7 +1270,6 @@ function BrandStudio({
|
|
|
1316
1270
|
"Powered by ",
|
|
1317
1271
|
/* @__PURE__ */ jsx("span", { style: { color: "var(--md-primary)" }, children: "@021.is/brand-studio" })
|
|
1318
1272
|
] }),
|
|
1319
|
-
config.operator ? /* @__PURE__ */ jsx("span", { children: config.operator }) : null,
|
|
1320
1273
|
config.domain ? /* @__PURE__ */ jsx("span", { children: config.domain }) : null
|
|
1321
1274
|
]
|
|
1322
1275
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { B as BrandConfig, a as BrandDownload, b as BrandDownloads, c as BrandSt
|
|
|
5
5
|
export { B as BrandScheme, C as ColorScheme, a as ColorSpec, H as Hex, R as ROLE, b as ROLE_GROUPS, c as ROLE_ORDER, d as Role, S as SchemeVariant, g as generateScheme } from './generateScheme-BDDcIzA3.js';
|
|
6
6
|
export { cssVarName, schemeToCssText, schemeVars } from './color/index.js';
|
|
7
7
|
export { C as ContrastTier, c as contrastBadge, a as contrastRatio, r as relativeLuminance } from './contrast-TVW3pzdd.js';
|
|
8
|
-
export { a as BrandStudio, b as BrandStudioProps } from './BrandStudio-
|
|
8
|
+
export { a as BrandStudio, b as BrandStudioProps } from './BrandStudio-ksHBhiX3.js';
|
|
9
9
|
export { STANDARD_ICON_SIZES, STANDARD_LOGO_SIZES, StandardDownloadsInput, buildStandardDownloads, defineBrand, slugify } from './define/index.js';
|
|
10
10
|
import 'react/jsx-runtime';
|
|
11
11
|
import 'react';
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
export { Disc, Ring, Squircle } from './chunk-LJ4HZCAP.js';
|
|
3
3
|
export { AppearGrow, Drift, PulseLoop, RingDraw, Sequence, SequenceStep, Strikethrough, Sweep, Wobble } from './chunk-7325RQRP.js';
|
|
4
4
|
export { LoadingMark, PulseLoadingMark, RingLoadingMark } from './chunk-F4CFQDS7.js';
|
|
5
|
-
export { BrandStudio } from './chunk-
|
|
5
|
+
export { BrandStudio } from './chunk-H3LCFXCK.js';
|
|
6
6
|
export { SpinnerLoadingMark } from './chunk-YDZA26YU.js';
|
|
7
7
|
export { STANDARD_ICON_SIZES, STANDARD_LOGO_SIZES, buildStandardDownloads, defineBrand, slugify } from './chunk-6J2NFZLN.js';
|
|
8
8
|
export { BrandStudioSection, DownloadFormat, DownloadKind, DownloadMode, LoadingVariant, MotionState } from './chunk-MDTU2JR5.js';
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@021.is/brand-studio",
|
|
3
|
-
"version": "0.6.
|
|
4
|
-
"description": "Generic MD3 brand-kit toolkit: seed
|
|
3
|
+
"version": "0.6.7",
|
|
4
|
+
"description": "Generic MD3 brand-kit toolkit: seed \u2192 full light + dark role set, composable SVG shapes + motion + loading marks, mountable <BrandStudio> /brand page, mandatory icon + logo download-URL contract. Ships no brand content \u2014 every app supplies its own logo, icons, and seed colour.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "edvone",
|
|
@@ -30,7 +30,12 @@
|
|
|
30
30
|
"private": false,
|
|
31
31
|
"type": "module",
|
|
32
32
|
"sideEffects": false,
|
|
33
|
-
"files": [
|
|
33
|
+
"files": [
|
|
34
|
+
"dist",
|
|
35
|
+
"LICENSE",
|
|
36
|
+
"README.md",
|
|
37
|
+
"AGENTS.md"
|
|
38
|
+
],
|
|
34
39
|
"exports": {
|
|
35
40
|
".": {
|
|
36
41
|
"types": "./dist/index.d.ts",
|