@epicbagel/saas-kit 1.32.0 → 1.33.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 (217) hide show
  1. package/THIRD_PARTY_NOTICES.md +6 -5
  2. package/dist/chunk-2DCJ2SFU.js +20 -0
  3. package/dist/chunk-2FVFPGP5.js +489 -0
  4. package/dist/{chunk-HTPPNW74.js → chunk-AWCXVYPL.js} +1 -1
  5. package/dist/chunk-B54ZEKBG.cjs +63 -0
  6. package/dist/chunk-CXAFTEEP.cjs +20 -0
  7. package/dist/{chunk-MOJHETNO.cjs → chunk-F3D5HA2F.cjs} +10 -10
  8. package/dist/chunk-G3SF4RRA.cjs +489 -0
  9. package/dist/chunk-HTTRUJQU.cjs +60 -0
  10. package/dist/{chunk-JS6BLIWL.js → chunk-IZF4WCK6.js} +11 -11
  11. package/dist/{chunk-PH2TV7XI.cjs → chunk-KOR2QR7I.cjs} +5 -5
  12. package/dist/{chunk-BGCNGYPL.cjs → chunk-PTMZTP3V.cjs} +2 -2
  13. package/dist/{chunk-6O3DUMF7.js → chunk-REGA2L5S.js} +1 -1
  14. package/dist/{chunk-PNI354BY.cjs → chunk-SL6ECEN6.cjs} +2 -2
  15. package/dist/{chunk-ZGTPNSR7.js → chunk-TS4MC3B3.js} +4 -4
  16. package/dist/chunk-TUQVHPSI.js +60 -0
  17. package/dist/chunk-VWOWPNKT.js +73 -0
  18. package/dist/chunk-XH2I3YJ6.js +63 -0
  19. package/dist/chunk-Y6X6XDHE.cjs +73 -0
  20. package/dist/primitives/accent-theme.cjs +66 -0
  21. package/dist/primitives/accent-theme.d.cts +32 -0
  22. package/dist/primitives/accent-theme.d.ts +32 -0
  23. package/dist/primitives/accent-theme.js +66 -0
  24. package/dist/primitives/activity-feed.cjs +2 -2
  25. package/dist/primitives/activity-feed.js +2 -2
  26. package/dist/primitives/agent-audio-visualizer-bar.cjs +3 -3
  27. package/dist/primitives/agent-audio-visualizer-bar.js +2 -2
  28. package/dist/primitives/alert.d.cts +1 -1
  29. package/dist/primitives/alert.d.ts +1 -1
  30. package/dist/primitives/app-layout.cjs +114 -0
  31. package/dist/primitives/app-layout.d.cts +47 -0
  32. package/dist/primitives/app-layout.d.ts +47 -0
  33. package/dist/primitives/app-layout.js +114 -0
  34. package/dist/primitives/app-sidebar.cjs +52 -0
  35. package/dist/primitives/app-sidebar.d.cts +105 -0
  36. package/dist/primitives/app-sidebar.d.ts +105 -0
  37. package/dist/primitives/app-sidebar.js +52 -0
  38. package/dist/primitives/archive-confirmation-dialog.cjs +2 -2
  39. package/dist/primitives/archive-confirmation-dialog.js +3 -3
  40. package/dist/primitives/back-bar.cjs +37 -0
  41. package/dist/primitives/back-bar.d.cts +31 -0
  42. package/dist/primitives/back-bar.d.ts +31 -0
  43. package/dist/primitives/back-bar.js +37 -0
  44. package/dist/primitives/badge.d.cts +1 -1
  45. package/dist/primitives/badge.d.ts +1 -1
  46. package/dist/primitives/batch-action-bar.cjs +134 -0
  47. package/dist/primitives/batch-action-bar.d.cts +27 -0
  48. package/dist/primitives/batch-action-bar.d.ts +27 -0
  49. package/dist/primitives/batch-action-bar.js +134 -0
  50. package/dist/primitives/board-view-internals.cjs +3 -3
  51. package/dist/primitives/board-view-internals.js +2 -2
  52. package/dist/primitives/board-view.cjs +8 -8
  53. package/dist/primitives/board-view.js +7 -7
  54. package/dist/primitives/brand-mark.cjs +26 -0
  55. package/dist/primitives/brand-mark.d.cts +10 -0
  56. package/dist/primitives/brand-mark.d.ts +10 -0
  57. package/dist/primitives/brand-mark.js +26 -0
  58. package/dist/primitives/bubble.d.cts +1 -1
  59. package/dist/primitives/bubble.d.ts +1 -1
  60. package/dist/primitives/button.d.cts +2 -2
  61. package/dist/primitives/button.d.ts +2 -2
  62. package/dist/primitives/chat.cjs +27 -27
  63. package/dist/primitives/chat.js +21 -21
  64. package/dist/primitives/code-block.cjs +4 -4
  65. package/dist/primitives/code-block.js +3 -3
  66. package/dist/primitives/command.cjs +129 -0
  67. package/dist/primitives/command.d.cts +60 -0
  68. package/dist/primitives/command.d.ts +60 -0
  69. package/dist/primitives/command.js +129 -0
  70. package/dist/primitives/compact-list.cjs +24 -0
  71. package/dist/primitives/compact-list.d.cts +18 -0
  72. package/dist/primitives/compact-list.d.ts +18 -0
  73. package/dist/primitives/compact-list.js +24 -0
  74. package/dist/primitives/connection.cjs +6 -6
  75. package/dist/primitives/connection.js +8 -8
  76. package/dist/primitives/context-bar.cjs +57 -0
  77. package/dist/primitives/context-bar.d.cts +50 -0
  78. package/dist/primitives/context-bar.d.ts +50 -0
  79. package/dist/primitives/context-bar.js +57 -0
  80. package/dist/primitives/copy-button.cjs +3 -3
  81. package/dist/primitives/copy-button.js +2 -2
  82. package/dist/primitives/cycling-prompt.cjs +102 -0
  83. package/dist/primitives/cycling-prompt.d.cts +24 -0
  84. package/dist/primitives/cycling-prompt.d.ts +24 -0
  85. package/dist/primitives/cycling-prompt.js +102 -0
  86. package/dist/primitives/dialog.d.cts +9 -9
  87. package/dist/primitives/dialog.d.ts +9 -9
  88. package/dist/primitives/dotted-list.cjs +41 -0
  89. package/dist/primitives/dotted-list.d.cts +28 -0
  90. package/dist/primitives/dotted-list.d.ts +28 -0
  91. package/dist/primitives/dotted-list.js +41 -0
  92. package/dist/primitives/drawer.d.cts +6 -6
  93. package/dist/primitives/drawer.d.ts +6 -6
  94. package/dist/primitives/field.cjs +3 -3
  95. package/dist/primitives/field.js +2 -2
  96. package/dist/primitives/file-dropzone.cjs +3 -3
  97. package/dist/primitives/file-dropzone.js +2 -2
  98. package/dist/primitives/file-preview.cjs +4 -4
  99. package/dist/primitives/file-preview.js +3 -3
  100. package/dist/primitives/filter-bar.cjs +4 -4
  101. package/dist/primitives/filter-bar.js +3 -3
  102. package/dist/primitives/fixed-action-bar.cjs +46 -0
  103. package/dist/primitives/fixed-action-bar.d.cts +15 -0
  104. package/dist/primitives/fixed-action-bar.d.ts +15 -0
  105. package/dist/primitives/fixed-action-bar.js +46 -0
  106. package/dist/primitives/floating-action-button.cjs +65 -0
  107. package/dist/primitives/floating-action-button.d.cts +52 -0
  108. package/dist/primitives/floating-action-button.d.ts +52 -0
  109. package/dist/primitives/floating-action-button.js +65 -0
  110. package/dist/primitives/form-section.cjs +38 -0
  111. package/dist/primitives/form-section.d.cts +43 -0
  112. package/dist/primitives/form-section.d.ts +43 -0
  113. package/dist/primitives/form-section.js +38 -0
  114. package/dist/primitives/key-value-grid.cjs +52 -0
  115. package/dist/primitives/key-value-grid.d.cts +20 -0
  116. package/dist/primitives/key-value-grid.d.ts +20 -0
  117. package/dist/primitives/key-value-grid.js +52 -0
  118. package/dist/primitives/marketing-footer.cjs +34 -0
  119. package/dist/primitives/marketing-footer.d.cts +29 -0
  120. package/dist/primitives/marketing-footer.d.ts +29 -0
  121. package/dist/primitives/marketing-footer.js +34 -0
  122. package/dist/primitives/marketing-header.cjs +41 -0
  123. package/dist/primitives/marketing-header.d.cts +31 -0
  124. package/dist/primitives/marketing-header.d.ts +31 -0
  125. package/dist/primitives/marketing-header.js +41 -0
  126. package/dist/primitives/marketing-section.cjs +8 -0
  127. package/dist/primitives/marketing-section.d.cts +35 -0
  128. package/dist/primitives/marketing-section.d.ts +35 -0
  129. package/dist/primitives/marketing-section.js +8 -0
  130. package/dist/primitives/marketing-shell.cjs +28 -0
  131. package/dist/primitives/marketing-shell.d.cts +14 -0
  132. package/dist/primitives/marketing-shell.d.ts +14 -0
  133. package/dist/primitives/marketing-shell.js +28 -0
  134. package/dist/primitives/notes.cjs +4 -4
  135. package/dist/primitives/notes.js +4 -4
  136. package/dist/primitives/page-header.cjs +3 -67
  137. package/dist/primitives/page-header.js +3 -67
  138. package/dist/primitives/page-tabs.cjs +4 -57
  139. package/dist/primitives/page-tabs.js +4 -57
  140. package/dist/primitives/pager.cjs +85 -0
  141. package/dist/primitives/pager.d.cts +39 -0
  142. package/dist/primitives/pager.d.ts +39 -0
  143. package/dist/primitives/pager.js +85 -0
  144. package/dist/primitives/pagination.cjs +119 -0
  145. package/dist/primitives/pagination.d.cts +41 -0
  146. package/dist/primitives/pagination.d.ts +41 -0
  147. package/dist/primitives/pagination.js +119 -0
  148. package/dist/primitives/poster.cjs +11 -1
  149. package/dist/primitives/poster.d.cts +12 -1
  150. package/dist/primitives/poster.d.ts +12 -1
  151. package/dist/primitives/poster.js +10 -0
  152. package/dist/primitives/resource-list.cjs +8 -8
  153. package/dist/primitives/resource-list.js +7 -7
  154. package/dist/primitives/responsive-embed.cjs +29 -0
  155. package/dist/primitives/responsive-embed.d.cts +14 -0
  156. package/dist/primitives/responsive-embed.d.ts +14 -0
  157. package/dist/primitives/responsive-embed.js +29 -0
  158. package/dist/primitives/save-bar.cjs +91 -0
  159. package/dist/primitives/save-bar.d.cts +55 -0
  160. package/dist/primitives/save-bar.d.ts +55 -0
  161. package/dist/primitives/save-bar.js +91 -0
  162. package/dist/primitives/settings-list.cjs +10 -0
  163. package/dist/primitives/settings-list.d.cts +31 -0
  164. package/dist/primitives/settings-list.d.ts +31 -0
  165. package/dist/primitives/settings-list.js +10 -0
  166. package/dist/primitives/settings-section.cjs +34 -0
  167. package/dist/primitives/settings-section.d.cts +44 -0
  168. package/dist/primitives/settings-section.d.ts +44 -0
  169. package/dist/primitives/settings-section.js +34 -0
  170. package/dist/primitives/sheet.d.cts +9 -9
  171. package/dist/primitives/sheet.d.ts +9 -9
  172. package/dist/primitives/short-video.cjs +110 -0
  173. package/dist/primitives/short-video.d.cts +30 -0
  174. package/dist/primitives/short-video.d.ts +30 -0
  175. package/dist/primitives/short-video.js +110 -0
  176. package/dist/primitives/stats-card.cjs +46 -0
  177. package/dist/primitives/stats-card.d.cts +19 -0
  178. package/dist/primitives/stats-card.d.ts +19 -0
  179. package/dist/primitives/stats-card.js +46 -0
  180. package/dist/primitives/stats-strip.cjs +38 -0
  181. package/dist/primitives/stats-strip.d.cts +24 -0
  182. package/dist/primitives/stats-strip.d.ts +24 -0
  183. package/dist/primitives/stats-strip.js +38 -0
  184. package/dist/primitives/step-list.cjs +32 -0
  185. package/dist/primitives/step-list.d.cts +19 -0
  186. package/dist/primitives/step-list.d.ts +19 -0
  187. package/dist/primitives/step-list.js +32 -0
  188. package/dist/primitives/steps.cjs +77 -0
  189. package/dist/primitives/steps.d.cts +35 -0
  190. package/dist/primitives/steps.d.ts +35 -0
  191. package/dist/primitives/steps.js +77 -0
  192. package/dist/primitives/tabbed-page-header.cjs +53 -0
  193. package/dist/primitives/tabbed-page-header.d.cts +26 -0
  194. package/dist/primitives/tabbed-page-header.d.ts +26 -0
  195. package/dist/primitives/tabbed-page-header.js +53 -0
  196. package/dist/primitives/theme-selector.cjs +17 -17
  197. package/dist/primitives/theme-selector.js +5 -5
  198. package/dist/primitives/voice-dictation-button.cjs +5 -5
  199. package/dist/primitives/voice-dictation-button.js +4 -4
  200. package/dist/primitives/voice-session-controls.cjs +4 -4
  201. package/dist/primitives/voice-session-controls.js +3 -3
  202. package/dist/primitives/workflow-assistant.cjs +5 -5
  203. package/dist/primitives/workflow-assistant.js +3 -3
  204. package/package.json +312 -1
  205. package/src/styles/components/poster.css +42 -1
  206. package/dist/{chunk-5OF6D3GH.js → chunk-4TJBXXUE.js} +3 -3
  207. package/dist/{chunk-DILYV4FI.js → chunk-7ZRFXJVN.js} +3 -3
  208. package/dist/{chunk-YYFVG5A6.cjs → chunk-D46FNEZ5.cjs} +2 -2
  209. package/dist/{chunk-NKWHDI4C.cjs → chunk-FB3VY2PL.cjs} +2 -2
  210. package/dist/{chunk-MW67PHAQ.cjs → chunk-GUVQAWUW.cjs} +9 -9
  211. package/dist/{chunk-WHDHUYS6.js → chunk-HBRVOGLA.js} +3 -3
  212. package/dist/{chunk-FARCLWLU.cjs → chunk-HHF5DEKM.cjs} +3 -3
  213. package/dist/{chunk-TWCJMFST.js → chunk-O42YC6ZQ.js} +3 -3
  214. package/dist/{chunk-ZJFYOXSM.cjs → chunk-SRVRNHCX.cjs} +2 -2
  215. package/dist/{chunk-UFFHGKI7.js → chunk-SW4T3O7M.js} +9 -9
  216. package/dist/{chunk-62UTAG2C.js → chunk-ULZB4A2I.js} +3 -3
  217. package/dist/{chunk-ZLEM2SAU.cjs → chunk-Z3JJSNR5.cjs} +2 -2
@@ -1,16 +1,16 @@
1
1
  "use client";
2
+ import {
3
+ useDictation
4
+ } from "./chunk-RPSRCB5O.js";
2
5
  import {
3
6
  AgentAudioVisualizerBar
4
- } from "./chunk-5OF6D3GH.js";
7
+ } from "./chunk-4TJBXXUE.js";
5
8
  import {
6
9
  Button
7
10
  } from "./chunk-W326GKML.js";
8
11
  import {
9
12
  cn
10
13
  } from "./chunk-G6SRSWXB.js";
11
- import {
12
- useDictation
13
- } from "./chunk-RPSRCB5O.js";
14
14
 
15
15
  // src/primitives/voice-dictation-button.tsx
16
16
  import {
@@ -0,0 +1,60 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-G6SRSWXB.js";
5
+
6
+ // src/primitives/marketing-section.tsx
7
+ import { forwardRef } from "react";
8
+ import { cva } from "class-variance-authority";
9
+ import { jsx } from "react/jsx-runtime";
10
+ var sectionVariants = cva("w-full", {
11
+ variants: {
12
+ tone: {
13
+ default: "bg-background text-foreground",
14
+ // The "every other section" muted band used across the apps.
15
+ muted: "border-t border-border bg-muted/30 text-foreground",
16
+ // Full-width dark call-to-action band.
17
+ inverted: "border-t border-border bg-foreground text-background"
18
+ },
19
+ padding: {
20
+ none: "",
21
+ sm: "py-12 md:py-16",
22
+ default: "py-20 md:py-28",
23
+ lg: "py-24 md:py-32"
24
+ }
25
+ },
26
+ defaultVariants: { tone: "default", padding: "default" }
27
+ });
28
+ var widthClass = {
29
+ narrow: "max-w-3xl",
30
+ wide: "max-w-5xl",
31
+ widest: "max-w-6xl"
32
+ };
33
+ var MarketingSection = forwardRef(
34
+ function MarketingSection2({ tone, padding, width = "wide", as, className, innerClassName, children, ...props }, ref) {
35
+ const Tag = as ?? "section";
36
+ return /* @__PURE__ */ jsx(
37
+ Tag,
38
+ {
39
+ ref,
40
+ className: cn(sectionVariants({ tone, padding }), className),
41
+ ...props,
42
+ children: /* @__PURE__ */ jsx(
43
+ "div",
44
+ {
45
+ className: cn(
46
+ "mx-auto w-full px-4 md:px-6",
47
+ widthClass[width],
48
+ innerClassName
49
+ ),
50
+ children
51
+ }
52
+ )
53
+ }
54
+ );
55
+ }
56
+ );
57
+
58
+ export {
59
+ MarketingSection
60
+ };
@@ -0,0 +1,73 @@
1
+ "use client";
2
+ import {
3
+ cn
4
+ } from "./chunk-G6SRSWXB.js";
5
+
6
+ // src/primitives/page-header.tsx
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ function PageHeader({
9
+ eyebrow,
10
+ title,
11
+ description,
12
+ children,
13
+ size = "default",
14
+ actionsLayout = "inline",
15
+ spacing = "default",
16
+ responsiveVisibility = "always",
17
+ className
18
+ }) {
19
+ const display = size === "display";
20
+ return /* @__PURE__ */ jsxs(
21
+ "div",
22
+ {
23
+ className: cn(
24
+ "flex items-start justify-between gap-4",
25
+ spacing === "default" && (display ? "mb-8 md:mb-10" : "mb-6"),
26
+ spacing === "compact" && "mb-4",
27
+ display && "flex-col gap-6 sm:flex-row sm:gap-4",
28
+ actionsLayout === "responsive" && "flex-wrap gap-y-3 [&>div:last-child]:w-full [&>div:last-child]:justify-end sm:[&>div:last-child]:w-auto",
29
+ responsiveVisibility === "desktop" && "hidden md:flex",
30
+ className
31
+ ),
32
+ children: [
33
+ /* @__PURE__ */ jsxs("div", { className: cn("min-w-0 flex-1", display ? "space-y-2" : "space-y-1.5"), children: [
34
+ eyebrow && /* @__PURE__ */ jsx("p", { className: "font-mono text-xs uppercase tracking-widest text-muted-foreground", children: eyebrow }),
35
+ /* @__PURE__ */ jsx(
36
+ "h1",
37
+ {
38
+ className: cn(
39
+ "font-semibold tracking-tight",
40
+ size === "display" ? "text-4xl leading-none md:text-6xl md:leading-none" : "text-2xl md:text-3xl"
41
+ ),
42
+ children: title
43
+ }
44
+ ),
45
+ description && /* @__PURE__ */ jsx(
46
+ "p",
47
+ {
48
+ className: cn(
49
+ "max-w-[72ch] text-muted-foreground",
50
+ size === "display" ? "text-base md:text-lg" : "text-sm"
51
+ ),
52
+ children: description
53
+ }
54
+ )
55
+ ] }),
56
+ children && /* @__PURE__ */ jsx(
57
+ "div",
58
+ {
59
+ className: cn(
60
+ "flex shrink-0 items-center gap-2",
61
+ size === "display" ? "w-full flex-wrap sm:mt-0.5 sm:w-auto sm:flex-nowrap md:mt-1" : "mt-1"
62
+ ),
63
+ children
64
+ }
65
+ )
66
+ ]
67
+ }
68
+ );
69
+ }
70
+
71
+ export {
72
+ PageHeader
73
+ };
@@ -0,0 +1,63 @@
1
+ "use client";
2
+ import {
3
+ Tabs,
4
+ TabsList,
5
+ TabsTrigger
6
+ } from "./chunk-7CRDYV3C.js";
7
+ import {
8
+ cn
9
+ } from "./chunk-G6SRSWXB.js";
10
+
11
+ // src/primitives/page-tabs.tsx
12
+ import { jsx, jsxs } from "react/jsx-runtime";
13
+ function PageTabs({
14
+ value,
15
+ onValueChange,
16
+ items,
17
+ ariaLabel,
18
+ layout = "equal",
19
+ className
20
+ }) {
21
+ if (items.length === 0) return null;
22
+ return /* @__PURE__ */ jsx(
23
+ Tabs,
24
+ {
25
+ value,
26
+ onValueChange: (next) => onValueChange(next),
27
+ className,
28
+ children: /* @__PURE__ */ jsx(
29
+ TabsList,
30
+ {
31
+ "aria-label": ariaLabel,
32
+ scrollable: layout === "scroll",
33
+ width: "full",
34
+ className: cn(
35
+ "w-full",
36
+ layout === "equal" ? "grid h-auto p-1.5" : "justify-start"
37
+ ),
38
+ style: layout === "equal" ? { gridTemplateColumns: `repeat(${items.length}, minmax(0, 1fr))` } : void 0,
39
+ children: items.map((item) => /* @__PURE__ */ jsxs(
40
+ TabsTrigger,
41
+ {
42
+ value: item.value,
43
+ className: cn(
44
+ layout === "equal" && "min-h-11 gap-2 text-sm sm:text-base",
45
+ layout === "scroll" && "shrink-0 gap-2"
46
+ ),
47
+ children: [
48
+ item.icon,
49
+ /* @__PURE__ */ jsx("span", { className: "truncate", children: item.label }),
50
+ item.badge && /* @__PURE__ */ jsx("span", { className: "shrink-0", children: item.badge })
51
+ ]
52
+ },
53
+ item.value
54
+ ))
55
+ }
56
+ )
57
+ }
58
+ );
59
+ }
60
+
61
+ export {
62
+ PageTabs
63
+ };
@@ -0,0 +1,73 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+ var _chunkKWLSBTB2cjs = require('./chunk-KWLSBTB2.cjs');
5
+
6
+ // src/primitives/page-header.tsx
7
+ var _jsxruntime = require('react/jsx-runtime');
8
+ function PageHeader({
9
+ eyebrow,
10
+ title,
11
+ description,
12
+ children,
13
+ size = "default",
14
+ actionsLayout = "inline",
15
+ spacing = "default",
16
+ responsiveVisibility = "always",
17
+ className
18
+ }) {
19
+ const display = size === "display";
20
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
21
+ "div",
22
+ {
23
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
24
+ "flex items-start justify-between gap-4",
25
+ spacing === "default" && (display ? "mb-8 md:mb-10" : "mb-6"),
26
+ spacing === "compact" && "mb-4",
27
+ display && "flex-col gap-6 sm:flex-row sm:gap-4",
28
+ actionsLayout === "responsive" && "flex-wrap gap-y-3 [&>div:last-child]:w-full [&>div:last-child]:justify-end sm:[&>div:last-child]:w-auto",
29
+ responsiveVisibility === "desktop" && "hidden md:flex",
30
+ className
31
+ ),
32
+ children: [
33
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "min-w-0 flex-1", display ? "space-y-2" : "space-y-1.5"), children: [
34
+ eyebrow && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-mono text-xs uppercase tracking-widest text-muted-foreground", children: eyebrow }),
35
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
36
+ "h1",
37
+ {
38
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
39
+ "font-semibold tracking-tight",
40
+ size === "display" ? "text-4xl leading-none md:text-6xl md:leading-none" : "text-2xl md:text-3xl"
41
+ ),
42
+ children: title
43
+ }
44
+ ),
45
+ description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
46
+ "p",
47
+ {
48
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
49
+ "max-w-[72ch] text-muted-foreground",
50
+ size === "display" ? "text-base md:text-lg" : "text-sm"
51
+ ),
52
+ children: description
53
+ }
54
+ )
55
+ ] }),
56
+ children && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
57
+ "div",
58
+ {
59
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
60
+ "flex shrink-0 items-center gap-2",
61
+ size === "display" ? "w-full flex-wrap sm:mt-0.5 sm:w-auto sm:flex-nowrap md:mt-1" : "mt-1"
62
+ ),
63
+ children
64
+ }
65
+ )
66
+ ]
67
+ }
68
+ );
69
+ }
70
+
71
+
72
+
73
+ exports.PageHeader = PageHeader;
@@ -0,0 +1,66 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
+
3
+ // src/primitives/accent-theme.tsx
4
+ var _react = require('react');
5
+ var _jsxruntime = require('react/jsx-runtime');
6
+ var PALETTE_ID = /^[A-Za-z0-9_-]+$/;
7
+ function hexToHslTriplet(hex) {
8
+ const match = /^#([0-9a-f]{6})$/i.exec(hex.trim());
9
+ if (!match) return null;
10
+ const value = Number.parseInt(match[1], 16);
11
+ const red = (value >> 16 & 255) / 255;
12
+ const green = (value >> 8 & 255) / 255;
13
+ const blue = (value & 255) / 255;
14
+ const maximum = Math.max(red, green, blue);
15
+ const minimum = Math.min(red, green, blue);
16
+ const lightness = (maximum + minimum) / 2;
17
+ let hue = 0;
18
+ let saturation = 0;
19
+ if (maximum !== minimum) {
20
+ const delta = maximum - minimum;
21
+ saturation = lightness > 0.5 ? delta / (2 - maximum - minimum) : delta / (maximum + minimum);
22
+ if (maximum === red) hue = ((green - blue) / delta + (green < blue ? 6 : 0)) / 6;
23
+ else if (maximum === green) hue = ((blue - red) / delta + 2) / 6;
24
+ else hue = ((red - green) / delta + 4) / 6;
25
+ }
26
+ const round = (number) => Math.round(number * 10) / 10;
27
+ return `${round(hue * 360)} ${round(saturation * 100)}% ${round(lightness * 100)}%`;
28
+ }
29
+ function foregroundFor(hex) {
30
+ const match = /^#([0-9a-f]{6})$/i.exec(hex.trim());
31
+ if (!match) return "0 0% 100%";
32
+ const value = Number.parseInt(match[1], 16);
33
+ const channel = (number) => {
34
+ const normalized = number / 255;
35
+ return normalized <= 0.03928 ? normalized / 12.92 : ((normalized + 0.055) / 1.055) ** 2.4;
36
+ };
37
+ const luminance = 0.2126 * channel(value >> 16 & 255) + 0.7152 * channel(value >> 8 & 255) + 0.0722 * channel(value & 255);
38
+ return luminance > 0.45 ? "0 0% 9%" : "0 0% 100%";
39
+ }
40
+ function AccentTheme({ colours, palette, scope: target = "region", children }) {
41
+ const scope = `accent-${_react.useId.call(void 0, ).replace(/[^a-zA-Z0-9]/g, "")}`;
42
+ const light = _optionalChain([colours, 'optionalAccess', _ => _.light]) ? hexToHslTriplet(colours.light) : null;
43
+ const dark = _optionalChain([colours, 'optionalAccess', _2 => _2.dark]) ? hexToHslTriplet(colours.dark) : null;
44
+ if (!light && !dark) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children });
45
+ const root = palette === void 0 ? null : PALETTE_ID.test(palette) ? `:root[data-theme="${palette}"]` : ":root:not(*)";
46
+ const lightSelector = target === "document" ? _nullishCoalesce(root, () => ( ":root")) : root ? `${root} .${scope}` : `.${scope}`;
47
+ const darkSelector = `${_nullishCoalesce(root, () => ( ":root"))}.dark${target === "document" ? "" : ` .${scope}`}`;
48
+ const rules = [];
49
+ if (light && _optionalChain([colours, 'optionalAccess', _3 => _3.light])) {
50
+ rules.push(
51
+ `${lightSelector}{--primary:${light};--primary-foreground:${foregroundFor(colours.light)};--ring:${light};--color-primary:hsl(var(--primary));--color-primary-foreground:hsl(var(--primary-foreground));--color-ring:hsl(var(--ring));}`
52
+ );
53
+ }
54
+ if (dark && _optionalChain([colours, 'optionalAccess', _4 => _4.dark])) {
55
+ rules.push(
56
+ `${darkSelector}{--primary:${dark};--primary-foreground:${foregroundFor(colours.dark)};--ring:${dark};--color-primary:hsl(var(--primary));--color-primary-foreground:hsl(var(--primary-foreground));--color-ring:hsl(var(--ring));}`
57
+ );
58
+ }
59
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
60
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "style", { dangerouslySetInnerHTML: { __html: rules.join("") } }),
61
+ target === "document" ? children : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: scope, children })
62
+ ] });
63
+ }
64
+
65
+
66
+ exports.AccentTheme = AccentTheme;
@@ -0,0 +1,32 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface AccentThemeColours {
5
+ light?: string | null;
6
+ dark?: string | null;
7
+ }
8
+ interface AccentThemeProps {
9
+ colours?: AccentThemeColours | null;
10
+ /**
11
+ * `region` (default) accents only the wrapped content. Use `document` once
12
+ * at the application root so body portals inherit the same accent too.
13
+ */
14
+ scope?: "region" | "document";
15
+ /**
16
+ * Apply the accent only while the document is in this palette
17
+ * (`data-theme` on `<html>`), so a palette someone picks keeps its own
18
+ * accent. Leave it off to apply the accent in every palette.
19
+ */
20
+ palette?: string;
21
+ children: ReactNode;
22
+ }
23
+ /**
24
+ * Scopes the UI-kit accent tokens to a region or document without changing its neutral
25
+ * surfaces or typography. Light and dark values are selected entirely in CSS,
26
+ * so switching themes does not require app-owned listeners or render state,
27
+ * and with `palette` neither does switching palettes: the wrapper stays, and
28
+ * only the rules stop matching.
29
+ */
30
+ declare function AccentTheme({ colours, palette, scope: target, children }: AccentThemeProps): react_jsx_runtime.JSX.Element;
31
+
32
+ export { AccentTheme, type AccentThemeColours, type AccentThemeProps };
@@ -0,0 +1,32 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { ReactNode } from 'react';
3
+
4
+ interface AccentThemeColours {
5
+ light?: string | null;
6
+ dark?: string | null;
7
+ }
8
+ interface AccentThemeProps {
9
+ colours?: AccentThemeColours | null;
10
+ /**
11
+ * `region` (default) accents only the wrapped content. Use `document` once
12
+ * at the application root so body portals inherit the same accent too.
13
+ */
14
+ scope?: "region" | "document";
15
+ /**
16
+ * Apply the accent only while the document is in this palette
17
+ * (`data-theme` on `<html>`), so a palette someone picks keeps its own
18
+ * accent. Leave it off to apply the accent in every palette.
19
+ */
20
+ palette?: string;
21
+ children: ReactNode;
22
+ }
23
+ /**
24
+ * Scopes the UI-kit accent tokens to a region or document without changing its neutral
25
+ * surfaces or typography. Light and dark values are selected entirely in CSS,
26
+ * so switching themes does not require app-owned listeners or render state,
27
+ * and with `palette` neither does switching palettes: the wrapper stays, and
28
+ * only the rules stop matching.
29
+ */
30
+ declare function AccentTheme({ colours, palette, scope: target, children }: AccentThemeProps): react_jsx_runtime.JSX.Element;
31
+
32
+ export { AccentTheme, type AccentThemeColours, type AccentThemeProps };
@@ -0,0 +1,66 @@
1
+ "use client";
2
+
3
+ // src/primitives/accent-theme.tsx
4
+ import { useId } from "react";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ var PALETTE_ID = /^[A-Za-z0-9_-]+$/;
7
+ function hexToHslTriplet(hex) {
8
+ const match = /^#([0-9a-f]{6})$/i.exec(hex.trim());
9
+ if (!match) return null;
10
+ const value = Number.parseInt(match[1], 16);
11
+ const red = (value >> 16 & 255) / 255;
12
+ const green = (value >> 8 & 255) / 255;
13
+ const blue = (value & 255) / 255;
14
+ const maximum = Math.max(red, green, blue);
15
+ const minimum = Math.min(red, green, blue);
16
+ const lightness = (maximum + minimum) / 2;
17
+ let hue = 0;
18
+ let saturation = 0;
19
+ if (maximum !== minimum) {
20
+ const delta = maximum - minimum;
21
+ saturation = lightness > 0.5 ? delta / (2 - maximum - minimum) : delta / (maximum + minimum);
22
+ if (maximum === red) hue = ((green - blue) / delta + (green < blue ? 6 : 0)) / 6;
23
+ else if (maximum === green) hue = ((blue - red) / delta + 2) / 6;
24
+ else hue = ((red - green) / delta + 4) / 6;
25
+ }
26
+ const round = (number) => Math.round(number * 10) / 10;
27
+ return `${round(hue * 360)} ${round(saturation * 100)}% ${round(lightness * 100)}%`;
28
+ }
29
+ function foregroundFor(hex) {
30
+ const match = /^#([0-9a-f]{6})$/i.exec(hex.trim());
31
+ if (!match) return "0 0% 100%";
32
+ const value = Number.parseInt(match[1], 16);
33
+ const channel = (number) => {
34
+ const normalized = number / 255;
35
+ return normalized <= 0.03928 ? normalized / 12.92 : ((normalized + 0.055) / 1.055) ** 2.4;
36
+ };
37
+ const luminance = 0.2126 * channel(value >> 16 & 255) + 0.7152 * channel(value >> 8 & 255) + 0.0722 * channel(value & 255);
38
+ return luminance > 0.45 ? "0 0% 9%" : "0 0% 100%";
39
+ }
40
+ function AccentTheme({ colours, palette, scope: target = "region", children }) {
41
+ const scope = `accent-${useId().replace(/[^a-zA-Z0-9]/g, "")}`;
42
+ const light = colours?.light ? hexToHslTriplet(colours.light) : null;
43
+ const dark = colours?.dark ? hexToHslTriplet(colours.dark) : null;
44
+ if (!light && !dark) return /* @__PURE__ */ jsx(Fragment, { children });
45
+ const root = palette === void 0 ? null : PALETTE_ID.test(palette) ? `:root[data-theme="${palette}"]` : ":root:not(*)";
46
+ const lightSelector = target === "document" ? root ?? ":root" : root ? `${root} .${scope}` : `.${scope}`;
47
+ const darkSelector = `${root ?? ":root"}.dark${target === "document" ? "" : ` .${scope}`}`;
48
+ const rules = [];
49
+ if (light && colours?.light) {
50
+ rules.push(
51
+ `${lightSelector}{--primary:${light};--primary-foreground:${foregroundFor(colours.light)};--ring:${light};--color-primary:hsl(var(--primary));--color-primary-foreground:hsl(var(--primary-foreground));--color-ring:hsl(var(--ring));}`
52
+ );
53
+ }
54
+ if (dark && colours?.dark) {
55
+ rules.push(
56
+ `${darkSelector}{--primary:${dark};--primary-foreground:${foregroundFor(colours.dark)};--ring:${dark};--color-primary:hsl(var(--primary));--color-primary-foreground:hsl(var(--primary-foreground));--color-ring:hsl(var(--ring));}`
57
+ );
58
+ }
59
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
60
+ /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: rules.join("") } }),
61
+ target === "document" ? children : /* @__PURE__ */ jsx("div", { className: scope, children })
62
+ ] });
63
+ }
64
+ export {
65
+ AccentTheme
66
+ };
@@ -5,19 +5,19 @@ var _chunkPPYHNJMVcjs = require('../chunk-PPYHNJMV.cjs');
5
5
 
6
6
 
7
7
  var _chunkPQUSJEXLcjs = require('../chunk-PQUSJEXL.cjs');
8
- require('../chunk-VGTINL5Q.cjs');
9
8
 
10
9
 
11
10
 
12
11
 
13
12
  var _chunkWABCLRBRcjs = require('../chunk-WABCLRBR.cjs');
14
- require('../chunk-I6GUOEBO.cjs');
15
13
 
16
14
 
17
15
  var _chunkCLYAASFNcjs = require('../chunk-CLYAASFN.cjs');
18
16
 
19
17
 
20
18
  var _chunkVBPPFC7Xcjs = require('../chunk-VBPPFC7X.cjs');
19
+ require('../chunk-VGTINL5Q.cjs');
20
+ require('../chunk-I6GUOEBO.cjs');
21
21
  require('../chunk-JDEXZGIY.cjs');
22
22
 
23
23
 
@@ -5,19 +5,19 @@ import {
5
5
  import {
6
6
  Input
7
7
  } from "../chunk-QMA3WVB7.js";
8
- import "../chunk-H7TETFLB.js";
9
8
  import {
10
9
  Avatar,
11
10
  AvatarFallback,
12
11
  AvatarImage
13
12
  } from "../chunk-3OWGL4Q2.js";
14
- import "../chunk-D4ZL2OEQ.js";
15
13
  import {
16
14
  EmptyState
17
15
  } from "../chunk-ET4THLFX.js";
18
16
  import {
19
17
  Skeleton
20
18
  } from "../chunk-YEW65ASC.js";
19
+ import "../chunk-H7TETFLB.js";
20
+ import "../chunk-D4ZL2OEQ.js";
21
21
  import "../chunk-W326GKML.js";
22
22
  import {
23
23
  cn
@@ -5,12 +5,12 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkNKWHDI4Ccjs = require('../chunk-NKWHDI4C.cjs');
9
- require('../chunk-KWLSBTB2.cjs');
8
+ var _chunkFB3VY2PLcjs = require('../chunk-FB3VY2PL.cjs');
10
9
  require('../chunk-2BSFYU22.cjs');
10
+ require('../chunk-KWLSBTB2.cjs');
11
11
 
12
12
 
13
13
 
14
14
 
15
15
 
16
- exports.AgentAudioVisualizerBar = _chunkNKWHDI4Ccjs.AgentAudioVisualizerBar; exports.AgentAudioVisualizerBarElementVariants = _chunkNKWHDI4Ccjs.AgentAudioVisualizerBarElementVariants; exports.AgentAudioVisualizerBarVariants = _chunkNKWHDI4Ccjs.AgentAudioVisualizerBarVariants; exports.normalizeVolumeBands = _chunkNKWHDI4Ccjs.normalizeVolumeBands;
16
+ exports.AgentAudioVisualizerBar = _chunkFB3VY2PLcjs.AgentAudioVisualizerBar; exports.AgentAudioVisualizerBarElementVariants = _chunkFB3VY2PLcjs.AgentAudioVisualizerBarElementVariants; exports.AgentAudioVisualizerBarVariants = _chunkFB3VY2PLcjs.AgentAudioVisualizerBarVariants; exports.normalizeVolumeBands = _chunkFB3VY2PLcjs.normalizeVolumeBands;
@@ -5,9 +5,9 @@ import {
5
5
  AgentAudioVisualizerBarElementVariants,
6
6
  AgentAudioVisualizerBarVariants,
7
7
  normalizeVolumeBands
8
- } from "../chunk-5OF6D3GH.js";
9
- import "../chunk-G6SRSWXB.js";
8
+ } from "../chunk-4TJBXXUE.js";
10
9
  import "../chunk-GJ7S3L6R.js";
10
+ import "../chunk-G6SRSWXB.js";
11
11
  export {
12
12
  AgentAudioVisualizerBar,
13
13
  AgentAudioVisualizerBarElementVariants,
@@ -4,7 +4,7 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
 
6
6
  declare const alertVariants: (props?: ({
7
- variant?: "default" | "destructive" | "success" | "warning" | null | undefined;
7
+ variant?: "success" | "default" | "destructive" | "warning" | null | undefined;
8
8
  } & class_variance_authority_types.ClassProp) | undefined) => string;
9
9
  interface AlertProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof alertVariants> {
10
10
  marginBottom?: "none" | "md";
@@ -4,7 +4,7 @@ import * as class_variance_authority_types from 'class-variance-authority/types'
4
4
  import { VariantProps } from 'class-variance-authority';
5
5
 
6
6
  declare const alertVariants: (props?: ({
7
- variant?: "default" | "destructive" | "success" | "warning" | null | undefined;
7
+ variant?: "success" | "default" | "destructive" | "warning" | null | undefined;
8
8
  } & class_variance_authority_types.ClassProp) | undefined) => string;
9
9
  interface AlertProps extends HTMLAttributes<HTMLDivElement>, VariantProps<typeof alertVariants> {
10
10
  marginBottom?: "none" | "md";