@particle-academy/react-fancy 5.30.0 → 5.32.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 (164) hide show
  1. package/CHANGELOG.md +1784 -0
  2. package/dist/accordion-panel.cjs +8 -8
  3. package/dist/accordion-panel.js +2 -2
  4. package/dist/autocomplete.cjs +3 -3
  5. package/dist/autocomplete.js +2 -2
  6. package/dist/carousel.cjs +8 -8
  7. package/dist/carousel.js +2 -2
  8. package/dist/checkbox-group.cjs +3 -3
  9. package/dist/checkbox-group.js +2 -2
  10. package/dist/checkbox.cjs +3 -3
  11. package/dist/checkbox.js +2 -2
  12. package/dist/{chunk-TQFQUNV3.js → chunk-2KAJ4L7C.js} +3 -3
  13. package/dist/{chunk-TQFQUNV3.js.map → chunk-2KAJ4L7C.js.map} +1 -1
  14. package/dist/{chunk-L5KKMJ2Q.js → chunk-2VIDYJUG.js} +3 -3
  15. package/dist/{chunk-L5KKMJ2Q.js.map → chunk-2VIDYJUG.js.map} +1 -1
  16. package/dist/{chunk-3EIB7RPD.cjs → chunk-3Q4NSAEA.cjs} +4 -4
  17. package/dist/{chunk-3EIB7RPD.cjs.map → chunk-3Q4NSAEA.cjs.map} +1 -1
  18. package/dist/{chunk-H6F6ZWAG.js → chunk-4HRD4S25.js} +3 -3
  19. package/dist/{chunk-H6F6ZWAG.js.map → chunk-4HRD4S25.js.map} +1 -1
  20. package/dist/{chunk-LY7PZEF4.cjs → chunk-6IBBAOQC.cjs} +4 -4
  21. package/dist/{chunk-LY7PZEF4.cjs.map → chunk-6IBBAOQC.cjs.map} +1 -1
  22. package/dist/{chunk-RFLPFQFF.js → chunk-BMTTSBHF.js} +3 -3
  23. package/dist/{chunk-RFLPFQFF.js.map → chunk-BMTTSBHF.js.map} +1 -1
  24. package/dist/{chunk-ASCATIDJ.js → chunk-BQ77ZWFM.js} +6 -6
  25. package/dist/{chunk-ASCATIDJ.js.map → chunk-BQ77ZWFM.js.map} +1 -1
  26. package/dist/{chunk-JM2H642B.cjs → chunk-BVRPDMB7.cjs} +4 -4
  27. package/dist/{chunk-JM2H642B.cjs.map → chunk-BVRPDMB7.cjs.map} +1 -1
  28. package/dist/{chunk-JDRKYYXP.cjs → chunk-BZDXX6E3.cjs} +4 -4
  29. package/dist/{chunk-JDRKYYXP.cjs.map → chunk-BZDXX6E3.cjs.map} +1 -1
  30. package/dist/{chunk-VUKIFFWK.cjs → chunk-BZZDHDMK.cjs} +5 -5
  31. package/dist/{chunk-VUKIFFWK.cjs.map → chunk-BZZDHDMK.cjs.map} +1 -1
  32. package/dist/{chunk-6SO2ZX3J.cjs → chunk-DHIUMQLP.cjs} +4 -4
  33. package/dist/{chunk-6SO2ZX3J.cjs.map → chunk-DHIUMQLP.cjs.map} +1 -1
  34. package/dist/chunk-EDYAXGUM.js +27 -0
  35. package/dist/chunk-EDYAXGUM.js.map +1 -0
  36. package/dist/{chunk-MRRKDRZU.js → chunk-EIUS2K72.js} +3 -3
  37. package/dist/{chunk-MRRKDRZU.js.map → chunk-EIUS2K72.js.map} +1 -1
  38. package/dist/{chunk-6PF5ENWM.js → chunk-F2GAZZVS.js} +3 -3
  39. package/dist/{chunk-6PF5ENWM.js.map → chunk-F2GAZZVS.js.map} +1 -1
  40. package/dist/{chunk-VME5743O.js → chunk-FNEPZ33A.js} +3 -3
  41. package/dist/{chunk-VME5743O.js.map → chunk-FNEPZ33A.js.map} +1 -1
  42. package/dist/{chunk-JP4C3ROX.js → chunk-FNJDMGJ3.js} +3 -3
  43. package/dist/{chunk-JP4C3ROX.js.map → chunk-FNJDMGJ3.js.map} +1 -1
  44. package/dist/{chunk-UA2C2U3M.cjs → chunk-FPZYPD3N.cjs} +4 -4
  45. package/dist/{chunk-UA2C2U3M.cjs.map → chunk-FPZYPD3N.cjs.map} +1 -1
  46. package/dist/{chunk-SX4CSO6C.js → chunk-FSRPZYZZ.js} +3 -3
  47. package/dist/{chunk-SX4CSO6C.js.map → chunk-FSRPZYZZ.js.map} +1 -1
  48. package/dist/{chunk-IRD6UXDK.cjs → chunk-FVTCPERB.cjs} +5 -5
  49. package/dist/{chunk-IRD6UXDK.cjs.map → chunk-FVTCPERB.cjs.map} +1 -1
  50. package/dist/{chunk-FUG3OCGP.js → chunk-G73TVXDQ.js} +3 -3
  51. package/dist/{chunk-FUG3OCGP.js.map → chunk-G73TVXDQ.js.map} +1 -1
  52. package/dist/{chunk-LHNC42J3.cjs → chunk-IPNJMHJ3.cjs} +4 -4
  53. package/dist/{chunk-LHNC42J3.cjs.map → chunk-IPNJMHJ3.cjs.map} +1 -1
  54. package/dist/{chunk-PIFJECFU.js → chunk-LBU3T2LF.js} +3 -3
  55. package/dist/{chunk-PIFJECFU.js.map → chunk-LBU3T2LF.js.map} +1 -1
  56. package/dist/{chunk-YAJYIRQL.cjs → chunk-LLA33GKC.cjs} +4 -4
  57. package/dist/{chunk-YAJYIRQL.cjs.map → chunk-LLA33GKC.cjs.map} +1 -1
  58. package/dist/{chunk-HIOMHITU.cjs → chunk-LQFQ2UKU.cjs} +5 -5
  59. package/dist/{chunk-HIOMHITU.cjs.map → chunk-LQFQ2UKU.cjs.map} +1 -1
  60. package/dist/{chunk-6ZDXG5VC.js → chunk-NBAHXZHJ.js} +3 -3
  61. package/dist/{chunk-6ZDXG5VC.js.map → chunk-NBAHXZHJ.js.map} +1 -1
  62. package/dist/{chunk-IUT3Q2EC.js → chunk-NE3Z4AWP.js} +3 -3
  63. package/dist/{chunk-IUT3Q2EC.js.map → chunk-NE3Z4AWP.js.map} +1 -1
  64. package/dist/{chunk-MIUSTEIV.js → chunk-O2ZHORSC.js} +3 -3
  65. package/dist/{chunk-MIUSTEIV.js.map → chunk-O2ZHORSC.js.map} +1 -1
  66. package/dist/{chunk-L2FPIFMN.js → chunk-OC75GWX5.js} +3 -3
  67. package/dist/{chunk-L2FPIFMN.js.map → chunk-OC75GWX5.js.map} +1 -1
  68. package/dist/{chunk-GKEWT3DW.js → chunk-OTCLBINT.js} +3 -3
  69. package/dist/{chunk-GKEWT3DW.js.map → chunk-OTCLBINT.js.map} +1 -1
  70. package/dist/{chunk-XXBW4EUO.js → chunk-P7Q2YIIS.js} +3 -3
  71. package/dist/{chunk-XXBW4EUO.js.map → chunk-P7Q2YIIS.js.map} +1 -1
  72. package/dist/{chunk-YTXBU6QC.cjs → chunk-QBNR5IVM.cjs} +4 -4
  73. package/dist/{chunk-YTXBU6QC.cjs.map → chunk-QBNR5IVM.cjs.map} +1 -1
  74. package/dist/{chunk-I3RPL3GE.js → chunk-RUSRAKKA.js} +3 -3
  75. package/dist/{chunk-I3RPL3GE.js.map → chunk-RUSRAKKA.js.map} +1 -1
  76. package/dist/{chunk-ZTC3EQFZ.cjs → chunk-S5KUYX3Z.cjs} +4 -4
  77. package/dist/{chunk-ZTC3EQFZ.cjs.map → chunk-S5KUYX3Z.cjs.map} +1 -1
  78. package/dist/chunk-SNHU2AI4.cjs +29 -0
  79. package/dist/chunk-SNHU2AI4.cjs.map +1 -0
  80. package/dist/{chunk-JV6RDIA6.cjs → chunk-T45XK5GN.cjs} +7 -7
  81. package/dist/{chunk-JV6RDIA6.cjs.map → chunk-T45XK5GN.cjs.map} +1 -1
  82. package/dist/{chunk-RKG2Q2HT.cjs → chunk-U7PFHQBN.cjs} +4 -4
  83. package/dist/{chunk-RKG2Q2HT.cjs.map → chunk-U7PFHQBN.cjs.map} +1 -1
  84. package/dist/{chunk-3FG5K7A7.js → chunk-VYHZEQIG.js} +3 -3
  85. package/dist/{chunk-3FG5K7A7.js.map → chunk-VYHZEQIG.js.map} +1 -1
  86. package/dist/chunk-WHOVPDC5.js +215 -0
  87. package/dist/chunk-WHOVPDC5.js.map +1 -0
  88. package/dist/{chunk-N6K2CTSU.cjs → chunk-WIS4QRGK.cjs} +4 -4
  89. package/dist/{chunk-N6K2CTSU.cjs.map → chunk-WIS4QRGK.cjs.map} +1 -1
  90. package/dist/chunk-WRQBV7GU.cjs +218 -0
  91. package/dist/chunk-WRQBV7GU.cjs.map +1 -0
  92. package/dist/{chunk-2LBRS6Z4.js → chunk-XDJSFGXW.js} +3 -3
  93. package/dist/{chunk-2LBRS6Z4.js.map → chunk-XDJSFGXW.js.map} +1 -1
  94. package/dist/{chunk-6LOV75CN.cjs → chunk-XK5WHQ3O.cjs} +4 -4
  95. package/dist/{chunk-6LOV75CN.cjs.map → chunk-XK5WHQ3O.cjs.map} +1 -1
  96. package/dist/{chunk-B5KK7NYP.cjs → chunk-Y52NXM73.cjs} +4 -4
  97. package/dist/{chunk-B5KK7NYP.cjs.map → chunk-Y52NXM73.cjs.map} +1 -1
  98. package/dist/{chunk-YLDYGT5O.js → chunk-YD4SXA6K.js} +3 -3
  99. package/dist/{chunk-YLDYGT5O.js.map → chunk-YD4SXA6K.js.map} +1 -1
  100. package/dist/{chunk-NR346SKH.cjs → chunk-YMDYDUBH.cjs} +4 -4
  101. package/dist/{chunk-NR346SKH.cjs.map → chunk-YMDYDUBH.cjs.map} +1 -1
  102. package/dist/{chunk-SCGE6DCE.cjs → chunk-YMU3SS6D.cjs} +14 -14
  103. package/dist/{chunk-SCGE6DCE.cjs.map → chunk-YMU3SS6D.cjs.map} +1 -1
  104. package/dist/{chunk-PWLBHNOA.cjs → chunk-Z3NSPDTW.cjs} +4 -4
  105. package/dist/{chunk-PWLBHNOA.cjs.map → chunk-Z3NSPDTW.cjs.map} +1 -1
  106. package/dist/{chunk-BJYTI2ID.cjs → chunk-ZUQUL53P.cjs} +4 -4
  107. package/dist/{chunk-BJYTI2ID.cjs.map → chunk-ZUQUL53P.cjs.map} +1 -1
  108. package/dist/color-picker.cjs +3 -3
  109. package/dist/color-picker.js +2 -2
  110. package/dist/composer.cjs +3 -3
  111. package/dist/composer.d.cts +2 -17
  112. package/dist/composer.d.ts +2 -17
  113. package/dist/composer.js +2 -2
  114. package/dist/date-picker.cjs +3 -3
  115. package/dist/date-picker.js +2 -2
  116. package/dist/editor.cjs +4 -4
  117. package/dist/editor.js +2 -2
  118. package/dist/emoji-select.cjs +3 -3
  119. package/dist/emoji-select.js +2 -2
  120. package/dist/file-browser.cjs +6 -6
  121. package/dist/file-browser.js +2 -2
  122. package/dist/index-CDo7LyIB.d.cts +132 -0
  123. package/dist/index-CDo7LyIB.d.ts +132 -0
  124. package/dist/index.cjs +75 -71
  125. package/dist/index.d.cts +34 -1
  126. package/dist/index.d.ts +34 -1
  127. package/dist/index.js +24 -24
  128. package/dist/input.cjs +3 -3
  129. package/dist/input.js +2 -2
  130. package/dist/inputs.cjs +17 -17
  131. package/dist/inputs.js +9 -9
  132. package/dist/json-editor.cjs +17 -17
  133. package/dist/json-editor.js +6 -6
  134. package/dist/mobile-menu.cjs +1 -1
  135. package/dist/mobile-menu.js +1 -1
  136. package/dist/multi-switch.cjs +3 -3
  137. package/dist/multi-switch.js +2 -2
  138. package/dist/otp-input.cjs +3 -3
  139. package/dist/otp-input.js +2 -2
  140. package/dist/pillbox.cjs +3 -3
  141. package/dist/pillbox.js +2 -2
  142. package/dist/radio-group.cjs +3 -3
  143. package/dist/radio-group.js +2 -2
  144. package/dist/sidebar.cjs +4 -4
  145. package/dist/sidebar.js +2 -2
  146. package/dist/slider.cjs +3 -3
  147. package/dist/slider.js +2 -2
  148. package/dist/switch.cjs +3 -3
  149. package/dist/switch.js +2 -2
  150. package/dist/table.cjs +12 -12
  151. package/dist/table.js +2 -2
  152. package/dist/tabs.cjs +4 -4
  153. package/dist/tabs.js +2 -2
  154. package/dist/time-picker.cjs +3 -3
  155. package/dist/time-picker.js +2 -2
  156. package/package.json +6 -3
  157. package/dist/chunk-6FQGMVF2.js +0 -25
  158. package/dist/chunk-6FQGMVF2.js.map +0 -1
  159. package/dist/chunk-OGEE23SP.cjs +0 -83
  160. package/dist/chunk-OGEE23SP.cjs.map +0 -1
  161. package/dist/chunk-OUOEQZHY.cjs +0 -27
  162. package/dist/chunk-OUOEQZHY.cjs.map +0 -1
  163. package/dist/chunk-VVL5LMLW.js +0 -81
  164. package/dist/chunk-VVL5LMLW.js.map +0 -1
package/dist/switch.cjs CHANGED
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
3
  require('./chunk-OYZDSMNP.cjs');
4
- var chunkB5KK7NYP_cjs = require('./chunk-B5KK7NYP.cjs');
4
+ var chunkY52NXM73_cjs = require('./chunk-Y52NXM73.cjs');
5
5
  require('./chunk-YLGTDBB2.cjs');
6
6
  require('./chunk-KJ22KE56.cjs');
7
7
  require('./chunk-L3V3BYVS.cjs');
8
- require('./chunk-OUOEQZHY.cjs');
8
+ require('./chunk-SNHU2AI4.cjs');
9
9
  require('./chunk-ZU5Q77OT.cjs');
10
10
 
11
11
 
12
12
 
13
13
  Object.defineProperty(exports, "Switch", {
14
14
  enumerable: true,
15
- get: function () { return chunkB5KK7NYP_cjs.Switch; }
15
+ get: function () { return chunkY52NXM73_cjs.Switch; }
16
16
  });
17
17
  //# sourceMappingURL=switch.cjs.map
18
18
  //# sourceMappingURL=switch.cjs.map
package/dist/switch.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import './chunk-NW3GJWJ7.js';
2
- export { Switch } from './chunk-6ZDXG5VC.js';
2
+ export { Switch } from './chunk-NBAHXZHJ.js';
3
3
  import './chunk-GFYSELJF.js';
4
4
  import './chunk-OL53XYHF.js';
5
5
  import './chunk-NRXK42LO.js';
6
- import './chunk-6FQGMVF2.js';
6
+ import './chunk-EDYAXGUM.js';
7
7
  import './chunk-MMW2JGKZ.js';
8
8
  //# sourceMappingURL=switch.js.map
9
9
  //# sourceMappingURL=switch.js.map
package/dist/table.cjs CHANGED
@@ -1,50 +1,50 @@
1
1
  'use strict';
2
2
 
3
- var chunkPWLBHNOA_cjs = require('./chunk-PWLBHNOA.cjs');
4
- require('./chunk-OUOEQZHY.cjs');
3
+ var chunkZ3NSPDTW_cjs = require('./chunk-Z3NSPDTW.cjs');
4
+ require('./chunk-SNHU2AI4.cjs');
5
5
  require('./chunk-ZU5Q77OT.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "Table", {
10
10
  enumerable: true,
11
- get: function () { return chunkPWLBHNOA_cjs.Table; }
11
+ get: function () { return chunkZ3NSPDTW_cjs.Table; }
12
12
  });
13
13
  Object.defineProperty(exports, "TableBody", {
14
14
  enumerable: true,
15
- get: function () { return chunkPWLBHNOA_cjs.TableBody; }
15
+ get: function () { return chunkZ3NSPDTW_cjs.TableBody; }
16
16
  });
17
17
  Object.defineProperty(exports, "TableCell", {
18
18
  enumerable: true,
19
- get: function () { return chunkPWLBHNOA_cjs.TableCell; }
19
+ get: function () { return chunkZ3NSPDTW_cjs.TableCell; }
20
20
  });
21
21
  Object.defineProperty(exports, "TableColumn", {
22
22
  enumerable: true,
23
- get: function () { return chunkPWLBHNOA_cjs.TableColumn; }
23
+ get: function () { return chunkZ3NSPDTW_cjs.TableColumn; }
24
24
  });
25
25
  Object.defineProperty(exports, "TableHead", {
26
26
  enumerable: true,
27
- get: function () { return chunkPWLBHNOA_cjs.TableHead; }
27
+ get: function () { return chunkZ3NSPDTW_cjs.TableHead; }
28
28
  });
29
29
  Object.defineProperty(exports, "TablePagination", {
30
30
  enumerable: true,
31
- get: function () { return chunkPWLBHNOA_cjs.TablePagination; }
31
+ get: function () { return chunkZ3NSPDTW_cjs.TablePagination; }
32
32
  });
33
33
  Object.defineProperty(exports, "TableRow", {
34
34
  enumerable: true,
35
- get: function () { return chunkPWLBHNOA_cjs.TableRow; }
35
+ get: function () { return chunkZ3NSPDTW_cjs.TableRow; }
36
36
  });
37
37
  Object.defineProperty(exports, "TableRowTray", {
38
38
  enumerable: true,
39
- get: function () { return chunkPWLBHNOA_cjs.TableRowTray; }
39
+ get: function () { return chunkZ3NSPDTW_cjs.TableRowTray; }
40
40
  });
41
41
  Object.defineProperty(exports, "TableSearch", {
42
42
  enumerable: true,
43
- get: function () { return chunkPWLBHNOA_cjs.TableSearch; }
43
+ get: function () { return chunkZ3NSPDTW_cjs.TableSearch; }
44
44
  });
45
45
  Object.defineProperty(exports, "TableTray", {
46
46
  enumerable: true,
47
- get: function () { return chunkPWLBHNOA_cjs.TableTray; }
47
+ get: function () { return chunkZ3NSPDTW_cjs.TableTray; }
48
48
  });
49
49
  //# sourceMappingURL=table.cjs.map
50
50
  //# sourceMappingURL=table.cjs.map
package/dist/table.js CHANGED
@@ -1,5 +1,5 @@
1
- export { Table, TableBody, TableCell, TableColumn, TableHead, TablePagination, TableRow, TableRowTray, TableSearch, TableTray } from './chunk-XXBW4EUO.js';
2
- import './chunk-6FQGMVF2.js';
1
+ export { Table, TableBody, TableCell, TableColumn, TableHead, TablePagination, TableRow, TableRowTray, TableSearch, TableTray } from './chunk-P7Q2YIIS.js';
2
+ import './chunk-EDYAXGUM.js';
3
3
  import './chunk-MMW2JGKZ.js';
4
4
  //# sourceMappingURL=table.js.map
5
5
  //# sourceMappingURL=table.js.map
package/dist/tabs.cjs CHANGED
@@ -1,18 +1,18 @@
1
1
  'use strict';
2
2
 
3
- var chunk3EIB7RPD_cjs = require('./chunk-3EIB7RPD.cjs');
4
- require('./chunk-OUOEQZHY.cjs');
3
+ var chunk3Q4NSAEA_cjs = require('./chunk-3Q4NSAEA.cjs');
4
+ require('./chunk-SNHU2AI4.cjs');
5
5
  require('./chunk-ZU5Q77OT.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "Tabs", {
10
10
  enumerable: true,
11
- get: function () { return chunk3EIB7RPD_cjs.Tabs; }
11
+ get: function () { return chunk3Q4NSAEA_cjs.Tabs; }
12
12
  });
13
13
  Object.defineProperty(exports, "useTabs", {
14
14
  enumerable: true,
15
- get: function () { return chunk3EIB7RPD_cjs.useTabs; }
15
+ get: function () { return chunk3Q4NSAEA_cjs.useTabs; }
16
16
  });
17
17
  //# sourceMappingURL=tabs.cjs.map
18
18
  //# sourceMappingURL=tabs.cjs.map
package/dist/tabs.js CHANGED
@@ -1,5 +1,5 @@
1
- export { Tabs, useTabs } from './chunk-VME5743O.js';
2
- import './chunk-6FQGMVF2.js';
1
+ export { Tabs, useTabs } from './chunk-FNEPZ33A.js';
2
+ import './chunk-EDYAXGUM.js';
3
3
  import './chunk-MMW2JGKZ.js';
4
4
  //# sourceMappingURL=tabs.js.map
5
5
  //# sourceMappingURL=tabs.js.map
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunkNR346SKH_cjs = require('./chunk-NR346SKH.cjs');
3
+ var chunkYMDYDUBH_cjs = require('./chunk-YMDYDUBH.cjs');
4
4
  require('./chunk-KJ22KE56.cjs');
5
5
  require('./chunk-L3V3BYVS.cjs');
6
- require('./chunk-OUOEQZHY.cjs');
6
+ require('./chunk-SNHU2AI4.cjs');
7
7
  require('./chunk-ZU5Q77OT.cjs');
8
8
 
9
9
 
10
10
 
11
11
  Object.defineProperty(exports, "TimePicker", {
12
12
  enumerable: true,
13
- get: function () { return chunkNR346SKH_cjs.TimePicker; }
13
+ get: function () { return chunkYMDYDUBH_cjs.TimePicker; }
14
14
  });
15
15
  //# sourceMappingURL=time-picker.cjs.map
16
16
  //# sourceMappingURL=time-picker.cjs.map
@@ -1,7 +1,7 @@
1
- export { TimePicker } from './chunk-GKEWT3DW.js';
1
+ export { TimePicker } from './chunk-OTCLBINT.js';
2
2
  import './chunk-OL53XYHF.js';
3
3
  import './chunk-NRXK42LO.js';
4
- import './chunk-6FQGMVF2.js';
4
+ import './chunk-EDYAXGUM.js';
5
5
  import './chunk-MMW2JGKZ.js';
6
6
  //# sourceMappingURL=time-picker.js.map
7
7
  //# sourceMappingURL=time-picker.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@particle-academy/react-fancy",
3
- "version": "5.30.0",
3
+ "version": "5.32.0",
4
4
  "description": "React UI component library for Human+ UX — controlled, agent-bridgeable primitives",
5
5
  "repository": {
6
6
  "type": "git",
@@ -928,7 +928,8 @@
928
928
  "files": [
929
929
  "dist",
930
930
  "docs",
931
- "README.md"
931
+ "README.md",
932
+ "CHANGELOG.md"
932
933
  ],
933
934
  "scripts": {
934
935
  "build": "node --max-old-space-size=8192 ./node_modules/tsup/dist/cli-default.js",
@@ -979,7 +980,9 @@
979
980
  "**/*.css"
980
981
  ],
981
982
  "overrides": {
982
- "esbuild": "^0.28.1"
983
+ "esbuild": "^0.28.1",
984
+ "brace-expansion": "^5.0.12",
985
+ "undici": "^7.29.1"
983
986
  },
984
987
  "engines": {
985
988
  "node": ">=22"
@@ -1,25 +0,0 @@
1
- import { useState, useRef, useCallback } from 'react';
2
-
3
- // src/hooks/use-controllable-state.ts
4
- function useControllableState(controlledValue, defaultValue, onChange) {
5
- const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);
6
- const isControlled = controlledValue !== void 0;
7
- const value = isControlled ? controlledValue : uncontrolledValue;
8
- const onChangeRef = useRef(onChange);
9
- onChangeRef.current = onChange;
10
- const setValue = useCallback(
11
- (next) => {
12
- const nextValue = typeof next === "function" ? next(value) : next;
13
- if (!isControlled) {
14
- setUncontrolledValue(nextValue);
15
- }
16
- onChangeRef.current?.(nextValue);
17
- },
18
- [isControlled, value]
19
- );
20
- return [value, setValue];
21
- }
22
-
23
- export { useControllableState };
24
- //# sourceMappingURL=chunk-6FQGMVF2.js.map
25
- //# sourceMappingURL=chunk-6FQGMVF2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/use-controllable-state.ts"],"names":[],"mappings":";;;AAEO,SAAS,oBAAA,CACd,eAAA,EACA,YAAA,EACA,QAAA,EAC4C;AAC5C,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAI,SAAS,YAAY,CAAA;AACvE,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,eAAe,eAAA,GAAkB,iBAAA;AAC/C,EAAA,MAAM,WAAA,GAAc,OAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,MAAM,QAAA,GAAW,WAAA;AAAA,IACf,CAAC,IAAA,KAA+B;AAC9B,MAAA,MAAM,YACJ,OAAO,IAAA,KAAS,UAAA,GAAc,IAAA,CAAwB,KAAK,CAAA,GAAI,IAAA;AAEjE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,oBAAA,CAAqB,SAAS,CAAA;AAAA,MAChC;AAEA,MAAA,WAAA,CAAY,UAAU,SAAS,CAAA;AAAA,IACjC,CAAA;AAAA,IACA,CAAC,cAAc,KAAK;AAAA,GACtB;AAEA,EAAA,OAAO,CAAC,OAAO,QAAQ,CAAA;AACzB","file":"chunk-6FQGMVF2.js","sourcesContent":["import { useCallback, useRef, useState } from \"react\";\n\nexport function useControllableState<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n): [T, (value: T | ((prev: T) => T)) => void] {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)) => {\n const nextValue =\n typeof next === \"function\" ? (next as (prev: T) => T)(value) : next;\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChangeRef.current?.(nextValue);\n },\n [isControlled, value],\n );\n\n return [value, setValue];\n}\n"]}
@@ -1,83 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkOUOEQZHY_cjs = require('./chunk-OUOEQZHY.cjs');
4
- var chunkZU5Q77OT_cjs = require('./chunk-ZU5Q77OT.cjs');
5
- var react = require('react');
6
- var jsxRuntime = require('react/jsx-runtime');
7
-
8
- var Composer = react.forwardRef(
9
- function Composer2({
10
- value: controlledValue,
11
- defaultValue = "",
12
- onChange,
13
- onSubmit,
14
- placeholder = "Type a message...",
15
- actions,
16
- disabled = false,
17
- className
18
- }, ref) {
19
- const [value, setValue] = chunkOUOEQZHY_cjs.useControllableState(
20
- controlledValue,
21
- defaultValue,
22
- onChange
23
- );
24
- const textareaRef = react.useRef(null);
25
- const handleSubmit = react.useCallback(() => {
26
- if (!value.trim() || disabled) return;
27
- onSubmit?.(value);
28
- setValue("");
29
- textareaRef.current?.focus();
30
- }, [value, disabled, onSubmit, setValue]);
31
- const handleKeyDown = (e) => {
32
- if (e.key === "Enter" && !e.shiftKey) {
33
- e.preventDefault();
34
- handleSubmit();
35
- }
36
- };
37
- return /* @__PURE__ */ jsxRuntime.jsxs(
38
- "div",
39
- {
40
- "data-react-fancy-composer": "",
41
- ref,
42
- className: chunkZU5Q77OT_cjs.cn(
43
- "rounded-xl border border-zinc-200 bg-white dark:border-zinc-700 dark:bg-zinc-900",
44
- disabled && "opacity-50",
45
- className
46
- ),
47
- children: [
48
- /* @__PURE__ */ jsxRuntime.jsx(
49
- "textarea",
50
- {
51
- ref: textareaRef,
52
- value,
53
- onChange: (e) => setValue(e.target.value),
54
- onKeyDown: handleKeyDown,
55
- placeholder,
56
- disabled,
57
- rows: 3,
58
- className: "w-full resize-none bg-transparent px-4 pt-3 text-sm outline-none placeholder:text-zinc-400"
59
- }
60
- ),
61
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center justify-between border-t border-zinc-100 px-3 py-2 dark:border-zinc-800", children: [
62
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-1", children: actions }),
63
- /* @__PURE__ */ jsxRuntime.jsx(
64
- "button",
65
- {
66
- type: "button",
67
- onClick: handleSubmit,
68
- disabled: disabled || !value.trim(),
69
- className: "rounded-lg bg-zinc-900 px-3 py-1.5 text-sm font-medium text-white transition-colors hover:bg-zinc-800 disabled:opacity-50 dark:bg-white dark:text-zinc-900 dark:hover:bg-zinc-100",
70
- children: "Send"
71
- }
72
- )
73
- ] })
74
- ]
75
- }
76
- );
77
- }
78
- );
79
- Composer.displayName = "Composer";
80
-
81
- exports.Composer = Composer;
82
- //# sourceMappingURL=chunk-OGEE23SP.cjs.map
83
- //# sourceMappingURL=chunk-OGEE23SP.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Composer/Composer.tsx"],"names":["forwardRef","Composer","useControllableState","useRef","useCallback","jsxs","cn","jsx"],"mappings":";;;;;;;AAKO,IAAM,QAAA,GAAWA,gBAAA;AAAA,EACtB,SAASC,SAAAA,CACP;AAAA,IACE,KAAA,EAAO,eAAA;AAAA,IACP,YAAA,GAAe,EAAA;AAAA,IACf,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,GAAc,mBAAA;AAAA,IACd,OAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAIC,sCAAA;AAAA,MACxB,eAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,WAAA,GAAcC,aAA4B,IAAI,CAAA;AAEpD,IAAA,MAAM,YAAA,GAAeC,kBAAY,MAAM;AACrC,MAAA,IAAI,CAAC,KAAA,CAAM,IAAA,EAAK,IAAK,QAAA,EAAU;AAC/B,MAAA,QAAA,GAAW,KAAK,CAAA;AAChB,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA,WAAA,CAAY,SAAS,KAAA,EAAM;AAAA,IAC7B,GAAG,CAAC,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAC,CAAA;AAExC,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAgD;AACrE,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAC,EAAE,QAAA,EAAU;AACpC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,YAAA,EAAa;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,2BAAA,EAA0B,EAAA;AAAA,QAC1B,GAAA;AAAA,QACA,SAAA,EAAWC,oBAAA;AAAA,UACT,kFAAA;AAAA,UACA,QAAA,IAAY,YAAA;AAAA,UACZ;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAC,cAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA;AAAA,cACL,KAAA;AAAA,cACA,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cACxC,SAAA,EAAW,aAAA;AAAA,cACX,WAAA;AAAA,cACA,QAAA;AAAA,cACA,IAAA,EAAM,CAAA;AAAA,cACN,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACAF,eAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,EAAA;AAAA,4BAAAE,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA2B,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,4BAClDA,cAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,YAAA;AAAA,gBACT,QAAA,EAAU,QAAA,IAAY,CAAC,KAAA,CAAM,IAAA,EAAK;AAAA,gBAClC,SAAA,EAAU,mLAAA;AAAA,gBACX,QAAA,EAAA;AAAA;AAAA;AAED,WAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-OGEE23SP.cjs","sourcesContent":["import { forwardRef, useCallback, useRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport type { ComposerProps } from \"./Composer.types\";\n\nexport const Composer = forwardRef<HTMLDivElement, ComposerProps>(\n function Composer(\n {\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onSubmit,\n placeholder = \"Type a message...\",\n actions,\n disabled = false,\n className,\n },\n ref,\n ) {\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue,\n onChange,\n );\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const handleSubmit = useCallback(() => {\n if (!value.trim() || disabled) return;\n onSubmit?.(value);\n setValue(\"\");\n textareaRef.current?.focus();\n }, [value, disabled, onSubmit, setValue]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n return (\n <div\n data-react-fancy-composer=\"\"\n ref={ref}\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white dark:border-zinc-700 dark:bg-zinc-900\",\n disabled && \"opacity-50\",\n className,\n )}\n >\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n rows={3}\n className=\"w-full resize-none bg-transparent px-4 pt-3 text-sm outline-none placeholder:text-zinc-400\"\n />\n <div className=\"flex items-center justify-between border-t border-zinc-100 px-3 py-2 dark:border-zinc-800\">\n <div className=\"flex items-center gap-1\">{actions}</div>\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={disabled || !value.trim()}\n className=\"rounded-lg bg-zinc-900 px-3 py-1.5 text-sm font-medium text-white transition-colors hover:bg-zinc-800 disabled:opacity-50 dark:bg-white dark:text-zinc-900 dark:hover:bg-zinc-100\"\n >\n Send\n </button>\n </div>\n </div>\n );\n },\n);\n\nComposer.displayName = \"Composer\";\n"]}
@@ -1,27 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
-
5
- // src/hooks/use-controllable-state.ts
6
- function useControllableState(controlledValue, defaultValue, onChange) {
7
- const [uncontrolledValue, setUncontrolledValue] = react.useState(defaultValue);
8
- const isControlled = controlledValue !== void 0;
9
- const value = isControlled ? controlledValue : uncontrolledValue;
10
- const onChangeRef = react.useRef(onChange);
11
- onChangeRef.current = onChange;
12
- const setValue = react.useCallback(
13
- (next) => {
14
- const nextValue = typeof next === "function" ? next(value) : next;
15
- if (!isControlled) {
16
- setUncontrolledValue(nextValue);
17
- }
18
- onChangeRef.current?.(nextValue);
19
- },
20
- [isControlled, value]
21
- );
22
- return [value, setValue];
23
- }
24
-
25
- exports.useControllableState = useControllableState;
26
- //# sourceMappingURL=chunk-OUOEQZHY.cjs.map
27
- //# sourceMappingURL=chunk-OUOEQZHY.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/hooks/use-controllable-state.ts"],"names":["useState","useRef","useCallback"],"mappings":";;;;;AAEO,SAAS,oBAAA,CACd,eAAA,EACA,YAAA,EACA,QAAA,EAC4C;AAC5C,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIA,eAAS,YAAY,CAAA;AACvE,EAAA,MAAM,eAAe,eAAA,KAAoB,MAAA;AACzC,EAAA,MAAM,KAAA,GAAQ,eAAe,eAAA,GAAkB,iBAAA;AAC/C,EAAA,MAAM,WAAA,GAAcC,aAAO,QAAQ,CAAA;AACnC,EAAA,WAAA,CAAY,OAAA,GAAU,QAAA;AAEtB,EAAA,MAAM,QAAA,GAAWC,iBAAA;AAAA,IACf,CAAC,IAAA,KAA+B;AAC9B,MAAA,MAAM,YACJ,OAAO,IAAA,KAAS,UAAA,GAAc,IAAA,CAAwB,KAAK,CAAA,GAAI,IAAA;AAEjE,MAAA,IAAI,CAAC,YAAA,EAAc;AACjB,QAAA,oBAAA,CAAqB,SAAS,CAAA;AAAA,MAChC;AAEA,MAAA,WAAA,CAAY,UAAU,SAAS,CAAA;AAAA,IACjC,CAAA;AAAA,IACA,CAAC,cAAc,KAAK;AAAA,GACtB;AAEA,EAAA,OAAO,CAAC,OAAO,QAAQ,CAAA;AACzB","file":"chunk-OUOEQZHY.cjs","sourcesContent":["import { useCallback, useRef, useState } from \"react\";\n\nexport function useControllableState<T>(\n controlledValue: T | undefined,\n defaultValue: T,\n onChange?: (value: T) => void,\n): [T, (value: T | ((prev: T) => T)) => void] {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue);\n const isControlled = controlledValue !== undefined;\n const value = isControlled ? controlledValue : uncontrolledValue;\n const onChangeRef = useRef(onChange);\n onChangeRef.current = onChange;\n\n const setValue = useCallback(\n (next: T | ((prev: T) => T)) => {\n const nextValue =\n typeof next === \"function\" ? (next as (prev: T) => T)(value) : next;\n\n if (!isControlled) {\n setUncontrolledValue(nextValue);\n }\n\n onChangeRef.current?.(nextValue);\n },\n [isControlled, value],\n );\n\n return [value, setValue];\n}\n"]}
@@ -1,81 +0,0 @@
1
- import { useControllableState } from './chunk-6FQGMVF2.js';
2
- import { cn } from './chunk-MMW2JGKZ.js';
3
- import { forwardRef, useRef, useCallback } from 'react';
4
- import { jsxs, jsx } from 'react/jsx-runtime';
5
-
6
- var Composer = forwardRef(
7
- function Composer2({
8
- value: controlledValue,
9
- defaultValue = "",
10
- onChange,
11
- onSubmit,
12
- placeholder = "Type a message...",
13
- actions,
14
- disabled = false,
15
- className
16
- }, ref) {
17
- const [value, setValue] = useControllableState(
18
- controlledValue,
19
- defaultValue,
20
- onChange
21
- );
22
- const textareaRef = useRef(null);
23
- const handleSubmit = useCallback(() => {
24
- if (!value.trim() || disabled) return;
25
- onSubmit?.(value);
26
- setValue("");
27
- textareaRef.current?.focus();
28
- }, [value, disabled, onSubmit, setValue]);
29
- const handleKeyDown = (e) => {
30
- if (e.key === "Enter" && !e.shiftKey) {
31
- e.preventDefault();
32
- handleSubmit();
33
- }
34
- };
35
- return /* @__PURE__ */ jsxs(
36
- "div",
37
- {
38
- "data-react-fancy-composer": "",
39
- ref,
40
- className: cn(
41
- "rounded-xl border border-zinc-200 bg-white dark:border-zinc-700 dark:bg-zinc-900",
42
- disabled && "opacity-50",
43
- className
44
- ),
45
- children: [
46
- /* @__PURE__ */ jsx(
47
- "textarea",
48
- {
49
- ref: textareaRef,
50
- value,
51
- onChange: (e) => setValue(e.target.value),
52
- onKeyDown: handleKeyDown,
53
- placeholder,
54
- disabled,
55
- rows: 3,
56
- className: "w-full resize-none bg-transparent px-4 pt-3 text-sm outline-none placeholder:text-zinc-400"
57
- }
58
- ),
59
- /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-t border-zinc-100 px-3 py-2 dark:border-zinc-800", children: [
60
- /* @__PURE__ */ jsx("div", { className: "flex items-center gap-1", children: actions }),
61
- /* @__PURE__ */ jsx(
62
- "button",
63
- {
64
- type: "button",
65
- onClick: handleSubmit,
66
- disabled: disabled || !value.trim(),
67
- className: "rounded-lg bg-zinc-900 px-3 py-1.5 text-sm font-medium text-white transition-colors hover:bg-zinc-800 disabled:opacity-50 dark:bg-white dark:text-zinc-900 dark:hover:bg-zinc-100",
68
- children: "Send"
69
- }
70
- )
71
- ] })
72
- ]
73
- }
74
- );
75
- }
76
- );
77
- Composer.displayName = "Composer";
78
-
79
- export { Composer };
80
- //# sourceMappingURL=chunk-VVL5LMLW.js.map
81
- //# sourceMappingURL=chunk-VVL5LMLW.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/components/Composer/Composer.tsx"],"names":["Composer"],"mappings":";;;;;AAKO,IAAM,QAAA,GAAW,UAAA;AAAA,EACtB,SAASA,SAAAA,CACP;AAAA,IACE,KAAA,EAAO,eAAA;AAAA,IACP,YAAA,GAAe,EAAA;AAAA,IACf,QAAA;AAAA,IACA,QAAA;AAAA,IACA,WAAA,GAAc,mBAAA;AAAA,IACd,OAAA;AAAA,IACA,QAAA,GAAW,KAAA;AAAA,IACX;AAAA,KAEF,GAAA,EACA;AACA,IAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,oBAAA;AAAA,MACxB,eAAA;AAAA,MACA,YAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,MAAM,WAAA,GAAc,OAA4B,IAAI,CAAA;AAEpD,IAAA,MAAM,YAAA,GAAe,YAAY,MAAM;AACrC,MAAA,IAAI,CAAC,KAAA,CAAM,IAAA,EAAK,IAAK,QAAA,EAAU;AAC/B,MAAA,QAAA,GAAW,KAAK,CAAA;AAChB,MAAA,QAAA,CAAS,EAAE,CAAA;AACX,MAAA,WAAA,CAAY,SAAS,KAAA,EAAM;AAAA,IAC7B,GAAG,CAAC,KAAA,EAAO,QAAA,EAAU,QAAA,EAAU,QAAQ,CAAC,CAAA;AAExC,IAAA,MAAM,aAAA,GAAgB,CAAC,CAAA,KAAgD;AACrE,MAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAC,EAAE,QAAA,EAAU;AACpC,QAAA,CAAA,CAAE,cAAA,EAAe;AACjB,QAAA,YAAA,EAAa;AAAA,MACf;AAAA,IACF,CAAA;AAEA,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,2BAAA,EAA0B,EAAA;AAAA,QAC1B,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,kFAAA;AAAA,UACA,QAAA,IAAY,YAAA;AAAA,UACZ;AAAA,SACF;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAA,GAAA;AAAA,YAAC,UAAA;AAAA,YAAA;AAAA,cACC,GAAA,EAAK,WAAA;AAAA,cACL,KAAA;AAAA,cACA,UAAU,CAAC,CAAA,KAAM,QAAA,CAAS,CAAA,CAAE,OAAO,KAAK,CAAA;AAAA,cACxC,SAAA,EAAW,aAAA;AAAA,cACX,WAAA;AAAA,cACA,QAAA;AAAA,cACA,IAAA,EAAM,CAAA;AAAA,cACN,SAAA,EAAU;AAAA;AAAA,WACZ;AAAA,0BACA,IAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,2FAAA,EACb,QAAA,EAAA;AAAA,4BAAA,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yBAAA,EAA2B,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,4BAClD,GAAA;AAAA,cAAC,QAAA;AAAA,cAAA;AAAA,gBACC,IAAA,EAAK,QAAA;AAAA,gBACL,OAAA,EAAS,YAAA;AAAA,gBACT,QAAA,EAAU,QAAA,IAAY,CAAC,KAAA,CAAM,IAAA,EAAK;AAAA,gBAClC,SAAA,EAAU,mLAAA;AAAA,gBACX,QAAA,EAAA;AAAA;AAAA;AAED,WAAA,EACF;AAAA;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AAEA,QAAA,CAAS,WAAA,GAAc,UAAA","file":"chunk-VVL5LMLW.js","sourcesContent":["import { forwardRef, useCallback, useRef } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { useControllableState } from \"../../hooks/use-controllable-state\";\nimport type { ComposerProps } from \"./Composer.types\";\n\nexport const Composer = forwardRef<HTMLDivElement, ComposerProps>(\n function Composer(\n {\n value: controlledValue,\n defaultValue = \"\",\n onChange,\n onSubmit,\n placeholder = \"Type a message...\",\n actions,\n disabled = false,\n className,\n },\n ref,\n ) {\n const [value, setValue] = useControllableState(\n controlledValue,\n defaultValue,\n onChange,\n );\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n\n const handleSubmit = useCallback(() => {\n if (!value.trim() || disabled) return;\n onSubmit?.(value);\n setValue(\"\");\n textareaRef.current?.focus();\n }, [value, disabled, onSubmit, setValue]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n\n return (\n <div\n data-react-fancy-composer=\"\"\n ref={ref}\n className={cn(\n \"rounded-xl border border-zinc-200 bg-white dark:border-zinc-700 dark:bg-zinc-900\",\n disabled && \"opacity-50\",\n className,\n )}\n >\n <textarea\n ref={textareaRef}\n value={value}\n onChange={(e) => setValue(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n disabled={disabled}\n rows={3}\n className=\"w-full resize-none bg-transparent px-4 pt-3 text-sm outline-none placeholder:text-zinc-400\"\n />\n <div className=\"flex items-center justify-between border-t border-zinc-100 px-3 py-2 dark:border-zinc-800\">\n <div className=\"flex items-center gap-1\">{actions}</div>\n <button\n type=\"button\"\n onClick={handleSubmit}\n disabled={disabled || !value.trim()}\n className=\"rounded-lg bg-zinc-900 px-3 py-1.5 text-sm font-medium text-white transition-colors hover:bg-zinc-800 disabled:opacity-50 dark:bg-white dark:text-zinc-900 dark:hover:bg-zinc-100\"\n >\n Send\n </button>\n </div>\n </div>\n );\n },\n);\n\nComposer.displayName = \"Composer\";\n"]}