diff --git a/src/app/layout.tsx b/src/app/layout.tsx
index 129dd900..68a1d36d 100644
--- a/src/app/layout.tsx
+++ b/src/app/layout.tsx
@@ -13,7 +13,7 @@ import '../site/globals.css';
const ibmPlexMono = IBM_Plex_Mono({
subsets: ['latin'],
- weight: ['400', '700'],
+ weight: ['400', '500', '700'],
variable: '--font-ibm-plex-mono',
});
diff --git a/src/components/AdminChildPage.tsx b/src/components/AdminChildPage.tsx
index 57ee3a85..2b01af33 100644
--- a/src/components/AdminChildPage.tsx
+++ b/src/components/AdminChildPage.tsx
@@ -3,6 +3,7 @@ import Link from 'next/link';
import { FiArrowLeft } from 'react-icons/fi';
import SiteGrid from './SiteGrid';
import { cc } from '@/utility/css';
+import Badge from './Badge';
function AdminChildPage({
backPath,
@@ -41,12 +42,9 @@ function AdminChildPage({
{breadcrumb &&
<>
/
-
+
{breadcrumb}
-
+
>}
{accessory &&
diff --git a/src/components/Badge.tsx b/src/components/Badge.tsx
new file mode 100644
index 00000000..ead474f3
--- /dev/null
+++ b/src/components/Badge.tsx
@@ -0,0 +1,34 @@
+import { cc } from '@/utility/css';
+
+export default function Badge({
+ children,
+ type = 'primary',
+ uppercase,
+}: {
+ children: React.ReactNode
+ type?: 'primary' | 'secondary' | 'text-only'
+ uppercase?: boolean
+}) {
+ const baseStyles = () => {
+ switch (type) {
+ case 'primary': return cc(
+ 'px-2 py-0.5 rounded-md bg-gray-100 dark:bg-gray-900',
+ 'border border-gray-200 dark:border-gray-800'
+ );
+ case 'secondary': return cc(
+ 'px-1 py-1 leading-none rounded-md',
+ 'bg-gray-100 dark:bg-gray-800/75',
+ 'text-medium',
+ 'font-medium text-[0.7rem]',
+ );
+ }
+ };
+ return (
+
+ {children}
+
+ );
+}
diff --git a/src/photo/PhotoEditPageClient.tsx b/src/photo/PhotoEditPageClient.tsx
index 225c4da8..636f620b 100644
--- a/src/photo/PhotoEditPageClient.tsx
+++ b/src/photo/PhotoEditPageClient.tsx
@@ -39,7 +39,9 @@ export default function PhotoEditPageClient({
}
>)}
{renderMiniGrid(<>
{photoHasExifData(photo) &&