@orangecheck/design 0.23.0 → 0.24.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/dist/chrome.d.mts CHANGED
@@ -158,4 +158,28 @@ interface OcAppBarProps {
158
158
  }
159
159
  declare function OcAppBar({ variant, start, center, end, sticky, className, }: OcAppBarProps): react_jsx_runtime.JSX.Element;
160
160
 
161
- export { AppShell, type AppShellProps, type EcosystemSlug, EcosystemSwitcher, type EcosystemSwitcherProps, FAMILY_PROPERTIES, type FamilyCategory, type FamilyProperty, LayoutSubHeader, type LayoutSubHeaderProps, type LayoutSubHeaderTag, OcAccountMenu, type OcAccountMenuBuildInfo, type OcAccountMenuItem, type OcAccountMenuProps, type OcAccountMenuSession, OcAccountMenuView, type OcAccountMenuViewProps, OcAppBar, type OcAppBarProps, OcDashboardHub, type OcDashboardHubProps, OcDashboardShell, type OcDashboardShellProps, type OcDashboardTool, OcLogoDropdown, type OcLogoDropdownProps, OcPrimaryNav, type OcPrimaryNavLink, type OcPrimaryNavProps, SITE_STATE_LABEL, type SiteState, findFamilyProperty };
161
+ interface FooterLink {
162
+ href: string;
163
+ label: string;
164
+ external?: boolean;
165
+ }
166
+ interface FooterColumn {
167
+ label: string;
168
+ links: FooterLink[];
169
+ }
170
+ interface OcFamilyFooterBrand {
171
+ mark?: ReactNode;
172
+ wordmark: ReactNode;
173
+ tagline: ReactNode;
174
+ meta?: ReactNode;
175
+ }
176
+ interface OcFamilyFooterProps {
177
+ brand: OcFamilyFooterBrand;
178
+ columns?: FooterColumn[];
179
+ family?: "products" | "protocols" | "both";
180
+ legalBase?: string;
181
+ className?: string;
182
+ }
183
+ declare function OcFamilyFooter({ brand, columns, family, legalBase, className, }: OcFamilyFooterProps): react_jsx_runtime.JSX.Element;
184
+
185
+ export { AppShell, type AppShellProps, type EcosystemSlug, EcosystemSwitcher, type EcosystemSwitcherProps, FAMILY_PROPERTIES, type FamilyCategory, type FamilyProperty, type FooterColumn, type FooterLink, LayoutSubHeader, type LayoutSubHeaderProps, type LayoutSubHeaderTag, OcAccountMenu, type OcAccountMenuBuildInfo, type OcAccountMenuItem, type OcAccountMenuProps, type OcAccountMenuSession, OcAccountMenuView, type OcAccountMenuViewProps, OcAppBar, type OcAppBarProps, OcDashboardHub, type OcDashboardHubProps, OcDashboardShell, type OcDashboardShellProps, type OcDashboardTool, OcFamilyFooter, type OcFamilyFooterBrand, type OcFamilyFooterProps, OcLogoDropdown, type OcLogoDropdownProps, OcPrimaryNav, type OcPrimaryNavLink, type OcPrimaryNavProps, SITE_STATE_LABEL, type SiteState, findFamilyProperty };
package/dist/chrome.d.ts CHANGED
@@ -158,4 +158,28 @@ interface OcAppBarProps {
158
158
  }
159
159
  declare function OcAppBar({ variant, start, center, end, sticky, className, }: OcAppBarProps): react_jsx_runtime.JSX.Element;
160
160
 
161
- export { AppShell, type AppShellProps, type EcosystemSlug, EcosystemSwitcher, type EcosystemSwitcherProps, FAMILY_PROPERTIES, type FamilyCategory, type FamilyProperty, LayoutSubHeader, type LayoutSubHeaderProps, type LayoutSubHeaderTag, OcAccountMenu, type OcAccountMenuBuildInfo, type OcAccountMenuItem, type OcAccountMenuProps, type OcAccountMenuSession, OcAccountMenuView, type OcAccountMenuViewProps, OcAppBar, type OcAppBarProps, OcDashboardHub, type OcDashboardHubProps, OcDashboardShell, type OcDashboardShellProps, type OcDashboardTool, OcLogoDropdown, type OcLogoDropdownProps, OcPrimaryNav, type OcPrimaryNavLink, type OcPrimaryNavProps, SITE_STATE_LABEL, type SiteState, findFamilyProperty };
161
+ interface FooterLink {
162
+ href: string;
163
+ label: string;
164
+ external?: boolean;
165
+ }
166
+ interface FooterColumn {
167
+ label: string;
168
+ links: FooterLink[];
169
+ }
170
+ interface OcFamilyFooterBrand {
171
+ mark?: ReactNode;
172
+ wordmark: ReactNode;
173
+ tagline: ReactNode;
174
+ meta?: ReactNode;
175
+ }
176
+ interface OcFamilyFooterProps {
177
+ brand: OcFamilyFooterBrand;
178
+ columns?: FooterColumn[];
179
+ family?: "products" | "protocols" | "both";
180
+ legalBase?: string;
181
+ className?: string;
182
+ }
183
+ declare function OcFamilyFooter({ brand, columns, family, legalBase, className, }: OcFamilyFooterProps): react_jsx_runtime.JSX.Element;
184
+
185
+ export { AppShell, type AppShellProps, type EcosystemSlug, EcosystemSwitcher, type EcosystemSwitcherProps, FAMILY_PROPERTIES, type FamilyCategory, type FamilyProperty, type FooterColumn, type FooterLink, LayoutSubHeader, type LayoutSubHeaderProps, type LayoutSubHeaderTag, OcAccountMenu, type OcAccountMenuBuildInfo, type OcAccountMenuItem, type OcAccountMenuProps, type OcAccountMenuSession, OcAccountMenuView, type OcAccountMenuViewProps, OcAppBar, type OcAppBarProps, OcDashboardHub, type OcDashboardHubProps, OcDashboardShell, type OcDashboardShellProps, type OcDashboardTool, OcFamilyFooter, type OcFamilyFooterBrand, type OcFamilyFooterProps, OcLogoDropdown, type OcLogoDropdownProps, OcPrimaryNav, type OcPrimaryNavLink, type OcPrimaryNavProps, SITE_STATE_LABEL, type SiteState, findFamilyProperty };
package/dist/chrome.js CHANGED
@@ -2102,6 +2102,130 @@ function OcAppBar({
2102
2102
  }
2103
2103
  );
2104
2104
  }
2105
+ var GRID = {
2106
+ 1: "md:grid-cols-[1.2fr_1fr]",
2107
+ 2: "md:grid-cols-[1.2fr_1fr_1fr]",
2108
+ 3: "md:grid-cols-[1.2fr_1fr_1fr_1fr]",
2109
+ 4: "md:grid-cols-[1.2fr_1fr_1fr_1fr_1fr]",
2110
+ 5: "md:grid-cols-[1.2fr_1fr_1fr_1fr_1fr_1fr]"
2111
+ };
2112
+ var LINK_CLS = "text-muted-foreground hover:text-foreground font-mono text-xs tracking-wide lowercase transition-colors";
2113
+ function FooterLinkItem({ link }) {
2114
+ if (link.external) {
2115
+ return /* @__PURE__ */ jsxRuntime.jsxs("a", { href: link.href, target: "_blank", rel: "noreferrer", className: LINK_CLS, children: [
2116
+ "> ",
2117
+ link.label,
2118
+ " \u2197"
2119
+ ] });
2120
+ }
2121
+ return /* @__PURE__ */ jsxRuntime.jsxs(Link5__default.default, { href: link.href, className: LINK_CLS, children: [
2122
+ "> ",
2123
+ link.label
2124
+ ] });
2125
+ }
2126
+ function FooterColumnView({ column }) {
2127
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2128
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "label-mono text-primary mb-3", children: column.label }),
2129
+ /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "space-y-2", children: column.links.map((link) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(FooterLinkItem, { link }) }, `${column.label}:${link.href}`)) })
2130
+ ] });
2131
+ }
2132
+ function familyColumn(category, label) {
2133
+ return {
2134
+ label,
2135
+ links: FAMILY_PROPERTIES.filter((p) => p.category === category).map(
2136
+ (p) => ({
2137
+ href: p.origin,
2138
+ label: p.label,
2139
+ external: true
2140
+ })
2141
+ )
2142
+ };
2143
+ }
2144
+ function OcFamilyFooter({
2145
+ brand,
2146
+ columns = [],
2147
+ family,
2148
+ legalBase = "https://ochk.io",
2149
+ className
2150
+ }) {
2151
+ const familyCols = [];
2152
+ if (family === "products" || family === "both") {
2153
+ familyCols.push(familyColumn("product", "\xA7 products"));
2154
+ }
2155
+ if (family === "protocols" || family === "both") {
2156
+ familyCols.push(familyColumn("protocol", "\xA7 protocols"));
2157
+ }
2158
+ const allColumns = [...familyCols, ...columns];
2159
+ const grid = GRID[allColumns.length] ?? GRID[3];
2160
+ const year = (/* @__PURE__ */ new Date()).getFullYear();
2161
+ const legal = (path) => `${legalBase}${path}`;
2162
+ return /* @__PURE__ */ jsxRuntime.jsx("footer", { className: cn("border-t", className), children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "container py-10 sm:py-12 md:py-16", children: [
2163
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: cn("grid gap-8 sm:grid-cols-2 sm:gap-10", grid), children: [
2164
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2165
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
2166
+ brand.mark,
2167
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "font-display text-sm font-bold tracking-tight", children: brand.wordmark })
2168
+ ] }),
2169
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-muted-foreground mt-3 max-w-[34ch] text-sm leading-relaxed", children: brand.tagline }),
2170
+ brand.meta && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-4", children: brand.meta })
2171
+ ] }),
2172
+ allColumns.map((column) => /* @__PURE__ */ jsxRuntime.jsx(FooterColumnView, { column }, column.label))
2173
+ ] }),
2174
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-10 flex flex-col items-start justify-between gap-3 border-t pt-6 font-mono text-[11px] tracking-widest uppercase sm:flex-row sm:items-center", children: [
2175
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground", children: [
2176
+ "\xA9 ",
2177
+ year,
2178
+ " orangecheck \xB7 mit + cc-by-4.0"
2179
+ ] }),
2180
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "text-muted-foreground/80 flex flex-wrap items-center gap-x-4 gap-y-1", children: [
2181
+ /* @__PURE__ */ jsxRuntime.jsx(
2182
+ "a",
2183
+ {
2184
+ href: legal("/privacy"),
2185
+ className: "hover:text-foreground transition-colors",
2186
+ children: "privacy"
2187
+ }
2188
+ ),
2189
+ /* @__PURE__ */ jsxRuntime.jsx(
2190
+ "a",
2191
+ {
2192
+ href: legal("/terms"),
2193
+ className: "hover:text-foreground transition-colors",
2194
+ children: "terms"
2195
+ }
2196
+ ),
2197
+ /* @__PURE__ */ jsxRuntime.jsx(
2198
+ "a",
2199
+ {
2200
+ href: legal("/security"),
2201
+ className: "hover:text-foreground transition-colors",
2202
+ children: "security"
2203
+ }
2204
+ ),
2205
+ /* @__PURE__ */ jsxRuntime.jsx(
2206
+ "a",
2207
+ {
2208
+ href: legal("/trademark"),
2209
+ className: "hover:text-foreground transition-colors",
2210
+ children: "trademarks"
2211
+ }
2212
+ ),
2213
+ /* @__PURE__ */ jsxRuntime.jsx(
2214
+ "a",
2215
+ {
2216
+ href: legal("/contact"),
2217
+ className: "hover:text-foreground transition-colors",
2218
+ children: "contact"
2219
+ }
2220
+ )
2221
+ ] }),
2222
+ /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "text-muted-foreground inline-flex items-center gap-1.5", children: [
2223
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-primary text-[13px] leading-none", children: "\u20BF" }),
2224
+ /* @__PURE__ */ jsxRuntime.jsx("span", { children: "built with bitcoin" })
2225
+ ] })
2226
+ ] })
2227
+ ] }) });
2228
+ }
2105
2229
 
2106
2230
  exports.AppShell = AppShell;
2107
2231
  exports.EcosystemSwitcher = EcosystemSwitcher;
@@ -2112,6 +2236,7 @@ exports.OcAccountMenuView = OcAccountMenuView;
2112
2236
  exports.OcAppBar = OcAppBar;
2113
2237
  exports.OcDashboardHub = OcDashboardHub;
2114
2238
  exports.OcDashboardShell = OcDashboardShell;
2239
+ exports.OcFamilyFooter = OcFamilyFooter;
2115
2240
  exports.OcLogoDropdown = OcLogoDropdown;
2116
2241
  exports.OcPrimaryNav = OcPrimaryNav;
2117
2242
  exports.SITE_STATE_LABEL = SITE_STATE_LABEL;