@epicbagel/saas-kit 1.4.0 → 1.6.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 (130) hide show
  1. package/README.md +57 -0
  2. package/dist/{chunk-GFG2R5BZ.js → chunk-2V7AVB2U.js} +1 -1
  3. package/dist/{chunk-LI5EOSQG.js → chunk-43UMPZWD.js} +1 -1
  4. package/dist/{chunk-XABXUP6L.cjs → chunk-5VMKDVB6.cjs} +2 -2
  5. package/dist/{chunk-QNZYQLNP.js → chunk-6S6GD43V.js} +1 -1
  6. package/dist/{chunk-WQJKUKBL.cjs → chunk-6YXKFVZU.cjs} +4 -4
  7. package/dist/{chunk-RIWLAMME.cjs → chunk-7LDJAXRX.cjs} +2 -2
  8. package/dist/{chunk-FNDBM67K.cjs → chunk-7YCKII7G.cjs} +2 -2
  9. package/dist/{chunk-2TKLS73N.js → chunk-C3VZMTVB.js} +1 -1
  10. package/dist/{chunk-G54TQV2R.cjs → chunk-CLYAASFN.cjs} +2 -2
  11. package/dist/{chunk-SGW4FWBX.cjs → chunk-CRTH5GJ5.cjs} +13 -13
  12. package/dist/{chunk-EZCKWTH7.js → chunk-CYDICVH2.js} +1 -1
  13. package/dist/{chunk-J3GQXM37.js → chunk-EEHIMPD7.js} +1 -1
  14. package/dist/{chunk-4NN7EA3W.js → chunk-ET4THLFX.js} +1 -1
  15. package/dist/{chunk-PNWNU6JW.cjs → chunk-EUFV25KL.cjs} +4 -4
  16. package/dist/{chunk-HHV4G77I.js → chunk-F3B4M6DU.js} +1 -1
  17. package/dist/{chunk-32Q4XOTU.cjs → chunk-FYRQFEU4.cjs} +2 -2
  18. package/dist/{chunk-VLXPLKFR.cjs → chunk-GTVSRRE3.cjs} +2 -2
  19. package/dist/{chunk-RRRD5EUI.js → chunk-H2CCBRVG.js} +1 -1
  20. package/dist/{chunk-JZOBIPFC.js → chunk-H4XH2PPU.js} +61 -2
  21. package/dist/{chunk-M7FYGAGO.js → chunk-HBRVOGLA.js} +1 -1
  22. package/dist/{chunk-NW3OWKBN.js → chunk-HREEZUKL.js} +1 -1
  23. package/dist/{chunk-THWIJG5C.js → chunk-IJG2B3Y2.js} +1 -1
  24. package/dist/{chunk-L4DH72UF.cjs → chunk-JDEXZGIY.cjs} +2 -1
  25. package/dist/{chunk-HRLP4BHJ.js → chunk-JN6JOSZG.js} +4 -4
  26. package/dist/{chunk-NE3ZVJ6G.cjs → chunk-KM5FHCXU.cjs} +8 -8
  27. package/dist/{chunk-MLHNYRFX.js → chunk-KNKV25WS.js} +2 -2
  28. package/dist/{chunk-23UMHZ4S.cjs → chunk-LIUYHYFN.cjs} +3 -3
  29. package/dist/{chunk-EOUO3ORO.cjs → chunk-LKPM6DQP.cjs} +3 -3
  30. package/dist/{chunk-SUB4BAYE.cjs → chunk-M4V7OJNF.cjs} +2 -2
  31. package/dist/{chunk-VKIGJNJR.cjs → chunk-MU4F3DSW.cjs} +2 -2
  32. package/dist/{chunk-2AU7ZRGX.cjs → chunk-NWDPH2Z7.cjs} +61 -2
  33. package/dist/{chunk-MHYAVXOE.js → chunk-QTPPNK6F.js} +1 -1
  34. package/dist/{chunk-IH3COANJ.cjs → chunk-QTWJQQDH.cjs} +12 -12
  35. package/dist/chunk-QZBPZLAB.js +24 -0
  36. package/dist/{chunk-HAC32ALJ.js → chunk-TI57GAQP.js} +1 -1
  37. package/dist/{chunk-GRY77463.cjs → chunk-TP74SBRH.cjs} +3 -3
  38. package/dist/chunk-VMXKT67E.cjs +24 -0
  39. package/dist/{chunk-R5L4CM6V.cjs → chunk-VOTCYG3F.cjs} +4 -4
  40. package/dist/{chunk-HQRWRRZJ.js → chunk-W326GKML.js} +2 -1
  41. package/dist/{chunk-HYSWE75T.js → chunk-WL73DFE3.js} +1 -1
  42. package/dist/{chunk-KADJ56AH.cjs → chunk-Z3JJSNR5.cjs} +2 -2
  43. package/dist/{chunk-FLPYZNWZ.js → chunk-ZLU32SRP.js} +1 -1
  44. package/dist/primitives/activity-feed.cjs +3 -3
  45. package/dist/primitives/activity-feed.js +2 -2
  46. package/dist/primitives/activity-log.cjs +3 -3
  47. package/dist/primitives/activity-log.js +2 -2
  48. package/dist/primitives/alert-dialog.cjs +3 -3
  49. package/dist/primitives/alert-dialog.js +2 -2
  50. package/dist/primitives/alert.d.cts +1 -1
  51. package/dist/primitives/alert.d.ts +1 -1
  52. package/dist/primitives/archive-confirmation-dialog.cjs +4 -4
  53. package/dist/primitives/archive-confirmation-dialog.js +3 -3
  54. package/dist/primitives/attachment.cjs +3 -3
  55. package/dist/primitives/attachment.js +2 -2
  56. package/dist/primitives/badge.d.cts +1 -1
  57. package/dist/primitives/badge.d.ts +1 -1
  58. package/dist/primitives/board-view.cjs +7 -7
  59. package/dist/primitives/board-view.js +6 -6
  60. package/dist/primitives/bubble.d.cts +1 -1
  61. package/dist/primitives/bubble.d.ts +1 -1
  62. package/dist/primitives/button.cjs +2 -2
  63. package/dist/primitives/button.d.cts +3 -3
  64. package/dist/primitives/button.d.ts +3 -3
  65. package/dist/primitives/button.js +1 -1
  66. package/dist/primitives/calendar.cjs +3 -3
  67. package/dist/primitives/calendar.js +2 -2
  68. package/dist/primitives/chat.cjs +144 -64
  69. package/dist/primitives/chat.d.cts +59 -3
  70. package/dist/primitives/chat.d.ts +59 -3
  71. package/dist/primitives/chat.js +104 -24
  72. package/dist/primitives/code-block.cjs +4 -4
  73. package/dist/primitives/code-block.js +3 -3
  74. package/dist/primitives/confirm-bar.cjs +3 -3
  75. package/dist/primitives/confirm-bar.js +1 -1
  76. package/dist/primitives/connection-status-bar.cjs +4 -4
  77. package/dist/primitives/connection-status-bar.js +1 -1
  78. package/dist/primitives/connection.cjs +13 -13
  79. package/dist/primitives/connection.js +3 -3
  80. package/dist/primitives/copy-button.cjs +3 -3
  81. package/dist/primitives/copy-button.js +2 -2
  82. package/dist/primitives/decision-actions.cjs +2 -2
  83. package/dist/primitives/decision-actions.js +1 -1
  84. package/dist/primitives/delete-confirmation-dialog.cjs +4 -4
  85. package/dist/primitives/delete-confirmation-dialog.js +3 -3
  86. package/dist/primitives/document-preview.cjs +4 -4
  87. package/dist/primitives/document-preview.js +2 -2
  88. package/dist/primitives/editable-list.cjs +6 -6
  89. package/dist/primitives/editable-list.js +1 -1
  90. package/dist/primitives/empty-state.cjs +3 -3
  91. package/dist/primitives/empty-state.js +2 -2
  92. package/dist/primitives/file-dropzone.cjs +3 -3
  93. package/dist/primitives/file-dropzone.js +2 -2
  94. package/dist/primitives/file-preview-internals.cjs +3 -3
  95. package/dist/primitives/file-preview-internals.js +2 -2
  96. package/dist/primitives/file-preview.cjs +15 -15
  97. package/dist/primitives/file-preview.js +4 -4
  98. package/dist/primitives/filter-bar.cjs +4 -4
  99. package/dist/primitives/filter-bar.js +3 -3
  100. package/dist/primitives/input-group.cjs +3 -3
  101. package/dist/primitives/input-group.js +2 -2
  102. package/dist/primitives/load-more-button.cjs +3 -3
  103. package/dist/primitives/load-more-button.js +2 -2
  104. package/dist/primitives/message-scroller.cjs +3 -3
  105. package/dist/primitives/message-scroller.js +2 -2
  106. package/dist/primitives/message.cjs +8 -2
  107. package/dist/primitives/message.d.cts +35 -1
  108. package/dist/primitives/message.d.ts +35 -1
  109. package/dist/primitives/message.js +7 -1
  110. package/dist/primitives/page-header-actions.cjs +3 -3
  111. package/dist/primitives/page-header-actions.js +2 -2
  112. package/dist/primitives/quick-filters.cjs +3 -3
  113. package/dist/primitives/quick-filters.js +2 -2
  114. package/dist/primitives/resource-list.cjs +7 -7
  115. package/dist/primitives/resource-list.js +6 -6
  116. package/dist/primitives/search-input.cjs +101 -0
  117. package/dist/primitives/search-input.d.cts +23 -0
  118. package/dist/primitives/search-input.d.ts +23 -0
  119. package/dist/primitives/search-input.js +101 -0
  120. package/dist/primitives/spinner.cjs +3 -18
  121. package/dist/primitives/spinner.js +3 -18
  122. package/dist/primitives/split-action-button.cjs +3 -3
  123. package/dist/primitives/split-action-button.js +1 -1
  124. package/dist/primitives/suggestion.cjs +3 -3
  125. package/dist/primitives/suggestion.js +2 -2
  126. package/dist/primitives/tag-input.cjs +3 -3
  127. package/dist/primitives/tag-input.js +1 -1
  128. package/dist/primitives/voice-dictation-button.cjs +3 -3
  129. package/dist/primitives/voice-dictation-button.js +2 -2
  130. package/package.json +11 -1
@@ -10,8 +10,8 @@
10
10
 
11
11
 
12
12
 
13
- var _chunkXABXUP6Lcjs = require('../chunk-XABXUP6L.cjs');
14
- require('../chunk-L4DH72UF.cjs');
13
+ var _chunk5VMKDVB6cjs = require('../chunk-5VMKDVB6.cjs');
14
+ require('../chunk-JDEXZGIY.cjs');
15
15
  require('../chunk-KWLSBTB2.cjs');
16
16
 
17
17
 
@@ -23,4 +23,4 @@ require('../chunk-KWLSBTB2.cjs');
23
23
 
24
24
 
25
25
 
26
- exports.MessageScroller = _chunkXABXUP6Lcjs.MessageScroller; exports.MessageScrollerButton = _chunkXABXUP6Lcjs.MessageScrollerButton; exports.MessageScrollerContent = _chunkXABXUP6Lcjs.MessageScrollerContent; exports.MessageScrollerItem = _chunkXABXUP6Lcjs.MessageScrollerItem; exports.MessageScrollerProvider = _chunkXABXUP6Lcjs.MessageScrollerProvider; exports.MessageScrollerViewport = _chunkXABXUP6Lcjs.MessageScrollerViewport; exports.useMessageScroller = _chunkXABXUP6Lcjs.useMessageScroller; exports.useMessageScrollerScrollable = _chunkXABXUP6Lcjs.useMessageScrollerScrollable; exports.useMessageScrollerVisibility = _chunkXABXUP6Lcjs.useMessageScrollerVisibility;
26
+ exports.MessageScroller = _chunk5VMKDVB6cjs.MessageScroller; exports.MessageScrollerButton = _chunk5VMKDVB6cjs.MessageScrollerButton; exports.MessageScrollerContent = _chunk5VMKDVB6cjs.MessageScrollerContent; exports.MessageScrollerItem = _chunk5VMKDVB6cjs.MessageScrollerItem; exports.MessageScrollerProvider = _chunk5VMKDVB6cjs.MessageScrollerProvider; exports.MessageScrollerViewport = _chunk5VMKDVB6cjs.MessageScrollerViewport; exports.useMessageScroller = _chunk5VMKDVB6cjs.useMessageScroller; exports.useMessageScrollerScrollable = _chunk5VMKDVB6cjs.useMessageScrollerScrollable; exports.useMessageScrollerVisibility = _chunk5VMKDVB6cjs.useMessageScrollerVisibility;
@@ -10,8 +10,8 @@ import {
10
10
  useMessageScroller,
11
11
  useMessageScrollerScrollable,
12
12
  useMessageScrollerVisibility
13
- } from "../chunk-GFG2R5BZ.js";
14
- import "../chunk-HQRWRRZJ.js";
13
+ } from "../chunk-2V7AVB2U.js";
14
+ import "../chunk-W326GKML.js";
15
15
  import "../chunk-G6SRSWXB.js";
16
16
  export {
17
17
  MessageScroller,
@@ -6,7 +6,11 @@
6
6
 
7
7
 
8
8
 
9
- var _chunk2AU7ZRGXcjs = require('../chunk-2AU7ZRGX.cjs');
9
+
10
+
11
+ var _chunkNWDPH2Z7cjs = require('../chunk-NWDPH2Z7.cjs');
12
+ require('../chunk-U2NES7VR.cjs');
13
+ require('../chunk-JDEXZGIY.cjs');
10
14
  require('../chunk-KWLSBTB2.cjs');
11
15
 
12
16
 
@@ -15,4 +19,6 @@ require('../chunk-KWLSBTB2.cjs');
15
19
 
16
20
 
17
21
 
18
- exports.Message = _chunk2AU7ZRGXcjs.Message; exports.MessageAvatar = _chunk2AU7ZRGXcjs.MessageAvatar; exports.MessageContent = _chunk2AU7ZRGXcjs.MessageContent; exports.MessageFooter = _chunk2AU7ZRGXcjs.MessageFooter; exports.MessageGroup = _chunk2AU7ZRGXcjs.MessageGroup; exports.MessageHeader = _chunk2AU7ZRGXcjs.MessageHeader;
22
+
23
+
24
+ exports.Message = _chunkNWDPH2Z7cjs.Message; exports.MessageAction = _chunkNWDPH2Z7cjs.MessageAction; exports.MessageActions = _chunkNWDPH2Z7cjs.MessageActions; exports.MessageAvatar = _chunkNWDPH2Z7cjs.MessageAvatar; exports.MessageContent = _chunkNWDPH2Z7cjs.MessageContent; exports.MessageFooter = _chunkNWDPH2Z7cjs.MessageFooter; exports.MessageGroup = _chunkNWDPH2Z7cjs.MessageGroup; exports.MessageHeader = _chunkNWDPH2Z7cjs.MessageHeader;
@@ -1,5 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
+ import { ButtonProps } from './button.cjs';
4
+ import { TooltipContent } from './tooltip.cjs';
5
+ import 'class-variance-authority/types';
6
+ import 'class-variance-authority';
7
+ import '@radix-ui/react-tooltip';
3
8
 
4
9
  declare function MessageGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
5
10
  declare function Message({ className, align, ...props }: React.ComponentProps<"div"> & {
@@ -9,5 +14,34 @@ declare function MessageAvatar({ className, ...props }: React.ComponentProps<"di
9
14
  declare function MessageContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
10
15
  declare function MessageHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
11
16
  declare function MessageFooter({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
17
+ /**
18
+ * A row of `MessageAction`s under a message: copy, then any others (a thumbs
19
+ * up or down). It sits at the message's side, the start of a turn from the
20
+ * other party and the end of one aligned to the end, and collapses when it
21
+ * holds nothing.
22
+ */
23
+ declare function MessageActions({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
24
+ type MessageActionProps = Omit<ButtonProps, "size" | "aria-label"> & {
25
+ /** What the action does: its tooltip, and its accessible name when it is text. */
26
+ tooltip: React.ReactNode;
27
+ /** The accessible name, for a `tooltip` that isn't plain text. */
28
+ label?: string;
29
+ /** Which side of the button the tooltip opens on. Defaults to `"bottom"`. */
30
+ side?: React.ComponentPropsWithoutRef<typeof TooltipContent>["side"];
31
+ };
32
+ /**
33
+ * One action in a `MessageActions` row: an icon-only ghost button (pass the
34
+ * icon as its child) with a tooltip and an accessible name. It is 2rem
35
+ * square, and 2.75rem on a touch screen, where the tooltip can't show on
36
+ * hover, so a finger has the kit's usual target.
37
+ */
38
+ declare const MessageAction: React.ForwardRefExoticComponent<Omit<ButtonProps, "aria-label" | "size"> & {
39
+ /** What the action does: its tooltip, and its accessible name when it is text. */
40
+ tooltip: React.ReactNode;
41
+ /** The accessible name, for a `tooltip` that isn't plain text. */
42
+ label?: string;
43
+ /** Which side of the button the tooltip opens on. Defaults to `"bottom"`. */
44
+ side?: React.ComponentPropsWithoutRef<typeof TooltipContent>["side"];
45
+ } & React.RefAttributes<HTMLButtonElement>>;
12
46
 
13
- export { Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader };
47
+ export { Message, MessageAction, type MessageActionProps, MessageActions, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader };
@@ -1,5 +1,10 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import * as React from 'react';
3
+ import { ButtonProps } from './button.js';
4
+ import { TooltipContent } from './tooltip.js';
5
+ import 'class-variance-authority/types';
6
+ import 'class-variance-authority';
7
+ import '@radix-ui/react-tooltip';
3
8
 
4
9
  declare function MessageGroup({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
5
10
  declare function Message({ className, align, ...props }: React.ComponentProps<"div"> & {
@@ -9,5 +14,34 @@ declare function MessageAvatar({ className, ...props }: React.ComponentProps<"di
9
14
  declare function MessageContent({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
10
15
  declare function MessageHeader({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
11
16
  declare function MessageFooter({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
17
+ /**
18
+ * A row of `MessageAction`s under a message: copy, then any others (a thumbs
19
+ * up or down). It sits at the message's side, the start of a turn from the
20
+ * other party and the end of one aligned to the end, and collapses when it
21
+ * holds nothing.
22
+ */
23
+ declare function MessageActions({ className, ...props }: React.ComponentProps<"div">): react_jsx_runtime.JSX.Element;
24
+ type MessageActionProps = Omit<ButtonProps, "size" | "aria-label"> & {
25
+ /** What the action does: its tooltip, and its accessible name when it is text. */
26
+ tooltip: React.ReactNode;
27
+ /** The accessible name, for a `tooltip` that isn't plain text. */
28
+ label?: string;
29
+ /** Which side of the button the tooltip opens on. Defaults to `"bottom"`. */
30
+ side?: React.ComponentPropsWithoutRef<typeof TooltipContent>["side"];
31
+ };
32
+ /**
33
+ * One action in a `MessageActions` row: an icon-only ghost button (pass the
34
+ * icon as its child) with a tooltip and an accessible name. It is 2rem
35
+ * square, and 2.75rem on a touch screen, where the tooltip can't show on
36
+ * hover, so a finger has the kit's usual target.
37
+ */
38
+ declare const MessageAction: React.ForwardRefExoticComponent<Omit<ButtonProps, "aria-label" | "size"> & {
39
+ /** What the action does: its tooltip, and its accessible name when it is text. */
40
+ tooltip: React.ReactNode;
41
+ /** The accessible name, for a `tooltip` that isn't plain text. */
42
+ label?: string;
43
+ /** Which side of the button the tooltip opens on. Defaults to `"bottom"`. */
44
+ side?: React.ComponentPropsWithoutRef<typeof TooltipContent>["side"];
45
+ } & React.RefAttributes<HTMLButtonElement>>;
12
46
 
13
- export { Message, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader };
47
+ export { Message, MessageAction, type MessageActionProps, MessageActions, MessageAvatar, MessageContent, MessageFooter, MessageGroup, MessageHeader };
@@ -1,15 +1,21 @@
1
1
  "use client";
2
2
  import {
3
3
  Message,
4
+ MessageAction,
5
+ MessageActions,
4
6
  MessageAvatar,
5
7
  MessageContent,
6
8
  MessageFooter,
7
9
  MessageGroup,
8
10
  MessageHeader
9
- } from "../chunk-JZOBIPFC.js";
11
+ } from "../chunk-H4XH2PPU.js";
12
+ import "../chunk-ZRLUUZHK.js";
13
+ import "../chunk-W326GKML.js";
10
14
  import "../chunk-G6SRSWXB.js";
11
15
  export {
12
16
  Message,
17
+ MessageAction,
18
+ MessageActions,
13
19
  MessageAvatar,
14
20
  MessageContent,
15
21
  MessageFooter,
@@ -2,10 +2,10 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkWQJKUKBLcjs = require('../chunk-WQJKUKBL.cjs');
5
+ var _chunk6YXKFVZUcjs = require('../chunk-6YXKFVZU.cjs');
6
6
  require('../chunk-ZAITUDYD.cjs');
7
- require('../chunk-L4DH72UF.cjs');
7
+ require('../chunk-JDEXZGIY.cjs');
8
8
  require('../chunk-KWLSBTB2.cjs');
9
9
 
10
10
 
11
- exports.PageHeaderActions = _chunkWQJKUKBLcjs.PageHeaderActions;
11
+ exports.PageHeaderActions = _chunk6YXKFVZUcjs.PageHeaderActions;
@@ -2,9 +2,9 @@
2
2
  "use client";
3
3
  import {
4
4
  PageHeaderActions
5
- } from "../chunk-QNZYQLNP.js";
5
+ } from "../chunk-6S6GD43V.js";
6
6
  import "../chunk-V4LE2HWP.js";
7
- import "../chunk-HQRWRRZJ.js";
7
+ import "../chunk-W326GKML.js";
8
8
  import "../chunk-G6SRSWXB.js";
9
9
  export {
10
10
  PageHeaderActions
@@ -2,9 +2,9 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkPNWNU6JWcjs = require('../chunk-PNWNU6JW.cjs');
6
- require('../chunk-L4DH72UF.cjs');
5
+ var _chunkEUFV25KLcjs = require('../chunk-EUFV25KL.cjs');
6
+ require('../chunk-JDEXZGIY.cjs');
7
7
  require('../chunk-KWLSBTB2.cjs');
8
8
 
9
9
 
10
- exports.QuickFilters = _chunkPNWNU6JWcjs.QuickFilters;
10
+ exports.QuickFilters = _chunkEUFV25KLcjs.QuickFilters;
@@ -2,8 +2,8 @@
2
2
  "use client";
3
3
  import {
4
4
  QuickFilters
5
- } from "../chunk-LI5EOSQG.js";
6
- import "../chunk-HQRWRRZJ.js";
5
+ } from "../chunk-43UMPZWD.js";
6
+ import "../chunk-W326GKML.js";
7
7
  import "../chunk-G6SRSWXB.js";
8
8
  export {
9
9
  QuickFilters
@@ -2,15 +2,15 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkIH3COANJcjs = require('../chunk-IH3COANJ.cjs');
6
- require('../chunk-PNWNU6JW.cjs');
7
- require('../chunk-FNDBM67K.cjs');
8
- require('../chunk-SGW4FWBX.cjs');
5
+ var _chunkQTWJQQDHcjs = require('../chunk-QTWJQQDH.cjs');
6
+ require('../chunk-EUFV25KL.cjs');
7
+ require('../chunk-7YCKII7G.cjs');
8
+ require('../chunk-CRTH5GJ5.cjs');
9
9
  require('../chunk-PPX2VPGI.cjs');
10
10
  require('../chunk-WNXVGUBF.cjs');
11
11
  require('../chunk-IQZLUT2Y.cjs');
12
12
  require('../chunk-LELBCBDT.cjs');
13
- require('../chunk-R5L4CM6V.cjs');
13
+ require('../chunk-VOTCYG3F.cjs');
14
14
  require('../chunk-U2NES7VR.cjs');
15
15
  require('../chunk-JH4GAGOQ.cjs');
16
16
  require('../chunk-YYFVG5A6.cjs');
@@ -20,9 +20,9 @@ require('../chunk-PQUSJEXL.cjs');
20
20
  require('../chunk-VGTINL5Q.cjs');
21
21
  require('../chunk-I6GUOEBO.cjs');
22
22
  require('../chunk-VBPPFC7X.cjs');
23
- require('../chunk-L4DH72UF.cjs');
23
+ require('../chunk-JDEXZGIY.cjs');
24
24
  require('../chunk-R35FT53G.cjs');
25
25
  require('../chunk-KWLSBTB2.cjs');
26
26
 
27
27
 
28
- exports.ResourceList = _chunkIH3COANJcjs.ResourceList;
28
+ exports.ResourceList = _chunkQTWJQQDHcjs.ResourceList;
@@ -2,15 +2,15 @@
2
2
  "use client";
3
3
  import {
4
4
  ResourceList
5
- } from "../chunk-HRLP4BHJ.js";
6
- import "../chunk-LI5EOSQG.js";
7
- import "../chunk-J3GQXM37.js";
8
- import "../chunk-MLHNYRFX.js";
5
+ } from "../chunk-JN6JOSZG.js";
6
+ import "../chunk-43UMPZWD.js";
7
+ import "../chunk-EEHIMPD7.js";
8
+ import "../chunk-KNKV25WS.js";
9
9
  import "../chunk-G76JANB4.js";
10
10
  import "../chunk-YG7FBJRM.js";
11
11
  import "../chunk-E2TQMDO7.js";
12
12
  import "../chunk-H2O6NMLZ.js";
13
- import "../chunk-RRRD5EUI.js";
13
+ import "../chunk-H2CCBRVG.js";
14
14
  import "../chunk-ZRLUUZHK.js";
15
15
  import "../chunk-OICAYRVH.js";
16
16
  import "../chunk-62UTAG2C.js";
@@ -20,7 +20,7 @@ import "../chunk-QMA3WVB7.js";
20
20
  import "../chunk-H7TETFLB.js";
21
21
  import "../chunk-D4ZL2OEQ.js";
22
22
  import "../chunk-YEW65ASC.js";
23
- import "../chunk-HQRWRRZJ.js";
23
+ import "../chunk-W326GKML.js";
24
24
  import "../chunk-PIU5SSUV.js";
25
25
  import "../chunk-G6SRSWXB.js";
26
26
  export {
@@ -0,0 +1,101 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); 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
+ "use client";
3
+
4
+
5
+ var _chunkVMXKT67Ecjs = require('../chunk-VMXKT67E.cjs');
6
+
7
+
8
+
9
+
10
+
11
+ var _chunk7LDJAXRXcjs = require('../chunk-7LDJAXRX.cjs');
12
+ require('../chunk-2HV2KKOE.cjs');
13
+ require('../chunk-PQUSJEXL.cjs');
14
+ require('../chunk-JDEXZGIY.cjs');
15
+
16
+
17
+ var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
18
+
19
+ // src/primitives/search-input.tsx
20
+ var _react = require('react');
21
+ var _lucidereact = require('lucide-react');
22
+ var _jsxruntime = require('react/jsx-runtime');
23
+ var SearchInput = _react.forwardRef.call(void 0, function SearchInput2({
24
+ label,
25
+ value,
26
+ onValueChange,
27
+ loading = false,
28
+ loadingLabel = "Searching\u2026",
29
+ clearLabel = "Clear search",
30
+ controlSize = "default",
31
+ placeholder = label,
32
+ disabled = false,
33
+ readOnly = false,
34
+ className,
35
+ onKeyDown,
36
+ ...inputProps
37
+ }, ref) {
38
+ const inputRef = _react.useRef.call(void 0, null);
39
+ _react.useImperativeHandle.call(void 0, ref, () => inputRef.current);
40
+ const canClear = value.length > 0 && !disabled && !readOnly;
41
+ const clear = () => {
42
+ if (!canClear) return;
43
+ onValueChange("");
44
+ _optionalChain([inputRef, 'access', _ => _.current, 'optionalAccess', _2 => _2.focus, 'call', _3 => _3()]);
45
+ };
46
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
47
+ _chunk7LDJAXRXcjs.InputGroup,
48
+ {
49
+ "data-slot": "search-input",
50
+ "data-disabled": disabled || void 0,
51
+ "aria-busy": loading || void 0,
52
+ className: _chunkKWLSBTB2cjs.cn.call(void 0,
53
+ "w-full rounded-full border-0 bg-muted px-1 shadow-none dark:bg-muted",
54
+ "has-[[data-slot=input-group-control]:focus-visible]:ring-2",
55
+ controlSize === "lg" ? "h-[48px]" : "h-[44px]",
56
+ disabled ? "opacity-60" : "hover:bg-muted/80",
57
+ className
58
+ ),
59
+ children: [
60
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7LDJAXRXcjs.InputGroupAddon, { align: "inline-start", className: "shrink-0 pl-3", children: loading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVMXKT67Ecjs.Spinner, { "aria-label": loadingLabel, className: "size-5" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Search, { "aria-hidden": true, className: "size-5" }) }),
61
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
62
+ _chunk7LDJAXRXcjs.InputGroupInput,
63
+ {
64
+ ...inputProps,
65
+ ref: inputRef,
66
+ type: "search",
67
+ "aria-label": label,
68
+ value,
69
+ placeholder,
70
+ disabled,
71
+ readOnly,
72
+ onChange: (event) => onValueChange(event.target.value),
73
+ onKeyDown: (event) => {
74
+ _optionalChain([onKeyDown, 'optionalCall', _4 => _4(event)]);
75
+ if (event.defaultPrevented || event.nativeEvent.isComposing || event.key !== "Escape" || !canClear) return;
76
+ event.preventDefault();
77
+ event.stopPropagation();
78
+ clear();
79
+ },
80
+ className: "h-full rounded-none pe-3 [&::-webkit-search-cancel-button]:hidden [&::-webkit-search-decoration]:hidden"
81
+ }
82
+ ),
83
+ value.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7LDJAXRXcjs.InputGroupAddon, { align: "inline-end", className: "shrink-0 p-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
84
+ _chunk7LDJAXRXcjs.InputGroupButton,
85
+ {
86
+ size: "icon-sm",
87
+ shape: "circle",
88
+ "aria-label": clearLabel,
89
+ disabled: disabled || readOnly,
90
+ onClick: clear,
91
+ className: "size-[44px] shrink-0",
92
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { "aria-hidden": true })
93
+ }
94
+ ) })
95
+ ]
96
+ }
97
+ );
98
+ });
99
+
100
+
101
+ exports.SearchInput = SearchInput;
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { InputHTMLAttributes } from 'react';
3
+
4
+ interface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "defaultValue" | "onChange" | "size"> {
5
+ /** Accessible name, also used as the placeholder unless one is supplied. */
6
+ label: string;
7
+ value: string;
8
+ onValueChange: (value: string) => void;
9
+ /** Replaces the search icon with an accessible loading indicator. */
10
+ loading?: boolean;
11
+ loadingLabel?: string;
12
+ clearLabel?: string;
13
+ /** Fixed pixel heights keep touch targets usable with any root font size. */
14
+ controlSize?: "default" | "lg";
15
+ }
16
+ /**
17
+ * A full-width search field on a quiet, rounded surface. The clear control
18
+ * and Escape clear its controlled value while keeping focus in the input.
19
+ * Fetching, debouncing and result ownership remain with the caller.
20
+ */
21
+ declare const SearchInput: React.ForwardRefExoticComponent<SearchInputProps & React.RefAttributes<HTMLInputElement>>;
22
+
23
+ export { SearchInput, type SearchInputProps };
@@ -0,0 +1,23 @@
1
+ import * as React from 'react';
2
+ import { InputHTMLAttributes } from 'react';
3
+
4
+ interface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, "type" | "value" | "defaultValue" | "onChange" | "size"> {
5
+ /** Accessible name, also used as the placeholder unless one is supplied. */
6
+ label: string;
7
+ value: string;
8
+ onValueChange: (value: string) => void;
9
+ /** Replaces the search icon with an accessible loading indicator. */
10
+ loading?: boolean;
11
+ loadingLabel?: string;
12
+ clearLabel?: string;
13
+ /** Fixed pixel heights keep touch targets usable with any root font size. */
14
+ controlSize?: "default" | "lg";
15
+ }
16
+ /**
17
+ * A full-width search field on a quiet, rounded surface. The clear control
18
+ * and Escape clear its controlled value while keeping focus in the input.
19
+ * Fetching, debouncing and result ownership remain with the caller.
20
+ */
21
+ declare const SearchInput: React.ForwardRefExoticComponent<SearchInputProps & React.RefAttributes<HTMLInputElement>>;
22
+
23
+ export { SearchInput, type SearchInputProps };
@@ -0,0 +1,101 @@
1
+ "use client";
2
+ "use client";
3
+ import {
4
+ Spinner
5
+ } from "../chunk-QZBPZLAB.js";
6
+ import {
7
+ InputGroup,
8
+ InputGroupAddon,
9
+ InputGroupButton,
10
+ InputGroupInput
11
+ } from "../chunk-QTPPNK6F.js";
12
+ import "../chunk-6FC65AZQ.js";
13
+ import "../chunk-QMA3WVB7.js";
14
+ import "../chunk-W326GKML.js";
15
+ import {
16
+ cn
17
+ } from "../chunk-G6SRSWXB.js";
18
+
19
+ // src/primitives/search-input.tsx
20
+ import { forwardRef, useImperativeHandle, useRef } from "react";
21
+ import { Search, X } from "lucide-react";
22
+ import { jsx, jsxs } from "react/jsx-runtime";
23
+ var SearchInput = forwardRef(function SearchInput2({
24
+ label,
25
+ value,
26
+ onValueChange,
27
+ loading = false,
28
+ loadingLabel = "Searching\u2026",
29
+ clearLabel = "Clear search",
30
+ controlSize = "default",
31
+ placeholder = label,
32
+ disabled = false,
33
+ readOnly = false,
34
+ className,
35
+ onKeyDown,
36
+ ...inputProps
37
+ }, ref) {
38
+ const inputRef = useRef(null);
39
+ useImperativeHandle(ref, () => inputRef.current);
40
+ const canClear = value.length > 0 && !disabled && !readOnly;
41
+ const clear = () => {
42
+ if (!canClear) return;
43
+ onValueChange("");
44
+ inputRef.current?.focus();
45
+ };
46
+ return /* @__PURE__ */ jsxs(
47
+ InputGroup,
48
+ {
49
+ "data-slot": "search-input",
50
+ "data-disabled": disabled || void 0,
51
+ "aria-busy": loading || void 0,
52
+ className: cn(
53
+ "w-full rounded-full border-0 bg-muted px-1 shadow-none dark:bg-muted",
54
+ "has-[[data-slot=input-group-control]:focus-visible]:ring-2",
55
+ controlSize === "lg" ? "h-[48px]" : "h-[44px]",
56
+ disabled ? "opacity-60" : "hover:bg-muted/80",
57
+ className
58
+ ),
59
+ children: [
60
+ /* @__PURE__ */ jsx(InputGroupAddon, { align: "inline-start", className: "shrink-0 pl-3", children: loading ? /* @__PURE__ */ jsx(Spinner, { "aria-label": loadingLabel, className: "size-5" }) : /* @__PURE__ */ jsx(Search, { "aria-hidden": true, className: "size-5" }) }),
61
+ /* @__PURE__ */ jsx(
62
+ InputGroupInput,
63
+ {
64
+ ...inputProps,
65
+ ref: inputRef,
66
+ type: "search",
67
+ "aria-label": label,
68
+ value,
69
+ placeholder,
70
+ disabled,
71
+ readOnly,
72
+ onChange: (event) => onValueChange(event.target.value),
73
+ onKeyDown: (event) => {
74
+ onKeyDown?.(event);
75
+ if (event.defaultPrevented || event.nativeEvent.isComposing || event.key !== "Escape" || !canClear) return;
76
+ event.preventDefault();
77
+ event.stopPropagation();
78
+ clear();
79
+ },
80
+ className: "h-full rounded-none pe-3 [&::-webkit-search-cancel-button]:hidden [&::-webkit-search-decoration]:hidden"
81
+ }
82
+ ),
83
+ value.length > 0 && /* @__PURE__ */ jsx(InputGroupAddon, { align: "inline-end", className: "shrink-0 p-0", children: /* @__PURE__ */ jsx(
84
+ InputGroupButton,
85
+ {
86
+ size: "icon-sm",
87
+ shape: "circle",
88
+ "aria-label": clearLabel,
89
+ disabled: disabled || readOnly,
90
+ onClick: clear,
91
+ className: "size-[44px] shrink-0",
92
+ children: /* @__PURE__ */ jsx(X, { "aria-hidden": true })
93
+ }
94
+ ) })
95
+ ]
96
+ }
97
+ );
98
+ });
99
+ export {
100
+ SearchInput
101
+ };
@@ -1,23 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
2
 
3
3
 
4
- var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
4
+ var _chunkVMXKT67Ecjs = require('../chunk-VMXKT67E.cjs');
5
+ require('../chunk-KWLSBTB2.cjs');
5
6
 
6
- // src/primitives/spinner.tsx
7
- var _lucidereact = require('lucide-react');
8
- var _jsxruntime = require('react/jsx-runtime');
9
- function Spinner({ className, ...props }) {
10
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
11
- _lucidereact.Loader2,
12
- {
13
- "data-slot": "spinner",
14
- role: "status",
15
- "aria-label": "Loading",
16
- className: _chunkKWLSBTB2cjs.cn.call(void 0, "size-4 animate-spin", className),
17
- ...props
18
- }
19
- );
20
- }
21
7
 
22
-
23
- exports.Spinner = Spinner;
8
+ exports.Spinner = _chunkVMXKT67Ecjs.Spinner;
@@ -1,23 +1,8 @@
1
1
  "use client";
2
2
  import {
3
- cn
4
- } from "../chunk-G6SRSWXB.js";
5
-
6
- // src/primitives/spinner.tsx
7
- import { Loader2 } from "lucide-react";
8
- import { jsx } from "react/jsx-runtime";
9
- function Spinner({ className, ...props }) {
10
- return /* @__PURE__ */ jsx(
11
- Loader2,
12
- {
13
- "data-slot": "spinner",
14
- role: "status",
15
- "aria-label": "Loading",
16
- className: cn("size-4 animate-spin", className),
17
- ...props
18
- }
19
- );
20
- }
3
+ Spinner
4
+ } from "../chunk-QZBPZLAB.js";
5
+ import "../chunk-G6SRSWXB.js";
21
6
  export {
22
7
  Spinner
23
8
  };
@@ -9,7 +9,7 @@
9
9
  var _chunkZAITUDYDcjs = require('../chunk-ZAITUDYD.cjs');
10
10
 
11
11
 
12
- var _chunkL4DH72UFcjs = require('../chunk-L4DH72UF.cjs');
12
+ var _chunkJDEXZGIYcjs = require('../chunk-JDEXZGIY.cjs');
13
13
 
14
14
 
15
15
  var _chunkKWLSBTB2cjs = require('../chunk-KWLSBTB2.cjs');
@@ -35,7 +35,7 @@ var SplitActionButton = _react.forwardRef.call(void 0, function SplitActionButto
35
35
  }, ref) {
36
36
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _chunkKWLSBTB2cjs.cn.call(void 0, "inline-flex items-stretch", className), children: [
37
37
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
38
- _chunkL4DH72UFcjs.Button,
38
+ _chunkJDEXZGIYcjs.Button,
39
39
  {
40
40
  size,
41
41
  variant,
@@ -53,7 +53,7 @@ var SplitActionButton = _react.forwardRef.call(void 0, function SplitActionButto
53
53
  ),
54
54
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkZAITUDYDcjs.DropdownMenu, { children: [
55
55
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZAITUDYDcjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
56
- _chunkL4DH72UFcjs.Button,
56
+ _chunkJDEXZGIYcjs.Button,
57
57
  {
58
58
  size,
59
59
  variant,
@@ -9,7 +9,7 @@ import {
9
9
  } from "../chunk-V4LE2HWP.js";
10
10
  import {
11
11
  Button
12
- } from "../chunk-HQRWRRZJ.js";
12
+ } from "../chunk-W326GKML.js";
13
13
  import {
14
14
  cn
15
15
  } from "../chunk-G6SRSWXB.js";
@@ -2,10 +2,10 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkSUB4BAYEcjs = require('../chunk-SUB4BAYE.cjs');
6
- require('../chunk-L4DH72UF.cjs');
5
+ var _chunkM4V7OJNFcjs = require('../chunk-M4V7OJNF.cjs');
6
+ require('../chunk-JDEXZGIY.cjs');
7
7
  require('../chunk-KWLSBTB2.cjs');
8
8
 
9
9
 
10
10
 
11
- exports.Suggestion = _chunkSUB4BAYEcjs.Suggestion; exports.Suggestions = _chunkSUB4BAYEcjs.Suggestions;
11
+ exports.Suggestion = _chunkM4V7OJNFcjs.Suggestion; exports.Suggestions = _chunkM4V7OJNFcjs.Suggestions;
@@ -2,8 +2,8 @@
2
2
  import {
3
3
  Suggestion,
4
4
  Suggestions
5
- } from "../chunk-THWIJG5C.js";
6
- import "../chunk-HQRWRRZJ.js";
5
+ } from "../chunk-IJG2B3Y2.js";
6
+ import "../chunk-W326GKML.js";
7
7
  import "../chunk-G6SRSWXB.js";
8
8
  export {
9
9
  Suggestion,