@geomak/ui 6.30.0 → 6.31.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/index.cjs +154 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +156 -1
- package/dist/index.d.ts +156 -1
- package/dist/index.js +151 -3
- package/dist/index.js.map +1 -1
- package/dist/styles.css +54 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -507,8 +507,8 @@ function Avatar({
|
|
|
507
507
|
if (fallback) return fallback;
|
|
508
508
|
if (alt) {
|
|
509
509
|
const parts = alt.trim().split(/\s+/).slice(0, 2);
|
|
510
|
-
const
|
|
511
|
-
if (
|
|
510
|
+
const initials3 = parts.map((p) => p[0]?.toUpperCase() ?? "").join("");
|
|
511
|
+
if (initials3) return initials3;
|
|
512
512
|
}
|
|
513
513
|
return /* @__PURE__ */ jsxRuntime.jsx(PersonSilhouette, {});
|
|
514
514
|
})();
|
|
@@ -9326,6 +9326,154 @@ function useJwt(token) {
|
|
|
9326
9326
|
const isValid = decoded.payload != null && !isExpired;
|
|
9327
9327
|
return { payload: decoded.payload, header: decoded.header, expiresAt, isExpired, isValid, raw: token ?? null };
|
|
9328
9328
|
}
|
|
9329
|
+
var GRADIENT = "radial-gradient(ellipse 80% 60% at 50% 0%, color-mix(in oklab, var(--color-accent) 12%, transparent), transparent 70%)";
|
|
9330
|
+
function Jumbotron({
|
|
9331
|
+
eyebrow,
|
|
9332
|
+
title,
|
|
9333
|
+
description,
|
|
9334
|
+
actions,
|
|
9335
|
+
media,
|
|
9336
|
+
layout = "centered",
|
|
9337
|
+
background = "none",
|
|
9338
|
+
className = "",
|
|
9339
|
+
style
|
|
9340
|
+
}) {
|
|
9341
|
+
const split = layout === "split" && media != null;
|
|
9342
|
+
const bgClass = background === "surface" ? "bg-surface" : "";
|
|
9343
|
+
const copy = /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ["flex flex-col gap-5", split ? "items-start text-left" : "items-center text-center"].join(" "), children: [
|
|
9344
|
+
eyebrow != null && /* @__PURE__ */ jsxRuntime.jsx("div", { children: eyebrow }),
|
|
9345
|
+
/* @__PURE__ */ jsxRuntime.jsx("h1", { className: ["text-4xl font-bold leading-tight tracking-tight text-foreground sm:text-5xl", split ? "" : "max-w-3xl"].join(" "), children: title }),
|
|
9346
|
+
description != null && /* @__PURE__ */ jsxRuntime.jsx("p", { className: ["text-lg leading-relaxed text-foreground-secondary", split ? "max-w-xl" : "max-w-2xl"].join(" "), children: description }),
|
|
9347
|
+
actions != null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: ["mt-2 flex flex-wrap gap-3", split ? "justify-start" : "justify-center"].join(" "), children: actions })
|
|
9348
|
+
] });
|
|
9349
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9350
|
+
"section",
|
|
9351
|
+
{
|
|
9352
|
+
className: ["relative overflow-hidden rounded-2xl px-6 py-16 sm:px-10 sm:py-24", bgClass, className].filter(Boolean).join(" "),
|
|
9353
|
+
style: { ...background === "gradient" ? { backgroundImage: GRADIENT } : null, ...style },
|
|
9354
|
+
children: split ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto grid max-w-6xl items-center gap-10 lg:grid-cols-2", children: [
|
|
9355
|
+
copy,
|
|
9356
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "overflow-hidden rounded-xl", children: media })
|
|
9357
|
+
] }) : /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto flex max-w-4xl flex-col items-center", children: [
|
|
9358
|
+
copy,
|
|
9359
|
+
media != null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-12 w-full overflow-hidden rounded-xl", children: media })
|
|
9360
|
+
] })
|
|
9361
|
+
}
|
|
9362
|
+
);
|
|
9363
|
+
}
|
|
9364
|
+
var COLS = {
|
|
9365
|
+
2: "sm:grid-cols-2",
|
|
9366
|
+
3: "sm:grid-cols-2 lg:grid-cols-3",
|
|
9367
|
+
4: "sm:grid-cols-2 lg:grid-cols-4"
|
|
9368
|
+
};
|
|
9369
|
+
function FeatureGrid({
|
|
9370
|
+
features,
|
|
9371
|
+
eyebrow,
|
|
9372
|
+
title,
|
|
9373
|
+
description,
|
|
9374
|
+
columns = 3,
|
|
9375
|
+
centeredHeader = true,
|
|
9376
|
+
className = "",
|
|
9377
|
+
style
|
|
9378
|
+
}) {
|
|
9379
|
+
const hasHeader = eyebrow != null || title != null || description != null;
|
|
9380
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: ["px-2", className].filter(Boolean).join(" "), style, children: [
|
|
9381
|
+
hasHeader && /* @__PURE__ */ jsxRuntime.jsxs("header", { className: ["mb-10 flex flex-col gap-3", centeredHeader ? "items-center text-center" : "items-start text-left"].join(" "), children: [
|
|
9382
|
+
eyebrow != null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs font-semibold uppercase tracking-wide text-accent", children: eyebrow }),
|
|
9383
|
+
title != null && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl font-bold tracking-tight text-foreground", children: title }),
|
|
9384
|
+
description != null && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "max-w-2xl text-base leading-relaxed text-foreground-secondary", children: description })
|
|
9385
|
+
] }),
|
|
9386
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: ["grid grid-cols-1 gap-6", COLS[columns]].join(" "), children: features.map((f, i) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-3 rounded-xl border border-border bg-surface p-5", children: [
|
|
9387
|
+
f.icon != null && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9388
|
+
"span",
|
|
9389
|
+
{
|
|
9390
|
+
className: "flex h-10 w-10 items-center justify-center rounded-lg text-accent",
|
|
9391
|
+
style: { backgroundColor: "color-mix(in oklab, var(--color-accent) 12%, var(--color-surface))" },
|
|
9392
|
+
children: f.icon
|
|
9393
|
+
}
|
|
9394
|
+
),
|
|
9395
|
+
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-base font-semibold text-foreground", children: f.title }),
|
|
9396
|
+
f.description != null && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-sm leading-relaxed text-foreground-secondary", children: f.description })
|
|
9397
|
+
] }, f.key ?? i)) })
|
|
9398
|
+
] });
|
|
9399
|
+
}
|
|
9400
|
+
var Check3 = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2.5, "aria-hidden": "true", className: "mt-0.5 h-4 w-4 flex-shrink-0 text-accent", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M20 6 9 17l-5-5" }) });
|
|
9401
|
+
function PricingPlans({ plans, eyebrow, title, description, className = "", style }) {
|
|
9402
|
+
const hasHeader = eyebrow != null || title != null || description != null;
|
|
9403
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: ["px-2", className].filter(Boolean).join(" "), style, children: [
|
|
9404
|
+
hasHeader && /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-10 flex flex-col items-center gap-3 text-center", children: [
|
|
9405
|
+
eyebrow != null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs font-semibold uppercase tracking-wide text-accent", children: eyebrow }),
|
|
9406
|
+
title != null && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl font-bold tracking-tight text-foreground", children: title }),
|
|
9407
|
+
description != null && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "max-w-2xl text-base leading-relaxed text-foreground-secondary", children: description })
|
|
9408
|
+
] }),
|
|
9409
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 items-stretch gap-6 md:grid-cols-2 lg:grid-cols-3", children: plans.map((p, i) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
9410
|
+
"div",
|
|
9411
|
+
{
|
|
9412
|
+
className: [
|
|
9413
|
+
"relative flex flex-col rounded-2xl border bg-surface p-6",
|
|
9414
|
+
p.highlighted ? "border-accent shadow-lg lg:-my-2 lg:py-8" : "border-border"
|
|
9415
|
+
].join(" "),
|
|
9416
|
+
children: [
|
|
9417
|
+
p.highlighted && p.badge != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "absolute -top-3 left-1/2 -translate-x-1/2 rounded-full bg-accent px-3 py-0.5 text-xs font-semibold text-accent-fg shadow-sm", children: p.badge }),
|
|
9418
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-sm font-semibold uppercase tracking-wide text-foreground-muted", children: p.name }),
|
|
9419
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mt-3 flex items-baseline gap-1", children: [
|
|
9420
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-4xl font-bold tracking-tight text-foreground", children: p.price }),
|
|
9421
|
+
p.period != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-sm text-foreground-muted", children: p.period })
|
|
9422
|
+
] }),
|
|
9423
|
+
p.description != null && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-sm leading-relaxed text-foreground-secondary", children: p.description }),
|
|
9424
|
+
/* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-6 flex flex-1 flex-col gap-2.5", children: p.features.map((f, fi) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "flex gap-2 text-sm text-foreground-secondary", children: [
|
|
9425
|
+
/* @__PURE__ */ jsxRuntime.jsx(Check3, {}),
|
|
9426
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { children: f })
|
|
9427
|
+
] }, fi)) }),
|
|
9428
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-6", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9429
|
+
Button_default,
|
|
9430
|
+
{
|
|
9431
|
+
content: p.cta.label,
|
|
9432
|
+
variant: p.highlighted ? "primary" : "outline",
|
|
9433
|
+
onClick: p.cta.onClick,
|
|
9434
|
+
style: { width: "100%" }
|
|
9435
|
+
}
|
|
9436
|
+
) })
|
|
9437
|
+
]
|
|
9438
|
+
},
|
|
9439
|
+
p.key ?? i
|
|
9440
|
+
)) })
|
|
9441
|
+
] });
|
|
9442
|
+
}
|
|
9443
|
+
var COLS2 = {
|
|
9444
|
+
1: "mx-auto max-w-2xl",
|
|
9445
|
+
2: "sm:grid-cols-2",
|
|
9446
|
+
3: "sm:grid-cols-2 lg:grid-cols-3"
|
|
9447
|
+
};
|
|
9448
|
+
var initials2 = (name) => typeof name === "string" ? name.trim().split(/\s+/).slice(0, 2).map((w) => w[0]?.toUpperCase() ?? "").join("") || void 0 : void 0;
|
|
9449
|
+
function Stars({ value }) {
|
|
9450
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex gap-0.5", "aria-label": `${value} out of 5`, children: Array.from({ length: 5 }, (_, i) => /* @__PURE__ */ jsxRuntime.jsx("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", className: `h-4 w-4 ${i < value ? "text-status-warning" : "text-border-strong"}`, fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2l2.9 6.3 6.9.7-5.1 4.6 1.4 6.8L12 17.8 5.9 20.4l1.4-6.8L2.2 9l6.9-.7L12 2z" }) }, i)) });
|
|
9451
|
+
}
|
|
9452
|
+
function Testimonials({ testimonials, eyebrow, title, description, columns = 3, className = "", style }) {
|
|
9453
|
+
const hasHeader = eyebrow != null || title != null || description != null;
|
|
9454
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: ["px-2", className].filter(Boolean).join(" "), style, children: [
|
|
9455
|
+
hasHeader && /* @__PURE__ */ jsxRuntime.jsxs("header", { className: "mb-10 flex flex-col items-center gap-3 text-center", children: [
|
|
9456
|
+
eyebrow != null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "text-xs font-semibold uppercase tracking-wide text-accent", children: eyebrow }),
|
|
9457
|
+
title != null && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-3xl font-bold tracking-tight text-foreground", children: title }),
|
|
9458
|
+
description != null && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "max-w-2xl text-base leading-relaxed text-foreground-secondary", children: description })
|
|
9459
|
+
] }),
|
|
9460
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: ["grid grid-cols-1 gap-6", COLS2[columns]].join(" "), children: testimonials.map((tm, i) => /* @__PURE__ */ jsxRuntime.jsxs("figure", { className: "flex flex-col gap-4 rounded-xl border border-border bg-surface p-6", children: [
|
|
9461
|
+
tm.rating != null && /* @__PURE__ */ jsxRuntime.jsx(Stars, { value: tm.rating }),
|
|
9462
|
+
/* @__PURE__ */ jsxRuntime.jsxs("blockquote", { className: "flex-1 text-sm leading-relaxed text-foreground", children: [
|
|
9463
|
+
"\u201C",
|
|
9464
|
+
tm.quote,
|
|
9465
|
+
"\u201D"
|
|
9466
|
+
] }),
|
|
9467
|
+
/* @__PURE__ */ jsxRuntime.jsxs("figcaption", { className: "flex items-center gap-3", children: [
|
|
9468
|
+
/* @__PURE__ */ jsxRuntime.jsx(Avatar, { src: tm.avatar, alt: typeof tm.author === "string" ? tm.author : "Reviewer", fallback: initials2(tm.author), size: "sm" }),
|
|
9469
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0", children: [
|
|
9470
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-sm font-semibold text-foreground", children: tm.author }),
|
|
9471
|
+
tm.role != null && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "truncate text-xs text-foreground-muted", children: tm.role })
|
|
9472
|
+
] })
|
|
9473
|
+
] })
|
|
9474
|
+
] }, tm.key ?? i)) })
|
|
9475
|
+
] });
|
|
9476
|
+
}
|
|
9329
9477
|
|
|
9330
9478
|
Object.defineProperty(exports, "COLORS", {
|
|
9331
9479
|
enumerable: true,
|
|
@@ -9372,6 +9520,7 @@ exports.Dropdown = Dropdown;
|
|
|
9372
9520
|
exports.EmptyCart = EmptyCart;
|
|
9373
9521
|
exports.FAB = FAB;
|
|
9374
9522
|
exports.FadingBase = FadingBase;
|
|
9523
|
+
exports.FeatureGrid = FeatureGrid;
|
|
9375
9524
|
exports.Field = Field;
|
|
9376
9525
|
exports.FieldHelpIcon = FieldHelpIcon;
|
|
9377
9526
|
exports.FieldLabel = FieldLabel;
|
|
@@ -9385,6 +9534,7 @@ exports.Grid = Grid2;
|
|
|
9385
9534
|
exports.GridCard = GridCard;
|
|
9386
9535
|
exports.Icon = icons_default;
|
|
9387
9536
|
exports.IconButton = IconButton;
|
|
9537
|
+
exports.Jumbotron = Jumbotron;
|
|
9388
9538
|
exports.Kbd = Kbd;
|
|
9389
9539
|
exports.List = List2;
|
|
9390
9540
|
exports.LoadingSpinner = LoadingSpinner;
|
|
@@ -9399,6 +9549,7 @@ exports.OtpInput = OtpInput;
|
|
|
9399
9549
|
exports.Password = Password;
|
|
9400
9550
|
exports.PopConfirm = PopConfirm;
|
|
9401
9551
|
exports.Portal = Portal;
|
|
9552
|
+
exports.PricingPlans = PricingPlans;
|
|
9402
9553
|
exports.RadioGroup = RadioGroup;
|
|
9403
9554
|
exports.Rating = Rating;
|
|
9404
9555
|
exports.ScalableContainer = ScalableContainer;
|
|
@@ -9419,6 +9570,7 @@ exports.Table = Table;
|
|
|
9419
9570
|
exports.Tabs = Tabs_default;
|
|
9420
9571
|
exports.TagsInput = TagsInput;
|
|
9421
9572
|
exports.Temporal = DatePicker;
|
|
9573
|
+
exports.Testimonials = Testimonials;
|
|
9422
9574
|
exports.TextArea = TextArea;
|
|
9423
9575
|
exports.TextInput = TextInput;
|
|
9424
9576
|
exports.ThemeProvider = ThemeProvider;
|