@busiverse/ui 0.2.3 → 0.2.4
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 +7 -3
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/social/SocialIcons.d.ts +17 -0
- package/dist/components/social/SocialIcons.d.ts.map +1 -0
- package/dist/components/social/index.d.ts +2 -0
- package/dist/components/social/index.d.ts.map +1 -0
- package/dist/index.js +76 -16
- package/dist/styles.css +0 -69
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -237,8 +237,12 @@ import { BusiverseBrandHead } from "@busiverse/ui";
|
|
|
237
237
|
The package remains network-neutral: it does not call `fetch`, open sockets, or import remote fonts.
|
|
238
238
|
|
|
239
239
|
|
|
240
|
-
##
|
|
240
|
+
## v0.2.4 social icon ownership
|
|
241
241
|
|
|
242
|
-
`@busiverse/ui
|
|
242
|
+
`@busiverse/ui` owns BUSIVERSE-approved social icon wrappers so separately deployed frontends do not import brand icons from `lucide-react`. Lucide is an outline UI-icon library and newer builds do not export brand icons such as `Github`, `Twitter`, or `Linkedin`. Use:
|
|
243
243
|
|
|
244
|
-
|
|
244
|
+
```tsx
|
|
245
|
+
import { BusiverseGithubIcon, BusiverseXIcon, BusiverseLinkedInIcon, BusiverseMailIcon } from "@busiverse/ui";
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
The package remains network-neutral. The icons are inline SVG React components and do not fetch remote assets.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type BusiverseSocialIconName = "github" | "x" | "linkedin" | "mail";
|
|
3
|
+
export interface BusiverseSocialIconProps extends Omit<React.SVGProps<SVGSVGElement>, "name"> {
|
|
4
|
+
name: BusiverseSocialIconName;
|
|
5
|
+
size?: number | string;
|
|
6
|
+
title?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface BusiverseNamedSocialIconProps extends Omit<React.SVGProps<SVGSVGElement>, "name"> {
|
|
9
|
+
size?: number | string;
|
|
10
|
+
title?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function BusiverseSocialIcon({ name, size, title, className, ...props }: BusiverseSocialIconProps): React.JSX.Element;
|
|
13
|
+
export declare function BusiverseGithubIcon(props: BusiverseNamedSocialIconProps): React.JSX.Element;
|
|
14
|
+
export declare function BusiverseXIcon(props: BusiverseNamedSocialIconProps): React.JSX.Element;
|
|
15
|
+
export declare function BusiverseLinkedInIcon(props: BusiverseNamedSocialIconProps): React.JSX.Element;
|
|
16
|
+
export declare function BusiverseMailIcon(props: BusiverseNamedSocialIconProps): React.JSX.Element;
|
|
17
|
+
//# sourceMappingURL=SocialIcons.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SocialIcons.d.ts","sourceRoot":"","sources":["../../../src/components/social/SocialIcons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,uBAAuB,GAAG,QAAQ,GAAG,GAAG,GAAG,UAAU,GAAG,MAAM,CAAC;AAE3E,MAAM,WAAW,wBAAyB,SAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAC3F,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,6BAA8B,SAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChG,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAgB,mBAAmB,CAAC,EAClC,IAAI,EACJ,IAAS,EACT,KAAK,EACL,SAAS,EACT,GAAG,KAAK,EACT,EAAE,wBAAwB,qBAkB1B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,6BAA6B,qBAEvE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,6BAA6B,qBAElE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,6BAA6B,qBAEzE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,6BAA6B,qBAErE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/social/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8341,6 +8341,61 @@ function HeroSection({
|
|
|
8341
8341
|
] }) });
|
|
8342
8342
|
}
|
|
8343
8343
|
|
|
8344
|
+
// src/components/social/SocialIcons.tsx
|
|
8345
|
+
import { jsx as jsx24, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
8346
|
+
var paths = {
|
|
8347
|
+
github: /* @__PURE__ */ jsx24(
|
|
8348
|
+
"path",
|
|
8349
|
+
{
|
|
8350
|
+
fillRule: "evenodd",
|
|
8351
|
+
clipRule: "evenodd",
|
|
8352
|
+
d: "M12 2.25c-5.52 0-10 4.48-10 10 0 4.42 2.87 8.17 6.84 9.5.5.09.68-.22.68-.48v-1.68c-2.78.6-3.37-1.34-3.37-1.34-.45-1.15-1.1-1.46-1.1-1.46-.9-.62.07-.6.07-.6 1 .07 1.53 1.03 1.53 1.03.89 1.52 2.34 1.08 2.91.83.09-.64.35-1.08.63-1.33-2.22-.25-4.56-1.11-4.56-4.94 0-1.09.39-1.98 1.03-2.68-.1-.25-.45-1.27.1-2.65 0 0 .84-.27 2.75 1.02A9.58 9.58 0 0 1 12 7.14c.85 0 1.7.11 2.5.34 1.9-1.29 2.74-1.02 2.74-1.02.55 1.38.2 2.4.1 2.65.64.7 1.03 1.59 1.03 2.68 0 3.84-2.34 4.69-4.57 4.94.36.31.68.92.68 1.86v2.76c0 .27.18.58.69.48A10.01 10.01 0 0 0 22 12.25c0-5.52-4.48-10-10-10Z"
|
|
8353
|
+
}
|
|
8354
|
+
),
|
|
8355
|
+
x: /* @__PURE__ */ jsx24("path", { d: "M13.66 10.62 21.24 2h-1.8l-6.58 7.48L7.6 2H1.54l7.95 11.31L1.54 22h1.8l6.95-7.53L15.84 22h6.06l-8.24-11.38Zm-2.46 2.8-.8-1.12L4 3.33h2.74l5.17 7.24.8 1.12 6.72 9.42H16.7l-5.5-7.69Z" }),
|
|
8356
|
+
linkedin: /* @__PURE__ */ jsx24("path", { d: "M5.34 8.25H2.7V21h2.64V8.25ZM5.52 4.3A1.53 1.53 0 1 0 2.46 4.3a1.53 1.53 0 0 0 3.06 0ZM21 13.68c0-3.42-1.83-5.01-4.28-5.01-1.97 0-2.86 1.08-3.35 1.84V8.25h-2.64V21h2.64v-6.31c0-1.66.31-3.28 2.38-3.28 2.04 0 2.07 1.91 2.07 3.38V21H21v-7.32Z" }),
|
|
8357
|
+
mail: /* @__PURE__ */ jsx24("path", { d: "M4.5 5.75A2.5 2.5 0 0 0 2 8.25v7.5a2.5 2.5 0 0 0 2.5 2.5h15a2.5 2.5 0 0 0 2.5-2.5v-7.5a2.5 2.5 0 0 0-2.5-2.5h-15Zm.17 2h14.66L12 12.87 4.67 7.75Zm-.67 2v6c0 .28.22.5.5.5h15a.5.5 0 0 0 .5-.5v-6l-7.43 5.2a1 1 0 0 1-1.14 0L4 9.75Z" })
|
|
8358
|
+
};
|
|
8359
|
+
function BusiverseSocialIcon({
|
|
8360
|
+
name,
|
|
8361
|
+
size = 20,
|
|
8362
|
+
title,
|
|
8363
|
+
className,
|
|
8364
|
+
...props
|
|
8365
|
+
}) {
|
|
8366
|
+
const labelled = Boolean(title || props["aria-label"]);
|
|
8367
|
+
return /* @__PURE__ */ jsxs12(
|
|
8368
|
+
"svg",
|
|
8369
|
+
{
|
|
8370
|
+
viewBox: "0 0 24 24",
|
|
8371
|
+
width: size,
|
|
8372
|
+
height: size,
|
|
8373
|
+
fill: "currentColor",
|
|
8374
|
+
role: labelled ? "img" : "presentation",
|
|
8375
|
+
"aria-hidden": labelled ? void 0 : true,
|
|
8376
|
+
className: cn("busiverse-social-icon", className),
|
|
8377
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
8378
|
+
...props,
|
|
8379
|
+
children: [
|
|
8380
|
+
title ? /* @__PURE__ */ jsx24("title", { children: title }) : null,
|
|
8381
|
+
paths[name]
|
|
8382
|
+
]
|
|
8383
|
+
}
|
|
8384
|
+
);
|
|
8385
|
+
}
|
|
8386
|
+
function BusiverseGithubIcon(props) {
|
|
8387
|
+
return /* @__PURE__ */ jsx24(BusiverseSocialIcon, { name: "github", ...props });
|
|
8388
|
+
}
|
|
8389
|
+
function BusiverseXIcon(props) {
|
|
8390
|
+
return /* @__PURE__ */ jsx24(BusiverseSocialIcon, { name: "x", ...props });
|
|
8391
|
+
}
|
|
8392
|
+
function BusiverseLinkedInIcon(props) {
|
|
8393
|
+
return /* @__PURE__ */ jsx24(BusiverseSocialIcon, { name: "linkedin", ...props });
|
|
8394
|
+
}
|
|
8395
|
+
function BusiverseMailIcon(props) {
|
|
8396
|
+
return /* @__PURE__ */ jsx24(BusiverseSocialIcon, { name: "mail", ...props });
|
|
8397
|
+
}
|
|
8398
|
+
|
|
8344
8399
|
// src/api/createGatewayClient.ts
|
|
8345
8400
|
var GatewayApiError = class extends Error {
|
|
8346
8401
|
status;
|
|
@@ -8387,10 +8442,10 @@ function createGatewayClient(options) {
|
|
|
8387
8442
|
|
|
8388
8443
|
// src/auth/AuthSessionProvider.tsx
|
|
8389
8444
|
import * as React8 from "react";
|
|
8390
|
-
import { jsx as
|
|
8445
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
8391
8446
|
var AuthContext = React8.createContext(null);
|
|
8392
8447
|
function AuthSessionProvider({ children, session }) {
|
|
8393
|
-
return /* @__PURE__ */
|
|
8448
|
+
return /* @__PURE__ */ jsx25(AuthContext.Provider, { value: session, children });
|
|
8394
8449
|
}
|
|
8395
8450
|
function useBusiverseAuth() {
|
|
8396
8451
|
const value = React8.useContext(AuthContext);
|
|
@@ -8399,34 +8454,34 @@ function useBusiverseAuth() {
|
|
|
8399
8454
|
}
|
|
8400
8455
|
|
|
8401
8456
|
// src/auth/RequireAuth.tsx
|
|
8402
|
-
import { Fragment as Fragment2, jsx as
|
|
8457
|
+
import { Fragment as Fragment2, jsx as jsx26, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
8403
8458
|
function RequireAuth({ children }) {
|
|
8404
8459
|
const auth = useBusiverseAuth();
|
|
8405
|
-
if (auth.isLoading) return /* @__PURE__ */
|
|
8460
|
+
if (auth.isLoading) return /* @__PURE__ */ jsx26("div", { className: "busiverse-loading-state", children: "Checking session\u2026" });
|
|
8406
8461
|
if (!auth.isAuthenticated) {
|
|
8407
|
-
return /* @__PURE__ */
|
|
8408
|
-
/* @__PURE__ */
|
|
8409
|
-
/* @__PURE__ */
|
|
8410
|
-
/* @__PURE__ */
|
|
8462
|
+
return /* @__PURE__ */ jsxs13("div", { className: "busiverse-auth-required", children: [
|
|
8463
|
+
/* @__PURE__ */ jsx26("h1", { children: "Sign in required" }),
|
|
8464
|
+
/* @__PURE__ */ jsx26("p", { children: "Use your BUSIVERSE account to continue." }),
|
|
8465
|
+
/* @__PURE__ */ jsx26(Button, { onClick: () => void auth.signIn(), children: "Sign in" })
|
|
8411
8466
|
] });
|
|
8412
8467
|
}
|
|
8413
|
-
return /* @__PURE__ */
|
|
8468
|
+
return /* @__PURE__ */ jsx26(Fragment2, { children });
|
|
8414
8469
|
}
|
|
8415
8470
|
|
|
8416
8471
|
// src/auth/SignUpLink.tsx
|
|
8417
|
-
import { jsx as
|
|
8472
|
+
import { jsx as jsx27 } from "react/jsx-runtime";
|
|
8418
8473
|
function SignUpLink({ signupUrl = "https://user.busiversehq.com/signup", children = "Create your Busiverse account", ...props }) {
|
|
8419
|
-
return /* @__PURE__ */
|
|
8474
|
+
return /* @__PURE__ */ jsx27("a", { href: signupUrl, ...props, children });
|
|
8420
8475
|
}
|
|
8421
8476
|
|
|
8422
8477
|
// src/auth/UserMenu.tsx
|
|
8423
|
-
import { jsx as
|
|
8478
|
+
import { jsx as jsx28, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
8424
8479
|
function UserMenu() {
|
|
8425
8480
|
const auth = useBusiverseAuth();
|
|
8426
|
-
if (!auth.isAuthenticated || !auth.user) return /* @__PURE__ */
|
|
8427
|
-
return /* @__PURE__ */
|
|
8428
|
-
/* @__PURE__ */
|
|
8429
|
-
/* @__PURE__ */
|
|
8481
|
+
if (!auth.isAuthenticated || !auth.user) return /* @__PURE__ */ jsx28(Button, { size: "sm", onClick: () => void auth.signIn(), children: "Sign in" });
|
|
8482
|
+
return /* @__PURE__ */ jsxs14("div", { className: "busiverse-user-menu", children: [
|
|
8483
|
+
/* @__PURE__ */ jsx28("span", { children: auth.user.name ?? auth.user.email ?? "User" }),
|
|
8484
|
+
/* @__PURE__ */ jsx28(Button, { size: "sm", variant: "ghost", onClick: () => void auth.signOut(), children: "Sign out" })
|
|
8430
8485
|
] });
|
|
8431
8486
|
}
|
|
8432
8487
|
export {
|
|
@@ -8434,8 +8489,13 @@ export {
|
|
|
8434
8489
|
AuthSessionProvider,
|
|
8435
8490
|
Badge,
|
|
8436
8491
|
BusiverseBrandHead,
|
|
8492
|
+
BusiverseGithubIcon,
|
|
8437
8493
|
BusiverseI18nProvider,
|
|
8494
|
+
BusiverseLinkedInIcon,
|
|
8438
8495
|
BusiverseLogo,
|
|
8496
|
+
BusiverseMailIcon,
|
|
8497
|
+
BusiverseSocialIcon,
|
|
8498
|
+
BusiverseXIcon,
|
|
8439
8499
|
Button,
|
|
8440
8500
|
Card,
|
|
8441
8501
|
CardContent,
|
package/dist/styles.css
CHANGED
|
@@ -39,36 +39,6 @@
|
|
|
39
39
|
--motion-default: 200ms;
|
|
40
40
|
--motion-slow: 300ms;
|
|
41
41
|
--ease-standard: cubic-bezier(0.16,1,0.3,1);
|
|
42
|
-
|
|
43
|
-
/* Shadcn/Tailwind compatibility aliases used by existing Busiverse frontends. */
|
|
44
|
-
--background: 222 47% 4%;
|
|
45
|
-
--foreground: 0 0% 100%;
|
|
46
|
-
--card: 222 84% 5%;
|
|
47
|
-
--card-foreground: 0 0% 100%;
|
|
48
|
-
--popover: 222 47% 11%;
|
|
49
|
-
--popover-foreground: 0 0% 100%;
|
|
50
|
-
--primary: 217 91% 60%;
|
|
51
|
-
--primary-foreground: 0 0% 100%;
|
|
52
|
-
--secondary: 263 70% 50%;
|
|
53
|
-
--secondary-foreground: 0 0% 100%;
|
|
54
|
-
--muted: 215 25% 17%;
|
|
55
|
-
--muted-foreground: 214 16% 65%;
|
|
56
|
-
--accent: 258 90% 66%;
|
|
57
|
-
--accent-foreground: 0 0% 100%;
|
|
58
|
-
--destructive: 0 84% 60%;
|
|
59
|
-
--destructive-foreground: 0 0% 100%;
|
|
60
|
-
--border: 0 0% 100%;
|
|
61
|
-
--input: 0 0% 100%;
|
|
62
|
-
--ring: 217 91% 60%;
|
|
63
|
-
--radius: 0.75rem;
|
|
64
|
-
--sidebar-background: 222 47% 4%;
|
|
65
|
-
--sidebar-foreground: 214 32% 91%;
|
|
66
|
-
--sidebar-primary: 217 91% 60%;
|
|
67
|
-
--sidebar-primary-foreground: 0 0% 100%;
|
|
68
|
-
--sidebar-accent: 215 25% 17%;
|
|
69
|
-
--sidebar-accent-foreground: 0 0% 100%;
|
|
70
|
-
--sidebar-border: 0 0% 100%;
|
|
71
|
-
--sidebar-ring: 217 91% 60%;
|
|
72
42
|
color-scheme: dark;
|
|
73
43
|
}
|
|
74
44
|
|
|
@@ -283,42 +253,3 @@ img, svg { max-width: 100%; display: block; }
|
|
|
283
253
|
.busiverse-pricing-grid { grid-template-columns: 1fr; }
|
|
284
254
|
.busiverse-pricing-controls > input { max-width: none; }
|
|
285
255
|
}
|
|
286
|
-
|
|
287
|
-
/* Shared BUSIVERSE marketing utilities used by separately deployed frontends. */
|
|
288
|
-
.text-gradient-blue-violet {
|
|
289
|
-
background: linear-gradient(90deg, var(--color-brand-blue), var(--color-brand-violet));
|
|
290
|
-
-webkit-background-clip: text;
|
|
291
|
-
background-clip: text;
|
|
292
|
-
color: transparent;
|
|
293
|
-
}
|
|
294
|
-
.text-gradient-blue-cyan {
|
|
295
|
-
background: linear-gradient(90deg, var(--color-brand-blue), var(--color-brand-cyan));
|
|
296
|
-
-webkit-background-clip: text;
|
|
297
|
-
background-clip: text;
|
|
298
|
-
color: transparent;
|
|
299
|
-
}
|
|
300
|
-
.text-gradient-violet-cyan {
|
|
301
|
-
background: linear-gradient(90deg, var(--color-brand-violet), var(--color-brand-cyan));
|
|
302
|
-
-webkit-background-clip: text;
|
|
303
|
-
background-clip: text;
|
|
304
|
-
color: transparent;
|
|
305
|
-
}
|
|
306
|
-
.text-gradient-full {
|
|
307
|
-
background: linear-gradient(90deg, var(--color-brand-blue) 0%, var(--color-brand-violet) 50%, var(--color-brand-cyan) 100%);
|
|
308
|
-
-webkit-background-clip: text;
|
|
309
|
-
background-clip: text;
|
|
310
|
-
color: transparent;
|
|
311
|
-
}
|
|
312
|
-
.bg-gradient-primary { background: linear-gradient(90deg, var(--color-brand-blue), var(--color-brand-violet)); }
|
|
313
|
-
.bg-gradient-secondary { background: linear-gradient(90deg, var(--color-brand-blue), var(--color-brand-cyan)); }
|
|
314
|
-
.bg-gradient-tertiary { background: linear-gradient(90deg, var(--color-brand-violet), var(--color-brand-cyan)); }
|
|
315
|
-
.bg-gradient-full { background: linear-gradient(90deg, var(--color-brand-blue) 0%, var(--color-brand-violet) 50%, var(--color-brand-cyan) 100%); }
|
|
316
|
-
.bg-gradient-hero { background: linear-gradient(135deg, var(--color-bg-primary) 0%, var(--color-bg-brand-dark) 45%, var(--color-bg-secondary) 100%); }
|
|
317
|
-
.glass-card { background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.10); backdrop-filter: blur(16px); }
|
|
318
|
-
.glass-card-hover { transition: transform 250ms var(--ease-standard), background 250ms, border-color 250ms; }
|
|
319
|
-
.glass-card-hover:hover { background: rgba(255,255,255,.10); border-color: rgba(255,255,255,.20); transform: translateY(-2px); }
|
|
320
|
-
.animate-float { animation: busiverse-float 3s ease-in-out infinite; }
|
|
321
|
-
@keyframes busiverse-float {
|
|
322
|
-
0%, 100% { transform: translateY(0); }
|
|
323
|
-
50% { transform: translateY(-16px); }
|
|
324
|
-
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@busiverse/ui",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.4",
|
|
4
4
|
"author": "Joel Julius Okoromi <okmarq@gmail.com> (https://busiversehq.com)",
|
|
5
5
|
"description": "BUSIVERSE shared React UI, design tokens, pricing, i18n, auth helpers, and product shell. Network-neutral core; Gateway transport is app-injected.",
|
|
6
6
|
"type": "module",
|