@epicbagel/saas-kit 1.5.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 (128) hide show
  1. package/README.md +22 -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-FGISSYXG.js → chunk-H4XH2PPU.js} +1 -1
  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-LAN3K2JI.cjs → chunk-NWDPH2Z7.cjs} +2 -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 +85 -58
  69. package/dist/primitives/chat.d.cts +13 -1
  70. package/dist/primitives/chat.d.ts +13 -1
  71. package/dist/primitives/chat.js +50 -23
  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 +3 -3
  107. package/dist/primitives/message.js +2 -2
  108. package/dist/primitives/page-header-actions.cjs +3 -3
  109. package/dist/primitives/page-header-actions.js +2 -2
  110. package/dist/primitives/quick-filters.cjs +3 -3
  111. package/dist/primitives/quick-filters.js +2 -2
  112. package/dist/primitives/resource-list.cjs +7 -7
  113. package/dist/primitives/resource-list.js +6 -6
  114. package/dist/primitives/search-input.cjs +101 -0
  115. package/dist/primitives/search-input.d.cts +23 -0
  116. package/dist/primitives/search-input.d.ts +23 -0
  117. package/dist/primitives/search-input.js +101 -0
  118. package/dist/primitives/spinner.cjs +3 -18
  119. package/dist/primitives/spinner.js +3 -18
  120. package/dist/primitives/split-action-button.cjs +3 -3
  121. package/dist/primitives/split-action-button.js +1 -1
  122. package/dist/primitives/suggestion.cjs +3 -3
  123. package/dist/primitives/suggestion.js +2 -2
  124. package/dist/primitives/tag-input.cjs +3 -3
  125. package/dist/primitives/tag-input.js +1 -1
  126. package/dist/primitives/voice-dictation-button.cjs +3 -3
  127. package/dist/primitives/voice-dictation-button.js +2 -2
  128. package/package.json +11 -1
@@ -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,
@@ -11,7 +11,7 @@ var _chunkPQUSJEXLcjs = require('../chunk-PQUSJEXL.cjs');
11
11
  var _chunkI6GUOEBOcjs = require('../chunk-I6GUOEBO.cjs');
12
12
 
13
13
 
14
- var _chunkL4DH72UFcjs = require('../chunk-L4DH72UF.cjs');
14
+ var _chunkJDEXZGIYcjs = require('../chunk-JDEXZGIY.cjs');
15
15
  require('../chunk-KWLSBTB2.cjs');
16
16
 
17
17
  // src/primitives/tag-input.tsx
@@ -48,7 +48,7 @@ function TagInput({
48
48
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-2", children: value.map((tag) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkI6GUOEBOcjs.Badge, { variant: "secondary", className: "text-sm", children: [
49
49
  tag,
50
50
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
51
- _chunkL4DH72UFcjs.Button,
51
+ _chunkJDEXZGIYcjs.Button,
52
52
  {
53
53
  variant: "ghost",
54
54
  size: "sm",
@@ -72,7 +72,7 @@ function TagInput({
72
72
  }
73
73
  ),
74
74
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
75
- _chunkL4DH72UFcjs.Button,
75
+ _chunkJDEXZGIYcjs.Button,
76
76
  {
77
77
  type: "button",
78
78
  variant: "outline",
@@ -11,7 +11,7 @@ import {
11
11
  } from "../chunk-D4ZL2OEQ.js";
12
12
  import {
13
13
  Button
14
- } from "../chunk-HQRWRRZJ.js";
14
+ } from "../chunk-W326GKML.js";
15
15
  import "../chunk-G6SRSWXB.js";
16
16
 
17
17
  // src/primitives/tag-input.tsx
@@ -2,9 +2,9 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkEOUO3OROcjs = require('../chunk-EOUO3ORO.cjs');
6
- require('../chunk-L4DH72UF.cjs');
5
+ var _chunkLKPM6DQPcjs = require('../chunk-LKPM6DQP.cjs');
6
+ require('../chunk-JDEXZGIY.cjs');
7
7
  require('../chunk-KWLSBTB2.cjs');
8
8
 
9
9
 
10
- exports.VoiceDictationButton = _chunkEOUO3OROcjs.VoiceDictationButton;
10
+ exports.VoiceDictationButton = _chunkLKPM6DQPcjs.VoiceDictationButton;
@@ -2,8 +2,8 @@
2
2
  "use client";
3
3
  import {
4
4
  VoiceDictationButton
5
- } from "../chunk-HAC32ALJ.js";
6
- import "../chunk-HQRWRRZJ.js";
5
+ } from "../chunk-TI57GAQP.js";
6
+ import "../chunk-W326GKML.js";
7
7
  import "../chunk-G6SRSWXB.js";
8
8
  export {
9
9
  VoiceDictationButton
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epicbagel/saas-kit",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "Accessible React primitives, layout components and design tokens for SaaS apps, built on Radix UI and Tailwind CSS v4.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -920,6 +920,16 @@
920
920
  "default": "./dist/primitives/scroll-area.cjs"
921
921
  }
922
922
  },
923
+ "./primitives/search-input": {
924
+ "import": {
925
+ "types": "./dist/primitives/search-input.d.ts",
926
+ "default": "./dist/primitives/search-input.js"
927
+ },
928
+ "require": {
929
+ "types": "./dist/primitives/search-input.d.cts",
930
+ "default": "./dist/primitives/search-input.cjs"
931
+ }
932
+ },
923
933
  "./primitives/section-header": {
924
934
  "import": {
925
935
  "types": "./dist/primitives/section-header.d.ts",