@chan.run/design 0.1.0 → 0.2.1
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 +195 -0
- package/assets/favicons/chan/android-chrome-144x144.png +0 -0
- package/assets/favicons/chan/android-chrome-192x192.png +0 -0
- package/assets/favicons/chan/android-chrome-256x256.png +0 -0
- package/assets/favicons/chan/android-chrome-36x36.png +0 -0
- package/assets/favicons/chan/android-chrome-384x384.png +0 -0
- package/assets/favicons/chan/android-chrome-48x48.png +0 -0
- package/assets/favicons/chan/android-chrome-512x512.png +0 -0
- package/assets/favicons/chan/android-chrome-72x72.png +0 -0
- package/assets/favicons/chan/android-chrome-96x96.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-1024x1024.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-114x114.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-120x120.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-144x144.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-152x152.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-167x167.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-180x180.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-57x57.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-60x60.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-72x72.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-76x76.png +0 -0
- package/assets/favicons/chan/apple-touch-icon-precomposed.png +0 -0
- package/assets/favicons/chan/apple-touch-icon.png +0 -0
- package/assets/favicons/chan/browserconfig.xml +12 -0
- package/assets/favicons/chan/favicon-16x16.png +0 -0
- package/assets/favicons/chan/favicon-32x32.png +0 -0
- package/assets/favicons/chan/favicon-48x48.png +0 -0
- package/assets/favicons/chan/favicon.ico +0 -0
- package/assets/favicons/chan/head-snippet.html +25 -0
- package/assets/favicons/chan/manifest.webmanifest +68 -0
- package/assets/favicons/chan/mstile-144x144.png +0 -0
- package/assets/favicons/chan/mstile-150x150.png +0 -0
- package/assets/favicons/chan/mstile-310x150.png +0 -0
- package/assets/favicons/chan/mstile-310x310.png +0 -0
- package/assets/favicons/chan/mstile-70x70.png +0 -0
- package/assets/favicons/ensure/android-chrome-144x144.png +0 -0
- package/assets/favicons/ensure/android-chrome-192x192.png +0 -0
- package/assets/favicons/ensure/android-chrome-256x256.png +0 -0
- package/assets/favicons/ensure/android-chrome-36x36.png +0 -0
- package/assets/favicons/ensure/android-chrome-384x384.png +0 -0
- package/assets/favicons/ensure/android-chrome-48x48.png +0 -0
- package/assets/favicons/ensure/android-chrome-512x512.png +0 -0
- package/assets/favicons/ensure/android-chrome-72x72.png +0 -0
- package/assets/favicons/ensure/android-chrome-96x96.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-1024x1024.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-114x114.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-120x120.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-144x144.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-152x152.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-167x167.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-180x180.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-57x57.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-60x60.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-72x72.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-76x76.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon-precomposed.png +0 -0
- package/assets/favicons/ensure/apple-touch-icon.png +0 -0
- package/assets/favicons/ensure/browserconfig.xml +12 -0
- package/assets/favicons/ensure/favicon-16x16.png +0 -0
- package/assets/favicons/ensure/favicon-32x32.png +0 -0
- package/assets/favicons/ensure/favicon-48x48.png +0 -0
- package/assets/favicons/ensure/favicon.ico +0 -0
- package/assets/favicons/ensure/head-snippet.html +25 -0
- package/assets/favicons/ensure/manifest.webmanifest +68 -0
- package/assets/favicons/ensure/mstile-144x144.png +0 -0
- package/assets/favicons/ensure/mstile-150x150.png +0 -0
- package/assets/favicons/ensure/mstile-310x150.png +0 -0
- package/assets/favicons/ensure/mstile-310x310.png +0 -0
- package/assets/favicons/ensure/mstile-70x70.png +0 -0
- package/assets/favicons/entropy/android-chrome-144x144.png +0 -0
- package/assets/favicons/entropy/android-chrome-192x192.png +0 -0
- package/assets/favicons/entropy/android-chrome-256x256.png +0 -0
- package/assets/favicons/entropy/android-chrome-36x36.png +0 -0
- package/assets/favicons/entropy/android-chrome-384x384.png +0 -0
- package/assets/favicons/entropy/android-chrome-48x48.png +0 -0
- package/assets/favicons/entropy/android-chrome-512x512.png +0 -0
- package/assets/favicons/entropy/android-chrome-72x72.png +0 -0
- package/assets/favicons/entropy/android-chrome-96x96.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-1024x1024.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-114x114.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-120x120.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-144x144.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-152x152.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-167x167.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-180x180.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-57x57.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-60x60.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-72x72.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-76x76.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon-precomposed.png +0 -0
- package/assets/favicons/entropy/apple-touch-icon.png +0 -0
- package/assets/favicons/entropy/browserconfig.xml +12 -0
- package/assets/favicons/entropy/favicon-16x16.png +0 -0
- package/assets/favicons/entropy/favicon-32x32.png +0 -0
- package/assets/favicons/entropy/favicon-48x48.png +0 -0
- package/assets/favicons/entropy/favicon.ico +0 -0
- package/assets/favicons/entropy/head-snippet.html +25 -0
- package/assets/favicons/entropy/manifest.webmanifest +68 -0
- package/assets/favicons/entropy/mstile-144x144.png +0 -0
- package/assets/favicons/entropy/mstile-150x150.png +0 -0
- package/assets/favicons/entropy/mstile-310x150.png +0 -0
- package/assets/favicons/entropy/mstile-310x310.png +0 -0
- package/assets/favicons/entropy/mstile-70x70.png +0 -0
- package/assets/favicons/restunnel/android-chrome-144x144.png +0 -0
- package/assets/favicons/restunnel/android-chrome-192x192.png +0 -0
- package/assets/favicons/restunnel/android-chrome-256x256.png +0 -0
- package/assets/favicons/restunnel/android-chrome-36x36.png +0 -0
- package/assets/favicons/restunnel/android-chrome-384x384.png +0 -0
- package/assets/favicons/restunnel/android-chrome-48x48.png +0 -0
- package/assets/favicons/restunnel/android-chrome-512x512.png +0 -0
- package/assets/favicons/restunnel/android-chrome-72x72.png +0 -0
- package/assets/favicons/restunnel/android-chrome-96x96.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-1024x1024.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-114x114.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-120x120.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-144x144.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-152x152.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-167x167.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-180x180.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-57x57.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-60x60.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-72x72.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-76x76.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon-precomposed.png +0 -0
- package/assets/favicons/restunnel/apple-touch-icon.png +0 -0
- package/assets/favicons/restunnel/browserconfig.xml +12 -0
- package/assets/favicons/restunnel/favicon-16x16.png +0 -0
- package/assets/favicons/restunnel/favicon-32x32.png +0 -0
- package/assets/favicons/restunnel/favicon-48x48.png +0 -0
- package/assets/favicons/restunnel/favicon.ico +0 -0
- package/assets/favicons/restunnel/head-snippet.html +25 -0
- package/assets/favicons/restunnel/manifest.webmanifest +68 -0
- package/assets/favicons/restunnel/mstile-144x144.png +0 -0
- package/assets/favicons/restunnel/mstile-150x150.png +0 -0
- package/assets/favicons/restunnel/mstile-310x150.png +0 -0
- package/assets/favicons/restunnel/mstile-310x310.png +0 -0
- package/assets/favicons/restunnel/mstile-70x70.png +0 -0
- package/assets/favicons/seam/android-chrome-144x144.png +0 -0
- package/assets/favicons/seam/android-chrome-192x192.png +0 -0
- package/assets/favicons/seam/android-chrome-256x256.png +0 -0
- package/assets/favicons/seam/android-chrome-36x36.png +0 -0
- package/assets/favicons/seam/android-chrome-384x384.png +0 -0
- package/assets/favicons/seam/android-chrome-48x48.png +0 -0
- package/assets/favicons/seam/android-chrome-512x512.png +0 -0
- package/assets/favicons/seam/android-chrome-72x72.png +0 -0
- package/assets/favicons/seam/android-chrome-96x96.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-1024x1024.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-114x114.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-120x120.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-144x144.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-152x152.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-167x167.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-180x180.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-57x57.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-60x60.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-72x72.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-76x76.png +0 -0
- package/assets/favicons/seam/apple-touch-icon-precomposed.png +0 -0
- package/assets/favicons/seam/apple-touch-icon.png +0 -0
- package/assets/favicons/seam/browserconfig.xml +12 -0
- package/assets/favicons/seam/favicon-16x16.png +0 -0
- package/assets/favicons/seam/favicon-32x32.png +0 -0
- package/assets/favicons/seam/favicon-48x48.png +0 -0
- package/assets/favicons/seam/favicon.ico +0 -0
- package/assets/favicons/seam/head-snippet.html +25 -0
- package/assets/favicons/seam/manifest.webmanifest +68 -0
- package/assets/favicons/seam/mstile-144x144.png +0 -0
- package/assets/favicons/seam/mstile-150x150.png +0 -0
- package/assets/favicons/seam/mstile-310x150.png +0 -0
- package/assets/favicons/seam/mstile-310x310.png +0 -0
- package/assets/favicons/seam/mstile-70x70.png +0 -0
- package/assets/favicons/slides/android-chrome-144x144.png +0 -0
- package/assets/favicons/slides/android-chrome-192x192.png +0 -0
- package/assets/favicons/slides/android-chrome-256x256.png +0 -0
- package/assets/favicons/slides/android-chrome-36x36.png +0 -0
- package/assets/favicons/slides/android-chrome-384x384.png +0 -0
- package/assets/favicons/slides/android-chrome-48x48.png +0 -0
- package/assets/favicons/slides/android-chrome-512x512.png +0 -0
- package/assets/favicons/slides/android-chrome-72x72.png +0 -0
- package/assets/favicons/slides/android-chrome-96x96.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-1024x1024.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-114x114.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-120x120.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-144x144.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-152x152.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-167x167.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-180x180.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-57x57.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-60x60.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-72x72.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-76x76.png +0 -0
- package/assets/favicons/slides/apple-touch-icon-precomposed.png +0 -0
- package/assets/favicons/slides/apple-touch-icon.png +0 -0
- package/assets/favicons/slides/browserconfig.xml +12 -0
- package/assets/favicons/slides/favicon-16x16.png +0 -0
- package/assets/favicons/slides/favicon-32x32.png +0 -0
- package/assets/favicons/slides/favicon-48x48.png +0 -0
- package/assets/favicons/slides/favicon.ico +0 -0
- package/assets/favicons/slides/head-snippet.html +25 -0
- package/assets/favicons/slides/manifest.webmanifest +68 -0
- package/assets/favicons/slides/mstile-144x144.png +0 -0
- package/assets/favicons/slides/mstile-150x150.png +0 -0
- package/assets/favicons/slides/mstile-310x150.png +0 -0
- package/assets/favicons/slides/mstile-310x310.png +0 -0
- package/assets/favicons/slides/mstile-70x70.png +0 -0
- package/assets/svg/chan-favicon.svg +5 -0
- package/assets/svg/chan-wordmark-dark.svg +5 -0
- package/assets/svg/chan-wordmark-light.svg +5 -0
- package/assets/svg/ensure-favicon.svg +5 -0
- package/assets/svg/ensure-icon-dark.svg +5 -0
- package/assets/svg/ensure-icon-light.svg +5 -0
- package/assets/svg/ensure-wordmark-dark.svg +4 -0
- package/assets/svg/ensure-wordmark-light.svg +4 -0
- package/assets/svg/entropy-favicon.svg +5 -0
- package/assets/svg/entropy-icon-dark.svg +5 -0
- package/assets/svg/entropy-icon-light.svg +5 -0
- package/assets/svg/entropy-wordmark-dark.svg +4 -0
- package/assets/svg/entropy-wordmark-light.svg +4 -0
- package/assets/svg/restunnel-favicon.svg +5 -0
- package/assets/svg/restunnel-icon-dark.svg +5 -0
- package/assets/svg/restunnel-icon-light.svg +5 -0
- package/assets/svg/restunnel-wordmark-dark.svg +4 -0
- package/assets/svg/restunnel-wordmark-light.svg +4 -0
- package/assets/svg/seam-favicon.svg +5 -0
- package/assets/svg/seam-icon-dark.svg +5 -0
- package/assets/svg/seam-icon-light.svg +5 -0
- package/assets/svg/seam-wordmark-dark.svg +4 -0
- package/assets/svg/seam-wordmark-light.svg +4 -0
- package/assets/svg/slides-favicon.svg +5 -0
- package/assets/svg/slides-icon-dark.svg +5 -0
- package/assets/svg/slides-icon-light.svg +5 -0
- package/assets/svg/slides-wordmark-dark.svg +4 -0
- package/assets/svg/slides-wordmark-light.svg +4 -0
- package/dist/index.d.mts +88 -12
- package/dist/index.mjs +292 -27
- package/package.json +21 -11
package/dist/index.mjs
CHANGED
|
@@ -1,7 +1,31 @@
|
|
|
1
1
|
import { Badge, Box, Card, Center, Code, Flex, Grid, HStack, Heading, IconButton, Text, createSystem, defaultConfig, defineConfig, defineSlotRecipe, useSlotRecipe } from "@chakra-ui/react";
|
|
2
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
2
3
|
import { useTheme } from "next-themes";
|
|
3
4
|
import { useCallback, useEffect, useRef, useState } from "react";
|
|
4
|
-
|
|
5
|
+
//#region src/brand/Wordmark.tsx
|
|
6
|
+
function Wordmark({ fontSize = "20px", color = "chan.text", pulseDot, ...rest }) {
|
|
7
|
+
const dotProps = pulseDot ? {
|
|
8
|
+
animation: "chan-pulse",
|
|
9
|
+
display: "inline-block"
|
|
10
|
+
} : {};
|
|
11
|
+
return /* @__PURE__ */ jsxs(Text, {
|
|
12
|
+
textStyle: "chan.wordmark",
|
|
13
|
+
fontSize,
|
|
14
|
+
color,
|
|
15
|
+
...rest,
|
|
16
|
+
children: [
|
|
17
|
+
"CHAN",
|
|
18
|
+
/* @__PURE__ */ jsx(Box, {
|
|
19
|
+
as: "span",
|
|
20
|
+
color: "chan.orange",
|
|
21
|
+
...dotProps,
|
|
22
|
+
children: "."
|
|
23
|
+
}),
|
|
24
|
+
"RUN"
|
|
25
|
+
]
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
5
29
|
//#region src/components/ColorModeButton.tsx
|
|
6
30
|
function ColorModeButton(props) {
|
|
7
31
|
const { resolvedTheme, setTheme } = useTheme();
|
|
@@ -12,7 +36,7 @@ function ColorModeButton(props) {
|
|
|
12
36
|
const isDark = resolvedTheme === "dark";
|
|
13
37
|
return /* @__PURE__ */ jsx(Flex, {
|
|
14
38
|
as: "button",
|
|
15
|
-
"aria-label": isDark
|
|
39
|
+
"aria-label": getAriaLabel(mounted, isDark),
|
|
16
40
|
onClick: () => setTheme(isDark ? "light" : "dark"),
|
|
17
41
|
w: "34px",
|
|
18
42
|
h: "34px",
|
|
@@ -36,6 +60,11 @@ function ColorModeButton(props) {
|
|
|
36
60
|
children: renderIcon(mounted, isDark)
|
|
37
61
|
});
|
|
38
62
|
}
|
|
63
|
+
function getAriaLabel(mounted, isDark) {
|
|
64
|
+
if (!mounted) return "Toggle color mode";
|
|
65
|
+
if (isDark) return "Switch to light mode";
|
|
66
|
+
return "Switch to dark mode";
|
|
67
|
+
}
|
|
39
68
|
function renderIcon(mounted, isDark) {
|
|
40
69
|
if (!mounted) return null;
|
|
41
70
|
if (isDark) return /* @__PURE__ */ jsx(MoonIcon, {});
|
|
@@ -821,30 +850,6 @@ function SlideViewer({ slides, currentSlide, onSlideChange, isPresenting = false
|
|
|
821
850
|
});
|
|
822
851
|
}
|
|
823
852
|
//#endregion
|
|
824
|
-
//#region src/components/Wordmark.tsx
|
|
825
|
-
function Wordmark({ fontSize = "20px", color = "chan.text", pulseDot, ...rest }) {
|
|
826
|
-
const dotProps = pulseDot ? {
|
|
827
|
-
animation: "chan-pulse",
|
|
828
|
-
display: "inline-block"
|
|
829
|
-
} : {};
|
|
830
|
-
return /* @__PURE__ */ jsxs(Text, {
|
|
831
|
-
textStyle: "chan.wordmark",
|
|
832
|
-
fontSize,
|
|
833
|
-
color,
|
|
834
|
-
...rest,
|
|
835
|
-
children: [
|
|
836
|
-
"CHAN",
|
|
837
|
-
/* @__PURE__ */ jsx(Box, {
|
|
838
|
-
as: "span",
|
|
839
|
-
color: "chan.orange",
|
|
840
|
-
...dotProps,
|
|
841
|
-
children: "."
|
|
842
|
-
}),
|
|
843
|
-
"RUN"
|
|
844
|
-
]
|
|
845
|
-
});
|
|
846
|
-
}
|
|
847
|
-
//#endregion
|
|
848
853
|
//#region src/components/Topbar.tsx
|
|
849
854
|
function HamburgerButton({ onClick }) {
|
|
850
855
|
return /* @__PURE__ */ jsxs(Flex, {
|
|
@@ -923,6 +928,263 @@ function Topbar({ onMenuOpen }) {
|
|
|
923
928
|
});
|
|
924
929
|
}
|
|
925
930
|
//#endregion
|
|
931
|
+
//#region src/favicons/index.tsx
|
|
932
|
+
function urls(name) {
|
|
933
|
+
const base = (file) => new URL(`../../assets/favicons/${name}/${file}`, import.meta.url).href;
|
|
934
|
+
return {
|
|
935
|
+
ico: base("favicon.ico"),
|
|
936
|
+
png16: base("favicon-16x16.png"),
|
|
937
|
+
png32: base("favicon-32x32.png"),
|
|
938
|
+
apple: base("apple-touch-icon.png"),
|
|
939
|
+
android192: base("android-chrome-192x192.png"),
|
|
940
|
+
android512: base("android-chrome-512x512.png"),
|
|
941
|
+
manifest: base("manifest.webmanifest")
|
|
942
|
+
};
|
|
943
|
+
}
|
|
944
|
+
function FaviconLinks({ assets, manifest }) {
|
|
945
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
946
|
+
/* @__PURE__ */ jsx("link", {
|
|
947
|
+
rel: "icon",
|
|
948
|
+
type: "image/x-icon",
|
|
949
|
+
href: assets.ico
|
|
950
|
+
}),
|
|
951
|
+
/* @__PURE__ */ jsx("link", {
|
|
952
|
+
rel: "icon",
|
|
953
|
+
type: "image/png",
|
|
954
|
+
sizes: "16x16",
|
|
955
|
+
href: assets.png16
|
|
956
|
+
}),
|
|
957
|
+
/* @__PURE__ */ jsx("link", {
|
|
958
|
+
rel: "icon",
|
|
959
|
+
type: "image/png",
|
|
960
|
+
sizes: "32x32",
|
|
961
|
+
href: assets.png32
|
|
962
|
+
}),
|
|
963
|
+
/* @__PURE__ */ jsx("link", {
|
|
964
|
+
rel: "apple-touch-icon",
|
|
965
|
+
sizes: "180x180",
|
|
966
|
+
href: assets.apple
|
|
967
|
+
}),
|
|
968
|
+
/* @__PURE__ */ jsx("link", {
|
|
969
|
+
rel: "icon",
|
|
970
|
+
type: "image/png",
|
|
971
|
+
sizes: "192x192",
|
|
972
|
+
href: assets.android192
|
|
973
|
+
}),
|
|
974
|
+
/* @__PURE__ */ jsx("link", {
|
|
975
|
+
rel: "icon",
|
|
976
|
+
type: "image/png",
|
|
977
|
+
sizes: "512x512",
|
|
978
|
+
href: assets.android512
|
|
979
|
+
}),
|
|
980
|
+
manifest && /* @__PURE__ */ jsx("link", {
|
|
981
|
+
rel: "manifest",
|
|
982
|
+
href: assets.manifest
|
|
983
|
+
}),
|
|
984
|
+
/* @__PURE__ */ jsx("meta", {
|
|
985
|
+
name: "theme-color",
|
|
986
|
+
content: "#ff4d00"
|
|
987
|
+
})
|
|
988
|
+
] });
|
|
989
|
+
}
|
|
990
|
+
const chanFaviconAssets = urls("chan");
|
|
991
|
+
const ensureFaviconAssets = urls("ensure");
|
|
992
|
+
const entropyFaviconAssets = urls("entropy");
|
|
993
|
+
const restunnelFaviconAssets = urls("restunnel");
|
|
994
|
+
const seamFaviconAssets = urls("seam");
|
|
995
|
+
const slidesFaviconAssets = urls("slides");
|
|
996
|
+
function ChanFaviconHead(props = {}) {
|
|
997
|
+
return /* @__PURE__ */ jsx(FaviconLinks, {
|
|
998
|
+
assets: chanFaviconAssets,
|
|
999
|
+
manifest: props.manifest
|
|
1000
|
+
});
|
|
1001
|
+
}
|
|
1002
|
+
function EnsureFaviconHead(props = {}) {
|
|
1003
|
+
return /* @__PURE__ */ jsx(FaviconLinks, {
|
|
1004
|
+
assets: ensureFaviconAssets,
|
|
1005
|
+
manifest: props.manifest
|
|
1006
|
+
});
|
|
1007
|
+
}
|
|
1008
|
+
function EntropyFaviconHead(props = {}) {
|
|
1009
|
+
return /* @__PURE__ */ jsx(FaviconLinks, {
|
|
1010
|
+
assets: entropyFaviconAssets,
|
|
1011
|
+
manifest: props.manifest
|
|
1012
|
+
});
|
|
1013
|
+
}
|
|
1014
|
+
function RestunnelFaviconHead(props = {}) {
|
|
1015
|
+
return /* @__PURE__ */ jsx(FaviconLinks, {
|
|
1016
|
+
assets: restunnelFaviconAssets,
|
|
1017
|
+
manifest: props.manifest
|
|
1018
|
+
});
|
|
1019
|
+
}
|
|
1020
|
+
function SeamFaviconHead(props = {}) {
|
|
1021
|
+
return /* @__PURE__ */ jsx(FaviconLinks, {
|
|
1022
|
+
assets: seamFaviconAssets,
|
|
1023
|
+
manifest: props.manifest
|
|
1024
|
+
});
|
|
1025
|
+
}
|
|
1026
|
+
function SlidesFaviconHead(props = {}) {
|
|
1027
|
+
return /* @__PURE__ */ jsx(FaviconLinks, {
|
|
1028
|
+
assets: slidesFaviconAssets,
|
|
1029
|
+
manifest: props.manifest
|
|
1030
|
+
});
|
|
1031
|
+
}
|
|
1032
|
+
//#endregion
|
|
1033
|
+
//#region src/products/_internal.tsx
|
|
1034
|
+
const monogramLineStyles = {
|
|
1035
|
+
fontFamily: "display",
|
|
1036
|
+
fontWeight: 900,
|
|
1037
|
+
fontSize: "17px",
|
|
1038
|
+
textTransform: "uppercase",
|
|
1039
|
+
letterSpacing: "-0.02em",
|
|
1040
|
+
lineHeight: "0.82"
|
|
1041
|
+
};
|
|
1042
|
+
function ProductIcon({ top, bottom }) {
|
|
1043
|
+
return /* @__PURE__ */ jsx(Flex, {
|
|
1044
|
+
w: "44px",
|
|
1045
|
+
h: "44px",
|
|
1046
|
+
borderRadius: "22%",
|
|
1047
|
+
bg: "chan.bg.soft",
|
|
1048
|
+
border: "1px solid",
|
|
1049
|
+
borderColor: "chan.border",
|
|
1050
|
+
align: "center",
|
|
1051
|
+
justify: "center",
|
|
1052
|
+
flexShrink: 0,
|
|
1053
|
+
children: /* @__PURE__ */ jsxs(Flex, {
|
|
1054
|
+
direction: "column",
|
|
1055
|
+
children: [/* @__PURE__ */ jsx(Text, {
|
|
1056
|
+
as: "span",
|
|
1057
|
+
color: "chan.text",
|
|
1058
|
+
...monogramLineStyles,
|
|
1059
|
+
children: top
|
|
1060
|
+
}), /* @__PURE__ */ jsx(Text, {
|
|
1061
|
+
as: "span",
|
|
1062
|
+
color: "chan.orange",
|
|
1063
|
+
...monogramLineStyles,
|
|
1064
|
+
children: bottom
|
|
1065
|
+
})]
|
|
1066
|
+
})
|
|
1067
|
+
});
|
|
1068
|
+
}
|
|
1069
|
+
function ProductWordmark({ fontSize = "24px", color = "chan.text", prefix, terminal, ...rest }) {
|
|
1070
|
+
return /* @__PURE__ */ jsxs(Text, {
|
|
1071
|
+
fontFamily: "display",
|
|
1072
|
+
fontWeight: 900,
|
|
1073
|
+
fontSize,
|
|
1074
|
+
letterSpacing: "-0.02em",
|
|
1075
|
+
textTransform: "uppercase",
|
|
1076
|
+
lineHeight: 1,
|
|
1077
|
+
color,
|
|
1078
|
+
...rest,
|
|
1079
|
+
children: [prefix, /* @__PURE__ */ jsx(Box, {
|
|
1080
|
+
as: "span",
|
|
1081
|
+
color: "chan.orange",
|
|
1082
|
+
children: terminal
|
|
1083
|
+
})]
|
|
1084
|
+
});
|
|
1085
|
+
}
|
|
1086
|
+
//#endregion
|
|
1087
|
+
//#region src/products/ensure/EnsureIcon.tsx
|
|
1088
|
+
function EnsureIcon() {
|
|
1089
|
+
return /* @__PURE__ */ jsx(ProductIcon, {
|
|
1090
|
+
top: "EN",
|
|
1091
|
+
bottom: "SU"
|
|
1092
|
+
});
|
|
1093
|
+
}
|
|
1094
|
+
//#endregion
|
|
1095
|
+
//#region src/products/ensure/EnsureWordmark.tsx
|
|
1096
|
+
function EnsureWordmark(props) {
|
|
1097
|
+
return /* @__PURE__ */ jsx(ProductWordmark, {
|
|
1098
|
+
prefix: "ENSUR",
|
|
1099
|
+
terminal: "E",
|
|
1100
|
+
...props
|
|
1101
|
+
});
|
|
1102
|
+
}
|
|
1103
|
+
//#endregion
|
|
1104
|
+
//#region src/products/entropy/EntropyIcon.tsx
|
|
1105
|
+
function EntropyIcon() {
|
|
1106
|
+
return /* @__PURE__ */ jsx(ProductIcon, {
|
|
1107
|
+
top: "EN",
|
|
1108
|
+
bottom: "TR"
|
|
1109
|
+
});
|
|
1110
|
+
}
|
|
1111
|
+
//#endregion
|
|
1112
|
+
//#region src/products/entropy/EntropyWordmark.tsx
|
|
1113
|
+
function EntropyWordmark(props) {
|
|
1114
|
+
return /* @__PURE__ */ jsx(ProductWordmark, {
|
|
1115
|
+
prefix: "ENTROP",
|
|
1116
|
+
terminal: "Y",
|
|
1117
|
+
...props
|
|
1118
|
+
});
|
|
1119
|
+
}
|
|
1120
|
+
//#endregion
|
|
1121
|
+
//#region src/products/restunnel/RestunnelIcon.tsx
|
|
1122
|
+
function RestunnelIcon() {
|
|
1123
|
+
return /* @__PURE__ */ jsx(ProductIcon, {
|
|
1124
|
+
top: "RE",
|
|
1125
|
+
bottom: "TU"
|
|
1126
|
+
});
|
|
1127
|
+
}
|
|
1128
|
+
//#endregion
|
|
1129
|
+
//#region src/products/restunnel/RestunnelWordmark.tsx
|
|
1130
|
+
function RestunnelWordmark(props) {
|
|
1131
|
+
return /* @__PURE__ */ jsx(ProductWordmark, {
|
|
1132
|
+
prefix: "RESTUNNE",
|
|
1133
|
+
terminal: "L",
|
|
1134
|
+
...props
|
|
1135
|
+
});
|
|
1136
|
+
}
|
|
1137
|
+
//#endregion
|
|
1138
|
+
//#region src/products/seam/SeamIcon.tsx
|
|
1139
|
+
function SeamIcon() {
|
|
1140
|
+
return /* @__PURE__ */ jsx(ProductIcon, {
|
|
1141
|
+
top: "SE",
|
|
1142
|
+
bottom: "AM"
|
|
1143
|
+
});
|
|
1144
|
+
}
|
|
1145
|
+
//#endregion
|
|
1146
|
+
//#region src/products/seam/SeamWordmark.tsx
|
|
1147
|
+
function SeamWordmark(props) {
|
|
1148
|
+
return /* @__PURE__ */ jsx(ProductWordmark, {
|
|
1149
|
+
prefix: "SEA",
|
|
1150
|
+
terminal: "M",
|
|
1151
|
+
...props
|
|
1152
|
+
});
|
|
1153
|
+
}
|
|
1154
|
+
//#endregion
|
|
1155
|
+
//#region src/products/slides/SlidesIcon.tsx
|
|
1156
|
+
function SlidesIcon() {
|
|
1157
|
+
return /* @__PURE__ */ jsx(ProductIcon, {
|
|
1158
|
+
top: "SL",
|
|
1159
|
+
bottom: "ID"
|
|
1160
|
+
});
|
|
1161
|
+
}
|
|
1162
|
+
//#endregion
|
|
1163
|
+
//#region src/products/slides/SlidesWordmark.tsx
|
|
1164
|
+
function SlidesWordmark(props) {
|
|
1165
|
+
return /* @__PURE__ */ jsx(ProductWordmark, {
|
|
1166
|
+
prefix: "SLIDE",
|
|
1167
|
+
terminal: "S",
|
|
1168
|
+
...props
|
|
1169
|
+
});
|
|
1170
|
+
}
|
|
1171
|
+
//#endregion
|
|
1172
|
+
//#region src/products/index.ts
|
|
1173
|
+
const PRODUCT_ICONS = {
|
|
1174
|
+
ensure: EnsureIcon,
|
|
1175
|
+
entropy: EntropyIcon,
|
|
1176
|
+
restunnel: RestunnelIcon,
|
|
1177
|
+
seam: SeamIcon,
|
|
1178
|
+
slides: SlidesIcon
|
|
1179
|
+
};
|
|
1180
|
+
const PRODUCT_WORDMARKS = {
|
|
1181
|
+
ensure: EnsureWordmark,
|
|
1182
|
+
entropy: EntropyWordmark,
|
|
1183
|
+
restunnel: RestunnelWordmark,
|
|
1184
|
+
seam: SeamWordmark,
|
|
1185
|
+
slides: SlidesWordmark
|
|
1186
|
+
};
|
|
1187
|
+
//#endregion
|
|
926
1188
|
//#region src/TokenShowcase.tsx
|
|
927
1189
|
function Swatch({ name, token, hex }) {
|
|
928
1190
|
return /* @__PURE__ */ jsxs(Box, {
|
|
@@ -1766,6 +2028,9 @@ const system = createSystem(defaultConfig, defineConfig({
|
|
|
1766
2028
|
"chan.green": { value: "#3a8c5c" },
|
|
1767
2029
|
"chan.green.bg": { value: "rgba(58, 140, 92, 0.08)" },
|
|
1768
2030
|
"chan.green.border": { value: "rgba(58, 140, 92, 0.20)" },
|
|
2031
|
+
"chan.teal": { value: "#2f9c9c" },
|
|
2032
|
+
"chan.teal.bg": { value: "rgba(47, 156, 156, 0.08)" },
|
|
2033
|
+
"chan.teal.border": { value: "rgba(47, 156, 156, 0.20)" },
|
|
1769
2034
|
"chan.yellow": { value: "#a88000" },
|
|
1770
2035
|
"chan.yellow.bg": { value: "rgba(200, 160, 0, 0.07)" },
|
|
1771
2036
|
"chan.yellow.border": { value: "rgba(200, 160, 0, 0.15)" },
|
|
@@ -2032,4 +2297,4 @@ const system = createSystem(defaultConfig, defineConfig({
|
|
|
2032
2297
|
}
|
|
2033
2298
|
}));
|
|
2034
2299
|
//#endregion
|
|
2035
|
-
export { ColorModeButton, DeckCard, SlideControls, SlideLayoutComponent as SlideLayout, SlideViewer, Splash, TokenShowcase, Topbar, Wordmark, getSlideComponents, system };
|
|
2300
|
+
export { ChanFaviconHead, ColorModeButton, DeckCard, EnsureFaviconHead, EnsureIcon, EnsureWordmark, EntropyFaviconHead, EntropyIcon, EntropyWordmark, PRODUCT_ICONS, PRODUCT_WORDMARKS, RestunnelFaviconHead, RestunnelIcon, RestunnelWordmark, SeamFaviconHead, SeamIcon, SeamWordmark, SlideControls, SlideLayoutComponent as SlideLayout, SlideViewer, SlidesFaviconHead, SlidesIcon, SlidesWordmark, Splash, TokenShowcase, Topbar, Wordmark, chanFaviconAssets, ensureFaviconAssets, entropyFaviconAssets, getSlideComponents, restunnelFaviconAssets, seamFaviconAssets, slidesFaviconAssets, system };
|
package/package.json
CHANGED
|
@@ -1,29 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chan.run/design",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Shared Chakra UI v3 theme and component library for chan.run",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
|
+
"main": "./dist/index.mjs",
|
|
8
|
+
"types": "./dist/index.d.mts",
|
|
7
9
|
"exports": {
|
|
8
10
|
".": {
|
|
9
|
-
"
|
|
10
|
-
"
|
|
11
|
-
}
|
|
11
|
+
"types": "./dist/index.d.mts",
|
|
12
|
+
"import": "./dist/index.mjs"
|
|
13
|
+
},
|
|
14
|
+
"./favicons/*": "./assets/favicons/*",
|
|
15
|
+
"./svg/*": "./assets/svg/*"
|
|
12
16
|
},
|
|
13
|
-
"main": "./dist/index.mjs",
|
|
14
|
-
"types": "./dist/index.d.mts",
|
|
15
17
|
"files": [
|
|
16
|
-
"dist"
|
|
18
|
+
"dist",
|
|
19
|
+
"assets"
|
|
17
20
|
],
|
|
18
21
|
"peerDependencies": {
|
|
19
|
-
"@chakra-ui/react": "3.
|
|
22
|
+
"@chakra-ui/react": "^3.35.0",
|
|
20
23
|
"next-themes": "*",
|
|
21
|
-
"react": "19.
|
|
24
|
+
"react": "^19.0.0"
|
|
22
25
|
},
|
|
23
26
|
"devDependencies": {
|
|
24
|
-
"@chakra-ui/cli": "3.
|
|
27
|
+
"@chakra-ui/cli": "3.35.0",
|
|
28
|
+
"@types/opentype.js": "^1.3.9",
|
|
25
29
|
"@types/react": "19.2.14",
|
|
30
|
+
"favicons": "^7.2.0",
|
|
31
|
+
"opentype.js": "^1.3.4",
|
|
26
32
|
"tsdown": "^0.21.7",
|
|
33
|
+
"tsx": "^4.21.0",
|
|
27
34
|
"typescript": "5.9.3"
|
|
28
35
|
},
|
|
29
36
|
"repository": {
|
|
@@ -33,6 +40,9 @@
|
|
|
33
40
|
},
|
|
34
41
|
"scripts": {
|
|
35
42
|
"build": "tsdown",
|
|
36
|
-
"typecheck": "tsc --noEmit"
|
|
43
|
+
"typecheck": "tsc --noEmit && tsc -p scripts",
|
|
44
|
+
"export-svg": "tsx scripts/export-svg.ts",
|
|
45
|
+
"gen-favicons": "tsx scripts/gen-favicons.ts",
|
|
46
|
+
"gen-brand": "pnpm export-svg && pnpm gen-favicons"
|
|
37
47
|
}
|
|
38
48
|
}
|