@epicbagel/saas-kit 1.33.0 → 1.35.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 (119) hide show
  1. package/README.md +131 -0
  2. package/dist/chunk-2BNEE3U6.cjs +36 -0
  3. package/dist/{chunk-KOR2QR7I.cjs → chunk-2YW5VA2V.cjs} +5 -5
  4. package/dist/chunk-5PHOKJCT.cjs +42 -0
  5. package/dist/chunk-BB7PO2BW.js +67 -0
  6. package/dist/{chunk-PTMZTP3V.cjs → chunk-BGCNGYPL.cjs} +2 -2
  7. package/dist/chunk-BOMVE7QO.cjs +47 -0
  8. package/dist/{chunk-FPOJ2NGG.js → chunk-C3VZMTVB.js} +1 -1
  9. package/dist/chunk-EXHF3QUY.js +36 -0
  10. package/dist/chunk-FYNHRHVY.cjs +47 -0
  11. package/dist/{chunk-AWCXVYPL.js → chunk-HTPPNW74.js} +1 -1
  12. package/dist/{chunk-REGA2L5S.js → chunk-HTUYUMAH.js} +3 -3
  13. package/dist/chunk-I3GBXIFL.cjs +67 -0
  14. package/dist/{chunk-SL6ECEN6.cjs → chunk-JMNDFISN.cjs} +3 -3
  15. package/dist/{chunk-TS4MC3B3.js → chunk-NNEV5RHQ.js} +6 -6
  16. package/dist/chunk-O3G3TVPU.js +27 -0
  17. package/dist/{chunk-IZF4WCK6.js → chunk-ROUWBWEQ.js} +5 -5
  18. package/dist/chunk-TDCVZKMX.cjs +27 -0
  19. package/dist/{chunk-E2UVQXBO.cjs → chunk-TP74SBRH.cjs} +6 -6
  20. package/dist/{chunk-F3D5HA2F.cjs → chunk-VUMLLKWY.cjs} +8 -8
  21. package/dist/chunk-W5L6LQI3.js +42 -0
  22. package/dist/chunk-WMTCL463.js +47 -0
  23. package/dist/chunk-WTVL2FK7.js +47 -0
  24. package/dist/primitives/accent-theme.cjs +4 -63
  25. package/dist/primitives/accent-theme.js +3 -62
  26. package/dist/primitives/activity-feed.cjs +4 -4
  27. package/dist/primitives/activity-feed.js +5 -5
  28. package/dist/primitives/agent-audio-visualizer-bar.cjs +3 -3
  29. package/dist/primitives/agent-audio-visualizer-bar.js +2 -2
  30. package/dist/primitives/alert.d.cts +1 -1
  31. package/dist/primitives/alert.d.ts +1 -1
  32. package/dist/primitives/anchor.cjs +3 -30
  33. package/dist/primitives/anchor.js +3 -30
  34. package/dist/primitives/app-layout.cjs +5 -5
  35. package/dist/primitives/app-layout.js +2 -2
  36. package/dist/primitives/app-sidebar.cjs +3 -3
  37. package/dist/primitives/app-sidebar.js +2 -2
  38. package/dist/primitives/archive-confirmation-dialog.cjs +2 -2
  39. package/dist/primitives/archive-confirmation-dialog.js +3 -3
  40. package/dist/primitives/badge.d.cts +1 -1
  41. package/dist/primitives/badge.d.ts +1 -1
  42. package/dist/primitives/board-view-internals.cjs +3 -3
  43. package/dist/primitives/board-view-internals.js +2 -2
  44. package/dist/primitives/board-view.cjs +8 -8
  45. package/dist/primitives/board-view.js +7 -7
  46. package/dist/primitives/brand-mark.cjs +3 -21
  47. package/dist/primitives/brand-mark.js +3 -21
  48. package/dist/primitives/branded-page.cjs +201 -0
  49. package/dist/primitives/branded-page.d.cts +118 -0
  50. package/dist/primitives/branded-page.d.ts +118 -0
  51. package/dist/primitives/branded-page.js +201 -0
  52. package/dist/primitives/bubble.d.cts +1 -1
  53. package/dist/primitives/bubble.d.ts +1 -1
  54. package/dist/primitives/button.d.cts +2 -2
  55. package/dist/primitives/button.d.ts +2 -2
  56. package/dist/primitives/call-card.cjs +2 -2
  57. package/dist/primitives/call-card.js +3 -3
  58. package/dist/primitives/chat.cjs +22 -22
  59. package/dist/primitives/chat.js +16 -16
  60. package/dist/primitives/code-block.cjs +4 -4
  61. package/dist/primitives/code-block.js +3 -3
  62. package/dist/primitives/command.d.cts +1 -1
  63. package/dist/primitives/command.d.ts +1 -1
  64. package/dist/primitives/connection.cjs +5 -5
  65. package/dist/primitives/connection.js +7 -7
  66. package/dist/primitives/copy-button.cjs +3 -3
  67. package/dist/primitives/copy-button.js +2 -2
  68. package/dist/primitives/cover-banner.cjs +41 -0
  69. package/dist/primitives/cover-banner.d.cts +67 -0
  70. package/dist/primitives/cover-banner.d.ts +67 -0
  71. package/dist/primitives/cover-banner.js +41 -0
  72. package/dist/primitives/document-preview.cjs +5 -5
  73. package/dist/primitives/document-preview.js +3 -3
  74. package/dist/primitives/file-preview-internals.cjs +4 -4
  75. package/dist/primitives/file-preview-internals.js +3 -3
  76. package/dist/primitives/file-preview.cjs +16 -16
  77. package/dist/primitives/file-preview.js +6 -6
  78. package/dist/primitives/filter-bar.cjs +4 -4
  79. package/dist/primitives/filter-bar.js +3 -3
  80. package/dist/primitives/fixed-action-bar.cjs +4 -41
  81. package/dist/primitives/fixed-action-bar.js +4 -41
  82. package/dist/primitives/marketing-header.cjs +3 -36
  83. package/dist/primitives/marketing-header.js +3 -36
  84. package/dist/primitives/notes.cjs +7 -7
  85. package/dist/primitives/notes.js +7 -7
  86. package/dist/primitives/page-shell.cjs +3 -41
  87. package/dist/primitives/page-shell.js +3 -41
  88. package/dist/primitives/resource-list.cjs +8 -8
  89. package/dist/primitives/resource-list.js +7 -7
  90. package/dist/primitives/responsive-dialog.cjs +3 -3
  91. package/dist/primitives/responsive-dialog.js +2 -2
  92. package/dist/primitives/section.cjs +2 -2
  93. package/dist/primitives/section.js +3 -3
  94. package/dist/primitives/switch-field.cjs +3 -3
  95. package/dist/primitives/switch-field.js +3 -3
  96. package/dist/primitives/theme-selector.cjs +3 -3
  97. package/dist/primitives/theme-selector.js +4 -4
  98. package/dist/primitives/voice-dictation-button.cjs +5 -5
  99. package/dist/primitives/voice-dictation-button.js +4 -4
  100. package/dist/primitives/voice-session-controls.cjs +4 -4
  101. package/dist/primitives/voice-session-controls.js +3 -3
  102. package/dist/primitives/workflow-assistant.cjs +5 -5
  103. package/dist/primitives/workflow-assistant.js +3 -3
  104. package/package.json +21 -1
  105. package/src/styles/components/cover-banner.css +201 -0
  106. package/src/styles/components.css +1 -0
  107. package/src/styles/utilities.css +5 -3
  108. package/dist/{chunk-2FVFPGP5.js → chunk-5GFMSK27.js} +3 -3
  109. package/dist/{chunk-4TJBXXUE.js → chunk-5OF6D3GH.js} +3 -3
  110. package/dist/{chunk-ULZB4A2I.js → chunk-62UTAG2C.js} +3 -3
  111. package/dist/{chunk-SW4T3O7M.js → chunk-6LB37JWO.js} +6 -6
  112. package/dist/{chunk-AO56ET4F.cjs → chunk-BTHYGHOH.cjs} +2 -2
  113. package/dist/{chunk-7ZRFXJVN.js → chunk-DILYV4FI.js} +3 -3
  114. package/dist/{chunk-HHF5DEKM.cjs → chunk-FARCLWLU.cjs} +3 -3
  115. package/dist/{chunk-CRZ4INEJ.js → chunk-JTI4244T.js} +10 -10
  116. package/dist/{chunk-FB3VY2PL.cjs → chunk-NKWHDI4C.cjs} +2 -2
  117. package/dist/{chunk-GUVQAWUW.cjs → chunk-S2IMM37Q.cjs} +5 -5
  118. package/dist/{chunk-G3SF4RRA.cjs → chunk-UKYUWSF2.cjs} +3 -3
  119. package/dist/{chunk-D46FNEZ5.cjs → chunk-YYFVG5A6.cjs} +2 -2
@@ -5,6 +5,7 @@ var _chunk2HTYXBDUcjs = require('../chunk-2HTYXBDU.cjs');
5
5
 
6
6
 
7
7
  var _chunkAU5GUDOWcjs = require('../chunk-AU5GUDOW.cjs');
8
+ require('../chunk-ZAITUDYD.cjs');
8
9
 
9
10
 
10
11
 
@@ -14,25 +15,24 @@ var _chunkAU5GUDOWcjs = require('../chunk-AU5GUDOW.cjs');
14
15
  var _chunkWDXEJDMOcjs = require('../chunk-WDXEJDMO.cjs');
15
16
 
16
17
 
17
- var _chunkCTYOW3V2cjs = require('../chunk-CTYOW3V2.cjs');
18
- require('../chunk-ZAITUDYD.cjs');
18
+ var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
19
19
 
20
20
 
21
- var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
21
+ var _chunkCTYOW3V2cjs = require('../chunk-CTYOW3V2.cjs');
22
22
 
23
23
 
24
24
 
25
+ var _chunk667ZCM4Xcjs = require('../chunk-667ZCM4X.cjs');
25
26
 
26
27
 
27
28
 
28
29
 
29
30
 
30
31
 
31
- var _chunkLIUYHYFNcjs = require('../chunk-LIUYHYFN.cjs');
32
32
 
33
33
 
34
34
 
35
- var _chunk667ZCM4Xcjs = require('../chunk-667ZCM4X.cjs');
35
+ var _chunkLIUYHYFNcjs = require('../chunk-LIUYHYFN.cjs');
36
36
  require('../chunk-I6GUOEBO.cjs');
37
37
 
38
38
 
@@ -5,6 +5,7 @@ import {
5
5
  import {
6
6
  PageHeaderActions
7
7
  } from "../chunk-2UYEMPOJ.js";
8
+ import "../chunk-V4LE2HWP.js";
8
9
  import {
9
10
  Dialog,
10
11
  DialogContent,
@@ -12,13 +13,16 @@ import {
12
13
  DialogHeader,
13
14
  DialogTitle
14
15
  } from "../chunk-3QT5VYZ3.js";
16
+ import {
17
+ Text
18
+ } from "../chunk-EIY5LLSP.js";
15
19
  import {
16
20
  Callout
17
21
  } from "../chunk-GL5CV4FF.js";
18
- import "../chunk-V4LE2HWP.js";
19
22
  import {
20
- Text
21
- } from "../chunk-EIY5LLSP.js";
23
+ Alert,
24
+ AlertDescription
25
+ } from "../chunk-R4AIM3BQ.js";
22
26
  import {
23
27
  AlertDialog,
24
28
  AlertDialogAction,
@@ -29,10 +33,6 @@ import {
29
33
  AlertDialogHeader,
30
34
  AlertDialogTitle
31
35
  } from "../chunk-ZLU32SRP.js";
32
- import {
33
- Alert,
34
- AlertDescription
35
- } from "../chunk-R4AIM3BQ.js";
36
36
  import "../chunk-D4ZL2OEQ.js";
37
37
  import {
38
38
  buttonVariants
@@ -1,10 +1,10 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunkHHF5DEKMcjs = require('../chunk-HHF5DEKM.cjs');
5
- require('../chunk-4LXN6GLZ.cjs');
4
+ var _chunkFARCLWLUcjs = require('../chunk-FARCLWLU.cjs');
6
5
  require('../chunk-JDEXZGIY.cjs');
7
6
  require('../chunk-KWLSBTB2.cjs');
7
+ require('../chunk-4LXN6GLZ.cjs');
8
8
 
9
9
 
10
- exports.CopyButton = _chunkHHF5DEKMcjs.CopyButton;
10
+ exports.CopyButton = _chunkFARCLWLUcjs.CopyButton;
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
  import {
3
3
  CopyButton
4
- } from "../chunk-7ZRFXJVN.js";
5
- import "../chunk-ZWZAAGQF.js";
4
+ } from "../chunk-DILYV4FI.js";
6
5
  import "../chunk-W326GKML.js";
7
6
  import "../chunk-G6SRSWXB.js";
7
+ import "../chunk-ZWZAAGQF.js";
8
8
  export {
9
9
  CopyButton
10
10
  };
@@ -0,0 +1,41 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";
2
+
3
+ // src/primitives/cover-banner.tsx
4
+ var _react = require('react');
5
+ var _jsxruntime = require('react/jsx-runtime');
6
+ var COVER_BANNER_VARIANTS = ["wash", "glow", "grid", "dots", "rings", "arcs"];
7
+ function hashSeed(seed) {
8
+ let hash = 2166136261;
9
+ for (let index = 0; index < seed.length; index++) {
10
+ hash ^= seed.charCodeAt(index);
11
+ hash = Math.imul(hash, 16777619);
12
+ }
13
+ hash ^= hash >>> 16;
14
+ hash = Math.imul(hash, 2246822507);
15
+ hash ^= hash >>> 13;
16
+ hash = Math.imul(hash, 3266489909);
17
+ hash ^= hash >>> 16;
18
+ return hash >>> 0;
19
+ }
20
+ function coverBannerVariant(seed) {
21
+ const text = seed == null ? "" : String(seed);
22
+ if (text === "") return COVER_BANNER_VARIANTS[0];
23
+ return COVER_BANNER_VARIANTS[hashSeed(text) % COVER_BANNER_VARIANTS.length];
24
+ }
25
+ var CoverBanner = _react.forwardRef.call(void 0, function CoverBanner2({ seed, variant, ...props }, ref) {
26
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27
+ "div",
28
+ {
29
+ ref,
30
+ ...props,
31
+ "aria-hidden": "true",
32
+ "data-slot": "cover-banner",
33
+ "data-variant": _nullishCoalesce(variant, () => ( coverBannerVariant(seed)))
34
+ }
35
+ );
36
+ });
37
+
38
+
39
+
40
+
41
+ exports.COVER_BANNER_VARIANTS = COVER_BANNER_VARIANTS; exports.CoverBanner = CoverBanner; exports.coverBannerVariant = coverBannerVariant;
@@ -0,0 +1,67 @@
1
+ import * as React from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ /**
5
+ * The stock designs, in the order a seed deals them:
6
+ *
7
+ * - `wash`: one soft diagonal gradient.
8
+ * - `glow`: two soft lights, one low on the near side and one high on the far.
9
+ * - `grid`: a wash under a faint ruled grid.
10
+ * - `dots`: a wash under a faint dot matrix.
11
+ * - `rings`: faint contour lines spreading from the far lower corner.
12
+ * - `arcs`: broad tonal bands curving round the far lower corner.
13
+ *
14
+ * The order and the number are part of the contract: a seed picks by
15
+ * position, so moving, removing or adding a design would deal everyone a
16
+ * different banner.
17
+ */
18
+ declare const COVER_BANNER_VARIANTS: readonly ["wash", "glow", "grid", "dots", "rings", "arcs"];
19
+ /** One of the stock designs, by name. */
20
+ type CoverBannerVariant = (typeof COVER_BANNER_VARIANTS)[number];
21
+ /**
22
+ * The design a seed picks: the same one every time, on the server and in the
23
+ * browser, with no randomness. The seed is read exactly as given (case and
24
+ * spaces count), so pass something that stays put: an id before a name. A
25
+ * number is read as its digits. No seed (`null`, `undefined` or `""`) is the
26
+ * first design.
27
+ */
28
+ declare function coverBannerVariant(seed: string | number | null | undefined): CoverBannerVariant;
29
+ interface CoverBannerProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
30
+ /**
31
+ * Picks one of the stock designs, the same one every time for the same
32
+ * seed: a person's id, or their name. One person keeps one banner, and a
33
+ * list of people isn't a wall of the same one.
34
+ */
35
+ seed?: string | number | null;
36
+ /** Names the design outright. Wins over `seed`. */
37
+ variant?: CoverBannerVariant;
38
+ }
39
+ /**
40
+ * A stock cover: the banner the kit draws for anything that has no cover
41
+ * image of its own, so a card without one is the same height as its
42
+ * neighbours and doesn't look bare.
43
+ *
44
+ * It is drawn in CSS from the palette's own tokens (the primary colour mixed
45
+ * into the muted surface, and into the foreground for a faint pattern), so it
46
+ * follows the palette, light and dark, and an `AccentTheme` around it, with
47
+ * no image, no request and no canvas. It fills the frame it is put in; with
48
+ * no frame, or one that gives no height, it holds 4:1. Put it where the
49
+ * cover image would go and it sits quietly behind an avatar and a name.
50
+ *
51
+ * `PersonAvatar` deliberately draws no generated tile, because a coloured
52
+ * tile masks a missing photo by pretending to be one. A banner is different:
53
+ * a cover is decoration and carries no identity, so a stock one misleads
54
+ * nobody. It stands in for no particular picture, and the seed only keeps a
55
+ * list from repeating itself: it says nothing about the person.
56
+ *
57
+ * It is decoration: hidden from screen readers, with no children. It is not
58
+ * a placeholder while a real cover loads (that is `Skeleton`), not a
59
+ * stand-in for a photo or a logo, and not a surface to set text on: its
60
+ * colours promise no contrast to anything laid over it. An avatar that
61
+ * overlaps its edge wants a ring in the card's colour (`ring-4 ring-card`).
62
+ *
63
+ * Its styles are the kit's `styles/utilities.css` (`components/cover-banner.css`).
64
+ */
65
+ declare const CoverBanner: React.ForwardRefExoticComponent<CoverBannerProps & React.RefAttributes<HTMLDivElement>>;
66
+
67
+ export { COVER_BANNER_VARIANTS, CoverBanner, type CoverBannerProps, type CoverBannerVariant, coverBannerVariant };
@@ -0,0 +1,67 @@
1
+ import * as React from 'react';
2
+ import { HTMLAttributes } from 'react';
3
+
4
+ /**
5
+ * The stock designs, in the order a seed deals them:
6
+ *
7
+ * - `wash`: one soft diagonal gradient.
8
+ * - `glow`: two soft lights, one low on the near side and one high on the far.
9
+ * - `grid`: a wash under a faint ruled grid.
10
+ * - `dots`: a wash under a faint dot matrix.
11
+ * - `rings`: faint contour lines spreading from the far lower corner.
12
+ * - `arcs`: broad tonal bands curving round the far lower corner.
13
+ *
14
+ * The order and the number are part of the contract: a seed picks by
15
+ * position, so moving, removing or adding a design would deal everyone a
16
+ * different banner.
17
+ */
18
+ declare const COVER_BANNER_VARIANTS: readonly ["wash", "glow", "grid", "dots", "rings", "arcs"];
19
+ /** One of the stock designs, by name. */
20
+ type CoverBannerVariant = (typeof COVER_BANNER_VARIANTS)[number];
21
+ /**
22
+ * The design a seed picks: the same one every time, on the server and in the
23
+ * browser, with no randomness. The seed is read exactly as given (case and
24
+ * spaces count), so pass something that stays put: an id before a name. A
25
+ * number is read as its digits. No seed (`null`, `undefined` or `""`) is the
26
+ * first design.
27
+ */
28
+ declare function coverBannerVariant(seed: string | number | null | undefined): CoverBannerVariant;
29
+ interface CoverBannerProps extends Omit<HTMLAttributes<HTMLDivElement>, "children"> {
30
+ /**
31
+ * Picks one of the stock designs, the same one every time for the same
32
+ * seed: a person's id, or their name. One person keeps one banner, and a
33
+ * list of people isn't a wall of the same one.
34
+ */
35
+ seed?: string | number | null;
36
+ /** Names the design outright. Wins over `seed`. */
37
+ variant?: CoverBannerVariant;
38
+ }
39
+ /**
40
+ * A stock cover: the banner the kit draws for anything that has no cover
41
+ * image of its own, so a card without one is the same height as its
42
+ * neighbours and doesn't look bare.
43
+ *
44
+ * It is drawn in CSS from the palette's own tokens (the primary colour mixed
45
+ * into the muted surface, and into the foreground for a faint pattern), so it
46
+ * follows the palette, light and dark, and an `AccentTheme` around it, with
47
+ * no image, no request and no canvas. It fills the frame it is put in; with
48
+ * no frame, or one that gives no height, it holds 4:1. Put it where the
49
+ * cover image would go and it sits quietly behind an avatar and a name.
50
+ *
51
+ * `PersonAvatar` deliberately draws no generated tile, because a coloured
52
+ * tile masks a missing photo by pretending to be one. A banner is different:
53
+ * a cover is decoration and carries no identity, so a stock one misleads
54
+ * nobody. It stands in for no particular picture, and the seed only keeps a
55
+ * list from repeating itself: it says nothing about the person.
56
+ *
57
+ * It is decoration: hidden from screen readers, with no children. It is not
58
+ * a placeholder while a real cover loads (that is `Skeleton`), not a
59
+ * stand-in for a photo or a logo, and not a surface to set text on: its
60
+ * colours promise no contrast to anything laid over it. An avatar that
61
+ * overlaps its edge wants a ring in the card's colour (`ring-4 ring-card`).
62
+ *
63
+ * Its styles are the kit's `styles/utilities.css` (`components/cover-banner.css`).
64
+ */
65
+ declare const CoverBanner: React.ForwardRefExoticComponent<CoverBannerProps & React.RefAttributes<HTMLDivElement>>;
66
+
67
+ export { COVER_BANNER_VARIANTS, CoverBanner, type CoverBannerProps, type CoverBannerVariant, coverBannerVariant };
@@ -0,0 +1,41 @@
1
+ "use client";
2
+
3
+ // src/primitives/cover-banner.tsx
4
+ import { forwardRef } from "react";
5
+ import { jsx } from "react/jsx-runtime";
6
+ var COVER_BANNER_VARIANTS = ["wash", "glow", "grid", "dots", "rings", "arcs"];
7
+ function hashSeed(seed) {
8
+ let hash = 2166136261;
9
+ for (let index = 0; index < seed.length; index++) {
10
+ hash ^= seed.charCodeAt(index);
11
+ hash = Math.imul(hash, 16777619);
12
+ }
13
+ hash ^= hash >>> 16;
14
+ hash = Math.imul(hash, 2246822507);
15
+ hash ^= hash >>> 13;
16
+ hash = Math.imul(hash, 3266489909);
17
+ hash ^= hash >>> 16;
18
+ return hash >>> 0;
19
+ }
20
+ function coverBannerVariant(seed) {
21
+ const text = seed == null ? "" : String(seed);
22
+ if (text === "") return COVER_BANNER_VARIANTS[0];
23
+ return COVER_BANNER_VARIANTS[hashSeed(text) % COVER_BANNER_VARIANTS.length];
24
+ }
25
+ var CoverBanner = forwardRef(function CoverBanner2({ seed, variant, ...props }, ref) {
26
+ return /* @__PURE__ */ jsx(
27
+ "div",
28
+ {
29
+ ref,
30
+ ...props,
31
+ "aria-hidden": "true",
32
+ "data-slot": "cover-banner",
33
+ "data-variant": variant ?? coverBannerVariant(seed)
34
+ }
35
+ );
36
+ });
37
+ export {
38
+ COVER_BANNER_VARIANTS,
39
+ CoverBanner,
40
+ coverBannerVariant
41
+ };
@@ -5,10 +5,10 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkE2UVQXBOcjs = require('../chunk-E2UVQXBO.cjs');
9
- require('../chunk-AO56ET4F.cjs');
10
- require('../chunk-WDXEJDMO.cjs');
8
+ var _chunkTP74SBRHcjs = require('../chunk-TP74SBRH.cjs');
9
+ require('../chunk-BTHYGHOH.cjs');
11
10
  require('../chunk-2BHI5ZWJ.cjs');
11
+ require('../chunk-WDXEJDMO.cjs');
12
12
  require('../chunk-T2ZFSPE4.cjs');
13
13
  require('../chunk-JDEXZGIY.cjs');
14
14
  require('../chunk-KWLSBTB2.cjs');
@@ -29,7 +29,7 @@ function DocumentPreview({
29
29
  fallback
30
30
  }) {
31
31
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
32
- _chunkE2UVQXBOcjs.PreviewDialog,
32
+ _chunkTP74SBRHcjs.PreviewDialog,
33
33
  {
34
34
  open,
35
35
  onOpenChange,
@@ -37,7 +37,7 @@ function DocumentPreview({
37
37
  onDownload,
38
38
  downloading,
39
39
  downloadLabel,
40
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewLoading, { label: "Loading preview\u2026" }) : error ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewNotice, { icon: _lucidereact.FileWarning, alert: true, message: error, children: fallback }) : src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
40
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewLoading, { label: "Loading preview\u2026" }) : error ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewNotice, { icon: _lucidereact.FileWarning, alert: true, message: error, children: fallback }) : src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
41
41
  "iframe",
42
42
  {
43
43
  src,
@@ -5,10 +5,10 @@ import {
5
5
  PreviewLoading,
6
6
  PreviewNotice,
7
7
  PreviewStage
8
- } from "../chunk-FPOJ2NGG.js";
9
- import "../chunk-CRZ4INEJ.js";
10
- import "../chunk-3QT5VYZ3.js";
8
+ } from "../chunk-C3VZMTVB.js";
9
+ import "../chunk-JTI4244T.js";
11
10
  import "../chunk-4HWCNRK4.js";
11
+ import "../chunk-3QT5VYZ3.js";
12
12
  import "../chunk-KN4RPX35.js";
13
13
  import "../chunk-W326GKML.js";
14
14
  import "../chunk-G6SRSWXB.js";
@@ -5,10 +5,10 @@
5
5
 
6
6
 
7
7
 
8
- var _chunkE2UVQXBOcjs = require('../chunk-E2UVQXBO.cjs');
9
- require('../chunk-AO56ET4F.cjs');
10
- require('../chunk-WDXEJDMO.cjs');
8
+ var _chunkTP74SBRHcjs = require('../chunk-TP74SBRH.cjs');
9
+ require('../chunk-BTHYGHOH.cjs');
11
10
  require('../chunk-2BHI5ZWJ.cjs');
11
+ require('../chunk-WDXEJDMO.cjs');
12
12
  require('../chunk-T2ZFSPE4.cjs');
13
13
  require('../chunk-JDEXZGIY.cjs');
14
14
  require('../chunk-KWLSBTB2.cjs');
@@ -17,4 +17,4 @@ require('../chunk-KWLSBTB2.cjs');
17
17
 
18
18
 
19
19
 
20
- exports.PreviewDialog = _chunkE2UVQXBOcjs.PreviewDialog; exports.PreviewLoading = _chunkE2UVQXBOcjs.PreviewLoading; exports.PreviewNotice = _chunkE2UVQXBOcjs.PreviewNotice; exports.PreviewStage = _chunkE2UVQXBOcjs.PreviewStage;
20
+ exports.PreviewDialog = _chunkTP74SBRHcjs.PreviewDialog; exports.PreviewLoading = _chunkTP74SBRHcjs.PreviewLoading; exports.PreviewNotice = _chunkTP74SBRHcjs.PreviewNotice; exports.PreviewStage = _chunkTP74SBRHcjs.PreviewStage;
@@ -5,10 +5,10 @@ import {
5
5
  PreviewLoading,
6
6
  PreviewNotice,
7
7
  PreviewStage
8
- } from "../chunk-FPOJ2NGG.js";
9
- import "../chunk-CRZ4INEJ.js";
10
- import "../chunk-3QT5VYZ3.js";
8
+ } from "../chunk-C3VZMTVB.js";
9
+ import "../chunk-JTI4244T.js";
11
10
  import "../chunk-4HWCNRK4.js";
11
+ import "../chunk-3QT5VYZ3.js";
12
12
  import "../chunk-KN4RPX35.js";
13
13
  import "../chunk-W326GKML.js";
14
14
  import "../chunk-G6SRSWXB.js";
@@ -8,9 +8,8 @@ var _chunk4UUTKR3Vcjs = require('../chunk-4UUTKR3V.cjs');
8
8
 
9
9
 
10
10
 
11
- var _chunkE2UVQXBOcjs = require('../chunk-E2UVQXBO.cjs');
12
- require('../chunk-AO56ET4F.cjs');
13
- require('../chunk-WDXEJDMO.cjs');
11
+ var _chunkTP74SBRHcjs = require('../chunk-TP74SBRH.cjs');
12
+ require('../chunk-BTHYGHOH.cjs');
14
13
 
15
14
 
16
15
  var _chunkKENBU3NVcjs = require('../chunk-KENBU3NV.cjs');
@@ -18,9 +17,9 @@ require('../chunk-ELPV44S6.cjs');
18
17
  require('../chunk-2BHI5ZWJ.cjs');
19
18
 
20
19
 
21
- var _chunkPTMZTP3Vcjs = require('../chunk-PTMZTP3V.cjs');
22
- require('../chunk-HHF5DEKM.cjs');
23
- require('../chunk-4LXN6GLZ.cjs');
20
+ var _chunkBGCNGYPLcjs = require('../chunk-BGCNGYPL.cjs');
21
+ require('../chunk-FARCLWLU.cjs');
22
+ require('../chunk-WDXEJDMO.cjs');
24
23
 
25
24
 
26
25
  var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
@@ -31,6 +30,7 @@ var _chunkT2ZFSPE4cjs = require('../chunk-T2ZFSPE4.cjs');
31
30
 
32
31
  var _chunkJDEXZGIYcjs = require('../chunk-JDEXZGIY.cjs');
33
32
  require('../chunk-KWLSBTB2.cjs');
33
+ require('../chunk-4LXN6GLZ.cjs');
34
34
 
35
35
  // src/primitives/file-preview.tsx
36
36
  var _lucidereact = require('lucide-react');
@@ -155,7 +155,7 @@ function FilePreview({
155
155
  truncatedLabel = "Showing the start of this file. Download it to see the rest."
156
156
  }) {
157
157
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
158
- _chunkE2UVQXBOcjs.PreviewDialog,
158
+ _chunkTP74SBRHcjs.PreviewDialog,
159
159
  {
160
160
  open,
161
161
  onOpenChange,
@@ -266,22 +266,22 @@ function FilePreviewBody({
266
266
  const reads = kind === "text" || kind === "markdown";
267
267
  const text = useFileText(ready && reads ? file : null, ready && reads ? src : null);
268
268
  const objectUrl = useObjectUrl(ready && !reads ? file : null, kind === "pdf" ? "application/pdf" : void 0);
269
- const pending = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewLoading, { label: loadingLabel }) });
270
- const failed = (message) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewNotice, { icon: _lucidereact.FileWarning, alert: true, message, children: _nullishCoalesce(fallback, () => ( download)) }) });
269
+ const pending = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewLoading, { label: loadingLabel }) });
270
+ const failed = (message) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewNotice, { icon: _lucidereact.FileWarning, alert: true, message, children: _nullishCoalesce(fallback, () => ( download)) }) });
271
271
  if (loading) return pending;
272
272
  if (error) return failed(error);
273
273
  if (kind === "none" || !file && !src) {
274
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: _nullishCoalesce(fallback, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewNotice, { icon: _lucidereact.FileQuestion, message: unavailableLabel, children: download }))) });
274
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: _nullishCoalesce(fallback, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewNotice, { icon: _lucidereact.FileQuestion, message: unavailableLabel, children: download }))) });
275
275
  }
276
276
  if (reads) {
277
277
  if (!text || text.status === "reading") return pending;
278
278
  if (text.status === "failed") return failed(failedLabel);
279
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { layout: "scroll", label: `Preview of ${title}`, children: [
279
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { layout: "scroll", label: `Preview of ${title}`, children: [
280
280
  text.truncated && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk373W6VADcjs.Text, { variant: "caption", marginBottom: "sm", children: truncatedLabel }),
281
281
  kind === "markdown" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKENBU3NVcjs.LazyMarkdown, { components: { a: NewTabLink, ...markdownComponents }, children: text.text }) : (
282
282
  // The theme's relaxed leading is a fixed 1.8rem, which spaces a
283
283
  // file's small monospace lines apart; read it at 20px lines.
284
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPTMZTP3Vcjs.CodeBlock, { wrap: true, className: "[&>pre]:leading-5", children: text.text })
284
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBGCNGYPLcjs.CodeBlock, { wrap: true, className: "[&>pre]:leading-5", children: text.text })
285
285
  )
286
286
  ] });
287
287
  }
@@ -300,13 +300,13 @@ function ShownFile({
300
300
  const fail = () => setBroken(true);
301
301
  const label = `Preview of ${title}`;
302
302
  if (kind === "image") {
303
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4UUTKR3Vcjs.Image, { src: url, alt: title, fit: "contain", radius: "sm", className: "max-h-full max-w-full", onError: fail }) }) });
303
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4UUTKR3Vcjs.Image, { src: url, alt: title, fit: "contain", radius: "sm", className: "max-h-full max-w-full", onError: fail }) }) });
304
304
  }
305
305
  if (kind === "audio") {
306
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-md p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "audio", { src: url, controls: true, preload: "metadata", "aria-label": label, className: "w-full", onError: fail }) }) });
306
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-md p-6", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "audio", { src: url, controls: true, preload: "metadata", "aria-label": label, className: "w-full", onError: fail }) }) });
307
307
  }
308
308
  if (kind === "video") {
309
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
309
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
310
310
  "video",
311
311
  {
312
312
  src: url,
@@ -319,7 +319,7 @@ function ShownFile({
319
319
  }
320
320
  ) }) });
321
321
  }
322
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkE2UVQXBOcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "iframe", { src: url, title: label, referrerPolicy: "no-referrer", className: "h-full w-full border-0 bg-background" }) });
322
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTP74SBRHcjs.PreviewStage, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "iframe", { src: url, title: label, referrerPolicy: "no-referrer", className: "h-full w-full border-0 bg-background" }) });
323
323
  }
324
324
 
325
325
 
@@ -8,9 +8,8 @@ import {
8
8
  PreviewLoading,
9
9
  PreviewNotice,
10
10
  PreviewStage
11
- } from "../chunk-FPOJ2NGG.js";
12
- import "../chunk-CRZ4INEJ.js";
13
- import "../chunk-3QT5VYZ3.js";
11
+ } from "../chunk-C3VZMTVB.js";
12
+ import "../chunk-JTI4244T.js";
14
13
  import {
15
14
  LazyMarkdown
16
15
  } from "../chunk-VY5U4VGV.js";
@@ -18,9 +17,9 @@ import "../chunk-INNGGLMZ.js";
18
17
  import "../chunk-4HWCNRK4.js";
19
18
  import {
20
19
  CodeBlock
21
- } from "../chunk-AWCXVYPL.js";
22
- import "../chunk-7ZRFXJVN.js";
23
- import "../chunk-ZWZAAGQF.js";
20
+ } from "../chunk-HTPPNW74.js";
21
+ import "../chunk-DILYV4FI.js";
22
+ import "../chunk-3QT5VYZ3.js";
24
23
  import {
25
24
  Text
26
25
  } from "../chunk-EIY5LLSP.js";
@@ -31,6 +30,7 @@ import {
31
30
  Button
32
31
  } from "../chunk-W326GKML.js";
33
32
  import "../chunk-G6SRSWXB.js";
33
+ import "../chunk-ZWZAAGQF.js";
34
34
 
35
35
  // src/primitives/file-preview.tsx
36
36
  import { Download, FileQuestion, FileWarning, Loader2 } from "lucide-react";
@@ -2,19 +2,19 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkGUVQAWUWcjs = require('../chunk-GUVQAWUW.cjs');
5
+ var _chunkS2IMM37Qcjs = require('../chunk-S2IMM37Q.cjs');
6
6
  require('../chunk-WNXVGUBF.cjs');
7
7
  require('../chunk-IQZLUT2Y.cjs');
8
8
  require('../chunk-JH4GAGOQ.cjs');
9
- require('../chunk-V5SPFLKW.cjs');
10
9
  require('../chunk-VOTCYG3F.cjs');
10
+ require('../chunk-V5SPFLKW.cjs');
11
11
  require('../chunk-PPX2VPGI.cjs');
12
- require('../chunk-R35FT53G.cjs');
13
12
  require('../chunk-PQUSJEXL.cjs');
14
13
  require('../chunk-VGTINL5Q.cjs');
15
14
  require('../chunk-I6GUOEBO.cjs');
16
15
  require('../chunk-JDEXZGIY.cjs');
17
16
  require('../chunk-KWLSBTB2.cjs');
17
+ require('../chunk-R35FT53G.cjs');
18
18
 
19
19
 
20
- exports.FilterBar = _chunkGUVQAWUWcjs.FilterBar;
20
+ exports.FilterBar = _chunkS2IMM37Qcjs.FilterBar;
@@ -2,19 +2,19 @@
2
2
  "use client";
3
3
  import {
4
4
  FilterBar
5
- } from "../chunk-SW4T3O7M.js";
5
+ } from "../chunk-6LB37JWO.js";
6
6
  import "../chunk-YG7FBJRM.js";
7
7
  import "../chunk-E2TQMDO7.js";
8
8
  import "../chunk-OICAYRVH.js";
9
- import "../chunk-J6NXDZR5.js";
10
9
  import "../chunk-H2CCBRVG.js";
10
+ import "../chunk-J6NXDZR5.js";
11
11
  import "../chunk-G76JANB4.js";
12
- import "../chunk-PIU5SSUV.js";
13
12
  import "../chunk-QMA3WVB7.js";
14
13
  import "../chunk-H7TETFLB.js";
15
14
  import "../chunk-D4ZL2OEQ.js";
16
15
  import "../chunk-W326GKML.js";
17
16
  import "../chunk-G6SRSWXB.js";
17
+ import "../chunk-PIU5SSUV.js";
18
18
  export {
19
19
  FilterBar
20
20
  };
@@ -1,46 +1,9 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunk373W6VADcjs = require('../chunk-373W6VAD.cjs');
4
+ var _chunkBOMVE7QOcjs = require('../chunk-BOMVE7QO.cjs');
5
+ require('../chunk-373W6VAD.cjs');
6
+ require('../chunk-KWLSBTB2.cjs');
5
7
 
6
8
 
7
- var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
8
-
9
- // src/primitives/fixed-action-bar.tsx
10
- var _jsxruntime = require('react/jsx-runtime');
11
- var widthStyles = {
12
- compact: "max-w-2xl",
13
- narrow: "max-w-3xl",
14
- wide: "max-w-5xl",
15
- full: "max-w-none"
16
- };
17
- function FixedActionBar({
18
- title,
19
- description,
20
- children,
21
- width = "narrow",
22
- actionsWidth = "auto",
23
- className
24
- }) {
25
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26
- "aside",
27
- {
28
- "aria-label": "Page action",
29
- className: _chunkKWLSBTB2cjs.cn.call(void 0,
30
- "fixed inset-x-0 bottom-0 z-40 border-t border-border bg-background/95 backdrop-blur-sm",
31
- "pb-[env(safe-area-inset-bottom)] supports-backdrop-filter:bg-background/80",
32
- className
33
- ),
34
- children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "mx-auto flex items-center gap-4 px-4 py-3 md:px-6", title ? "justify-between" : "justify-end", widthStyles[width]), children: [
35
- title && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0", children: [
36
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk373W6VADcjs.Text, { className: "truncate font-medium", children: title }),
37
- description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk373W6VADcjs.Text, { variant: "muted", className: "text-sm", children: description })
38
- ] }),
39
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkKWLSBTB2cjs.cn.call(void 0, "shrink-0", actionsWidth === "full" && "w-full"), children })
40
- ] })
41
- }
42
- );
43
- }
44
-
45
-
46
- exports.FixedActionBar = FixedActionBar;
9
+ exports.FixedActionBar = _chunkBOMVE7QOcjs.FixedActionBar;