@almanaclabs/blaze-ui 0.10.0 → 0.12.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.
Files changed (106) hide show
  1. package/dist/components/app-shell/app-shell.d.ts +90 -0
  2. package/dist/components/app-shell/app-shell.d.ts.map +1 -0
  3. package/dist/components/app-shell/app-shell.js +149 -0
  4. package/dist/components/app-shell/index.d.ts +2 -0
  5. package/dist/components/app-shell/index.d.ts.map +1 -0
  6. package/dist/components/approval-card/approval-card.d.ts +19 -0
  7. package/dist/components/approval-card/approval-card.d.ts.map +1 -0
  8. package/dist/components/approval-card/approval-card.js +42 -0
  9. package/dist/components/approval-card/index.d.ts +2 -0
  10. package/dist/components/approval-card/index.d.ts.map +1 -0
  11. package/dist/components/badge/badge.d.ts +1 -1
  12. package/dist/components/chat-bar/chat-bar.d.ts +26 -0
  13. package/dist/components/chat-bar/chat-bar.d.ts.map +1 -0
  14. package/dist/components/chat-bar/chat-bar.js +58 -0
  15. package/dist/components/chat-bar/index.d.ts +2 -0
  16. package/dist/components/chat-bar/index.d.ts.map +1 -0
  17. package/dist/components/dense-table/dense-table.d.ts +36 -0
  18. package/dist/components/dense-table/dense-table.d.ts.map +1 -0
  19. package/dist/components/dense-table/dense-table.js +41 -0
  20. package/dist/components/dense-table/index.d.ts +2 -0
  21. package/dist/components/dense-table/index.d.ts.map +1 -0
  22. package/dist/components/editable-text/editable-text.d.ts +26 -0
  23. package/dist/components/editable-text/editable-text.d.ts.map +1 -0
  24. package/dist/components/editable-text/editable-text.js +82 -0
  25. package/dist/components/editable-text/index.d.ts +2 -0
  26. package/dist/components/editable-text/index.d.ts.map +1 -0
  27. package/dist/components/face-stack-button/face-stack-button.d.ts +31 -0
  28. package/dist/components/face-stack-button/face-stack-button.d.ts.map +1 -0
  29. package/dist/components/face-stack-button/face-stack-button.js +47 -0
  30. package/dist/components/face-stack-button/index.d.ts +2 -0
  31. package/dist/components/face-stack-button/index.d.ts.map +1 -0
  32. package/dist/components/filter-chips/filter-chips.d.ts +23 -0
  33. package/dist/components/filter-chips/filter-chips.d.ts.map +1 -0
  34. package/dist/components/filter-chips/filter-chips.js +34 -0
  35. package/dist/components/filter-chips/index.d.ts +2 -0
  36. package/dist/components/filter-chips/index.d.ts.map +1 -0
  37. package/dist/components/goal-card/goal-card.d.ts +51 -0
  38. package/dist/components/goal-card/goal-card.d.ts.map +1 -0
  39. package/dist/components/goal-card/goal-card.js +109 -0
  40. package/dist/components/goal-card/index.d.ts +2 -0
  41. package/dist/components/goal-card/index.d.ts.map +1 -0
  42. package/dist/components/input-group/input-group.d.ts +1 -1
  43. package/dist/components/item/item.d.ts +1 -1
  44. package/dist/components/item/item.d.ts.map +1 -1
  45. package/dist/components/item/item.js +3 -2
  46. package/dist/components/media-thumbnail/index.d.ts +2 -0
  47. package/dist/components/media-thumbnail/index.d.ts.map +1 -0
  48. package/dist/components/media-thumbnail/media-thumbnail.d.ts +21 -0
  49. package/dist/components/media-thumbnail/media-thumbnail.d.ts.map +1 -0
  50. package/dist/components/media-thumbnail/media-thumbnail.js +50 -0
  51. package/dist/components/metric-tile/index.d.ts +2 -0
  52. package/dist/components/metric-tile/index.d.ts.map +1 -0
  53. package/dist/components/metric-tile/metric-tile.d.ts +34 -0
  54. package/dist/components/metric-tile/metric-tile.d.ts.map +1 -0
  55. package/dist/components/metric-tile/metric-tile.js +75 -0
  56. package/dist/components/page-header/index.d.ts +2 -0
  57. package/dist/components/page-header/index.d.ts.map +1 -0
  58. package/dist/components/page-header/page-header.d.ts +16 -0
  59. package/dist/components/page-header/page-header.d.ts.map +1 -0
  60. package/dist/components/page-header/page-header.js +38 -0
  61. package/dist/components/platform-avatar/index.d.ts +2 -0
  62. package/dist/components/platform-avatar/index.d.ts.map +1 -0
  63. package/dist/components/platform-avatar/platform-avatar.d.ts +23 -0
  64. package/dist/components/platform-avatar/platform-avatar.d.ts.map +1 -0
  65. package/dist/components/platform-avatar/platform-avatar.js +54 -0
  66. package/dist/components/platform-icon/index.d.ts +2 -0
  67. package/dist/components/platform-icon/index.d.ts.map +1 -0
  68. package/dist/components/platform-icon/platform-icon.d.ts +38 -0
  69. package/dist/components/platform-icon/platform-icon.d.ts.map +1 -0
  70. package/dist/components/platform-icon/platform-icon.js +272 -0
  71. package/dist/components/sidebar/sidebar.js +19 -19
  72. package/dist/components/signal-strip/index.d.ts +2 -0
  73. package/dist/components/signal-strip/index.d.ts.map +1 -0
  74. package/dist/components/signal-strip/signal-strip.d.ts +34 -0
  75. package/dist/components/signal-strip/signal-strip.d.ts.map +1 -0
  76. package/dist/components/signal-strip/signal-strip.js +84 -0
  77. package/dist/components/source-avatar/index.d.ts +2 -0
  78. package/dist/components/source-avatar/index.d.ts.map +1 -0
  79. package/dist/components/source-avatar/source-avatar.d.ts +16 -0
  80. package/dist/components/source-avatar/source-avatar.d.ts.map +1 -0
  81. package/dist/components/source-avatar/source-avatar.js +15 -0
  82. package/dist/components/stacked-bar-chart/index.d.ts +2 -0
  83. package/dist/components/stacked-bar-chart/index.d.ts.map +1 -0
  84. package/dist/components/stacked-bar-chart/stacked-bar-chart.d.ts +80 -0
  85. package/dist/components/stacked-bar-chart/stacked-bar-chart.d.ts.map +1 -0
  86. package/dist/components/stacked-bar-chart/stacked-bar-chart.js +240 -0
  87. package/dist/components/state-banner/index.d.ts +2 -0
  88. package/dist/components/state-banner/index.d.ts.map +1 -0
  89. package/dist/components/state-banner/state-banner.d.ts +32 -0
  90. package/dist/components/state-banner/state-banner.d.ts.map +1 -0
  91. package/dist/components/state-banner/state-banner.js +70 -0
  92. package/dist/components/status-indicator/index.d.ts +2 -0
  93. package/dist/components/status-indicator/index.d.ts.map +1 -0
  94. package/dist/components/status-indicator/status-indicator.d.ts +21 -0
  95. package/dist/components/status-indicator/status-indicator.d.ts.map +1 -0
  96. package/dist/components/status-indicator/status-indicator.js +30 -0
  97. package/dist/components/suggest-chips/index.d.ts +2 -0
  98. package/dist/components/suggest-chips/index.d.ts.map +1 -0
  99. package/dist/components/suggest-chips/suggest-chips.d.ts +13 -0
  100. package/dist/components/suggest-chips/suggest-chips.d.ts.map +1 -0
  101. package/dist/components/suggest-chips/suggest-chips.js +24 -0
  102. package/dist/index.d.ts +20 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +68 -49
  105. package/package.json +1 -1
  106. package/src/styles/globals.css +40 -0
@@ -0,0 +1,38 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import "react";
3
+ import { jsx as t, jsxs as n } from "react/jsx-runtime";
4
+ //#region src/components/page-header/page-header.tsx
5
+ function r({ title: r, subtitle: i, eyebrow: a, actions: o, display: s = !1, className: c, ...l }) {
6
+ return /* @__PURE__ */ n("header", {
7
+ "data-slot": "page-header",
8
+ className: e("flex items-start justify-between gap-6", c),
9
+ ...l,
10
+ children: [/* @__PURE__ */ n("div", {
11
+ "data-slot": "page-header-content",
12
+ className: "min-w-0",
13
+ children: [
14
+ a ? /* @__PURE__ */ t("p", {
15
+ "data-slot": "page-header-eyebrow",
16
+ className: "type-meta mb-1.5 font-medium text-muted-foreground",
17
+ children: a
18
+ }) : null,
19
+ /* @__PURE__ */ t("h1", {
20
+ "data-slot": "page-header-title",
21
+ className: s ? "type-display-title" : "type-page-title",
22
+ children: r
23
+ }),
24
+ i ? /* @__PURE__ */ t("p", {
25
+ "data-slot": "page-header-subtitle",
26
+ className: "type-lead mt-2 max-w-[760px] text-muted-foreground",
27
+ children: i
28
+ }) : null
29
+ ]
30
+ }), o ? /* @__PURE__ */ t("div", {
31
+ "data-slot": "page-header-actions",
32
+ className: "flex flex-none items-center gap-2",
33
+ children: o
34
+ }) : null]
35
+ });
36
+ }
37
+ //#endregion
38
+ export { r as PageHeader };
@@ -0,0 +1,2 @@
1
+ export * from './platform-avatar';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/platform-avatar/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { Avatar } from '../avatar';
2
+ import { Platform } from '../platform-icon/platform-icon';
3
+ import * as React from 'react';
4
+ type PlatformAvatarProps = Omit<React.ComponentProps<typeof Avatar>, 'size' | 'children' | 'style'> & {
5
+ style?: React.CSSProperties;
6
+ /** Profile photo. Without one, or while it loads, the first letter of `name` shows. */
7
+ src?: string | null;
8
+ /** Account or person name; its first letter is the fallback. A leading @ is skipped. */
9
+ name?: string;
10
+ /** Text alternative for the photo. Empty by default, since a name usually sits beside it. */
11
+ alt?: string;
12
+ /** Diameter in pixels. The scorecard uses 18, 20, 24, 26 and 32. */
13
+ size?: number;
14
+ /** Shows the platform's mark in a small badge at the bottom-right corner. */
15
+ platform?: Platform;
16
+ /** Names the badge's platform for assistive tech when no visible text says it. */
17
+ platformLabel?: string | boolean;
18
+ /** `cover` fills the circle with a photo; `contain` insets a logo on the card surface with a hairline ring. */
19
+ fit?: 'cover' | 'contain';
20
+ };
21
+ declare function PlatformAvatar({ src, name, alt, size, platform, platformLabel, fit, className, style, ...props }: PlatformAvatarProps): React.JSX.Element;
22
+ export { PlatformAvatar, type PlatformAvatarProps };
23
+ //# sourceMappingURL=platform-avatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-avatar.d.ts","sourceRoot":"","sources":["../../../src/components/platform-avatar/platform-avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,EAAE,MAAM,EAA+B,MAAM,WAAW,CAAA;AAC/D,OAAO,EAGL,KAAK,QAAQ,EACd,MAAM,gCAAgC,CAAA;AAEvC,KAAK,mBAAmB,GAAG,IAAI,CAC7B,KAAK,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,EACnC,MAAM,GAAG,UAAU,GAAG,OAAO,CAC9B,GAAG;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,uFAAuF;IACvF,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6FAA6F;IAC7F,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,QAAQ,CAAA;IACnB,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAChC,+GAA+G;IAC/G,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC1B,CAAA;AAWD,iBAAS,cAAc,CAAC,EACtB,GAAG,EACH,IAAI,EACJ,GAAQ,EACR,IAAS,EACT,QAAQ,EACR,aAAa,EACb,GAAa,EACb,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,mBAAmB,qBAkDrB;AAED,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import { Avatar as t, AvatarFallback as n, AvatarImage as r } from "../avatar/avatar.js";
3
+ import { PLATFORM_LABEL as i, PlatformIcon as a } from "../platform-icon/platform-icon.js";
4
+ import "react";
5
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
6
+ //#region src/components/platform-avatar/platform-avatar.tsx
7
+ function c(e) {
8
+ return (e ?? "").replace(/^@/, "").charAt(0).toUpperCase();
9
+ }
10
+ function l(e) {
11
+ return Math.max(10, Math.round(e * .45));
12
+ }
13
+ function u({ src: u, name: d, alt: f = "", size: p = 24, platform: m, platformLabel: h, fit: g = "cover", className: _, style: v, ...y }) {
14
+ let b = l(p), x = m && h ? typeof h == "string" ? h : i[m] : void 0;
15
+ return /* @__PURE__ */ s(t, {
16
+ "data-platform": m,
17
+ "data-fit": g,
18
+ className: e("bg-surface-subtle after:hidden", g === "contain" && "bg-card ring-1 ring-border-subtle", _),
19
+ style: {
20
+ width: p,
21
+ height: p,
22
+ "--platform-avatar-size": `${p}px`,
23
+ ...v
24
+ },
25
+ ...y,
26
+ children: [
27
+ u ? /* @__PURE__ */ o(r, {
28
+ src: u,
29
+ alt: f,
30
+ className: e(g === "contain" && "bg-card object-contain p-0.5")
31
+ }) : null,
32
+ /* @__PURE__ */ o(n, {
33
+ "aria-hidden": "true",
34
+ className: "bg-surface-subtle font-medium text-muted-foreground text-[length:calc(var(--platform-avatar-size)*0.45)]",
35
+ children: c(d)
36
+ }),
37
+ m ? /* @__PURE__ */ o("span", {
38
+ "data-slot": "platform-avatar-badge",
39
+ className: "absolute -right-0.5 -bottom-0.5 z-10 flex items-center justify-center rounded-full bg-card ring-2 ring-card",
40
+ style: {
41
+ width: b,
42
+ height: b
43
+ },
44
+ children: /* @__PURE__ */ o(a, {
45
+ platform: m,
46
+ size: b - 2,
47
+ title: x
48
+ })
49
+ }) : null
50
+ ]
51
+ });
52
+ }
53
+ //#endregion
54
+ export { u as PlatformAvatar };
@@ -0,0 +1,2 @@
1
+ export * from './platform-icon';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/platform-icon/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,38 @@
1
+ import * as React from 'react';
2
+ type Platform = 'x' | 'threads' | 'instagram' | 'facebook' | 'bluesky' | 'linkedin' | 'tiktok' | 'youtube' | 'google' | 'beehiiv' | 'reddit' | 'gmail' | 'outlook' | 'microsoft' | 'email' | 'phone';
3
+ declare const PLATFORMS: readonly Platform[];
4
+ declare const PLATFORM_COLOR: Record<Platform, string>;
5
+ declare const PLATFORM_LABEL: Record<Platform, string>;
6
+ type BrandIconProps = Omit<React.SVGProps<SVGSVGElement>, 'ref' | 'stroke'> & {
7
+ size?: number | string;
8
+ stroke?: number | string;
9
+ title?: string;
10
+ };
11
+ type BrandIcon = React.ForwardRefExoticComponent<BrandIconProps & React.RefAttributes<SVGSVGElement>>;
12
+ declare const BrandX: BrandIcon;
13
+ declare const BrandThreads: BrandIcon;
14
+ declare const BrandFacebook: BrandIcon;
15
+ declare const BrandLinkedin: BrandIcon;
16
+ declare const BrandTiktok: BrandIcon;
17
+ declare const BrandYoutube: BrandIcon;
18
+ declare const BrandReddit: BrandIcon;
19
+ declare const BrandBluesky: BrandIcon;
20
+ declare const BrandInstagram: BrandIcon;
21
+ declare const BrandGoogle: BrandIcon;
22
+ declare const BrandBeehiiv: BrandIcon;
23
+ declare const BrandGmail: BrandIcon;
24
+ declare const BrandOutlook: BrandIcon;
25
+ declare const BrandMicrosoft: BrandIcon;
26
+ declare const BrandEmail: BrandIcon;
27
+ declare const BrandPhone: BrandIcon;
28
+ declare const PLATFORM_ICON: Record<Platform, BrandIcon>;
29
+ type PlatformIconProps = Omit<BrandIconProps, 'size'> & {
30
+ platform: Platform;
31
+ /** Rendered width and height in pixels. */
32
+ size?: number;
33
+ /** Names the mark for assistive tech; omit when a visible label says the platform. */
34
+ title?: string;
35
+ };
36
+ declare function PlatformIcon({ platform, size, className, style, ...props }: PlatformIconProps): React.JSX.Element;
37
+ export { PlatformIcon, PLATFORMS, PLATFORM_COLOR, PLATFORM_ICON, PLATFORM_LABEL, BrandX, BrandThreads, BrandInstagram, BrandFacebook, BrandBluesky, BrandLinkedin, BrandTiktok, BrandYoutube, BrandGoogle, BrandBeehiiv, BrandReddit, BrandGmail, BrandOutlook, BrandMicrosoft, BrandEmail, BrandPhone, type BrandIcon, type BrandIconProps, type Platform, type PlatformIconProps, };
38
+ //# sourceMappingURL=platform-icon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-icon.d.ts","sourceRoot":"","sources":["../../../src/components/platform-icon/platform-icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAyB9B,KAAK,QAAQ,GACT,GAAG,GACH,SAAS,GACT,WAAW,GACX,UAAU,GACV,SAAS,GACT,UAAU,GACV,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,OAAO,GACP,SAAS,GACT,WAAW,GACX,OAAO,GACP,OAAO,CAAA;AAEX,QAAA,MAAM,SAAS,EAAE,SAAS,QAAQ,EAiBjC,CAAA;AAID,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAiB5C,CAAA;AAED,QAAA,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAiB5C,CAAA;AAMD,KAAK,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,GAAG;IAC5E,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,KAAK,SAAS,GAAG,KAAK,CAAC,yBAAyB,CAC9C,cAAc,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CACpD,CAAA;AAqCD,QAAA,MAAM,MAAM,WAAkD,CAAA;AAC9D,QAAA,MAAM,YAAY,WAA8D,CAAA;AAChF,QAAA,MAAM,aAAa,WAIlB,CAAA;AACD,QAAA,MAAM,aAAa,WAIlB,CAAA;AACD,QAAA,MAAM,WAAW,WAIhB,CAAA;AACD,QAAA,MAAM,YAAY,WAIjB,CAAA;AACD,QAAA,MAAM,WAAW,WAA2D,CAAA;AAE5E,QAAA,MAAM,YAAY,WAKjB,CAAA;AAmCD,QAAA,MAAM,cAAc,WAgBlB,CAAA;AAGF,QAAA,MAAM,WAAW,WAmBf,CAAA;AAGF,QAAA,MAAM,YAAY,WAYhB,CAAA;AAGF,QAAA,MAAM,UAAU,WAcd,CAAA;AAGF,QAAA,MAAM,YAAY,WA4BhB,CAAA;AAGF,QAAA,MAAM,cAAc,WAOlB,CAAA;AAGF,QAAA,MAAM,UAAU,WAAkD,CAAA;AAClE,QAAA,MAAM,UAAU,WAAmD,CAAA;AAEnE,QAAA,MAAM,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,CAiB9C,CAAA;AAED,KAAK,iBAAiB,GAAG,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG;IACtD,QAAQ,EAAE,QAAQ,CAAA;IAClB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,iBAAS,YAAY,CAAC,EACpB,QAAQ,EACR,IAAS,EACT,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,iBAAiB,qBAanB;AAED,OAAO,EACL,YAAY,EACZ,SAAS,EACT,cAAc,EACd,aAAa,EACb,cAAc,EACd,MAAM,EACN,YAAY,EACZ,cAAc,EACd,aAAa,EACb,YAAY,EACZ,aAAa,EACb,WAAW,EACX,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,WAAW,EACX,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,UAAU,EACV,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,iBAAiB,GACvB,CAAA"}
@@ -0,0 +1,272 @@
1
+ import { cn as e } from "../../lib/utils.js";
2
+ import * as t from "react";
3
+ import { Fragment as n, jsx as r, jsxs as i } from "react/jsx-runtime";
4
+ import { IconBrandBluesky as a, IconBrandFacebookFilled as o, IconBrandLinkedinFilled as s, IconBrandReddit as c, IconBrandThreads as l, IconBrandTiktokFilled as u, IconBrandXFilled as d, IconBrandYoutubeFilled as f, IconMail as p, IconPhone as m } from "@tabler/icons-react";
5
+ //#region src/components/platform-icon/platform-icon.tsx
6
+ var h = [
7
+ "x",
8
+ "threads",
9
+ "instagram",
10
+ "facebook",
11
+ "bluesky",
12
+ "linkedin",
13
+ "tiktok",
14
+ "youtube",
15
+ "google",
16
+ "beehiiv",
17
+ "reddit",
18
+ "gmail",
19
+ "outlook",
20
+ "microsoft",
21
+ "email",
22
+ "phone"
23
+ ], g = "var(--foreground, #000000)", _ = {
24
+ x: g,
25
+ threads: g,
26
+ instagram: "#E1306C",
27
+ facebook: "#1877F2",
28
+ bluesky: "#1185FE",
29
+ linkedin: "#0A66C2",
30
+ tiktok: g,
31
+ youtube: "#FF0000",
32
+ google: "#4285F4",
33
+ beehiiv: "#FFC300",
34
+ reddit: "#FF4500",
35
+ gmail: "#EA4335",
36
+ outlook: "#0078D4",
37
+ microsoft: "#00A4EF",
38
+ email: g,
39
+ phone: g
40
+ }, v = {
41
+ x: "X",
42
+ threads: "Threads",
43
+ instagram: "Instagram",
44
+ facebook: "Facebook",
45
+ bluesky: "Bluesky",
46
+ linkedin: "LinkedIn",
47
+ tiktok: "TikTok",
48
+ youtube: "YouTube",
49
+ google: "Google",
50
+ beehiiv: "beehiiv",
51
+ reddit: "Reddit",
52
+ gmail: "Gmail",
53
+ outlook: "Outlook",
54
+ microsoft: "Microsoft",
55
+ email: "Email",
56
+ phone: "Phone"
57
+ };
58
+ function y(e) {
59
+ return e ? {
60
+ role: "img",
61
+ "aria-label": e
62
+ } : { "aria-hidden": !0 };
63
+ }
64
+ function b(e, n, i, a) {
65
+ let o = e, s = t.forwardRef(({ style: e, title: t, ...s }, c) => /* @__PURE__ */ r(o, {
66
+ ref: c,
67
+ "data-platform-mark": i,
68
+ ...a ? { fill: a } : {},
69
+ ...y(t),
70
+ ...s,
71
+ style: {
72
+ ...e,
73
+ color: n
74
+ }
75
+ }));
76
+ return s.displayName = `Brand${i}`, s;
77
+ }
78
+ var x = b(d, _.x, "X"), S = b(l, _.threads, "Threads"), C = b(o, _.facebook, "Facebook"), w = b(s, _.linkedin, "Linkedin"), T = b(u, _.tiktok, "Tiktok"), E = b(f, _.youtube, "Youtube"), D = b(c, _.reddit, "Reddit"), O = b(a, _.bluesky, "Bluesky", _.bluesky);
79
+ function k(e, n, i) {
80
+ let a = t.forwardRef(({ size: a = 24, title: o, className: s, style: c, ...l }, u) => {
81
+ let d = `${e.toLowerCase()}${t.useId().replace(/:/g, "")}`;
82
+ return /* @__PURE__ */ r("svg", {
83
+ ref: u,
84
+ xmlns: "http://www.w3.org/2000/svg",
85
+ viewBox: n,
86
+ width: a,
87
+ height: a,
88
+ "data-platform-mark": e,
89
+ className: s,
90
+ style: c,
91
+ ...y(o),
92
+ ...l,
93
+ children: i(d)
94
+ });
95
+ });
96
+ return a.displayName = `Brand${e}`, a;
97
+ }
98
+ var A = k("Instagram", "0 0 24 24", (e) => /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ r("defs", { children: /* @__PURE__ */ i("radialGradient", {
99
+ id: e,
100
+ cx: "0.3",
101
+ cy: "1.07",
102
+ r: "1.2",
103
+ children: [
104
+ /* @__PURE__ */ r("stop", {
105
+ offset: "0",
106
+ stopColor: "#FFD776"
107
+ }),
108
+ /* @__PURE__ */ r("stop", {
109
+ offset: "0.25",
110
+ stopColor: "#F3A554"
111
+ }),
112
+ /* @__PURE__ */ r("stop", {
113
+ offset: "0.5",
114
+ stopColor: "#E1306C"
115
+ }),
116
+ /* @__PURE__ */ r("stop", {
117
+ offset: "0.8",
118
+ stopColor: "#C13584"
119
+ }),
120
+ /* @__PURE__ */ r("stop", {
121
+ offset: "1",
122
+ stopColor: "#833AB4"
123
+ })
124
+ ]
125
+ }) }), /* @__PURE__ */ r("path", {
126
+ fill: `url(#${e})`,
127
+ d: "M16 3a5 5 0 0 1 5 5v8a5 5 0 0 1 -5 5h-8a5 5 0 0 1 -5 -5v-8a5 5 0 0 1 5 -5zm-4 5a4 4 0 0 0 -3.995 3.8l-.005 .2a4 4 0 1 0 4 -4m4.5 -1.5a1 1 0 0 0 -.993 .883l-.007 .127a1 1 0 0 0 1.993 .117l.007 -.127a1 1 0 0 0 -1 -1"
128
+ })] })), j = k("Google", "-2 -2 52 52", () => /* @__PURE__ */ i(n, { children: [
129
+ /* @__PURE__ */ r("path", {
130
+ fill: "#EA4335",
131
+ d: "M24 9.5c3.54 0 6.71 1.22 9.21 3.6l6.85-6.85C35.9 2.38 30.47 0 24 0 14.62 0 6.51 5.38 2.56 13.22l7.98 6.19C12.43 13.72 17.74 9.5 24 9.5z"
132
+ }),
133
+ /* @__PURE__ */ r("path", {
134
+ fill: "#4285F4",
135
+ d: "M46.98 24.55c0-1.57-.15-3.09-.38-4.55H24v9.02h12.94c-.58 2.96-2.26 5.48-4.78 7.18l7.73 6c4.51-4.18 7.09-10.36 7.09-17.65z"
136
+ }),
137
+ /* @__PURE__ */ r("path", {
138
+ fill: "#FBBC05",
139
+ d: "M10.53 28.59c-.48-1.45-.76-2.99-.76-4.59s.27-3.14.76-4.59l-7.98-6.19C.92 16.46 0 20.12 0 24c0 3.88.92 7.54 2.56 10.78l7.97-6.19z"
140
+ }),
141
+ /* @__PURE__ */ r("path", {
142
+ fill: "#34A853",
143
+ d: "M24 48c6.48 0 11.93-2.13 15.89-5.81l-7.73-6c-2.15 1.45-4.92 2.3-8.16 2.3-6.26 0-11.57-4.22-13.47-9.91l-7.98 6.19C6.51 42.62 14.62 48 24 48z"
144
+ })
145
+ ] })), M = k("Beehiiv", "0 0 24 24", () => /* @__PURE__ */ i(n, { children: [/* @__PURE__ */ r("rect", {
146
+ x: "2",
147
+ y: "2",
148
+ width: "20",
149
+ height: "20",
150
+ rx: "5",
151
+ fill: _.beehiiv
152
+ }), /* @__PURE__ */ r("path", {
153
+ fill: "#111111",
154
+ d: "M12 6.5l4.76 2.75v5.5L12 17.5l-4.76-2.75v-5.5z"
155
+ })] })), N = k("Gmail", "-2 -7 56 56", () => /* @__PURE__ */ i(n, { children: [
156
+ /* @__PURE__ */ r("path", {
157
+ fill: "#4285F4",
158
+ d: "M3.5 42h8V22.6L0 13.9v24.6C0 40.4 1.6 42 3.5 42z"
159
+ }),
160
+ /* @__PURE__ */ r("path", {
161
+ fill: "#34A853",
162
+ d: "M40.5 42h8c1.9 0 3.5-1.6 3.5-3.5V13.9l-11.5 8.6z"
163
+ }),
164
+ /* @__PURE__ */ r("path", {
165
+ fill: "#FBBC04",
166
+ d: "M40.5 7.6v14.9L52 13.9V9.3c0-4.3-4.9-6.7-8.3-4.2z"
167
+ }),
168
+ /* @__PURE__ */ r("path", {
169
+ fill: "#EA4335",
170
+ d: "M11.5 22.6V7.6L26 18.5l14.5-10.9v14.9L26 33.4z"
171
+ }),
172
+ /* @__PURE__ */ r("path", {
173
+ fill: "#C5221F",
174
+ d: "M0 9.3v4.6l11.5 8.6V7.6L8.3 5.2C4.9 2.6 0 5.1 0 9.3z"
175
+ })
176
+ ] })), P = k("Outlook", "0 0 24 24", () => /* @__PURE__ */ i(n, { children: [
177
+ /* @__PURE__ */ r("rect", {
178
+ x: "8",
179
+ y: "5",
180
+ width: "14",
181
+ height: "14",
182
+ rx: "2",
183
+ fill: "#28A8EA"
184
+ }),
185
+ /* @__PURE__ */ r("path", {
186
+ d: "M8.5 8.5l6.75 4.5 6.25-4.5",
187
+ fill: "none",
188
+ stroke: "#FFFFFF",
189
+ strokeWidth: "1.2",
190
+ strokeLinejoin: "round"
191
+ }),
192
+ /* @__PURE__ */ r("rect", {
193
+ x: "2",
194
+ y: "3",
195
+ width: "12",
196
+ height: "18",
197
+ rx: "2",
198
+ fill: _.outlook
199
+ }),
200
+ /* @__PURE__ */ r("ellipse", {
201
+ cx: "8",
202
+ cy: "12",
203
+ rx: "2.9",
204
+ ry: "3.6",
205
+ fill: "none",
206
+ stroke: "#FFFFFF",
207
+ strokeWidth: "1.8"
208
+ })
209
+ ] })), F = k("Microsoft", "0 0 24 24", () => /* @__PURE__ */ i(n, { children: [
210
+ /* @__PURE__ */ r("rect", {
211
+ x: "2.5",
212
+ y: "2.5",
213
+ width: "9",
214
+ height: "9",
215
+ fill: "#F25022"
216
+ }),
217
+ /* @__PURE__ */ r("rect", {
218
+ x: "12.5",
219
+ y: "2.5",
220
+ width: "9",
221
+ height: "9",
222
+ fill: "#7FBA00"
223
+ }),
224
+ /* @__PURE__ */ r("rect", {
225
+ x: "2.5",
226
+ y: "12.5",
227
+ width: "9",
228
+ height: "9",
229
+ fill: "#00A4EF"
230
+ }),
231
+ /* @__PURE__ */ r("rect", {
232
+ x: "12.5",
233
+ y: "12.5",
234
+ width: "9",
235
+ height: "9",
236
+ fill: "#FFB900"
237
+ })
238
+ ] })), I = b(p, _.email, "Email"), L = b(m, _.phone, "Phone"), R = {
239
+ x,
240
+ threads: S,
241
+ instagram: A,
242
+ facebook: C,
243
+ bluesky: O,
244
+ linkedin: w,
245
+ tiktok: T,
246
+ youtube: E,
247
+ google: j,
248
+ beehiiv: M,
249
+ reddit: D,
250
+ gmail: N,
251
+ outlook: P,
252
+ microsoft: F,
253
+ email: I,
254
+ phone: L
255
+ };
256
+ function z({ platform: t, size: n = 16, className: i, style: a, ...o }) {
257
+ let s = R[t];
258
+ return /* @__PURE__ */ r(s, {
259
+ "data-slot": "platform-icon",
260
+ "data-platform": t,
261
+ size: n,
262
+ className: e("shrink-0", i),
263
+ style: {
264
+ width: n,
265
+ height: n,
266
+ ...a
267
+ },
268
+ ...o
269
+ });
270
+ }
271
+ //#endregion
272
+ export { M as BrandBeehiiv, O as BrandBluesky, I as BrandEmail, C as BrandFacebook, N as BrandGmail, j as BrandGoogle, A as BrandInstagram, w as BrandLinkedin, F as BrandMicrosoft, P as BrandOutlook, L as BrandPhone, D as BrandReddit, S as BrandThreads, T as BrandTiktok, x as BrandX, E as BrandYoutube, h as PLATFORMS, _ as PLATFORM_COLOR, R as PLATFORM_ICON, v as PLATFORM_LABEL, z as PlatformIcon };
@@ -3,8 +3,8 @@ import { cn as e } from "../../lib/utils.js";
3
3
  import { Button as t } from "../button/button.js";
4
4
  import { Separator as n } from "../separator/separator.js";
5
5
  import { Input as r } from "../input/input.js";
6
- import { Sheet as i, SheetContent as a, SheetDescription as o, SheetHeader as s, SheetTitle as c } from "../sheet/sheet.js";
7
- import { useIsMobile as l } from "../../hooks/use-mobile.js";
6
+ import { useIsMobile as i } from "../../hooks/use-mobile.js";
7
+ import { Sheet as a, SheetContent as o, SheetDescription as s, SheetHeader as c, SheetTitle as l } from "../sheet/sheet.js";
8
8
  import { Skeleton as u } from "../skeleton/skeleton.js";
9
9
  import { Tooltip as d, TooltipContent as f, TooltipTrigger as p } from "../tooltip/tooltip.js";
10
10
  import * as m from "react";
@@ -20,12 +20,12 @@ function O() {
20
20
  if (!e) throw Error("useSidebar must be used within a SidebarProvider.");
21
21
  return e;
22
22
  }
23
- function k({ defaultOpen: t = !0, open: n, onOpenChange: r, className: i, style: a, children: o, ...s }) {
24
- let c = l(), [u, d] = m.useState(!1), [f, p] = m.useState(t), h = n ?? f, _ = m.useCallback((e) => {
23
+ function k({ defaultOpen: t = !0, open: n, onOpenChange: r, className: a, style: o, children: s, ...c }) {
24
+ let l = i(), [u, d] = m.useState(!1), [f, p] = m.useState(t), h = n ?? f, _ = m.useCallback((e) => {
25
25
  let t = typeof e == "function" ? e(h) : e;
26
26
  r ? r(t) : p(t), document.cookie = `${x}=${t}; path=/; max-age=${S}`;
27
- }, [r, h]), v = m.useCallback(() => c ? d((e) => !e) : _((e) => !e), [
28
- c,
27
+ }, [r, h]), v = m.useCallback(() => l ? d((e) => !e) : _((e) => !e), [
28
+ l,
29
29
  _,
30
30
  d
31
31
  ]);
@@ -39,7 +39,7 @@ function k({ defaultOpen: t = !0, open: n, onOpenChange: r, className: i, style:
39
39
  state: y,
40
40
  open: h,
41
41
  setOpen: _,
42
- isMobile: c,
42
+ isMobile: l,
43
43
  openMobile: u,
44
44
  setOpenMobile: d,
45
45
  toggleSidebar: v
@@ -47,7 +47,7 @@ function k({ defaultOpen: t = !0, open: n, onOpenChange: r, className: i, style:
47
47
  y,
48
48
  h,
49
49
  _,
50
- c,
50
+ l,
51
51
  u,
52
52
  d,
53
53
  v
@@ -59,26 +59,26 @@ function k({ defaultOpen: t = !0, open: n, onOpenChange: r, className: i, style:
59
59
  style: {
60
60
  "--sidebar-width": C,
61
61
  "--sidebar-width-icon": T,
62
- ...a
62
+ ...o
63
63
  },
64
- className: e("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar", i),
65
- ...s,
66
- children: o
64
+ className: e("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar", a),
65
+ ...c,
66
+ children: s
67
67
  })
68
68
  });
69
69
  }
70
- function A({ side: t = "left", variant: n = "sidebar", collapsible: r = "offcanvas", className: l, children: u, dir: d, ...f }) {
70
+ function A({ side: t = "left", variant: n = "sidebar", collapsible: r = "offcanvas", className: i, children: u, dir: d, ...f }) {
71
71
  let { isMobile: p, state: m, openMobile: h, setOpenMobile: v } = O();
72
72
  return r === "none" ? /* @__PURE__ */ g("div", {
73
73
  "data-slot": "sidebar",
74
- className: e("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground", l),
74
+ className: e("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground", i),
75
75
  ...f,
76
76
  children: u
77
- }) : p ? /* @__PURE__ */ g(i, {
77
+ }) : p ? /* @__PURE__ */ g(a, {
78
78
  open: h,
79
79
  onOpenChange: v,
80
80
  ...f,
81
- children: /* @__PURE__ */ _(a, {
81
+ children: /* @__PURE__ */ _(o, {
82
82
  dir: d,
83
83
  "data-sidebar": "sidebar",
84
84
  "data-slot": "sidebar",
@@ -86,9 +86,9 @@ function A({ side: t = "left", variant: n = "sidebar", collapsible: r = "offcanv
86
86
  className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
87
87
  style: { "--sidebar-width": w },
88
88
  side: t,
89
- children: [/* @__PURE__ */ _(s, {
89
+ children: [/* @__PURE__ */ _(c, {
90
90
  className: "sr-only",
91
- children: [/* @__PURE__ */ g(c, { children: "Sidebar" }), /* @__PURE__ */ g(o, { children: "Displays the mobile sidebar." })]
91
+ children: [/* @__PURE__ */ g(l, { children: "Sidebar" }), /* @__PURE__ */ g(s, { children: "Displays the mobile sidebar." })]
92
92
  }), /* @__PURE__ */ g("div", {
93
93
  className: "flex h-full w-full flex-col",
94
94
  children: u
@@ -107,7 +107,7 @@ function A({ side: t = "left", variant: n = "sidebar", collapsible: r = "offcanv
107
107
  }), /* @__PURE__ */ g("div", {
108
108
  "data-slot": "sidebar-container",
109
109
  "data-side": t,
110
- className: e("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex", n === "floating" || n === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", l),
110
+ className: e("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex", n === "floating" || n === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", i),
111
111
  ...f,
112
112
  children: /* @__PURE__ */ g("div", {
113
113
  "data-sidebar": "sidebar",
@@ -0,0 +1,2 @@
1
+ export * from './signal-strip';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/signal-strip/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,34 @@
1
+ import * as React from 'react';
2
+ export interface SignalDotsProps extends Omit<React.ComponentProps<'span'>, 'children'> {
3
+ /** How many dots are filled. Clamped to 0 through `max`. */
4
+ value: number;
5
+ /** How many dots the strip has. */
6
+ max?: number;
7
+ }
8
+ /** A short run of dots, `value` of `max` filled: a score read at a glance. */
9
+ declare function SignalDots({ value, max, className, 'aria-label': ariaLabel, ...props }: SignalDotsProps): React.JSX.Element;
10
+ export interface SignalStripItem {
11
+ /** The signal's name, such as "Proven". */
12
+ label: React.ReactNode;
13
+ /** Filled dots. Leave out, or pass null, for a signal that has no score. */
14
+ value?: number | null;
15
+ max?: number;
16
+ /** The short reading beside the dots, such as "Strong". */
17
+ note?: React.ReactNode;
18
+ /** The line behind the reading. Shown only in the `detail` layout. */
19
+ description?: React.ReactNode;
20
+ /** Accessible name for the dots when "n of max" is not enough. */
21
+ dotsLabel?: string;
22
+ }
23
+ export interface SignalStripProps extends Omit<React.ComponentProps<'dl'>, 'children'> {
24
+ items: readonly SignalStripItem[];
25
+ /**
26
+ * `inline` wraps the signals in one line; `stacked` aligns them as rows of
27
+ * label, dots and note; `detail` adds each signal's description under it.
28
+ */
29
+ layout?: 'inline' | 'stacked' | 'detail';
30
+ }
31
+ /** A few named signals, each a label, its dots and a short note. */
32
+ declare function SignalStrip({ items, layout, className, ...props }: SignalStripProps): React.JSX.Element;
33
+ export { SignalDots, SignalStrip };
34
+ //# sourceMappingURL=signal-strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-strip.d.ts","sourceRoot":"","sources":["../../../src/components/signal-strip/signal-strip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,MAAM,WAAW,eAAgB,SAAQ,IAAI,CAC3C,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAC5B,UAAU,CACX;IACC,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,mCAAmC;IACnC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,8EAA8E;AAC9E,iBAAS,UAAU,CAAC,EAClB,KAAK,EACL,GAAO,EACP,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,GAAG,KAAK,EACT,EAAE,eAAe,qBAuBjB;AAED,MAAM,WAAW,eAAe;IAC9B,2CAA2C;IAC3C,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,2DAA2D;IAC3D,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,sEAAsE;IACtE,WAAW,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC7B,kEAAkE;IAClE,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,gBAAiB,SAAQ,IAAI,CAC5C,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAC1B,UAAU,CACX;IACC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAA;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;CACzC;AAED,oEAAoE;AACpE,iBAAS,WAAW,CAAC,EACnB,KAAK,EACL,MAAiB,EACjB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,gBAAgB,qBA6FlB;AAED,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,CAAA"}